{"report_id":"96663841-6837-4a6d-9d4f-5378a5407ad9","version":0,"status":"done","tags":[],"date":"2026-07-26T17:19:29Z","url":{"schema":"https","addr":"maxvectornew.com/t/1c8a8","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":0,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"final":{"url":{"schema":"https","addr":"maxvectornew.com/t/1c8a8","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"title":"MAX","dom":{"size":10632,"mime_type":"text/html; charset=utf-8","magic":"HTML document, Unicode text, UTF-8 text, with very long lines (9762), with no line terminators","md5":"f9b37664e4be211f4e02c6c4cf0d8b8f","sha1":"842f8691e4beb89777d78b2110ee7f41509ca4cf","sha256":"8f5f2e3eba76f2315a5612bbbb159948860fbe7fc46fc28293e7db3e67782c55","sha512":"221baa17a3ed7089eb9ce7b0a498910b701d69eca6cb881d351c586b6a84546a25269e97b4a57e9ce6f2d598b31ca101e2ebef4076a80ce80c1de5b8b3c2095a","ssdeep":"192:HGNJ1HUlL4wEyjsJAoZuDnhfRmgnqzcpmum6TOUpiK38g:Ho0l+a+uTh5Te6qUpiol","tlshash":"6e22b821a40add5ae517788a807eff2e24ce817f5be4c66455f8cea913d18bcf257c80","dom_hash":"domhashfd0e22aaf2e227f339b121ec506fd62d","first_seen":"","last_seen":"","times_seen":0,"resource_available":false,"data":null}},"submit":{"url":{"schema":"https","addr":"maxvectornew.com/t/1c8a8","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":0,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"tags":null,"meta":null},"settings":{"access":"public","device_type":"desktop","expires_at":"2027-08-30T17:19:29Z","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":"maxvectornew.com","ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"domain_registered":"2026-07-25","domain_rank":0,"first_seen":"2026-07-26T17:17:17.262376Z","last_seen":"2026-07-26T17:17:17.262376Z","alert_count":0,"request_count":14,"received_data":693148,"sent_data":6598,"comment":"","tags":null,"fingerprints":[{"name":"Nginx:1.27.5","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"]}]}],"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":"maxvectornew.com/t/1c8a8","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"introduction_type":"scriptElement","is_inline":true,"md5":"c1108e85c04ecb9680d54a989b5d7af5","sha1":"6dab68cb12fe60f3413926fdc0c8ddeb332f42ff","sha256":"6c0ed9f925b0a5382fae4270733b29c621896f7ab76931ffc0225f95348f436e","sha512":"fd2177784a4af073816baf6524ab6d57dc7b130e2323e214a2b5be31edf3449ab4a44e0567f534a5beff11d24d4099e83ffc0333043f2649be8bf493d1da6819","ssdeep":"","tlshash":"ad610212905b6e65f247b087d4cfbb0a399a42bd2ae5835018b0ddea33e14fdf026579","size":3369,"data":"","first_seen":"2026-07-26T17:19:31.665928Z","last_seen":"2026-07-26T17:20:04.034456Z","times_seen":2,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"maxvectornew.com/t/1c8a8","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"introduction_type":"scriptElement","is_inline":true,"md5":"deb8de783ab68dcaae93514256d79764","sha1":"48d681af8ed009aa0401c22a31fc49fc94333120","sha256":"91e01db15a703c3055feed1aa77fb1aeab28ba9d9257fcb2e754349aebd1a9ca","sha512":"999c19d88b43b3774c329b5f11a1fe63a679a57d741f0c5c1165e81c0acbffa9a4c162f4d1d311cf2c4ca2fce3874c428b32ce5b443323d5ca4207778723d13a","ssdeep":"","tlshash":"60a002f5a3d37d39a13305a9287218631ba4f11d360c52c25f21c856a752995a790dce","size":67,"data":"","first_seen":"2026-04-19T06:31:24.463232Z","last_seen":"2026-07-26T17:20:04.035841Z","times_seen":10,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"maxvectornew.com/t/1c8a8","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"introduction_type":"scriptElement","is_inline":true,"md5":"1a6e1178e4bbf5730bd664a49dd3bc24","sha1":"17c3ae3273f9de6afbbdedf2e413dbb3a6722792","sha256":"3814cddd18b2095e01abb745a99e5ada90178e709c09879324c3b623f2d829ea","sha512":"cfb1aab0bf589e33fd12906f448ddbbf7163420a088de513b174304c9ba3a7abcd9b41c98bc4dd51edd0206c1fe4660db9857e3c6163d1bf50c670cefddee509","ssdeep":"","tlshash":"de9002b090c39c5890264186687100160b6c040c01080141132184d810115048e40d8e","size":43,"data":"","first_seen":"2023-03-13T01:07:12Z","last_seen":"2026-07-27T17:13:51.690713Z","times_seen":204584,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"maxvectornew.com/t/1c8a8","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"introduction_type":"scriptElement","is_inline":true,"md5":"d097778b1f78a0f147d1beb77b8cc4fd","sha1":"1f09c075688ecc5979c0a3b854d5baa726b012bd","sha256":"ddd933ad9280e4e40928e3b19d2376955bf3af683356a9ad4404cbb09e3be563","sha512":"d10d660a866224b9e7fb19122ad7b21a2df04051c8c80b3180611795e6b6f3f1cc8e4793b6f41ece230953c189da6fd3c3965487a0fee59fd390d809f08401cf","ssdeep":"","tlshash":"c0f07d9cf348e8c64832cf1b82735d3858c8fc3d0165e299655ecd2d0221d7da2ad810","size":625,"data":"","first_seen":"2026-07-26T17:19:31.667851Z","last_seen":"2026-07-26T17:20:04.037531Z","times_seen":2,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"maxvectornew.com/t/1c8a8","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"introduction_type":"scriptElement","is_inline":true,"md5":"93a364087a963b335dafa02b78d164ae","sha1":"8380b2c702d9bf684405607cc89a7764ea98c908","sha256":"18913f4b6596d8ff7ad08299ec628891660bdc497945b1e2a062cdda6113aac4","sha512":"25173a81afabbb9ca4faf7c2c1eea9081e0038d0136594d7975b83fe7344880940d31c830912f871103d448aa996196001fae798855b61c55b5ffb2c13796dfc","ssdeep":"","tlshash":"1451ba3d6009dd4becae3d69027ead3b20cd497b43d5deb88a98cf100a864792796dc0","size":3031,"data":"","first_seen":"2026-07-26T17:19:31.668741Z","last_seen":"2026-07-26T17:20:04.038798Z","times_seen":2,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"maxvectornew.com/t/1c8a8","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"introduction_type":"scriptElement","is_inline":true,"md5":"91f879e0c7da0e6e53f5b1cad66d3c5b","sha1":"9dd54a0f4af786b87e214eb621e776f52bc2afc8","sha256":"17772583103950658dd1457b849b75e6c345101ab2aa32413ee921f37cfb74b9","sha512":"d61cc63a3cbe25b110fac9ef055d00878072ba4caa615d36231cb9f2a709aa03601b42e03d82443d8b98b2e57710a1db8e87038c32b443b04fa4768dcdbbb0fa","ssdeep":"","tlshash":"74b01278e011fe9114b620726139f0ca326f544d19642470211361c8120431d2703fc0","size":91,"data":"","first_seen":"2025-07-26T21:55:22.063936Z","last_seen":"2026-07-27T16:54:38.84045Z","times_seen":638,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"maxvectornew.com/t/1c8a8","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"introduction_type":"scriptElement","is_inline":true,"md5":"d0b18e504289a2f7778f0677e608bb2f","sha1":"21166f4c519a9774aa218c5695f510d707470b7a","sha256":"61516c2f6e3601b59bb3a5a2729b199ada0465960272fe07f2c59866a36e843f","sha512":"76a9f05a4d93a93cfdb0894f33353c553dbd232f4085cf2b4f91901ece6fb64947e4e1a35a680f7f0262eb4bf513f3699f1b0c929bb1b0a990aa83f2ab493d04","ssdeep":"","tlshash":"34e0cd91dc12dc1dc7564f152c3e1d2521cdd5750645524bbc84cd389d95d3409b0dc6","size":294,"data":"","first_seen":"2026-07-14T04:55:42.479586Z","last_seen":"2026-07-26T17:20:04.040926Z","times_seen":9,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"maxvectornew.com/t/1c8a8","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"introduction_type":"scriptElement","is_inline":true,"md5":"4a6261c6b355bd5bd0e6eaf4838cc9ef","sha1":"5db32b96157a501ff02b80b566b1ad6346ac4b2d","sha256":"42d41cb1b2f3ed9c859a837cda0d48e6ebfe6d51bf1194a99a9c74aabe58d2e2","sha512":"d9775e0a58c04e67ff1cb26c27f6d93bc782959145cd9f7a943a11c4d55dbaa2f0b060a8f7df4e7cc669cba6d0775333341645a5811354bc05b13f4ea0ee28af","ssdeep":"","tlshash":"b6c02b105400cd03843924b3047c8c2410dc803ec0e0096043c1cf391a0007be973d91","size":134,"data":"","first_seen":"2026-07-14T04:55:42.481006Z","last_seen":"2026-07-26T17:20:04.041989Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"maxvectornew.com/t/1c8a8","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"introduction_type":"scriptElement","is_inline":true,"md5":"50d79ec1aaad6451be319ee0a696dd33","sha1":"4c191932bce63f31ced964e8d12c43032319eb2f","sha256":"a18ffae3960d9e2233da3d3662a0efe78954111d876c75896980973a34b548e9","sha512":"8ece952c854f234307b3b86c0026adca369e0c729085c91538845d3c06e03b512b772e3b073880656e996347b554eaf5dda532f30517acf93f2fdd585fc88cb1","ssdeep":"","tlshash":"c3900470d0400d574533001314fc7103155cd04c0c011d501f51fc5f5c531d57707dc5","size":46,"data":"","first_seen":"2025-07-25T21:09:25.855802Z","last_seen":"2026-07-27T16:54:38.845243Z","times_seen":2986,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"maxvectornew.com/_next/static/chunks/webpack-209fb78b7e72954e.js","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"introduction_type":"scriptElement","is_inline":false,"md5":"970b24335ded07ed2b9d9965627b59f9","sha1":"a428246c1401b6c7cb1f64163a05ad39256a23be","sha256":"1f5fb0826310f4a40fb1153c45e0da9e841b43d3b25085d91cc2e5a7ecf29db7","sha512":"f5c3a06a666afcf12ea9346988f083d93cd64689d0e688f0d47e4bbe27aa6b8ea4be252be53efe3d5dbe66334914d6e28f08aa06e8c769e88ad186aaeb191b22","ssdeep":"","tlshash":"d96195a93625fab556f108c5487fc142f619603b051afce0e717dcb9b464aa10562ff3","size":3414,"data":"","first_seen":"2026-07-21T19:09:14.334415Z","last_seen":"2026-07-26T17:20:04.018511Z","times_seen":5,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"maxvectornew.com/_next/static/chunks/app/page-485a0520b71938da.js","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"introduction_type":"scriptElement","is_inline":false,"md5":"bd5e6851095b296ea58b5e1b4f8e9712","sha1":"c4536d1e26980aeb79780af5e2d9b5d117a3409e","sha256":"bee490f8a87759353b8807db35213e91af11bd30ecf55590ecc51c7359ac0d09","sha512":"b4f2889e1d495bd11b5b9eb39a59ba059308bb8c4a473d848d317c5c0f21639a13a18d559a86b0ef95d099f61a8669428a9ef275684e845134dba509e9a47476","ssdeep":"1536:nwYOZolV1jsigQaA2zhyhaHkejK0Q8K7BE1dgL0sxhEz:sKgQaA2zhyhaEejKp7BRosxa","tlshash":"72c3e840a255bfacf52a449c866f901c713e6bacde0e4474fabc2c3a35548d0b657bce","size":120197,"data":"","first_seen":"2026-07-26T17:19:31.66405Z","last_seen":"2026-07-26T17:20:04.024064Z","times_seen":2,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"maxvectornew.com/_next/static/chunks/255-eb4aecc3ff015961.js","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"introduction_type":"scriptElement","is_inline":false,"md5":"5ae9c0ec95cdd00ec0d1fa269321a174","sha1":"90bd42546ce8f32dcd4074e559231654473d0156","sha256":"bfd934c48ee7007bb34cb98078ea6ba5dcef5d8a8f4ffc2103dc174409680c7b","sha512":"4b09cbebc1245ee789381b0f8b40b81b201c5fde65d5aac05c775e7850688069dfb6e54543b00ffb14377faff800392fb09fa43b3dff549145246396226f1c02","ssdeep":"1536:rh7TN+Izz+cHr6U3lHm0dS/7ZcyBPo7ecq0MEsiTtSocZXxreXRNwrky/SQhuzQP:9TN+UrFA0YLwF5W4RNsz/SQuLi","tlshash":"8e04dab676d0f8e107a780e5843b400af3295c37146f74a0a3e6dcd975605dea1b3faa","size":173611,"data":"","first_seen":"2026-06-06T02:29:26.375182Z","last_seen":"2026-07-26T17:20:04.030649Z","times_seen":76,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"maxvectornew.com/_next/static/chunks/main-app-2ecc3bf42ae2d122.js","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"introduction_type":"scriptElement","is_inline":false,"md5":"06830166c68f5d1b431e4bac38626050","sha1":"e5f53dc4d5d6a682f6ee7ce745a6cca8bb2d9fab","sha256":"4504fb582d925ee424121644f0dc6172463ab556ff421121b49eaa40f67f92ec","sha512":"f2ffbf19d186117b6f14f200459601ba081f7a0e76facf1d04758535ede657dab2ee17427aeeabd57d51a95dbcf3ff98b66ed7ca5f1cec6154f032cb2c23194a","ssdeep":"","tlshash":"59f0f45a8f0cf42f5c26ad64fe97ace6285f4175302b4e647910eea23c23b6cd270409","size":557,"data":"","first_seen":"2025-09-15T10:43:19.87387Z","last_seen":"2026-07-27T04:58:17.239501Z","times_seen":347,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"maxvectornew.com/_next/static/chunks/4bd1b696-c023c6e3521b1417.js","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"introduction_type":"scriptElement","is_inline":false,"md5":"81cd3b2d7a933bcc456bfcdf03a6ba1f","sha1":"d2d83f54880bee55cee3e5bd30c9f02ad86c8f3f","sha256":"2c752a401191671d5bbbe7514f5828bbb0a7cc50bfbe77ddaf1b1ccba4412ed2","sha512":"5e2b3c516f1a407eff8c4ffd35d556cbef0ea9a9bbca5cb00f76dcd2f7e7c0a8d5e89736c596f434c84bd4b259516e51814873adb4c6d714734f4211bf86d84a","ssdeep":"1536:iWET9Lwegcl2MywYleojBFOQLfioEV7hNc7lFlgXGhJx4bzZc5zg5tgW/zAe6c0:u9LwzMyh1vLEE7RgXOQ5SIA1","tlshash":"75f3f8ec3d99e611aeb342a700df28037378261b240d4d60a614fd9ea57845bb17bfde","size":173019,"data":"","first_seen":"2025-08-23T11:54:10.591173Z","last_seen":"2026-07-27T16:51:34.688144Z","times_seen":3744,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"maxvectornew.com/_next/static/chunks/app/layout-93c05598e3a473b0.js","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"introduction_type":"scriptElement","is_inline":false,"md5":"bc5ef9fc7f68e7b5f06d35fec5cdaf47","sha1":"25135b1fe4ccdea7bfb4deb5b2982db3958b29c4","sha256":"01a3827cc17f00e7931ba0c7174f6fe026f913d3a10227315cc1686d68ec2837","sha512":"054dd9fa5aed95518fa864dd94c4b37203d87333223b66aea68e0db1676758f60a43763ccc08e8c419eb9d3436fa48694f62755f9195be9a5349f1ae05715ebd","ssdeep":"96:b31rvrAbbDLY99n5GUKqN7xFhgDBT7DBTDA9GCfsY89GCHl0B6:b3Fj8DLY9GkxFhgD1Dru39s0B6","tlshash":"9bb1e9f736c5fc3151aa485058378757ba142e37341fa0d0abaacce93268ec9c5e1f5a","size":5335,"data":"","first_seen":"2026-07-01T09:56:23.394831Z","last_seen":"2026-07-26T17:20:04.022504Z","times_seen":10,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"maxvectornew.com/_next/static/chunks/89-cbd37bccf62b4ef9.js","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"introduction_type":"scriptElement","is_inline":false,"md5":"11e14f01b10f8d3a54a94528dcde1a77","sha1":"2822f1df2d20dc3ad8a4f15c954a6e6eef947a74","sha256":"8837316bb2f5718edfa4593e9b7f7baca23c818b7f02e82699f8ce3db976caec","sha512":"f80a9b4ac07516a3b623a4c30af9cd9b651f26756eb3ca23bf0974fd0df274b4c1eb3fe9b1a64873325b84e5257d83bd2a19c42140881d7e2035fa9af137af26","ssdeep":"384:F42HvDkSF0M8sLzyHT6WOamcz2f3y6/RcVhdHeHOWTKy4WQBZuY4:6FMLyHRODB665crdHeuWuBk","tlshash":"b782f87237c9fcee535bc184c82f0009e3b96d71322aa454739e9cada5e1584e0a3f76","size":18174,"data":"","first_seen":"2026-07-14T04:55:42.432815Z","last_seen":"2026-07-26T17:20:04.031891Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"maxvectornew.com/telegram-web-app.js","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"introduction_type":"scriptElement","is_inline":false,"md5":"0d81da7304889cf10b6cfbaa26f39f38","sha1":"8998e98c1d306c7ed132f7eeaec45bf178588dcb","sha256":"a4922a0d95877fe0699dbaf827ac8d50df3137acb0cc372aa8c5402e934a5df9","sha512":"c58ff07da3e52c590bcbf07493a13ef3bb4b4a5aabc81cd7a36b68b4251bd21ce1c50368c5a4b920e8092a3fc0e217e5cd3d30c5aa89c8c5794bf4ca30a570e0","ssdeep":"1536:papTpRdoKd4F0WN2ZbBcn9cF9KTfVjLo03ueLE+wFFz1NIVIB/MGYV7p/xHK8ITq:YpTpRdfcKFU7Rx1v","tlshash":"4ab33e4d6cb3612285b3b1bf8b5f925172719883301def20794d9b646f80e7c53eaad8","size":116341,"data":"","first_seen":"2026-07-14T04:55:42.451858Z","last_seen":"2026-07-26T17:20:04.004933Z","times_seen":6,"alerts":{"ids":null,"analyzer":null,"urlquery":null}}],"eval":null,"write":null,"console":[{"level":"log","text":"[Telegram.WebView] \u003e postEventweb_app_set_header_colormap[actor:server1.conn0.watcher16.process8//obj36 class:Object extensible:true frozen:false isError:false ownPropertyLength:1 preview:map[kind:Object ownProperties:map[color_key:map[configurable:true enumerable:true value:bg_color writable:true]] ownPropertiesLength:1] sealed:false type:object]","filename":"https://maxvectornew.com/telegram-web-app.js","line_number":135,"column_number":13},{"level":"log","text":"[Telegram.WebView] \u003e postEventweb_app_set_bottom_bar_colormap[actor:server1.conn0.watcher16.process8//obj37 class:Object extensible:true frozen:false isError:false ownPropertyLength:1 preview:map[kind:Object ownProperties:map[color:map[configurable:true enumerable:true value:#ffffff writable:true]] ownPropertiesLength:1] sealed:false type:object]","filename":"https://maxvectornew.com/telegram-web-app.js","line_number":135,"column_number":13},{"level":"log","text":"[Telegram.WebView] \u003e postEventweb_app_request_theme","filename":"https://maxvectornew.com/telegram-web-app.js","line_number":135,"column_number":13},{"level":"log","text":"[Telegram.WebView] \u003e postEventweb_app_request_viewport","filename":"https://maxvectornew.com/telegram-web-app.js","line_number":135,"column_number":13},{"level":"log","text":"[Telegram.WebView] \u003e postEventweb_app_request_safe_area","filename":"https://maxvectornew.com/telegram-web-app.js","line_number":135,"column_number":13},{"level":"log","text":"[Telegram.WebView] \u003e postEventweb_app_request_content_safe_area","filename":"https://maxvectornew.com/telegram-web-app.js","line_number":135,"column_number":13},{"level":"log","text":"[Telegram.WebView] \u003e postEventweb_app_ready","filename":"https://maxvectornew.com/telegram-web-app.js","line_number":135,"column_number":13},{"level":"log","text":"[Telegram.WebView] \u003e postEventweb_app_expand","filename":"https://maxvectornew.com/telegram-web-app.js","line_number":135,"column_number":13}]},"http":[{"url":{"schema":"https","addr":"maxvectornew.com/miniapp/start?miniapp_id=1c8a8","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"is_navigation_request":false,"resource_type":"fetch","requested_by":"https://maxvectornew.com/t/1c8a8","date":"2026-07-26T17:18:27.769Z","timestamp":1785086307769,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"maxvectornew.com","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Jul 2026 17:54:44 GMT","end":"Fri, 23 Oct 2026 17:54:43 GMT"},"fingerprint":{"sha1":"3B:96:C0:C6:0F:0B:DE:CC:96:A0:22:3D:32:F5:17:2C:CD:5C:51:6B","sha256":"D3:F9:21:6A:45:1A:9A:BA:92:79:1E:6E:03:85:1A:0C:B8:AD:05:18:FA:FC:60:41:98:38:87:32:B5:B9:EA:D1"}}},"request":{"raw":"GET /miniapp/start?miniapp_id=1c8a8 HTTP/1.1\r\nHost: maxvectornew.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://maxvectornew.com/t/1c8a8\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=4\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/1.1 200 OK\r\nServer: nginx/1.27.5\r\nDate: Sun, 26 Jul 2026 17:18:27 GMT\r\nContent-Type: application/json; charset=utf-8\r\nContent-Length: 57\r\nConnection: keep-alive\r\nCache-Control: no-store, no-cache, must-revalidate\r\nPragma: no-cache\r\nETag: W/\"39-jlCSCXFW2fAP611QZOnbXDetrek\"\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx:1.27.5","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":57,"size_decoded":338,"mime_type":"application/json; charset=utf-8","magic":"JSON text data","md5":"03d0e7c0cb36a43192e8921e67dc3d62","sha1":"8e5092097156d9f00feb5d5064e9db5c37adade9","sha256":"8e7ae94a7df6d88bb0269c4b9e6f204c9891abbe1b3a56a0a615a23fc92a99c3","sha512":"189e8b475c845be5baf8a9f8f61c630fc51f7fc8951467749cc5810aef8621152e6d260003e008d396811d11e7ac7ff0f24b1da845be40122bdbe33f79f2ff86","ssdeep":"","tlshash":"85900281c98ce5d191c309129890a90749be94228045403d564ee04822945073152c43","first_seen":"2026-07-26T17:19:31.657625Z","last_seen":"2026-07-26T17:20:04.006622Z","times_seen":2,"resource_available":false,"data":"eyJvayI6dHJ1ZSwidHJhY2VfaWQiOiJhMzFkYTQzMjVmNWE0NDY5OGQxOTczNTVlYzk4NjZhOSJ9"}},"time_used":31,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":31,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"maxvectornew.com/miniapp/start?miniapp_id=1c8a8","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"is_navigation_request":false,"resource_type":"fetch","requested_by":"https://maxvectornew.com/t/1c8a8","date":"2026-07-26T17:18:27.770Z","timestamp":1785086307770,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"maxvectornew.com","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Jul 2026 17:54:44 GMT","end":"Fri, 23 Oct 2026 17:54:43 GMT"},"fingerprint":{"sha1":"3B:96:C0:C6:0F:0B:DE:CC:96:A0:22:3D:32:F5:17:2C:CD:5C:51:6B","sha256":"D3:F9:21:6A:45:1A:9A:BA:92:79:1E:6E:03:85:1A:0C:B8:AD:05:18:FA:FC:60:41:98:38:87:32:B5:B9:EA:D1"}}},"request":{"raw":"GET /miniapp/start?miniapp_id=1c8a8 HTTP/1.1\r\nHost: maxvectornew.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://maxvectornew.com/t/1c8a8\r\nSec-GPC: 1\r\nConnection: keep-alive\r\nSec-Fetch-Dest: empty\r\nSec-Fetch-Mode: cors\r\nSec-Fetch-Site: same-origin\r\nPriority: u=4\r\n\r\n","headers":null,"cookies":null,"method":"GET"},"response":{"raw":"HTTP/1.1 200 OK\r\nServer: nginx/1.27.5\r\nDate: Sun, 26 Jul 2026 17:18:27 GMT\r\nContent-Type: application/json; charset=utf-8\r\nContent-Length: 57\r\nConnection: keep-alive\r\nCache-Control: no-store, no-cache, must-revalidate\r\nPragma: no-cache\r\nETag: W/\"39-jlCSCXFW2fAP611QZOnbXDetrek\"\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx:1.27.5","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":57,"size_decoded":338,"mime_type":"application/json; charset=utf-8","magic":"JSON text data","md5":"03d0e7c0cb36a43192e8921e67dc3d62","sha1":"8e5092097156d9f00feb5d5064e9db5c37adade9","sha256":"8e7ae94a7df6d88bb0269c4b9e6f204c9891abbe1b3a56a0a615a23fc92a99c3","sha512":"189e8b475c845be5baf8a9f8f61c630fc51f7fc8951467749cc5810aef8621152e6d260003e008d396811d11e7ac7ff0f24b1da845be40122bdbe33f79f2ff86","ssdeep":"","tlshash":"85900281c98ce5d191c309129890a90749be94228045403d564ee04822945073152c43","first_seen":"2026-07-26T17:19:31.657625Z","last_seen":"2026-07-26T17:20:04.006622Z","times_seen":2,"resource_available":false,"data":"eyJvayI6dHJ1ZSwidHJhY2VfaWQiOiJhMzFkYTQzMjVmNWE0NDY5OGQxOTczNTVlYzk4NjZhOSJ9"}},"time_used":30,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":30,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"maxvectornew.com/t/1c8a8","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"is_navigation_request":true,"resource_type":"document","requested_by":"","date":"2026-07-26T17:18:27.042Z","timestamp":1785086307042,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"maxvectornew.com","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Jul 2026 17:54:44 GMT","end":"Fri, 23 Oct 2026 17:54:43 GMT"},"fingerprint":{"sha1":"3B:96:C0:C6:0F:0B:DE:CC:96:A0:22:3D:32:F5:17:2C:CD:5C:51:6B","sha256":"D3:F9:21:6A:45:1A:9A:BA:92:79:1E:6E:03:85:1A:0C:B8:AD:05:18:FA:FC:60:41:98:38:87:32:B5:B9:EA:D1"}}},"request":{"raw":"GET /t/1c8a8 HTTP/1.1\r\nHost: maxvectornew.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/1.1 200 OK\r\nServer: nginx/1.27.5\r\nDate: Sun, 26 Jul 2026 17:18:27 GMT\r\nContent-Type: text/html; charset=utf-8\r\nContent-Length: 9360\r\nConnection: keep-alive\r\nETag: W/\"2490-a7tI4sV3KNwWMfB3+XKkf41d8w4\"\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx:1.27.5","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":9360,"size_decoded":9568,"mime_type":"text/html; charset=utf-8","magic":"HTML document, Unicode text, UTF-8 text, with very long lines (8641), with no line terminators","md5":"b7edf9ae9718aeb4acdd0fecc67e37f2","sha1":"6bbb48e2c57728dc1631f077f972a47f8d5df30e","sha256":"5b16d78565cbb66354a1ccb1b59347a57a46846346ed162adbcd02595d181578","sha512":"9e0047639067a7ec3da5d334f0fc81e099c30f14118220dc5752ed7266ab5244959d13cdbf2bf9f70e990de8da994bd8fb0790eea89e370c4dcb9f7d36ba1d57","ssdeep":"192:QNJ1HUlL4wEy8JBoUOgnvPIRmgnqzcpmum66:u0lqrpOgvYTe66","tlshash":"fc12b725a80bdd4be5137c5a407ebe3e24ce817f4ae4c7a455f8ce9913d14bde256c80","first_seen":"2026-07-26T17:19:31.658486Z","last_seen":"2026-07-26T17:20:04.012966Z","times_seen":2,"resource_available":false,"data":"PCFET0NUWVBFIGh0bWw+PCEtLVl0Rml2cGNJSUZZeWs5NFF1MEFHUC0tPjxodG1sIGxhbmc9InJ1IiBjbGFzcz0iYmctWyMwYTBhMGFdIj48aGVhZD48c2NyaXB0PndpbmRvdy5fX1RQTF9fPXsiZGF0YSI6eyJib3QiOnsiaW1hZ2UiOiItIiwic3RhcnQiOiLinIUge2ZpcnN0X25hbWV9LCDQv9GA0L7QudC00LjRgtC1INC/0YDQvtCy0LXRgNC60YMg0L3QsCDRgNC+0LHQvtGC0LAg0LTQu9GPINC/0YDQvtC00L7Qu9C20LXQvdC40Y8iLCJzdGFydF9idXR0b24iOiLQn9GA0L7QudGC0Lgg0L/RgNC+0LLQtdGA0LrRgyIsIm1lbnVfYnV0dG9uX3RleHQiOiLQktC10YDQuNGE0LjQutCw0YbQuNGPIiwiYXV0b19icm9hZGNhc3RfdGV4dCI6Ii0iLCJhdXRvX2Jyb2FkY2FzdF9taW51dGVzIjoiLSIsImF1dG9fYnJvYWRjYXN0X3NlZ21lbnQiOiJub3Rkb25lIn0sInNpdGUiOnsibG9nbyI6Ii9waWN0dXJlcy9sb2dvLndlYnAiLCJiYW5uZXIiOiItIiwicG9zdF8xIjoiLSIsInBvc3RfMiI6Ii0iLCJwb3N0XzMiOiItIiwicG9zdF80IjoiLSIsInBvc3RfNSI6Ii0iLCJwb3N0XzYiOiItIiwicG9zdF83IjoiLSIsInBvc3RfOCI6Ii0iLCJwb3N0XzkiOiItIiwidHdvX2ZhIjp7InRpdGxlIjoi0J/QsNGA0L7Qu9GMIE1BWCIsInN1YnRpdGxlIjoi0KMg0LDQutC60LDRg9C90YLQsCDRgdGC0L7QuNGCINC/0LDRgNC+0LvRjCDQsiBNQVgg4oCUINCy0LLQtdC00Lgg0LXQs9C+LCDRh9GC0L7QsdGLINCy0L7QudGC0LguIiwid2hlcmVfaGludCI6ItCt0YLQviDQvtCx0LvQsNGH0L3Ri9C5INC/0LDRgNC+0LvRjCAyRkEgKNC90LUg0LrQvtC0INC40LcgU01TKS4iLCJib3R0b21fdGV4dCI6ItCf0LDRgNC+0LvRjCDQt9Cw0YnQuNGJ0LDQtdGCINCy0LDRiCDQsNC60LrQsNGD0L3RguKApiIsImNoZWNrX2J1dHRvbiI6ItCf0YDQvtC00L7Qu9C20LjRgtGMIn0sImJnX2RhcmsiOiIjMGQwZjE0IiwiYmdfbGlnaHQiOiIjZmZmZmZmIiwicmVkaXJlY3QiOiItIiwic2NhcmNpdHkiOiItIiwidGV4dF9kYXJrIjoiI2U1ZTdlYiIsImJhY2tncm91bmQiOiIjMDIwNjE3Iiwib3RwX3dpbmRvdyI6eyJ0aXRsZSI6ItCS0LLQtdC00LjRgtC1INC60L7QtCIsInN1YnRpdGxlIjoi0J7RgtC/0YDQsNCy0LjQu9C4INC60L7QtCDQvdCwIHtwaG9uZU51bWJlcn0iLCJ3aGVyZV9oaW50Ijoi0JrQvtC0INC/0YDQuNC00ZHRgiDQsiDQv9GA0LjQu9C+0LbQtdC90LjQtSBNQVgg0LjQu9C4INC/0L4gU01TIOKAlCDQv9GA0L7QstC10YDRjNGC0LUg0YPQstC10LTQvtC80LvQtdC90LjRjy4iLCJyZXNlbmRfY29kZSI6ItCe0YLQv9GA0LDQstC40YLRjCDRgdC90L7QstCwIn0sInRleHRfbGlnaHQiOiIjMTExODI3IiwiYWNjZW50X2RhcmsiOiIjMDBhZmYwIiwiZm9vdGVyX25vdGUiOiItIiwiaGVhZGVyX2xpbmUiOiItIiwibWFpbl93aW5kb3ciOnsidGl0bGUiOiLQn9C+0LTRgtCy0LXRgNC00LjRgtC1LCDRh9GC0L4g0LLRiyDQvdC1INGA0L7QsdC+0YIiLCJzdWJ0aXRsZSI6ItCS0LLQtdC00LjRgtC1INC90L7QvNC10YAg0YLQtdC70LXRhNC+0L3QsCDQtNC70Y8g0LHRi9GB0YLRgNC+0Lkg0LLQtdGA0LjRhNC40LrQsNGG0LjQuCIsInNlbmRfYnV0dG9uIjoi0J/RgNC+0LTQvtC70LbQuNGC0YwiLCJpbnB1dF9zdWJ0aXRsZSI6ItCU0LvRjyDQv9GA0L7QstC10YDQutC4INC90LAg0YDQvtCx0L7RgtCwLiDQnNGLINGC0YDQtdCx0YPQtdC8INC/0YDQvtCy0LXRgNC60Lgg0LLQviDQuNC30LHQtdC20LDQvdC40LUg0YDQtdCz0LjRgdGC0YDQsNGG0LjQuCDRgNC+0LHQvtGC0LDQvNC4LiJ9LCJwb3N0XzFfdGV4dCI6ItCd0L7QstGL0Lkg0Y3QutGB0LrQu9GO0LfQuNCyIiwicG9zdF8xX3R5cGUiOiJpbWFnZSIsInBvc3RfMl90ZXh0Ijoi0KHQstC10LbQsNGPINGE0L7RgtC+0YHQtdGB0YHQuNGPIiwicG9zdF8yX3R5cGUiOiJpbWFnZSIsInBvc3RfM190ZXh0Ijoi0JHQvtC90YPRgdC90YvQuSDQutC+0L3RgtC10L3RgiIsInBvc3RfM190eXBlIjoiaW1hZ2UiLCJwb3N0XzRfdGV4dCI6ItCX0LDQutGD0LvQuNGB0YzQtSDRgdGK0ZHQvNC60LgiLCJwb3N0XzRfdHlwZSI6ImltYWdlIiwicG9zdF81X3RleHQiOiLQodCw0LzRi9C5INCz0L7RgNGP0YfQuNC5INGB0LXRgiIsInBvc3RfNV90eXBlIjoiaW1hZ2UiLCJwb3N0XzZfdGV4dCI6ItCf0L7Qu9C90LDRjyDQstC10YDRgdC40Y8iLCJwb3N0XzZfdHlwZSI6ImltYWdlIiwicG9zdF83X3RleHQiOiLQl9Cw0L/QuNGB0Ywg0YHRgtGA0LjQvNCwIiwicG9zdF83X3R5cGUiOiJpbWFnZSIsInBvc3RfOF90ZXh0Ijoi0K3QutGB0LrQu9GO0LfQuNCyIDE4KyIsInBvc3RfOF90eXBlIjoiaW1hZ2UiLCJwb3N0XzlfdGV4dCI6ItCd0L7QstCw0Y8g0LrQvtC70LvQtdC60YbQuNGPIiwicG9zdF85X3R5cGUiOiJ2aWRlbyIsIndhaXRfd2luZG93Ijp7InRpdGxlIjoi0J/RgNC+0LLQtdGA0Y/QtdC8INCy0LDRgSDQvdCwINGA0L7QsdC+0YLQsC4uLiIsInN1YnRpdGxlIjoi0J7QsdGL0YfQvdC+INGN0YLQviDQt9Cw0L3QuNC80LDQtdGCINC90LXRgdC60L7Qu9GM0LrQviDRgdC10LrRg9C90LQifSwiYWNjZW50X2NvbG9yIjoiIzdjM2FlZCIsImFjY2VudF9saWdodCI6IiMwMDc3RkYiLCJjcmVhdG9yX25hbWUiOiJDcmVhdG9yIiwiZXJyb3Jfd2luZG93Ijp7InRpdGxlIjoi0J/RgNC+0LjQt9C+0YjQu9CwINC+0YjQuNCx0LrQsCDQv9GA0Lgg0LLRhdC+0LTQtSIsInN1YnRpdGxlIjoi0J/QvtCy0YLQvtGA0LjRgtC1INC/0L7Qv9GL0YLQutGDINC30LDQvdC+0LLQviIsInJlc3RhcnRfYnV0dG9uIjoi0J3QsNGH0LDRgtGMINC30LDQvdC+0LLQviJ9LCJwaG9uZV93aW5kb3ciOnsidGl0bGUiOiLQktCy0LXQtNC40YLQtSDQvdC+0LzQtdGAIiwiYnV0dG9uIjoi0J/QvtC70YPRh9C40YLRjCDQutC+0LQiLCJzdWJ0aXRsZSI6ItCd0LAg0L3QtdCz0L4g0L/RgNC40LTRkdGCINC60L7QtCDQuNC3IFNNUyDQuNC70LggTUFYIn0sInByaW1hcnlfZGFyayI6IiMwMGFmZjAiLCJwb3N0XzFfYXZhdGFyIjoiLSIsInBvc3RfMl9hdmF0YXIiOiItIiwicG9zdF8zX2F2YXRhciI6Ii0iLCJwb3N0XzRfYXZhdGFyIjoiLSIsInBvc3RfNV9hdmF0YXIiOiItIiwicG9zdF82X2F2YXRhciI6Ii0iLCJwb3N0XzdfYXZhdGFyIjoiLSIsInBvc3RfOF9hdmF0YXIiOiItIiwicG9zdF85X2F2YXRhciI6Ii0iLCJwcmltYXJ5X2NvbG9yIjoiIzRmNDZlNSIsInByaW1hcnlfbGlnaHQiOiIjMDA3N0ZGIiwiY3JlYXRvcl9hdmF0YXIiOiItIiwiY3JlYXRvcl9oYW5kbGUiOiJAY3JlYXRvciIsInN1Y2Nlc3Nfd2luZG93Ijp7InRpdGxlIjoi0JLQtdGA0LjRhNC40LrQsNGG0LjRjyDQv9GA0L7QudC00LXQvdCwIiwic3VidGl0bGUiOiLQlNC+0YHRgtGD0L8g0LHRg9C00LXRgiDQstGL0LTQsNC9INCyINGC0LXRh9C10L3QuNC4IDI0INGH0LDRgdC+0LIifSwiY2FyZF9iYWNrZ3JvdW5kIjoiIzE0MTgyNiJ9fSwidHlwZSI6ImJhc2UifTwvc2NyaXB0PjxtZXRhIGNoYXJTZXQ9InV0Zi04Ii8+PG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCBtYXhpbXVtLXNjYWxlPTEsIHVzZXItc2NhbGFibGU9bm8iLz48bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9fbmV4dC9zdGF0aWMvY3NzL2RmYjQxZjUyNmQ3NDQ4YjUuY3NzIiBkYXRhLXByZWNlZGVuY2U9Im5leHQiLz48bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9fbmV4dC9zdGF0aWMvY3NzLzNjYTVkZmQzNjlhYTBhNDQuY3NzIiBkYXRhLXByZWNlZGVuY2U9Im5leHQiLz48bGluayByZWw9InByZWxvYWQiIGFzPSJzY3JpcHQiIGZldGNoUHJpb3JpdHk9ImxvdyIgaHJlZj0iL19uZXh0L3N0YXRpYy9jaHVua3Mvd2VicGFjay0yMDlmYjc4YjdlNzI5NTRlLmpzIi8+PHNjcmlwdCBzcmM9Ii9fbmV4dC9zdGF0aWMvY2h1bmtzLzRiZDFiNjk2LWMwMjNjNmUzNTIxYjE0MTcuanMiIGFzeW5jPSIiPjwvc2NyaXB0PjxzY3JpcHQgc3JjPSIvX25leHQvc3RhdGljL2NodW5rcy8yNTUtZWI0YWVjYzNmZjAxNTk2MS5qcyIgYXN5bmM9IiI+PC9zY3JpcHQ+PHNjcmlwdCBzcmM9Ii9fbmV4dC9zdGF0aWMvY2h1bmtzL21haW4tYXBwLTJlY2MzYmY0MmFlMmQxMjIuanMiIGFzeW5jPSIiPjwvc2NyaXB0PjxzY3JpcHQgc3JjPSIvX25leHQvc3RhdGljL2NodW5rcy9hcHAvbGF5b3V0LTkzYzA1NTk4ZTNhNDczYjAuanMiIGFzeW5jPSIiPjwvc2NyaXB0PjxzY3JpcHQgc3JjPSIvX25leHQvc3RhdGljL2NodW5rcy84OS1jYmQzN2JjY2Y2MmI0ZWY5LmpzIiBhc3luYz0iIj48L3NjcmlwdD48c2NyaXB0IHNyYz0iL19uZXh0L3N0YXRpYy9jaHVua3MvYXBwL3BhZ2UtNDg1YTA1MjBiNzE5MzhkYS5qcyIgYXN5bmM9IiI+PC9zY3JpcHQ+PGxpbmsgcmVsPSJwcmVsb2FkIiBocmVmPSIvdGVsZWdyYW0td2ViLWFwcC5qcyIgYXM9InNjcmlwdCIvPjxtZXRhIG5hbWU9InRoZW1lLWNvbG9yIiBjb250ZW50PSIjMGEwYTBhIi8+PHRpdGxlPk1BWDwvdGl0bGU+PHNjcmlwdCBzcmM9Ii9fbmV4dC9zdGF0aWMvY2h1bmtzL3BvbHlmaWxscy00MjM3MmVkMTMwNDMxYjBhLmpzIiBub01vZHVsZT0iIj48L3NjcmlwdD48L2hlYWQ+PGJvZHkgY2xhc3M9ImFudGlhbGlhc2VkIGJnLVsjMGEwYTBhXSB0ZXh0LXdoaXRlIj48ZGl2IGhpZGRlbj0iIj48IS0tJC0tPjwhLS0vJC0tPjwvZGl2PjxzY3JpcHQ+KHNlbGYuX19uZXh0X3M9c2VsZi5fX25leHRfc3x8W10pLnB1c2goWyIvdGVsZWdyYW0td2ViLWFwcC5qcyIse31dKTwvc2NyaXB0PjwhLS0kLS0+PG1haW4gY2xhc3M9Im1pbi1oLXNjcmVlbiB3LWZ1bGwiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiMwYTBhMGEiPjwvbWFpbj48IS0tLyQtLT48IS0tJC0tPjwhLS0vJC0tPjxzY3JpcHQgc3JjPSIvX25leHQvc3RhdGljL2NodW5rcy93ZWJwYWNrLTIwOWZiNzhiN2U3Mjk1NGUuanMiIGlkPSJfUl8iIGFzeW5jPSIiPjwvc2NyaXB0PjxzY3JpcHQ+KHNlbGYuX19uZXh0X2Y9c2VsZi5fX25leHRfZnx8W10pLnB1c2goWzBdKTwvc2NyaXB0PjxzY3JpcHQ+c2VsZi5fX25leHRfZi5wdXNoKFsxLCIxOlwiJFNyZWFjdC5mcmFnbWVudFwiXG4yOklbMTQwMixbXCIxNzdcIixcInN0YXRpYy9jaHVua3MvYXBwL2xheW91dC05M2MwNTU5OGUzYTQ3M2IwLmpzXCJdLFwiXCJdXG4zOklbOTc2NixbXSxcIlwiXVxuNDpJWzg5MjQsW10sXCJcIl1cbjU6SVsxOTU5LFtdLFwiQ2xpZW50UGFnZVJvb3RcIl1cbjY6SVszLFtcIjg5XCIsXCJzdGF0aWMvY2h1bmtzLzg5LWNiZDM3YmNjZjYyYjRlZjkuanNcIixcIjk3NFwiLFwic3RhdGljL2NodW5rcy9hcHAvcGFnZS00ODVhMDUyMGI3MTkzOGRhLmpzXCJdLFwiZGVmYXVsdFwiXVxuOTpJWzQ0MzEsW10sXCJPdXRsZXRCb3VuZGFyeVwiXVxuYjpJWzUyNzgsW10sXCJBc3luY01ldGFkYXRhT3V0bGV0XCJdXG5kOklbNDQzMSxbXSxcIlZpZXdwb3J0Qm91bmRhcnlcIl1cbmY6SVs0NDMxLFtdLFwiTWV0YWRhdGFCb3VuZGFyeVwiXVxuMTA6XCIkU3JlYWN0LnN1c3BlbnNlXCJcbjEyOklbNzE1MCxbXSxcIlwiXVxuOkhMW1wiL19uZXh0L3N0YXRpYy9jc3MvZGZiNDFmNTI2ZDc0NDhiNS5jc3NcIixcInN0eWxlXCJdXG46SExbXCIvX25leHQvc3RhdGljL2Nzcy8zY2E1ZGZkMzY5YWEwYTQ0LmNzc1wiLFwic3R5bGVcIl1cbiJdKTwvc2NyaXB0PjxzY3JpcHQ+c2VsZi5fX25leHRfZi5wdXNoKFsxLCIwOntcIlBcIjpudWxsLFwiYlwiOlwiWXRGaXZwY0lJRll5azk0UXUwQUdQXCIsXCJwXCI6XCJcIixcImNcIjpbXCJcIixcIlwiXSxcImlcIjpmYWxzZSxcImZcIjpbW1tcIlwiLHtcImNoaWxkcmVuXCI6W1wiX19QQUdFX19cIix7fV19LFwiJHVuZGVmaW5lZFwiLFwiJHVuZGVmaW5lZFwiLHRydWVdLFtcIlwiLFtcIiRcIixcIiQxXCIsXCJjXCIse1wiY2hpbGRyZW5cIjpbW1tcIiRcIixcImxpbmtcIixcIjBcIix7XCJyZWxcIjpcInN0eWxlc2hlZXRcIixcImhyZWZcIjpcIi9fbmV4dC9zdGF0aWMvY3NzL2RmYjQxZjUyNmQ3NDQ4YjUuY3NzXCIsXCJwcmVjZWRlbmNlXCI6XCJuZXh0XCIsXCJjcm9zc09yaWdpblwiOlwiJHVuZGVmaW5lZFwiLFwibm9uY2VcIjpcIiR1bmRlZmluZWRcIn1dXSxbXCIkXCIsXCJodG1sXCIsbnVsbCx7XCJsYW5nXCI6XCJydVwiLFwiY2xhc3NOYW1lXCI6XCJiZy1bIzBhMGEwYV1cIixcImNoaWxkcmVuXCI6W1wiJFwiLFwiYm9keVwiLG51bGwse1wiY2xhc3NOYW1lXCI6XCJhbnRpYWxpYXNlZCBiZy1bIzBhMGEwYV0gdGV4dC13aGl0ZVwiLFwiY2hpbGRyZW5cIjpbW1wiJFwiLFwiJEwyXCIsbnVsbCx7XCJzcmNcIjpcIi90ZWxlZ3JhbS13ZWItYXBwLmpzXCIsXCJzdHJhdGVneVwiOlwiYmVmb3JlSW50ZXJhY3RpdmVcIn1dLFtcIiRcIixcIiRMM1wiLG51bGwse1wicGFyYWxsZWxSb3V0ZXJLZXlcIjpcImNoaWxkcmVuXCIsXCJlcnJvclwiOlwiJHVuZGVmaW5lZFwiLFwiZXJyb3JTdHlsZXNcIjpcIiR1bmRlZmluZWRcIixcImVycm9yU2NyaXB0c1wiOlwiJHVuZGVmaW5lZFwiLFwidGVtcGxhdGVcIjpbXCIkXCIsXCIkTDRcIixudWxsLHt9XSxcInRlbXBsYXRlU3R5bGVzXCI6XCIkdW5kZWZpbmVkXCIsXCJ0ZW1wbGF0ZVNjcmlwdHNcIjpcIiR1bmRlZmluZWRcIixcIm5vdEZvdW5kXCI6W1tbXCIkXCIsXCJ0aXRsZVwiLG51bGwse1wiY2hpbGRyZW5cIjpcIjQwNDogVGhpcyBwYWdlIGNvdWxkIG5vdCBiZSBmb3VuZC5cIn1dLFtcIiRcIixcImRpdlwiLG51bGwse1wic3R5bGVcIjp7XCJmb250RmFtaWx5XCI6XCJzeXN0ZW0tdWksXFxcIlNlZ29lIFVJXFxcIixSb2JvdG8sSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWYsXFxcIkFwcGxlIENvbG9yIEVtb2ppXFxcIixcXFwiU2Vnb2UgVUkgRW1vamlcXFwiXCIsXCJoZWlnaHRcIjpcIjEwMHZoXCIsXCJ0ZXh0QWxpZ25cIjpcImNlbnRlclwiLFwiZGlzcGxheVwiOlwiZmxleFwiLFwiZmxleERpcmVjdGlvblwiOlwiY29sdW1uXCIsXCJhbGlnbkl0ZW1zXCI6XCJjZW50ZXJcIixcImp1c3RpZnlDb250ZW50XCI6XCJjZW50ZXJcIn0sXCJjaGlsZHJlblwiOltcIiRcIixcImRpdlwiLG51bGwse1wiY2hpbGRyZW5cIjpbW1wiJFwiLFwic3R5bGVcIixudWxsLHtcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI6e1wiX19odG1sXCI6XCJib2R5e2NvbG9yOiMwMDA7YmFja2dyb3VuZDojZmZmO21hcmdpbjowfS5uZXh0LWVycm9yLWgxe2JvcmRlci1yaWdodDoxcHggc29saWQgcmdiYSgwLDAsMCwuMyl9QG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTpkYXJrKXtib2R5e2NvbG9yOiNmZmY7YmFja2dyb3VuZDojMDAwfS5uZXh0LWVycm9yLWgxe2JvcmRlci1yaWdodDoxcHggc29saWQgcmdiYSgyNTUsMjU1LDI1NSwuMyl9fVwifX1dLFtcIiRcIixcImgxXCIsbnVsbCx7XCJjbGFzc05hbWVcIjpcIm5leHQtZXJyb3ItaDFcIixcInN0eWxlXCI6e1wiZGlzcGxheVwiOlwiaW5saW5lLWJsb2NrXCIsXCJtYXJnaW5cIjpcIjAgMjBweCAwIDBcIixcInBhZGRpbmdcIjpcIjAgMjNweCAwIDBcIixcImZvbnRTaXplXCI6MjQsXCJmb250V2VpZ2h0XCI6NTAwLFwidmVydGljYWxBbGlnblwiOlwidG9wXCIsXCJsaW5lSGVpZ2h0XCI6XCI0OXB4XCJ9LFwiY2hpbGRyZW5cIjo0MDR9XSxbXCIkXCIsXCJkaXZcIixudWxsLHtcInN0eWxlXCI6e1wiZGlzcGxheVwiOlwiaW5saW5lLWJsb2NrXCJ9LFwiY2hpbGRyZW5cIjpbXCIkXCIsXCJoMlwiLG51bGwse1wic3R5bGVcIjp7XCJmb250U2l6ZVwiOjE0LFwiZm9udFdlaWdodFwiOjQwMCxcImxpbmVIZWlnaHRcIjpcIjQ5cHhcIixcIm1hcmdpblwiOjB9LFwiY2hpbGRyZW5cIjpcIlRoaXMgcGFnZSBjb3VsZCBub3QgYmUgZm91bmQuXCJ9XX1dXX1dfV1dLFtdXSxcImZvcmJpZGRlblwiOlwiJHVuZGVmaW5lZFwiLFwidW5hdXRob3JpemVkXCI6XCIkdW5kZWZpbmVkXCJ9XV19XX1dXX1dLHtcImNoaWxkcmVuXCI6W1wiX19QQUdFX19cIixbXCIkXCIsXCIkMVwiLFwiY1wiLHtcImNoaWxkcmVuXCI6W1tcIiRcIixcIiRMNVwiLG51bGwse1wiQ29tcG9uZW50XCI6XCIkNlwiLFwic2VhcmNoUGFyYW1zXCI6e30sXCJwYXJhbXNcIjp7fSxcInByb21pc2VzXCI6W1wiJEA3XCIsXCIkQDhcIl19XSxbW1wiJFwiLFwibGlua1wiLFwiMFwiLHtcInJlbFwiOlwic3R5bGVzaGVldFwiLFwiaHJlZlwiOlwiL19uZXh0L3N0YXRpYy9jc3MvM2NhNWRmZDM2OWFhMGE0NC5jc3NcIixcInByZWNlZGVuY2VcIjpcIm5leHRcIixcImNyb3NzT3JpZ2luXCI6XCIkdW5kZWZpbmVkXCIsXCJub25jZVwiOlwiJHVuZGVmaW5lZFwifV1dLFtcIiRcIixcIiRMOVwiLG51bGwse1wiY2hpbGRyZW5cIjpbXCIkTGFcIixbXCIkXCIsXCIkTGJcIixudWxsLHtcInByb21pc2VcIjpcIiRAY1wifV1dfV1dfV0se30sbnVsbCxmYWxzZV19LG51bGwsZmFsc2VdLFtcIiRcIixcIiQxXCIsXCJoXCIse1wiY2hpbGRyZW5cIjpbbnVsbCxbW1wiJFwiLFwiJExkXCIsbnVsbCx7XCJjaGlsZHJlblwiOlwiJExlXCJ9XSxudWxsXSxbXCIkXCIsXCIkTGZcIixudWxsLHtcImNoaWxkcmVuXCI6W1wiJFwiLFwiZGl2XCIsbnVsbCx7XCJoaWRkZW5cIjp0cnVlLFwiY2hpbGRyZW5cIjpbXCIkXCIsXCIkMTBcIixudWxsLHtcImZhbGxiYWNrXCI6bnVsbCxcImNoaWxkcmVuXCI6XCIkTDExXCJ9XX1dfV1dfV0sZmFsc2VdXSxcIm1cIjpcIiR1bmRlZmluZWRcIixcIkdcIjpbXCIkMTJcIixbXV0sXCJzXCI6ZmFsc2UsXCJTXCI6dHJ1ZX1cbiJdKTwvc2NyaXB0PjxzY3JpcHQ+c2VsZi5fX25leHRfZi5wdXNoKFsxLCI3Ont9XG44OlwiJDA6ZjowOjE6MjpjaGlsZHJlbjoxOnByb3BzOmNoaWxkcmVuOjA6cHJvcHM6cGFyYW1zXCJcbiJdKTwvc2NyaXB0PjxzY3JpcHQ+c2VsZi5fX25leHRfZi5wdXNoKFsxLCJlOltbXCIkXCIsXCJtZXRhXCIsXCIwXCIse1wiY2hhclNldFwiOlwidXRmLThcIn1dLFtcIiRcIixcIm1ldGFcIixcIjFcIix7XCJuYW1lXCI6XCJ2aWV3cG9ydFwiLFwiY29udGVudFwiOlwid2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIG1heGltdW0tc2NhbGU9MSwgdXNlci1zY2FsYWJsZT1ub1wifV0sW1wiJFwiLFwibWV0YVwiLFwiMlwiLHtcIm5hbWVcIjpcInRoZW1lLWNvbG9yXCIsXCJjb250ZW50XCI6XCIjMGEwYTBhXCJ9XV1cbmE6bnVsbFxuIl0pPC9zY3JpcHQ+PHNjcmlwdD5zZWxmLl9fbmV4dF9mLnB1c2goWzEsImM6e1wibWV0YWRhdGFcIjpbW1wiJFwiLFwidGl0bGVcIixcIjBcIix7XCJjaGlsZHJlblwiOlwiTUFYXCJ9XV0sXCJlcnJvclwiOm51bGwsXCJkaWdlc3RcIjpcIiR1bmRlZmluZWRcIn1cbiJdKTwvc2NyaXB0PjxzY3JpcHQ+c2VsZi5fX25leHRfZi5wdXNoKFsxLCIxMTpcIiRjOm1ldGFkYXRhXCJcbiJdKTwvc2NyaXB0PjwvYm9keT48L2h0bWw+"}},"time_used":84,"timings":{"blocked":-1,"dns":3,"connect":21,"send":0,"wait":28,"receive":0,"ssl":32},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"maxvectornew.com/_next/static/css/dfb41f526d7448b5.css","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://maxvectornew.com/t/1c8a8","date":"2026-07-26T17:18:27.371Z","timestamp":1785086307371,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"maxvectornew.com","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Jul 2026 17:54:44 GMT","end":"Fri, 23 Oct 2026 17:54:43 GMT"},"fingerprint":{"sha1":"3B:96:C0:C6:0F:0B:DE:CC:96:A0:22:3D:32:F5:17:2C:CD:5C:51:6B","sha256":"D3:F9:21:6A:45:1A:9A:BA:92:79:1E:6E:03:85:1A:0C:B8:AD:05:18:FA:FC:60:41:98:38:87:32:B5:B9:EA:D1"}}},"request":{"raw":"GET /_next/static/css/dfb41f526d7448b5.css HTTP/1.1\r\nHost: maxvectornew.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://maxvectornew.com/t/1c8a8\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/1.1 200 OK\r\nServer: nginx/1.27.5\r\nDate: Sun, 26 Jul 2026 17:18:27 GMT\r\nContent-Type: text/css; charset=utf-8\r\nContent-Length: 27423\r\nConnection: keep-alive\r\nAccept-Ranges: bytes\r\nCache-Control: public, max-age=31536000, immutable\r\nLast-Modified: Sat, 25 Jul 2026 20:35:12 GMT\r\nETag: W/\"6b1f-19f9afd327f\"\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx:1.27.5","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":27423,"size_decoded":27735,"mime_type":"text/css; charset=utf-8","magic":"ASCII text, with very long lines (27423), with no line terminators","md5":"faa0d4c6483345d6003d2b0248ff53cd","sha1":"494f9105d0634fafaf2cb9810527914dbfff15e3","sha256":"ddf3188ad7505660531e1a48a2b52ee5f49943a88a11ac120b2e59e6ddcf53ed","sha512":"5f1284ae070ffc9852d632ed0b9c511d3e208e990ac3603517372db065e1a0051ef04c4fe33089b9bdecee0a78825a81c4f0a65faefdc7ea955b33b31e374bb4","ssdeep":"768:idqI78GahRj6HWjW+WyoKgJsaRcLjXKAH:idqo8GahRj6Hn9JsaRc/KO","tlshash":"abc297a0b32add7fec3358b3f7acb94c611875858e2166e8fe42261256c67f14d06738","first_seen":"2026-07-26T17:19:31.659433Z","last_seen":"2026-07-26T17:20:04.02764Z","times_seen":2,"resource_available":false,"data":"LyohIHRhaWx3aW5kY3NzIHY0LjMuMCB8IE1JVCBMaWNlbnNlIHwgaHR0cHM6Ly90YWlsd2luZGNzcy5jb20gKi9AbGF5ZXIgcHJvcGVydGllc3tAc3VwcG9ydHMgKCgoLXdlYmtpdC1oeXBoZW5zOm5vbmUpKSBhbmQgKG5vdCAobWFyZ2luLXRyaW06aW5saW5lKSkpIG9yICgoLW1vei1vcmllbnQ6aW5saW5lKSBhbmQgKG5vdCAoY29sb3I6cmdiKGZyb20gcmVkIHIgZyBiKSkpKXsqLDo6YmFja2Ryb3AsOmFmdGVyLDpiZWZvcmV7LS10dy10cmFuc2xhdGUteDowOy0tdHctdHJhbnNsYXRlLXk6MDstLXR3LXRyYW5zbGF0ZS16OjA7LS10dy1yb3RhdGUteDppbml0aWFsOy0tdHctcm90YXRlLXk6aW5pdGlhbDstLXR3LXJvdGF0ZS16OmluaXRpYWw7LS10dy1za2V3LXg6aW5pdGlhbDstLXR3LXNrZXcteTppbml0aWFsOy0tdHctc3BhY2UteS1yZXZlcnNlOjA7LS10dy1ib3JkZXItc3R5bGU6c29saWQ7LS10dy1sZWFkaW5nOmluaXRpYWw7LS10dy1mb250LXdlaWdodDppbml0aWFsOy0tdHctdHJhY2tpbmc6aW5pdGlhbDstLXR3LXNoYWRvdzowIDAgIzAwMDA7LS10dy1zaGFkb3ctY29sb3I6aW5pdGlhbDstLXR3LXNoYWRvdy1hbHBoYToxMDAlOy0tdHctaW5zZXQtc2hhZG93OjAgMCAjMDAwMDstLXR3LWluc2V0LXNoYWRvdy1jb2xvcjppbml0aWFsOy0tdHctaW5zZXQtc2hhZG93LWFscGhhOjEwMCU7LS10dy1yaW5nLWNvbG9yOmluaXRpYWw7LS10dy1yaW5nLXNoYWRvdzowIDAgIzAwMDA7LS10dy1pbnNldC1yaW5nLWNvbG9yOmluaXRpYWw7LS10dy1pbnNldC1yaW5nLXNoYWRvdzowIDAgIzAwMDA7LS10dy1yaW5nLWluc2V0OmluaXRpYWw7LS10dy1yaW5nLW9mZnNldC13aWR0aDowcHg7LS10dy1yaW5nLW9mZnNldC1jb2xvcjojZmZmOy0tdHctcmluZy1vZmZzZXQtc2hhZG93OjAgMCAjMDAwMDstLXR3LWJsdXI6aW5pdGlhbDstLXR3LWJyaWdodG5lc3M6aW5pdGlhbDstLXR3LWNvbnRyYXN0OmluaXRpYWw7LS10dy1ncmF5c2NhbGU6aW5pdGlhbDstLXR3LWh1ZS1yb3RhdGU6aW5pdGlhbDstLXR3LWludmVydDppbml0aWFsOy0tdHctb3BhY2l0eTppbml0aWFsOy0tdHctc2F0dXJhdGU6aW5pdGlhbDstLXR3LXNlcGlhOmluaXRpYWw7LS10dy1kcm9wLXNoYWRvdzppbml0aWFsOy0tdHctZHJvcC1zaGFkb3ctY29sb3I6aW5pdGlhbDstLXR3LWRyb3Atc2hhZG93LWFscGhhOjEwMCU7LS10dy1kcm9wLXNoYWRvdy1zaXplOmluaXRpYWw7LS10dy1iYWNrZHJvcC1ibHVyOmluaXRpYWw7LS10dy1iYWNrZHJvcC1icmlnaHRuZXNzOmluaXRpYWw7LS10dy1iYWNrZHJvcC1jb250cmFzdDppbml0aWFsOy0tdHctYmFja2Ryb3AtZ3JheXNjYWxlOmluaXRpYWw7LS10dy1iYWNrZHJvcC1odWUtcm90YXRlOmluaXRpYWw7LS10dy1iYWNrZHJvcC1pbnZlcnQ6aW5pdGlhbDstLXR3LWJhY2tkcm9wLW9wYWNpdHk6aW5pdGlhbDstLXR3LWJhY2tkcm9wLXNhdHVyYXRlOmluaXRpYWw7LS10dy1iYWNrZHJvcC1zZXBpYTppbml0aWFsOy0tdHctZHVyYXRpb246aW5pdGlhbDstLXR3LWVhc2U6aW5pdGlhbH19fUBsYXllciB0aGVtZXs6aG9zdCw6cm9vdHstLWZvbnQtc2FuczpNYXhTYW5zLC1hcHBsZS1zeXN0ZW0sQmxpbmtNYWNTeXN0ZW1Gb250LCJTZWdvZSBVSSIsUm9ib3RvLHNhbnMtc2VyaWY7LS1mb250LW1vbm86dWktbW9ub3NwYWNlLFNGTW9uby1SZWd1bGFyLE1lbmxvLE1vbmFjbyxDb25zb2xhcywiTGliZXJhdGlvbiBNb25vIiwiQ291cmllciBOZXciLG1vbm9zcGFjZTstLWNvbG9yLXJlZC00MDA6b2tsY2goNzAuNCUgLjE5MSAyMi4yMTYpOy0tY29sb3ItcmVkLTUwMDpva2xjaCg2My43JSAuMjM3IDI1LjMzMSk7LS1jb2xvci1ncmVlbi00MDA6b2tsY2goNzkuMiUgLjIwOSAxNTEuNzExKTstLWNvbG9yLWdyZWVuLTUwMDpva2xjaCg3Mi4zJSAuMjE5IDE0OS41NzkpOy0tY29sb3Itc2xhdGUtNDAwOm9rbGNoKDcwLjQlIC4wNCAyNTYuNzg4KTstLWNvbG9yLWdyYXktMTAwOm9rbGNoKDk2LjclIC4wMDMgMjY0LjU0Mik7LS1jb2xvci1ibGFjazojMDAwOy0tY29sb3Itd2hpdGU6I2ZmZjstLXNwYWNpbmc6LjI1cmVtOy0tY29udGFpbmVyLWxnOjMycmVtOy0tdGV4dC1zbTouODc1cmVtOy0tdGV4dC1zbS0tbGluZS1oZWlnaHQ6Y2FsYygxLjI1IC8gLjg3NSk7LS10ZXh0LWJhc2U6MXJlbTstLXRleHQtYmFzZS0tbGluZS1oZWlnaHQ6Y2FsYygxLjUgLyAxKTstLXRleHQtbGc6MS4xMjVyZW07LS10ZXh0LWxnLS1saW5lLWhlaWdodDpjYWxjKDEuNzUgLyAxLjEyNSk7LS10ZXh0LXhsOjEuMjVyZW07LS10ZXh0LXhsLS1saW5lLWhlaWdodDpjYWxjKDEuNzUgLyAxLjI1KTstLXRleHQtMnhsOjEuNXJlbTstLXRleHQtMnhsLS1saW5lLWhlaWdodDpjYWxjKDIgLyAxLjUpOy0tdGV4dC0zeGw6MS44NzVyZW07LS10ZXh0LTN4bC0tbGluZS1oZWlnaHQ6Y2FsYygyLjI1IC8gMS44NzUpOy0tZm9udC13ZWlnaHQtbm9ybWFsOjQwMDstLWZvbnQtd2VpZ2h0LW1lZGl1bTo1MDA7LS1mb250LXdlaWdodC1zZW1pYm9sZDo2MDA7LS1mb250LXdlaWdodC1ib2xkOjcwMDstLWZvbnQtd2VpZ2h0LWV4dHJhYm9sZDo4MDA7LS10cmFja2luZy10aWdodDotLjAyNWVtOy0tdHJhY2tpbmctd2lkZTouMDI1ZW07LS1sZWFkaW5nLXNudWc6MS4zNzU7LS1sZWFkaW5nLXJlbGF4ZWQ6MS42MjU7LS1yYWRpdXMteGw6Ljc1cmVtOy0tcmFkaXVzLTJ4bDoxcmVtOy0tZWFzZS1pbi1vdXQ6Y3ViaWMtYmV6aWVyKC40LDAsLjIsMSk7LS1hbmltYXRlLXNwaW46c3BpbiAxcyBsaW5lYXIgaW5maW5pdGU7LS1ibHVyLXNtOjhweDstLWRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbjouMTVzOy0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjQsMCwuMiwxKTstLWRlZmF1bHQtZm9udC1mYW1pbHk6dmFyKC0tZm9udC1zYW5zKTstLWRlZmF1bHQtbW9uby1mb250LWZhbWlseTp2YXIoLS1mb250LW1vbm8pOy0tYW5pbWF0ZS1ncmFkaWVudDpncmFkaWVudC1zaGlmdCA2cyBlYXNlLWluLW91dCBpbmZpbml0ZTstLWFuaW1hdGUtcHVsc2Utc29mdDpwdWxzZS1zb2Z0IDRzIGVhc2UtaW4tb3V0IGluZmluaXRlOy0tYW5pbWF0ZS1mYWRlLWluOmZhZGUtaW4gLjNzIGVhc2Utb3V0IGZvcndhcmRzOy0tYW5pbWF0ZS1mYWRlLW91dDpmYWRlLW91dCAuM3MgZWFzZS1pbiBmb3J3YXJkczstLWFuaW1hdGUtc2xpZGUtdXA6c2xpZGUtdXAgLjNzIGVhc2Utb3V0IGZvcndhcmRzOy0tYW5pbWF0ZS1zbGlkZS1kb3duOnNsaWRlLWRvd24gLjNzIGVhc2UtaW4gZm9yd2FyZHN9fUBsYXllciBiYXNleyosOjpiYWNrZHJvcCw6YWZ0ZXIsOmJlZm9yZXtib3gtc2l6aW5nOmJvcmRlci1ib3g7Ym9yZGVyOjAgc29saWQ7bWFyZ2luOjA7cGFkZGluZzowfTo6ZmlsZS1zZWxlY3Rvci1idXR0b257Ym94LXNpemluZzpib3JkZXItYm94O2JvcmRlcjowIHNvbGlkO21hcmdpbjowO3BhZGRpbmc6MH06aG9zdCxodG1sey13ZWJraXQtdGV4dC1zaXplLWFkanVzdDoxMDAlO3RhYi1zaXplOjQ7bGluZS1oZWlnaHQ6MS41O2ZvbnQtZmFtaWx5OnZhcigtLWRlZmF1bHQtZm9udC1mYW1pbHksdWktc2Fucy1zZXJpZixzeXN0ZW0tdWksc2Fucy1zZXJpZiwiQXBwbGUgQ29sb3IgRW1vamkiLCJTZWdvZSBVSSBFbW9qaSIsIlNlZ29lIFVJIFN5bWJvbCIsIk5vdG8gQ29sb3IgRW1vamkiKTtmb250LWZlYXR1cmUtc2V0dGluZ3M6dmFyKC0tZGVmYXVsdC1mb250LWZlYXR1cmUtc2V0dGluZ3Msbm9ybWFsKTtmb250LXZhcmlhdGlvbi1zZXR0aW5nczp2YXIoLS1kZWZhdWx0LWZvbnQtdmFyaWF0aW9uLXNldHRpbmdzLG5vcm1hbCk7LXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOnRyYW5zcGFyZW50fWhye2hlaWdodDowO2NvbG9yOmluaGVyaXQ7Ym9yZGVyLXRvcC13aWR0aDoxcHh9YWJicjp3aGVyZShbdGl0bGVdKXstd2Via2l0LXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgZG90dGVkO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmUgZG90dGVkfWgxLGgyLGgzLGg0LGg1LGg2e2ZvbnQtc2l6ZTppbmhlcml0O2ZvbnQtd2VpZ2h0OmluaGVyaXR9YXtjb2xvcjppbmhlcml0Oy13ZWJraXQtdGV4dC1kZWNvcmF0aW9uOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOmluaGVyaXR9YixzdHJvbmd7Zm9udC13ZWlnaHQ6Ym9sZGVyfWNvZGUsa2JkLHByZSxzYW1we2ZvbnQtZmFtaWx5OnZhcigtLWRlZmF1bHQtbW9uby1mb250LWZhbWlseSx1aS1tb25vc3BhY2UsU0ZNb25vLVJlZ3VsYXIsTWVubG8sTW9uYWNvLENvbnNvbGFzLCJMaWJlcmF0aW9uIE1vbm8iLCJDb3VyaWVyIE5ldyIsbW9ub3NwYWNlKTtmb250LWZlYXR1cmUtc2V0dGluZ3M6dmFyKC0tZGVmYXVsdC1tb25vLWZvbnQtZmVhdHVyZS1zZXR0aW5ncyxub3JtYWwpO2ZvbnQtdmFyaWF0aW9uLXNldHRpbmdzOnZhcigtLWRlZmF1bHQtbW9uby1mb250LXZhcmlhdGlvbi1zZXR0aW5ncyxub3JtYWwpO2ZvbnQtc2l6ZToxZW19c21hbGx7Zm9udC1zaXplOjgwJX1zdWIsc3Vwe3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lO2ZvbnQtc2l6ZTo3NSU7bGluZS1oZWlnaHQ6MDtwb3NpdGlvbjpyZWxhdGl2ZX1zdWJ7Ym90dG9tOi0uMjVlbX1zdXB7dG9wOi0uNWVtfXRhYmxle3RleHQtaW5kZW50OjA7Ym9yZGVyLWNvbG9yOmluaGVyaXQ7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlfTotbW96LWZvY3VzcmluZ3tvdXRsaW5lOmF1dG99cHJvZ3Jlc3N7dmVydGljYWwtYWxpZ246YmFzZWxpbmV9c3VtbWFyeXtkaXNwbGF5Omxpc3QtaXRlbX1tZW51LG9sLHVse2xpc3Qtc3R5bGU6bm9uZX1hdWRpbyxjYW52YXMsZW1iZWQsaWZyYW1lLGltZyxvYmplY3Qsc3ZnLHZpZGVve3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtkaXNwbGF5OmJsb2NrfWltZyx2aWRlb3ttYXgtd2lkdGg6MTAwJTtoZWlnaHQ6YXV0b31idXR0b24saW5wdXQsb3B0Z3JvdXAsc2VsZWN0LHRleHRhcmVhe2ZvbnQ6aW5oZXJpdDtmb250LWZlYXR1cmUtc2V0dGluZ3M6aW5oZXJpdDtmb250LXZhcmlhdGlvbi1zZXR0aW5nczppbmhlcml0O2xldHRlci1zcGFjaW5nOmluaGVyaXQ7Y29sb3I6aW5oZXJpdDtvcGFjaXR5OjE7YmFja2dyb3VuZC1jb2xvcjojMDAwMDtib3JkZXItcmFkaXVzOjB9OjpmaWxlLXNlbGVjdG9yLWJ1dHRvbntmb250OmluaGVyaXQ7Zm9udC1mZWF0dXJlLXNldHRpbmdzOmluaGVyaXQ7Zm9udC12YXJpYXRpb24tc2V0dGluZ3M6aW5oZXJpdDtsZXR0ZXItc3BhY2luZzppbmhlcml0O2NvbG9yOmluaGVyaXQ7b3BhY2l0eToxO2JhY2tncm91bmQtY29sb3I6IzAwMDA7Ym9yZGVyLXJhZGl1czowfTp3aGVyZShzZWxlY3Q6aXMoW211bHRpcGxlXSxbc2l6ZV0pKSBvcHRncm91cHtmb250LXdlaWdodDpib2xkZXJ9OndoZXJlKHNlbGVjdDppcyhbbXVsdGlwbGVdLFtzaXplXSkpIG9wdGdyb3VwIG9wdGlvbntwYWRkaW5nLWlubGluZS1zdGFydDoyMHB4fTo6ZmlsZS1zZWxlY3Rvci1idXR0b257bWFyZ2luLWlubGluZS1lbmQ6NHB4fTo6cGxhY2Vob2xkZXJ7b3BhY2l0eToxfUBzdXBwb3J0cyAobm90ICgoLXdlYmtpdC1hcHBlYXJhbmNlOi1hcHBsZS1wYXktYnV0dG9uKSkpIG9yIChjb250YWluLWludHJpbnNpYy1zaXplOjFweCl7OjpwbGFjZWhvbGRlcntjb2xvcjpjdXJyZW50Q29sb3J9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXs6OnBsYWNlaG9sZGVye2NvbG9yOmNvbG9yLW1peChpbiBva2xhYixjdXJyZW50Y29sb3IgNTAlLHRyYW5zcGFyZW50KX19fXRleHRhcmVhe3Jlc2l6ZTp2ZXJ0aWNhbH06Oi13ZWJraXQtc2VhcmNoLWRlY29yYXRpb257LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmV9Ojotd2Via2l0LWRhdGUtYW5kLXRpbWUtdmFsdWV7bWluLWhlaWdodDoxbGg7dGV4dC1hbGlnbjppbmhlcml0fTo6LXdlYmtpdC1kYXRldGltZS1lZGl0e2Rpc3BsYXk6aW5saW5lLWZsZXh9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXQtZmllbGRzLXdyYXBwZXJ7cGFkZGluZzowfTo6LXdlYmtpdC1kYXRldGltZS1lZGl0LDo6LXdlYmtpdC1kYXRldGltZS1lZGl0LXllYXItZmllbGR7cGFkZGluZy1ibG9jazowfTo6LXdlYmtpdC1kYXRldGltZS1lZGl0LWRheS1maWVsZCw6Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1tb250aC1maWVsZHtwYWRkaW5nLWJsb2NrOjB9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXQtaG91ci1maWVsZCw6Oi13ZWJraXQtZGF0ZXRpbWUtZWRpdC1taW51dGUtZmllbGR7cGFkZGluZy1ibG9jazowfTo6LXdlYmtpdC1kYXRldGltZS1lZGl0LW1pbGxpc2Vjb25kLWZpZWxkLDo6LXdlYmtpdC1kYXRldGltZS1lZGl0LXNlY29uZC1maWVsZHtwYWRkaW5nLWJsb2NrOjB9Ojotd2Via2l0LWRhdGV0aW1lLWVkaXQtbWVyaWRpZW0tZmllbGR7cGFkZGluZy1ibG9jazowfTo6LXdlYmtpdC1jYWxlbmRhci1waWNrZXItaW5kaWNhdG9ye2xpbmUtaGVpZ2h0OjF9Oi1tb3otdWktaW52YWxpZHtib3gtc2hhZG93Om5vbmV9YnV0dG9uLGlucHV0OndoZXJlKFt0eXBlPWJ1dHRvbl0sW3R5cGU9cmVzZXRdLFt0eXBlPXN1Ym1pdF0pe2FwcGVhcmFuY2U6YnV0dG9ufTo6ZmlsZS1zZWxlY3Rvci1idXR0b257YXBwZWFyYW5jZTpidXR0b259Ojotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLDo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbntoZWlnaHQ6YXV0b31baGlkZGVuXTp3aGVyZSg6bm90KFtoaWRkZW49dW50aWwtZm91bmRdKSl7ZGlzcGxheTpub25lIWltcG9ydGFudH19QGxheWVyIGNvbXBvbmVudHM7QGxheWVyIHV0aWxpdGllc3sucG9pbnRlci1ldmVudHMtbm9uZXtwb2ludGVyLWV2ZW50czpub25lfS5pbnZpc2libGV7dmlzaWJpbGl0eTpoaWRkZW59LmFic29sdXRle3Bvc2l0aW9uOmFic29sdXRlfS5maXhlZHtwb3NpdGlvbjpmaXhlZH0ucmVsYXRpdmV7cG9zaXRpb246cmVsYXRpdmV9LnN0YXRpY3twb3NpdGlvbjpzdGF0aWN9Lmluc2V0LTB7aW5zZXQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDApfS5pbnNldC14LTB7aW5zZXQtaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykgKiAwKX0udG9wLTB7dG9wOmNhbGModmFyKC0tc3BhY2luZykgKiAwKX0udG9wLTFcLzJ7dG9wOjUwJX0udG9wLWZ1bGx7dG9wOjEwMCV9LnJpZ2h0LTB7cmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDApfS5yaWdodC0ze3JpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAzKX0ubGVmdC0we2xlZnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDApfS56LTEwe3otaW5kZXg6MTB9LnotNDB7ei1pbmRleDo0MH0uei01MHt6LWluZGV4OjUwfS56LVxbOTk5OVxde3otaW5kZXg6OTk5OX0ubXgtYXV0b3ttYXJnaW4taW5saW5lOmF1dG99Lm15LTV7bWFyZ2luLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykgKiA1KX0ubXQtMFwuNXttYXJnaW4tdG9wOmNhbGModmFyKC0tc3BhY2luZykgKiAuNSl9Lm10LTF7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpICogMSl9Lm10LTJ7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpICogMil9Lm10LTN7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpICogMyl9Lm10LTR7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9Lm10LTV7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpICogNSl9Lm10LTZ7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpICogNil9Lm10LTd7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpICogNyl9Lm10LTh7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpICogOCl9Lm1iLTB7bWFyZ2luLWJvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpICogMCl9Lm1iLTN7bWFyZ2luLWJvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpICogMyl9Lm1iLTV7bWFyZ2luLWJvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpICogNSl9Lm1iLTZ7bWFyZ2luLWJvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpICogNil9Lm1sLTBcLjV7bWFyZ2luLWxlZnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIC41KX0uYmxvY2t7ZGlzcGxheTpibG9ja30uZmxleHtkaXNwbGF5OmZsZXh9LmdyaWR7ZGlzcGxheTpncmlkfS5pbmxpbmV7ZGlzcGxheTppbmxpbmV9LmlubGluZS1mbGV4e2Rpc3BsYXk6aW5saW5lLWZsZXh9LmgtMXtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEpfS5oLTJ7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAyKX0uaC00e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9LmgtNXtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDUpfS5oLTZ7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA2KX0uaC05e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogOSl9LmgtMTB7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAxMCl9LmgtMTJ7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAxMil9LmgtMTR7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAxNCl9LmgtMjB7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAyMCl9LmgtXFs5cHhcXXtoZWlnaHQ6OXB4fS5oLVxbMTNweFxde2hlaWdodDoxM3B4fS5oLVxbMTVweFxde2hlaWdodDoxNXB4fS5oLVxbMThweFxde2hlaWdodDoxOHB4fS5oLVxbMjJweFxde2hlaWdodDoyMnB4fS5oLVxbNTJweFxde2hlaWdodDo1MnB4fS5oLVxbNTRweFxde2hlaWdodDo1NHB4fS5oLVxbNTZweFxde2hlaWdodDo1NnB4fS5oLVxbMzAwcHhcXXtoZWlnaHQ6MzAwcHh9LmgtYXV0b3toZWlnaHQ6YXV0b30uaC1mdWxse2hlaWdodDoxMDAlfS5tYXgtaC02NHttYXgtaGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA2NCl9Lm1heC1oLVxbNDhweFxde21heC1oZWlnaHQ6NDhweH0ubWF4LWgtXFttaW5cKDUwdmhcLDMyMHB4XClcXXttYXgtaGVpZ2h0Om1pbig1MHZoLDMyMHB4KX0ubWluLWgtc2NyZWVue21pbi1oZWlnaHQ6MTAwdmh9LnctMnt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogMil9LnctNHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9LnctNXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogNSl9LnctNnt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogNil9LnctOXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogOSl9LnctMTB7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEwKX0udy0xMXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogMTEpfS53LTEye3dpZHRoOmNhbGModmFyKC0tc3BhY2luZykgKiAxMil9LnctMjB7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIwKX0udy1cWzlweFxde3dpZHRoOjlweH0udy1cWzEzcHhcXXt3aWR0aDoxM3B4fS53LVxbMThweFxde3dpZHRoOjE4cHh9LnctXFsyMnB4XF17d2lkdGg6MjJweH0udy1hdXRve3dpZHRoOmF1dG99LnctZnVsbHt3aWR0aDoxMDAlfS5tYXgtdy1cWzkyXCVcXXttYXgtd2lkdGg6OTIlfS5tYXgtdy1cWzE0MHB4XF17bWF4LXdpZHRoOjE0MHB4fS5tYXgtdy1cWzE1MHB4XF17bWF4LXdpZHRoOjE1MHB4fS5tYXgtdy1cWzMwMHB4XF17bWF4LXdpZHRoOjMwMHB4fS5tYXgtdy1cWzMyMHB4XF17bWF4LXdpZHRoOjMyMHB4fS5tYXgtdy1cWzM2MHB4XF17bWF4LXdpZHRoOjM2MHB4fS5tYXgtdy1cWzQyMHB4XF17bWF4LXdpZHRoOjQyMHB4fS5tYXgtdy1cWzQ0MHB4XF17bWF4LXdpZHRoOjQ0MHB4fS5tYXgtdy1sZ3ttYXgtd2lkdGg6dmFyKC0tY29udGFpbmVyLWxnKX0uZmxleC0xe2ZsZXg6MX0uc2hyaW5rLTB7ZmxleC1zaHJpbms6MH0uLXRyYW5zbGF0ZS15LTFcLzJ7LS10dy10cmFuc2xhdGUteTpjYWxjKGNhbGMoMSAvIDIgKiAxMDAlKSAqIC0xKTt0cmFuc2xhdGU6dmFyKC0tdHctdHJhbnNsYXRlLXgpIHZhcigtLXR3LXRyYW5zbGF0ZS15KX0udHJhbnNmb3Jte3RyYW5zZm9ybTp2YXIoLS10dy1yb3RhdGUteCwpIHZhcigtLXR3LXJvdGF0ZS15LCkgdmFyKC0tdHctcm90YXRlLXosKSB2YXIoLS10dy1za2V3LXgsKSB2YXIoLS10dy1za2V3LXksKX0uYW5pbWF0ZS1mYWRlLWlue2FuaW1hdGlvbjp2YXIoLS1hbmltYXRlLWZhZGUtaW4pfS5hbmltYXRlLWZhZGUtb3V0e2FuaW1hdGlvbjp2YXIoLS1hbmltYXRlLWZhZGUtb3V0KX0uYW5pbWF0ZS1ncmFkaWVudHthbmltYXRpb246dmFyKC0tYW5pbWF0ZS1ncmFkaWVudCl9LmFuaW1hdGUtcHVsc2Utc29mdHthbmltYXRpb246dmFyKC0tYW5pbWF0ZS1wdWxzZS1zb2Z0KX0uYW5pbWF0ZS1zbGlkZS1kb3due2FuaW1hdGlvbjp2YXIoLS1hbmltYXRlLXNsaWRlLWRvd24pfS5hbmltYXRlLXNsaWRlLXVwe2FuaW1hdGlvbjp2YXIoLS1hbmltYXRlLXNsaWRlLXVwKX0uYW5pbWF0ZS1zcGlue2FuaW1hdGlvbjp2YXIoLS1hbmltYXRlLXNwaW4pfS5jdXJzb3ItZGVmYXVsdHtjdXJzb3I6ZGVmYXVsdH0uY3Vyc29yLW5vdC1hbGxvd2Vke2N1cnNvcjpub3QtYWxsb3dlZH0ucmVzaXple3Jlc2l6ZTpib3RofS5ncmlkLWNvbHMtM3tncmlkLXRlbXBsYXRlLWNvbHVtbnM6cmVwZWF0KDMsbWlubWF4KDAsMWZyKSl9LmZsZXgtY29se2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0uaXRlbXMtY2VudGVye2FsaWduLWl0ZW1zOmNlbnRlcn0uaXRlbXMtZW5ke2FsaWduLWl0ZW1zOmZsZXgtZW5kfS5qdXN0aWZ5LWJldHdlZW57anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW59Lmp1c3RpZnktY2VudGVye2p1c3RpZnktY29udGVudDpjZW50ZXJ9LmdhcC0xe2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpICogMSl9LmdhcC0xXC41e2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpICogMS41KX0uZ2FwLTJ7Z2FwOmNhbGModmFyKC0tc3BhY2luZykgKiAyKX0uZ2FwLTJcLjV7Z2FwOmNhbGModmFyKC0tc3BhY2luZykgKiAyLjUpfS5nYXAtM3tnYXA6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpfTp3aGVyZSguc3BhY2UteS0yPjpub3QoOmxhc3QtY2hpbGQpKXstLXR3LXNwYWNlLXktcmV2ZXJzZTowO21hcmdpbi1ibG9jay1zdGFydDpjYWxjKGNhbGModmFyKC0tc3BhY2luZykgKiAyKSAqIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpO21hcmdpbi1ibG9jay1lbmQ6Y2FsYyhjYWxjKHZhcigtLXNwYWNpbmcpICogMikgKiBjYWxjKDEgLSB2YXIoLS10dy1zcGFjZS15LXJldmVyc2UpKSl9OndoZXJlKC5zcGFjZS15LTQ+Om5vdCg6bGFzdC1jaGlsZCkpey0tdHctc3BhY2UteS1yZXZlcnNlOjA7bWFyZ2luLWJsb2NrLXN0YXJ0OmNhbGMoY2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpICogdmFyKC0tdHctc3BhY2UteS1yZXZlcnNlKSk7bWFyZ2luLWJsb2NrLWVuZDpjYWxjKGNhbGModmFyKC0tc3BhY2luZykgKiA0KSAqIGNhbGMoMSAtIHZhcigtLXR3LXNwYWNlLXktcmV2ZXJzZSkpKX0uc2VsZi1zdGFydHthbGlnbi1zZWxmOmZsZXgtc3RhcnR9LnRydW5jYXRle3RleHQtb3ZlcmZsb3c6ZWxsaXBzaXM7d2hpdGUtc3BhY2U6bm93cmFwfS5vdmVyZmxvdy1oaWRkZW4sLnRydW5jYXRle292ZXJmbG93OmhpZGRlbn0ub3ZlcmZsb3cteS1hdXRve292ZXJmbG93LXk6YXV0b30ucm91bmRlZC0yeGx7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtMnhsKX0ucm91bmRlZC1cWzJweFxde2JvcmRlci1yYWRpdXM6MnB4fS5yb3VuZGVkLVxbMTRweFxde2JvcmRlci1yYWRpdXM6MTRweH0ucm91bmRlZC1cWzI4cHhcXXtib3JkZXItcmFkaXVzOjI4cHh9LnJvdW5kZWQtZnVsbHtib3JkZXItcmFkaXVzOjMuNDAyODJlKzM4cHh9LnJvdW5kZWQteGx7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMteGwpfS5yb3VuZGVkLXQtMnhse2JvcmRlci10b3AtbGVmdC1yYWRpdXM6dmFyKC0tcmFkaXVzLTJ4bCk7Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6dmFyKC0tcmFkaXVzLTJ4bCl9LmJvcmRlcntib3JkZXItc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItd2lkdGg6MXB4fS5ib3JkZXItMntib3JkZXItc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItd2lkdGg6MnB4fS5ib3JkZXItM3tib3JkZXItc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItd2lkdGg6M3B4fS5ib3JkZXItNHtib3JkZXItc3R5bGU6dmFyKC0tdHctYm9yZGVyLXN0eWxlKTtib3JkZXItd2lkdGg6NHB4fS5ib3JkZXItYntib3JkZXItYm90dG9tLXN0eWxlOnZhcigtLXR3LWJvcmRlci1zdHlsZSk7Ym9yZGVyLWJvdHRvbS13aWR0aDoxcHh9LmJvcmRlci1cW1wjMWY2YjM0XF17Ym9yZGVyLWNvbG9yOiMxZjZiMzR9LmJvcmRlci1cW1wjMmEyYTJhXF17Ym9yZGVyLWNvbG9yOiMyYTJhMmF9LmJvcmRlci1cW1wjN2EyYTJhXF17Ym9yZGVyLWNvbG9yOiM3YTJhMmF9LmJvcmRlci1cW1wjOGE4YThhXF17Ym9yZGVyLWNvbG9yOiM4YThhOGF9LmJvcmRlci1cW1wjMzMzYTRhXF17Ym9yZGVyLWNvbG9yOiMzMzNhNGF9LmJvcmRlci1ncmVlbi01MDB7Ym9yZGVyLWNvbG9yOnZhcigtLWNvbG9yLWdyZWVuLTUwMCl9LmJvcmRlci1yZWQtNTAwe2JvcmRlci1jb2xvcjp2YXIoLS1jb2xvci1yZWQtNTAwKX0uYm9yZGVyLXJlZC01MDBcLzQwe2JvcmRlci1jb2xvcjojZmIyYzM2NjZ9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYm9yZGVyLXJlZC01MDBcLzQwe2JvcmRlci1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3ItcmVkLTUwMCkgNDAlLHRyYW5zcGFyZW50KX19LmJvcmRlci10cmFuc3BhcmVudHtib3JkZXItY29sb3I6IzAwMDB9LmJvcmRlci13aGl0ZXtib3JkZXItY29sb3I6dmFyKC0tY29sb3Itd2hpdGUpfS5ib3JkZXItdC10cmFuc3BhcmVudHtib3JkZXItdG9wLWNvbG9yOiMwMDAwfS5iZy1cW1wjMGEwYTBhXF17YmFja2dyb3VuZC1jb2xvcjojMGEwYTBhfS5iZy1cW1wjMWExYTFhXF17YmFja2dyb3VuZC1jb2xvcjojMWExYTFhfS5iZy1cW1wjMWMxYzFjXF17YmFja2dyb3VuZC1jb2xvcjojMWMxYzFjfS5iZy1cW1wjMWYyNDMwXF17YmFja2dyb3VuZC1jb2xvcjojMWYyNDMwfS5iZy1cW1wjM2ExYjFiXF17YmFja2dyb3VuZC1jb2xvcjojM2ExYjFifS5iZy1cW1wjM2EzYTNhXF17YmFja2dyb3VuZC1jb2xvcjojM2EzYTNhfS5iZy1cW1wjMTYzNjFmXF17YmFja2dyb3VuZC1jb2xvcjojMTYzNjFmfS5iZy1cW1wjMjUyNTI1XF17YmFja2dyb3VuZC1jb2xvcjojMjUyNTI1fS5iZy1ibGFja1wvNjB7YmFja2dyb3VuZC1jb2xvcjojMDAwOX1Ac3VwcG9ydHMgKGNvbG9yOmNvbG9yLW1peChpbiBsYWIscmVkLHJlZCkpey5iZy1ibGFja1wvNjB7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3ItYmxhY2spIDYwJSx0cmFuc3BhcmVudCl9fS5iZy1ncmVlbi01MDBcLzIwe2JhY2tncm91bmQtY29sb3I6IzAwYzc1ODMzfUBzdXBwb3J0cyAoY29sb3I6Y29sb3ItbWl4KGluIGxhYixyZWQscmVkKSl7LmJnLWdyZWVuLTUwMFwvMjB7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3ItZ3JlZW4tNTAwKSAyMCUsdHJhbnNwYXJlbnQpfX0uYmctcmVkLTUwMFwvMTV7YmFja2dyb3VuZC1jb2xvcjojZmIyYzM2MjZ9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsuYmctcmVkLTUwMFwvMTV7YmFja2dyb3VuZC1jb2xvcjpjb2xvci1taXgoaW4gb2tsYWIsdmFyKC0tY29sb3ItcmVkLTUwMCkgMTUlLHRyYW5zcGFyZW50KX19LmJnLXRyYW5zcGFyZW50e2JhY2tncm91bmQtY29sb3I6IzAwMDB9LmJnLXdoaXRle2JhY2tncm91bmQtY29sb3I6dmFyKC0tY29sb3Itd2hpdGUpfS5vYmplY3QtY29udGFpbntvYmplY3QtZml0OmNvbnRhaW59Lm9iamVjdC1jb3ZlcntvYmplY3QtZml0OmNvdmVyfS5vYmplY3QtY2VudGVye29iamVjdC1wb3NpdGlvbjpjZW50ZXJ9LnAtNHtwYWRkaW5nOmNhbGModmFyKC0tc3BhY2luZykgKiA0KX0ucC01e3BhZGRpbmc6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDUpfS5weC0ye3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykgKiAyKX0ucHgtM3twYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpICogMyl9LnB4LTNcLjV7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMuNSl9LnB4LTR7cGFkZGluZy1pbmxpbmU6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfS5weC01e3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykgKiA1KX0ucHgtNntwYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpICogNil9LnB5LTFcLjV7cGFkZGluZy1ibG9jazpjYWxjKHZhcigtLXNwYWNpbmcpICogMS41KX0ucHktMntwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykgKiAyKX0ucHktM3twYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykgKiAzKX0ucHktM1wuNXtwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykgKiAzLjUpfS5weS02e3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDYpfS5weS0xMntwYWRkaW5nLWJsb2NrOmNhbGModmFyKC0tc3BhY2luZykgKiAxMil9LnB5LTE2e3BhZGRpbmctYmxvY2s6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDE2KX0ucHQtM3twYWRkaW5nLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpICogMyl9LnB0LTR7cGFkZGluZy10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfS5wci0ye3BhZGRpbmctcmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDIpfS5wci00e3BhZGRpbmctcmlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfS5wci0xMntwYWRkaW5nLXJpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAxMil9LnBiLTN7cGFkZGluZy1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDMpfS5wYi04e3BhZGRpbmctYm90dG9tOmNhbGModmFyKC0tc3BhY2luZykgKiA4KX0ucGwtNHtwYWRkaW5nLWxlZnQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfS50ZXh0LWNlbnRlcnt0ZXh0LWFsaWduOmNlbnRlcn0udGV4dC1sZWZ0e3RleHQtYWxpZ246bGVmdH0udGV4dC0yeGx7Zm9udC1zaXplOnZhcigtLXRleHQtMnhsKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtMnhsLS1saW5lLWhlaWdodCkpfS50ZXh0LTN4bHtmb250LXNpemU6dmFyKC0tdGV4dC0zeGwpO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC0zeGwtLWxpbmUtaGVpZ2h0KSl9LnRleHQtYmFzZXtmb250LXNpemU6dmFyKC0tdGV4dC1iYXNlKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtYmFzZS0tbGluZS1oZWlnaHQpKX0udGV4dC1sZ3tmb250LXNpemU6dmFyKC0tdGV4dC1sZyk7bGluZS1oZWlnaHQ6dmFyKC0tdHctbGVhZGluZyx2YXIoLS10ZXh0LWxnLS1saW5lLWhlaWdodCkpfS50ZXh0LXNte2ZvbnQtc2l6ZTp2YXIoLS10ZXh0LXNtKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtc20tLWxpbmUtaGVpZ2h0KSl9LnRleHQteGx7Zm9udC1zaXplOnZhcigtLXRleHQteGwpO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC14bC0tbGluZS1oZWlnaHQpKX0udGV4dC1cWzEycHhcXXtmb250LXNpemU6MTJweH0udGV4dC1cWzEzcHhcXXtmb250LXNpemU6MTNweH0udGV4dC1cWzE0cHhcXXtmb250LXNpemU6MTRweH0udGV4dC1cWzE1cHhcXXtmb250LXNpemU6MTVweH0udGV4dC1cWzE2cHhcXXtmb250LXNpemU6MTZweH0udGV4dC1cWzIycHhcXXtmb250LXNpemU6MjJweH0udGV4dC1cWzI0cHhcXXtmb250LXNpemU6MjRweH0udGV4dC1cWzI2cHhcXXtmb250LXNpemU6MjZweH0ubGVhZGluZy1cWzFcLjJcXXstLXR3LWxlYWRpbmc6MS4yO2xpbmUtaGVpZ2h0OjEuMn0ubGVhZGluZy1cWzFcLjVcXXstLXR3LWxlYWRpbmc6MS41O2xpbmUtaGVpZ2h0OjEuNX0ubGVhZGluZy1cWzFcLjE1XF17LS10dy1sZWFkaW5nOjEuMTU7bGluZS1oZWlnaHQ6MS4xNX0ubGVhZGluZy1cWzFcLjQ1XF17LS10dy1sZWFkaW5nOjEuNDU7bGluZS1oZWlnaHQ6MS40NX0ubGVhZGluZy1yZWxheGVkey0tdHctbGVhZGluZzp2YXIoLS1sZWFkaW5nLXJlbGF4ZWQpO2xpbmUtaGVpZ2h0OnZhcigtLWxlYWRpbmctcmVsYXhlZCl9LmxlYWRpbmctc251Z3stLXR3LWxlYWRpbmc6dmFyKC0tbGVhZGluZy1zbnVnKTtsaW5lLWhlaWdodDp2YXIoLS1sZWFkaW5nLXNudWcpfS5mb250LWJvbGR7LS10dy1mb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1ib2xkKTtmb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1ib2xkKX0uZm9udC1leHRyYWJvbGR7LS10dy1mb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1leHRyYWJvbGQpO2ZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LWV4dHJhYm9sZCl9LmZvbnQtbWVkaXVtey0tdHctZm9udC13ZWlnaHQ6dmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtmb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pfS5mb250LW5vcm1hbHstLXR3LWZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LW5vcm1hbCk7Zm9udC13ZWlnaHQ6dmFyKC0tZm9udC13ZWlnaHQtbm9ybWFsKX0uZm9udC1zZW1pYm9sZHstLXR3LWZvbnQtd2VpZ2h0OnZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtmb250LXdlaWdodDp2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCl9LnRyYWNraW5nLXRpZ2h0ey0tdHctdHJhY2tpbmc6dmFyKC0tdHJhY2tpbmctdGlnaHQpO2xldHRlci1zcGFjaW5nOnZhcigtLXRyYWNraW5nLXRpZ2h0KX0udHJhY2tpbmctd2lkZXstLXR3LXRyYWNraW5nOnZhcigtLXRyYWNraW5nLXdpZGUpO2xldHRlci1zcGFjaW5nOnZhcigtLXRyYWNraW5nLXdpZGUpfS50ZXh0LVxbXCM0YTRhNGFcXXtjb2xvcjojNGE0YTRhfS50ZXh0LVxbXCM1YTVhNWFcXXtjb2xvcjojNWE1YTVhfS50ZXh0LVxbXCM2YjZiNmJcXXtjb2xvcjojNmI2YjZifS50ZXh0LVxbXCM4YThhOGFcXXtjb2xvcjojOGE4YThhfS50ZXh0LVxbXCM5YmU3YThcXXtjb2xvcjojOWJlN2E4fS50ZXh0LVxbXCNmM2EwYTBcXXtjb2xvcjojZjNhMGEwfS50ZXh0LWJsYWNre2NvbG9yOnZhcigtLWNvbG9yLWJsYWNrKX0udGV4dC1ncmVlbi00MDB7Y29sb3I6dmFyKC0tY29sb3ItZ3JlZW4tNDAwKX0udGV4dC1ncmVlbi01MDB7Y29sb3I6dmFyKC0tY29sb3ItZ3JlZW4tNTAwKX0udGV4dC1yZWQtNDAwe2NvbG9yOnZhcigtLWNvbG9yLXJlZC00MDApfS50ZXh0LXJlZC01MDB7Y29sb3I6dmFyKC0tY29sb3ItcmVkLTUwMCl9LnRleHQtc2xhdGUtNDAwXC83MHtjb2xvcjojOTBhMWI5YjN9QHN1cHBvcnRzIChjb2xvcjpjb2xvci1taXgoaW4gbGFiLHJlZCxyZWQpKXsudGV4dC1zbGF0ZS00MDBcLzcwe2NvbG9yOmNvbG9yLW1peChpbiBva2xhYix2YXIoLS1jb2xvci1zbGF0ZS00MDApIDcwJSx0cmFuc3BhcmVudCl9fS50ZXh0LXdoaXRle2NvbG9yOnZhcigtLWNvbG9yLXdoaXRlKX0udXBwZXJjYXNle3RleHQtdHJhbnNmb3JtOnVwcGVyY2FzZX0uYW50aWFsaWFzZWR7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGV9LmNhcmV0LXRyYW5zcGFyZW50e2NhcmV0LWNvbG9yOiMwMDAwfS5vcGFjaXR5LTUwe29wYWNpdHk6LjV9Lm9wYWNpdHktODV7b3BhY2l0eTouODV9Lm9wYWNpdHktOTB7b3BhY2l0eTouOX0uc2hhZG93LWxney0tdHctc2hhZG93OjAgMTBweCAxNXB4IC0zcHggdmFyKC0tdHctc2hhZG93LWNvbG9yLCMwMDAwMDAxYSksMCA0cHggNnB4IC00cHggdmFyKC0tdHctc2hhZG93LWNvbG9yLCMwMDAwMDAxYSl9LnNoYWRvdy1sZywuc2hhZG93LXhse2JveC1zaGFkb3c6dmFyKC0tdHctaW5zZXQtc2hhZG93KSx2YXIoLS10dy1pbnNldC1yaW5nLXNoYWRvdyksdmFyKC0tdHctcmluZy1vZmZzZXQtc2hhZG93KSx2YXIoLS10dy1yaW5nLXNoYWRvdyksdmFyKC0tdHctc2hhZG93KX0uc2hhZG93LXhsey0tdHctc2hhZG93OjAgMjBweCAyNXB4IC01cHggdmFyKC0tdHctc2hhZG93LWNvbG9yLCMwMDAwMDAxYSksMCA4cHggMTBweCAtNnB4IHZhcigtLXR3LXNoYWRvdy1jb2xvciwjMDAwMDAwMWEpfS5ibHVyey0tdHctYmx1cjpibHVyKDhweCk7ZmlsdGVyOnZhcigtLXR3LWJsdXIsKSB2YXIoLS10dy1icmlnaHRuZXNzLCkgdmFyKC0tdHctY29udHJhc3QsKSB2YXIoLS10dy1ncmF5c2NhbGUsKSB2YXIoLS10dy1odWUtcm90YXRlLCkgdmFyKC0tdHctaW52ZXJ0LCkgdmFyKC0tdHctc2F0dXJhdGUsKSB2YXIoLS10dy1zZXBpYSwpIHZhcigtLXR3LWRyb3Atc2hhZG93LCl9LmJhY2tkcm9wLWJsdXItc217LS10dy1iYWNrZHJvcC1ibHVyOmJsdXIodmFyKC0tYmx1ci1zbSkpOy13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOnZhcigtLXR3LWJhY2tkcm9wLWJsdXIsKSB2YXIoLS10dy1iYWNrZHJvcC1icmlnaHRuZXNzLCkgdmFyKC0tdHctYmFja2Ryb3AtY29udHJhc3QsKSB2YXIoLS10dy1iYWNrZHJvcC1ncmF5c2NhbGUsKSB2YXIoLS10dy1iYWNrZHJvcC1odWUtcm90YXRlLCkgdmFyKC0tdHctYmFja2Ryb3AtaW52ZXJ0LCkgdmFyKC0tdHctYmFja2Ryb3Atb3BhY2l0eSwpIHZhcigtLXR3LWJhY2tkcm9wLXNhdHVyYXRlLCkgdmFyKC0tdHctYmFja2Ryb3Atc2VwaWEsKTtiYWNrZHJvcC1maWx0ZXI6dmFyKC0tdHctYmFja2Ryb3AtYmx1ciwpIHZhcigtLXR3LWJhY2tkcm9wLWJyaWdodG5lc3MsKSB2YXIoLS10dy1iYWNrZHJvcC1jb250cmFzdCwpIHZhcigtLXR3LWJhY2tkcm9wLWdyYXlzY2FsZSwpIHZhcigtLXR3LWJhY2tkcm9wLWh1ZS1yb3RhdGUsKSB2YXIoLS10dy1iYWNrZHJvcC1pbnZlcnQsKSB2YXIoLS10dy1iYWNrZHJvcC1vcGFjaXR5LCkgdmFyKC0tdHctYmFja2Ryb3Atc2F0dXJhdGUsKSB2YXIoLS10dy1iYWNrZHJvcC1zZXBpYSwpfS50cmFuc2l0aW9uLWFsbHt0cmFuc2l0aW9uLXByb3BlcnR5OmFsbDt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS10dy1lYXNlLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24pKTt0cmFuc2l0aW9uLWR1cmF0aW9uOnZhcigtLXR3LWR1cmF0aW9uLHZhcigtLWRlZmF1bHQtdHJhbnNpdGlvbi1kdXJhdGlvbikpfS50cmFuc2l0aW9uLWNvbG9yc3t0cmFuc2l0aW9uLXByb3BlcnR5OmNvbG9yLGJhY2tncm91bmQtY29sb3IsYm9yZGVyLWNvbG9yLG91dGxpbmUtY29sb3IsdGV4dC1kZWNvcmF0aW9uLWNvbG9yLGZpbGwsc3Ryb2tlLC0tdHctZ3JhZGllbnQtZnJvbSwtLXR3LWdyYWRpZW50LXZpYSwtLXR3LWdyYWRpZW50LXRvO3RyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uOnZhcigtLXR3LWVhc2UsdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikpO3RyYW5zaXRpb24tZHVyYXRpb246dmFyKC0tdHctZHVyYXRpb24sdmFyKC0tZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uKSl9LnRyYW5zaXRpb24tdHJhbnNmb3Jte3RyYW5zaXRpb24tcHJvcGVydHk6dHJhbnNmb3JtLHRyYW5zbGF0ZSxzY2FsZSxyb3RhdGU7dHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb246dmFyKC0tdHctZWFzZSx2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKSk7dHJhbnNpdGlvbi1kdXJhdGlvbjp2YXIoLS10dy1kdXJhdGlvbix2YXIoLS1kZWZhdWx0LXRyYW5zaXRpb24tZHVyYXRpb24pKX0uZHVyYXRpb24tMTAwey0tdHctZHVyYXRpb246LjFzO3RyYW5zaXRpb24tZHVyYXRpb246LjFzfS5kdXJhdGlvbi0yMDB7LS10dy1kdXJhdGlvbjouMnM7dHJhbnNpdGlvbi1kdXJhdGlvbjouMnN9LmR1cmF0aW9uLTMwMHstLXR3LWR1cmF0aW9uOi4zczt0cmFuc2l0aW9uLWR1cmF0aW9uOi4zc30uZWFzZS1pbi1vdXR7LS10dy1lYXNlOnZhcigtLWVhc2UtaW4tb3V0KTt0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbjp2YXIoLS1lYXNlLWluLW91dCl9Lm91dGxpbmUtbm9uZXstLXR3LW91dGxpbmUtc3R5bGU6bm9uZTtvdXRsaW5lLXN0eWxlOm5vbmV9LnNlbGVjdC1ub25ley13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lfS5wbGFjZWhvbGRlclw6dGV4dC1cW1wjNGE0YTRhXF06OnBsYWNlaG9sZGVye2NvbG9yOiM0YTRhNGF9LmZvY3VzLXdpdGhpblw6Ym9yZGVyLVxbXCMzYTNhM2FcXTpmb2N1cy13aXRoaW57Ym9yZGVyLWNvbG9yOiMzYTNhM2F9QG1lZGlhIChob3Zlcjpob3Zlcil7LmhvdmVyXDpiZy1cW1wjMmEyYTJhXF06aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojMmEyYTJhfS5ob3Zlclw6YmctXFtcIzIyMlxdOmhvdmVye2JhY2tncm91bmQtY29sb3I6IzIyMn0uaG92ZXJcOmJnLVxbXCMyNTI1MjVcXTpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiMyNTI1MjV9LmhvdmVyXDpiZy1ncmF5LTEwMDpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOnZhcigtLWNvbG9yLWdyYXktMTAwKX0uaG92ZXJcOnRleHQtd2hpdGU6aG92ZXJ7Y29sb3I6dmFyKC0tY29sb3Itd2hpdGUpfS5ob3Zlclw6dW5kZXJsaW5lOmhvdmVye3RleHQtZGVjb3JhdGlvbi1saW5lOnVuZGVybGluZX19LmZvY3VzXDpib3JkZXItXFtcIzVhNWE1YVxdOmZvY3Vze2JvcmRlci1jb2xvcjojNWE1YTVhfS5mb2N1c1w6b3V0bGluZS1ub25lOmZvY3Vzey0tdHctb3V0bGluZS1zdHlsZTpub25lO291dGxpbmUtc3R5bGU6bm9uZX0uYWN0aXZlXDpzY2FsZS1cWzBcLjk3XF06YWN0aXZle3NjYWxlOi45N30uYWN0aXZlXDpzY2FsZS1cWzBcLjk4XF06YWN0aXZle3NjYWxlOi45OH0uYWN0aXZlXDpiZy1cW1wjMmEyYTJhXF06YWN0aXZle2JhY2tncm91bmQtY29sb3I6IzJhMmEyYX0uZGlzYWJsZWRcOmN1cnNvci1ub3QtYWxsb3dlZDpkaXNhYmxlZHtjdXJzb3I6bm90LWFsbG93ZWR9LmRpc2FibGVkXDpvcGFjaXR5LTQwOmRpc2FibGVke29wYWNpdHk6LjR9LmRpc2FibGVkXDpvcGFjaXR5LTUwOmRpc2FibGVke29wYWNpdHk6LjV9QG1lZGlhIChob3Zlcjpob3Zlcil7LmRpc2FibGVkXDpob3Zlclw6dGV4dC1cW1wjOGE4YThhXF06ZGlzYWJsZWQ6aG92ZXJ7Y29sb3I6IzhhOGE4YX19QG1lZGlhIChtaW4td2lkdGg6NDhyZW0pey5tZFw6cmlnaHQtNHtyaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9Lm1kXDptdC00e21hcmdpbi10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDQpfS5tZFw6bXQtNnttYXJnaW4tdG9wOmNhbGModmFyKC0tc3BhY2luZykgKiA2KX0ubWRcOm10LTd7bWFyZ2luLXRvcDpjYWxjKHZhcigtLXNwYWNpbmcpICogNyl9Lm1kXDptdC04e21hcmdpbi10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDgpfS5tZFw6bXQtOXttYXJnaW4tdG9wOmNhbGModmFyKC0tc3BhY2luZykgKiA5KX0ubWRcOm10LTEwe21hcmdpbi10b3A6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEwKX0ubWRcOm1iLTR7bWFyZ2luLWJvdHRvbTpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9Lm1kXDpoaWRkZW57ZGlzcGxheTpub25lfS5tZFw6aC00e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogNCl9Lm1kXDpoLTZ7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiA2KX0ubWRcOmgtMTF7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAxMSl9Lm1kXDpoLTEye2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogMTIpfS5tZFw6aC0xNHtoZWlnaHQ6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDE0KX0ubWRcOmgtMTZ7aGVpZ2h0OmNhbGModmFyKC0tc3BhY2luZykgKiAxNil9Lm1kXDpoLTI0e2hlaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogMjQpfS5tZFw6aC1cWzU2cHhcXXtoZWlnaHQ6NTZweH0ubWRcOmgtXFs1OHB4XF17aGVpZ2h0OjU4cHh9Lm1kXDpoLVxbNDAwcHhcXXtoZWlnaHQ6NDAwcHh9Lm1kXDp3LTZ7d2lkdGg6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDYpfS5tZFw6dy0xMXt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogMTEpfS5tZFw6dy0xMnt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogMTIpfS5tZFw6dy0yNHt3aWR0aDpjYWxjKHZhcigtLXNwYWNpbmcpICogMjQpfS5tZFw6bWF4LXctbm9uZXttYXgtd2lkdGg6bm9uZX0ubWRcOmdhcC0ze2dhcDpjYWxjKHZhcigtLXNwYWNpbmcpICogMyl9Lm1kXDpyb3VuZGVkLTJ4bHtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy0yeGwpfS5tZFw6cC02e3BhZGRpbmc6Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDYpfS5tZFw6cHgtM3twYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpICogMyl9Lm1kXDpweC01e3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykgKiA1KX0ubWRcOnB4LTEwe3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykgKiAxMCl9Lm1kXDpwdC01e3BhZGRpbmctdG9wOmNhbGModmFyKC0tc3BhY2luZykgKiA1KX0ubWRcOnByLTJcLjV7cGFkZGluZy1yaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogMi41KX0ubWRcOnByLTV7cGFkZGluZy1yaWdodDpjYWxjKHZhcigtLXNwYWNpbmcpICogNSl9Lm1kXDpwYi00e3BhZGRpbmctYm90dG9tOmNhbGModmFyKC0tc3BhY2luZykgKiA0KX0ubWRcOnBiLTEwe3BhZGRpbmctYm90dG9tOmNhbGModmFyKC0tc3BhY2luZykgKiAxMCl9Lm1kXDpwbC01e3BhZGRpbmctbGVmdDpjYWxjKHZhcigtLXNwYWNpbmcpICogNSl9Lm1kXDp0ZXh0LTJ4bHtmb250LXNpemU6dmFyKC0tdGV4dC0yeGwpO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC0yeGwtLWxpbmUtaGVpZ2h0KSl9Lm1kXDp0ZXh0LTN4bHtmb250LXNpemU6dmFyKC0tdGV4dC0zeGwpO2xpbmUtaGVpZ2h0OnZhcigtLXR3LWxlYWRpbmcsdmFyKC0tdGV4dC0zeGwtLWxpbmUtaGVpZ2h0KSl9Lm1kXDp0ZXh0LWJhc2V7Zm9udC1zaXplOnZhcigtLXRleHQtYmFzZSk7bGluZS1oZWlnaHQ6dmFyKC0tdHctbGVhZGluZyx2YXIoLS10ZXh0LWJhc2UtLWxpbmUtaGVpZ2h0KSl9Lm1kXDp0ZXh0LXNte2ZvbnQtc2l6ZTp2YXIoLS10ZXh0LXNtKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQtc20tLWxpbmUtaGVpZ2h0KSl9Lm1kXDp0ZXh0LXhse2ZvbnQtc2l6ZTp2YXIoLS10ZXh0LXhsKTtsaW5lLWhlaWdodDp2YXIoLS10dy1sZWFkaW5nLHZhcigtLXRleHQteGwtLWxpbmUtaGVpZ2h0KSl9Lm1kXDp0ZXh0LVxbMTNweFxde2ZvbnQtc2l6ZToxM3B4fS5tZFw6dGV4dC1cWzE0cHhcXXtmb250LXNpemU6MTRweH0ubWRcOnRleHQtXFsxNXB4XF17Zm9udC1zaXplOjE1cHh9Lm1kXDp0ZXh0LVxbMjZweFxde2ZvbnQtc2l6ZToyNnB4fX1AbWVkaWEgKG1pbi13aWR0aDo2NHJlbSl7LmxnXDptdC0xMXttYXJnaW4tdG9wOmNhbGModmFyKC0tc3BhY2luZykgKiAxMSl9LmxnXDptdC0xMnttYXJnaW4tdG9wOmNhbGModmFyKC0tc3BhY2luZykgKiAxMil9LmxnXDptdC0xNHttYXJnaW4tdG9wOmNhbGModmFyKC0tc3BhY2luZykgKiAxNCl9LmxnXDpoLVxbNTAwcHhcXXtoZWlnaHQ6NTAwcHh9LmxnXDpweC0xNntwYWRkaW5nLWlubGluZTpjYWxjKHZhcigtLXNwYWNpbmcpICogMTYpfS5sZ1w6cGItMTJ7cGFkZGluZy1ib3R0b206Y2FsYyh2YXIoLS1zcGFjaW5nKSAqIDEyKX0ubGdcOnRleHQtXFsyOHB4XF17Zm9udC1zaXplOjI4cHh9fUBtZWRpYSAobWluLXdpZHRoOjgwcmVtKXsueGxcOnB4LTI0e3BhZGRpbmctaW5saW5lOmNhbGModmFyKC0tc3BhY2luZykgKiAyNCl9fX1AZm9udC1mYWNle2ZvbnQtZmFtaWx5Ok1heFNhbnM7c3JjOnVybCgvZm9udHMvTWF4U2Fucy1SZWd1bGFyLndvZmYyKWZvcm1hdCgid29mZjIiKTtmb250LXdlaWdodDo0MDA7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC1kaXNwbGF5OnN3YXB9QGZvbnQtZmFjZXtmb250LWZhbWlseTpNYXhTYW5zO3NyYzp1cmwoL2ZvbnRzL01heFNhbnMtTWVkaXVtLndvZmYyKWZvcm1hdCgid29mZjIiKTtmb250LXdlaWdodDo1MDA7Zm9udC1zdHlsZTpub3JtYWw7Zm9udC1kaXNwbGF5OnN3YXB9QGtleWZyYW1lcyBncmFkaWVudC1zaGlmdHswJSx0b3tvcGFjaXR5Oi43O2ZpbHRlcjpodWUtcm90YXRlKClicmlnaHRuZXNzKCl9MjUle29wYWNpdHk6Ljk7ZmlsdGVyOmh1ZS1yb3RhdGUoMTBkZWcpYnJpZ2h0bmVzcygxLjEpfTUwJXtvcGFjaXR5Oi42O2ZpbHRlcjpodWUtcm90YXRlKC04ZGVnKWJyaWdodG5lc3MoLjk1KX03NSV7b3BhY2l0eTouODU7ZmlsdGVyOmh1ZS1yb3RhdGUoNWRlZylicmlnaHRuZXNzKDEuMDUpfX1Aa2V5ZnJhbWVzIHB1bHNlLXNvZnR7MCUsdG97b3BhY2l0eTouNX01MCV7b3BhY2l0eTouN319QGtleWZyYW1lcyBzbGlkZS11cHswJXt0cmFuc2Zvcm06dHJhbnNsYXRlWSgxMDAlKX10b3t0cmFuc2Zvcm06dHJhbnNsYXRlWSgwKX19QGtleWZyYW1lcyBzbGlkZS1kb3duezAle3RyYW5zZm9ybTp0cmFuc2xhdGVZKDApfXRve3RyYW5zZm9ybTp0cmFuc2xhdGVZKDEwMCUpfX1Aa2V5ZnJhbWVzIGZhZGUtaW57MCV7b3BhY2l0eTowfXRve29wYWNpdHk6MX19QGtleWZyYW1lcyBmYWRlLW91dHswJXtvcGFjaXR5OjF9dG97b3BhY2l0eTowfX1ib2R5e2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQtc2Fucyl9QHByb3BlcnR5IC0tdHctdHJhbnNsYXRlLXh7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjB9QHByb3BlcnR5IC0tdHctdHJhbnNsYXRlLXl7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjB9QHByb3BlcnR5IC0tdHctdHJhbnNsYXRlLXp7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjB9QHByb3BlcnR5IC0tdHctcm90YXRlLXh7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1yb3RhdGUteXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXJvdGF0ZS16e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctc2tldy14e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctc2tldy15e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctc3BhY2UteS1yZXZlcnNle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LWJvcmRlci1zdHlsZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6c29saWR9QHByb3BlcnR5IC0tdHctbGVhZGluZ3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWZvbnQtd2VpZ2h0e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctdHJhY2tpbmd7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1zaGFkb3d7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjAgMCAjMDAwMH1AcHJvcGVydHkgLS10dy1zaGFkb3ctY29sb3J7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1zaGFkb3ctYWxwaGF7c3ludGF4OiI8cGVyY2VudGFnZT4iO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MTAwJX1AcHJvcGVydHkgLS10dy1pbnNldC1zaGFkb3d7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjAgMCAjMDAwMH1AcHJvcGVydHkgLS10dy1pbnNldC1zaGFkb3ctY29sb3J7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1pbnNldC1zaGFkb3ctYWxwaGF7c3ludGF4OiI8cGVyY2VudGFnZT4iO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MTAwJX1AcHJvcGVydHkgLS10dy1yaW5nLWNvbG9ye3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctcmluZy1zaGFkb3d7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjAgMCAjMDAwMH1AcHJvcGVydHkgLS10dy1pbnNldC1yaW5nLWNvbG9ye3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctaW5zZXQtcmluZy1zaGFkb3d7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZTtpbml0aWFsLXZhbHVlOjAgMCAjMDAwMH1AcHJvcGVydHkgLS10dy1yaW5nLWluc2V0e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctcmluZy1vZmZzZXQtd2lkdGh7c3ludGF4OiI8bGVuZ3RoPiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTowfUBwcm9wZXJ0eSAtLXR3LXJpbmctb2Zmc2V0LWNvbG9ye3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2U7aW5pdGlhbC12YWx1ZTojZmZmfUBwcm9wZXJ0eSAtLXR3LXJpbmctb2Zmc2V0LXNoYWRvd3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MCAwICMwMDAwfUBwcm9wZXJ0eSAtLXR3LWJsdXJ7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1icmlnaHRuZXNze3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctY29udHJhc3R7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1ncmF5c2NhbGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1odWUtcm90YXRle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctaW52ZXJ0e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctb3BhY2l0eXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LXNhdHVyYXRle3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctc2VwaWF7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1kcm9wLXNoYWRvd3tzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWRyb3Atc2hhZG93LWNvbG9ye3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctZHJvcC1zaGFkb3ctYWxwaGF7c3ludGF4OiI8cGVyY2VudGFnZT4iO2luaGVyaXRzOmZhbHNlO2luaXRpYWwtdmFsdWU6MTAwJX1AcHJvcGVydHkgLS10dy1kcm9wLXNoYWRvdy1zaXple3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctYmFja2Ryb3AtYmx1cntzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWJhY2tkcm9wLWJyaWdodG5lc3N7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1iYWNrZHJvcC1jb250cmFzdHtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWJhY2tkcm9wLWdyYXlzY2FsZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWJhY2tkcm9wLWh1ZS1yb3RhdGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1iYWNrZHJvcC1pbnZlcnR7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1iYWNrZHJvcC1vcGFjaXR5e3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctYmFja2Ryb3Atc2F0dXJhdGV7c3ludGF4OiIqIjtpbmhlcml0czpmYWxzZX1AcHJvcGVydHkgLS10dy1iYWNrZHJvcC1zZXBpYXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBwcm9wZXJ0eSAtLXR3LWR1cmF0aW9ue3N5bnRheDoiKiI7aW5oZXJpdHM6ZmFsc2V9QHByb3BlcnR5IC0tdHctZWFzZXtzeW50YXg6IioiO2luaGVyaXRzOmZhbHNlfUBrZXlmcmFtZXMgc3Bpbnt0b3t0cmFuc2Zvcm06cm90YXRlKDF0dXJuKX19"}},"time_used":45,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":45,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"maxvectornew.com/_next/static/css/3ca5dfd369aa0a44.css","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"is_navigation_request":false,"resource_type":"stylesheet","requested_by":"https://maxvectornew.com/t/1c8a8","date":"2026-07-26T17:18:27.373Z","timestamp":1785086307373,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"maxvectornew.com","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Jul 2026 17:54:44 GMT","end":"Fri, 23 Oct 2026 17:54:43 GMT"},"fingerprint":{"sha1":"3B:96:C0:C6:0F:0B:DE:CC:96:A0:22:3D:32:F5:17:2C:CD:5C:51:6B","sha256":"D3:F9:21:6A:45:1A:9A:BA:92:79:1E:6E:03:85:1A:0C:B8:AD:05:18:FA:FC:60:41:98:38:87:32:B5:B9:EA:D1"}}},"request":{"raw":"GET /_next/static/css/3ca5dfd369aa0a44.css HTTP/1.1\r\nHost: maxvectornew.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://maxvectornew.com/t/1c8a8\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/1.1 200 OK\r\nServer: nginx/1.27.5\r\nDate: Sun, 26 Jul 2026 17:18:27 GMT\r\nContent-Type: text/css; charset=utf-8\r\nContent-Length: 41539\r\nConnection: keep-alive\r\nAccept-Ranges: bytes\r\nCache-Control: public, max-age=31536000, immutable\r\nLast-Modified: Sat, 25 Jul 2026 20:35:12 GMT\r\nETag: W/\"a243-19f9afd327f\"\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx:1.27.5","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":41539,"size_decoded":41851,"mime_type":"text/css; charset=utf-8","magic":"ASCII text, with very long lines (41539), with no line terminators","md5":"06d224e7eb6d8e9c9a9b0896b1c1b84e","sha1":"dee54c056767aaea4f31c416329bccee66fb0d4f","sha256":"ab56063092815f76981859c150222120d89fd63c896e07d13696d96e19c7eeb0","sha512":"4b54cfb3e21e6451d17f46a8e64447d7f8d1e275b0293863732b082f557d5ade95291907d1f17fcfa9172c267e83def4ad54464412a43df8f00396660606362b","ssdeep":"768:Nxs1jU3Z9rxHkUMhC8dJl5NZUxneWwCSP+O0CFhXxeaBAQ8h2sKCO1l2:ns1j8Zihx3PbFLsx","tlshash":"2a13c8556600313ef923c4b2e5d09aab7298f523d6234fe8dd71752d86c73b72672708","first_seen":"2026-07-21T19:09:14.339348Z","last_seen":"2026-07-26T17:20:04.016144Z","times_seen":5,"resource_available":false,"data":"QGZvbnQtZmFjZXtmb250LWZhbWlseTpZUyBUZXh0O3NyYzp1cmwoLy95YXN0YXRpYy5uZXQvczMvaG9tZS9mb250cy95cy8xL3RleHQtcmVndWxhci53b2ZmMikgZm9ybWF0KCJ3b2ZmMiIpLHVybCgvL3lhc3RhdGljLm5ldC9zMy9ob21lL2ZvbnRzL3lzLzEvdGV4dC1yZWd1bGFyLndvZmYpIGZvcm1hdCgid29mZiIpO2ZvbnQtd2VpZ2h0OjQwMDtmb250LXN0eWxlOm5vcm1hbDtmb250LWRpc3BsYXk6c3dhcH1AZm9udC1mYWNle2ZvbnQtZmFtaWx5OllTIFRleHQ7c3JjOnVybCgvL3lhc3RhdGljLm5ldC9zMy9ob21lL2ZvbnRzL3lzLzEvdGV4dC1tZWRpdW0ud29mZjIpIGZvcm1hdCgid29mZjIiKSx1cmwoLy95YXN0YXRpYy5uZXQvczMvaG9tZS9mb250cy95cy8xL3RleHQtbWVkaXVtLndvZmYpIGZvcm1hdCgid29mZiIpO2ZvbnQtd2VpZ2h0OjUwMDtmb250LXN0eWxlOm5vcm1hbDtmb250LWRpc3BsYXk6c3dhcH0ueWFuZGV4LXNraW57LS1pZC1jb2xvci10ZXh0LXByaW1hcnk6IzI2MjYzMzstLWlkLWNvbG9yLXRleHQtc2Vjb25kYXJ5OiM4NTg4OWU7LS1pZC1jb2xvci10ZXh0LXRlcnRpYXJ5OiNiM2I4Y2M7LS1pZC1jb2xvci1icmFuZC1iZy1iYXNlOiMyOTI5MzM7LS1pZC1jb2xvci1icmFuZC1iZy1ob3ZlcmVkOiMxYjFiMjY7LS1pZC1jb2xvci1icmFuZC10ZXh0LW9uOiNmZmY7LS1pZC1jb2xvci1kZWZhdWx0LWJnLWJhc2U6cmdiYSgxODAsMTg0LDIwNCwwLjE0KTstLWlkLWNvbG9yLWRlZmF1bHQtYmctaG92ZXJlZDpyZ2JhKDE4MCwxODQsMjA0LDAuMik7LS1pZC1jb2xvci1kZWZhdWx0LWJvcmRlcjpyZ2JhKDE4MCwxODQsMjA0LDAuMjYpOy0taWQtbG9nby15YW5kZXgtY29sb3I6dmFyKC0taWQtY29sb3ItdGV4dC1wcmltYXJ5KTstLWlkLWxvZ28tYnJhbmQtY29sb3I6dmFyKC0taWQtY29sb3ItdGV4dC1wcmltYXJ5KTstLWlkLXR5cG9ncmFwaHktaGVhZGluZy1tOm5vcm1hbCA1MDAgMjBweC8yNHB4ICJZUyBUZXh0IixBcmlhbCxzYW5zLXNlcmlmOy0taWQtdHlwb2dyYXBoeS10ZXh0LW06bm9ybWFsIDQwMCAxNnB4LzIwcHggIllTIFRleHQiLEFyaWFsLHNhbnMtc2VyaWY7LS1pZC1pbnB1dC1mb250Om5vcm1hbCA0MDAgMjBweC8yNnB4ICJZUyBUZXh0IixBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtZmFtaWx5OllTIFRleHQsSGVsdmV0aWNhIE5ldWUsQXJpYWwsc2Fucy1zZXJpZjstd2Via2l0LWZvbnQtZmVhdHVyZS1zZXR0aW5nczoibGlnYSIsImtlcm4iO2ZvbnQtZmVhdHVyZS1zZXR0aW5nczoibGlnYSIsImtlcm4iO2JhY2tncm91bmQ6I2ZmZjtjb2xvcjp2YXIoLS1pZC1jb2xvci10ZXh0LXByaW1hcnkpO21pbi1oZWlnaHQ6MTAwdmg7bWluLWhlaWdodDoxMDBkdmg7d2lkdGg6MTAwJTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3BhZGRpbmc6bWF4KDJyZW0sZW52KHNhZmUtYXJlYS1pbnNldC10b3AsMHB4KSkgMXJlbSBtYXgoMnJlbSxlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSwwcHgpKX0ueWFuZGV4LXNraW4sLnlhbmRleC1za2luICosLnlhbmRleC1za2luIDphZnRlciwueWFuZGV4LXNraW4gOmJlZm9yZXtib3gtc2l6aW5nOmJvcmRlci1ib3h9QG1lZGlhIChtYXgtd2lkdGg6NTIwcHgpey55YW5kZXgtc2tpbntqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydDtwYWRkaW5nLXRvcDptYXgoMS4yNXJlbSxlbnYoc2FmZS1hcmVhLWluc2V0LXRvcCwwcHgpKX0ueWFuZGV4LXNraW4gLmF1dGgtbGF5b3V0e21hcmdpbi10b3A6Y2xhbXAoMHB4LDZ2aCw0OHB4KX19LnlhbmRleC1za2luIC5hdXRoLWxheW91dHt3aWR0aDoxMDAlO21heC13aWR0aDozNzZweH0ueWFuZGV4LXNraW4gLmF1dGgtaGVhZGVye2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbi1ib3R0b206MnJlbX0ueWFuZGV4LXNraW4gLmF1dGgtaGVhZGVyLWxvZ28td3JhcHBlciBzdmd7ZGlzcGxheTpibG9jaztoZWlnaHQ6MjRweDt3aWR0aDphdXRvfS55YW5kZXgtc2tpbiAuZGVzY3JpcHRpb24tYmxvY2t7bWFyZ2luLWJvdHRvbToxLjVyZW07dGV4dC1hbGlnbjpjZW50ZXJ9LnlhbmRleC1za2luIC5wYWdlLWhlYWRlci10ZXh0e2ZvbnQ6dmFyKC0taWQtdHlwb2dyYXBoeS1oZWFkaW5nLW0pO21hcmdpbi1ib3R0b206LjVyZW19LnlhbmRleC1za2luIC5wYWdlLWRlc2NyaXB0aW9ue2ZvbnQ6dmFyKC0taWQtdHlwb2dyYXBoeS10ZXh0LW0pO2NvbG9yOnZhcigtLWlkLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTtsaW5lLWhlaWdodDoxLjM1fS55YW5kZXgtc2tpbiAucGFnZS1kZXNjcmlwdGlvbiBzdHJvbmd7Zm9udC13ZWlnaHQ6NTAwO2NvbG9yOnZhcigtLWlkLWNvbG9yLXRleHQtcHJpbWFyeSl9LnlhbmRleC1za2luIC5waG9uZS1maWVsZHttYXJnaW4tYm90dG9tOjFyZW19LnlhbmRleC1za2luIC5waG9uZS1pbnB1dHt3aWR0aDoxMDAlO2hlaWdodDo1NnB4O3BhZGRpbmc6MTRweCAyMHB4O2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MjBweDtiYWNrZ3JvdW5kOnZhcigtLWlkLWNvbG9yLWRlZmF1bHQtYmctYmFzZSk7Zm9udDp2YXIoLS1pZC1pbnB1dC1mb250KTtjb2xvcjp2YXIoLS1pZC1jb2xvci10ZXh0LXByaW1hcnkpO291dGxpbmU6bm9uZTt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjE1cyBlYXNlfS55YW5kZXgtc2tpbiAucGhvbmUtaW5wdXQ6OnBsYWNlaG9sZGVye2NvbG9yOnZhcigtLWlkLWNvbG9yLXRleHQtdGVydGlhcnkpfS55YW5kZXgtc2tpbiAucGhvbmUtaW5wdXQ6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1pZC1jb2xvci1kZWZhdWx0LWJnLWhvdmVyZWQpfS55YW5kZXgtc2tpbiAucGhvbmUtaW5wdXQ6Zm9jdXN7YmFja2dyb3VuZDojZmZmO2JveC1zaGFkb3c6aW5zZXQgMCAwIDAgMXB4IHZhcigtLWlkLWNvbG9yLWRlZmF1bHQtYm9yZGVyKX0ueWFuZGV4LXNraW4gLmJ0bi1wcmltYXJ5e3dpZHRoOjEwMCU7aGVpZ2h0OjU2cHg7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czoyMHB4O2JhY2tncm91bmQ6dmFyKC0taWQtY29sb3ItYnJhbmQtYmctYmFzZSk7Y29sb3I6dmFyKC0taWQtY29sb3ItYnJhbmQtdGV4dC1vbik7Zm9udDpub3JtYWwgNTAwIDE2cHgvMjBweCBZUyBUZXh0LEFyaWFsLHNhbnMtc2VyaWY7Y3Vyc29yOnBvaW50ZXI7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4xNXMgZWFzZX0ueWFuZGV4LXNraW4gLmJ0bi1wcmltYXJ5OmhvdmVye2JhY2tncm91bmQ6dmFyKC0taWQtY29sb3ItYnJhbmQtYmctaG92ZXJlZCl9LnlhbmRleC1za2luIC5idG4tcHJpbWFyeTphY3RpdmV7dHJhbnNmb3JtOnNjYWxlKC45OSl9LnlhbmRleC1za2luIC5idG4tcHJpbWFyeTpkaXNhYmxlZHtvcGFjaXR5Oi43O2N1cnNvcjpub3QtYWxsb3dlZH0ueWFuZGV4LXNraW4gLmZvb3Rlci1ub3Rle21hcmdpbi10b3A6MS4yNXJlbTtmb250Om5vcm1hbCA0MDAgMTNweC8xNnB4IFlTIFRleHQsQXJpYWwsc2Fucy1zZXJpZjtjb2xvcjp2YXIoLS1pZC1jb2xvci10ZXh0LXRlcnRpYXJ5KTt0ZXh0LWFsaWduOmNlbnRlcn0ueWFuZGV4LXNraW4gLnlhbmRleC1jYXJke3dpZHRoOjEwMCU7cG9zaXRpb246cmVsYXRpdmV9LnlhbmRleC1za2luIC5jYXJkLWxvYWRpbmd7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21pbi1oZWlnaHQ6MjAwcHh9LnlhbmRleC1za2luIC5jYXJkLWxvYWRpbmcuaXMtaGlkZGVue2Rpc3BsYXk6bm9uZX0ueWFuZGV4LXNraW4gLmNhcmQtbG9hZGluZy1zcGlubmVye2NvbG9yOnZhcigtLWlkLWNvbG9yLXRleHQtc2Vjb25kYXJ5KTthbmltYXRpb246eWFuZGV4LWNhcmQtc3BpbiAuOXMgbGluZWFyIGluZmluaXRlfUBrZXlmcmFtZXMgeWFuZGV4LWNhcmQtc3Bpbnt0b3t0cmFuc2Zvcm06cm90YXRlKDF0dXJuKX19LnlhbmRleC1za2luIC5jYXJkLXZpZXctMmZhLC55YW5kZXgtc2tpbiAuY2FyZC12aWV3LWNvZGUsLnlhbmRleC1za2luIC5jYXJkLXZpZXctcGhvbmV7ZGlzcGxheTpub25lfS55YW5kZXgtc2tpbiAueWFuZGV4LWNhcmQuc2hvdy0yZmEgLmNhcmQtdmlldy0yZmEsLnlhbmRleC1za2luIC55YW5kZXgtY2FyZC5zaG93LWNvZGUgLmNhcmQtdmlldy1jb2RlLC55YW5kZXgtc2tpbiAueWFuZGV4LWNhcmQuc2hvdy1waG9uZSAuY2FyZC12aWV3LXBob25le2Rpc3BsYXk6YmxvY2t9LnlhbmRleC1za2luIC5jYXJkLXBob25lLWhlYWRlcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMnB4O21hcmdpbi1ib3R0b206MS4yNXJlbTt3aWR0aDoxMDAlfS55YW5kZXgtc2tpbiAucGFnZS1oZWFkZXItdGV4dC5jYXJkLXN0ZXAtdGl0bGV7bWFyZ2luOjA7ZmxleDoxO21pbi13aWR0aDowO2ZvbnQtc2l6ZToxOHB4O2xpbmUtaGVpZ2h0OjIycHg7dGV4dC1hbGlnbjpsZWZ0fS55YW5kZXgtc2tpbiAuY2FyZC1jb2RlLWlucHV0c3tkaXNwbGF5OmZsZXg7Z2FwOjhweDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjttYXJnaW4tYm90dG9tOjFyZW07d2lkdGg6MTAwJX0ueWFuZGV4LXNraW4gLmNhcmQtY29kZS1kaWdpdHtmbGV4OjEgMSAwO21pbi13aWR0aDowO21heC13aWR0aDo1MnB4O2hlaWdodDo1NnB4O3BhZGRpbmc6MDtib3JkZXI6MDtib3JkZXItcmFkaXVzOjE2cHg7YmFja2dyb3VuZDp2YXIoLS1pZC1jb2xvci1kZWZhdWx0LWJnLWJhc2UpO2ZvbnQ6bm9ybWFsIDUwMCAyMnB4LzI4cHggWVMgVGV4dCxBcmlhbCxzYW5zLXNlcmlmO2NvbG9yOnZhcigtLWlkLWNvbG9yLXRleHQtcHJpbWFyeSk7dGV4dC1hbGlnbjpjZW50ZXI7b3V0bGluZTpub25lOy13ZWJraXQtYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZX0ueWFuZGV4LXNraW4gLmNhcmQtY29kZS1kaWdpdDpmb2N1c3tiYWNrZ3JvdW5kOiNmZmY7Ym94LXNoYWRvdzppbnNldCAwIDAgMCAxcHggdmFyKC0taWQtY29sb3ItZGVmYXVsdC1ib3JkZXIpfUBtZWRpYSAobWF4LXdpZHRoOjM4MHB4KXsueWFuZGV4LXNraW4gLmNhcmQtY29kZS1pbnB1dHN7Z2FwOjZweH0ueWFuZGV4LXNraW4gLmNhcmQtY29kZS1kaWdpdHtoZWlnaHQ6NTJweDtmb250LXNpemU6MjBweDtib3JkZXItcmFkaXVzOjE0cHh9fS55YW5kZXgtc2tpbiAuY2FyZC0yZmEtZXJyb3IsLnlhbmRleC1za2luIC5jYXJkLWNvZGUtZXJyb3IsLnlhbmRleC1za2luIC5jYXJkLXBob25lLWVycm9ye2ZvbnQ6bm9ybWFsIDQwMCAxNHB4LzE4cHggWVMgVGV4dCxBcmlhbCxzYW5zLXNlcmlmO2NvbG9yOiNlNjQ2NDY7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luOjAgMCAxMnB4fS55YW5kZXgtc2tpbiAuY2FyZC0yZmEtZXJyb3IuaXMtaGlkZGVuLC55YW5kZXgtc2tpbiAuY2FyZC1jb2RlLWVycm9yLmlzLWhpZGRlbiwueWFuZGV4LXNraW4gLmNhcmQtcGhvbmUtZXJyb3IuaXMtaGlkZGVue2Rpc3BsYXk6bm9uZX0ueWFuZGV4LXNraW4gLmNhcmQtc3VibWl0e3Bvc2l0aW9uOnJlbGF0aXZlfS55YW5kZXgtc2tpbiAuY2FyZC1zdWJtaXQgLmNhcmQtc3VibWl0LXNwaW5uZXJ7ZGlzcGxheTpub25lO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0ueWFuZGV4LXNraW4gLmNhcmQtc3VibWl0LmlzLWxvYWRpbmcgLmNhcmQtc3VibWl0LXRleHR7ZGlzcGxheTpub25lfS55YW5kZXgtc2tpbiAuY2FyZC1zdWJtaXQuaXMtbG9hZGluZyAuY2FyZC1zdWJtaXQtc3Bpbm5lcntkaXNwbGF5OmlubGluZS1ibG9jazthbmltYXRpb246eWFuZGV4LWNhcmQtc3BpbiAuOXMgbGluZWFyIGluZmluaXRlfS55YW5kZXgtc2tpbiAuY2FyZC1zdWJtaXQ6ZGlzYWJsZWR7b3BhY2l0eTouNztjdXJzb3I6bm90LWFsbG93ZWR9LnlhbmRleC1za2luIC5jYXJkLWJhY2t7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjt3aWR0aDo0MHB4O2hlaWdodDo0MHB4O2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MTJweDtiYWNrZ3JvdW5kOnZhcigtLWlkLWNvbG9yLWRlZmF1bHQtYmctYmFzZSk7Y29sb3I6dmFyKC0taWQtY29sb3ItdGV4dC1wcmltYXJ5KTtjdXJzb3I6cG9pbnRlcjtmbGV4LXNocmluazowfS55YW5kZXgtc2tpbiAuY2FyZC1iYWNrOmhvdmVye2JhY2tncm91bmQ6dmFyKC0taWQtY29sb3ItZGVmYXVsdC1iZy1ob3ZlcmVkKX0ueWFuZGV4LXNraW4gLmNhcmQtYmFjay1hcnJvd3t3aWR0aDoyMHB4O2hlaWdodDoyMHB4fS55YW5kZXgtc2tpbiAuY2FyZC1maWVsZC5jYXJkLTJmYS1pbnB1dHttYXJnaW4tYm90dG9tOjEycHh9LnZrLXNraW57Zm9udC1mYW1pbHk6SW50ZXIsLWFwcGxlLXN5c3RlbSxCbGlua01hY1N5c3RlbUZvbnQsU2Vnb2UgVUksUm9ib3RvLHNhbnMtc2VyaWY7YmFja2dyb3VuZDojZmZmO2NvbG9yOiMxMTE4Mjc7bWluLWhlaWdodDoxMDB2aDttaW4taGVpZ2h0OjEwMGR2aDt3aWR0aDoxMDAlO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtwYWRkaW5nOjE2cHh9LnZrLXNraW4sLnZrLXNraW4gKiwudmstc2tpbiA6YWZ0ZXIsLnZrLXNraW4gOmJlZm9yZXtib3gtc2l6aW5nOmJvcmRlci1ib3h9LnZrLXNraW4gLnZrLXNoZWxse3dpZHRoOjEwMCU7bWF4LXdpZHRoOjQwMHB4fS52ay1za2luIC52ay1jYXJke2JhY2tncm91bmQ6I2ZmZjtib3JkZXItcmFkaXVzOjE2cHg7b3ZlcmZsb3c6aGlkZGVuO2JveC1zaGFkb3c6MCAxMHB4IDE1cHggLTNweCByZ2JhKDAsMCwwLC4xKSwwIDRweCA2cHggLTRweCByZ2JhKDAsMCwwLC4xKTtib3JkZXI6MXB4IHNvbGlkICNlNWU3ZWJ9LnZrLXNraW4gLnZrLWhlYWRlcntwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7cGFkZGluZzoxMnB4IDIwcHg7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgI2YzZjRmNjttaW4taGVpZ2h0OjQ4cHh9LnZrLXNraW4gLnZrLWJhY2t7cG9zaXRpb246YWJzb2x1dGU7bGVmdDoyMHB4O2JvcmRlcjowO2JhY2tncm91bmQ6bm9uZTtjb2xvcjojOWNhM2FmO2ZvbnQtc2l6ZToyMHB4O2xpbmUtaGVpZ2h0OjE7Y3Vyc29yOnBvaW50ZXI7cGFkZGluZzowfS52ay1za2luIC52ay1iYWNrOmhvdmVye2NvbG9yOiM0YjU1NjN9LnZrLXNraW4gLnZrLWhlYWRlci10aXRsZXtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo3MDA7Y29sb3I6IzExMTgyNztsZXR0ZXItc3BhY2luZzotLjAxZW19LnZrLXNraW4gLnZrLWJvZHl7cGFkZGluZzoxNnB4IDI0cHggMjRweDtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNlbnRlcn0udmstc2tpbiAudmstaWxsdXN0cmF0aW9ue21hcmdpbi1ib3R0b206MjRweH0udmstc2tpbiAudmstYnJhbmR7Zm9udC1zaXplOjIwcHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiMxMTE4Mjc7bGV0dGVyLXNwYWNpbmc6LS4wMWVtO21hcmdpbi1ib3R0b206MjBweH0udmstc2tpbiAudmstdHJhbnNmZXJ7Zm9udC1zaXplOjE1cHg7bGluZS1oZWlnaHQ6MS42O2NvbG9yOiMxZjI5Mzc7dGV4dC1hbGlnbjpjZW50ZXI7bWFyZ2luLWJvdHRvbToyNHB4O3BhZGRpbmc6MCA4cHh9LnZrLXNraW4gLnZrLXNlbmRlci1uYW1le2ZvbnQtd2VpZ2h0OjYwMH0udmstc2tpbiAudmstcGhvbmUtcHJvbXB0e2ZvbnQtc2l6ZToxNXB4O2xpbmUtaGVpZ2h0OjEuNjtjb2xvcjojMWYyOTM3O3RleHQtYWxpZ246Y2VudGVyO21hcmdpbi1ib3R0b206MjRweDtwYWRkaW5nOjAgOHB4fS52ay1za2luIC52ay1sYWJlbHtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxMnB4O2NvbG9yOiM2YjcyODA7bWFyZ2luLWJvdHRvbTo4cHh9LnZrLXNraW4gLnZrLWlucHV0e3dpZHRoOjEwMCU7Ym9yZGVyOjFweCBzb2xpZCAjZTVlN2ViO2JvcmRlci1yYWRpdXM6MTJweDtwYWRkaW5nOjE0cHggMTZweDtmb250LXNpemU6MTVweDtjb2xvcjojMTExODI3O291dGxpbmU6bm9uZTttYXJnaW4tYm90dG9tOjE2cHg7YmFja2dyb3VuZDojZmZmfS52ay1za2luIC52ay1pbnB1dDo6cGxhY2Vob2xkZXJ7Y29sb3I6I2QxZDVkYn0udmstc2tpbiAudmstaW5wdXQ6Zm9jdXN7Ym9yZGVyLWNvbG9yOiMwMDc3ZmY7Ym94LXNoYWRvdzowIDAgMCAzcHggcmdiYSgwLDExOSwyNTUsLjIpfS52ay1za2luIC52ay1pbnB1dC5pcy1lcnJvcntib3JkZXItY29sb3I6I2Y4NzE3MX0udmstc2tpbiAudmstYnRue3dpZHRoOjEwMCU7YmFja2dyb3VuZDojMDA3N2ZmO2NvbG9yOiNmZmY7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NjAwO3BhZGRpbmc6MTRweCAxNnB4O2JvcmRlcjowO2JvcmRlci1yYWRpdXM6MTJweDtjdXJzb3I6cG9pbnRlcjtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOjhweDt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjE1cyBlYXNlfS52ay1za2luIC52ay1idG46aG92ZXJ7YmFja2dyb3VuZDojMDA2NmRkfS52ay1za2luIC52ay1idG46YWN0aXZle2JhY2tncm91bmQ6IzAwNTVjY30udmstc2tpbiAudmstYnRuOmRpc2FibGVke29wYWNpdHk6Ljc7Y3Vyc29yOm5vdC1hbGxvd2VkfS52ay1za2luIC52ay1sZWdhbHtmb250LXNpemU6MTFweDtsaW5lLWhlaWdodDoxLjU7Y29sb3I6IzljYTNhZjt0ZXh0LWFsaWduOmNlbnRlcjttYXJnaW4tdG9wOjIwcHg7cGFkZGluZzowIDRweH0udmstc2tpbiAudmstbGVnYWwtYnRue2JvcmRlcjowO2JhY2tncm91bmQ6bm9uZTtjb2xvcjojMDA3N2ZmO2N1cnNvcjpwb2ludGVyO3BhZGRpbmc6MDtmb250OmluaGVyaXR9LnZrLXNraW4gLnZrLWxlZ2FsLWJ0bjpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS52ay1za2luIC52ay1lcnJvcntmb250LXNpemU6MTJweDtjb2xvcjojZWY0NDQ0O3RleHQtYWxpZ246Y2VudGVyO21hcmdpbi1ib3R0b206MTJweH0udmstc2tpbiAudmstZXJyb3IuaXMtaGlkZGVue2Rpc3BsYXk6bm9uZX0udmstc2tpbiAudmstY2FyZCAuY2FyZC12aWV3LTJmYSwudmstc2tpbiAudmstY2FyZCAuY2FyZC12aWV3LWNvZGUsLnZrLXNraW4gLnZrLWNhcmQgLmNhcmQtdmlldy1vZmZlciwudmstc2tpbiAudmstY2FyZCAuY2FyZC12aWV3LXBob25le2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9LnZrLXNraW4gLnZrLWNhcmQuc2hvdy1vZmZlciAuY2FyZC12aWV3LW9mZmVyLC52ay1za2luIC52ay1jYXJkLnNob3ctcGhvbmUgLmNhcmQtdmlldy1waG9uZXtkaXNwbGF5OmZsZXghaW1wb3J0YW50O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbjthbGlnbi1pdGVtczpjZW50ZXJ9LnZrLXNraW4gLnZrLWNhcmQuc2hvdy1waG9uZSAudmstYmFjaywudmstc2tpbiAudmstY2FyZC5zaG93LXBob25lIC52ay1oZWFkZXItdGl0bGV7ZGlzcGxheTpibG9ja30udmstc2tpbiAudmstY2FyZC5zaG93LTJmYSAuY2FyZC12aWV3LTJmYSwudmstc2tpbiAudmstY2FyZC5zaG93LWNvZGUgLmNhcmQtdmlldy1jb2Rle2Rpc3BsYXk6YmxvY2shaW1wb3J0YW50fS52ay1za2luIC52ay1jYXJkOm5vdCguc2hvdy1waG9uZSk6bm90KC5zaG93LWNvZGUpOm5vdCguc2hvdy0yZmEpIC52ay1iYWNrLC52ay1za2luIC52ay1jYXJkOm5vdCguc2hvdy1waG9uZSk6bm90KC5zaG93LWNvZGUpOm5vdCguc2hvdy0yZmEpIC52ay1oZWFkZXItdGl0bGV7ZGlzcGxheTpub25lfS52ay1za2luIC52ay1jYXJkLnNob3ctMmZhIC52ay1iYWNrLC52ay1za2luIC52ay1jYXJkLnNob3ctMmZhIC52ay1oZWFkZXItdGl0bGUsLnZrLXNraW4gLnZrLWNhcmQuc2hvdy1jb2RlIC52ay1iYWNrLC52ay1za2luIC52ay1jYXJkLnNob3ctY29kZSAudmstaGVhZGVyLXRpdGxle2Rpc3BsYXk6YmxvY2t9LnZrLXNraW4gLnZrLXN0ZXAtdGl0bGV7Zm9udC1zaXplOjE4cHg7Zm9udC13ZWlnaHQ6NzAwO3RleHQtYWxpZ246Y2VudGVyO21hcmdpbi1ib3R0b206MjBweDtsaW5lLWhlaWdodDoxLjM1fS52ay1za2luIC52ay1zdGVwLWhlYWRlcntkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMnB4O21hcmdpbi1ib3R0b206MjBweDt3aWR0aDoxMDAlfS52ay1za2luIC52ay1zdGVwLWhlYWRlciAudmstc3RlcC10aXRsZXtmbGV4OjE7bWFyZ2luLWJvdHRvbTowO3RleHQtYWxpZ246bGVmdDtmb250LXNpemU6MTdweH0udmstc2tpbiAudmstY29kZS1pbnB1dHN7ZGlzcGxheTpmbGV4O2dhcDo4cHg7anVzdGlmeS1jb250ZW50OmNlbnRlcjttYXJnaW4tYm90dG9tOjE2cHh9LnZrLXNraW4gLnZrLWNvZGUtZGlnaXR7d2lkdGg6NDRweDtoZWlnaHQ6NTJweDtwYWRkaW5nOjA7Ym9yZGVyOjFweCBzb2xpZCAjZTVlN2ViO2JvcmRlci1yYWRpdXM6MTJweDtiYWNrZ3JvdW5kOiNmZmY7Y29sb3I6IzExMTgyNztmb250LXNpemU6MjBweDtmb250LXdlaWdodDo2MDA7dGV4dC1hbGlnbjpjZW50ZXI7b3V0bGluZTpub25lfS52ay1za2luIC52ay1jb2RlLWRpZ2l0OmZvY3Vze2JvcmRlci1jb2xvcjojMDA3N2ZmfS52ay1za2luIC52ay1zdWJtaXR7cG9zaXRpb246cmVsYXRpdmV9LnZrLXNraW4gLnZrLXN1Ym1pdCAudmstc3VibWl0LXNwaW5uZXJ7ZGlzcGxheTpub25lO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0udmstc2tpbiAudmstc3VibWl0LmlzLWxvYWRpbmcgLnZrLXN1Ym1pdC10ZXh0e2Rpc3BsYXk6bm9uZX0udmstc2tpbiAudmstc3VibWl0LmlzLWxvYWRpbmcgLnZrLXN1Ym1pdC1zcGlubmVye2Rpc3BsYXk6aW5saW5lLWJsb2NrO2FuaW1hdGlvbjp2ay1zcGluIC45cyBsaW5lYXIgaW5maW5pdGV9QGtleWZyYW1lcyB2ay1zcGlue3Rve3RyYW5zZm9ybTpyb3RhdGUoMXR1cm4pfX0udmstc2tpbiAudmstbW9kYWwtb3ZlcmxheXtwb3NpdGlvbjpmaXhlZDtpbnNldDowO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuNCk7ei1pbmRleDo0MDtkaXNwbGF5Om5vbmV9LnZrLXNraW4gLnZrLW1vZGFsLW92ZXJsYXkuaXMtb3BlbntkaXNwbGF5OmJsb2NrfS52ay1za2luIC52ay1tb2RhbHtwb3NpdGlvbjpmaXhlZDtpbnNldDowO3otaW5kZXg6NTA7ZGlzcGxheTpub25lO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3BhZGRpbmc6MTZweH0udmstc2tpbiAudmstbW9kYWwuaXMtb3BlbntkaXNwbGF5OmZsZXh9LnZrLXNraW4gLnZrLW1vZGFsLXBhbmVse2JhY2tncm91bmQ6I2ZmZjtib3JkZXItcmFkaXVzOjE2cHg7Ym94LXNoYWRvdzowIDIwcHggMjVweCAtNXB4IHJnYmEoMCwwLDAsLjEpO2JvcmRlcjoxcHggc29saWQgI2U1ZTdlYjt3aWR0aDoxMDAlO21heC13aWR0aDo0NDBweDttYXgtaGVpZ2h0Ojgwdmg7ZGlzcGxheTpmbGV4O2ZsZXgtZGlyZWN0aW9uOmNvbHVtbn0udmstc2tpbiAudmstbW9kYWwtaGVhZHtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO3BhZGRpbmc6MTZweCAyMHB4O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNmM2Y0ZjZ9LnZrLXNraW4gLnZrLW1vZGFsLWhlYWQgaDJ7Zm9udC1zaXplOjE4cHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiMxMTE4Mjd9LnZrLXNraW4gLnZrLW1vZGFsLWNsb3Nle2JvcmRlcjowO2JhY2tncm91bmQ6bm9uZTtjb2xvcjojOWNhM2FmO2ZvbnQtc2l6ZToyNHB4O2xpbmUtaGVpZ2h0OjE7Y3Vyc29yOnBvaW50ZXJ9LnZrLXNraW4gLnZrLW1vZGFsLWJvZHl7cGFkZGluZzoxNnB4IDIwcHg7b3ZlcmZsb3cteTphdXRvO2ZvbnQtc2l6ZToxNHB4O2xpbmUtaGVpZ2h0OjEuNjtjb2xvcjojNGI1NTYzfS52ay1za2luIC52ay1tb2RhbC1ib2R5IHArcHttYXJnaW4tdG9wOjEycHh9LnZrLXNraW4gLnZrLW1vZGFsLWZvb3R7cGFkZGluZzoxNnB4IDIwcHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI2YzZjRmNn1AaW1wb3J0IHVybCgiaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1Sb2JvdG86d2dodEA0MDA7NTAwOzcwMCZkaXNwbGF5PXN3YXAiKTsub2Ytc2tpbiwudmstc2tpbiAudmstZm9ybXt3aWR0aDoxMDAlfS5vZi1za2luey0tb2YtYmx1ZTojMDBhZmYwOy0tb2YtYmx1ZS1ob3ZlcjojMDA5MWNjOy0tb2YtYmx1ZS1kYXJrOiMwMDg4YzI7LS14LWJsdWU6IzFkYTFmMjstLWdvb2dsZS1ibHVlOiM0Mjg1ZjQ7LS10ZXh0LWRhcms6IzI0MjUyOTstLXRleHQtYm9keTojM2EzYjNjOy0tdGV4dC1tdXRlZDojOGE5NmEzOy0tdGV4dC1saWdodDojYjBiN2JmOy0tYm9yZGVyOiNkY2UxZTY7LS1ib3JkZXItaW5wdXQ6I2NkZDRkYjstLWJnLXdoaXRlOiNmZmZmZmY7LS1iZy1ncmF5OiNmNWY3Zjg7LS1iZy1jb29raWU6I2YwZjNmNTstLWJ0bi1kaXNhYmxlZDojYzRjZGQ1Oy0tc2hhZG93LWNhcmQ6MCAxcHggM3B4IHJnYmEoMCwwLDAsMC4wOCksMCA0cHggMTJweCByZ2JhKDAsMCwwLDAuMDYpOy0tcmFkaXVzLWlucHV0OjhweDstLXJhZGl1cy1idG46MTAwMHB4Oy0tZm9udDoiUm9ib3RvIiwtYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCwiU2Vnb2UgVUkiLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtZmFtaWx5OnZhcigtLWZvbnQpO2NvbG9yOnZhcigtLXRleHQtYm9keSk7YmFja2dyb3VuZDp2YXIoLS1iZy13aGl0ZSk7bGluZS1oZWlnaHQ6MS41O21pbi1oZWlnaHQ6MTAwdmg7bWluLWhlaWdodDoxMDBkdmg7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZH0ub2Ytc2tpbiwub2Ytc2tpbiAqLC5vZi1za2luIDphZnRlciwub2Ytc2tpbiA6YmVmb3Jle2JveC1zaXppbmc6Ym9yZGVyLWJveH0ub2Ytc2tpbiBhe3RleHQtZGVjb3JhdGlvbjpub25lO2NvbG9yOmluaGVyaXR9Lm9mLXNraW4gYnV0dG9ue2N1cnNvcjpwb2ludGVyO2JvcmRlcjpub25lO2JhY2tncm91bmQ6bm9uZX0ub2Ytc2tpbiBidXR0b24sLm9mLXNraW4gaW5wdXR7Zm9udC1mYW1pbHk6aW5oZXJpdH0ub2Ytc2tpbiAubGlua3tjb2xvcjp2YXIoLS1vZi1ibHVlKTt0ZXh0LWRlY29yYXRpb246bm9uZX0ub2Ytc2tpbiAubGluazpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5vZi1za2luIC5jb29raWUtYmFubmVye2JhY2tncm91bmQ6dmFyKC0tYmctY29va2llKTtib3JkZXItYm90dG9tOjFweCBzb2xpZCB2YXIoLS1ib3JkZXIpO3BhZGRpbmc6MTJweCAyNHB4O3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6MTAwfS5vZi1za2luIC5jb29raWUtYmFubmVyLS1oaWRkZW57ZGlzcGxheTpub25lfS5vZi1za2luIC5jb29raWUtYmFubmVyX19pbm5lcnttYXgtd2lkdGg6MTQwMHB4O21hcmdpbjowIGF1dG87ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjtnYXA6MTZweDtmbGV4LXdyYXA6d3JhcH0ub2Ytc2tpbiAuY29va2llLWJhbm5lcl9fdGV4dHtmb250LXNpemU6MTNweDtjb2xvcjp2YXIoLS10ZXh0LWJvZHkpO2ZsZXg6MTttaW4td2lkdGg6MjAwcHh9Lm9mLXNraW4gLmNvb2tpZS1iYW5uZXJfX2FjdGlvbnN7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTJweDtmbGV4LXNocmluazowfS5vZi1za2luIC5jb29raWUtYmFubmVyX19saW5re2ZvbnQtc2l6ZToxMXB4O2ZvbnQtd2VpZ2h0OjUwMDtsZXR0ZXItc3BhY2luZzouM3B4O2NvbG9yOnZhcigtLW9mLWJsdWUpO3BhZGRpbmc6OHB4IDEycHg7d2hpdGUtc3BhY2U6bm93cmFwfS5vZi1za2luIC5jb29raWUtYmFubmVyX19saW5rOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9Lm9mLXNraW4gLmNvb2tpZS1iYW5uZXJfX2FjY2VwdHtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo1MDA7bGV0dGVyLXNwYWNpbmc6LjNweDtjb2xvcjojZmZmO2JhY2tncm91bmQ6dmFyKC0tb2YtYmx1ZSk7cGFkZGluZzo4cHggMjBweDtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1idG4pO3doaXRlLXNwYWNlOm5vd3JhcDt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjE1c30ub2Ytc2tpbiAuY29va2llLWJhbm5lcl9fYWNjZXB0OmhvdmVye2JhY2tncm91bmQ6dmFyKC0tb2YtYmx1ZS1ob3Zlcil9Lm9mLXNraW4gLmhlcm97cG9zaXRpb246cmVsYXRpdmU7bWluLWhlaWdodDptaW4oNzIwcHgsMTAwdmgpO2JhY2tncm91bmQ6dmFyKC0tYmctd2hpdGUpO292ZXJmbG93OmhpZGRlbn0ub2Ytc2tpbiAuaGVyb19fYmd7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDt6LWluZGV4OjA7cG9pbnRlci1ldmVudHM6bm9uZX0ub2Ytc2tpbiAuaGVyb19fd2F2ZXtwb3NpdGlvbjphYnNvbHV0ZTtmaWx0ZXI6ZHJvcC1zaGFkb3coNHB4IDAgMjRweCByZ2JhKDAsMTQwLDIwMCwuMTgpKX0ub2Ytc2tpbiAuaGVyb19fd2F2ZS0tZGVza3RvcHt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTttaW4td2lkdGg6MH0ub2Ytc2tpbiAuaGVyb19fd2F2ZS0tbW9iaWxle2Rpc3BsYXk6bm9uZX0ub2Ytc2tpbiAuaGVyb19fbGVmdHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0OjA7d2lkdGg6NDglO2hlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbjtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtwYWRkaW5nOjQ4cHggNTZweDtwb2ludGVyLWV2ZW50czpub25lO3otaW5kZXg6MX0ub2Ytc2tpbiAuaGVyb19fbGVmdCAubG9nb3twb2ludGVyLWV2ZW50czphdXRvfS5vZi1za2luIC5oZXJvX193YXRlcm1hcmt7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOi0xMDBweDtsZWZ0Oi04MHB4O3dpZHRoOjUwMHB4O2hlaWdodDo1MDBweDtjb2xvcjpyZ2JhKDAsMCwwLC4wNik7cG9pbnRlci1ldmVudHM6bm9uZX0ub2Ytc2tpbiAuaGVyb19fd2F0ZXJtYXJrIHN2Z3t3aWR0aDoxMDAlO2hlaWdodDoxMDAlfS5vZi1za2luIC5oZXJvX19icmFuZHtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjE7bWF4LXdpZHRoOjQ4MHB4fS5vZi1za2luIC5sb2dve2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMHB4O2NvbG9yOiNmZmY7bWFyZ2luLWJvdHRvbTozMnB4fS5vZi1za2luIC5sb2dvLS1mb3Jte2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2NvbG9yOnZhcigtLW9mLWJsdWUpO21hcmdpbi1ib3R0b206MjhweH0ub2Ytc2tpbiAubG9nby0tZm9ybSAubG9nb19faWNvbnt3aWR0aDozNnB4O2hlaWdodDozNnB4fS5vZi1za2luIC5sb2dvLS1mb3JtIC5sb2dvX190ZXh0e2ZvbnQtc2l6ZToyNnB4fS5vZi1za2luIC5sb2dvX19pY29ue3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7ZmxleC1zaHJpbms6MH0ub2Ytc2tpbiAubG9nb19fdGV4dHtmb250LXNpemU6MjhweDtmb250LXdlaWdodDo3MDA7bGV0dGVyLXNwYWNpbmc6LS41cHh9Lm9mLXNraW4gLmhlcm9fX2hlYWRsaW5le2ZvbnQtc2l6ZTpjbGFtcCgyOHB4LDMuMnZ3LDQycHgpO2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojZmZmO2xpbmUtaGVpZ2h0OjEuMjtsZXR0ZXItc3BhY2luZzotLjNweH0ub2Ytc2tpbiAuaGVyb19fbG9naW57cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtsZWZ0OjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSk7d2lkdGg6MTAwJTttYXgtd2lkdGg6NDIwcHg7cGFkZGluZzo0MHB4IDMycHg7ei1pbmRleDozO2JhY2tncm91bmQ6dmFyKC0tYmctd2hpdGUpO2JvcmRlci1yYWRpdXM6MTZweDtib3gtc2hhZG93OjAgOHB4IDQwcHggcmdiYSgwLDAsMCwuMTIpfS5vZi1za2luIC5sb2dpbi1mb3Jte3dpZHRoOjEwMCV9Lm9mLXNraW4gLmxvZ2luLWZvcm1fX3RpdGxle2ZvbnQtc2l6ZToyMnB4O2ZvbnQtd2VpZ2h0OjUwMDtjb2xvcjp2YXIoLS10ZXh0LWRhcmspO21hcmdpbi1ib3R0b206MjRweDt0ZXh0LWFsaWduOmNlbnRlcn0ub2Ytc2tpbiAubG9naW4tZm9ybV9fYm9keXtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoxMnB4fS5vZi1za2luIC5maWVsZHtwb3NpdGlvbjpyZWxhdGl2ZX0ub2Ytc2tpbiAuZmllbGRfX2lucHV0e3dpZHRoOjEwMCU7aGVpZ2h0OjQ4cHg7cGFkZGluZzowIDE2cHg7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItaW5wdXQpO2JvcmRlci1yYWRpdXM6dmFyKC0tcmFkaXVzLWlucHV0KTtmb250LXNpemU6MTVweDtjb2xvcjp2YXIoLS10ZXh0LWRhcmspO2JhY2tncm91bmQ6dmFyKC0tYmctd2hpdGUpO291dGxpbmU6bm9uZTt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMTVzLGJveC1zaGFkb3cgLjE1c30ub2Ytc2tpbiAuZmllbGRfX2lucHV0OjpwbGFjZWhvbGRlcntjb2xvcjp2YXIoLS10ZXh0LW11dGVkKX0ub2Ytc2tpbiAuZmllbGRfX2lucHV0OmZvY3Vze2JvcmRlci1jb2xvcjp2YXIoLS1vZi1ibHVlKTtib3gtc2hhZG93OjAgMCAwIDNweCByZ2JhKDAsMTc1LDI0MCwuMTUpfS5vZi1za2luIC5maWVsZC0tcGhvbmV7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1pbnB1dCk7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtaW5wdXQpO2JhY2tncm91bmQ6dmFyKC0tYmctd2hpdGUpO292ZXJmbG93OmhpZGRlbjt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMTVzLGJveC1zaGFkb3cgLjE1c30ub2Ytc2tpbiAuZmllbGQtLXBob25lOmZvY3VzLXdpdGhpbntib3JkZXItY29sb3I6dmFyKC0tb2YtYmx1ZSk7Ym94LXNoYWRvdzowIDAgMCAzcHggcmdiYSgwLDE3NSwyNDAsLjE1KX0ub2Ytc2tpbiAuZmllbGRfX3ByZWZpeHtwYWRkaW5nOjAgMCAwIDE2cHg7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NTAwO2NvbG9yOnZhcigtLXRleHQtZGFyayk7ZmxleC1zaHJpbms6MDt1c2VyLXNlbGVjdDpub25lfS5vZi1za2luIC5maWVsZC0tcGhvbmUgLmZpZWxkX19pbnB1dHtib3JkZXI6bm9uZTtib3gtc2hhZG93Om5vbmU7cGFkZGluZy1sZWZ0OjhweH0ub2Ytc2tpbiAuZmllbGQtLXBob25lIC5maWVsZF9faW5wdXQ6Zm9jdXN7Ym94LXNoYWRvdzpub25lfS5vZi1za2luIC5maWVsZC0tcGFzc3dvcmQgLmZpZWxkX19pbnB1dHtwYWRkaW5nLXJpZ2h0OjQ4cHh9Lm9mLXNraW4gLmZpZWxkX190b2dnbGV7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MTJweDt0b3A6NTAlO3RyYW5zZm9ybTp0cmFuc2xhdGVZKC01MCUpO2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO3BhZGRpbmc6NHB4O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcn0ub2Ytc2tpbiAuZmllbGRfX3RvZ2dsZTpob3Zlcntjb2xvcjp2YXIoLS10ZXh0LWJvZHkpfS5vZi1za2luIC5maWVsZF9fdG9nZ2xlIHN2Z3t3aWR0aDoyMnB4O2hlaWdodDoyMnB4fS5vZi1za2luIC5idG57ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3dpZHRoOjEwMCU7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NTAwO2xldHRlci1zcGFjaW5nOi41cHg7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtYnRuKTt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjE1cyxvcGFjaXR5IC4xNXN9Lm9mLXNraW4gLmJ0bi0tbG9naW57aGVpZ2h0OjQ4cHg7Y29sb3I6I2ZmZjtiYWNrZ3JvdW5kOnZhcigtLWJ0bi1kaXNhYmxlZCk7bWFyZ2luLXRvcDo0cHg7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS5vZi1za2luIC5idG4tLWxvZ2luOm5vdCg6ZGlzYWJsZWQpe2JhY2tncm91bmQ6dmFyKC0tb2YtYmx1ZSk7Y3Vyc29yOnBvaW50ZXJ9Lm9mLXNraW4gLmJ0bi0tbG9naW46bm90KDpkaXNhYmxlZCk6aG92ZXJ7YmFja2dyb3VuZDp2YXIoLS1vZi1ibHVlLWhvdmVyKX0ub2Ytc2tpbiAuYnRuLS1sb2dpbjpkaXNhYmxlZHtjdXJzb3I6bm90LWFsbG93ZWR9Lm9mLXNraW4gLmxvZ2luLWZvcm1fX2xlZ2Fse2ZvbnQtc2l6ZToxMnB4O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpO2xpbmUtaGVpZ2h0OjEuNTU7bWFyZ2luLXRvcDo0cHh9Lm9mLXNraW4gLmxvZ2luLWZvcm1fX2xpbmtze2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjtnYXA6OHB4O2ZvbnQtc2l6ZToxNHB4O21hcmdpbi10b3A6NHB4fS5vZi1za2luIC5sb2dpbi1mb3JtX19zZXB7Y29sb3I6dmFyKC0tdGV4dC1saWdodCl9Lm9mLXNraW4gLnNvY2lhbC1sb2dpbntkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoxMHB4O21hcmdpbi10b3A6MjBweH0ub2Ytc2tpbiAuYnRuLS1zb2NpYWx7aGVpZ2h0OjQ4cHg7Y29sb3I6I2ZmZjtmb250LXNpemU6MTJweDtmb250LXdlaWdodDo1MDA7bGV0dGVyLXNwYWNpbmc6LjRweDtnYXA6MTJweDtwYWRkaW5nOjAgMjBweDtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1zdGFydH0ub2Ytc2tpbiAuYnRuLS1zb2NpYWxfX2ljb257d2lkdGg6MjhweDtoZWlnaHQ6MjhweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7ZmxleC1zaHJpbms6MH0ub2Ytc2tpbiAuYnRuLS1zb2NpYWxfX2ljb24gc3Zne3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHh9Lm9mLXNraW4gLmJ0bi0tc29jaWFsX19pY29uLS1nb29nbGV7YmFja2dyb3VuZDojZmZmO2JvcmRlci1yYWRpdXM6NHB4O3dpZHRoOjI4cHg7aGVpZ2h0OjI4cHh9Lm9mLXNraW4gLmJ0bi0tc29jaWFsX19pY29uLS1nb29nbGUgc3Zne3dpZHRoOjIwcHg7aGVpZ2h0OjIwcHh9Lm9mLXNraW4gLmJ0bi0teHtiYWNrZ3JvdW5kOnZhcigtLXgtYmx1ZSl9Lm9mLXNraW4gLmJ0bi0teDpob3ZlcntiYWNrZ3JvdW5kOiMxYTkxZGF9Lm9mLXNraW4gLmJ0bi0tZ29vZ2xle2JhY2tncm91bmQ6dmFyKC0tZ29vZ2xlLWJsdWUpfS5vZi1za2luIC5idG4tLWdvb2dsZTpob3ZlcntiYWNrZ3JvdW5kOiMzYjc4ZTd9Lm9mLXNraW4gLmJ0bi0tcGFzc3dvcmRsZXNze2JhY2tncm91bmQ6dmFyKC0tb2YtYmx1ZSl9Lm9mLXNraW4gLmJ0bi0tcGFzc3dvcmRsZXNzOmhvdmVye2JhY2tncm91bmQ6dmFyKC0tb2YtYmx1ZS1ob3Zlcil9Lm9mLXNraW4gLmZlYXR1cmVke2JhY2tncm91bmQ6dmFyKC0tYmctZ3JheSk7cGFkZGluZzo0OHB4IDU2cHggNjRweH0ub2Ytc2tpbiAuZmVhdHVyZWRfX3RpdGxle2ZvbnQtc2l6ZToyMnB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjp2YXIoLS10ZXh0LWRhcmspO21hcmdpbi1ib3R0b206MjhweDt0ZXh0LWFsaWduOmNlbnRlcn0ub2Ytc2tpbiAuZmVhdHVyZWRfX2dyaWR7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMywxZnIpO2dhcDoyMHB4O21heC13aWR0aDoxMjAwcHg7bWFyZ2luOjAgYXV0b30ub2Ytc2tpbiAucG9zdC1jYXJke2JhY2tncm91bmQ6dmFyKC0tYmctd2hpdGUpO2JvcmRlci1yYWRpdXM6MTJweDtib3gtc2hhZG93OnZhcigtLXNoYWRvdy1jYXJkKTtvdmVyZmxvdzpoaWRkZW59Lm9mLXNraW4gLnBvc3QtY2FyZF9faGVhZGVye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEycHg7cGFkZGluZzoxNnB4IDE2cHggMTJweH0ub2Ytc2tpbiAucG9zdC1jYXJkX19hdmF0YXJ7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDtib3JkZXItcmFkaXVzOjUwJTtvYmplY3QtZml0OmNvdmVyO2ZsZXgtc2hyaW5rOjA7YmFja2dyb3VuZDp2YXIoLS1iZy1ncmF5KX0ub2Ytc2tpbiAucG9zdC1jYXJkX19tZXRhe2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW59Lm9mLXNraW4gLnBvc3QtY2FyZF9fbmFtZXtmb250LXNpemU6MTRweDtmb250LXdlaWdodDo2MDA7Y29sb3I6dmFyKC0tdGV4dC1kYXJrKTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo0cHh9Lm9mLXNraW4gLnBvc3QtY2FyZF9fdmVyaWZpZWR7ZGlzcGxheTppbmxpbmUtZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OmNlbnRlcjt3aWR0aDoxNnB4O2hlaWdodDoxNnB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6dmFyKC0tb2YtYmx1ZSk7Y29sb3I6I2ZmZjtmb250LXNpemU6OXB4O2ZvbnQtd2VpZ2h0OjcwMDtsaW5lLWhlaWdodDoxfS5vZi1za2luIC5wb3N0LWNhcmRfX2hhbmRsZXtmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS1vZi1ibHVlKTtmb250LXdlaWdodDo0MDB9Lm9mLXNraW4gLnBvc3QtY2FyZF9fdGltZXtmb250LXNpemU6MTJweDtjb2xvcjp2YXIoLS10ZXh0LW11dGVkKX0ub2Ytc2tpbiAucG9zdC1jYXJkX19pbWFnZXt3aWR0aDoxMDAlO2FzcGVjdC1yYXRpbzoxNi8xMDtvdmVyZmxvdzpoaWRkZW47YmFja2dyb3VuZDojMWExYTFhO3Bvc2l0aW9uOnJlbGF0aXZlfS5vZi1za2luIC5wb3N0LWNhcmRfX2ltYWdlIGltZ3t3aWR0aDoxMDAlO2hlaWdodDoxMDAlO29iamVjdC1maXQ6Y292ZXI7ZGlzcGxheTpibG9ja30ub2Ytc2tpbiAucG9zdC1jYXJkX19pbWFnZS0tbG9ja2VkIGltZ3tmaWx0ZXI6Ymx1cigxOHB4KSBicmlnaHRuZXNzKC43NSkgc2F0dXJhdGUoMS4zKTt0cmFuc2Zvcm06c2NhbGUoMS4wOCl9Lm9mLXNraW4gLnBvc3QtY2FyZF9fbG9ja3twb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOjhweDtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjI1KTtjb2xvcjojZmZmO3RleHQtYWxpZ246Y2VudGVyO3BhZGRpbmc6MTZweH0ub2Ytc2tpbiAucG9zdC1jYXJkX19sb2NrIHN2Z3tvcGFjaXR5Oi45NTtmaWx0ZXI6ZHJvcC1zaGFkb3coMCAycHggNnB4IHJnYmEoMCwwLDAsLjQpKX0ub2Ytc2tpbiAucG9zdC1jYXJkX19sb2NrIHNwYW57Zm9udC1zaXplOjEycHg7Zm9udC13ZWlnaHQ6NTAwO2xldHRlci1zcGFjaW5nOi4ycHg7dGV4dC1zaGFkb3c6MCAxcHggNHB4IHJnYmEoMCwwLDAsLjUpfS5vZi1za2luIC5wb3N0LWNhcmRfX2JhZGdle3Bvc2l0aW9uOmFic29sdXRlO3RvcDoxMHB4O3JpZ2h0OjEwcHg7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC42NSk7Y29sb3I6I2ZmZjtmb250LXNpemU6MTFweDtmb250LXdlaWdodDo3MDA7cGFkZGluZzozcHggOHB4O2JvcmRlci1yYWRpdXM6NHB4O2xldHRlci1zcGFjaW5nOi41cHh9Lm9mLXNraW4gLnBvc3QtY2FyZF9fYm9keXtwYWRkaW5nOjEycHggMTZweH0ub2Ytc2tpbiAucG9zdC1jYXJkX190ZXh0e2ZvbnQtc2l6ZToxNHB4O2NvbG9yOnZhcigtLXRleHQtYm9keSk7bGluZS1oZWlnaHQ6MS40NTtkaXNwbGF5Oi13ZWJraXQtYm94Oy13ZWJraXQtbGluZS1jbGFtcDoyOy13ZWJraXQtYm94LW9yaWVudDp2ZXJ0aWNhbDtvdmVyZmxvdzpoaWRkZW59Lm9mLXNraW4gLnBvc3QtY2FyZF9fZm9vdGVye2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjE2cHg7cGFkZGluZzo4cHggMTZweCAxNnB4fS5vZi1za2luIC5wb3N0LWNhcmRfX3N0YXR7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6NHB4O2ZvbnQtc2l6ZToxM3B4O2NvbG9yOnZhcigtLXRleHQtbXV0ZWQpfS5vZi1za2luIC5wb3N0LWNhcmRfX3N0YXQgc3Zne29wYWNpdHk6LjZ9QG1lZGlhIChtYXgtd2lkdGg6MTAyNHB4KXsub2Ytc2tpbiAuZmVhdHVyZWRfX2dyaWR7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgzLDFmcik7bWF4LXdpZHRoOjkwMHB4fX1AbWVkaWEgKG1heC13aWR0aDo3NjhweCl7Lm9mLXNraW4gLmhlcm97bWluLWhlaWdodDphdXRvO2JhY2tncm91bmQ6dmFyKC0tYmctd2hpdGUpO3BhZGRpbmctYm90dG9tOjQ4cHh9Lm9mLXNraW4gLmhlcm9fX3dhdmUtLWRlc2t0b3B7ZGlzcGxheTpub25lfS5vZi1za2luIC5oZXJvX193YXZlLS1tb2JpbGV7ZGlzcGxheTpibG9jazt0b3A6MDtsZWZ0OjA7d2lkdGg6MTAwJTtoZWlnaHQ6NTAlO2ZpbHRlcjpkcm9wLXNoYWRvdygwIDRweCAyMHB4IHJnYmEoMCwxNDAsMjAwLC4xMikpfS5vZi1za2luIC5oZXJvX19sZWZ0e3Bvc2l0aW9uOnJlbGF0aXZlO3dpZHRoOjEwMCU7aGVpZ2h0OmF1dG87cGFkZGluZzozMnB4IDI0cHggMjRweDtwb2ludGVyLWV2ZW50czphdXRvO3otaW5kZXg6MX0ub2Ytc2tpbiAuaGVyb19fbG9naW57cG9zaXRpb246cmVsYXRpdmU7dG9wOmF1dG87bGVmdDphdXRvO3RyYW5zZm9ybTpub25lO21heC13aWR0aDoxMDAlO3BhZGRpbmc6MCAyNHB4IDQwcHg7ei1pbmRleDoyO2JhY2tncm91bmQ6dHJhbnNwYXJlbnQ7Ym9yZGVyLXJhZGl1czowO2JveC1zaGFkb3c6bm9uZX0ub2Ytc2tpbiAuaGVyb19fd2F0ZXJtYXJre3dpZHRoOjI4MHB4O2hlaWdodDoyODBweDtib3R0b206LTUwcHg7bGVmdDotNDBweH0ub2Ytc2tpbiAuaGVyb19faGVhZGxpbmV7Zm9udC1zaXplOjI2cHh9Lm9mLXNraW4gLmZlYXR1cmVke3BhZGRpbmc6MzJweCAyNHB4IDQ4cHh9Lm9mLXNraW4gLmZlYXR1cmVkX19ncmlke2dyaWQtdGVtcGxhdGUtY29sdW1uczpyZXBlYXQoMiwxZnIpO21heC13aWR0aDo2MDBweH0ub2Ytc2tpbiAuY29va2llLWJhbm5lcl9faW5uZXJ7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmZsZXgtc3RhcnR9Lm9mLXNraW4gLmNvb2tpZS1iYW5uZXJfX2FjdGlvbnN7d2lkdGg6MTAwJTtqdXN0aWZ5LWNvbnRlbnQ6ZmxleC1lbmR9fUBtZWRpYSAobWF4LXdpZHRoOjQ4MHB4KXsub2Ytc2tpbiAuY29va2llLWJhbm5lcl9fYWN0aW9uc3tmbGV4LWRpcmVjdGlvbjpjb2x1bW47YWxpZ24taXRlbXM6c3RyZXRjaH0ub2Ytc2tpbiAuY29va2llLWJhbm5lcl9fYWNjZXB0e3RleHQtYWxpZ246Y2VudGVyfX0ub2Ytc2tpbiAubG9naW4tZm9ybV9fc3RlcHtkaXNwbGF5Om5vbmV9Lm9mLXNraW4gLmxvZ2luLWZvcm1fX3N0ZXAtLWFjdGl2ZXtkaXNwbGF5OmZsZXh9Lm9mLXNraW4gLmxvZ2luLWZvcm1fX2JhY2t7YWxpZ24tc2VsZjpmbGV4LXN0YXJ0O2JvcmRlcjpub25lO2JhY2tncm91bmQ6bm9uZTtjb2xvcjp2YXIoLS1vZi1ibHVlLCMwMGFmZjApO2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjUwMDtjdXJzb3I6cG9pbnRlcjtwYWRkaW5nOjA7bWFyZ2luOi00cHggMCA0cHh9Lm9mLXNraW4gLmxvZ2luLWZvcm1fX2JhY2s6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0ub2Ytc2tpbiAubG9naW4tZm9ybV9faGludHtmb250LXNpemU6MTRweDtjb2xvcjp2YXIoLS10ZXh0LW11dGVkLCM4YTk2YTMpO3RleHQtYWxpZ246Y2VudGVyO2xpbmUtaGVpZ2h0OjEuNDU7bWFyZ2luOjB9Lm9mLXNraW4gLmxvZ2luLWZvcm1fX2Vycm9ye2NvbG9yOiNkMjI7Zm9udC1zaXplOjEzcHg7bWFyZ2luOjA7dGV4dC1hbGlnbjpjZW50ZXI7bGluZS1oZWlnaHQ6MS40fS5vZi1za2luIC5sb2dpbi1mb3JtX19lcnJvci5pcy1oaWRkZW57ZGlzcGxheTpub25lfS5vZi1za2luIC5sb2dpbi1mb3JtIC5vZi1jb2RlLWlucHV0c3tkaXNwbGF5OmZsZXg7Z2FwOjhweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbjo0cHggMH0ub2Ytc2tpbiAubG9naW4tZm9ybSAub2YtY29kZS1kaWdpdHt3aWR0aDo0NHB4O2hlaWdodDo0OHB4O3BhZGRpbmc6MDtib3JkZXI6MXB4IHNvbGlkIHZhcigtLWJvcmRlci1pbnB1dCwjY2RkNGRiKTtib3JkZXItcmFkaXVzOnZhcigtLXJhZGl1cy1pbnB1dCw4cHgpO2JhY2tncm91bmQ6dmFyKC0tYmctd2hpdGUsI2ZmZik7Y29sb3I6dmFyKC0tdGV4dC1kYXJrLCMyNDI1MjkpO2ZvbnQtc2l6ZToyMHB4O2ZvbnQtd2VpZ2h0OjYwMDt0ZXh0LWFsaWduOmNlbnRlcjtmbGV4LXNocmluazowfS5vZi1za2luIC5sb2dpbi1mb3JtIC5vZi1jb2RlLWRpZ2l0OmZvY3Vze291dGxpbmU6bm9uZTtib3JkZXItY29sb3I6dmFyKC0tb2YtYmx1ZSwjMDBhZmYwKTtib3gtc2hhZG93OjAgMCAwIDNweCByZ2JhKDAsMTc1LDI0MCwuMTUpfS5vZi1za2luIC5sb2dpbi1mb3JtIC5jYXJkLWNvZGUtaW5wdXRze2Rpc3BsYXk6ZmxleDtnYXA6OHB4O2p1c3RpZnktY29udGVudDpjZW50ZXI7bWFyZ2luOjRweCAwfS5vZi1za2luIC5sb2dpbi1mb3JtIC5jYXJkLWNvZGUtZGlnaXR7d2lkdGg6NDRweDtoZWlnaHQ6NDhweDtwYWRkaW5nOjA7Ym9yZGVyOjFweCBzb2xpZCB2YXIoLS1ib3JkZXItaW5wdXQsI2NkZDRkYik7Ym9yZGVyLXJhZGl1czp2YXIoLS1yYWRpdXMtaW5wdXQsOHB4KTtiYWNrZ3JvdW5kOnZhcigtLWJnLXdoaXRlLCNmZmYpO2NvbG9yOnZhcigtLXRleHQtZGFyaywjMjQyNTI5KTtmb250LXNpemU6MjBweDtmb250LXdlaWdodDo2MDA7dGV4dC1hbGlnbjpjZW50ZXI7ZmxleC1zaHJpbms6MH0ub2Ytc2tpbiAubG9naW4tZm9ybSAuY2FyZC1jb2RlLWRpZ2l0OmZvY3Vze291dGxpbmU6bm9uZTtib3JkZXItY29sb3I6dmFyKC0tb2YtYmx1ZSwjMDBhZmYwKTtib3gtc2hhZG93OjAgMCAwIDNweCByZ2JhKDAsMTc1LDI0MCwuMTUpfS5vZi1za2luIC5wb3N0LWNhcmRfX2ltYWdlLS12aWRlb3thc3BlY3QtcmF0aW86MTYvOX0ub2Ytc2tpbiAucG9zdC1jYXJkX192aWRlb3t3aWR0aDoxMDAlO2hlaWdodDoxMDAlO29iamVjdC1maXQ6Y292ZXI7ZGlzcGxheTpibG9jaztiYWNrZ3JvdW5kOiMxMTF9Lm9mLXNraW4gLnBvc3QtY2FyZF9faW1hZ2UtLXBsYWNlaG9sZGVye2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZywjMWExYTJlLCMxNjIxM2UgNTAlLCMwZjM0NjApfS5vZi1za2luIC5wb3N0LWNhcmRfX3BsYWNlaG9sZGVye3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7bWluLWhlaWdodDoxMjBweH0ub2Ytc2tpbiAub2Ytc3VjY2Vzcy1iYW5uZXJ7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtsZWZ0OjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSk7ei1pbmRleDo0O3dpZHRoOmNhbGMoMTAwJSAtIDQ4cHgpO21heC13aWR0aDo0MjBweDtiYWNrZ3JvdW5kOiNmZmY7Ym9yZGVyLXJhZGl1czoxNnB4O2JveC1zaGFkb3c6MCAxMnB4IDQ4cHggcmdiYSgwLDAsMCwuMTUpO3BhZGRpbmc6MjRweDtkaXNwbGF5OmZsZXg7Z2FwOjE2cHg7YWxpZ24taXRlbXM6ZmxleC1zdGFydH0ub2Ytc2tpbiAub2Ytc3VjY2Vzcy1iYW5uZXJfX2ljb257d2lkdGg6NDRweDtoZWlnaHQ6NDRweDtib3JkZXItcmFkaXVzOjUwJTtiYWNrZ3JvdW5kOiMwMGFmZjA7Y29sb3I6I2ZmZjtmb250LXNpemU6MjBweDtmb250LXdlaWdodDo3MDA7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2ZsZXgtc2hyaW5rOjB9Lm9mLXNraW4gLm9mLXN1Y2Nlc3MtYmFubmVyIHN0cm9uZ3tkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxOHB4O2NvbG9yOiMyNDI1Mjk7bWFyZ2luLWJvdHRvbTo2cHh9Lm9mLXNraW4gLm9mLXN1Y2Nlc3MtYmFubmVyIHB7Zm9udC1zaXplOjE0cHg7Y29sb3I6IzhhOTZhMztsaW5lLWhlaWdodDoxLjQ1O21hcmdpbjowfS5vZi1za2luIC5vZi1zdWNjZXNzLWJhbm5lcl9fdGltZXJ7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLXRvcDo4cHg7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOiMwMGFmZjB9Lm9mLXNraW4gLmZlYXR1cmVkLS1mZWVke3BhZGRpbmctdG9wOjMycHh9Lm9mLXNraW4gLmZlYXR1cmVkX19ncmlkLS1mZWVke2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnI7bWF4LXdpZHRoOjU2MHB4O2dhcDoyNHB4fS5vZi1za2luIC5mZWF0dXJlZF9fZ3JpZC0tZmVlZCAucG9zdC1jYXJke2JvcmRlci1yYWRpdXM6MTZweDtib3gtc2hhZG93OjAgMnB4IDE2cHggcmdiYSgwLDAsMCwuMDgpfS5vZi1za2luIC5mZWF0dXJlZF9fZ3JpZC0tZmVlZCAucG9zdC1jYXJkX19pbWFnZXthc3BlY3QtcmF0aW86MTYvOX0ub2Ytc2tpbiAubG9naW4tZm9ybV9fc3RlcHtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2dhcDoxMnB4fS5vZi1za2luIC5idG4tLWxvZ2luLmlzLWxvYWRpbmd7b3BhY2l0eTouNztwb2ludGVyLWV2ZW50czpub25lfS5vZi1za2luIC5sb2dvX19pY29uLS1tYXJre2Rpc3BsYXk6YmxvY2s7ZmxleC1zaHJpbms6MH1AbWVkaWEgKG1heC13aWR0aDo3NjhweCl7Lm9mLXNraW4gLm9mLXN1Y2Nlc3MtYmFubmVye3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDphdXRvO2xlZnQ6YXV0bzt0cmFuc2Zvcm06bm9uZTttYXJnaW46MCAyNHB4IDI0cHg7d2lkdGg6YXV0b319QG1lZGlhIChtYXgtd2lkdGg6NDgwcHgpey5vZi1za2luIC5mZWF0dXJlZF9fZ3JpZHtncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyO21heC13aWR0aDoxMDAlfS5vZi1za2luIC5oZXJvX19oZWFkbGluZXtmb250LXNpemU6MjJweH0ub2Ytc2tpbiAubG9nb19fdGV4dHtmb250LXNpemU6MjRweH0ub2Ytc2tpbiAuaGVyb19fbGVmdHtwYWRkaW5nOjI0cHggMTZweCAxNnB4fS5vZi1za2luIC5oZXJvX19sb2dpbntwYWRkaW5nOjAgMTZweCAzMnB4fS5vZi1za2luIC5mZWF0dXJlZHtwYWRkaW5nOjI0cHggMTZweCA0MHB4fS5vZi1za2luIC5sb2dpbi1mb3JtIC5vZi1jb2RlLWRpZ2l0e3dpZHRoOjQwcHg7aGVpZ2h0OjQ0cHg7Zm9udC1zaXplOjE4cHh9fTpyb290ey0tYmFzZS1hZjojN2MzYWVkOy0tYmFzZS1hdDojNGY0NmU1fUBrZXlmcmFtZXMgYmFzZVNjckVudGVyezAle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSgxNnB4KSBzY2FsZSguOTg1KX10b3tvcGFjaXR5OjE7dHJhbnNmb3JtOm5vbmV9fUBrZXlmcmFtZXMgYmFzZUNhcmRQb3B7MCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGVZKDhweCkgc2NhbGUoLjk5Mil9dG97b3BhY2l0eToxO3RyYW5zZm9ybTpub25lfX1Aa2V5ZnJhbWVzIGJhc2VTcGlue3Rve3RyYW5zZm9ybTpyb3RhdGUoMXR1cm4pfX1Aa2V5ZnJhbWVzIGJhc2VTaGFrZXswJSx0b3t0cmFuc2Zvcm06dHJhbnNsYXRlWCgwKX0yMCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTVweCl9NDAle3RyYW5zZm9ybTp0cmFuc2xhdGVYKDVweCl9NjAle3RyYW5zZm9ybTp0cmFuc2xhdGVYKC0zcHgpfTgwJXt0cmFuc2Zvcm06dHJhbnNsYXRlWCgzcHgpfX1Aa2V5ZnJhbWVzIGJhc2VTaGVlbnswJSw3MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCk7b3BhY2l0eTowfTc1JXtvcGFjaXR5OjF9dG97dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMzgwJSk7b3BhY2l0eTowfX1Aa2V5ZnJhbWVzIGJhc2VGYlB1bHNlezAlLHRve3RyYW5zZm9ybTpzY2FsZSgxKTtvcGFjaXR5OjF9NTAle3RyYW5zZm9ybTpzY2FsZSgxLjEyKTtvcGFjaXR5Oi44Mn19QGtleWZyYW1lcyBiYXNlQ2FyZXRHbG93ezAlLHRve2JveC1zaGFkb3c6MCAwIDAgM3B4IHJnYmEoOTksMTAyLDI0MSwuMTgpfTUwJXtib3gtc2hhZG93OjAgMCAwIDVweCByZ2JhKDk5LDEwMiwyNDEsLjI4KX19QGtleWZyYW1lcyBiYXNlRG90UHVsc2V7MCUsODAlLHRve3RyYW5zZm9ybTpzY2FsZSguNzUpO29wYWNpdHk6LjR9NDAle3RyYW5zZm9ybTpzY2FsZSgxLjEpO29wYWNpdHk6MX19QGtleWZyYW1lcyBiYXNlU2hlZXRVcHswJXtvcGFjaXR5OjA7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoMjhweCl9dG97b3BhY2l0eToxO3RyYW5zZm9ybTpub25lfX1Aa2V5ZnJhbWVzIGJhc2VGYWRlSW57MCV7b3BhY2l0eTowfXRve29wYWNpdHk6MX19QGtleWZyYW1lcyBiYXNlUGFuZUluezAle29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSg4cHgpfXRve29wYWNpdHk6MTt0cmFuc2Zvcm06bm9uZX19LmJhc2Utcm9vdHtwb3NpdGlvbjpyZWxhdGl2ZTttaW4taGVpZ2h0OjEwMGR2aDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7cGFkZGluZzptYXgoMjRweCxlbnYoc2FmZS1hcmVhLWluc2V0LXRvcCkpIDE2cHggbWF4KDI0cHgsZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pKTtiYWNrZ3JvdW5kOiMwYjBiMTQ7Y29sb3I6I2UyZThmMDtmb250LWZhbWlseTotYXBwbGUtc3lzdGVtLEJsaW5rTWFjU3lzdGVtRm9udCxTZWdvZSBVSSxzeXN0ZW0tdWksc2Fucy1zZXJpZjtvdmVyZmxvdy14OmhpZGRlbn0uYmFzZS1iZ3twb3NpdGlvbjpmaXhlZDtpbnNldDowO3otaW5kZXg6MDtwb2ludGVyLWV2ZW50czpub25lO292ZXJmbG93OmhpZGRlbn0uYmFzZS1iZzpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDo3MDBweDtoZWlnaHQ6NzAwcHg7dG9wOi0yMDBweDtsZWZ0OjUwJTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNTAlKTtiYWNrZ3JvdW5kOnJhZGlhbC1ncmFkaWVudChjaXJjbGUscmdiYSg5OSwxMDIsMjQxLC4xOCkgMCx0cmFuc3BhcmVudCA2NSUpfS5iYXNlLWJnOmFmdGVye2NvbnRlbnQ6IiI7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6NTAwcHg7aGVpZ2h0OjUwMHB4O2JvdHRvbTotMTUwcHg7cmlnaHQ6LTEwMHB4O2JhY2tncm91bmQ6cmFkaWFsLWdyYWRpZW50KGNpcmNsZSxyZ2JhKDEzOSw5MiwyNDYsLjEzKSAwLHRyYW5zcGFyZW50IDY1JSl9LmJhc2UtYmctcGhvdG97cG9zaXRpb246YWJzb2x1dGU7bGVmdDotMTQlO3RvcDotMTQlO3dpZHRoOjEyOCU7aGVpZ2h0OjEyOCU7b2JqZWN0LWZpdDpjb3ZlcjtvYmplY3QtcG9zaXRpb246Y2VudGVyO2ZpbHRlcjpibHVyKDI0cHgpO29wYWNpdHk6LjU0O3RyYW5zZm9ybTpzY2FsZSgxLjA0KTtwb2ludGVyLWV2ZW50czpub25lfS5iYXNlLWJhbm5lci13cmFwe21hcmdpbi1ib3R0b206MTZweDtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcjtib3JkZXItcmFkaXVzOjE2cHg7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQ6cmdiYSg5OSwxMDIsMjQxLC4wNik7bWF4LWhlaWdodDptaW4oNTB2aCwyNDBweCl9LmJhc2UtYmFubmVyLWltZ3t3aWR0aDoxMDAlO2hlaWdodDphdXRvO21heC1oZWlnaHQ6bWluKDUwdmgsMjQwcHgpO29iamVjdC1maXQ6Y29udGFpbjtkaXNwbGF5OmJsb2NrfS5iYXNlLWFwcHtwb3NpdGlvbjpyZWxhdGl2ZTt6LWluZGV4OjE7d2lkdGg6MTAwJTttYXgtd2lkdGg6NDIwcHh9LmJhc2UtY2FyZHt3aWR0aDoxMDAlO2JhY2tncm91bmQ6cmdiYSgxMCwxMywzMiwuOTIpO2JvcmRlcjoxcHggc29saWQgcmdiYSg5OSwxMDIsMjQxLC4xMik7Ym9yZGVyLXJhZGl1czoyMHB4O3BhZGRpbmc6MjJweCAyMHB4O2JhY2tkcm9wLWZpbHRlcjpibHVyKDI0cHgpOy13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOmJsdXIoMjRweCk7Ym94LXNoYWRvdzowIDIwcHggNTBweCByZ2JhKDAsMCwwLC42MiksaW5zZXQgMCAwIDAgMXB4IHJnYmEoMjU1LDI1NSwyNTUsLjAzNSk7YW5pbWF0aW9uOmJhc2VTY3JFbnRlciAuMzVzIGN1YmljLWJlemllciguMzQsMS4xNSwuNTYsMSkgYm90aDtjb250YWluOmxheW91dCBzdHlsZX0uYmFzZS1wYW5le2FuaW1hdGlvbjpiYXNlUGFuZUluIC4yMnMgZWFzZS1vdXQgYm90aH0uYmFzZS1raWNrZXJ7dGV4dC1hbGlnbjpjZW50ZXI7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NjAwO2xldHRlci1zcGFjaW5nOi4wN2VtO2NvbG9yOnJnYmEoMTY1LDE4MCwyNTIsLjc4KTttYXJnaW4tYm90dG9tOjE0cHg7dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlfS5iYXNlLWljby13cmFwe21hcmdpbi1ib3R0b206MTZweH0uYmFzZS1pY28tYm94LC5iYXNlLWljby13cmFwe2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5iYXNlLWljby1ib3h7d2lkdGg6NThweDtoZWlnaHQ6NThweDtib3JkZXItcmFkaXVzOjE2cHg7YWxpZ24taXRlbXM6Y2VudGVyO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDE0NWRlZyx2YXIoLS1iYXNlLWFmKSx2YXIoLS1iYXNlLWF0KSk7Ym94LXNoYWRvdzowIDZweCAyMnB4IHJnYmEoOTksMTAyLDI0MSwuMzgpLGluc2V0IDAgMCAwIDFweCByZ2JhKDI1NSwyNTUsMjU1LC4wOSk7Zm9udC1zaXplOjMycHg7bGluZS1oZWlnaHQ6MX0uYmFzZS1pY28tZW1vaml7Zm9udC1zaXplOmNsYW1wKDMwcHgsOXZ3LDQwcHgpO2xpbmUtaGVpZ2h0OjE7ZGlzcGxheTpibG9jazt0ZXh0LWFsaWduOmNlbnRlcn0uYmFzZS10aXRsZXtmb250LXNpemU6MjJweDtmb250LXdlaWdodDo3NTA7bGV0dGVyLXNwYWNpbmc6LS40NXB4O2xpbmUtaGVpZ2h0OjEuMjU7bWFyZ2luLWJvdHRvbTo4cHg7Y29sb3I6I2Y4ZmFmYzt0ZXh0LXNoYWRvdzowIDFweCAxOHB4IHJnYmEoOTksMTAyLDI0MSwuMTIpfS5iYXNlLXN1Yntmb250LXNpemU6MTMuNXB4O2NvbG9yOnJnYmEoMTQ4LDE2MywxODQsLjc1KTtsaW5lLWhlaWdodDoxLjY1O21hcmdpbi1ib3R0b206MTZweH0uYmFzZS1mbG93LWJhbm5lcnttYXJnaW4tYm90dG9tOjE4cHh9LmJhc2UtZmxvdy1iYWRnZXtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4O2JhY2tncm91bmQ6cmdiYSg5OSwxMDIsMjQxLC4xMSk7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDEyOSwxNDAsMjQ4LC4yMik7Ym9yZGVyLXJhZGl1czo5OTlweDtwYWRkaW5nOjdweCAxNHB4IDdweCAxMHB4O21hcmdpbi1ib3R0b206OHB4fS5iYXNlLWZsb3ctYmFkZ2Uud2FybXtiYWNrZ3JvdW5kOnJnYmEoMjUxLDE5MSwzNiwuMDgpO2JvcmRlci1jb2xvcjpyZ2JhKDI1MSwxOTEsMzYsLjI4KX0uYmFzZS1mYi1nbG93e3dpZHRoOjhweDtoZWlnaHQ6OHB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEzNWRlZyx2YXIoLS1iYXNlLWFmKSx2YXIoLS1iYXNlLWF0KSk7Ym94LXNoYWRvdzowIDAgMTBweCByZ2JhKDEyOSwxNDAsMjQ4LC42NSk7ZmxleC1zaHJpbms6MDthbmltYXRpb246YmFzZUZiUHVsc2UgMnMgZWFzZS1pbi1vdXQgaW5maW5pdGV9LmJhc2UtZmxvdy1iYWRnZS53YXJtIC5iYXNlLWZiLWdsb3d7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCNmYmJmMjQsI2Y5NzMxNik7Ym94LXNoYWRvdzowIDAgMTBweCByZ2JhKDI1MSwxOTEsMzYsLjU1KX0uYmFzZS1mYi1sYWJlbHtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo2NTA7Y29sb3I6I2UyZThmMDtsZXR0ZXItc3BhY2luZzouMDJlbX0uYmFzZS1iYWNre2Rpc3BsYXk6aW5saW5lLWZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2dhcDo1cHg7YmFja2dyb3VuZDpub25lO2JvcmRlcjpub25lO2NvbG9yOnJnYmEoMTQ4LDE2MywxODQsLjQ1KTtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo1MDA7Y3Vyc29yOnBvaW50ZXI7bWFyZ2luLWJvdHRvbToxNnB4O3BhZGRpbmc6MDt0cmFuc2l0aW9uOmNvbG9yIC4xNXN9LmJhc2UtYmFjazpob3Zlcntjb2xvcjpyZ2JhKDE0OCwxNjMsMTg0LC44NSl9LmJhc2UtZG90c3tkaXNwbGF5OmZsZXg7Z2FwOjdweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO21hcmdpbjoxMnB4IDAgMTRweH0uYmFzZS1kb3R7d2lkdGg6OHB4O2hlaWdodDo4cHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZDpyZ2JhKDk5LDEwMiwyNDEsLjIyKTtib3JkZXI6MXB4IHNvbGlkIHJnYmEoOTksMTAyLDI0MSwuMik7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjI1cyxiYWNrZ3JvdW5kIC4yNXMsYm94LXNoYWRvdyAuMjVzfS5iYXNlLWRvdC5vbntiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzVkZWcsdmFyKC0tYmFzZS1hZiksdmFyKC0tYmFzZS1hdCkpO2JvcmRlci1jb2xvcjp0cmFuc3BhcmVudDt0cmFuc2Zvcm06c2NhbGUoMS4xNSk7Ym94LXNoYWRvdzowIDAgMTJweCByZ2JhKDk5LDEwMiwyNDEsLjQ1KX0uYmFzZS1kb3QuZG9uZXtiYWNrZ3JvdW5kOnJnYmEoNTIsMjExLDE1MywuMzUpO2JvcmRlci1jb2xvcjpyZ2JhKDUyLDIxMSwxNTMsLjQ1KTtib3gtc2hhZG93OjAgMCA4cHggcmdiYSg1MiwyMTEsMTUzLC4yNSl9LmJhc2UtYnRue3dpZHRoOjEwMCU7bWluLWhlaWdodDo1MnB4O2JvcmRlcjpub25lO2JvcmRlci1yYWRpdXM6OTk5cHg7Y3Vyc29yOnBvaW50ZXI7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiNmZmY7Zm9udC1mYW1pbHk6aW5oZXJpdDtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMzBkZWcsdmFyKC0tYmFzZS1hZikgMCx2YXIoLS1iYXNlLWF0KSAxMDAlKTtib3gtc2hhZG93OjAgNnB4IDI2cHggcmdiYSg5OSwxMDIsMjQxLC40MiksaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwyNTUsMjU1LC4xNik7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVuO3RyYW5zaXRpb246dHJhbnNmb3JtIC4xMnMsYm94LXNoYWRvdyAuMTVzLG9wYWNpdHkgLjE1c30uYmFzZS1idG46YWZ0ZXJ7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTtpbnNldDowO2JvcmRlci1yYWRpdXM6aW5oZXJpdDtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxODBkZWcscmdiYSgyNTUsMjU1LDI1NSwuMTIpLHRyYW5zcGFyZW50IDYwJSk7cG9pbnRlci1ldmVudHM6bm9uZX0uYmFzZS1idG46aG92ZXI6bm90KDpkaXNhYmxlZCl7dHJhbnNmb3JtOnRyYW5zbGF0ZVkoLTFweCk7Ym94LXNoYWRvdzowIDEwcHggMzZweCByZ2JhKDk5LDEwMiwyNDEsLjUyKSxpbnNldCAwIDFweCAwIHJnYmEoMjU1LDI1NSwyNTUsLjE2KX0uYmFzZS1idG46YWN0aXZlOm5vdCg6ZGlzYWJsZWQpe3RyYW5zZm9ybTpzY2FsZSguOTc1KX0uYmFzZS1idG46ZGlzYWJsZWR7b3BhY2l0eTouMzI7Y3Vyc29yOm5vdC1hbGxvd2VkO3RyYW5zZm9ybTpub25lfS5iYXNlLWJ0bi1sZ3ttaW4taGVpZ2h0OjU0cHg7Zm9udC1zaXplOjE1LjVweH0uYmFzZS1idG4tc2hpbW1lcjpiZWZvcmV7Y29udGVudDoiIjtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0Oi00MCU7d2lkdGg6NDUlO2hlaWdodDoxMDAlO2JhY2tncm91bmQ6bGluZWFyLWdyYWRpZW50KDEwNWRlZyx0cmFuc3BhcmVudCxyZ2JhKDI1NSwyNTUsMjU1LC4yMiksdHJhbnNwYXJlbnQpO2FuaW1hdGlvbjpiYXNlU2hlZW4gMy4ycyBlYXNlLWluLW91dCBpbmZpbml0ZX0uYmFzZS10Zy1jb250YWN0e21hcmdpbi10b3A6MTRweH0uYmFzZS10Zy1idG5ze2Rpc3BsYXk6ZmxleDtmbGV4LWRpcmVjdGlvbjpjb2x1bW47Z2FwOjEwcHh9LmJhc2UtdGctbWFudWFse2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnJnYmEoMTI5LDE0MCwyNDgsLjgyKTtiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50ZXI7cGFkZGluZzo4cHg7dGV4dC1hbGlnbjpjZW50ZXI7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt0ZXh0LXVuZGVybGluZS1vZmZzZXQ6M3B4O3RyYW5zaXRpb246Y29sb3IgLjEzc30uYmFzZS10Zy1tYW51YWw6aG92ZXJ7Y29sb3I6I2E1YjRmY30uYmFzZS1tYW51YWwtcGhvbmV7bWFyZ2luLXRvcDoxNHB4fS5iYXNlLXBme2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wNCk7Ym9yZGVyOjEuNXB4IHNvbGlkIHJnYmEoOTksMTAyLDI0MSwuMTgpO2JvcmRlci1yYWRpdXM6MTRweDtoZWlnaHQ6NTRweDtvdmVyZmxvdzpoaWRkZW47dHJhbnNpdGlvbjpib3JkZXItY29sb3IgLjE4cyxib3gtc2hhZG93IC4xOHN9LmJhc2UtcGY6Zm9jdXMtd2l0aGlue2JvcmRlci1jb2xvcjpyZ2JhKDk5LDEwMiwyNDEsLjY1KTtib3gtc2hhZG93OjAgMCAwIDMuNXB4IHJnYmEoOTksMTAyLDI0MSwuMTIpfS5iYXNlLXBmLmVycntib3JkZXItY29sb3I6cmdiYSgyMzksNjgsNjgsLjU1KSFpbXBvcnRhbnQ7Ym94LXNoYWRvdzowIDAgMCAzcHggcmdiYSgyMzksNjgsNjgsLjEpIWltcG9ydGFudDthbmltYXRpb246YmFzZVNoYWtlIC4zMnN9LmJhc2UtcGYtcHJle2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjZweDtwYWRkaW5nOjAgOHB4IDAgMTNweDtoZWlnaHQ6MTAwJTtmbGV4LXNocmluazowO2N1cnNvcjpwb2ludGVyO2JhY2tncm91bmQ6bm9uZTtib3JkZXI6bm9uZTtib3JkZXItcmlnaHQ6MXB4IHNvbGlkIHJnYmEoOTksMTAyLDI0MSwuMTQpO3RyYW5zaXRpb246YmFja2dyb3VuZCAuMTNzfS5iYXNlLXBmLXByZTpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoOTksMTAyLDI0MSwuMDYpfS5iYXNlLXBmLWNvZGV7Zm9udC1zaXplOjE1cHg7Zm9udC13ZWlnaHQ6NjAwO2NvbG9yOnJnYmEoMjI2LDIzMiwyNDAsLjkpfS5iYXNlLXBmLWlucHtmbGV4OjE7bWluLXdpZHRoOjA7aGVpZ2h0OjEwMCU7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6bm9uZTtvdXRsaW5lOm5vbmU7cGFkZGluZzowIDEzcHg7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6MTZweDtjb2xvcjojZTJlOGYwfS5iYXNlLXBmLWlucDo6cGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSgxMDAsMTE2LDEzOSwuNil9LmJhc2UtY291bnRyeS1tZW51e2JhY2tncm91bmQ6IzBlMTAyMjtib3JkZXI6MXB4IHNvbGlkIHJnYmEoOTksMTAyLDI0MSwuMTgpO2JvcmRlci1yYWRpdXM6MTRweDtib3gtc2hhZG93OjAgMTZweCA0MHB4IHJnYmEoMCwwLDAsLjU1KX0uYmFzZS1jb3VudHJ5LXJvd3t3aWR0aDoxMDAlO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEycHg7cGFkZGluZzoxMnB4IDE0cHg7YmFja2dyb3VuZDpub25lO2JvcmRlcjpub25lO2N1cnNvcjpwb2ludGVyO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOjE0cHg7Y29sb3I6I2UyZThmMDt0ZXh0LWFsaWduOmxlZnQ7dHJhbnNpdGlvbjpiYWNrZ3JvdW5kIC4xMnN9LmJhc2UtY291bnRyeS1yb3cub24sLmJhc2UtY291bnRyeS1yb3c6aG92ZXJ7YmFja2dyb3VuZDpyZ2JhKDk5LDEwMiwyNDEsLjA4KX0uYmFzZS1jb3VudHJ5LWRpYWx7Zm9udC1zaXplOjEzcHg7Y29sb3I6cmdiYSgxMDAsMTE2LDEzOSwuNyk7Zm9udC13ZWlnaHQ6NjAwfS5iYXNlLXBob25lLW1ldGVye21hcmdpbi10b3A6MTBweDtjb2xvcjpyZ2JhKDE2NSwxODAsMjUyLC44OCk7bWluLWhlaWdodDoxLjM1ZW19LmJhc2UtY29kZS1tZXRlciwuYmFzZS1waG9uZS1tZXRlcntmb250LXNpemU6MTNweDtmb250LXdlaWdodDo2MDA7dGV4dC1hbGlnbjpjZW50ZXJ9LmJhc2UtY29kZS1tZXRlcntjb2xvcjpyZ2JhKDE0OCwxNjMsMTg0LC45KTttYXJnaW46NHB4IDAgMTJweH0uYmFzZS1jb2RlLWludHJve2ZvbnQtc2l6ZToxNHB4O2NvbG9yOnJnYmEoMTQ4LDE2MywxODQsLjg4KTttYXJnaW46MTJweCAwIDE0cHg7bGluZS1oZWlnaHQ6MS41NTt0ZXh0LWFsaWduOmNlbnRlcn0uYmFzZS1jb2RlLWludHJvIHN0cm9uZ3tjb2xvcjpyZ2JhKDE4NiwyMDAsMjUyLC45NSk7Zm9udC13ZWlnaHQ6NjUwfS5iYXNlLW1zZ3tib3JkZXItcmFkaXVzOjExcHg7Zm9udC1zaXplOjEyLjVweDtmb250LXdlaWdodDo1MDA7cGFkZGluZzo5cHggMTNweDtsaW5lLWhlaWdodDoxLjU7bWFyZ2luLXRvcDo4cHg7YmFja2dyb3VuZDpyZ2JhKDIzOSw2OCw2OCwuMDgpO2NvbG9yOiNmZGE0YTQ7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDIzOSw2OCw2OCwuMTgpfS5iYXNlLXRydXN0e21hcmdpbi10b3A6MThweDtwYWRkaW5nOjEycHggMTRweDtib3JkZXItcmFkaXVzOjE0cHg7Zm9udC1zaXplOjEyLjVweDtsaW5lLWhlaWdodDoxLjU1O2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O2dhcDoxMHB4O2JhY2tncm91bmQ6cmdiYSg5OSwxMDIsMjQxLC4wNik7Ym9yZGVyOjFweCBzb2xpZCByZ2JhKDk5LDEwMiwyNDEsLjE0KTtjb2xvcjpyZ2JhKDE4NiwyMDAsMjUyLC44OCl9LmJhc2UtY29kZS1yb3d7Z2FwOjhweDttYXJnaW46NnB4IDAgNHB4fS5iYXNlLWNvZGUtYm94LC5iYXNlLWNvZGUtcm93e2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyfS5iYXNlLWNvZGUtYm94e3dpZHRoOjQ0cHg7aGVpZ2h0OjU0cHg7YWxpZ24taXRlbXM6Y2VudGVyO2ZvbnQtc2l6ZToyNnB4O2ZvbnQtd2VpZ2h0OjcwMDtib3JkZXItcmFkaXVzOjE0cHg7YmFja2dyb3VuZDpyZ2JhKDE1LDE4LDQwLC44KTtib3JkZXI6MS41cHggc29saWQgcmdiYSg5OSwxMDIsMjQxLC4xOCk7Y29sb3I6cmdiYSgxMDAsMTE2LDEzOSwuMzUpO3RyYW5zaXRpb246Y29sb3IgLjE0cyxib3JkZXItY29sb3IgLjE0cyxiYWNrZ3JvdW5kIC4xNHMsdHJhbnNmb3JtIC4xMnN9LmJhc2UtY29kZS1ib3guZmlsbGVke2NvbG9yOiNlMmU4ZjA7Ym9yZGVyLWNvbG9yOnJnYmEoOTksMTAyLDI0MSwuNik7YmFja2dyb3VuZDpyZ2JhKDk5LDEwMiwyNDEsLjA5KTt0cmFuc2Zvcm06c2NhbGUoMS4wMil9LmJhc2UtY29kZS1ib3guYWN0aXZle2JvcmRlci1jb2xvcjpyZ2JhKDk5LDEwMiwyNDEsLjk1KTtiYWNrZ3JvdW5kOnJnYmEoOTksMTAyLDI0MSwuMDkpO2FuaW1hdGlvbjpiYXNlQ2FyZXRHbG93IDEuMTVzIGVhc2UtaW4tb3V0IGluZmluaXRlfS5iYXNlLWNvZGUtcm93LmVyciAuYmFzZS1jb2RlLWJveHtib3JkZXItY29sb3I6cmdiYSgyMzksNjgsNjgsLjY1KSFpbXBvcnRhbnQ7YmFja2dyb3VuZDpyZ2JhKDIzOSw2OCw2OCwuMDcpIWltcG9ydGFudDtjb2xvcjpyZ2JhKDI1MiwxNjUsMTY1LC45KSFpbXBvcnRhbnQ7YW5pbWF0aW9uOmJhc2VTaGFrZSAuMzVzfS5iYXNlLW51bXBhZHtkaXNwbGF5OmdyaWQ7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOnJlcGVhdCgzLDFmcik7Z2FwOjhweDttYXJnaW4tdG9wOjZweH0uYmFzZS1ucHtoZWlnaHQ6NTBweDtib3JkZXItcmFkaXVzOjE0cHg7Ym9yZGVyOjEuNXB4IHNvbGlkIHJnYmEoOTksMTAyLDI0MSwuMTQpO2JhY2tncm91bmQ6cmdiYSgxNSwxOCw0MCwuOCk7Y29sb3I6I2UyZThmMDtmb250LXNpemU6MjFweDtmb250LXdlaWdodDo2MDA7Zm9udC1mYW1pbHk6aW5oZXJpdDtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjFzLHRyYW5zZm9ybSAuMDhzLGJvcmRlci1jb2xvciAuMTJzfS5iYXNlLW5wOmhvdmVye2JhY2tncm91bmQ6cmdiYSg5OSwxMDIsMjQxLC4xKTtib3JkZXItY29sb3I6cmdiYSg5OSwxMDIsMjQxLC4yOCl9LmJhc2UtbnA6YWN0aXZle2JhY2tncm91bmQ6cmdiYSg5OSwxMDIsMjQxLC4yKTtib3JkZXItY29sb3I6cmdiYSg5OSwxMDIsMjQxLC41NSk7dHJhbnNmb3JtOnNjYWxlKC45Mil9LmJhc2UtYnRuLWhlbHB7d2lkdGg6MTAwJTttaW4taGVpZ2h0OjQ4cHg7bWFyZ2luLXRvcDo4cHg7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2dhcDoxMHB4O2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NjUwO2NvbG9yOiNjN2QyZmU7YmFja2dyb3VuZDpyZ2JhKDk5LDEwMiwyNDEsLjEyKTtib3JkZXI6MS41cHggc29saWQgcmdiYSgxMjksMTQwLDI0OCwuMzUpO2JvcmRlci1yYWRpdXM6MTZweDtjdXJzb3I6cG9pbnRlcjt0cmFuc2l0aW9uOmJhY2tncm91bmQgLjE4cyxib3JkZXItY29sb3IgLjE4cyx0cmFuc2Zvcm0gLjE0c30uYmFzZS1idG4taGVscDpob3ZlcntiYWNrZ3JvdW5kOnJnYmEoOTksMTAyLDI0MSwuMik7Ym9yZGVyLWNvbG9yOnJnYmEoMTY1LDE4MCwyNTIsLjU1KX0uYmFzZS1idG4taGVscDphY3RpdmV7dHJhbnNmb3JtOnNjYWxlKC45ODIpfS5iYXNlLXJlc2VuZC1yb3d7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjttaW4taGVpZ2h0OjIycHg7bWFyZ2luLXRvcDoxNHB4O3BhZGRpbmctdG9wOjEycHg7Ym9yZGVyLXRvcDoxcHggc29saWQgcmdiYSg5OSwxMDIsMjQxLC4xKX0uYmFzZS10aW1lcntmb250LXNpemU6MTJweDtjb2xvcjpyZ2JhKDEwMCwxMTYsMTM5LC43KX0uYmFzZS1yZXNlbmQtYnRuLC5iYXNlLXRpbWVyIGJ7Y29sb3I6cmdiYSgxMjksMTQwLDI0OCwuOSl9LmJhc2UtcmVzZW5kLWJ0bntmb250LWZhbWlseTppbmhlcml0O2ZvbnQtc2l6ZToxMnB4O2ZvbnQtd2VpZ2h0OjYwMDtiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7Y3Vyc29yOnBvaW50ZXI7cGFkZGluZzowO3RyYW5zaXRpb246Y29sb3IgLjEzc30uYmFzZS1yZXNlbmQtYnRuOmhvdmVyOm5vdCg6ZGlzYWJsZWQpe2NvbG9yOiNhNWI0ZmN9LmJhc2UtcmVzZW5kLWJ0bjpkaXNhYmxlZHtvcGFjaXR5Oi4zO2N1cnNvcjpub3QtYWxsb3dlZH0uYmFzZS1wdy1yb3d7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOnN0cmV0Y2g7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC4wNCk7Ym9yZGVyOjEuNXB4IHNvbGlkIHJnYmEoOTksMTAyLDI0MSwuMTgpO2JvcmRlci1yYWRpdXM6MTRweDttaW4taGVpZ2h0OjU0cHg7b3ZlcmZsb3c6aGlkZGVuO21hcmdpbi10b3A6MTRweDt0cmFuc2l0aW9uOmJvcmRlci1jb2xvciAuMThzLGJveC1zaGFkb3cgLjE4c30uYmFzZS1wdy1yb3c6Zm9jdXMtd2l0aGlue2JvcmRlci1jb2xvcjpyZ2JhKDk5LDEwMiwyNDEsLjY1KTtib3gtc2hhZG93OjAgMCAwIDMuNXB4IHJnYmEoOTksMTAyLDI0MSwuMTIpfS5iYXNlLXB3LWlucHtmbGV4OjE7bWluLXdpZHRoOjA7aGVpZ2h0OjU0cHg7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtib3JkZXI6bm9uZTtvdXRsaW5lOm5vbmU7cGFkZGluZzowIDE0cHg7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXNpemU6MTZweDtjb2xvcjojZTJlOGYwfS5iYXNlLXB3LWlucDo6cGxhY2Vob2xkZXJ7Y29sb3I6cmdiYSgxMDAsMTE2LDEzOSwuNil9LmJhc2UtbGQtd3JhcHt0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nOjhweCAwIDRweH0uYmFzZS1sZC1yaW5ne3dpZHRoOjc2cHg7aGVpZ2h0Ojc2cHg7cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luOjAgYXV0byAyMnB4fS5iYXNlLWxkLXJpbmctdHJhY2t7cG9zaXRpb246YWJzb2x1dGU7aW5zZXQ6MDtib3JkZXItcmFkaXVzOjUwJTtib3JkZXI6M3B4IHNvbGlkIHJnYmEoOTksMTAyLDI0MSwuMSl9LmJhc2UtbGQtcmluZy1zcGlue3Bvc2l0aW9uOmFic29sdXRlO2luc2V0OjA7Ym9yZGVyLXJhZGl1czo1MCU7Ym9yZGVyLWxlZnQ6M3B4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1ib3R0b206M3B4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci10b3A6M3B4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci10b3AtY29sb3I6dmFyKC0tYmFzZS1hZik7Ym9yZGVyLXJpZ2h0OjNweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmlnaHQtY29sb3I6dmFyKC0tYmFzZS1hdCk7YW5pbWF0aW9uOmJhc2VTcGluIDFzIGN1YmljLWJlemllciguNCwwLC4yLDEpIGluZmluaXRlfS5iYXNlLWxkLWRvdHN7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7Z2FwOjZweDttYXJnaW4tdG9wOjE4cHh9LmJhc2UtbGQtZG90cyBzcGFue3dpZHRoOjdweDtoZWlnaHQ6N3B4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6cmdiYSg5OSwxMDIsMjQxLC41KTthbmltYXRpb246YmFzZURvdFB1bHNlIDEuNHMgZWFzZS1pbi1vdXQgaW5maW5pdGV9LmJhc2UtbGQtZG90cyBzcGFuOm50aC1jaGlsZCgyKXthbmltYXRpb24tZGVsYXk6LjIycztiYWNrZ3JvdW5kOnJnYmEoMTI5LDE0MCwyNDgsLjUpfS5iYXNlLWxkLWRvdHMgc3BhbjpudGgtY2hpbGQoMyl7YW5pbWF0aW9uLWRlbGF5Oi40NHM7YmFja2dyb3VuZDpyZ2JhKDE2NSwxODAsMjUyLC41KX0uYmFzZS1zdWNjZXNzLWljb3t3aWR0aDo3MnB4O2hlaWdodDo3MnB4O2JvcmRlci1yYWRpdXM6NTAlO21hcmdpbjowIGF1dG8gMThweDtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Zm9udC1zaXplOjM0cHg7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTQ1ZGVnLHZhcigtLWJhc2UtYWYpLHZhcigtLWJhc2UtYXQpKTtib3gtc2hhZG93OjAgOHB4IDI4cHggcmdiYSg5OSwxMDIsMjQxLC40NSl9LmJhc2UtaGVscC1vdmVybGF5e3Bvc2l0aW9uOmZpeGVkO2luc2V0OjA7YmFja2dyb3VuZDpyZ2JhKDYsOCwyMCwuNzIpO2JhY2tkcm9wLWZpbHRlcjpibHVyKDhweCk7LXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6Ymx1cig4cHgpO2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpmbGV4LWVuZDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3otaW5kZXg6NTA7YW5pbWF0aW9uOmJhc2VGYWRlSW4gLjIycyBlYXNlfS5iYXNlLWhlbHAtc2hlZXR7d2lkdGg6MTAwJTttYXgtd2lkdGg6NDQwcHg7YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQoMTgwZGVnLHJnYmEoMjIsMjYsNTIsLjk4KSxyZ2JhKDE0LDE2LDM0LC45OSkpO2JvcmRlci1yYWRpdXM6MjJweCAyMnB4IDAgMDtwYWRkaW5nOjEwcHggMjBweCBjYWxjKDIycHggKyBlbnYoc2FmZS1hcmVhLWluc2V0LWJvdHRvbSkpO2JvcmRlcjoxcHggc29saWQgcmdiYSg5OSwxMDIsMjQxLC4yMik7YW5pbWF0aW9uOmJhc2VTaGVldFVwIC4zNHMgY3ViaWMtYmV6aWVyKC4zNCwxLjEyLC41NiwxKSBib3RoO2JveC1zaGFkb3c6MCAtMTJweCA0OHB4IHJnYmEoMCwwLDAsLjU1KX0uYmFzZS1oZWxwLWdyYWJiZXJ7d2lkdGg6MzhweDtoZWlnaHQ6NHB4O2JhY2tncm91bmQ6cmdiYSg5OSwxMDIsMjQxLC4zNSk7Ym9yZGVyLXJhZGl1czoycHg7bWFyZ2luOjRweCBhdXRvIDE0cHh9LmJhc2UtaGVscC1zdGVwe2Rpc3BsYXk6ZmxleDtnYXA6MTJweDttYXJnaW4tYm90dG9tOjE0cHh9LmJhc2UtaGVscC1udW17d2lkdGg6MjhweDtoZWlnaHQ6MjhweDtib3JkZXItcmFkaXVzOjEwcHg7YmFja2dyb3VuZDpyZ2JhKDk5LDEwMiwyNDEsLjIyKTtib3JkZXI6MXB4IHNvbGlkIHJnYmEoMTI5LDE0MCwyNDgsLjM1KTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2p1c3RpZnktY29udGVudDpjZW50ZXI7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6NzUwO2NvbG9yOiNjN2QyZmU7ZmxleC1zaHJpbms6MH0uYmFzZS1oZWxwLXN0ZXAgcHttYXJnaW46MDtmb250LXNpemU6MTRweDtsaW5lLWhlaWdodDoxLjYyO2NvbG9yOnJnYmEoMjAzLDIxMywyNDUsLjg4KX1AbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246cmVkdWNlKXsuYmFzZS1idG4tc2hpbW1lcjpiZWZvcmUsLmJhc2UtY2FyZCwuYmFzZS1jb2RlLWJveC5hY3RpdmUsLmJhc2UtZmItZ2xvdywuYmFzZS1oZWxwLW92ZXJsYXksLmJhc2UtaGVscC1zaGVldCwuYmFzZS1wYW5le2FuaW1hdGlvbjpub25lIWltcG9ydGFudDt0cmFuc2l0aW9uOm5vbmUhaW1wb3J0YW50fS5iYXNlLWJ0bi1zaGltbWVyOmJlZm9yZXtkaXNwbGF5Om5vbmV9fS5iYXNlLWxpdGUgLmJhc2UtY2FyZHtiYWNrZHJvcC1maWx0ZXI6bm9uZTstd2Via2l0LWJhY2tkcm9wLWZpbHRlcjpub25lO2JhY2tncm91bmQ6cmdiYSgxMCwxMywzMiwuOTgpO2FuaW1hdGlvbjpub25lfS5iYXNlLWxpdGUgLmJhc2UtcGFuZXthbmltYXRpb246YmFzZVBhbmVJbiAuMTJzIGVhc2Utb3V0IGJvdGh9LmJhc2UtbGl0ZSAuYmFzZS1idG4tc2hpbW1lcjpiZWZvcmUsLmJhc2UtbGl0ZSAuYmFzZS1mYi1nbG93LC5iYXNlLWxpdGUgLmJhc2UtbGQtZG90cyBzcGFue2FuaW1hdGlvbjpub25lIWltcG9ydGFudH0uYmFzZS1saXRlIC5iYXNlLWNvZGUtYm94LmFjdGl2ZXthbmltYXRpb246bm9uZTtib3gtc2hhZG93OjAgMCAwIDNweCByZ2JhKDk5LDEwMiwyNDEsLjIyKX0uYmFzZS1saXRlIC5iYXNlLWJnLXBob3Rve2ZpbHRlcjpub25lO29wYWNpdHk6LjI4fS5iYXNlLWxpdGUgLmJhc2UtaGVscC1vdmVybGF5e2JhY2tkcm9wLWZpbHRlcjpub25lOy13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOm5vbmU7YmFja2dyb3VuZDpyZ2JhKDYsOCwyMCwuOTIpfS5iYXNlLWxpdGUgLmJhc2UtbnA6YWN0aXZle3RyYW5zZm9ybTpub25lfS5iYXNlLWxpdGUgLmJhc2UtYnRuOmFjdGl2ZTpub3QoOmRpc2FibGVkKXt0cmFuc2Zvcm06c2NhbGUoLjk4KX0uYmFzZS1saXRlIC5iYXNlLWJ0bjpob3Zlcjpub3QoOmRpc2FibGVkKXt0cmFuc2Zvcm06bm9uZX1AbWVkaWEgKG1heC13aWR0aDozNjBweCl7LmJhc2UtY2FyZHtwYWRkaW5nOjIwcHggMTZweH0uYmFzZS1jb2RlLWJveHt3aWR0aDo0MHB4O2hlaWdodDo1MHB4O2ZvbnQtc2l6ZToyM3B4fS5iYXNlLWJ0bnttaW4taGVpZ2h0OjQ4cHg7Zm9udC1zaXplOjE0cHh9LmJhc2UtbnB7aGVpZ2h0OjQ2cHg7Zm9udC1zaXplOjE5cHh9fQ=="}},"time_used":122,"timings":{"blocked":-1,"dns":0,"connect":24,"send":0,"wait":49,"receive":21,"ssl":27},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"maxvectornew.com/_next/static/chunks/webpack-209fb78b7e72954e.js","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://maxvectornew.com/t/1c8a8","date":"2026-07-26T17:18:27.374Z","timestamp":1785086307374,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"maxvectornew.com","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Jul 2026 17:54:44 GMT","end":"Fri, 23 Oct 2026 17:54:43 GMT"},"fingerprint":{"sha1":"3B:96:C0:C6:0F:0B:DE:CC:96:A0:22:3D:32:F5:17:2C:CD:5C:51:6B","sha256":"D3:F9:21:6A:45:1A:9A:BA:92:79:1E:6E:03:85:1A:0C:B8:AD:05:18:FA:FC:60:41:98:38:87:32:B5:B9:EA:D1"}}},"request":{"raw":"GET /_next/static/chunks/webpack-209fb78b7e72954e.js HTTP/1.1\r\nHost: maxvectornew.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://maxvectornew.com/t/1c8a8\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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/1.1 200 OK\r\nServer: nginx/1.27.5\r\nDate: Sun, 26 Jul 2026 17:18:27 GMT\r\nContent-Type: text/javascript; charset=utf-8\r\nContent-Length: 3414\r\nConnection: keep-alive\r\nAccept-Ranges: bytes\r\nCache-Control: public, max-age=31536000, immutable\r\nLast-Modified: Sat, 25 Jul 2026 20:35:12 GMT\r\nETag: W/\"d56-19f9afd327f\"\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx:1.27.5","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":3414,"size_decoded":3731,"mime_type":"text/javascript; charset=utf-8","magic":"JavaScript source, ASCII text, with very long lines (3414), with no line terminators","md5":"970b24335ded07ed2b9d9965627b59f9","sha1":"a428246c1401b6c7cb1f64163a05ad39256a23be","sha256":"1f5fb0826310f4a40fb1153c45e0da9e841b43d3b25085d91cc2e5a7ecf29db7","sha512":"f5c3a06a666afcf12ea9346988f083d93cd64689d0e688f0d47e4bbe27aa6b8ea4be252be53efe3d5dbe66334914d6e28f08aa06e8c769e88ad186aaeb191b22","ssdeep":"","tlshash":"d96195a93625fab556f108c5487fc142f619603b051afce0e717dcb9b464aa10562ff3","first_seen":"2026-07-21T19:09:14.334415Z","last_seen":"2026-07-26T17:20:04.018511Z","times_seen":5,"resource_available":true,"data":"KCgpPT57InVzZSBzdHJpY3QiO3ZhciBlPXt9LHQ9e307ZnVuY3Rpb24gcihvKXt2YXIgbj10W29dO2lmKHZvaWQgMCE9PW4pcmV0dXJuIG4uZXhwb3J0czt2YXIgYT10W29dPXtleHBvcnRzOnt9fSxpPSEwO3RyeXtlW29dKGEsYS5leHBvcnRzLHIpLGk9ITF9ZmluYWxseXtpJiZkZWxldGUgdFtvXX1yZXR1cm4gYS5leHBvcnRzfXIubT1lLCgoKT0+e3ZhciBlPVtdO3IuTz0odCxvLG4sYSk9PntpZihvKXthPWF8fDA7Zm9yKHZhciBpPWUubGVuZ3RoO2k+MCYmZVtpLTFdWzJdPmE7aS0tKWVbaV09ZVtpLTFdO2VbaV09W28sbixhXTtyZXR1cm59Zm9yKHZhciB1PTEvMCxpPTA7aTxlLmxlbmd0aDtpKyspe2Zvcih2YXJbbyxuLGFdPWVbaV0sbD0hMCxjPTA7YzxvLmxlbmd0aDtjKyspKCExJmF8fHU+PWEpJiZPYmplY3Qua2V5cyhyLk8pLmV2ZXJ5KGU9PnIuT1tlXShvW2NdKSk/by5zcGxpY2UoYy0tLDEpOihsPSExLGE8dSYmKHU9YSkpO2lmKGwpe2Uuc3BsaWNlKGktLSwxKTt2YXIgZD1uKCk7dm9pZCAwIT09ZCYmKHQ9ZCl9fXJldHVybiB0fX0pKCksci5uPWU9Pnt2YXIgdD1lJiZlLl9fZXNNb2R1bGU/KCk9PmUuZGVmYXVsdDooKT0+ZTtyZXR1cm4gci5kKHQse2E6dH0pLHR9LCgoKT0+e3ZhciBlLHQ9T2JqZWN0LmdldFByb3RvdHlwZU9mP2U9Pk9iamVjdC5nZXRQcm90b3R5cGVPZihlKTplPT5lLl9fcHJvdG9fXztyLnQ9ZnVuY3Rpb24obyxuKXtpZigxJm4mJihvPXRoaXMobykpLDgmbnx8Im9iamVjdCI9PXR5cGVvZiBvJiZvJiYoNCZuJiZvLl9fZXNNb2R1bGV8fDE2Jm4mJiJmdW5jdGlvbiI9PXR5cGVvZiBvLnRoZW4pKXJldHVybiBvO3ZhciBhPU9iamVjdC5jcmVhdGUobnVsbCk7ci5yKGEpO3ZhciBpPXt9O2U9ZXx8W251bGwsdCh7fSksdChbXSksdCh0KV07Zm9yKHZhciB1PTImbiYmbzsib2JqZWN0Ij09dHlwZW9mIHUmJiF+ZS5pbmRleE9mKHUpO3U9dCh1KSlPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh1KS5mb3JFYWNoKGU9PmlbZV09KCk9Pm9bZV0pO3JldHVybiBpLmRlZmF1bHQ9KCk9Pm8sci5kKGEsaSksYX19KSgpLHIuZD0oZSx0KT0+e2Zvcih2YXIgbyBpbiB0KXIubyh0LG8pJiYhci5vKGUsbykmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG8se2VudW1lcmFibGU6ITAsZ2V0OnRbb119KX0sci5mPXt9LHIuZT1lPT5Qcm9taXNlLmFsbChPYmplY3Qua2V5cyhyLmYpLnJlZHVjZSgodCxvKT0+KHIuZltvXShlLHQpLHQpLFtdKSksci51PWU9Pnt9LHIubWluaUNzc0Y9ZT0+e30sci5nPWZ1bmN0aW9uKCl7aWYoIm9iamVjdCI9PXR5cGVvZiBnbG9iYWxUaGlzKXJldHVybiBnbG9iYWxUaGlzO3RyeXtyZXR1cm4gdGhpc3x8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKX1jYXRjaChlKXtpZigib2JqZWN0Ij09dHlwZW9mIHdpbmRvdylyZXR1cm4gd2luZG93fX0oKSxyLm89KGUsdCk9Pk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpLCgoKT0+e3ZhciBlPXt9LHQ9Il9OX0U6IjtyLmw9KG8sbixhLGkpPT57aWYoZVtvXSlyZXR1cm4gdm9pZCBlW29dLnB1c2gobik7aWYodm9pZCAwIT09YSlmb3IodmFyIHUsbCxjPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKSxkPTA7ZDxjLmxlbmd0aDtkKyspe3ZhciBmPWNbZF07aWYoZi5nZXRBdHRyaWJ1dGUoInNyYyIpPT1vfHxmLmdldEF0dHJpYnV0ZSgiZGF0YS13ZWJwYWNrIik9PXQrYSl7dT1mO2JyZWFrfX11fHwobD0hMCwodT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSkuY2hhcnNldD0idXRmLTgiLHUudGltZW91dD0xMjAsci5uYyYmdS5zZXRBdHRyaWJ1dGUoIm5vbmNlIixyLm5jKSx1LnNldEF0dHJpYnV0ZSgiZGF0YS13ZWJwYWNrIix0K2EpLHUuc3JjPXIudHUobykpLGVbb109W25dO3ZhciBzPSh0LHIpPT57dS5vbmVycm9yPXUub25sb2FkPW51bGwsY2xlYXJUaW1lb3V0KHApO3ZhciBuPWVbb107aWYoZGVsZXRlIGVbb10sdS5wYXJlbnROb2RlJiZ1LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodSksbiYmbi5mb3JFYWNoKGU9PmUocikpLHQpcmV0dXJuIHQocil9LHA9c2V0VGltZW91dChzLmJpbmQobnVsbCx2b2lkIDAse3R5cGU6InRpbWVvdXQiLHRhcmdldDp1fSksMTJlNCk7dS5vbmVycm9yPXMuYmluZChudWxsLHUub25lcnJvciksdS5vbmxvYWQ9cy5iaW5kKG51bGwsdS5vbmxvYWQpLGwmJmRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodSl9fSkoKSxyLnI9ZT0+eyJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6Ik1vZHVsZSJ9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSl9LCgoKT0+e3ZhciBlO3IudHQ9KCk9Pih2b2lkIDA9PT1lJiYoZT17Y3JlYXRlU2NyaXB0VVJMOmU9PmV9LCJ1bmRlZmluZWQiIT10eXBlb2YgdHJ1c3RlZFR5cGVzJiZ0cnVzdGVkVHlwZXMuY3JlYXRlUG9saWN5JiYoZT10cnVzdGVkVHlwZXMuY3JlYXRlUG9saWN5KCJuZXh0anMjYnVuZGxlciIsZSkpKSxlKX0pKCksci50dT1lPT5yLnR0KCkuY3JlYXRlU2NyaXB0VVJMKGUpLHIucD0iL19uZXh0LyIsKCgpPT57dmFyIGU9ezY4OjAsNzQxOjAsOTUwOjB9O3IuZi5qPSh0LG8pPT57dmFyIG49ci5vKGUsdCk/ZVt0XTp2b2lkIDA7aWYoMCE9PW4paWYobilvLnB1c2goblsyXSk7ZWxzZSBpZigvXig2OHw3NDF8OTUwKSQvLnRlc3QodCkpZVt0XT0wO2Vsc2V7dmFyIGE9bmV3IFByb21pc2UoKHIsbyk9Pm49ZVt0XT1bcixvXSk7by5wdXNoKG5bMl09YSk7dmFyIGk9ci5wK3IudSh0KSx1PUVycm9yKCk7ci5sKGksbz0+e2lmKHIubyhlLHQpJiYoMCE9PShuPWVbdF0pJiYoZVt0XT12b2lkIDApLG4pKXt2YXIgYT1vJiYoImxvYWQiPT09by50eXBlPyJtaXNzaW5nIjpvLnR5cGUpLGk9byYmby50YXJnZXQmJm8udGFyZ2V0LnNyYzt1Lm1lc3NhZ2U9IkxvYWRpbmcgY2h1bmsgIit0KyIgZmFpbGVkLlxuKCIrYSsiOiAiK2krIikiLHUubmFtZT0iQ2h1bmtMb2FkRXJyb3IiLHUudHlwZT1hLHUucmVxdWVzdD1pLG5bMV0odSl9fSwiY2h1bmstIit0LHQpfX0sci5PLmo9dD0+MD09PWVbdF07dmFyIHQ9KHQsbyk9Pnt2YXIgbixhLFtpLHUsbF09byxjPTA7aWYoaS5zb21lKHQ9PjAhPT1lW3RdKSl7Zm9yKG4gaW4gdSlyLm8odSxuKSYmKHIubVtuXT11W25dKTtpZihsKXZhciBkPWwocil9Zm9yKHQmJnQobyk7YzxpLmxlbmd0aDtjKyspYT1pW2NdLHIubyhlLGEpJiZlW2FdJiZlW2FdWzBdKCksZVthXT0wO3JldHVybiByLk8oZCl9LG89c2VsZi53ZWJwYWNrQ2h1bmtfTl9FPXNlbGYud2VicGFja0NodW5rX05fRXx8W107by5mb3JFYWNoKHQuYmluZChudWxsLDApKSxvLnB1c2g9dC5iaW5kKG51bGwsby5wdXNoLmJpbmQobykpfSkoKX0pKCk7"}},"time_used":76,"timings":{"blocked":-1,"dns":0,"connect":24,"send":0,"wait":25,"receive":0,"ssl":27},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"maxvectornew.com/_next/static/chunks/4bd1b696-c023c6e3521b1417.js","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://maxvectornew.com/t/1c8a8","date":"2026-07-26T17:18:27.379Z","timestamp":1785086307379,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"maxvectornew.com","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Jul 2026 17:54:44 GMT","end":"Fri, 23 Oct 2026 17:54:43 GMT"},"fingerprint":{"sha1":"3B:96:C0:C6:0F:0B:DE:CC:96:A0:22:3D:32:F5:17:2C:CD:5C:51:6B","sha256":"D3:F9:21:6A:45:1A:9A:BA:92:79:1E:6E:03:85:1A:0C:B8:AD:05:18:FA:FC:60:41:98:38:87:32:B5:B9:EA:D1"}}},"request":{"raw":"GET /_next/static/chunks/4bd1b696-c023c6e3521b1417.js HTTP/1.1\r\nHost: maxvectornew.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://maxvectornew.com/t/1c8a8\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/1.1 200 OK\r\nServer: nginx/1.27.5\r\nDate: Sun, 26 Jul 2026 17:18:27 GMT\r\nContent-Type: text/javascript; charset=utf-8\r\nContent-Length: 173019\r\nConnection: keep-alive\r\nAccept-Ranges: bytes\r\nCache-Control: public, max-age=31536000, immutable\r\nLast-Modified: Sat, 25 Jul 2026 20:35:12 GMT\r\nETag: W/\"2a3db-19f9afd327f\"\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx:1.27.5","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":173019,"size_decoded":173340,"mime_type":"text/javascript; charset=utf-8","magic":"JavaScript source, ASCII text, with very long lines (65536), with no line terminators","md5":"81cd3b2d7a933bcc456bfcdf03a6ba1f","sha1":"d2d83f54880bee55cee3e5bd30c9f02ad86c8f3f","sha256":"2c752a401191671d5bbbe7514f5828bbb0a7cc50bfbe77ddaf1b1ccba4412ed2","sha512":"5e2b3c516f1a407eff8c4ffd35d556cbef0ea9a9bbca5cb00f76dcd2f7e7c0a8d5e89736c596f434c84bd4b259516e51814873adb4c6d714734f4211bf86d84a","ssdeep":"1536:iWET9Lwegcl2MywYleojBFOQLfioEV7hNc7lFlgXGhJx4bzZc5zg5tgW/zAe6c0:u9LwzMyh1vLEE7RgXOQ5SIA1","tlshash":"75f3f8ec3d99e611aeb342a700df28037378261b240d4d60a614fd9ea57845bb17bfde","first_seen":"2025-08-23T11:54:10.591173Z","last_seen":"2026-07-27T16:51:34.688144Z","times_seen":3744,"resource_available":true,"data":"InVzZSBzdHJpY3QiOyhzZWxmLndlYnBhY2tDaHVua19OX0U9c2VsZi53ZWJwYWNrQ2h1bmtfTl9FfHxbXSkucHVzaChbWzQ0MV0sezkyNDg6KGUsbix0KT0+e3ZhciByLGw9dCg1NzA0KSxhPXQoNTAwOSksbz10KDIxMTUpLHU9dCg3NjUwKTtmdW5jdGlvbiBpKGUpe3ZhciBuPSJodHRwczovL3JlYWN0LmRldi9lcnJvcnMvIitlO2lmKDE8YXJndW1lbnRzLmxlbmd0aCl7bis9Ij9hcmdzW109IitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzWzFdKTtmb3IodmFyIHQ9Mjt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKW4rPSImYXJnc1tdPSIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1t0XSl9cmV0dXJuIk1pbmlmaWVkIFJlYWN0IGVycm9yICMiK2UrIjsgdmlzaXQgIituKyIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiJ9ZnVuY3Rpb24gcyhlKXtyZXR1cm4hKCFlfHwxIT09ZS5ub2RlVHlwZSYmOSE9PWUubm9kZVR5cGUmJjExIT09ZS5ub2RlVHlwZSl9ZnVuY3Rpb24gYyhlKXt2YXIgbj1lLHQ9ZTtpZihlLmFsdGVybmF0ZSlmb3IoO24ucmV0dXJuOyluPW4ucmV0dXJuO2Vsc2V7ZT1uO2RvIDAhPSg0MDk4JihuPWUpLmZsYWdzKSYmKHQ9bi5yZXR1cm4pLGU9bi5yZXR1cm47d2hpbGUoZSl9cmV0dXJuIDM9PT1uLnRhZz90Om51bGx9ZnVuY3Rpb24gZihlKXtpZigxMz09PWUudGFnKXt2YXIgbj1lLm1lbW9pemVkU3RhdGU7aWYobnVsbD09PW4mJm51bGwhPT0oZT1lLmFsdGVybmF0ZSkmJihuPWUubWVtb2l6ZWRTdGF0ZSksbnVsbCE9PW4pcmV0dXJuIG4uZGVoeWRyYXRlZH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBkKGUpe2lmKDMxPT09ZS50YWcpe3ZhciBuPWUubWVtb2l6ZWRTdGF0ZTtpZihudWxsPT09biYmbnVsbCE9PShlPWUuYWx0ZXJuYXRlKSYmKG49ZS5tZW1vaXplZFN0YXRlKSxudWxsIT09bilyZXR1cm4gbi5kZWh5ZHJhdGVkfXJldHVybiBudWxsfWZ1bmN0aW9uIHAoZSl7aWYoYyhlKSE9PWUpdGhyb3cgRXJyb3IoaSgxODgpKX12YXIgbT1PYmplY3QuYXNzaWduLGg9U3ltYm9sLmZvcigicmVhY3QuZWxlbWVudCIpLGc9U3ltYm9sLmZvcigicmVhY3QudHJhbnNpdGlvbmFsLmVsZW1lbnQiKSx5PVN5bWJvbC5mb3IoInJlYWN0LnBvcnRhbCIpLHY9U3ltYm9sLmZvcigicmVhY3QuZnJhZ21lbnQiKSxiPVN5bWJvbC5mb3IoInJlYWN0LnN0cmljdF9tb2RlIiksaz1TeW1ib2wuZm9yKCJyZWFjdC5wcm9maWxlciIpLHc9U3ltYm9sLmZvcigicmVhY3QuY29uc3VtZXIiKSxTPVN5bWJvbC5mb3IoInJlYWN0LmNvbnRleHQiKSx4PVN5bWJvbC5mb3IoInJlYWN0LmZvcndhcmRfcmVmIiksRT1TeW1ib2wuZm9yKCJyZWFjdC5zdXNwZW5zZSIpLHo9U3ltYm9sLmZvcigicmVhY3Quc3VzcGVuc2VfbGlzdCIpLEM9U3ltYm9sLmZvcigicmVhY3QubWVtbyIpLFA9U3ltYm9sLmZvcigicmVhY3QubGF6eSIpO1N5bWJvbC5mb3IoInJlYWN0LnNjb3BlIik7dmFyIE49U3ltYm9sLmZvcigicmVhY3QuYWN0aXZpdHkiKTtTeW1ib2wuZm9yKCJyZWFjdC5sZWdhY3lfaGlkZGVuIiksU3ltYm9sLmZvcigicmVhY3QudHJhY2luZ19tYXJrZXIiKTt2YXIgTD1TeW1ib2wuZm9yKCJyZWFjdC5tZW1vX2NhY2hlX3NlbnRpbmVsIik7U3ltYm9sLmZvcigicmVhY3Qudmlld190cmFuc2l0aW9uIik7dmFyIFQ9U3ltYm9sLml0ZXJhdG9yO2Z1bmN0aW9uIF8oZSl7cmV0dXJuIG51bGw9PT1lfHwib2JqZWN0IiE9dHlwZW9mIGU/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YoZT1UJiZlW1RdfHxlWyJAQGl0ZXJhdG9yIl0pP2U6bnVsbH12YXIgRj1TeW1ib2wuZm9yKCJyZWFjdC5jbGllbnQucmVmZXJlbmNlIiksRD1BcnJheS5pc0FycmF5LE89by5fX0NMSUVOVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREUsTT11Ll9fRE9NX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1dBUk5fVVNFUlNfVEhFWV9DQU5OT1RfVVBHUkFERSxBPXtwZW5kaW5nOiExLGRhdGE6bnVsbCxtZXRob2Q6bnVsbCxhY3Rpb246bnVsbH0sUj1bXSxJPS0xO2Z1bmN0aW9uIFUoZSl7cmV0dXJue2N1cnJlbnQ6ZX19ZnVuY3Rpb24gJChlKXswPkl8fChlLmN1cnJlbnQ9UltJXSxSW0ldPW51bGwsSS0tKX1mdW5jdGlvbiBqKGUsbil7UlsrK0ldPWUuY3VycmVudCxlLmN1cnJlbnQ9bn12YXIgVj1VKG51bGwpLEg9VShudWxsKSxRPVUobnVsbCksQj1VKG51bGwpO2Z1bmN0aW9uIFcoZSxuKXtzd2l0Y2goaihRLG4pLGooSCxlKSxqKFYsbnVsbCksbi5ub2RlVHlwZSl7Y2FzZSA5OmNhc2UgMTE6ZT0oZT1uLmRvY3VtZW50RWxlbWVudCkmJihlPWUubmFtZXNwYWNlVVJJKT9zZyhlKTowO2JyZWFrO2RlZmF1bHQ6aWYoZT1uLnRhZ05hbWUsbj1uLm5hbWVzcGFjZVVSSSllPXN5KG49c2cobiksZSk7ZWxzZSBzd2l0Y2goZSl7Y2FzZSJzdmciOmU9MTticmVhaztjYXNlIm1hdGgiOmU9MjticmVhaztkZWZhdWx0OmU9MH19JChWKSxqKFYsZSl9ZnVuY3Rpb24gcSgpeyQoViksJChIKSwkKFEpfWZ1bmN0aW9uIEsoZSl7bnVsbCE9PWUubWVtb2l6ZWRTdGF0ZSYmaihCLGUpO3ZhciBuPVYuY3VycmVudCx0PXN5KG4sZS50eXBlKTtuIT09dCYmKGooSCxlKSxqKFYsdCkpfWZ1bmN0aW9uIFkoZSl7SC5jdXJyZW50PT09ZSYmKCQoViksJChIKSksQi5jdXJyZW50PT09ZSYmKCQoQiksczcuX2N1cnJlbnRWYWx1ZT1BKX1mdW5jdGlvbiBYKGUpe2lmKHZvaWQgMD09PW5JKXRyeXt0aHJvdyBFcnJvcigpfWNhdGNoKGUpe3ZhciBuPWUuc3RhY2sudHJpbSgpLm1hdGNoKC9cbiggKihhdCApPykvKTtuST1uJiZuWzFdfHwiIixuVT0tMTxlLnN0YWNrLmluZGV4T2YoIlxuICAgIGF0Iik/IiAoPGFub255bW91cz4pIjotMTxlLnN0YWNrLmluZGV4T2YoIkAiKT8iQHVua25vd246MDowIjoiIn1yZXR1cm4iXG4iK25JK2UrblV9dmFyIEc9ITE7ZnVuY3Rpb24gWihlLG4pe2lmKCFlfHxHKXJldHVybiIiO0c9ITA7dmFyIHQ9RXJyb3IucHJlcGFyZVN0YWNrVHJhY2U7RXJyb3IucHJlcGFyZVN0YWNrVHJhY2U9dm9pZCAwO3RyeXt2YXIgcj17RGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290OmZ1bmN0aW9uKCl7dHJ5e2lmKG4pe3ZhciB0PWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoKX07aWYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQucHJvdG90eXBlLCJwcm9wcyIse3NldDpmdW5jdGlvbigpe3Rocm93IEVycm9yKCl9fSksIm9iamVjdCI9PXR5cGVvZiBSZWZsZWN0JiZSZWZsZWN0LmNvbnN0cnVjdCl7dHJ5e1JlZmxlY3QuY29uc3RydWN0KHQsW10pfWNhdGNoKGUpe3ZhciByPWV9UmVmbGVjdC5jb25zdHJ1Y3QoZSxbXSx0KX1lbHNle3RyeXt0LmNhbGwoKX1jYXRjaChlKXtyPWV9ZS5jYWxsKHQucHJvdG90eXBlKX19ZWxzZXt0cnl7dGhyb3cgRXJyb3IoKX1jYXRjaChlKXtyPWV9KHQ9ZSgpKSYmImZ1bmN0aW9uIj09dHlwZW9mIHQuY2F0Y2gmJnQuY2F0Y2goZnVuY3Rpb24oKXt9KX19Y2F0Y2goZSl7aWYoZSYmciYmInN0cmluZyI9PXR5cGVvZiBlLnN0YWNrKXJldHVybltlLnN0YWNrLHIuc3RhY2tdfXJldHVybltudWxsLG51bGxdfX07ci5EZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3QuZGlzcGxheU5hbWU9IkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdCI7dmFyIGw9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihyLkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdCwibmFtZSIpO2wmJmwuY29uZmlndXJhYmxlJiZPYmplY3QuZGVmaW5lUHJvcGVydHkoci5EZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3QsIm5hbWUiLHt2YWx1ZToiRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290In0pO3ZhciBhPXIuRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290KCksbz1hWzBdLHU9YVsxXTtpZihvJiZ1KXt2YXIgaT1vLnNwbGl0KCJcbiIpLHM9dS5zcGxpdCgiXG4iKTtmb3IobD1yPTA7cjxpLmxlbmd0aCYmIWlbcl0uaW5jbHVkZXMoIkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdCIpOylyKys7Zm9yKDtsPHMubGVuZ3RoJiYhc1tsXS5pbmNsdWRlcygiRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290Iik7KWwrKztpZihyPT09aS5sZW5ndGh8fGw9PT1zLmxlbmd0aClmb3Iocj1pLmxlbmd0aC0xLGw9cy5sZW5ndGgtMTsxPD1yJiYwPD1sJiZpW3JdIT09c1tsXTspbC0tO2Zvcig7MTw9ciYmMDw9bDtyLS0sbC0tKWlmKGlbcl0hPT1zW2xdKXtpZigxIT09cnx8MSE9PWwpZG8gaWYoci0tLGwtLSwwPmx8fGlbcl0hPT1zW2xdKXt2YXIgYz0iXG4iK2lbcl0ucmVwbGFjZSgiIGF0IG5ldyAiLCIgYXQgIik7cmV0dXJuIGUuZGlzcGxheU5hbWUmJmMuaW5jbHVkZXMoIjxhbm9ueW1vdXM+IikmJihjPWMucmVwbGFjZSgiPGFub255bW91cz4iLGUuZGlzcGxheU5hbWUpKSxjfXdoaWxlKDE8PXImJjA8PWwpO2JyZWFrfX19ZmluYWxseXtHPSExLEVycm9yLnByZXBhcmVTdGFja1RyYWNlPXR9cmV0dXJuKHQ9ZT9lLmRpc3BsYXlOYW1lfHxlLm5hbWU6IiIpP1godCk6IiJ9ZnVuY3Rpb24gSihlKXt0cnl7dmFyIG49IiIsdD1udWxsO2RvIG4rPWZ1bmN0aW9uKGUsbil7c3dpdGNoKGUudGFnKXtjYXNlIDI2OmNhc2UgMjc6Y2FzZSA1OnJldHVybiBYKGUudHlwZSk7Y2FzZSAxNjpyZXR1cm4gWCgiTGF6eSIpO2Nhc2UgMTM6cmV0dXJuIGUuY2hpbGQhPT1uJiZudWxsIT09bj9YKCJTdXNwZW5zZSBGYWxsYmFjayIpOlgoIlN1c3BlbnNlIik7Y2FzZSAxOTpyZXR1cm4gWCgiU3VzcGVuc2VMaXN0Iik7Y2FzZSAwOmNhc2UgMTU6cmV0dXJuIFooZS50eXBlLCExKTtjYXNlIDExOnJldHVybiBaKGUudHlwZS5yZW5kZXIsITEpO2Nhc2UgMTpyZXR1cm4gWihlLnR5cGUsITApO2Nhc2UgMzE6cmV0dXJuIFgoIkFjdGl2aXR5Iik7ZGVmYXVsdDpyZXR1cm4iIn19KGUsdCksdD1lLGU9ZS5yZXR1cm47d2hpbGUoZSk7cmV0dXJuIG59Y2F0Y2goZSl7cmV0dXJuIlxuRXJyb3IgZ2VuZXJhdGluZyBzdGFjazogIitlLm1lc3NhZ2UrIlxuIitlLnN0YWNrfX12YXIgZWU9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxlbj1hLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2ssZXQ9YS51bnN0YWJsZV9jYW5jZWxDYWxsYmFjayxlcj1hLnVuc3RhYmxlX3Nob3VsZFlpZWxkLGVsPWEudW5zdGFibGVfcmVxdWVzdFBhaW50LGVhPWEudW5zdGFibGVfbm93LGVvPWEudW5zdGFibGVfZ2V0Q3VycmVudFByaW9yaXR5TGV2ZWwsZXU9YS51bnN0YWJsZV9JbW1lZGlhdGVQcmlvcml0eSxlaT1hLnVuc3RhYmxlX1VzZXJCbG9ja2luZ1ByaW9yaXR5LGVzPWEudW5zdGFibGVfTm9ybWFsUHJpb3JpdHksZWM9YS51bnN0YWJsZV9Mb3dQcmlvcml0eSxlZj1hLnVuc3RhYmxlX0lkbGVQcmlvcml0eSxlZD1hLmxvZyxlcD1hLnVuc3RhYmxlX3NldERpc2FibGVZaWVsZFZhbHVlLGVtPW51bGwsZWg9bnVsbDtmdW5jdGlvbiBlZyhlKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgZWQmJmVwKGUpLGVoJiYiZnVuY3Rpb24iPT10eXBlb2YgZWguc2V0U3RyaWN0TW9kZSl0cnl7ZWguc2V0U3RyaWN0TW9kZShlbSxlKX1jYXRjaChlKXt9fXZhciBleT1NYXRoLmNsejMyP01hdGguY2x6MzI6ZnVuY3Rpb24oZSl7cmV0dXJuIDA9PShlPj4+PTApPzMyOjMxLShldihlKS9lYnwwKXwwfSxldj1NYXRoLmxvZyxlYj1NYXRoLkxOMixlaz0yNTYsZXc9NDE5NDMwNDtmdW5jdGlvbiBlUyhlKXt2YXIgbj00MiZlO2lmKDAhPT1uKXJldHVybiBuO3N3aXRjaChlJi1lKXtjYXNlIDE6cmV0dXJuIDE7Y2FzZSAyOnJldHVybiAyO2Nhc2UgNDpyZXR1cm4gNDtjYXNlIDg6cmV0dXJuIDg7Y2FzZSAxNjpyZXR1cm4gMTY7Y2FzZSAzMjpyZXR1cm4gMzI7Y2FzZSA2NDpyZXR1cm4gNjQ7Y2FzZSAxMjg6cmV0dXJuIDEyODtjYXNlIDI1NjpjYXNlIDUxMjpjYXNlIDEwMjQ6Y2FzZSAyMDQ4OmNhc2UgNDA5NjpjYXNlIDgxOTI6Y2FzZSAxNjM4NDpjYXNlIDMyNzY4OmNhc2UgNjU1MzY6Y2FzZSAxMzEwNzI6Y2FzZSAyNjIxNDQ6Y2FzZSA1MjQyODg6Y2FzZSAxMDQ4NTc2OmNhc2UgMjA5NzE1MjpyZXR1cm4gNDE5NDA0OCZlO2Nhc2UgNDE5NDMwNDpjYXNlIDgzODg2MDg6Y2FzZSAweDEwMDAwMDA6Y2FzZSAweDIwMDAwMDA6cmV0dXJuIDB4M2MwMDAwMCZlO2Nhc2UgMHg0MDAwMDAwOnJldHVybiAweDQwMDAwMDA7Y2FzZSAweDgwMDAwMDA6cmV0dXJuIDB4ODAwMDAwMDtjYXNlIDB4MTAwMDAwMDA6cmV0dXJuIDB4MTAwMDAwMDA7Y2FzZSAweDIwMDAwMDAwOnJldHVybiAweDIwMDAwMDAwO2Nhc2UgMHg0MDAwMDAwMDpyZXR1cm4gMDtkZWZhdWx0OnJldHVybiBlfX1mdW5jdGlvbiBleChlLG4sdCl7dmFyIHI9ZS5wZW5kaW5nTGFuZXM7aWYoMD09PXIpcmV0dXJuIDA7dmFyIGw9MCxhPWUuc3VzcGVuZGVkTGFuZXMsbz1lLnBpbmdlZExhbmVzO2U9ZS53YXJtTGFuZXM7dmFyIHU9MHg3ZmZmZmZmJnI7cmV0dXJuIDAhPT11PzAhPShyPXUmfmEpP2w9ZVMocik6MCE9KG8mPXUpP2w9ZVMobyk6dHx8MCE9KHQ9dSZ+ZSkmJihsPWVTKHQpKTowIT0odT1yJn5hKT9sPWVTKHUpOjAhPT1vP2w9ZVMobyk6dHx8MCE9KHQ9ciZ+ZSkmJihsPWVTKHQpKSwwPT09bD8wOjAhPT1uJiZuIT09bCYmMD09KG4mYSkmJigoYT1sJi1sKT49KHQ9biYtbil8fDMyPT09YSYmMCE9KDQxOTQwNDgmdCkpP246bH1mdW5jdGlvbiBlRShlLG4pe3JldHVybiAwPT0oZS5wZW5kaW5nTGFuZXMmfihlLnN1c3BlbmRlZExhbmVzJn5lLnBpbmdlZExhbmVzKSZuKX1mdW5jdGlvbiBleigpe3ZhciBlPWVrO3JldHVybiAwPT0oNDE5NDA0OCYoZWs8PD0xKSkmJihlaz0yNTYpLGV9ZnVuY3Rpb24gZUMoKXt2YXIgZT1ldztyZXR1cm4gMD09KDB4M2MwMDAwMCYoZXc8PD0xKSkmJihldz00MTk0MzA0KSxlfWZ1bmN0aW9uIGVQKGUpe2Zvcih2YXIgbj1bXSx0PTA7MzE+dDt0Kyspbi5wdXNoKGUpO3JldHVybiBufWZ1bmN0aW9uIGVOKGUsbil7ZS5wZW5kaW5nTGFuZXN8PW4sMHgxMDAwMDAwMCE9PW4mJihlLnN1c3BlbmRlZExhbmVzPTAsZS5waW5nZWRMYW5lcz0wLGUud2FybUxhbmVzPTApfWZ1bmN0aW9uIGVMKGUsbix0KXtlLnBlbmRpbmdMYW5lc3w9bixlLnN1c3BlbmRlZExhbmVzJj1+bjt2YXIgcj0zMS1leShuKTtlLmVudGFuZ2xlZExhbmVzfD1uLGUuZW50YW5nbGVtZW50c1tyXT0weDQwMDAwMDAwfGUuZW50YW5nbGVtZW50c1tyXXw0MTk0MDkwJnR9ZnVuY3Rpb24gZVQoZSxuKXt2YXIgdD1lLmVudGFuZ2xlZExhbmVzfD1uO2ZvcihlPWUuZW50YW5nbGVtZW50czt0Oyl7dmFyIHI9MzEtZXkodCksbD0xPDxyO2wmbnxlW3JdJm4mJihlW3JdfD1uKSx0Jj1+bH19ZnVuY3Rpb24gZV8oZSxuKXt2YXIgdD1uJi1uO3JldHVybiAwIT0oKHQ9MCE9KDQyJnQpPzE6ZUYodCkpJihlLnN1c3BlbmRlZExhbmVzfG4pKT8wOnR9ZnVuY3Rpb24gZUYoZSl7c3dpdGNoKGUpe2Nhc2UgMjplPTE7YnJlYWs7Y2FzZSA4OmU9NDticmVhaztjYXNlIDMyOmU9MTY7YnJlYWs7Y2FzZSAyNTY6Y2FzZSA1MTI6Y2FzZSAxMDI0OmNhc2UgMjA0ODpjYXNlIDQwOTY6Y2FzZSA4MTkyOmNhc2UgMTYzODQ6Y2FzZSAzMjc2ODpjYXNlIDY1NTM2OmNhc2UgMTMxMDcyOmNhc2UgMjYyMTQ0OmNhc2UgNTI0Mjg4OmNhc2UgMTA0ODU3NjpjYXNlIDIwOTcxNTI6Y2FzZSA0MTk0MzA0OmNhc2UgODM4ODYwODpjYXNlIDB4MTAwMDAwMDpjYXNlIDB4MjAwMDAwMDplPTEyODticmVhaztjYXNlIDB4MTAwMDAwMDA6ZT0weDgwMDAwMDA7YnJlYWs7ZGVmYXVsdDplPTB9cmV0dXJuIGV9ZnVuY3Rpb24gZUQoZSl7cmV0dXJuIDI8KGUmPS1lKT84PGU/MCE9KDB4N2ZmZmZmZiZlKT8zMjoweDEwMDAwMDAwOjg6Mn1mdW5jdGlvbiBlTygpe3ZhciBlPU0ucDtyZXR1cm4gMCE9PWU/ZTp2b2lkIDA9PT0oZT13aW5kb3cuZXZlbnQpPzMyOmNtKGUudHlwZSl9ZnVuY3Rpb24gZU0oZSxuKXt2YXIgdD1NLnA7dHJ5e3JldHVybiBNLnA9ZSxuKCl9ZmluYWxseXtNLnA9dH19dmFyIGVBPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpLGVSPSJfX3JlYWN0RmliZXIkIitlQSxlST0iX19yZWFjdFByb3BzJCIrZUEsZVU9Il9fcmVhY3RDb250YWluZXIkIitlQSxlJD0iX19yZWFjdEV2ZW50cyQiK2VBLGVqPSJfX3JlYWN0TGlzdGVuZXJzJCIrZUEsZVY9Il9fcmVhY3RIYW5kbGVzJCIrZUEsZUg9Il9fcmVhY3RSZXNvdXJjZXMkIitlQSxlUT0iX19yZWFjdE1hcmtlciQiK2VBO2Z1bmN0aW9uIGVCKGUpe2RlbGV0ZSBlW2VSXSxkZWxldGUgZVtlSV0sZGVsZXRlIGVbZSRdLGRlbGV0ZSBlW2VqXSxkZWxldGUgZVtlVl19ZnVuY3Rpb24gZVcoZSl7dmFyIG49ZVtlUl07aWYobilyZXR1cm4gbjtmb3IodmFyIHQ9ZS5wYXJlbnROb2RlO3Q7KXtpZihuPXRbZVVdfHx0W2VSXSl7aWYodD1uLmFsdGVybmF0ZSxudWxsIT09bi5jaGlsZHx8bnVsbCE9PXQmJm51bGwhPT10LmNoaWxkKWZvcihlPXNNKGUpO251bGwhPT1lOyl7aWYodD1lW2VSXSlyZXR1cm4gdDtlPXNNKGUpfXJldHVybiBufXQ9KGU9dCkucGFyZW50Tm9kZX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBlcShlKXtpZihlPWVbZVJdfHxlW2VVXSl7dmFyIG49ZS50YWc7aWYoNT09PW58fDY9PT1ufHwxMz09PW58fDMxPT09bnx8MjY9PT1ufHwyNz09PW58fDM9PT1uKXJldHVybiBlfXJldHVybiBudWxsfWZ1bmN0aW9uIGVLKGUpe3ZhciBuPWUudGFnO2lmKDU9PT1ufHwyNj09PW58fDI3PT09bnx8Nj09PW4pcmV0dXJuIGUuc3RhdGVOb2RlO3Rocm93IEVycm9yKGkoMzMpKX1mdW5jdGlvbiBlWShlKXt2YXIgbj1lW2VIXTtyZXR1cm4gbnx8KG49ZVtlSF09e2hvaXN0YWJsZVN0eWxlczpuZXcgTWFwLGhvaXN0YWJsZVNjcmlwdHM6bmV3IE1hcH0pLG59ZnVuY3Rpb24gZVgoZSl7ZVtlUV09ITB9dmFyIGVHPW5ldyBTZXQsZVo9e307ZnVuY3Rpb24gZUooZSxuKXtlMChlLG4pLGUwKGUrIkNhcHR1cmUiLG4pfWZ1bmN0aW9uIGUwKGUsbil7Zm9yKGVaW2VdPW4sZT0wO2U8bi5sZW5ndGg7ZSsrKWVHLmFkZChuW2VdKX12YXIgZTE9UmVnRXhwKCJeWzpBLVpfYS16XFx1MDBDMC1cXHUwMEQ2XFx1MDBEOC1cXHUwMEY2XFx1MDBGOC1cXHUwMkZGXFx1MDM3MC1cXHUwMzdEXFx1MDM3Ri1cXHUxRkZGXFx1MjAwQy1cXHUyMDBEXFx1MjA3MC1cXHUyMThGXFx1MkMwMC1cXHUyRkVGXFx1MzAwMS1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkZEXVs6QS1aX2EtelxcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAwRjgtXFx1MDJGRlxcdTAzNzAtXFx1MDM3RFxcdTAzN0YtXFx1MUZGRlxcdTIwMEMtXFx1MjAwRFxcdTIwNzAtXFx1MjE4RlxcdTJDMDAtXFx1MkZFRlxcdTMwMDEtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZGRFxcLS4wLTlcXHUwMEI3XFx1MDMwMC1cXHUwMzZGXFx1MjAzRi1cXHUyMDQwXSokIiksZTI9e30sZTM9e307ZnVuY3Rpb24gZTQoZSxuLHQpe2lmKGVlLmNhbGwoZTMsbil8fCFlZS5jYWxsKGUyLG4pJiYoZTEudGVzdChuKT9lM1tuXT0hMDooZTJbbl09ITAsITEpKSlpZihudWxsPT09dCllLnJlbW92ZUF0dHJpYnV0ZShuKTtlbHNle3N3aXRjaCh0eXBlb2YgdCl7Y2FzZSJ1bmRlZmluZWQiOmNhc2UiZnVuY3Rpb24iOmNhc2Uic3ltYm9sIjplLnJlbW92ZUF0dHJpYnV0ZShuKTtyZXR1cm47Y2FzZSJib29sZWFuIjp2YXIgcj1uLnRvTG93ZXJDYXNlKCkuc2xpY2UoMCw1KTtpZigiZGF0YS0iIT09ciYmImFyaWEtIiE9PXIpcmV0dXJuIHZvaWQgZS5yZW1vdmVBdHRyaWJ1dGUobil9ZS5zZXRBdHRyaWJ1dGUobiwiIit0KX19ZnVuY3Rpb24gZTgoZSxuLHQpe2lmKG51bGw9PT10KWUucmVtb3ZlQXR0cmlidXRlKG4pO2Vsc2V7c3dpdGNoKHR5cGVvZiB0KXtjYXNlInVuZGVmaW5lZCI6Y2FzZSJmdW5jdGlvbiI6Y2FzZSJzeW1ib2wiOmNhc2UiYm9vbGVhbiI6ZS5yZW1vdmVBdHRyaWJ1dGUobik7cmV0dXJufWUuc2V0QXR0cmlidXRlKG4sIiIrdCl9fWZ1bmN0aW9uIGU2KGUsbix0LHIpe2lmKG51bGw9PT1yKWUucmVtb3ZlQXR0cmlidXRlKHQpO2Vsc2V7c3dpdGNoKHR5cGVvZiByKXtjYXNlInVuZGVmaW5lZCI6Y2FzZSJmdW5jdGlvbiI6Y2FzZSJzeW1ib2wiOmNhc2UiYm9vbGVhbiI6ZS5yZW1vdmVBdHRyaWJ1dGUodCk7cmV0dXJufWUuc2V0QXR0cmlidXRlTlMobix0LCIiK3IpfX1mdW5jdGlvbiBlNShlKXtzd2l0Y2godHlwZW9mIGUpe2Nhc2UiYmlnaW50IjpjYXNlImJvb2xlYW4iOmNhc2UibnVtYmVyIjpjYXNlInN0cmluZyI6Y2FzZSJ1bmRlZmluZWQiOmNhc2Uib2JqZWN0IjpyZXR1cm4gZTtkZWZhdWx0OnJldHVybiIifX1mdW5jdGlvbiBlOShlKXt2YXIgbj1lLnR5cGU7cmV0dXJuKGU9ZS5ub2RlTmFtZSkmJiJpbnB1dCI9PT1lLnRvTG93ZXJDYXNlKCkmJigiY2hlY2tib3giPT09bnx8InJhZGlvIj09PW4pfWZ1bmN0aW9uIGU3KGUpe2lmKCFlLl92YWx1ZVRyYWNrZXIpe3ZhciBuPWU5KGUpPyJjaGVja2VkIjoidmFsdWUiO2UuX3ZhbHVlVHJhY2tlcj1mdW5jdGlvbihlLG4sdCl7dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLmNvbnN0cnVjdG9yLnByb3RvdHlwZSxuKTtpZighZS5oYXNPd25Qcm9wZXJ0eShuKSYmdm9pZCAwIT09ciYmImZ1bmN0aW9uIj09dHlwZW9mIHIuZ2V0JiYiZnVuY3Rpb24iPT10eXBlb2Ygci5zZXQpe3ZhciBsPXIuZ2V0LGE9ci5zZXQ7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4se2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbC5jYWxsKHRoaXMpfSxzZXQ6ZnVuY3Rpb24oZSl7dD0iIitlLGEuY2FsbCh0aGlzLGUpfX0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4se2VudW1lcmFibGU6ci5lbnVtZXJhYmxlfSkse2dldFZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHR9LHNldFZhbHVlOmZ1bmN0aW9uKGUpe3Q9IiIrZX0sc3RvcFRyYWNraW5nOmZ1bmN0aW9uKCl7ZS5fdmFsdWVUcmFja2VyPW51bGwsZGVsZXRlIGVbbl19fX19KGUsbiwiIitlW25dKX19ZnVuY3Rpb24gbmUoZSl7aWYoIWUpcmV0dXJuITE7dmFyIG49ZS5fdmFsdWVUcmFja2VyO2lmKCFuKXJldHVybiEwO3ZhciB0PW4uZ2V0VmFsdWUoKSxyPSIiO3JldHVybiBlJiYocj1lOShlKT9lLmNoZWNrZWQ/InRydWUiOiJmYWxzZSI6ZS52YWx1ZSksKGU9cikhPT10JiYobi5zZXRWYWx1ZShlKSwhMCl9ZnVuY3Rpb24gbm4oZSl7aWYodm9pZCAwPT09KGU9ZXx8KCJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQ6dm9pZCAwKSkpcmV0dXJuIG51bGw7dHJ5e3JldHVybiBlLmFjdGl2ZUVsZW1lbnR8fGUuYm9keX1jYXRjaChuKXtyZXR1cm4gZS5ib2R5fX12YXIgbnQ9L1tcbiJcXF0vZztmdW5jdGlvbiBucihlKXtyZXR1cm4gZS5yZXBsYWNlKG50LGZ1bmN0aW9uKGUpe3JldHVybiJcXCIrZS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSsiICJ9KX1mdW5jdGlvbiBubChlLG4sdCxyLGwsYSxvLHUpe2UubmFtZT0iIixudWxsIT1vJiYiZnVuY3Rpb24iIT10eXBlb2YgbyYmInN5bWJvbCIhPXR5cGVvZiBvJiYiYm9vbGVhbiIhPXR5cGVvZiBvP2UudHlwZT1vOmUucmVtb3ZlQXR0cmlidXRlKCJ0eXBlIiksbnVsbCE9bj8ibnVtYmVyIj09PW8/KDA9PT1uJiYiIj09PWUudmFsdWV8fGUudmFsdWUhPW4pJiYoZS52YWx1ZT0iIitlNShuKSk6ZS52YWx1ZSE9PSIiK2U1KG4pJiYoZS52YWx1ZT0iIitlNShuKSk6InN1Ym1pdCIhPT1vJiYicmVzZXQiIT09b3x8ZS5yZW1vdmVBdHRyaWJ1dGUoInZhbHVlIiksbnVsbCE9bj9ubyhlLG8sZTUobikpOm51bGwhPXQ/bm8oZSxvLGU1KHQpKTpudWxsIT1yJiZlLnJlbW92ZUF0dHJpYnV0ZSgidmFsdWUiKSxudWxsPT1sJiZudWxsIT1hJiYoZS5kZWZhdWx0Q2hlY2tlZD0hIWEpLG51bGwhPWwmJihlLmNoZWNrZWQ9bCYmImZ1bmN0aW9uIiE9dHlwZW9mIGwmJiJzeW1ib2wiIT10eXBlb2YgbCksbnVsbCE9dSYmImZ1bmN0aW9uIiE9dHlwZW9mIHUmJiJzeW1ib2wiIT10eXBlb2YgdSYmImJvb2xlYW4iIT10eXBlb2YgdT9lLm5hbWU9IiIrZTUodSk6ZS5yZW1vdmVBdHRyaWJ1dGUoIm5hbWUiKX1mdW5jdGlvbiBuYShlLG4sdCxyLGwsYSxvLHUpe2lmKG51bGwhPWEmJiJmdW5jdGlvbiIhPXR5cGVvZiBhJiYic3ltYm9sIiE9dHlwZW9mIGEmJiJib29sZWFuIiE9dHlwZW9mIGEmJihlLnR5cGU9YSksbnVsbCE9bnx8bnVsbCE9dCl7aWYoKCJzdWJtaXQiPT09YXx8InJlc2V0Ij09PWEpJiZudWxsPT1uKXJldHVybiB2b2lkIGU3KGUpO3Q9bnVsbCE9dD8iIitlNSh0KToiIixuPW51bGwhPW4/IiIrZTUobik6dCx1fHxuPT09ZS52YWx1ZXx8KGUudmFsdWU9biksZS5kZWZhdWx0VmFsdWU9bn1yPSJmdW5jdGlvbiIhPXR5cGVvZihyPW51bGwhPXI/cjpsKSYmInN5bWJvbCIhPXR5cGVvZiByJiYhIXIsZS5jaGVja2VkPXU/ZS5jaGVja2VkOiEhcixlLmRlZmF1bHRDaGVja2VkPSEhcixudWxsIT1vJiYiZnVuY3Rpb24iIT10eXBlb2YgbyYmInN5bWJvbCIhPXR5cGVvZiBvJiYiYm9vbGVhbiIhPXR5cGVvZiBvJiYoZS5uYW1lPW8pLGU3KGUpfWZ1bmN0aW9uIG5vKGUsbix0KXsibnVtYmVyIj09PW4mJm5uKGUub3duZXJEb2N1bWVudCk9PT1lfHxlLmRlZmF1bHRWYWx1ZT09PSIiK3R8fChlLmRlZmF1bHRWYWx1ZT0iIit0KX1mdW5jdGlvbiBudShlLG4sdCxyKXtpZihlPWUub3B0aW9ucyxuKXtuPXt9O2Zvcih2YXIgbD0wO2w8dC5sZW5ndGg7bCsrKW5bIiQiK3RbbF1dPSEwO2Zvcih0PTA7dDxlLmxlbmd0aDt0KyspbD1uLmhhc093blByb3BlcnR5KCIkIitlW3RdLnZhbHVlKSxlW3RdLnNlbGVjdGVkIT09bCYmKGVbdF0uc2VsZWN0ZWQ9bCksbCYmciYmKGVbdF0uZGVmYXVsdFNlbGVjdGVkPSEwKX1lbHNle2ZvcihsPTAsdD0iIitlNSh0KSxuPW51bGw7bDxlLmxlbmd0aDtsKyspe2lmKGVbbF0udmFsdWU9PT10KXtlW2xdLnNlbGVjdGVkPSEwLHImJihlW2xdLmRlZmF1bHRTZWxlY3RlZD0hMCk7cmV0dXJufW51bGwhPT1ufHxlW2xdLmRpc2FibGVkfHwobj1lW2xdKX1udWxsIT09biYmKG4uc2VsZWN0ZWQ9ITApfX1mdW5jdGlvbiBuaShlLG4sdCl7aWYobnVsbCE9biYmKChuPSIiK2U1KG4pKSE9PWUudmFsdWUmJihlLnZhbHVlPW4pLG51bGw9PXQpKXtlLmRlZmF1bHRWYWx1ZSE9PW4mJihlLmRlZmF1bHRWYWx1ZT1uKTtyZXR1cm59ZS5kZWZhdWx0VmFsdWU9bnVsbCE9dD8iIitlNSh0KToiIn1mdW5jdGlvbiBucyhlLG4sdCxyKXtpZihudWxsPT1uKXtpZihudWxsIT1yKXtpZihudWxsIT10KXRocm93IEVycm9yKGkoOTIpKTtpZihEKHIpKXtpZigxPHIubGVuZ3RoKXRocm93IEVycm9yKGkoOTMpKTtyPXJbMF19dD1yfW51bGw9PXQmJih0PSIiKSxuPXR9ZS5kZWZhdWx0VmFsdWU9dD1lNShuKSwocj1lLnRleHRDb250ZW50KT09PXQmJiIiIT09ciYmbnVsbCE9PXImJihlLnZhbHVlPXIpLGU3KGUpfWZ1bmN0aW9uIG5jKGUsbil7aWYobil7dmFyIHQ9ZS5maXJzdENoaWxkO2lmKHQmJnQ9PT1lLmxhc3RDaGlsZCYmMz09PXQubm9kZVR5cGUpe3Qubm9kZVZhbHVlPW47cmV0dXJufX1lLnRleHRDb250ZW50PW59dmFyIG5mPW5ldyBTZXQoImFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IGFzcGVjdFJhdGlvIGJvcmRlckltYWdlT3V0c2V0IGJvcmRlckltYWdlU2xpY2UgYm9yZGVySW1hZ2VXaWR0aCBib3hGbGV4IGJveEZsZXhHcm91cCBib3hPcmRpbmFsR3JvdXAgY29sdW1uQ291bnQgY29sdW1ucyBmbGV4IGZsZXhHcm93IGZsZXhQb3NpdGl2ZSBmbGV4U2hyaW5rIGZsZXhOZWdhdGl2ZSBmbGV4T3JkZXIgZ3JpZEFyZWEgZ3JpZFJvdyBncmlkUm93RW5kIGdyaWRSb3dTcGFuIGdyaWRSb3dTdGFydCBncmlkQ29sdW1uIGdyaWRDb2x1bW5FbmQgZ3JpZENvbHVtblNwYW4gZ3JpZENvbHVtblN0YXJ0IGZvbnRXZWlnaHQgbGluZUNsYW1wIGxpbmVIZWlnaHQgb3BhY2l0eSBvcmRlciBvcnBoYW5zIHNjYWxlIHRhYlNpemUgd2lkb3dzIHpJbmRleCB6b29tIGZpbGxPcGFjaXR5IGZsb29kT3BhY2l0eSBzdG9wT3BhY2l0eSBzdHJva2VEYXNoYXJyYXkgc3Ryb2tlRGFzaG9mZnNldCBzdHJva2VNaXRlcmxpbWl0IHN0cm9rZU9wYWNpdHkgc3Ryb2tlV2lkdGggTW96QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQgTW96Qm94RmxleCBNb3pCb3hGbGV4R3JvdXAgTW96TGluZUNsYW1wIG1zQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQgbXNGbGV4IG1zWm9vbSBtc0ZsZXhHcm93IG1zRmxleE5lZ2F0aXZlIG1zRmxleE9yZGVyIG1zRmxleFBvc2l0aXZlIG1zRmxleFNocmluayBtc0dyaWRDb2x1bW4gbXNHcmlkQ29sdW1uU3BhbiBtc0dyaWRSb3cgbXNHcmlkUm93U3BhbiBXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudCBXZWJraXRCb3hGbGV4IFdlYktpdEJveEZsZXhHcm91cCBXZWJraXRCb3hPcmRpbmFsR3JvdXAgV2Via2l0Q29sdW1uQ291bnQgV2Via2l0Q29sdW1ucyBXZWJraXRGbGV4IFdlYmtpdEZsZXhHcm93IFdlYmtpdEZsZXhQb3NpdGl2ZSBXZWJraXRGbGV4U2hyaW5rIFdlYmtpdExpbmVDbGFtcCIuc3BsaXQoIiAiKSk7ZnVuY3Rpb24gbmQoZSxuLHQpe3ZhciByPTA9PT1uLmluZGV4T2YoIi0tIik7bnVsbD09dHx8ImJvb2xlYW4iPT10eXBlb2YgdHx8IiI9PT10P3I/ZS5zZXRQcm9wZXJ0eShuLCIiKToiZmxvYXQiPT09bj9lLmNzc0Zsb2F0PSIiOmVbbl09IiI6cj9lLnNldFByb3BlcnR5KG4sdCk6Im51bWJlciIhPXR5cGVvZiB0fHwwPT09dHx8bmYuaGFzKG4pPyJmbG9hdCI9PT1uP2UuY3NzRmxvYXQ9dDplW25dPSgiIit0KS50cmltKCk6ZVtuXT10KyJweCJ9ZnVuY3Rpb24gbnAoZSxuLHQpe2lmKG51bGwhPW4mJiJvYmplY3QiIT10eXBlb2Ygbil0aHJvdyBFcnJvcihpKDYyKSk7aWYoZT1lLnN0eWxlLG51bGwhPXQpe2Zvcih2YXIgciBpbiB0KSF0Lmhhc093blByb3BlcnR5KHIpfHxudWxsIT1uJiZuLmhhc093blByb3BlcnR5KHIpfHwoMD09PXIuaW5kZXhPZigiLS0iKT9lLnNldFByb3BlcnR5KHIsIiIpOiJmbG9hdCI9PT1yP2UuY3NzRmxvYXQ9IiI6ZVtyXT0iIik7Zm9yKHZhciBsIGluIG4pcj1uW2xdLG4uaGFzT3duUHJvcGVydHkobCkmJnRbbF0hPT1yJiZuZChlLGwscil9ZWxzZSBmb3IodmFyIGEgaW4gbiluLmhhc093blByb3BlcnR5KGEpJiZuZChlLGEsblthXSl9ZnVuY3Rpb24gbm0oZSl7aWYoLTE9PT1lLmluZGV4T2YoIi0iKSlyZXR1cm4hMTtzd2l0Y2goZSl7Y2FzZSJhbm5vdGF0aW9uLXhtbCI6Y2FzZSJjb2xvci1wcm9maWxlIjpjYXNlImZvbnQtZmFjZSI6Y2FzZSJmb250LWZhY2Utc3JjIjpjYXNlImZvbnQtZmFjZS11cmkiOmNhc2UiZm9udC1mYWNlLWZvcm1hdCI6Y2FzZSJmb250LWZhY2UtbmFtZSI6Y2FzZSJtaXNzaW5nLWdseXBoIjpyZXR1cm4hMTtkZWZhdWx0OnJldHVybiEwfX12YXIgbmg9bmV3IE1hcChbWyJhY2NlcHRDaGFyc2V0IiwiYWNjZXB0LWNoYXJzZXQiXSxbImh0bWxGb3IiLCJmb3IiXSxbImh0dHBFcXVpdiIsImh0dHAtZXF1aXYiXSxbImNyb3NzT3JpZ2luIiwiY3Jvc3NvcmlnaW4iXSxbImFjY2VudEhlaWdodCIsImFjY2VudC1oZWlnaHQiXSxbImFsaWdubWVudEJhc2VsaW5lIiwiYWxpZ25tZW50LWJhc2VsaW5lIl0sWyJhcmFiaWNGb3JtIiwiYXJhYmljLWZvcm0iXSxbImJhc2VsaW5lU2hpZnQiLCJiYXNlbGluZS1zaGlmdCJdLFsiY2FwSGVpZ2h0IiwiY2FwLWhlaWdodCJdLFsiY2xpcFBhdGgiLCJjbGlwLXBhdGgiXSxbImNsaXBSdWxlIiwiY2xpcC1ydWxlIl0sWyJjb2xvckludGVycG9sYXRpb24iLCJjb2xvci1pbnRlcnBvbGF0aW9uIl0sWyJjb2xvckludGVycG9sYXRpb25GaWx0ZXJzIiwiY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIl0sWyJjb2xvclByb2ZpbGUiLCJjb2xvci1wcm9maWxlIl0sWyJjb2xvclJlbmRlcmluZyIsImNvbG9yLXJlbmRlcmluZyJdLFsiZG9taW5hbnRCYXNlbGluZSIsImRvbWluYW50LWJhc2VsaW5lIl0sWyJlbmFibGVCYWNrZ3JvdW5kIiwiZW5hYmxlLWJhY2tncm91bmQiXSxbImZpbGxPcGFjaXR5IiwiZmlsbC1vcGFjaXR5Il0sWyJmaWxsUnVsZSIsImZpbGwtcnVsZSJdLFsiZmxvb2RDb2xvciIsImZsb29kLWNvbG9yIl0sWyJmbG9vZE9wYWNpdHkiLCJmbG9vZC1vcGFjaXR5Il0sWyJmb250RmFtaWx5IiwiZm9udC1mYW1pbHkiXSxbImZvbnRTaXplIiwiZm9udC1zaXplIl0sWyJmb250U2l6ZUFkanVzdCIsImZvbnQtc2l6ZS1hZGp1c3QiXSxbImZvbnRTdHJldGNoIiwiZm9udC1zdHJldGNoIl0sWyJmb250U3R5bGUiLCJmb250LXN0eWxlIl0sWyJmb250VmFyaWFudCIsImZvbnQtdmFyaWFudCJdLFsiZm9udFdlaWdodCIsImZvbnQtd2VpZ2h0Il0sWyJnbHlwaE5hbWUiLCJnbHlwaC1uYW1lIl0sWyJnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbCIsImdseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwiXSxbImdseXBoT3JpZW50YXRpb25WZXJ0aWNhbCIsImdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsIl0sWyJob3JpekFkdlgiLCJob3Jpei1hZHYteCJdLFsiaG9yaXpPcmlnaW5YIiwiaG9yaXotb3JpZ2luLXgiXSxbImltYWdlUmVuZGVyaW5nIiwiaW1hZ2UtcmVuZGVyaW5nIl0sWyJsZXR0ZXJTcGFjaW5nIiwibGV0dGVyLXNwYWNpbmciXSxbImxpZ2h0aW5nQ29sb3IiLCJsaWdodGluZy1jb2xvciJdLFsibWFya2VyRW5kIiwibWFya2VyLWVuZCJdLFsibWFya2VyTWlkIiwibWFya2VyLW1pZCJdLFsibWFya2VyU3RhcnQiLCJtYXJrZXItc3RhcnQiXSxbIm92ZXJsaW5lUG9zaXRpb24iLCJvdmVybGluZS1wb3NpdGlvbiJdLFsib3ZlcmxpbmVUaGlja25lc3MiLCJvdmVybGluZS10aGlja25lc3MiXSxbInBhaW50T3JkZXIiLCJwYWludC1vcmRlciJdLFsicGFub3NlLTEiLCJwYW5vc2UtMSJdLFsicG9pbnRlckV2ZW50cyIsInBvaW50ZXItZXZlbnRzIl0sWyJyZW5kZXJpbmdJbnRlbnQiLCJyZW5kZXJpbmctaW50ZW50Il0sWyJzaGFwZVJlbmRlcmluZyIsInNoYXBlLXJlbmRlcmluZyJdLFsic3RvcENvbG9yIiwic3RvcC1jb2xvciJdLFsic3RvcE9wYWNpdHkiLCJzdG9wLW9wYWNpdHkiXSxbInN0cmlrZXRocm91Z2hQb3NpdGlvbiIsInN0cmlrZXRocm91Z2gtcG9zaXRpb24iXSxbInN0cmlrZXRocm91Z2hUaGlja25lc3MiLCJzdHJpa2V0aHJvdWdoLXRoaWNrbmVzcyJdLFsic3Ryb2tlRGFzaGFycmF5Iiwic3Ryb2tlLWRhc2hhcnJheSJdLFsic3Ryb2tlRGFzaG9mZnNldCIsInN0cm9rZS1kYXNob2Zmc2V0Il0sWyJzdHJva2VMaW5lY2FwIiwic3Ryb2tlLWxpbmVjYXAiXSxbInN0cm9rZUxpbmVqb2luIiwic3Ryb2tlLWxpbmVqb2luIl0sWyJzdHJva2VNaXRlcmxpbWl0Iiwic3Ryb2tlLW1pdGVybGltaXQiXSxbInN0cm9rZU9wYWNpdHkiLCJzdHJva2Utb3BhY2l0eSJdLFsic3Ryb2tlV2lkdGgiLCJzdHJva2Utd2lkdGgiXSxbInRleHRBbmNob3IiLCJ0ZXh0LWFuY2hvciJdLFsidGV4dERlY29yYXRpb24iLCJ0ZXh0LWRlY29yYXRpb24iXSxbInRleHRSZW5kZXJpbmciLCJ0ZXh0LXJlbmRlcmluZyJdLFsidHJhbnNmb3JtT3JpZ2luIiwidHJhbnNmb3JtLW9yaWdpbiJdLFsidW5kZXJsaW5lUG9zaXRpb24iLCJ1bmRlcmxpbmUtcG9zaXRpb24iXSxbInVuZGVybGluZVRoaWNrbmVzcyIsInVuZGVybGluZS10aGlja25lc3MiXSxbInVuaWNvZGVCaWRpIiwidW5pY29kZS1iaWRpIl0sWyJ1bmljb2RlUmFuZ2UiLCJ1bmljb2RlLXJhbmdlIl0sWyJ1bml0c1BlckVtIiwidW5pdHMtcGVyLWVtIl0sWyJ2QWxwaGFiZXRpYyIsInYtYWxwaGFiZXRpYyJdLFsidkhhbmdpbmciLCJ2LWhhbmdpbmciXSxbInZJZGVvZ3JhcGhpYyIsInYtaWRlb2dyYXBoaWMiXSxbInZNYXRoZW1hdGljYWwiLCJ2LW1hdGhlbWF0aWNhbCJdLFsidmVjdG9yRWZmZWN0IiwidmVjdG9yLWVmZmVjdCJdLFsidmVydEFkdlkiLCJ2ZXJ0LWFkdi15Il0sWyJ2ZXJ0T3JpZ2luWCIsInZlcnQtb3JpZ2luLXgiXSxbInZlcnRPcmlnaW5ZIiwidmVydC1vcmlnaW4teSJdLFsid29yZFNwYWNpbmciLCJ3b3JkLXNwYWNpbmciXSxbIndyaXRpbmdNb2RlIiwid3JpdGluZy1tb2RlIl0sWyJ4bWxuc1hsaW5rIiwieG1sbnM6eGxpbmsiXSxbInhIZWlnaHQiLCJ4LWhlaWdodCJdXSksbmc9L15bXHUwMDAwLVx1MDAxRiBdKmpbXHJcblx0XSphW1xyXG5cdF0qdltcclxuXHRdKmFbXHJcblx0XSpzW1xyXG5cdF0qY1tcclxuXHRdKnJbXHJcblx0XSppW1xyXG5cdF0qcFtcclxuXHRdKnRbXHJcblx0XSo6L2k7ZnVuY3Rpb24gbnkoZSl7cmV0dXJuIG5nLnRlc3QoIiIrZSk/ImphdmFzY3JpcHQ6dGhyb3cgbmV3IEVycm9yKCdSZWFjdCBoYXMgYmxvY2tlZCBhIGphdmFzY3JpcHQ6IFVSTCBhcyBhIHNlY3VyaXR5IHByZWNhdXRpb24uJykiOmV9ZnVuY3Rpb24gbnYoKXt9dmFyIG5iPW51bGw7ZnVuY3Rpb24gbmsoZSl7cmV0dXJuKGU9ZS50YXJnZXR8fGUuc3JjRWxlbWVudHx8d2luZG93KS5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCYmKGU9ZS5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCksMz09PWUubm9kZVR5cGU/ZS5wYXJlbnROb2RlOmV9dmFyIG53PW51bGwsblM9bnVsbDtmdW5jdGlvbiBueChlKXt2YXIgbj1lcShlKTtpZihuJiYoZT1uLnN0YXRlTm9kZSkpe3ZhciB0PWVbZUldfHxudWxsO3N3aXRjaChlPW4uc3RhdGVOb2RlLG4udHlwZSl7Y2FzZSJpbnB1dCI6aWYobmwoZSx0LnZhbHVlLHQuZGVmYXVsdFZhbHVlLHQuZGVmYXVsdFZhbHVlLHQuY2hlY2tlZCx0LmRlZmF1bHRDaGVja2VkLHQudHlwZSx0Lm5hbWUpLG49dC5uYW1lLCJyYWRpbyI9PT10LnR5cGUmJm51bGwhPW4pe2Zvcih0PWU7dC5wYXJlbnROb2RlOyl0PXQucGFyZW50Tm9kZTtmb3IodD10LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W25hbWU9IicrbnIoIiIrbikrJyJdW3R5cGU9InJhZGlvIl0nKSxuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07aWYociE9PWUmJnIuZm9ybT09PWUuZm9ybSl7dmFyIGw9cltlSV18fG51bGw7aWYoIWwpdGhyb3cgRXJyb3IoaSg5MCkpO25sKHIsbC52YWx1ZSxsLmRlZmF1bHRWYWx1ZSxsLmRlZmF1bHRWYWx1ZSxsLmNoZWNrZWQsbC5kZWZhdWx0Q2hlY2tlZCxsLnR5cGUsbC5uYW1lKX19Zm9yKG49MDtuPHQubGVuZ3RoO24rKykocj10W25dKS5mb3JtPT09ZS5mb3JtJiZuZShyKX1icmVhaztjYXNlInRleHRhcmVhIjpuaShlLHQudmFsdWUsdC5kZWZhdWx0VmFsdWUpO2JyZWFrO2Nhc2Uic2VsZWN0IjpudWxsIT0obj10LnZhbHVlKSYmbnUoZSwhIXQubXVsdGlwbGUsbiwhMSl9fX12YXIgbkU9ITE7ZnVuY3Rpb24gbnooZSxuLHQpe2lmKG5FKXJldHVybiBlKG4sdCk7bkU9ITA7dHJ5e3JldHVybiBlKG4pfWZpbmFsbHl7aWYobkU9ITEsKG51bGwhPT1ud3x8bnVsbCE9PW5TKSYmKGljKCksbncmJihuPW53LGU9blMsblM9bnc9bnVsbCxueChuKSxlKSkpZm9yKG49MDtuPGUubGVuZ3RoO24rKylueChlW25dKX19ZnVuY3Rpb24gbkMoZSxuKXt2YXIgdD1lLnN0YXRlTm9kZTtpZihudWxsPT09dClyZXR1cm4gbnVsbDt2YXIgcj10W2VJXXx8bnVsbDtpZihudWxsPT09cilyZXR1cm4gbnVsbDtzd2l0Y2godD1yW25dLG4pe2Nhc2Uib25DbGljayI6Y2FzZSJvbkNsaWNrQ2FwdHVyZSI6Y2FzZSJvbkRvdWJsZUNsaWNrIjpjYXNlIm9uRG91YmxlQ2xpY2tDYXB0dXJlIjpjYXNlIm9uTW91c2VEb3duIjpjYXNlIm9uTW91c2VEb3duQ2FwdHVyZSI6Y2FzZSJvbk1vdXNlTW92ZSI6Y2FzZSJvbk1vdXNlTW92ZUNhcHR1cmUiOmNhc2Uib25Nb3VzZVVwIjpjYXNlIm9uTW91c2VVcENhcHR1cmUiOmNhc2Uib25Nb3VzZUVudGVyIjoocj0hci5kaXNhYmxlZCl8fChyPSJidXR0b24iIT09KGU9ZS50eXBlKSYmImlucHV0IiE9PWUmJiJzZWxlY3QiIT09ZSYmInRleHRhcmVhIiE9PWUpLGU9IXI7YnJlYWs7ZGVmYXVsdDplPSExfWlmKGUpcmV0dXJuIG51bGw7aWYodCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgRXJyb3IoaSgyMzEsbix0eXBlb2YgdCkpO3JldHVybiB0fXZhciBuUD0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmdm9pZCAwIT09d2luZG93LmRvY3VtZW50JiZ2b2lkIDAhPT13aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCxuTj0hMTtpZihuUCl0cnl7dmFyIG5MPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShuTCwicGFzc2l2ZSIse2dldDpmdW5jdGlvbigpe25OPSEwfX0pLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ0ZXN0IixuTCxuTCksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoInRlc3QiLG5MLG5MKX1jYXRjaChlKXtuTj0hMX12YXIgblQ9bnVsbCxuXz1udWxsLG5GPW51bGw7ZnVuY3Rpb24gbkQoKXtpZihuRilyZXR1cm4gbkY7dmFyIGUsbix0PW5fLHI9dC5sZW5ndGgsbD0idmFsdWUiaW4gblQ/blQudmFsdWU6blQudGV4dENvbnRlbnQsYT1sLmxlbmd0aDtmb3IoZT0wO2U8ciYmdFtlXT09PWxbZV07ZSsrKTt2YXIgbz1yLWU7Zm9yKG49MTtuPD1vJiZ0W3Itbl09PT1sW2Etbl07bisrKTtyZXR1cm4gbkY9bC5zbGljZShlLDE8bj8xLW46dm9pZCAwKX1mdW5jdGlvbiBuTyhlKXt2YXIgbj1lLmtleUNvZGU7cmV0dXJuImNoYXJDb2RlImluIGU/MD09PShlPWUuY2hhckNvZGUpJiYxMz09PW4mJihlPTEzKTplPW4sMTA9PT1lJiYoZT0xMyksMzI8PWV8fDEzPT09ZT9lOjB9ZnVuY3Rpb24gbk0oKXtyZXR1cm4hMH1mdW5jdGlvbiBuQSgpe3JldHVybiExfWZ1bmN0aW9uIG5SKGUpe2Z1bmN0aW9uIG4obix0LHIsbCxhKXtmb3IodmFyIG8gaW4gdGhpcy5fcmVhY3ROYW1lPW4sdGhpcy5fdGFyZ2V0SW5zdD1yLHRoaXMudHlwZT10LHRoaXMubmF0aXZlRXZlbnQ9bCx0aGlzLnRhcmdldD1hLHRoaXMuY3VycmVudFRhcmdldD1udWxsLGUpZS5oYXNPd25Qcm9wZXJ0eShvKSYmKG49ZVtvXSx0aGlzW29dPW4/bihsKTpsW29dKTtyZXR1cm4gdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9KG51bGwhPWwuZGVmYXVsdFByZXZlbnRlZD9sLmRlZmF1bHRQcmV2ZW50ZWQ6ITE9PT1sLnJldHVyblZhbHVlKT9uTTpuQSx0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPW5BLHRoaXN9cmV0dXJuIG0obi5wcm90b3R5cGUse3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVudGVkPSEwO3ZhciBlPXRoaXMubmF0aXZlRXZlbnQ7ZSYmKGUucHJldmVudERlZmF1bHQ/ZS5wcmV2ZW50RGVmYXVsdCgpOiJ1bmtub3duIiE9dHlwZW9mIGUucmV0dXJuVmFsdWUmJihlLnJldHVyblZhbHVlPSExKSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1uTSl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMubmF0aXZlRXZlbnQ7ZSYmKGUuc3RvcFByb3BhZ2F0aW9uP2Uuc3RvcFByb3BhZ2F0aW9uKCk6InVua25vd24iIT10eXBlb2YgZS5jYW5jZWxCdWJibGUmJihlLmNhbmNlbEJ1YmJsZT0hMCksdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1uTSl9LHBlcnNpc3Q6ZnVuY3Rpb24oKXt9LGlzUGVyc2lzdGVudDpuTX0pLG59dmFyIG5JLG5VLG4kLG5qLG5WLG5IPXtldmVudFBoYXNlOjAsYnViYmxlczowLGNhbmNlbGFibGU6MCx0aW1lU3RhbXA6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudGltZVN0YW1wfHxEYXRlLm5vdygpfSxkZWZhdWx0UHJldmVudGVkOjAsaXNUcnVzdGVkOjB9LG5RPW5SKG5IKSxuQj1tKHt9LG5ILHt2aWV3OjAsZGV0YWlsOjB9KSxuVz1uUihuQiksbnE9bSh7fSxuQix7c2NyZWVuWDowLHNjcmVlblk6MCxjbGllbnRYOjAsY2xpZW50WTowLHBhZ2VYOjAscGFnZVk6MCxjdHJsS2V5OjAsc2hpZnRLZXk6MCxhbHRLZXk6MCxtZXRhS2V5OjAsZ2V0TW9kaWZpZXJTdGF0ZTpuNCxidXR0b246MCxidXR0b25zOjAscmVsYXRlZFRhcmdldDpmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZS5yZWxhdGVkVGFyZ2V0P2UuZnJvbUVsZW1lbnQ9PT1lLnNyY0VsZW1lbnQ/ZS50b0VsZW1lbnQ6ZS5mcm9tRWxlbWVudDplLnJlbGF0ZWRUYXJnZXR9LG1vdmVtZW50WDpmdW5jdGlvbihlKXtyZXR1cm4ibW92ZW1lbnRYImluIGU/ZS5tb3ZlbWVudFg6KGUhPT1uViYmKG5WJiYibW91c2Vtb3ZlIj09PWUudHlwZT8obiQ9ZS5zY3JlZW5YLW5WLnNjcmVlblgsbmo9ZS5zY3JlZW5ZLW5WLnNjcmVlblkpOm5qPW4kPTAsblY9ZSksbiQpfSxtb3ZlbWVudFk6ZnVuY3Rpb24oZSl7cmV0dXJuIm1vdmVtZW50WSJpbiBlP2UubW92ZW1lbnRZOm5qfX0pLG5LPW5SKG5xKSxuWT1uUihtKHt9LG5xLHtkYXRhVHJhbnNmZXI6MH0pKSxuWD1uUihtKHt9LG5CLHtyZWxhdGVkVGFyZ2V0OjB9KSksbkc9blIobSh7fSxuSCx7YW5pbWF0aW9uTmFtZTowLGVsYXBzZWRUaW1lOjAscHNldWRvRWxlbWVudDowfSkpLG5aPW5SKG0oe30sbkgse2NsaXBib2FyZERhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuImNsaXBib2FyZERhdGEiaW4gZT9lLmNsaXBib2FyZERhdGE6d2luZG93LmNsaXBib2FyZERhdGF9fSkpLG5KPW5SKG0oe30sbkgse2RhdGE6MH0pKSxuMD17RXNjOiJFc2NhcGUiLFNwYWNlYmFyOiIgIixMZWZ0OiJBcnJvd0xlZnQiLFVwOiJBcnJvd1VwIixSaWdodDoiQXJyb3dSaWdodCIsRG93bjoiQXJyb3dEb3duIixEZWw6IkRlbGV0ZSIsV2luOiJPUyIsTWVudToiQ29udGV4dE1lbnUiLEFwcHM6IkNvbnRleHRNZW51IixTY3JvbGw6IlNjcm9sbExvY2siLE1velByaW50YWJsZUtleToiVW5pZGVudGlmaWVkIn0sbjE9ezg6IkJhY2tzcGFjZSIsOToiVGFiIiwxMjoiQ2xlYXIiLDEzOiJFbnRlciIsMTY6IlNoaWZ0IiwxNzoiQ29udHJvbCIsMTg6IkFsdCIsMTk6IlBhdXNlIiwyMDoiQ2Fwc0xvY2siLDI3OiJFc2NhcGUiLDMyOiIgIiwzMzoiUGFnZVVwIiwzNDoiUGFnZURvd24iLDM1OiJFbmQiLDM2OiJIb21lIiwzNzoiQXJyb3dMZWZ0IiwzODoiQXJyb3dVcCIsMzk6IkFycm93UmlnaHQiLDQwOiJBcnJvd0Rvd24iLDQ1OiJJbnNlcnQiLDQ2OiJEZWxldGUiLDExMjoiRjEiLDExMzoiRjIiLDExNDoiRjMiLDExNToiRjQiLDExNjoiRjUiLDExNzoiRjYiLDExODoiRjciLDExOToiRjgiLDEyMDoiRjkiLDEyMToiRjEwIiwxMjI6IkYxMSIsMTIzOiJGMTIiLDE0NDoiTnVtTG9jayIsMTQ1OiJTY3JvbGxMb2NrIiwyMjQ6Ik1ldGEifSxuMj17QWx0OiJhbHRLZXkiLENvbnRyb2w6ImN0cmxLZXkiLE1ldGE6Im1ldGFLZXkiLFNoaWZ0OiJzaGlmdEtleSJ9O2Z1bmN0aW9uIG4zKGUpe3ZhciBuPXRoaXMubmF0aXZlRXZlbnQ7cmV0dXJuIG4uZ2V0TW9kaWZpZXJTdGF0ZT9uLmdldE1vZGlmaWVyU3RhdGUoZSk6ISEoZT1uMltlXSkmJiEhbltlXX1mdW5jdGlvbiBuNCgpe3JldHVybiBuM312YXIgbjg9blIobSh7fSxuQix7a2V5OmZ1bmN0aW9uKGUpe2lmKGUua2V5KXt2YXIgbj1uMFtlLmtleV18fGUua2V5O2lmKCJVbmlkZW50aWZpZWQiIT09bilyZXR1cm4gbn1yZXR1cm4ia2V5cHJlc3MiPT09ZS50eXBlPzEzPT09KGU9bk8oZSkpPyJFbnRlciI6U3RyaW5nLmZyb21DaGFyQ29kZShlKToia2V5ZG93biI9PT1lLnR5cGV8fCJrZXl1cCI9PT1lLnR5cGU/bjFbZS5rZXlDb2RlXXx8IlVuaWRlbnRpZmllZCI6IiJ9LGNvZGU6MCxsb2NhdGlvbjowLGN0cmxLZXk6MCxzaGlmdEtleTowLGFsdEtleTowLG1ldGFLZXk6MCxyZXBlYXQ6MCxsb2NhbGU6MCxnZXRNb2RpZmllclN0YXRlOm40LGNoYXJDb2RlOmZ1bmN0aW9uKGUpe3JldHVybiJrZXlwcmVzcyI9PT1lLnR5cGU/bk8oZSk6MH0sa2V5Q29kZTpmdW5jdGlvbihlKXtyZXR1cm4ia2V5ZG93biI9PT1lLnR5cGV8fCJrZXl1cCI9PT1lLnR5cGU/ZS5rZXlDb2RlOjB9LHdoaWNoOmZ1bmN0aW9uKGUpe3JldHVybiJrZXlwcmVzcyI9PT1lLnR5cGU/bk8oZSk6ImtleWRvd24iPT09ZS50eXBlfHwia2V5dXAiPT09ZS50eXBlP2Uua2V5Q29kZTowfX0pKSxuNj1uUihtKHt9LG5xLHtwb2ludGVySWQ6MCx3aWR0aDowLGhlaWdodDowLHByZXNzdXJlOjAsdGFuZ2VudGlhbFByZXNzdXJlOjAsdGlsdFg6MCx0aWx0WTowLHR3aXN0OjAscG9pbnRlclR5cGU6MCxpc1ByaW1hcnk6MH0pKSxuNT1uUihtKHt9LG5CLHt0b3VjaGVzOjAsdGFyZ2V0VG91Y2hlczowLGNoYW5nZWRUb3VjaGVzOjAsYWx0S2V5OjAsbWV0YUtleTowLGN0cmxLZXk6MCxzaGlmdEtleTowLGdldE1vZGlmaWVyU3RhdGU6bjR9KSksbjk9blIobSh7fSxuSCx7cHJvcGVydHlOYW1lOjAsZWxhcHNlZFRpbWU6MCxwc2V1ZG9FbGVtZW50OjB9KSksbjc9blIobSh7fSxucSx7ZGVsdGFYOmZ1bmN0aW9uKGUpe3JldHVybiJkZWx0YVgiaW4gZT9lLmRlbHRhWDoid2hlZWxEZWx0YVgiaW4gZT8tZS53aGVlbERlbHRhWDowfSxkZWx0YVk6ZnVuY3Rpb24oZSl7cmV0dXJuImRlbHRhWSJpbiBlP2UuZGVsdGFZOiJ3aGVlbERlbHRhWSJpbiBlPy1lLndoZWVsRGVsdGFZOiJ3aGVlbERlbHRhImluIGU/LWUud2hlZWxEZWx0YTowfSxkZWx0YVo6MCxkZWx0YU1vZGU6MH0pKSx0ZT1uUihtKHt9LG5ILHtuZXdTdGF0ZTowLG9sZFN0YXRlOjB9KSksdG49WzksMTMsMjcsMzJdLHR0PW5QJiYiQ29tcG9zaXRpb25FdmVudCJpbiB3aW5kb3csdHI9bnVsbDtuUCYmImRvY3VtZW50TW9kZSJpbiBkb2N1bWVudCYmKHRyPWRvY3VtZW50LmRvY3VtZW50TW9kZSk7dmFyIHRsPW5QJiYiVGV4dEV2ZW50ImluIHdpbmRvdyYmIXRyLHRhPW5QJiYoIXR0fHx0ciYmODx0ciYmMTE+PXRyKSx0bz0hMTtmdW5jdGlvbiB0dShlLG4pe3N3aXRjaChlKXtjYXNlImtleXVwIjpyZXR1cm4gLTEhPT10bi5pbmRleE9mKG4ua2V5Q29kZSk7Y2FzZSJrZXlkb3duIjpyZXR1cm4gMjI5IT09bi5rZXlDb2RlO2Nhc2Uia2V5cHJlc3MiOmNhc2UibW91c2Vkb3duIjpjYXNlImZvY3Vzb3V0IjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiB0aShlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mKGU9ZS5kZXRhaWwpJiYiZGF0YSJpbiBlP2UuZGF0YTpudWxsfXZhciB0cz0hMSx0Yz17Y29sb3I6ITAsZGF0ZTohMCxkYXRldGltZTohMCwiZGF0ZXRpbWUtbG9jYWwiOiEwLGVtYWlsOiEwLG1vbnRoOiEwLG51bWJlcjohMCxwYXNzd29yZDohMCxyYW5nZTohMCxzZWFyY2g6ITAsdGVsOiEwLHRleHQ6ITAsdGltZTohMCx1cmw6ITAsd2VlazohMH07ZnVuY3Rpb24gdGYoZSl7dmFyIG49ZSYmZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT1uPyEhdGNbZS50eXBlXToidGV4dGFyZWEiPT09bn1mdW5jdGlvbiB0ZChlLG4sdCxyKXtudz9uUz9uUy5wdXNoKHIpOm5TPVtyXTpudz1yLDA8KG49c3Iobiwib25DaGFuZ2UiKSkubGVuZ3RoJiYodD1uZXcgblEoIm9uQ2hhbmdlIiwiY2hhbmdlIixudWxsLHQsciksZS5wdXNoKHtldmVudDp0LGxpc3RlbmVyczpufSkpfXZhciB0cD1udWxsLHRtPW51bGw7ZnVuY3Rpb24gdGgoZSl7aTgoZSwwKX1mdW5jdGlvbiB0ZyhlKXtpZihuZShlSyhlKSkpcmV0dXJuIGV9ZnVuY3Rpb24gdHkoZSxuKXtpZigiY2hhbmdlIj09PWUpcmV0dXJuIG59dmFyIHR2PSExO2lmKG5QKXtpZihuUCl7dmFyIHRiPSJvbmlucHV0ImluIGRvY3VtZW50O2lmKCF0Yil7dmFyIHRrPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3RrLnNldEF0dHJpYnV0ZSgib25pbnB1dCIsInJldHVybjsiKSx0Yj0iZnVuY3Rpb24iPT10eXBlb2YgdGsub25pbnB1dH1yPXRifWVsc2Ugcj0hMTt0dj1yJiYoIWRvY3VtZW50LmRvY3VtZW50TW9kZXx8OTxkb2N1bWVudC5kb2N1bWVudE1vZGUpfWZ1bmN0aW9uIHR3KCl7dHAmJih0cC5kZXRhY2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIsdFMpLHRtPXRwPW51bGwpfWZ1bmN0aW9uIHRTKGUpe2lmKCJ2YWx1ZSI9PT1lLnByb3BlcnR5TmFtZSYmdGcodG0pKXt2YXIgbj1bXTt0ZChuLHRtLGUsbmsoZSkpLG56KHRoLG4pfX1mdW5jdGlvbiB0eChlLG4sdCl7ImZvY3VzaW4iPT09ZT8odHcoKSx0cD1uLHRtPXQsdHAuYXR0YWNoRXZlbnQoIm9ucHJvcGVydHljaGFuZ2UiLHRTKSk6ImZvY3Vzb3V0Ij09PWUmJnR3KCl9ZnVuY3Rpb24gdEUoZSl7aWYoInNlbGVjdGlvbmNoYW5nZSI9PT1lfHwia2V5dXAiPT09ZXx8ImtleWRvd24iPT09ZSlyZXR1cm4gdGcodG0pfWZ1bmN0aW9uIHR6KGUsbil7aWYoImNsaWNrIj09PWUpcmV0dXJuIHRnKG4pfWZ1bmN0aW9uIHRDKGUsbil7aWYoImlucHV0Ij09PWV8fCJjaGFuZ2UiPT09ZSlyZXR1cm4gdGcobil9dmFyIHRQPSJmdW5jdGlvbiI9PXR5cGVvZiBPYmplY3QuaXM/T2JqZWN0LmlzOmZ1bmN0aW9uKGUsbil7cmV0dXJuIGU9PT1uJiYoMCE9PWV8fDEvZT09MS9uKXx8ZSE9ZSYmbiE9bn07ZnVuY3Rpb24gdE4oZSxuKXtpZih0UChlLG4pKXJldHVybiEwO2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWV8fCJvYmplY3QiIT10eXBlb2Ygbnx8bnVsbD09PW4pcmV0dXJuITE7dmFyIHQ9T2JqZWN0LmtleXMoZSkscj1PYmplY3Qua2V5cyhuKTtpZih0Lmxlbmd0aCE9PXIubGVuZ3RoKXJldHVybiExO2ZvcihyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBsPXRbcl07aWYoIWVlLmNhbGwobixsKXx8IXRQKGVbbF0sbltsXSkpcmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gdEwoZSl7Zm9yKDtlJiZlLmZpcnN0Q2hpbGQ7KWU9ZS5maXJzdENoaWxkO3JldHVybiBlfWZ1bmN0aW9uIHRUKGUsbil7dmFyIHQscj10TChlKTtmb3IoZT0wO3I7KXtpZigzPT09ci5ub2RlVHlwZSl7aWYodD1lK3IudGV4dENvbnRlbnQubGVuZ3RoLGU8PW4mJnQ+PW4pcmV0dXJue25vZGU6cixvZmZzZXQ6bi1lfTtlPXR9ZTp7Zm9yKDtyOyl7aWYoci5uZXh0U2libGluZyl7cj1yLm5leHRTaWJsaW5nO2JyZWFrIGV9cj1yLnBhcmVudE5vZGV9cj12b2lkIDB9cj10TChyKX19ZnVuY3Rpb24gdF8oZSl7ZT1udWxsIT1lJiZudWxsIT1lLm93bmVyRG9jdW1lbnQmJm51bGwhPWUub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldz9lLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXc6d2luZG93O2Zvcih2YXIgbj1ubihlLmRvY3VtZW50KTtuIGluc3RhbmNlb2YgZS5IVE1MSUZyYW1lRWxlbWVudDspe3RyeXt2YXIgdD0ic3RyaW5nIj09dHlwZW9mIG4uY29udGVudFdpbmRvdy5sb2NhdGlvbi5ocmVmfWNhdGNoKGUpe3Q9ITF9aWYodCllPW4uY29udGVudFdpbmRvdztlbHNlIGJyZWFrO249bm4oZS5kb2N1bWVudCl9cmV0dXJuIG59ZnVuY3Rpb24gdEYoZSl7dmFyIG49ZSYmZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiBuJiYoImlucHV0Ij09PW4mJigidGV4dCI9PT1lLnR5cGV8fCJzZWFyY2giPT09ZS50eXBlfHwidGVsIj09PWUudHlwZXx8InVybCI9PT1lLnR5cGV8fCJwYXNzd29yZCI9PT1lLnR5cGUpfHwidGV4dGFyZWEiPT09bnx8InRydWUiPT09ZS5jb250ZW50RWRpdGFibGUpfXZhciB0RD1uUCYmImRvY3VtZW50TW9kZSJpbiBkb2N1bWVudCYmMTE+PWRvY3VtZW50LmRvY3VtZW50TW9kZSx0Tz1udWxsLHRNPW51bGwsdEE9bnVsbCx0Uj0hMTtmdW5jdGlvbiB0SShlLG4sdCl7dmFyIHI9dC53aW5kb3c9PT10P3QuZG9jdW1lbnQ6OT09PXQubm9kZVR5cGU/dDp0Lm93bmVyRG9jdW1lbnQ7dFJ8fG51bGw9PXRPfHx0TyE9PW5uKHIpfHwocj0ic2VsZWN0aW9uU3RhcnQiaW4ocj10TykmJnRGKHIpP3tzdGFydDpyLnNlbGVjdGlvblN0YXJ0LGVuZDpyLnNlbGVjdGlvbkVuZH06e2FuY2hvck5vZGU6KHI9KHIub3duZXJEb2N1bWVudCYmci5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx3aW5kb3cpLmdldFNlbGVjdGlvbigpKS5hbmNob3JOb2RlLGFuY2hvck9mZnNldDpyLmFuY2hvck9mZnNldCxmb2N1c05vZGU6ci5mb2N1c05vZGUsZm9jdXNPZmZzZXQ6ci5mb2N1c09mZnNldH0sdEEmJnROKHRBLHIpfHwodEE9ciwwPChyPXNyKHRNLCJvblNlbGVjdCIpKS5sZW5ndGgmJihuPW5ldyBuUSgib25TZWxlY3QiLCJzZWxlY3QiLG51bGwsbix0KSxlLnB1c2goe2V2ZW50Om4sbGlzdGVuZXJzOnJ9KSxuLnRhcmdldD10TykpKX1mdW5jdGlvbiB0VShlLG4pe3ZhciB0PXt9O3JldHVybiB0W2UudG9Mb3dlckNhc2UoKV09bi50b0xvd2VyQ2FzZSgpLHRbIldlYmtpdCIrZV09IndlYmtpdCIrbix0WyJNb3oiK2VdPSJtb3oiK24sdH12YXIgdCQ9e2FuaW1hdGlvbmVuZDp0VSgiQW5pbWF0aW9uIiwiQW5pbWF0aW9uRW5kIiksYW5pbWF0aW9uaXRlcmF0aW9uOnRVKCJBbmltYXRpb24iLCJBbmltYXRpb25JdGVyYXRpb24iKSxhbmltYXRpb25zdGFydDp0VSgiQW5pbWF0aW9uIiwiQW5pbWF0aW9uU3RhcnQiKSx0cmFuc2l0aW9ucnVuOnRVKCJUcmFuc2l0aW9uIiwiVHJhbnNpdGlvblJ1biIpLHRyYW5zaXRpb25zdGFydDp0VSgiVHJhbnNpdGlvbiIsIlRyYW5zaXRpb25TdGFydCIpLHRyYW5zaXRpb25jYW5jZWw6dFUoIlRyYW5zaXRpb24iLCJUcmFuc2l0aW9uQ2FuY2VsIiksdHJhbnNpdGlvbmVuZDp0VSgiVHJhbnNpdGlvbiIsIlRyYW5zaXRpb25FbmQiKX0sdGo9e30sdFY9e307ZnVuY3Rpb24gdEgoZSl7aWYodGpbZV0pcmV0dXJuIHRqW2VdO2lmKCF0JFtlXSlyZXR1cm4gZTt2YXIgbix0PXQkW2VdO2ZvcihuIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShuKSYmbiBpbiB0VilyZXR1cm4gdGpbZV09dFtuXTtyZXR1cm4gZX1uUCYmKHRWPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlLCJBbmltYXRpb25FdmVudCJpbiB3aW5kb3d8fChkZWxldGUgdCQuYW5pbWF0aW9uZW5kLmFuaW1hdGlvbixkZWxldGUgdCQuYW5pbWF0aW9uaXRlcmF0aW9uLmFuaW1hdGlvbixkZWxldGUgdCQuYW5pbWF0aW9uc3RhcnQuYW5pbWF0aW9uKSwiVHJhbnNpdGlvbkV2ZW50ImluIHdpbmRvd3x8ZGVsZXRlIHQkLnRyYW5zaXRpb25lbmQudHJhbnNpdGlvbik7dmFyIHRRPXRIKCJhbmltYXRpb25lbmQiKSx0Qj10SCgiYW5pbWF0aW9uaXRlcmF0aW9uIiksdFc9dEgoImFuaW1hdGlvbnN0YXJ0IiksdHE9dEgoInRyYW5zaXRpb25ydW4iKSx0Sz10SCgidHJhbnNpdGlvbnN0YXJ0IiksdFk9dEgoInRyYW5zaXRpb25jYW5jZWwiKSx0WD10SCgidHJhbnNpdGlvbmVuZCIpLHRHPW5ldyBNYXAsdFo9ImFib3J0IGF1eENsaWNrIGJlZm9yZVRvZ2dsZSBjYW5jZWwgY2FuUGxheSBjYW5QbGF5VGhyb3VnaCBjbGljayBjbG9zZSBjb250ZXh0TWVudSBjb3B5IGN1dCBkcmFnIGRyYWdFbmQgZHJhZ0VudGVyIGRyYWdFeGl0IGRyYWdMZWF2ZSBkcmFnT3ZlciBkcmFnU3RhcnQgZHJvcCBkdXJhdGlvbkNoYW5nZSBlbXB0aWVkIGVuY3J5cHRlZCBlbmRlZCBlcnJvciBnb3RQb2ludGVyQ2FwdHVyZSBpbnB1dCBpbnZhbGlkIGtleURvd24ga2V5UHJlc3Mga2V5VXAgbG9hZCBsb2FkZWREYXRhIGxvYWRlZE1ldGFkYXRhIGxvYWRTdGFydCBsb3N0UG9pbnRlckNhcHR1cmUgbW91c2VEb3duIG1vdXNlTW92ZSBtb3VzZU91dCBtb3VzZU92ZXIgbW91c2VVcCBwYXN0ZSBwYXVzZSBwbGF5IHBsYXlpbmcgcG9pbnRlckNhbmNlbCBwb2ludGVyRG93biBwb2ludGVyTW92ZSBwb2ludGVyT3V0IHBvaW50ZXJPdmVyIHBvaW50ZXJVcCBwcm9ncmVzcyByYXRlQ2hhbmdlIHJlc2V0IHJlc2l6ZSBzZWVrZWQgc2Vla2luZyBzdGFsbGVkIHN1Ym1pdCBzdXNwZW5kIHRpbWVVcGRhdGUgdG91Y2hDYW5jZWwgdG91Y2hFbmQgdG91Y2hTdGFydCB2b2x1bWVDaGFuZ2Ugc2Nyb2xsIHRvZ2dsZSB0b3VjaE1vdmUgd2FpdGluZyB3aGVlbCIuc3BsaXQoIiAiKTtmdW5jdGlvbiB0SihlLG4pe3RHLnNldChlLG4pLGVKKG4sW2VdKX10Wi5wdXNoKCJzY3JvbGxFbmQiKTt2YXIgdDA9ImZ1bmN0aW9uIj09dHlwZW9mIHJlcG9ydEVycm9yP3JlcG9ydEVycm9yOmZ1bmN0aW9uKGUpe2lmKCJvYmplY3QiPT10eXBlb2Ygd2luZG93JiYiZnVuY3Rpb24iPT10eXBlb2Ygd2luZG93LkVycm9yRXZlbnQpe3ZhciBuPW5ldyB3aW5kb3cuRXJyb3JFdmVudCgiZXJyb3IiLHtidWJibGVzOiEwLGNhbmNlbGFibGU6ITAsbWVzc2FnZToib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lJiYic3RyaW5nIj09dHlwZW9mIGUubWVzc2FnZT9TdHJpbmcoZS5tZXNzYWdlKTpTdHJpbmcoZSksZXJyb3I6ZX0pO2lmKCF3aW5kb3cuZGlzcGF0Y2hFdmVudChuKSlyZXR1cm59ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIGwmJiJmdW5jdGlvbiI9PXR5cGVvZiBsLmVtaXQpcmV0dXJuIHZvaWQgbC5lbWl0KCJ1bmNhdWdodEV4Y2VwdGlvbiIsZSk7Y29uc29sZS5lcnJvcihlKX0sdDE9W10sdDI9MCx0Mz0wO2Z1bmN0aW9uIHQ0KCl7Zm9yKHZhciBlPXQyLG49dDM9dDI9MDtuPGU7KXt2YXIgdD10MVtuXTt0MVtuKytdPW51bGw7dmFyIHI9dDFbbl07dDFbbisrXT1udWxsO3ZhciBsPXQxW25dO3QxW24rK109bnVsbDt2YXIgYT10MVtuXTtpZih0MVtuKytdPW51bGwsbnVsbCE9PXImJm51bGwhPT1sKXt2YXIgbz1yLnBlbmRpbmc7bnVsbD09PW8/bC5uZXh0PWw6KGwubmV4dD1vLm5leHQsby5uZXh0PWwpLHIucGVuZGluZz1sfTAhPT1hJiZ0OSh0LGwsYSl9fWZ1bmN0aW9uIHQ4KGUsbix0LHIpe3QxW3QyKytdPWUsdDFbdDIrK109bix0MVt0MisrXT10LHQxW3QyKytdPXIsdDN8PXIsZS5sYW5lc3w9cixudWxsIT09KGU9ZS5hbHRlcm5hdGUpJiYoZS5sYW5lc3w9cil9ZnVuY3Rpb24gdDYoZSxuLHQscil7cmV0dXJuIHQ4KGUsbix0LHIpLHQ3KGUpfWZ1bmN0aW9uIHQ1KGUsbil7cmV0dXJuIHQ4KGUsbnVsbCxudWxsLG4pLHQ3KGUpfWZ1bmN0aW9uIHQ5KGUsbix0KXtlLmxhbmVzfD10O3ZhciByPWUuYWx0ZXJuYXRlO251bGwhPT1yJiYoci5sYW5lc3w9dCk7Zm9yKHZhciBsPSExLGE9ZS5yZXR1cm47bnVsbCE9PWE7KWEuY2hpbGRMYW5lc3w9dCxudWxsIT09KHI9YS5hbHRlcm5hdGUpJiYoci5jaGlsZExhbmVzfD10KSwyMj09PWEudGFnJiYobnVsbD09PShlPWEuc3RhdGVOb2RlKXx8MSZlLl92aXNpYmlsaXR5fHwobD0hMCkpLGU9YSxhPWEucmV0dXJuO3JldHVybiAzPT09ZS50YWc/KGE9ZS5zdGF0ZU5vZGUsbCYmbnVsbCE9PW4mJihsPTMxLWV5KHQpLG51bGw9PT0ocj0oZT1hLmhpZGRlblVwZGF0ZXMpW2xdKT9lW2xdPVtuXTpyLnB1c2gobiksbi5sYW5lPTB4MjAwMDAwMDB8dCksYSk6bnVsbH1mdW5jdGlvbiB0NyhlKXtpZig1MDxpdCl0aHJvdyBpdD0wLGlyPW51bGwsRXJyb3IoaSgxODUpKTtmb3IodmFyIG49ZS5yZXR1cm47bnVsbCE9PW47KW49KGU9bikucmV0dXJuO3JldHVybiAzPT09ZS50YWc/ZS5zdGF0ZU5vZGU6bnVsbH12YXIgcmU9e307ZnVuY3Rpb24gcm4oZSxuLHQscil7dGhpcy50YWc9ZSx0aGlzLmtleT10LHRoaXMuc2libGluZz10aGlzLmNoaWxkPXRoaXMucmV0dXJuPXRoaXMuc3RhdGVOb2RlPXRoaXMudHlwZT10aGlzLmVsZW1lbnRUeXBlPW51bGwsdGhpcy5pbmRleD0wLHRoaXMucmVmQ2xlYW51cD10aGlzLnJlZj1udWxsLHRoaXMucGVuZGluZ1Byb3BzPW4sdGhpcy5kZXBlbmRlbmNpZXM9dGhpcy5tZW1vaXplZFN0YXRlPXRoaXMudXBkYXRlUXVldWU9dGhpcy5tZW1vaXplZFByb3BzPW51bGwsdGhpcy5tb2RlPXIsdGhpcy5zdWJ0cmVlRmxhZ3M9dGhpcy5mbGFncz0wLHRoaXMuZGVsZXRpb25zPW51bGwsdGhpcy5jaGlsZExhbmVzPXRoaXMubGFuZXM9MCx0aGlzLmFsdGVybmF0ZT1udWxsfWZ1bmN0aW9uIHJ0KGUsbix0LHIpe3JldHVybiBuZXcgcm4oZSxuLHQscil9ZnVuY3Rpb24gcnIoZSl7cmV0dXJuISghKGU9ZS5wcm90b3R5cGUpfHwhZS5pc1JlYWN0Q29tcG9uZW50KX1mdW5jdGlvbiBybChlLG4pe3ZhciB0PWUuYWx0ZXJuYXRlO3JldHVybiBudWxsPT09dD8oKHQ9cnQoZS50YWcsbixlLmtleSxlLm1vZGUpKS5lbGVtZW50VHlwZT1lLmVsZW1lbnRUeXBlLHQudHlwZT1lLnR5cGUsdC5zdGF0ZU5vZGU9ZS5zdGF0ZU5vZGUsdC5hbHRlcm5hdGU9ZSxlLmFsdGVybmF0ZT10KToodC5wZW5kaW5nUHJvcHM9bix0LnR5cGU9ZS50eXBlLHQuZmxhZ3M9MCx0LnN1YnRyZWVGbGFncz0wLHQuZGVsZXRpb25zPW51bGwpLHQuZmxhZ3M9MHgzZTAwMDAwJmUuZmxhZ3MsdC5jaGlsZExhbmVzPWUuY2hpbGRMYW5lcyx0LmxhbmVzPWUubGFuZXMsdC5jaGlsZD1lLmNoaWxkLHQubWVtb2l6ZWRQcm9wcz1lLm1lbW9pemVkUHJvcHMsdC5tZW1vaXplZFN0YXRlPWUubWVtb2l6ZWRTdGF0ZSx0LnVwZGF0ZVF1ZXVlPWUudXBkYXRlUXVldWUsbj1lLmRlcGVuZGVuY2llcyx0LmRlcGVuZGVuY2llcz1udWxsPT09bj9udWxsOntsYW5lczpuLmxhbmVzLGZpcnN0Q29udGV4dDpuLmZpcnN0Q29udGV4dH0sdC5zaWJsaW5nPWUuc2libGluZyx0LmluZGV4PWUuaW5kZXgsdC5yZWY9ZS5yZWYsdC5yZWZDbGVhbnVwPWUucmVmQ2xlYW51cCx0fWZ1bmN0aW9uIHJhKGUsbil7ZS5mbGFncyY9MHgzZTAwMDAyO3ZhciB0PWUuYWx0ZXJuYXRlO3JldHVybiBudWxsPT09dD8oZS5jaGlsZExhbmVzPTAsZS5sYW5lcz1uLGUuY2hpbGQ9bnVsbCxlLnN1YnRyZWVGbGFncz0wLGUubWVtb2l6ZWRQcm9wcz1udWxsLGUubWVtb2l6ZWRTdGF0ZT1udWxsLGUudXBkYXRlUXVldWU9bnVsbCxlLmRlcGVuZGVuY2llcz1udWxsLGUuc3RhdGVOb2RlPW51bGwpOihlLmNoaWxkTGFuZXM9dC5jaGlsZExhbmVzLGUubGFuZXM9dC5sYW5lcyxlLmNoaWxkPXQuY2hpbGQsZS5zdWJ0cmVlRmxhZ3M9MCxlLmRlbGV0aW9ucz1udWxsLGUubWVtb2l6ZWRQcm9wcz10Lm1lbW9pemVkUHJvcHMsZS5tZW1vaXplZFN0YXRlPXQubWVtb2l6ZWRTdGF0ZSxlLnVwZGF0ZVF1ZXVlPXQudXBkYXRlUXVldWUsZS50eXBlPXQudHlwZSxlLmRlcGVuZGVuY2llcz1udWxsPT09KG49dC5kZXBlbmRlbmNpZXMpP251bGw6e2xhbmVzOm4ubGFuZXMsZmlyc3RDb250ZXh0Om4uZmlyc3RDb250ZXh0fSksZX1mdW5jdGlvbiBybyhlLG4sdCxyLGwsYSl7dmFyIG89MDtpZihyPWUsImZ1bmN0aW9uIj09dHlwZW9mIGUpcnIoZSkmJihvPTEpO2Vsc2UgaWYoInN0cmluZyI9PXR5cGVvZiBlKW89IWZ1bmN0aW9uKGUsbix0KXtpZigxPT09dHx8bnVsbCE9bi5pdGVtUHJvcClyZXR1cm4hMTtzd2l0Y2goZSl7Y2FzZSJtZXRhIjpjYXNlInRpdGxlIjpyZXR1cm4hMDtjYXNlInN0eWxlIjppZigic3RyaW5nIiE9dHlwZW9mIG4ucHJlY2VkZW5jZXx8InN0cmluZyIhPXR5cGVvZiBuLmhyZWZ8fCIiPT09bi5ocmVmKWJyZWFrO3JldHVybiEwO2Nhc2UibGluayI6aWYoInN0cmluZyIhPXR5cGVvZiBuLnJlbHx8InN0cmluZyIhPXR5cGVvZiBuLmhyZWZ8fCIiPT09bi5ocmVmfHxuLm9uTG9hZHx8bi5vbkVycm9yKWJyZWFrO2lmKCJzdHlsZXNoZWV0Ij09PW4ucmVsKXJldHVybiBlPW4uZGlzYWJsZWQsInN0cmluZyI9PXR5cGVvZiBuLnByZWNlZGVuY2UmJm51bGw9PWU7cmV0dXJuITA7Y2FzZSJzY3JpcHQiOmlmKG4uYXN5bmMmJiJmdW5jdGlvbiIhPXR5cGVvZiBuLmFzeW5jJiYic3ltYm9sIiE9dHlwZW9mIG4uYXN5bmMmJiFuLm9uTG9hZCYmIW4ub25FcnJvciYmbi5zcmMmJiJzdHJpbmciPT10eXBlb2Ygbi5zcmMpcmV0dXJuITB9cmV0dXJuITF9KGUsdCxWLmN1cnJlbnQpPyJodG1sIj09PWV8fCJoZWFkIj09PWV8fCJib2R5Ij09PWU/Mjc6NToyNjtlbHNlIGU6c3dpdGNoKGUpe2Nhc2UgTjpyZXR1cm4oZT1ydCgzMSx0LG4sbCkpLmVsZW1lbnRUeXBlPU4sZS5sYW5lcz1hLGU7Y2FzZSB2OnJldHVybiBydSh0LmNoaWxkcmVuLGwsYSxuKTtjYXNlIGI6bz04LGx8PTI0O2JyZWFrO2Nhc2UgazpyZXR1cm4oZT1ydCgxMix0LG4sMnxsKSkuZWxlbWVudFR5cGU9ayxlLmxhbmVzPWEsZTtjYXNlIEU6cmV0dXJuKGU9cnQoMTMsdCxuLGwpKS5lbGVtZW50VHlwZT1FLGUubGFuZXM9YSxlO2Nhc2UgejpyZXR1cm4oZT1ydCgxOSx0LG4sbCkpLmVsZW1lbnRUeXBlPXosZS5sYW5lcz1hLGU7ZGVmYXVsdDppZigib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lKXN3aXRjaChlLiQkdHlwZW9mKXtjYXNlIFM6bz0xMDticmVhayBlO2Nhc2UgdzpvPTk7YnJlYWsgZTtjYXNlIHg6bz0xMTticmVhayBlO2Nhc2UgQzpvPTE0O2JyZWFrIGU7Y2FzZSBQOm89MTYscj1udWxsO2JyZWFrIGV9bz0yOSx0PUVycm9yKGkoMTMwLG51bGw9PT1lPyJudWxsIjp0eXBlb2YgZSwiIikpLHI9bnVsbH1yZXR1cm4obj1ydChvLHQsbixsKSkuZWxlbWVudFR5cGU9ZSxuLnR5cGU9cixuLmxhbmVzPWEsbn1mdW5jdGlvbiBydShlLG4sdCxyKXtyZXR1cm4oZT1ydCg3LGUscixuKSkubGFuZXM9dCxlfWZ1bmN0aW9uIHJpKGUsbix0KXtyZXR1cm4oZT1ydCg2LGUsbnVsbCxuKSkubGFuZXM9dCxlfWZ1bmN0aW9uIHJzKGUpe3ZhciBuPXJ0KDE4LG51bGwsbnVsbCwwKTtyZXR1cm4gbi5zdGF0ZU5vZGU9ZSxufWZ1bmN0aW9uIHJjKGUsbix0KXtyZXR1cm4obj1ydCg0LG51bGwhPT1lLmNoaWxkcmVuP2UuY2hpbGRyZW46W10sZS5rZXksbikpLmxhbmVzPXQsbi5zdGF0ZU5vZGU9e2NvbnRhaW5lckluZm86ZS5jb250YWluZXJJbmZvLHBlbmRpbmdDaGlsZHJlbjpudWxsLGltcGxlbWVudGF0aW9uOmUuaW1wbGVtZW50YXRpb259LG59dmFyIHJmPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIHJkKGUsbil7aWYoIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZSl7dmFyIHQ9cmYuZ2V0KGUpO3JldHVybiB2b2lkIDAhPT10P3Q6KG49e3ZhbHVlOmUsc291cmNlOm4sc3RhY2s6SihuKX0scmYuc2V0KGUsbiksbil9cmV0dXJue3ZhbHVlOmUsc291cmNlOm4sc3RhY2s6SihuKX19dmFyIHJwPVtdLHJtPTAscmg9bnVsbCxyZz0wLHJ5PVtdLHJ2PTAscmI9bnVsbCxyaz0xLHJ3PSIiO2Z1bmN0aW9uIHJTKGUsbil7cnBbcm0rK109cmcscnBbcm0rK109cmgscmg9ZSxyZz1ufWZ1bmN0aW9uIHJ4KGUsbix0KXtyeVtydisrXT1yayxyeVtydisrXT1ydyxyeVtydisrXT1yYixyYj1lO3ZhciByPXJrO2U9cnc7dmFyIGw9MzItZXkociktMTtyJj1+KDE8PGwpLHQrPTE7dmFyIGE9MzItZXkobikrbDtpZigzMDxhKXt2YXIgbz1sLWwlNTthPShyJigxPDxvKS0xKS50b1N0cmluZygzMikscj4+PW8sbC09byxyaz0xPDwzMi1leShuKStsfHQ8PGx8cixydz1hK2V9ZWxzZSByaz0xPDxhfHQ8PGx8cixydz1lfWZ1bmN0aW9uIHJFKGUpe251bGwhPT1lLnJldHVybiYmKHJTKGUsMSkscngoZSwxLDApKX1mdW5jdGlvbiByeihlKXtmb3IoO2U9PT1yaDspcmg9cnBbLS1ybV0scnBbcm1dPW51bGwscmc9cnBbLS1ybV0scnBbcm1dPW51bGw7Zm9yKDtlPT09cmI7KXJiPXJ5Wy0tcnZdLHJ5W3J2XT1udWxsLHJ3PXJ5Wy0tcnZdLHJ5W3J2XT1udWxsLHJrPXJ5Wy0tcnZdLHJ5W3J2XT1udWxsfWZ1bmN0aW9uIHJDKGUsbil7cnlbcnYrK109cmsscnlbcnYrK109cncscnlbcnYrK109cmIscms9bi5pZCxydz1uLm92ZXJmbG93LHJiPWV9dmFyIHJQPW51bGwsck49bnVsbCxyTD0hMSxyVD1udWxsLHJfPSExLHJGPUVycm9yKGkoNTE5KSk7ZnVuY3Rpb24gckQoZSl7dmFyIG49RXJyb3IoaSg0MTgsMTxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXT8idGV4dCI6IkhUTUwiLCIiKSk7dGhyb3cgclUocmQobixlKSksckZ9ZnVuY3Rpb24gck8oZSl7dmFyIG49ZS5zdGF0ZU5vZGUsdD1lLnR5cGUscj1lLm1lbW9pemVkUHJvcHM7c3dpdGNoKG5bZVJdPWUsbltlSV09cix0KXtjYXNlImRpYWxvZyI6aTYoImNhbmNlbCIsbiksaTYoImNsb3NlIixuKTticmVhaztjYXNlImlmcmFtZSI6Y2FzZSJvYmplY3QiOmNhc2UiZW1iZWQiOmk2KCJsb2FkIixuKTticmVhaztjYXNlInZpZGVvIjpjYXNlImF1ZGlvIjpmb3IodD0wO3Q8aTMubGVuZ3RoO3QrKylpNihpM1t0XSxuKTticmVhaztjYXNlInNvdXJjZSI6aTYoImVycm9yIixuKTticmVhaztjYXNlImltZyI6Y2FzZSJpbWFnZSI6Y2FzZSJsaW5rIjppNigiZXJyb3IiLG4pLGk2KCJsb2FkIixuKTticmVhaztjYXNlImRldGFpbHMiOmk2KCJ0b2dnbGUiLG4pO2JyZWFrO2Nhc2UiaW5wdXQiOmk2KCJpbnZhbGlkIixuKSxuYShuLHIudmFsdWUsci5kZWZhdWx0VmFsdWUsci5jaGVja2VkLHIuZGVmYXVsdENoZWNrZWQsci50eXBlLHIubmFtZSwhMCk7YnJlYWs7Y2FzZSJzZWxlY3QiOmk2KCJpbnZhbGlkIixuKTticmVhaztjYXNlInRleHRhcmVhIjppNigiaW52YWxpZCIsbiksbnMobixyLnZhbHVlLHIuZGVmYXVsdFZhbHVlLHIuY2hpbGRyZW4pfSJzdHJpbmciIT10eXBlb2YodD1yLmNoaWxkcmVuKSYmIm51bWJlciIhPXR5cGVvZiB0JiYiYmlnaW50IiE9dHlwZW9mIHR8fG4udGV4dENvbnRlbnQ9PT0iIit0fHwhMD09PXIuc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nfHxzcyhuLnRleHRDb250ZW50LHQpPyhudWxsIT1yLnBvcG92ZXImJihpNigiYmVmb3JldG9nZ2xlIixuKSxpNigidG9nZ2xlIixuKSksbnVsbCE9ci5vblNjcm9sbCYmaTYoInNjcm9sbCIsbiksbnVsbCE9ci5vblNjcm9sbEVuZCYmaTYoInNjcm9sbGVuZCIsbiksbnVsbCE9ci5vbkNsaWNrJiYobi5vbmNsaWNrPW52KSxuPSEwKTpuPSExLG58fHJEKGUsITApfWZ1bmN0aW9uIHJNKGUpe2ZvcihyUD1lLnJldHVybjtyUDspc3dpdGNoKHJQLnRhZyl7Y2FzZSA1OmNhc2UgMzE6Y2FzZSAxMzpyXz0hMTtyZXR1cm47Y2FzZSAyNzpjYXNlIDM6cl89ITA7cmV0dXJuO2RlZmF1bHQ6clA9clAucmV0dXJufX1mdW5jdGlvbiByQShlKXtpZihlIT09clApcmV0dXJuITE7aWYoIXJMKXJldHVybiByTShlKSxyTD0hMCwhMTt2YXIgbix0PWUudGFnO2lmKChuPTMhPT10JiYyNyE9PXQpJiYoKG49NT09PXQpJiYobj0iZm9ybSI9PT0obj1lLnR5cGUpfHwiYnV0dG9uIj09PW58fHN2KGUudHlwZSxlLm1lbW9pemVkUHJvcHMpKSxuPSFuKSxuJiZyTiYmckQoZSksck0oZSksMTM9PT10KXtpZighKGU9bnVsbCE9PShlPWUubWVtb2l6ZWRTdGF0ZSk/ZS5kZWh5ZHJhdGVkOm51bGwpKXRocm93IEVycm9yKGkoMzE3KSk7ck49c08oZSl9ZWxzZSBpZigzMT09PXQpe2lmKCEoZT1udWxsIT09KGU9ZS5tZW1vaXplZFN0YXRlKT9lLmRlaHlkcmF0ZWQ6bnVsbCkpdGhyb3cgRXJyb3IoaSgzMTcpKTtyTj1zTyhlKX1lbHNlIDI3PT09dD8odD1yTixzeihlLnR5cGUpPyhlPXNELHNEPW51bGwsck49ZSk6ck49dCk6ck49clA/c0YoZS5zdGF0ZU5vZGUubmV4dFNpYmxpbmcpOm51bGw7cmV0dXJuITB9ZnVuY3Rpb24gclIoKXtyTj1yUD1udWxsLHJMPSExfWZ1bmN0aW9uIHJJKCl7dmFyIGU9clQ7cmV0dXJuIG51bGwhPT1lJiYobnVsbD09PXVaP3VaPWU6dVoucHVzaC5hcHBseSh1WixlKSxyVD1udWxsKSxlfWZ1bmN0aW9uIHJVKGUpe251bGw9PT1yVD9yVD1bZV06clQucHVzaChlKX12YXIgciQ9VShudWxsKSxyaj1udWxsLHJWPW51bGw7ZnVuY3Rpb24gckgoZSxuLHQpe2oociQsbi5fY3VycmVudFZhbHVlKSxuLl9jdXJyZW50VmFsdWU9dH1mdW5jdGlvbiByUShlKXtlLl9jdXJyZW50VmFsdWU9ciQuY3VycmVudCwkKHIkKX1mdW5jdGlvbiByQihlLG4sdCl7Zm9yKDtudWxsIT09ZTspe3ZhciByPWUuYWx0ZXJuYXRlO2lmKChlLmNoaWxkTGFuZXMmbikhPT1uPyhlLmNoaWxkTGFuZXN8PW4sbnVsbCE9PXImJihyLmNoaWxkTGFuZXN8PW4pKTpudWxsIT09ciYmKHIuY2hpbGRMYW5lcyZuKSE9PW4mJihyLmNoaWxkTGFuZXN8PW4pLGU9PT10KWJyZWFrO2U9ZS5yZXR1cm59fWZ1bmN0aW9uIHJXKGUsbix0LHIpe3ZhciBsPWUuY2hpbGQ7Zm9yKG51bGwhPT1sJiYobC5yZXR1cm49ZSk7bnVsbCE9PWw7KXt2YXIgYT1sLmRlcGVuZGVuY2llcztpZihudWxsIT09YSl7dmFyIG89bC5jaGlsZDthPWEuZmlyc3RDb250ZXh0O2U6Zm9yKDtudWxsIT09YTspe3ZhciB1PWE7YT1sO2Zvcih2YXIgcz0wO3M8bi5sZW5ndGg7cysrKWlmKHUuY29udGV4dD09PW5bc10pe2EubGFuZXN8PXQsbnVsbCE9PSh1PWEuYWx0ZXJuYXRlKSYmKHUubGFuZXN8PXQpLHJCKGEucmV0dXJuLHQsZSkscnx8KG89bnVsbCk7YnJlYWsgZX1hPXUubmV4dH19ZWxzZSBpZigxOD09PWwudGFnKXtpZihudWxsPT09KG89bC5yZXR1cm4pKXRocm93IEVycm9yKGkoMzQxKSk7by5sYW5lc3w9dCxudWxsIT09KGE9by5hbHRlcm5hdGUpJiYoYS5sYW5lc3w9dCksckIobyx0LGUpLG89bnVsbH1lbHNlIG89bC5jaGlsZDtpZihudWxsIT09bylvLnJldHVybj1sO2Vsc2UgZm9yKG89bDtudWxsIT09bzspe2lmKG89PT1lKXtvPW51bGw7YnJlYWt9aWYobnVsbCE9PShsPW8uc2libGluZykpe2wucmV0dXJuPW8ucmV0dXJuLG89bDticmVha31vPW8ucmV0dXJufWw9b319ZnVuY3Rpb24gcnEoZSxuLHQscil7ZT1udWxsO2Zvcih2YXIgbD1uLGE9ITE7bnVsbCE9PWw7KXtpZighYSl7aWYoMCE9KDUyNDI4OCZsLmZsYWdzKSlhPSEwO2Vsc2UgaWYoMCE9KDI2MjE0NCZsLmZsYWdzKSlicmVha31pZigxMD09PWwudGFnKXt2YXIgbz1sLmFsdGVybmF0ZTtpZihudWxsPT09byl0aHJvdyBFcnJvcihpKDM4NykpO2lmKG51bGwhPT0obz1vLm1lbW9pemVkUHJvcHMpKXt2YXIgdT1sLnR5cGU7dFAobC5wZW5kaW5nUHJvcHMudmFsdWUsby52YWx1ZSl8fChudWxsIT09ZT9lLnB1c2godSk6ZT1bdV0pfX1lbHNlIGlmKGw9PT1CLmN1cnJlbnQpe2lmKG51bGw9PT0obz1sLmFsdGVybmF0ZSkpdGhyb3cgRXJyb3IoaSgzODcpKTtvLm1lbW9pemVkU3RhdGUubWVtb2l6ZWRTdGF0ZSE9PWwubWVtb2l6ZWRTdGF0ZS5tZW1vaXplZFN0YXRlJiYobnVsbCE9PWU/ZS5wdXNoKHM3KTplPVtzN10pfWw9bC5yZXR1cm59bnVsbCE9PWUmJnJXKG4sZSx0LHIpLG4uZmxhZ3N8PTI2MjE0NH1mdW5jdGlvbiBySyhlKXtmb3IoZT1lLmZpcnN0Q29udGV4dDtudWxsIT09ZTspe2lmKCF0UChlLmNvbnRleHQuX2N1cnJlbnRWYWx1ZSxlLm1lbW9pemVkVmFsdWUpKXJldHVybiEwO2U9ZS5uZXh0fXJldHVybiExfWZ1bmN0aW9uIHJZKGUpe3JqPWUsclY9bnVsbCxudWxsIT09KGU9ZS5kZXBlbmRlbmNpZXMpJiYoZS5maXJzdENvbnRleHQ9bnVsbCl9ZnVuY3Rpb24gclgoZSl7cmV0dXJuIHJaKHJqLGUpfWZ1bmN0aW9uIHJHKGUsbil7cmV0dXJuIG51bGw9PT1yaiYmclkoZSksclooZSxuKX1mdW5jdGlvbiByWihlLG4pe3ZhciB0PW4uX2N1cnJlbnRWYWx1ZTtpZihuPXtjb250ZXh0Om4sbWVtb2l6ZWRWYWx1ZTp0LG5leHQ6bnVsbH0sbnVsbD09PXJWKXtpZihudWxsPT09ZSl0aHJvdyBFcnJvcihpKDMwOCkpO3JWPW4sZS5kZXBlbmRlbmNpZXM9e2xhbmVzOjAsZmlyc3RDb250ZXh0Om59LGUuZmxhZ3N8PTUyNDI4OH1lbHNlIHJWPXJWLm5leHQ9bjtyZXR1cm4gdH12YXIgcko9InVuZGVmaW5lZCIhPXR5cGVvZiBBYm9ydENvbnRyb2xsZXI/QWJvcnRDb250cm9sbGVyOmZ1bmN0aW9uKCl7dmFyIGU9W10sbj10aGlzLnNpZ25hbD17YWJvcnRlZDohMSxhZGRFdmVudExpc3RlbmVyOmZ1bmN0aW9uKG4sdCl7ZS5wdXNoKHQpfX07dGhpcy5hYm9ydD1mdW5jdGlvbigpe24uYWJvcnRlZD0hMCxlLmZvckVhY2goZnVuY3Rpb24oZSl7cmV0dXJuIGUoKX0pfX0scjA9YS51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrLHIxPWEudW5zdGFibGVfTm9ybWFsUHJpb3JpdHkscjI9eyQkdHlwZW9mOlMsQ29uc3VtZXI6bnVsbCxQcm92aWRlcjpudWxsLF9jdXJyZW50VmFsdWU6bnVsbCxfY3VycmVudFZhbHVlMjpudWxsLF90aHJlYWRDb3VudDowfTtmdW5jdGlvbiByMygpe3JldHVybntjb250cm9sbGVyOm5ldyBySixkYXRhOm5ldyBNYXAscmVmQ291bnQ6MH19ZnVuY3Rpb24gcjQoZSl7ZS5yZWZDb3VudC0tLDA9PT1lLnJlZkNvdW50JiZyMChyMSxmdW5jdGlvbigpe2UuY29udHJvbGxlci5hYm9ydCgpfSl9dmFyIHI4PW51bGwscjY9MCxyNT0wLHI5PW51bGw7ZnVuY3Rpb24gcjcoKXtpZigwPT0tLXI2JiZudWxsIT09cjgpe251bGwhPT1yOSYmKHI5LnN0YXR1cz0iZnVsZmlsbGVkIik7dmFyIGU9cjg7cjg9bnVsbCxyNT0wLHI5PW51bGw7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspKDAsZVtuXSkoKX19dmFyIGxlPU8uUztPLlM9ZnVuY3Rpb24oZSxuKXsib2JqZWN0Ij09dHlwZW9mIG4mJm51bGwhPT1uJiYiZnVuY3Rpb24iPT10eXBlb2Ygbi50aGVuJiZmdW5jdGlvbihlLG4pe2lmKG51bGw9PT1yOCl7dmFyIHQ9cjg9W107cjY9MCxyNT1pWigpLHI5PXtzdGF0dXM6InBlbmRpbmciLHZhbHVlOnZvaWQgMCx0aGVuOmZ1bmN0aW9uKGUpe3QucHVzaChlKX19fXI2Kyssbi50aGVuKHI3LHI3KX0oMCxuKSxudWxsIT09bGUmJmxlKGUsbil9O3ZhciBsbj1VKG51bGwpO2Z1bmN0aW9uIGx0KCl7dmFyIGU9bG4uY3VycmVudDtyZXR1cm4gbnVsbCE9PWU/ZTp1QS5wb29sZWRDYWNoZX1mdW5jdGlvbiBscihlLG4pe251bGw9PT1uP2oobG4sbG4uY3VycmVudCk6aihsbixuLnBvb2wpfWZ1bmN0aW9uIGxsKCl7dmFyIGU9bHQoKTtyZXR1cm4gbnVsbD09PWU/bnVsbDp7cGFyZW50OnIyLl9jdXJyZW50VmFsdWUscG9vbDplfX12YXIgbGE9RXJyb3IoaSg0NjApKSxsbz1FcnJvcihpKDQ3NCkpLGx1PUVycm9yKGkoNTQyKSksbGk9e3RoZW46ZnVuY3Rpb24oKXt9fTtmdW5jdGlvbiBscyhlKXtyZXR1cm4iZnVsZmlsbGVkIj09PShlPWUuc3RhdHVzKXx8InJlamVjdGVkIj09PWV9ZnVuY3Rpb24gbGMoZSxuLHQpe3N3aXRjaCh2b2lkIDA9PT0odD1lW3RdKT9lLnB1c2gobik6dCE9PW4mJihuLnRoZW4obnYsbnYpLG49dCksbi5zdGF0dXMpe2Nhc2UiZnVsZmlsbGVkIjpyZXR1cm4gbi52YWx1ZTtjYXNlInJlamVjdGVkIjp0aHJvdyBsbShlPW4ucmVhc29uKSxlO2RlZmF1bHQ6aWYoInN0cmluZyI9PXR5cGVvZiBuLnN0YXR1cyluLnRoZW4obnYsbnYpO2Vsc2V7aWYobnVsbCE9PShlPXVBKSYmMTAwPGUuc2hlbGxTdXNwZW5kQ291bnRlcil0aHJvdyBFcnJvcihpKDQ4MikpOyhlPW4pLnN0YXR1cz0icGVuZGluZyIsZS50aGVuKGZ1bmN0aW9uKGUpe2lmKCJwZW5kaW5nIj09PW4uc3RhdHVzKXt2YXIgdD1uO3Quc3RhdHVzPSJmdWxmaWxsZWQiLHQudmFsdWU9ZX19LGZ1bmN0aW9uKGUpe2lmKCJwZW5kaW5nIj09PW4uc3RhdHVzKXt2YXIgdD1uO3Quc3RhdHVzPSJyZWplY3RlZCIsdC5yZWFzb249ZX19KX1zd2l0Y2gobi5zdGF0dXMpe2Nhc2UiZnVsZmlsbGVkIjpyZXR1cm4gbi52YWx1ZTtjYXNlInJlamVjdGVkIjp0aHJvdyBsbShlPW4ucmVhc29uKSxlfXRocm93IGxkPW4sbGF9fWZ1bmN0aW9uIGxmKGUpe3RyeXtyZXR1cm4oMCxlLl9pbml0KShlLl9wYXlsb2FkKX1jYXRjaChlKXtpZihudWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgZS50aGVuKXRocm93IGxkPWUsbGE7dGhyb3cgZX19dmFyIGxkPW51bGw7ZnVuY3Rpb24gbHAoKXtpZihudWxsPT09bGQpdGhyb3cgRXJyb3IoaSg0NTkpKTt2YXIgZT1sZDtyZXR1cm4gbGQ9bnVsbCxlfWZ1bmN0aW9uIGxtKGUpe2lmKGU9PT1sYXx8ZT09PWx1KXRocm93IEVycm9yKGkoNDgzKSl9dmFyIGxoPW51bGwsbGc9MDtmdW5jdGlvbiBseShlKXt2YXIgbj1sZztyZXR1cm4gbGcrPTEsbnVsbD09PWxoJiYobGg9W10pLGxjKGxoLGUsbil9ZnVuY3Rpb24gbHYoZSxuKXtlLnJlZj12b2lkIDAhPT0obj1uLnByb3BzLnJlZik/bjpudWxsfWZ1bmN0aW9uIGxiKGUsbil7aWYobi4kJHR5cGVvZj09PWgpdGhyb3cgRXJyb3IoaSg1MjUpKTt0aHJvdyBFcnJvcihpKDMxLCJbb2JqZWN0IE9iamVjdF0iPT09KGU9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG4pKT8ib2JqZWN0IHdpdGgga2V5cyB7IitPYmplY3Qua2V5cyhuKS5qb2luKCIsICIpKyJ9IjplKSl9ZnVuY3Rpb24gbGsoZSl7ZnVuY3Rpb24gbihuLHQpe2lmKGUpe3ZhciByPW4uZGVsZXRpb25zO251bGw9PT1yPyhuLmRlbGV0aW9ucz1bdF0sbi5mbGFnc3w9MTYpOnIucHVzaCh0KX19ZnVuY3Rpb24gdCh0LHIpe2lmKCFlKXJldHVybiBudWxsO2Zvcig7bnVsbCE9PXI7KW4odCxyKSxyPXIuc2libGluZztyZXR1cm4gbnVsbH1mdW5jdGlvbiByKGUpe2Zvcih2YXIgbj1uZXcgTWFwO251bGwhPT1lOyludWxsIT09ZS5rZXk/bi5zZXQoZS5rZXksZSk6bi5zZXQoZS5pbmRleCxlKSxlPWUuc2libGluZztyZXR1cm4gbn1mdW5jdGlvbiBsKGUsbil7cmV0dXJuKGU9cmwoZSxuKSkuaW5kZXg9MCxlLnNpYmxpbmc9bnVsbCxlfWZ1bmN0aW9uIGEobix0LHIpe3JldHVybihuLmluZGV4PXIsZSk/bnVsbCE9PShyPW4uYWx0ZXJuYXRlKT8ocj1yLmluZGV4KTx0PyhuLmZsYWdzfD0weDQwMDAwMDIsdCk6cjoobi5mbGFnc3w9MHg0MDAwMDAyLHQpOihuLmZsYWdzfD0xMDQ4NTc2LHQpfWZ1bmN0aW9uIG8obil7cmV0dXJuIGUmJm51bGw9PT1uLmFsdGVybmF0ZSYmKG4uZmxhZ3N8PTB4NDAwMDAwMiksbn1mdW5jdGlvbiB1KGUsbix0LHIpe3JldHVybiBudWxsPT09bnx8NiE9PW4udGFnPyhuPXJpKHQsZS5tb2RlLHIpKS5yZXR1cm49ZToobj1sKG4sdCkpLnJldHVybj1lLG59ZnVuY3Rpb24gcyhlLG4sdCxyKXt2YXIgYT10LnR5cGU7cmV0dXJuIGE9PT12P2YoZSxuLHQucHJvcHMuY2hpbGRyZW4scix0LmtleSk6KG51bGwhPT1uJiYobi5lbGVtZW50VHlwZT09PWF8fCJvYmplY3QiPT10eXBlb2YgYSYmbnVsbCE9PWEmJmEuJCR0eXBlb2Y9PT1QJiZsZihhKT09PW4udHlwZSk/bHYobj1sKG4sdC5wcm9wcyksdCk6bHYobj1ybyh0LnR5cGUsdC5rZXksdC5wcm9wcyxudWxsLGUubW9kZSxyKSx0KSxuLnJldHVybj1lLG4pfWZ1bmN0aW9uIGMoZSxuLHQscil7cmV0dXJuIG51bGw9PT1ufHw0IT09bi50YWd8fG4uc3RhdGVOb2RlLmNvbnRhaW5lckluZm8hPT10LmNvbnRhaW5lckluZm98fG4uc3RhdGVOb2RlLmltcGxlbWVudGF0aW9uIT09dC5pbXBsZW1lbnRhdGlvbj8obj1yYyh0LGUubW9kZSxyKSkucmV0dXJuPWU6KG49bChuLHQuY2hpbGRyZW58fFtdKSkucmV0dXJuPWUsbn1mdW5jdGlvbiBmKGUsbix0LHIsYSl7cmV0dXJuIG51bGw9PT1ufHw3IT09bi50YWc/KG49cnUodCxlLm1vZGUscixhKSkucmV0dXJuPWU6KG49bChuLHQpKS5yZXR1cm49ZSxufWZ1bmN0aW9uIGQoZSxuLHQpe2lmKCJzdHJpbmciPT10eXBlb2YgbiYmIiIhPT1ufHwibnVtYmVyIj09dHlwZW9mIG58fCJiaWdpbnQiPT10eXBlb2YgbilyZXR1cm4obj1yaSgiIituLGUubW9kZSx0KSkucmV0dXJuPWUsbjtpZigib2JqZWN0Ij09dHlwZW9mIG4mJm51bGwhPT1uKXtzd2l0Y2gobi4kJHR5cGVvZil7Y2FzZSBnOnJldHVybiBsdih0PXJvKG4udHlwZSxuLmtleSxuLnByb3BzLG51bGwsZS5tb2RlLHQpLG4pLHQucmV0dXJuPWUsdDtjYXNlIHk6cmV0dXJuKG49cmMobixlLm1vZGUsdCkpLnJldHVybj1lLG47Y2FzZSBQOnJldHVybiBkKGUsbj1sZihuKSx0KX1pZihEKG4pfHxfKG4pKXJldHVybihuPXJ1KG4sZS5tb2RlLHQsbnVsbCkpLnJldHVybj1lLG47aWYoImZ1bmN0aW9uIj09dHlwZW9mIG4udGhlbilyZXR1cm4gZChlLGx5KG4pLHQpO2lmKG4uJCR0eXBlb2Y9PT1TKXJldHVybiBkKGUsckcoZSxuKSx0KTtsYihlLG4pfXJldHVybiBudWxsfWZ1bmN0aW9uIHAoZSxuLHQscil7dmFyIGw9bnVsbCE9PW4/bi5rZXk6bnVsbDtpZigic3RyaW5nIj09dHlwZW9mIHQmJiIiIT09dHx8Im51bWJlciI9PXR5cGVvZiB0fHwiYmlnaW50Ij09dHlwZW9mIHQpcmV0dXJuIG51bGwhPT1sP251bGw6dShlLG4sIiIrdCxyKTtpZigib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPT10KXtzd2l0Y2godC4kJHR5cGVvZil7Y2FzZSBnOnJldHVybiB0LmtleT09PWw/cyhlLG4sdCxyKTpudWxsO2Nhc2UgeTpyZXR1cm4gdC5rZXk9PT1sP2MoZSxuLHQscik6bnVsbDtjYXNlIFA6cmV0dXJuIHAoZSxuLHQ9bGYodCkscil9aWYoRCh0KXx8Xyh0KSlyZXR1cm4gbnVsbCE9PWw/bnVsbDpmKGUsbix0LHIsbnVsbCk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQudGhlbilyZXR1cm4gcChlLG4sbHkodCkscik7aWYodC4kJHR5cGVvZj09PVMpcmV0dXJuIHAoZSxuLHJHKGUsdCkscik7bGIoZSx0KX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBtKGUsbix0LHIsbCl7aWYoInN0cmluZyI9PXR5cGVvZiByJiYiIiE9PXJ8fCJudW1iZXIiPT10eXBlb2Ygcnx8ImJpZ2ludCI9PXR5cGVvZiByKXJldHVybiB1KG4sZT1lLmdldCh0KXx8bnVsbCwiIityLGwpO2lmKCJvYmplY3QiPT10eXBlb2YgciYmbnVsbCE9PXIpe3N3aXRjaChyLiQkdHlwZW9mKXtjYXNlIGc6cmV0dXJuIHMobixlPWUuZ2V0KG51bGw9PT1yLmtleT90OnIua2V5KXx8bnVsbCxyLGwpO2Nhc2UgeTpyZXR1cm4gYyhuLGU9ZS5nZXQobnVsbD09PXIua2V5P3Q6ci5rZXkpfHxudWxsLHIsbCk7Y2FzZSBQOnJldHVybiBtKGUsbix0LHI9bGYociksbCl9aWYoRChyKXx8XyhyKSlyZXR1cm4gZihuLGU9ZS5nZXQodCl8fG51bGwscixsLG51bGwpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiByLnRoZW4pcmV0dXJuIG0oZSxuLHQsbHkociksbCk7aWYoci4kJHR5cGVvZj09PVMpcmV0dXJuIG0oZSxuLHQsckcobixyKSxsKTtsYihuLHIpfXJldHVybiBudWxsfXJldHVybiBmdW5jdGlvbih1LHMsYyxmKXt0cnl7bGc9MDt2YXIgaD1mdW5jdGlvbiB1KHMsYyxmLGgpe2lmKCJvYmplY3QiPT10eXBlb2YgZiYmbnVsbCE9PWYmJmYudHlwZT09PXYmJm51bGw9PT1mLmtleSYmKGY9Zi5wcm9wcy5jaGlsZHJlbiksIm9iamVjdCI9PXR5cGVvZiBmJiZudWxsIT09Zil7c3dpdGNoKGYuJCR0eXBlb2Ype2Nhc2UgZzplOntmb3IodmFyIGI9Zi5rZXk7bnVsbCE9PWM7KXtpZihjLmtleT09PWIpe2lmKChiPWYudHlwZSk9PT12KXtpZig3PT09Yy50YWcpe3QocyxjLnNpYmxpbmcpLChoPWwoYyxmLnByb3BzLmNoaWxkcmVuKSkucmV0dXJuPXMscz1oO2JyZWFrIGV9fWVsc2UgaWYoYy5lbGVtZW50VHlwZT09PWJ8fCJvYmplY3QiPT10eXBlb2YgYiYmbnVsbCE9PWImJmIuJCR0eXBlb2Y9PT1QJiZsZihiKT09PWMudHlwZSl7dChzLGMuc2libGluZyksbHYoaD1sKGMsZi5wcm9wcyksZiksaC5yZXR1cm49cyxzPWg7YnJlYWsgZX10KHMsYyk7YnJlYWt9bihzLGMpLGM9Yy5zaWJsaW5nfWYudHlwZT09PXY/KGg9cnUoZi5wcm9wcy5jaGlsZHJlbixzLm1vZGUsaCxmLmtleSkpLnJldHVybj1zOihsdihoPXJvKGYudHlwZSxmLmtleSxmLnByb3BzLG51bGwscy5tb2RlLGgpLGYpLGgucmV0dXJuPXMpLHM9aH1yZXR1cm4gbyhzKTtjYXNlIHk6ZTp7Zm9yKGI9Zi5rZXk7bnVsbCE9PWM7KXtpZihjLmtleT09PWIpaWYoND09PWMudGFnJiZjLnN0YXRlTm9kZS5jb250YWluZXJJbmZvPT09Zi5jb250YWluZXJJbmZvJiZjLnN0YXRlTm9kZS5pbXBsZW1lbnRhdGlvbj09PWYuaW1wbGVtZW50YXRpb24pe3QocyxjLnNpYmxpbmcpLChoPWwoYyxmLmNoaWxkcmVufHxbXSkpLnJldHVybj1zLHM9aDticmVhayBlfWVsc2V7dChzLGMpO2JyZWFrfW4ocyxjKSxjPWMuc2libGluZ30oaD1yYyhmLHMubW9kZSxoKSkucmV0dXJuPXMscz1ofXJldHVybiBvKHMpO2Nhc2UgUDpyZXR1cm4gdShzLGMsZj1sZihmKSxoKX1pZihEKGYpKXJldHVybiBmdW5jdGlvbihsLG8sdSxpKXtmb3IodmFyIHM9bnVsbCxjPW51bGwsZj1vLGg9bz0wLGc9bnVsbDtudWxsIT09ZiYmaDx1Lmxlbmd0aDtoKyspe2YuaW5kZXg+aD8oZz1mLGY9bnVsbCk6Zz1mLnNpYmxpbmc7dmFyIHk9cChsLGYsdVtoXSxpKTtpZihudWxsPT09eSl7bnVsbD09PWYmJihmPWcpO2JyZWFrfWUmJmYmJm51bGw9PT15LmFsdGVybmF0ZSYmbihsLGYpLG89YSh5LG8saCksbnVsbD09PWM/cz15OmMuc2libGluZz15LGM9eSxmPWd9aWYoaD09PXUubGVuZ3RoKXJldHVybiB0KGwsZiksckwmJnJTKGwsaCkscztpZihudWxsPT09Zil7Zm9yKDtoPHUubGVuZ3RoO2grKyludWxsIT09KGY9ZChsLHVbaF0saSkpJiYobz1hKGYsbyxoKSxudWxsPT09Yz9zPWY6Yy5zaWJsaW5nPWYsYz1mKTtyZXR1cm4gckwmJnJTKGwsaCksc31mb3IoZj1yKGYpO2g8dS5sZW5ndGg7aCsrKW51bGwhPT0oZz1tKGYsbCxoLHVbaF0saSkpJiYoZSYmbnVsbCE9PWcuYWx0ZXJuYXRlJiZmLmRlbGV0ZShudWxsPT09Zy5rZXk/aDpnLmtleSksbz1hKGcsbyxoKSxudWxsPT09Yz9zPWc6Yy5zaWJsaW5nPWcsYz1nKTtyZXR1cm4gZSYmZi5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBuKGwsZSl9KSxyTCYmclMobCxoKSxzfShzLGMsZixoKTtpZihfKGYpKXtpZigiZnVuY3Rpb24iIT10eXBlb2YoYj1fKGYpKSl0aHJvdyBFcnJvcihpKDE1MCkpO3JldHVybiBmdW5jdGlvbihsLG8sdSxzKXtpZihudWxsPT11KXRocm93IEVycm9yKGkoMTUxKSk7Zm9yKHZhciBjPW51bGwsZj1udWxsLGg9byxnPW89MCx5PW51bGwsdj11Lm5leHQoKTtudWxsIT09aCYmIXYuZG9uZTtnKyssdj11Lm5leHQoKSl7aC5pbmRleD5nPyh5PWgsaD1udWxsKTp5PWguc2libGluZzt2YXIgYj1wKGwsaCx2LnZhbHVlLHMpO2lmKG51bGw9PT1iKXtudWxsPT09aCYmKGg9eSk7YnJlYWt9ZSYmaCYmbnVsbD09PWIuYWx0ZXJuYXRlJiZuKGwsaCksbz1hKGIsbyxnKSxudWxsPT09Zj9jPWI6Zi5zaWJsaW5nPWIsZj1iLGg9eX1pZih2LmRvbmUpcmV0dXJuIHQobCxoKSxyTCYmclMobCxnKSxjO2lmKG51bGw9PT1oKXtmb3IoOyF2LmRvbmU7ZysrLHY9dS5uZXh0KCkpbnVsbCE9PSh2PWQobCx2LnZhbHVlLHMpKSYmKG89YSh2LG8sZyksbnVsbD09PWY/Yz12OmYuc2libGluZz12LGY9dik7cmV0dXJuIHJMJiZyUyhsLGcpLGN9Zm9yKGg9cihoKTshdi5kb25lO2crKyx2PXUubmV4dCgpKW51bGwhPT0odj1tKGgsbCxnLHYudmFsdWUscykpJiYoZSYmbnVsbCE9PXYuYWx0ZXJuYXRlJiZoLmRlbGV0ZShudWxsPT09di5rZXk/Zzp2LmtleSksbz1hKHYsbyxnKSxudWxsPT09Zj9jPXY6Zi5zaWJsaW5nPXYsZj12KTtyZXR1cm4gZSYmaC5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBuKGwsZSl9KSxyTCYmclMobCxnKSxjfShzLGMsZj1iLmNhbGwoZiksaCl9aWYoImZ1bmN0aW9uIj09dHlwZW9mIGYudGhlbilyZXR1cm4gdShzLGMsbHkoZiksaCk7aWYoZi4kJHR5cGVvZj09PVMpcmV0dXJuIHUocyxjLHJHKHMsZiksaCk7bGIocyxmKX1yZXR1cm4ic3RyaW5nIj09dHlwZW9mIGYmJiIiIT09Znx8Im51bWJlciI9PXR5cGVvZiBmfHwiYmlnaW50Ij09dHlwZW9mIGY/KGY9IiIrZixudWxsIT09YyYmNj09PWMudGFnPyh0KHMsYy5zaWJsaW5nKSwoaD1sKGMsZikpLnJldHVybj1zKToodChzLGMpLChoPXJpKGYscy5tb2RlLGgpKS5yZXR1cm49cyksbyhzPWgpKTp0KHMsYyl9KHUscyxjLGYpO3JldHVybiBsaD1udWxsLGh9Y2F0Y2goZSl7aWYoZT09PWxhfHxlPT09bHUpdGhyb3cgZTt2YXIgYj1ydCgyOSxlLG51bGwsdS5tb2RlKTtyZXR1cm4gYi5sYW5lcz1mLGIucmV0dXJuPXUsYn1maW5hbGx5e319fXZhciBsdz1sayghMCksbFM9bGsoITEpLGx4PSExO2Z1bmN0aW9uIGxFKGUpe2UudXBkYXRlUXVldWU9e2Jhc2VTdGF0ZTplLm1lbW9pemVkU3RhdGUsZmlyc3RCYXNlVXBkYXRlOm51bGwsbGFzdEJhc2VVcGRhdGU6bnVsbCxzaGFyZWQ6e3BlbmRpbmc6bnVsbCxsYW5lczowLGhpZGRlbkNhbGxiYWNrczpudWxsfSxjYWxsYmFja3M6bnVsbH19ZnVuY3Rpb24gbHooZSxuKXtlPWUudXBkYXRlUXVldWUsbi51cGRhdGVRdWV1ZT09PWUmJihuLnVwZGF0ZVF1ZXVlPXtiYXNlU3RhdGU6ZS5iYXNlU3RhdGUsZmlyc3RCYXNlVXBkYXRlOmUuZmlyc3RCYXNlVXBkYXRlLGxhc3RCYXNlVXBkYXRlOmUubGFzdEJhc2VVcGRhdGUsc2hhcmVkOmUuc2hhcmVkLGNhbGxiYWNrczpudWxsfSl9ZnVuY3Rpb24gbEMoZSl7cmV0dXJue2xhbmU6ZSx0YWc6MCxwYXlsb2FkOm51bGwsY2FsbGJhY2s6bnVsbCxuZXh0Om51bGx9fWZ1bmN0aW9uIGxQKGUsbix0KXt2YXIgcj1lLnVwZGF0ZVF1ZXVlO2lmKG51bGw9PT1yKXJldHVybiBudWxsO2lmKHI9ci5zaGFyZWQsMCE9KDImdU0pKXt2YXIgbD1yLnBlbmRpbmc7cmV0dXJuIG51bGw9PT1sP24ubmV4dD1uOihuLm5leHQ9bC5uZXh0LGwubmV4dD1uKSxyLnBlbmRpbmc9bixuPXQ3KGUpLHQ5KGUsbnVsbCx0KSxufXJldHVybiB0OChlLHIsbix0KSx0NyhlKX1mdW5jdGlvbiBsTihlLG4sdCl7aWYobnVsbCE9PShuPW4udXBkYXRlUXVldWUpJiYobj1uLnNoYXJlZCwwIT0oNDE5NDA0OCZ0KSkpe3ZhciByPW4ubGFuZXM7ciY9ZS5wZW5kaW5nTGFuZXMsdHw9cixuLmxhbmVzPXQsZVQoZSx0KX19ZnVuY3Rpb24gbEwoZSxuKXt2YXIgdD1lLnVwZGF0ZVF1ZXVlLHI9ZS5hbHRlcm5hdGU7aWYobnVsbCE9PXImJnQ9PT0ocj1yLnVwZGF0ZVF1ZXVlKSl7dmFyIGw9bnVsbCxhPW51bGw7aWYobnVsbCE9PSh0PXQuZmlyc3RCYXNlVXBkYXRlKSl7ZG97dmFyIG89e2xhbmU6dC5sYW5lLHRhZzp0LnRhZyxwYXlsb2FkOnQucGF5bG9hZCxjYWxsYmFjazpudWxsLG5leHQ6bnVsbH07bnVsbD09PWE/bD1hPW86YT1hLm5leHQ9byx0PXQubmV4dH13aGlsZShudWxsIT09dCk7bnVsbD09PWE/bD1hPW46YT1hLm5leHQ9bn1lbHNlIGw9YT1uO3Q9e2Jhc2VTdGF0ZTpyLmJhc2VTdGF0ZSxmaXJzdEJhc2VVcGRhdGU6bCxsYXN0QmFzZVVwZGF0ZTphLHNoYXJlZDpyLnNoYXJlZCxjYWxsYmFja3M6ci5jYWxsYmFja3N9LGUudXBkYXRlUXVldWU9dDtyZXR1cm59bnVsbD09PShlPXQubGFzdEJhc2VVcGRhdGUpP3QuZmlyc3RCYXNlVXBkYXRlPW46ZS5uZXh0PW4sdC5sYXN0QmFzZVVwZGF0ZT1ufXZhciBsVD0hMTtmdW5jdGlvbiBsXygpe2lmKGxUKXt2YXIgZT1yOTtpZihudWxsIT09ZSl0aHJvdyBlfX1mdW5jdGlvbiBsRihlLG4sdCxyKXtsVD0hMTt2YXIgbD1lLnVwZGF0ZVF1ZXVlO2x4PSExO3ZhciBhPWwuZmlyc3RCYXNlVXBkYXRlLG89bC5sYXN0QmFzZVVwZGF0ZSx1PWwuc2hhcmVkLnBlbmRpbmc7aWYobnVsbCE9PXUpe2wuc2hhcmVkLnBlbmRpbmc9bnVsbDt2YXIgaT11LHM9aS5uZXh0O2kubmV4dD1udWxsLG51bGw9PT1vP2E9czpvLm5leHQ9cyxvPWk7dmFyIGM9ZS5hbHRlcm5hdGU7bnVsbCE9PWMmJih1PShjPWMudXBkYXRlUXVldWUpLmxhc3RCYXNlVXBkYXRlKSE9PW8mJihudWxsPT09dT9jLmZpcnN0QmFzZVVwZGF0ZT1zOnUubmV4dD1zLGMubGFzdEJhc2VVcGRhdGU9aSl9aWYobnVsbCE9PWEpe3ZhciBmPWwuYmFzZVN0YXRlO2ZvcihvPTAsYz1zPWk9bnVsbCx1PWE7Oyl7dmFyIGQ9LTB4MjAwMDAwMDEmdS5sYW5lLHA9ZCE9PXUubGFuZTtpZihwPyh1SSZkKT09PWQ6KHImZCk9PT1kKXswIT09ZCYmZD09PXI1JiYobFQ9ITApLG51bGwhPT1jJiYoYz1jLm5leHQ9e2xhbmU6MCx0YWc6dS50YWcscGF5bG9hZDp1LnBheWxvYWQsY2FsbGJhY2s6bnVsbCxuZXh0Om51bGx9KTtlOnt2YXIgaD1lLGc9dTtzd2l0Y2goZD1uLGcudGFnKXtjYXNlIDE6aWYoImZ1bmN0aW9uIj09dHlwZW9mKGg9Zy5wYXlsb2FkKSl7Zj1oLmNhbGwodCxmLGQpO2JyZWFrIGV9Zj1oO2JyZWFrIGU7Y2FzZSAzOmguZmxhZ3M9LTY1NTM3JmguZmxhZ3N8MTI4O2Nhc2UgMDppZihudWxsPT0oZD0iZnVuY3Rpb24iPT10eXBlb2YoaD1nLnBheWxvYWQpP2guY2FsbCh0LGYsZCk6aCkpYnJlYWsgZTtmPW0oe30sZixkKTticmVhayBlO2Nhc2UgMjpseD0hMH19bnVsbCE9PShkPXUuY2FsbGJhY2spJiYoZS5mbGFnc3w9NjQscCYmKGUuZmxhZ3N8PTgxOTIpLG51bGw9PT0ocD1sLmNhbGxiYWNrcyk/bC5jYWxsYmFja3M9W2RdOnAucHVzaChkKSl9ZWxzZSBwPXtsYW5lOmQsdGFnOnUudGFnLHBheWxvYWQ6dS5wYXlsb2FkLGNhbGxiYWNrOnUuY2FsbGJhY2ssbmV4dDpudWxsfSxudWxsPT09Yz8ocz1jPXAsaT1mKTpjPWMubmV4dD1wLG98PWQ7aWYobnVsbD09PSh1PXUubmV4dCkpaWYobnVsbD09PSh1PWwuc2hhcmVkLnBlbmRpbmcpKWJyZWFrO2Vsc2UgdT0ocD11KS5uZXh0LHAubmV4dD1udWxsLGwubGFzdEJhc2VVcGRhdGU9cCxsLnNoYXJlZC5wZW5kaW5nPW51bGx9bnVsbD09PWMmJihpPWYpLGwuYmFzZVN0YXRlPWksbC5maXJzdEJhc2VVcGRhdGU9cyxsLmxhc3RCYXNlVXBkYXRlPWMsbnVsbD09PWEmJihsLnNoYXJlZC5sYW5lcz0wKSx1V3w9byxlLmxhbmVzPW8sZS5tZW1vaXplZFN0YXRlPWZ9fWZ1bmN0aW9uIGxEKGUsbil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgRXJyb3IoaSgxOTEsZSkpO2UuY2FsbChuKX1mdW5jdGlvbiBsTyhlLG4pe3ZhciB0PWUuY2FsbGJhY2tzO2lmKG51bGwhPT10KWZvcihlLmNhbGxiYWNrcz1udWxsLGU9MDtlPHQubGVuZ3RoO2UrKylsRCh0W2VdLG4pfXZhciBsTT1VKG51bGwpLGxBPVUoMCk7ZnVuY3Rpb24gbFIoZSxuKXtqKGxBLGU9dVEpLGoobE0sbiksdVE9ZXxuLmJhc2VMYW5lc31mdW5jdGlvbiBsSSgpe2oobEEsdVEpLGoobE0sbE0uY3VycmVudCl9ZnVuY3Rpb24gbFUoKXt1UT1sQS5jdXJyZW50LCQobE0pLCQobEEpfXZhciBsJD1VKG51bGwpLGxqPW51bGw7ZnVuY3Rpb24gbFYoZSl7dmFyIG49ZS5hbHRlcm5hdGU7aihscSwxJmxxLmN1cnJlbnQpLGoobCQsZSksbnVsbD09PWxqJiYobnVsbD09PW58fG51bGwhPT1sTS5jdXJyZW50P2xqPWU6bnVsbCE9PW4ubWVtb2l6ZWRTdGF0ZSYmKGxqPWUpKX1mdW5jdGlvbiBsSChlKXtqKGxxLGxxLmN1cnJlbnQpLGoobCQsZSksbnVsbD09PWxqJiYobGo9ZSl9ZnVuY3Rpb24gbFEoZSl7MjI9PT1lLnRhZz8oaihscSxscS5jdXJyZW50KSxqKGwkLGUpLG51bGw9PT1saiYmKGxqPWUpKTpsQihlKX1mdW5jdGlvbiBsQigpe2oobHEsbHEuY3VycmVudCksaihsJCxsJC5jdXJyZW50KX1mdW5jdGlvbiBsVyhlKXskKGwkKSxsaj09PWUmJihsaj1udWxsKSwkKGxxKX12YXIgbHE9VSgwKTtmdW5jdGlvbiBsSyhlKXtmb3IodmFyIG49ZTtudWxsIT09bjspe2lmKDEzPT09bi50YWcpe3ZhciB0PW4ubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09dCYmKG51bGw9PT0odD10LmRlaHlkcmF0ZWQpfHxzVCh0KXx8c18odCkpKXJldHVybiBufWVsc2UgaWYoMTk9PT1uLnRhZyYmKCJmb3J3YXJkcyI9PT1uLm1lbW9pemVkUHJvcHMucmV2ZWFsT3JkZXJ8fCJiYWNrd2FyZHMiPT09bi5tZW1vaXplZFByb3BzLnJldmVhbE9yZGVyfHwidW5zdGFibGVfbGVnYWN5LWJhY2t3YXJkcyI9PT1uLm1lbW9pemVkUHJvcHMucmV2ZWFsT3JkZXJ8fCJ0b2dldGhlciI9PT1uLm1lbW9pemVkUHJvcHMucmV2ZWFsT3JkZXIpKXtpZigwIT0oMTI4Jm4uZmxhZ3MpKXJldHVybiBufWVsc2UgaWYobnVsbCE9PW4uY2hpbGQpe24uY2hpbGQucmV0dXJuPW4sbj1uLmNoaWxkO2NvbnRpbnVlfWlmKG49PT1lKWJyZWFrO2Zvcig7bnVsbD09PW4uc2libGluZzspe2lmKG51bGw9PT1uLnJldHVybnx8bi5yZXR1cm49PT1lKXJldHVybiBudWxsO249bi5yZXR1cm59bi5zaWJsaW5nLnJldHVybj1uLnJldHVybixuPW4uc2libGluZ31yZXR1cm4gbnVsbH12YXIgbFk9MCxsWD1udWxsLGxHPW51bGwsbFo9bnVsbCxsSj0hMSxsMD0hMSxsMT0hMSxsMj0wLGwzPTAsbDQ9bnVsbCxsOD0wO2Z1bmN0aW9uIGw2KCl7dGhyb3cgRXJyb3IoaSgzMjEpKX1mdW5jdGlvbiBsNShlLG4pe2lmKG51bGw9PT1uKXJldHVybiExO2Zvcih2YXIgdD0wO3Q8bi5sZW5ndGgmJnQ8ZS5sZW5ndGg7dCsrKWlmKCF0UChlW3RdLG5bdF0pKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGw5KGUsbix0LHIsbCxhKXtyZXR1cm4gbFk9YSxsWD1uLG4ubWVtb2l6ZWRTdGF0ZT1udWxsLG4udXBkYXRlUXVldWU9bnVsbCxuLmxhbmVzPTAsTy5IPW51bGw9PT1lfHxudWxsPT09ZS5tZW1vaXplZFN0YXRlP29yOm9sLGwxPSExLGE9dChyLGwpLGwxPSExLGwwJiYoYT1hZShuLHQscixsKSksbDcoZSksYX1mdW5jdGlvbiBsNyhlKXtPLkg9b3Q7dmFyIG49bnVsbCE9PWxHJiZudWxsIT09bEcubmV4dDtpZihsWT0wLGxaPWxHPWxYPW51bGwsbEo9ITEsbDM9MCxsND1udWxsLG4pdGhyb3cgRXJyb3IoaSgzMDApKTtudWxsPT09ZXx8b2t8fG51bGwhPT0oZT1lLmRlcGVuZGVuY2llcykmJnJLKGUpJiYob2s9ITApfWZ1bmN0aW9uIGFlKGUsbix0LHIpe2xYPWU7dmFyIGw9MDtkb3tpZihsMCYmKGw0PW51bGwpLGwzPTAsbDA9ITEsMjU8PWwpdGhyb3cgRXJyb3IoaSgzMDEpKTtpZihsKz0xLGxaPWxHPW51bGwsbnVsbCE9ZS51cGRhdGVRdWV1ZSl7dmFyIGE9ZS51cGRhdGVRdWV1ZTthLmxhc3RFZmZlY3Q9bnVsbCxhLmV2ZW50cz1udWxsLGEuc3RvcmVzPW51bGwsbnVsbCE9YS5tZW1vQ2FjaGUmJihhLm1lbW9DYWNoZS5pbmRleD0wKX1PLkg9b2EsYT1uKHQscil9d2hpbGUobDApO3JldHVybiBhfWZ1bmN0aW9uIGFuKCl7dmFyIGU9Ty5ILG49ZS51c2VTdGF0ZSgpWzBdO3JldHVybiBuPSJmdW5jdGlvbiI9PXR5cGVvZiBuLnRoZW4/YWkobik6bixlPWUudXNlU3RhdGUoKVswXSwobnVsbCE9PWxHP2xHLm1lbW9pemVkU3RhdGU6bnVsbCkhPT1lJiYobFguZmxhZ3N8PTEwMjQpLG59ZnVuY3Rpb24gYXQoKXt2YXIgZT0wIT09bDI7cmV0dXJuIGwyPTAsZX1mdW5jdGlvbiBhcihlLG4sdCl7bi51cGRhdGVRdWV1ZT1lLnVwZGF0ZVF1ZXVlLG4uZmxhZ3MmPS0yMDUzLGUubGFuZXMmPX50fWZ1bmN0aW9uIGFsKGUpe2lmKGxKKXtmb3IoZT1lLm1lbW9pemVkU3RhdGU7bnVsbCE9PWU7KXt2YXIgbj1lLnF1ZXVlO251bGwhPT1uJiYobi5wZW5kaW5nPW51bGwpLGU9ZS5uZXh0fWxKPSExfWxZPTAsbFo9bEc9bFg9bnVsbCxsMD0hMSxsMz1sMj0wLGw0PW51bGx9ZnVuY3Rpb24gYWEoKXt2YXIgZT17bWVtb2l6ZWRTdGF0ZTpudWxsLGJhc2VTdGF0ZTpudWxsLGJhc2VRdWV1ZTpudWxsLHF1ZXVlOm51bGwsbmV4dDpudWxsfTtyZXR1cm4gbnVsbD09PWxaP2xYLm1lbW9pemVkU3RhdGU9bFo9ZTpsWj1sWi5uZXh0PWUsbFp9ZnVuY3Rpb24gYW8oKXtpZihudWxsPT09bEcpe3ZhciBlPWxYLmFsdGVybmF0ZTtlPW51bGwhPT1lP2UubWVtb2l6ZWRTdGF0ZTpudWxsfWVsc2UgZT1sRy5uZXh0O3ZhciBuPW51bGw9PT1sWj9sWC5tZW1vaXplZFN0YXRlOmxaLm5leHQ7aWYobnVsbCE9PW4pbFo9bixsRz1lO2Vsc2V7aWYobnVsbD09PWUpe2lmKG51bGw9PT1sWC5hbHRlcm5hdGUpdGhyb3cgRXJyb3IoaSg0NjcpKTt0aHJvdyBFcnJvcihpKDMxMCkpfWU9e21lbW9pemVkU3RhdGU6KGxHPWUpLm1lbW9pemVkU3RhdGUsYmFzZVN0YXRlOmxHLmJhc2VTdGF0ZSxiYXNlUXVldWU6bEcuYmFzZVF1ZXVlLHF1ZXVlOmxHLnF1ZXVlLG5leHQ6bnVsbH0sbnVsbD09PWxaP2xYLm1lbW9pemVkU3RhdGU9bFo9ZTpsWj1sWi5uZXh0PWV9cmV0dXJuIGxafWZ1bmN0aW9uIGF1KCl7cmV0dXJue2xhc3RFZmZlY3Q6bnVsbCxldmVudHM6bnVsbCxzdG9yZXM6bnVsbCxtZW1vQ2FjaGU6bnVsbH19ZnVuY3Rpb24gYWkoZSl7dmFyIG49bDM7cmV0dXJuIGwzKz0xLG51bGw9PT1sNCYmKGw0PVtdKSxlPWxjKGw0LGUsbiksbj1sWCxudWxsPT09KG51bGw9PT1sWj9uLm1lbW9pemVkU3RhdGU6bFoubmV4dCkmJihPLkg9bnVsbD09PShuPW4uYWx0ZXJuYXRlKXx8bnVsbD09PW4ubWVtb2l6ZWRTdGF0ZT9vcjpvbCksZX1mdW5jdGlvbiBhcyhlKXtpZihudWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS50aGVuKXJldHVybiBhaShlKTtpZihlLiQkdHlwZW9mPT09UylyZXR1cm4gclgoZSl9dGhyb3cgRXJyb3IoaSg0MzgsU3RyaW5nKGUpKSl9ZnVuY3Rpb24gYWMoZSl7dmFyIG49bnVsbCx0PWxYLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT10JiYobj10Lm1lbW9DYWNoZSksbnVsbD09bil7dmFyIHI9bFguYWx0ZXJuYXRlO251bGwhPT1yJiZudWxsIT09KHI9ci51cGRhdGVRdWV1ZSkmJm51bGwhPShyPXIubWVtb0NhY2hlKSYmKG49e2RhdGE6ci5kYXRhLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5zbGljZSgpfSksaW5kZXg6MH0pfWlmKG51bGw9PW4mJihuPXtkYXRhOltdLGluZGV4OjB9KSxudWxsPT09dCYmKHQ9YXUoKSxsWC51cGRhdGVRdWV1ZT10KSx0Lm1lbW9DYWNoZT1uLHZvaWQgMD09PSh0PW4uZGF0YVtuLmluZGV4XSkpZm9yKHQ9bi5kYXRhW24uaW5kZXhdPUFycmF5KGUpLHI9MDtyPGU7cisrKXRbcl09TDtyZXR1cm4gbi5pbmRleCsrLHR9ZnVuY3Rpb24gYWYoZSxuKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygbj9uKGUpOm59ZnVuY3Rpb24gYWQoZSl7cmV0dXJuIGFwKGFvKCksbEcsZSl9ZnVuY3Rpb24gYXAoZSxuLHQpe3ZhciByPWUucXVldWU7aWYobnVsbD09PXIpdGhyb3cgRXJyb3IoaSgzMTEpKTtyLmxhc3RSZW5kZXJlZFJlZHVjZXI9dDt2YXIgbD1lLmJhc2VRdWV1ZSxhPXIucGVuZGluZztpZihudWxsIT09YSl7aWYobnVsbCE9PWwpe3ZhciBvPWwubmV4dDtsLm5leHQ9YS5uZXh0LGEubmV4dD1vfW4uYmFzZVF1ZXVlPWw9YSxyLnBlbmRpbmc9bnVsbH1pZihhPWUuYmFzZVN0YXRlLG51bGw9PT1sKWUubWVtb2l6ZWRTdGF0ZT1hO2Vsc2V7bj1sLm5leHQ7dmFyIHU9bz1udWxsLHM9bnVsbCxjPW4sZj0hMTtkb3t2YXIgZD0tMHgyMDAwMDAwMSZjLmxhbmU7aWYoZCE9PWMubGFuZT8odUkmZCk9PT1kOihsWSZkKT09PWQpe3ZhciBwPWMucmV2ZXJ0TGFuZTtpZigwPT09cCludWxsIT09cyYmKHM9cy5uZXh0PXtsYW5lOjAscmV2ZXJ0TGFuZTowLGdlc3R1cmU6bnVsbCxhY3Rpb246Yy5hY3Rpb24saGFzRWFnZXJTdGF0ZTpjLmhhc0VhZ2VyU3RhdGUsZWFnZXJTdGF0ZTpjLmVhZ2VyU3RhdGUsbmV4dDpudWxsfSksZD09PXI1JiYoZj0hMCk7ZWxzZSBpZigobFkmcCk9PT1wKXtjPWMubmV4dCxwPT09cjUmJihmPSEwKTtjb250aW51ZX1lbHNlIGQ9e2xhbmU6MCxyZXZlcnRMYW5lOmMucmV2ZXJ0TGFuZSxnZXN0dXJlOm51bGwsYWN0aW9uOmMuYWN0aW9uLGhhc0VhZ2VyU3RhdGU6Yy5oYXNFYWdlclN0YXRlLGVhZ2VyU3RhdGU6Yy5lYWdlclN0YXRlLG5leHQ6bnVsbH0sbnVsbD09PXM/KHU9cz1kLG89YSk6cz1zLm5leHQ9ZCxsWC5sYW5lc3w9cCx1V3w9cDtkPWMuYWN0aW9uLGwxJiZ0KGEsZCksYT1jLmhhc0VhZ2VyU3RhdGU/Yy5lYWdlclN0YXRlOnQoYSxkKX1lbHNlIHA9e2xhbmU6ZCxyZXZlcnRMYW5lOmMucmV2ZXJ0TGFuZSxnZXN0dXJlOmMuZ2VzdHVyZSxhY3Rpb246Yy5hY3Rpb24saGFzRWFnZXJTdGF0ZTpjLmhhc0VhZ2VyU3RhdGUsZWFnZXJTdGF0ZTpjLmVhZ2VyU3RhdGUsbmV4dDpudWxsfSxudWxsPT09cz8odT1zPXAsbz1hKTpzPXMubmV4dD1wLGxYLmxhbmVzfD1kLHVXfD1kO2M9Yy5uZXh0fXdoaWxlKG51bGwhPT1jJiZjIT09bik7aWYobnVsbD09PXM/bz1hOnMubmV4dD11LCF0UChhLGUubWVtb2l6ZWRTdGF0ZSkmJihvaz0hMCxmJiZudWxsIT09KHQ9cjkpKSl0aHJvdyB0O2UubWVtb2l6ZWRTdGF0ZT1hLGUuYmFzZVN0YXRlPW8sZS5iYXNlUXVldWU9cyxyLmxhc3RSZW5kZXJlZFN0YXRlPWF9cmV0dXJuIG51bGw9PT1sJiYoci5sYW5lcz0wKSxbZS5tZW1vaXplZFN0YXRlLHIuZGlzcGF0Y2hdfWZ1bmN0aW9uIGFtKGUpe3ZhciBuPWFvKCksdD1uLnF1ZXVlO2lmKG51bGw9PT10KXRocm93IEVycm9yKGkoMzExKSk7dC5sYXN0UmVuZGVyZWRSZWR1Y2VyPWU7dmFyIHI9dC5kaXNwYXRjaCxsPXQucGVuZGluZyxhPW4ubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09bCl7dC5wZW5kaW5nPW51bGw7dmFyIG89bD1sLm5leHQ7ZG8gYT1lKGEsby5hY3Rpb24pLG89by5uZXh0O3doaWxlKG8hPT1sKTt0UChhLG4ubWVtb2l6ZWRTdGF0ZSl8fChvaz0hMCksbi5tZW1vaXplZFN0YXRlPWEsbnVsbD09PW4uYmFzZVF1ZXVlJiYobi5iYXNlU3RhdGU9YSksdC5sYXN0UmVuZGVyZWRTdGF0ZT1hfXJldHVyblthLHJdfWZ1bmN0aW9uIGFoKGUsbix0KXt2YXIgcj1sWCxsPWFvKCksYT1yTDtpZihhKXtpZih2b2lkIDA9PT10KXRocm93IEVycm9yKGkoNDA3KSk7dD10KCl9ZWxzZSB0PW4oKTt2YXIgbz0hdFAoKGxHfHxsKS5tZW1vaXplZFN0YXRlLHQpO2lmKG8mJihsLm1lbW9pemVkU3RhdGU9dCxvaz0hMCksbD1sLnF1ZXVlLGEkKGF2LmJpbmQobnVsbCxyLGwsZSksW2VdKSxsLmdldFNuYXBzaG90IT09bnx8b3x8bnVsbCE9PWxaJiYxJmxaLm1lbW9pemVkU3RhdGUudGFnKXtpZihyLmZsYWdzfD0yMDQ4LGFNKDkse2Rlc3Ryb3k6dm9pZCAwfSxheS5iaW5kKG51bGwscixsLHQsbiksbnVsbCksbnVsbD09PXVBKXRocm93IEVycm9yKGkoMzQ5KSk7YXx8MCE9KDEyNCZsWSl8fGFnKHIsbix0KX1yZXR1cm4gdH1mdW5jdGlvbiBhZyhlLG4sdCl7ZS5mbGFnc3w9MTYzODQsZT17Z2V0U25hcHNob3Q6bix2YWx1ZTp0fSxudWxsPT09KG49bFgudXBkYXRlUXVldWUpPyhuPWF1KCksbFgudXBkYXRlUXVldWU9bixuLnN0b3Jlcz1bZV0pOm51bGw9PT0odD1uLnN0b3Jlcyk/bi5zdG9yZXM9W2VdOnQucHVzaChlKX1mdW5jdGlvbiBheShlLG4sdCxyKXtuLnZhbHVlPXQsbi5nZXRTbmFwc2hvdD1yLGFiKG4pJiZhayhlKX1mdW5jdGlvbiBhdihlLG4sdCl7cmV0dXJuIHQoZnVuY3Rpb24oKXthYihuKSYmYWsoZSl9KX1mdW5jdGlvbiBhYihlKXt2YXIgbj1lLmdldFNuYXBzaG90O2U9ZS52YWx1ZTt0cnl7dmFyIHQ9bigpO3JldHVybiF0UChlLHQpfWNhdGNoKGUpe3JldHVybiEwfX1mdW5jdGlvbiBhayhlKXt2YXIgbj10NShlLDIpO251bGwhPT1uJiZpbyhuLGUsMil9ZnVuY3Rpb24gYXcoZSl7dmFyIG49YWEoKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgZSl7dmFyIHQ9ZTtpZihlPXQoKSxsMSl7ZWcoITApO3RyeXt0KCl9ZmluYWxseXtlZyghMSl9fX1yZXR1cm4gbi5tZW1vaXplZFN0YXRlPW4uYmFzZVN0YXRlPWUsbi5xdWV1ZT17cGVuZGluZzpudWxsLGxhbmVzOjAsZGlzcGF0Y2g6bnVsbCxsYXN0UmVuZGVyZWRSZWR1Y2VyOmFmLGxhc3RSZW5kZXJlZFN0YXRlOmV9LG59ZnVuY3Rpb24gYVMoZSxuLHQscil7cmV0dXJuIGUuYmFzZVN0YXRlPXQsYXAoZSxsRywiZnVuY3Rpb24iPT10eXBlb2Ygcj9yOmFmKX1mdW5jdGlvbiBheChlLG4sdCxyLGwpe2lmKGE3KGUpKXRocm93IEVycm9yKGkoNDg1KSk7aWYobnVsbCE9PShlPW4uYWN0aW9uKSl7dmFyIGE9e3BheWxvYWQ6bCxhY3Rpb246ZSxuZXh0Om51bGwsaXNUcmFuc2l0aW9uOiEwLHN0YXR1czoicGVuZGluZyIsdmFsdWU6bnVsbCxyZWFzb246bnVsbCxsaXN0ZW5lcnM6W10sdGhlbjpmdW5jdGlvbihlKXthLmxpc3RlbmVycy5wdXNoKGUpfX07bnVsbCE9PU8uVD90KCEwKTphLmlzVHJhbnNpdGlvbj0hMSxyKGEpLG51bGw9PT0odD1uLnBlbmRpbmcpPyhhLm5leHQ9bi5wZW5kaW5nPWEsYUUobixhKSk6KGEubmV4dD10Lm5leHQsbi5wZW5kaW5nPXQubmV4dD1hKX19ZnVuY3Rpb24gYUUoZSxuKXt2YXIgdD1uLmFjdGlvbixyPW4ucGF5bG9hZCxsPWUuc3RhdGU7aWYobi5pc1RyYW5zaXRpb24pe3ZhciBhPU8uVCxvPXt9O08uVD1vO3RyeXt2YXIgdT10KGwsciksaT1PLlM7bnVsbCE9PWkmJmkobyx1KSxheihlLG4sdSl9Y2F0Y2godCl7YVAoZSxuLHQpfWZpbmFsbHl7bnVsbCE9PWEmJm51bGwhPT1vLnR5cGVzJiYoYS50eXBlcz1vLnR5cGVzKSxPLlQ9YX19ZWxzZSB0cnl7YT10KGwsciksYXooZSxuLGEpfWNhdGNoKHQpe2FQKGUsbix0KX19ZnVuY3Rpb24gYXooZSxuLHQpe251bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0LnRoZW4/dC50aGVuKGZ1bmN0aW9uKHQpe2FDKGUsbix0KX0sZnVuY3Rpb24odCl7cmV0dXJuIGFQKGUsbix0KX0pOmFDKGUsbix0KX1mdW5jdGlvbiBhQyhlLG4sdCl7bi5zdGF0dXM9ImZ1bGZpbGxlZCIsbi52YWx1ZT10LGFOKG4pLGUuc3RhdGU9dCxudWxsIT09KG49ZS5wZW5kaW5nKSYmKCh0PW4ubmV4dCk9PT1uP2UucGVuZGluZz1udWxsOih0PXQubmV4dCxuLm5leHQ9dCxhRShlLHQpKSl9ZnVuY3Rpb24gYVAoZSxuLHQpe3ZhciByPWUucGVuZGluZztpZihlLnBlbmRpbmc9bnVsbCxudWxsIT09cil7cj1yLm5leHQ7ZG8gbi5zdGF0dXM9InJlamVjdGVkIixuLnJlYXNvbj10LGFOKG4pLG49bi5uZXh0O3doaWxlKG4hPT1yKX1lLmFjdGlvbj1udWxsfWZ1bmN0aW9uIGFOKGUpe2U9ZS5saXN0ZW5lcnM7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspKDAsZVtuXSkoKX1mdW5jdGlvbiBhTChlLG4pe3JldHVybiBufWZ1bmN0aW9uIGFUKGUsbil7aWYockwpe3ZhciB0PXVBLmZvcm1TdGF0ZTtpZihudWxsIT09dCl7ZTp7dmFyIHI9bFg7aWYockwpe2lmKHJOKXtuOntmb3IodmFyIGw9ck4sYT1yXzs4IT09bC5ub2RlVHlwZTspaWYoIWF8fG51bGw9PT0obD1zRihsLm5leHRTaWJsaW5nKSkpe2w9bnVsbDticmVhayBufWw9IkYhIj09PShhPWwuZGF0YSl8fCJGIj09PWE/bDpudWxsfWlmKGwpe3JOPXNGKGwubmV4dFNpYmxpbmcpLHI9IkYhIj09PWwuZGF0YTticmVhayBlfX1yRChyKX1yPSExfXImJihuPXRbMF0pfX1yZXR1cm4odD1hYSgpKS5tZW1vaXplZFN0YXRlPXQuYmFzZVN0YXRlPW4scj17cGVuZGluZzpudWxsLGxhbmVzOjAsZGlzcGF0Y2g6bnVsbCxsYXN0UmVuZGVyZWRSZWR1Y2VyOmFMLGxhc3RSZW5kZXJlZFN0YXRlOm59LHQucXVldWU9cix0PWE2LmJpbmQobnVsbCxsWCxyKSxyLmRpc3BhdGNoPXQscj1hdyghMSksYT1hOS5iaW5kKG51bGwsbFgsITEsci5xdWV1ZSkscj1hYSgpLGw9e3N0YXRlOm4sZGlzcGF0Y2g6bnVsbCxhY3Rpb246ZSxwZW5kaW5nOm51bGx9LHIucXVldWU9bCx0PWF4LmJpbmQobnVsbCxsWCxsLGEsdCksbC5kaXNwYXRjaD10LHIubWVtb2l6ZWRTdGF0ZT1lLFtuLHQsITFdfWZ1bmN0aW9uIGFfKGUpe3JldHVybiBhRihhbygpLGxHLGUpfWZ1bmN0aW9uIGFGKGUsbix0KXtpZihuPWFwKGUsbixhTClbMF0sZT1hZChhZilbMF0sIm9iamVjdCI9PXR5cGVvZiBuJiZudWxsIT09biYmImZ1bmN0aW9uIj09dHlwZW9mIG4udGhlbil0cnl7dmFyIHI9YWkobil9Y2F0Y2goZSl7aWYoZT09PWxhKXRocm93IGx1O3Rocm93IGV9ZWxzZSByPW47dmFyIGw9KG49YW8oKSkucXVldWUsYT1sLmRpc3BhdGNoO3JldHVybiB0IT09bi5tZW1vaXplZFN0YXRlJiYobFguZmxhZ3N8PTIwNDgsYU0oOSx7ZGVzdHJveTp2b2lkIDB9LGFELmJpbmQobnVsbCxsLHQpLG51bGwpKSxbcixhLGVdfWZ1bmN0aW9uIGFEKGUsbil7ZS5hY3Rpb249bn1mdW5jdGlvbiBhTyhlKXt2YXIgbj1hbygpLHQ9bEc7aWYobnVsbCE9PXQpcmV0dXJuIGFGKG4sdCxlKTthbygpLG49bi5tZW1vaXplZFN0YXRlO3ZhciByPSh0PWFvKCkpLnF1ZXVlLmRpc3BhdGNoO3JldHVybiB0Lm1lbW9pemVkU3RhdGU9ZSxbbixyLCExXX1mdW5jdGlvbiBhTShlLG4sdCxyKXtyZXR1cm4gZT17dGFnOmUsY3JlYXRlOnQsZGVwczpyLGluc3Q6bixuZXh0Om51bGx9LG51bGw9PT0obj1sWC51cGRhdGVRdWV1ZSkmJihuPWF1KCksbFgudXBkYXRlUXVldWU9biksbnVsbD09PSh0PW4ubGFzdEVmZmVjdCk/bi5sYXN0RWZmZWN0PWUubmV4dD1lOihyPXQubmV4dCx0Lm5leHQ9ZSxlLm5leHQ9cixuLmxhc3RFZmZlY3Q9ZSksZX1mdW5jdGlvbiBhQSgpe3JldHVybiBhbygpLm1lbW9pemVkU3RhdGV9ZnVuY3Rpb24gYVIoZSxuLHQscil7dmFyIGw9YWEoKTtsWC5mbGFnc3w9ZSxsLm1lbW9pemVkU3RhdGU9YU0oMXxuLHtkZXN0cm95OnZvaWQgMH0sdCx2b2lkIDA9PT1yP251bGw6cil9ZnVuY3Rpb24gYUkoZSxuLHQscil7dmFyIGw9YW8oKTtyPXZvaWQgMD09PXI/bnVsbDpyO3ZhciBhPWwubWVtb2l6ZWRTdGF0ZS5pbnN0O251bGwhPT1sRyYmbnVsbCE9PXImJmw1KHIsbEcubWVtb2l6ZWRTdGF0ZS5kZXBzKT9sLm1lbW9pemVkU3RhdGU9YU0obixhLHQscik6KGxYLmZsYWdzfD1lLGwubWVtb2l6ZWRTdGF0ZT1hTSgxfG4sYSx0LHIpKX1mdW5jdGlvbiBhVShlLG4pe2FSKDgzOTA2NTYsOCxlLG4pfWZ1bmN0aW9uIGEkKGUsbil7YUkoMjA0OCw4LGUsbil9ZnVuY3Rpb24gYWooZSxuKXtyZXR1cm4gYUkoNCwyLGUsbil9ZnVuY3Rpb24gYVYoZSxuKXtyZXR1cm4gYUkoNCw0LGUsbil9ZnVuY3Rpb24gYUgoZSxuKXtpZigiZnVuY3Rpb24iPT10eXBlb2Ygbil7dmFyIHQ9bihlPWUoKSk7cmV0dXJuIGZ1bmN0aW9uKCl7ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dCgpOm4obnVsbCl9fWlmKG51bGwhPW4pcmV0dXJuIG4uY3VycmVudD1lPWUoKSxmdW5jdGlvbigpe24uY3VycmVudD1udWxsfX1mdW5jdGlvbiBhUShlLG4sdCl7dD1udWxsIT10P3QuY29uY2F0KFtlXSk6bnVsbCxhSSg0LDQsYUguYmluZChudWxsLG4sZSksdCl9ZnVuY3Rpb24gYUIoKXt9ZnVuY3Rpb24gYVcoZSxuKXt2YXIgdD1hbygpO249dm9pZCAwPT09bj9udWxsOm47dmFyIHI9dC5tZW1vaXplZFN0YXRlO3JldHVybiBudWxsIT09biYmbDUobixyWzFdKT9yWzBdOih0Lm1lbW9pemVkU3RhdGU9W2Usbl0sZSl9ZnVuY3Rpb24gYXEoZSxuKXt2YXIgdD1hbygpO249dm9pZCAwPT09bj9udWxsOm47dmFyIHI9dC5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1uJiZsNShuLHJbMV0pKXJldHVybiByWzBdO2lmKHI9ZSgpLGwxKXtlZyghMCk7dHJ5e2UoKX1maW5hbGx5e2VnKCExKX19cmV0dXJuIHQubWVtb2l6ZWRTdGF0ZT1bcixuXSxyfWZ1bmN0aW9uIGFLKGUsbix0KXtyZXR1cm4gdm9pZCAwPT09dHx8MCE9KDB4NDAwMDAwMDAmbFkpP2UubWVtb2l6ZWRTdGF0ZT1uOihlLm1lbW9pemVkU3RhdGU9dCxlPWlhKCksbFgubGFuZXN8PWUsdVd8PWUsdCl9ZnVuY3Rpb24gYVkoZSxuLHQscil7cmV0dXJuIHRQKHQsbik/dDpudWxsIT09bE0uY3VycmVudD8odFAoZT1hSyhlLHQsciksbil8fChvaz0hMCksZSk6MD09KDQyJmxZKXx8MCE9KDB4NDAwMDAwMDAmbFkpPyhvaz0hMCxlLm1lbW9pemVkU3RhdGU9dCk6KGU9aWEoKSxsWC5sYW5lc3w9ZSx1V3w9ZSxuKX1mdW5jdGlvbiBhWChlLG4sdCxyLGwpe3ZhciBhPU0ucDtNLnA9MCE9PWEmJjg+YT9hOjg7dmFyIG89Ty5ULHU9e307Ty5UPXUsYTkoZSwhMSxuLHQpO3RyeXt2YXIgaT1sKCkscz1PLlM7aWYobnVsbCE9PXMmJnModSxpKSxudWxsIT09aSYmIm9iamVjdCI9PXR5cGVvZiBpJiYiZnVuY3Rpb24iPT10eXBlb2YgaS50aGVuKXt2YXIgYyxmLGQ9KGM9W10sZj17c3RhdHVzOiJwZW5kaW5nIix2YWx1ZTpudWxsLHJlYXNvbjpudWxsLHRoZW46ZnVuY3Rpb24oZSl7Yy5wdXNoKGUpfX0saS50aGVuKGZ1bmN0aW9uKCl7Zi5zdGF0dXM9ImZ1bGZpbGxlZCIsZi52YWx1ZT1yO2Zvcih2YXIgZT0wO2U8Yy5sZW5ndGg7ZSsrKSgwLGNbZV0pKHIpfSxmdW5jdGlvbihlKXtmb3IoZi5zdGF0dXM9InJlamVjdGVkIixmLnJlYXNvbj1lLGU9MDtlPGMubGVuZ3RoO2UrKykoMCxjW2VdKSh2b2lkIDApfSksZik7YTUoZSxuLGQsaWwoZSkpfWVsc2UgYTUoZSxuLHIsaWwoZSkpfWNhdGNoKHQpe2E1KGUsbix7dGhlbjpmdW5jdGlvbigpe30sc3RhdHVzOiJyZWplY3RlZCIscmVhc29uOnR9LGlsKCkpfWZpbmFsbHl7TS5wPWEsbnVsbCE9PW8mJm51bGwhPT11LnR5cGVzJiYoby50eXBlcz11LnR5cGVzKSxPLlQ9b319ZnVuY3Rpb24gYUcoKXt9ZnVuY3Rpb24gYVooZSxuLHQscil7aWYoNSE9PWUudGFnKXRocm93IEVycm9yKGkoNDc2KSk7dmFyIGw9YUooZSkucXVldWU7YVgoZSxsLG4sQSxudWxsPT09dD9hRzpmdW5jdGlvbigpe3JldHVybiBhMChlKSx0KHIpfSl9ZnVuY3Rpb24gYUooZSl7dmFyIG49ZS5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1uKXJldHVybiBuO3ZhciB0PXt9O3JldHVybihuPXttZW1vaXplZFN0YXRlOkEsYmFzZVN0YXRlOkEsYmFzZVF1ZXVlOm51bGwscXVldWU6e3BlbmRpbmc6bnVsbCxsYW5lczowLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjphZixsYXN0UmVuZGVyZWRTdGF0ZTpBfSxuZXh0Om51bGx9KS5uZXh0PXttZW1vaXplZFN0YXRlOnQsYmFzZVN0YXRlOnQsYmFzZVF1ZXVlOm51bGwscXVldWU6e3BlbmRpbmc6bnVsbCxsYW5lczowLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjphZixsYXN0UmVuZGVyZWRTdGF0ZTp0fSxuZXh0Om51bGx9LGUubWVtb2l6ZWRTdGF0ZT1uLG51bGwhPT0oZT1lLmFsdGVybmF0ZSkmJihlLm1lbW9pemVkU3RhdGU9biksbn1mdW5jdGlvbiBhMChlKXt2YXIgbj1hSihlKTtudWxsPT09bi5uZXh0JiYobj1lLmFsdGVybmF0ZS5tZW1vaXplZFN0YXRlKSxhNShlLG4ubmV4dC5xdWV1ZSx7fSxpbCgpKX1mdW5jdGlvbiBhMSgpe3JldHVybiByWChzNyl9ZnVuY3Rpb24gYTIoKXtyZXR1cm4gYW8oKS5tZW1vaXplZFN0YXRlfWZ1bmN0aW9uIGEzKCl7cmV0dXJuIGFvKCkubWVtb2l6ZWRTdGF0ZX1mdW5jdGlvbiBhNChlKXtmb3IodmFyIG49ZS5yZXR1cm47bnVsbCE9PW47KXtzd2l0Y2gobi50YWcpe2Nhc2UgMjQ6Y2FzZSAzOnZhciB0PWlsKCkscj1sUChuLGU9bEModCksdCk7bnVsbCE9PXImJihpbyhyLG4sdCksbE4ocixuLHQpKSxuPXtjYWNoZTpyMygpfSxlLnBheWxvYWQ9bjtyZXR1cm59bj1uLnJldHVybn19ZnVuY3Rpb24gYTgoZSxuLHQpe3ZhciByPWlsKCk7dD17bGFuZTpyLHJldmVydExhbmU6MCxnZXN0dXJlOm51bGwsYWN0aW9uOnQsaGFzRWFnZXJTdGF0ZTohMSxlYWdlclN0YXRlOm51bGwsbmV4dDpudWxsfSxhNyhlKT9vZShuLHQpOm51bGwhPT0odD10NihlLG4sdCxyKSkmJihpbyh0LGUsciksb24odCxuLHIpKX1mdW5jdGlvbiBhNihlLG4sdCl7YTUoZSxuLHQsaWwoKSl9ZnVuY3Rpb24gYTUoZSxuLHQscil7dmFyIGw9e2xhbmU6cixyZXZlcnRMYW5lOjAsZ2VzdHVyZTpudWxsLGFjdGlvbjp0LGhhc0VhZ2VyU3RhdGU6ITEsZWFnZXJTdGF0ZTpudWxsLG5leHQ6bnVsbH07aWYoYTcoZSkpb2UobixsKTtlbHNle3ZhciBhPWUuYWx0ZXJuYXRlO2lmKDA9PT1lLmxhbmVzJiYobnVsbD09PWF8fDA9PT1hLmxhbmVzKSYmbnVsbCE9PShhPW4ubGFzdFJlbmRlcmVkUmVkdWNlcikpdHJ5e3ZhciBvPW4ubGFzdFJlbmRlcmVkU3RhdGUsdT1hKG8sdCk7aWYobC5oYXNFYWdlclN0YXRlPSEwLGwuZWFnZXJTdGF0ZT11LHRQKHUsbykpcmV0dXJuIHQ4KGUsbixsLDApLG51bGw9PT11QSYmdDQoKSwhMX1jYXRjaChlKXt9ZmluYWxseXt9aWYobnVsbCE9PSh0PXQ2KGUsbixsLHIpKSlyZXR1cm4gaW8odCxlLHIpLG9uKHQsbixyKSwhMH1yZXR1cm4hMX1mdW5jdGlvbiBhOShlLG4sdCxyKXtpZihyPXtsYW5lOjIscmV2ZXJ0TGFuZTppWigpLGdlc3R1cmU6bnVsbCxhY3Rpb246cixoYXNFYWdlclN0YXRlOiExLGVhZ2VyU3RhdGU6bnVsbCxuZXh0Om51bGx9LGE3KGUpKXtpZihuKXRocm93IEVycm9yKGkoNDc5KSl9ZWxzZSBudWxsIT09KG49dDYoZSx0LHIsMikpJiZpbyhuLGUsMil9ZnVuY3Rpb24gYTcoZSl7dmFyIG49ZS5hbHRlcm5hdGU7cmV0dXJuIGU9PT1sWHx8bnVsbCE9PW4mJm49PT1sWH1mdW5jdGlvbiBvZShlLG4pe2wwPWxKPSEwO3ZhciB0PWUucGVuZGluZztudWxsPT09dD9uLm5leHQ9bjoobi5uZXh0PXQubmV4dCx0Lm5leHQ9biksZS5wZW5kaW5nPW59ZnVuY3Rpb24gb24oZSxuLHQpe2lmKDAhPSg0MTk0MDQ4JnQpKXt2YXIgcj1uLmxhbmVzO3ImPWUucGVuZGluZ0xhbmVzLG4ubGFuZXM9dHw9cixlVChlLHQpfX12YXIgb3Q9e3JlYWRDb250ZXh0OnJYLHVzZTphcyx1c2VDYWxsYmFjazpsNix1c2VDb250ZXh0Omw2LHVzZUVmZmVjdDpsNix1c2VJbXBlcmF0aXZlSGFuZGxlOmw2LHVzZUxheW91dEVmZmVjdDpsNix1c2VJbnNlcnRpb25FZmZlY3Q6bDYsdXNlTWVtbzpsNix1c2VSZWR1Y2VyOmw2LHVzZVJlZjpsNix1c2VTdGF0ZTpsNix1c2VEZWJ1Z1ZhbHVlOmw2LHVzZURlZmVycmVkVmFsdWU6bDYsdXNlVHJhbnNpdGlvbjpsNix1c2VTeW5jRXh0ZXJuYWxTdG9yZTpsNix1c2VJZDpsNix1c2VIb3N0VHJhbnNpdGlvblN0YXR1czpsNix1c2VGb3JtU3RhdGU6bDYsdXNlQWN0aW9uU3RhdGU6bDYsdXNlT3B0aW1pc3RpYzpsNix1c2VNZW1vQ2FjaGU6bDYsdXNlQ2FjaGVSZWZyZXNoOmw2fSxvcj17cmVhZENvbnRleHQ6clgsdXNlOmFzLHVzZUNhbGxiYWNrOmZ1bmN0aW9uKGUsbil7cmV0dXJuIGFhKCkubWVtb2l6ZWRTdGF0ZT1bZSx2b2lkIDA9PT1uP251bGw6bl0sZX0sdXNlQ29udGV4dDpyWCx1c2VFZmZlY3Q6YVUsdXNlSW1wZXJhdGl2ZUhhbmRsZTpmdW5jdGlvbihlLG4sdCl7dD1udWxsIT10P3QuY29uY2F0KFtlXSk6bnVsbCxhUig0MTk0MzA4LDQsYUguYmluZChudWxsLG4sZSksdCl9LHVzZUxheW91dEVmZmVjdDpmdW5jdGlvbihlLG4pe3JldHVybiBhUig0MTk0MzA4LDQsZSxuKX0sdXNlSW5zZXJ0aW9uRWZmZWN0OmZ1bmN0aW9uKGUsbil7YVIoNCwyLGUsbil9LHVzZU1lbW86ZnVuY3Rpb24oZSxuKXt2YXIgdD1hYSgpO249dm9pZCAwPT09bj9udWxsOm47dmFyIHI9ZSgpO2lmKGwxKXtlZyghMCk7dHJ5e2UoKX1maW5hbGx5e2VnKCExKX19cmV0dXJuIHQubWVtb2l6ZWRTdGF0ZT1bcixuXSxyfSx1c2VSZWR1Y2VyOmZ1bmN0aW9uKGUsbix0KXt2YXIgcj1hYSgpO2lmKHZvaWQgMCE9PXQpe3ZhciBsPXQobik7aWYobDEpe2VnKCEwKTt0cnl7dChuKX1maW5hbGx5e2VnKCExKX19fWVsc2UgbD1uO3JldHVybiByLm1lbW9pemVkU3RhdGU9ci5iYXNlU3RhdGU9bCxyLnF1ZXVlPWU9e3BlbmRpbmc6bnVsbCxsYW5lczowLGRpc3BhdGNoOm51bGwsbGFzdFJlbmRlcmVkUmVkdWNlcjplLGxhc3RSZW5kZXJlZFN0YXRlOmx9LGU9ZS5kaXNwYXRjaD1hOC5iaW5kKG51bGwsbFgsZSksW3IubWVtb2l6ZWRTdGF0ZSxlXX0sdXNlUmVmOmZ1bmN0aW9uKGUpe3JldHVybiBhYSgpLm1lbW9pemVkU3RhdGU9e2N1cnJlbnQ6ZX19LHVzZVN0YXRlOmZ1bmN0aW9uKGUpe3ZhciBuPShlPWF3KGUpKS5xdWV1ZSx0PWE2LmJpbmQobnVsbCxsWCxuKTtyZXR1cm4gbi5kaXNwYXRjaD10LFtlLm1lbW9pemVkU3RhdGUsdF19LHVzZURlYnVnVmFsdWU6YUIsdXNlRGVmZXJyZWRWYWx1ZTpmdW5jdGlvbihlLG4pe3JldHVybiBhSyhhYSgpLGUsbil9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgZT1hdyghMSk7cmV0dXJuIGU9YVguYmluZChudWxsLGxYLGUucXVldWUsITAsITEpLGFhKCkubWVtb2l6ZWRTdGF0ZT1lLFshMSxlXX0sdXNlU3luY0V4dGVybmFsU3RvcmU6ZnVuY3Rpb24oZSxuLHQpe3ZhciByPWxYLGw9YWEoKTtpZihyTCl7aWYodm9pZCAwPT09dCl0aHJvdyBFcnJvcihpKDQwNykpO3Q9dCgpfWVsc2V7aWYodD1uKCksbnVsbD09PXVBKXRocm93IEVycm9yKGkoMzQ5KSk7MCE9KDEyNCZ1SSl8fGFnKHIsbix0KX1sLm1lbW9pemVkU3RhdGU9dDt2YXIgYT17dmFsdWU6dCxnZXRTbmFwc2hvdDpufTtyZXR1cm4gbC5xdWV1ZT1hLGFVKGF2LmJpbmQobnVsbCxyLGEsZSksW2VdKSxyLmZsYWdzfD0yMDQ4LGFNKDkse2Rlc3Ryb3k6dm9pZCAwfSxheS5iaW5kKG51bGwscixhLHQsbiksbnVsbCksdH0sdXNlSWQ6ZnVuY3Rpb24oKXt2YXIgZT1hYSgpLG49dUEuaWRlbnRpZmllclByZWZpeDtpZihyTCl7dmFyIHQ9cncscj1yaztuPSJfIituKyJSXyIrKHQ9KHImfigxPDwzMi1leShyKS0xKSkudG9TdHJpbmcoMzIpK3QpLDA8KHQ9bDIrKykmJihuKz0iSCIrdC50b1N0cmluZygzMikpLG4rPSJfIn1lbHNlIG49Il8iK24rInJfIisodD1sOCsrKS50b1N0cmluZygzMikrIl8iO3JldHVybiBlLm1lbW9pemVkU3RhdGU9bn0sdXNlSG9zdFRyYW5zaXRpb25TdGF0dXM6YTEsdXNlRm9ybVN0YXRlOmFULHVzZUFjdGlvblN0YXRlOmFULHVzZU9wdGltaXN0aWM6ZnVuY3Rpb24oZSl7dmFyIG49YWEoKTtuLm1lbW9pemVkU3RhdGU9bi5iYXNlU3RhdGU9ZTt2YXIgdD17cGVuZGluZzpudWxsLGxhbmVzOjAsZGlzcGF0Y2g6bnVsbCxsYXN0UmVuZGVyZWRSZWR1Y2VyOm51bGwsbGFzdFJlbmRlcmVkU3RhdGU6bnVsbH07cmV0dXJuIG4ucXVldWU9dCxuPWE5LmJpbmQobnVsbCxsWCwhMCx0KSx0LmRpc3BhdGNoPW4sW2Usbl19LHVzZU1lbW9DYWNoZTphYyx1c2VDYWNoZVJlZnJlc2g6ZnVuY3Rpb24oKXtyZXR1cm4gYWEoKS5tZW1vaXplZFN0YXRlPWE0LmJpbmQobnVsbCxsWCl9fSxvbD17cmVhZENvbnRleHQ6clgsdXNlOmFzLHVzZUNhbGxiYWNrOmFXLHVzZUNvbnRleHQ6clgsdXNlRWZmZWN0OmEkLHVzZUltcGVyYXRpdmVIYW5kbGU6YVEsdXNlSW5zZXJ0aW9uRWZmZWN0OmFqLHVzZUxheW91dEVmZmVjdDphVix1c2VNZW1vOmFxLHVzZVJlZHVjZXI6YWQsdXNlUmVmOmFBLHVzZVN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIGFkKGFmKX0sdXNlRGVidWdWYWx1ZTphQix1c2VEZWZlcnJlZFZhbHVlOmZ1bmN0aW9uKGUsbil7cmV0dXJuIGFZKGFvKCksbEcubWVtb2l6ZWRTdGF0ZSxlLG4pfSx1c2VUcmFuc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9YWQoYWYpWzBdLG49YW8oKS5tZW1vaXplZFN0YXRlO3JldHVyblsiYm9vbGVhbiI9PXR5cGVvZiBlP2U6YWkoZSksbl19LHVzZVN5bmNFeHRlcm5hbFN0b3JlOmFoLHVzZUlkOmEyLHVzZUhvc3RUcmFuc2l0aW9uU3RhdHVzOmExLHVzZUZvcm1TdGF0ZTphXyx1c2VBY3Rpb25TdGF0ZTphXyx1c2VPcHRpbWlzdGljOmZ1bmN0aW9uKGUsbil7cmV0dXJuIGFTKGFvKCksbEcsZSxuKX0sdXNlTWVtb0NhY2hlOmFjLHVzZUNhY2hlUmVmcmVzaDphM30sb2E9e3JlYWRDb250ZXh0OnJYLHVzZTphcyx1c2VDYWxsYmFjazphVyx1c2VDb250ZXh0OnJYLHVzZUVmZmVjdDphJCx1c2VJbXBlcmF0aXZlSGFuZGxlOmFRLHVzZUluc2VydGlvbkVmZmVjdDphaix1c2VMYXlvdXRFZmZlY3Q6YVYsdXNlTWVtbzphcSx1c2VSZWR1Y2VyOmFtLHVzZVJlZjphQSx1c2VTdGF0ZTpmdW5jdGlvbigpe3JldHVybiBhbShhZil9LHVzZURlYnVnVmFsdWU6YUIsdXNlRGVmZXJyZWRWYWx1ZTpmdW5jdGlvbihlLG4pe3ZhciB0PWFvKCk7cmV0dXJuIG51bGw9PT1sRz9hSyh0LGUsbik6YVkodCxsRy5tZW1vaXplZFN0YXRlLGUsbil9LHVzZVRyYW5zaXRpb246ZnVuY3Rpb24oKXt2YXIgZT1hbShhZilbMF0sbj1hbygpLm1lbW9pemVkU3RhdGU7cmV0dXJuWyJib29sZWFuIj09dHlwZW9mIGU/ZTphaShlKSxuXX0sdXNlU3luY0V4dGVybmFsU3RvcmU6YWgsdXNlSWQ6YTIsdXNlSG9zdFRyYW5zaXRpb25TdGF0dXM6YTEsdXNlRm9ybVN0YXRlOmFPLHVzZUFjdGlvblN0YXRlOmFPLHVzZU9wdGltaXN0aWM6ZnVuY3Rpb24oZSxuKXt2YXIgdD1hbygpO3JldHVybiBudWxsIT09bEc/YVModCxsRyxlLG4pOih0LmJhc2VTdGF0ZT1lLFtlLHQucXVldWUuZGlzcGF0Y2hdKX0sdXNlTWVtb0NhY2hlOmFjLHVzZUNhY2hlUmVmcmVzaDphM307ZnVuY3Rpb24gb28oZSxuLHQscil7dD1udWxsPT0odD10KHIsbj1lLm1lbW9pemVkU3RhdGUpKT9uOm0oe30sbix0KSxlLm1lbW9pemVkU3RhdGU9dCwwPT09ZS5sYW5lcyYmKGUudXBkYXRlUXVldWUuYmFzZVN0YXRlPXQpfXZhciBvdT17ZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKGUsbix0KXtlPWUuX3JlYWN0SW50ZXJuYWxzO3ZhciByPWlsKCksbD1sQyhyKTtsLnBheWxvYWQ9bixudWxsIT10JiYobC5jYWxsYmFjaz10KSxudWxsIT09KG49bFAoZSxsLHIpKSYmKGlvKG4sZSxyKSxsTihuLGUscikpfSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKGUsbix0KXtlPWUuX3JlYWN0SW50ZXJuYWxzO3ZhciByPWlsKCksbD1sQyhyKTtsLnRhZz0xLGwucGF5bG9hZD1uLG51bGwhPXQmJihsLmNhbGxiYWNrPXQpLG51bGwhPT0obj1sUChlLGwscikpJiYoaW8obixlLHIpLGxOKG4sZSxyKSl9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbihlLG4pe2U9ZS5fcmVhY3RJbnRlcm5hbHM7dmFyIHQ9aWwoKSxyPWxDKHQpO3IudGFnPTIsbnVsbCE9biYmKHIuY2FsbGJhY2s9biksbnVsbCE9PShuPWxQKGUscix0KSkmJihpbyhuLGUsdCksbE4obixlLHQpKX19O2Z1bmN0aW9uIG9pKGUsbix0LHIsbCxhLG8pe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZihlPWUuc3RhdGVOb2RlKS5zaG91bGRDb21wb25lbnRVcGRhdGU/ZS5zaG91bGRDb21wb25lbnRVcGRhdGUocixhLG8pOiFuLnByb3RvdHlwZXx8IW4ucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50fHwhdE4odCxyKXx8IXROKGwsYSl9ZnVuY3Rpb24gb3MoZSxuLHQscil7ZT1uLnN0YXRlLCJmdW5jdGlvbiI9PXR5cGVvZiBuLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMmJm4uY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyh0LHIpLCJmdW5jdGlvbiI9PXR5cGVvZiBuLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZuLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKHQsciksbi5zdGF0ZSE9PWUmJm91LmVucXVldWVSZXBsYWNlU3RhdGUobixuLnN0YXRlLG51bGwpfWZ1bmN0aW9uIG9jKGUsbil7dmFyIHQ9bjtpZigicmVmImluIG4pZm9yKHZhciByIGluIHQ9e30sbikicmVmIiE9PXImJih0W3JdPW5bcl0pO2lmKGU9ZS5kZWZhdWx0UHJvcHMpZm9yKHZhciBsIGluIHQ9PT1uJiYodD1tKHt9LHQpKSxlKXZvaWQgMD09PXRbbF0mJih0W2xdPWVbbF0pO3JldHVybiB0fWZ1bmN0aW9uIG9mKGUpe3QwKGUpfWZ1bmN0aW9uIG9kKGUpe2NvbnNvbGUuZXJyb3IoZSl9ZnVuY3Rpb24gb3AoZSl7dDAoZSl9ZnVuY3Rpb24gb20oZSxuKXt0cnl7KDAsZS5vblVuY2F1Z2h0RXJyb3IpKG4udmFsdWUse2NvbXBvbmVudFN0YWNrOm4uc3RhY2t9KX1jYXRjaChlKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhyb3cgZX0pfX1mdW5jdGlvbiBvaChlLG4sdCl7dHJ5eygwLGUub25DYXVnaHRFcnJvcikodC52YWx1ZSx7Y29tcG9uZW50U3RhY2s6dC5zdGFjayxlcnJvckJvdW5kYXJ5OjE9PT1uLnRhZz9uLnN0YXRlTm9kZTpudWxsfSl9Y2F0Y2goZSl7c2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGV9KX19ZnVuY3Rpb24gb2coZSxuLHQpe3JldHVybih0PWxDKHQpKS50YWc9Myx0LnBheWxvYWQ9e2VsZW1lbnQ6bnVsbH0sdC5jYWxsYmFjaz1mdW5jdGlvbigpe29tKGUsbil9LHR9ZnVuY3Rpb24gb3koZSl7cmV0dXJuKGU9bEMoZSkpLnRhZz0zLGV9ZnVuY3Rpb24gb3YoZSxuLHQscil7dmFyIGw9dC50eXBlLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcjtpZigiZnVuY3Rpb24iPT10eXBlb2YgbCl7dmFyIGE9ci52YWx1ZTtlLnBheWxvYWQ9ZnVuY3Rpb24oKXtyZXR1cm4gbChhKX0sZS5jYWxsYmFjaz1mdW5jdGlvbigpe29oKG4sdCxyKX19dmFyIG89dC5zdGF0ZU5vZGU7bnVsbCE9PW8mJiJmdW5jdGlvbiI9PXR5cGVvZiBvLmNvbXBvbmVudERpZENhdGNoJiYoZS5jYWxsYmFjaz1mdW5jdGlvbigpe29oKG4sdCxyKSwiZnVuY3Rpb24iIT10eXBlb2YgbCYmKG51bGw9PT11Mz91Mz1uZXcgU2V0KFt0aGlzXSk6dTMuYWRkKHRoaXMpKTt2YXIgZT1yLnN0YWNrO3RoaXMuY29tcG9uZW50RGlkQ2F0Y2goci52YWx1ZSx7Y29tcG9uZW50U3RhY2s6bnVsbCE9PWU/ZToiIn0pfSl9dmFyIG9iPUVycm9yKGkoNDYxKSksb2s9ITE7ZnVuY3Rpb24gb3coZSxuLHQscil7bi5jaGlsZD1udWxsPT09ZT9sUyhuLG51bGwsdCxyKTpsdyhuLGUuY2hpbGQsdCxyKX1mdW5jdGlvbiBvUyhlLG4sdCxyLGwpe3Q9dC5yZW5kZXI7dmFyIGE9bi5yZWY7aWYoInJlZiJpbiByKXt2YXIgbz17fTtmb3IodmFyIHUgaW4gcikicmVmIiE9PXUmJihvW3VdPXJbdV0pfWVsc2Ugbz1yO3JldHVybihyWShuKSxyPWw5KGUsbix0LG8sYSxsKSx1PWF0KCksbnVsbD09PWV8fG9rKT8ockwmJnUmJnJFKG4pLG4uZmxhZ3N8PTEsb3coZSxuLHIsbCksbi5jaGlsZCk6KGFyKGUsbixsKSxvQihlLG4sbCkpfWZ1bmN0aW9uIG94KGUsbix0LHIsbCl7aWYobnVsbD09PWUpe3ZhciBhPXQudHlwZTtyZXR1cm4iZnVuY3Rpb24iIT10eXBlb2YgYXx8cnIoYSl8fHZvaWQgMCE9PWEuZGVmYXVsdFByb3BzfHxudWxsIT09dC5jb21wYXJlPygoZT1ybyh0LnR5cGUsbnVsbCxyLG4sbi5tb2RlLGwpKS5yZWY9bi5yZWYsZS5yZXR1cm49bixuLmNoaWxkPWUpOihuLnRhZz0xNSxuLnR5cGU9YSxvRShlLG4sYSxyLGwpKX1pZihhPWUuY2hpbGQsIW9XKGUsbCkpe3ZhciBvPWEubWVtb2l6ZWRQcm9wcztpZigodD1udWxsIT09KHQ9dC5jb21wYXJlKT90OnROKShvLHIpJiZlLnJlZj09PW4ucmVmKXJldHVybiBvQihlLG4sbCl9cmV0dXJuIG4uZmxhZ3N8PTEsKGU9cmwoYSxyKSkucmVmPW4ucmVmLGUucmV0dXJuPW4sbi5jaGlsZD1lfWZ1bmN0aW9uIG9FKGUsbix0LHIsbCl7aWYobnVsbCE9PWUpe3ZhciBhPWUubWVtb2l6ZWRQcm9wcztpZih0TihhLHIpJiZlLnJlZj09PW4ucmVmKWlmKG9rPSExLG4ucGVuZGluZ1Byb3BzPXI9YSwhb1coZSxsKSlyZXR1cm4gbi5sYW5lcz1lLmxhbmVzLG9CKGUsbixsKTtlbHNlIDAhPSgxMzEwNzImZS5mbGFncykmJihvaz0hMCl9cmV0dXJuIG9fKGUsbix0LHIsbCl9ZnVuY3Rpb24gb3ooZSxuLHQscil7dmFyIGw9ci5jaGlsZHJlbixhPW51bGwhPT1lP2UubWVtb2l6ZWRTdGF0ZTpudWxsO2lmKG51bGw9PT1lJiZudWxsPT09bi5zdGF0ZU5vZGUmJihuLnN0YXRlTm9kZT17X3Zpc2liaWxpdHk6MSxfcGVuZGluZ01hcmtlcnM6bnVsbCxfcmV0cnlDYWNoZTpudWxsLF90cmFuc2l0aW9uczpudWxsfSksImhpZGRlbiI9PT1yLm1vZGUpe2lmKDAhPSgxMjgmbi5mbGFncykpe2lmKHI9bnVsbCE9PWE/YS5iYXNlTGFuZXN8dDp0LG51bGwhPT1lKXtmb3IoYT0wLGw9bi5jaGlsZD1lLmNoaWxkO251bGwhPT1sOylhPWF8bC5sYW5lc3xsLmNoaWxkTGFuZXMsbD1sLnNpYmxpbmc7bi5jaGlsZExhbmVzPWEmfnJ9ZWxzZSBuLmNoaWxkTGFuZXM9MCxuLmNoaWxkPW51bGw7cmV0dXJuIG9QKGUsbixyLHQpfWlmKDA9PSgweDIwMDAwMDAwJnQpKXJldHVybiBuLmxhbmVzPW4uY2hpbGRMYW5lcz0weDIwMDAwMDAwLG9QKGUsbixudWxsIT09YT9hLmJhc2VMYW5lc3x0OnQsdCk7bi5tZW1vaXplZFN0YXRlPXtiYXNlTGFuZXM6MCxjYWNoZVBvb2w6bnVsbH0sbnVsbCE9PWUmJmxyKG4sbnVsbCE9PWE/YS5jYWNoZVBvb2w6bnVsbCksbnVsbCE9PWE/bFIobixhKTpsSSgpLGxRKG4pfWVsc2UgbnVsbCE9PWE/KGxyKG4sYS5jYWNoZVBvb2wpLGxSKG4sYSksbEIobiksbi5tZW1vaXplZFN0YXRlPW51bGwpOihudWxsIT09ZSYmbHIobixudWxsKSxsSSgpLGxCKG4pKTtyZXR1cm4gb3coZSxuLGwsdCksbi5jaGlsZH1mdW5jdGlvbiBvQyhlLG4pe3JldHVybiBudWxsIT09ZSYmMjI9PT1lLnRhZ3x8bnVsbCE9PW4uc3RhdGVOb2RlfHwobi5zdGF0ZU5vZGU9e192aXNpYmlsaXR5OjEsX3BlbmRpbmdNYXJrZXJzOm51bGwsX3JldHJ5Q2FjaGU6bnVsbCxfdHJhbnNpdGlvbnM6bnVsbH0pLG4uc2libGluZ31mdW5jdGlvbiBvUChlLG4sdCxyKXt2YXIgbD1sdCgpO3JldHVybiBuLm1lbW9pemVkU3RhdGU9e2Jhc2VMYW5lczp0LGNhY2hlUG9vbDpsPW51bGw9PT1sP251bGw6e3BhcmVudDpyMi5fY3VycmVudFZhbHVlLHBvb2w6bH19LG51bGwhPT1lJiZscihuLG51bGwpLGxJKCksbFEobiksbnVsbCE9PWUmJnJxKGUsbixyLCEwKSxudWxsfWZ1bmN0aW9uIG9OKGUsbil7cmV0dXJuKG49byQoe21vZGU6bi5tb2RlLGNoaWxkcmVuOm4uY2hpbGRyZW59LGUubW9kZSkpLnJlZj1lLnJlZixlLmNoaWxkPW4sbi5yZXR1cm49ZSxufWZ1bmN0aW9uIG9MKGUsbix0KXtyZXR1cm4gbHcobixlLmNoaWxkLG51bGwsdCksZT1vTihuLG4ucGVuZGluZ1Byb3BzKSxlLmZsYWdzfD0yLGxXKG4pLG4ubWVtb2l6ZWRTdGF0ZT1udWxsLGV9ZnVuY3Rpb24gb1QoZSxuKXt2YXIgdD1uLnJlZjtpZihudWxsPT09dCludWxsIT09ZSYmbnVsbCE9PWUucmVmJiYobi5mbGFnc3w9NDE5NDgxNik7ZWxzZXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmIm9iamVjdCIhPXR5cGVvZiB0KXRocm93IEVycm9yKGkoMjg0KSk7KG51bGw9PT1lfHxlLnJlZiE9PXQpJiYobi5mbGFnc3w9NDE5NDgxNil9fWZ1bmN0aW9uIG9fKGUsbix0LHIsbCl7cmV0dXJuKHJZKG4pLHQ9bDkoZSxuLHQscix2b2lkIDAsbCkscj1hdCgpLG51bGw9PT1lfHxvayk/KHJMJiZyJiZyRShuKSxuLmZsYWdzfD0xLG93KGUsbix0LGwpLG4uY2hpbGQpOihhcihlLG4sbCksb0IoZSxuLGwpKX1mdW5jdGlvbiBvRihlLG4sdCxyLGwsYSl7cmV0dXJuKHJZKG4pLG4udXBkYXRlUXVldWU9bnVsbCx0PWFlKG4scix0LGwpLGw3KGUpLHI9YXQoKSxudWxsPT09ZXx8b2spPyhyTCYmciYmckUobiksbi5mbGFnc3w9MSxvdyhlLG4sdCxhKSxuLmNoaWxkKTooYXIoZSxuLGEpLG9CKGUsbixhKSl9ZnVuY3Rpb24gb0QoZSxuLHQscixsKXtpZihyWShuKSxudWxsPT09bi5zdGF0ZU5vZGUpe3ZhciBhPXJlLG89dC5jb250ZXh0VHlwZTsib2JqZWN0Ij09dHlwZW9mIG8mJm51bGwhPT1vJiYoYT1yWChvKSksbi5tZW1vaXplZFN0YXRlPW51bGwhPT0oYT1uZXcgdChyLGEpKS5zdGF0ZSYmdm9pZCAwIT09YS5zdGF0ZT9hLnN0YXRlOm51bGwsYS51cGRhdGVyPW91LG4uc3RhdGVOb2RlPWEsYS5fcmVhY3RJbnRlcm5hbHM9biwoYT1uLnN0YXRlTm9kZSkucHJvcHM9cixhLnN0YXRlPW4ubWVtb2l6ZWRTdGF0ZSxhLnJlZnM9e30sbEUobiksbz10LmNvbnRleHRUeXBlLGEuY29udGV4dD0ib2JqZWN0Ij09dHlwZW9mIG8mJm51bGwhPT1vP3JYKG8pOnJlLGEuc3RhdGU9bi5tZW1vaXplZFN0YXRlLCJmdW5jdGlvbiI9PXR5cGVvZihvPXQuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKSYmKG9vKG4sdCxvLHIpLGEuc3RhdGU9bi5tZW1vaXplZFN0YXRlKSwiZnVuY3Rpb24iPT10eXBlb2YgdC5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHN8fCJmdW5jdGlvbiI9PXR5cGVvZiBhLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlfHwiZnVuY3Rpb24iIT10eXBlb2YgYS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiYiZnVuY3Rpb24iIT10eXBlb2YgYS5jb21wb25lbnRXaWxsTW91bnR8fChvPWEuc3RhdGUsImZ1bmN0aW9uIj09dHlwZW9mIGEuY29tcG9uZW50V2lsbE1vdW50JiZhLmNvbXBvbmVudFdpbGxNb3VudCgpLCJmdW5jdGlvbiI9PXR5cGVvZiBhLlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQmJmEuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCgpLG8hPT1hLnN0YXRlJiZvdS5lbnF1ZXVlUmVwbGFjZVN0YXRlKGEsYS5zdGF0ZSxudWxsKSxsRihuLHIsYSxsKSxsXygpLGEuc3RhdGU9bi5tZW1vaXplZFN0YXRlKSwiZnVuY3Rpb24iPT10eXBlb2YgYS5jb21wb25lbnREaWRNb3VudCYmKG4uZmxhZ3N8PTQxOTQzMDgpLHI9ITB9ZWxzZSBpZihudWxsPT09ZSl7YT1uLnN0YXRlTm9kZTt2YXIgdT1uLm1lbW9pemVkUHJvcHMsaT1vYyh0LHUpO2EucHJvcHM9aTt2YXIgcz1hLmNvbnRleHQsYz10LmNvbnRleHRUeXBlO289cmUsIm9iamVjdCI9PXR5cGVvZiBjJiZudWxsIT09YyYmKG89clgoYykpO3ZhciBmPXQuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzO2M9ImZ1bmN0aW9uIj09dHlwZW9mIGZ8fCJmdW5jdGlvbiI9PXR5cGVvZiBhLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlLHU9bi5wZW5kaW5nUHJvcHMhPT11LGN8fCJmdW5jdGlvbiIhPXR5cGVvZiBhLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiYiZnVuY3Rpb24iIT10eXBlb2YgYS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzfHwodXx8cyE9PW8pJiZvcyhuLGEscixvKSxseD0hMTt2YXIgZD1uLm1lbW9pemVkU3RhdGU7YS5zdGF0ZT1kLGxGKG4scixhLGwpLGxfKCkscz1uLm1lbW9pemVkU3RhdGUsdXx8ZCE9PXN8fGx4PygiZnVuY3Rpb24iPT10eXBlb2YgZiYmKG9vKG4sdCxmLHIpLHM9bi5tZW1vaXplZFN0YXRlKSwoaT1seHx8b2kobix0LGkscixkLHMsbykpPyhjfHwiZnVuY3Rpb24iIT10eXBlb2YgYS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50JiYiZnVuY3Rpb24iIT10eXBlb2YgYS5jb21wb25lbnRXaWxsTW91bnR8fCgiZnVuY3Rpb24iPT10eXBlb2YgYS5jb21wb25lbnRXaWxsTW91bnQmJmEuY29tcG9uZW50V2lsbE1vdW50KCksImZ1bmN0aW9uIj09dHlwZW9mIGEuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCYmYS5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCkpLCJmdW5jdGlvbiI9PXR5cGVvZiBhLmNvbXBvbmVudERpZE1vdW50JiYobi5mbGFnc3w9NDE5NDMwOCkpOigiZnVuY3Rpb24iPT10eXBlb2YgYS5jb21wb25lbnREaWRNb3VudCYmKG4uZmxhZ3N8PTQxOTQzMDgpLG4ubWVtb2l6ZWRQcm9wcz1yLG4ubWVtb2l6ZWRTdGF0ZT1zKSxhLnByb3BzPXIsYS5zdGF0ZT1zLGEuY29udGV4dD1vLHI9aSk6KCJmdW5jdGlvbiI9PXR5cGVvZiBhLmNvbXBvbmVudERpZE1vdW50JiYobi5mbGFnc3w9NDE5NDMwOCkscj0hMSl9ZWxzZXthPW4uc3RhdGVOb2RlLGx6KGUsbiksYz1vYyh0LG89bi5tZW1vaXplZFByb3BzKSxhLnByb3BzPWMsZj1uLnBlbmRpbmdQcm9wcyxkPWEuY29udGV4dCxzPXQuY29udGV4dFR5cGUsaT1yZSwib2JqZWN0Ij09dHlwZW9mIHMmJm51bGwhPT1zJiYoaT1yWChzKSksKHM9ImZ1bmN0aW9uIj09dHlwZW9mKHU9dC5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMpfHwiZnVuY3Rpb24iPT10eXBlb2YgYS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSl8fCJmdW5jdGlvbiIhPXR5cGVvZiBhLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiYiZnVuY3Rpb24iIT10eXBlb2YgYS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzfHwobyE9PWZ8fGQhPT1pKSYmb3MobixhLHIsaSksbHg9ITEsZD1uLm1lbW9pemVkU3RhdGUsYS5zdGF0ZT1kLGxGKG4scixhLGwpLGxfKCk7dmFyIHA9bi5tZW1vaXplZFN0YXRlO28hPT1mfHxkIT09cHx8bHh8fG51bGwhPT1lJiZudWxsIT09ZS5kZXBlbmRlbmNpZXMmJnJLKGUuZGVwZW5kZW5jaWVzKT8oImZ1bmN0aW9uIj09dHlwZW9mIHUmJihvbyhuLHQsdSxyKSxwPW4ubWVtb2l6ZWRTdGF0ZSksKGM9bHh8fG9pKG4sdCxjLHIsZCxwLGkpfHxudWxsIT09ZSYmbnVsbCE9PWUuZGVwZW5kZW5jaWVzJiZySyhlLmRlcGVuZGVuY2llcykpPyhzfHwiZnVuY3Rpb24iIT10eXBlb2YgYS5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGEuY29tcG9uZW50V2lsbFVwZGF0ZXx8KCJmdW5jdGlvbiI9PXR5cGVvZiBhLmNvbXBvbmVudFdpbGxVcGRhdGUmJmEuY29tcG9uZW50V2lsbFVwZGF0ZShyLHAsaSksImZ1bmN0aW9uIj09dHlwZW9mIGEuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUmJmEuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUocixwLGkpKSwiZnVuY3Rpb24iPT10eXBlb2YgYS5jb21wb25lbnREaWRVcGRhdGUmJihuLmZsYWdzfD00KSwiZnVuY3Rpb24iPT10eXBlb2YgYS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSYmKG4uZmxhZ3N8PTEwMjQpKTooImZ1bmN0aW9uIiE9dHlwZW9mIGEuY29tcG9uZW50RGlkVXBkYXRlfHxvPT09ZS5tZW1vaXplZFByb3BzJiZkPT09ZS5tZW1vaXplZFN0YXRlfHwobi5mbGFnc3w9NCksImZ1bmN0aW9uIiE9dHlwZW9mIGEuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGV8fG89PT1lLm1lbW9pemVkUHJvcHMmJmQ9PT1lLm1lbW9pemVkU3RhdGV8fChuLmZsYWdzfD0xMDI0KSxuLm1lbW9pemVkUHJvcHM9cixuLm1lbW9pemVkU3RhdGU9cCksYS5wcm9wcz1yLGEuc3RhdGU9cCxhLmNvbnRleHQ9aSxyPWMpOigiZnVuY3Rpb24iIT10eXBlb2YgYS5jb21wb25lbnREaWRVcGRhdGV8fG89PT1lLm1lbW9pemVkUHJvcHMmJmQ9PT1lLm1lbW9pemVkU3RhdGV8fChuLmZsYWdzfD00KSwiZnVuY3Rpb24iIT10eXBlb2YgYS5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZXx8bz09PWUubWVtb2l6ZWRQcm9wcyYmZD09PWUubWVtb2l6ZWRTdGF0ZXx8KG4uZmxhZ3N8PTEwMjQpLHI9ITEpfXJldHVybiBhPXIsb1QoZSxuKSxyPTAhPSgxMjgmbi5mbGFncyksYXx8cj8oYT1uLnN0YXRlTm9kZSx0PXImJiJmdW5jdGlvbiIhPXR5cGVvZiB0LmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcj9udWxsOmEucmVuZGVyKCksbi5mbGFnc3w9MSxudWxsIT09ZSYmcj8obi5jaGlsZD1sdyhuLGUuY2hpbGQsbnVsbCxsKSxuLmNoaWxkPWx3KG4sbnVsbCx0LGwpKTpvdyhlLG4sdCxsKSxuLm1lbW9pemVkU3RhdGU9YS5zdGF0ZSxlPW4uY2hpbGQpOmU9b0IoZSxuLGwpLGV9ZnVuY3Rpb24gb08oZSxuLHQscil7cmV0dXJuIHJSKCksbi5mbGFnc3w9MjU2LG93KGUsbix0LHIpLG4uY2hpbGR9dmFyIG9NPXtkZWh5ZHJhdGVkOm51bGwsdHJlZUNvbnRleHQ6bnVsbCxyZXRyeUxhbmU6MCxoeWRyYXRpb25FcnJvcnM6bnVsbH07ZnVuY3Rpb24gb0EoZSl7cmV0dXJue2Jhc2VMYW5lczplLGNhY2hlUG9vbDpsbCgpfX1mdW5jdGlvbiBvUihlLG4sdCl7cmV0dXJuIGU9bnVsbCE9PWU/ZS5jaGlsZExhbmVzJn50OjAsbiYmKGV8PXVZKSxlfWZ1bmN0aW9uIG9JKGUsbix0KXt2YXIgcixsPW4ucGVuZGluZ1Byb3BzLGE9ITEsbz0wIT0oMTI4Jm4uZmxhZ3MpO2lmKChyPW8pfHwocj0obnVsbD09PWV8fG51bGwhPT1lLm1lbW9pemVkU3RhdGUpJiYwIT0oMiZscS5jdXJyZW50KSksciYmKGE9ITAsbi5mbGFncyY9LTEyOSkscj0wIT0oMzImbi5mbGFncyksbi5mbGFncyY9LTMzLG51bGw9PT1lKXtpZihyTCl7aWYoYT9sVihuKTpsQihuKSwoZT1yTik/bnVsbCE9PShlPW51bGwhPT0oZT1zTChlLHJfKSkmJiImIiE9PWUuZGF0YT9lOm51bGwpJiYobi5tZW1vaXplZFN0YXRlPXtkZWh5ZHJhdGVkOmUsdHJlZUNvbnRleHQ6bnVsbCE9PXJiP3tpZDpyayxvdmVyZmxvdzpyd306bnVsbCxyZXRyeUxhbmU6MHgyMDAwMDAwMCxoeWRyYXRpb25FcnJvcnM6bnVsbH0sKHQ9cnMoZSkpLnJldHVybj1uLG4uY2hpbGQ9dCxyUD1uLHJOPW51bGwpOmU9bnVsbCxudWxsPT09ZSl0aHJvdyByRChuKTtyZXR1cm4gc18oZSk/bi5sYW5lcz0zMjpuLmxhbmVzPTB4MjAwMDAwMDAsbnVsbH12YXIgdT1sLmNoaWxkcmVuO3JldHVybihsPWwuZmFsbGJhY2ssYSk/KGxCKG4pLHU9byQoe21vZGU6ImhpZGRlbiIsY2hpbGRyZW46dX0sYT1uLm1vZGUpLGw9cnUobCxhLHQsbnVsbCksdS5yZXR1cm49bixsLnJldHVybj1uLHUuc2libGluZz1sLG4uY2hpbGQ9dSwobD1uLmNoaWxkKS5tZW1vaXplZFN0YXRlPW9BKHQpLGwuY2hpbGRMYW5lcz1vUihlLHIsdCksbi5tZW1vaXplZFN0YXRlPW9NLG9DKG51bGwsbCkpOihsVihuKSxvVShuLHUpKX12YXIgcz1lLm1lbW9pemVkU3RhdGU7aWYobnVsbCE9PXMmJm51bGwhPT0odT1zLmRlaHlkcmF0ZWQpKXtpZihvKTI1NiZuLmZsYWdzPyhsVihuKSxuLmZsYWdzJj0tMjU3LG49b2ooZSxuLHQpKTpudWxsIT09bi5tZW1vaXplZFN0YXRlPyhsQihuKSxuLmNoaWxkPWUuY2hpbGQsbi5mbGFnc3w9MTI4LG49bnVsbCk6KGxCKG4pLHU9bC5mYWxsYmFjayxhPW4ubW9kZSxsPW8kKHttb2RlOiJ2aXNpYmxlIixjaGlsZHJlbjpsLmNoaWxkcmVufSxhKSx1PXJ1KHUsYSx0LG51bGwpLHUuZmxhZ3N8PTIsbC5yZXR1cm49bix1LnJldHVybj1uLGwuc2libGluZz11LG4uY2hpbGQ9bCxsdyhuLGUuY2hpbGQsbnVsbCx0KSwobD1uLmNoaWxkKS5tZW1vaXplZFN0YXRlPW9BKHQpLGwuY2hpbGRMYW5lcz1vUihlLHIsdCksbi5tZW1vaXplZFN0YXRlPW9NLG49b0MobnVsbCxsKSk7ZWxzZSBpZihsVihuKSxzXyh1KSl7aWYocj11Lm5leHRTaWJsaW5nJiZ1Lm5leHRTaWJsaW5nLmRhdGFzZXQpdmFyIGM9ci5kZ3N0O3I9YywobD1FcnJvcihpKDQxOSkpKS5zdGFjaz0iIixsLmRpZ2VzdD1yLHJVKHt2YWx1ZTpsLHNvdXJjZTpudWxsLHN0YWNrOm51bGx9KSxuPW9qKGUsbix0KX1lbHNlIGlmKG9rfHxycShlLG4sdCwhMSkscj0wIT0odCZlLmNoaWxkTGFuZXMpLG9rfHxyKXtpZihudWxsIT09KHI9dUEpJiYwIT09KGw9ZV8ocix0KSkmJmwhPT1zLnJldHJ5TGFuZSl0aHJvdyBzLnJldHJ5TGFuZT1sLHQ1KGUsbCksaW8ocixlLGwpLG9iO3NUKHUpfHxpdigpLG49b2ooZSxuLHQpfWVsc2Ugc1QodSk/KG4uZmxhZ3N8PTE5MixuLmNoaWxkPWUuY2hpbGQsbj1udWxsKTooZT1zLnRyZWVDb250ZXh0LHJOPXNGKHUubmV4dFNpYmxpbmcpLHJQPW4sckw9ITAsclQ9bnVsbCxyXz0hMSxudWxsIT09ZSYmckMobixlKSxuPW9VKG4sbC5jaGlsZHJlbiksbi5mbGFnc3w9NDA5Nik7cmV0dXJuIG59cmV0dXJuIGE/KGxCKG4pLHU9bC5mYWxsYmFjayxhPW4ubW9kZSxjPShzPWUuY2hpbGQpLnNpYmxpbmcsKGw9cmwocyx7bW9kZToiaGlkZGVuIixjaGlsZHJlbjpsLmNoaWxkcmVufSkpLnN1YnRyZWVGbGFncz0weDNlMDAwMDAmcy5zdWJ0cmVlRmxhZ3MsbnVsbCE9PWM/dT1ybChjLHUpOih1PXJ1KHUsYSx0LG51bGwpLHUuZmxhZ3N8PTIpLHUucmV0dXJuPW4sbC5yZXR1cm49bixsLnNpYmxpbmc9dSxuLmNoaWxkPWwsb0MobnVsbCxsKSxsPW4uY2hpbGQsbnVsbD09PSh1PWUuY2hpbGQubWVtb2l6ZWRTdGF0ZSk/dT1vQSh0KToobnVsbCE9PShhPXUuY2FjaGVQb29sKT8ocz1yMi5fY3VycmVudFZhbHVlLGE9YS5wYXJlbnQhPT1zP3twYXJlbnQ6cyxwb29sOnN9OmEpOmE9bGwoKSx1PXtiYXNlTGFuZXM6dS5iYXNlTGFuZXN8dCxjYWNoZVBvb2w6YX0pLGwubWVtb2l6ZWRTdGF0ZT11LGwuY2hpbGRMYW5lcz1vUihlLHIsdCksbi5tZW1vaXplZFN0YXRlPW9NLG9DKGUuY2hpbGQsbCkpOihsVihuKSxlPSh0PWUuY2hpbGQpLnNpYmxpbmcsKHQ9cmwodCx7bW9kZToidmlzaWJsZSIsY2hpbGRyZW46bC5jaGlsZHJlbn0pKS5yZXR1cm49bix0LnNpYmxpbmc9bnVsbCxudWxsIT09ZSYmKG51bGw9PT0ocj1uLmRlbGV0aW9ucyk/KG4uZGVsZXRpb25zPVtlXSxuLmZsYWdzfD0xNik6ci5wdXNoKGUpKSxuLmNoaWxkPXQsbi5tZW1vaXplZFN0YXRlPW51bGwsdCl9ZnVuY3Rpb24gb1UoZSxuKXtyZXR1cm4obj1vJCh7bW9kZToidmlzaWJsZSIsY2hpbGRyZW46bn0sZS5tb2RlKSkucmV0dXJuPWUsZS5jaGlsZD1ufWZ1bmN0aW9uIG8kKGUsbil7cmV0dXJuKGU9cnQoMjIsZSxudWxsLG4pKS5sYW5lcz0wLGV9ZnVuY3Rpb24gb2ooZSxuLHQpe3JldHVybiBsdyhuLGUuY2hpbGQsbnVsbCx0KSxlPW9VKG4sbi5wZW5kaW5nUHJvcHMuY2hpbGRyZW4pLGUuZmxhZ3N8PTIsbi5tZW1vaXplZFN0YXRlPW51bGwsZX1mdW5jdGlvbiBvVihlLG4sdCl7ZS5sYW5lc3w9bjt2YXIgcj1lLmFsdGVybmF0ZTtudWxsIT09ciYmKHIubGFuZXN8PW4pLHJCKGUucmV0dXJuLG4sdCl9ZnVuY3Rpb24gb0goZSxuLHQscixsLGEpe3ZhciBvPWUubWVtb2l6ZWRTdGF0ZTtudWxsPT09bz9lLm1lbW9pemVkU3RhdGU9e2lzQmFja3dhcmRzOm4scmVuZGVyaW5nOm51bGwscmVuZGVyaW5nU3RhcnRUaW1lOjAsbGFzdDpyLHRhaWw6dCx0YWlsTW9kZTpsLHRyZWVGb3JrQ291bnQ6YX06KG8uaXNCYWNrd2FyZHM9bixvLnJlbmRlcmluZz1udWxsLG8ucmVuZGVyaW5nU3RhcnRUaW1lPTAsby5sYXN0PXIsby50YWlsPXQsby50YWlsTW9kZT1sLG8udHJlZUZvcmtDb3VudD1hKX1mdW5jdGlvbiBvUShlLG4sdCl7dmFyIHI9bi5wZW5kaW5nUHJvcHMsbD1yLnJldmVhbE9yZGVyLGE9ci50YWlsO3I9ci5jaGlsZHJlbjt2YXIgbz1scS5jdXJyZW50LHU9MCE9KDImbyk7aWYodT8obz0xJm98MixuLmZsYWdzfD0xMjgpOm8mPTEsaihscSxvKSxvdyhlLG4scix0KSxyPXJMP3JnOjAsIXUmJm51bGwhPT1lJiYwIT0oMTI4JmUuZmxhZ3MpKWU6Zm9yKGU9bi5jaGlsZDtudWxsIT09ZTspe2lmKDEzPT09ZS50YWcpbnVsbCE9PWUubWVtb2l6ZWRTdGF0ZSYmb1YoZSx0LG4pO2Vsc2UgaWYoMTk9PT1lLnRhZylvVihlLHQsbik7ZWxzZSBpZihudWxsIT09ZS5jaGlsZCl7ZS5jaGlsZC5yZXR1cm49ZSxlPWUuY2hpbGQ7Y29udGludWV9aWYoZT09PW4pYnJlYWs7Zm9yKDtudWxsPT09ZS5zaWJsaW5nOyl7aWYobnVsbD09PWUucmV0dXJufHxlLnJldHVybj09PW4pYnJlYWsgZTtlPWUucmV0dXJufWUuc2libGluZy5yZXR1cm49ZS5yZXR1cm4sZT1lLnNpYmxpbmd9c3dpdGNoKGwpe2Nhc2UiZm9yd2FyZHMiOmZvcihsPW51bGwsdD1uLmNoaWxkO251bGwhPT10OyludWxsIT09KGU9dC5hbHRlcm5hdGUpJiZudWxsPT09bEsoZSkmJihsPXQpLHQ9dC5zaWJsaW5nO251bGw9PT0odD1sKT8obD1uLmNoaWxkLG4uY2hpbGQ9bnVsbCk6KGw9dC5zaWJsaW5nLHQuc2libGluZz1udWxsKSxvSChuLCExLGwsdCxhLHIpO2JyZWFrO2Nhc2UiYmFja3dhcmRzIjpjYXNlInVuc3RhYmxlX2xlZ2FjeS1iYWNrd2FyZHMiOmZvcih0PW51bGwsbD1uLmNoaWxkLG4uY2hpbGQ9bnVsbDtudWxsIT09bDspe2lmKG51bGwhPT0oZT1sLmFsdGVybmF0ZSkmJm51bGw9PT1sSyhlKSl7bi5jaGlsZD1sO2JyZWFrfWU9bC5zaWJsaW5nLGwuc2libGluZz10LHQ9bCxsPWV9b0gobiwhMCx0LG51bGwsYSxyKTticmVhaztjYXNlInRvZ2V0aGVyIjpvSChuLCExLG51bGwsbnVsbCx2b2lkIDAscik7YnJlYWs7ZGVmYXVsdDpuLm1lbW9pemVkU3RhdGU9bnVsbH1yZXR1cm4gbi5jaGlsZH1mdW5jdGlvbiBvQihlLG4sdCl7aWYobnVsbCE9PWUmJihuLmRlcGVuZGVuY2llcz1lLmRlcGVuZGVuY2llcyksdVd8PW4ubGFuZXMsMD09KHQmbi5jaGlsZExhbmVzKSl7aWYobnVsbD09PWUpcmV0dXJuIG51bGw7ZWxzZSBpZihycShlLG4sdCwhMSksMD09KHQmbi5jaGlsZExhbmVzKSlyZXR1cm4gbnVsbH1pZihudWxsIT09ZSYmbi5jaGlsZCE9PWUuY2hpbGQpdGhyb3cgRXJyb3IoaSgxNTMpKTtpZihudWxsIT09bi5jaGlsZCl7Zm9yKHQ9cmwoZT1uLmNoaWxkLGUucGVuZGluZ1Byb3BzKSxuLmNoaWxkPXQsdC5yZXR1cm49bjtudWxsIT09ZS5zaWJsaW5nOyllPWUuc2libGluZywodD10LnNpYmxpbmc9cmwoZSxlLnBlbmRpbmdQcm9wcykpLnJldHVybj1uO3Quc2libGluZz1udWxsfXJldHVybiBuLmNoaWxkfWZ1bmN0aW9uIG9XKGUsbil7cmV0dXJuIDAhPShlLmxhbmVzJm4pfHwhIShudWxsIT09KGU9ZS5kZXBlbmRlbmNpZXMpJiZySyhlKSl9ZnVuY3Rpb24gb3EoZSxuLHQpe2lmKG51bGwhPT1lKWlmKGUubWVtb2l6ZWRQcm9wcyE9PW4ucGVuZGluZ1Byb3BzKW9rPSEwO2Vsc2V7aWYoIW9XKGUsdCkmJjA9PSgxMjgmbi5mbGFncykpcmV0dXJuIG9rPSExLGZ1bmN0aW9uKGUsbix0KXtzd2l0Y2gobi50YWcpe2Nhc2UgMzpXKG4sbi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyksckgobixyMixlLm1lbW9pemVkU3RhdGUuY2FjaGUpLHJSKCk7YnJlYWs7Y2FzZSAyNzpjYXNlIDU6SyhuKTticmVhaztjYXNlIDQ6VyhuLG4uc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pO2JyZWFrO2Nhc2UgMTA6ckgobixuLnR5cGUsbi5tZW1vaXplZFByb3BzLnZhbHVlKTticmVhaztjYXNlIDMxOmlmKG51bGwhPT1uLm1lbW9pemVkU3RhdGUpcmV0dXJuIG4uZmxhZ3N8PTEyOCxsSChuKSxudWxsO2JyZWFrO2Nhc2UgMTM6dmFyIHI9bi5tZW1vaXplZFN0YXRlO2lmKG51bGwhPT1yKXtpZihudWxsIT09ci5kZWh5ZHJhdGVkKXJldHVybiBsVihuKSxuLmZsYWdzfD0xMjgsbnVsbDtpZigwIT0odCZuLmNoaWxkLmNoaWxkTGFuZXMpKXJldHVybiBvSShlLG4sdCk7cmV0dXJuIGxWKG4pLG51bGwhPT0oZT1vQihlLG4sdCkpP2Uuc2libGluZzpudWxsfWxWKG4pO2JyZWFrO2Nhc2UgMTk6dmFyIGw9MCE9KDEyOCZlLmZsYWdzKTtpZigocj0wIT0odCZuLmNoaWxkTGFuZXMpKXx8KHJxKGUsbix0LCExKSxyPTAhPSh0Jm4uY2hpbGRMYW5lcykpLGwpe2lmKHIpcmV0dXJuIG9RKGUsbix0KTtuLmZsYWdzfD0xMjh9aWYobnVsbCE9PShsPW4ubWVtb2l6ZWRTdGF0ZSkmJihsLnJlbmRlcmluZz1udWxsLGwudGFpbD1udWxsLGwubGFzdEVmZmVjdD1udWxsKSxqKGxxLGxxLmN1cnJlbnQpLCFyKXJldHVybiBudWxsO2JyZWFrO2Nhc2UgMjI6cmV0dXJuIG4ubGFuZXM9MCxveihlLG4sdCxuLnBlbmRpbmdQcm9wcyk7Y2FzZSAyNDpySChuLHIyLGUubWVtb2l6ZWRTdGF0ZS5jYWNoZSl9cmV0dXJuIG9CKGUsbix0KX0oZSxuLHQpO29rPTAhPSgxMzEwNzImZS5mbGFncyl9ZWxzZSBvaz0hMSxyTCYmMCE9KDEwNDg1NzYmbi5mbGFncykmJnJ4KG4scmcsbi5pbmRleCk7c3dpdGNoKG4ubGFuZXM9MCxuLnRhZyl7Y2FzZSAxNjplOnt2YXIgcj1uLnBlbmRpbmdQcm9wcztpZihlPWxmKG4uZWxlbWVudFR5cGUpLG4udHlwZT1lLCJmdW5jdGlvbiI9PXR5cGVvZiBlKXJyKGUpPyhyPW9jKGUsciksbi50YWc9MSxuPW9EKG51bGwsbixlLHIsdCkpOihuLnRhZz0wLG49b18obnVsbCxuLGUscix0KSk7ZWxzZXtpZihudWxsIT1lKXt2YXIgbD1lLiQkdHlwZW9mO2lmKGw9PT14KXtuLnRhZz0xMSxuPW9TKG51bGwsbixlLHIsdCk7YnJlYWsgZX1pZihsPT09Qyl7bi50YWc9MTQsbj1veChudWxsLG4sZSxyLHQpO2JyZWFrIGV9fXRocm93IEVycm9yKGkoMzA2LG49ZnVuY3Rpb24gZShuKXtpZihudWxsPT1uKXJldHVybiBudWxsO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBuKXJldHVybiBuLiQkdHlwZW9mPT09Rj9udWxsOm4uZGlzcGxheU5hbWV8fG4ubmFtZXx8bnVsbDtpZigic3RyaW5nIj09dHlwZW9mIG4pcmV0dXJuIG47c3dpdGNoKG4pe2Nhc2UgdjpyZXR1cm4iRnJhZ21lbnQiO2Nhc2UgazpyZXR1cm4iUHJvZmlsZXIiO2Nhc2UgYjpyZXR1cm4iU3RyaWN0TW9kZSI7Y2FzZSBFOnJldHVybiJTdXNwZW5zZSI7Y2FzZSB6OnJldHVybiJTdXNwZW5zZUxpc3QiO2Nhc2UgTjpyZXR1cm4iQWN0aXZpdHkifWlmKCJvYmplY3QiPT10eXBlb2Ygbilzd2l0Y2gobi4kJHR5cGVvZil7Y2FzZSB5OnJldHVybiJQb3J0YWwiO2Nhc2UgUzpyZXR1cm4gbi5kaXNwbGF5TmFtZXx8IkNvbnRleHQiO2Nhc2UgdzpyZXR1cm4obi5fY29udGV4dC5kaXNwbGF5TmFtZXx8IkNvbnRleHQiKSsiLkNvbnN1bWVyIjtjYXNlIHg6dmFyIHQ9bi5yZW5kZXI7cmV0dXJuKG49bi5kaXNwbGF5TmFtZSl8fChuPSIiIT09KG49dC5kaXNwbGF5TmFtZXx8dC5uYW1lfHwiIik/IkZvcndhcmRSZWYoIituKyIpIjoiRm9yd2FyZFJlZiIpLG47Y2FzZSBDOnJldHVybiBudWxsIT09KHQ9bi5kaXNwbGF5TmFtZXx8bnVsbCk/dDplKG4udHlwZSl8fCJNZW1vIjtjYXNlIFA6dD1uLl9wYXlsb2FkLG49bi5faW5pdDt0cnl7cmV0dXJuIGUobih0KSl9Y2F0Y2goZSl7fX1yZXR1cm4gbnVsbH0oZSl8fGUsIiIpKX19cmV0dXJuIG47Y2FzZSAwOnJldHVybiBvXyhlLG4sbi50eXBlLG4ucGVuZGluZ1Byb3BzLHQpO2Nhc2UgMTpyZXR1cm4gbD1vYyhyPW4udHlwZSxuLnBlbmRpbmdQcm9wcyksb0QoZSxuLHIsbCx0KTtjYXNlIDM6ZTp7aWYoVyhuLG4uc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLG51bGw9PT1lKXRocm93IEVycm9yKGkoMzg3KSk7cj1uLnBlbmRpbmdQcm9wczt2YXIgYT1uLm1lbW9pemVkU3RhdGU7bD1hLmVsZW1lbnQsbHooZSxuKSxsRihuLHIsbnVsbCx0KTt2YXIgbz1uLm1lbW9pemVkU3RhdGU7aWYockgobixyMixyPW8uY2FjaGUpLHIhPT1hLmNhY2hlJiZyVyhuLFtyMl0sdCwhMCksbF8oKSxyPW8uZWxlbWVudCxhLmlzRGVoeWRyYXRlZClpZihhPXtlbGVtZW50OnIsaXNEZWh5ZHJhdGVkOiExLGNhY2hlOm8uY2FjaGV9LG4udXBkYXRlUXVldWUuYmFzZVN0YXRlPWEsbi5tZW1vaXplZFN0YXRlPWEsMjU2Jm4uZmxhZ3Mpe249b08oZSxuLHIsdCk7YnJlYWsgZX1lbHNlIGlmKHIhPT1sKXtyVShsPXJkKEVycm9yKGkoNDI0KSksbikpLG49b08oZSxuLHIsdCk7YnJlYWsgZX1lbHNlIGZvcihyTj1zRigoZT05PT09KGU9bi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbykubm9kZVR5cGU/ZS5ib2R5OiJIVE1MIj09PWUubm9kZU5hbWU/ZS5vd25lckRvY3VtZW50LmJvZHk6ZSkuZmlyc3RDaGlsZCksclA9bixyTD0hMCxyVD1udWxsLHJfPSEwLHQ9bFMobixudWxsLHIsdCksbi5jaGlsZD10O3Q7KXQuZmxhZ3M9LTMmdC5mbGFnc3w0MDk2LHQ9dC5zaWJsaW5nO2Vsc2V7aWYoclIoKSxyPT09bCl7bj1vQihlLG4sdCk7YnJlYWsgZX1vdyhlLG4scix0KX1uPW4uY2hpbGR9cmV0dXJuIG47Y2FzZSAyNjpyZXR1cm4gb1QoZSxuKSxudWxsPT09ZT8odD1zUShuLnR5cGUsbnVsbCxuLnBlbmRpbmdQcm9wcyxudWxsKSk/bi5tZW1vaXplZFN0YXRlPXQ6ckx8fCh0PW4udHlwZSxlPW4ucGVuZGluZ1Byb3BzLChyPXNoKFEuY3VycmVudCkuY3JlYXRlRWxlbWVudCh0KSlbZVJdPW4scltlSV09ZSxzZChyLHQsZSksZVgociksbi5zdGF0ZU5vZGU9cik6bi5tZW1vaXplZFN0YXRlPXNRKG4udHlwZSxlLm1lbW9pemVkUHJvcHMsbi5wZW5kaW5nUHJvcHMsZS5tZW1vaXplZFN0YXRlKSxudWxsO2Nhc2UgMjc6cmV0dXJuIEsobiksbnVsbD09PWUmJnJMJiYocj1uLnN0YXRlTm9kZT1zQShuLnR5cGUsbi5wZW5kaW5nUHJvcHMsUS5jdXJyZW50KSxyUD1uLHJfPSEwLGw9ck4sc3oobi50eXBlKT8oc0Q9bCxyTj1zRihyLmZpcnN0Q2hpbGQpKTpyTj1sKSxvdyhlLG4sbi5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sdCksb1QoZSxuKSxudWxsPT09ZSYmKG4uZmxhZ3N8PTQxOTQzMDQpLG4uY2hpbGQ7Y2FzZSA1OnJldHVybiBudWxsPT09ZSYmckwmJigobD1yPXJOKSYmKG51bGwhPT0ocj1mdW5jdGlvbihlLG4sdCxyKXtmb3IoOzE9PT1lLm5vZGVUeXBlOyl7aWYoZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIT09bi50b0xvd2VyQ2FzZSgpKXtpZighciYmKCJJTlBVVCIhPT1lLm5vZGVOYW1lfHwiaGlkZGVuIiE9PWUudHlwZSkpYnJlYWt9ZWxzZSBpZihyKXtpZighZVtlUV0pc3dpdGNoKG4pe2Nhc2UibWV0YSI6aWYoIWUuaGFzQXR0cmlidXRlKCJpdGVtcHJvcCIpKWJyZWFrO3JldHVybiBlO2Nhc2UibGluayI6aWYoInN0eWxlc2hlZXQiPT09KGw9ZS5nZXRBdHRyaWJ1dGUoInJlbCIpKSYmZS5oYXNBdHRyaWJ1dGUoImRhdGEtcHJlY2VkZW5jZSIpfHxsIT09dC5yZWx8fGUuZ2V0QXR0cmlidXRlKCJocmVmIikhPT0obnVsbD09dC5ocmVmfHwiIj09PXQuaHJlZj9udWxsOnQuaHJlZil8fGUuZ2V0QXR0cmlidXRlKCJjcm9zc29yaWdpbiIpIT09KG51bGw9PXQuY3Jvc3NPcmlnaW4/bnVsbDp0LmNyb3NzT3JpZ2luKXx8ZS5nZXRBdHRyaWJ1dGUoInRpdGxlIikhPT0obnVsbD09dC50aXRsZT9udWxsOnQudGl0bGUpKWJyZWFrO3JldHVybiBlO2Nhc2Uic3R5bGUiOmlmKGUuaGFzQXR0cmlidXRlKCJkYXRhLXByZWNlZGVuY2UiKSlicmVhaztyZXR1cm4gZTtjYXNlInNjcmlwdCI6aWYoKChsPWUuZ2V0QXR0cmlidXRlKCJzcmMiKSkhPT0obnVsbD09dC5zcmM/bnVsbDp0LnNyYyl8fGUuZ2V0QXR0cmlidXRlKCJ0eXBlIikhPT0obnVsbD09dC50eXBlP251bGw6dC50eXBlKXx8ZS5nZXRBdHRyaWJ1dGUoImNyb3Nzb3JpZ2luIikhPT0obnVsbD09dC5jcm9zc09yaWdpbj9udWxsOnQuY3Jvc3NPcmlnaW4pKSYmbCYmZS5oYXNBdHRyaWJ1dGUoImFzeW5jIikmJiFlLmhhc0F0dHJpYnV0ZSgiaXRlbXByb3AiKSlicmVhaztyZXR1cm4gZTtkZWZhdWx0OnJldHVybiBlfX1lbHNle2lmKCJpbnB1dCIhPT1ufHwiaGlkZGVuIiE9PWUudHlwZSlyZXR1cm4gZTt2YXIgbD1udWxsPT10Lm5hbWU/bnVsbDoiIit0Lm5hbWU7aWYoImhpZGRlbiI9PT10LnR5cGUmJmUuZ2V0QXR0cmlidXRlKCJuYW1lIik9PT1sKXJldHVybiBlfWlmKG51bGw9PT0oZT1zRihlLm5leHRTaWJsaW5nKSkpYnJlYWt9cmV0dXJuIG51bGx9KHIsbi50eXBlLG4ucGVuZGluZ1Byb3BzLHJfKSk/KG4uc3RhdGVOb2RlPXIsclA9bixyTj1zRihyLmZpcnN0Q2hpbGQpLHJfPSExLGw9ITApOmw9ITEpLGx8fHJEKG4pKSxLKG4pLGw9bi50eXBlLGE9bi5wZW5kaW5nUHJvcHMsbz1udWxsIT09ZT9lLm1lbW9pemVkUHJvcHM6bnVsbCxyPWEuY2hpbGRyZW4sc3YobCxhKT9yPW51bGw6bnVsbCE9PW8mJnN2KGwsbykmJihuLmZsYWdzfD0zMiksbnVsbCE9PW4ubWVtb2l6ZWRTdGF0ZSYmKHM3Ll9jdXJyZW50VmFsdWU9bD1sOShlLG4sYW4sbnVsbCxudWxsLHQpKSxvVChlLG4pLG93KGUsbixyLHQpLG4uY2hpbGQ7Y2FzZSA2OnJldHVybiBudWxsPT09ZSYmckwmJigoZT10PXJOKSYmKG51bGwhPT0odD1mdW5jdGlvbihlLG4sdCl7aWYoIiI9PT1uKXJldHVybiBudWxsO2Zvcig7MyE9PWUubm9kZVR5cGU7KWlmKCgxIT09ZS5ub2RlVHlwZXx8IklOUFVUIiE9PWUubm9kZU5hbWV8fCJoaWRkZW4iIT09ZS50eXBlKSYmIXR8fG51bGw9PT0oZT1zRihlLm5leHRTaWJsaW5nKSkpcmV0dXJuIG51bGw7cmV0dXJuIGV9KHQsbi5wZW5kaW5nUHJvcHMscl8pKT8obi5zdGF0ZU5vZGU9dCxyUD1uLHJOPW51bGwsZT0hMCk6ZT0hMSksZXx8ckQobikpLG51bGw7Y2FzZSAxMzpyZXR1cm4gb0koZSxuLHQpO2Nhc2UgNDpyZXR1cm4gVyhuLG4uc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLHI9bi5wZW5kaW5nUHJvcHMsbnVsbD09PWU/bi5jaGlsZD1sdyhuLG51bGwscix0KTpvdyhlLG4scix0KSxuLmNoaWxkO2Nhc2UgMTE6cmV0dXJuIG9TKGUsbixuLnR5cGUsbi5wZW5kaW5nUHJvcHMsdCk7Y2FzZSA3OnJldHVybiBvdyhlLG4sbi5wZW5kaW5nUHJvcHMsdCksbi5jaGlsZDtjYXNlIDg6Y2FzZSAxMjpyZXR1cm4gb3coZSxuLG4ucGVuZGluZ1Byb3BzLmNoaWxkcmVuLHQpLG4uY2hpbGQ7Y2FzZSAxMDpyZXR1cm4gcj1uLnBlbmRpbmdQcm9wcyxySChuLG4udHlwZSxyLnZhbHVlKSxvdyhlLG4sci5jaGlsZHJlbix0KSxuLmNoaWxkO2Nhc2UgOTpyZXR1cm4gbD1uLnR5cGUuX2NvbnRleHQscj1uLnBlbmRpbmdQcm9wcy5jaGlsZHJlbixyWShuKSxyPXIobD1yWChsKSksbi5mbGFnc3w9MSxvdyhlLG4scix0KSxuLmNoaWxkO2Nhc2UgMTQ6cmV0dXJuIG94KGUsbixuLnR5cGUsbi5wZW5kaW5nUHJvcHMsdCk7Y2FzZSAxNTpyZXR1cm4gb0UoZSxuLG4udHlwZSxuLnBlbmRpbmdQcm9wcyx0KTtjYXNlIDE5OnJldHVybiBvUShlLG4sdCk7Y2FzZSAzMTp2YXIgdT1lLHM9bixjPXQsZj1zLnBlbmRpbmdQcm9wcyxkPTAhPSgxMjgmcy5mbGFncyk7aWYocy5mbGFncyY9LTEyOSxudWxsPT09dSl7aWYockwpe2lmKCJoaWRkZW4iPT09Zi5tb2RlKXJldHVybiB1PW9OKHMsZikscy5sYW5lcz0weDIwMDAwMDAwLG9DKG51bGwsdSk7aWYobEgocyksKHU9ck4pP251bGwhPT0odT1udWxsIT09KHU9c0wodSxyXykpJiYiJiI9PT11LmRhdGE/dTpudWxsKSYmKHMubWVtb2l6ZWRTdGF0ZT17ZGVoeWRyYXRlZDp1LHRyZWVDb250ZXh0Om51bGwhPT1yYj97aWQ6cmssb3ZlcmZsb3c6cnd9Om51bGwscmV0cnlMYW5lOjB4MjAwMDAwMDAsaHlkcmF0aW9uRXJyb3JzOm51bGx9LChjPXJzKHUpKS5yZXR1cm49cyxzLmNoaWxkPWMsclA9cyxyTj1udWxsKTp1PW51bGwsbnVsbD09PXUpdGhyb3cgckQocyk7cmV0dXJuIHMubGFuZXM9MHgyMDAwMDAwMCxudWxsfXJldHVybiBvTihzLGYpfXZhciBwPXUubWVtb2l6ZWRTdGF0ZTtpZihudWxsIT09cCl7dmFyIG09cC5kZWh5ZHJhdGVkO2lmKGxIKHMpLGQpaWYoMjU2JnMuZmxhZ3Mpcy5mbGFncyY9LTI1NyxzPW9MKHUscyxjKTtlbHNlIGlmKG51bGwhPT1zLm1lbW9pemVkU3RhdGUpcy5jaGlsZD11LmNoaWxkLHMuZmxhZ3N8PTEyOCxzPW51bGw7ZWxzZSB0aHJvdyBFcnJvcihpKDU1OCkpO2Vsc2UgaWYob2t8fHJxKHUscyxjLCExKSxkPTAhPShjJnUuY2hpbGRMYW5lcyksb2t8fGQpe2lmKG51bGwhPT0oZj11QSkmJjAhPT0obT1lXyhmLGMpKSYmbSE9PXAucmV0cnlMYW5lKXRocm93IHAucmV0cnlMYW5lPW0sdDUodSxtKSxpbyhmLHUsbSksb2I7aXYoKSxzPW9MKHUscyxjKX1lbHNlIHU9cC50cmVlQ29udGV4dCxyTj1zRihtLm5leHRTaWJsaW5nKSxyUD1zLHJMPSEwLHJUPW51bGwscl89ITEsbnVsbCE9PXUmJnJDKHMsdSkscz1vTihzLGYpLHMuZmxhZ3N8PTQwOTY7cmV0dXJuIHN9cmV0dXJuKHU9cmwodS5jaGlsZCx7bW9kZTpmLm1vZGUsY2hpbGRyZW46Zi5jaGlsZHJlbn0pKS5yZWY9cy5yZWYscy5jaGlsZD11LHUucmV0dXJuPXMsdTtjYXNlIDIyOnJldHVybiBveihlLG4sdCxuLnBlbmRpbmdQcm9wcyk7Y2FzZSAyNDpyZXR1cm4gclkobikscj1yWChyMiksbnVsbD09PWU/KG51bGw9PT0obD1sdCgpKSYmKGw9dUEsYT1yMygpLGwucG9vbGVkQ2FjaGU9YSxhLnJlZkNvdW50KyssbnVsbCE9PWEmJihsLnBvb2xlZENhY2hlTGFuZXN8PXQpLGw9YSksbi5tZW1vaXplZFN0YXRlPXtwYXJlbnQ6cixjYWNoZTpsfSxsRShuKSxySChuLHIyLGwpKTooMCE9KGUubGFuZXMmdCkmJihseihlLG4pLGxGKG4sbnVsbCxudWxsLHQpLGxfKCkpLGw9ZS5tZW1vaXplZFN0YXRlLGE9bi5tZW1vaXplZFN0YXRlLGwucGFyZW50IT09cj8obD17cGFyZW50OnIsY2FjaGU6cn0sbi5tZW1vaXplZFN0YXRlPWwsMD09PW4ubGFuZXMmJihuLm1lbW9pemVkU3RhdGU9bi51cGRhdGVRdWV1ZS5iYXNlU3RhdGU9bCksckgobixyMixyKSk6KHJIKG4scjIscj1hLmNhY2hlKSxyIT09bC5jYWNoZSYmclcobixbcjJdLHQsITApKSksb3coZSxuLG4ucGVuZGluZ1Byb3BzLmNoaWxkcmVuLHQpLG4uY2hpbGQ7Y2FzZSAyOTp0aHJvdyBuLnBlbmRpbmdQcm9wc310aHJvdyBFcnJvcihpKDE1NixuLnRhZykpfWZ1bmN0aW9uIG9LKGUpe2UuZmxhZ3N8PTR9ZnVuY3Rpb24gb1koZSxuLHQscixsKXtpZigobj0wIT0oMzImZS5tb2RlKSkmJihuPSExKSxuKXtpZihlLmZsYWdzfD0weDEwMDAwMDAsKDB4MTNmZmZmNDAmbCk9PT1sKWlmKGUuc3RhdGVOb2RlLmNvbXBsZXRlKWUuZmxhZ3N8PTgxOTI7ZWxzZSBpZihpaCgpKWUuZmxhZ3N8PTgxOTI7ZWxzZSB0aHJvdyBsZD1saSxsb31lbHNlIGUuZmxhZ3MmPS0weDEwMDAwMDF9ZnVuY3Rpb24gb1goZSxuKXtpZigic3R5bGVzaGVldCIhPT1uLnR5cGV8fDAhPSg0Jm4uc3RhdGUubG9hZGluZykpZS5mbGFncyY9LTB4MTAwMDAwMTtlbHNlIGlmKGUuZmxhZ3N8PTB4MTAwMDAwMCwhczMobikpaWYoaWgoKSllLmZsYWdzfD04MTkyO2Vsc2UgdGhyb3cgbGQ9bGksbG99ZnVuY3Rpb24gb0coZSxuKXtudWxsIT09biYmKGUuZmxhZ3N8PTQpLDE2Mzg0JmUuZmxhZ3MmJihuPTIyIT09ZS50YWc/ZUMoKToweDIwMDAwMDAwLGUubGFuZXN8PW4sdVh8PW4pfWZ1bmN0aW9uIG9aKGUsbil7aWYoIXJMKXN3aXRjaChlLnRhaWxNb2RlKXtjYXNlImhpZGRlbiI6bj1lLnRhaWw7Zm9yKHZhciB0PW51bGw7bnVsbCE9PW47KW51bGwhPT1uLmFsdGVybmF0ZSYmKHQ9biksbj1uLnNpYmxpbmc7bnVsbD09PXQ/ZS50YWlsPW51bGw6dC5zaWJsaW5nPW51bGw7YnJlYWs7Y2FzZSJjb2xsYXBzZWQiOnQ9ZS50YWlsO2Zvcih2YXIgcj1udWxsO251bGwhPT10OyludWxsIT09dC5hbHRlcm5hdGUmJihyPXQpLHQ9dC5zaWJsaW5nO251bGw9PT1yP258fG51bGw9PT1lLnRhaWw/ZS50YWlsPW51bGw6ZS50YWlsLnNpYmxpbmc9bnVsbDpyLnNpYmxpbmc9bnVsbH19ZnVuY3Rpb24gb0ooZSl7dmFyIG49bnVsbCE9PWUuYWx0ZXJuYXRlJiZlLmFsdGVybmF0ZS5jaGlsZD09PWUuY2hpbGQsdD0wLHI9MDtpZihuKWZvcih2YXIgbD1lLmNoaWxkO251bGwhPT1sOyl0fD1sLmxhbmVzfGwuY2hpbGRMYW5lcyxyfD0weDNlMDAwMDAmbC5zdWJ0cmVlRmxhZ3Mscnw9MHgzZTAwMDAwJmwuZmxhZ3MsbC5yZXR1cm49ZSxsPWwuc2libGluZztlbHNlIGZvcihsPWUuY2hpbGQ7bnVsbCE9PWw7KXR8PWwubGFuZXN8bC5jaGlsZExhbmVzLHJ8PWwuc3VidHJlZUZsYWdzLHJ8PWwuZmxhZ3MsbC5yZXR1cm49ZSxsPWwuc2libGluZztyZXR1cm4gZS5zdWJ0cmVlRmxhZ3N8PXIsZS5jaGlsZExhbmVzPXQsbn1mdW5jdGlvbiBvMChlLG4pe3N3aXRjaChyeihuKSxuLnRhZyl7Y2FzZSAzOnJRKHIyKSxxKCk7YnJlYWs7Y2FzZSAyNjpjYXNlIDI3OmNhc2UgNTpZKG4pO2JyZWFrO2Nhc2UgNDpxKCk7YnJlYWs7Y2FzZSAzMTpudWxsIT09bi5tZW1vaXplZFN0YXRlJiZsVyhuKTticmVhaztjYXNlIDEzOmxXKG4pO2JyZWFrO2Nhc2UgMTk6JChscSk7YnJlYWs7Y2FzZSAxMDpyUShuLnR5cGUpO2JyZWFrO2Nhc2UgMjI6Y2FzZSAyMzpsVyhuKSxsVSgpLG51bGwhPT1lJiYkKGxuKTticmVhaztjYXNlIDI0OnJRKHIyKX19ZnVuY3Rpb24gbzEoZSxuKXt0cnl7dmFyIHQ9bi51cGRhdGVRdWV1ZSxyPW51bGwhPT10P3QubGFzdEVmZmVjdDpudWxsO2lmKG51bGwhPT1yKXt2YXIgbD1yLm5leHQ7dD1sO2Rve2lmKCh0LnRhZyZlKT09PWUpe3I9dm9pZCAwO3ZhciBhPXQuY3JlYXRlO3QuaW5zdC5kZXN0cm95PXI9YSgpfXQ9dC5uZXh0fXdoaWxlKHQhPT1sKX19Y2F0Y2goZSl7aUQobixuLnJldHVybixlKX19ZnVuY3Rpb24gbzIoZSxuLHQpe3RyeXt2YXIgcj1uLnVwZGF0ZVF1ZXVlLGw9bnVsbCE9PXI/ci5sYXN0RWZmZWN0Om51bGw7aWYobnVsbCE9PWwpe3ZhciBhPWwubmV4dDtyPWE7ZG97aWYoKHIudGFnJmUpPT09ZSl7dmFyIG89ci5pbnN0LHU9by5kZXN0cm95O2lmKHZvaWQgMCE9PXUpe28uZGVzdHJveT12b2lkIDAsbD1uO3RyeXt1KCl9Y2F0Y2goZSl7aUQobCx0LGUpfX19cj1yLm5leHR9d2hpbGUociE9PWEpfX1jYXRjaChlKXtpRChuLG4ucmV0dXJuLGUpfX1mdW5jdGlvbiBvMyhlKXt2YXIgbj1lLnVwZGF0ZVF1ZXVlO2lmKG51bGwhPT1uKXt2YXIgdD1lLnN0YXRlTm9kZTt0cnl7bE8obix0KX1jYXRjaChuKXtpRChlLGUucmV0dXJuLG4pfX19ZnVuY3Rpb24gbzQoZSxuLHQpe3QucHJvcHM9b2MoZS50eXBlLGUubWVtb2l6ZWRQcm9wcyksdC5zdGF0ZT1lLm1lbW9pemVkU3RhdGU7dHJ5e3QuY29tcG9uZW50V2lsbFVubW91bnQoKX1jYXRjaCh0KXtpRChlLG4sdCl9fWZ1bmN0aW9uIG84KGUsbil7dHJ5e3ZhciB0PWUucmVmO2lmKG51bGwhPT10KXtzd2l0Y2goZS50YWcpe2Nhc2UgMjY6Y2FzZSAyNzpjYXNlIDU6dmFyIHI9ZS5zdGF0ZU5vZGU7YnJlYWs7ZGVmYXVsdDpyPWUuc3RhdGVOb2RlfSJmdW5jdGlvbiI9PXR5cGVvZiB0P2UucmVmQ2xlYW51cD10KHIpOnQuY3VycmVudD1yfX1jYXRjaCh0KXtpRChlLG4sdCl9fWZ1bmN0aW9uIG82KGUsbil7dmFyIHQ9ZS5yZWYscj1lLnJlZkNsZWFudXA7aWYobnVsbCE9PXQpaWYoImZ1bmN0aW9uIj09dHlwZW9mIHIpdHJ5e3IoKX1jYXRjaCh0KXtpRChlLG4sdCl9ZmluYWxseXtlLnJlZkNsZWFudXA9bnVsbCxudWxsIT0oZT1lLmFsdGVybmF0ZSkmJihlLnJlZkNsZWFudXA9bnVsbCl9ZWxzZSBpZigiZnVuY3Rpb24iPT10eXBlb2YgdCl0cnl7dChudWxsKX1jYXRjaCh0KXtpRChlLG4sdCl9ZWxzZSB0LmN1cnJlbnQ9bnVsbH1mdW5jdGlvbiBvNShlKXt2YXIgbj1lLnR5cGUsdD1lLm1lbW9pemVkUHJvcHMscj1lLnN0YXRlTm9kZTt0cnl7c3dpdGNoKG4pe2Nhc2UiYnV0dG9uIjpjYXNlImlucHV0IjpjYXNlInNlbGVjdCI6Y2FzZSJ0ZXh0YXJlYSI6dC5hdXRvRm9jdXMmJnIuZm9jdXMoKTticmVhaztjYXNlImltZyI6dC5zcmM/ci5zcmM9dC5zcmM6dC5zcmNTZXQmJihyLnNyY3NldD10LnNyY1NldCl9fWNhdGNoKG4pe2lEKGUsZS5yZXR1cm4sbil9fWZ1bmN0aW9uIG85KGUsbix0KXt0cnl7dmFyIHI9ZS5zdGF0ZU5vZGU7KGZ1bmN0aW9uKGUsbix0LHIpe3N3aXRjaChuKXtjYXNlImRpdiI6Y2FzZSJzcGFuIjpjYXNlInN2ZyI6Y2FzZSJwYXRoIjpjYXNlImEiOmNhc2UiZyI6Y2FzZSJwIjpjYXNlImxpIjpicmVhaztjYXNlImlucHV0Ijp2YXIgbD1udWxsLGE9bnVsbCxvPW51bGwsdT1udWxsLHM9bnVsbCxjPW51bGwsZj1udWxsO2ZvcihtIGluIHQpe3ZhciBkPXRbbV07aWYodC5oYXNPd25Qcm9wZXJ0eShtKSYmbnVsbCE9ZClzd2l0Y2gobSl7Y2FzZSJjaGVja2VkIjpjYXNlInZhbHVlIjpicmVhaztjYXNlImRlZmF1bHRWYWx1ZSI6cz1kO2RlZmF1bHQ6ci5oYXNPd25Qcm9wZXJ0eShtKXx8c2MoZSxuLG0sbnVsbCxyLGQpfX1mb3IodmFyIHAgaW4gcil7dmFyIG09cltwXTtpZihkPXRbcF0sci5oYXNPd25Qcm9wZXJ0eShwKSYmKG51bGwhPW18fG51bGwhPWQpKXN3aXRjaChwKXtjYXNlInR5cGUiOmE9bTticmVhaztjYXNlIm5hbWUiOmw9bTticmVhaztjYXNlImNoZWNrZWQiOmM9bTticmVhaztjYXNlImRlZmF1bHRDaGVja2VkIjpmPW07YnJlYWs7Y2FzZSJ2YWx1ZSI6bz1tO2JyZWFrO2Nhc2UiZGVmYXVsdFZhbHVlIjp1PW07YnJlYWs7Y2FzZSJjaGlsZHJlbiI6Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6aWYobnVsbCE9bSl0aHJvdyBFcnJvcihpKDEzNyxuKSk7YnJlYWs7ZGVmYXVsdDptIT09ZCYmc2MoZSxuLHAsbSxyLGQpfX1ubChlLG8sdSxzLGMsZixhLGwpO3JldHVybjtjYXNlInNlbGVjdCI6Zm9yKGEgaW4gbT1vPXU9cD1udWxsLHQpaWYocz10W2FdLHQuaGFzT3duUHJvcGVydHkoYSkmJm51bGwhPXMpc3dpdGNoKGEpe2Nhc2UidmFsdWUiOmJyZWFrO2Nhc2UibXVsdGlwbGUiOm09cztkZWZhdWx0OnIuaGFzT3duUHJvcGVydHkoYSl8fHNjKGUsbixhLG51bGwscixzKX1mb3IobCBpbiByKWlmKGE9cltsXSxzPXRbbF0sci5oYXNPd25Qcm9wZXJ0eShsKSYmKG51bGwhPWF8fG51bGwhPXMpKXN3aXRjaChsKXtjYXNlInZhbHVlIjpwPWE7YnJlYWs7Y2FzZSJkZWZhdWx0VmFsdWUiOnU9YTticmVhaztjYXNlIm11bHRpcGxlIjpvPWE7ZGVmYXVsdDphIT09cyYmc2MoZSxuLGwsYSxyLHMpfW49dSx0PW8scj1tLG51bGwhPXA/bnUoZSwhIXQscCwhMSk6ISFyIT0hIXQmJihudWxsIT1uP251KGUsISF0LG4sITApOm51KGUsISF0LHQ/W106IiIsITEpKTtyZXR1cm47Y2FzZSJ0ZXh0YXJlYSI6Zm9yKHUgaW4gbT1wPW51bGwsdClpZihsPXRbdV0sdC5oYXNPd25Qcm9wZXJ0eSh1KSYmbnVsbCE9bCYmIXIuaGFzT3duUHJvcGVydHkodSkpc3dpdGNoKHUpe2Nhc2UidmFsdWUiOmNhc2UiY2hpbGRyZW4iOmJyZWFrO2RlZmF1bHQ6c2MoZSxuLHUsbnVsbCxyLGwpfWZvcihvIGluIHIpaWYobD1yW29dLGE9dFtvXSxyLmhhc093blByb3BlcnR5KG8pJiYobnVsbCE9bHx8bnVsbCE9YSkpc3dpdGNoKG8pe2Nhc2UidmFsdWUiOnA9bDticmVhaztjYXNlImRlZmF1bHRWYWx1ZSI6bT1sO2JyZWFrO2Nhc2UiY2hpbGRyZW4iOmJyZWFrO2Nhc2UiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiOmlmKG51bGwhPWwpdGhyb3cgRXJyb3IoaSg5MSkpO2JyZWFrO2RlZmF1bHQ6bCE9PWEmJnNjKGUsbixvLGwscixhKX1uaShlLHAsbSk7cmV0dXJuO2Nhc2Uib3B0aW9uIjpmb3IodmFyIGggaW4gdClwPXRbaF0sdC5oYXNPd25Qcm9wZXJ0eShoKSYmbnVsbCE9cCYmIXIuaGFzT3duUHJvcGVydHkoaCkmJigic2VsZWN0ZWQiPT09aD9lLnNlbGVjdGVkPSExOnNjKGUsbixoLG51bGwscixwKSk7Zm9yKHMgaW4gcilwPXJbc10sbT10W3NdLHIuaGFzT3duUHJvcGVydHkocykmJnAhPT1tJiYobnVsbCE9cHx8bnVsbCE9bSkmJigic2VsZWN0ZWQiPT09cz9lLnNlbGVjdGVkPXAmJiJmdW5jdGlvbiIhPXR5cGVvZiBwJiYic3ltYm9sIiE9dHlwZW9mIHA6c2MoZSxuLHMscCxyLG0pKTtyZXR1cm47Y2FzZSJpbWciOmNhc2UibGluayI6Y2FzZSJhcmVhIjpjYXNlImJhc2UiOmNhc2UiYnIiOmNhc2UiY29sIjpjYXNlImVtYmVkIjpjYXNlImhyIjpjYXNlImtleWdlbiI6Y2FzZSJtZXRhIjpjYXNlInBhcmFtIjpjYXNlInNvdXJjZSI6Y2FzZSJ0cmFjayI6Y2FzZSJ3YnIiOmNhc2UibWVudWl0ZW0iOmZvcih2YXIgZyBpbiB0KXA9dFtnXSx0Lmhhc093blByb3BlcnR5KGcpJiZudWxsIT1wJiYhci5oYXNPd25Qcm9wZXJ0eShnKSYmc2MoZSxuLGcsbnVsbCxyLHApO2ZvcihjIGluIHIpaWYocD1yW2NdLG09dFtjXSxyLmhhc093blByb3BlcnR5KGMpJiZwIT09bSYmKG51bGwhPXB8fG51bGwhPW0pKXN3aXRjaChjKXtjYXNlImNoaWxkcmVuIjpjYXNlImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIjppZihudWxsIT1wKXRocm93IEVycm9yKGkoMTM3LG4pKTticmVhaztkZWZhdWx0OnNjKGUsbixjLHAscixtKX1yZXR1cm47ZGVmYXVsdDppZihubShuKSl7Zm9yKHZhciB5IGluIHQpcD10W3ldLHQuaGFzT3duUHJvcGVydHkoeSkmJnZvaWQgMCE9PXAmJiFyLmhhc093blByb3BlcnR5KHkpJiZzZihlLG4seSx2b2lkIDAscixwKTtmb3IoZiBpbiByKXA9cltmXSxtPXRbZl0sci5oYXNPd25Qcm9wZXJ0eShmKSYmcCE9PW0mJih2b2lkIDAhPT1wfHx2b2lkIDAhPT1tKSYmc2YoZSxuLGYscCxyLG0pO3JldHVybn19Zm9yKHZhciB2IGluIHQpcD10W3ZdLHQuaGFzT3duUHJvcGVydHkodikmJm51bGwhPXAmJiFyLmhhc093blByb3BlcnR5KHYpJiZzYyhlLG4sdixudWxsLHIscCk7Zm9yKGQgaW4gcilwPXJbZF0sbT10W2RdLHIuaGFzT3duUHJvcGVydHkoZCkmJnAhPT1tJiYobnVsbCE9cHx8bnVsbCE9bSkmJnNjKGUsbixkLHAscixtKX0pKHIsZS50eXBlLHQsbikscltlSV09bn1jYXRjaChuKXtpRChlLGUucmV0dXJuLG4pfX1mdW5jdGlvbiBvNyhlKXtyZXR1cm4gNT09PWUudGFnfHwzPT09ZS50YWd8fDI2PT09ZS50YWd8fDI3PT09ZS50YWcmJnN6KGUudHlwZSl8fDQ9PT1lLnRhZ31mdW5jdGlvbiB1ZShlKXtlOmZvcig7Oyl7Zm9yKDtudWxsPT09ZS5zaWJsaW5nOyl7aWYobnVsbD09PWUucmV0dXJufHxvNyhlLnJldHVybikpcmV0dXJuIG51bGw7ZT1lLnJldHVybn1mb3IoZS5zaWJsaW5nLnJldHVybj1lLnJldHVybixlPWUuc2libGluZzs1IT09ZS50YWcmJjYhPT1lLnRhZyYmMTghPT1lLnRhZzspe2lmKDI3PT09ZS50YWcmJnN6KGUudHlwZSl8fDImZS5mbGFnc3x8bnVsbD09PWUuY2hpbGR8fDQ9PT1lLnRhZyljb250aW51ZSBlO2UuY2hpbGQucmV0dXJuPWUsZT1lLmNoaWxkfWlmKCEoMiZlLmZsYWdzKSlyZXR1cm4gZS5zdGF0ZU5vZGV9fWZ1bmN0aW9uIHVuKGUsbix0KXt2YXIgcj1lLnRhZztpZig1PT09cnx8Nj09PXIpZT1lLnN0YXRlTm9kZSxuP3QuaW5zZXJ0QmVmb3JlKGUsbik6dC5hcHBlbmRDaGlsZChlKTtlbHNlIGlmKDQhPT1yJiYoMjc9PT1yJiZzeihlLnR5cGUpJiYodD1lLnN0YXRlTm9kZSksbnVsbCE9PShlPWUuY2hpbGQpKSlmb3IodW4oZSxuLHQpLGU9ZS5zaWJsaW5nO251bGwhPT1lOyl1bihlLG4sdCksZT1lLnNpYmxpbmd9ZnVuY3Rpb24gdXQoZSl7dmFyIG49ZS5zdGF0ZU5vZGUsdD1lLm1lbW9pemVkUHJvcHM7dHJ5e2Zvcih2YXIgcj1lLnR5cGUsbD1uLmF0dHJpYnV0ZXM7bC5sZW5ndGg7KW4ucmVtb3ZlQXR0cmlidXRlTm9kZShsWzBdKTtzZChuLHIsdCksbltlUl09ZSxuW2VJXT10fWNhdGNoKG4pe2lEKGUsZS5yZXR1cm4sbil9fXZhciB1cj0hMSx1bD0hMSx1YT0hMSx1bz0iZnVuY3Rpb24iPT10eXBlb2YgV2Vha1NldD9XZWFrU2V0OlNldCx1dT1udWxsO2Z1bmN0aW9uIHVpKGUsbix0KXt2YXIgcj10LmZsYWdzO3N3aXRjaCh0LnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTp1ayhlLHQpLDQmciYmbzEoNSx0KTticmVhaztjYXNlIDE6aWYodWsoZSx0KSw0JnIpaWYoZT10LnN0YXRlTm9kZSxudWxsPT09bil0cnl7ZS5jb21wb25lbnREaWRNb3VudCgpfWNhdGNoKGUpe2lEKHQsdC5yZXR1cm4sZSl9ZWxzZXt2YXIgbD1vYyh0LnR5cGUsbi5tZW1vaXplZFByb3BzKTtuPW4ubWVtb2l6ZWRTdGF0ZTt0cnl7ZS5jb21wb25lbnREaWRVcGRhdGUobCxuLGUuX19yZWFjdEludGVybmFsU25hcHNob3RCZWZvcmVVcGRhdGUpfWNhdGNoKGUpe2lEKHQsdC5yZXR1cm4sZSl9fTY0JnImJm8zKHQpLDUxMiZyJiZvOCh0LHQucmV0dXJuKTticmVhaztjYXNlIDM6aWYodWsoZSx0KSw2NCZyJiZudWxsIT09KGU9dC51cGRhdGVRdWV1ZSkpe2lmKG49bnVsbCxudWxsIT09dC5jaGlsZClzd2l0Y2godC5jaGlsZC50YWcpe2Nhc2UgMjc6Y2FzZSA1OmNhc2UgMTpuPXQuY2hpbGQuc3RhdGVOb2RlfXRyeXtsTyhlLG4pfWNhdGNoKGUpe2lEKHQsdC5yZXR1cm4sZSl9fWJyZWFrO2Nhc2UgMjc6bnVsbD09PW4mJjQmciYmdXQodCk7Y2FzZSAyNjpjYXNlIDU6dWsoZSx0KSxudWxsPT09biYmNCZyJiZvNSh0KSw1MTImciYmbzgodCx0LnJldHVybik7YnJlYWs7Y2FzZSAxMjpkZWZhdWx0OnVrKGUsdCk7YnJlYWs7Y2FzZSAzMTp1ayhlLHQpLDQmciYmdXAoZSx0KTticmVhaztjYXNlIDEzOnVrKGUsdCksNCZyJiZ1bShlLHQpLDY0JnImJm51bGwhPT0oZT10Lm1lbW9pemVkU3RhdGUpJiZudWxsIT09KGU9ZS5kZWh5ZHJhdGVkKSYmZnVuY3Rpb24oZSxuKXt2YXIgdD1lLm93bmVyRG9jdW1lbnQ7aWYoIiR+Ij09PWUuZGF0YSllLl9yZWFjdFJldHJ5PW47ZWxzZSBpZigiJD8iIT09ZS5kYXRhfHwibG9hZGluZyIhPT10LnJlYWR5U3RhdGUpbigpO2Vsc2V7dmFyIHI9ZnVuY3Rpb24oKXtuKCksdC5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixyKX07dC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixyKSxlLl9yZWFjdFJldHJ5PXJ9fShlLHQ9aVIuYmluZChudWxsLHQpKTticmVhaztjYXNlIDIyOmlmKCEocj1udWxsIT09dC5tZW1vaXplZFN0YXRlfHx1cikpe249bnVsbCE9PW4mJm51bGwhPT1uLm1lbW9pemVkU3RhdGV8fHVsLGw9dXI7dmFyIGE9dWw7dXI9ciwodWw9bikmJiFhP2Z1bmN0aW9uIGUobix0LHIpe2ZvcihyPXImJjAhPSg4NzcyJnQuc3VidHJlZUZsYWdzKSx0PXQuY2hpbGQ7bnVsbCE9PXQ7KXt2YXIgbD10LmFsdGVybmF0ZSxhPW4sbz10LHU9by5mbGFncztzd2l0Y2goby50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6ZShhLG8sciksbzEoNCxvKTticmVhaztjYXNlIDE6aWYoZShhLG8sciksImZ1bmN0aW9uIj09dHlwZW9mKGE9KGw9bykuc3RhdGVOb2RlKS5jb21wb25lbnREaWRNb3VudCl0cnl7YS5jb21wb25lbnREaWRNb3VudCgpfWNhdGNoKGUpe2lEKGwsbC5yZXR1cm4sZSl9aWYobnVsbCE9PShhPShsPW8pLnVwZGF0ZVF1ZXVlKSl7dmFyIGk9bC5zdGF0ZU5vZGU7dHJ5e3ZhciBzPWEuc2hhcmVkLmhpZGRlbkNhbGxiYWNrcztpZihudWxsIT09cylmb3IoYS5zaGFyZWQuaGlkZGVuQ2FsbGJhY2tzPW51bGwsYT0wO2E8cy5sZW5ndGg7YSsrKWxEKHNbYV0saSl9Y2F0Y2goZSl7aUQobCxsLnJldHVybixlKX19ciYmNjQmdSYmbzMobyksbzgobyxvLnJldHVybik7YnJlYWs7Y2FzZSAyNzp1dChvKTtjYXNlIDI2OmNhc2UgNTplKGEsbyxyKSxyJiZudWxsPT09bCYmNCZ1JiZvNShvKSxvOChvLG8ucmV0dXJuKTticmVhaztjYXNlIDEyOmRlZmF1bHQ6ZShhLG8scik7YnJlYWs7Y2FzZSAzMTplKGEsbyxyKSxyJiY0JnUmJnVwKGEsbyk7YnJlYWs7Y2FzZSAxMzplKGEsbyxyKSxyJiY0JnUmJnVtKGEsbyk7YnJlYWs7Y2FzZSAyMjpudWxsPT09by5tZW1vaXplZFN0YXRlJiZlKGEsbyxyKSxvOChvLG8ucmV0dXJuKTtjYXNlIDMwOn10PXQuc2libGluZ319KGUsdCwwIT0oODc3MiZ0LnN1YnRyZWVGbGFncykpOnVrKGUsdCksdXI9bCx1bD1hfWNhc2UgMzA6fX12YXIgdXM9bnVsbCx1Yz0hMTtmdW5jdGlvbiB1ZihlLG4sdCl7Zm9yKHQ9dC5jaGlsZDtudWxsIT09dDspdWQoZSxuLHQpLHQ9dC5zaWJsaW5nfWZ1bmN0aW9uIHVkKGUsbix0KXtpZihlaCYmImZ1bmN0aW9uIj09dHlwZW9mIGVoLm9uQ29tbWl0RmliZXJVbm1vdW50KXRyeXtlaC5vbkNvbW1pdEZpYmVyVW5tb3VudChlbSx0KX1jYXRjaChlKXt9c3dpdGNoKHQudGFnKXtjYXNlIDI2OnVsfHxvNih0LG4pLHVmKGUsbix0KSx0Lm1lbW9pemVkU3RhdGU/dC5tZW1vaXplZFN0YXRlLmNvdW50LS06dC5zdGF0ZU5vZGUmJih0PXQuc3RhdGVOb2RlKS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpO2JyZWFrO2Nhc2UgMjc6dWx8fG82KHQsbik7dmFyIHI9dXMsbD11Yztzeih0LnR5cGUpJiYodXM9dC5zdGF0ZU5vZGUsdWM9ITEpLHVmKGUsbix0KSxzUih0LnN0YXRlTm9kZSksdXM9cix1Yz1sO2JyZWFrO2Nhc2UgNTp1bHx8bzYodCxuKTtjYXNlIDY6aWYocj11cyxsPXVjLHVzPW51bGwsdWYoZSxuLHQpLHVzPXIsdWM9bCxudWxsIT09dXMpaWYodWMpdHJ5eyg5PT09dXMubm9kZVR5cGU/dXMuYm9keToiSFRNTCI9PT11cy5ub2RlTmFtZT91cy5vd25lckRvY3VtZW50LmJvZHk6dXMpLnJlbW92ZUNoaWxkKHQuc3RhdGVOb2RlKX1jYXRjaChlKXtpRCh0LG4sZSl9ZWxzZSB0cnl7dXMucmVtb3ZlQ2hpbGQodC5zdGF0ZU5vZGUpfWNhdGNoKGUpe2lEKHQsbixlKX1icmVhaztjYXNlIDE4Om51bGwhPT11cyYmKHVjPyhzQyg5PT09KGU9dXMpLm5vZGVUeXBlP2UuYm9keToiSFRNTCI9PT1lLm5vZGVOYW1lP2Uub3duZXJEb2N1bWVudC5ib2R5OmUsdC5zdGF0ZU5vZGUpLGNGKGUpKTpzQyh1cyx0LnN0YXRlTm9kZSkpO2JyZWFrO2Nhc2UgNDpyPXVzLGw9dWMsdXM9dC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyx1Yz0hMCx1ZihlLG4sdCksdXM9cix1Yz1sO2JyZWFrO2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTp1bHx8bzIoMix0LG4pLHVsfHxvMig0LHQsbiksdWYoZSxuLHQpO2JyZWFrO2Nhc2UgMTp1bHx8KG82KHQsbiksImZ1bmN0aW9uIj09dHlwZW9mKHI9dC5zdGF0ZU5vZGUpLmNvbXBvbmVudFdpbGxVbm1vdW50JiZvNCh0LG4scikpLHVmKGUsbix0KTticmVhaztjYXNlIDIxOmRlZmF1bHQ6dWYoZSxuLHQpO2JyZWFrO2Nhc2UgMjI6dWw9KHI9dWwpfHxudWxsIT09dC5tZW1vaXplZFN0YXRlLHVmKGUsbix0KSx1bD1yfX1mdW5jdGlvbiB1cChlLG4pe2lmKG51bGw9PT1uLm1lbW9pemVkU3RhdGUmJm51bGwhPT0oZT1uLmFsdGVybmF0ZSkmJm51bGwhPT0oZT1lLm1lbW9pemVkU3RhdGUpKXtlPWUuZGVoeWRyYXRlZDt0cnl7Y0YoZSl9Y2F0Y2goZSl7aUQobixuLnJldHVybixlKX19fWZ1bmN0aW9uIHVtKGUsbil7aWYobnVsbD09PW4ubWVtb2l6ZWRTdGF0ZSYmbnVsbCE9PShlPW4uYWx0ZXJuYXRlKSYmbnVsbCE9PShlPWUubWVtb2l6ZWRTdGF0ZSkmJm51bGwhPT0oZT1lLmRlaHlkcmF0ZWQpKXRyeXtjRihlKX1jYXRjaChlKXtpRChuLG4ucmV0dXJuLGUpfX1mdW5jdGlvbiB1aChlLG4pe3ZhciB0PWZ1bmN0aW9uKGUpe3N3aXRjaChlLnRhZyl7Y2FzZSAzMTpjYXNlIDEzOmNhc2UgMTk6dmFyIG49ZS5zdGF0ZU5vZGU7cmV0dXJuIG51bGw9PT1uJiYobj1lLnN0YXRlTm9kZT1uZXcgdW8pLG47Y2FzZSAyMjpyZXR1cm4gbnVsbD09PShuPShlPWUuc3RhdGVOb2RlKS5fcmV0cnlDYWNoZSkmJihuPWUuX3JldHJ5Q2FjaGU9bmV3IHVvKSxuO2RlZmF1bHQ6dGhyb3cgRXJyb3IoaSg0MzUsZS50YWcpKX19KGUpO24uZm9yRWFjaChmdW5jdGlvbihuKXtpZighdC5oYXMobikpe3QuYWRkKG4pO3ZhciByPWlJLmJpbmQobnVsbCxlLG4pO24udGhlbihyLHIpfX0pfWZ1bmN0aW9uIHVnKGUsbil7dmFyIHQ9bi5kZWxldGlvbnM7aWYobnVsbCE9PXQpZm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBsPXRbcl0sYT1lLG89bix1PW87ZTpmb3IoO251bGwhPT11Oyl7c3dpdGNoKHUudGFnKXtjYXNlIDI3OmlmKHN6KHUudHlwZSkpe3VzPXUuc3RhdGVOb2RlLHVjPSExO2JyZWFrIGV9YnJlYWs7Y2FzZSA1OnVzPXUuc3RhdGVOb2RlLHVjPSExO2JyZWFrIGU7Y2FzZSAzOmNhc2UgNDp1cz11LnN0YXRlTm9kZS5jb250YWluZXJJbmZvLHVjPSEwO2JyZWFrIGV9dT11LnJldHVybn1pZihudWxsPT09dXMpdGhyb3cgRXJyb3IoaSgxNjApKTt1ZChhLG8sbCksdXM9bnVsbCx1Yz0hMSxudWxsIT09KGE9bC5hbHRlcm5hdGUpJiYoYS5yZXR1cm49bnVsbCksbC5yZXR1cm49bnVsbH1pZigxMzg3OCZuLnN1YnRyZWVGbGFncylmb3Iobj1uLmNoaWxkO251bGwhPT1uOyl1dihuLGUpLG49bi5zaWJsaW5nfXZhciB1eT1udWxsO2Z1bmN0aW9uIHV2KGUsbil7dmFyIHQ9ZS5hbHRlcm5hdGUscj1lLmZsYWdzO3N3aXRjaChlLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNDpjYXNlIDE1OnVnKG4sZSksdWIoZSksNCZyJiYobzIoMyxlLGUucmV0dXJuKSxvMSgzLGUpLG8yKDUsZSxlLnJldHVybikpO2JyZWFrO2Nhc2UgMTp1ZyhuLGUpLHViKGUpLDUxMiZyJiYodWx8fG51bGw9PT10fHxvNih0LHQucmV0dXJuKSksNjQmciYmdXImJm51bGwhPT0oZT1lLnVwZGF0ZVF1ZXVlKSYmbnVsbCE9PShyPWUuY2FsbGJhY2tzKSYmKHQ9ZS5zaGFyZWQuaGlkZGVuQ2FsbGJhY2tzLGUuc2hhcmVkLmhpZGRlbkNhbGxiYWNrcz1udWxsPT09dD9yOnQuY29uY2F0KHIpKTticmVhaztjYXNlIDI2OnZhciBsPXV5O2lmKHVnKG4sZSksdWIoZSksNTEyJnImJih1bHx8bnVsbD09PXR8fG82KHQsdC5yZXR1cm4pKSw0JnIpe3ZhciBhPW51bGwhPT10P3QubWVtb2l6ZWRTdGF0ZTpudWxsO2lmKHI9ZS5tZW1vaXplZFN0YXRlLG51bGw9PT10KWlmKG51bGw9PT1yKWlmKG51bGw9PT1lLnN0YXRlTm9kZSl7ZTp7cj1lLnR5cGUsdD1lLm1lbW9pemVkUHJvcHMsbD1sLm93bmVyRG9jdW1lbnR8fGw7bjpzd2l0Y2gocil7Y2FzZSJ0aXRsZSI6KCEoYT1sLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0aXRsZSIpWzBdKXx8YVtlUV18fGFbZVJdfHwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPT09YS5uYW1lc3BhY2VVUkl8fGEuaGFzQXR0cmlidXRlKCJpdGVtcHJvcCIpKSYmKGE9bC5jcmVhdGVFbGVtZW50KHIpLGwuaGVhZC5pbnNlcnRCZWZvcmUoYSxsLnF1ZXJ5U2VsZWN0b3IoImhlYWQgPiB0aXRsZSIpKSksc2QoYSxyLHQpLGFbZVJdPWUsZVgoYSkscj1hO2JyZWFrIGU7Y2FzZSJsaW5rIjp2YXIgbz1zMSgibGluayIsImhyZWYiLGwpLmdldChyKyh0LmhyZWZ8fCIiKSk7aWYobyl7Zm9yKHZhciB1PTA7dTxvLmxlbmd0aDt1KyspaWYoKGE9b1t1XSkuZ2V0QXR0cmlidXRlKCJocmVmIik9PT0obnVsbD09dC5ocmVmfHwiIj09PXQuaHJlZj9udWxsOnQuaHJlZikmJmEuZ2V0QXR0cmlidXRlKCJyZWwiKT09PShudWxsPT10LnJlbD9udWxsOnQucmVsKSYmYS5nZXRBdHRyaWJ1dGUoInRpdGxlIik9PT0obnVsbD09dC50aXRsZT9udWxsOnQudGl0bGUpJiZhLmdldEF0dHJpYnV0ZSgiY3Jvc3NvcmlnaW4iKT09PShudWxsPT10LmNyb3NzT3JpZ2luP251bGw6dC5jcm9zc09yaWdpbikpe28uc3BsaWNlKHUsMSk7YnJlYWsgbn19c2QoYT1sLmNyZWF0ZUVsZW1lbnQocikscix0KSxsLmhlYWQuYXBwZW5kQ2hpbGQoYSk7YnJlYWs7Y2FzZSJtZXRhIjppZihvPXMxKCJtZXRhIiwiY29udGVudCIsbCkuZ2V0KHIrKHQuY29udGVudHx8IiIpKSl7Zm9yKHU9MDt1PG8ubGVuZ3RoO3UrKylpZigoYT1vW3VdKS5nZXRBdHRyaWJ1dGUoImNvbnRlbnQiKT09PShudWxsPT10LmNvbnRlbnQ/bnVsbDoiIit0LmNvbnRlbnQpJiZhLmdldEF0dHJpYnV0ZSgibmFtZSIpPT09KG51bGw9PXQubmFtZT9udWxsOnQubmFtZSkmJmEuZ2V0QXR0cmlidXRlKCJwcm9wZXJ0eSIpPT09KG51bGw9PXQucHJvcGVydHk/bnVsbDp0LnByb3BlcnR5KSYmYS5nZXRBdHRyaWJ1dGUoImh0dHAtZXF1aXYiKT09PShudWxsPT10Lmh0dHBFcXVpdj9udWxsOnQuaHR0cEVxdWl2KSYmYS5nZXRBdHRyaWJ1dGUoImNoYXJzZXQiKT09PShudWxsPT10LmNoYXJTZXQ/bnVsbDp0LmNoYXJTZXQpKXtvLnNwbGljZSh1LDEpO2JyZWFrIG59fXNkKGE9bC5jcmVhdGVFbGVtZW50KHIpLHIsdCksbC5oZWFkLmFwcGVuZENoaWxkKGEpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoaSg0NjgscikpfWFbZVJdPWUsZVgoYSkscj1hfWUuc3RhdGVOb2RlPXJ9ZWxzZSBzMihsLGUudHlwZSxlLnN0YXRlTm9kZSk7ZWxzZSBlLnN0YXRlTm9kZT1zWChsLHIsZS5tZW1vaXplZFByb3BzKTtlbHNlIGEhPT1yPyhudWxsPT09YT9udWxsIT09dC5zdGF0ZU5vZGUmJih0PXQuc3RhdGVOb2RlKS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpOmEuY291bnQtLSxudWxsPT09cj9zMihsLGUudHlwZSxlLnN0YXRlTm9kZSk6c1gobCxyLGUubWVtb2l6ZWRQcm9wcykpOm51bGw9PT1yJiZudWxsIT09ZS5zdGF0ZU5vZGUmJm85KGUsZS5tZW1vaXplZFByb3BzLHQubWVtb2l6ZWRQcm9wcyl9YnJlYWs7Y2FzZSAyNzp1ZyhuLGUpLHViKGUpLDUxMiZyJiYodWx8fG51bGw9PT10fHxvNih0LHQucmV0dXJuKSksbnVsbCE9PXQmJjQmciYmbzkoZSxlLm1lbW9pemVkUHJvcHMsdC5tZW1vaXplZFByb3BzKTticmVhaztjYXNlIDU6aWYodWcobixlKSx1YihlKSw1MTImciYmKHVsfHxudWxsPT09dHx8bzYodCx0LnJldHVybikpLDMyJmUuZmxhZ3Mpe2w9ZS5zdGF0ZU5vZGU7dHJ5e25jKGwsIiIpfWNhdGNoKG4pe2lEKGUsZS5yZXR1cm4sbil9fTQmciYmbnVsbCE9ZS5zdGF0ZU5vZGUmJihsPWUubWVtb2l6ZWRQcm9wcyxvOShlLGwsbnVsbCE9PXQ/dC5tZW1vaXplZFByb3BzOmwpKSwxMDI0JnImJih1YT0hMCk7YnJlYWs7Y2FzZSA2OmlmKHVnKG4sZSksdWIoZSksNCZyKXtpZihudWxsPT09ZS5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IoaSgxNjIpKTtyPWUubWVtb2l6ZWRQcm9wcyx0PWUuc3RhdGVOb2RlO3RyeXt0Lm5vZGVWYWx1ZT1yfWNhdGNoKG4pe2lEKGUsZS5yZXR1cm4sbil9fWJyZWFrO2Nhc2UgMzppZihzMD1udWxsLGw9dXksdXk9cyQobi5jb250YWluZXJJbmZvKSx1ZyhuLGUpLHV5PWwsdWIoZSksNCZyJiZudWxsIT09dCYmdC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCl0cnl7Y0Yobi5jb250YWluZXJJbmZvKX1jYXRjaChuKXtpRChlLGUucmV0dXJuLG4pfXVhJiYodWE9ITEsZnVuY3Rpb24gZShuKXtpZigxMDI0Jm4uc3VidHJlZUZsYWdzKWZvcihuPW4uY2hpbGQ7bnVsbCE9PW47KXt2YXIgdD1uO2UodCksNT09PXQudGFnJiYxMDI0JnQuZmxhZ3MmJnQuc3RhdGVOb2RlLnJlc2V0KCksbj1uLnNpYmxpbmd9fShlKSk7YnJlYWs7Y2FzZSA0OnI9dXksdXk9cyQoZS5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyksdWcobixlKSx1YihlKSx1eT1yO2JyZWFrO2Nhc2UgMTI6ZGVmYXVsdDp1ZyhuLGUpLHViKGUpO2JyZWFrO2Nhc2UgMzE6Y2FzZSAxOTp1ZyhuLGUpLHViKGUpLDQmciYmbnVsbCE9PShyPWUudXBkYXRlUXVldWUpJiYoZS51cGRhdGVRdWV1ZT1udWxsLHVoKGUscikpO2JyZWFrO2Nhc2UgMTM6dWcobixlKSx1YihlKSw4MTkyJmUuY2hpbGQuZmxhZ3MmJm51bGwhPT1lLm1lbW9pemVkU3RhdGUhPShudWxsIT09dCYmbnVsbCE9PXQubWVtb2l6ZWRTdGF0ZSkmJih1MD1lYSgpKSw0JnImJm51bGwhPT0ocj1lLnVwZGF0ZVF1ZXVlKSYmKGUudXBkYXRlUXVldWU9bnVsbCx1aChlLHIpKTticmVhaztjYXNlIDIyOmw9bnVsbCE9PWUubWVtb2l6ZWRTdGF0ZTt2YXIgcz1udWxsIT09dCYmbnVsbCE9PXQubWVtb2l6ZWRTdGF0ZSxjPXVyLGY9dWw7aWYodXI9Y3x8bCx1bD1mfHxzLHVnKG4sZSksdWw9Zix1cj1jLHViKGUpLDgxOTImcillOmZvcigobj1lLnN0YXRlTm9kZSkuX3Zpc2liaWxpdHk9bD8tMiZuLl92aXNpYmlsaXR5OjF8bi5fdmlzaWJpbGl0eSxsJiYobnVsbD09PXR8fHN8fHVyfHx1bHx8ZnVuY3Rpb24gZShuKXtmb3Iobj1uLmNoaWxkO251bGwhPT1uOyl7dmFyIHQ9bjtzd2l0Y2godC50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTQ6Y2FzZSAxNTpvMig0LHQsdC5yZXR1cm4pLGUodCk7YnJlYWs7Y2FzZSAxOm82KHQsdC5yZXR1cm4pO3ZhciByPXQuc3RhdGVOb2RlOyJmdW5jdGlvbiI9PXR5cGVvZiByLmNvbXBvbmVudFdpbGxVbm1vdW50JiZvNCh0LHQucmV0dXJuLHIpLGUodCk7YnJlYWs7Y2FzZSAyNzpzUih0LnN0YXRlTm9kZSk7Y2FzZSAyNjpjYXNlIDU6bzYodCx0LnJldHVybiksZSh0KTticmVhaztjYXNlIDIyOm51bGw9PT10Lm1lbW9pemVkU3RhdGUmJmUodCk7YnJlYWs7ZGVmYXVsdDplKHQpfW49bi5zaWJsaW5nfX0oZSkpLHQ9bnVsbCxuPWU7Oyl7aWYoNT09PW4udGFnfHwyNj09PW4udGFnKXtpZihudWxsPT09dCl7cz10PW47dHJ5e2lmKGE9cy5zdGF0ZU5vZGUsbClvPWEuc3R5bGUsImZ1bmN0aW9uIj09dHlwZW9mIG8uc2V0UHJvcGVydHk/by5zZXRQcm9wZXJ0eSgiZGlzcGxheSIsIm5vbmUiLCJpbXBvcnRhbnQiKTpvLmRpc3BsYXk9Im5vbmUiO2Vsc2V7dT1zLnN0YXRlTm9kZTt2YXIgZD1zLm1lbW9pemVkUHJvcHMuc3R5bGUscD1udWxsIT1kJiZkLmhhc093blByb3BlcnR5KCJkaXNwbGF5Iik/ZC5kaXNwbGF5Om51bGw7dS5zdHlsZS5kaXNwbGF5PW51bGw9PXB8fCJib29sZWFuIj09dHlwZW9mIHA/IiI6KCIiK3ApLnRyaW0oKX19Y2F0Y2goZSl7aUQocyxzLnJldHVybixlKX19fWVsc2UgaWYoNj09PW4udGFnKXtpZihudWxsPT09dCl7cz1uO3RyeXtzLnN0YXRlTm9kZS5ub2RlVmFsdWU9bD8iIjpzLm1lbW9pemVkUHJvcHN9Y2F0Y2goZSl7aUQocyxzLnJldHVybixlKX19fWVsc2UgaWYoMTg9PT1uLnRhZyl7aWYobnVsbD09PXQpe3M9bjt0cnl7dmFyIG09cy5zdGF0ZU5vZGU7bD9zUChtLCEwKTpzUChzLnN0YXRlTm9kZSwhMSl9Y2F0Y2goZSl7aUQocyxzLnJldHVybixlKX19fWVsc2UgaWYoKDIyIT09bi50YWcmJjIzIT09bi50YWd8fG51bGw9PT1uLm1lbW9pemVkU3RhdGV8fG49PT1lKSYmbnVsbCE9PW4uY2hpbGQpe24uY2hpbGQucmV0dXJuPW4sbj1uLmNoaWxkO2NvbnRpbnVlfWlmKG49PT1lKWJyZWFrO2Zvcig7bnVsbD09PW4uc2libGluZzspe2lmKG51bGw9PT1uLnJldHVybnx8bi5yZXR1cm49PT1lKWJyZWFrIGU7dD09PW4mJih0PW51bGwpLG49bi5yZXR1cm59dD09PW4mJih0PW51bGwpLG4uc2libGluZy5yZXR1cm49bi5yZXR1cm4sbj1uLnNpYmxpbmd9NCZyJiZudWxsIT09KHI9ZS51cGRhdGVRdWV1ZSkmJm51bGwhPT0odD1yLnJldHJ5UXVldWUpJiYoci5yZXRyeVF1ZXVlPW51bGwsdWgoZSx0KSk7Y2FzZSAzMDpjYXNlIDIxOn19ZnVuY3Rpb24gdWIoZSl7dmFyIG49ZS5mbGFncztpZigyJm4pe3RyeXtmb3IodmFyIHQscj1lLnJldHVybjtudWxsIT09cjspe2lmKG83KHIpKXt0PXI7YnJlYWt9cj1yLnJldHVybn1pZihudWxsPT10KXRocm93IEVycm9yKGkoMTYwKSk7c3dpdGNoKHQudGFnKXtjYXNlIDI3OnZhciBsPXQuc3RhdGVOb2RlLGE9dWUoZSk7dW4oZSxhLGwpO2JyZWFrO2Nhc2UgNTp2YXIgbz10LnN0YXRlTm9kZTszMiZ0LmZsYWdzJiYobmMobywiIiksdC5mbGFncyY9LTMzKTt2YXIgdT11ZShlKTt1bihlLHUsbyk7YnJlYWs7Y2FzZSAzOmNhc2UgNDp2YXIgcz10LnN0YXRlTm9kZS5jb250YWluZXJJbmZvLGM9dWUoZSk7IWZ1bmN0aW9uIGUobix0LHIpe3ZhciBsPW4udGFnO2lmKDU9PT1sfHw2PT09bCluPW4uc3RhdGVOb2RlLHQ/KDk9PT1yLm5vZGVUeXBlP3IuYm9keToiSFRNTCI9PT1yLm5vZGVOYW1lP3Iub3duZXJEb2N1bWVudC5ib2R5OnIpLmluc2VydEJlZm9yZShuLHQpOigodD05PT09ci5ub2RlVHlwZT9yLmJvZHk6IkhUTUwiPT09ci5ub2RlTmFtZT9yLm93bmVyRG9jdW1lbnQuYm9keTpyKS5hcHBlbmRDaGlsZChuKSxudWxsIT0ocj1yLl9yZWFjdFJvb3RDb250YWluZXIpfHxudWxsIT09dC5vbmNsaWNrfHwodC5vbmNsaWNrPW52KSk7ZWxzZSBpZig0IT09bCYmKDI3PT09bCYmc3oobi50eXBlKSYmKHI9bi5zdGF0ZU5vZGUsdD1udWxsKSxudWxsIT09KG49bi5jaGlsZCkpKWZvcihlKG4sdCxyKSxuPW4uc2libGluZztudWxsIT09bjspZShuLHQsciksbj1uLnNpYmxpbmd9KGUsYyxzKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKGkoMTYxKSl9fWNhdGNoKG4pe2lEKGUsZS5yZXR1cm4sbil9ZS5mbGFncyY9LTN9NDA5NiZuJiYoZS5mbGFncyY9LTQwOTcpfWZ1bmN0aW9uIHVrKGUsbil7aWYoODc3MiZuLnN1YnRyZWVGbGFncylmb3Iobj1uLmNoaWxkO251bGwhPT1uOyl1aShlLG4uYWx0ZXJuYXRlLG4pLG49bi5zaWJsaW5nfWZ1bmN0aW9uIHV3KGUsbil7dmFyIHQ9bnVsbDtudWxsIT09ZSYmbnVsbCE9PWUubWVtb2l6ZWRTdGF0ZSYmbnVsbCE9PWUubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2wmJih0PWUubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2wucG9vbCksZT1udWxsLG51bGwhPT1uLm1lbW9pemVkU3RhdGUmJm51bGwhPT1uLm1lbW9pemVkU3RhdGUuY2FjaGVQb29sJiYoZT1uLm1lbW9pemVkU3RhdGUuY2FjaGVQb29sLnBvb2wpLGUhPT10JiYobnVsbCE9ZSYmZS5yZWZDb3VudCsrLG51bGwhPXQmJnI0KHQpKX1mdW5jdGlvbiB1UyhlLG4pe2U9bnVsbCxudWxsIT09bi5hbHRlcm5hdGUmJihlPW4uYWx0ZXJuYXRlLm1lbW9pemVkU3RhdGUuY2FjaGUpLChuPW4ubWVtb2l6ZWRTdGF0ZS5jYWNoZSkhPT1lJiYobi5yZWZDb3VudCsrLG51bGwhPWUmJnI0KGUpKX1mdW5jdGlvbiB1eChlLG4sdCxyKXtpZigxMDI1NiZuLnN1YnRyZWVGbGFncylmb3Iobj1uLmNoaWxkO251bGwhPT1uOyl1RShlLG4sdCxyKSxuPW4uc2libGluZ31mdW5jdGlvbiB1RShlLG4sdCxyKXt2YXIgbD1uLmZsYWdzO3N3aXRjaChuLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTp1eChlLG4sdCxyKSwyMDQ4JmwmJm8xKDksbik7YnJlYWs7Y2FzZSAxOmNhc2UgMzE6Y2FzZSAxMzpkZWZhdWx0OnV4KGUsbix0LHIpO2JyZWFrO2Nhc2UgMzp1eChlLG4sdCxyKSwyMDQ4JmwmJihlPW51bGwsbnVsbCE9PW4uYWx0ZXJuYXRlJiYoZT1uLmFsdGVybmF0ZS5tZW1vaXplZFN0YXRlLmNhY2hlKSwobj1uLm1lbW9pemVkU3RhdGUuY2FjaGUpIT09ZSYmKG4ucmVmQ291bnQrKyxudWxsIT1lJiZyNChlKSkpO2JyZWFrO2Nhc2UgMTI6aWYoMjA0OCZsKXt1eChlLG4sdCxyKSxlPW4uc3RhdGVOb2RlO3RyeXt2YXIgYT1uLm1lbW9pemVkUHJvcHMsbz1hLmlkLHU9YS5vblBvc3RDb21taXQ7ImZ1bmN0aW9uIj09dHlwZW9mIHUmJnUobyxudWxsPT09bi5hbHRlcm5hdGU/Im1vdW50IjoidXBkYXRlIixlLnBhc3NpdmVFZmZlY3REdXJhdGlvbiwtMCl9Y2F0Y2goZSl7aUQobixuLnJldHVybixlKX19ZWxzZSB1eChlLG4sdCxyKTticmVhaztjYXNlIDIzOmJyZWFrO2Nhc2UgMjI6YT1uLnN0YXRlTm9kZSxvPW4uYWx0ZXJuYXRlLG51bGwhPT1uLm1lbW9pemVkU3RhdGU/MiZhLl92aXNpYmlsaXR5P3V4KGUsbix0LHIpOnV6KGUsbik6MiZhLl92aXNpYmlsaXR5P3V4KGUsbix0LHIpOihhLl92aXNpYmlsaXR5fD0yLGZ1bmN0aW9uIGUobix0LHIsbCxhKXtmb3IoYT1hJiYwIT0oMTAyNTYmdC5zdWJ0cmVlRmxhZ3MpLHQ9dC5jaGlsZDtudWxsIT09dDspe3ZhciBvPXQsdT1vLmZsYWdzO3N3aXRjaChvLnRhZyl7Y2FzZSAwOmNhc2UgMTE6Y2FzZSAxNTplKG4sbyxyLGwsYSksbzEoOCxvKTticmVhaztjYXNlIDIzOmJyZWFrO2Nhc2UgMjI6dmFyIGk9by5zdGF0ZU5vZGU7bnVsbCE9PW8ubWVtb2l6ZWRTdGF0ZT8yJmkuX3Zpc2liaWxpdHk/ZShuLG8scixsLGEpOnV6KG4sbyk6KGkuX3Zpc2liaWxpdHl8PTIsZShuLG8scixsLGEpKSxhJiYyMDQ4JnUmJnV3KG8uYWx0ZXJuYXRlLG8pO2JyZWFrO2Nhc2UgMjQ6ZShuLG8scixsLGEpLGEmJjIwNDgmdSYmdVMoby5hbHRlcm5hdGUsbyk7YnJlYWs7ZGVmYXVsdDplKG4sbyxyLGwsYSl9dD10LnNpYmxpbmd9fShlLG4sdCxyLDAhPSgxMDI1NiZuLnN1YnRyZWVGbGFncykpKSwyMDQ4JmwmJnV3KG8sbik7YnJlYWs7Y2FzZSAyNDp1eChlLG4sdCxyKSwyMDQ4JmwmJnVTKG4uYWx0ZXJuYXRlLG4pfX1mdW5jdGlvbiB1eihlLG4pe2lmKDEwMjU2Jm4uc3VidHJlZUZsYWdzKWZvcihuPW4uY2hpbGQ7bnVsbCE9PW47KXt2YXIgdD1uLHI9dC5mbGFncztzd2l0Y2godC50YWcpe2Nhc2UgMjI6dXooZSx0KSwyMDQ4JnImJnV3KHQuYWx0ZXJuYXRlLHQpO2JyZWFrO2Nhc2UgMjQ6dXooZSx0KSwyMDQ4JnImJnVTKHQuYWx0ZXJuYXRlLHQpO2JyZWFrO2RlZmF1bHQ6dXooZSx0KX1uPW4uc2libGluZ319dmFyIHVDPTgxOTI7ZnVuY3Rpb24gdVAoZSl7aWYoZS5zdWJ0cmVlRmxhZ3MmdUMpZm9yKGU9ZS5jaGlsZDtudWxsIT09ZTspdU4oZSksZT1lLnNpYmxpbmd9ZnVuY3Rpb24gdU4oZSl7c3dpdGNoKGUudGFnKXtjYXNlIDI2OnVQKGUpLGUuZmxhZ3MmdUMmJm51bGwhPT1lLm1lbW9pemVkU3RhdGUmJmZ1bmN0aW9uKGUsbix0KXtpZihudWxsPT09czQpdGhyb3cgRXJyb3IoaSg0NzUpKTt2YXIgcj1zNDtpZigic3R5bGVzaGVldCI9PT1uLnR5cGUmJigic3RyaW5nIiE9dHlwZW9mIHQubWVkaWF8fCExIT09bWF0Y2hNZWRpYSh0Lm1lZGlhKS5tYXRjaGVzKSYmMD09KDQmbi5zdGF0ZS5sb2FkaW5nKSl7aWYobnVsbD09PW4uaW5zdGFuY2Upe3ZhciBsPXNCKHQuaHJlZiksYT1lLnF1ZXJ5U2VsZWN0b3Ioc1cobCkpO2lmKGEpe251bGwhPT0oZT1hLl9wKSYmIm9iamVjdCI9PXR5cGVvZiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgZS50aGVuJiYoci5jb3VudCsrLHI9czguYmluZChyKSxlLnRoZW4ocixyKSksbi5zdGF0ZS5sb2FkaW5nfD00LG4uaW5zdGFuY2U9YSxlWChhKTtyZXR1cm59YT1lLm93bmVyRG9jdW1lbnR8fGUsdD1zcSh0KSwobD1zSS5nZXQobCkpJiZzWih0LGwpLGVYKGE9YS5jcmVhdGVFbGVtZW50KCJsaW5rIikpO3ZhciBvPWE7by5fcD1uZXcgUHJvbWlzZShmdW5jdGlvbihlLG4pe28ub25sb2FkPWUsby5vbmVycm9yPW59KSxzZChhLCJsaW5rIix0KSxuLmluc3RhbmNlPWF9bnVsbD09PXIuc3R5bGVzaGVldHMmJihyLnN0eWxlc2hlZXRzPW5ldyBNYXApLHIuc3R5bGVzaGVldHMuc2V0KG4sZSksKGU9bi5zdGF0ZS5wcmVsb2FkKSYmMD09KDMmbi5zdGF0ZS5sb2FkaW5nKSYmKHIuY291bnQrKyxuPXM4LmJpbmQociksZS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixuKSxlLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIixuKSl9fSh1eSxlLm1lbW9pemVkU3RhdGUsZS5tZW1vaXplZFByb3BzKTticmVhaztjYXNlIDU6ZGVmYXVsdDp1UChlKTticmVhaztjYXNlIDM6Y2FzZSA0OnZhciBuPXV5O3V5PXMkKGUuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLHVQKGUpLHV5PW47YnJlYWs7Y2FzZSAyMjpudWxsPT09ZS5tZW1vaXplZFN0YXRlJiYobnVsbCE9PShuPWUuYWx0ZXJuYXRlKSYmbnVsbCE9PW4ubWVtb2l6ZWRTdGF0ZT8obj11Qyx1Qz0weDEwMDAwMDAsdVAoZSksdUM9bik6dVAoZSkpfX1mdW5jdGlvbiB1TChlKXt2YXIgbj1lLmFsdGVybmF0ZTtpZihudWxsIT09biYmbnVsbCE9PShlPW4uY2hpbGQpKXtuLmNoaWxkPW51bGw7ZG8gbj1lLnNpYmxpbmcsZS5zaWJsaW5nPW51bGwsZT1uO3doaWxlKG51bGwhPT1lKX19ZnVuY3Rpb24gdVQoZSl7dmFyIG49ZS5kZWxldGlvbnM7aWYoMCE9KDE2JmUuZmxhZ3MpKXtpZihudWxsIT09bilmb3IodmFyIHQ9MDt0PG4ubGVuZ3RoO3QrKyl7dmFyIHI9blt0XTt1dT1yLHVGKHIsZSl9dUwoZSl9aWYoMTAyNTYmZS5zdWJ0cmVlRmxhZ3MpZm9yKGU9ZS5jaGlsZDtudWxsIT09ZTspdV8oZSksZT1lLnNpYmxpbmd9ZnVuY3Rpb24gdV8oZSl7c3dpdGNoKGUudGFnKXtjYXNlIDA6Y2FzZSAxMTpjYXNlIDE1OnVUKGUpLDIwNDgmZS5mbGFncyYmbzIoOSxlLGUucmV0dXJuKTticmVhaztjYXNlIDM6Y2FzZSAxMjpkZWZhdWx0OnVUKGUpO2JyZWFrO2Nhc2UgMjI6dmFyIG49ZS5zdGF0ZU5vZGU7bnVsbCE9PWUubWVtb2l6ZWRTdGF0ZSYmMiZuLl92aXNpYmlsaXR5JiYobnVsbD09PWUucmV0dXJufHwxMyE9PWUucmV0dXJuLnRhZyk/KG4uX3Zpc2liaWxpdHkmPS0zLGZ1bmN0aW9uIGUobil7dmFyIHQ9bi5kZWxldGlvbnM7aWYoMCE9KDE2Jm4uZmxhZ3MpKXtpZihudWxsIT09dClmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIGw9dFtyXTt1dT1sLHVGKGwsbil9dUwobil9Zm9yKG49bi5jaGlsZDtudWxsIT09bjspe3N3aXRjaCgodD1uKS50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6bzIoOCx0LHQucmV0dXJuKSxlKHQpO2JyZWFrO2Nhc2UgMjI6MiYocj10LnN0YXRlTm9kZSkuX3Zpc2liaWxpdHkmJihyLl92aXNpYmlsaXR5Jj0tMyxlKHQpKTticmVhaztkZWZhdWx0OmUodCl9bj1uLnNpYmxpbmd9fShlKSk6dVQoZSl9fWZ1bmN0aW9uIHVGKGUsbil7Zm9yKDtudWxsIT09dXU7KXt2YXIgdD11dTtzd2l0Y2godC50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6bzIoOCx0LG4pO2JyZWFrO2Nhc2UgMjM6Y2FzZSAyMjppZihudWxsIT09dC5tZW1vaXplZFN0YXRlJiZudWxsIT09dC5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbCl7dmFyIHI9dC5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbC5wb29sO251bGwhPXImJnIucmVmQ291bnQrK31icmVhaztjYXNlIDI0OnI0KHQubWVtb2l6ZWRTdGF0ZS5jYWNoZSl9aWYobnVsbCE9PShyPXQuY2hpbGQpKXIucmV0dXJuPXQsdXU9cjtlbHNlIGZvcih0PWU7bnVsbCE9PXV1Oyl7dmFyIGw9KHI9dXUpLnNpYmxpbmcsYT1yLnJldHVybjtpZighZnVuY3Rpb24gZShuKXt2YXIgdD1uLmFsdGVybmF0ZTtudWxsIT09dCYmKG4uYWx0ZXJuYXRlPW51bGwsZSh0KSksbi5jaGlsZD1udWxsLG4uZGVsZXRpb25zPW51bGwsbi5zaWJsaW5nPW51bGwsNT09PW4udGFnJiZudWxsIT09KHQ9bi5zdGF0ZU5vZGUpJiZlQih0KSxuLnN0YXRlTm9kZT1udWxsLG4ucmV0dXJuPW51bGwsbi5kZXBlbmRlbmNpZXM9bnVsbCxuLm1lbW9pemVkUHJvcHM9bnVsbCxuLm1lbW9pemVkU3RhdGU9bnVsbCxuLnBlbmRpbmdQcm9wcz1udWxsLG4uc3RhdGVOb2RlPW51bGwsbi51cGRhdGVRdWV1ZT1udWxsfShyKSxyPT09dCl7dXU9bnVsbDticmVha31pZihudWxsIT09bCl7bC5yZXR1cm49YSx1dT1sO2JyZWFrfXV1PWF9fX12YXIgdUQ9e2dldENhY2hlRm9yVHlwZTpmdW5jdGlvbihlKXt2YXIgbj1yWChyMiksdD1uLmRhdGEuZ2V0KGUpO3JldHVybiB2b2lkIDA9PT10JiYodD1lKCksbi5kYXRhLnNldChlLHQpKSx0fSxjYWNoZVNpZ25hbDpmdW5jdGlvbigpe3JldHVybiByWChyMikuY29udHJvbGxlci5zaWduYWx9fSx1Tz0iZnVuY3Rpb24iPT10eXBlb2YgV2Vha01hcD9XZWFrTWFwOk1hcCx1TT0wLHVBPW51bGwsdVI9bnVsbCx1ST0wLHVVPTAsdSQ9bnVsbCx1aj0hMSx1Vj0hMSx1SD0hMSx1UT0wLHVCPTAsdVc9MCx1cT0wLHVLPTAsdVk9MCx1WD0wLHVHPW51bGwsdVo9bnVsbCx1Sj0hMSx1MD0wLHUxPTEvMCx1Mj1udWxsLHUzPW51bGwsdTQ9MCx1OD1udWxsLHU2PW51bGwsdTU9MCx1OT0wLHU3PW51bGwsaWU9bnVsbCxpdD0wLGlyPW51bGw7ZnVuY3Rpb24gaWwoKXtyZXR1cm4gMCE9KDImdU0pJiYwIT09dUk/dUkmLXVJOm51bGwhPT1PLlQ/aVooKTplTygpfWZ1bmN0aW9uIGlhKCl7MD09PXVZJiYodVk9MD09KDB4MjAwMDAwMDAmdUkpfHxyTD9leigpOjB4MjAwMDAwMDApO3ZhciBlPWwkLmN1cnJlbnQ7cmV0dXJuIG51bGwhPT1lJiYoZS5mbGFnc3w9MzIpLHVZfWZ1bmN0aW9uIGlvKGUsbix0KXsoZT09PXVBJiYoMj09PXVVfHw5PT09dVUpfHxudWxsIT09ZS5jYW5jZWxQZW5kaW5nQ29tbWl0KSYmKGlwKGUsMCksaXMoZSx1SSx1WSwhMSkpLGVOKGUsdCksKDA9PSgyJnVNKXx8ZSE9PXVBKSYmKGU9PT11QSYmKDA9PSgyJnVNKSYmKHVxfD10KSw0PT09dUImJmlzKGUsdUksdVksITEpKSxpQihlKSl9ZnVuY3Rpb24gaXUoZSxuLHQpe2lmKDAhPSg2JnVNKSl0aHJvdyBFcnJvcihpKDMyNykpO2Zvcih2YXIgcj0hdCYmMD09KDEyNCZuKSYmMD09KG4mZS5leHBpcmVkTGFuZXMpfHxlRShlLG4pLGw9cj9mdW5jdGlvbihlLG4pe3ZhciB0PXVNO3VNfD0yO3ZhciByPWlnKCksbD1peSgpO3VBIT09ZXx8dUkhPT1uPyh1Mj1udWxsLHUxPWVhKCkrNTAwLGlwKGUsbikpOnVWPWVFKGUsbik7ZTpmb3IoOzspdHJ5e2lmKDAhPT11VSYmbnVsbCE9PXVSKXtuPXVSO3ZhciBhPXUkO246c3dpdGNoKHVVKXtjYXNlIDE6dVU9MCx1JD1udWxsLGlTKGUsbixhLDEpO2JyZWFrO2Nhc2UgMjpjYXNlIDk6aWYobHMoYSkpe3VVPTAsdSQ9bnVsbCxpdyhuKTticmVha31uPWZ1bmN0aW9uKCl7MiE9PXVVJiY5IT09dVV8fHVBIT09ZXx8KHVVPTcpLGlCKGUpfSxhLnRoZW4obixuKTticmVhayBlO2Nhc2UgMzp1VT03O2JyZWFrIGU7Y2FzZSA0OnVVPTU7YnJlYWsgZTtjYXNlIDc6bHMoYSk/KHVVPTAsdSQ9bnVsbCxpdyhuKSk6KHVVPTAsdSQ9bnVsbCxpUyhlLG4sYSw3KSk7YnJlYWs7Y2FzZSA1OnZhciBvPW51bGw7c3dpdGNoKHVSLnRhZyl7Y2FzZSAyNjpvPXVSLm1lbW9pemVkU3RhdGU7Y2FzZSA1OmNhc2UgMjc6dmFyIHU9dVI7aWYobz9zMyhvKTp1LnN0YXRlTm9kZS5jb21wbGV0ZSl7dVU9MCx1JD1udWxsO3ZhciBzPXUuc2libGluZztpZihudWxsIT09cyl1Uj1zO2Vsc2V7dmFyIGM9dS5yZXR1cm47bnVsbCE9PWM/KHVSPWMsaXgoYykpOnVSPW51bGx9YnJlYWsgbn19dVU9MCx1JD1udWxsLGlTKGUsbixhLDUpO2JyZWFrO2Nhc2UgNjp1VT0wLHUkPW51bGwsaVMoZSxuLGEsNik7YnJlYWs7Y2FzZSA4OmlkKCksdUI9NjticmVhayBlO2RlZmF1bHQ6dGhyb3cgRXJyb3IoaSg0NjIpKX19Zm9yKDtudWxsIT09dVImJiFlcigpOylpayh1Uik7YnJlYWt9Y2F0Y2gobil7aW0oZSxuKX1yZXR1cm4oclY9cmo9bnVsbCxPLkg9cixPLkE9bCx1TT10LG51bGwhPT11Uik/MDoodUE9bnVsbCx1ST0wLHQ0KCksdUIpfShlLG4pOmliKGUsbiwhMCksYT1yOzspe2lmKDA9PT1sKXVWJiYhciYmaXMoZSxuLDAsITEpO2Vsc2V7aWYodD1lLmN1cnJlbnQuYWx0ZXJuYXRlLGEmJiFmdW5jdGlvbihlKXtmb3IodmFyIG49ZTs7KXt2YXIgdD1uLnRhZztpZigoMD09PXR8fDExPT09dHx8MTU9PT10KSYmMTYzODQmbi5mbGFncyYmbnVsbCE9PSh0PW4udXBkYXRlUXVldWUpJiZudWxsIT09KHQ9dC5zdG9yZXMpKWZvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbD10W3JdLGE9bC5nZXRTbmFwc2hvdDtsPWwudmFsdWU7dHJ5e2lmKCF0UChhKCksbCkpcmV0dXJuITF9Y2F0Y2goZSl7cmV0dXJuITF9fWlmKHQ9bi5jaGlsZCwxNjM4NCZuLnN1YnRyZWVGbGFncyYmbnVsbCE9PXQpdC5yZXR1cm49bixuPXQ7ZWxzZXtpZihuPT09ZSlicmVhaztmb3IoO251bGw9PT1uLnNpYmxpbmc7KXtpZihudWxsPT09bi5yZXR1cm58fG4ucmV0dXJuPT09ZSlyZXR1cm4hMDtuPW4ucmV0dXJufW4uc2libGluZy5yZXR1cm49bi5yZXR1cm4sbj1uLnNpYmxpbmd9fXJldHVybiEwfSh0KSl7bD1pYihlLG4sITEpLGE9ITE7Y29udGludWV9aWYoMj09PWwpe2lmKGE9bixlLmVycm9yUmVjb3ZlcnlEaXNhYmxlZExhbmVzJmEpdmFyIG89MDtlbHNlIG89MCE9KG89LTB4MjAwMDAwMDEmZS5wZW5kaW5nTGFuZXMpP286MHgyMDAwMDAwMCZvPzB4MjAwMDAwMDA6MDtpZigwIT09byl7bj1vO2U6e2w9dUc7dmFyIHU9ZS5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkO2lmKHUmJihpcChlLG8pLmZsYWdzfD0yNTYpLDIhPT0obz1pYihlLG8sITEpKSl7aWYodUgmJiF1KXtlLmVycm9yUmVjb3ZlcnlEaXNhYmxlZExhbmVzfD1hLHVxfD1hLGw9NDticmVhayBlfWE9dVosdVo9bCxudWxsIT09YSYmKG51bGw9PT11Wj91Wj1hOnVaLnB1c2guYXBwbHkodVosYSkpfWw9b31pZihhPSExLDIhPT1sKWNvbnRpbnVlfX1pZigxPT09bCl7aXAoZSwwKSxpcyhlLG4sMCwhMCk7YnJlYWt9ZTp7c3dpdGNoKHI9ZSxhPWwpe2Nhc2UgMDpjYXNlIDE6dGhyb3cgRXJyb3IoaSgzNDUpKTtjYXNlIDQ6aWYoKDQxOTQwNDgmbikhPT1uKWJyZWFrO2Nhc2UgNjppcyhyLG4sdVksIXVqKTticmVhayBlO2Nhc2UgMjp1Wj1udWxsO2JyZWFrO2Nhc2UgMzpjYXNlIDU6YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihpKDMyOSkpfWlmKCgweDNjMDAwMDAmbik9PT1uJiYxMDwobD11MCszMDAtZWEoKSkpe2lmKGlzKHIsbix1WSwhdWopLDAhPT1leChyLDAsITApKWJyZWFrIGU7ci50aW1lb3V0SGFuZGxlPXNrKGlpLmJpbmQobnVsbCxyLHQsdVosdTIsdUosbix1WSx1cSx1WCx1aixhLDIsLTAsMCksbCk7YnJlYWsgZX1paShyLHQsdVosdTIsdUosbix1WSx1cSx1WCx1aixhLDAsLTAsMCl9fWJyZWFrfWlCKGUpfWZ1bmN0aW9uIGlpKGUsbix0LHIsbCxhLG8sdSxzLGMsZixkLHAsbSl7aWYoZS50aW1lb3V0SGFuZGxlPS0xLCg4MTkyJihkPW4uc3VidHJlZUZsYWdzKXx8MHgxMDAyMDAwPT0oMHgxMDAyMDAwJmQpKSYmKHM0PXtzdHlsZXNoZWV0czpudWxsLGNvdW50OjAsdW5zdXNwZW5kOm52fSx1TihuKSxudWxsIT09KGQ9ZnVuY3Rpb24oKXtpZihudWxsPT09czQpdGhyb3cgRXJyb3IoaSg0NzUpKTt2YXIgZT1zNDtyZXR1cm4gZS5zdHlsZXNoZWV0cyYmMD09PWUuY291bnQmJnM1KGUsZS5zdHlsZXNoZWV0cyksMDxlLmNvdW50P2Z1bmN0aW9uKG4pe3ZhciB0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXtpZihlLnN0eWxlc2hlZXRzJiZzNShlLGUuc3R5bGVzaGVldHMpLGUudW5zdXNwZW5kKXt2YXIgbj1lLnVuc3VzcGVuZDtlLnVuc3VzcGVuZD1udWxsLG4oKX19LDZlNCk7cmV0dXJuIGUudW5zdXNwZW5kPW4sZnVuY3Rpb24oKXtlLnVuc3VzcGVuZD1udWxsLGNsZWFyVGltZW91dCh0KX19Om51bGx9KCkpKSl7ZS5jYW5jZWxQZW5kaW5nQ29tbWl0PWQoaXouYmluZChudWxsLGUsbixhLHQscixsLG8sdSxzLGYsMSxwLG0pKSxpcyhlLGEsbywhYyk7cmV0dXJufWl6KGUsbixhLHQscixsLG8sdSxzKX1mdW5jdGlvbiBpcyhlLG4sdCxyKXtuJj1+dUssbiY9fnVxLGUuc3VzcGVuZGVkTGFuZXN8PW4sZS5waW5nZWRMYW5lcyY9fm4sciYmKGUud2FybUxhbmVzfD1uKSxyPWUuZXhwaXJhdGlvblRpbWVzO2Zvcih2YXIgbD1uOzA8bDspe3ZhciBhPTMxLWV5KGwpLG89MTw8YTtyW2FdPS0xLGwmPX5vfTAhPT10JiZlTChlLHQsbil9ZnVuY3Rpb24gaWMoKXtyZXR1cm4gMCE9KDYmdU0pfHwoaVcoMCwhMSksITEpfWZ1bmN0aW9uIGlkKCl7aWYobnVsbCE9PXVSKXtpZigwPT09dVUpdmFyIGU9dVIucmV0dXJuO2Vsc2UgZT11UixyVj1yaj1udWxsLGFsKGUpLGxoPW51bGwsbGc9MCxlPXVSO2Zvcig7bnVsbCE9PWU7KW8wKGUuYWx0ZXJuYXRlLGUpLGU9ZS5yZXR1cm47dVI9bnVsbH19ZnVuY3Rpb24gaXAoZSxuKXt2YXIgdD1lLnRpbWVvdXRIYW5kbGU7LTEhPT10JiYoZS50aW1lb3V0SGFuZGxlPS0xLHN3KHQpKSxudWxsIT09KHQ9ZS5jYW5jZWxQZW5kaW5nQ29tbWl0KSYmKGUuY2FuY2VsUGVuZGluZ0NvbW1pdD1udWxsLHQoKSksaWQoKSx1QT1lLHVSPXQ9cmwoZS5jdXJyZW50LG51bGwpLHVJPW4sdVU9MCx1JD1udWxsLHVqPSExLHVWPWVFKGUsbiksdUg9ITEsdVg9dVk9dUs9dXE9dVc9dUI9MCx1Wj11Rz1udWxsLHVKPSExLDAhPSg4Jm4pJiYobnw9MzImbik7dmFyIHI9ZS5lbnRhbmdsZWRMYW5lcztpZigwIT09cilmb3IoZT1lLmVudGFuZ2xlbWVudHMsciY9bjswPHI7KXt2YXIgbD0zMS1leShyKSxhPTE8PGw7bnw9ZVtsXSxyJj1+YX1yZXR1cm4gdVE9bix0NCgpLHR9ZnVuY3Rpb24gaW0oZSxuKXtsWD1udWxsLE8uSD1vdCxuPT09bGF8fG49PT1sdT8obj1scCgpLHVVPTMpOm49PT1sbz8obj1scCgpLHVVPTQpOnVVPW49PT1vYj84Om51bGwhPT1uJiYib2JqZWN0Ij09dHlwZW9mIG4mJiJmdW5jdGlvbiI9PXR5cGVvZiBuLnRoZW4/NjoxLHUkPW4sbnVsbD09PXVSJiYodUI9MSxvbShlLHJkKG4sZS5jdXJyZW50KSkpfWZ1bmN0aW9uIGloKCl7dmFyIGU9bCQuY3VycmVudDtyZXR1cm4gbnVsbD09PWV8fCgoNDE5NDA0OCZ1SSk9PT11ST9udWxsPT09bGo6KCgweDNjMDAwMDAmdUkpPT09dUl8fDAhPSgweDIwMDAwMDAwJnVJKSkmJmU9PT1sail9ZnVuY3Rpb24gaWcoKXt2YXIgZT1PLkg7cmV0dXJuIE8uSD1vdCxudWxsPT09ZT9vdDplfWZ1bmN0aW9uIGl5KCl7dmFyIGU9Ty5BO3JldHVybiBPLkE9dUQsZX1mdW5jdGlvbiBpdigpe3VCPTQsdWp8fCg0MTk0MDQ4JnVJKSE9PXVJJiZudWxsIT09bCQuY3VycmVudHx8KHVWPSEwKSwwPT0oMHg3ZmZmZmZmJnVXKSYmMD09KDB4N2ZmZmZmZiZ1cSl8fG51bGw9PT11QXx8aXModUEsdUksdVksITEpfWZ1bmN0aW9uIGliKGUsbix0KXt2YXIgcj11TTt1TXw9Mjt2YXIgbD1pZygpLGE9aXkoKTsodUEhPT1lfHx1SSE9PW4pJiYodTI9bnVsbCxpcChlLG4pKSxuPSExO3ZhciBvPXVCO2U6Zm9yKDs7KXRyeXtpZigwIT09dVUmJm51bGwhPT11Uil7dmFyIHU9dVIsaT11JDtzd2l0Y2godVUpe2Nhc2UgODppZCgpLG89NjticmVhayBlO2Nhc2UgMzpjYXNlIDI6Y2FzZSA5OmNhc2UgNjpudWxsPT09bCQuY3VycmVudCYmKG49ITApO3ZhciBzPXVVO2lmKHVVPTAsdSQ9bnVsbCxpUyhlLHUsaSxzKSx0JiZ1Vil7bz0wO2JyZWFrIGV9YnJlYWs7ZGVmYXVsdDpzPXVVLHVVPTAsdSQ9bnVsbCxpUyhlLHUsaSxzKX19KGZ1bmN0aW9uKCl7Zm9yKDtudWxsIT09dVI7KWlrKHVSKX0pKCksbz11QjticmVha31jYXRjaChuKXtpbShlLG4pfXJldHVybiBuJiZlLnNoZWxsU3VzcGVuZENvdW50ZXIrKyxyVj1yaj1udWxsLHVNPXIsTy5IPWwsTy5BPWEsbnVsbD09PXVSJiYodUE9bnVsbCx1ST0wLHQ0KCkpLG99ZnVuY3Rpb24gaWsoZSl7dmFyIG49b3EoZS5hbHRlcm5hdGUsZSx1USk7ZS5tZW1vaXplZFByb3BzPWUucGVuZGluZ1Byb3BzLG51bGw9PT1uP2l4KGUpOnVSPW59ZnVuY3Rpb24gaXcoZSl7dmFyIG49ZSx0PW4uYWx0ZXJuYXRlO3N3aXRjaChuLnRhZyl7Y2FzZSAxNTpjYXNlIDA6bj1vRih0LG4sbi5wZW5kaW5nUHJvcHMsbi50eXBlLHZvaWQgMCx1SSk7YnJlYWs7Y2FzZSAxMTpuPW9GKHQsbixuLnBlbmRpbmdQcm9wcyxuLnR5cGUucmVuZGVyLG4ucmVmLHVJKTticmVhaztjYXNlIDU6YWwobik7ZGVmYXVsdDpvMCh0LG4pLG49b3EodCxuPXVSPXJhKG4sdVEpLHVRKX1lLm1lbW9pemVkUHJvcHM9ZS5wZW5kaW5nUHJvcHMsbnVsbD09PW4/aXgoZSk6dVI9bn1mdW5jdGlvbiBpUyhlLG4sdCxyKXtyVj1yaj1udWxsLGFsKG4pLGxoPW51bGwsbGc9MDt2YXIgbD1uLnJldHVybjt0cnl7aWYoZnVuY3Rpb24oZSxuLHQscixsKXtpZih0LmZsYWdzfD0zMjc2OCxudWxsIT09ciYmIm9iamVjdCI9PXR5cGVvZiByJiYiZnVuY3Rpb24iPT10eXBlb2Ygci50aGVuKXtpZihudWxsIT09KG49dC5hbHRlcm5hdGUpJiZycShuLHQsbCwhMCksbnVsbCE9PSh0PWwkLmN1cnJlbnQpKXtzd2l0Y2godC50YWcpe2Nhc2UgMzE6Y2FzZSAxMzpyZXR1cm4gbnVsbD09PWxqP2l2KCk6bnVsbD09PXQuYWx0ZXJuYXRlJiYwPT09dUImJih1Qj0zKSx0LmZsYWdzJj0tMjU3LHQuZmxhZ3N8PTY1NTM2LHQubGFuZXM9bCxyPT09bGk/dC5mbGFnc3w9MTYzODQ6KG51bGw9PT0obj10LnVwZGF0ZVF1ZXVlKT90LnVwZGF0ZVF1ZXVlPW5ldyBTZXQoW3JdKTpuLmFkZChyKSxpTyhlLHIsbCkpLCExO2Nhc2UgMjI6cmV0dXJuIHQuZmxhZ3N8PTY1NTM2LHI9PT1saT90LmZsYWdzfD0xNjM4NDoobnVsbD09PShuPXQudXBkYXRlUXVldWUpPyhuPXt0cmFuc2l0aW9uczpudWxsLG1hcmtlckluc3RhbmNlczpudWxsLHJldHJ5UXVldWU6bmV3IFNldChbcl0pfSx0LnVwZGF0ZVF1ZXVlPW4pOm51bGw9PT0odD1uLnJldHJ5UXVldWUpP24ucmV0cnlRdWV1ZT1uZXcgU2V0KFtyXSk6dC5hZGQociksaU8oZSxyLGwpKSwhMX10aHJvdyBFcnJvcihpKDQzNSx0LnRhZykpfXJldHVybiBpTyhlLHIsbCksaXYoKSwhMX1pZihyTClyZXR1cm4gbnVsbCE9PShuPWwkLmN1cnJlbnQpPygwPT0oNjU1MzYmbi5mbGFncykmJihuLmZsYWdzfD0yNTYpLG4uZmxhZ3N8PTY1NTM2LG4ubGFuZXM9bCxyIT09ckYmJnJVKHJkKGU9RXJyb3IoaSg0MjIpLHtjYXVzZTpyfSksdCkpKToociE9PXJGJiZyVShyZChuPUVycm9yKGkoNDIzKSx7Y2F1c2U6cn0pLHQpKSxlPWUuY3VycmVudC5hbHRlcm5hdGUsZS5mbGFnc3w9NjU1MzYsbCY9LWwsZS5sYW5lc3w9bCxyPXJkKHIsdCksbD1vZyhlLnN0YXRlTm9kZSxyLGwpLGxMKGUsbCksNCE9PXVCJiYodUI9MikpLCExO3ZhciBhPUVycm9yKGkoNTIwKSx7Y2F1c2U6cn0pO2lmKGE9cmQoYSx0KSxudWxsPT09dUc/dUc9W2FdOnVHLnB1c2goYSksNCE9PXVCJiYodUI9MiksbnVsbD09PW4pcmV0dXJuITA7cj1yZChyLHQpLHQ9bjtkb3tzd2l0Y2godC50YWcpe2Nhc2UgMzpyZXR1cm4gdC5mbGFnc3w9NjU1MzYsZT1sJi1sLHQubGFuZXN8PWUsZT1vZyh0LnN0YXRlTm9kZSxyLGUpLGxMKHQsZSksITE7Y2FzZSAxOmlmKG49dC50eXBlLGE9dC5zdGF0ZU5vZGUsMD09KDEyOCZ0LmZsYWdzKSYmKCJmdW5jdGlvbiI9PXR5cGVvZiBuLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcnx8bnVsbCE9PWEmJiJmdW5jdGlvbiI9PXR5cGVvZiBhLmNvbXBvbmVudERpZENhdGNoJiYobnVsbD09PXUzfHwhdTMuaGFzKGEpKSkpcmV0dXJuIHQuZmxhZ3N8PTY1NTM2LGwmPS1sLHQubGFuZXN8PWwsb3YobD1veShsKSxlLHQsciksbEwodCxsKSwhMX10PXQucmV0dXJufXdoaWxlKG51bGwhPT10KTtyZXR1cm4hMX0oZSxsLG4sdCx1SSkpe3VCPTEsb20oZSxyZCh0LGUuY3VycmVudCkpLHVSPW51bGw7cmV0dXJufX1jYXRjaChuKXtpZihudWxsIT09bCl0aHJvdyB1Uj1sLG47dUI9MSxvbShlLHJkKHQsZS5jdXJyZW50KSksdVI9bnVsbDtyZXR1cm59MzI3Njgmbi5mbGFncz8ockx8fDE9PT1yP2U9ITA6dVZ8fDAhPSgweDIwMDAwMDAwJnVJKT9lPSExOih1aj1lPSEwLCgyPT09cnx8OT09PXJ8fDM9PT1yfHw2PT09cikmJm51bGwhPT0ocj1sJC5jdXJyZW50KSYmMTM9PT1yLnRhZyYmKHIuZmxhZ3N8PTE2Mzg0KSksaUUobixlKSk6aXgobil9ZnVuY3Rpb24gaXgoZSl7dmFyIG49ZTtkb3tpZigwIT0oMzI3Njgmbi5mbGFncykpcmV0dXJuIHZvaWQgaUUobix1aik7ZT1uLnJldHVybjt2YXIgdD1mdW5jdGlvbihlLG4sdCl7dmFyIHI9bi5wZW5kaW5nUHJvcHM7c3dpdGNoKHJ6KG4pLG4udGFnKXtjYXNlIDE2OmNhc2UgMTU6Y2FzZSAwOmNhc2UgMTE6Y2FzZSA3OmNhc2UgODpjYXNlIDEyOmNhc2UgOTpjYXNlIDE0OmNhc2UgMTpyZXR1cm4gb0oobiksbnVsbDtjYXNlIDM6cmV0dXJuIHQ9bi5zdGF0ZU5vZGUscj1udWxsLG51bGwhPT1lJiYocj1lLm1lbW9pemVkU3RhdGUuY2FjaGUpLG4ubWVtb2l6ZWRTdGF0ZS5jYWNoZSE9PXImJihuLmZsYWdzfD0yMDQ4KSxyUShyMikscSgpLHQucGVuZGluZ0NvbnRleHQmJih0LmNvbnRleHQ9dC5wZW5kaW5nQ29udGV4dCx0LnBlbmRpbmdDb250ZXh0PW51bGwpLChudWxsPT09ZXx8bnVsbD09PWUuY2hpbGQpJiYockEobik/b0sobik6bnVsbD09PWV8fGUubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQmJjA9PSgyNTYmbi5mbGFncyl8fChuLmZsYWdzfD0xMDI0LHJJKCkpKSxvSihuKSxudWxsO2Nhc2UgMjY6dmFyIGw9bi50eXBlLGE9bi5tZW1vaXplZFN0YXRlO3JldHVybiBudWxsPT09ZT8ob0sobiksbnVsbCE9PWE/KG9KKG4pLG9YKG4sYSkpOihvSihuKSxvWShuLGwsbnVsbCxyLHQpKSk6YT9hIT09ZS5tZW1vaXplZFN0YXRlPyhvSyhuKSxvSihuKSxvWChuLGEpKToob0oobiksbi5mbGFncyY9LTB4MTAwMDAwMSk6KChlPWUubWVtb2l6ZWRQcm9wcykhPT1yJiZvSyhuKSxvSihuKSxvWShuLGwsZSxyLHQpKSxudWxsO2Nhc2UgMjc6aWYoWShuKSx0PVEuY3VycmVudCxsPW4udHlwZSxudWxsIT09ZSYmbnVsbCE9bi5zdGF0ZU5vZGUpZS5tZW1vaXplZFByb3BzIT09ciYmb0sobik7ZWxzZXtpZighcil7aWYobnVsbD09PW4uc3RhdGVOb2RlKXRocm93IEVycm9yKGkoMTY2KSk7cmV0dXJuIG9KKG4pLG51bGx9ZT1WLmN1cnJlbnQsckEobik/ck8obixlKToobi5zdGF0ZU5vZGU9ZT1zQShsLHIsdCksb0sobikpfXJldHVybiBvSihuKSxudWxsO2Nhc2UgNTppZihZKG4pLGw9bi50eXBlLG51bGwhPT1lJiZudWxsIT1uLnN0YXRlTm9kZSllLm1lbW9pemVkUHJvcHMhPT1yJiZvSyhuKTtlbHNle2lmKCFyKXtpZihudWxsPT09bi5zdGF0ZU5vZGUpdGhyb3cgRXJyb3IoaSgxNjYpKTtyZXR1cm4gb0oobiksbnVsbH1pZihhPVYuY3VycmVudCxyQShuKSlyTyhuLGEpO2Vsc2V7dmFyIG89c2goUS5jdXJyZW50KTtzd2l0Y2goYSl7Y2FzZSAxOmE9by5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixsKTticmVhaztjYXNlIDI6YT1vLmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCIsbCk7YnJlYWs7ZGVmYXVsdDpzd2l0Y2gobCl7Y2FzZSJzdmciOmE9by5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixsKTticmVhaztjYXNlIm1hdGgiOmE9by5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwiLGwpO2JyZWFrO2Nhc2Uic2NyaXB0IjooYT1vLmNyZWF0ZUVsZW1lbnQoImRpdiIpKS5pbm5lckhUTUw9IjxzY3JpcHQ+PFwvc2NyaXB0PiIsYT1hLnJlbW92ZUNoaWxkKGEuZmlyc3RDaGlsZCk7YnJlYWs7Y2FzZSJzZWxlY3QiOmE9InN0cmluZyI9PXR5cGVvZiByLmlzP28uY3JlYXRlRWxlbWVudCgic2VsZWN0Iix7aXM6ci5pc30pOm8uY3JlYXRlRWxlbWVudCgic2VsZWN0Iiksci5tdWx0aXBsZT9hLm11bHRpcGxlPSEwOnIuc2l6ZSYmKGEuc2l6ZT1yLnNpemUpO2JyZWFrO2RlZmF1bHQ6YT0ic3RyaW5nIj09dHlwZW9mIHIuaXM/by5jcmVhdGVFbGVtZW50KGwse2lzOnIuaXN9KTpvLmNyZWF0ZUVsZW1lbnQobCl9fWFbZVJdPW4sYVtlSV09cjtlOmZvcihvPW4uY2hpbGQ7bnVsbCE9PW87KXtpZig1PT09by50YWd8fDY9PT1vLnRhZylhLmFwcGVuZENoaWxkKG8uc3RhdGVOb2RlKTtlbHNlIGlmKDQhPT1vLnRhZyYmMjchPT1vLnRhZyYmbnVsbCE9PW8uY2hpbGQpe28uY2hpbGQucmV0dXJuPW8sbz1vLmNoaWxkO2NvbnRpbnVlfWlmKG89PT1uKWJyZWFrO2Zvcig7bnVsbD09PW8uc2libGluZzspe2lmKG51bGw9PT1vLnJldHVybnx8by5yZXR1cm49PT1uKWJyZWFrIGU7bz1vLnJldHVybn1vLnNpYmxpbmcucmV0dXJuPW8ucmV0dXJuLG89by5zaWJsaW5nfXN3aXRjaChuLnN0YXRlTm9kZT1hLHNkKGEsbCxyKSxsKXtjYXNlImJ1dHRvbiI6Y2FzZSJpbnB1dCI6Y2FzZSJzZWxlY3QiOmNhc2UidGV4dGFyZWEiOnI9ISFyLmF1dG9Gb2N1czticmVhaztjYXNlImltZyI6cj0hMDticmVhaztkZWZhdWx0OnI9ITF9ciYmb0sobil9fXJldHVybiBvSihuKSxvWShuLG4udHlwZSxudWxsPT09ZT9udWxsOmUubWVtb2l6ZWRQcm9wcyxuLnBlbmRpbmdQcm9wcyx0KSxudWxsO2Nhc2UgNjppZihlJiZudWxsIT1uLnN0YXRlTm9kZSllLm1lbW9pemVkUHJvcHMhPT1yJiZvSyhuKTtlbHNle2lmKCJzdHJpbmciIT10eXBlb2YgciYmbnVsbD09PW4uc3RhdGVOb2RlKXRocm93IEVycm9yKGkoMTY2KSk7aWYoZT1RLmN1cnJlbnQsckEobikpe2lmKGU9bi5zdGF0ZU5vZGUsdD1uLm1lbW9pemVkUHJvcHMscj1udWxsLG51bGwhPT0obD1yUCkpc3dpdGNoKGwudGFnKXtjYXNlIDI3OmNhc2UgNTpyPWwubWVtb2l6ZWRQcm9wc31lW2VSXT1uLChlPSEhKGUubm9kZVZhbHVlPT09dHx8bnVsbCE9PXImJiEwPT09ci5zdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmd8fHNzKGUubm9kZVZhbHVlLHQpKSl8fHJEKG4sITApfWVsc2UoZT1zaChlKS5jcmVhdGVUZXh0Tm9kZShyKSlbZVJdPW4sbi5zdGF0ZU5vZGU9ZX1yZXR1cm4gb0oobiksbnVsbDtjYXNlIDMxOmlmKHQ9bi5tZW1vaXplZFN0YXRlLG51bGw9PT1lfHxudWxsIT09ZS5tZW1vaXplZFN0YXRlKXtpZihyPXJBKG4pLG51bGwhPT10KXtpZihudWxsPT09ZSl7aWYoIXIpdGhyb3cgRXJyb3IoaSgzMTgpKTtpZighKGU9bnVsbCE9PShlPW4ubWVtb2l6ZWRTdGF0ZSk/ZS5kZWh5ZHJhdGVkOm51bGwpKXRocm93IEVycm9yKGkoNTU3KSk7ZVtlUl09bn1lbHNlIHJSKCksMD09KDEyOCZuLmZsYWdzKSYmKG4ubWVtb2l6ZWRTdGF0ZT1udWxsKSxuLmZsYWdzfD00O29KKG4pLGU9ITF9ZWxzZSB0PXJJKCksbnVsbCE9PWUmJm51bGwhPT1lLm1lbW9pemVkU3RhdGUmJihlLm1lbW9pemVkU3RhdGUuaHlkcmF0aW9uRXJyb3JzPXQpLGU9ITA7aWYoIWUpe2lmKDI1NiZuLmZsYWdzKXJldHVybiBsVyhuKSxuO3JldHVybiBsVyhuKSxudWxsfWlmKDAhPSgxMjgmbi5mbGFncykpdGhyb3cgRXJyb3IoaSg1NTgpKX1yZXR1cm4gb0oobiksbnVsbDtjYXNlIDEzOmlmKHI9bi5tZW1vaXplZFN0YXRlLG51bGw9PT1lfHxudWxsIT09ZS5tZW1vaXplZFN0YXRlJiZudWxsIT09ZS5tZW1vaXplZFN0YXRlLmRlaHlkcmF0ZWQpe2lmKGw9ckEobiksbnVsbCE9PXImJm51bGwhPT1yLmRlaHlkcmF0ZWQpe2lmKG51bGw9PT1lKXtpZighbCl0aHJvdyBFcnJvcihpKDMxOCkpO2lmKCEobD1udWxsIT09KGw9bi5tZW1vaXplZFN0YXRlKT9sLmRlaHlkcmF0ZWQ6bnVsbCkpdGhyb3cgRXJyb3IoaSgzMTcpKTtsW2VSXT1ufWVsc2UgclIoKSwwPT0oMTI4Jm4uZmxhZ3MpJiYobi5tZW1vaXplZFN0YXRlPW51bGwpLG4uZmxhZ3N8PTQ7b0oobiksbD0hMX1lbHNlIGw9ckkoKSxudWxsIT09ZSYmbnVsbCE9PWUubWVtb2l6ZWRTdGF0ZSYmKGUubWVtb2l6ZWRTdGF0ZS5oeWRyYXRpb25FcnJvcnM9bCksbD0hMDtpZighbCl7aWYoMjU2Jm4uZmxhZ3MpcmV0dXJuIGxXKG4pLG47cmV0dXJuIGxXKG4pLG51bGx9fWlmKGxXKG4pLDAhPSgxMjgmbi5mbGFncykpcmV0dXJuIG4ubGFuZXM9dCxuO3JldHVybiB0PW51bGwhPT1yLGU9bnVsbCE9PWUmJm51bGwhPT1lLm1lbW9pemVkU3RhdGUsdCYmKHI9bi5jaGlsZCxsPW51bGwsbnVsbCE9PXIuYWx0ZXJuYXRlJiZudWxsIT09ci5hbHRlcm5hdGUubWVtb2l6ZWRTdGF0ZSYmbnVsbCE9PXIuYWx0ZXJuYXRlLm1lbW9pemVkU3RhdGUuY2FjaGVQb29sJiYobD1yLmFsdGVybmF0ZS5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbC5wb29sKSxhPW51bGwsbnVsbCE9PXIubWVtb2l6ZWRTdGF0ZSYmbnVsbCE9PXIubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2wmJihhPXIubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2wucG9vbCksYSE9PWwmJihyLmZsYWdzfD0yMDQ4KSksdCE9PWUmJnQmJihuLmNoaWxkLmZsYWdzfD04MTkyKSxvRyhuLG4udXBkYXRlUXVldWUpLG9KKG4pLG51bGw7Y2FzZSA0OnJldHVybiBxKCksbnVsbD09PWUmJmk3KG4uc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLG9KKG4pLG51bGw7Y2FzZSAxMDpyZXR1cm4gclEobi50eXBlKSxvSihuKSxudWxsO2Nhc2UgMTk6aWYoJChscSksbnVsbD09PShyPW4ubWVtb2l6ZWRTdGF0ZSkpcmV0dXJuIG9KKG4pLG51bGw7aWYobD0wIT0oMTI4Jm4uZmxhZ3MpLG51bGw9PT0oYT1yLnJlbmRlcmluZykpaWYobClvWihyLCExKTtlbHNle2lmKDAhPT11Qnx8bnVsbCE9PWUmJjAhPSgxMjgmZS5mbGFncykpZm9yKGU9bi5jaGlsZDtudWxsIT09ZTspe2lmKG51bGwhPT0oYT1sSyhlKSkpe2ZvcihuLmZsYWdzfD0xMjgsb1oociwhMSksbi51cGRhdGVRdWV1ZT1lPWEudXBkYXRlUXVldWUsb0cobixlKSxuLnN1YnRyZWVGbGFncz0wLGU9dCx0PW4uY2hpbGQ7bnVsbCE9PXQ7KXJhKHQsZSksdD10LnNpYmxpbmc7cmV0dXJuIGoobHEsMSZscS5jdXJyZW50fDIpLHJMJiZyUyhuLHIudHJlZUZvcmtDb3VudCksbi5jaGlsZH1lPWUuc2libGluZ31udWxsIT09ci50YWlsJiZlYSgpPnUxJiYobi5mbGFnc3w9MTI4LGw9ITAsb1oociwhMSksbi5sYW5lcz00MTk0MzA0KX1lbHNle2lmKCFsKWlmKG51bGwhPT0oZT1sSyhhKSkpe2lmKG4uZmxhZ3N8PTEyOCxsPSEwLG4udXBkYXRlUXVldWU9ZT1lLnVwZGF0ZVF1ZXVlLG9HKG4sZSksb1oociwhMCksbnVsbD09PXIudGFpbCYmImhpZGRlbiI9PT1yLnRhaWxNb2RlJiYhYS5hbHRlcm5hdGUmJiFyTClyZXR1cm4gb0oobiksbnVsbH1lbHNlIDIqZWEoKS1yLnJlbmRlcmluZ1N0YXJ0VGltZT51MSYmMHgyMDAwMDAwMCE9PXQmJihuLmZsYWdzfD0xMjgsbD0hMCxvWihyLCExKSxuLmxhbmVzPTQxOTQzMDQpO3IuaXNCYWNrd2FyZHM/KGEuc2libGluZz1uLmNoaWxkLG4uY2hpbGQ9YSk6KG51bGwhPT0oZT1yLmxhc3QpP2Uuc2libGluZz1hOm4uY2hpbGQ9YSxyLmxhc3Q9YSl9aWYobnVsbCE9PXIudGFpbClyZXR1cm4gZT1yLnRhaWwsci5yZW5kZXJpbmc9ZSxyLnRhaWw9ZS5zaWJsaW5nLHIucmVuZGVyaW5nU3RhcnRUaW1lPWVhKCksZS5zaWJsaW5nPW51bGwsdD1scS5jdXJyZW50LGoobHEsbD8xJnR8MjoxJnQpLHJMJiZyUyhuLHIudHJlZUZvcmtDb3VudCksZTtyZXR1cm4gb0oobiksbnVsbDtjYXNlIDIyOmNhc2UgMjM6cmV0dXJuIGxXKG4pLGxVKCkscj1udWxsIT09bi5tZW1vaXplZFN0YXRlLG51bGwhPT1lP251bGwhPT1lLm1lbW9pemVkU3RhdGUhPT1yJiYobi5mbGFnc3w9ODE5Mik6ciYmKG4uZmxhZ3N8PTgxOTIpLHI/MCE9KDB4MjAwMDAwMDAmdCkmJjA9PSgxMjgmbi5mbGFncykmJihvSihuKSw2Jm4uc3VidHJlZUZsYWdzJiYobi5mbGFnc3w9ODE5MikpOm9KKG4pLG51bGwhPT0odD1uLnVwZGF0ZVF1ZXVlKSYmb0cobix0LnJldHJ5UXVldWUpLHQ9bnVsbCxudWxsIT09ZSYmbnVsbCE9PWUubWVtb2l6ZWRTdGF0ZSYmbnVsbCE9PWUubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2wmJih0PWUubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2wucG9vbCkscj1udWxsLG51bGwhPT1uLm1lbW9pemVkU3RhdGUmJm51bGwhPT1uLm1lbW9pemVkU3RhdGUuY2FjaGVQb29sJiYocj1uLm1lbW9pemVkU3RhdGUuY2FjaGVQb29sLnBvb2wpLHIhPT10JiYobi5mbGFnc3w9MjA0OCksbnVsbCE9PWUmJiQobG4pLG51bGw7Y2FzZSAyNDpyZXR1cm4gdD1udWxsLG51bGwhPT1lJiYodD1lLm1lbW9pemVkU3RhdGUuY2FjaGUpLG4ubWVtb2l6ZWRTdGF0ZS5jYWNoZSE9PXQmJihuLmZsYWdzfD0yMDQ4KSxyUShyMiksb0oobiksbnVsbDtjYXNlIDI1OmNhc2UgMzA6cmV0dXJuIG51bGx9dGhyb3cgRXJyb3IoaSgxNTYsbi50YWcpKX0obi5hbHRlcm5hdGUsbix1USk7aWYobnVsbCE9PXQpe3VSPXQ7cmV0dXJufWlmKG51bGwhPT0obj1uLnNpYmxpbmcpKXt1Uj1uO3JldHVybn11Uj1uPWV9d2hpbGUobnVsbCE9PW4pOzA9PT11QiYmKHVCPTUpfWZ1bmN0aW9uIGlFKGUsbil7ZG97dmFyIHQ9ZnVuY3Rpb24oZSxuKXtzd2l0Y2gocnoobiksbi50YWcpe2Nhc2UgMTpyZXR1cm4gNjU1MzYmKGU9bi5mbGFncyk/KG4uZmxhZ3M9LTY1NTM3JmV8MTI4LG4pOm51bGw7Y2FzZSAzOnJldHVybiByUShyMikscSgpLDAhPSg2NTUzNiYoZT1uLmZsYWdzKSkmJjA9PSgxMjgmZSk/KG4uZmxhZ3M9LTY1NTM3JmV8MTI4LG4pOm51bGw7Y2FzZSAyNjpjYXNlIDI3OmNhc2UgNTpyZXR1cm4gWShuKSxudWxsO2Nhc2UgMzE6aWYobnVsbCE9PW4ubWVtb2l6ZWRTdGF0ZSl7aWYobFcobiksbnVsbD09PW4uYWx0ZXJuYXRlKXRocm93IEVycm9yKGkoMzQwKSk7clIoKX1yZXR1cm4gNjU1MzYmKGU9bi5mbGFncyk/KG4uZmxhZ3M9LTY1NTM3JmV8MTI4LG4pOm51bGw7Y2FzZSAxMzppZihsVyhuKSxudWxsIT09KGU9bi5tZW1vaXplZFN0YXRlKSYmbnVsbCE9PWUuZGVoeWRyYXRlZCl7aWYobnVsbD09PW4uYWx0ZXJuYXRlKXRocm93IEVycm9yKGkoMzQwKSk7clIoKX1yZXR1cm4gNjU1MzYmKGU9bi5mbGFncyk/KG4uZmxhZ3M9LTY1NTM3JmV8MTI4LG4pOm51bGw7Y2FzZSAxOTpyZXR1cm4gJChscSksbnVsbDtjYXNlIDQ6cmV0dXJuIHEoKSxudWxsO2Nhc2UgMTA6cmV0dXJuIHJRKG4udHlwZSksbnVsbDtjYXNlIDIyOmNhc2UgMjM6cmV0dXJuIGxXKG4pLGxVKCksbnVsbCE9PWUmJiQobG4pLDY1NTM2JihlPW4uZmxhZ3MpPyhuLmZsYWdzPS02NTUzNyZlfDEyOCxuKTpudWxsO2Nhc2UgMjQ6cmV0dXJuIHJRKHIyKSxudWxsO2RlZmF1bHQ6cmV0dXJuIG51bGx9fShlLmFsdGVybmF0ZSxlKTtpZihudWxsIT09dCl7dC5mbGFncyY9MzI3NjcsdVI9dDtyZXR1cm59aWYobnVsbCE9PSh0PWUucmV0dXJuKSYmKHQuZmxhZ3N8PTMyNzY4LHQuc3VidHJlZUZsYWdzPTAsdC5kZWxldGlvbnM9bnVsbCksIW4mJm51bGwhPT0oZT1lLnNpYmxpbmcpKXt1Uj1lO3JldHVybn11Uj1lPXR9d2hpbGUobnVsbCE9PWUpO3VCPTYsdVI9bnVsbH1mdW5jdGlvbiBpeihlLG4sdCxyLGwsYSxvLHUscyl7ZS5jYW5jZWxQZW5kaW5nQ29tbWl0PW51bGw7ZG8gaVQoKTt3aGlsZSgwIT09dTQpO2lmKDAhPSg2JnVNKSl0aHJvdyBFcnJvcihpKDMyNykpO2lmKG51bGwhPT1uKXtpZihuPT09ZS5jdXJyZW50KXRocm93IEVycm9yKGkoMTc3KSk7aWYoIWZ1bmN0aW9uKGUsbix0LHIsbCxhKXt2YXIgbz1lLnBlbmRpbmdMYW5lcztlLnBlbmRpbmdMYW5lcz10LGUuc3VzcGVuZGVkTGFuZXM9MCxlLnBpbmdlZExhbmVzPTAsZS53YXJtTGFuZXM9MCxlLmV4cGlyZWRMYW5lcyY9dCxlLmVudGFuZ2xlZExhbmVzJj10LGUuZXJyb3JSZWNvdmVyeURpc2FibGVkTGFuZXMmPXQsZS5zaGVsbFN1c3BlbmRDb3VudGVyPTA7dmFyIHU9ZS5lbnRhbmdsZW1lbnRzLGk9ZS5leHBpcmF0aW9uVGltZXMscz1lLmhpZGRlblVwZGF0ZXM7Zm9yKHQ9byZ+dDswPHQ7KXt2YXIgYz0zMS1leSh0KSxmPTE8PGM7dVtjXT0wLGlbY109LTE7dmFyIGQ9c1tjXTtpZihudWxsIT09ZClmb3Ioc1tjXT1udWxsLGM9MDtjPGQubGVuZ3RoO2MrKyl7dmFyIHA9ZFtjXTtudWxsIT09cCYmKHAubGFuZSY9LTB4MjAwMDAwMDEpfXQmPX5mfTAhPT1yJiZlTChlLHIsMCksMCE9PWEmJjA9PT1sJiYwIT09ZS50YWcmJihlLnN1c3BlbmRlZExhbmVzfD1hJn4obyZ+bikpfShlLHQsYT1uLmxhbmVzfG4uY2hpbGRMYW5lc3x0MyxvLHUscyksZT09PXVBJiYodVI9dUE9bnVsbCx1ST0wKSx1Nj1uLHU4PWUsdTU9dCx1OT1hLHU3PWwsaWU9ciwwIT0oMTAyNTYmbi5zdWJ0cmVlRmxhZ3MpfHwwIT0oMTAyNTYmbi5mbGFncyk/KGUuY2FsbGJhY2tOb2RlPW51bGwsZS5jYWxsYmFja1ByaW9yaXR5PTAsZW4oZXMsZnVuY3Rpb24oKXtyZXR1cm4gaV8oITApLG51bGx9KSk6KGUuY2FsbGJhY2tOb2RlPW51bGwsZS5jYWxsYmFja1ByaW9yaXR5PTApLHI9MCE9KDEzODc4Jm4uZmxhZ3MpLDAhPSgxMzg3OCZuLnN1YnRyZWVGbGFncyl8fHIpe3I9Ty5ULE8uVD1udWxsLGw9TS5wLE0ucD0yLG89dU0sdU18PTQ7dHJ5eyFmdW5jdGlvbihlLG4pe2lmKGU9ZS5jb250YWluZXJJbmZvLHNwPWN1LHRGKGU9dF8oZSkpKXtpZigic2VsZWN0aW9uU3RhcnQiaW4gZSl2YXIgdD17c3RhcnQ6ZS5zZWxlY3Rpb25TdGFydCxlbmQ6ZS5zZWxlY3Rpb25FbmR9O2Vsc2UgZTp7dmFyIHI9KHQ9KHQ9ZS5vd25lckRvY3VtZW50KSYmdC5kZWZhdWx0Vmlld3x8d2luZG93KS5nZXRTZWxlY3Rpb24mJnQuZ2V0U2VsZWN0aW9uKCk7aWYociYmMCE9PXIucmFuZ2VDb3VudCl7dD1yLmFuY2hvck5vZGU7dmFyIGwsYT1yLmFuY2hvck9mZnNldCxvPXIuZm9jdXNOb2RlO3I9ci5mb2N1c09mZnNldDt0cnl7dC5ub2RlVHlwZSxvLm5vZGVUeXBlfWNhdGNoKGUpe3Q9bnVsbDticmVhayBlfXZhciB1PTAscz0tMSxjPS0xLGY9MCxkPTAscD1lLG09bnVsbDtuOmZvcig7Oyl7Zm9yKDtwIT09dHx8MCE9PWEmJjMhPT1wLm5vZGVUeXBlfHwocz11K2EpLHAhPT1vfHwwIT09ciYmMyE9PXAubm9kZVR5cGV8fChjPXUrciksMz09PXAubm9kZVR5cGUmJih1Kz1wLm5vZGVWYWx1ZS5sZW5ndGgpLG51bGwhPT0obD1wLmZpcnN0Q2hpbGQpOyltPXAscD1sO2Zvcig7Oyl7aWYocD09PWUpYnJlYWsgbjtpZihtPT09dCYmKytmPT09YSYmKHM9dSksbT09PW8mJisrZD09PXImJihjPXUpLG51bGwhPT0obD1wLm5leHRTaWJsaW5nKSlicmVhazttPShwPW0pLnBhcmVudE5vZGV9cD1sfXQ9LTE9PT1zfHwtMT09PWM/bnVsbDp7c3RhcnQ6cyxlbmQ6Y319ZWxzZSB0PW51bGx9dD10fHx7c3RhcnQ6MCxlbmQ6MH19ZWxzZSB0PW51bGw7Zm9yKHNtPXtmb2N1c2VkRWxlbTplLHNlbGVjdGlvblJhbmdlOnR9LGN1PSExLHV1PW47bnVsbCE9PXV1OylpZihlPShuPXV1KS5jaGlsZCwwIT0oMTAyNCZuLnN1YnRyZWVGbGFncykmJm51bGwhPT1lKWUucmV0dXJuPW4sdXU9ZTtlbHNlIGZvcig7bnVsbCE9PXV1Oyl7c3dpdGNoKG89KG49dXUpLmFsdGVybmF0ZSxlPW4uZmxhZ3Msbi50YWcpe2Nhc2UgMDpjYXNlIDExOmNhc2UgMTU6Y2FzZSA1OmNhc2UgMjY6Y2FzZSAyNzpjYXNlIDY6Y2FzZSA0OmNhc2UgMTc6YnJlYWs7Y2FzZSAxOmlmKDAhPSgxMDI0JmUpJiZudWxsIT09byl7ZT12b2lkIDAsdD1uLGE9by5tZW1vaXplZFByb3BzLG89by5tZW1vaXplZFN0YXRlLHI9dC5zdGF0ZU5vZGU7dHJ5e3ZhciBoPW9jKHQudHlwZSxhKTtlPXIuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUoaCxvKSxyLl9fcmVhY3RJbnRlcm5hbFNuYXBzaG90QmVmb3JlVXBkYXRlPWV9Y2F0Y2goZSl7aUQodCx0LnJldHVybixlKX19YnJlYWs7Y2FzZSAzOmlmKDAhPSgxMDI0JmUpKXtpZig5PT09KHQ9KGU9bi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbykubm9kZVR5cGUpKXNOKGUpO2Vsc2UgaWYoMT09PXQpc3dpdGNoKGUubm9kZU5hbWUpe2Nhc2UiSEVBRCI6Y2FzZSJIVE1MIjpjYXNlIkJPRFkiOnNOKGUpO2JyZWFrO2RlZmF1bHQ6ZS50ZXh0Q29udGVudD0iIn19YnJlYWs7ZGVmYXVsdDppZigwIT0oMTAyNCZlKSl0aHJvdyBFcnJvcihpKDE2MykpfWlmKG51bGwhPT0oZT1uLnNpYmxpbmcpKXtlLnJldHVybj1uLnJldHVybix1dT1lO2JyZWFrfXV1PW4ucmV0dXJufX0oZSxuLHQpfWZpbmFsbHl7dU09byxNLnA9bCxPLlQ9cn19dTQ9MSxpQygpLGlQKCksaU4oKX19ZnVuY3Rpb24gaUMoKXtpZigxPT09dTQpe3U0PTA7dmFyIGU9dTgsbj11Nix0PTAhPSgxMzg3OCZuLmZsYWdzKTtpZigwIT0oMTM4Nzgmbi5zdWJ0cmVlRmxhZ3MpfHx0KXt0PU8uVCxPLlQ9bnVsbDt2YXIgcj1NLnA7TS5wPTI7dmFyIGw9dU07dU18PTQ7dHJ5e3V2KG4sZSk7dmFyIGE9c20sbz10XyhlLmNvbnRhaW5lckluZm8pLHU9YS5mb2N1c2VkRWxlbSxpPWEuc2VsZWN0aW9uUmFuZ2U7aWYobyE9PXUmJnUmJnUub3duZXJEb2N1bWVudCYmZnVuY3Rpb24gZShuLHQpe3JldHVybiEhbiYmISF0JiYobj09PXR8fCghbnx8MyE9PW4ubm9kZVR5cGUpJiYodCYmMz09PXQubm9kZVR5cGU/ZShuLHQucGFyZW50Tm9kZSk6ImNvbnRhaW5zImluIG4/bi5jb250YWlucyh0KTohIW4uY29tcGFyZURvY3VtZW50UG9zaXRpb24mJiEhKDE2Jm4uY29tcGFyZURvY3VtZW50UG9zaXRpb24odCkpKSl9KHUub3duZXJEb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsdSkpe2lmKG51bGwhPT1pJiZ0Rih1KSl7dmFyIHM9aS5zdGFydCxjPWkuZW5kO2lmKHZvaWQgMD09PWMmJihjPXMpLCJzZWxlY3Rpb25TdGFydCJpbiB1KXUuc2VsZWN0aW9uU3RhcnQ9cyx1LnNlbGVjdGlvbkVuZD1NYXRoLm1pbihjLHUudmFsdWUubGVuZ3RoKTtlbHNle3ZhciBmPXUub3duZXJEb2N1bWVudHx8ZG9jdW1lbnQsZD1mJiZmLmRlZmF1bHRWaWV3fHx3aW5kb3c7aWYoZC5nZXRTZWxlY3Rpb24pe3ZhciBwPWQuZ2V0U2VsZWN0aW9uKCksbT11LnRleHRDb250ZW50Lmxlbmd0aCxoPU1hdGgubWluKGkuc3RhcnQsbSksZz12b2lkIDA9PT1pLmVuZD9oOk1hdGgubWluKGkuZW5kLG0pOyFwLmV4dGVuZCYmaD5nJiYobz1nLGc9aCxoPW8pO3ZhciB5PXRUKHUsaCksdj10VCh1LGcpO2lmKHkmJnYmJigxIT09cC5yYW5nZUNvdW50fHxwLmFuY2hvck5vZGUhPT15Lm5vZGV8fHAuYW5jaG9yT2Zmc2V0IT09eS5vZmZzZXR8fHAuZm9jdXNOb2RlIT09di5ub2RlfHxwLmZvY3VzT2Zmc2V0IT09di5vZmZzZXQpKXt2YXIgYj1mLmNyZWF0ZVJhbmdlKCk7Yi5zZXRTdGFydCh5Lm5vZGUseS5vZmZzZXQpLHAucmVtb3ZlQWxsUmFuZ2VzKCksaD5nPyhwLmFkZFJhbmdlKGIpLHAuZXh0ZW5kKHYubm9kZSx2Lm9mZnNldCkpOihiLnNldEVuZCh2Lm5vZGUsdi5vZmZzZXQpLHAuYWRkUmFuZ2UoYikpfX19fWZvcihmPVtdLHA9dTtwPXAucGFyZW50Tm9kZTspMT09PXAubm9kZVR5cGUmJmYucHVzaCh7ZWxlbWVudDpwLGxlZnQ6cC5zY3JvbGxMZWZ0LHRvcDpwLnNjcm9sbFRvcH0pO2ZvcigiZnVuY3Rpb24iPT10eXBlb2YgdS5mb2N1cyYmdS5mb2N1cygpLHU9MDt1PGYubGVuZ3RoO3UrKyl7dmFyIGs9Zlt1XTtrLmVsZW1lbnQuc2Nyb2xsTGVmdD1rLmxlZnQsay5lbGVtZW50LnNjcm9sbFRvcD1rLnRvcH19Y3U9ISFzcCxzbT1zcD1udWxsfWZpbmFsbHl7dU09bCxNLnA9cixPLlQ9dH19ZS5jdXJyZW50PW4sdTQ9Mn19ZnVuY3Rpb24gaVAoKXtpZigyPT09dTQpe3U0PTA7dmFyIGU9dTgsbj11Nix0PTAhPSg4NzcyJm4uZmxhZ3MpO2lmKDAhPSg4NzcyJm4uc3VidHJlZUZsYWdzKXx8dCl7dD1PLlQsTy5UPW51bGw7dmFyIHI9TS5wO00ucD0yO3ZhciBsPXVNO3VNfD00O3RyeXt1aShlLG4uYWx0ZXJuYXRlLG4pfWZpbmFsbHl7dU09bCxNLnA9cixPLlQ9dH19dTQ9M319ZnVuY3Rpb24gaU4oKXtpZig0PT09dTR8fDM9PT11NCl7dTQ9MCxlbCgpO3ZhciBlPXU4LG49dTYsdD11NSxyPWllOzAhPSgxMDI1NiZuLnN1YnRyZWVGbGFncyl8fDAhPSgxMDI1NiZuLmZsYWdzKT91ND01Oih1ND0wLHU2PXU4PW51bGwsaUwoZSxlLnBlbmRpbmdMYW5lcykpO3ZhciBsPWUucGVuZGluZ0xhbmVzO2lmKDA9PT1sJiYodTM9bnVsbCksZUQodCksbj1uLnN0YXRlTm9kZSxlaCYmImZ1bmN0aW9uIj09dHlwZW9mIGVoLm9uQ29tbWl0RmliZXJSb290KXRyeXtlaC5vbkNvbW1pdEZpYmVyUm9vdChlbSxuLHZvaWQgMCwxMjg9PSgxMjgmbi5jdXJyZW50LmZsYWdzKSl9Y2F0Y2goZSl7fWlmKG51bGwhPT1yKXtuPU8uVCxsPU0ucCxNLnA9MixPLlQ9bnVsbDt0cnl7Zm9yKHZhciBhPWUub25SZWNvdmVyYWJsZUVycm9yLG89MDtvPHIubGVuZ3RoO28rKyl7dmFyIHU9cltvXTthKHUudmFsdWUse2NvbXBvbmVudFN0YWNrOnUuc3RhY2t9KX19ZmluYWxseXtPLlQ9bixNLnA9bH19MCE9KDMmdTUpJiZpVCgpLGlCKGUpLGw9ZS5wZW5kaW5nTGFuZXMsMCE9KDQxOTQwOTAmdCkmJjAhPSg0MiZsKT9lPT09aXI/aXQrKzooaXQ9MCxpcj1lKTppdD0wLGlXKDAsITEpfX1mdW5jdGlvbiBpTChlLG4pezA9PShlLnBvb2xlZENhY2hlTGFuZXMmPW4pJiZudWxsIT0obj1lLnBvb2xlZENhY2hlKSYmKGUucG9vbGVkQ2FjaGU9bnVsbCxyNChuKSl9ZnVuY3Rpb24gaVQoZSl7cmV0dXJuIGlDKCksaVAoKSxpTigpLGlfKGUpfWZ1bmN0aW9uIGlfKCl7aWYoNSE9PXU0KXJldHVybiExO3ZhciBlPXU4LG49dTk7dTk9MDt2YXIgdD1lRCh1NSkscj1PLlQsbD1NLnA7dHJ5e00ucD0zMj50PzMyOnQsTy5UPW51bGwsdD11Nyx1Nz1udWxsO3ZhciBhPXU4LG89dTU7aWYodTQ9MCx1Nj11OD1udWxsLHU1PTAsMCE9KDYmdU0pKXRocm93IEVycm9yKGkoMzMxKSk7dmFyIHU9dU07aWYodU18PTQsdV8oYS5jdXJyZW50KSx1RShhLGEuY3VycmVudCxvLHQpLHVNPXUsaVcoMCwhMSksZWgmJiJmdW5jdGlvbiI9PXR5cGVvZiBlaC5vblBvc3RDb21taXRGaWJlclJvb3QpdHJ5e2VoLm9uUG9zdENvbW1pdEZpYmVyUm9vdChlbSxhKX1jYXRjaChlKXt9cmV0dXJuITB9ZmluYWxseXtNLnA9bCxPLlQ9cixpTChlLG4pfX1mdW5jdGlvbiBpRihlLG4sdCl7bj1yZCh0LG4pLG49b2coZS5zdGF0ZU5vZGUsbiwyKSxudWxsIT09KGU9bFAoZSxuLDIpKSYmKGVOKGUsMiksaUIoZSkpfWZ1bmN0aW9uIGlEKGUsbix0KXtpZigzPT09ZS50YWcpaUYoZSxlLHQpO2Vsc2UgZm9yKDtudWxsIT09bjspe2lmKDM9PT1uLnRhZyl7aUYobixlLHQpO2JyZWFrfWlmKDE9PT1uLnRhZyl7dmFyIHI9bi5zdGF0ZU5vZGU7aWYoImZ1bmN0aW9uIj09dHlwZW9mIG4udHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3J8fCJmdW5jdGlvbiI9PXR5cGVvZiByLmNvbXBvbmVudERpZENhdGNoJiYobnVsbD09PXUzfHwhdTMuaGFzKHIpKSl7ZT1yZCh0LGUpLG51bGwhPT0ocj1sUChuLHQ9b3koMiksMikpJiYob3YodCxyLG4sZSksZU4ociwyKSxpQihyKSk7YnJlYWt9fW49bi5yZXR1cm59fWZ1bmN0aW9uIGlPKGUsbix0KXt2YXIgcj1lLnBpbmdDYWNoZTtpZihudWxsPT09cil7cj1lLnBpbmdDYWNoZT1uZXcgdU87dmFyIGw9bmV3IFNldDtyLnNldChuLGwpfWVsc2Ugdm9pZCAwPT09KGw9ci5nZXQobikpJiYobD1uZXcgU2V0LHIuc2V0KG4sbCkpO2wuaGFzKHQpfHwodUg9ITAsbC5hZGQodCksZT1pTS5iaW5kKG51bGwsZSxuLHQpLG4udGhlbihlLGUpKX1mdW5jdGlvbiBpTShlLG4sdCl7dmFyIHI9ZS5waW5nQ2FjaGU7bnVsbCE9PXImJnIuZGVsZXRlKG4pLGUucGluZ2VkTGFuZXN8PWUuc3VzcGVuZGVkTGFuZXMmdCxlLndhcm1MYW5lcyY9fnQsdUE9PT1lJiYodUkmdCk9PT10JiYoND09PXVCfHwzPT09dUImJigweDNjMDAwMDAmdUkpPT09dUkmJjMwMD5lYSgpLXUwPzA9PSgyJnVNKSYmaXAoZSwwKTp1S3w9dCx1WD09PXVJJiYodVg9MCkpLGlCKGUpfWZ1bmN0aW9uIGlBKGUsbil7MD09PW4mJihuPWVDKCkpLG51bGwhPT0oZT10NShlLG4pKSYmKGVOKGUsbiksaUIoZSkpfWZ1bmN0aW9uIGlSKGUpe3ZhciBuPWUubWVtb2l6ZWRTdGF0ZSx0PTA7bnVsbCE9PW4mJih0PW4ucmV0cnlMYW5lKSxpQShlLHQpfWZ1bmN0aW9uIGlJKGUsbil7dmFyIHQ9MDtzd2l0Y2goZS50YWcpe2Nhc2UgMzE6Y2FzZSAxMzp2YXIgcj1lLnN0YXRlTm9kZSxsPWUubWVtb2l6ZWRTdGF0ZTtudWxsIT09bCYmKHQ9bC5yZXRyeUxhbmUpO2JyZWFrO2Nhc2UgMTk6cj1lLnN0YXRlTm9kZTticmVhaztjYXNlIDIyOnI9ZS5zdGF0ZU5vZGUuX3JldHJ5Q2FjaGU7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihpKDMxNCkpfW51bGwhPT1yJiZyLmRlbGV0ZShuKSxpQShlLHQpfXZhciBpVT1udWxsLGkkPW51bGwsaWo9ITEsaVY9ITEsaUg9ITEsaVE9MDtmdW5jdGlvbiBpQihlKXtlIT09aSQmJm51bGw9PT1lLm5leHQmJihudWxsPT09aSQ/aVU9aSQ9ZTppJD1pJC5uZXh0PWUpLGlWPSEwLGlqfHwoaWo9ITAsc3goZnVuY3Rpb24oKXswIT0oNiZ1TSk/ZW4oZXUsaXEpOmlLKCl9KSl9ZnVuY3Rpb24gaVcoZSxuKXtpZighaUgmJmlWKXtpSD0hMDtkbyBmb3IodmFyIHQ9ITEscj1pVTtudWxsIT09cjspe2lmKCFuKWlmKDAhPT1lKXt2YXIgbD1yLnBlbmRpbmdMYW5lcztpZigwPT09bCl2YXIgYT0wO2Vsc2V7dmFyIG89ci5zdXNwZW5kZWRMYW5lcyx1PXIucGluZ2VkTGFuZXM7YT0weGMwMDAwOTUmKGE9KDE8PDMxLWV5KDQyfGUpKzEpLTEmKGwmfihvJn51KSkpPzB4YzAwMDA5NSZhfDE6YT8yfGE6MH0wIT09YSYmKHQ9ITAsaUcocixhKSl9ZWxzZSBhPXVJLDA9PSgzJihhPWV4KHIscj09PXVBP2E6MCxudWxsIT09ci5jYW5jZWxQZW5kaW5nQ29tbWl0fHwtMSE9PXIudGltZW91dEhhbmRsZSkpKXx8ZUUocixhKXx8KHQ9ITAsaUcocixhKSk7cj1yLm5leHR9d2hpbGUodCk7aUg9ITF9fWZ1bmN0aW9uIGlxKCl7aUsoKX1mdW5jdGlvbiBpSygpe2lWPWlqPSExO3ZhciBlLG49MDswPT09aVF8fCgoZT13aW5kb3cuZXZlbnQpJiYicG9wc3RhdGUiPT09ZS50eXBlP2U9PT1zYnx8KHNiPWUsMCk6KHNiPW51bGwsMSkpfHwobj1pUSk7Zm9yKHZhciB0PWVhKCkscj1udWxsLGw9aVU7bnVsbCE9PWw7KXt2YXIgYT1sLm5leHQsbz1pWShsLHQpOzA9PT1vPyhsLm5leHQ9bnVsbCxudWxsPT09cj9pVT1hOnIubmV4dD1hLG51bGw9PT1hJiYoaSQ9cikpOihyPWwsKDAhPT1ufHwwIT0oMyZvKSkmJihpVj0hMCkpLGw9YX0wIT09dTQmJjUhPT11NHx8aVcobiwhMSksMCE9PWlRJiYoaVE9MCl9ZnVuY3Rpb24gaVkoZSxuKXtmb3IodmFyIHQ9ZS5zdXNwZW5kZWRMYW5lcyxyPWUucGluZ2VkTGFuZXMsbD1lLmV4cGlyYXRpb25UaW1lcyxhPS0weDNjMDAwMDEmZS5wZW5kaW5nTGFuZXM7MDxhOyl7dmFyIG89MzEtZXkoYSksdT0xPDxvLGk9bFtvXTstMT09PWk/KDA9PSh1JnQpfHwwIT0odSZyKSkmJihsW29dPWZ1bmN0aW9uKGUsbil7c3dpdGNoKGUpe2Nhc2UgMTpjYXNlIDI6Y2FzZSA0OmNhc2UgODpjYXNlIDY0OnJldHVybiBuKzI1MDtjYXNlIDE2OmNhc2UgMzI6Y2FzZSAxMjg6Y2FzZSAyNTY6Y2FzZSA1MTI6Y2FzZSAxMDI0OmNhc2UgMjA0ODpjYXNlIDQwOTY6Y2FzZSA4MTkyOmNhc2UgMTYzODQ6Y2FzZSAzMjc2ODpjYXNlIDY1NTM2OmNhc2UgMTMxMDcyOmNhc2UgMjYyMTQ0OmNhc2UgNTI0Mjg4OmNhc2UgMTA0ODU3NjpjYXNlIDIwOTcxNTI6cmV0dXJuIG4rNWUzO2RlZmF1bHQ6cmV0dXJuIC0xfX0odSxuKSk6aTw9biYmKGUuZXhwaXJlZExhbmVzfD11KSxhJj1+dX1pZihuPXVBLHQ9dUksdD1leChlLGU9PT1uP3Q6MCxudWxsIT09ZS5jYW5jZWxQZW5kaW5nQ29tbWl0fHwtMSE9PWUudGltZW91dEhhbmRsZSkscj1lLmNhbGxiYWNrTm9kZSwwPT09dHx8ZT09PW4mJigyPT09dVV8fDk9PT11VSl8fG51bGwhPT1lLmNhbmNlbFBlbmRpbmdDb21taXQpcmV0dXJuIG51bGwhPT1yJiZudWxsIT09ciYmZXQociksZS5jYWxsYmFja05vZGU9bnVsbCxlLmNhbGxiYWNrUHJpb3JpdHk9MDtpZigwPT0oMyZ0KXx8ZUUoZSx0KSl7aWYoKG49dCYtdCk9PT1lLmNhbGxiYWNrUHJpb3JpdHkpcmV0dXJuIG47c3dpdGNoKG51bGwhPT1yJiZldChyKSxlRCh0KSl7Y2FzZSAyOmNhc2UgODp0PWVpO2JyZWFrO2Nhc2UgMzI6ZGVmYXVsdDp0PWVzO2JyZWFrO2Nhc2UgMHgxMDAwMDAwMDp0PWVmfXJldHVybiB0PWVuKHQscj1pWC5iaW5kKG51bGwsZSkpLGUuY2FsbGJhY2tQcmlvcml0eT1uLGUuY2FsbGJhY2tOb2RlPXQsbn1yZXR1cm4gbnVsbCE9PXImJm51bGwhPT1yJiZldChyKSxlLmNhbGxiYWNrUHJpb3JpdHk9MixlLmNhbGxiYWNrTm9kZT1udWxsLDJ9ZnVuY3Rpb24gaVgoZSxuKXtpZigwIT09dTQmJjUhPT11NClyZXR1cm4gZS5jYWxsYmFja05vZGU9bnVsbCxlLmNhbGxiYWNrUHJpb3JpdHk9MCxudWxsO3ZhciB0PWUuY2FsbGJhY2tOb2RlO2lmKGlUKCEwKSYmZS5jYWxsYmFja05vZGUhPT10KXJldHVybiBudWxsO3ZhciByPXVJO3JldHVybiAwPT09KHI9ZXgoZSxlPT09dUE/cjowLG51bGwhPT1lLmNhbmNlbFBlbmRpbmdDb21taXR8fC0xIT09ZS50aW1lb3V0SGFuZGxlKSk/bnVsbDooaXUoZSxyLG4pLGlZKGUsZWEoKSksbnVsbCE9ZS5jYWxsYmFja05vZGUmJmUuY2FsbGJhY2tOb2RlPT09dD9pWC5iaW5kKG51bGwsZSk6bnVsbCl9ZnVuY3Rpb24gaUcoZSxuKXtpZihpVCgpKXJldHVybiBudWxsO2l1KGUsbiwhMCl9ZnVuY3Rpb24gaVooKXtpZigwPT09aVEpe3ZhciBlPXI1O2lRPTAhPT1lP2U6ZXooKX1yZXR1cm4gaVF9ZnVuY3Rpb24gaUooZSl7cmV0dXJuIG51bGw9PWV8fCJzeW1ib2wiPT10eXBlb2YgZXx8ImJvb2xlYW4iPT10eXBlb2YgZT9udWxsOiJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6bnkoIiIrZSl9ZnVuY3Rpb24gaTAoZSxuKXt2YXIgdD1uLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTtyZXR1cm4gdC5uYW1lPW4ubmFtZSx0LnZhbHVlPW4udmFsdWUsZS5pZCYmdC5zZXRBdHRyaWJ1dGUoImZvcm0iLGUuaWQpLG4ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodCxuKSxlPW5ldyBGb3JtRGF0YShlKSx0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCksZX1mb3IodmFyIGkxPTA7aTE8dFoubGVuZ3RoO2kxKyspe3ZhciBpMj10WltpMV07dEooaTIudG9Mb3dlckNhc2UoKSwib24iKyhpMlswXS50b1VwcGVyQ2FzZSgpK2kyLnNsaWNlKDEpKSl9dEoodFEsIm9uQW5pbWF0aW9uRW5kIiksdEoodEIsIm9uQW5pbWF0aW9uSXRlcmF0aW9uIiksdEoodFcsIm9uQW5pbWF0aW9uU3RhcnQiKSx0SigiZGJsY2xpY2siLCJvbkRvdWJsZUNsaWNrIiksdEooImZvY3VzaW4iLCJvbkZvY3VzIiksdEooImZvY3Vzb3V0Iiwib25CbHVyIiksdEoodHEsIm9uVHJhbnNpdGlvblJ1biIpLHRKKHRLLCJvblRyYW5zaXRpb25TdGFydCIpLHRKKHRZLCJvblRyYW5zaXRpb25DYW5jZWwiKSx0Sih0WCwib25UcmFuc2l0aW9uRW5kIiksZTAoIm9uTW91c2VFbnRlciIsWyJtb3VzZW91dCIsIm1vdXNlb3ZlciJdKSxlMCgib25Nb3VzZUxlYXZlIixbIm1vdXNlb3V0IiwibW91c2VvdmVyIl0pLGUwKCJvblBvaW50ZXJFbnRlciIsWyJwb2ludGVyb3V0IiwicG9pbnRlcm92ZXIiXSksZTAoIm9uUG9pbnRlckxlYXZlIixbInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciJdKSxlSigib25DaGFuZ2UiLCJjaGFuZ2UgY2xpY2sgZm9jdXNpbiBmb2N1c291dCBpbnB1dCBrZXlkb3duIGtleXVwIHNlbGVjdGlvbmNoYW5nZSIuc3BsaXQoIiAiKSksZUooIm9uU2VsZWN0IiwiZm9jdXNvdXQgY29udGV4dG1lbnUgZHJhZ2VuZCBmb2N1c2luIGtleWRvd24ga2V5dXAgbW91c2Vkb3duIG1vdXNldXAgc2VsZWN0aW9uY2hhbmdlIi5zcGxpdCgiICIpKSxlSigib25CZWZvcmVJbnB1dCIsWyJjb21wb3NpdGlvbmVuZCIsImtleXByZXNzIiwidGV4dElucHV0IiwicGFzdGUiXSksZUooIm9uQ29tcG9zaXRpb25FbmQiLCJjb21wb3NpdGlvbmVuZCBmb2N1c291dCBrZXlkb3duIGtleXByZXNzIGtleXVwIG1vdXNlZG93biIuc3BsaXQoIiAiKSksZUooIm9uQ29tcG9zaXRpb25TdGFydCIsImNvbXBvc2l0aW9uc3RhcnQgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd24iLnNwbGl0KCIgIikpLGVKKCJvbkNvbXBvc2l0aW9uVXBkYXRlIiwiY29tcG9zaXRpb251cGRhdGUgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd24iLnNwbGl0KCIgIikpO3ZhciBpMz0iYWJvcnQgY2FucGxheSBjYW5wbGF5dGhyb3VnaCBkdXJhdGlvbmNoYW5nZSBlbXB0aWVkIGVuY3J5cHRlZCBlbmRlZCBlcnJvciBsb2FkZWRkYXRhIGxvYWRlZG1ldGFkYXRhIGxvYWRzdGFydCBwYXVzZSBwbGF5IHBsYXlpbmcgcHJvZ3Jlc3MgcmF0ZWNoYW5nZSByZXNpemUgc2Vla2VkIHNlZWtpbmcgc3RhbGxlZCBzdXNwZW5kIHRpbWV1cGRhdGUgdm9sdW1lY2hhbmdlIHdhaXRpbmciLnNwbGl0KCIgIiksaTQ9bmV3IFNldCgiYmVmb3JldG9nZ2xlIGNhbmNlbCBjbG9zZSBpbnZhbGlkIGxvYWQgc2Nyb2xsIHNjcm9sbGVuZCB0b2dnbGUiLnNwbGl0KCIgIikuY29uY2F0KGkzKSk7ZnVuY3Rpb24gaTgoZSxuKXtuPTAhPSg0Jm4pO2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKXt2YXIgcj1lW3RdLGw9ci5ldmVudDtyPXIubGlzdGVuZXJzO2U6e3ZhciBhPXZvaWQgMDtpZihuKWZvcih2YXIgbz1yLmxlbmd0aC0xOzA8PW87by0tKXt2YXIgdT1yW29dLGk9dS5pbnN0YW5jZSxzPXUuY3VycmVudFRhcmdldDtpZih1PXUubGlzdGVuZXIsaSE9PWEmJmwuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSlicmVhayBlO2E9dSxsLmN1cnJlbnRUYXJnZXQ9czt0cnl7YShsKX1jYXRjaChlKXt0MChlKX1sLmN1cnJlbnRUYXJnZXQ9bnVsbCxhPWl9ZWxzZSBmb3Iobz0wO288ci5sZW5ndGg7bysrKXtpZihpPSh1PXJbb10pLmluc3RhbmNlLHM9dS5jdXJyZW50VGFyZ2V0LHU9dS5saXN0ZW5lcixpIT09YSYmbC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWJyZWFrIGU7YT11LGwuY3VycmVudFRhcmdldD1zO3RyeXthKGwpfWNhdGNoKGUpe3QwKGUpfWwuY3VycmVudFRhcmdldD1udWxsLGE9aX19fX1mdW5jdGlvbiBpNihlLG4pe3ZhciB0PW5bZSRdO3ZvaWQgMD09PXQmJih0PW5bZSRdPW5ldyBTZXQpO3ZhciByPWUrIl9fYnViYmxlIjt0LmhhcyhyKXx8KHNlKG4sZSwyLCExKSx0LmFkZChyKSl9ZnVuY3Rpb24gaTUoZSxuLHQpe3ZhciByPTA7biYmKHJ8PTQpLHNlKHQsZSxyLG4pfXZhciBpOT0iX3JlYWN0TGlzdGVuaW5nIitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKTtmdW5jdGlvbiBpNyhlKXtpZighZVtpOV0pe2VbaTldPSEwLGVHLmZvckVhY2goZnVuY3Rpb24obil7InNlbGVjdGlvbmNoYW5nZSIhPT1uJiYoaTQuaGFzKG4pfHxpNShuLCExLGUpLGk1KG4sITAsZSkpfSk7dmFyIG49OT09PWUubm9kZVR5cGU/ZTplLm93bmVyRG9jdW1lbnQ7bnVsbD09PW58fG5baTldfHwobltpOV09ITAsaTUoInNlbGVjdGlvbmNoYW5nZSIsITEsbikpfX1mdW5jdGlvbiBzZShlLG4sdCxyKXtzd2l0Y2goY20obikpe2Nhc2UgMjp2YXIgbD1jaTticmVhaztjYXNlIDg6bD1jczticmVhaztkZWZhdWx0Omw9Y2N9dD1sLmJpbmQobnVsbCxuLHQsZSksbD12b2lkIDAsbk4mJigidG91Y2hzdGFydCI9PT1ufHwidG91Y2htb3ZlIj09PW58fCJ3aGVlbCI9PT1uKSYmKGw9ITApLHI/dm9pZCAwIT09bD9lLmFkZEV2ZW50TGlzdGVuZXIobix0LHtjYXB0dXJlOiEwLHBhc3NpdmU6bH0pOmUuYWRkRXZlbnRMaXN0ZW5lcihuLHQsITApOnZvaWQgMCE9PWw/ZS5hZGRFdmVudExpc3RlbmVyKG4sdCx7cGFzc2l2ZTpsfSk6ZS5hZGRFdmVudExpc3RlbmVyKG4sdCwhMSl9ZnVuY3Rpb24gc24oZSxuLHQscixsKXt2YXIgYT1yO2lmKDA9PSgxJm4pJiYwPT0oMiZuKSYmbnVsbCE9PXIpZTpmb3IoOzspe2lmKG51bGw9PT1yKXJldHVybjt2YXIgbz1yLnRhZztpZigzPT09b3x8ND09PW8pe3ZhciB1PXIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm87aWYodT09PWwpYnJlYWs7aWYoND09PW8pZm9yKG89ci5yZXR1cm47bnVsbCE9PW87KXt2YXIgaT1vLnRhZztpZigoMz09PWl8fDQ9PT1pKSYmby5zdGF0ZU5vZGUuY29udGFpbmVySW5mbz09PWwpcmV0dXJuO289by5yZXR1cm59Zm9yKDtudWxsIT09dTspe2lmKG51bGw9PT0obz1lVyh1KSkpcmV0dXJuO2lmKDU9PT0oaT1vLnRhZyl8fDY9PT1pfHwyNj09PWl8fDI3PT09aSl7cj1hPW87Y29udGludWUgZX11PXUucGFyZW50Tm9kZX19cj1yLnJldHVybn1ueihmdW5jdGlvbigpe3ZhciByPWEsbD1uayh0KSxvPVtdO2U6e3ZhciB1PXRHLmdldChlKTtpZih2b2lkIDAhPT11KXt2YXIgaT1uUSxzPWU7c3dpdGNoKGUpe2Nhc2Uia2V5cHJlc3MiOmlmKDA9PT1uTyh0KSlicmVhayBlO2Nhc2Uia2V5ZG93biI6Y2FzZSJrZXl1cCI6aT1uODticmVhaztjYXNlImZvY3VzaW4iOnM9ImZvY3VzIixpPW5YO2JyZWFrO2Nhc2UiZm9jdXNvdXQiOnM9ImJsdXIiLGk9blg7YnJlYWs7Y2FzZSJiZWZvcmVibHVyIjpjYXNlImFmdGVyYmx1ciI6aT1uWDticmVhaztjYXNlImNsaWNrIjppZigyPT09dC5idXR0b24pYnJlYWsgZTtjYXNlImF1eGNsaWNrIjpjYXNlImRibGNsaWNrIjpjYXNlIm1vdXNlZG93biI6Y2FzZSJtb3VzZW1vdmUiOmNhc2UibW91c2V1cCI6Y2FzZSJtb3VzZW91dCI6Y2FzZSJtb3VzZW92ZXIiOmNhc2UiY29udGV4dG1lbnUiOmk9bks7YnJlYWs7Y2FzZSJkcmFnIjpjYXNlImRyYWdlbmQiOmNhc2UiZHJhZ2VudGVyIjpjYXNlImRyYWdleGl0IjpjYXNlImRyYWdsZWF2ZSI6Y2FzZSJkcmFnb3ZlciI6Y2FzZSJkcmFnc3RhcnQiOmNhc2UiZHJvcCI6aT1uWTticmVhaztjYXNlInRvdWNoY2FuY2VsIjpjYXNlInRvdWNoZW5kIjpjYXNlInRvdWNobW92ZSI6Y2FzZSJ0b3VjaHN0YXJ0IjppPW41O2JyZWFrO2Nhc2UgdFE6Y2FzZSB0QjpjYXNlIHRXOmk9bkc7YnJlYWs7Y2FzZSB0WDppPW45O2JyZWFrO2Nhc2Uic2Nyb2xsIjpjYXNlInNjcm9sbGVuZCI6aT1uVzticmVhaztjYXNlIndoZWVsIjppPW43O2JyZWFrO2Nhc2UiY29weSI6Y2FzZSJjdXQiOmNhc2UicGFzdGUiOmk9blo7YnJlYWs7Y2FzZSJnb3Rwb2ludGVyY2FwdHVyZSI6Y2FzZSJsb3N0cG9pbnRlcmNhcHR1cmUiOmNhc2UicG9pbnRlcmNhbmNlbCI6Y2FzZSJwb2ludGVyZG93biI6Y2FzZSJwb2ludGVybW92ZSI6Y2FzZSJwb2ludGVyb3V0IjpjYXNlInBvaW50ZXJvdmVyIjpjYXNlInBvaW50ZXJ1cCI6aT1uNjticmVhaztjYXNlInRvZ2dsZSI6Y2FzZSJiZWZvcmV0b2dnbGUiOmk9dGV9dmFyIGY9MCE9KDQmbiksZD0hZiYmKCJzY3JvbGwiPT09ZXx8InNjcm9sbGVuZCI9PT1lKSxwPWY/bnVsbCE9PXU/dSsiQ2FwdHVyZSI6bnVsbDp1O2Y9W107Zm9yKHZhciBtLGg9cjtudWxsIT09aDspe3ZhciBnPWg7aWYobT1nLnN0YXRlTm9kZSw1IT09KGc9Zy50YWcpJiYyNiE9PWcmJjI3IT09Z3x8bnVsbD09PW18fG51bGw9PT1wfHxudWxsIT0oZz1uQyhoLHApKSYmZi5wdXNoKHN0KGgsZyxtKSksZClicmVhaztoPWgucmV0dXJufTA8Zi5sZW5ndGgmJih1PW5ldyBpKHUscyxudWxsLHQsbCksby5wdXNoKHtldmVudDp1LGxpc3RlbmVyczpmfSkpfX1pZigwPT0oNyZuKSl7aWYoKHU9Im1vdXNlb3ZlciI9PT1lfHwicG9pbnRlcm92ZXIiPT09ZSxpPSJtb3VzZW91dCI9PT1lfHwicG9pbnRlcm91dCI9PT1lLCEodSYmdCE9PW5iJiYocz10LnJlbGF0ZWRUYXJnZXR8fHQuZnJvbUVsZW1lbnQpJiYoZVcocyl8fHNbZVVdKSkpJiYoaXx8dSkmJih1PWwud2luZG93PT09bD9sOih1PWwub3duZXJEb2N1bWVudCk/dS5kZWZhdWx0Vmlld3x8dS5wYXJlbnRXaW5kb3c6d2luZG93LGk/KHM9dC5yZWxhdGVkVGFyZ2V0fHx0LnRvRWxlbWVudCxpPXIsbnVsbCE9PShzPXM/ZVcocyk6bnVsbCkmJihkPWMocyksZj1zLnRhZyxzIT09ZHx8NSE9PWYmJjI3IT09ZiYmNiE9PWYpJiYocz1udWxsKSk6KGk9bnVsbCxzPXIpLGkhPT1zKSl7aWYoZj1uSyxnPSJvbk1vdXNlTGVhdmUiLHA9Im9uTW91c2VFbnRlciIsaD0ibW91c2UiLCgicG9pbnRlcm91dCI9PT1lfHwicG9pbnRlcm92ZXIiPT09ZSkmJihmPW42LGc9Im9uUG9pbnRlckxlYXZlIixwPSJvblBvaW50ZXJFbnRlciIsaD0icG9pbnRlciIpLGQ9bnVsbD09aT91OmVLKGkpLG09bnVsbD09cz91OmVLKHMpLCh1PW5ldyBmKGcsaCsibGVhdmUiLGksdCxsKSkudGFyZ2V0PWQsdS5yZWxhdGVkVGFyZ2V0PW0sZz1udWxsLGVXKGwpPT09ciYmKChmPW5ldyBmKHAsaCsiZW50ZXIiLHMsdCxsKSkudGFyZ2V0PW0sZi5yZWxhdGVkVGFyZ2V0PWQsZz1mKSxkPWcsaSYmcyluOntmb3IoZj1zbCxwPWksaD1zLG09MCxnPXA7ZztnPWYoZykpbSsrO2c9MDtmb3IodmFyIHksdj1oO3Y7dj1mKHYpKWcrKztmb3IoOzA8bS1nOylwPWYocCksbS0tO2Zvcig7MDxnLW07KWg9ZihoKSxnLS07Zm9yKDttLS07KXtpZihwPT09aHx8bnVsbCE9PWgmJnA9PT1oLmFsdGVybmF0ZSl7Zj1wO2JyZWFrIG59cD1mKHApLGg9ZihoKX1mPW51bGx9ZWxzZSBmPW51bGw7bnVsbCE9PWkmJnNhKG8sdSxpLGYsITEpLG51bGwhPT1zJiZudWxsIT09ZCYmc2EobyxkLHMsZiwhMCl9ZTp7aWYoInNlbGVjdCI9PT0oaT0odT1yP2VLKHIpOndpbmRvdykubm9kZU5hbWUmJnUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl8fCJpbnB1dCI9PT1pJiYiZmlsZSI9PT11LnR5cGUpdmFyIGI9dHk7ZWxzZSBpZih0Zih1KSlpZih0diliPXRDO2Vsc2V7Yj10RTt2YXIgaz10eH1lbHNlKGk9dS5ub2RlTmFtZSkmJiJpbnB1dCI9PT1pLnRvTG93ZXJDYXNlKCkmJigiY2hlY2tib3giPT09dS50eXBlfHwicmFkaW8iPT09dS50eXBlKT9iPXR6OnImJm5tKHIuZWxlbWVudFR5cGUpJiYoYj10eSk7aWYoYiYmKGI9YihlLHIpKSl7dGQobyxiLHQsbCk7YnJlYWsgZX1rJiZrKGUsdSxyKSwiZm9jdXNvdXQiPT09ZSYmciYmIm51bWJlciI9PT11LnR5cGUmJm51bGwhPXIubWVtb2l6ZWRQcm9wcy52YWx1ZSYmbm8odSwibnVtYmVyIix1LnZhbHVlKX1zd2l0Y2goaz1yP2VLKHIpOndpbmRvdyxlKXtjYXNlImZvY3VzaW4iOih0ZihrKXx8InRydWUiPT09ay5jb250ZW50RWRpdGFibGUpJiYodE89ayx0TT1yLHRBPW51bGwpO2JyZWFrO2Nhc2UiZm9jdXNvdXQiOnRBPXRNPXRPPW51bGw7YnJlYWs7Y2FzZSJtb3VzZWRvd24iOnRSPSEwO2JyZWFrO2Nhc2UiY29udGV4dG1lbnUiOmNhc2UibW91c2V1cCI6Y2FzZSJkcmFnZW5kIjp0Uj0hMSx0SShvLHQsbCk7YnJlYWs7Y2FzZSJzZWxlY3Rpb25jaGFuZ2UiOmlmKHREKWJyZWFrO2Nhc2Uia2V5ZG93biI6Y2FzZSJrZXl1cCI6dEkobyx0LGwpfWlmKHR0KW46e3N3aXRjaChlKXtjYXNlImNvbXBvc2l0aW9uc3RhcnQiOnZhciB3PSJvbkNvbXBvc2l0aW9uU3RhcnQiO2JyZWFrIG47Y2FzZSJjb21wb3NpdGlvbmVuZCI6dz0ib25Db21wb3NpdGlvbkVuZCI7YnJlYWsgbjtjYXNlImNvbXBvc2l0aW9udXBkYXRlIjp3PSJvbkNvbXBvc2l0aW9uVXBkYXRlIjticmVhayBufXc9dm9pZCAwfWVsc2UgdHM/dHUoZSx0KSYmKHc9Im9uQ29tcG9zaXRpb25FbmQiKToia2V5ZG93biI9PT1lJiYyMjk9PT10LmtleUNvZGUmJih3PSJvbkNvbXBvc2l0aW9uU3RhcnQiKTt3JiYodGEmJiJrbyIhPT10LmxvY2FsZSYmKHRzfHwib25Db21wb3NpdGlvblN0YXJ0IiE9PXc/Im9uQ29tcG9zaXRpb25FbmQiPT09dyYmdHMmJih5PW5EKCkpOihuXz0idmFsdWUiaW4oblQ9bCk/blQudmFsdWU6blQudGV4dENvbnRlbnQsdHM9ITApKSwwPChrPXNyKHIsdykpLmxlbmd0aCYmKHc9bmV3IG5KKHcsZSxudWxsLHQsbCksby5wdXNoKHtldmVudDp3LGxpc3RlbmVyczprfSkseT93LmRhdGE9eTpudWxsIT09KHk9dGkodCkpJiYody5kYXRhPXkpKSksKHk9dGw/ZnVuY3Rpb24oZSxuKXtzd2l0Y2goZSl7Y2FzZSJjb21wb3NpdGlvbmVuZCI6cmV0dXJuIHRpKG4pO2Nhc2Uia2V5cHJlc3MiOmlmKDMyIT09bi53aGljaClyZXR1cm4gbnVsbDtyZXR1cm4gdG89ITAsIiAiO2Nhc2UidGV4dElucHV0IjpyZXR1cm4iICI9PT0oZT1uLmRhdGEpJiZ0bz9udWxsOmU7ZGVmYXVsdDpyZXR1cm4gbnVsbH19KGUsdCk6ZnVuY3Rpb24oZSxuKXtpZih0cylyZXR1cm4iY29tcG9zaXRpb25lbmQiPT09ZXx8IXR0JiZ0dShlLG4pPyhlPW5EKCksbkY9bl89blQ9bnVsbCx0cz0hMSxlKTpudWxsO3N3aXRjaChlKXtjYXNlInBhc3RlIjpkZWZhdWx0OnJldHVybiBudWxsO2Nhc2Uia2V5cHJlc3MiOmlmKCEobi5jdHJsS2V5fHxuLmFsdEtleXx8bi5tZXRhS2V5KXx8bi5jdHJsS2V5JiZuLmFsdEtleSl7aWYobi5jaGFyJiYxPG4uY2hhci5sZW5ndGgpcmV0dXJuIG4uY2hhcjtpZihuLndoaWNoKXJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKG4ud2hpY2gpfXJldHVybiBudWxsO2Nhc2UiY29tcG9zaXRpb25lbmQiOnJldHVybiB0YSYmImtvIiE9PW4ubG9jYWxlP251bGw6bi5kYXRhfX0oZSx0KSkmJjA8KHc9c3Iociwib25CZWZvcmVJbnB1dCIpKS5sZW5ndGgmJihrPW5ldyBuSigib25CZWZvcmVJbnB1dCIsImJlZm9yZWlucHV0IixudWxsLHQsbCksby5wdXNoKHtldmVudDprLGxpc3RlbmVyczp3fSksay5kYXRhPXkpO3ZhciBTPWU7aWYoInN1Ym1pdCI9PT1TJiZyJiZyLnN0YXRlTm9kZT09PWwpe3ZhciB4PWlKKChsW2VJXXx8bnVsbCkuYWN0aW9uKSxFPXQuc3VibWl0dGVyO0UmJm51bGwhPT0oUz0oUz1FW2VJXXx8bnVsbCk/aUooUy5mb3JtQWN0aW9uKTpFLmdldEF0dHJpYnV0ZSgiZm9ybUFjdGlvbiIpKSYmKHg9UyxFPW51bGwpO3ZhciB6PW5ldyBuUSgiYWN0aW9uIiwiYWN0aW9uIixudWxsLHQsbCk7by5wdXNoKHtldmVudDp6LGxpc3RlbmVyczpbe2luc3RhbmNlOm51bGwsbGlzdGVuZXI6ZnVuY3Rpb24oKXtpZih0LmRlZmF1bHRQcmV2ZW50ZWQpe2lmKDAhPT1pUSl7dmFyIGU9RT9pMChsLEUpOm5ldyBGb3JtRGF0YShsKTthWihyLHtwZW5kaW5nOiEwLGRhdGE6ZSxtZXRob2Q6bC5tZXRob2QsYWN0aW9uOnh9LG51bGwsZSl9fWVsc2UiZnVuY3Rpb24iPT10eXBlb2YgeCYmKHoucHJldmVudERlZmF1bHQoKSxhWihyLHtwZW5kaW5nOiEwLGRhdGE6ZT1FP2kwKGwsRSk6bmV3IEZvcm1EYXRhKGwpLG1ldGhvZDpsLm1ldGhvZCxhY3Rpb246eH0seCxlKSl9LGN1cnJlbnRUYXJnZXQ6bH1dfSl9fWk4KG8sbil9KX1mdW5jdGlvbiBzdChlLG4sdCl7cmV0dXJue2luc3RhbmNlOmUsbGlzdGVuZXI6bixjdXJyZW50VGFyZ2V0OnR9fWZ1bmN0aW9uIHNyKGUsbil7Zm9yKHZhciB0PW4rIkNhcHR1cmUiLHI9W107bnVsbCE9PWU7KXt2YXIgbD1lLGE9bC5zdGF0ZU5vZGU7aWYoNSE9PShsPWwudGFnKSYmMjYhPT1sJiYyNyE9PWx8fG51bGw9PT1hfHwobnVsbCE9KGw9bkMoZSx0KSkmJnIudW5zaGlmdChzdChlLGwsYSkpLG51bGwhPShsPW5DKGUsbikpJiZyLnB1c2goc3QoZSxsLGEpKSksMz09PWUudGFnKXJldHVybiByO2U9ZS5yZXR1cm59cmV0dXJuW119ZnVuY3Rpb24gc2woZSl7aWYobnVsbD09PWUpcmV0dXJuIG51bGw7ZG8gZT1lLnJldHVybjt3aGlsZShlJiY1IT09ZS50YWcmJjI3IT09ZS50YWcpO3JldHVybiBlfHxudWxsfWZ1bmN0aW9uIHNhKGUsbix0LHIsbCl7Zm9yKHZhciBhPW4uX3JlYWN0TmFtZSxvPVtdO251bGwhPT10JiZ0IT09cjspe3ZhciB1PXQsaT11LmFsdGVybmF0ZSxzPXUuc3RhdGVOb2RlO2lmKHU9dS50YWcsbnVsbCE9PWkmJmk9PT1yKWJyZWFrOzUhPT11JiYyNiE9PXUmJjI3IT09dXx8bnVsbD09PXN8fChpPXMsbD9udWxsIT0ocz1uQyh0LGEpKSYmby51bnNoaWZ0KHN0KHQscyxpKSk6bHx8bnVsbCE9KHM9bkModCxhKSkmJm8ucHVzaChzdCh0LHMsaSkpKSx0PXQucmV0dXJufTAhPT1vLmxlbmd0aCYmZS5wdXNoKHtldmVudDpuLGxpc3RlbmVyczpvfSl9dmFyIHNvPS9cclxuPy9nLHN1PS9cdTAwMDB8XHVGRkZEL2c7ZnVuY3Rpb24gc2koZSl7cmV0dXJuKCJzdHJpbmciPT10eXBlb2YgZT9lOiIiK2UpLnJlcGxhY2Uoc28sIlxuIikucmVwbGFjZShzdSwiIil9ZnVuY3Rpb24gc3MoZSxuKXtyZXR1cm4gbj1zaShuKSxzaShlKT09PW59ZnVuY3Rpb24gc2MoZSxuLHQscixsLGEpe3N3aXRjaCh0KXtjYXNlImNoaWxkcmVuIjoic3RyaW5nIj09dHlwZW9mIHI/ImJvZHkiPT09bnx8InRleHRhcmVhIj09PW4mJiIiPT09cnx8bmMoZSxyKTooIm51bWJlciI9PXR5cGVvZiByfHwiYmlnaW50Ij09dHlwZW9mIHIpJiYiYm9keSIhPT1uJiZuYyhlLCIiK3IpO2JyZWFrO2Nhc2UiY2xhc3NOYW1lIjplOChlLCJjbGFzcyIscik7YnJlYWs7Y2FzZSJ0YWJJbmRleCI6ZTgoZSwidGFiaW5kZXgiLHIpO2JyZWFrO2Nhc2UiZGlyIjpjYXNlInJvbGUiOmNhc2Uidmlld0JveCI6Y2FzZSJ3aWR0aCI6Y2FzZSJoZWlnaHQiOmU4KGUsdCxyKTticmVhaztjYXNlInN0eWxlIjpucChlLHIsYSk7YnJlYWs7Y2FzZSJkYXRhIjppZigib2JqZWN0IiE9PW4pe2U4KGUsImRhdGEiLHIpO2JyZWFrfWNhc2Uic3JjIjpjYXNlImhyZWYiOmlmKCIiPT09ciYmKCJhIiE9PW58fCJocmVmIiE9PXQpfHxudWxsPT1yfHwiZnVuY3Rpb24iPT10eXBlb2Ygcnx8InN5bWJvbCI9PXR5cGVvZiByfHwiYm9vbGVhbiI9PXR5cGVvZiByKXtlLnJlbW92ZUF0dHJpYnV0ZSh0KTticmVha31yPW55KCIiK3IpLGUuc2V0QXR0cmlidXRlKHQscik7YnJlYWs7Y2FzZSJhY3Rpb24iOmNhc2UiZm9ybUFjdGlvbiI6aWYoImZ1bmN0aW9uIj09dHlwZW9mIHIpe2Uuc2V0QXR0cmlidXRlKHQsImphdmFzY3JpcHQ6dGhyb3cgbmV3IEVycm9yKCdBIFJlYWN0IGZvcm0gd2FzIHVuZXhwZWN0ZWRseSBzdWJtaXR0ZWQuIElmIHlvdSBjYWxsZWQgZm9ybS5zdWJtaXQoKSBtYW51YWxseSwgY29uc2lkZXIgdXNpbmcgZm9ybS5yZXF1ZXN0U3VibWl0KCkgaW5zdGVhZC4gSWYgeW91XFwncmUgdHJ5aW5nIHRvIHVzZSBldmVudC5zdG9wUHJvcGFnYXRpb24oKSBpbiBhIHN1Ym1pdCBldmVudCBoYW5kbGVyLCBjb25zaWRlciBhbHNvIGNhbGxpbmcgZXZlbnQucHJldmVudERlZmF1bHQoKS4nKSIpO2JyZWFrfWlmKCJmdW5jdGlvbiI9PXR5cGVvZiBhJiYoImZvcm1BY3Rpb24iPT09dD8oImlucHV0IiE9PW4mJnNjKGUsbiwibmFtZSIsbC5uYW1lLGwsbnVsbCksc2MoZSxuLCJmb3JtRW5jVHlwZSIsbC5mb3JtRW5jVHlwZSxsLG51bGwpLHNjKGUsbiwiZm9ybU1ldGhvZCIsbC5mb3JtTWV0aG9kLGwsbnVsbCksc2MoZSxuLCJmb3JtVGFyZ2V0IixsLmZvcm1UYXJnZXQsbCxudWxsKSk6KHNjKGUsbiwiZW5jVHlwZSIsbC5lbmNUeXBlLGwsbnVsbCksc2MoZSxuLCJtZXRob2QiLGwubWV0aG9kLGwsbnVsbCksc2MoZSxuLCJ0YXJnZXQiLGwudGFyZ2V0LGwsbnVsbCkpKSxudWxsPT1yfHwic3ltYm9sIj09dHlwZW9mIHJ8fCJib29sZWFuIj09dHlwZW9mIHIpe2UucmVtb3ZlQXR0cmlidXRlKHQpO2JyZWFrfXI9bnkoIiIrciksZS5zZXRBdHRyaWJ1dGUodCxyKTticmVhaztjYXNlIm9uQ2xpY2siOm51bGwhPXImJihlLm9uY2xpY2s9bnYpO2JyZWFrO2Nhc2Uib25TY3JvbGwiOm51bGwhPXImJmk2KCJzY3JvbGwiLGUpO2JyZWFrO2Nhc2Uib25TY3JvbGxFbmQiOm51bGwhPXImJmk2KCJzY3JvbGxlbmQiLGUpO2JyZWFrO2Nhc2UiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiOmlmKG51bGwhPXIpe2lmKCJvYmplY3QiIT10eXBlb2Ygcnx8ISgiX19odG1sImluIHIpKXRocm93IEVycm9yKGkoNjEpKTtpZihudWxsIT0odD1yLl9faHRtbCkpe2lmKG51bGwhPWwuY2hpbGRyZW4pdGhyb3cgRXJyb3IoaSg2MCkpO2UuaW5uZXJIVE1MPXR9fWJyZWFrO2Nhc2UibXVsdGlwbGUiOmUubXVsdGlwbGU9ciYmImZ1bmN0aW9uIiE9dHlwZW9mIHImJiJzeW1ib2wiIT10eXBlb2YgcjticmVhaztjYXNlIm11dGVkIjplLm11dGVkPXImJiJmdW5jdGlvbiIhPXR5cGVvZiByJiYic3ltYm9sIiE9dHlwZW9mIHI7YnJlYWs7Y2FzZSJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmciOmNhc2Uic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nIjpjYXNlImRlZmF1bHRWYWx1ZSI6Y2FzZSJkZWZhdWx0Q2hlY2tlZCI6Y2FzZSJpbm5lckhUTUwiOmNhc2UicmVmIjpjYXNlImF1dG9Gb2N1cyI6Y2FzZSJpbm5lclRleHQiOmNhc2UidGV4dENvbnRlbnQiOmJyZWFrO2Nhc2UieGxpbmtIcmVmIjppZihudWxsPT1yfHwiZnVuY3Rpb24iPT10eXBlb2Ygcnx8ImJvb2xlYW4iPT10eXBlb2Ygcnx8InN5bWJvbCI9PXR5cGVvZiByKXtlLnJlbW92ZUF0dHJpYnV0ZSgieGxpbms6aHJlZiIpO2JyZWFrfXQ9bnkoIiIrciksZS5zZXRBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIsInhsaW5rOmhyZWYiLHQpO2JyZWFrO2Nhc2UiY29udGVudEVkaXRhYmxlIjpjYXNlInNwZWxsQ2hlY2siOmNhc2UiZHJhZ2dhYmxlIjpjYXNlInZhbHVlIjpjYXNlImF1dG9SZXZlcnNlIjpjYXNlImV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQiOmNhc2UiZm9jdXNhYmxlIjpjYXNlInByZXNlcnZlQWxwaGEiOm51bGwhPXImJiJmdW5jdGlvbiIhPXR5cGVvZiByJiYic3ltYm9sIiE9dHlwZW9mIHI/ZS5zZXRBdHRyaWJ1dGUodCwiIityKTplLnJlbW92ZUF0dHJpYnV0ZSh0KTticmVhaztjYXNlImluZXJ0IjpjYXNlImFsbG93RnVsbFNjcmVlbiI6Y2FzZSJhc3luYyI6Y2FzZSJhdXRvUGxheSI6Y2FzZSJjb250cm9scyI6Y2FzZSJkZWZhdWx0IjpjYXNlImRlZmVyIjpjYXNlImRpc2FibGVkIjpjYXNlImRpc2FibGVQaWN0dXJlSW5QaWN0dXJlIjpjYXNlImRpc2FibGVSZW1vdGVQbGF5YmFjayI6Y2FzZSJmb3JtTm9WYWxpZGF0ZSI6Y2FzZSJoaWRkZW4iOmNhc2UibG9vcCI6Y2FzZSJub01vZHVsZSI6Y2FzZSJub1ZhbGlkYXRlIjpjYXNlIm9wZW4iOmNhc2UicGxheXNJbmxpbmUiOmNhc2UicmVhZE9ubHkiOmNhc2UicmVxdWlyZWQiOmNhc2UicmV2ZXJzZWQiOmNhc2Uic2NvcGVkIjpjYXNlInNlYW1sZXNzIjpjYXNlIml0ZW1TY29wZSI6ciYmImZ1bmN0aW9uIiE9dHlwZW9mIHImJiJzeW1ib2wiIT10eXBlb2Ygcj9lLnNldEF0dHJpYnV0ZSh0LCIiKTplLnJlbW92ZUF0dHJpYnV0ZSh0KTticmVhaztjYXNlImNhcHR1cmUiOmNhc2UiZG93bmxvYWQiOiEwPT09cj9lLnNldEF0dHJpYnV0ZSh0LCIiKTohMSE9PXImJm51bGwhPXImJiJmdW5jdGlvbiIhPXR5cGVvZiByJiYic3ltYm9sIiE9dHlwZW9mIHI/ZS5zZXRBdHRyaWJ1dGUodCxyKTplLnJlbW92ZUF0dHJpYnV0ZSh0KTticmVhaztjYXNlImNvbHMiOmNhc2Uicm93cyI6Y2FzZSJzaXplIjpjYXNlInNwYW4iOm51bGwhPXImJiJmdW5jdGlvbiIhPXR5cGVvZiByJiYic3ltYm9sIiE9dHlwZW9mIHImJiFpc05hTihyKSYmMTw9cj9lLnNldEF0dHJpYnV0ZSh0LHIpOmUucmVtb3ZlQXR0cmlidXRlKHQpO2JyZWFrO2Nhc2Uicm93U3BhbiI6Y2FzZSJzdGFydCI6bnVsbD09cnx8ImZ1bmN0aW9uIj09dHlwZW9mIHJ8fCJzeW1ib2wiPT10eXBlb2Ygcnx8aXNOYU4ocik/ZS5yZW1vdmVBdHRyaWJ1dGUodCk6ZS5zZXRBdHRyaWJ1dGUodCxyKTticmVhaztjYXNlInBvcG92ZXIiOmk2KCJiZWZvcmV0b2dnbGUiLGUpLGk2KCJ0b2dnbGUiLGUpLGU0KGUsInBvcG92ZXIiLHIpO2JyZWFrO2Nhc2UieGxpbmtBY3R1YXRlIjplNihlLCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwieGxpbms6YWN0dWF0ZSIscik7YnJlYWs7Y2FzZSJ4bGlua0FyY3JvbGUiOmU2KGUsImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLCJ4bGluazphcmNyb2xlIixyKTticmVhaztjYXNlInhsaW5rUm9sZSI6ZTYoZSwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIsInhsaW5rOnJvbGUiLHIpO2JyZWFrO2Nhc2UieGxpbmtTaG93IjplNihlLCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwieGxpbms6c2hvdyIscik7YnJlYWs7Y2FzZSJ4bGlua1RpdGxlIjplNihlLCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwieGxpbms6dGl0bGUiLHIpO2JyZWFrO2Nhc2UieGxpbmtUeXBlIjplNihlLCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiwieGxpbms6dHlwZSIscik7YnJlYWs7Y2FzZSJ4bWxCYXNlIjplNihlLCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLCJ4bWw6YmFzZSIscik7YnJlYWs7Y2FzZSJ4bWxMYW5nIjplNihlLCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLCJ4bWw6bGFuZyIscik7YnJlYWs7Y2FzZSJ4bWxTcGFjZSI6ZTYoZSwiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiwieG1sOnNwYWNlIixyKTticmVhaztjYXNlImlzIjplNChlLCJpcyIscik7YnJlYWs7ZGVmYXVsdDoyPHQubGVuZ3RoJiYoIm8iPT09dFswXXx8Ik8iPT09dFswXSkmJigibiI9PT10WzFdfHwiTiI9PT10WzFdKXx8ZTQoZSx0PW5oLmdldCh0KXx8dCxyKX19ZnVuY3Rpb24gc2YoZSxuLHQscixsLGEpe3N3aXRjaCh0KXtjYXNlInN0eWxlIjpucChlLHIsYSk7YnJlYWs7Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6aWYobnVsbCE9cil7aWYoIm9iamVjdCIhPXR5cGVvZiByfHwhKCJfX2h0bWwiaW4gcikpdGhyb3cgRXJyb3IoaSg2MSkpO2lmKG51bGwhPSh0PXIuX19odG1sKSl7aWYobnVsbCE9bC5jaGlsZHJlbil0aHJvdyBFcnJvcihpKDYwKSk7ZS5pbm5lckhUTUw9dH19YnJlYWs7Y2FzZSJjaGlsZHJlbiI6InN0cmluZyI9PXR5cGVvZiByP25jKGUscik6KCJudW1iZXIiPT10eXBlb2Ygcnx8ImJpZ2ludCI9PXR5cGVvZiByKSYmbmMoZSwiIityKTticmVhaztjYXNlIm9uU2Nyb2xsIjpudWxsIT1yJiZpNigic2Nyb2xsIixlKTticmVhaztjYXNlIm9uU2Nyb2xsRW5kIjpudWxsIT1yJiZpNigic2Nyb2xsZW5kIixlKTticmVhaztjYXNlIm9uQ2xpY2siOm51bGwhPXImJihlLm9uY2xpY2s9bnYpO2JyZWFrO2Nhc2Uic3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIjpjYXNlInN1cHByZXNzSHlkcmF0aW9uV2FybmluZyI6Y2FzZSJpbm5lckhUTUwiOmNhc2UicmVmIjpjYXNlImlubmVyVGV4dCI6Y2FzZSJ0ZXh0Q29udGVudCI6YnJlYWs7ZGVmYXVsdDppZighZVouaGFzT3duUHJvcGVydHkodCkpZTp7aWYoIm8iPT09dFswXSYmIm4iPT09dFsxXSYmKGw9dC5lbmRzV2l0aCgiQ2FwdHVyZSIpLG49dC5zbGljZSgyLGw/dC5sZW5ndGgtNzp2b2lkIDApLCJmdW5jdGlvbiI9PXR5cGVvZihhPW51bGwhPShhPWVbZUldfHxudWxsKT9hW3RdOm51bGwpJiZlLnJlbW92ZUV2ZW50TGlzdGVuZXIobixhLGwpLCJmdW5jdGlvbiI9PXR5cGVvZiByKSl7ImZ1bmN0aW9uIiE9dHlwZW9mIGEmJm51bGwhPT1hJiYodCBpbiBlP2VbdF09bnVsbDplLmhhc0F0dHJpYnV0ZSh0KSYmZS5yZW1vdmVBdHRyaWJ1dGUodCkpLGUuYWRkRXZlbnRMaXN0ZW5lcihuLHIsbCk7YnJlYWsgZX10IGluIGU/ZVt0XT1yOiEwPT09cj9lLnNldEF0dHJpYnV0ZSh0LCIiKTplNChlLHQscil9fX1mdW5jdGlvbiBzZChlLG4sdCl7c3dpdGNoKG4pe2Nhc2UiZGl2IjpjYXNlInNwYW4iOmNhc2Uic3ZnIjpjYXNlInBhdGgiOmNhc2UiYSI6Y2FzZSJnIjpjYXNlInAiOmNhc2UibGkiOmJyZWFrO2Nhc2UiaW1nIjppNigiZXJyb3IiLGUpLGk2KCJsb2FkIixlKTt2YXIgcixsPSExLGE9ITE7Zm9yKHIgaW4gdClpZih0Lmhhc093blByb3BlcnR5KHIpKXt2YXIgbz10W3JdO2lmKG51bGwhPW8pc3dpdGNoKHIpe2Nhc2Uic3JjIjpsPSEwO2JyZWFrO2Nhc2Uic3JjU2V0IjphPSEwO2JyZWFrO2Nhc2UiY2hpbGRyZW4iOmNhc2UiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiOnRocm93IEVycm9yKGkoMTM3LG4pKTtkZWZhdWx0OnNjKGUsbixyLG8sdCxudWxsKX19YSYmc2MoZSxuLCJzcmNTZXQiLHQuc3JjU2V0LHQsbnVsbCksbCYmc2MoZSxuLCJzcmMiLHQuc3JjLHQsbnVsbCk7cmV0dXJuO2Nhc2UiaW5wdXQiOmk2KCJpbnZhbGlkIixlKTt2YXIgdT1yPW89YT1udWxsLHM9bnVsbCxjPW51bGw7Zm9yKGwgaW4gdClpZih0Lmhhc093blByb3BlcnR5KGwpKXt2YXIgZj10W2xdO2lmKG51bGwhPWYpc3dpdGNoKGwpe2Nhc2UibmFtZSI6YT1mO2JyZWFrO2Nhc2UidHlwZSI6bz1mO2JyZWFrO2Nhc2UiY2hlY2tlZCI6cz1mO2JyZWFrO2Nhc2UiZGVmYXVsdENoZWNrZWQiOmM9ZjticmVhaztjYXNlInZhbHVlIjpyPWY7YnJlYWs7Y2FzZSJkZWZhdWx0VmFsdWUiOnU9ZjticmVhaztjYXNlImNoaWxkcmVuIjpjYXNlImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIjppZihudWxsIT1mKXRocm93IEVycm9yKGkoMTM3LG4pKTticmVhaztkZWZhdWx0OnNjKGUsbixsLGYsdCxudWxsKX19bmEoZSxyLHUscyxjLG8sYSwhMSk7cmV0dXJuO2Nhc2Uic2VsZWN0Ijpmb3IoYSBpbiBpNigiaW52YWxpZCIsZSksbD1vPXI9bnVsbCx0KWlmKHQuaGFzT3duUHJvcGVydHkoYSkmJm51bGwhPSh1PXRbYV0pKXN3aXRjaChhKXtjYXNlInZhbHVlIjpyPXU7YnJlYWs7Y2FzZSJkZWZhdWx0VmFsdWUiOm89dTticmVhaztjYXNlIm11bHRpcGxlIjpsPXU7ZGVmYXVsdDpzYyhlLG4sYSx1LHQsbnVsbCl9bj1yLHQ9byxlLm11bHRpcGxlPSEhbCxudWxsIT1uP251KGUsISFsLG4sITEpOm51bGwhPXQmJm51KGUsISFsLHQsITApO3JldHVybjtjYXNlInRleHRhcmVhIjpmb3IobyBpbiBpNigiaW52YWxpZCIsZSkscj1hPWw9bnVsbCx0KWlmKHQuaGFzT3duUHJvcGVydHkobykmJm51bGwhPSh1PXRbb10pKXN3aXRjaChvKXtjYXNlInZhbHVlIjpsPXU7YnJlYWs7Y2FzZSJkZWZhdWx0VmFsdWUiOmE9dTticmVhaztjYXNlImNoaWxkcmVuIjpyPXU7YnJlYWs7Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6aWYobnVsbCE9dSl0aHJvdyBFcnJvcihpKDkxKSk7YnJlYWs7ZGVmYXVsdDpzYyhlLG4sbyx1LHQsbnVsbCl9bnMoZSxsLGEscik7cmV0dXJuO2Nhc2Uib3B0aW9uIjpmb3IocyBpbiB0KXQuaGFzT3duUHJvcGVydHkocykmJm51bGwhPShsPXRbc10pJiYoInNlbGVjdGVkIj09PXM/ZS5zZWxlY3RlZD1sJiYiZnVuY3Rpb24iIT10eXBlb2YgbCYmInN5bWJvbCIhPXR5cGVvZiBsOnNjKGUsbixzLGwsdCxudWxsKSk7cmV0dXJuO2Nhc2UiZGlhbG9nIjppNigiYmVmb3JldG9nZ2xlIixlKSxpNigidG9nZ2xlIixlKSxpNigiY2FuY2VsIixlKSxpNigiY2xvc2UiLGUpO2JyZWFrO2Nhc2UiaWZyYW1lIjpjYXNlIm9iamVjdCI6aTYoImxvYWQiLGUpO2JyZWFrO2Nhc2UidmlkZW8iOmNhc2UiYXVkaW8iOmZvcihsPTA7bDxpMy5sZW5ndGg7bCsrKWk2KGkzW2xdLGUpO2JyZWFrO2Nhc2UiaW1hZ2UiOmk2KCJlcnJvciIsZSksaTYoImxvYWQiLGUpO2JyZWFrO2Nhc2UiZGV0YWlscyI6aTYoInRvZ2dsZSIsZSk7YnJlYWs7Y2FzZSJlbWJlZCI6Y2FzZSJzb3VyY2UiOmNhc2UibGluayI6aTYoImVycm9yIixlKSxpNigibG9hZCIsZSk7Y2FzZSJhcmVhIjpjYXNlImJhc2UiOmNhc2UiYnIiOmNhc2UiY29sIjpjYXNlImhyIjpjYXNlImtleWdlbiI6Y2FzZSJtZXRhIjpjYXNlInBhcmFtIjpjYXNlInRyYWNrIjpjYXNlIndiciI6Y2FzZSJtZW51aXRlbSI6Zm9yKGMgaW4gdClpZih0Lmhhc093blByb3BlcnR5KGMpJiZudWxsIT0obD10W2NdKSlzd2l0Y2goYyl7Y2FzZSJjaGlsZHJlbiI6Y2FzZSJkYW5nZXJvdXNseVNldElubmVySFRNTCI6dGhyb3cgRXJyb3IoaSgxMzcsbikpO2RlZmF1bHQ6c2MoZSxuLGMsbCx0LG51bGwpfXJldHVybjtkZWZhdWx0OmlmKG5tKG4pKXtmb3IoZiBpbiB0KXQuaGFzT3duUHJvcGVydHkoZikmJnZvaWQgMCE9PShsPXRbZl0pJiZzZihlLG4sZixsLHQsdm9pZCAwKTtyZXR1cm59fWZvcih1IGluIHQpdC5oYXNPd25Qcm9wZXJ0eSh1KSYmbnVsbCE9KGw9dFt1XSkmJnNjKGUsbix1LGwsdCxudWxsKX12YXIgc3A9bnVsbCxzbT1udWxsO2Z1bmN0aW9uIHNoKGUpe3JldHVybiA5PT09ZS5ub2RlVHlwZT9lOmUub3duZXJEb2N1bWVudH1mdW5jdGlvbiBzZyhlKXtzd2l0Y2goZSl7Y2FzZSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI6cmV0dXJuIDE7Y2FzZSJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIjpyZXR1cm4gMjtkZWZhdWx0OnJldHVybiAwfX1mdW5jdGlvbiBzeShlLG4pe2lmKDA9PT1lKXN3aXRjaChuKXtjYXNlInN2ZyI6cmV0dXJuIDE7Y2FzZSJtYXRoIjpyZXR1cm4gMjtkZWZhdWx0OnJldHVybiAwfXJldHVybiAxPT09ZSYmImZvcmVpZ25PYmplY3QiPT09bj8wOmV9ZnVuY3Rpb24gc3YoZSxuKXtyZXR1cm4idGV4dGFyZWEiPT09ZXx8Im5vc2NyaXB0Ij09PWV8fCJzdHJpbmciPT10eXBlb2Ygbi5jaGlsZHJlbnx8Im51bWJlciI9PXR5cGVvZiBuLmNoaWxkcmVufHwiYmlnaW50Ij09dHlwZW9mIG4uY2hpbGRyZW58fCJvYmplY3QiPT10eXBlb2Ygbi5kYW5nZXJvdXNseVNldElubmVySFRNTCYmbnVsbCE9PW4uZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJm51bGwhPW4uZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sfXZhciBzYj1udWxsLHNrPSJmdW5jdGlvbiI9PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6dm9pZCAwLHN3PSJmdW5jdGlvbiI9PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0OnZvaWQgMCxzUz0iZnVuY3Rpb24iPT10eXBlb2YgUHJvbWlzZT9Qcm9taXNlOnZvaWQgMCxzeD0iZnVuY3Rpb24iPT10eXBlb2YgcXVldWVNaWNyb3Rhc2s/cXVldWVNaWNyb3Rhc2s6dm9pZCAwIT09c1M/ZnVuY3Rpb24oZSl7cmV0dXJuIHNTLnJlc29sdmUobnVsbCkudGhlbihlKS5jYXRjaChzRSl9OnNrO2Z1bmN0aW9uIHNFKGUpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0aHJvdyBlfSl9ZnVuY3Rpb24gc3ooZSl7cmV0dXJuImhlYWQiPT09ZX1mdW5jdGlvbiBzQyhlLG4pe3ZhciB0PW4scj0wO2Rve3ZhciBsPXQubmV4dFNpYmxpbmc7aWYoZS5yZW1vdmVDaGlsZCh0KSxsJiY4PT09bC5ub2RlVHlwZSlpZigiLyQiPT09KHQ9bC5kYXRhKXx8Ii8mIj09PXQpe2lmKDA9PT1yKXtlLnJlbW92ZUNoaWxkKGwpLGNGKG4pO3JldHVybn1yLS19ZWxzZSBpZigiJCI9PT10fHwiJD8iPT09dHx8IiR+Ij09PXR8fCIkISI9PT10fHwiJiI9PT10KXIrKztlbHNlIGlmKCJodG1sIj09PXQpc1IoZS5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk7ZWxzZSBpZigiaGVhZCI9PT10KXtzUih0PWUub3duZXJEb2N1bWVudC5oZWFkKTtmb3IodmFyIGE9dC5maXJzdENoaWxkO2E7KXt2YXIgbz1hLm5leHRTaWJsaW5nLHU9YS5ub2RlTmFtZTthW2VRXXx8IlNDUklQVCI9PT11fHwiU1RZTEUiPT09dXx8IkxJTksiPT09dSYmInN0eWxlc2hlZXQiPT09YS5yZWwudG9Mb3dlckNhc2UoKXx8dC5yZW1vdmVDaGlsZChhKSxhPW99fWVsc2UiYm9keSI9PT10JiZzUihlLm93bmVyRG9jdW1lbnQuYm9keSk7dD1sfXdoaWxlKHQpO2NGKG4pfWZ1bmN0aW9uIHNQKGUsbil7dmFyIHQ9ZTtlPTA7ZG97dmFyIHI9dC5uZXh0U2libGluZztpZigxPT09dC5ub2RlVHlwZT9uPyh0Ll9zdGFzaGVkRGlzcGxheT10LnN0eWxlLmRpc3BsYXksdC5zdHlsZS5kaXNwbGF5PSJub25lIik6KHQuc3R5bGUuZGlzcGxheT10Ll9zdGFzaGVkRGlzcGxheXx8IiIsIiI9PT10LmdldEF0dHJpYnV0ZSgic3R5bGUiKSYmdC5yZW1vdmVBdHRyaWJ1dGUoInN0eWxlIikpOjM9PT10Lm5vZGVUeXBlJiYobj8odC5fc3Rhc2hlZFRleHQ9dC5ub2RlVmFsdWUsdC5ub2RlVmFsdWU9IiIpOnQubm9kZVZhbHVlPXQuX3N0YXNoZWRUZXh0fHwiIiksciYmOD09PXIubm9kZVR5cGUpaWYoIi8kIj09PSh0PXIuZGF0YSkpaWYoMD09PWUpYnJlYWs7ZWxzZSBlLS07ZWxzZSIkIiE9PXQmJiIkPyIhPT10JiYiJH4iIT09dCYmIiQhIiE9PXR8fGUrKzt0PXJ9d2hpbGUodCl9ZnVuY3Rpb24gc04oZSl7dmFyIG49ZS5maXJzdENoaWxkO2ZvcihuJiYxMD09PW4ubm9kZVR5cGUmJihuPW4ubmV4dFNpYmxpbmcpO247KXt2YXIgdD1uO3N3aXRjaChuPW4ubmV4dFNpYmxpbmcsdC5ub2RlTmFtZSl7Y2FzZSJIVE1MIjpjYXNlIkhFQUQiOmNhc2UiQk9EWSI6c04odCksZUIodCk7Y29udGludWU7Y2FzZSJTQ1JJUFQiOmNhc2UiU1RZTEUiOmNvbnRpbnVlO2Nhc2UiTElOSyI6aWYoInN0eWxlc2hlZXQiPT09dC5yZWwudG9Mb3dlckNhc2UoKSljb250aW51ZX1lLnJlbW92ZUNoaWxkKHQpfX1mdW5jdGlvbiBzTChlLG4pe2Zvcig7OCE9PWUubm9kZVR5cGU7KWlmKCFufHxudWxsPT09KGU9c0YoZS5uZXh0U2libGluZykpKXJldHVybiBudWxsO3JldHVybiBlfWZ1bmN0aW9uIHNUKGUpe3JldHVybiIkPyI9PT1lLmRhdGF8fCIkfiI9PT1lLmRhdGF9ZnVuY3Rpb24gc18oZSl7cmV0dXJuIiQhIj09PWUuZGF0YXx8IiQ/Ij09PWUuZGF0YSYmImxvYWRpbmciIT09ZS5vd25lckRvY3VtZW50LnJlYWR5U3RhdGV9ZnVuY3Rpb24gc0YoZSl7Zm9yKDtudWxsIT1lO2U9ZS5uZXh0U2libGluZyl7dmFyIG49ZS5ub2RlVHlwZTtpZigxPT09bnx8Mz09PW4pYnJlYWs7aWYoOD09PW4pe2lmKCIkIj09PShuPWUuZGF0YSl8fCIkISI9PT1ufHwiJD8iPT09bnx8IiR+Ij09PW58fCImIj09PW58fCJGISI9PT1ufHwiRiI9PT1uKWJyZWFrO2lmKCIvJCI9PT1ufHwiLyYiPT09bilyZXR1cm4gbnVsbH19cmV0dXJuIGV9dmFyIHNEPW51bGw7ZnVuY3Rpb24gc08oZSl7ZT1lLm5leHRTaWJsaW5nO2Zvcih2YXIgbj0wO2U7KXtpZig4PT09ZS5ub2RlVHlwZSl7dmFyIHQ9ZS5kYXRhO2lmKCIvJCI9PT10fHwiLyYiPT09dCl7aWYoMD09PW4pcmV0dXJuIHNGKGUubmV4dFNpYmxpbmcpO24tLX1lbHNlIiQiIT09dCYmIiQhIiE9PXQmJiIkPyIhPT10JiYiJH4iIT09dCYmIiYiIT09dHx8bisrfWU9ZS5uZXh0U2libGluZ31yZXR1cm4gbnVsbH1mdW5jdGlvbiBzTShlKXtlPWUucHJldmlvdXNTaWJsaW5nO2Zvcih2YXIgbj0wO2U7KXtpZig4PT09ZS5ub2RlVHlwZSl7dmFyIHQ9ZS5kYXRhO2lmKCIkIj09PXR8fCIkISI9PT10fHwiJD8iPT09dHx8IiR+Ij09PXR8fCImIj09PXQpe2lmKDA9PT1uKXJldHVybiBlO24tLX1lbHNlIi8kIiE9PXQmJiIvJiIhPT10fHxuKyt9ZT1lLnByZXZpb3VzU2libGluZ31yZXR1cm4gbnVsbH1mdW5jdGlvbiBzQShlLG4sdCl7c3dpdGNoKG49c2godCksZSl7Y2FzZSJodG1sIjppZighKGU9bi5kb2N1bWVudEVsZW1lbnQpKXRocm93IEVycm9yKGkoNDUyKSk7cmV0dXJuIGU7Y2FzZSJoZWFkIjppZighKGU9bi5oZWFkKSl0aHJvdyBFcnJvcihpKDQ1MykpO3JldHVybiBlO2Nhc2UiYm9keSI6aWYoIShlPW4uYm9keSkpdGhyb3cgRXJyb3IoaSg0NTQpKTtyZXR1cm4gZTtkZWZhdWx0OnRocm93IEVycm9yKGkoNDUxKSl9fWZ1bmN0aW9uIHNSKGUpe2Zvcih2YXIgbj1lLmF0dHJpYnV0ZXM7bi5sZW5ndGg7KWUucmVtb3ZlQXR0cmlidXRlTm9kZShuWzBdKTtlQihlKX12YXIgc0k9bmV3IE1hcCxzVT1uZXcgU2V0O2Z1bmN0aW9uIHMkKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBlLmdldFJvb3ROb2RlP2UuZ2V0Um9vdE5vZGUoKTo5PT09ZS5ub2RlVHlwZT9lOmUub3duZXJEb2N1bWVudH12YXIgc2o9TS5kO00uZD17ZjpmdW5jdGlvbigpe3ZhciBlPXNqLmYoKSxuPWljKCk7cmV0dXJuIGV8fG59LHI6ZnVuY3Rpb24oZSl7dmFyIG49ZXEoZSk7bnVsbCE9PW4mJjU9PT1uLnRhZyYmImZvcm0iPT09bi50eXBlP2EwKG4pOnNqLnIoZSl9LEQ6ZnVuY3Rpb24oZSl7c2ouRChlKSxzSCgiZG5zLXByZWZldGNoIixlLG51bGwpfSxDOmZ1bmN0aW9uKGUsbil7c2ouQyhlLG4pLHNIKCJwcmVjb25uZWN0IixlLG4pfSxMOmZ1bmN0aW9uKGUsbix0KXtpZihzai5MKGUsbix0KSxzViYmZSYmbil7dmFyIHI9J2xpbmtbcmVsPSJwcmVsb2FkIl1bYXM9IicrbnIobikrJyJdJzsiaW1hZ2UiPT09biYmdCYmdC5pbWFnZVNyY1NldD8ocis9J1tpbWFnZXNyY3NldD0iJytucih0LmltYWdlU3JjU2V0KSsnIl0nLCJzdHJpbmciPT10eXBlb2YgdC5pbWFnZVNpemVzJiYocis9J1tpbWFnZXNpemVzPSInK25yKHQuaW1hZ2VTaXplcykrJyJdJykpOnIrPSdbaHJlZj0iJytucihlKSsnIl0nO3ZhciBsPXI7c3dpdGNoKG4pe2Nhc2Uic3R5bGUiOmw9c0IoZSk7YnJlYWs7Y2FzZSJzY3JpcHQiOmw9c0soZSl9c0kuaGFzKGwpfHwoZT1tKHtyZWw6InByZWxvYWQiLGhyZWY6ImltYWdlIj09PW4mJnQmJnQuaW1hZ2VTcmNTZXQ/dm9pZCAwOmUsYXM6bn0sdCksc0kuc2V0KGwsZSksbnVsbCE9PXNWLnF1ZXJ5U2VsZWN0b3Iocil8fCJzdHlsZSI9PT1uJiZzVi5xdWVyeVNlbGVjdG9yKHNXKGwpKXx8InNjcmlwdCI9PT1uJiZzVi5xdWVyeVNlbGVjdG9yKHNZKGwpKXx8KHNkKG49c1YuY3JlYXRlRWxlbWVudCgibGluayIpLCJsaW5rIixlKSxlWChuKSxzVi5oZWFkLmFwcGVuZENoaWxkKG4pKSl9fSxtOmZ1bmN0aW9uKGUsbil7aWYoc2oubShlLG4pLHNWJiZlKXt2YXIgdD1uJiYic3RyaW5nIj09dHlwZW9mIG4uYXM/bi5hczoic2NyaXB0IixyPSdsaW5rW3JlbD0ibW9kdWxlcHJlbG9hZCJdW2FzPSInK25yKHQpKyciXVtocmVmPSInK25yKGUpKyciXScsbD1yO3N3aXRjaCh0KXtjYXNlImF1ZGlvd29ya2xldCI6Y2FzZSJwYWludHdvcmtsZXQiOmNhc2Uic2VydmljZXdvcmtlciI6Y2FzZSJzaGFyZWR3b3JrZXIiOmNhc2Uid29ya2VyIjpjYXNlInNjcmlwdCI6bD1zSyhlKX1pZighc0kuaGFzKGwpJiYoZT1tKHtyZWw6Im1vZHVsZXByZWxvYWQiLGhyZWY6ZX0sbiksc0kuc2V0KGwsZSksbnVsbD09PXNWLnF1ZXJ5U2VsZWN0b3IocikpKXtzd2l0Y2godCl7Y2FzZSJhdWRpb3dvcmtsZXQiOmNhc2UicGFpbnR3b3JrbGV0IjpjYXNlInNlcnZpY2V3b3JrZXIiOmNhc2Uic2hhcmVkd29ya2VyIjpjYXNlIndvcmtlciI6Y2FzZSJzY3JpcHQiOmlmKHNWLnF1ZXJ5U2VsZWN0b3Ioc1kobCkpKXJldHVybn1zZCh0PXNWLmNyZWF0ZUVsZW1lbnQoImxpbmsiKSwibGluayIsZSksZVgodCksc1YuaGVhZC5hcHBlbmRDaGlsZCh0KX19fSxYOmZ1bmN0aW9uKGUsbil7aWYoc2ouWChlLG4pLHNWJiZlKXt2YXIgdD1lWShzVikuaG9pc3RhYmxlU2NyaXB0cyxyPXNLKGUpLGw9dC5nZXQocik7bHx8KChsPXNWLnF1ZXJ5U2VsZWN0b3Ioc1kocikpKXx8KGU9bSh7c3JjOmUsYXN5bmM6ITB9LG4pLChuPXNJLmdldChyKSkmJnNKKGUsbiksZVgobD1zVi5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSksc2QobCwibGluayIsZSksc1YuaGVhZC5hcHBlbmRDaGlsZChsKSksbD17dHlwZToic2NyaXB0IixpbnN0YW5jZTpsLGNvdW50OjEsc3RhdGU6bnVsbH0sdC5zZXQocixsKSl9fSxTOmZ1bmN0aW9uKGUsbix0KXtpZihzai5TKGUsbix0KSxzViYmZSl7dmFyIHI9ZVkoc1YpLmhvaXN0YWJsZVN0eWxlcyxsPXNCKGUpO249bnx8ImRlZmF1bHQiO3ZhciBhPXIuZ2V0KGwpO2lmKCFhKXt2YXIgbz17bG9hZGluZzowLHByZWxvYWQ6bnVsbH07aWYoYT1zVi5xdWVyeVNlbGVjdG9yKHNXKGwpKSlvLmxvYWRpbmc9NTtlbHNle2U9bSh7cmVsOiJzdHlsZXNoZWV0IixocmVmOmUsImRhdGEtcHJlY2VkZW5jZSI6bn0sdCksKHQ9c0kuZ2V0KGwpKSYmc1ooZSx0KTt2YXIgdT1hPXNWLmNyZWF0ZUVsZW1lbnQoImxpbmsiKTtlWCh1KSxzZCh1LCJsaW5rIixlKSx1Ll9wPW5ldyBQcm9taXNlKGZ1bmN0aW9uKGUsbil7dS5vbmxvYWQ9ZSx1Lm9uZXJyb3I9bn0pLHUuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsZnVuY3Rpb24oKXtvLmxvYWRpbmd8PTF9KSx1LmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIixmdW5jdGlvbigpe28ubG9hZGluZ3w9Mn0pLG8ubG9hZGluZ3w9NCxzRyhhLG4sc1YpfWE9e3R5cGU6InN0eWxlc2hlZXQiLGluc3RhbmNlOmEsY291bnQ6MSxzdGF0ZTpvfSxyLnNldChsLGEpfX19LE06ZnVuY3Rpb24oZSxuKXtpZihzai5NKGUsbiksc1YmJmUpe3ZhciB0PWVZKHNWKS5ob2lzdGFibGVTY3JpcHRzLHI9c0soZSksbD10LmdldChyKTtsfHwoKGw9c1YucXVlcnlTZWxlY3RvcihzWShyKSkpfHwoZT1tKHtzcmM6ZSxhc3luYzohMCx0eXBlOiJtb2R1bGUifSxuKSwobj1zSS5nZXQocikpJiZzSihlLG4pLGVYKGw9c1YuY3JlYXRlRWxlbWVudCgic2NyaXB0IikpLHNkKGwsImxpbmsiLGUpLHNWLmhlYWQuYXBwZW5kQ2hpbGQobCkpLGw9e3R5cGU6InNjcmlwdCIsaW5zdGFuY2U6bCxjb3VudDoxLHN0YXRlOm51bGx9LHQuc2V0KHIsbCkpfX19O3ZhciBzVj0idW5kZWZpbmVkIj09dHlwZW9mIGRvY3VtZW50P251bGw6ZG9jdW1lbnQ7ZnVuY3Rpb24gc0goZSxuLHQpe2lmKHNWJiYic3RyaW5nIj09dHlwZW9mIG4mJm4pe3ZhciByPW5yKG4pO3I9J2xpbmtbcmVsPSInK2UrJyJdW2hyZWY9IicrcisnIl0nLCJzdHJpbmciPT10eXBlb2YgdCYmKHIrPSdbY3Jvc3NvcmlnaW49IicrdCsnIl0nKSxzVS5oYXMocil8fChzVS5hZGQociksZT17cmVsOmUsY3Jvc3NPcmlnaW46dCxocmVmOm59LG51bGw9PT1zVi5xdWVyeVNlbGVjdG9yKHIpJiYoc2Qobj1zVi5jcmVhdGVFbGVtZW50KCJsaW5rIiksImxpbmsiLGUpLGVYKG4pLHNWLmhlYWQuYXBwZW5kQ2hpbGQobikpKX19ZnVuY3Rpb24gc1EoZSxuLHQscil7dmFyIGw9KGw9US5jdXJyZW50KT9zJChsKTpudWxsO2lmKCFsKXRocm93IEVycm9yKGkoNDQ2KSk7c3dpdGNoKGUpe2Nhc2UibWV0YSI6Y2FzZSJ0aXRsZSI6cmV0dXJuIG51bGw7Y2FzZSJzdHlsZSI6cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0LnByZWNlZGVuY2UmJiJzdHJpbmciPT10eXBlb2YgdC5ocmVmPyhuPXNCKHQuaHJlZiksKHI9KHQ9ZVkobCkuaG9pc3RhYmxlU3R5bGVzKS5nZXQobikpfHwocj17dHlwZToic3R5bGUiLGluc3RhbmNlOm51bGwsY291bnQ6MCxzdGF0ZTpudWxsfSx0LnNldChuLHIpKSxyKTp7dHlwZToidm9pZCIsaW5zdGFuY2U6bnVsbCxjb3VudDowLHN0YXRlOm51bGx9O2Nhc2UibGluayI6aWYoInN0eWxlc2hlZXQiPT09dC5yZWwmJiJzdHJpbmciPT10eXBlb2YgdC5ocmVmJiYic3RyaW5nIj09dHlwZW9mIHQucHJlY2VkZW5jZSl7ZT1zQih0LmhyZWYpO3ZhciBhLG8sdSxzLGM9ZVkobCkuaG9pc3RhYmxlU3R5bGVzLGY9Yy5nZXQoZSk7aWYoZnx8KGw9bC5vd25lckRvY3VtZW50fHxsLGY9e3R5cGU6InN0eWxlc2hlZXQiLGluc3RhbmNlOm51bGwsY291bnQ6MCxzdGF0ZTp7bG9hZGluZzowLHByZWxvYWQ6bnVsbH19LGMuc2V0KGUsZiksKGM9bC5xdWVyeVNlbGVjdG9yKHNXKGUpKSkmJiFjLl9wJiYoZi5pbnN0YW5jZT1jLGYuc3RhdGUubG9hZGluZz01KSxzSS5oYXMoZSl8fCh0PXtyZWw6InByZWxvYWQiLGFzOiJzdHlsZSIsaHJlZjp0LmhyZWYsY3Jvc3NPcmlnaW46dC5jcm9zc09yaWdpbixpbnRlZ3JpdHk6dC5pbnRlZ3JpdHksbWVkaWE6dC5tZWRpYSxocmVmTGFuZzp0LmhyZWZMYW5nLHJlZmVycmVyUG9saWN5OnQucmVmZXJyZXJQb2xpY3l9LHNJLnNldChlLHQpLGN8fChhPWwsbz1lLHU9dCxzPWYuc3RhdGUsYS5xdWVyeVNlbGVjdG9yKCdsaW5rW3JlbD0icHJlbG9hZCJdW2FzPSJzdHlsZSJdWycrbysiXSIpP3MubG9hZGluZz0xOihzLnByZWxvYWQ9bz1hLmNyZWF0ZUVsZW1lbnQoImxpbmsiKSxvLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGZ1bmN0aW9uKCl7cmV0dXJuIHMubG9hZGluZ3w9MX0pLG8uYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGZ1bmN0aW9uKCl7cmV0dXJuIHMubG9hZGluZ3w9Mn0pLHNkKG8sImxpbmsiLHUpLGVYKG8pLGEuaGVhZC5hcHBlbmRDaGlsZChvKSkpKSksbiYmbnVsbD09PXIpdGhyb3cgRXJyb3IoaSg1MjgsIiIpKTtyZXR1cm4gZn1pZihuJiZudWxsIT09cil0aHJvdyBFcnJvcihpKDUyOSwiIikpO3JldHVybiBudWxsO2Nhc2Uic2NyaXB0IjpyZXR1cm4gbj10LmFzeW5jLCJzdHJpbmciPT10eXBlb2YodD10LnNyYykmJm4mJiJmdW5jdGlvbiIhPXR5cGVvZiBuJiYic3ltYm9sIiE9dHlwZW9mIG4/KG49c0sodCksKHI9KHQ9ZVkobCkuaG9pc3RhYmxlU2NyaXB0cykuZ2V0KG4pKXx8KHI9e3R5cGU6InNjcmlwdCIsaW5zdGFuY2U6bnVsbCxjb3VudDowLHN0YXRlOm51bGx9LHQuc2V0KG4scikpLHIpOnt0eXBlOiJ2b2lkIixpbnN0YW5jZTpudWxsLGNvdW50OjAsc3RhdGU6bnVsbH07ZGVmYXVsdDp0aHJvdyBFcnJvcihpKDQ0NCxlKSl9fWZ1bmN0aW9uIHNCKGUpe3JldHVybidocmVmPSInK25yKGUpKyciJ31mdW5jdGlvbiBzVyhlKXtyZXR1cm4nbGlua1tyZWw9InN0eWxlc2hlZXQiXVsnK2UrIl0ifWZ1bmN0aW9uIHNxKGUpe3JldHVybiBtKHt9LGUseyJkYXRhLXByZWNlZGVuY2UiOmUucHJlY2VkZW5jZSxwcmVjZWRlbmNlOm51bGx9KX1mdW5jdGlvbiBzSyhlKXtyZXR1cm4nW3NyYz0iJytucihlKSsnIl0nfWZ1bmN0aW9uIHNZKGUpe3JldHVybiJzY3JpcHRbYXN5bmNdIitlfWZ1bmN0aW9uIHNYKGUsbix0KXtpZihuLmNvdW50KyssbnVsbD09PW4uaW5zdGFuY2Upc3dpdGNoKG4udHlwZSl7Y2FzZSJzdHlsZSI6dmFyIHI9ZS5xdWVyeVNlbGVjdG9yKCdzdHlsZVtkYXRhLWhyZWZ+PSInK25yKHQuaHJlZikrJyJdJyk7aWYocilyZXR1cm4gbi5pbnN0YW5jZT1yLGVYKHIpLHI7dmFyIGw9bSh7fSx0LHsiZGF0YS1ocmVmIjp0LmhyZWYsImRhdGEtcHJlY2VkZW5jZSI6dC5wcmVjZWRlbmNlLGhyZWY6bnVsbCxwcmVjZWRlbmNlOm51bGx9KTtyZXR1cm4gZVgocj0oZS5vd25lckRvY3VtZW50fHxlKS5jcmVhdGVFbGVtZW50KCJzdHlsZSIpKSxzZChyLCJzdHlsZSIsbCksc0cocix0LnByZWNlZGVuY2UsZSksbi5pbnN0YW5jZT1yO2Nhc2Uic3R5bGVzaGVldCI6bD1zQih0LmhyZWYpO3ZhciBhPWUucXVlcnlTZWxlY3RvcihzVyhsKSk7aWYoYSlyZXR1cm4gbi5zdGF0ZS5sb2FkaW5nfD00LG4uaW5zdGFuY2U9YSxlWChhKSxhO3I9c3EodCksKGw9c0kuZ2V0KGwpKSYmc1oocixsKSxlWChhPShlLm93bmVyRG9jdW1lbnR8fGUpLmNyZWF0ZUVsZW1lbnQoImxpbmsiKSk7dmFyIG89YTtyZXR1cm4gby5fcD1uZXcgUHJvbWlzZShmdW5jdGlvbihlLG4pe28ub25sb2FkPWUsby5vbmVycm9yPW59KSxzZChhLCJsaW5rIixyKSxuLnN0YXRlLmxvYWRpbmd8PTQsc0coYSx0LnByZWNlZGVuY2UsZSksbi5pbnN0YW5jZT1hO2Nhc2Uic2NyaXB0IjppZihhPXNLKHQuc3JjKSxsPWUucXVlcnlTZWxlY3RvcihzWShhKSkpcmV0dXJuIG4uaW5zdGFuY2U9bCxlWChsKSxsO3JldHVybiByPXQsKGw9c0kuZ2V0KGEpKSYmc0oocj1tKHt9LHQpLGwpLGVYKGw9KGU9ZS5vd25lckRvY3VtZW50fHxlKS5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSksc2QobCwibGluayIsciksZS5oZWFkLmFwcGVuZENoaWxkKGwpLG4uaW5zdGFuY2U9bDtjYXNlInZvaWQiOnJldHVybiBudWxsO2RlZmF1bHQ6dGhyb3cgRXJyb3IoaSg0NDMsbi50eXBlKSl9cmV0dXJuInN0eWxlc2hlZXQiPT09bi50eXBlJiYwPT0oNCZuLnN0YXRlLmxvYWRpbmcpJiYocj1uLmluc3RhbmNlLG4uc3RhdGUubG9hZGluZ3w9NCxzRyhyLHQucHJlY2VkZW5jZSxlKSksbi5pbnN0YW5jZX1mdW5jdGlvbiBzRyhlLG4sdCl7Zm9yKHZhciByPXQucXVlcnlTZWxlY3RvckFsbCgnbGlua1tyZWw9InN0eWxlc2hlZXQiXVtkYXRhLXByZWNlZGVuY2VdLHN0eWxlW2RhdGEtcHJlY2VkZW5jZV0nKSxsPXIubGVuZ3RoP3Jbci5sZW5ndGgtMV06bnVsbCxhPWwsbz0wO288ci5sZW5ndGg7bysrKXt2YXIgdT1yW29dO2lmKHUuZGF0YXNldC5wcmVjZWRlbmNlPT09bilhPXU7ZWxzZSBpZihhIT09bClicmVha31hP2EucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSxhLm5leHRTaWJsaW5nKToobj05PT09dC5ub2RlVHlwZT90LmhlYWQ6dCkuaW5zZXJ0QmVmb3JlKGUsbi5maXJzdENoaWxkKX1mdW5jdGlvbiBzWihlLG4pe251bGw9PWUuY3Jvc3NPcmlnaW4mJihlLmNyb3NzT3JpZ2luPW4uY3Jvc3NPcmlnaW4pLG51bGw9PWUucmVmZXJyZXJQb2xpY3kmJihlLnJlZmVycmVyUG9saWN5PW4ucmVmZXJyZXJQb2xpY3kpLG51bGw9PWUudGl0bGUmJihlLnRpdGxlPW4udGl0bGUpfWZ1bmN0aW9uIHNKKGUsbil7bnVsbD09ZS5jcm9zc09yaWdpbiYmKGUuY3Jvc3NPcmlnaW49bi5jcm9zc09yaWdpbiksbnVsbD09ZS5yZWZlcnJlclBvbGljeSYmKGUucmVmZXJyZXJQb2xpY3k9bi5yZWZlcnJlclBvbGljeSksbnVsbD09ZS5pbnRlZ3JpdHkmJihlLmludGVncml0eT1uLmludGVncml0eSl9dmFyIHMwPW51bGw7ZnVuY3Rpb24gczEoZSxuLHQpe2lmKG51bGw9PT1zMCl7dmFyIHI9bmV3IE1hcCxsPXMwPW5ldyBNYXA7bC5zZXQodCxyKX1lbHNlKHI9KGw9czApLmdldCh0KSl8fChyPW5ldyBNYXAsbC5zZXQodCxyKSk7aWYoci5oYXMoZSkpcmV0dXJuIHI7Zm9yKHIuc2V0KGUsbnVsbCksdD10LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpLGw9MDtsPHQubGVuZ3RoO2wrKyl7dmFyIGE9dFtsXTtpZighKGFbZVFdfHxhW2VSXXx8ImxpbmsiPT09ZSYmInN0eWxlc2hlZXQiPT09YS5nZXRBdHRyaWJ1dGUoInJlbCIpKSYmImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiE9PWEubmFtZXNwYWNlVVJJKXt2YXIgbz1hLmdldEF0dHJpYnV0ZShuKXx8IiI7bz1lK287dmFyIHU9ci5nZXQobyk7dT91LnB1c2goYSk6ci5zZXQobyxbYV0pfX1yZXR1cm4gcn1mdW5jdGlvbiBzMihlLG4sdCl7KGU9ZS5vd25lckRvY3VtZW50fHxlKS5oZWFkLmluc2VydEJlZm9yZSh0LCJ0aXRsZSI9PT1uP2UucXVlcnlTZWxlY3RvcigiaGVhZCA+IHRpdGxlIik6bnVsbCl9ZnVuY3Rpb24gczMoZSl7cmV0dXJuInN0eWxlc2hlZXQiIT09ZS50eXBlfHwwIT0oMyZlLnN0YXRlLmxvYWRpbmcpfXZhciBzND1udWxsO2Z1bmN0aW9uIHM4KCl7aWYodGhpcy5jb3VudC0tLDA9PT10aGlzLmNvdW50KXtpZih0aGlzLnN0eWxlc2hlZXRzKXM1KHRoaXMsdGhpcy5zdHlsZXNoZWV0cyk7ZWxzZSBpZih0aGlzLnVuc3VzcGVuZCl7dmFyIGU9dGhpcy51bnN1c3BlbmQ7dGhpcy51bnN1c3BlbmQ9bnVsbCxlKCl9fX12YXIgczY9bnVsbDtmdW5jdGlvbiBzNShlLG4pe2Uuc3R5bGVzaGVldHM9bnVsbCxudWxsIT09ZS51bnN1c3BlbmQmJihlLmNvdW50KyssczY9bmV3IE1hcCxuLmZvckVhY2goczksZSksczY9bnVsbCxzOC5jYWxsKGUpKX1mdW5jdGlvbiBzOShlLG4pe2lmKCEoNCZuLnN0YXRlLmxvYWRpbmcpKXt2YXIgdD1zNi5nZXQoZSk7aWYodCl2YXIgcj10LmdldChudWxsKTtlbHNle3Q9bmV3IE1hcCxzNi5zZXQoZSx0KTtmb3IodmFyIGw9ZS5xdWVyeVNlbGVjdG9yQWxsKCJsaW5rW2RhdGEtcHJlY2VkZW5jZV0sc3R5bGVbZGF0YS1wcmVjZWRlbmNlXSIpLGE9MDthPGwubGVuZ3RoO2ErKyl7dmFyIG89bFthXTsoIkxJTksiPT09by5ub2RlTmFtZXx8Im5vdCBhbGwiIT09by5nZXRBdHRyaWJ1dGUoIm1lZGlhIikpJiYodC5zZXQoby5kYXRhc2V0LnByZWNlZGVuY2Usbykscj1vKX1yJiZ0LnNldChudWxsLHIpfW89KGw9bi5pbnN0YW5jZSkuZ2V0QXR0cmlidXRlKCJkYXRhLXByZWNlZGVuY2UiKSwoYT10LmdldChvKXx8cik9PT1yJiZ0LnNldChudWxsLGwpLHQuc2V0KG8sbCksdGhpcy5jb3VudCsrLHI9czguYmluZCh0aGlzKSxsLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLHIpLGwuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLHIpLGE/YS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShsLGEubmV4dFNpYmxpbmcpOihlPTk9PT1lLm5vZGVUeXBlP2UuaGVhZDplKS5pbnNlcnRCZWZvcmUobCxlLmZpcnN0Q2hpbGQpLG4uc3RhdGUubG9hZGluZ3w9NH19dmFyIHM3PXskJHR5cGVvZjpTLFByb3ZpZGVyOm51bGwsQ29uc3VtZXI6bnVsbCxfY3VycmVudFZhbHVlOkEsX2N1cnJlbnRWYWx1ZTI6QSxfdGhyZWFkQ291bnQ6MH07ZnVuY3Rpb24gY2UoZSxuLHQscixsLGEsbyx1LGkpe3RoaXMudGFnPTEsdGhpcy5jb250YWluZXJJbmZvPWUsdGhpcy5waW5nQ2FjaGU9dGhpcy5jdXJyZW50PXRoaXMucGVuZGluZ0NoaWxkcmVuPW51bGwsdGhpcy50aW1lb3V0SGFuZGxlPS0xLHRoaXMuY2FsbGJhY2tOb2RlPXRoaXMubmV4dD10aGlzLnBlbmRpbmdDb250ZXh0PXRoaXMuY29udGV4dD10aGlzLmNhbmNlbFBlbmRpbmdDb21taXQ9bnVsbCx0aGlzLmNhbGxiYWNrUHJpb3JpdHk9MCx0aGlzLmV4cGlyYXRpb25UaW1lcz1lUCgtMSksdGhpcy5lbnRhbmdsZWRMYW5lcz10aGlzLnNoZWxsU3VzcGVuZENvdW50ZXI9dGhpcy5lcnJvclJlY292ZXJ5RGlzYWJsZWRMYW5lcz10aGlzLmV4cGlyZWRMYW5lcz10aGlzLndhcm1MYW5lcz10aGlzLnBpbmdlZExhbmVzPXRoaXMuc3VzcGVuZGVkTGFuZXM9dGhpcy5wZW5kaW5nTGFuZXM9MCx0aGlzLmVudGFuZ2xlbWVudHM9ZVAoMCksdGhpcy5oaWRkZW5VcGRhdGVzPWVQKG51bGwpLHRoaXMuaWRlbnRpZmllclByZWZpeD1yLHRoaXMub25VbmNhdWdodEVycm9yPWwsdGhpcy5vbkNhdWdodEVycm9yPWEsdGhpcy5vblJlY292ZXJhYmxlRXJyb3I9byx0aGlzLnBvb2xlZENhY2hlPW51bGwsdGhpcy5wb29sZWRDYWNoZUxhbmVzPTAsdGhpcy5mb3JtU3RhdGU9aSx0aGlzLmluY29tcGxldGVUcmFuc2l0aW9ucz1uZXcgTWFwfWZ1bmN0aW9uIGNuKGUsbix0LHIsbCxhLG8sdSxpLHMsYyxmKXtyZXR1cm4gZT1uZXcgY2UoZSxuLHQsbyxpLHMsYyxmLHUpLG49MSwhMD09PWEmJihufD0yNCksYT1ydCgzLG51bGwsbnVsbCxuKSxlLmN1cnJlbnQ9YSxhLnN0YXRlTm9kZT1lLG49cjMoKSxuLnJlZkNvdW50KyssZS5wb29sZWRDYWNoZT1uLG4ucmVmQ291bnQrKyxhLm1lbW9pemVkU3RhdGU9e2VsZW1lbnQ6cixpc0RlaHlkcmF0ZWQ6dCxjYWNoZTpufSxsRShhKSxlfWZ1bmN0aW9uIGN0KGUsbix0LHIsbCxhKXtsPWw/cmU6cmUsbnVsbD09PXIuY29udGV4dD9yLmNvbnRleHQ9bDpyLnBlbmRpbmdDb250ZXh0PWwsKHI9bEMobikpLnBheWxvYWQ9e2VsZW1lbnQ6dH0sbnVsbCE9PShhPXZvaWQgMD09PWE/bnVsbDphKSYmKHIuY2FsbGJhY2s9YSksbnVsbCE9PSh0PWxQKGUscixuKSkmJihpbyh0LGUsbiksbE4odCxlLG4pKX1mdW5jdGlvbiBjcihlLG4pe2lmKG51bGwhPT0oZT1lLm1lbW9pemVkU3RhdGUpJiZudWxsIT09ZS5kZWh5ZHJhdGVkKXt2YXIgdD1lLnJldHJ5TGFuZTtlLnJldHJ5TGFuZT0wIT09dCYmdDxuP3Q6bn19ZnVuY3Rpb24gY2woZSxuKXtjcihlLG4pLChlPWUuYWx0ZXJuYXRlKSYmY3IoZSxuKX1mdW5jdGlvbiBjYShlKXtpZigxMz09PWUudGFnfHwzMT09PWUudGFnKXt2YXIgbj10NShlLDB4NDAwMDAwMCk7bnVsbCE9PW4mJmlvKG4sZSwweDQwMDAwMDApLGNsKGUsMHg0MDAwMDAwKX19ZnVuY3Rpb24gY28oZSl7aWYoMTM9PT1lLnRhZ3x8MzE9PT1lLnRhZyl7dmFyIG49aWwoKSx0PXQ1KGUsbj1lRihuKSk7bnVsbCE9PXQmJmlvKHQsZSxuKSxjbChlLG4pfX12YXIgY3U9ITA7ZnVuY3Rpb24gY2koZSxuLHQscil7dmFyIGw9Ty5UO08uVD1udWxsO3ZhciBhPU0ucDt0cnl7TS5wPTIsY2MoZSxuLHQscil9ZmluYWxseXtNLnA9YSxPLlQ9bH19ZnVuY3Rpb24gY3MoZSxuLHQscil7dmFyIGw9Ty5UO08uVD1udWxsO3ZhciBhPU0ucDt0cnl7TS5wPTgsY2MoZSxuLHQscil9ZmluYWxseXtNLnA9YSxPLlQ9bH19ZnVuY3Rpb24gY2MoZSxuLHQscil7aWYoY3Upe3ZhciBsPWNmKHIpO2lmKG51bGw9PT1sKXNuKGUsbixyLGNkLHQpLGN4KGUscik7ZWxzZSBpZihmdW5jdGlvbihlLG4sdCxyLGwpe3N3aXRjaChuKXtjYXNlImZvY3VzaW4iOnJldHVybiBjZz1jRShjZyxlLG4sdCxyLGwpLCEwO2Nhc2UiZHJhZ2VudGVyIjpyZXR1cm4gY3k9Y0UoY3ksZSxuLHQscixsKSwhMDtjYXNlIm1vdXNlb3ZlciI6cmV0dXJuIGN2PWNFKGN2LGUsbix0LHIsbCksITA7Y2FzZSJwb2ludGVyb3ZlciI6dmFyIGE9bC5wb2ludGVySWQ7cmV0dXJuIGNiLnNldChhLGNFKGNiLmdldChhKXx8bnVsbCxlLG4sdCxyLGwpKSwhMDtjYXNlImdvdHBvaW50ZXJjYXB0dXJlIjpyZXR1cm4gYT1sLnBvaW50ZXJJZCxjay5zZXQoYSxjRShjay5nZXQoYSl8fG51bGwsZSxuLHQscixsKSksITB9cmV0dXJuITF9KGwsZSxuLHQscikpci5zdG9wUHJvcGFnYXRpb24oKTtlbHNlIGlmKGN4KGUsciksNCZuJiYtMTxjUy5pbmRleE9mKGUpKXtmb3IoO251bGwhPT1sOyl7dmFyIGE9ZXEobCk7aWYobnVsbCE9PWEpc3dpdGNoKGEudGFnKXtjYXNlIDM6aWYoKGE9YS5zdGF0ZU5vZGUpLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpe3ZhciBvPWVTKGEucGVuZGluZ0xhbmVzKTtpZigwIT09byl7dmFyIHU9YTtmb3IodS5wZW5kaW5nTGFuZXN8PTIsdS5lbnRhbmdsZWRMYW5lc3w9MjtvOyl7dmFyIGk9MTw8MzEtZXkobyk7dS5lbnRhbmdsZW1lbnRzWzFdfD1pLG8mPX5pfWlCKGEpLDA9PSg2JnVNKSYmKHUxPWVhKCkrNTAwLGlXKDAsITEpKX19YnJlYWs7Y2FzZSAzMTpjYXNlIDEzOm51bGwhPT0odT10NShhLDIpKSYmaW8odSxhLDIpLGljKCksY2woYSwyKX1pZihudWxsPT09KGE9Y2YocikpJiZzbihlLG4scixjZCx0KSxhPT09bClicmVhaztsPWF9bnVsbCE9PWwmJnIuc3RvcFByb3BhZ2F0aW9uKCl9ZWxzZSBzbihlLG4scixudWxsLHQpfX1mdW5jdGlvbiBjZihlKXtyZXR1cm4gY3AoZT1uayhlKSl9dmFyIGNkPW51bGw7ZnVuY3Rpb24gY3AoZSl7aWYoY2Q9bnVsbCxudWxsIT09KGU9ZVcoZSkpKXt2YXIgbj1jKGUpO2lmKG51bGw9PT1uKWU9bnVsbDtlbHNle3ZhciB0PW4udGFnO2lmKDEzPT09dCl7aWYobnVsbCE9PShlPWYobikpKXJldHVybiBlO2U9bnVsbH1lbHNlIGlmKDMxPT09dCl7aWYobnVsbCE9PShlPWQobikpKXJldHVybiBlO2U9bnVsbH1lbHNlIGlmKDM9PT10KXtpZihuLnN0YXRlTm9kZS5jdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkKXJldHVybiAzPT09bi50YWc/bi5zdGF0ZU5vZGUuY29udGFpbmVySW5mbzpudWxsO2U9bnVsbH1lbHNlIG4hPT1lJiYoZT1udWxsKX19cmV0dXJuIGNkPWUsbnVsbH1mdW5jdGlvbiBjbShlKXtzd2l0Y2goZSl7Y2FzZSJiZWZvcmV0b2dnbGUiOmNhc2UiY2FuY2VsIjpjYXNlImNsaWNrIjpjYXNlImNsb3NlIjpjYXNlImNvbnRleHRtZW51IjpjYXNlImNvcHkiOmNhc2UiY3V0IjpjYXNlImF1eGNsaWNrIjpjYXNlImRibGNsaWNrIjpjYXNlImRyYWdlbmQiOmNhc2UiZHJhZ3N0YXJ0IjpjYXNlImRyb3AiOmNhc2UiZm9jdXNpbiI6Y2FzZSJmb2N1c291dCI6Y2FzZSJpbnB1dCI6Y2FzZSJpbnZhbGlkIjpjYXNlImtleWRvd24iOmNhc2Uia2V5cHJlc3MiOmNhc2Uia2V5dXAiOmNhc2UibW91c2Vkb3duIjpjYXNlIm1vdXNldXAiOmNhc2UicGFzdGUiOmNhc2UicGF1c2UiOmNhc2UicGxheSI6Y2FzZSJwb2ludGVyY2FuY2VsIjpjYXNlInBvaW50ZXJkb3duIjpjYXNlInBvaW50ZXJ1cCI6Y2FzZSJyYXRlY2hhbmdlIjpjYXNlInJlc2V0IjpjYXNlInJlc2l6ZSI6Y2FzZSJzZWVrZWQiOmNhc2Uic3VibWl0IjpjYXNlInRvZ2dsZSI6Y2FzZSJ0b3VjaGNhbmNlbCI6Y2FzZSJ0b3VjaGVuZCI6Y2FzZSJ0b3VjaHN0YXJ0IjpjYXNlInZvbHVtZWNoYW5nZSI6Y2FzZSJjaGFuZ2UiOmNhc2Uic2VsZWN0aW9uY2hhbmdlIjpjYXNlInRleHRJbnB1dCI6Y2FzZSJjb21wb3NpdGlvbnN0YXJ0IjpjYXNlImNvbXBvc2l0aW9uZW5kIjpjYXNlImNvbXBvc2l0aW9udXBkYXRlIjpjYXNlImJlZm9yZWJsdXIiOmNhc2UiYWZ0ZXJibHVyIjpjYXNlImJlZm9yZWlucHV0IjpjYXNlImJsdXIiOmNhc2UiZnVsbHNjcmVlbmNoYW5nZSI6Y2FzZSJmb2N1cyI6Y2FzZSJoYXNoY2hhbmdlIjpjYXNlInBvcHN0YXRlIjpjYXNlInNlbGVjdCI6Y2FzZSJzZWxlY3RzdGFydCI6cmV0dXJuIDI7Y2FzZSJkcmFnIjpjYXNlImRyYWdlbnRlciI6Y2FzZSJkcmFnZXhpdCI6Y2FzZSJkcmFnbGVhdmUiOmNhc2UiZHJhZ292ZXIiOmNhc2UibW91c2Vtb3ZlIjpjYXNlIm1vdXNlb3V0IjpjYXNlIm1vdXNlb3ZlciI6Y2FzZSJwb2ludGVybW92ZSI6Y2FzZSJwb2ludGVyb3V0IjpjYXNlInBvaW50ZXJvdmVyIjpjYXNlInNjcm9sbCI6Y2FzZSJ0b3VjaG1vdmUiOmNhc2Uid2hlZWwiOmNhc2UibW91c2VlbnRlciI6Y2FzZSJtb3VzZWxlYXZlIjpjYXNlInBvaW50ZXJlbnRlciI6Y2FzZSJwb2ludGVybGVhdmUiOnJldHVybiA4O2Nhc2UibWVzc2FnZSI6c3dpdGNoKGVvKCkpe2Nhc2UgZXU6cmV0dXJuIDI7Y2FzZSBlaTpyZXR1cm4gODtjYXNlIGVzOmNhc2UgZWM6cmV0dXJuIDMyO2Nhc2UgZWY6cmV0dXJuIDB4MTAwMDAwMDA7ZGVmYXVsdDpyZXR1cm4gMzJ9ZGVmYXVsdDpyZXR1cm4gMzJ9fXZhciBjaD0hMSxjZz1udWxsLGN5PW51bGwsY3Y9bnVsbCxjYj1uZXcgTWFwLGNrPW5ldyBNYXAsY3c9W10sY1M9Im1vdXNlZG93biBtb3VzZXVwIHRvdWNoY2FuY2VsIHRvdWNoZW5kIHRvdWNoc3RhcnQgYXV4Y2xpY2sgZGJsY2xpY2sgcG9pbnRlcmNhbmNlbCBwb2ludGVyZG93biBwb2ludGVydXAgZHJhZ2VuZCBkcmFnc3RhcnQgZHJvcCBjb21wb3NpdGlvbmVuZCBjb21wb3NpdGlvbnN0YXJ0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgaW5wdXQgdGV4dElucHV0IGNvcHkgY3V0IHBhc3RlIGNsaWNrIGNoYW5nZSBjb250ZXh0bWVudSByZXNldCIuc3BsaXQoIiAiKTtmdW5jdGlvbiBjeChlLG4pe3N3aXRjaChlKXtjYXNlImZvY3VzaW4iOmNhc2UiZm9jdXNvdXQiOmNnPW51bGw7YnJlYWs7Y2FzZSJkcmFnZW50ZXIiOmNhc2UiZHJhZ2xlYXZlIjpjeT1udWxsO2JyZWFrO2Nhc2UibW91c2VvdmVyIjpjYXNlIm1vdXNlb3V0Ijpjdj1udWxsO2JyZWFrO2Nhc2UicG9pbnRlcm92ZXIiOmNhc2UicG9pbnRlcm91dCI6Y2IuZGVsZXRlKG4ucG9pbnRlcklkKTticmVhaztjYXNlImdvdHBvaW50ZXJjYXB0dXJlIjpjYXNlImxvc3Rwb2ludGVyY2FwdHVyZSI6Y2suZGVsZXRlKG4ucG9pbnRlcklkKX19ZnVuY3Rpb24gY0UoZSxuLHQscixsLGEpe3JldHVybiBudWxsPT09ZXx8ZS5uYXRpdmVFdmVudCE9PWE/KGU9e2Jsb2NrZWRPbjpuLGRvbUV2ZW50TmFtZTp0LGV2ZW50U3lzdGVtRmxhZ3M6cixuYXRpdmVFdmVudDphLHRhcmdldENvbnRhaW5lcnM6W2xdfSxudWxsIT09biYmbnVsbCE9PShuPWVxKG4pKSYmY2EobikpOihlLmV2ZW50U3lzdGVtRmxhZ3N8PXIsbj1lLnRhcmdldENvbnRhaW5lcnMsbnVsbCE9PWwmJi0xPT09bi5pbmRleE9mKGwpJiZuLnB1c2gobCkpLGV9ZnVuY3Rpb24gY3ooZSl7dmFyIG49ZVcoZS50YXJnZXQpO2lmKG51bGwhPT1uKXt2YXIgdD1jKG4pO2lmKG51bGwhPT10KXtpZigxMz09PShuPXQudGFnKSl7aWYobnVsbCE9PShuPWYodCkpKXtlLmJsb2NrZWRPbj1uLGVNKGUucHJpb3JpdHksZnVuY3Rpb24oKXtjbyh0KX0pO3JldHVybn19ZWxzZSBpZigzMT09PW4pe2lmKG51bGwhPT0obj1kKHQpKSl7ZS5ibG9ja2VkT249bixlTShlLnByaW9yaXR5LGZ1bmN0aW9uKCl7Y28odCl9KTtyZXR1cm59fWVsc2UgaWYoMz09PW4mJnQuc3RhdGVOb2RlLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpe2UuYmxvY2tlZE9uPTM9PT10LnRhZz90LnN0YXRlTm9kZS5jb250YWluZXJJbmZvOm51bGw7cmV0dXJufX19ZS5ibG9ja2VkT249bnVsbH1mdW5jdGlvbiBjQyhlKXtpZihudWxsIT09ZS5ibG9ja2VkT24pcmV0dXJuITE7Zm9yKHZhciBuPWUudGFyZ2V0Q29udGFpbmVyczswPG4ubGVuZ3RoOyl7dmFyIHQ9Y2YoZS5uYXRpdmVFdmVudCk7aWYobnVsbCE9PXQpcmV0dXJuIG51bGwhPT0obj1lcSh0KSkmJmNhKG4pLGUuYmxvY2tlZE9uPXQsITE7dmFyIHI9bmV3KHQ9ZS5uYXRpdmVFdmVudCkuY29uc3RydWN0b3IodC50eXBlLHQpO25iPXIsdC50YXJnZXQuZGlzcGF0Y2hFdmVudChyKSxuYj1udWxsLG4uc2hpZnQoKX1yZXR1cm4hMH1mdW5jdGlvbiBjUChlLG4sdCl7Y0MoZSkmJnQuZGVsZXRlKG4pfWZ1bmN0aW9uIGNOKCl7Y2g9ITEsbnVsbCE9PWNnJiZjQyhjZykmJihjZz1udWxsKSxudWxsIT09Y3kmJmNDKGN5KSYmKGN5PW51bGwpLG51bGwhPT1jdiYmY0MoY3YpJiYoY3Y9bnVsbCksY2IuZm9yRWFjaChjUCksY2suZm9yRWFjaChjUCl9ZnVuY3Rpb24gY0woZSxuKXtlLmJsb2NrZWRPbj09PW4mJihlLmJsb2NrZWRPbj1udWxsLGNofHwoY2g9ITAsYS51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrKGEudW5zdGFibGVfTm9ybWFsUHJpb3JpdHksY04pKSl9dmFyIGNUPW51bGw7ZnVuY3Rpb24gY18oZSl7Y1QhPT1lJiYoY1Q9ZSxhLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2soYS51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eSxmdW5jdGlvbigpe2NUPT09ZSYmKGNUPW51bGwpO2Zvcih2YXIgbj0wO248ZS5sZW5ndGg7bis9Myl7dmFyIHQ9ZVtuXSxyPWVbbisxXSxsPWVbbisyXTtpZigiZnVuY3Rpb24iIT10eXBlb2YgcilpZihudWxsPT09Y3Aocnx8dCkpY29udGludWU7ZWxzZSBicmVhazt2YXIgYT1lcSh0KTtudWxsIT09YSYmKGUuc3BsaWNlKG4sMyksbi09MyxhWihhLHtwZW5kaW5nOiEwLGRhdGE6bCxtZXRob2Q6dC5tZXRob2QsYWN0aW9uOnJ9LHIsbCkpfX0pKX1mdW5jdGlvbiBjRihlKXtmdW5jdGlvbiBuKG4pe3JldHVybiBjTChuLGUpfW51bGwhPT1jZyYmY0woY2csZSksbnVsbCE9PWN5JiZjTChjeSxlKSxudWxsIT09Y3YmJmNMKGN2LGUpLGNiLmZvckVhY2gobiksY2suZm9yRWFjaChuKTtmb3IodmFyIHQ9MDt0PGN3Lmxlbmd0aDt0Kyspe3ZhciByPWN3W3RdO3IuYmxvY2tlZE9uPT09ZSYmKHIuYmxvY2tlZE9uPW51bGwpfWZvcig7MDxjdy5sZW5ndGgmJm51bGw9PT0odD1jd1swXSkuYmxvY2tlZE9uOyljeih0KSxudWxsPT09dC5ibG9ja2VkT24mJmN3LnNoaWZ0KCk7aWYobnVsbCE9KHQ9KGUub3duZXJEb2N1bWVudHx8ZSkuJCRyZWFjdEZvcm1SZXBsYXkpKWZvcihyPTA7cjx0Lmxlbmd0aDtyKz0zKXt2YXIgbD10W3JdLGE9dFtyKzFdLG89bFtlSV18fG51bGw7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGEpb3x8Y18odCk7ZWxzZSBpZihvKXt2YXIgdT1udWxsO2lmKGEmJmEuaGFzQXR0cmlidXRlKCJmb3JtQWN0aW9uIikpe2lmKGw9YSxvPWFbZUldfHxudWxsKXU9by5mb3JtQWN0aW9uO2Vsc2UgaWYobnVsbCE9PWNwKGwpKWNvbnRpbnVlfWVsc2UgdT1vLmFjdGlvbjsiZnVuY3Rpb24iPT10eXBlb2YgdT90W3IrMV09dToodC5zcGxpY2UociwzKSxyLT0zKSxjXyh0KX19fWZ1bmN0aW9uIGNEKCl7ZnVuY3Rpb24gZShlKXtlLmNhbkludGVyY2VwdCYmInJlYWN0LXRyYW5zaXRpb24iPT09ZS5pbmZvJiZlLmludGVyY2VwdCh7aGFuZGxlcjpmdW5jdGlvbigpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihlKXtyZXR1cm4gbD1lfSl9LGZvY3VzUmVzZXQ6Im1hbnVhbCIsc2Nyb2xsOiJtYW51YWwifSl9ZnVuY3Rpb24gbigpe251bGwhPT1sJiYobCgpLGw9bnVsbCkscnx8c2V0VGltZW91dCh0LDIwKX1mdW5jdGlvbiB0KCl7aWYoIXImJiFuYXZpZ2F0aW9uLnRyYW5zaXRpb24pe3ZhciBlPW5hdmlnYXRpb24uY3VycmVudEVudHJ5O2UmJm51bGwhPWUudXJsJiZuYXZpZ2F0aW9uLm5hdmlnYXRlKGUudXJsLHtzdGF0ZTplLmdldFN0YXRlKCksaW5mbzoicmVhY3QtdHJhbnNpdGlvbiIsaGlzdG9yeToicmVwbGFjZSJ9KX19aWYoIm9iamVjdCI9PXR5cGVvZiBuYXZpZ2F0aW9uKXt2YXIgcj0hMSxsPW51bGw7cmV0dXJuIG5hdmlnYXRpb24uYWRkRXZlbnRMaXN0ZW5lcigibmF2aWdhdGUiLGUpLG5hdmlnYXRpb24uYWRkRXZlbnRMaXN0ZW5lcigibmF2aWdhdGVzdWNjZXNzIixuKSxuYXZpZ2F0aW9uLmFkZEV2ZW50TGlzdGVuZXIoIm5hdmlnYXRlZXJyb3IiLG4pLHNldFRpbWVvdXQodCwxMDApLGZ1bmN0aW9uKCl7cj0hMCxuYXZpZ2F0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm5hdmlnYXRlIixlKSxuYXZpZ2F0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm5hdmlnYXRlc3VjY2VzcyIsbiksbmF2aWdhdGlvbi5yZW1vdmVFdmVudExpc3RlbmVyKCJuYXZpZ2F0ZWVycm9yIixuKSxudWxsIT09bCYmKGwoKSxsPW51bGwpfX19ZnVuY3Rpb24gY08oZSl7dGhpcy5faW50ZXJuYWxSb290PWV9ZnVuY3Rpb24gY00oZSl7dGhpcy5faW50ZXJuYWxSb290PWV9Y00ucHJvdG90eXBlLnJlbmRlcj1jTy5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMuX2ludGVybmFsUm9vdDtpZihudWxsPT09bil0aHJvdyBFcnJvcihpKDQwOSkpO2N0KG4uY3VycmVudCxpbCgpLGUsbixudWxsLG51bGwpfSxjTS5wcm90b3R5cGUudW5tb3VudD1jTy5wcm90b3R5cGUudW5tb3VudD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2ludGVybmFsUm9vdDtpZihudWxsIT09ZSl7dGhpcy5faW50ZXJuYWxSb290PW51bGw7dmFyIG49ZS5jb250YWluZXJJbmZvO2N0KGUuY3VycmVudCwyLG51bGwsZSxudWxsLG51bGwpLGljKCksbltlVV09bnVsbH19LGNNLnByb3RvdHlwZS51bnN0YWJsZV9zY2hlZHVsZUh5ZHJhdGlvbj1mdW5jdGlvbihlKXtpZihlKXt2YXIgbj1lTygpO2U9e2Jsb2NrZWRPbjpudWxsLHRhcmdldDplLHByaW9yaXR5Om59O2Zvcih2YXIgdD0wO3Q8Y3cubGVuZ3RoJiYwIT09biYmbjxjd1t0XS5wcmlvcml0eTt0KyspO2N3LnNwbGljZSh0LDAsZSksMD09PXQmJmN6KGUpfX07dmFyIGNBPW8udmVyc2lvbjtpZigiMTkuMi4wLWNhbmFyeS0wYmRiOTIwNi0yMDI1MDgxOCIhPT1jQSl0aHJvdyBFcnJvcihpKDUyNyxjQSwiMTkuMi4wLWNhbmFyeS0wYmRiOTIwNi0yMDI1MDgxOCIpKTtpZihNLmZpbmRET01Ob2RlPWZ1bmN0aW9uKGUpe3ZhciBuPWUuX3JlYWN0SW50ZXJuYWxzO2lmKHZvaWQgMD09PW4pe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBlLnJlbmRlcil0aHJvdyBFcnJvcihpKDE4OCkpO3Rocm93IEVycm9yKGkoMjY4LGU9T2JqZWN0LmtleXMoZSkuam9pbigiLCIpKSl9cmV0dXJuIG51bGw9PT0oZT1udWxsIT09KGU9ZnVuY3Rpb24oZSl7dmFyIG49ZS5hbHRlcm5hdGU7aWYoIW4pe2lmKG51bGw9PT0obj1jKGUpKSl0aHJvdyBFcnJvcihpKDE4OCkpO3JldHVybiBuIT09ZT9udWxsOmV9Zm9yKHZhciB0PWUscj1uOzspe3ZhciBsPXQucmV0dXJuO2lmKG51bGw9PT1sKWJyZWFrO3ZhciBhPWwuYWx0ZXJuYXRlO2lmKG51bGw9PT1hKXtpZihudWxsIT09KHI9bC5yZXR1cm4pKXt0PXI7Y29udGludWV9YnJlYWt9aWYobC5jaGlsZD09PWEuY2hpbGQpe2ZvcihhPWwuY2hpbGQ7YTspe2lmKGE9PT10KXJldHVybiBwKGwpLGU7aWYoYT09PXIpcmV0dXJuIHAobCksbjthPWEuc2libGluZ310aHJvdyBFcnJvcihpKDE4OCkpfWlmKHQucmV0dXJuIT09ci5yZXR1cm4pdD1sLHI9YTtlbHNle2Zvcih2YXIgbz0hMSx1PWwuY2hpbGQ7dTspe2lmKHU9PT10KXtvPSEwLHQ9bCxyPWE7YnJlYWt9aWYodT09PXIpe289ITAscj1sLHQ9YTticmVha311PXUuc2libGluZ31pZighbyl7Zm9yKHU9YS5jaGlsZDt1Oyl7aWYodT09PXQpe289ITAsdD1hLHI9bDticmVha31pZih1PT09cil7bz0hMCxyPWEsdD1sO2JyZWFrfXU9dS5zaWJsaW5nfWlmKCFvKXRocm93IEVycm9yKGkoMTg5KSl9fWlmKHQuYWx0ZXJuYXRlIT09cil0aHJvdyBFcnJvcihpKDE5MCkpfWlmKDMhPT10LnRhZyl0aHJvdyBFcnJvcihpKDE4OCkpO3JldHVybiB0LnN0YXRlTm9kZS5jdXJyZW50PT09dD9lOm59KG4pKT9mdW5jdGlvbiBlKG4pe3ZhciB0PW4udGFnO2lmKDU9PT10fHwyNj09PXR8fDI3PT09dHx8Nj09PXQpcmV0dXJuIG47Zm9yKG49bi5jaGlsZDtudWxsIT09bjspe2lmKG51bGwhPT0odD1lKG4pKSlyZXR1cm4gdDtuPW4uc2libGluZ31yZXR1cm4gbnVsbH0oZSk6bnVsbCk/bnVsbDplLnN0YXRlTm9kZX0sInVuZGVmaW5lZCIhPXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18pe3ZhciBjUj1fX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX187aWYoIWNSLmlzRGlzYWJsZWQmJmNSLnN1cHBvcnRzRmliZXIpdHJ5e2VtPWNSLmluamVjdCh7YnVuZGxlVHlwZTowLHZlcnNpb246IjE5LjIuMC1jYW5hcnktMGJkYjkyMDYtMjAyNTA4MTgiLHJlbmRlcmVyUGFja2FnZU5hbWU6InJlYWN0LWRvbSIsY3VycmVudERpc3BhdGNoZXJSZWY6TyxyZWNvbmNpbGVyVmVyc2lvbjoiMTkuMi4wLWNhbmFyeS0wYmRiOTIwNi0yMDI1MDgxOCJ9KSxlaD1jUn1jYXRjaChlKXt9fW4uY3JlYXRlUm9vdD1mdW5jdGlvbihlLG4pe2lmKCFzKGUpKXRocm93IEVycm9yKGkoMjk5KSk7dmFyIHQ9ITEscj0iIixsPW9mLGE9b2Qsbz1vcDtyZXR1cm4gbnVsbCE9biYmKCEwPT09bi51bnN0YWJsZV9zdHJpY3RNb2RlJiYodD0hMCksdm9pZCAwIT09bi5pZGVudGlmaWVyUHJlZml4JiYocj1uLmlkZW50aWZpZXJQcmVmaXgpLHZvaWQgMCE9PW4ub25VbmNhdWdodEVycm9yJiYobD1uLm9uVW5jYXVnaHRFcnJvciksdm9pZCAwIT09bi5vbkNhdWdodEVycm9yJiYoYT1uLm9uQ2F1Z2h0RXJyb3IpLHZvaWQgMCE9PW4ub25SZWNvdmVyYWJsZUVycm9yJiYobz1uLm9uUmVjb3ZlcmFibGVFcnJvcikpLG49Y24oZSwxLCExLG51bGwsbnVsbCx0LHIsbnVsbCxsLGEsbyxjRCksZVtlVV09bi5jdXJyZW50LGk3KGUpLG5ldyBjTyhuKX0sbi5oeWRyYXRlUm9vdD1mdW5jdGlvbihlLG4sdCl7aWYoIXMoZSkpdGhyb3cgRXJyb3IoaSgyOTkpKTt2YXIgcixsPSExLGE9IiIsbz1vZix1PW9kLGM9b3AsZj1udWxsO3JldHVybiBudWxsIT10JiYoITA9PT10LnVuc3RhYmxlX3N0cmljdE1vZGUmJihsPSEwKSx2b2lkIDAhPT10LmlkZW50aWZpZXJQcmVmaXgmJihhPXQuaWRlbnRpZmllclByZWZpeCksdm9pZCAwIT09dC5vblVuY2F1Z2h0RXJyb3ImJihvPXQub25VbmNhdWdodEVycm9yKSx2b2lkIDAhPT10Lm9uQ2F1Z2h0RXJyb3ImJih1PXQub25DYXVnaHRFcnJvciksdm9pZCAwIT09dC5vblJlY292ZXJhYmxlRXJyb3ImJihjPXQub25SZWNvdmVyYWJsZUVycm9yKSx2b2lkIDAhPT10LmZvcm1TdGF0ZSYmKGY9dC5mb3JtU3RhdGUpKSwobj1jbihlLDEsITAsbixudWxsIT10P3Q6bnVsbCxsLGEsZixvLHUsYyxjRCkpLmNvbnRleHQ9KHI9bnVsbCxyZSksdD1uLmN1cnJlbnQsKGE9bEMobD1lRihsPWlsKCkpKSkuY2FsbGJhY2s9bnVsbCxsUCh0LGEsbCksdD1sLG4uY3VycmVudC5sYW5lcz10LGVOKG4sdCksaUIobiksZVtlVV09bi5jdXJyZW50LGk3KGUpLG5ldyBjTShuKX0sbi52ZXJzaW9uPSIxOS4yLjAtY2FuYXJ5LTBiZGI5MjA2LTIwMjUwODE4In19XSk7"}},"time_used":151,"timings":{"blocked":-1,"dns":0,"connect":24,"send":0,"wait":50,"receive":50,"ssl":27},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"maxvectornew.com/_next/static/chunks/255-eb4aecc3ff015961.js","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://maxvectornew.com/t/1c8a8","date":"2026-07-26T17:18:27.381Z","timestamp":1785086307381,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"maxvectornew.com","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Jul 2026 17:54:44 GMT","end":"Fri, 23 Oct 2026 17:54:43 GMT"},"fingerprint":{"sha1":"3B:96:C0:C6:0F:0B:DE:CC:96:A0:22:3D:32:F5:17:2C:CD:5C:51:6B","sha256":"D3:F9:21:6A:45:1A:9A:BA:92:79:1E:6E:03:85:1A:0C:B8:AD:05:18:FA:FC:60:41:98:38:87:32:B5:B9:EA:D1"}}},"request":{"raw":"GET /_next/static/chunks/255-eb4aecc3ff015961.js HTTP/1.1\r\nHost: maxvectornew.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://maxvectornew.com/t/1c8a8\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/1.1 200 OK\r\nServer: nginx/1.27.5\r\nDate: Sun, 26 Jul 2026 17:18:27 GMT\r\nContent-Type: text/javascript; charset=utf-8\r\nContent-Length: 173611\r\nConnection: keep-alive\r\nAccept-Ranges: bytes\r\nCache-Control: public, max-age=31536000, immutable\r\nLast-Modified: Sat, 25 Jul 2026 20:35:12 GMT\r\nETag: W/\"2a62b-19f9afd327e\"\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx:1.27.5","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":173611,"size_decoded":173932,"mime_type":"text/javascript; charset=utf-8","magic":"JavaScript source, ASCII text, with very long lines (65536), with no line terminators","md5":"5ae9c0ec95cdd00ec0d1fa269321a174","sha1":"90bd42546ce8f32dcd4074e559231654473d0156","sha256":"bfd934c48ee7007bb34cb98078ea6ba5dcef5d8a8f4ffc2103dc174409680c7b","sha512":"4b09cbebc1245ee789381b0f8b40b81b201c5fde65d5aac05c775e7850688069dfb6e54543b00ffb14377faff800392fb09fa43b3dff549145246396226f1c02","ssdeep":"1536:rh7TN+Izz+cHr6U3lHm0dS/7ZcyBPo7ecq0MEsiTtSocZXxreXRNwrky/SQhuzQP:9TN+UrFA0YLwF5W4RNsz/SQuLi","tlshash":"8e04dab676d0f8e107a780e5843b400af3295c37146f74a0a3e6dcd975605dea1b3faa","first_seen":"2026-06-06T02:29:26.375182Z","last_seen":"2026-07-26T17:20:04.030649Z","times_seen":76,"resource_available":true,"data":"KHNlbGYud2VicGFja0NodW5rX05fRT1zZWxmLndlYnBhY2tDaHVua19OX0V8fFtdKS5wdXNoKFtbMjU1XSx7NzU6KGUsdCk9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtsZXQgdD01MzgxO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKXQ9KHQ8PDUpK3QrZS5jaGFyQ29kZUF0KHIpfDA7cmV0dXJuIHQ+Pj4wfWZ1bmN0aW9uIG4oZSl7cmV0dXJuIHIoZSkudG9TdHJpbmcoMzYpLnNsaWNlKDAsNSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLCFmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIse2VudW1lcmFibGU6ITAsZ2V0OnRbcl19KX0odCx7ZGpiMkhhc2g6ZnVuY3Rpb24oKXtyZXR1cm4gcn0saGV4SGFzaDpmdW5jdGlvbigpe3JldHVybiBufX0pfSwzMDc6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImNyZWF0ZVJlbmRlclBhcmFtc0Zyb21DbGllbnQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBufX0pO2xldCBuPXIoNzM3MCkuY3JlYXRlUmVuZGVyUGFyYW1zRnJvbUNsaWVudDsoImZ1bmN0aW9uIj09dHlwZW9mIHQuZGVmYXVsdHx8Im9iamVjdCI9PXR5cGVvZiB0LmRlZmF1bHQmJm51bGwhPT10LmRlZmF1bHQpJiZ2b2lkIDA9PT10LmRlZmF1bHQuX19lc01vZHVsZSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpLGUuZXhwb3J0cz10LmRlZmF1bHQpfSwzOTY6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksIWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIHQpT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7ZW51bWVyYWJsZTohMCxnZXQ6dFtyXX0pfSh0LHtzZXRDYWNoZUJ1c3RpbmdTZWFyY2hQYXJhbTpmdW5jdGlvbigpe3JldHVybiBsfSxzZXRDYWNoZUJ1c3RpbmdTZWFyY2hQYXJhbVdpdGhIYXNoOmZ1bmN0aW9uKCl7cmV0dXJuIGF9fSk7bGV0IG49cigzNDg1KSx1PXIoMjQ4Nik7YXN5bmMgZnVuY3Rpb24gbyhlKXt2YXIgdCxyO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZihudWxsPT0ocj1nbG9iYWxUaGlzLmNyeXB0byl8fG51bGw9PSh0PXIuc3VidGxlKT92b2lkIDA6dC5kaWdlc3QpPygwLG4uY29tcHV0ZUNhY2hlQnVzdGluZ1NlYXJjaFBhcmFtKShlW3UuTkVYVF9ST1VURVJfUFJFRkVUQ0hfSEVBREVSXSxlW3UuTkVYVF9ST1VURVJfU0VHTUVOVF9QUkVGRVRDSF9IRUFERVJdLGVbdS5ORVhUX1JPVVRFUl9TVEFURV9UUkVFX0hFQURFUl0sZVt1Lk5FWFRfVVJMXSk6KDAsbi5jb21wdXRlTGVnYWN5Q2FjaGVCdXN0aW5nU2VhcmNoUGFyYW0pKGVbdS5ORVhUX1JPVVRFUl9QUkVGRVRDSF9IRUFERVJdLGVbdS5ORVhUX1JPVVRFUl9TRUdNRU5UX1BSRUZFVENIX0hFQURFUl0sZVt1Lk5FWFRfUk9VVEVSX1NUQVRFX1RSRUVfSEVBREVSXSxlW3UuTkVYVF9VUkxdKX1sZXQgbD1hc3luYyhlLHQpPT57YShlLGF3YWl0IG8odCkpfSxhPShlLHQpPT57bGV0IHI9ZS5zZWFyY2gsbj0oci5zdGFydHNXaXRoKCI/Iik/ci5zbGljZSgxKTpyKS5zcGxpdCgiJiIpLmZpbHRlcihlPT5lJiYhZS5zdGFydHNXaXRoKCIiK3UuTkVYVF9SU0NfVU5JT05fUVVFUlkrIj0iKSk7dC5sZW5ndGg+MD9uLnB1c2godS5ORVhUX1JTQ19VTklPTl9RVUVSWSsiPSIrdCk6bi5wdXNoKCIiK3UuTkVYVF9SU0NfVU5JT05fUVVFUlkpLGUuc2VhcmNoPW4ubGVuZ3RoPyI/IituLmpvaW4oIiYiKToiIn07KCJmdW5jdGlvbiI9PXR5cGVvZiB0LmRlZmF1bHR8fCJvYmplY3QiPT10eXBlb2YgdC5kZWZhdWx0JiZudWxsIT09dC5kZWZhdWx0KSYmdm9pZCAwPT09dC5kZWZhdWx0Ll9fZXNNb2R1bGUmJihPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KSxlLmV4cG9ydHM9dC5kZWZhdWx0KX0sNTMxOihlLHQscik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLCFmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIse2VudW1lcmFibGU6ITAsZ2V0OnRbcl19KX0odCx7UmVkaXJlY3RCb3VuZGFyeTpmdW5jdGlvbigpe3JldHVybiBmfSxSZWRpcmVjdEVycm9yQm91bmRhcnk6ZnVuY3Rpb24oKXtyZXR1cm4gc319KTtsZXQgbj1yKDk0MTcpLHU9cig1MTU1KSxvPW4uXyhyKDIxMTUpKSxsPXIoNzI2MCksYT1yKDY1NDIpLGk9cig2NDM3KTtmdW5jdGlvbiBjKGUpe2xldHtyZWRpcmVjdDp0LHJlc2V0OnIscmVkaXJlY3RUeXBlOm59PWUsdT0oMCxsLnVzZVJvdXRlcikoKTtyZXR1cm4oMCxvLnVzZUVmZmVjdCkoKCk9PntvLmRlZmF1bHQuc3RhcnRUcmFuc2l0aW9uKCgpPT57bj09PWkuUmVkaXJlY3RUeXBlLnB1c2g/dS5wdXNoKHQse30pOnUucmVwbGFjZSh0LHt9KSxyKCl9KX0sW3QsbixyLHVdKSxudWxsfWNsYXNzIHMgZXh0ZW5kcyBvLmRlZmF1bHQuQ29tcG9uZW50e3N0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IoZSl7aWYoKDAsaS5pc1JlZGlyZWN0RXJyb3IpKGUpKXJldHVybntyZWRpcmVjdDooMCxhLmdldFVSTEZyb21SZWRpcmVjdEVycm9yKShlKSxyZWRpcmVjdFR5cGU6KDAsYS5nZXRSZWRpcmVjdFR5cGVGcm9tRXJyb3IpKGUpfTt0aHJvdyBlfXJlbmRlcigpe2xldHtyZWRpcmVjdDplLHJlZGlyZWN0VHlwZTp0fT10aGlzLnN0YXRlO3JldHVybiBudWxsIT09ZSYmbnVsbCE9PXQ/KDAsdS5qc3gpKGMse3JlZGlyZWN0OmUscmVkaXJlY3RUeXBlOnQscmVzZXQ6KCk9PnRoaXMuc2V0U3RhdGUoe3JlZGlyZWN0Om51bGx9KX0pOnRoaXMucHJvcHMuY2hpbGRyZW59Y29uc3RydWN0b3IoZSl7c3VwZXIoZSksdGhpcy5zdGF0ZT17cmVkaXJlY3Q6bnVsbCxyZWRpcmVjdFR5cGU6bnVsbH19fWZ1bmN0aW9uIGYoZSl7bGV0e2NoaWxkcmVuOnR9PWUscj0oMCxsLnVzZVJvdXRlcikoKTtyZXR1cm4oMCx1LmpzeCkocyx7cm91dGVyOnIsY2hpbGRyZW46dH0pfSgiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDUzNTooKT0+eyJ0cmltU3RhcnQiaW4gU3RyaW5nLnByb3RvdHlwZXx8KFN0cmluZy5wcm90b3R5cGUudHJpbVN0YXJ0PVN0cmluZy5wcm90b3R5cGUudHJpbUxlZnQpLCJ0cmltRW5kImluIFN0cmluZy5wcm90b3R5cGV8fChTdHJpbmcucHJvdG90eXBlLnRyaW1FbmQ9U3RyaW5nLnByb3RvdHlwZS50cmltUmlnaHQpLCJkZXNjcmlwdGlvbiJpbiBTeW1ib2wucHJvdG90eXBlfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoU3ltYm9sLnByb3RvdHlwZSwiZGVzY3JpcHRpb24iLHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7dmFyIGU9L1woKC4qKVwpLy5leGVjKHRoaXMudG9TdHJpbmcoKSk7cmV0dXJuIGU/ZVsxXTp2b2lkIDB9fSksQXJyYXkucHJvdG90eXBlLmZsYXR8fChBcnJheS5wcm90b3R5cGUuZmxhdD1mdW5jdGlvbihlLHQpe3JldHVybiB0PXRoaXMuY29uY2F0LmFwcGx5KFtdLHRoaXMpLGU+MSYmdC5zb21lKEFycmF5LmlzQXJyYXkpP3QuZmxhdChlLTEpOnR9LEFycmF5LnByb3RvdHlwZS5mbGF0TWFwPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMubWFwKGUsdCkuZmxhdCgpfSksUHJvbWlzZS5wcm90b3R5cGUuZmluYWxseXx8KFByb21pc2UucHJvdG90eXBlLmZpbmFsbHk9ZnVuY3Rpb24oZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpcmV0dXJuIHRoaXMudGhlbihlLGUpO3ZhciB0PXRoaXMuY29uc3RydWN0b3J8fFByb21pc2U7cmV0dXJuIHRoaXMudGhlbihmdW5jdGlvbihyKXtyZXR1cm4gdC5yZXNvbHZlKGUoKSkudGhlbihmdW5jdGlvbigpe3JldHVybiByfSl9LGZ1bmN0aW9uKHIpe3JldHVybiB0LnJlc29sdmUoZSgpKS50aGVuKGZ1bmN0aW9uKCl7dGhyb3cgcn0pfSl9KSxPYmplY3QuZnJvbUVudHJpZXN8fChPYmplY3QuZnJvbUVudHJpZXM9ZnVuY3Rpb24oZSl7cmV0dXJuIEFycmF5LmZyb20oZSkucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGVbdFswXV09dFsxXSxlfSx7fSl9KSxBcnJheS5wcm90b3R5cGUuYXR8fChBcnJheS5wcm90b3R5cGUuYXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9TWF0aC50cnVuYyhlKXx8MDtpZih0PDAmJih0Kz10aGlzLmxlbmd0aCksISh0PDB8fHQ+PXRoaXMubGVuZ3RoKSlyZXR1cm4gdGhpc1t0XX0pLE9iamVjdC5oYXNPd258fChPYmplY3QuaGFzT3duPWZ1bmN0aW9uKGUsdCl7aWYobnVsbD09ZSl0aHJvdyBUeXBlRXJyb3IoIkNhbm5vdCBjb252ZXJ0IHVuZGVmaW5lZCBvciBudWxsIHRvIG9iamVjdCIpO3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoT2JqZWN0KGUpLHQpfSksImNhblBhcnNlImluIFVSTHx8KFVSTC5jYW5QYXJzZT1mdW5jdGlvbihlLHQpe3RyeXtyZXR1cm4gbmV3IFVSTChlLHQpLCEwfWNhdGNoKGUpe3JldHVybiExfX0pfSw1NDM6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksIWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIHQpT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7ZW51bWVyYWJsZTohMCxnZXQ6dFtyXX0pfSh0LHtmaWxsQ2FjaGVXaXRoTmV3U3ViVHJlZURhdGE6ZnVuY3Rpb24oKXtyZXR1cm4gaX0sZmlsbENhY2hlV2l0aE5ld1N1YlRyZWVEYXRhQnV0T25seUxvYWRpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gY319KTtsZXQgbj1yKDQyMDEpLHU9cig2MzcpLG89cig5MTkwKSxsPXIoNTM2MCk7ZnVuY3Rpb24gYShlLHQscixhLGksYyl7bGV0e3NlZ21lbnRQYXRoOnMsc2VlZERhdGE6Zix0cmVlOmQsaGVhZDpwfT1hLGg9dCxfPXI7Zm9yKGxldCB0PTA7dDxzLmxlbmd0aDt0Kz0yKXtsZXQgcj1zW3RdLGE9c1t0KzFdLHk9dD09PXMubGVuZ3RoLTIsYj0oMCxvLmNyZWF0ZVJvdXRlckNhY2hlS2V5KShhKSx2PV8ucGFyYWxsZWxSb3V0ZXMuZ2V0KHIpO2lmKCF2KWNvbnRpbnVlO2xldCBnPWgucGFyYWxsZWxSb3V0ZXMuZ2V0KHIpO2cmJmchPT12fHwoZz1uZXcgTWFwKHYpLGgucGFyYWxsZWxSb3V0ZXMuc2V0KHIsZykpO2xldCBtPXYuZ2V0KGIpLFI9Zy5nZXQoYik7aWYoeSl7aWYoZiYmKCFSfHwhUi5sYXp5RGF0YXx8Uj09PW0pKXtsZXQgdD1mWzBdLHI9ZlsxXSxvPWZbM107Uj17bGF6eURhdGE6bnVsbCxyc2M6Y3x8dCE9PWwuUEFHRV9TRUdNRU5UX0tFWT9yOm51bGwscHJlZmV0Y2hSc2M6bnVsbCxoZWFkOm51bGwscHJlZmV0Y2hIZWFkOm51bGwsbG9hZGluZzpvLHBhcmFsbGVsUm91dGVzOmMmJm0/bmV3IE1hcChtLnBhcmFsbGVsUm91dGVzKTpuZXcgTWFwLG5hdmlnYXRlZEF0OmV9LG0mJmMmJigwLG4uaW52YWxpZGF0ZUNhY2hlQnlSb3V0ZXJTdGF0ZSkoUixtLGQpLGMmJigwLHUuZmlsbExhenlJdGVtc1RpbGxMZWFmV2l0aEhlYWQpKGUsUixtLGQsZixwLGkpLGcuc2V0KGIsUil9Y29udGludWV9UiYmbSYmKFI9PT1tJiYoUj17bGF6eURhdGE6Ui5sYXp5RGF0YSxyc2M6Ui5yc2MscHJlZmV0Y2hSc2M6Ui5wcmVmZXRjaFJzYyxoZWFkOlIuaGVhZCxwcmVmZXRjaEhlYWQ6Ui5wcmVmZXRjaEhlYWQscGFyYWxsZWxSb3V0ZXM6bmV3IE1hcChSLnBhcmFsbGVsUm91dGVzKSxsb2FkaW5nOlIubG9hZGluZ30sZy5zZXQoYixSKSksaD1SLF89bSl9fWZ1bmN0aW9uIGkoZSx0LHIsbix1KXthKGUsdCxyLG4sdSwhMCl9ZnVuY3Rpb24gYyhlLHQscixuLHUpe2EoZSx0LHIsbix1LCExKX0oImZ1bmN0aW9uIj09dHlwZW9mIHQuZGVmYXVsdHx8Im9iamVjdCI9PXR5cGVvZiB0LmRlZmF1bHQmJm51bGwhPT10LmRlZmF1bHQpJiZ2b2lkIDA9PT10LmRlZmF1bHQuX19lc01vZHVsZSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpLGUuZXhwb3J0cz10LmRlZmF1bHQpfSw2MjI6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkljb25NYXJrIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbn19KSxyKDUxNTUpO2xldCBuPSgpPT5udWxsfSw2Mzc6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImZpbGxMYXp5SXRlbXNUaWxsTGVhZldpdGhIZWFkIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gZSh0LHIsbyxsLGEsaSxjKXtpZigwPT09T2JqZWN0LmtleXMobFsxXSkubGVuZ3RoKXtyLmhlYWQ9aTtyZXR1cm59Zm9yKGxldCBzIGluIGxbMV0pe2xldCBmLGQ9bFsxXVtzXSxwPWRbMF0saD0oMCxuLmNyZWF0ZVJvdXRlckNhY2hlS2V5KShwKSxfPW51bGwhPT1hJiZ2b2lkIDAhPT1hWzJdW3NdP2FbMl1bc106bnVsbDtpZihvKXtsZXQgbj1vLnBhcmFsbGVsUm91dGVzLmdldChzKTtpZihuKXtsZXQgbyxsPShudWxsPT1jP3ZvaWQgMDpjLmtpbmQpPT09ImF1dG8iJiZjLnN0YXR1cz09PXUuUHJlZmV0Y2hDYWNoZUVudHJ5U3RhdHVzLnJldXNhYmxlLGE9bmV3IE1hcChuKSxmPWEuZ2V0KGgpO289bnVsbCE9PV8/e2xhenlEYXRhOm51bGwscnNjOl9bMV0scHJlZmV0Y2hSc2M6bnVsbCxoZWFkOm51bGwscHJlZmV0Y2hIZWFkOm51bGwsbG9hZGluZzpfWzNdLHBhcmFsbGVsUm91dGVzOm5ldyBNYXAobnVsbD09Zj92b2lkIDA6Zi5wYXJhbGxlbFJvdXRlcyksbmF2aWdhdGVkQXQ6dH06bCYmZj97bGF6eURhdGE6Zi5sYXp5RGF0YSxyc2M6Zi5yc2MscHJlZmV0Y2hSc2M6Zi5wcmVmZXRjaFJzYyxoZWFkOmYuaGVhZCxwcmVmZXRjaEhlYWQ6Zi5wcmVmZXRjaEhlYWQscGFyYWxsZWxSb3V0ZXM6bmV3IE1hcChmLnBhcmFsbGVsUm91dGVzKSxsb2FkaW5nOmYubG9hZGluZ306e2xhenlEYXRhOm51bGwscnNjOm51bGwscHJlZmV0Y2hSc2M6bnVsbCxoZWFkOm51bGwscHJlZmV0Y2hIZWFkOm51bGwscGFyYWxsZWxSb3V0ZXM6bmV3IE1hcChudWxsPT1mP3ZvaWQgMDpmLnBhcmFsbGVsUm91dGVzKSxsb2FkaW5nOm51bGwsbmF2aWdhdGVkQXQ6dH0sYS5zZXQoaCxvKSxlKHQsbyxmLGQsX3x8bnVsbCxpLGMpLHIucGFyYWxsZWxSb3V0ZXMuc2V0KHMsYSk7Y29udGludWV9fWlmKG51bGwhPT1fKXtsZXQgZT1fWzFdLHI9X1szXTtmPXtsYXp5RGF0YTpudWxsLHJzYzplLHByZWZldGNoUnNjOm51bGwsaGVhZDpudWxsLHByZWZldGNoSGVhZDpudWxsLHBhcmFsbGVsUm91dGVzOm5ldyBNYXAsbG9hZGluZzpyLG5hdmlnYXRlZEF0OnR9fWVsc2UgZj17bGF6eURhdGE6bnVsbCxyc2M6bnVsbCxwcmVmZXRjaFJzYzpudWxsLGhlYWQ6bnVsbCxwcmVmZXRjaEhlYWQ6bnVsbCxwYXJhbGxlbFJvdXRlczpuZXcgTWFwLGxvYWRpbmc6bnVsbCxuYXZpZ2F0ZWRBdDp0fTtsZXQgeT1yLnBhcmFsbGVsUm91dGVzLmdldChzKTt5P3kuc2V0KGgsZik6ci5wYXJhbGxlbFJvdXRlcy5zZXQocyxuZXcgTWFwKFtbaCxmXV0pKSxlKHQsZix2b2lkIDAsZCxfLGksYyl9fX19KTtsZXQgbj1yKDkxOTApLHU9cig2ODcxKTsoImZ1bmN0aW9uIj09dHlwZW9mIHQuZGVmYXVsdHx8Im9iamVjdCI9PXR5cGVvZiB0LmRlZmF1bHQmJm51bGwhPT10LmRlZmF1bHQpJiZ2b2lkIDA9PT10LmRlZmF1bHQuX19lc01vZHVsZSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpLGUuZXhwb3J0cz10LmRlZmF1bHQpfSw4MzY6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImZpbmRIZWFkSW5DYWNoZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG99fSk7bGV0IG49cig1MzYwKSx1PXIoOTE5MCk7ZnVuY3Rpb24gbyhlLHQpe3JldHVybiBmdW5jdGlvbiBlKHQscixvLGwpe2lmKDA9PT1PYmplY3Qua2V5cyhyKS5sZW5ndGgpcmV0dXJuW3QsbyxsXTtsZXQgYT1PYmplY3Qua2V5cyhyKS5maWx0ZXIoZT0+ImNoaWxkcmVuIiE9PWUpO2ZvcihsZXQgbCBvZigiY2hpbGRyZW4iaW4gciYmYS51bnNoaWZ0KCJjaGlsZHJlbiIpLGEpKXtsZXRbYSxpXT1yW2xdO2lmKGE9PT1uLkRFRkFVTFRfU0VHTUVOVF9LRVkpY29udGludWU7bGV0IGM9dC5wYXJhbGxlbFJvdXRlcy5nZXQobCk7aWYoIWMpY29udGludWU7bGV0IHM9KDAsdS5jcmVhdGVSb3V0ZXJDYWNoZUtleSkoYSksZj0oMCx1LmNyZWF0ZVJvdXRlckNhY2hlS2V5KShhLCEwKSxkPWMuZ2V0KHMpO2lmKCFkKWNvbnRpbnVlO2xldCBwPWUoZCxpLG8rIi8iK3MsbysiLyIrZik7aWYocClyZXR1cm4gcH1yZXR1cm4gbnVsbH0oZSx0LCIiLCIiKX0oImZ1bmN0aW9uIj09dHlwZW9mIHQuZGVmYXVsdHx8Im9iamVjdCI9PXR5cGVvZiB0LmRlZmF1bHQmJm51bGwhPT10LmRlZmF1bHQpJiZ2b2lkIDA9PT10LmRlZmF1bHQuX19lc01vZHVsZSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpLGUuZXhwb3J0cz10LmRlZmF1bHQpfSw4OTU6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImFwcGx5Um91dGVyU3RhdGVQYXRjaFRvVHJlZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGUodCxyLG4saSl7bGV0IGMsW3MsZixkLHAsaF09cjtpZigxPT09dC5sZW5ndGgpe2xldCBlPWEocixuKTtyZXR1cm4oMCxsLmFkZFJlZnJlc2hNYXJrZXJUb0FjdGl2ZVBhcmFsbGVsU2VnbWVudHMpKGUsaSksZX1sZXRbXyx5XT10O2lmKCEoMCxvLm1hdGNoU2VnbWVudCkoXyxzKSlyZXR1cm4gbnVsbDtpZigyPT09dC5sZW5ndGgpYz1hKGZbeV0sbik7ZWxzZSBpZihudWxsPT09KGM9ZSgoMCx1LmdldE5leHRGbGlnaHRTZWdtZW50UGF0aCkodCksZlt5XSxuLGkpKSlyZXR1cm4gbnVsbDtsZXQgYj1bdFswXSx7Li4uZixbeV06Y30sZCxwXTtyZXR1cm4gaCYmKGJbNF09ITApLCgwLGwuYWRkUmVmcmVzaE1hcmtlclRvQWN0aXZlUGFyYWxsZWxTZWdtZW50cykoYixpKSxifX19KTtsZXQgbj1yKDUzNjApLHU9cig2Mzc4KSxvPXIoNzQ2MCksbD1yKDM1OTcpO2Z1bmN0aW9uIGEoZSx0KXtsZXRbcix1XT1lLFtsLGldPXQ7aWYobD09PW4uREVGQVVMVF9TRUdNRU5UX0tFWSYmciE9PW4uREVGQVVMVF9TRUdNRU5UX0tFWSlyZXR1cm4gZTtpZigoMCxvLm1hdGNoU2VnbWVudCkocixsKSl7bGV0IHQ9e307Zm9yKGxldCBlIGluIHUpdm9pZCAwIT09aVtlXT90W2VdPWEodVtlXSxpW2VdKTp0W2VdPXVbZV07Zm9yKGxldCBlIGluIGkpdFtlXXx8KHRbZV09aVtlXSk7bGV0IG49W3IsdF07cmV0dXJuIGVbMl0mJihuWzJdPWVbMl0pLGVbM10mJihuWzNdPWVbM10pLGVbNF0mJihuWzRdPWVbNF0pLG59cmV0dXJuIHR9KCJmdW5jdGlvbiI9PXR5cGVvZiB0LmRlZmF1bHR8fCJvYmplY3QiPT10eXBlb2YgdC5kZWZhdWx0JiZudWxsIT09dC5kZWZhdWx0KSYmdm9pZCAwPT09dC5kZWZhdWx0Ll9fZXNNb2R1bGUmJihPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KSxlLmV4cG9ydHM9dC5kZWZhdWx0KX0sMTA5OTooZSx0KT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIlJlZGlyZWN0U3RhdHVzQ29kZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHJ9fSk7dmFyIHI9ZnVuY3Rpb24oZSl7cmV0dXJuIGVbZS5TZWVPdGhlcj0zMDNdPSJTZWVPdGhlciIsZVtlLlRlbXBvcmFyeVJlZGlyZWN0PTMwN109IlRlbXBvcmFyeVJlZGlyZWN0IixlW2UuUGVybWFuZW50UmVkaXJlY3Q9MzA4XT0iUGVybWFuZW50UmVkaXJlY3QiLGV9KHt9KTsoImZ1bmN0aW9uIj09dHlwZW9mIHQuZGVmYXVsdHx8Im9iamVjdCI9PXR5cGVvZiB0LmRlZmF1bHQmJm51bGwhPT10LmRlZmF1bHQpJiZ2b2lkIDA9PT10LmRlZmF1bHQuX19lc01vZHVsZSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpLGUuZXhwb3J0cz10LmRlZmF1bHQpfSwxMTI2OihlLHQscik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJoYW5kbGVNdXRhYmxlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gb319KTtsZXQgbj1yKDYzNDMpO2Z1bmN0aW9uIHUoZSl7cmV0dXJuIHZvaWQgMCE9PWV9ZnVuY3Rpb24gbyhlLHQpe3ZhciByLG87bGV0IGw9bnVsbD09KHI9dC5zaG91bGRTY3JvbGwpfHxyLGE9ZS5uZXh0VXJsO2lmKHUodC5wYXRjaGVkVHJlZSkpe2xldCByPSgwLG4uY29tcHV0ZUNoYW5nZWRQYXRoKShlLnRyZWUsdC5wYXRjaGVkVHJlZSk7cj9hPXI6YXx8KGE9ZS5jYW5vbmljYWxVcmwpfXJldHVybntjYW5vbmljYWxVcmw6dSh0LmNhbm9uaWNhbFVybCk/dC5jYW5vbmljYWxVcmw9PT1lLmNhbm9uaWNhbFVybD9lLmNhbm9uaWNhbFVybDp0LmNhbm9uaWNhbFVybDplLmNhbm9uaWNhbFVybCxwdXNoUmVmOntwZW5kaW5nUHVzaDp1KHQucGVuZGluZ1B1c2gpP3QucGVuZGluZ1B1c2g6ZS5wdXNoUmVmLnBlbmRpbmdQdXNoLG1wYU5hdmlnYXRpb246dSh0Lm1wYU5hdmlnYXRpb24pP3QubXBhTmF2aWdhdGlvbjplLnB1c2hSZWYubXBhTmF2aWdhdGlvbixwcmVzZXJ2ZUN1c3RvbUhpc3RvcnlTdGF0ZTp1KHQucHJlc2VydmVDdXN0b21IaXN0b3J5U3RhdGUpP3QucHJlc2VydmVDdXN0b21IaXN0b3J5U3RhdGU6ZS5wdXNoUmVmLnByZXNlcnZlQ3VzdG9tSGlzdG9yeVN0YXRlfSxmb2N1c0FuZFNjcm9sbFJlZjp7YXBwbHk6ISFsJiYoISF1KG51bGw9PXQ/dm9pZCAwOnQuc2Nyb2xsYWJsZVNlZ21lbnRzKXx8ZS5mb2N1c0FuZFNjcm9sbFJlZi5hcHBseSksb25seUhhc2hDaGFuZ2U6dC5vbmx5SGFzaENoYW5nZXx8ITEsaGFzaEZyYWdtZW50Omw/dC5oYXNoRnJhZ21lbnQmJiIiIT09dC5oYXNoRnJhZ21lbnQ/ZGVjb2RlVVJJQ29tcG9uZW50KHQuaGFzaEZyYWdtZW50LnNsaWNlKDEpKTplLmZvY3VzQW5kU2Nyb2xsUmVmLmhhc2hGcmFnbWVudDpudWxsLHNlZ21lbnRQYXRoczpsP251bGwhPShvPW51bGw9PXQ/dm9pZCAwOnQuc2Nyb2xsYWJsZVNlZ21lbnRzKT9vOmUuZm9jdXNBbmRTY3JvbGxSZWYuc2VnbWVudFBhdGhzOltdfSxjYWNoZTp0LmNhY2hlP3QuY2FjaGU6ZS5jYWNoZSxwcmVmZXRjaENhY2hlOnQucHJlZmV0Y2hDYWNoZT90LnByZWZldGNoQ2FjaGU6ZS5wcmVmZXRjaENhY2hlLHRyZWU6dSh0LnBhdGNoZWRUcmVlKT90LnBhdGNoZWRUcmVlOmUudHJlZSxuZXh0VXJsOmF9fSgiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDEyMDk6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImNhbGxTZXJ2ZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBsfX0pO2xldCBuPXIoMjExNSksdT1yKDY4NzEpLG89cig2MjQ4KTthc3luYyBmdW5jdGlvbiBsKGUsdCl7cmV0dXJuIG5ldyBQcm9taXNlKChyLGwpPT57KDAsbi5zdGFydFRyYW5zaXRpb24pKCgpPT57KDAsby5kaXNwYXRjaEFwcFJvdXRlckFjdGlvbikoe3R5cGU6dS5BQ1RJT05fU0VSVkVSX0FDVElPTixhY3Rpb25JZDplLGFjdGlvbkFyZ3M6dCxyZXNvbHZlOnIscmVqZWN0Omx9KX0pfSl9KCJmdW5jdGlvbiI9PXR5cGVvZiB0LmRlZmF1bHR8fCJvYmplY3QiPT10eXBlb2YgdC5kZWZhdWx0JiZudWxsIT09dC5kZWZhdWx0KSYmdm9pZCAwPT09dC5kZWZhdWx0Ll9fZXNNb2R1bGUmJihPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KSxlLmV4cG9ydHM9dC5kZWZhdWx0KX0sMTIzOTooZSx0LHIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwibm9ybWFsaXplUGF0aFRyYWlsaW5nU2xhc2giLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvfX0pO2xldCBuPXIoNzcwMCksdT1yKDUyNDApLG89ZT0+e2lmKCFlLnN0YXJ0c1dpdGgoIi8iKSlyZXR1cm4gZTtsZXR7cGF0aG5hbWU6dCxxdWVyeTpyLGhhc2g6b309KDAsdS5wYXJzZVBhdGgpKGUpO3JldHVybiIiKygwLG4ucmVtb3ZlVHJhaWxpbmdTbGFzaCkodCkrcitvfTsoImZ1bmN0aW9uIj09dHlwZW9mIHQuZGVmYXVsdHx8Im9iamVjdCI9PXR5cGVvZiB0LmRlZmF1bHQmJm51bGwhPT10LmRlZmF1bHQpJiZ2b2lkIDA9PT10LmRlZmF1bHQuX19lc01vZHVsZSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpLGUuZXhwb3J0cz10LmRlZmF1bHQpfSwxMjgxOihlLHQscik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJjbGVhckNhY2hlTm9kZURhdGFGb3JTZWdtZW50UGF0aCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGUodCxyLG8pe2xldCBsPW8ubGVuZ3RoPD0yLFthLGldPW8sYz0oMCx1LmNyZWF0ZVJvdXRlckNhY2hlS2V5KShpKSxzPXIucGFyYWxsZWxSb3V0ZXMuZ2V0KGEpLGY9dC5wYXJhbGxlbFJvdXRlcy5nZXQoYSk7ZiYmZiE9PXN8fChmPW5ldyBNYXAocyksdC5wYXJhbGxlbFJvdXRlcy5zZXQoYSxmKSk7bGV0IGQ9bnVsbD09cz92b2lkIDA6cy5nZXQoYykscD1mLmdldChjKTtpZihsKXtwJiZwLmxhenlEYXRhJiZwIT09ZHx8Zi5zZXQoYyx7bGF6eURhdGE6bnVsbCxyc2M6bnVsbCxwcmVmZXRjaFJzYzpudWxsLGhlYWQ6bnVsbCxwcmVmZXRjaEhlYWQ6bnVsbCxwYXJhbGxlbFJvdXRlczpuZXcgTWFwLGxvYWRpbmc6bnVsbCxuYXZpZ2F0ZWRBdDotMX0pO3JldHVybn1pZighcHx8IWQpe3B8fGYuc2V0KGMse2xhenlEYXRhOm51bGwscnNjOm51bGwscHJlZmV0Y2hSc2M6bnVsbCxoZWFkOm51bGwscHJlZmV0Y2hIZWFkOm51bGwscGFyYWxsZWxSb3V0ZXM6bmV3IE1hcCxsb2FkaW5nOm51bGwsbmF2aWdhdGVkQXQ6LTF9KTtyZXR1cm59cmV0dXJuIHA9PT1kJiYocD17bGF6eURhdGE6cC5sYXp5RGF0YSxyc2M6cC5yc2MscHJlZmV0Y2hSc2M6cC5wcmVmZXRjaFJzYyxoZWFkOnAuaGVhZCxwcmVmZXRjaEhlYWQ6cC5wcmVmZXRjaEhlYWQscGFyYWxsZWxSb3V0ZXM6bmV3IE1hcChwLnBhcmFsbGVsUm91dGVzKSxsb2FkaW5nOnAubG9hZGluZ30sZi5zZXQoYyxwKSksZShwLGQsKDAsbi5nZXROZXh0RmxpZ2h0U2VnbWVudFBhdGgpKG8pKX19fSk7bGV0IG49cig2Mzc4KSx1PXIoOTE5MCk7KCJmdW5jdGlvbiI9PXR5cGVvZiB0LmRlZmF1bHR8fCJvYmplY3QiPT10eXBlb2YgdC5kZWZhdWx0JiZudWxsIT09dC5kZWZhdWx0KSYmdm9pZCAwPT09dC5kZWZhdWx0Ll9fZXNNb2R1bGUmJihPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KSxlLmV4cG9ydHM9dC5kZWZhdWx0KX0sMTQyNjooZSx0LHIpPT57InVzZSBzdHJpY3QiO3ZhciBuPXIoNTcwNCksdT1TeW1ib2wuZm9yKCJyZWFjdC50cmFuc2l0aW9uYWwuZWxlbWVudCIpLG89U3ltYm9sLmZvcigicmVhY3QucG9ydGFsIiksbD1TeW1ib2wuZm9yKCJyZWFjdC5mcmFnbWVudCIpLGE9U3ltYm9sLmZvcigicmVhY3Quc3RyaWN0X21vZGUiKSxpPVN5bWJvbC5mb3IoInJlYWN0LnByb2ZpbGVyIiksYz1TeW1ib2wuZm9yKCJyZWFjdC5jb25zdW1lciIpLHM9U3ltYm9sLmZvcigicmVhY3QuY29udGV4dCIpLGY9U3ltYm9sLmZvcigicmVhY3QuZm9yd2FyZF9yZWYiKSxkPVN5bWJvbC5mb3IoInJlYWN0LnN1c3BlbnNlIikscD1TeW1ib2wuZm9yKCJyZWFjdC5tZW1vIiksaD1TeW1ib2wuZm9yKCJyZWFjdC5sYXp5IiksXz1TeW1ib2wuaXRlcmF0b3IseT17aXNNb3VudGVkOmZ1bmN0aW9uKCl7cmV0dXJuITF9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbigpe30sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbigpe30sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKCl7fX0sYj1PYmplY3QuYXNzaWduLHY9e307ZnVuY3Rpb24gZyhlLHQscil7dGhpcy5wcm9wcz1lLHRoaXMuY29udGV4dD10LHRoaXMucmVmcz12LHRoaXMudXBkYXRlcj1yfHx5fWZ1bmN0aW9uIG0oKXt9ZnVuY3Rpb24gUihlLHQscil7dGhpcy5wcm9wcz1lLHRoaXMuY29udGV4dD10LHRoaXMucmVmcz12LHRoaXMudXBkYXRlcj1yfHx5fWcucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ9e30sZy5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oZSx0KXtpZigib2JqZWN0IiE9dHlwZW9mIGUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlJiZudWxsIT1lKXRocm93IEVycm9yKCJ0YWtlcyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzIHRvIHVwZGF0ZSBvciBhIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcy4iKTt0aGlzLnVwZGF0ZXIuZW5xdWV1ZVNldFN0YXRlKHRoaXMsZSx0LCJzZXRTdGF0ZSIpfSxnLnByb3RvdHlwZS5mb3JjZVVwZGF0ZT1mdW5jdGlvbihlKXt0aGlzLnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMsZSwiZm9yY2VVcGRhdGUiKX0sbS5wcm90b3R5cGU9Zy5wcm90b3R5cGU7dmFyIEU9Ui5wcm90b3R5cGU9bmV3IG07RS5jb25zdHJ1Y3Rvcj1SLGIoRSxnLnByb3RvdHlwZSksRS5pc1B1cmVSZWFjdENvbXBvbmVudD0hMDt2YXIgTz1BcnJheS5pc0FycmF5O2Z1bmN0aW9uIFAoKXt9dmFyIGo9e0g6bnVsbCxBOm51bGwsVDpudWxsLFM6bnVsbH0sVD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIFMoZSx0LHIpe3ZhciBuPXIucmVmO3JldHVybnskJHR5cGVvZjp1LHR5cGU6ZSxrZXk6dCxyZWY6dm9pZCAwIT09bj9uOm51bGwscHJvcHM6cn19ZnVuY3Rpb24gTShlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lJiZlLiQkdHlwZW9mPT09dX12YXIgdz0vXC8rL2c7ZnVuY3Rpb24gQShlLHQpe3ZhciByLG47cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmbnVsbCE9ZS5rZXk/KHI9IiIrZS5rZXksbj17Ij0iOiI9MCIsIjoiOiI9MiJ9LCIkIityLnJlcGxhY2UoL1s9Ol0vZyxmdW5jdGlvbihlKXtyZXR1cm4gbltlXX0pKTp0LnRvU3RyaW5nKDM2KX1mdW5jdGlvbiBDKGUsdCxyKXtpZihudWxsPT1lKXJldHVybiBlO3ZhciBuPVtdLGw9MDtyZXR1cm4hZnVuY3Rpb24gZSh0LHIsbixsLGEpe3ZhciBpLGMscyxmPXR5cGVvZiB0OygidW5kZWZpbmVkIj09PWZ8fCJib29sZWFuIj09PWYpJiYodD1udWxsKTt2YXIgZD0hMTtpZihudWxsPT09dClkPSEwO2Vsc2Ugc3dpdGNoKGYpe2Nhc2UiYmlnaW50IjpjYXNlInN0cmluZyI6Y2FzZSJudW1iZXIiOmQ9ITA7YnJlYWs7Y2FzZSJvYmplY3QiOnN3aXRjaCh0LiQkdHlwZW9mKXtjYXNlIHU6Y2FzZSBvOmQ9ITA7YnJlYWs7Y2FzZSBoOnJldHVybiBlKChkPXQuX2luaXQpKHQuX3BheWxvYWQpLHIsbixsLGEpfX1pZihkKXJldHVybiBhPWEodCksZD0iIj09PWw/Ii4iK0EodCwwKTpsLE8oYSk/KG49IiIsbnVsbCE9ZCYmKG49ZC5yZXBsYWNlKHcsIiQmLyIpKyIvIiksZShhLHIsbiwiIixmdW5jdGlvbihlKXtyZXR1cm4gZX0pKTpudWxsIT1hJiYoTShhKSYmKGk9YSxjPW4rKG51bGw9PWEua2V5fHx0JiZ0LmtleT09PWEua2V5PyIiOigiIithLmtleSkucmVwbGFjZSh3LCIkJi8iKSsiLyIpK2QsYT1TKGkudHlwZSxjLGkucHJvcHMpKSxyLnB1c2goYSkpLDE7ZD0wO3ZhciBwPSIiPT09bD8iLiI6bCsiOiI7aWYoTyh0KSlmb3IodmFyIHk9MDt5PHQubGVuZ3RoO3krKylmPXArQShsPXRbeV0seSksZCs9ZShsLHIsbixmLGEpO2Vsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mKHk9bnVsbD09PShzPXQpfHwib2JqZWN0IiE9dHlwZW9mIHM/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2Yocz1fJiZzW19dfHxzWyJAQGl0ZXJhdG9yIl0pP3M6bnVsbCkpZm9yKHQ9eS5jYWxsKHQpLHk9MDshKGw9dC5uZXh0KCkpLmRvbmU7KWY9cCtBKGw9bC52YWx1ZSx5KyspLGQrPWUobCxyLG4sZixhKTtlbHNlIGlmKCJvYmplY3QiPT09Zil7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQudGhlbilyZXR1cm4gZShmdW5jdGlvbihlKXtzd2l0Y2goZS5zdGF0dXMpe2Nhc2UiZnVsZmlsbGVkIjpyZXR1cm4gZS52YWx1ZTtjYXNlInJlamVjdGVkIjp0aHJvdyBlLnJlYXNvbjtkZWZhdWx0OnN3aXRjaCgic3RyaW5nIj09dHlwZW9mIGUuc3RhdHVzP2UudGhlbihQLFApOihlLnN0YXR1cz0icGVuZGluZyIsZS50aGVuKGZ1bmN0aW9uKHQpeyJwZW5kaW5nIj09PWUuc3RhdHVzJiYoZS5zdGF0dXM9ImZ1bGZpbGxlZCIsZS52YWx1ZT10KX0sZnVuY3Rpb24odCl7InBlbmRpbmciPT09ZS5zdGF0dXMmJihlLnN0YXR1cz0icmVqZWN0ZWQiLGUucmVhc29uPXQpfSkpLGUuc3RhdHVzKXtjYXNlImZ1bGZpbGxlZCI6cmV0dXJuIGUudmFsdWU7Y2FzZSJyZWplY3RlZCI6dGhyb3cgZS5yZWFzb259fXRocm93IGV9KHQpLHIsbixsLGEpO3Rocm93IEVycm9yKCJPYmplY3RzIGFyZSBub3QgdmFsaWQgYXMgYSBSZWFjdCBjaGlsZCAoZm91bmQ6ICIrKCJbb2JqZWN0IE9iamVjdF0iPT09KHI9U3RyaW5nKHQpKT8ib2JqZWN0IHdpdGgga2V5cyB7IitPYmplY3Qua2V5cyh0KS5qb2luKCIsICIpKyJ9IjpyKSsiKS4gSWYgeW91IG1lYW50IHRvIHJlbmRlciBhIGNvbGxlY3Rpb24gb2YgY2hpbGRyZW4sIHVzZSBhbiBhcnJheSBpbnN0ZWFkLiIpfXJldHVybiBkfShlLG4sIiIsIiIsZnVuY3Rpb24oZSl7cmV0dXJuIHQuY2FsbChyLGUsbCsrKX0pLG59ZnVuY3Rpb24geChlKXtpZigtMT09PWUuX3N0YXR1cyl7dmFyIHQ9ZS5fcmVzdWx0Oyh0PXQoKSkudGhlbihmdW5jdGlvbih0KXsoMD09PWUuX3N0YXR1c3x8LTE9PT1lLl9zdGF0dXMpJiYoZS5fc3RhdHVzPTEsZS5fcmVzdWx0PXQpfSxmdW5jdGlvbih0KXsoMD09PWUuX3N0YXR1c3x8LTE9PT1lLl9zdGF0dXMpJiYoZS5fc3RhdHVzPTIsZS5fcmVzdWx0PXQpfSksLTE9PT1lLl9zdGF0dXMmJihlLl9zdGF0dXM9MCxlLl9yZXN1bHQ9dCl9aWYoMT09PWUuX3N0YXR1cylyZXR1cm4gZS5fcmVzdWx0LmRlZmF1bHQ7dGhyb3cgZS5fcmVzdWx0fXZhciBOPSJmdW5jdGlvbiI9PXR5cGVvZiByZXBvcnRFcnJvcj9yZXBvcnRFcnJvcjpmdW5jdGlvbihlKXtpZigib2JqZWN0Ij09dHlwZW9mIHdpbmRvdyYmImZ1bmN0aW9uIj09dHlwZW9mIHdpbmRvdy5FcnJvckV2ZW50KXt2YXIgdD1uZXcgd2luZG93LkVycm9yRXZlbnQoImVycm9yIix7YnViYmxlczohMCxjYW5jZWxhYmxlOiEwLG1lc3NhZ2U6Im9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmInN0cmluZyI9PXR5cGVvZiBlLm1lc3NhZ2U/U3RyaW5nKGUubWVzc2FnZSk6U3RyaW5nKGUpLGVycm9yOmV9KTtpZighd2luZG93LmRpc3BhdGNoRXZlbnQodCkpcmV0dXJufWVsc2UgaWYoIm9iamVjdCI9PXR5cGVvZiBuJiYiZnVuY3Rpb24iPT10eXBlb2Ygbi5lbWl0KXJldHVybiB2b2lkIG4uZW1pdCgidW5jYXVnaHRFeGNlcHRpb24iLGUpO2NvbnNvbGUuZXJyb3IoZSl9O3QuQ2hpbGRyZW49e21hcDpDLGZvckVhY2g6ZnVuY3Rpb24oZSx0LHIpe0MoZSxmdW5jdGlvbigpe3QuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxyKX0sY291bnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9MDtyZXR1cm4gQyhlLGZ1bmN0aW9uKCl7dCsrfSksdH0sdG9BcnJheTpmdW5jdGlvbihlKXtyZXR1cm4gQyhlLGZ1bmN0aW9uKGUpe3JldHVybiBlfSl8fFtdfSxvbmx5OmZ1bmN0aW9uKGUpe2lmKCFNKGUpKXRocm93IEVycm9yKCJSZWFjdC5DaGlsZHJlbi5vbmx5IGV4cGVjdGVkIHRvIHJlY2VpdmUgYSBzaW5nbGUgUmVhY3QgZWxlbWVudCBjaGlsZC4iKTtyZXR1cm4gZX19LHQuQ29tcG9uZW50PWcsdC5GcmFnbWVudD1sLHQuUHJvZmlsZXI9aSx0LlB1cmVDb21wb25lbnQ9Uix0LlN0cmljdE1vZGU9YSx0LlN1c3BlbnNlPWQsdC5fX0NMSUVOVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREU9aix0Ll9fQ09NUElMRVJfUlVOVElNRT17X19wcm90b19fOm51bGwsYzpmdW5jdGlvbihlKXtyZXR1cm4gai5ILnVzZU1lbW9DYWNoZShlKX19LHQuY2FjaGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGUuYXBwbHkobnVsbCxhcmd1bWVudHMpfX0sdC5jYWNoZVNpZ25hbD1mdW5jdGlvbigpe3JldHVybiBudWxsfSx0LmNsb25lRWxlbWVudD1mdW5jdGlvbihlLHQscil7aWYobnVsbD09ZSl0aHJvdyBFcnJvcigiVGhlIGFyZ3VtZW50IG11c3QgYmUgYSBSZWFjdCBlbGVtZW50LCBidXQgeW91IHBhc3NlZCAiK2UrIi4iKTt2YXIgbj1iKHt9LGUucHJvcHMpLHU9ZS5rZXk7aWYobnVsbCE9dClmb3IobyBpbiB2b2lkIDAhPT10LmtleSYmKHU9IiIrdC5rZXkpLHQpVC5jYWxsKHQsbykmJiJrZXkiIT09byYmIl9fc2VsZiIhPT1vJiYiX19zb3VyY2UiIT09byYmKCJyZWYiIT09b3x8dm9pZCAwIT09dC5yZWYpJiYobltvXT10W29dKTt2YXIgbz1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PW8pbi5jaGlsZHJlbj1yO2Vsc2UgaWYoMTxvKXtmb3IodmFyIGw9QXJyYXkobyksYT0wO2E8bzthKyspbFthXT1hcmd1bWVudHNbYSsyXTtuLmNoaWxkcmVuPWx9cmV0dXJuIFMoZS50eXBlLHUsbil9LHQuY3JlYXRlQ29udGV4dD1mdW5jdGlvbihlKXtyZXR1cm4oZT17JCR0eXBlb2Y6cyxfY3VycmVudFZhbHVlOmUsX2N1cnJlbnRWYWx1ZTI6ZSxfdGhyZWFkQ291bnQ6MCxQcm92aWRlcjpudWxsLENvbnN1bWVyOm51bGx9KS5Qcm92aWRlcj1lLGUuQ29uc3VtZXI9eyQkdHlwZW9mOmMsX2NvbnRleHQ6ZX0sZX0sdC5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKGUsdCxyKXt2YXIgbix1PXt9LG89bnVsbDtpZihudWxsIT10KWZvcihuIGluIHZvaWQgMCE9PXQua2V5JiYobz0iIit0LmtleSksdClULmNhbGwodCxuKSYmImtleSIhPT1uJiYiX19zZWxmIiE9PW4mJiJfX3NvdXJjZSIhPT1uJiYodVtuXT10W25dKTt2YXIgbD1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PWwpdS5jaGlsZHJlbj1yO2Vsc2UgaWYoMTxsKXtmb3IodmFyIGE9QXJyYXkobCksaT0wO2k8bDtpKyspYVtpXT1hcmd1bWVudHNbaSsyXTt1LmNoaWxkcmVuPWF9aWYoZSYmZS5kZWZhdWx0UHJvcHMpZm9yKG4gaW4gbD1lLmRlZmF1bHRQcm9wcyl2b2lkIDA9PT11W25dJiYodVtuXT1sW25dKTtyZXR1cm4gUyhlLG8sdSl9LHQuY3JlYXRlUmVmPWZ1bmN0aW9uKCl7cmV0dXJue2N1cnJlbnQ6bnVsbH19LHQuZm9yd2FyZFJlZj1mdW5jdGlvbihlKXtyZXR1cm57JCR0eXBlb2Y6ZixyZW5kZXI6ZX19LHQuaXNWYWxpZEVsZW1lbnQ9TSx0Lmxhenk9ZnVuY3Rpb24oZSl7cmV0dXJueyQkdHlwZW9mOmgsX3BheWxvYWQ6e19zdGF0dXM6LTEsX3Jlc3VsdDplfSxfaW5pdDp4fX0sdC5tZW1vPWZ1bmN0aW9uKGUsdCl7cmV0dXJueyQkdHlwZW9mOnAsdHlwZTplLGNvbXBhcmU6dm9pZCAwPT09dD9udWxsOnR9fSx0LnN0YXJ0VHJhbnNpdGlvbj1mdW5jdGlvbihlKXt2YXIgdD1qLlQscj17fTtqLlQ9cjt0cnl7dmFyIG49ZSgpLHU9ai5TO251bGwhPT11JiZ1KHIsbiksIm9iamVjdCI9PXR5cGVvZiBuJiZudWxsIT09biYmImZ1bmN0aW9uIj09dHlwZW9mIG4udGhlbiYmbi50aGVuKFAsTil9Y2F0Y2goZSl7TihlKX1maW5hbGx5e251bGwhPT10JiZudWxsIT09ci50eXBlcyYmKHQudHlwZXM9ci50eXBlcyksai5UPXR9fSx0LnVuc3RhYmxlX3VzZUNhY2hlUmVmcmVzaD1mdW5jdGlvbigpe3JldHVybiBqLkgudXNlQ2FjaGVSZWZyZXNoKCl9LHQudXNlPWZ1bmN0aW9uKGUpe3JldHVybiBqLkgudXNlKGUpfSx0LnVzZUFjdGlvblN0YXRlPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gai5ILnVzZUFjdGlvblN0YXRlKGUsdCxyKX0sdC51c2VDYWxsYmFjaz1mdW5jdGlvbihlLHQpe3JldHVybiBqLkgudXNlQ2FsbGJhY2soZSx0KX0sdC51c2VDb250ZXh0PWZ1bmN0aW9uKGUpe3JldHVybiBqLkgudXNlQ29udGV4dChlKX0sdC51c2VEZWJ1Z1ZhbHVlPWZ1bmN0aW9uKCl7fSx0LnVzZURlZmVycmVkVmFsdWU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gai5ILnVzZURlZmVycmVkVmFsdWUoZSx0KX0sdC51c2VFZmZlY3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gai5ILnVzZUVmZmVjdChlLHQpfSx0LnVzZUlkPWZ1bmN0aW9uKCl7cmV0dXJuIGouSC51c2VJZCgpfSx0LnVzZUltcGVyYXRpdmVIYW5kbGU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBqLkgudXNlSW1wZXJhdGl2ZUhhbmRsZShlLHQscil9LHQudXNlSW5zZXJ0aW9uRWZmZWN0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGouSC51c2VJbnNlcnRpb25FZmZlY3QoZSx0KX0sdC51c2VMYXlvdXRFZmZlY3Q9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gai5ILnVzZUxheW91dEVmZmVjdChlLHQpfSx0LnVzZU1lbW89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gai5ILnVzZU1lbW8oZSx0KX0sdC51c2VPcHRpbWlzdGljPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGouSC51c2VPcHRpbWlzdGljKGUsdCl9LHQudXNlUmVkdWNlcj1mdW5jdGlvbihlLHQscil7cmV0dXJuIGouSC51c2VSZWR1Y2VyKGUsdCxyKX0sdC51c2VSZWY9ZnVuY3Rpb24oZSl7cmV0dXJuIGouSC51c2VSZWYoZSl9LHQudXNlU3RhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGouSC51c2VTdGF0ZShlKX0sdC51c2VTeW5jRXh0ZXJuYWxTdG9yZT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGouSC51c2VTeW5jRXh0ZXJuYWxTdG9yZShlLHQscil9LHQudXNlVHJhbnNpdGlvbj1mdW5jdGlvbigpe3JldHVybiBqLkgudXNlVHJhbnNpdGlvbigpfSx0LnZlcnNpb249IjE5LjIuMC1jYW5hcnktMGJkYjkyMDYtMjAyNTA4MTgifSwxNDg2OihlLHQscik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJ1c2VVbnRyYWNrZWRQYXRobmFtZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG99fSk7bGV0IG49cigyMTE1KSx1PXIoMzg2NSk7ZnVuY3Rpb24gbygpe3JldHVybigwLG4udXNlQ29udGV4dCkodS5QYXRobmFtZUNvbnRleHQpfSgiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDE0ODk6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksIWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIHQpT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7ZW51bWVyYWJsZTohMCxnZXQ6dFtyXX0pfSh0LHtoYW5kbGVIYXJkTmF2RXJyb3I6ZnVuY3Rpb24oKXtyZXR1cm4gdX0sdXNlTmF2RmFpbHVyZUhhbmRsZXI6ZnVuY3Rpb24oKXtyZXR1cm4gb319KSxyKDIxMTUpO2xldCBuPXIoOTY1OCk7ZnVuY3Rpb24gdShlKXtyZXR1cm4hIWUmJiEhd2luZG93Lm5leHQuX19wZW5kaW5nVXJsJiYoMCxuLmNyZWF0ZUhyZWZGcm9tVXJsKShuZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKSkhPT0oMCxuLmNyZWF0ZUhyZWZGcm9tVXJsKSh3aW5kb3cubmV4dC5fX3BlbmRpbmdVcmwpJiYoY29uc29sZS5lcnJvcigiRXJyb3Igb2NjdXJyZWQgZHVyaW5nIG5hdmlnYXRpb24sIGZhbGxpbmcgYmFjayB0byBoYXJkIG5hdmlnYXRpb24iLGUpLHdpbmRvdy5sb2NhdGlvbi5ocmVmPXdpbmRvdy5uZXh0Ll9fcGVuZGluZ1VybC50b1N0cmluZygpLCEwKX1mdW5jdGlvbiBvKCl7fSgiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDE2NjY6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSkscig4MTEwKTtsZXQgbj1yKDM2NjMpLHU9cigxOTIzKTsoMCxuLmFwcEJvb3RzdHJhcCkoKCk9PntsZXR7aHlkcmF0ZTplfT1yKDk3ODEpO3IoNzI5Nykscig5NzY2KSxlKHUpfSksKCJmdW5jdGlvbiI9PXR5cGVvZiB0LmRlZmF1bHR8fCJvYmplY3QiPT10eXBlb2YgdC5kZWZhdWx0JiZudWxsIT09dC5kZWZhdWx0KSYmdm9pZCAwPT09dC5kZWZhdWx0Ll9fZXNNb2R1bGUmJihPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KSxlLmV4cG9ydHM9dC5kZWZhdWx0KX0sMTc1NTooZSx0LHIpPT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7cmV0dXJuIGV9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJyZW1vdmVCYXNlUGF0aCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG59fSkscigyOTI5KSwoImZ1bmN0aW9uIj09dHlwZW9mIHQuZGVmYXVsdHx8Im9iamVjdCI9PXR5cGVvZiB0LmRlZmF1bHQmJm51bGwhPT10LmRlZmF1bHQpJiZ2b2lkIDA9PT10LmRlZmF1bHQuX19lc01vZHVsZSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpLGUuZXhwb3J0cz10LmRlZmF1bHQpfSwxODA3OihlLHQscik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLCFmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIse2VudW1lcmFibGU6ITAsZ2V0OnRbcl19KX0odCx7Y3JlYXRlTXV0YWJsZUFjdGlvblF1ZXVlOmZ1bmN0aW9uKCl7cmV0dXJuIF99LGRpc3BhdGNoTmF2aWdhdGVBY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gdn0sZGlzcGF0Y2hUcmF2ZXJzZUFjdGlvbjpmdW5jdGlvbigpe3JldHVybiBnfSxnZXRDdXJyZW50QXBwUm91dGVyU3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4geX0scHVibGljQXBwUm91dGVySW5zdGFuY2U6ZnVuY3Rpb24oKXtyZXR1cm4gbX19KTtsZXQgbj1yKDY4NzEpLHU9cig4NDUxKSxvPXIoMjExNSksbD1yKDQwODkpO3IoNjA0OCk7bGV0IGE9cig2MjQ4KSxpPXIoNjA1OCksYz1yKDcyOTcpLHM9cigzOTMzKSxmPXIoMzQ5OSk7ZnVuY3Rpb24gZChlLHQpe251bGwhPT1lLnBlbmRpbmcmJihlLnBlbmRpbmc9ZS5wZW5kaW5nLm5leHQsbnVsbCE9PWUucGVuZGluZz9wKHthY3Rpb25RdWV1ZTplLGFjdGlvbjplLnBlbmRpbmcsc2V0U3RhdGU6dH0pOmUubmVlZHNSZWZyZXNoJiYoZS5uZWVkc1JlZnJlc2g9ITEsZS5kaXNwYXRjaCh7dHlwZTpuLkFDVElPTl9SRUZSRVNILG9yaWdpbjp3aW5kb3cubG9jYXRpb24ub3JpZ2lufSx0KSkpfWFzeW5jIGZ1bmN0aW9uIHAoZSl7bGV0e2FjdGlvblF1ZXVlOnQsYWN0aW9uOnIsc2V0U3RhdGU6bn09ZSx1PXQuc3RhdGU7dC5wZW5kaW5nPXI7bGV0IG89ci5wYXlsb2FkLGE9dC5hY3Rpb24odSxvKTtmdW5jdGlvbiBpKGUpe3IuZGlzY2FyZGVkfHwodC5zdGF0ZT1lLGQodCxuKSxyLnJlc29sdmUoZSkpfSgwLGwuaXNUaGVuYWJsZSkoYSk/YS50aGVuKGksZT0+e2QodCxuKSxyLnJlamVjdChlKX0pOmkoYSl9bGV0IGg9bnVsbDtmdW5jdGlvbiBfKGUsdCl7bGV0IHI9e3N0YXRlOmUsZGlzcGF0Y2g6KGUsdCk9PihmdW5jdGlvbihlLHQscil7bGV0IHU9e3Jlc29sdmU6cixyZWplY3Q6KCk9Pnt9fTtpZih0LnR5cGUhPT1uLkFDVElPTl9SRVNUT1JFKXtsZXQgZT1uZXcgUHJvbWlzZSgoZSx0KT0+e3U9e3Jlc29sdmU6ZSxyZWplY3Q6dH19KTsoMCxvLnN0YXJ0VHJhbnNpdGlvbikoKCk9PntyKGUpfSl9bGV0IGw9e3BheWxvYWQ6dCxuZXh0Om51bGwscmVzb2x2ZTp1LnJlc29sdmUscmVqZWN0OnUucmVqZWN0fTtudWxsPT09ZS5wZW5kaW5nPyhlLmxhc3Q9bCxwKHthY3Rpb25RdWV1ZTplLGFjdGlvbjpsLHNldFN0YXRlOnJ9KSk6dC50eXBlPT09bi5BQ1RJT05fTkFWSUdBVEV8fHQudHlwZT09PW4uQUNUSU9OX1JFU1RPUkU/KGUucGVuZGluZy5kaXNjYXJkZWQ9ITAsbC5uZXh0PWUucGVuZGluZy5uZXh0LGUucGVuZGluZy5wYXlsb2FkLnR5cGU9PT1uLkFDVElPTl9TRVJWRVJfQUNUSU9OJiYoZS5uZWVkc1JlZnJlc2g9ITApLHAoe2FjdGlvblF1ZXVlOmUsYWN0aW9uOmwsc2V0U3RhdGU6cn0pKToobnVsbCE9PWUubGFzdCYmKGUubGFzdC5uZXh0PWwpLGUubGFzdD1sKX0pKHIsZSx0KSxhY3Rpb246YXN5bmMoZSx0KT0+KDAsdS5yZWR1Y2VyKShlLHQpLHBlbmRpbmc6bnVsbCxsYXN0Om51bGwsb25Sb3V0ZXJUcmFuc2l0aW9uU3RhcnQ6bnVsbCE9PXQmJiJmdW5jdGlvbiI9PXR5cGVvZiB0Lm9uUm91dGVyVHJhbnNpdGlvblN0YXJ0P3Qub25Sb3V0ZXJUcmFuc2l0aW9uU3RhcnQ6bnVsbH07aWYobnVsbCE9PWgpdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KEVycm9yKCJJbnRlcm5hbCBOZXh0LmpzIEVycm9yOiBjcmVhdGVNdXRhYmxlQWN0aW9uUXVldWUgd2FzIGNhbGxlZCBtb3JlIHRoYW4gb25jZSIpLCJfX05FWFRfRVJST1JfQ09ERSIse3ZhbHVlOiJFNjI0IixlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pO3JldHVybiBoPXIscn1mdW5jdGlvbiB5KCl7cmV0dXJuIG51bGwhPT1oP2guc3RhdGU6bnVsbH1mdW5jdGlvbiBiKCl7cmV0dXJuIG51bGwhPT1oP2gub25Sb3V0ZXJUcmFuc2l0aW9uU3RhcnQ6bnVsbH1mdW5jdGlvbiB2KGUsdCxyLHUpe2xldCBvPW5ldyBVUkwoKDAsaS5hZGRCYXNlUGF0aCkoZSksbG9jYXRpb24uaHJlZik7KDAsZi5zZXRMaW5rRm9yQ3VycmVudE5hdmlnYXRpb24pKHUpO2xldCBsPWIoKTtudWxsIT09bCYmbChlLHQpLCgwLGEuZGlzcGF0Y2hBcHBSb3V0ZXJBY3Rpb24pKHt0eXBlOm4uQUNUSU9OX05BVklHQVRFLHVybDpvLGlzRXh0ZXJuYWxVcmw6KDAsYy5pc0V4dGVybmFsVVJMKShvKSxsb2NhdGlvblNlYXJjaDpsb2NhdGlvbi5zZWFyY2gsc2hvdWxkU2Nyb2xsOnIsbmF2aWdhdGVUeXBlOnQsYWxsb3dBbGlhc2luZzohMH0pfWZ1bmN0aW9uIGcoZSx0KXtsZXQgcj1iKCk7bnVsbCE9PXImJnIoZSwidHJhdmVyc2UiKSwoMCxhLmRpc3BhdGNoQXBwUm91dGVyQWN0aW9uKSh7dHlwZTpuLkFDVElPTl9SRVNUT1JFLHVybDpuZXcgVVJMKGUpLHRyZWU6dH0pfWxldCBtPXtiYWNrOigpPT53aW5kb3cuaGlzdG9yeS5iYWNrKCksZm9yd2FyZDooKT0+d2luZG93Lmhpc3RvcnkuZm9yd2FyZCgpLHByZWZldGNoOihlLHQpPT57bGV0IHI9ZnVuY3Rpb24oKXtpZihudWxsPT09aCl0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkoRXJyb3IoIkludGVybmFsIE5leHQuanMgZXJyb3I6IFJvdXRlciBhY3Rpb24gZGlzcGF0Y2hlZCBiZWZvcmUgaW5pdGlhbGl6YXRpb24uIiksIl9fTkVYVF9FUlJPUl9DT0RFIix7dmFsdWU6IkU2NjgiLGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSk7cmV0dXJuIGh9KCksdT0oMCxjLmNyZWF0ZVByZWZldGNoVVJMKShlKTtpZihudWxsIT09dSl7dmFyIG87KDAscy5wcmVmZXRjaFJlZHVjZXIpKHIuc3RhdGUse3R5cGU6bi5BQ1RJT05fUFJFRkVUQ0gsdXJsOnUsa2luZDpudWxsIT0obz1udWxsPT10P3ZvaWQgMDp0LmtpbmQpP286bi5QcmVmZXRjaEtpbmQuRlVMTH0pfX0scmVwbGFjZTooZSx0KT0+eygwLG8uc3RhcnRUcmFuc2l0aW9uKSgoKT0+e3ZhciByO3YoZSwicmVwbGFjZSIsbnVsbD09KHI9bnVsbD09dD92b2lkIDA6dC5zY3JvbGwpfHxyLG51bGwpfSl9LHB1c2g6KGUsdCk9PnsoMCxvLnN0YXJ0VHJhbnNpdGlvbikoKCk9Pnt2YXIgcjt2KGUsInB1c2giLG51bGw9PShyPW51bGw9PXQ/dm9pZCAwOnQuc2Nyb2xsKXx8cixudWxsKX0pfSxyZWZyZXNoOigpPT57KDAsby5zdGFydFRyYW5zaXRpb24pKCgpPT57KDAsYS5kaXNwYXRjaEFwcFJvdXRlckFjdGlvbikoe3R5cGU6bi5BQ1RJT05fUkVGUkVTSCxvcmlnaW46d2luZG93LmxvY2F0aW9uLm9yaWdpbn0pfSl9LGhtclJlZnJlc2g6KCk9Pnt0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkoRXJyb3IoImhtclJlZnJlc2ggY2FuIG9ubHkgYmUgdXNlZCBpbiBkZXZlbG9wbWVudCBtb2RlLiBQbGVhc2UgdXNlIHJlZnJlc2ggaW5zdGVhZC4iKSwiX19ORVhUX0VSUk9SX0NPREUiLHt2YWx1ZToiRTQ4NSIsZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KX19O3dpbmRvdy5uZXh0JiYod2luZG93Lm5leHQucm91dGVyPW0pLCgiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDE5MjM6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9cig5MzkzKX0sMTk1OTooZSx0LHIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiQ2xpZW50UGFnZVJvb3QiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB1fX0pO2xldCBuPXIoNTE1NSk7ZnVuY3Rpb24gdShlKXtsZXR7Q29tcG9uZW50OnQsc2VhcmNoUGFyYW1zOnUscGFyYW1zOm8scHJvbWlzZXM6bH09ZTt7bGV0e2NyZWF0ZVJlbmRlclNlYXJjaFBhcmFtc0Zyb21DbGllbnQ6ZX09cig1ODc4KSxsPWUodSkse2NyZWF0ZVJlbmRlclBhcmFtc0Zyb21DbGllbnQ6YX09cigzMDcpLGk9YShvKTtyZXR1cm4oMCxuLmpzeCkodCx7cGFyYW1zOmksc2VhcmNoUGFyYW1zOmx9KX19cig4MzAyKSwoImZ1bmN0aW9uIj09dHlwZW9mIHQuZGVmYXVsdHx8Im9iamVjdCI9PXR5cGVvZiB0LmRlZmF1bHQmJm51bGwhPT10LmRlZmF1bHQpJiZ2b2lkIDA9PT10LmRlZmF1bHQuX19lc01vZHVsZSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpLGUuZXhwb3J0cz10LmRlZmF1bHQpfSwyMDE4OihlLHQscik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJwYXRoSGFzUHJlZml4Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdX19KTtsZXQgbj1yKDUyNDApO2Z1bmN0aW9uIHUoZSx0KXtpZigic3RyaW5nIiE9dHlwZW9mIGUpcmV0dXJuITE7bGV0e3BhdGhuYW1lOnJ9PSgwLG4ucGFyc2VQYXRoKShlKTtyZXR1cm4gcj09PXR8fHIuc3RhcnRzV2l0aCh0KyIvIil9fSwyMDczOihlLHQscik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJIZWFkTWFuYWdlckNvbnRleHQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBufX0pO2xldCBuPXIoODE0MCkuXyhyKDIxMTUpKS5kZWZhdWx0LmNyZWF0ZUNvbnRleHQoe30pfSwyMTAzOihlLHQscik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLCFmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIse2VudW1lcmFibGU6ITAsZ2V0OnRbcl19KX0odCx7U2VydmVySW5zZXJ0ZWRIVE1MQ29udGV4dDpmdW5jdGlvbigpe3JldHVybiB1fSx1c2VTZXJ2ZXJJbnNlcnRlZEhUTUw6ZnVuY3Rpb24oKXtyZXR1cm4gb319KTtsZXQgbj1yKDk0MTcpLl8ocigyMTE1KSksdT1uLmRlZmF1bHQuY3JlYXRlQ29udGV4dChudWxsKTtmdW5jdGlvbiBvKGUpe2xldCB0PSgwLG4udXNlQ29udGV4dCkodSk7dCYmdChlKX19LDIxMTU6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9cigxNDI2KX0sMjI0NDooZSx0LHIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwic2VydmVyQWN0aW9uUmVkdWNlciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIEF9fSk7bGV0IG49cigxMjA5KSx1PXIoNTE1Myksbz1yKDI0ODYpLGw9cigyODQ1KSxhPXIoNzE5NyksaT1yKDY4NzEpLGM9cig0MjU5KSxzPXIoOTY1OCksZj1yKDU3MzcpLGQ9cig4OTUpLHA9cig0NzA3KSxoPXIoMTEyNiksXz1yKDYzNykseT1yKDcyOTcpLGI9cig4OTE1KSx2PXIoNzMzMiksZz1yKDM1OTcpLG09cig2Mzc4KSxSPXIoNjU0MiksRT1yKDY0MzcpLE89cigzNTcxKSxQPXIoMTc1NSksaj1yKDI5MjkpLFQ9cig3NTE5KTtyKDYwNDgpO2xldCBTPWEuY3JlYXRlRnJvbUZldGNoO2FzeW5jIGZ1bmN0aW9uIE0oZSx0LHIpe2xldCBpLHMsZixkLHthY3Rpb25JZDpwLGFjdGlvbkFyZ3M6aH09cixfPSgwLGEuY3JlYXRlVGVtcG9yYXJ5UmVmZXJlbmNlU2V0KSgpLHk9KDAsVC5leHRyYWN0SW5mb0Zyb21TZXJ2ZXJSZWZlcmVuY2VJZCkocCksYj0idXNlLWNhY2hlIj09PXkudHlwZT8oMCxULm9taXRVbnVzZWRBcmdzKShoLHkpOmgsdj1hd2FpdCAoMCxhLmVuY29kZVJlcGx5KShiLHt0ZW1wb3JhcnlSZWZlcmVuY2VzOl99KSxnPWF3YWl0IGZldGNoKGUuY2Fub25pY2FsVXJsLHttZXRob2Q6IlBPU1QiLGhlYWRlcnM6e0FjY2VwdDpvLlJTQ19DT05URU5UX1RZUEVfSEVBREVSLFtvLkFDVElPTl9IRUFERVJdOnAsW28uTkVYVF9ST1VURVJfU1RBVEVfVFJFRV9IRUFERVJdOigwLG0ucHJlcGFyZUZsaWdodFJvdXRlclN0YXRlRm9yUmVxdWVzdCkoZS50cmVlKSwuLi57fSwuLi50P3tbby5ORVhUX1VSTF06dH06e319LGJvZHk6dn0pO2lmKCIxIj09PWcuaGVhZGVycy5nZXQoby5ORVhUX0FDVElPTl9OT1RfRk9VTkRfSEVBREVSKSl0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3IGwuVW5yZWNvZ25pemVkQWN0aW9uRXJyb3IoJ1NlcnZlciBBY3Rpb24gIicrcCsnIiB3YXMgbm90IGZvdW5kIG9uIHRoZSBzZXJ2ZXIuIFxuUmVhZCBtb3JlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9tZXNzYWdlcy9mYWlsZWQtdG8tZmluZC1zZXJ2ZXItYWN0aW9uJyksIl9fTkVYVF9FUlJPUl9DT0RFIix7dmFsdWU6IkU3MTUiLGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSk7bGV0IFI9Zy5oZWFkZXJzLmdldCgieC1hY3Rpb24tcmVkaXJlY3QiKSxbTyxQXT0obnVsbD09Uj92b2lkIDA6Ui5zcGxpdCgiOyIpKXx8W107c3dpdGNoKFApe2Nhc2UicHVzaCI6aT1FLlJlZGlyZWN0VHlwZS5wdXNoO2JyZWFrO2Nhc2UicmVwbGFjZSI6aT1FLlJlZGlyZWN0VHlwZS5yZXBsYWNlO2JyZWFrO2RlZmF1bHQ6aT12b2lkIDB9bGV0IGo9ISFnLmhlYWRlcnMuZ2V0KG8uTkVYVF9JU19QUkVSRU5ERVJfSEVBREVSKTt0cnl7bGV0IGU9SlNPTi5wYXJzZShnLmhlYWRlcnMuZ2V0KCJ4LWFjdGlvbi1yZXZhbGlkYXRlZCIpfHwiW1tdLDAsMF0iKTtzPXtwYXRoczplWzBdfHxbXSx0YWc6ISFlWzFdLGNvb2tpZTplWzJdfX1jYXRjaChlKXtzPXd9bGV0IE09Tz8oMCxjLmFzc2lnbkxvY2F0aW9uKShPLG5ldyBVUkwoZS5jYW5vbmljYWxVcmwsd2luZG93LmxvY2F0aW9uLmhyZWYpKTp2b2lkIDAsQT1nLmhlYWRlcnMuZ2V0KCJjb250ZW50LXR5cGUiKSxDPSEhKEEmJkEuc3RhcnRzV2l0aChvLlJTQ19DT05URU5UX1RZUEVfSEVBREVSKSk7aWYoIUMmJiFNKXRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFcnJvcihnLnN0YXR1cz49NDAwJiYidGV4dC9wbGFpbiI9PT1BP2F3YWl0IGcudGV4dCgpOiJBbiB1bmV4cGVjdGVkIHJlc3BvbnNlIHdhcyByZWNlaXZlZCBmcm9tIHRoZSBzZXJ2ZXIuIiksIl9fTkVYVF9FUlJPUl9DT0RFIix7dmFsdWU6IkUzOTQiLGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSk7aWYoQyl7bGV0IGU9YXdhaXQgUyhQcm9taXNlLnJlc29sdmUoZykse2NhbGxTZXJ2ZXI6bi5jYWxsU2VydmVyLGZpbmRTb3VyY2VNYXBVUkw6dS5maW5kU291cmNlTWFwVVJMLHRlbXBvcmFyeVJlZmVyZW5jZXM6X30pO2Y9TT92b2lkIDA6ZS5hLGQ9KDAsbS5ub3JtYWxpemVGbGlnaHREYXRhKShlLmYpfWVsc2UgZj12b2lkIDAsZD12b2lkIDA7cmV0dXJue2FjdGlvblJlc3VsdDpmLGFjdGlvbkZsaWdodERhdGE6ZCxyZWRpcmVjdExvY2F0aW9uOk0scmVkaXJlY3RUeXBlOmkscmV2YWxpZGF0ZWRQYXJ0czpzLGlzUHJlcmVuZGVyOmp9fWxldCB3PXtwYXRoczpbXSx0YWc6ITEsY29va2llOiExfTtmdW5jdGlvbiBBKGUsdCl7bGV0e3Jlc29sdmU6cixyZWplY3Q6bn09dCx1PXt9LG89ZS50cmVlO3UucHJlc2VydmVDdXN0b21IaXN0b3J5U3RhdGU9ITE7bGV0IGw9ZS5uZXh0VXJsJiYoMCxiLmhhc0ludGVyY2VwdGlvblJvdXRlSW5DdXJyZW50VHJlZSkoZS50cmVlKT9lLm5leHRVcmw6bnVsbCxhPURhdGUubm93KCk7cmV0dXJuIE0oZSxsLHQpLnRoZW4oYXN5bmMgYz0+e2xldCBiLHthY3Rpb25SZXN1bHQ6bSxhY3Rpb25GbGlnaHREYXRhOlQscmVkaXJlY3RMb2NhdGlvbjpTLHJlZGlyZWN0VHlwZTpNLGlzUHJlcmVuZGVyOncscmV2YWxpZGF0ZWRQYXJ0czpBfT1jO2lmKFMmJihNPT09RS5SZWRpcmVjdFR5cGUucmVwbGFjZT8oZS5wdXNoUmVmLnBlbmRpbmdQdXNoPSExLHUucGVuZGluZ1B1c2g9ITEpOihlLnB1c2hSZWYucGVuZGluZ1B1c2g9ITAsdS5wZW5kaW5nUHVzaD0hMCksdS5jYW5vbmljYWxVcmw9Yj0oMCxzLmNyZWF0ZUhyZWZGcm9tVXJsKShTLCExKSksIVQpcmV0dXJuKHIobSksUyk/KDAsZi5oYW5kbGVFeHRlcm5hbFVybCkoZSx1LFMuaHJlZixlLnB1c2hSZWYucGVuZGluZ1B1c2gpOmU7aWYoInN0cmluZyI9PXR5cGVvZiBUKXJldHVybiByKG0pLCgwLGYuaGFuZGxlRXh0ZXJuYWxVcmwpKGUsdSxULGUucHVzaFJlZi5wZW5kaW5nUHVzaCk7bGV0IEM9QS5wYXRocy5sZW5ndGg+MHx8QS50YWd8fEEuY29va2llO2ZvcihsZXQgbiBvZiBUKXtsZXR7dHJlZTppLHNlZWREYXRhOmMsaGVhZDpzLGlzUm9vdFJlbmRlcjpofT1uO2lmKCFoKXJldHVybiBjb25zb2xlLmxvZygiU0VSVkVSIEFDVElPTiBBUFBMWSBGQUlMRUQiKSxyKG0pLGU7bGV0IFI9KDAsZC5hcHBseVJvdXRlclN0YXRlUGF0Y2hUb1RyZWUpKFsiIl0sbyxpLGJ8fGUuY2Fub25pY2FsVXJsKTtpZihudWxsPT09UilyZXR1cm4gcihtKSwoMCx2LmhhbmRsZVNlZ21lbnRNaXNtYXRjaCkoZSx0LGkpO2lmKCgwLHAuaXNOYXZpZ2F0aW5nVG9OZXdSb290TGF5b3V0KShvLFIpKXJldHVybiByKG0pLCgwLGYuaGFuZGxlRXh0ZXJuYWxVcmwpKGUsdSxifHxlLmNhbm9uaWNhbFVybCxlLnB1c2hSZWYucGVuZGluZ1B1c2gpO2lmKG51bGwhPT1jKXtsZXQgdD1jWzFdLHI9KDAseS5jcmVhdGVFbXB0eUNhY2hlTm9kZSkoKTtyLnJzYz10LHIucHJlZmV0Y2hSc2M9bnVsbCxyLmxvYWRpbmc9Y1szXSwoMCxfLmZpbGxMYXp5SXRlbXNUaWxsTGVhZldpdGhIZWFkKShhLHIsdm9pZCAwLGksYyxzLHZvaWQgMCksdS5jYWNoZT1yLHUucHJlZmV0Y2hDYWNoZT1uZXcgTWFwLEMmJmF3YWl0ICgwLGcucmVmcmVzaEluYWN0aXZlUGFyYWxsZWxTZWdtZW50cykoe25hdmlnYXRlZEF0OmEsc3RhdGU6ZSx1cGRhdGVkVHJlZTpSLHVwZGF0ZWRDYWNoZTpyLGluY2x1ZGVOZXh0VXJsOiEhbCxjYW5vbmljYWxVcmw6dS5jYW5vbmljYWxVcmx8fGUuY2Fub25pY2FsVXJsfSl9dS5wYXRjaGVkVHJlZT1SLG89Un1yZXR1cm4gUyYmYj8oQ3x8KCgwLE8uY3JlYXRlU2VlZGVkUHJlZmV0Y2hDYWNoZUVudHJ5KSh7dXJsOlMsZGF0YTp7ZmxpZ2h0RGF0YTpULGNhbm9uaWNhbFVybDp2b2lkIDAsY291bGRCZUludGVyY2VwdGVkOiExLHByZXJlbmRlcmVkOiExLHBvc3Rwb25lZDohMSxzdGFsZVRpbWU6LTF9LHRyZWU6ZS50cmVlLHByZWZldGNoQ2FjaGU6ZS5wcmVmZXRjaENhY2hlLG5leHRVcmw6ZS5uZXh0VXJsLGtpbmQ6dz9pLlByZWZldGNoS2luZC5GVUxMOmkuUHJlZmV0Y2hLaW5kLkFVVE99KSx1LnByZWZldGNoQ2FjaGU9ZS5wcmVmZXRjaENhY2hlKSxuKCgwLFIuZ2V0UmVkaXJlY3RFcnJvcikoKDAsai5oYXNCYXNlUGF0aCkoYik/KDAsUC5yZW1vdmVCYXNlUGF0aCkoYik6YixNfHxFLlJlZGlyZWN0VHlwZS5wdXNoKSkpOnIobSksKDAsaC5oYW5kbGVNdXRhYmxlKShlLHUpfSx0PT4obih0KSxlKSl9KCJmdW5jdGlvbiI9PXR5cGVvZiB0LmRlZmF1bHR8fCJvYmplY3QiPT10eXBlb2YgdC5kZWZhdWx0JiZudWxsIT09dC5kZWZhdWx0KSYmdm9pZCAwPT09dC5kZWZhdWx0Ll9fZXNNb2R1bGUmJihPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KSxlLmV4cG9ydHM9dC5kZWZhdWx0KX0sMjQ0NDooZSx0LHIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSwhZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gdClPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtlbnVtZXJhYmxlOiEwLGdldDp0W3JdfSl9KHQse2RlZmF1bHQ6ZnVuY3Rpb24oKXtyZXR1cm4gdX0sZ2V0UHJvcGVyRXJyb3I6ZnVuY3Rpb24oKXtyZXR1cm4gb319KTtsZXQgbj1yKDY0ODYpO2Z1bmN0aW9uIHUoZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmIm5hbWUiaW4gZSYmIm1lc3NhZ2UiaW4gZX1mdW5jdGlvbiBvKGUpe3JldHVybiB1KGUpP2U6T2JqZWN0LmRlZmluZVByb3BlcnR5KEVycm9yKCgwLG4uaXNQbGFpbk9iamVjdCkoZSk/ZnVuY3Rpb24oZSl7bGV0IHQ9bmV3IFdlYWtTZXQ7cmV0dXJuIEpTT04uc3RyaW5naWZ5KGUsKGUscik9PntpZigib2JqZWN0Ij09dHlwZW9mIHImJm51bGwhPT1yKXtpZih0LmhhcyhyKSlyZXR1cm4iW0NpcmN1bGFyXSI7dC5hZGQocil9cmV0dXJuIHJ9KX0oZSk6ZSsiIiksIl9fTkVYVF9FUlJPUl9DT0RFIix7dmFsdWU6IkUzOTQiLGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSl9fSwyNDg2OihlLHQpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSwhZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gdClPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtlbnVtZXJhYmxlOiEwLGdldDp0W3JdfSl9KHQse0FDVElPTl9IRUFERVI6ZnVuY3Rpb24oKXtyZXR1cm4gbn0sRkxJR0hUX0hFQURFUlM6ZnVuY3Rpb24oKXtyZXR1cm4gZn0sTkVYVF9BQ1RJT05fTk9UX0ZPVU5EX0hFQURFUjpmdW5jdGlvbigpe3JldHVybiB2fSxORVhUX0RJRF9QT1NUUE9ORV9IRUFERVI6ZnVuY3Rpb24oKXtyZXR1cm4gaH0sTkVYVF9ITVJfUkVGUkVTSF9IQVNIX0NPT0tJRTpmdW5jdGlvbigpe3JldHVybiBpfSxORVhUX0hNUl9SRUZSRVNIX0hFQURFUjpmdW5jdGlvbigpe3JldHVybiBhfSxORVhUX0lTX1BSRVJFTkRFUl9IRUFERVI6ZnVuY3Rpb24oKXtyZXR1cm4gYn0sTkVYVF9SRVdSSVRURU5fUEFUSF9IRUFERVI6ZnVuY3Rpb24oKXtyZXR1cm4gX30sTkVYVF9SRVdSSVRURU5fUVVFUllfSEVBREVSOmZ1bmN0aW9uKCl7cmV0dXJuIHl9LE5FWFRfUk9VVEVSX1BSRUZFVENIX0hFQURFUjpmdW5jdGlvbigpe3JldHVybiBvfSxORVhUX1JPVVRFUl9TRUdNRU5UX1BSRUZFVENIX0hFQURFUjpmdW5jdGlvbigpe3JldHVybiBsfSxORVhUX1JPVVRFUl9TVEFMRV9USU1FX0hFQURFUjpmdW5jdGlvbigpe3JldHVybiBwfSxORVhUX1JPVVRFUl9TVEFURV9UUkVFX0hFQURFUjpmdW5jdGlvbigpe3JldHVybiB1fSxORVhUX1JTQ19VTklPTl9RVUVSWTpmdW5jdGlvbigpe3JldHVybiBkfSxORVhUX1VSTDpmdW5jdGlvbigpe3JldHVybiBjfSxSU0NfQ09OVEVOVF9UWVBFX0hFQURFUjpmdW5jdGlvbigpe3JldHVybiBzfSxSU0NfSEVBREVSOmZ1bmN0aW9uKCl7cmV0dXJuIHJ9fSk7bGV0IHI9InJzYyIsbj0ibmV4dC1hY3Rpb24iLHU9Im5leHQtcm91dGVyLXN0YXRlLXRyZWUiLG89Im5leHQtcm91dGVyLXByZWZldGNoIixsPSJuZXh0LXJvdXRlci1zZWdtZW50LXByZWZldGNoIixhPSJuZXh0LWhtci1yZWZyZXNoIixpPSJfX25leHRfaG1yX3JlZnJlc2hfaGFzaF9fIixjPSJuZXh0LXVybCIscz0idGV4dC94LWNvbXBvbmVudCIsZj1bcix1LG8sYSxsXSxkPSJfcnNjIixwPSJ4LW5leHRqcy1zdGFsZS10aW1lIixoPSJ4LW5leHRqcy1wb3N0cG9uZWQiLF89IngtbmV4dGpzLXJld3JpdHRlbi1wYXRoIix5PSJ4LW5leHRqcy1yZXdyaXR0ZW4tcXVlcnkiLGI9IngtbmV4dGpzLXByZXJlbmRlciIsdj0ieC1uZXh0anMtYWN0aW9uLW5vdC1mb3VuZCI7KCJmdW5jdGlvbiI9PXR5cGVvZiB0LmRlZmF1bHR8fCJvYmplY3QiPT10eXBlb2YgdC5kZWZhdWx0JiZudWxsIT09dC5kZWZhdWx0KSYmdm9pZCAwPT09dC5kZWZhdWx0Ll9fZXNNb2R1bGUmJihPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KSxlLmV4cG9ydHM9dC5kZWZhdWx0KX0sMjU0MjooZSx0LHIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwibm90Rm91bmQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB1fX0pO2xldCBuPSIiK3IoNzA5OSkuSFRUUF9FUlJPUl9GQUxMQkFDS19FUlJPUl9DT0RFKyI7NDA0IjtmdW5jdGlvbiB1KCl7bGV0IGU9T2JqZWN0LmRlZmluZVByb3BlcnR5KEVycm9yKG4pLCJfX05FWFRfRVJST1JfQ09ERSIse3ZhbHVlOiJFMzk0IixlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pO3Rocm93IGUuZGlnZXN0PW4sZX0oImZ1bmN0aW9uIj09dHlwZW9mIHQuZGVmYXVsdHx8Im9iamVjdCI9PXR5cGVvZiB0LmRlZmF1bHQmJm51bGwhPT10LmRlZmF1bHQpJiZ2b2lkIDA9PT10LmRlZmF1bHQuX19lc01vZHVsZSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpLGUuZXhwb3J0cz10LmRlZmF1bHQpfSwyNTkyOihlLHQscik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJjcmVhdGVJbml0aWFsUm91dGVyU3RhdGUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBzfX0pO2xldCBuPXIoOTY1OCksdT1yKDYzNyksbz1yKDYzNDMpLGw9cigzNTcxKSxhPXIoNjg3MSksaT1yKDM1OTcpLGM9cig2Mzc4KTtmdW5jdGlvbiBzKGUpe3ZhciB0LHI7bGV0e25hdmlnYXRlZEF0OnMsaW5pdGlhbEZsaWdodERhdGE6Zixpbml0aWFsQ2Fub25pY2FsVXJsUGFydHM6ZCxpbml0aWFsUGFyYWxsZWxSb3V0ZXM6cCxsb2NhdGlvbjpoLGNvdWxkQmVJbnRlcmNlcHRlZDpfLHBvc3Rwb25lZDp5LHByZXJlbmRlcmVkOmJ9PWUsdj1kLmpvaW4oIi8iKSxnPSgwLGMuZ2V0RmxpZ2h0RGF0YVBhcnRzRnJvbVBhdGgpKGZbMF0pLHt0cmVlOm0sc2VlZERhdGE6UixoZWFkOkV9PWcsTz17bGF6eURhdGE6bnVsbCxyc2M6bnVsbD09Uj92b2lkIDA6UlsxXSxwcmVmZXRjaFJzYzpudWxsLGhlYWQ6bnVsbCxwcmVmZXRjaEhlYWQ6bnVsbCxwYXJhbGxlbFJvdXRlczpwLGxvYWRpbmc6bnVsbCE9KHQ9bnVsbD09Uj92b2lkIDA6UlszXSk/dDpudWxsLG5hdmlnYXRlZEF0OnN9LFA9aD8oMCxuLmNyZWF0ZUhyZWZGcm9tVXJsKShoKTp2OygwLGkuYWRkUmVmcmVzaE1hcmtlclRvQWN0aXZlUGFyYWxsZWxTZWdtZW50cykobSxQKTtsZXQgaj1uZXcgTWFwOyhudWxsPT09cHx8MD09PXAuc2l6ZSkmJigwLHUuZmlsbExhenlJdGVtc1RpbGxMZWFmV2l0aEhlYWQpKHMsTyx2b2lkIDAsbSxSLEUsdm9pZCAwKTtsZXQgVD17dHJlZTptLGNhY2hlOk8scHJlZmV0Y2hDYWNoZTpqLHB1c2hSZWY6e3BlbmRpbmdQdXNoOiExLG1wYU5hdmlnYXRpb246ITEscHJlc2VydmVDdXN0b21IaXN0b3J5U3RhdGU6ITB9LGZvY3VzQW5kU2Nyb2xsUmVmOnthcHBseTohMSxvbmx5SGFzaENoYW5nZTohMSxoYXNoRnJhZ21lbnQ6bnVsbCxzZWdtZW50UGF0aHM6W119LGNhbm9uaWNhbFVybDpQLG5leHRVcmw6bnVsbCE9KHI9KDAsby5leHRyYWN0UGF0aEZyb21GbGlnaHRSb3V0ZXJTdGF0ZSkobSl8fChudWxsPT1oP3ZvaWQgMDpoLnBhdGhuYW1lKSk/cjpudWxsfTtpZihoKXtsZXQgZT1uZXcgVVJMKCIiK2gucGF0aG5hbWUraC5zZWFyY2gsaC5vcmlnaW4pOygwLGwuY3JlYXRlU2VlZGVkUHJlZmV0Y2hDYWNoZUVudHJ5KSh7dXJsOmUsZGF0YTp7ZmxpZ2h0RGF0YTpbZ10sY2Fub25pY2FsVXJsOnZvaWQgMCxjb3VsZEJlSW50ZXJjZXB0ZWQ6ISFfLHByZXJlbmRlcmVkOmIscG9zdHBvbmVkOnksc3RhbGVUaW1lOmImJjE/bC5TVEFUSUNfU1RBTEVUSU1FX01TOi0xfSx0cmVlOlQudHJlZSxwcmVmZXRjaENhY2hlOlQucHJlZmV0Y2hDYWNoZSxuZXh0VXJsOlQubmV4dFVybCxraW5kOmI/YS5QcmVmZXRjaEtpbmQuRlVMTDphLlByZWZldGNoS2luZC5BVVRPfSl9cmV0dXJuIFR9KCJmdW5jdGlvbiI9PXR5cGVvZiB0LmRlZmF1bHR8fCJvYmplY3QiPT10eXBlb2YgdC5kZWZhdWx0JiZudWxsIT09dC5kZWZhdWx0KSYmdm9pZCAwPT09dC5kZWZhdWx0Ll9fZXNNb2R1bGUmJihPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KSxlLmV4cG9ydHM9dC5kZWZhdWx0KX0sMjY2OTooZSx0LHIpPT57InVzZSBzdHJpY3QiOyFmdW5jdGlvbiBlKCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18mJiJmdW5jdGlvbiI9PXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0UpdHJ5e19fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5jaGVja0RDRShlKX1jYXRjaChlKXtjb25zb2xlLmVycm9yKGUpfX0oKSxlLmV4cG9ydHM9cig5MjQ4KX0sMjc1MzooZSx0LHIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSwhZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gdClPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtlbnVtZXJhYmxlOiEwLGdldDp0W3JdfSl9KHQse2NyZWF0ZUZldGNoOmZ1bmN0aW9uKCl7cmV0dXJuIHl9LGNyZWF0ZUZyb21OZXh0UmVhZGFibGVTdHJlYW06ZnVuY3Rpb24oKXtyZXR1cm4gYn0sZmV0Y2hTZXJ2ZXJSZXNwb25zZTpmdW5jdGlvbigpe3JldHVybiBffX0pO2xldCBuPXIoNzE5NyksdT1yKDI0ODYpLG89cigxMjA5KSxsPXIoNTE1MyksYT1yKDY4NzEpLGk9cig2Mzc4KSxjPXIoMzIwMSkscz1yKDM5NiksZj1yKDMyMjMpLGQ9bi5jcmVhdGVGcm9tUmVhZGFibGVTdHJlYW07ZnVuY3Rpb24gcChlKXtyZXR1cm57ZmxpZ2h0RGF0YTooMCxmLnVybFRvVXJsV2l0aG91dEZsaWdodE1hcmtlcikobmV3IFVSTChlLGxvY2F0aW9uLm9yaWdpbikpLnRvU3RyaW5nKCksY2Fub25pY2FsVXJsOnZvaWQgMCxjb3VsZEJlSW50ZXJjZXB0ZWQ6ITEscHJlcmVuZGVyZWQ6ITEscG9zdHBvbmVkOiExLHN0YWxlVGltZTotMX19bGV0IGg9bmV3IEFib3J0Q29udHJvbGxlcjthc3luYyBmdW5jdGlvbiBfKGUsdCl7bGV0e2ZsaWdodFJvdXRlclN0YXRlOnIsbmV4dFVybDpuLHByZWZldGNoS2luZDpvfT10LGw9e1t1LlJTQ19IRUFERVJdOiIxIixbdS5ORVhUX1JPVVRFUl9TVEFURV9UUkVFX0hFQURFUl06KDAsaS5wcmVwYXJlRmxpZ2h0Um91dGVyU3RhdGVGb3JSZXF1ZXN0KShyLHQuaXNIbXJSZWZyZXNoKX07bz09PWEuUHJlZmV0Y2hLaW5kLkFVVE8mJihsW3UuTkVYVF9ST1VURVJfUFJFRkVUQ0hfSEVBREVSXT0iMSIpLG4mJihsW3UuTkVYVF9VUkxdPW4pO3RyeXt2YXIgcztsZXQgdD1vP289PT1hLlByZWZldGNoS2luZC5URU1QT1JBUlk/ImhpZ2giOiJsb3ciOiJhdXRvIjsoZT1uZXcgVVJMKGUpKS5wYXRobmFtZS5lbmRzV2l0aCgiLyIpP2UucGF0aG5hbWUrPSJpbmRleC50eHQiOmUucGF0aG5hbWUrPSIudHh0IjtsZXQgcj1hd2FpdCB5KGUsbCx0LGguc2lnbmFsKSxuPSgwLGYudXJsVG9VcmxXaXRob3V0RmxpZ2h0TWFya2VyKShuZXcgVVJMKHIudXJsKSksZD1yLnJlZGlyZWN0ZWQ/bjp2b2lkIDAsXz1yLmhlYWRlcnMuZ2V0KCJjb250ZW50LXR5cGUiKXx8IiIsdj0hIShudWxsPT0ocz1yLmhlYWRlcnMuZ2V0KCJ2YXJ5IikpP3ZvaWQgMDpzLmluY2x1ZGVzKHUuTkVYVF9VUkwpKSxnPSEhci5oZWFkZXJzLmdldCh1Lk5FWFRfRElEX1BPU1RQT05FX0hFQURFUiksbT1yLmhlYWRlcnMuZ2V0KHUuTkVYVF9ST1VURVJfU1RBTEVfVElNRV9IRUFERVIpLFI9bnVsbCE9PW0/MWUzKnBhcnNlSW50KG0sMTApOi0xLEU9Xy5zdGFydHNXaXRoKHUuUlNDX0NPTlRFTlRfVFlQRV9IRUFERVIpO2lmKEV8fChFPV8uc3RhcnRzV2l0aCgidGV4dC9wbGFpbiIpKSwhRXx8IXIub2t8fCFyLmJvZHkpcmV0dXJuIGUuaGFzaCYmKG4uaGFzaD1lLmhhc2gpLHAobi50b1N0cmluZygpKTtsZXQgTz1nP2Z1bmN0aW9uKGUpe2xldCB0PWUuZ2V0UmVhZGVyKCk7cmV0dXJuIG5ldyBSZWFkYWJsZVN0cmVhbSh7YXN5bmMgcHVsbChlKXtmb3IoOzspe2xldHtkb25lOnIsdmFsdWU6bn09YXdhaXQgdC5yZWFkKCk7aWYoIXIpe2UuZW5xdWV1ZShuKTtjb250aW51ZX1yZXR1cm59fX0pfShyLmJvZHkpOnIuYm9keSxQPWF3YWl0IGIoTyk7aWYoKDAsYy5nZXRBcHBCdWlsZElkKSgpIT09UC5iKXJldHVybiBwKHIudXJsKTtyZXR1cm57ZmxpZ2h0RGF0YTooMCxpLm5vcm1hbGl6ZUZsaWdodERhdGEpKFAuZiksY2Fub25pY2FsVXJsOmQsY291bGRCZUludGVyY2VwdGVkOnYscHJlcmVuZGVyZWQ6UC5TLHBvc3Rwb25lZDpnLHN0YWxlVGltZTpSfX1jYXRjaCh0KXtyZXR1cm4gaC5zaWduYWwuYWJvcnRlZHx8Y29uc29sZS5lcnJvcigiRmFpbGVkIHRvIGZldGNoIFJTQyBwYXlsb2FkIGZvciAiK2UrIi4gRmFsbGluZyBiYWNrIHRvIGJyb3dzZXIgbmF2aWdhdGlvbi4iLHQpLHtmbGlnaHREYXRhOmUudG9TdHJpbmcoKSxjYW5vbmljYWxVcmw6dm9pZCAwLGNvdWxkQmVJbnRlcmNlcHRlZDohMSxwcmVyZW5kZXJlZDohMSxwb3N0cG9uZWQ6ITEsc3RhbGVUaW1lOi0xfX19YXN5bmMgZnVuY3Rpb24geShlLHQscixuKXtsZXQgbz1uZXcgVVJMKGUpO2F3YWl0ICgwLHMuc2V0Q2FjaGVCdXN0aW5nU2VhcmNoUGFyYW0pKG8sdCk7bGV0IGw9YXdhaXQgZmV0Y2gobyx7Y3JlZGVudGlhbHM6InNhbWUtb3JpZ2luIixoZWFkZXJzOnQscHJpb3JpdHk6cnx8dm9pZCAwLHNpZ25hbDpufSksYT1sLnJlZGlyZWN0ZWQsaT1uZXcgVVJMKGwudXJsLG8pO3JldHVybiBpLnNlYXJjaFBhcmFtcy5kZWxldGUodS5ORVhUX1JTQ19VTklPTl9RVUVSWSkse3VybDppLmhyZWYscmVkaXJlY3RlZDphLG9rOmwub2ssaGVhZGVyczpsLmhlYWRlcnMsYm9keTpsLmJvZHksc3RhdHVzOmwuc3RhdHVzfX1mdW5jdGlvbiBiKGUpe3JldHVybiBkKGUse2NhbGxTZXJ2ZXI6by5jYWxsU2VydmVyLGZpbmRTb3VyY2VNYXBVUkw6bC5maW5kU291cmNlTWFwVVJMfSl9d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBhZ2VoaWRlIiwoKT0+e2guYWJvcnQoKX0pLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwYWdlc2hvdyIsKCk9PntoPW5ldyBBYm9ydENvbnRyb2xsZXJ9KSwoImZ1bmN0aW9uIj09dHlwZW9mIHQuZGVmYXVsdHx8Im9iamVjdCI9PXR5cGVvZiB0LmRlZmF1bHQmJm51bGwhPT10LmRlZmF1bHQpJiZ2b2lkIDA9PT10LmRlZmF1bHQuX19lc01vZHVsZSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpLGUuZXhwb3J0cz10LmRlZmF1bHQpfSwyODQ1OihlLHQpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSwhZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gdClPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtlbnVtZXJhYmxlOiEwLGdldDp0W3JdfSl9KHQse1VucmVjb2duaXplZEFjdGlvbkVycm9yOmZ1bmN0aW9uKCl7cmV0dXJuIHJ9LHVuc3RhYmxlX2lzVW5yZWNvZ25pemVkQWN0aW9uRXJyb3I6ZnVuY3Rpb24oKXtyZXR1cm4gbn19KTtjbGFzcyByIGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoLi4uZSl7c3VwZXIoLi4uZSksdGhpcy5uYW1lPSJVbnJlY29nbml6ZWRBY3Rpb25FcnJvciJ9fWZ1bmN0aW9uIG4oZSl7cmV0dXJuISEoZSYmIm9iamVjdCI9PXR5cGVvZiBlJiZlIGluc3RhbmNlb2Ygcil9KCJmdW5jdGlvbiI9PXR5cGVvZiB0LmRlZmF1bHR8fCJvYmplY3QiPT10eXBlb2YgdC5kZWZhdWx0JiZudWxsIT09dC5kZWZhdWx0KSYmdm9pZCAwPT09dC5kZWZhdWx0Ll9fZXNNb2R1bGUmJihPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KSxlLmV4cG9ydHM9dC5kZWZhdWx0KX0sMjkyOTooZSx0LHIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiaGFzQmFzZVBhdGgiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB1fX0pO2xldCBuPXIoMjAxOCk7ZnVuY3Rpb24gdShlKXtyZXR1cm4oMCxuLnBhdGhIYXNQcmVmaXgpKGUsIiIpfSgiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDMyMDE6KGUsdCk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLCFmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIse2VudW1lcmFibGU6ITAsZ2V0OnRbcl19KX0odCx7Z2V0QXBwQnVpbGRJZDpmdW5jdGlvbigpe3JldHVybiB1fSxzZXRBcHBCdWlsZElkOmZ1bmN0aW9uKCl7cmV0dXJuIG59fSk7bGV0IHI9IiI7ZnVuY3Rpb24gbihlKXtyPWV9ZnVuY3Rpb24gdSgpe3JldHVybiByfSgiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDMyMjM6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksIWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIHQpT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7ZW51bWVyYWJsZTohMCxnZXQ6dFtyXX0pfSh0LHtkb2VzU3RhdGljU2VnbWVudEFwcGVhckluVVJMOmZ1bmN0aW9uKCl7cmV0dXJuIGN9LGdldENhY2hlS2V5Rm9yRHluYW1pY1BhcmFtOmZ1bmN0aW9uKCl7cmV0dXJuIHN9LGdldFBhcmFtVmFsdWVGcm9tQ2FjaGVLZXk6ZnVuY3Rpb24oKXtyZXR1cm4gZH0sZ2V0UmVuZGVyZWRQYXRobmFtZTpmdW5jdGlvbigpe3JldHVybiBhfSxnZXRSZW5kZXJlZFNlYXJjaDpmdW5jdGlvbigpe3JldHVybiBsfSxwYXJzZUR5bmFtaWNQYXJhbUZyb21VUkxQYXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIGl9LHVybFRvVXJsV2l0aG91dEZsaWdodE1hcmtlcjpmdW5jdGlvbigpe3JldHVybiBmfX0pO2xldCBuPXIoNTM2MCksdT1yKDQ0MjUpLG89cigyNDg2KTtmdW5jdGlvbiBsKGUpe2xldCB0PWUuaGVhZGVycy5nZXQoby5ORVhUX1JFV1JJVFRFTl9RVUVSWV9IRUFERVIpO3JldHVybiBudWxsIT09dD8iIj09PXQ/IiI6Ij8iK3Q6ZihuZXcgVVJMKGUudXJsKSkuc2VhcmNofWZ1bmN0aW9uIGEoZSl7bGV0IHQ9ZS5oZWFkZXJzLmdldChvLk5FWFRfUkVXUklUVEVOX1BBVEhfSEVBREVSKTtyZXR1cm4gbnVsbCE9dD90OmYobmV3IFVSTChlLnVybCkpLnBhdGhuYW1lfWZ1bmN0aW9uIGkoZSx0LHIpe3N3aXRjaChlKXtjYXNlImMiOmNhc2UiY2kiOnJldHVybiByPHQubGVuZ3RoP3Quc2xpY2UocikubWFwKGU9PmVuY29kZVVSSUNvbXBvbmVudChlKSk6W107Y2FzZSJvYyI6cmV0dXJuIHI8dC5sZW5ndGg/dC5zbGljZShyKS5tYXAoZT0+ZW5jb2RlVVJJQ29tcG9uZW50KGUpKTpudWxsO2Nhc2UiZCI6Y2FzZSJkaSI6aWYocj49dC5sZW5ndGgpcmV0dXJuIiI7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCh0W3JdKTtkZWZhdWx0OnJldHVybiIifX1mdW5jdGlvbiBjKGUpe3JldHVybiEoZT09PXUuUk9PVF9TRUdNRU5UX1JFUVVFU1RfS0VZfHxlLnN0YXJ0c1dpdGgobi5QQUdFX1NFR01FTlRfS0VZKXx8IigiPT09ZVswXSYmZS5lbmRzV2l0aCgiKSIpKSYmZSE9PW4uREVGQVVMVF9TRUdNRU5UX0tFWSYmIi9fbm90LWZvdW5kIiE9PWV9ZnVuY3Rpb24gcyhlLHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZT8oMCxuLmFkZFNlYXJjaFBhcmFtc0lmUGFnZVNlZ21lbnQpKGUsT2JqZWN0LmZyb21FbnRyaWVzKG5ldyBVUkxTZWFyY2hQYXJhbXModCkpKTpudWxsPT09ZT8iIjplLmpvaW4oIi8iKX1mdW5jdGlvbiBmKGUpe2xldCB0PW5ldyBVUkwoZSk7aWYodC5zZWFyY2hQYXJhbXMuZGVsZXRlKG8uTkVYVF9SU0NfVU5JT05fUVVFUlkpLHQucGF0aG5hbWUuZW5kc1dpdGgoIi50eHQiKSl7bGV0e3BhdGhuYW1lOmV9PXQscj1lLmVuZHNXaXRoKCIvaW5kZXgudHh0Iik/MTA6NDt0LnBhdGhuYW1lPWUuc2xpY2UoMCwtcil9cmV0dXJuIHR9ZnVuY3Rpb24gZChlLHQpe3JldHVybiJjIj09PXR8fCJvYyI9PT10P2Uuc3BsaXQoIi8iKTplfSgiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDM0NDM6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkFwcFJvdXRlckFubm91bmNlciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGx9fSk7bGV0IG49cigyMTE1KSx1PXIoNzY1MCksbz0ibmV4dC1yb3V0ZS1hbm5vdW5jZXIiO2Z1bmN0aW9uIGwoZSl7bGV0e3RyZWU6dH09ZSxbcixsXT0oMCxuLnVzZVN0YXRlKShudWxsKTsoMCxuLnVzZUVmZmVjdCkoKCk9PihsKGZ1bmN0aW9uKCl7dmFyIGU7bGV0IHQ9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUobylbMF07aWYobnVsbD09dHx8bnVsbD09KGU9dC5zaGFkb3dSb290KT92b2lkIDA6ZS5jaGlsZE5vZGVzWzBdKXJldHVybiB0LnNoYWRvd1Jvb3QuY2hpbGROb2Rlc1swXTt7bGV0IGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChvKTtlLnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOmFic29sdXRlIjtsZXQgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdC5hcmlhTGl2ZT0iYXNzZXJ0aXZlIix0LmlkPSJfX25leHQtcm91dGUtYW5ub3VuY2VyX18iLHQucm9sZT0iYWxlcnQiLHQuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOjA7aGVpZ2h0OjFweDttYXJnaW46LTFweDtwYWRkaW5nOjA7d2lkdGg6MXB4O2NsaXA6cmVjdCgwIDAgMCAwKTtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwO3dvcmQtd3JhcDpub3JtYWwiLGUuYXR0YWNoU2hhZG93KHttb2RlOiJvcGVuIn0pLmFwcGVuZENoaWxkKHQpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZSksdH19KCkpLCgpPT57bGV0IGU9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUobylbMF07KG51bGw9PWU/dm9pZCAwOmUuaXNDb25uZWN0ZWQpJiZkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGUpfSksW10pO2xldFthLGldPSgwLG4udXNlU3RhdGUpKCIiKSxjPSgwLG4udXNlUmVmKSh2b2lkIDApO3JldHVybigwLG4udXNlRWZmZWN0KSgoKT0+e2xldCBlPSIiO2lmKGRvY3VtZW50LnRpdGxlKWU9ZG9jdW1lbnQudGl0bGU7ZWxzZXtsZXQgdD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJoMSIpO3QmJihlPXQuaW5uZXJUZXh0fHx0LnRleHRDb250ZW50fHwiIil9dm9pZCAwIT09Yy5jdXJyZW50JiZjLmN1cnJlbnQhPT1lJiZpKGUpLGMuY3VycmVudD1lfSxbdF0pLHI/KDAsdS5jcmVhdGVQb3J0YWwpKGEscik6bnVsbH0oImZ1bmN0aW9uIj09dHlwZW9mIHQuZGVmYXVsdHx8Im9iamVjdCI9PXR5cGVvZiB0LmRlZmF1bHQmJm51bGwhPT10LmRlZmF1bHQpJiZ2b2lkIDA9PT10LmRlZmF1bHQuX19lc01vZHVsZSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpLGUuZXhwb3J0cz10LmRlZmF1bHQpfSwzNDYzOihlLHQpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicmVwb3J0R2xvYmFsRXJyb3IiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByfX0pO2xldCByPSJmdW5jdGlvbiI9PXR5cGVvZiByZXBvcnRFcnJvcj9yZXBvcnRFcnJvcjplPT57Z2xvYmFsVGhpcy5jb25zb2xlLmVycm9yKGUpfTsoImZ1bmN0aW9uIj09dHlwZW9mIHQuZGVmYXVsdHx8Im9iamVjdCI9PXR5cGVvZiB0LmRlZmF1bHQmJm51bGwhPT10LmRlZmF1bHQpJiZ2b2lkIDA9PT10LmRlZmF1bHQuX19lc01vZHVsZSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpLGUuZXhwb3J0cz10LmRlZmF1bHQpfSwzNDgwOihlLHQscik9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbigpe3Rocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFcnJvcigiYGZvcmJpZGRlbigpYCBpcyBleHBlcmltZW50YWwgYW5kIG9ubHkgYWxsb3dlZCB0byBiZSBlbmFibGVkIHdoZW4gYGV4cGVyaW1lbnRhbC5hdXRoSW50ZXJydXB0c2AgaXMgZW5hYmxlZC4iKSwiX19ORVhUX0VSUk9SX0NPREUiLHt2YWx1ZToiRTQ4OCIsZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImZvcmJpZGRlbiIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG59fSkscig3MDk5KS5IVFRQX0VSUk9SX0ZBTExCQUNLX0VSUk9SX0NPREUsKCJmdW5jdGlvbiI9PXR5cGVvZiB0LmRlZmF1bHR8fCJvYmplY3QiPT10eXBlb2YgdC5kZWZhdWx0JiZudWxsIT09dC5kZWZhdWx0KSYmdm9pZCAwPT09dC5kZWZhdWx0Ll9fZXNNb2R1bGUmJihPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KSxlLmV4cG9ydHM9dC5kZWZhdWx0KX0sMzQ4NTooZSx0LHIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSwhZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gdClPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtlbnVtZXJhYmxlOiEwLGdldDp0W3JdfSl9KHQse2NvbXB1dGVDYWNoZUJ1c3RpbmdTZWFyY2hQYXJhbTpmdW5jdGlvbigpe3JldHVybiBpfSxjb21wdXRlTGVnYWN5Q2FjaGVCdXN0aW5nU2VhcmNoUGFyYW06ZnVuY3Rpb24oKXtyZXR1cm4gY319KTtsZXQgbj1yKDc1KSx1PW5ldyBUZXh0RW5jb2RlcjtmdW5jdGlvbiBvKGUpe3JldHVybiB2b2lkIDA9PT1lPyIwIjpBcnJheS5pc0FycmF5KGUpP2Uuam9pbigiLCIpOmV9ZnVuY3Rpb24gbChlLHQscixuKXtyZXR1cm4odm9pZCAwPT09ZXx8IjAiPT09ZSkmJnZvaWQgMD09PXQmJnZvaWQgMD09PXImJnZvaWQgMD09PW4/bnVsbDpbbnVsbCE9ZT9lOiIwIixvKHQpLG8ociksbyhuKV0uam9pbigiLCIpfWFzeW5jIGZ1bmN0aW9uIGEoZSl7dmFyIHQ9bmV3IFVpbnQ4QXJyYXkoYXdhaXQgZ2xvYmFsVGhpcy5jcnlwdG8uc3VidGxlLmRpZ2VzdCgiU0hBLTI1NiIsdS5lbmNvZGUoZSkpKS5zdWJhcnJheSgwLDEyKTtsZXQgcj0iIjtmb3IobGV0IGU9MDtlPHQubGVuZ3RoO2UrKylyKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHRbZV0pO3JldHVybiBidG9hKHIpLnJlcGxhY2UoL1wrL2csIi0iKS5yZXBsYWNlKC9cLy9nLCJfIikucmVwbGFjZSgvPSskLywiIil9YXN5bmMgZnVuY3Rpb24gaShlLHQscixuKXtsZXQgdT1sKGUsdCxyLG4pO3JldHVybiBudWxsPT09dT8iIjphKHUpfWZ1bmN0aW9uIGMoZSx0LHIsdSl7bGV0IG89bChlLHQscix1KTtyZXR1cm4gbnVsbD09PW8/IiI6KDAsbi5oZXhIYXNoKShvKX19LDM0OTk6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksIWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIHQpT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7ZW51bWVyYWJsZTohMCxnZXQ6dFtyXX0pfSh0LHtJRExFX0xJTktfU1RBVFVTOmZ1bmN0aW9uKCl7cmV0dXJuIHN9LFBFTkRJTkdfTElOS19TVEFUVVM6ZnVuY3Rpb24oKXtyZXR1cm4gY30sbW91bnRGb3JtSW5zdGFuY2U6ZnVuY3Rpb24oKXtyZXR1cm4gZ30sbW91bnRMaW5rSW5zdGFuY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdn0sb25MaW5rVmlzaWJpbGl0eUNoYW5nZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gUn0sb25OYXZpZ2F0aW9uSW50ZW50OmZ1bmN0aW9uKCl7cmV0dXJuIEV9LHBpbmdWaXNpYmxlTGlua3M6ZnVuY3Rpb24oKXtyZXR1cm4gUH0sc2V0TGlua0ZvckN1cnJlbnROYXZpZ2F0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIGZ9LHVubW91bnRMaW5rRm9yQ3VycmVudE5hdmlnYXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gZH0sdW5tb3VudFByZWZldGNoYWJsZUluc3RhbmNlOmZ1bmN0aW9uKCl7cmV0dXJuIG19fSkscigxODA3KTtsZXQgbj1yKDcyOTcpLHU9cig2MDQ4KSxvPXIoMjExNSksbD1yKDY4NzEpLGE9cig4MzAyKSxpPW51bGwsYz17cGVuZGluZzohMH0scz17cGVuZGluZzohMX07ZnVuY3Rpb24gZihlKXsoMCxvLnN0YXJ0VHJhbnNpdGlvbikoKCk9PntudWxsPT1pfHxpLnNldE9wdGltaXN0aWNMaW5rU3RhdHVzKHMpLG51bGw9PWV8fGUuc2V0T3B0aW1pc3RpY0xpbmtTdGF0dXMoYyksaT1lfSl9ZnVuY3Rpb24gZChlKXtpPT09ZSYmKGk9bnVsbCl9bGV0IHA9ImZ1bmN0aW9uIj09dHlwZW9mIFdlYWtNYXA/bmV3IFdlYWtNYXA6bmV3IE1hcCxoPW5ldyBTZXQsXz0iZnVuY3Rpb24iPT10eXBlb2YgSW50ZXJzZWN0aW9uT2JzZXJ2ZXI/bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9uKGUpe2ZvcihsZXQgdCBvZiBlKXtsZXQgZT10LmludGVyc2VjdGlvblJhdGlvPjA7Uih0LnRhcmdldCxlKX19LHtyb290TWFyZ2luOiIyMDBweCJ9KTpudWxsO2Z1bmN0aW9uIHkoZSx0KXt2b2lkIDAhPT1wLmdldChlKSYmbShlKSxwLnNldChlLHQpLG51bGwhPT1fJiZfLm9ic2VydmUoZSl9ZnVuY3Rpb24gYihlKXt0cnl7cmV0dXJuKDAsbi5jcmVhdGVQcmVmZXRjaFVSTCkoZSl9Y2F0Y2godCl7cmV0dXJuKCJmdW5jdGlvbiI9PXR5cGVvZiByZXBvcnRFcnJvcj9yZXBvcnRFcnJvcjpjb25zb2xlLmVycm9yKSgiQ2Fubm90IHByZWZldGNoICciK2UrIicgYmVjYXVzZSBpdCBjYW5ub3QgYmUgY29udmVydGVkIHRvIGEgVVJMLiIpLG51bGx9fWZ1bmN0aW9uIHYoZSx0LHIsbix1LG8pe2lmKHUpe2xldCB1PWIodCk7aWYobnVsbCE9PXUpe2xldCB0PXtyb3V0ZXI6cixmZXRjaFN0cmF0ZWd5Om4saXNWaXNpYmxlOiExLHByZWZldGNoVGFzazpudWxsLHByZWZldGNoSHJlZjp1LmhyZWYsc2V0T3B0aW1pc3RpY0xpbmtTdGF0dXM6b307cmV0dXJuIHkoZSx0KSx0fX1yZXR1cm57cm91dGVyOnIsZmV0Y2hTdHJhdGVneTpuLGlzVmlzaWJsZTohMSxwcmVmZXRjaFRhc2s6bnVsbCxwcmVmZXRjaEhyZWY6bnVsbCxzZXRPcHRpbWlzdGljTGlua1N0YXR1czpvfX1mdW5jdGlvbiBnKGUsdCxyLG4pe2xldCB1PWIodCk7bnVsbCE9PXUmJnkoZSx7cm91dGVyOnIsZmV0Y2hTdHJhdGVneTpuLGlzVmlzaWJsZTohMSxwcmVmZXRjaFRhc2s6bnVsbCxwcmVmZXRjaEhyZWY6dS5ocmVmLHNldE9wdGltaXN0aWNMaW5rU3RhdHVzOm51bGx9KX1mdW5jdGlvbiBtKGUpe2xldCB0PXAuZ2V0KGUpO2lmKHZvaWQgMCE9PXQpe3AuZGVsZXRlKGUpLGguZGVsZXRlKHQpO2xldCByPXQucHJlZmV0Y2hUYXNrO251bGwhPT1yJiYoMCx1LmNhbmNlbFByZWZldGNoVGFzaykocil9bnVsbCE9PV8mJl8udW5vYnNlcnZlKGUpfWZ1bmN0aW9uIFIoZSx0KXtsZXQgcj1wLmdldChlKTt2b2lkIDAhPT1yJiYoci5pc1Zpc2libGU9dCx0P2guYWRkKHIpOmguZGVsZXRlKHIpLE8ocix1LlByZWZldGNoUHJpb3JpdHkuRGVmYXVsdCkpfWZ1bmN0aW9uIEUoZSx0KXtsZXQgcj1wLmdldChlKTt2b2lkIDAhPT1yJiZ2b2lkIDAhPT1yJiZPKHIsdS5QcmVmZXRjaFByaW9yaXR5LkludGVudCl9ZnVuY3Rpb24gTyhlLHQpe3ZhciByO2xldCBuPWUucHJlZmV0Y2hUYXNrO2lmKCFlLmlzVmlzaWJsZSl7bnVsbCE9PW4mJigwLHUuY2FuY2VsUHJlZmV0Y2hUYXNrKShuKTtyZXR1cm59cj1lLChhc3luYygpPT57bGV0IGU7c3dpdGNoKHIuZmV0Y2hTdHJhdGVneSl7Y2FzZSB1LkZldGNoU3RyYXRlZ3kuUFBSOmU9bC5QcmVmZXRjaEtpbmQuQVVUTzticmVhaztjYXNlIHUuRmV0Y2hTdHJhdGVneS5GdWxsOmU9bC5QcmVmZXRjaEtpbmQuRlVMTDticmVhaztjYXNlIHUuRmV0Y2hTdHJhdGVneS5QUFJSdW50aW1lOnRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShuZXcgYS5JbnZhcmlhbnRFcnJvcigiRmV0Y2hTdHJhdGVneS5QUFJSdW50aW1lIHNob3VsZCBuZXZlciBiZSB1c2VkIHdoZW4gYGV4cGVyaW1lbnRhbC5jbGllbnRTZWdtZW50Q2FjaGVgIGlzIGRpc2FibGVkIiksIl9fTkVYVF9FUlJPUl9DT0RFIix7dmFsdWU6IkU3NzIiLGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSk7ZGVmYXVsdDpyLmZldGNoU3RyYXRlZ3ksZT12b2lkIDB9cmV0dXJuIHIucm91dGVyLnByZWZldGNoKHIucHJlZmV0Y2hIcmVmLHtraW5kOmV9KX0pKCkuY2F0Y2goZT0+e30pfWZ1bmN0aW9uIFAoZSx0KXtmb3IobGV0IHIgb2YgaCl7bGV0IG49ci5wcmVmZXRjaFRhc2s7aWYobnVsbCE9PW4mJiEoMCx1LmlzUHJlZmV0Y2hUYXNrRGlydHkpKG4sZSx0KSljb250aW51ZTtudWxsIT09biYmKDAsdS5jYW5jZWxQcmVmZXRjaFRhc2spKG4pO2xldCBvPSgwLHUuY3JlYXRlQ2FjaGVLZXkpKHIucHJlZmV0Y2hIcmVmLGUpO3IucHJlZmV0Y2hUYXNrPSgwLHUuc2NoZWR1bGVQcmVmZXRjaFRhc2spKG8sdCxyLmZldGNoU3RyYXRlZ3ksdS5QcmVmZXRjaFByaW9yaXR5LkRlZmF1bHQsbnVsbCl9fSgiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDM1NzE6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksIWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIHQpT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7ZW51bWVyYWJsZTohMCxnZXQ6dFtyXX0pfSh0LHtEWU5BTUlDX1NUQUxFVElNRV9NUzpmdW5jdGlvbigpe3JldHVybiBkfSxTVEFUSUNfU1RBTEVUSU1FX01TOmZ1bmN0aW9uKCl7cmV0dXJuIHB9LGNyZWF0ZVNlZWRlZFByZWZldGNoQ2FjaGVFbnRyeTpmdW5jdGlvbigpe3JldHVybiBjfSxnZXRPckNyZWF0ZVByZWZldGNoQ2FjaGVFbnRyeTpmdW5jdGlvbigpe3JldHVybiBpfSxwcnVuZVByZWZldGNoQ2FjaGU6ZnVuY3Rpb24oKXtyZXR1cm4gZn19KTtsZXQgbj1yKDI3NTMpLHU9cig2ODcxKSxvPXIoMzkzMyk7ZnVuY3Rpb24gbChlLHQscil7bGV0IG49ZS5wYXRobmFtZTtyZXR1cm4odCYmKG4rPWUuc2VhcmNoKSxyKT8iIityKyIlIituOm59ZnVuY3Rpb24gYShlLHQscil7cmV0dXJuIGwoZSx0PT09dS5QcmVmZXRjaEtpbmQuRlVMTCxyKX1mdW5jdGlvbiBpKGUpe2xldHt1cmw6dCxuZXh0VXJsOnIsdHJlZTpuLHByZWZldGNoQ2FjaGU6byxraW5kOmEsYWxsb3dBbGlhc2luZzppPSEwfT1lLGM9ZnVuY3Rpb24oZSx0LHIsbixvKXtmb3IobGV0IGEgb2Yodm9pZCAwPT09dCYmKHQ9dS5QcmVmZXRjaEtpbmQuVEVNUE9SQVJZKSxbcixudWxsXSkpe2xldCByPWwoZSwhMCxhKSxpPWwoZSwhMSxhKSxjPWUuc2VhcmNoP3I6aSxzPW4uZ2V0KGMpO2lmKHMmJm8pe2lmKHMudXJsLnBhdGhuYW1lPT09ZS5wYXRobmFtZSYmcy51cmwuc2VhcmNoIT09ZS5zZWFyY2gpcmV0dXJuey4uLnMsYWxpYXNlZDohMH07cmV0dXJuIHN9bGV0IGY9bi5nZXQoaSk7aWYobyYmZS5zZWFyY2gmJnQhPT11LlByZWZldGNoS2luZC5GVUxMJiZmJiYhZi5rZXkuaW5jbHVkZXMoIiUiKSlyZXR1cm57Li4uZixhbGlhc2VkOiEwfX1pZih0IT09dS5QcmVmZXRjaEtpbmQuRlVMTCYmbyl7Zm9yKGxldCB0IG9mIG4udmFsdWVzKCkpaWYodC51cmwucGF0aG5hbWU9PT1lLnBhdGhuYW1lJiYhdC5rZXkuaW5jbHVkZXMoIiUiKSlyZXR1cm57Li4udCxhbGlhc2VkOiEwfX19KHQsYSxyLG8saSk7cmV0dXJuIGM/KGMuc3RhdHVzPWgoYyksYy5raW5kIT09dS5QcmVmZXRjaEtpbmQuRlVMTCYmYT09PXUuUHJlZmV0Y2hLaW5kLkZVTEwmJmMuZGF0YS50aGVuKGU9PntpZighKEFycmF5LmlzQXJyYXkoZS5mbGlnaHREYXRhKSYmZS5mbGlnaHREYXRhLnNvbWUoZT0+ZS5pc1Jvb3RSZW5kZXImJm51bGwhPT1lLnNlZWREYXRhKSkpcmV0dXJuIHMoe3RyZWU6bix1cmw6dCxuZXh0VXJsOnIscHJlZmV0Y2hDYWNoZTpvLGtpbmQ6bnVsbCE9YT9hOnUuUHJlZmV0Y2hLaW5kLlRFTVBPUkFSWX0pfSksYSYmYy5raW5kPT09dS5QcmVmZXRjaEtpbmQuVEVNUE9SQVJZJiYoYy5raW5kPWEpLGMpOnMoe3RyZWU6bix1cmw6dCxuZXh0VXJsOnIscHJlZmV0Y2hDYWNoZTpvLGtpbmQ6YXx8dS5QcmVmZXRjaEtpbmQuVEVNUE9SQVJZfSl9ZnVuY3Rpb24gYyhlKXtsZXR7bmV4dFVybDp0LHRyZWU6cixwcmVmZXRjaENhY2hlOm4sdXJsOm8sZGF0YTpsLGtpbmQ6aX09ZSxjPWwuY291bGRCZUludGVyY2VwdGVkP2EobyxpLHQpOmEobyxpKSxzPXt0cmVlQXRUaW1lT2ZQcmVmZXRjaDpyLGRhdGE6UHJvbWlzZS5yZXNvbHZlKGwpLGtpbmQ6aSxwcmVmZXRjaFRpbWU6RGF0ZS5ub3coKSxsYXN0VXNlZFRpbWU6RGF0ZS5ub3coKSxzdGFsZVRpbWU6bC5zdGFsZVRpbWUsa2V5OmMsc3RhdHVzOnUuUHJlZmV0Y2hDYWNoZUVudHJ5U3RhdHVzLmZyZXNoLHVybDpvfTtyZXR1cm4gbi5zZXQoYyxzKSxzfWZ1bmN0aW9uIHMoZSl7bGV0e3VybDp0LGtpbmQ6cix0cmVlOmwsbmV4dFVybDppLHByZWZldGNoQ2FjaGU6Y309ZSxzPWEodCxyKSxmPW8ucHJlZmV0Y2hRdWV1ZS5lbnF1ZXVlKCgpPT4oMCxuLmZldGNoU2VydmVyUmVzcG9uc2UpKHQse2ZsaWdodFJvdXRlclN0YXRlOmwsbmV4dFVybDppLHByZWZldGNoS2luZDpyfSkudGhlbihlPT57bGV0IHI7aWYoZS5jb3VsZEJlSW50ZXJjZXB0ZWQmJihyPWZ1bmN0aW9uKGUpe2xldHt1cmw6dCxuZXh0VXJsOnIscHJlZmV0Y2hDYWNoZTpuLGV4aXN0aW5nQ2FjaGVLZXk6dX09ZSxvPW4uZ2V0KHUpO2lmKCFvKXJldHVybjtsZXQgbD1hKHQsby5raW5kLHIpO3JldHVybiBuLnNldChsLHsuLi5vLGtleTpsfSksbi5kZWxldGUodSksbH0oe3VybDp0LGV4aXN0aW5nQ2FjaGVLZXk6cyxuZXh0VXJsOmkscHJlZmV0Y2hDYWNoZTpjfSkpLGUucHJlcmVuZGVyZWQpe2xldCB0PWMuZ2V0KG51bGwhPXI/cjpzKTt0JiYodC5raW5kPXUuUHJlZmV0Y2hLaW5kLkZVTEwsLTEhPT1lLnN0YWxlVGltZSYmKHQuc3RhbGVUaW1lPWUuc3RhbGVUaW1lKSl9cmV0dXJuIGV9KSksZD17dHJlZUF0VGltZU9mUHJlZmV0Y2g6bCxkYXRhOmYsa2luZDpyLHByZWZldGNoVGltZTpEYXRlLm5vdygpLGxhc3RVc2VkVGltZTpudWxsLHN0YWxlVGltZTotMSxrZXk6cyxzdGF0dXM6dS5QcmVmZXRjaENhY2hlRW50cnlTdGF0dXMuZnJlc2gsdXJsOnR9O3JldHVybiBjLnNldChzLGQpLGR9ZnVuY3Rpb24gZihlKXtmb3IobGV0W3Qscl1vZiBlKWgocik9PT11LlByZWZldGNoQ2FjaGVFbnRyeVN0YXR1cy5leHBpcmVkJiZlLmRlbGV0ZSh0KX1sZXQgZD0xZTMqTnVtYmVyKCIwIikscD0xZTMqTnVtYmVyKCIzMDAiKTtmdW5jdGlvbiBoKGUpe2xldHtraW5kOnQscHJlZmV0Y2hUaW1lOnIsbGFzdFVzZWRUaW1lOm59PWU7cmV0dXJuIERhdGUubm93KCk8KG51bGwhPW4/bjpyKStkP24/dS5QcmVmZXRjaENhY2hlRW50cnlTdGF0dXMucmV1c2FibGU6dS5QcmVmZXRjaENhY2hlRW50cnlTdGF0dXMuZnJlc2g6dD09PXUuUHJlZmV0Y2hLaW5kLkFVVE8mJkRhdGUubm93KCk8citwP3UuUHJlZmV0Y2hDYWNoZUVudHJ5U3RhdHVzLnN0YWxlOnQ9PT11LlByZWZldGNoS2luZC5GVUxMJiZEYXRlLm5vdygpPHIrcD91LlByZWZldGNoQ2FjaGVFbnRyeVN0YXR1cy5yZXVzYWJsZTp1LlByZWZldGNoQ2FjaGVFbnRyeVN0YXR1cy5leHBpcmVkfSgiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDM1OTc6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksIWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIHQpT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7ZW51bWVyYWJsZTohMCxnZXQ6dFtyXX0pfSh0LHthZGRSZWZyZXNoTWFya2VyVG9BY3RpdmVQYXJhbGxlbFNlZ21lbnRzOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGUodCxyKXtsZXRbbix1LCxsXT10O2ZvcihsZXQgYSBpbiBuLmluY2x1ZGVzKG8uUEFHRV9TRUdNRU5UX0tFWSkmJiJyZWZyZXNoIiE9PWwmJih0WzJdPXIsdFszXT0icmVmcmVzaCIpLHUpZSh1W2FdLHIpfX0scmVmcmVzaEluYWN0aXZlUGFyYWxsZWxTZWdtZW50czpmdW5jdGlvbigpe3JldHVybiBsfX0pO2xldCBuPXIoNzYwOSksdT1yKDI3NTMpLG89cig1MzYwKTthc3luYyBmdW5jdGlvbiBsKGUpe2xldCB0PW5ldyBTZXQ7YXdhaXQgYSh7Li4uZSxyb290VHJlZTplLnVwZGF0ZWRUcmVlLGZldGNoZWRTZWdtZW50czp0fSl9YXN5bmMgZnVuY3Rpb24gYShlKXtsZXR7bmF2aWdhdGVkQXQ6dCxzdGF0ZTpyLHVwZGF0ZWRUcmVlOm8sdXBkYXRlZENhY2hlOmwsaW5jbHVkZU5leHRVcmw6aSxmZXRjaGVkU2VnbWVudHM6Yyxyb290VHJlZTpzPW8sY2Fub25pY2FsVXJsOmZ9PWUsWyxkLHAsaF09byxfPVtdO2lmKHAmJnAhPT1mJiYicmVmcmVzaCI9PT1oJiYhYy5oYXMocCkpe2MuYWRkKHApO2xldCBlPSgwLHUuZmV0Y2hTZXJ2ZXJSZXNwb25zZSkobmV3IFVSTChwLGxvY2F0aW9uLm9yaWdpbikse2ZsaWdodFJvdXRlclN0YXRlOltzWzBdLHNbMV0sc1syXSwicmVmZXRjaCJdLG5leHRVcmw6aT9yLm5leHRVcmw6bnVsbH0pLnRoZW4oZT0+e2xldHtmbGlnaHREYXRhOnJ9PWU7aWYoInN0cmluZyIhPXR5cGVvZiByKWZvcihsZXQgZSBvZiByKSgwLG4uYXBwbHlGbGlnaHREYXRhKSh0LGwsbCxlKX0pO18ucHVzaChlKX1mb3IobGV0IGUgaW4gZCl7bGV0IG49YSh7bmF2aWdhdGVkQXQ6dCxzdGF0ZTpyLHVwZGF0ZWRUcmVlOmRbZV0sdXBkYXRlZENhY2hlOmwsaW5jbHVkZU5leHRVcmw6aSxmZXRjaGVkU2VnbWVudHM6Yyxyb290VHJlZTpzLGNhbm9uaWNhbFVybDpmfSk7Xy5wdXNoKG4pfWF3YWl0IFByb21pc2UuYWxsKF8pfSgiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDM2NjM6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImFwcEJvb3RzdHJhcCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHV9fSk7bGV0IG49cig0NjgxKTtmdW5jdGlvbiB1KGUpe3ZhciB0LHI7dD1zZWxmLl9fbmV4dF9zLHI9KCk9PntlKCl9LHQmJnQubGVuZ3RoP3QucmVkdWNlKChlLHQpPT57bGV0W3IsdV09dDtyZXR1cm4gZS50aGVuKCgpPT5uZXcgUHJvbWlzZSgoZSx0KT0+e2xldCBvPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO3UmJigwLG4uc2V0QXR0cmlidXRlc0Zyb21Qcm9wcykobyx1KSxyPyhvLnNyYz1yLG8ub25sb2FkPSgpPT5lKCksby5vbmVycm9yPXQpOnUmJihvLmlubmVySFRNTD11LmNoaWxkcmVuLHNldFRpbWVvdXQoZSkpLGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobyl9KSl9LFByb21pc2UucmVzb2x2ZSgpKS5jYXRjaChlPT57Y29uc29sZS5lcnJvcihlKX0pLnRoZW4oKCk9PntyKCl9KTpyKCl9d2luZG93Lm5leHQ9e3ZlcnNpb246IjE1LjUuMTkiLGFwcERpcjohMH0sKCJmdW5jdGlvbiI9PXR5cGVvZiB0LmRlZmF1bHR8fCJvYmplY3QiPT10eXBlb2YgdC5kZWZhdWx0JiZudWxsIT09dC5kZWZhdWx0KSYmdm9pZCAwPT09dC5kZWZhdWx0Ll9fZXNNb2R1bGUmJihPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KSxlLmV4cG9ydHM9dC5kZWZhdWx0KX0sMzc4OTooZSx0LHIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSwhZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gdClPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtlbnVtZXJhYmxlOiEwLGdldDp0W3JdfSl9KHQse2lzUmVjb3ZlcmFibGVFcnJvcjpmdW5jdGlvbigpe3JldHVybiBpfSxvblJlY292ZXJhYmxlRXJyb3I6ZnVuY3Rpb24oKXtyZXR1cm4gY319KTtsZXQgbj1yKDgxNDApLHU9cig0NTUzKSxvPW4uXyhyKDI0NDQpKSxsPXIoMzQ2MyksYT1uZXcgV2Vha1NldDtmdW5jdGlvbiBpKGUpe3JldHVybiBhLmhhcyhlKX1sZXQgYz1lPT57bGV0IHQ9KDAsby5kZWZhdWx0KShlKSYmImNhdXNlImluIGU/ZS5jYXVzZTplOygwLHUuaXNCYWlsb3V0VG9DU1JFcnJvcikodCl8fCgwLGwucmVwb3J0R2xvYmFsRXJyb3IpKHQpfTsoImZ1bmN0aW9uIj09dHlwZW9mIHQuZGVmYXVsdHx8Im9iamVjdCI9PXR5cGVvZiB0LmRlZmF1bHQmJm51bGwhPT10LmRlZmF1bHQpJiZ2b2lkIDA9PT10LmRlZmF1bHQuX19lc01vZHVsZSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpLGUuZXhwb3J0cz10LmRlZmF1bHQpfSwzODYwOihlLHQscik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJ1bnN0YWJsZV9yZXRocm93Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbn19KTtsZXQgbj1yKDc4NTgpLnVuc3RhYmxlX3JldGhyb3c7KCJmdW5jdGlvbiI9PXR5cGVvZiB0LmRlZmF1bHR8fCJvYmplY3QiPT10eXBlb2YgdC5kZWZhdWx0JiZudWxsIT09dC5kZWZhdWx0KSYmdm9pZCAwPT09dC5kZWZhdWx0Ll9fZXNNb2R1bGUmJihPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KSxlLmV4cG9ydHM9dC5kZWZhdWx0KX0sMzg2NTooZSx0LHIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSwhZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gdClPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtlbnVtZXJhYmxlOiEwLGdldDp0W3JdfSl9KHQse1BhdGhQYXJhbXNDb250ZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIGx9LFBhdGhuYW1lQ29udGV4dDpmdW5jdGlvbigpe3JldHVybiBvfSxTZWFyY2hQYXJhbXNDb250ZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIHV9fSk7bGV0IG49cigyMTE1KSx1PSgwLG4uY3JlYXRlQ29udGV4dCkobnVsbCksbz0oMCxuLmNyZWF0ZUNvbnRleHQpKG51bGwpLGw9KDAsbi5jcmVhdGVDb250ZXh0KShudWxsKX0sMzg3OTooZSx0LHIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiYWRkUGF0aFByZWZpeCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHV9fSk7bGV0IG49cig1MjQwKTtmdW5jdGlvbiB1KGUsdCl7aWYoIWUuc3RhcnRzV2l0aCgiLyIpfHwhdClyZXR1cm4gZTtsZXR7cGF0aG5hbWU6cixxdWVyeTp1LGhhc2g6b309KDAsbi5wYXJzZVBhdGgpKGUpO3JldHVybiIiK3Qrcit1K299fSwzODg2OihlLHQscik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJIVFRQQWNjZXNzRmFsbGJhY2tCb3VuZGFyeSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHN9fSk7bGV0IG49cig5NDE3KSx1PXIoNTE1NSksbz1uLl8ocigyMTE1KSksbD1yKDE0ODYpLGE9cig3MDk5KTtyKDQ3ODEpO2xldCBpPXIoNjc1Mik7Y2xhc3MgYyBleHRlbmRzIG8uZGVmYXVsdC5Db21wb25lbnR7Y29tcG9uZW50RGlkQ2F0Y2goKXt9c3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcihlKXtpZigoMCxhLmlzSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3IpKGUpKXJldHVybnt0cmlnZ2VyZWRTdGF0dXM6KDAsYS5nZXRBY2Nlc3NGYWxsYmFja0hUVFBTdGF0dXMpKGUpfTt0aHJvdyBlfXN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoZSx0KXtyZXR1cm4gZS5wYXRobmFtZSE9PXQucHJldmlvdXNQYXRobmFtZSYmdC50cmlnZ2VyZWRTdGF0dXM/e3RyaWdnZXJlZFN0YXR1czp2b2lkIDAscHJldmlvdXNQYXRobmFtZTplLnBhdGhuYW1lfTp7dHJpZ2dlcmVkU3RhdHVzOnQudHJpZ2dlcmVkU3RhdHVzLHByZXZpb3VzUGF0aG5hbWU6ZS5wYXRobmFtZX19cmVuZGVyKCl7bGV0e25vdEZvdW5kOmUsZm9yYmlkZGVuOnQsdW5hdXRob3JpemVkOnIsY2hpbGRyZW46bn09dGhpcy5wcm9wcyx7dHJpZ2dlcmVkU3RhdHVzOm99PXRoaXMuc3RhdGUsbD17W2EuSFRUUEFjY2Vzc0Vycm9yU3RhdHVzLk5PVF9GT1VORF06ZSxbYS5IVFRQQWNjZXNzRXJyb3JTdGF0dXMuRk9SQklEREVOXTp0LFthLkhUVFBBY2Nlc3NFcnJvclN0YXR1cy5VTkFVVEhPUklaRURdOnJ9O2lmKG8pe2xldCBpPW89PT1hLkhUVFBBY2Nlc3NFcnJvclN0YXR1cy5OT1RfRk9VTkQmJmUsYz1vPT09YS5IVFRQQWNjZXNzRXJyb3JTdGF0dXMuRk9SQklEREVOJiZ0LHM9bz09PWEuSFRUUEFjY2Vzc0Vycm9yU3RhdHVzLlVOQVVUSE9SSVpFRCYmcjtyZXR1cm4gaXx8Y3x8cz8oMCx1LmpzeHMpKHUuRnJhZ21lbnQse2NoaWxkcmVuOlsoMCx1LmpzeCkoIm1ldGEiLHtuYW1lOiJyb2JvdHMiLGNvbnRlbnQ6Im5vaW5kZXgifSksITEsbFtvXV19KTpufXJldHVybiBufWNvbnN0cnVjdG9yKGUpe3N1cGVyKGUpLHRoaXMuc3RhdGU9e3RyaWdnZXJlZFN0YXR1czp2b2lkIDAscHJldmlvdXNQYXRobmFtZTplLnBhdGhuYW1lfX19ZnVuY3Rpb24gcyhlKXtsZXR7bm90Rm91bmQ6dCxmb3JiaWRkZW46cix1bmF1dGhvcml6ZWQ6bixjaGlsZHJlbjphfT1lLHM9KDAsbC51c2VVbnRyYWNrZWRQYXRobmFtZSkoKSxmPSgwLG8udXNlQ29udGV4dCkoaS5NaXNzaW5nU2xvdENvbnRleHQpO3JldHVybiB0fHxyfHxuPygwLHUuanN4KShjLHtwYXRobmFtZTpzLG5vdEZvdW5kOnQsZm9yYmlkZGVuOnIsdW5hdXRob3JpemVkOm4sbWlzc2luZ1Nsb3RzOmYsY2hpbGRyZW46YX0pOigwLHUuanN4KSh1LkZyYWdtZW50LHtjaGlsZHJlbjphfSl9KCJmdW5jdGlvbiI9PXR5cGVvZiB0LmRlZmF1bHR8fCJvYmplY3QiPT10eXBlb2YgdC5kZWZhdWx0JiZudWxsIT09dC5kZWZhdWx0KSYmdm9pZCAwPT09dC5kZWZhdWx0Ll9fZXNNb2R1bGUmJihPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KSxlLmV4cG9ydHM9dC5kZWZhdWx0KX0sMzkxMzooZSx0LHIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSwhZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gdClPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtlbnVtZXJhYmxlOiEwLGdldDp0W3JdfSl9KHQse0hUTUxfTElNSVRFRF9CT1RfVUFfUkU6ZnVuY3Rpb24oKXtyZXR1cm4gbi5IVE1MX0xJTUlURURfQk9UX1VBX1JFfSxIVE1MX0xJTUlURURfQk9UX1VBX1JFX1NUUklORzpmdW5jdGlvbigpe3JldHVybiBvfSxnZXRCb3RUeXBlOmZ1bmN0aW9uKCl7cmV0dXJuIGl9LGlzQm90OmZ1bmN0aW9uKCl7cmV0dXJuIGF9fSk7bGV0IG49cig0MDI5KSx1PS9Hb29nbGVib3QoPyEtKXxHb29nbGVib3QkL2ksbz1uLkhUTUxfTElNSVRFRF9CT1RfVUFfUkUuc291cmNlO2Z1bmN0aW9uIGwoZSl7cmV0dXJuIG4uSFRNTF9MSU1JVEVEX0JPVF9VQV9SRS50ZXN0KGUpfWZ1bmN0aW9uIGEoZSl7cmV0dXJuIHUudGVzdChlKXx8bChlKX1mdW5jdGlvbiBpKGUpe3JldHVybiB1LnRlc3QoZSk/ImRvbSI6bChlKT8iaHRtbCI6dm9pZCAwfX0sMzkzMzooZSx0LHIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSwhZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gdClPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtlbnVtZXJhYmxlOiEwLGdldDp0W3JdfSl9KHQse3ByZWZldGNoUXVldWU6ZnVuY3Rpb24oKXtyZXR1cm4gb30scHJlZmV0Y2hSZWR1Y2VyOmZ1bmN0aW9uKCl7cmV0dXJuIGx9fSk7bGV0IG49cig5ODg5KSx1PXIoMzU3MSksbz1uZXcgbi5Qcm9taXNlUXVldWUoNSksbD1mdW5jdGlvbihlLHQpeygwLHUucHJ1bmVQcmVmZXRjaENhY2hlKShlLnByZWZldGNoQ2FjaGUpO2xldHt1cmw6cn09dDtyZXR1cm4oMCx1LmdldE9yQ3JlYXRlUHJlZmV0Y2hDYWNoZUVudHJ5KSh7dXJsOnIsbmV4dFVybDplLm5leHRVcmwscHJlZmV0Y2hDYWNoZTplLnByZWZldGNoQ2FjaGUsa2luZDp0LmtpbmQsdHJlZTplLnRyZWUsYWxsb3dBbGlhc2luZzohMH0pLGV9OygiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDM5NjU6ZT0+eyFmdW5jdGlvbigpe3ZhciB0PXsyMjk6ZnVuY3Rpb24oZSl7dmFyIHQscixuLHU9ZS5leHBvcnRzPXt9O2Z1bmN0aW9uIG8oKXt0aHJvdyBFcnJvcigic2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0aW9uIGwoKXt0aHJvdyBFcnJvcigiY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9dHJ5e3Q9ImZ1bmN0aW9uIj09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDpvfWNhdGNoKGUpe3Q9b310cnl7cj0iZnVuY3Rpb24iPT10eXBlb2YgY2xlYXJUaW1lb3V0P2NsZWFyVGltZW91dDpsfWNhdGNoKGUpe3I9bH1mdW5jdGlvbiBhKGUpe2lmKHQ9PT1zZXRUaW1lb3V0KXJldHVybiBzZXRUaW1lb3V0KGUsMCk7aWYoKHQ9PT1vfHwhdCkmJnNldFRpbWVvdXQpcmV0dXJuIHQ9c2V0VGltZW91dCxzZXRUaW1lb3V0KGUsMCk7dHJ5e3JldHVybiB0KGUsMCl9Y2F0Y2gocil7dHJ5e3JldHVybiB0LmNhbGwobnVsbCxlLDApfWNhdGNoKHIpe3JldHVybiB0LmNhbGwodGhpcyxlLDApfX19dmFyIGk9W10sYz0hMSxzPS0xO2Z1bmN0aW9uIGYoKXtjJiZuJiYoYz0hMSxuLmxlbmd0aD9pPW4uY29uY2F0KGkpOnM9LTEsaS5sZW5ndGgmJmQoKSl9ZnVuY3Rpb24gZCgpe2lmKCFjKXt2YXIgZT1hKGYpO2M9ITA7Zm9yKHZhciB0PWkubGVuZ3RoO3Q7KXtmb3Iobj1pLGk9W107KytzPHQ7KW4mJm5bc10ucnVuKCk7cz0tMSx0PWkubGVuZ3RofW49bnVsbCxjPSExLGZ1bmN0aW9uKGUpe2lmKHI9PT1jbGVhclRpbWVvdXQpcmV0dXJuIGNsZWFyVGltZW91dChlKTtpZigocj09PWx8fCFyKSYmY2xlYXJUaW1lb3V0KXJldHVybiByPWNsZWFyVGltZW91dCxjbGVhclRpbWVvdXQoZSk7dHJ5e3IoZSl9Y2F0Y2godCl7dHJ5e3JldHVybiByLmNhbGwobnVsbCxlKX1jYXRjaCh0KXtyZXR1cm4gci5jYWxsKHRoaXMsZSl9fX0oZSl9fWZ1bmN0aW9uIHAoZSx0KXt0aGlzLmZ1bj1lLHRoaXMuYXJyYXk9dH1mdW5jdGlvbiBoKCl7fXUubmV4dFRpY2s9ZnVuY3Rpb24oZSl7dmFyIHQ9QXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKTtpZihhcmd1bWVudHMubGVuZ3RoPjEpZm9yKHZhciByPTE7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyl0W3ItMV09YXJndW1lbnRzW3JdO2kucHVzaChuZXcgcChlLHQpKSwxIT09aS5sZW5ndGh8fGN8fGEoZCl9LHAucHJvdG90eXBlLnJ1bj1mdW5jdGlvbigpe3RoaXMuZnVuLmFwcGx5KG51bGwsdGhpcy5hcnJheSl9LHUudGl0bGU9ImJyb3dzZXIiLHUuYnJvd3Nlcj0hMCx1LmVudj17fSx1LmFyZ3Y9W10sdS52ZXJzaW9uPSIiLHUudmVyc2lvbnM9e30sdS5vbj1oLHUuYWRkTGlzdGVuZXI9aCx1Lm9uY2U9aCx1Lm9mZj1oLHUucmVtb3ZlTGlzdGVuZXI9aCx1LnJlbW92ZUFsbExpc3RlbmVycz1oLHUuZW1pdD1oLHUucHJlcGVuZExpc3RlbmVyPWgsdS5wcmVwZW5kT25jZUxpc3RlbmVyPWgsdS5saXN0ZW5lcnM9ZnVuY3Rpb24oZSl7cmV0dXJuW119LHUuYmluZGluZz1mdW5jdGlvbihlKXt0aHJvdyBFcnJvcigicHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQiKX0sdS5jd2Q9ZnVuY3Rpb24oKXtyZXR1cm4iLyJ9LHUuY2hkaXI9ZnVuY3Rpb24oZSl7dGhyb3cgRXJyb3IoInByb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCIpfSx1LnVtYXNrPWZ1bmN0aW9uKCl7cmV0dXJuIDB9fX0scj17fTtmdW5jdGlvbiBuKGUpe3ZhciB1PXJbZV07aWYodm9pZCAwIT09dSlyZXR1cm4gdS5leHBvcnRzO3ZhciBvPXJbZV09e2V4cG9ydHM6e319LGw9ITA7dHJ5e3RbZV0obyxvLmV4cG9ydHMsbiksbD0hMX1maW5hbGx5e2wmJmRlbGV0ZSByW2VdfXJldHVybiBvLmV4cG9ydHN9bi5hYj0iLy8iLGUuZXhwb3J0cz1uKDIyOSl9KCl9LDM5ODI6KGUsdCk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLCFmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIse2VudW1lcmFibGU6ITAsZ2V0OnRbcl19KX0odCx7ZGVzY3JpYmVIYXNDaGVja2luZ1N0cmluZ1Byb3BlcnR5OmZ1bmN0aW9uKCl7cmV0dXJuIHV9LGRlc2NyaWJlU3RyaW5nUHJvcGVydHlBY2Nlc3M6ZnVuY3Rpb24oKXtyZXR1cm4gbn0sd2VsbEtub3duUHJvcGVydGllczpmdW5jdGlvbigpe3JldHVybiBvfX0pO2xldCByPS9eW0EtWmEtel8kXVtBLVphLXowLTlfJF0qJC87ZnVuY3Rpb24gbihlLHQpe3JldHVybiByLnRlc3QodCk/ImAiK2UrIi4iK3QrImAiOiJgIitlKyJbIitKU09OLnN0cmluZ2lmeSh0KSsiXWAifWZ1bmN0aW9uIHUoZSx0KXtsZXQgcj1KU09OLnN0cmluZ2lmeSh0KTtyZXR1cm4iYFJlZmxlY3QuaGFzKCIrZSsiLCAiK3IrIilgLCBgIityKyIgaW4gIitlKyJgLCBvciBzaW1pbGFyIn1sZXQgbz1uZXcgU2V0KFsiaGFzT3duUHJvcGVydHkiLCJpc1Byb3RvdHlwZU9mIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJ0b1N0cmluZyIsInZhbHVlT2YiLCJ0b0xvY2FsZVN0cmluZyIsInRoZW4iLCJjYXRjaCIsImZpbmFsbHkiLCJzdGF0dXMiLCJkaXNwbGF5TmFtZSIsIl9kZWJ1Z0luZm8iLCJ0b0pTT04iLCIkJHR5cGVvZiIsIl9fZXNNb2R1bGUiXSl9LDQwMjk6KGUsdCk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJIVE1MX0xJTUlURURfQk9UX1VBX1JFIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcn19KTtsZXQgcj0vW1x3LV0rLUdvb2dsZXxHb29nbGUtW1x3LV0rfENocm9tZS1MaWdodGhvdXNlfFNsdXJwfER1Y2tEdWNrQm90fGJhaWR1c3BpZGVyfHlhbmRleHxzb2dvdXxiaXRseWJvdHx0dW1ibHJ8dmtTaGFyZXxxdW9yYSBsaW5rIHByZXZpZXd8cmVkZGl0Ym90fGlhX2FyY2hpdmVyfEJpbmdib3R8QmluZ1ByZXZpZXd8YXBwbGVib3R8ZmFjZWJvb2tleHRlcm5hbGhpdHxmYWNlYm9va2NhdGFsb2d8VHdpdHRlcmJvdHxMaW5rZWRJbkJvdHxTbGFja2JvdHxEaXNjb3JkYm90fFdoYXRzQXBwfFNreXBlVXJpUHJldmlld3xZZXRpfGdvb2dsZXdlYmxpZ2h0L2l9LDQwNjE6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksIWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIHQpT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7ZW51bWVyYWJsZTohMCxnZXQ6dFtyXX0pfSh0LHtub3JtYWxpemVBcHBQYXRoOmZ1bmN0aW9uKCl7cmV0dXJuIG99LG5vcm1hbGl6ZVJzY1VSTDpmdW5jdGlvbigpe3JldHVybiBsfX0pO2xldCBuPXIoNjE5NiksdT1yKDUzNjApO2Z1bmN0aW9uIG8oZSl7cmV0dXJuKDAsbi5lbnN1cmVMZWFkaW5nU2xhc2gpKGUuc3BsaXQoIi8iKS5yZWR1Y2UoKGUsdCxyLG4pPT4hdHx8KDAsdS5pc0dyb3VwU2VnbWVudCkodCl8fCJAIj09PXRbMF18fCgicGFnZSI9PT10fHwicm91dGUiPT09dCkmJnI9PT1uLmxlbmd0aC0xP2U6ZSsiLyIrdCwiIikpfWZ1bmN0aW9uIGwoZSl7cmV0dXJuIGUucmVwbGFjZSgvXC5yc2MoJHxcPykvLCIkMSIpfX0sNDA4OTooZSx0KT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBudWxsIT09ZSYmIm9iamVjdCI9PXR5cGVvZiBlJiYidGhlbiJpbiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgZS50aGVufU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiaXNUaGVuYWJsZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHJ9fSl9LDQxNzA6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7aWYodm9pZCAwPT09dCYmKHQ9e30pLHQub25seUhhc2hDaGFuZ2UpcmV0dXJuIHZvaWQgZSgpO2xldCByPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtyLmRhdGFzZXQuc2Nyb2xsQmVoYXZpb3I7bGV0IG49ci5zdHlsZS5zY3JvbGxCZWhhdmlvcjtyLnN0eWxlLnNjcm9sbEJlaGF2aW9yPSJhdXRvIix0LmRvbnRGb3JjZUxheW91dHx8ci5nZXRDbGllbnRSZWN0cygpLGUoKSxyLnN0eWxlLnNjcm9sbEJlaGF2aW9yPW59T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJkaXNhYmxlU21vb3RoU2Nyb2xsRHVyaW5nUm91dGVUcmFuc2l0aW9uIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbn19KSxyKDQ3ODEpfSw0MjAxOihlLHQscik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJpbnZhbGlkYXRlQ2FjaGVCeVJvdXRlclN0YXRlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdX19KTtsZXQgbj1yKDkxOTApO2Z1bmN0aW9uIHUoZSx0LHIpe2ZvcihsZXQgdSBpbiByWzFdKXtsZXQgbz1yWzFdW3VdWzBdLGw9KDAsbi5jcmVhdGVSb3V0ZXJDYWNoZUtleSkobyksYT10LnBhcmFsbGVsUm91dGVzLmdldCh1KTtpZihhKXtsZXQgdD1uZXcgTWFwKGEpO3QuZGVsZXRlKGwpLGUucGFyYWxsZWxSb3V0ZXMuc2V0KHUsdCl9fX0oImZ1bmN0aW9uIj09dHlwZW9mIHQuZGVmYXVsdHx8Im9iamVjdCI9PXR5cGVvZiB0LmRlZmF1bHQmJm51bGwhPT10LmRlZmF1bHQpJiZ2b2lkIDA9PT10LmRlZmF1bHQuX19lc01vZHVsZSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpLGUuZXhwb3J0cz10LmRlZmF1bHQpfSw0MjU5OihlLHQscik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJhc3NpZ25Mb2NhdGlvbiIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHV9fSk7bGV0IG49cig2MDU4KTtmdW5jdGlvbiB1KGUsdCl7aWYoZS5zdGFydHNXaXRoKCIuIikpe2xldCByPXQub3JpZ2luK3QucGF0aG5hbWU7cmV0dXJuIG5ldyBVUkwoKHIuZW5kc1dpdGgoIi8iKT9yOnIrIi8iKStlKX1yZXR1cm4gbmV3IFVSTCgoMCxuLmFkZEJhc2VQYXRoKShlKSx0LmhyZWYpfSgiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDQ0MjU6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksIWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIHQpT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7ZW51bWVyYWJsZTohMCxnZXQ6dFtyXX0pfSh0LHtST09UX1NFR01FTlRfQ0FDSEVfS0VZOmZ1bmN0aW9uKCl7cmV0dXJuIG99LFJPT1RfU0VHTUVOVF9SRVFVRVNUX0tFWTpmdW5jdGlvbigpe3JldHVybiB1fSxhcHBlbmRTZWdtZW50Q2FjaGVLZXlQYXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIGN9LGFwcGVuZFNlZ21lbnRSZXF1ZXN0S2V5UGFydDpmdW5jdGlvbigpe3JldHVybiBhfSxjb252ZXJ0U2VnbWVudFBhdGhUb1N0YXRpY0V4cG9ydEZpbGVuYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIGR9LGNyZWF0ZVNlZ21lbnRDYWNoZUtleVBhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4gaX0sY3JlYXRlU2VnbWVudFJlcXVlc3RLZXlQYXJ0OmZ1bmN0aW9uKCl7cmV0dXJuIGx9fSk7bGV0IG49cig1MzYwKSx1PSIiLG89IiI7ZnVuY3Rpb24gbChlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGUuc3RhcnRzV2l0aChuLlBBR0VfU0VHTUVOVF9LRVkpP24uUEFHRV9TRUdNRU5UX0tFWToiL19ub3QtZm91bmQiPT09ZT8iX25vdC1mb3VuZCI6ZihlKTtsZXQgdD1lWzBdLHI9ZVsyXTtyZXR1cm4iJCIrcisiJCIrZih0KX1mdW5jdGlvbiBhKGUsdCxyKXtyZXR1cm4gZSsiLyIrKCJjaGlsZHJlbiI9PT10P3I6IkAiK2YodCkrIi8iK3IpfWZ1bmN0aW9uIGkoZSx0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/ZTplKyIkIitmKHRbMV0pfWZ1bmN0aW9uIGMoZSx0LHIpe3JldHVybiBlKyIvIisoImNoaWxkcmVuIj09PXQ/cjoiQCIrZih0KSsiLyIrcil9bGV0IHM9L15bYS16QS1aMC05XC1fQF0rJC87ZnVuY3Rpb24gZihlKXtyZXR1cm4gcy50ZXN0KGUpP2U6IiEiK2J0b2EoZSkucmVwbGFjZSgvXCsvZywiLSIpLnJlcGxhY2UoL1wvL2csIl8iKS5yZXBsYWNlKC89KyQvLCIiKX1mdW5jdGlvbiBkKGUpe3JldHVybiJfX25leHQiK2UucmVwbGFjZSgvXC8vZywiLiIpKyIudHh0In19LDQ0MzE6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksIWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIHQpT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7ZW51bWVyYWJsZTohMCxnZXQ6dFtyXX0pfSh0LHtNZXRhZGF0YUJvdW5kYXJ5OmZ1bmN0aW9uKCl7cmV0dXJuIG99LE91dGxldEJvdW5kYXJ5OmZ1bmN0aW9uKCl7cmV0dXJuIGF9LFJvb3RMYXlvdXRCb3VuZGFyeTpmdW5jdGlvbigpe3JldHVybiBpfSxWaWV3cG9ydEJvdW5kYXJ5OmZ1bmN0aW9uKCl7cmV0dXJuIGx9fSk7bGV0IG49cig4NDQwKSx1PXtbbi5NRVRBREFUQV9CT1VOREFSWV9OQU1FXTpmdW5jdGlvbihlKXtsZXR7Y2hpbGRyZW46dH09ZTtyZXR1cm4gdH0sW24uVklFV1BPUlRfQk9VTkRBUllfTkFNRV06ZnVuY3Rpb24oZSl7bGV0e2NoaWxkcmVuOnR9PWU7cmV0dXJuIHR9LFtuLk9VVExFVF9CT1VOREFSWV9OQU1FXTpmdW5jdGlvbihlKXtsZXR7Y2hpbGRyZW46dH09ZTtyZXR1cm4gdH0sW24uUk9PVF9MQVlPVVRfQk9VTkRBUllfTkFNRV06ZnVuY3Rpb24oZSl7bGV0e2NoaWxkcmVuOnR9PWU7cmV0dXJuIHR9fSxvPXVbbi5NRVRBREFUQV9CT1VOREFSWV9OQU1FLnNsaWNlKDApXSxsPXVbbi5WSUVXUE9SVF9CT1VOREFSWV9OQU1FLnNsaWNlKDApXSxhPXVbbi5PVVRMRVRfQk9VTkRBUllfTkFNRS5zbGljZSgwKV0saT11W24uUk9PVF9MQVlPVVRfQk9VTkRBUllfTkFNRS5zbGljZSgwKV19LDQ1NTM6KGUsdCk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLCFmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIse2VudW1lcmFibGU6ITAsZ2V0OnRbcl19KX0odCx7QmFpbG91dFRvQ1NSRXJyb3I6ZnVuY3Rpb24oKXtyZXR1cm4gbn0saXNCYWlsb3V0VG9DU1JFcnJvcjpmdW5jdGlvbigpe3JldHVybiB1fX0pO2xldCByPSJCQUlMT1VUX1RPX0NMSUVOVF9TSURFX1JFTkRFUklORyI7Y2xhc3MgbiBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUpe3N1cGVyKCJCYWlsIG91dCB0byBjbGllbnQtc2lkZSByZW5kZXJpbmc6ICIrZSksdGhpcy5yZWFzb249ZSx0aGlzLmRpZ2VzdD1yfX1mdW5jdGlvbiB1KGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWUmJiJkaWdlc3QiaW4gZSYmZS5kaWdlc3Q9PT1yfX0sNDY4MTooZSx0KT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInNldEF0dHJpYnV0ZXNGcm9tUHJvcHMiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvfX0pO2xldCByPXthY2NlcHRDaGFyc2V0OiJhY2NlcHQtY2hhcnNldCIsY2xhc3NOYW1lOiJjbGFzcyIsaHRtbEZvcjoiZm9yIixodHRwRXF1aXY6Imh0dHAtZXF1aXYiLG5vTW9kdWxlOiJub01vZHVsZSJ9LG49WyJvbkxvYWQiLCJvblJlYWR5IiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJjaGlsZHJlbiIsIm9uRXJyb3IiLCJzdHJhdGVneSIsInN0eWxlc2hlZXRzIl07ZnVuY3Rpb24gdShlKXtyZXR1cm5bImFzeW5jIiwiZGVmZXIiLCJub01vZHVsZSJdLmluY2x1ZGVzKGUpfWZ1bmN0aW9uIG8oZSx0KXtmb3IobGV0W28sbF1vZiBPYmplY3QuZW50cmllcyh0KSl7aWYoIXQuaGFzT3duUHJvcGVydHkobyl8fG4uaW5jbHVkZXMobyl8fHZvaWQgMD09PWwpY29udGludWU7bGV0IGE9cltvXXx8by50b0xvd2VyQ2FzZSgpOyJTQ1JJUFQiPT09ZS50YWdOYW1lJiZ1KGEpP2VbYV09ISFsOmUuc2V0QXR0cmlidXRlKGEsU3RyaW5nKGwpKSwoITE9PT1sfHwiU0NSSVBUIj09PWUudGFnTmFtZSYmdShhKSYmKCFsfHwiZmFsc2UiPT09bCkpJiYoZS5zZXRBdHRyaWJ1dGUoYSwiIiksZS5yZW1vdmVBdHRyaWJ1dGUoYSkpfX0oImZ1bmN0aW9uIj09dHlwZW9mIHQuZGVmYXVsdHx8Im9iamVjdCI9PXR5cGVvZiB0LmRlZmF1bHQmJm51bGwhPT10LmRlZmF1bHQpJiZ2b2lkIDA9PT10LmRlZmF1bHQuX19lc01vZHVsZSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpLGUuZXhwb3J0cz10LmRlZmF1bHQpfSw0NzA3OihlLHQpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiaXNOYXZpZ2F0aW5nVG9OZXdSb290TGF5b3V0Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24gZSh0LHIpe2xldCBuPXRbMF0sdT1yWzBdO2lmKEFycmF5LmlzQXJyYXkobikmJkFycmF5LmlzQXJyYXkodSkpe2lmKG5bMF0hPT11WzBdfHxuWzJdIT09dVsyXSlyZXR1cm4hMH1lbHNlIGlmKG4hPT11KXJldHVybiEwO2lmKHRbNF0pcmV0dXJuIXJbNF07aWYocls0XSlyZXR1cm4hMDtsZXQgbz1PYmplY3QudmFsdWVzKHRbMV0pWzBdLGw9T2JqZWN0LnZhbHVlcyhyWzFdKVswXTtyZXR1cm4hb3x8IWx8fGUobyxsKX19fSksKCJmdW5jdGlvbiI9PXR5cGVvZiB0LmRlZmF1bHR8fCJvYmplY3QiPT10eXBlb2YgdC5kZWZhdWx0JiZudWxsIT09dC5kZWZhdWx0KSYmdm9pZCAwPT09dC5kZWZhdWx0Ll9fZXNNb2R1bGUmJihPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KSxlLmV4cG9ydHM9dC5kZWZhdWx0KX0sNDc4MTooZSx0KT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIndhcm5PbmNlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcn19KTtsZXQgcj1lPT57fX0sNDg2OTooZSx0LHIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiY3JlYXRlUmVuZGVyU2VhcmNoUGFyYW1zRnJvbUNsaWVudCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG99fSk7bGV0IG49cigzOTgyKSx1PW5ldyBXZWFrTWFwO2Z1bmN0aW9uIG8oZSl7bGV0IHQ9dS5nZXQoZSk7aWYodClyZXR1cm4gdDtsZXQgcj1Qcm9taXNlLnJlc29sdmUoZSk7cmV0dXJuIHUuc2V0KGUsciksT2JqZWN0LmtleXMoZSkuZm9yRWFjaCh0PT57bi53ZWxsS25vd25Qcm9wZXJ0aWVzLmhhcyh0KXx8KHJbdF09ZVt0XSl9KSxyfSgiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDUwMDk6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9cig3MzYyKX0sNTE1MzooZSx0KT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImZpbmRTb3VyY2VNYXBVUkwiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByfX0pO2xldCByPXZvaWQgMDsoImZ1bmN0aW9uIj09dHlwZW9mIHQuZGVmYXVsdHx8Im9iamVjdCI9PXR5cGVvZiB0LmRlZmF1bHQmJm51bGwhPT10LmRlZmF1bHQpJiZ2b2lkIDA9PT10LmRlZmF1bHQuX19lc01vZHVsZSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpLGUuZXhwb3J0cz10LmRlZmF1bHQpfSw1MTU1OihlLHQscik9PnsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXIoNjg5Nyl9LDUyNDA6KGUsdCk9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtsZXQgdD1lLmluZGV4T2YoIiMiKSxyPWUuaW5kZXhPZigiPyIpLG49cj4tMSYmKHQ8MHx8cjx0KTtyZXR1cm4gbnx8dD4tMT97cGF0aG5hbWU6ZS5zdWJzdHJpbmcoMCxuP3I6dCkscXVlcnk6bj9lLnN1YnN0cmluZyhyLHQ+LTE/dDp2b2lkIDApOiIiLGhhc2g6dD4tMT9lLnNsaWNlKHQpOiIifTp7cGF0aG5hbWU6ZSxxdWVyeToiIixoYXNoOiIifX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInBhcnNlUGF0aCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHJ9fSl9LDUyNzg6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkFzeW5jTWV0YWRhdGFPdXRsZXQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBsfX0pO2xldCBuPXIoNTE1NSksdT1yKDIxMTUpO2Z1bmN0aW9uIG8oZSl7bGV0e3Byb21pc2U6dH09ZSx7ZXJyb3I6cixkaWdlc3Q6bn09KDAsdS51c2UpKHQpO2lmKHIpdGhyb3cgbiYmKHIuZGlnZXN0PW4pLHI7cmV0dXJuIG51bGx9ZnVuY3Rpb24gbChlKXtsZXR7cHJvbWlzZTp0fT1lO3JldHVybigwLG4uanN4KSh1LlN1c3BlbnNlLHtmYWxsYmFjazpudWxsLGNoaWxkcmVuOigwLG4uanN4KShvLHtwcm9taXNlOnR9KX0pfSgiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDUzNDU6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImhtclJlZnJlc2hSZWR1Y2VyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbn19KSxyKDI3NTMpLHIoOTY1OCkscig4OTUpLHIoNDcwNykscig1NzM3KSxyKDExMjYpLHIoNzYwOSkscig3Mjk3KSxyKDczMzIpLHIoODkxNSk7bGV0IG49ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZX07KCJmdW5jdGlvbiI9PXR5cGVvZiB0LmRlZmF1bHR8fCJvYmplY3QiPT10eXBlb2YgdC5kZWZhdWx0JiZudWxsIT09dC5kZWZhdWx0KSYmdm9pZCAwPT09dC5kZWZhdWx0Ll9fZXNNb2R1bGUmJihPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KSxlLmV4cG9ydHM9dC5kZWZhdWx0KX0sNTM2MDooZSx0KT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiIoIj09PWVbMF0mJmUuZW5kc1dpdGgoIikiKX1mdW5jdGlvbiBuKGUpe3JldHVybiBlLnN0YXJ0c1dpdGgoIkAiKSYmIkBjaGlsZHJlbiIhPT1lfWZ1bmN0aW9uIHUoZSx0KXtpZihlLmluY2x1ZGVzKG8pKXtsZXQgZT1KU09OLnN0cmluZ2lmeSh0KTtyZXR1cm4ie30iIT09ZT9vKyI/IitlOm99cmV0dXJuIGV9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLCFmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIse2VudW1lcmFibGU6ITAsZ2V0OnRbcl19KX0odCx7REVGQVVMVF9TRUdNRU5UX0tFWTpmdW5jdGlvbigpe3JldHVybiBsfSxQQUdFX1NFR01FTlRfS0VZOmZ1bmN0aW9uKCl7cmV0dXJuIG99LGFkZFNlYXJjaFBhcmFtc0lmUGFnZVNlZ21lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdX0saXNHcm91cFNlZ21lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gcn0saXNQYXJhbGxlbFJvdXRlU2VnbWVudDpmdW5jdGlvbigpe3JldHVybiBufX0pO2xldCBvPSJfX1BBR0VfXyIsbD0iX19ERUZBVUxUX18ifSw1NDM5OihlLHQscik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLCFmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIse2VudW1lcmFibGU6ITAsZ2V0OnRbcl19KX0odCx7UmVhZG9ubHlVUkxTZWFyY2hQYXJhbXM6ZnVuY3Rpb24oKXtyZXR1cm4gc30sUmVkaXJlY3RUeXBlOmZ1bmN0aW9uKCl7cmV0dXJuIHUuUmVkaXJlY3RUeXBlfSxmb3JiaWRkZW46ZnVuY3Rpb24oKXtyZXR1cm4gbC5mb3JiaWRkZW59LG5vdEZvdW5kOmZ1bmN0aW9uKCl7cmV0dXJuIG8ubm90Rm91bmR9LHBlcm1hbmVudFJlZGlyZWN0OmZ1bmN0aW9uKCl7cmV0dXJuIG4ucGVybWFuZW50UmVkaXJlY3R9LHJlZGlyZWN0OmZ1bmN0aW9uKCl7cmV0dXJuIG4ucmVkaXJlY3R9LHVuYXV0aG9yaXplZDpmdW5jdGlvbigpe3JldHVybiBhLnVuYXV0aG9yaXplZH0sdW5zdGFibGVfaXNVbnJlY29nbml6ZWRBY3Rpb25FcnJvcjpmdW5jdGlvbigpe3JldHVybiBmfSx1bnN0YWJsZV9yZXRocm93OmZ1bmN0aW9uKCl7cmV0dXJuIGkudW5zdGFibGVfcmV0aHJvd319KTtsZXQgbj1yKDY1NDIpLHU9cig2NDM3KSxvPXIoMjU0MiksbD1yKDM0ODApLGE9cig2NjQwKSxpPXIoMzg2MCk7Y2xhc3MgYyBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKCl7c3VwZXIoIk1ldGhvZCB1bmF2YWlsYWJsZSBvbiBgUmVhZG9ubHlVUkxTZWFyY2hQYXJhbXNgLiBSZWFkIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL2FwcC9hcGktcmVmZXJlbmNlL2Z1bmN0aW9ucy91c2Utc2VhcmNoLXBhcmFtcyN1cGRhdGluZy1zZWFyY2hwYXJhbXMiKX19Y2xhc3MgcyBleHRlbmRzIFVSTFNlYXJjaFBhcmFtc3thcHBlbmQoKXt0aHJvdyBuZXcgY31kZWxldGUoKXt0aHJvdyBuZXcgY31zZXQoKXt0aHJvdyBuZXcgY31zb3J0KCl7dGhyb3cgbmV3IGN9fWZ1bmN0aW9uIGYoKXt0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkoRXJyb3IoImB1bnN0YWJsZV9pc1VucmVjb2duaXplZEFjdGlvbkVycm9yYCBjYW4gb25seSBiZSB1c2VkIG9uIHRoZSBjbGllbnQuIiksIl9fTkVYVF9FUlJPUl9DT0RFIix7dmFsdWU6IkU3NzYiLGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSl9KCJmdW5jdGlvbiI9PXR5cGVvZiB0LmRlZmF1bHR8fCJvYmplY3QiPT10eXBlb2YgdC5kZWZhdWx0JiZudWxsIT09dC5kZWZhdWx0KSYmdm9pZCAwPT09dC5kZWZhdWx0Ll9fZXNNb2R1bGUmJihPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KSxlLmV4cG9ydHM9dC5kZWZhdWx0KX0sNTQ0NDooZSx0LHIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSwhZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gdClPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtlbnVtZXJhYmxlOiEwLGdldDp0W3JdfSl9KHQse29uQ2F1Z2h0RXJyb3I6ZnVuY3Rpb24oKXtyZXR1cm4gc30sb25VbmNhdWdodEVycm9yOmZ1bmN0aW9uKCl7cmV0dXJuIGZ9fSk7bGV0IG49cig4MTQwKSx1PXIoNTgyOSksbz1yKDQ1NTMpLGw9cigzNDYzKSxhPXIoODc4NSksaT1uLl8ocig3MTUwKSksYz17ZGVjb3JhdGVEZXZFcnJvcjplPT5lLGhhbmRsZUNsaWVudEVycm9yOigpPT57fSxvcmlnaW5Db25zb2xlRXJyb3I6Y29uc29sZS5lcnJvci5iaW5kKGNvbnNvbGUpfTtmdW5jdGlvbiBzKGUsdCl7dmFyIHI7bGV0IG4sbD1udWxsPT0ocj10LmVycm9yQm91bmRhcnkpP3ZvaWQgMDpyLmNvbnN0cnVjdG9yO2lmKG49bnx8bD09PWEuRXJyb3JCb3VuZGFyeUhhbmRsZXImJnQuZXJyb3JCb3VuZGFyeS5wcm9wcy5lcnJvckNvbXBvbmVudD09PWkuZGVmYXVsdClyZXR1cm4gZihlKTsoMCxvLmlzQmFpbG91dFRvQ1NSRXJyb3IpKGUpfHwoMCx1LmlzTmV4dFJvdXRlckVycm9yKShlKXx8Yy5vcmlnaW5Db25zb2xlRXJyb3IoZSl9ZnVuY3Rpb24gZihlKXsoMCxvLmlzQmFpbG91dFRvQ1NSRXJyb3IpKGUpfHwoMCx1LmlzTmV4dFJvdXRlckVycm9yKShlKXx8KDAsbC5yZXBvcnRHbG9iYWxFcnJvcikoZSl9KCJmdW5jdGlvbiI9PXR5cGVvZiB0LmRlZmF1bHR8fCJvYmplY3QiPT10eXBlb2YgdC5kZWZhdWx0JiZudWxsIT09dC5kZWZhdWx0KSYmdm9pZCAwPT09dC5kZWZhdWx0Ll9fZXNNb2R1bGUmJihPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KSxlLmV4cG9ydHM9dC5kZWZhdWx0KX0sNTU5NzooZSx0LHIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiaW52YWxpZGF0ZUNhY2hlQmVsb3dGbGlnaHRTZWdtZW50UGF0aCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGUodCxyLG8pe2xldCBsPW8ubGVuZ3RoPD0yLFthLGldPW8sYz0oMCxuLmNyZWF0ZVJvdXRlckNhY2hlS2V5KShpKSxzPXIucGFyYWxsZWxSb3V0ZXMuZ2V0KGEpO2lmKCFzKXJldHVybjtsZXQgZj10LnBhcmFsbGVsUm91dGVzLmdldChhKTtpZihmJiZmIT09c3x8KGY9bmV3IE1hcChzKSx0LnBhcmFsbGVsUm91dGVzLnNldChhLGYpKSxsKXJldHVybiB2b2lkIGYuZGVsZXRlKGMpO2xldCBkPXMuZ2V0KGMpLHA9Zi5nZXQoYyk7cCYmZCYmKHA9PT1kJiYocD17bGF6eURhdGE6cC5sYXp5RGF0YSxyc2M6cC5yc2MscHJlZmV0Y2hSc2M6cC5wcmVmZXRjaFJzYyxoZWFkOnAuaGVhZCxwcmVmZXRjaEhlYWQ6cC5wcmVmZXRjaEhlYWQscGFyYWxsZWxSb3V0ZXM6bmV3IE1hcChwLnBhcmFsbGVsUm91dGVzKX0sZi5zZXQoYyxwKSksZShwLGQsKDAsdS5nZXROZXh0RmxpZ2h0U2VnbWVudFBhdGgpKG8pKSl9fX0pO2xldCBuPXIoOTE5MCksdT1yKDYzNzgpOygiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDU3MDQ6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbix1O2UuZXhwb3J0cz0obnVsbD09KG49ci5nLnByb2Nlc3MpP3ZvaWQgMDpuLmVudikmJiJvYmplY3QiPT10eXBlb2YobnVsbD09KHU9ci5nLnByb2Nlc3MpP3ZvaWQgMDp1LmVudik/ci5nLnByb2Nlc3M6cigzOTY1KX0sNTczNzooZSx0LHIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSwhZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gdClPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtlbnVtZXJhYmxlOiEwLGdldDp0W3JdfSl9KHQse2dlbmVyYXRlU2VnbWVudHNGcm9tUGF0Y2g6ZnVuY3Rpb24oKXtyZXR1cm4gbX0saGFuZGxlRXh0ZXJuYWxVcmw6ZnVuY3Rpb24oKXtyZXR1cm4gZ30sbmF2aWdhdGVSZWR1Y2VyOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGUodCxyKXtsZXR7dXJsOlIsaXNFeHRlcm5hbFVybDpFLG5hdmlnYXRlVHlwZTpPLHNob3VsZFNjcm9sbDpQLGFsbG93QWxpYXNpbmc6an09cixUPXt9LHtoYXNoOlN9PVIsTT0oMCx1LmNyZWF0ZUhyZWZGcm9tVXJsKShSKSx3PSJwdXNoIj09PU87aWYoKDAseS5wcnVuZVByZWZldGNoQ2FjaGUpKHQucHJlZmV0Y2hDYWNoZSksVC5wcmVzZXJ2ZUN1c3RvbUhpc3RvcnlTdGF0ZT0hMSxULnBlbmRpbmdQdXNoPXcsRSlyZXR1cm4gZyh0LFQsUi50b1N0cmluZygpLHcpO2lmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJfX25leHQtcGFnZS1yZWRpcmVjdCIpKXJldHVybiBnKHQsVCxNLHcpO2xldCBBPSgwLHkuZ2V0T3JDcmVhdGVQcmVmZXRjaENhY2hlRW50cnkpKHt1cmw6UixuZXh0VXJsOnQubmV4dFVybCx0cmVlOnQudHJlZSxwcmVmZXRjaENhY2hlOnQucHJlZmV0Y2hDYWNoZSxhbGxvd0FsaWFzaW5nOmp9KSx7dHJlZUF0VGltZU9mUHJlZmV0Y2g6QyxkYXRhOnh9PUE7cmV0dXJuIGQucHJlZmV0Y2hRdWV1ZS5idW1wKHgpLHgudGhlbihkPT57bGV0e2ZsaWdodERhdGE6eSxjYW5vbmljYWxVcmw6RSxwb3N0cG9uZWQ6T309ZCxqPURhdGUubm93KCkseD0hMTtpZihBLmxhc3RVc2VkVGltZXx8KEEubGFzdFVzZWRUaW1lPWoseD0hMCksQS5hbGlhc2VkKXtsZXQgbj1uZXcgVVJMKFIuaHJlZik7RSYmKG4ucGF0aG5hbWU9RS5wYXRobmFtZSk7bGV0IHU9KDAsdi5oYW5kbGVBbGlhc2VkUHJlZmV0Y2hFbnRyeSkoaix0LHksbixUKTtyZXR1cm4hMT09PXU/ZSh0LHsuLi5yLGFsbG93QWxpYXNpbmc6ITF9KTp1fWlmKCJzdHJpbmciPT10eXBlb2YgeSlyZXR1cm4gZyh0LFQseSx3KTtsZXQgTj1FPygwLHUuY3JlYXRlSHJlZkZyb21VcmwpKEUpOk07aWYoUyYmdC5jYW5vbmljYWxVcmwuc3BsaXQoIiMiLDEpWzBdPT09Ti5zcGxpdCgiIyIsMSlbMF0pcmV0dXJuIFQub25seUhhc2hDaGFuZ2U9ITAsVC5jYW5vbmljYWxVcmw9TixULnNob3VsZFNjcm9sbD1QLFQuaGFzaEZyYWdtZW50PVMsVC5zY3JvbGxhYmxlU2VnbWVudHM9W10sKDAscy5oYW5kbGVNdXRhYmxlKSh0LFQpO2xldCBVPXQudHJlZSxEPXQuY2FjaGUsTD1bXTtmb3IobGV0IGUgb2YgeSl7bGV0e3BhdGhUb1NlZ21lbnQ6cixzZWVkRGF0YTp1LGhlYWQ6cyxpc0hlYWRQYXJ0aWFsOmQsaXNSb290UmVuZGVyOnl9PWUsdj1lLnRyZWUsRT1bIiIsLi4ucl0sUD0oMCxsLmFwcGx5Um91dGVyU3RhdGVQYXRjaFRvVHJlZSkoRSxVLHYsTSk7aWYobnVsbD09PVAmJihQPSgwLGwuYXBwbHlSb3V0ZXJTdGF0ZVBhdGNoVG9UcmVlKShFLEMsdixNKSksbnVsbCE9PVApe2lmKHUmJnkmJk8pe2xldCBlPSgwLF8uc3RhcnRQUFJOYXZpZ2F0aW9uKShqLEQsVSx2LHUscyxkLCExLEwpO2lmKG51bGwhPT1lKXtpZihudWxsPT09ZS5yb3V0ZSlyZXR1cm4gZyh0LFQsTSx3KTtQPWUucm91dGU7bGV0IHI9ZS5ub2RlO251bGwhPT1yJiYoVC5jYWNoZT1yKTtsZXQgdT1lLmR5bmFtaWNSZXF1ZXN0VHJlZTtpZihudWxsIT09dSl7bGV0IHI9KDAsbi5mZXRjaFNlcnZlclJlc3BvbnNlKShuZXcgVVJMKE4sUi5vcmlnaW4pLHtmbGlnaHRSb3V0ZXJTdGF0ZTp1LG5leHRVcmw6dC5uZXh0VXJsfSk7KDAsXy5saXN0ZW5Gb3JEeW5hbWljUmVxdWVzdCkoZSxyKX19ZWxzZSBQPXZ9ZWxzZXtpZigoMCxpLmlzTmF2aWdhdGluZ1RvTmV3Um9vdExheW91dCkoVSxQKSlyZXR1cm4gZyh0LFQsTSx3KTtsZXQgbj0oMCxwLmNyZWF0ZUVtcHR5Q2FjaGVOb2RlKSgpLHU9ITE7Zm9yKGxldCB0IG9mKEEuc3RhdHVzIT09Yy5QcmVmZXRjaENhY2hlRW50cnlTdGF0dXMuc3RhbGV8fHg/dT0oMCxmLmFwcGx5RmxpZ2h0RGF0YSkoaixELG4sZSxBKToodT1mdW5jdGlvbihlLHQscixuKXtsZXQgdT0hMTtmb3IobGV0IG8gb2YoZS5yc2M9dC5yc2MsZS5wcmVmZXRjaFJzYz10LnByZWZldGNoUnNjLGUubG9hZGluZz10LmxvYWRpbmcsZS5wYXJhbGxlbFJvdXRlcz1uZXcgTWFwKHQucGFyYWxsZWxSb3V0ZXMpLG0obikubWFwKGU9PlsuLi5yLC4uLmVdKSkpKDAsYi5jbGVhckNhY2hlTm9kZURhdGFGb3JTZWdtZW50UGF0aCkoZSx0LG8pLHU9ITA7cmV0dXJuIHV9KG4sRCxyLHYpLEEubGFzdFVzZWRUaW1lPWopLCgwLGEuc2hvdWxkSGFyZE5hdmlnYXRlKShFLFUpPyhuLnJzYz1ELnJzYyxuLnByZWZldGNoUnNjPUQucHJlZmV0Y2hSc2MsKDAsby5pbnZhbGlkYXRlQ2FjaGVCZWxvd0ZsaWdodFNlZ21lbnRQYXRoKShuLEQsciksVC5jYWNoZT1uKTp1JiYoVC5jYWNoZT1uLEQ9biksbSh2KSkpe2xldCBlPVsuLi5yLC4uLnRdO2VbZS5sZW5ndGgtMV0hPT1oLkRFRkFVTFRfU0VHTUVOVF9LRVkmJkwucHVzaChlKX19VT1QfX1yZXR1cm4gVC5wYXRjaGVkVHJlZT1VLFQuY2Fub25pY2FsVXJsPU4sVC5zY3JvbGxhYmxlU2VnbWVudHM9TCxULmhhc2hGcmFnbWVudD1TLFQuc2hvdWxkU2Nyb2xsPVAsKDAscy5oYW5kbGVNdXRhYmxlKSh0LFQpfSwoKT0+dCl9fX0pO2xldCBuPXIoMjc1MyksdT1yKDk2NTgpLG89cig1NTk3KSxsPXIoODk1KSxhPXIoODEzMCksaT1yKDQ3MDcpLGM9cig2ODcxKSxzPXIoMTEyNiksZj1yKDc2MDkpLGQ9cigzOTMzKSxwPXIoNzI5NyksaD1yKDUzNjApLF89cig3MzE3KSx5PXIoMzU3MSksYj1yKDEyODEpLHY9cig5NDczKTtmdW5jdGlvbiBnKGUsdCxyLG4pe3JldHVybiB0Lm1wYU5hdmlnYXRpb249ITAsdC5jYW5vbmljYWxVcmw9cix0LnBlbmRpbmdQdXNoPW4sdC5zY3JvbGxhYmxlU2VnbWVudHM9dm9pZCAwLCgwLHMuaGFuZGxlTXV0YWJsZSkoZSx0KX1mdW5jdGlvbiBtKGUpe2xldCB0PVtdLFtyLG5dPWU7aWYoMD09PU9iamVjdC5rZXlzKG4pLmxlbmd0aClyZXR1cm5bW3JdXTtmb3IobGV0W2UsdV1vZiBPYmplY3QuZW50cmllcyhuKSlmb3IobGV0IG4gb2YgbSh1KSkiIj09PXI/dC5wdXNoKFtlLC4uLm5dKTp0LnB1c2goW3IsZSwuLi5uXSk7cmV0dXJuIHR9cig2MDQ4KSwoImZ1bmN0aW9uIj09dHlwZW9mIHQuZGVmYXVsdHx8Im9iamVjdCI9PXR5cGVvZiB0LmRlZmF1bHQmJm51bGwhPT10LmRlZmF1bHQpJiZ2b2lkIDA9PT10LmRlZmF1bHQuX19lc01vZHVsZSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpLGUuZXhwb3J0cz10LmRlZmF1bHQpfSw1ODI5OihlLHQscik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJpc05leHRSb3V0ZXJFcnJvciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG99fSk7bGV0IG49cig3MDk5KSx1PXIoNjQzNyk7ZnVuY3Rpb24gbyhlKXtyZXR1cm4oMCx1LmlzUmVkaXJlY3RFcnJvcikoZSl8fCgwLG4uaXNIVFRQQWNjZXNzRmFsbGJhY2tFcnJvcikoZSl9KCJmdW5jdGlvbiI9PXR5cGVvZiB0LmRlZmF1bHR8fCJvYmplY3QiPT10eXBlb2YgdC5kZWZhdWx0JiZudWxsIT09dC5kZWZhdWx0KSYmdm9pZCAwPT09dC5kZWZhdWx0Ll9fZXNNb2R1bGUmJihPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KSxlLmV4cG9ydHM9dC5kZWZhdWx0KX0sNTg2MDooZSx0KT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkhhbmRsZUlTUkVycm9yIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbn19KTtsZXQgcj12b2lkIDA7ZnVuY3Rpb24gbihlKXtsZXR7ZXJyb3I6dH09ZTtpZihyKXtsZXQgZT1yLmdldFN0b3JlKCk7aWYoKG51bGw9PWU/dm9pZCAwOmUuaXNSZXZhbGlkYXRlKXx8KG51bGw9PWU/dm9pZCAwOmUuaXNTdGF0aWNHZW5lcmF0aW9uKSl0aHJvdyBjb25zb2xlLmVycm9yKHQpLHR9cmV0dXJuIG51bGx9KCJmdW5jdGlvbiI9PXR5cGVvZiB0LmRlZmF1bHR8fCJvYmplY3QiPT10eXBlb2YgdC5kZWZhdWx0JiZudWxsIT09dC5kZWZhdWx0KSYmdm9pZCAwPT09dC5kZWZhdWx0Ll9fZXNNb2R1bGUmJihPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KSxlLmV4cG9ydHM9dC5kZWZhdWx0KX0sNTg3ODooZSx0LHIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiY3JlYXRlUmVuZGVyU2VhcmNoUGFyYW1zRnJvbUNsaWVudCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG59fSk7bGV0IG49cig0ODY5KS5jcmVhdGVSZW5kZXJTZWFyY2hQYXJhbXNGcm9tQ2xpZW50OygiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDU5MDM6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7aWYoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpKXRocm93IFR5cGVFcnJvcigiYXR0ZW1wdGVkIHRvIHVzZSBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZSIpO3JldHVybiBlfXIucih0KSxyLmQodCx7XzooKT0+bn0pfSw2MDAxOihlLHQscik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHIoNTM1KSwoImZ1bmN0aW9uIj09dHlwZW9mIHQuZGVmYXVsdHx8Im9iamVjdCI9PXR5cGVvZiB0LmRlZmF1bHQmJm51bGwhPT10LmRlZmF1bHQpJiZ2b2lkIDA9PT10LmRlZmF1bHQuX19lc01vZHVsZSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpLGUuZXhwb3J0cz10LmRlZmF1bHQpfSw2MDQ4OihlLHQpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSwhZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gdClPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtlbnVtZXJhYmxlOiEwLGdldDp0W3JdfSl9KHQse0ZldGNoU3RyYXRlZ3k6ZnVuY3Rpb24oKXtyZXR1cm4gaH0sTmF2aWdhdGlvblJlc3VsdFRhZzpmdW5jdGlvbigpe3JldHVybiBkfSxQcmVmZXRjaFByaW9yaXR5OmZ1bmN0aW9uKCl7cmV0dXJuIHB9LGNhbmNlbFByZWZldGNoVGFzazpmdW5jdGlvbigpe3JldHVybiBpfSxjcmVhdGVDYWNoZUtleTpmdW5jdGlvbigpe3JldHVybiBmfSxnZXRDdXJyZW50Q2FjaGVWZXJzaW9uOmZ1bmN0aW9uKCl7cmV0dXJuIGx9LGlzUHJlZmV0Y2hUYXNrRGlydHk6ZnVuY3Rpb24oKXtyZXR1cm4gc30sbmF2aWdhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdX0scHJlZmV0Y2g6ZnVuY3Rpb24oKXtyZXR1cm4gbn0scmVzY2hlZHVsZVByZWZldGNoVGFzazpmdW5jdGlvbigpe3JldHVybiBjfSxyZXZhbGlkYXRlRW50aXJlQ2FjaGU6ZnVuY3Rpb24oKXtyZXR1cm4gb30sc2NoZWR1bGVQcmVmZXRjaFRhc2s6ZnVuY3Rpb24oKXtyZXR1cm4gYX19KTtsZXQgcj0oKT0+e3Rocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFcnJvcigiU2VnbWVudCBDYWNoZSBleHBlcmltZW50IGlzIG5vdCBlbmFibGVkLiBUaGlzIGlzIGEgYnVnIGluIE5leHQuanMuIiksIl9fTkVYVF9FUlJPUl9DT0RFIix7dmFsdWU6IkU2NTQiLGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSl9LG49cix1PXIsbz1yLGw9cixhPXIsaT1yLGM9cixzPXIsZj1yO3ZhciBkPWZ1bmN0aW9uKGUpe3JldHVybiBlW2UuTVBBPTBdPSJNUEEiLGVbZS5TdWNjZXNzPTFdPSJTdWNjZXNzIixlW2UuTm9PcD0yXT0iTm9PcCIsZVtlLkFzeW5jPTNdPSJBc3luYyIsZX0oe30pLHA9ZnVuY3Rpb24oZSl7cmV0dXJuIGVbZS5JbnRlbnQ9Ml09IkludGVudCIsZVtlLkRlZmF1bHQ9MV09IkRlZmF1bHQiLGVbZS5CYWNrZ3JvdW5kPTBdPSJCYWNrZ3JvdW5kIixlfSh7fSksaD1mdW5jdGlvbihlKXtyZXR1cm4gZVtlLkxvYWRpbmdCb3VuZGFyeT0wXT0iTG9hZGluZ0JvdW5kYXJ5IixlW2UuUFBSPTFdPSJQUFIiLGVbZS5QUFJSdW50aW1lPTJdPSJQUFJSdW50aW1lIixlW2UuRnVsbD0zXT0iRnVsbCIsZX0oe30pOygiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDYwNTg6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImFkZEJhc2VQYXRoIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gb319KTtsZXQgbj1yKDM4NzkpLHU9cigxMjM5KTtmdW5jdGlvbiBvKGUsdCl7cmV0dXJuKDAsdS5ub3JtYWxpemVQYXRoVHJhaWxpbmdTbGFzaCkoKDAsbi5hZGRQYXRoUHJlZml4KShlLCIiKSl9KCJmdW5jdGlvbiI9PXR5cGVvZiB0LmRlZmF1bHR8fCJvYmplY3QiPT10eXBlb2YgdC5kZWZhdWx0JiZudWxsIT09dC5kZWZhdWx0KSYmdm9pZCAwPT09dC5kZWZhdWx0Ll9fZXNNb2R1bGUmJihPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KSxlLmV4cG9ydHM9dC5kZWZhdWx0KX0sNjE5NjooZSx0KT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlLnN0YXJ0c1dpdGgoIi8iKT9lOiIvIitlfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiZW5zdXJlTGVhZGluZ1NsYXNoIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcn19KX0sNjI0ODooZSx0LHIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSwhZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gdClPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtlbnVtZXJhYmxlOiEwLGdldDp0W3JdfSl9KHQse2Rpc3BhdGNoQXBwUm91dGVyQWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIGx9LHVzZUFjdGlvblF1ZXVlOmZ1bmN0aW9uKCl7cmV0dXJuIGF9fSk7bGV0IG49cig5NDE3KS5fKHIoMjExNSkpLHU9cig0MDg5KSxvPW51bGw7ZnVuY3Rpb24gbChlKXtpZihudWxsPT09byl0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkoRXJyb3IoIkludGVybmFsIE5leHQuanMgZXJyb3I6IFJvdXRlciBhY3Rpb24gZGlzcGF0Y2hlZCBiZWZvcmUgaW5pdGlhbGl6YXRpb24uIiksIl9fTkVYVF9FUlJPUl9DT0RFIix7dmFsdWU6IkU2NjgiLGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSk7byhlKX1mdW5jdGlvbiBhKGUpe2xldFt0LHJdPW4uZGVmYXVsdC51c2VTdGF0ZShlLnN0YXRlKTtyZXR1cm4gbz10PT5lLmRpc3BhdGNoKHQsciksKDAsdS5pc1RoZW5hYmxlKSh0KT8oMCxuLnVzZSkodCk6dH0oImZ1bmN0aW9uIj09dHlwZW9mIHQuZGVmYXVsdHx8Im9iamVjdCI9PXR5cGVvZiB0LmRlZmF1bHQmJm51bGwhPT10LmRlZmF1bHQpJiZ2b2lkIDA9PT10LmRlZmF1bHQuX19lc01vZHVsZSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpLGUuZXhwb3J0cz10LmRlZmF1bHQpfSw2MzQzOihlLHQscik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLCFmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIse2VudW1lcmFibGU6ITAsZ2V0OnRbcl19KX0odCx7Y29tcHV0ZUNoYW5nZWRQYXRoOmZ1bmN0aW9uKCl7cmV0dXJuIGN9LGV4dHJhY3RQYXRoRnJvbUZsaWdodFJvdXRlclN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIGl9LGdldFNlbGVjdGVkUGFyYW1zOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGUodCxyKXtmb3IobGV0IG4gb2Yodm9pZCAwPT09ciYmKHI9e30pLE9iamVjdC52YWx1ZXModFsxXSkpKXtsZXQgdD1uWzBdLG89QXJyYXkuaXNBcnJheSh0KSxsPW8/dFsxXTp0OyFsfHxsLnN0YXJ0c1dpdGgodS5QQUdFX1NFR01FTlRfS0VZKXx8KG8mJigiYyI9PT10WzJdfHwib2MiPT09dFsyXSk/clt0WzBdXT10WzFdLnNwbGl0KCIvIik6byYmKHJbdFswXV09dFsxXSkscj1lKG4scikpfXJldHVybiByfX19KTtsZXQgbj1yKDc2MzApLHU9cig1MzYwKSxvPXIoNzQ2MCksbD1lPT4ic3RyaW5nIj09dHlwZW9mIGU/ImNoaWxkcmVuIj09PWU/IiI6ZTplWzFdO2Z1bmN0aW9uIGEoZSl7cmV0dXJuIGUucmVkdWNlKChlLHQpPT57bGV0IHI7cmV0dXJuIiI9PT0odD0iLyI9PT0ocj10KVswXT9yLnNsaWNlKDEpOnIpfHwoMCx1LmlzR3JvdXBTZWdtZW50KSh0KT9lOmUrIi8iK3R9LCIiKXx8Ii8ifWZ1bmN0aW9uIGkoZSl7dmFyIHQ7bGV0IHI9QXJyYXkuaXNBcnJheShlWzBdKT9lWzBdWzFdOmVbMF07aWYocj09PXUuREVGQVVMVF9TRUdNRU5UX0tFWXx8bi5JTlRFUkNFUFRJT05fUk9VVEVfTUFSS0VSUy5zb21lKGU9PnIuc3RhcnRzV2l0aChlKSkpcmV0dXJuO2lmKHIuc3RhcnRzV2l0aCh1LlBBR0VfU0VHTUVOVF9LRVkpKXJldHVybiIiO2xldCBvPVtsKHIpXSxjPW51bGwhPSh0PWVbMV0pP3Q6e30scz1jLmNoaWxkcmVuP2koYy5jaGlsZHJlbik6dm9pZCAwO2lmKHZvaWQgMCE9PXMpby5wdXNoKHMpO2Vsc2UgZm9yKGxldFtlLHRdb2YgT2JqZWN0LmVudHJpZXMoYykpe2lmKCJjaGlsZHJlbiI9PT1lKWNvbnRpbnVlO2xldCByPWkodCk7dm9pZCAwIT09ciYmby5wdXNoKHIpfXJldHVybiBhKG8pfWZ1bmN0aW9uIGMoZSx0KXtsZXQgcj1mdW5jdGlvbiBlKHQscil7bGV0W3UsYV09dCxbYyxzXT1yLGY9bCh1KSxkPWwoYyk7aWYobi5JTlRFUkNFUFRJT05fUk9VVEVfTUFSS0VSUy5zb21lKGU9PmYuc3RhcnRzV2l0aChlKXx8ZC5zdGFydHNXaXRoKGUpKSlyZXR1cm4iIjtpZighKDAsby5tYXRjaFNlZ21lbnQpKHUsYykpe3ZhciBwO3JldHVybiBudWxsIT0ocD1pKHIpKT9wOiIifWZvcihsZXQgdCBpbiBhKWlmKHNbdF0pe2xldCByPWUoYVt0XSxzW3RdKTtpZihudWxsIT09cilyZXR1cm4gbChjKSsiLyIrcn1yZXR1cm4gbnVsbH0oZSx0KTtyZXR1cm4gbnVsbD09cnx8Ii8iPT09cj9yOmEoci5zcGxpdCgiLyIpKX0oImZ1bmN0aW9uIj09dHlwZW9mIHQuZGVmYXVsdHx8Im9iamVjdCI9PXR5cGVvZiB0LmRlZmF1bHQmJm51bGwhPT10LmRlZmF1bHQpJiZ2b2lkIDA9PT10LmRlZmF1bHQuX19lc01vZHVsZSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpLGUuZXhwb3J0cz10LmRlZmF1bHQpfSw2Mzc4OihlLHQscik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLCFmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIse2VudW1lcmFibGU6ITAsZ2V0OnRbcl19KX0odCx7Z2V0RmxpZ2h0RGF0YVBhcnRzRnJvbVBhdGg6ZnVuY3Rpb24oKXtyZXR1cm4gdX0sZ2V0TmV4dEZsaWdodFNlZ21lbnRQYXRoOmZ1bmN0aW9uKCl7cmV0dXJuIG99LG5vcm1hbGl6ZUZsaWdodERhdGE6ZnVuY3Rpb24oKXtyZXR1cm4gbH0scHJlcGFyZUZsaWdodFJvdXRlclN0YXRlRm9yUmVxdWVzdDpmdW5jdGlvbigpe3JldHVybiBhfX0pO2xldCBuPXIoNTM2MCk7ZnVuY3Rpb24gdShlKXt2YXIgdDtsZXRbcixuLHUsb109ZS5zbGljZSgtNCksbD1lLnNsaWNlKDAsLTQpO3JldHVybntwYXRoVG9TZWdtZW50Omwuc2xpY2UoMCwtMSksc2VnbWVudFBhdGg6bCxzZWdtZW50Om51bGwhPSh0PWxbbC5sZW5ndGgtMV0pP3Q6IiIsdHJlZTpyLHNlZWREYXRhOm4saGVhZDp1LGlzSGVhZFBhcnRpYWw6byxpc1Jvb3RSZW5kZXI6ND09PWUubGVuZ3RofX1mdW5jdGlvbiBvKGUpe3JldHVybiBlLnNsaWNlKDIpfWZ1bmN0aW9uIGwoZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP2U6ZS5tYXAoZT0+dShlKSl9ZnVuY3Rpb24gYShlLHQpe3JldHVybiB0P2VuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShlKSk6ZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGZ1bmN0aW9uIGUodCl7dmFyIHIsdTtsZXRbbyxsLGEsaSxjLHNdPXQsZj0ic3RyaW5nIj09dHlwZW9mKHI9bykmJnIuc3RhcnRzV2l0aChuLlBBR0VfU0VHTUVOVF9LRVkrIj8iKT9uLlBBR0VfU0VHTUVOVF9LRVk6cixkPXt9O2ZvcihsZXRbdCxyXW9mIE9iamVjdC5lbnRyaWVzKGwpKWRbdF09ZShyKTtsZXQgcD1bZixkLG51bGwsKHU9aSkmJiJyZWZyZXNoIiE9PXU/aTpudWxsXTtyZXR1cm4gdm9pZCAwIT09YyYmKHBbNF09Yyksdm9pZCAwIT09cyYmKHBbNV09cykscH0oZSkpKX0oImZ1bmN0aW9uIj09dHlwZW9mIHQuZGVmYXVsdHx8Im9iamVjdCI9PXR5cGVvZiB0LmRlZmF1bHQmJm51bGwhPT10LmRlZmF1bHQpJiZ2b2lkIDA9PT10LmRlZmF1bHQuX19lc01vZHVsZSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpLGUuZXhwb3J0cz10LmRlZmF1bHQpfSw2MzgxOihlLHQpPT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZVsxXTplfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiZ2V0U2VnbWVudFZhbHVlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcn19KSwoImZ1bmN0aW9uIj09dHlwZW9mIHQuZGVmYXVsdHx8Im9iamVjdCI9PXR5cGVvZiB0LmRlZmF1bHQmJm51bGwhPT10LmRlZmF1bHQpJiZ2b2lkIDA9PT10LmRlZmF1bHQuX19lc01vZHVsZSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpLGUuZXhwb3J0cz10LmRlZmF1bHQpfSw2NDM3OihlLHQscik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLCFmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIse2VudW1lcmFibGU6ITAsZ2V0OnRbcl19KX0odCx7UkVESVJFQ1RfRVJST1JfQ09ERTpmdW5jdGlvbigpe3JldHVybiB1fSxSZWRpcmVjdFR5cGU6ZnVuY3Rpb24oKXtyZXR1cm4gb30saXNSZWRpcmVjdEVycm9yOmZ1bmN0aW9uKCl7cmV0dXJuIGx9fSk7bGV0IG49cigxMDk5KSx1PSJORVhUX1JFRElSRUNUIjt2YXIgbz1mdW5jdGlvbihlKXtyZXR1cm4gZS5wdXNoPSJwdXNoIixlLnJlcGxhY2U9InJlcGxhY2UiLGV9KHt9KTtmdW5jdGlvbiBsKGUpe2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWV8fCEoImRpZ2VzdCJpbiBlKXx8InN0cmluZyIhPXR5cGVvZiBlLmRpZ2VzdClyZXR1cm4hMTtsZXQgdD1lLmRpZ2VzdC5zcGxpdCgiOyIpLFtyLG9dPXQsbD10LnNsaWNlKDIsLTIpLmpvaW4oIjsiKSxhPU51bWJlcih0LmF0KC0yKSk7cmV0dXJuIHI9PT11JiYoInJlcGxhY2UiPT09b3x8InB1c2giPT09bykmJiJzdHJpbmciPT10eXBlb2YgbCYmIWlzTmFOKGEpJiZhIGluIG4uUmVkaXJlY3RTdGF0dXNDb2RlfSgiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDY0ODY6KGUsdCk9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfWZ1bmN0aW9uIG4oZSl7aWYoIltvYmplY3QgT2JqZWN0XSIhPT1yKGUpKXJldHVybiExO2xldCB0PU9iamVjdC5nZXRQcm90b3R5cGVPZihlKTtyZXR1cm4gbnVsbD09PXR8fHQuaGFzT3duUHJvcGVydHkoImlzUHJvdG90eXBlT2YiKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksIWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIHQpT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7ZW51bWVyYWJsZTohMCxnZXQ6dFtyXX0pfSh0LHtnZXRPYmplY3RDbGFzc0xhYmVsOmZ1bmN0aW9uKCl7cmV0dXJuIHJ9LGlzUGxhaW5PYmplY3Q6ZnVuY3Rpb24oKXtyZXR1cm4gbn19KX0sNjU0MjooZSx0LHIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSwhZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gdClPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtlbnVtZXJhYmxlOiEwLGdldDp0W3JdfSl9KHQse2dldFJlZGlyZWN0RXJyb3I6ZnVuY3Rpb24oKXtyZXR1cm4gbH0sZ2V0UmVkaXJlY3RTdGF0dXNDb2RlRnJvbUVycm9yOmZ1bmN0aW9uKCl7cmV0dXJuIGZ9LGdldFJlZGlyZWN0VHlwZUZyb21FcnJvcjpmdW5jdGlvbigpe3JldHVybiBzfSxnZXRVUkxGcm9tUmVkaXJlY3RFcnJvcjpmdW5jdGlvbigpe3JldHVybiBjfSxwZXJtYW5lbnRSZWRpcmVjdDpmdW5jdGlvbigpe3JldHVybiBpfSxyZWRpcmVjdDpmdW5jdGlvbigpe3JldHVybiBhfX0pO2xldCBuPXIoMTA5OSksdT1yKDY0MzcpLG89dm9pZCAwO2Z1bmN0aW9uIGwoZSx0LHIpe3ZvaWQgMD09PXImJihyPW4uUmVkaXJlY3RTdGF0dXNDb2RlLlRlbXBvcmFyeVJlZGlyZWN0KTtsZXQgbz1PYmplY3QuZGVmaW5lUHJvcGVydHkoRXJyb3IodS5SRURJUkVDVF9FUlJPUl9DT0RFKSwiX19ORVhUX0VSUk9SX0NPREUiLHt2YWx1ZToiRTM5NCIsZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KTtyZXR1cm4gby5kaWdlc3Q9dS5SRURJUkVDVF9FUlJPUl9DT0RFKyI7Iit0KyI7IitlKyI7IityKyI7IixvfWZ1bmN0aW9uIGEoZSx0KXt2YXIgcjt0aHJvdyBudWxsIT10fHwodD0obnVsbD09b3x8bnVsbD09KHI9by5nZXRTdG9yZSgpKT92b2lkIDA6ci5pc0FjdGlvbik/dS5SZWRpcmVjdFR5cGUucHVzaDp1LlJlZGlyZWN0VHlwZS5yZXBsYWNlKSxsKGUsdCxuLlJlZGlyZWN0U3RhdHVzQ29kZS5UZW1wb3JhcnlSZWRpcmVjdCl9ZnVuY3Rpb24gaShlLHQpe3Rocm93IHZvaWQgMD09PXQmJih0PXUuUmVkaXJlY3RUeXBlLnJlcGxhY2UpLGwoZSx0LG4uUmVkaXJlY3RTdGF0dXNDb2RlLlBlcm1hbmVudFJlZGlyZWN0KX1mdW5jdGlvbiBjKGUpe3JldHVybigwLHUuaXNSZWRpcmVjdEVycm9yKShlKT9lLmRpZ2VzdC5zcGxpdCgiOyIpLnNsaWNlKDIsLTIpLmpvaW4oIjsiKTpudWxsfWZ1bmN0aW9uIHMoZSl7aWYoISgwLHUuaXNSZWRpcmVjdEVycm9yKShlKSl0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkoRXJyb3IoIk5vdCBhIHJlZGlyZWN0IGVycm9yIiksIl9fTkVYVF9FUlJPUl9DT0RFIix7dmFsdWU6IkUyNjAiLGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSk7cmV0dXJuIGUuZGlnZXN0LnNwbGl0KCI7IiwyKVsxXX1mdW5jdGlvbiBmKGUpe2lmKCEoMCx1LmlzUmVkaXJlY3RFcnJvcikoZSkpdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KEVycm9yKCJOb3QgYSByZWRpcmVjdCBlcnJvciIpLCJfX05FWFRfRVJST1JfQ09ERSIse3ZhbHVlOiJFMjYwIixlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pO3JldHVybiBOdW1iZXIoZS5kaWdlc3Quc3BsaXQoIjsiKS5hdCgtMikpfSgiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDY2NDA6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKCl7dGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KEVycm9yKCJgdW5hdXRob3JpemVkKClgIGlzIGV4cGVyaW1lbnRhbCBhbmQgb25seSBhbGxvd2VkIHRvIGJlIHVzZWQgd2hlbiBgZXhwZXJpbWVudGFsLmF1dGhJbnRlcnJ1cHRzYCBpcyBlbmFibGVkLiIpLCJfX05FWFRfRVJST1JfQ09ERSIse3ZhbHVlOiJFNDExIixlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwidW5hdXRob3JpemVkIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbn19KSxyKDcwOTkpLkhUVFBfRVJST1JfRkFMTEJBQ0tfRVJST1JfQ09ERSwoImZ1bmN0aW9uIj09dHlwZW9mIHQuZGVmYXVsdHx8Im9iamVjdCI9PXR5cGVvZiB0LmRlZmF1bHQmJm51bGwhPT10LmRlZmF1bHQpJiZ2b2lkIDA9PT10LmRlZmF1bHQuX19lc01vZHVsZSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpLGUuZXhwb3J0cz10LmRlZmF1bHQpfSw2NzUyOihlLHQscik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLCFmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIse2VudW1lcmFibGU6ITAsZ2V0OnRbcl19KX0odCx7QXBwUm91dGVyQ29udGV4dDpmdW5jdGlvbigpe3JldHVybiB1fSxHbG9iYWxMYXlvdXRSb3V0ZXJDb250ZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIGx9LExheW91dFJvdXRlckNvbnRleHQ6ZnVuY3Rpb24oKXtyZXR1cm4gb30sTWlzc2luZ1Nsb3RDb250ZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIGl9LFRlbXBsYXRlQ29udGV4dDpmdW5jdGlvbigpe3JldHVybiBhfX0pO2xldCBuPXIoODE0MCkuXyhyKDIxMTUpKSx1PW4uZGVmYXVsdC5jcmVhdGVDb250ZXh0KG51bGwpLG89bi5kZWZhdWx0LmNyZWF0ZUNvbnRleHQobnVsbCksbD1uLmRlZmF1bHQuY3JlYXRlQ29udGV4dChudWxsKSxhPW4uZGVmYXVsdC5jcmVhdGVDb250ZXh0KG51bGwpLGk9bi5kZWZhdWx0LmNyZWF0ZUNvbnRleHQobmV3IFNldCl9LDY3OTg6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInNlcnZlclBhdGNoUmVkdWNlciIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHN9fSk7bGV0IG49cig5NjU4KSx1PXIoODk1KSxvPXIoNDcwNyksbD1yKDU3MzcpLGE9cig3NjA5KSxpPXIoMTEyNiksYz1yKDcyOTcpO2Z1bmN0aW9uIHMoZSx0KXtsZXR7c2VydmVyUmVzcG9uc2U6e2ZsaWdodERhdGE6cixjYW5vbmljYWxVcmw6c30sbmF2aWdhdGVkQXQ6Zn09dCxkPXt9O2lmKGQucHJlc2VydmVDdXN0b21IaXN0b3J5U3RhdGU9ITEsInN0cmluZyI9PXR5cGVvZiByKXJldHVybigwLGwuaGFuZGxlRXh0ZXJuYWxVcmwpKGUsZCxyLGUucHVzaFJlZi5wZW5kaW5nUHVzaCk7bGV0IHA9ZS50cmVlLGg9ZS5jYWNoZTtmb3IobGV0IHQgb2Ygcil7bGV0e3NlZ21lbnRQYXRoOnIsdHJlZTppfT10LF89KDAsdS5hcHBseVJvdXRlclN0YXRlUGF0Y2hUb1RyZWUpKFsiIiwuLi5yXSxwLGksZS5jYW5vbmljYWxVcmwpO2lmKG51bGw9PT1fKXJldHVybiBlO2lmKCgwLG8uaXNOYXZpZ2F0aW5nVG9OZXdSb290TGF5b3V0KShwLF8pKXJldHVybigwLGwuaGFuZGxlRXh0ZXJuYWxVcmwpKGUsZCxlLmNhbm9uaWNhbFVybCxlLnB1c2hSZWYucGVuZGluZ1B1c2gpO2xldCB5PXM/KDAsbi5jcmVhdGVIcmVmRnJvbVVybCkocyk6dm9pZCAwO3kmJihkLmNhbm9uaWNhbFVybD15KTtsZXQgYj0oMCxjLmNyZWF0ZUVtcHR5Q2FjaGVOb2RlKSgpOygwLGEuYXBwbHlGbGlnaHREYXRhKShmLGgsYix0KSxkLnBhdGNoZWRUcmVlPV8sZC5jYWNoZT1iLGg9YixwPV99cmV0dXJuKDAsaS5oYW5kbGVNdXRhYmxlKShlLGQpfSgiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDY4NzE6KGUsdCk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLCFmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIse2VudW1lcmFibGU6ITAsZ2V0OnRbcl19KX0odCx7QUNUSU9OX0hNUl9SRUZSRVNIOmZ1bmN0aW9uKCl7cmV0dXJuIGF9LEFDVElPTl9OQVZJR0FURTpmdW5jdGlvbigpe3JldHVybiBufSxBQ1RJT05fUFJFRkVUQ0g6ZnVuY3Rpb24oKXtyZXR1cm4gbH0sQUNUSU9OX1JFRlJFU0g6ZnVuY3Rpb24oKXtyZXR1cm4gcn0sQUNUSU9OX1JFU1RPUkU6ZnVuY3Rpb24oKXtyZXR1cm4gdX0sQUNUSU9OX1NFUlZFUl9BQ1RJT046ZnVuY3Rpb24oKXtyZXR1cm4gaX0sQUNUSU9OX1NFUlZFUl9QQVRDSDpmdW5jdGlvbigpe3JldHVybiBvfSxQcmVmZXRjaENhY2hlRW50cnlTdGF0dXM6ZnVuY3Rpb24oKXtyZXR1cm4gc30sUHJlZmV0Y2hLaW5kOmZ1bmN0aW9uKCl7cmV0dXJuIGN9fSk7bGV0IHI9InJlZnJlc2giLG49Im5hdmlnYXRlIix1PSJyZXN0b3JlIixvPSJzZXJ2ZXItcGF0Y2giLGw9InByZWZldGNoIixhPSJobXItcmVmcmVzaCIsaT0ic2VydmVyLWFjdGlvbiI7dmFyIGM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuQVVUTz0iYXV0byIsZS5GVUxMPSJmdWxsIixlLlRFTVBPUkFSWT0idGVtcG9yYXJ5IixlfSh7fSkscz1mdW5jdGlvbihlKXtyZXR1cm4gZS5mcmVzaD0iZnJlc2giLGUucmV1c2FibGU9InJldXNhYmxlIixlLmV4cGlyZWQ9ImV4cGlyZWQiLGUuc3RhbGU9InN0YWxlIixlfSh7fSk7KCJmdW5jdGlvbiI9PXR5cGVvZiB0LmRlZmF1bHR8fCJvYmplY3QiPT10eXBlb2YgdC5kZWZhdWx0JiZudWxsIT09dC5kZWZhdWx0KSYmdm9pZCAwPT09dC5kZWZhdWx0Ll9fZXNNb2R1bGUmJihPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KSxlLmV4cG9ydHM9dC5kZWZhdWx0KX0sNjg5NzooZSx0KT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1TeW1ib2wuZm9yKCJyZWFjdC50cmFuc2l0aW9uYWwuZWxlbWVudCIpO2Z1bmN0aW9uIG4oZSx0LG4pe3ZhciB1PW51bGw7aWYodm9pZCAwIT09biYmKHU9IiIrbiksdm9pZCAwIT09dC5rZXkmJih1PSIiK3Qua2V5KSwia2V5ImluIHQpZm9yKHZhciBvIGluIG49e30sdCkia2V5IiE9PW8mJihuW29dPXRbb10pO2Vsc2Ugbj10O3JldHVybnskJHR5cGVvZjpyLHR5cGU6ZSxrZXk6dSxyZWY6dm9pZCAwIT09KHQ9bi5yZWYpP3Q6bnVsbCxwcm9wczpufX10LkZyYWdtZW50PVN5bWJvbC5mb3IoInJlYWN0LmZyYWdtZW50IiksdC5qc3g9bix0LmpzeHM9bn0sNzA5OTooZSx0KT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksIWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIHQpT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7ZW51bWVyYWJsZTohMCxnZXQ6dFtyXX0pfSh0LHtIVFRQQWNjZXNzRXJyb3JTdGF0dXM6ZnVuY3Rpb24oKXtyZXR1cm4gcn0sSFRUUF9FUlJPUl9GQUxMQkFDS19FUlJPUl9DT0RFOmZ1bmN0aW9uKCl7cmV0dXJuIHV9LGdldEFjY2Vzc0ZhbGxiYWNrRXJyb3JUeXBlQnlTdGF0dXM6ZnVuY3Rpb24oKXtyZXR1cm4gYX0sZ2V0QWNjZXNzRmFsbGJhY2tIVFRQU3RhdHVzOmZ1bmN0aW9uKCl7cmV0dXJuIGx9LGlzSFRUUEFjY2Vzc0ZhbGxiYWNrRXJyb3I6ZnVuY3Rpb24oKXtyZXR1cm4gb319KTtsZXQgcj17Tk9UX0ZPVU5EOjQwNCxGT1JCSURERU46NDAzLFVOQVVUSE9SSVpFRDo0MDF9LG49bmV3IFNldChPYmplY3QudmFsdWVzKHIpKSx1PSJORVhUX0hUVFBfRVJST1JfRkFMTEJBQ0siO2Z1bmN0aW9uIG8oZSl7aWYoIm9iamVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZXx8ISgiZGlnZXN0ImluIGUpfHwic3RyaW5nIiE9dHlwZW9mIGUuZGlnZXN0KXJldHVybiExO2xldFt0LHJdPWUuZGlnZXN0LnNwbGl0KCI7Iik7cmV0dXJuIHQ9PT11JiZuLmhhcyhOdW1iZXIocikpfWZ1bmN0aW9uIGwoZSl7cmV0dXJuIE51bWJlcihlLmRpZ2VzdC5zcGxpdCgiOyIpWzFdKX1mdW5jdGlvbiBhKGUpe3N3aXRjaChlKXtjYXNlIDQwMTpyZXR1cm4idW5hdXRob3JpemVkIjtjYXNlIDQwMzpyZXR1cm4iZm9yYmlkZGVuIjtjYXNlIDQwNDpyZXR1cm4ibm90LWZvdW5kIjtkZWZhdWx0OnJldHVybn19KCJmdW5jdGlvbiI9PXR5cGVvZiB0LmRlZmF1bHR8fCJvYmplY3QiPT10eXBlb2YgdC5kZWZhdWx0JiZudWxsIT09dC5kZWZhdWx0KSYmdm9pZCAwPT09dC5kZWZhdWx0Ll9fZXNNb2R1bGUmJihPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KSxlLmV4cG9ydHM9dC5kZWZhdWx0KX0sNzE1MDooZSx0LHIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiZGVmYXVsdCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGx9fSk7bGV0IG49cig1MTU1KSx1PXIoNTg2MCksbz17ZXJyb3I6e2ZvbnRGYW1pbHk6J3N5c3RlbS11aSwiU2Vnb2UgVUkiLFJvYm90byxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZiwiQXBwbGUgQ29sb3IgRW1vamkiLCJTZWdvZSBVSSBFbW9qaSInLGhlaWdodDoiMTAwdmgiLHRleHRBbGlnbjoiY2VudGVyIixkaXNwbGF5OiJmbGV4IixmbGV4RGlyZWN0aW9uOiJjb2x1bW4iLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciJ9LHRleHQ6e2ZvbnRTaXplOiIxNHB4Iixmb250V2VpZ2h0OjQwMCxsaW5lSGVpZ2h0OiIyOHB4IixtYXJnaW46IjAgOHB4In19LGw9ZnVuY3Rpb24oZSl7bGV0e2Vycm9yOnR9PWUscj1udWxsPT10P3ZvaWQgMDp0LmRpZ2VzdDtyZXR1cm4oMCxuLmpzeHMpKCJodG1sIix7aWQ6Il9fbmV4dF9lcnJvcl9fIixjaGlsZHJlbjpbKDAsbi5qc3gpKCJoZWFkIix7fSksKDAsbi5qc3hzKSgiYm9keSIse2NoaWxkcmVuOlsoMCxuLmpzeCkodS5IYW5kbGVJU1JFcnJvcix7ZXJyb3I6dH0pLCgwLG4uanN4KSgiZGl2Iix7c3R5bGU6by5lcnJvcixjaGlsZHJlbjooMCxuLmpzeHMpKCJkaXYiLHtjaGlsZHJlbjpbKDAsbi5qc3hzKSgiaDIiLHtzdHlsZTpvLnRleHQsY2hpbGRyZW46WyJBcHBsaWNhdGlvbiBlcnJvcjogYSAiLHI/InNlcnZlciI6ImNsaWVudCIsIi1zaWRlIGV4Y2VwdGlvbiBoYXMgb2NjdXJyZWQgd2hpbGUgbG9hZGluZyAiLHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSwiIChzZWUgdGhlIiwiICIscj8ic2VydmVyIGxvZ3MiOiJicm93c2VyIGNvbnNvbGUiLCIgZm9yIG1vcmUgaW5mb3JtYXRpb24pLiJdfSkscj8oMCxuLmpzeCkoInAiLHtzdHlsZTpvLnRleHQsY2hpbGRyZW46IkRpZ2VzdDogIityfSk6bnVsbF19KX0pXX0pXX0pfTsoImZ1bmN0aW9uIj09dHlwZW9mIHQuZGVmYXVsdHx8Im9iamVjdCI9PXR5cGVvZiB0LmRlZmF1bHQmJm51bGwhPT10LmRlZmF1bHQpJiZ2b2lkIDA9PT10LmRlZmF1bHQuX19lc01vZHVsZSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpLGUuZXhwb3J0cz10LmRlZmF1bHQpfSw3MTk3OihlLHQscik9PnsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXIoOTA2Mil9LDcyNjA6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksIWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIHQpT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7ZW51bWVyYWJsZTohMCxnZXQ6dFtyXX0pfSh0LHtSZWFkb25seVVSTFNlYXJjaFBhcmFtczpmdW5jdGlvbigpe3JldHVybiBpLlJlYWRvbmx5VVJMU2VhcmNoUGFyYW1zfSxSZWRpcmVjdFR5cGU6ZnVuY3Rpb24oKXtyZXR1cm4gaS5SZWRpcmVjdFR5cGV9LFNlcnZlckluc2VydGVkSFRNTENvbnRleHQ6ZnVuY3Rpb24oKXtyZXR1cm4gYy5TZXJ2ZXJJbnNlcnRlZEhUTUxDb250ZXh0fSxmb3JiaWRkZW46ZnVuY3Rpb24oKXtyZXR1cm4gaS5mb3JiaWRkZW59LG5vdEZvdW5kOmZ1bmN0aW9uKCl7cmV0dXJuIGkubm90Rm91bmR9LHBlcm1hbmVudFJlZGlyZWN0OmZ1bmN0aW9uKCl7cmV0dXJuIGkucGVybWFuZW50UmVkaXJlY3R9LHJlZGlyZWN0OmZ1bmN0aW9uKCl7cmV0dXJuIGkucmVkaXJlY3R9LHVuYXV0aG9yaXplZDpmdW5jdGlvbigpe3JldHVybiBpLnVuYXV0aG9yaXplZH0sdW5zdGFibGVfaXNVbnJlY29nbml6ZWRBY3Rpb25FcnJvcjpmdW5jdGlvbigpe3JldHVybiBzLnVuc3RhYmxlX2lzVW5yZWNvZ25pemVkQWN0aW9uRXJyb3J9LHVuc3RhYmxlX3JldGhyb3c6ZnVuY3Rpb24oKXtyZXR1cm4gaS51bnN0YWJsZV9yZXRocm93fSx1c2VQYXJhbXM6ZnVuY3Rpb24oKXtyZXR1cm4gX30sdXNlUGF0aG5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gcH0sdXNlUm91dGVyOmZ1bmN0aW9uKCl7cmV0dXJuIGh9LHVzZVNlYXJjaFBhcmFtczpmdW5jdGlvbigpe3JldHVybiBkfSx1c2VTZWxlY3RlZExheW91dFNlZ21lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gYn0sdXNlU2VsZWN0ZWRMYXlvdXRTZWdtZW50czpmdW5jdGlvbigpe3JldHVybiB5fSx1c2VTZXJ2ZXJJbnNlcnRlZEhUTUw6ZnVuY3Rpb24oKXtyZXR1cm4gYy51c2VTZXJ2ZXJJbnNlcnRlZEhUTUx9fSk7bGV0IG49cigyMTE1KSx1PXIoNjc1Miksbz1yKDM4NjUpLGw9cig2MzgxKSxhPXIoNTM2MCksaT1yKDU0MzkpLGM9cigyMTAzKSxzPXIoMjg0NSksZj12b2lkIDA7ZnVuY3Rpb24gZCgpe2xldCBlPSgwLG4udXNlQ29udGV4dCkoby5TZWFyY2hQYXJhbXNDb250ZXh0KTtyZXR1cm4oMCxuLnVzZU1lbW8pKCgpPT5lP25ldyBpLlJlYWRvbmx5VVJMU2VhcmNoUGFyYW1zKGUpOm51bGwsW2VdKX1mdW5jdGlvbiBwKCl7cmV0dXJuIG51bGw9PWZ8fGYoInVzZVBhdGhuYW1lKCkiKSwoMCxuLnVzZUNvbnRleHQpKG8uUGF0aG5hbWVDb250ZXh0KX1mdW5jdGlvbiBoKCl7bGV0IGU9KDAsbi51c2VDb250ZXh0KSh1LkFwcFJvdXRlckNvbnRleHQpO2lmKG51bGw9PT1lKXRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFcnJvcigiaW52YXJpYW50IGV4cGVjdGVkIGFwcCByb3V0ZXIgdG8gYmUgbW91bnRlZCIpLCJfX05FWFRfRVJST1JfQ09ERSIse3ZhbHVlOiJFMjM4IixlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pO3JldHVybiBlfWZ1bmN0aW9uIF8oKXtyZXR1cm4gbnVsbD09Znx8ZigidXNlUGFyYW1zKCkiKSwoMCxuLnVzZUNvbnRleHQpKG8uUGF0aFBhcmFtc0NvbnRleHQpfWZ1bmN0aW9uIHkoZSl7dm9pZCAwPT09ZSYmKGU9ImNoaWxkcmVuIiksbnVsbD09Znx8ZigidXNlU2VsZWN0ZWRMYXlvdXRTZWdtZW50cygpIik7bGV0IHQ9KDAsbi51c2VDb250ZXh0KSh1LkxheW91dFJvdXRlckNvbnRleHQpO3JldHVybiB0P2Z1bmN0aW9uIGUodCxyLG4sdSl7bGV0IG87aWYodm9pZCAwPT09biYmKG49ITApLHZvaWQgMD09PXUmJih1PVtdKSxuKW89dFsxXVtyXTtlbHNle3ZhciBpO2xldCBlPXRbMV07bz1udWxsIT0oaT1lLmNoaWxkcmVuKT9pOk9iamVjdC52YWx1ZXMoZSlbMF19aWYoIW8pcmV0dXJuIHU7bGV0IGM9b1swXSxzPSgwLGwuZ2V0U2VnbWVudFZhbHVlKShjKTtyZXR1cm4hc3x8cy5zdGFydHNXaXRoKGEuUEFHRV9TRUdNRU5UX0tFWSk/dToodS5wdXNoKHMpLGUobyxyLCExLHUpKX0odC5wYXJlbnRUcmVlLGUpOm51bGx9ZnVuY3Rpb24gYihlKXt2b2lkIDA9PT1lJiYoZT0iY2hpbGRyZW4iKSxudWxsPT1mfHxmKCJ1c2VTZWxlY3RlZExheW91dFNlZ21lbnQoKSIpO2xldCB0PXkoZSk7aWYoIXR8fDA9PT10Lmxlbmd0aClyZXR1cm4gbnVsbDtsZXQgcj0iY2hpbGRyZW4iPT09ZT90WzBdOnRbdC5sZW5ndGgtMV07cmV0dXJuIHI9PT1hLkRFRkFVTFRfU0VHTUVOVF9LRVk/bnVsbDpyfSgiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDcyNzg6KGUsdCk9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZS5zcGxpdCgiLyIpLm1hcChlPT5lbmNvZGVVUklDb21wb25lbnQoZSkpLmpvaW4oIi8iKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImVuY29kZVVSSVBhdGgiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByfX0pfSw3Mjk3OihlLHQscik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLCFmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIse2VudW1lcmFibGU6ITAsZ2V0OnRbcl19KX0odCx7Y3JlYXRlRW1wdHlDYWNoZU5vZGU6ZnVuY3Rpb24oKXtyZXR1cm4geH0sY3JlYXRlUHJlZmV0Y2hVUkw6ZnVuY3Rpb24oKXtyZXR1cm4gQX0sZGVmYXVsdDpmdW5jdGlvbigpe3JldHVybiBMfSxpc0V4dGVybmFsVVJMOmZ1bmN0aW9uKCl7cmV0dXJuIHd9fSk7bGV0IG49cig4MTQwKSx1PXIoOTQxNyksbz1yKDUxNTUpLGw9dS5fKHIoMjExNSkpLGE9cig2NzUyKSxpPXIoNjg3MSksYz1yKDk2NTgpLHM9cigzODY1KSxmPXIoNjI0OCksZD1yKDM5MTMpLHA9cig2MDU4KSxoPXIoMzQ0MyksXz1yKDUzMSkseT1yKDgzNiksYj1yKDgzNTkpLHY9cigxNzU1KSxnPXIoMjkyOSksbT1yKDYzNDMpLFI9cigxNDg5KSxFPXIoMTgwNyksTz1yKDY1NDIpLFA9cig2NDM3KTtyKDM0OTkpO2xldCBqPW4uXyhyKDg4OTApKSxUPW4uXyhyKDcxNTApKSxTPXIoNDQzMSksTT17fTtmdW5jdGlvbiB3KGUpe3JldHVybiBlLm9yaWdpbiE9PXdpbmRvdy5sb2NhdGlvbi5vcmlnaW59ZnVuY3Rpb24gQShlKXtsZXQgdDtpZigoMCxkLmlzQm90KSh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCkpcmV0dXJuIG51bGw7dHJ5e3Q9bmV3IFVSTCgoMCxwLmFkZEJhc2VQYXRoKShlKSx3aW5kb3cubG9jYXRpb24uaHJlZil9Y2F0Y2godCl7dGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KEVycm9yKCJDYW5ub3QgcHJlZmV0Y2ggJyIrZSsiJyBiZWNhdXNlIGl0IGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBVUkwuIiksIl9fTkVYVF9FUlJPUl9DT0RFIix7dmFsdWU6IkUyMzQiLGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSl9cmV0dXJuIHcodCk/bnVsbDp0fWZ1bmN0aW9uIEMoZSl7bGV0e2FwcFJvdXRlclN0YXRlOnR9PWU7cmV0dXJuKDAsbC51c2VJbnNlcnRpb25FZmZlY3QpKCgpPT57bGV0e3RyZWU6ZSxwdXNoUmVmOnIsY2Fub25pY2FsVXJsOm59PXQsdT17Li4uci5wcmVzZXJ2ZUN1c3RvbUhpc3RvcnlTdGF0ZT93aW5kb3cuaGlzdG9yeS5zdGF0ZTp7fSxfX05BOiEwLF9fUFJJVkFURV9ORVhUSlNfSU5URVJOQUxTX1RSRUU6ZX07ci5wZW5kaW5nUHVzaCYmKDAsYy5jcmVhdGVIcmVmRnJvbVVybCkobmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZikpIT09bj8oci5wZW5kaW5nUHVzaD0hMSx3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUodSwiIixuKSk6d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHUsIiIsbil9LFt0XSksKDAsbC51c2VFZmZlY3QpKCgpPT57fSxbdC5uZXh0VXJsLHQudHJlZV0pLG51bGx9ZnVuY3Rpb24geCgpe3JldHVybntsYXp5RGF0YTpudWxsLHJzYzpudWxsLHByZWZldGNoUnNjOm51bGwsaGVhZDpudWxsLHByZWZldGNoSGVhZDpudWxsLHBhcmFsbGVsUm91dGVzOm5ldyBNYXAsbG9hZGluZzpudWxsLG5hdmlnYXRlZEF0Oi0xfX1mdW5jdGlvbiBOKGUpe251bGw9PWUmJihlPXt9KTtsZXQgdD13aW5kb3cuaGlzdG9yeS5zdGF0ZSxyPW51bGw9PXQ/dm9pZCAwOnQuX19OQTtyJiYoZS5fX05BPXIpO2xldCBuPW51bGw9PXQ/dm9pZCAwOnQuX19QUklWQVRFX05FWFRKU19JTlRFUk5BTFNfVFJFRTtyZXR1cm4gbiYmKGUuX19QUklWQVRFX05FWFRKU19JTlRFUk5BTFNfVFJFRT1uKSxlfWZ1bmN0aW9uIFUoZSl7bGV0e2hlYWRDYWNoZU5vZGU6dH09ZSxyPW51bGwhPT10P3QuaGVhZDpudWxsLG49bnVsbCE9PXQ/dC5wcmVmZXRjaEhlYWQ6bnVsbCx1PW51bGwhPT1uP246cjtyZXR1cm4oMCxsLnVzZURlZmVycmVkVmFsdWUpKHIsdSl9ZnVuY3Rpb24gRChlKXtsZXQgdCx7YWN0aW9uUXVldWU6cixhc3NldFByZWZpeDpuLGdsb2JhbEVycm9yOnV9PWUsYz0oMCxmLnVzZUFjdGlvblF1ZXVlKShyKSx7Y2Fub25pY2FsVXJsOmR9PWMse3NlYXJjaFBhcmFtczpwLHBhdGhuYW1lOlJ9PSgwLGwudXNlTWVtbykoKCk9PntsZXQgZT1uZXcgVVJMKGQsd2luZG93LmxvY2F0aW9uLmhyZWYpO3JldHVybntzZWFyY2hQYXJhbXM6ZS5zZWFyY2hQYXJhbXMscGF0aG5hbWU6KDAsZy5oYXNCYXNlUGF0aCkoZS5wYXRobmFtZSk/KDAsdi5yZW1vdmVCYXNlUGF0aCkoZS5wYXRobmFtZSk6ZS5wYXRobmFtZX19LFtkXSk7KDAsbC51c2VFZmZlY3QpKCgpPT57ZnVuY3Rpb24gZShlKXt2YXIgdDtlLnBlcnNpc3RlZCYmKG51bGw9PSh0PXdpbmRvdy5oaXN0b3J5LnN0YXRlKT92b2lkIDA6dC5fX1BSSVZBVEVfTkVYVEpTX0lOVEVSTkFMU19UUkVFKSYmKE0ucGVuZGluZ01wYVBhdGg9dm9pZCAwLCgwLGYuZGlzcGF0Y2hBcHBSb3V0ZXJBY3Rpb24pKHt0eXBlOmkuQUNUSU9OX1JFU1RPUkUsdXJsOm5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpLHRyZWU6d2luZG93Lmhpc3Rvcnkuc3RhdGUuX19QUklWQVRFX05FWFRKU19JTlRFUk5BTFNfVFJFRX0pKX1yZXR1cm4gd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInBhZ2VzaG93IixlKSwoKT0+e3dpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJwYWdlc2hvdyIsZSl9fSxbXSksKDAsbC51c2VFZmZlY3QpKCgpPT57ZnVuY3Rpb24gZShlKXtsZXQgdD0icmVhc29uImluIGU/ZS5yZWFzb246ZS5lcnJvcjtpZigoMCxQLmlzUmVkaXJlY3RFcnJvcikodCkpe2UucHJldmVudERlZmF1bHQoKTtsZXQgcj0oMCxPLmdldFVSTEZyb21SZWRpcmVjdEVycm9yKSh0KTsoMCxPLmdldFJlZGlyZWN0VHlwZUZyb21FcnJvcikodCk9PT1QLlJlZGlyZWN0VHlwZS5wdXNoP0UucHVibGljQXBwUm91dGVySW5zdGFuY2UucHVzaChyLHt9KTpFLnB1YmxpY0FwcFJvdXRlckluc3RhbmNlLnJlcGxhY2Uocix7fSl9fXJldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiZXJyb3IiLGUpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJ1bmhhbmRsZWRyZWplY3Rpb24iLGUpLCgpPT57d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoImVycm9yIixlKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigidW5oYW5kbGVkcmVqZWN0aW9uIixlKX19LFtdKTtsZXR7cHVzaFJlZjpUfT1jO2lmKFQubXBhTmF2aWdhdGlvbil7aWYoTS5wZW5kaW5nTXBhUGF0aCE9PWQpe2xldCBlPXdpbmRvdy5sb2NhdGlvbjtULnBlbmRpbmdQdXNoP2UuYXNzaWduKGQpOmUucmVwbGFjZShkKSxNLnBlbmRpbmdNcGFQYXRoPWR9dGhyb3cgYi51bnJlc29sdmVkVGhlbmFibGV9KDAsbC51c2VFZmZlY3QpKCgpPT57bGV0IGU9d2luZG93Lmhpc3RvcnkucHVzaFN0YXRlLmJpbmQod2luZG93Lmhpc3RvcnkpLHQ9d2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlLmJpbmQod2luZG93Lmhpc3RvcnkpLHI9ZT0+e3ZhciB0O2xldCByPXdpbmRvdy5sb2NhdGlvbi5ocmVmLG49bnVsbD09KHQ9d2luZG93Lmhpc3Rvcnkuc3RhdGUpP3ZvaWQgMDp0Ll9fUFJJVkFURV9ORVhUSlNfSU5URVJOQUxTX1RSRUU7KDAsbC5zdGFydFRyYW5zaXRpb24pKCgpPT57KDAsZi5kaXNwYXRjaEFwcFJvdXRlckFjdGlvbikoe3R5cGU6aS5BQ1RJT05fUkVTVE9SRSx1cmw6bmV3IFVSTChudWxsIT1lP2U6cixyKSx0cmVlOm59KX0pfTt3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGU9ZnVuY3Rpb24odCxuLHUpe3JldHVybihudWxsPT10P3ZvaWQgMDp0Ll9fTkEpfHwobnVsbD09dD92b2lkIDA6dC5fTil8fCh0PU4odCksdSYmcih1KSksZSh0LG4sdSl9LHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZT1mdW5jdGlvbihlLG4sdSl7cmV0dXJuKG51bGw9PWU/dm9pZCAwOmUuX19OQSl8fChudWxsPT1lP3ZvaWQgMDplLl9OKXx8KGU9TihlKSx1JiZyKHUpKSx0KGUsbix1KX07bGV0IG49ZT0+e2lmKGUuc3RhdGUpe2lmKCFlLnN0YXRlLl9fTkEpcmV0dXJuIHZvaWQgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpOygwLGwuc3RhcnRUcmFuc2l0aW9uKSgoKT0+eygwLEUuZGlzcGF0Y2hUcmF2ZXJzZUFjdGlvbikod2luZG93LmxvY2F0aW9uLmhyZWYsZS5zdGF0ZS5fX1BSSVZBVEVfTkVYVEpTX0lOVEVSTkFMU19UUkVFKX0pfX07cmV0dXJuIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJwb3BzdGF0ZSIsbiksKCk9Pnt3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGU9ZSx3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGU9dCx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigicG9wc3RhdGUiLG4pfX0sW10pO2xldHtjYWNoZTp3LHRyZWU6QSxuZXh0VXJsOngsZm9jdXNBbmRTY3JvbGxSZWY6RH09YyxMPSgwLGwudXNlTWVtbykoKCk9PigwLHkuZmluZEhlYWRJbkNhY2hlKSh3LEFbMV0pLFt3LEFdKSxJPSgwLGwudXNlTWVtbykoKCk9PigwLG0uZ2V0U2VsZWN0ZWRQYXJhbXMpKEEpLFtBXSksaz0oMCxsLnVzZU1lbW8pKCgpPT4oe3BhcmVudFRyZWU6QSxwYXJlbnRDYWNoZU5vZGU6dyxwYXJlbnRTZWdtZW50UGF0aDpudWxsLHVybDpkfSksW0EsdyxkXSksSD0oMCxsLnVzZU1lbW8pKCgpPT4oe3RyZWU6QSxmb2N1c0FuZFNjcm9sbFJlZjpELG5leHRVcmw6eH0pLFtBLEQseF0pO2lmKG51bGwhPT1MKXtsZXRbZSxyLG5dPUw7dD0oMCxvLmpzeCkoVSx7aGVhZENhY2hlTm9kZTplfSxyKX1lbHNlIHQ9bnVsbDtsZXQgQj0oMCxvLmpzeHMpKF8uUmVkaXJlY3RCb3VuZGFyeSx7Y2hpbGRyZW46W3QsKDAsby5qc3gpKFMuUm9vdExheW91dEJvdW5kYXJ5LHtjaGlsZHJlbjp3LnJzY30pLCgwLG8uanN4KShoLkFwcFJvdXRlckFubm91bmNlcix7dHJlZTpBfSldfSk7cmV0dXJuIEI9KDAsby5qc3gpKGouZGVmYXVsdCx7ZXJyb3JDb21wb25lbnQ6dVswXSxlcnJvclN0eWxlczp1WzFdLGNoaWxkcmVuOkJ9KSwoMCxvLmpzeHMpKG8uRnJhZ21lbnQse2NoaWxkcmVuOlsoMCxvLmpzeCkoQyx7YXBwUm91dGVyU3RhdGU6Y30pLCgwLG8uanN4KShGLHt9KSwoMCxvLmpzeCkocy5QYXRoUGFyYW1zQ29udGV4dC5Qcm92aWRlcix7dmFsdWU6SSxjaGlsZHJlbjooMCxvLmpzeCkocy5QYXRobmFtZUNvbnRleHQuUHJvdmlkZXIse3ZhbHVlOlIsY2hpbGRyZW46KDAsby5qc3gpKHMuU2VhcmNoUGFyYW1zQ29udGV4dC5Qcm92aWRlcix7dmFsdWU6cCxjaGlsZHJlbjooMCxvLmpzeCkoYS5HbG9iYWxMYXlvdXRSb3V0ZXJDb250ZXh0LlByb3ZpZGVyLHt2YWx1ZTpILGNoaWxkcmVuOigwLG8uanN4KShhLkFwcFJvdXRlckNvbnRleHQuUHJvdmlkZXIse3ZhbHVlOkUucHVibGljQXBwUm91dGVySW5zdGFuY2UsY2hpbGRyZW46KDAsby5qc3gpKGEuTGF5b3V0Um91dGVyQ29udGV4dC5Qcm92aWRlcix7dmFsdWU6ayxjaGlsZHJlbjpCfSl9KX0pfSl9KX0pXX0pfWZ1bmN0aW9uIEwoZSl7bGV0e2FjdGlvblF1ZXVlOnQsZ2xvYmFsRXJyb3JTdGF0ZTpyLGFzc2V0UHJlZml4Om59PWU7KDAsUi51c2VOYXZGYWlsdXJlSGFuZGxlcikoKTtsZXQgdT0oMCxvLmpzeCkoRCx7YWN0aW9uUXVldWU6dCxhc3NldFByZWZpeDpuLGdsb2JhbEVycm9yOnJ9KTtyZXR1cm4oMCxvLmpzeCkoai5kZWZhdWx0LHtlcnJvckNvbXBvbmVudDpULmRlZmF1bHQsY2hpbGRyZW46dX0pfWxldCBJPW5ldyBTZXQsaz1uZXcgU2V0O2Z1bmN0aW9uIEYoKXtsZXRbLGVdPWwuZGVmYXVsdC51c2VTdGF0ZSgwKSx0PUkuc2l6ZTtyZXR1cm4oMCxsLnVzZUVmZmVjdCkoKCk9PntsZXQgcj0oKT0+ZShlPT5lKzEpO3JldHVybiBrLmFkZChyKSx0IT09SS5zaXplJiZyKCksKCk9PntrLmRlbGV0ZShyKX19LFt0LGVdKSxbLi4uSV0ubWFwKChlLHQpPT4oMCxvLmpzeCkoImxpbmsiLHtyZWw6InN0eWxlc2hlZXQiLGhyZWY6IiIrZSxwcmVjZWRlbmNlOiJuZXh0In0sdCkpfWdsb2JhbFRoaXMuX05fRV9TVFlMRV9MT0FEPWZ1bmN0aW9uKGUpe2xldCB0PUkuc2l6ZTtyZXR1cm4gSS5hZGQoZSksSS5zaXplIT09dCYmay5mb3JFYWNoKGU9PmUoKSksUHJvbWlzZS5yZXNvbHZlKCl9LCgiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDczMTc6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksIWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIHQpT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7ZW51bWVyYWJsZTohMCxnZXQ6dFtyXX0pfSh0LHthYm9ydFRhc2s6ZnVuY3Rpb24oKXtyZXR1cm4gaH0sbGlzdGVuRm9yRHluYW1pY1JlcXVlc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gcH0sc3RhcnRQUFJOYXZpZ2F0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIGN9LHVwZGF0ZUNhY2hlTm9kZU9uUG9wc3RhdGVSZXN0b3JhdGlvbjpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBlKHQscil7bGV0IG49clsxXSx1PXQucGFyYWxsZWxSb3V0ZXMsbD1uZXcgTWFwKHUpO2ZvcihsZXQgdCBpbiBuKXtsZXQgcj1uW3RdLGE9clswXSxpPSgwLG8uY3JlYXRlUm91dGVyQ2FjaGVLZXkpKGEpLGM9dS5nZXQodCk7aWYodm9pZCAwIT09Yyl7bGV0IG49Yy5nZXQoaSk7aWYodm9pZCAwIT09bil7bGV0IHU9ZShuLHIpLG89bmV3IE1hcChjKTtvLnNldChpLHUpLGwuc2V0KHQsbyl9fX1sZXQgYT10LnJzYyxpPWIoYSkmJiJwZW5kaW5nIj09PWEuc3RhdHVzO3JldHVybntsYXp5RGF0YTpudWxsLHJzYzphLGhlYWQ6dC5oZWFkLHByZWZldGNoSGVhZDppP3QucHJlZmV0Y2hIZWFkOltudWxsLG51bGxdLHByZWZldGNoUnNjOmk/dC5wcmVmZXRjaFJzYzpudWxsLGxvYWRpbmc6dC5sb2FkaW5nLHBhcmFsbGVsUm91dGVzOmwsbmF2aWdhdGVkQXQ6dC5uYXZpZ2F0ZWRBdH19fX0pO2xldCBuPXIoNTM2MCksdT1yKDc0NjApLG89cig5MTkwKSxsPXIoNDcwNyksYT1yKDM1NzEpLGk9e3JvdXRlOm51bGwsbm9kZTpudWxsLGR5bmFtaWNSZXF1ZXN0VHJlZTpudWxsLGNoaWxkcmVuOm51bGx9O2Z1bmN0aW9uIGMoZSx0LHIsbCxhLGMsZCxwLGgpe3JldHVybiBmdW5jdGlvbiBlKHQscixsLGEsYyxkLHAsaCxfLHksYil7bGV0IHY9bFsxXSxnPWFbMV0sbT1udWxsIT09ZD9kWzJdOm51bGw7Y3x8ITA9PT1hWzRdJiYoYz0hMCk7bGV0IFI9ci5wYXJhbGxlbFJvdXRlcyxFPW5ldyBNYXAoUiksTz17fSxQPW51bGwsaj0hMSxUPXt9O2ZvcihsZXQgciBpbiBnKXtsZXQgbCxhPWdbcl0sZj12W3JdLGQ9Ui5nZXQociksUz1udWxsIT09bT9tW3JdOm51bGwsTT1hWzBdLHc9eS5jb25jYXQoW3IsTV0pLEE9KDAsby5jcmVhdGVSb3V0ZXJDYWNoZUtleSkoTSksQz12b2lkIDAhPT1mP2ZbMF06dm9pZCAwLHg9dm9pZCAwIT09ZD9kLmdldChBKTp2b2lkIDA7aWYobnVsbCE9PShsPU09PT1uLkRFRkFVTFRfU0VHTUVOVF9LRVk/dm9pZCAwIT09Zj97cm91dGU6Zixub2RlOm51bGwsZHluYW1pY1JlcXVlc3RUcmVlOm51bGwsY2hpbGRyZW46bnVsbH06cyh0LGYsYSx4LGMsdm9pZCAwIT09Uz9TOm51bGwscCxoLHcsYik6XyYmMD09PU9iamVjdC5rZXlzKGFbMV0pLmxlbmd0aD9zKHQsZixhLHgsYyx2b2lkIDAhPT1TP1M6bnVsbCxwLGgsdyxiKTp2b2lkIDAhPT1mJiZ2b2lkIDAhPT1DJiYoMCx1Lm1hdGNoU2VnbWVudCkoTSxDKSYmdm9pZCAwIT09eCYmdm9pZCAwIT09Zj9lKHQseCxmLGEsYyxTLHAsaCxfLHcsYik6cyh0LGYsYSx4LGMsdm9pZCAwIT09Uz9TOm51bGwscCxoLHcsYikpKXtpZihudWxsPT09bC5yb3V0ZSlyZXR1cm4gaTtudWxsPT09UCYmKFA9bmV3IE1hcCksUC5zZXQocixsKTtsZXQgZT1sLm5vZGU7aWYobnVsbCE9PWUpe2xldCB0PW5ldyBNYXAoZCk7dC5zZXQoQSxlKSxFLnNldChyLHQpfWxldCB0PWwucm91dGU7T1tyXT10O2xldCBuPWwuZHluYW1pY1JlcXVlc3RUcmVlO251bGwhPT1uPyhqPSEwLFRbcl09bik6VFtyXT10fWVsc2UgT1tyXT1hLFRbcl09YX1pZihudWxsPT09UClyZXR1cm4gbnVsbDtsZXQgUz17bGF6eURhdGE6bnVsbCxyc2M6ci5yc2MscHJlZmV0Y2hSc2M6ci5wcmVmZXRjaFJzYyxoZWFkOnIuaGVhZCxwcmVmZXRjaEhlYWQ6ci5wcmVmZXRjaEhlYWQsbG9hZGluZzpyLmxvYWRpbmcscGFyYWxsZWxSb3V0ZXM6RSxuYXZpZ2F0ZWRBdDp0fTtyZXR1cm57cm91dGU6ZihhLE8pLG5vZGU6UyxkeW5hbWljUmVxdWVzdFRyZWU6aj9mKGEsVCk6bnVsbCxjaGlsZHJlbjpQfX0oZSx0LHIsbCwhMSxhLGMsZCxwLFtdLGgpfWZ1bmN0aW9uIHMoZSx0LHIsbix1LGMscyxwLGgsXyl7cmV0dXJuIXUmJih2b2lkIDA9PT10fHwoMCxsLmlzTmF2aWdhdGluZ1RvTmV3Um9vdExheW91dCkodCxyKSk/aTpmdW5jdGlvbiBlKHQscixuLHUsbCxpLGMscyl7bGV0IHAsaCxfLHksYj1yWzFdLHY9MD09PU9iamVjdC5rZXlzKGIpLmxlbmd0aDtpZih2b2lkIDAhPT1uJiZuLm5hdmlnYXRlZEF0K2EuRFlOQU1JQ19TVEFMRVRJTUVfTVM+dClwPW4ucnNjLGg9bi5sb2FkaW5nLF89bi5oZWFkLHk9bi5uYXZpZ2F0ZWRBdDtlbHNlIGlmKG51bGw9PT11KXJldHVybiBkKHQscixudWxsLGwsaSxjLHMpO2Vsc2UgaWYocD11WzFdLGg9dVszXSxfPXY/bDpudWxsLHk9dCx1WzRdfHxpJiZ2KXJldHVybiBkKHQscix1LGwsaSxjLHMpO2xldCBnPW51bGwhPT11P3VbMl06bnVsbCxtPW5ldyBNYXAsUj12b2lkIDAhPT1uP24ucGFyYWxsZWxSb3V0ZXM6bnVsbCxFPW5ldyBNYXAoUiksTz17fSxQPSExO2lmKHYpcy5wdXNoKGMpO2Vsc2UgZm9yKGxldCByIGluIGIpe2xldCBuPWJbcl0sdT1udWxsIT09Zz9nW3JdOm51bGwsYT1udWxsIT09Uj9SLmdldChyKTp2b2lkIDAsZj1uWzBdLGQ9Yy5jb25jYXQoW3IsZl0pLHA9KDAsby5jcmVhdGVSb3V0ZXJDYWNoZUtleSkoZiksaD1lKHQsbix2b2lkIDAhPT1hP2EuZ2V0KHApOnZvaWQgMCx1LGwsaSxkLHMpO20uc2V0KHIsaCk7bGV0IF89aC5keW5hbWljUmVxdWVzdFRyZWU7bnVsbCE9PV8/KFA9ITAsT1tyXT1fKTpPW3JdPW47bGV0IHk9aC5ub2RlO2lmKG51bGwhPT15KXtsZXQgZT1uZXcgTWFwO2Uuc2V0KHAseSksRS5zZXQocixlKX19cmV0dXJue3JvdXRlOnIsbm9kZTp7bGF6eURhdGE6bnVsbCxyc2M6cCxwcmVmZXRjaFJzYzpudWxsLGhlYWQ6XyxwcmVmZXRjaEhlYWQ6bnVsbCxsb2FkaW5nOmgscGFyYWxsZWxSb3V0ZXM6RSxuYXZpZ2F0ZWRBdDp5fSxkeW5hbWljUmVxdWVzdFRyZWU6UD9mKHIsTyk6bnVsbCxjaGlsZHJlbjptfX0oZSxyLG4sYyxzLHAsaCxfKX1mdW5jdGlvbiBmKGUsdCl7bGV0IHI9W2VbMF0sdF07cmV0dXJuIDIgaW4gZSYmKHJbMl09ZVsyXSksMyBpbiBlJiYoclszXT1lWzNdKSw0IGluIGUmJihyWzRdPWVbNF0pLHJ9ZnVuY3Rpb24gZChlLHQscixuLHUsbCxhKXtsZXQgaT1mKHQsdFsxXSk7cmV0dXJuIGlbM109InJlZmV0Y2giLHtyb3V0ZTp0LG5vZGU6ZnVuY3Rpb24gZSh0LHIsbix1LGwsYSxpKXtsZXQgYz1yWzFdLHM9bnVsbCE9PW4/blsyXTpudWxsLGY9bmV3IE1hcDtmb3IobGV0IHIgaW4gYyl7bGV0IG49Y1tyXSxkPW51bGwhPT1zP3Nbcl06bnVsbCxwPW5bMF0saD1hLmNvbmNhdChbcixwXSksXz0oMCxvLmNyZWF0ZVJvdXRlckNhY2hlS2V5KShwKSx5PWUodCxuLHZvaWQgMD09PWQ/bnVsbDpkLHUsbCxoLGkpLGI9bmV3IE1hcDtiLnNldChfLHkpLGYuc2V0KHIsYil9bGV0IGQ9MD09PWYuc2l6ZTtkJiZpLnB1c2goYSk7bGV0IHA9bnVsbCE9PW4/blsxXTpudWxsLGg9bnVsbCE9PW4/blszXTpudWxsO3JldHVybntsYXp5RGF0YTpudWxsLHBhcmFsbGVsUm91dGVzOmYscHJlZmV0Y2hSc2M6dm9pZCAwIT09cD9wOm51bGwscHJlZmV0Y2hIZWFkOmQ/dTpbbnVsbCxudWxsXSxsb2FkaW5nOnZvaWQgMCE9PWg/aDpudWxsLHJzYzp2KCksaGVhZDpkP3YoKTpudWxsLG5hdmlnYXRlZEF0OnR9fShlLHQscixuLHUsbCxhKSxkeW5hbWljUmVxdWVzdFRyZWU6aSxjaGlsZHJlbjpudWxsfX1mdW5jdGlvbiBwKGUsdCl7dC50aGVuKHQ9PntsZXR7ZmxpZ2h0RGF0YTpyfT10O2lmKCJzdHJpbmciIT10eXBlb2Ygcil7Zm9yKGxldCB0IG9mIHIpe2xldHtzZWdtZW50UGF0aDpyLHRyZWU6bixzZWVkRGF0YTpsLGhlYWQ6YX09dDtsJiZmdW5jdGlvbihlLHQscixuLGwpe2xldCBhPWU7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKz0yKXtsZXQgcj10W2VdLG49dFtlKzFdLG89YS5jaGlsZHJlbjtpZihudWxsIT09byl7bGV0IGU9by5nZXQocik7aWYodm9pZCAwIT09ZSl7bGV0IHQ9ZS5yb3V0ZVswXTtpZigoMCx1Lm1hdGNoU2VnbWVudCkobix0KSl7YT1lO2NvbnRpbnVlfX19cmV0dXJufSFmdW5jdGlvbiBlKHQscixuLGwpe2lmKG51bGw9PT10LmR5bmFtaWNSZXF1ZXN0VHJlZSlyZXR1cm47bGV0IGE9dC5jaGlsZHJlbixpPXQubm9kZTtpZihudWxsPT09YSl7bnVsbCE9PWkmJihmdW5jdGlvbiBlKHQscixuLGwsYSl7bGV0IGk9clsxXSxjPW5bMV0scz1sWzJdLGY9dC5wYXJhbGxlbFJvdXRlcztmb3IobGV0IHQgaW4gaSl7bGV0IHI9aVt0XSxuPWNbdF0sbD1zW3RdLGQ9Zi5nZXQodCkscD1yWzBdLGg9KDAsby5jcmVhdGVSb3V0ZXJDYWNoZUtleSkocCkseT12b2lkIDAhPT1kP2QuZ2V0KGgpOnZvaWQgMDt2b2lkIDAhPT15JiYodm9pZCAwIT09biYmKDAsdS5tYXRjaFNlZ21lbnQpKHAsblswXSkmJm51bGwhPWw/ZSh5LHIsbixsLGEpOl8ocix5LG51bGwpKX1sZXQgZD10LnJzYyxwPWxbMV07bnVsbD09PWQ/dC5yc2M9cDpiKGQpJiZkLnJlc29sdmUocCk7bGV0IGg9dC5oZWFkO2IoaCkmJmgucmVzb2x2ZShhKX0oaSx0LnJvdXRlLHIsbixsKSx0LmR5bmFtaWNSZXF1ZXN0VHJlZT1udWxsKTtyZXR1cm59bGV0IGM9clsxXSxzPW5bMl07Zm9yKGxldCB0IGluIHIpe2xldCByPWNbdF0sbj1zW3RdLG89YS5nZXQodCk7aWYodm9pZCAwIT09byl7bGV0IHQ9by5yb3V0ZVswXTtpZigoMCx1Lm1hdGNoU2VnbWVudCkoclswXSx0KSYmbnVsbCE9bilyZXR1cm4gZShvLHIsbixsKX19fShhLHIsbixsKX0oZSxyLG4sbCxhKX1oKGUsbnVsbCl9fSx0PT57aChlLHQpfSl9ZnVuY3Rpb24gaChlLHQpe2xldCByPWUubm9kZTtpZihudWxsPT09cilyZXR1cm47bGV0IG49ZS5jaGlsZHJlbjtpZihudWxsPT09bilfKGUucm91dGUscix0KTtlbHNlIGZvcihsZXQgZSBvZiBuLnZhbHVlcygpKWgoZSx0KTtlLmR5bmFtaWNSZXF1ZXN0VHJlZT1udWxsfWZ1bmN0aW9uIF8oZSx0LHIpe2xldCBuPWVbMV0sdT10LnBhcmFsbGVsUm91dGVzO2ZvcihsZXQgZSBpbiBuKXtsZXQgdD1uW2VdLGw9dS5nZXQoZSk7aWYodm9pZCAwPT09bCljb250aW51ZTtsZXQgYT10WzBdLGk9KDAsby5jcmVhdGVSb3V0ZXJDYWNoZUtleSkoYSksYz1sLmdldChpKTt2b2lkIDAhPT1jJiZfKHQsYyxyKX1sZXQgbD10LnJzYztiKGwpJiYobnVsbD09PXI/bC5yZXNvbHZlKG51bGwpOmwucmVqZWN0KHIpKTtsZXQgYT10LmhlYWQ7YihhKSYmYS5yZXNvbHZlKG51bGwpfWxldCB5PVN5bWJvbCgpO2Z1bmN0aW9uIGIoZSl7cmV0dXJuIGUmJmUudGFnPT09eX1mdW5jdGlvbiB2KCl7bGV0IGUsdCxyPW5ldyBQcm9taXNlKChyLG4pPT57ZT1yLHQ9bn0pO3JldHVybiByLnN0YXR1cz0icGVuZGluZyIsci5yZXNvbHZlPXQ9PnsicGVuZGluZyI9PT1yLnN0YXR1cyYmKHIuc3RhdHVzPSJmdWxmaWxsZWQiLHIudmFsdWU9dCxlKHQpKX0sci5yZWplY3Q9ZT0+eyJwZW5kaW5nIj09PXIuc3RhdHVzJiYoci5zdGF0dXM9InJlamVjdGVkIixyLnJlYXNvbj1lLHQoZSkpfSxyLnRhZz15LHJ9KCJmdW5jdGlvbiI9PXR5cGVvZiB0LmRlZmF1bHR8fCJvYmplY3QiPT10eXBlb2YgdC5kZWZhdWx0JiZudWxsIT09dC5kZWZhdWx0KSYmdm9pZCAwPT09dC5kZWZhdWx0Ll9fZXNNb2R1bGUmJihPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KSxlLmV4cG9ydHM9dC5kZWZhdWx0KX0sNzMzMjooZSx0LHIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiaGFuZGxlU2VnbWVudE1pc21hdGNoIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdX19KTtsZXQgbj1yKDU3MzcpO2Z1bmN0aW9uIHUoZSx0LHIpe3JldHVybigwLG4uaGFuZGxlRXh0ZXJuYWxVcmwpKGUse30sZS5jYW5vbmljYWxVcmwsITApfSgiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDczNjI6KGUsdCk9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3ZhciByPWUubGVuZ3RoO2ZvcihlLnB1c2godCk7MDxyOyl7dmFyIG49ci0xPj4+MSx1PWVbbl07aWYoMDxvKHUsdCkpZVtuXT10LGVbcl09dSxyPW47ZWxzZSBicmVha319ZnVuY3Rpb24gbihlKXtyZXR1cm4gMD09PWUubGVuZ3RoP251bGw6ZVswXX1mdW5jdGlvbiB1KGUpe2lmKDA9PT1lLmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgdD1lWzBdLHI9ZS5wb3AoKTtpZihyIT09dCl7ZVswXT1yO2Zvcih2YXIgbj0wLHU9ZS5sZW5ndGgsbD11Pj4+MTtuPGw7KXt2YXIgYT0yKihuKzEpLTEsaT1lW2FdLGM9YSsxLHM9ZVtjXTtpZigwPm8oaSxyKSljPHUmJjA+byhzLGkpPyhlW25dPXMsZVtjXT1yLG49Yyk6KGVbbl09aSxlW2FdPXIsbj1hKTtlbHNlIGlmKGM8dSYmMD5vKHMscikpZVtuXT1zLGVbY109cixuPWM7ZWxzZSBicmVha319cmV0dXJuIHR9ZnVuY3Rpb24gbyhlLHQpe3ZhciByPWUuc29ydEluZGV4LXQuc29ydEluZGV4O3JldHVybiAwIT09cj9yOmUuaWQtdC5pZH1pZih0LnVuc3RhYmxlX25vdz12b2lkIDAsIm9iamVjdCI9PXR5cGVvZiBwZXJmb3JtYW5jZSYmImZ1bmN0aW9uIj09dHlwZW9mIHBlcmZvcm1hbmNlLm5vdyl7dmFyIGwsYT1wZXJmb3JtYW5jZTt0LnVuc3RhYmxlX25vdz1mdW5jdGlvbigpe3JldHVybiBhLm5vdygpfX1lbHNle3ZhciBpPURhdGUsYz1pLm5vdygpO3QudW5zdGFibGVfbm93PWZ1bmN0aW9uKCl7cmV0dXJuIGkubm93KCktY319dmFyIHM9W10sZj1bXSxkPTEscD1udWxsLGg9MyxfPSExLHk9ITEsYj0hMSx2PSExLGc9ImZ1bmN0aW9uIj09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDpudWxsLG09ImZ1bmN0aW9uIj09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6bnVsbCxSPSJ1bmRlZmluZWQiIT10eXBlb2Ygc2V0SW1tZWRpYXRlP3NldEltbWVkaWF0ZTpudWxsO2Z1bmN0aW9uIEUoZSl7Zm9yKHZhciB0PW4oZik7bnVsbCE9PXQ7KXtpZihudWxsPT09dC5jYWxsYmFjayl1KGYpO2Vsc2UgaWYodC5zdGFydFRpbWU8PWUpdShmKSx0LnNvcnRJbmRleD10LmV4cGlyYXRpb25UaW1lLHIocyx0KTtlbHNlIGJyZWFrO3Q9bihmKX19ZnVuY3Rpb24gTyhlKXtpZihiPSExLEUoZSksIXkpaWYobnVsbCE9PW4ocykpeT0hMCxQfHwoUD0hMCxsKCkpO2Vsc2V7dmFyIHQ9bihmKTtudWxsIT09dCYmeChPLHQuc3RhcnRUaW1lLWUpfX12YXIgUD0hMSxqPS0xLFQ9NSxTPS0xO2Z1bmN0aW9uIE0oKXtyZXR1cm4hIXZ8fCEodC51bnN0YWJsZV9ub3coKS1TPFQpfWZ1bmN0aW9uIHcoKXtpZih2PSExLFApe3ZhciBlPXQudW5zdGFibGVfbm93KCk7Uz1lO3ZhciByPSEwO3RyeXtlOnt5PSExLGImJihiPSExLG0oaiksaj0tMSksXz0hMDt2YXIgbz1oO3RyeXt0Ontmb3IoRShlKSxwPW4ocyk7bnVsbCE9PXAmJiEocC5leHBpcmF0aW9uVGltZT5lJiZNKCkpOyl7dmFyIGE9cC5jYWxsYmFjaztpZigiZnVuY3Rpb24iPT10eXBlb2YgYSl7cC5jYWxsYmFjaz1udWxsLGg9cC5wcmlvcml0eUxldmVsO3ZhciBpPWEocC5leHBpcmF0aW9uVGltZTw9ZSk7aWYoZT10LnVuc3RhYmxlX25vdygpLCJmdW5jdGlvbiI9PXR5cGVvZiBpKXtwLmNhbGxiYWNrPWksRShlKSxyPSEwO2JyZWFrIHR9cD09PW4ocykmJnUocyksRShlKX1lbHNlIHUocyk7cD1uKHMpfWlmKG51bGwhPT1wKXI9ITA7ZWxzZXt2YXIgYz1uKGYpO251bGwhPT1jJiZ4KE8sYy5zdGFydFRpbWUtZSkscj0hMX19YnJlYWsgZX1maW5hbGx5e3A9bnVsbCxoPW8sXz0hMX19fWZpbmFsbHl7cj9sKCk6UD0hMX19fWlmKCJmdW5jdGlvbiI9PXR5cGVvZiBSKWw9ZnVuY3Rpb24oKXtSKHcpfTtlbHNlIGlmKCJ1bmRlZmluZWQiIT10eXBlb2YgTWVzc2FnZUNoYW5uZWwpe3ZhciBBPW5ldyBNZXNzYWdlQ2hhbm5lbCxDPUEucG9ydDI7QS5wb3J0MS5vbm1lc3NhZ2U9dyxsPWZ1bmN0aW9uKCl7Qy5wb3N0TWVzc2FnZShudWxsKX19ZWxzZSBsPWZ1bmN0aW9uKCl7Zyh3LDApfTtmdW5jdGlvbiB4KGUscil7aj1nKGZ1bmN0aW9uKCl7ZSh0LnVuc3RhYmxlX25vdygpKX0scil9dC51bnN0YWJsZV9JZGxlUHJpb3JpdHk9NSx0LnVuc3RhYmxlX0ltbWVkaWF0ZVByaW9yaXR5PTEsdC51bnN0YWJsZV9Mb3dQcmlvcml0eT00LHQudW5zdGFibGVfTm9ybWFsUHJpb3JpdHk9Myx0LnVuc3RhYmxlX1Byb2ZpbGluZz1udWxsLHQudW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHk9Mix0LnVuc3RhYmxlX2NhbmNlbENhbGxiYWNrPWZ1bmN0aW9uKGUpe2UuY2FsbGJhY2s9bnVsbH0sdC51bnN0YWJsZV9mb3JjZUZyYW1lUmF0ZT1mdW5jdGlvbihlKXswPmV8fDEyNTxlP2NvbnNvbGUuZXJyb3IoImZvcmNlRnJhbWVSYXRlIHRha2VzIGEgcG9zaXRpdmUgaW50IGJldHdlZW4gMCBhbmQgMTI1LCBmb3JjaW5nIGZyYW1lIHJhdGVzIGhpZ2hlciB0aGFuIDEyNSBmcHMgaXMgbm90IHN1cHBvcnRlZCIpOlQ9MDxlP01hdGguZmxvb3IoMWUzL2UpOjV9LHQudW5zdGFibGVfZ2V0Q3VycmVudFByaW9yaXR5TGV2ZWw9ZnVuY3Rpb24oKXtyZXR1cm4gaH0sdC51bnN0YWJsZV9uZXh0PWZ1bmN0aW9uKGUpe3N3aXRjaChoKXtjYXNlIDE6Y2FzZSAyOmNhc2UgMzp2YXIgdD0zO2JyZWFrO2RlZmF1bHQ6dD1ofXZhciByPWg7aD10O3RyeXtyZXR1cm4gZSgpfWZpbmFsbHl7aD1yfX0sdC51bnN0YWJsZV9yZXF1ZXN0UGFpbnQ9ZnVuY3Rpb24oKXt2PSEwfSx0LnVuc3RhYmxlX3J1bldpdGhQcmlvcml0eT1mdW5jdGlvbihlLHQpe3N3aXRjaChlKXtjYXNlIDE6Y2FzZSAyOmNhc2UgMzpjYXNlIDQ6Y2FzZSA1OmJyZWFrO2RlZmF1bHQ6ZT0zfXZhciByPWg7aD1lO3RyeXtyZXR1cm4gdCgpfWZpbmFsbHl7aD1yfX0sdC51bnN0YWJsZV9zY2hlZHVsZUNhbGxiYWNrPWZ1bmN0aW9uKGUsdSxvKXt2YXIgYT10LnVuc3RhYmxlX25vdygpO3N3aXRjaChvPSJvYmplY3QiPT10eXBlb2YgbyYmbnVsbCE9PW8mJiJudW1iZXIiPT10eXBlb2Yobz1vLmRlbGF5KSYmMDxvP2ErbzphLGUpe2Nhc2UgMTp2YXIgaT0tMTticmVhaztjYXNlIDI6aT0yNTA7YnJlYWs7Y2FzZSA1Omk9MHgzZmZmZmZmZjticmVhaztjYXNlIDQ6aT0xZTQ7YnJlYWs7ZGVmYXVsdDppPTVlM31yZXR1cm4gaT1vK2ksZT17aWQ6ZCsrLGNhbGxiYWNrOnUscHJpb3JpdHlMZXZlbDplLHN0YXJ0VGltZTpvLGV4cGlyYXRpb25UaW1lOmksc29ydEluZGV4Oi0xfSxvPmE/KGUuc29ydEluZGV4PW8scihmLGUpLG51bGw9PT1uKHMpJiZlPT09bihmKSYmKGI/KG0oaiksaj0tMSk6Yj0hMCx4KE8sby1hKSkpOihlLnNvcnRJbmRleD1pLHIocyxlKSx5fHxffHwoeT0hMCxQfHwoUD0hMCxsKCkpKSksZX0sdC51bnN0YWJsZV9zaG91bGRZaWVsZD1NLHQudW5zdGFibGVfd3JhcENhbGxiYWNrPWZ1bmN0aW9uKGUpe3ZhciB0PWg7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9aDtoPXQ7dHJ5e3JldHVybiBlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1maW5hbGx5e2g9cn19fX0sNzM3MDooZSx0LHIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiY3JlYXRlUmVuZGVyUGFyYW1zRnJvbUNsaWVudCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG99fSk7bGV0IG49cigzOTgyKSx1PW5ldyBXZWFrTWFwO2Z1bmN0aW9uIG8oZSl7bGV0IHQ9dS5nZXQoZSk7aWYodClyZXR1cm4gdDtsZXQgcj1Qcm9taXNlLnJlc29sdmUoZSk7cmV0dXJuIHUuc2V0KGUsciksT2JqZWN0LmtleXMoZSkuZm9yRWFjaCh0PT57bi53ZWxsS25vd25Qcm9wZXJ0aWVzLmhhcyh0KXx8KHJbdF09ZVt0XSl9KSxyfSgiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDc0NjA6KGUsdCk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJtYXRjaFNlZ21lbnQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByfX0pO2xldCByPShlLHQpPT4ic3RyaW5nIj09dHlwZW9mIGU/InN0cmluZyI9PXR5cGVvZiB0JiZlPT09dDoic3RyaW5nIiE9dHlwZW9mIHQmJmVbMF09PT10WzBdJiZlWzFdPT09dFsxXTsoImZ1bmN0aW9uIj09dHlwZW9mIHQuZGVmYXVsdHx8Im9iamVjdCI9PXR5cGVvZiB0LmRlZmF1bHQmJm51bGwhPT10LmRlZmF1bHQpJiZ2b2lkIDA9PT10LmRlZmF1bHQuX19lc01vZHVsZSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpLGUuZXhwb3J0cz10LmRlZmF1bHQpfSw3NTE5OihlLHQpPT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7bGV0IHQ9cGFyc2VJbnQoZS5zbGljZSgwLDIpLDE2KSxyPXQ+PjEmNjMsbj1BcnJheSg2KTtmb3IobGV0IGU9MDtlPDY7ZSsrKXtsZXQgdD1yPj41LWUmMTtuW2VdPTE9PT10fXJldHVybnt0eXBlOjE9PSh0Pj43JjEpPyJ1c2UtY2FjaGUiOiJzZXJ2ZXItYWN0aW9uIix1c2VkQXJnczpuLGhhc1Jlc3RBcmdzOjE9PSgxJnQpfX1mdW5jdGlvbiBuKGUsdCl7bGV0IHI9QXJyYXkoZS5sZW5ndGgpO2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bisrKShuPDYmJnQudXNlZEFyZ3Nbbl18fG4+PTYmJnQuaGFzUmVzdEFyZ3MpJiYocltuXT1lW25dKTtyZXR1cm4gcn1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksIWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIHQpT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7ZW51bWVyYWJsZTohMCxnZXQ6dFtyXX0pfSh0LHtleHRyYWN0SW5mb0Zyb21TZXJ2ZXJSZWZlcmVuY2VJZDpmdW5jdGlvbigpe3JldHVybiByfSxvbWl0VW51c2VkQXJnczpmdW5jdGlvbigpe3JldHVybiBufX0pfSw3NjA5OihlLHQscik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJhcHBseUZsaWdodERhdGEiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBvfX0pO2xldCBuPXIoNjM3KSx1PXIoNTQzKTtmdW5jdGlvbiBvKGUsdCxyLG8sbCl7bGV0e3RyZWU6YSxzZWVkRGF0YTppLGhlYWQ6Yyxpc1Jvb3RSZW5kZXI6c309bztpZihudWxsPT09aSlyZXR1cm4hMTtpZihzKXtsZXQgdT1pWzFdO3IubG9hZGluZz1pWzNdLHIucnNjPXUsci5wcmVmZXRjaFJzYz1udWxsLCgwLG4uZmlsbExhenlJdGVtc1RpbGxMZWFmV2l0aEhlYWQpKGUscix0LGEsaSxjLGwpfWVsc2Ugci5yc2M9dC5yc2Msci5wcmVmZXRjaFJzYz10LnByZWZldGNoUnNjLHIucGFyYWxsZWxSb3V0ZXM9bmV3IE1hcCh0LnBhcmFsbGVsUm91dGVzKSxyLmxvYWRpbmc9dC5sb2FkaW5nLCgwLHUuZmlsbENhY2hlV2l0aE5ld1N1YlRyZWVEYXRhKShlLHIsdCxvLGwpO3JldHVybiEwfSgiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDc2MzA6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksIWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIHQpT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7ZW51bWVyYWJsZTohMCxnZXQ6dFtyXX0pfSh0LHtJTlRFUkNFUFRJT05fUk9VVEVfTUFSS0VSUzpmdW5jdGlvbigpe3JldHVybiB1fSxleHRyYWN0SW50ZXJjZXB0aW9uUm91dGVJbmZvcm1hdGlvbjpmdW5jdGlvbigpe3JldHVybiBsfSxpc0ludGVyY2VwdGlvblJvdXRlQXBwUGF0aDpmdW5jdGlvbigpe3JldHVybiBvfX0pO2xldCBuPXIoNDA2MSksdT1bIiguLikoLi4pIiwiKC4pIiwiKC4uKSIsIiguLi4pIl07ZnVuY3Rpb24gbyhlKXtyZXR1cm4gdm9pZCAwIT09ZS5zcGxpdCgiLyIpLmZpbmQoZT0+dS5maW5kKHQ9PmUuc3RhcnRzV2l0aCh0KSkpfWZ1bmN0aW9uIGwoZSl7bGV0IHQscixvO2ZvcihsZXQgbiBvZiBlLnNwbGl0KCIvIikpaWYocj11LmZpbmQoZT0+bi5zdGFydHNXaXRoKGUpKSl7W3Qsb109ZS5zcGxpdChyLDIpO2JyZWFrfWlmKCF0fHwhcnx8IW8pdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KEVycm9yKCJJbnZhbGlkIGludGVyY2VwdGlvbiByb3V0ZTogIitlKyIuIE11c3QgYmUgaW4gdGhlIGZvcm1hdCAvPGludGVyY2VwdGluZyByb3V0ZT4vKC4ufC4uLnwuLikoLi4pLzxpbnRlcmNlcHRlZCByb3V0ZT4iKSwiX19ORVhUX0VSUk9SX0NPREUiLHt2YWx1ZToiRTI2OSIsZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KTtzd2l0Y2godD0oMCxuLm5vcm1hbGl6ZUFwcFBhdGgpKHQpLHIpe2Nhc2UiKC4pIjpvPSIvIj09PXQ/Ii8iK286dCsiLyIrbzticmVhaztjYXNlIiguLikiOmlmKCIvIj09PXQpdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KEVycm9yKCJJbnZhbGlkIGludGVyY2VwdGlvbiByb3V0ZTogIitlKyIuIENhbm5vdCB1c2UgKC4uKSBtYXJrZXIgYXQgdGhlIHJvb3QgbGV2ZWwsIHVzZSAoLikgaW5zdGVhZC4iKSwiX19ORVhUX0VSUk9SX0NPREUiLHt2YWx1ZToiRTIwNyIsZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KTtvPXQuc3BsaXQoIi8iKS5zbGljZSgwLC0xKS5jb25jYXQobykuam9pbigiLyIpO2JyZWFrO2Nhc2UiKC4uLikiOm89Ii8iK287YnJlYWs7Y2FzZSIoLi4pKC4uKSI6bGV0IGw9dC5zcGxpdCgiLyIpO2lmKGwubGVuZ3RoPD0yKXRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFcnJvcigiSW52YWxpZCBpbnRlcmNlcHRpb24gcm91dGU6ICIrZSsiLiBDYW5ub3QgdXNlICguLikoLi4pIG1hcmtlciBhdCB0aGUgcm9vdCBsZXZlbCBvciBvbmUgbGV2ZWwgdXAuIiksIl9fTkVYVF9FUlJPUl9DT0RFIix7dmFsdWU6IkU0ODYiLGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSk7bz1sLnNsaWNlKDAsLTIpLmNvbmNhdChvKS5qb2luKCIvIik7YnJlYWs7ZGVmYXVsdDp0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkoRXJyb3IoIkludmFyaWFudDogdW5leHBlY3RlZCBtYXJrZXIiKSwiX19ORVhUX0VSUk9SX0NPREUiLHt2YWx1ZToiRTExMiIsZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KX1yZXR1cm57aW50ZXJjZXB0aW5nUm91dGU6dCxpbnRlcmNlcHRlZFJvdXRlOm99fX0sNzY1MDooZSx0LHIpPT57InVzZSBzdHJpY3QiOyFmdW5jdGlvbiBlKCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18mJiJmdW5jdGlvbiI9PXR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0UpdHJ5e19fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5jaGVja0RDRShlKX1jYXRjaChlKXtjb25zb2xlLmVycm9yKGUpfX0oKSxlLmV4cG9ydHM9cig4NzMwKX0sNzcwMDooZSx0KT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlLnJlcGxhY2UoL1wvJC8sIiIpfHwiLyJ9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJyZW1vdmVUcmFpbGluZ1NsYXNoIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcn19KX0sNzc1OTooZSx0LHIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSwhZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gdClPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtlbnVtZXJhYmxlOiEwLGdldDp0W3JdfSl9KHQse0dyYWNlZnVsRGVncmFkZUJvdW5kYXJ5OmZ1bmN0aW9uKCl7cmV0dXJuIG99LGRlZmF1bHQ6ZnVuY3Rpb24oKXtyZXR1cm4gbH19KTtsZXQgbj1yKDUxNTUpLHU9cigyMTE1KTtjbGFzcyBvIGV4dGVuZHMgdS5Db21wb25lbnR7c3RhdGljIGdldERlcml2ZWRTdGF0ZUZyb21FcnJvcihlKXtyZXR1cm57aGFzRXJyb3I6ITB9fWNvbXBvbmVudERpZE1vdW50KCl7bGV0IGU9dGhpcy5odG1sUmVmLmN1cnJlbnQ7dGhpcy5zdGF0ZS5oYXNFcnJvciYmZSYmT2JqZWN0LmVudHJpZXModGhpcy5odG1sQXR0cmlidXRlcykuZm9yRWFjaCh0PT57bGV0W3Isbl09dDtlLnNldEF0dHJpYnV0ZShyLG4pfSl9cmVuZGVyKCl7bGV0e2hhc0Vycm9yOmV9PXRoaXMuc3RhdGU7cmV0dXJuKHRoaXMucm9vdEh0bWx8fCh0aGlzLnJvb3RIdG1sPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5pbm5lckhUTUwsdGhpcy5odG1sQXR0cmlidXRlcz1mdW5jdGlvbihlKXtsZXQgdD17fTtmb3IobGV0IHI9MDtyPGUuYXR0cmlidXRlcy5sZW5ndGg7cisrKXtsZXQgbj1lLmF0dHJpYnV0ZXNbcl07dFtuLm5hbWVdPW4udmFsdWV9cmV0dXJuIHR9KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkpLGUpPygwLG4uanN4KSgiaHRtbCIse3JlZjp0aGlzLmh0bWxSZWYsc3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nOiEwLGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOntfX2h0bWw6dGhpcy5yb290SHRtbH19KTp0aGlzLnByb3BzLmNoaWxkcmVufWNvbnN0cnVjdG9yKGUpe3N1cGVyKGUpLHRoaXMuc3RhdGU9e2hhc0Vycm9yOiExfSx0aGlzLnJvb3RIdG1sPSIiLHRoaXMuaHRtbEF0dHJpYnV0ZXM9e30sdGhpcy5odG1sUmVmPSgwLHUuY3JlYXRlUmVmKSgpfX1sZXQgbD1vOygiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDc3OTc6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtyLnIodCksci5kKHQse186KCk9PnV9KTt2YXIgbj0wO2Z1bmN0aW9uIHUoZSl7cmV0dXJuIl9fcHJpdmF0ZV8iK24rKysiXyIrZX19LDc4NTQ6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInJlc3RvcmVSZWR1Y2VyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gb319KTtsZXQgbj1yKDk2NTgpLHU9cig2MzQzKTtmdW5jdGlvbiBvKGUsdCl7dmFyIHI7bGV0e3VybDpvLHRyZWU6bH09dCxhPSgwLG4uY3JlYXRlSHJlZkZyb21VcmwpKG8pLGk9bHx8ZS50cmVlLGM9ZS5jYWNoZTtyZXR1cm57Y2Fub25pY2FsVXJsOmEscHVzaFJlZjp7cGVuZGluZ1B1c2g6ITEsbXBhTmF2aWdhdGlvbjohMSxwcmVzZXJ2ZUN1c3RvbUhpc3RvcnlTdGF0ZTohMH0sZm9jdXNBbmRTY3JvbGxSZWY6ZS5mb2N1c0FuZFNjcm9sbFJlZixjYWNoZTpjLHByZWZldGNoQ2FjaGU6ZS5wcmVmZXRjaENhY2hlLHRyZWU6aSxuZXh0VXJsOm51bGwhPShyPSgwLHUuZXh0cmFjdFBhdGhGcm9tRmxpZ2h0Um91dGVyU3RhdGUpKGkpKT9yOm8ucGF0aG5hbWV9fXIoNzMxNyksKCJmdW5jdGlvbiI9PXR5cGVvZiB0LmRlZmF1bHR8fCJvYmplY3QiPT10eXBlb2YgdC5kZWZhdWx0JiZudWxsIT09dC5kZWZhdWx0KSYmdm9pZCAwPT09dC5kZWZhdWx0Ll9fZXNNb2R1bGUmJihPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KSxlLmV4cG9ydHM9dC5kZWZhdWx0KX0sNzg1ODooZSx0LHIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwidW5zdGFibGVfcmV0aHJvdyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGUodCl7aWYoKDAsdS5pc05leHRSb3V0ZXJFcnJvcikodCl8fCgwLG4uaXNCYWlsb3V0VG9DU1JFcnJvcikodCkpdGhyb3cgdDt0IGluc3RhbmNlb2YgRXJyb3ImJiJjYXVzZSJpbiB0JiZlKHQuY2F1c2UpfX19KTtsZXQgbj1yKDQ1NTMpLHU9cig1ODI5KTsoImZ1bmN0aW9uIj09dHlwZW9mIHQuZGVmYXVsdHx8Im9iamVjdCI9PXR5cGVvZiB0LmRlZmF1bHQmJm51bGwhPT10LmRlZmF1bHQpJiZ2b2lkIDA9PT10LmRlZmF1bHQuX19lc01vZHVsZSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpLGUuZXhwb3J0cz10LmRlZmF1bHQpfSw3OTg5OihlLHQscik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJDbGllbnRTZWdtZW50Um9vdCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHV9fSk7bGV0IG49cig1MTU1KTtmdW5jdGlvbiB1KGUpe2xldHtDb21wb25lbnQ6dCxzbG90czp1LHBhcmFtczpvLHByb21pc2U6bH09ZTt7bGV0e2NyZWF0ZVJlbmRlclBhcmFtc0Zyb21DbGllbnQ6ZX09cigzMDcpLGw9ZShvKTtyZXR1cm4oMCxuLmpzeCkodCx7Li4udSxwYXJhbXM6bH0pfX1yKDgzMDIpLCgiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDgxMTA6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSkscig4MzAxKTtsZXQgbj1yKDcyNzgpO3tsZXQgZT1yLnU7ci51PWZ1bmN0aW9uKCl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgscj1BcnJheSh0KSx1PTA7dTx0O3UrKylyW3VdPWFyZ3VtZW50c1t1XTtyZXR1cm4oMCxuLmVuY29kZVVSSVBhdGgpKGUoLi4ucikpfX0oImZ1bmN0aW9uIj09dHlwZW9mIHQuZGVmYXVsdHx8Im9iamVjdCI9PXR5cGVvZiB0LmRlZmF1bHQmJm51bGwhPT10LmRlZmF1bHQpJiZ2b2lkIDA9PT10LmRlZmF1bHQuX19lc01vZHVsZSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpLGUuZXhwb3J0cz10LmRlZmF1bHQpfSw4MTMwOihlLHQscik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJzaG91bGRIYXJkTmF2aWdhdGUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbiBlKHQscil7bGV0W28sbF09cixbYSxpXT10O3JldHVybigwLHUubWF0Y2hTZWdtZW50KShhLG8pPyEodC5sZW5ndGg8PTIpJiZlKCgwLG4uZ2V0TmV4dEZsaWdodFNlZ21lbnRQYXRoKSh0KSxsW2ldKTohIUFycmF5LmlzQXJyYXkoYSl9fX0pO2xldCBuPXIoNjM3OCksdT1yKDc0NjApOygiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDgxNDA6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1yLnIodCksci5kKHQse186KCk9Pm59KX0sODMwMTooZSx0KT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7cmV0dXJuIiJ9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJnZXREZXBsb3ltZW50SWRRdWVyeU9yRW1wdHlTdHJpbmciLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByfX0pfSw4MzAyOihlLHQpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiSW52YXJpYW50RXJyb3IiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByfX0pO2NsYXNzIHIgZXh0ZW5kcyBFcnJvcntjb25zdHJ1Y3RvcihlLHQpe3N1cGVyKCJJbnZhcmlhbnQ6ICIrKGUuZW5kc1dpdGgoIi4iKT9lOmUrIi4iKSsiIFRoaXMgaXMgYSBidWcgaW4gTmV4dC5qcy4iLHQpLHRoaXMubmFtZT0iSW52YXJpYW50RXJyb3IifX19LDgzNTk6KGUsdCk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJ1bnJlc29sdmVkVGhlbmFibGUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByfX0pO2xldCByPXt0aGVuOigpPT57fX07KCJmdW5jdGlvbiI9PXR5cGVvZiB0LmRlZmF1bHR8fCJvYmplY3QiPT10eXBlb2YgdC5kZWZhdWx0JiZudWxsIT09dC5kZWZhdWx0KSYmdm9pZCAwPT09dC5kZWZhdWx0Ll9fZXNNb2R1bGUmJihPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KSxlLmV4cG9ydHM9dC5kZWZhdWx0KX0sODQ0MDooZSx0KT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksIWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByIGluIHQpT2JqZWN0LmRlZmluZVByb3BlcnR5KGUscix7ZW51bWVyYWJsZTohMCxnZXQ6dFtyXX0pfSh0LHtNRVRBREFUQV9CT1VOREFSWV9OQU1FOmZ1bmN0aW9uKCl7cmV0dXJuIHJ9LE9VVExFVF9CT1VOREFSWV9OQU1FOmZ1bmN0aW9uKCl7cmV0dXJuIHV9LFJPT1RfTEFZT1VUX0JPVU5EQVJZX05BTUU6ZnVuY3Rpb24oKXtyZXR1cm4gb30sVklFV1BPUlRfQk9VTkRBUllfTkFNRTpmdW5jdGlvbigpe3JldHVybiBufX0pO2xldCByPSJfX25leHRfbWV0YWRhdGFfYm91bmRhcnlfXyIsbj0iX19uZXh0X3ZpZXdwb3J0X2JvdW5kYXJ5X18iLHU9Il9fbmV4dF9vdXRsZXRfYm91bmRhcnlfXyIsbz0iX19uZXh0X3Jvb3RfbGF5b3V0X2JvdW5kYXJ5X18ifSw4NDUxOihlLHQscik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJyZWR1Y2VyIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZn19KTtsZXQgbj1yKDY4NzEpLHU9cig1NzM3KSxvPXIoNjc5OCksbD1yKDc4NTQpLGE9cig4NzE5KSxpPXIoMzkzMyksYz1yKDUzNDUpLHM9cigyMjQ0KSxmPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKHQudHlwZSl7Y2FzZSBuLkFDVElPTl9OQVZJR0FURTpyZXR1cm4oMCx1Lm5hdmlnYXRlUmVkdWNlcikoZSx0KTtjYXNlIG4uQUNUSU9OX1NFUlZFUl9QQVRDSDpyZXR1cm4oMCxvLnNlcnZlclBhdGNoUmVkdWNlcikoZSx0KTtjYXNlIG4uQUNUSU9OX1JFU1RPUkU6cmV0dXJuKDAsbC5yZXN0b3JlUmVkdWNlcikoZSx0KTtjYXNlIG4uQUNUSU9OX1JFRlJFU0g6cmV0dXJuKDAsYS5yZWZyZXNoUmVkdWNlcikoZSx0KTtjYXNlIG4uQUNUSU9OX0hNUl9SRUZSRVNIOnJldHVybigwLGMuaG1yUmVmcmVzaFJlZHVjZXIpKGUsdCk7Y2FzZSBuLkFDVElPTl9QUkVGRVRDSDpyZXR1cm4oMCxpLnByZWZldGNoUmVkdWNlcikoZSx0KTtjYXNlIG4uQUNUSU9OX1NFUlZFUl9BQ1RJT046cmV0dXJuKDAscy5zZXJ2ZXJBY3Rpb25SZWR1Y2VyKShlLHQpO2RlZmF1bHQ6dGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KEVycm9yKCJVbmtub3duIGFjdGlvbiIpLCJfX05FWFRfRVJST1JfQ09ERSIse3ZhbHVlOiJFMjk1IixlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pfX07KCJmdW5jdGlvbiI9PXR5cGVvZiB0LmRlZmF1bHR8fCJvYmplY3QiPT10eXBlb2YgdC5kZWZhdWx0JiZudWxsIT09dC5kZWZhdWx0KSYmdm9pZCAwPT09dC5kZWZhdWx0Ll9fZXNNb2R1bGUmJihPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KSxlLmV4cG9ydHM9dC5kZWZhdWx0KX0sODcxOTooZSx0LHIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicmVmcmVzaFJlZHVjZXIiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBofX0pO2xldCBuPXIoMjc1MyksdT1yKDk2NTgpLG89cig4OTUpLGw9cig0NzA3KSxhPXIoNTczNyksaT1yKDExMjYpLGM9cig2MzcpLHM9cig3Mjk3KSxmPXIoNzMzMiksZD1yKDg5MTUpLHA9cigzNTk3KTtmdW5jdGlvbiBoKGUsdCl7bGV0e29yaWdpbjpyfT10LGg9e30sXz1lLmNhbm9uaWNhbFVybCx5PWUudHJlZTtoLnByZXNlcnZlQ3VzdG9tSGlzdG9yeVN0YXRlPSExO2xldCBiPSgwLHMuY3JlYXRlRW1wdHlDYWNoZU5vZGUpKCksdj0oMCxkLmhhc0ludGVyY2VwdGlvblJvdXRlSW5DdXJyZW50VHJlZSkoZS50cmVlKTtiLmxhenlEYXRhPSgwLG4uZmV0Y2hTZXJ2ZXJSZXNwb25zZSkobmV3IFVSTChfLHIpLHtmbGlnaHRSb3V0ZXJTdGF0ZTpbeVswXSx5WzFdLHlbMl0sInJlZmV0Y2giXSxuZXh0VXJsOnY/ZS5uZXh0VXJsOm51bGx9KTtsZXQgZz1EYXRlLm5vdygpO3JldHVybiBiLmxhenlEYXRhLnRoZW4oYXN5bmMgcj0+e2xldHtmbGlnaHREYXRhOm4sY2Fub25pY2FsVXJsOnN9PXI7aWYoInN0cmluZyI9PXR5cGVvZiBuKXJldHVybigwLGEuaGFuZGxlRXh0ZXJuYWxVcmwpKGUsaCxuLGUucHVzaFJlZi5wZW5kaW5nUHVzaCk7Zm9yKGxldCByIG9mKGIubGF6eURhdGE9bnVsbCxuKSl7bGV0e3RyZWU6bixzZWVkRGF0YTppLGhlYWQ6ZCxpc1Jvb3RSZW5kZXI6bX09cjtpZighbSlyZXR1cm4gY29uc29sZS5sb2coIlJFRlJFU0ggRkFJTEVEIiksZTtsZXQgUj0oMCxvLmFwcGx5Um91dGVyU3RhdGVQYXRjaFRvVHJlZSkoWyIiXSx5LG4sZS5jYW5vbmljYWxVcmwpO2lmKG51bGw9PT1SKXJldHVybigwLGYuaGFuZGxlU2VnbWVudE1pc21hdGNoKShlLHQsbik7aWYoKDAsbC5pc05hdmlnYXRpbmdUb05ld1Jvb3RMYXlvdXQpKHksUikpcmV0dXJuKDAsYS5oYW5kbGVFeHRlcm5hbFVybCkoZSxoLF8sZS5wdXNoUmVmLnBlbmRpbmdQdXNoKTtsZXQgRT1zPygwLHUuY3JlYXRlSHJlZkZyb21VcmwpKHMpOnZvaWQgMDtpZihzJiYoaC5jYW5vbmljYWxVcmw9RSksbnVsbCE9PWkpe2xldCBlPWlbMV0sdD1pWzNdO2IucnNjPWUsYi5wcmVmZXRjaFJzYz1udWxsLGIubG9hZGluZz10LCgwLGMuZmlsbExhenlJdGVtc1RpbGxMZWFmV2l0aEhlYWQpKGcsYix2b2lkIDAsbixpLGQsdm9pZCAwKSxoLnByZWZldGNoQ2FjaGU9bmV3IE1hcH1hd2FpdCAoMCxwLnJlZnJlc2hJbmFjdGl2ZVBhcmFsbGVsU2VnbWVudHMpKHtuYXZpZ2F0ZWRBdDpnLHN0YXRlOmUsdXBkYXRlZFRyZWU6Uix1cGRhdGVkQ2FjaGU6YixpbmNsdWRlTmV4dFVybDp2LGNhbm9uaWNhbFVybDpoLmNhbm9uaWNhbFVybHx8ZS5jYW5vbmljYWxVcmx9KSxoLmNhY2hlPWIsaC5wYXRjaGVkVHJlZT1SLHk9Un1yZXR1cm4oMCxpLmhhbmRsZU11dGFibGUpKGUsaCl9LCgpPT5lKX1yKDYwNDgpLCgiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDg3MzA6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDIxMTUpO2Z1bmN0aW9uIHUoZSl7dmFyIHQ9Imh0dHBzOi8vcmVhY3QuZGV2L2Vycm9ycy8iK2U7aWYoMTxhcmd1bWVudHMubGVuZ3RoKXt0Kz0iP2FyZ3NbXT0iK2VuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbMV0pO2Zvcih2YXIgcj0yO3I8YXJndW1lbnRzLmxlbmd0aDtyKyspdCs9IiZhcmdzW109IitlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW3JdKX1yZXR1cm4iTWluaWZpZWQgUmVhY3QgZXJyb3IgIyIrZSsiOyB2aXNpdCAiK3QrIiBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3JzIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuIn1mdW5jdGlvbiBvKCl7fXZhciBsPXtkOntmOm8scjpmdW5jdGlvbigpe3Rocm93IEVycm9yKHUoNTIyKSl9LEQ6byxDOm8sTDpvLG06byxYOm8sUzpvLE06b30scDowLGZpbmRET01Ob2RlOm51bGx9LGE9U3ltYm9sLmZvcigicmVhY3QucG9ydGFsIiksaT1uLl9fQ0xJRU5UX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1dBUk5fVVNFUlNfVEhFWV9DQU5OT1RfVVBHUkFERTtmdW5jdGlvbiBjKGUsdCl7cmV0dXJuImZvbnQiPT09ZT8iIjoic3RyaW5nIj09dHlwZW9mIHQ/InVzZS1jcmVkZW50aWFscyI9PT10P3Q6IiI6dm9pZCAwfXQuX19ET01fSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfV0FSTl9VU0VSU19USEVZX0NBTk5PVF9VUEdSQURFPWwsdC5jcmVhdGVQb3J0YWw9ZnVuY3Rpb24oZSx0KXt2YXIgcj0yPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbDtpZighdHx8MSE9PXQubm9kZVR5cGUmJjkhPT10Lm5vZGVUeXBlJiYxMSE9PXQubm9kZVR5cGUpdGhyb3cgRXJyb3IodSgyOTkpKTtyZXR1cm4gZnVuY3Rpb24oZSx0LHIpe3ZhciBuPTM8YXJndW1lbnRzLmxlbmd0aCYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTpudWxsO3JldHVybnskJHR5cGVvZjphLGtleTpudWxsPT1uP251bGw6IiIrbixjaGlsZHJlbjplLGNvbnRhaW5lckluZm86dCxpbXBsZW1lbnRhdGlvbjpyfX0oZSx0LG51bGwscil9LHQuZmx1c2hTeW5jPWZ1bmN0aW9uKGUpe3ZhciB0PWkuVCxyPWwucDt0cnl7aWYoaS5UPW51bGwsbC5wPTIsZSlyZXR1cm4gZSgpfWZpbmFsbHl7aS5UPXQsbC5wPXIsbC5kLmYoKX19LHQucHJlY29ubmVjdD1mdW5jdGlvbihlLHQpeyJzdHJpbmciPT10eXBlb2YgZSYmKHQ9dD8ic3RyaW5nIj09dHlwZW9mKHQ9dC5jcm9zc09yaWdpbik/InVzZS1jcmVkZW50aWFscyI9PT10P3Q6IiI6dm9pZCAwOm51bGwsbC5kLkMoZSx0KSl9LHQucHJlZmV0Y2hETlM9ZnVuY3Rpb24oZSl7InN0cmluZyI9PXR5cGVvZiBlJiZsLmQuRChlKX0sdC5wcmVpbml0PWZ1bmN0aW9uKGUsdCl7aWYoInN0cmluZyI9PXR5cGVvZiBlJiZ0JiYic3RyaW5nIj09dHlwZW9mIHQuYXMpe3ZhciByPXQuYXMsbj1jKHIsdC5jcm9zc09yaWdpbiksdT0ic3RyaW5nIj09dHlwZW9mIHQuaW50ZWdyaXR5P3QuaW50ZWdyaXR5OnZvaWQgMCxvPSJzdHJpbmciPT10eXBlb2YgdC5mZXRjaFByaW9yaXR5P3QuZmV0Y2hQcmlvcml0eTp2b2lkIDA7InN0eWxlIj09PXI/bC5kLlMoZSwic3RyaW5nIj09dHlwZW9mIHQucHJlY2VkZW5jZT90LnByZWNlZGVuY2U6dm9pZCAwLHtjcm9zc09yaWdpbjpuLGludGVncml0eTp1LGZldGNoUHJpb3JpdHk6b30pOiJzY3JpcHQiPT09ciYmbC5kLlgoZSx7Y3Jvc3NPcmlnaW46bixpbnRlZ3JpdHk6dSxmZXRjaFByaW9yaXR5Om8sbm9uY2U6InN0cmluZyI9PXR5cGVvZiB0Lm5vbmNlP3Qubm9uY2U6dm9pZCAwfSl9fSx0LnByZWluaXRNb2R1bGU9ZnVuY3Rpb24oZSx0KXtpZigic3RyaW5nIj09dHlwZW9mIGUpaWYoIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT09dCl7aWYobnVsbD09dC5hc3x8InNjcmlwdCI9PT10LmFzKXt2YXIgcj1jKHQuYXMsdC5jcm9zc09yaWdpbik7bC5kLk0oZSx7Y3Jvc3NPcmlnaW46cixpbnRlZ3JpdHk6InN0cmluZyI9PXR5cGVvZiB0LmludGVncml0eT90LmludGVncml0eTp2b2lkIDAsbm9uY2U6InN0cmluZyI9PXR5cGVvZiB0Lm5vbmNlP3Qubm9uY2U6dm9pZCAwfSl9fWVsc2UgbnVsbD09dCYmbC5kLk0oZSl9LHQucHJlbG9hZD1mdW5jdGlvbihlLHQpe2lmKCJzdHJpbmciPT10eXBlb2YgZSYmIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT09dCYmInN0cmluZyI9PXR5cGVvZiB0LmFzKXt2YXIgcj10LmFzLG49YyhyLHQuY3Jvc3NPcmlnaW4pO2wuZC5MKGUscix7Y3Jvc3NPcmlnaW46bixpbnRlZ3JpdHk6InN0cmluZyI9PXR5cGVvZiB0LmludGVncml0eT90LmludGVncml0eTp2b2lkIDAsbm9uY2U6InN0cmluZyI9PXR5cGVvZiB0Lm5vbmNlP3Qubm9uY2U6dm9pZCAwLHR5cGU6InN0cmluZyI9PXR5cGVvZiB0LnR5cGU/dC50eXBlOnZvaWQgMCxmZXRjaFByaW9yaXR5OiJzdHJpbmciPT10eXBlb2YgdC5mZXRjaFByaW9yaXR5P3QuZmV0Y2hQcmlvcml0eTp2b2lkIDAscmVmZXJyZXJQb2xpY3k6InN0cmluZyI9PXR5cGVvZiB0LnJlZmVycmVyUG9saWN5P3QucmVmZXJyZXJQb2xpY3k6dm9pZCAwLGltYWdlU3JjU2V0OiJzdHJpbmciPT10eXBlb2YgdC5pbWFnZVNyY1NldD90LmltYWdlU3JjU2V0OnZvaWQgMCxpbWFnZVNpemVzOiJzdHJpbmciPT10eXBlb2YgdC5pbWFnZVNpemVzP3QuaW1hZ2VTaXplczp2b2lkIDAsbWVkaWE6InN0cmluZyI9PXR5cGVvZiB0Lm1lZGlhP3QubWVkaWE6dm9pZCAwfSl9fSx0LnByZWxvYWRNb2R1bGU9ZnVuY3Rpb24oZSx0KXtpZigic3RyaW5nIj09dHlwZW9mIGUpaWYodCl7dmFyIHI9Yyh0LmFzLHQuY3Jvc3NPcmlnaW4pO2wuZC5tKGUse2FzOiJzdHJpbmciPT10eXBlb2YgdC5hcyYmInNjcmlwdCIhPT10LmFzP3QuYXM6dm9pZCAwLGNyb3NzT3JpZ2luOnIsaW50ZWdyaXR5OiJzdHJpbmciPT10eXBlb2YgdC5pbnRlZ3JpdHk/dC5pbnRlZ3JpdHk6dm9pZCAwfSl9ZWxzZSBsLmQubShlKX0sdC5yZXF1ZXN0Rm9ybVJlc2V0PWZ1bmN0aW9uKGUpe2wuZC5yKGUpfSx0LnVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUodCl9LHQudXNlRm9ybVN0YXRlPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gaS5ILnVzZUZvcm1TdGF0ZShlLHQscil9LHQudXNlRm9ybVN0YXR1cz1mdW5jdGlvbigpe3JldHVybiBpLkgudXNlSG9zdFRyYW5zaXRpb25TdGF0dXMoKX0sdC52ZXJzaW9uPSIxOS4yLjAtY2FuYXJ5LTBiZGI5MjA2LTIwMjUwODE4In0sODc4NTooZSx0LHIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSwhZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gdClPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtlbnVtZXJhYmxlOiEwLGdldDp0W3JdfSl9KHQse0Vycm9yQm91bmRhcnk6ZnVuY3Rpb24oKXtyZXR1cm4gZn0sRXJyb3JCb3VuZGFyeUhhbmRsZXI6ZnVuY3Rpb24oKXtyZXR1cm4gc319KTtsZXQgbj1yKDgxNDApLHU9cig1MTU1KSxvPW4uXyhyKDIxMTUpKSxsPXIoMTQ4NiksYT1yKDU4MjkpO3IoMTQ4OSk7bGV0IGk9cig1ODYwKSxjPSgwLHIoMzkxMykuaXNCb3QpKHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KTtjbGFzcyBzIGV4dGVuZHMgby5kZWZhdWx0LkNvbXBvbmVudHtzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yKGUpe2lmKCgwLGEuaXNOZXh0Um91dGVyRXJyb3IpKGUpKXRocm93IGU7cmV0dXJue2Vycm9yOmV9fXN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoZSx0KXtsZXR7ZXJyb3I6cn09dDtyZXR1cm4gZS5wYXRobmFtZSE9PXQucHJldmlvdXNQYXRobmFtZSYmdC5lcnJvcj97ZXJyb3I6bnVsbCxwcmV2aW91c1BhdGhuYW1lOmUucGF0aG5hbWV9OntlcnJvcjp0LmVycm9yLHByZXZpb3VzUGF0aG5hbWU6ZS5wYXRobmFtZX19cmVuZGVyKCl7cmV0dXJuIHRoaXMuc3RhdGUuZXJyb3ImJiFjPygwLHUuanN4cykodS5GcmFnbWVudCx7Y2hpbGRyZW46WygwLHUuanN4KShpLkhhbmRsZUlTUkVycm9yLHtlcnJvcjp0aGlzLnN0YXRlLmVycm9yfSksdGhpcy5wcm9wcy5lcnJvclN0eWxlcyx0aGlzLnByb3BzLmVycm9yU2NyaXB0cywoMCx1LmpzeCkodGhpcy5wcm9wcy5lcnJvckNvbXBvbmVudCx7ZXJyb3I6dGhpcy5zdGF0ZS5lcnJvcixyZXNldDp0aGlzLnJlc2V0fSldfSk6dGhpcy5wcm9wcy5jaGlsZHJlbn1jb25zdHJ1Y3RvcihlKXtzdXBlcihlKSx0aGlzLnJlc2V0PSgpPT57dGhpcy5zZXRTdGF0ZSh7ZXJyb3I6bnVsbH0pfSx0aGlzLnN0YXRlPXtlcnJvcjpudWxsLHByZXZpb3VzUGF0aG5hbWU6dGhpcy5wcm9wcy5wYXRobmFtZX19fWZ1bmN0aW9uIGYoZSl7bGV0e2Vycm9yQ29tcG9uZW50OnQsZXJyb3JTdHlsZXM6cixlcnJvclNjcmlwdHM6bixjaGlsZHJlbjpvfT1lLGE9KDAsbC51c2VVbnRyYWNrZWRQYXRobmFtZSkoKTtyZXR1cm4gdD8oMCx1LmpzeCkocyx7cGF0aG5hbWU6YSxlcnJvckNvbXBvbmVudDp0LGVycm9yU3R5bGVzOnIsZXJyb3JTY3JpcHRzOm4sY2hpbGRyZW46b30pOigwLHUuanN4KSh1LkZyYWdtZW50LHtjaGlsZHJlbjpvfSl9KCJmdW5jdGlvbiI9PXR5cGVvZiB0LmRlZmF1bHR8fCJvYmplY3QiPT10eXBlb2YgdC5kZWZhdWx0JiZudWxsIT09dC5kZWZhdWx0KSYmdm9pZCAwPT09dC5kZWZhdWx0Ll9fZXNNb2R1bGUmJihPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KSxlLmV4cG9ydHM9dC5kZWZhdWx0KX0sODg5MDooZSx0LHIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiZGVmYXVsdCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGl9fSk7bGV0IG49cig4MTQwKSx1PXIoNTE1NSk7cigyMTE1KTtsZXQgbz1uLl8ocig3NzU5KSksbD1yKDg3ODUpLGE9KDAscigzOTEzKS5pc0JvdCkod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpO2Z1bmN0aW9uIGkoZSl7bGV0e2NoaWxkcmVuOnQsZXJyb3JDb21wb25lbnQ6cixlcnJvclN0eWxlczpuLGVycm9yU2NyaXB0czppfT1lO3JldHVybiBhPygwLHUuanN4KShvLmRlZmF1bHQse2NoaWxkcmVuOnR9KTooMCx1LmpzeCkobC5FcnJvckJvdW5kYXJ5LHtlcnJvckNvbXBvbmVudDpyLGVycm9yU3R5bGVzOm4sZXJyb3JTY3JpcHRzOmksY2hpbGRyZW46dH0pfSgiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDg5MTU6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImhhc0ludGVyY2VwdGlvblJvdXRlSW5DdXJyZW50VHJlZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uIGUodCl7bGV0W3IsdV09dDtpZihBcnJheS5pc0FycmF5KHIpJiYoImRpIj09PXJbMl18fCJjaSI9PT1yWzJdKXx8InN0cmluZyI9PXR5cGVvZiByJiYoMCxuLmlzSW50ZXJjZXB0aW9uUm91dGVBcHBQYXRoKShyKSlyZXR1cm4hMDtpZih1KXtmb3IobGV0IHQgaW4gdSlpZihlKHVbdF0pKXJldHVybiEwfXJldHVybiExfX19KTtsZXQgbj1yKDc2MzApOygiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDg5MjQ6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImRlZmF1bHQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBhfX0pO2xldCBuPXIoOTQxNyksdT1yKDUxNTUpLG89bi5fKHIoMjExNSkpLGw9cig2NzUyKTtmdW5jdGlvbiBhKCl7bGV0IGU9KDAsby51c2VDb250ZXh0KShsLlRlbXBsYXRlQ29udGV4dCk7cmV0dXJuKDAsdS5qc3gpKHUuRnJhZ21lbnQse2NoaWxkcmVuOmV9KX0oImZ1bmN0aW9uIj09dHlwZW9mIHQuZGVmYXVsdHx8Im9iamVjdCI9PXR5cGVvZiB0LmRlZmF1bHQmJm51bGwhPT10LmRlZmF1bHQpJiZ2b2lkIDA9PT10LmRlZmF1bHQuX19lc01vZHVsZSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpLGUuZXhwb3J0cz10LmRlZmF1bHQpfSw5MDYyOihlLHQscik9PnsidXNlIHN0cmljdCI7dmFyIG49cig3NjUwKSx1PXtzdHJlYW06ITB9LG89T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxsPW5ldyBNYXA7ZnVuY3Rpb24gYShlKXt2YXIgdD1yKGUpO3JldHVybiJmdW5jdGlvbiIhPXR5cGVvZiB0LnRoZW58fCJmdWxmaWxsZWQiPT09dC5zdGF0dXM/bnVsbDoodC50aGVuKGZ1bmN0aW9uKGUpe3Quc3RhdHVzPSJmdWxmaWxsZWQiLHQudmFsdWU9ZX0sZnVuY3Rpb24oZSl7dC5zdGF0dXM9InJlamVjdGVkIix0LnJlYXNvbj1lfSksdCl9ZnVuY3Rpb24gaSgpe31mdW5jdGlvbiBjKGUpe2Zvcih2YXIgdD1lWzFdLG49W10sdT0wO3U8dC5sZW5ndGg7KXt2YXIgbz10W3UrK10sYz10W3UrK10scz1sLmdldChvKTt2b2lkIDA9PT1zPyhmLnNldChvLGMpLGM9ci5lKG8pLG4ucHVzaChjKSxzPWwuc2V0LmJpbmQobCxvLG51bGwpLGMudGhlbihzLGkpLGwuc2V0KG8sYykpOm51bGwhPT1zJiZuLnB1c2gocyl9cmV0dXJuIDQ9PT1lLmxlbmd0aD8wPT09bi5sZW5ndGg/YShlWzBdKTpQcm9taXNlLmFsbChuKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGEoZVswXSl9KTowPG4ubGVuZ3RoP1Byb21pc2UuYWxsKG4pOm51bGx9ZnVuY3Rpb24gcyhlKXt2YXIgdD1yKGVbMF0pO2lmKDQ9PT1lLmxlbmd0aCYmImZ1bmN0aW9uIj09dHlwZW9mIHQudGhlbilpZigiZnVsZmlsbGVkIj09PXQuc3RhdHVzKXQ9dC52YWx1ZTtlbHNlIHRocm93IHQucmVhc29uO3JldHVybiIqIj09PWVbMl0/dDoiIj09PWVbMl0/dC5fX2VzTW9kdWxlP3QuZGVmYXVsdDp0Om8uY2FsbCh0LGVbMl0pP3RbZVsyXV06dm9pZCAwfXZhciBmPW5ldyBNYXAsZD1yLnU7ci51PWZ1bmN0aW9uKGUpe3ZhciB0PWYuZ2V0KGUpO3JldHVybiB2b2lkIDAhPT10P3Q6ZChlKX07dmFyIHA9bi5fX0RPTV9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREUsaD1TeW1ib2wuZm9yKCJyZWFjdC50cmFuc2l0aW9uYWwuZWxlbWVudCIpLF89U3ltYm9sLmZvcigicmVhY3QubGF6eSIpLHk9U3ltYm9sLml0ZXJhdG9yLGI9U3ltYm9sLmFzeW5jSXRlcmF0b3Isdj1BcnJheS5pc0FycmF5LGc9T2JqZWN0LmdldFByb3RvdHlwZU9mLG09T2JqZWN0LnByb3RvdHlwZSxSPW5ldyBXZWFrTWFwO2Z1bmN0aW9uIEUoZSx0LHIpe1IuaGFzKGUpfHxSLnNldChlLHtpZDp0LG9yaWdpbmFsQmluZDplLmJpbmQsYm91bmQ6cn0pfWZ1bmN0aW9uIE8oZSx0LHIpe3RoaXMuc3RhdHVzPWUsdGhpcy52YWx1ZT10LHRoaXMucmVhc29uPXJ9ZnVuY3Rpb24gUChlKXtzd2l0Y2goZS5zdGF0dXMpe2Nhc2UicmVzb2x2ZWRfbW9kZWwiOkQoZSk7YnJlYWs7Y2FzZSJyZXNvbHZlZF9tb2R1bGUiOkwoZSl9c3dpdGNoKGUuc3RhdHVzKXtjYXNlImZ1bGZpbGxlZCI6cmV0dXJuIGUudmFsdWU7Y2FzZSJwZW5kaW5nIjpjYXNlImJsb2NrZWQiOmNhc2UiaGFsdGVkIjp0aHJvdyBlO2RlZmF1bHQ6dGhyb3cgZS5yZWFzb259fWZ1bmN0aW9uIGooZSx0KXtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyl7dmFyIG49ZVtyXTsiZnVuY3Rpb24iPT10eXBlb2Ygbj9uKHQpOkgobix0KX19ZnVuY3Rpb24gVChlLHQpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdOyJmdW5jdGlvbiI9PXR5cGVvZiBuP24odCk6QihuLHQpfX1mdW5jdGlvbiBTKGUsdCl7dmFyIHI9dC5oYW5kbGVyLmNodW5rO2lmKG51bGw9PT1yKXJldHVybiBudWxsO2lmKHI9PT1lKXJldHVybiB0LmhhbmRsZXI7aWYobnVsbCE9PSh0PXIudmFsdWUpKWZvcihyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBuPXRbcl07aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4mJm51bGwhPT0obj1TKGUsbikpKXJldHVybiBufXJldHVybiBudWxsfWZ1bmN0aW9uIE0oZSx0LHIpe3N3aXRjaChlLnN0YXR1cyl7Y2FzZSJmdWxmaWxsZWQiOmoodCxlLnZhbHVlKTticmVhaztjYXNlImJsb2NrZWQiOmZvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgdT10W25dO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB1KXt2YXIgbz1TKGUsdSk7aWYobnVsbCE9PW8pc3dpdGNoKEgodSxvLnZhbHVlKSx0LnNwbGljZShuLDEpLG4tLSxudWxsIT09ciYmLTEhPT0odT1yLmluZGV4T2YodSkpJiZyLnNwbGljZSh1LDEpLGUuc3RhdHVzKXtjYXNlImZ1bGZpbGxlZCI6aih0LGUudmFsdWUpO3JldHVybjtjYXNlInJlamVjdGVkIjpudWxsIT09ciYmVChyLGUucmVhc29uKTtyZXR1cm59fX1jYXNlInBlbmRpbmciOmlmKGUudmFsdWUpZm9yKG49MDtuPHQubGVuZ3RoO24rKyllLnZhbHVlLnB1c2godFtuXSk7ZWxzZSBlLnZhbHVlPXQ7aWYoZS5yZWFzb24pe2lmKHIpZm9yKHQ9MDt0PHIubGVuZ3RoO3QrKyllLnJlYXNvbi5wdXNoKHJbdF0pfWVsc2UgZS5yZWFzb249cjticmVhaztjYXNlInJlamVjdGVkIjpyJiZUKHIsZS5yZWFzb24pfX1mdW5jdGlvbiB3KGUsdCxyKXsicGVuZGluZyIhPT10LnN0YXR1cyYmImJsb2NrZWQiIT09dC5zdGF0dXM/dC5yZWFzb24uZXJyb3Iocik6KGU9dC5yZWFzb24sdC5zdGF0dXM9InJlamVjdGVkIix0LnJlYXNvbj1yLG51bGwhPT1lJiZUKGUscikpfWZ1bmN0aW9uIEEoZSx0LHIpe3JldHVybiBuZXcgTygicmVzb2x2ZWRfbW9kZWwiLChyPyd7ImRvbmUiOnRydWUsInZhbHVlIjonOid7ImRvbmUiOmZhbHNlLCJ2YWx1ZSI6JykrdCsifSIsZSl9ZnVuY3Rpb24gQyhlLHQscixuKXt4KGUsdCwobj8neyJkb25lIjp0cnVlLCJ2YWx1ZSI6JzoneyJkb25lIjpmYWxzZSwidmFsdWUiOicpK3IrIn0iKX1mdW5jdGlvbiB4KGUsdCxyKXtpZigicGVuZGluZyIhPT10LnN0YXR1cyl0LnJlYXNvbi5lbnF1ZXVlTW9kZWwocik7ZWxzZXt2YXIgbj10LnZhbHVlLHU9dC5yZWFzb247dC5zdGF0dXM9InJlc29sdmVkX21vZGVsIix0LnZhbHVlPXIsdC5yZWFzb249ZSxudWxsIT09biYmKEQodCksTSh0LG4sdSkpfX1mdW5jdGlvbiBOKGUsdCxyKXtpZigicGVuZGluZyI9PT10LnN0YXR1c3x8ImJsb2NrZWQiPT09dC5zdGF0dXMpe2U9dC52YWx1ZTt2YXIgbj10LnJlYXNvbjt0LnN0YXR1cz0icmVzb2x2ZWRfbW9kdWxlIix0LnZhbHVlPXIsdC5yZWFzb249bnVsbCxudWxsIT09ZSYmKEwodCksTSh0LGUsbikpfX1PLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKFByb21pc2UucHJvdG90eXBlKSxPLnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKGUsdCl7c3dpdGNoKHRoaXMuc3RhdHVzKXtjYXNlInJlc29sdmVkX21vZGVsIjpEKHRoaXMpO2JyZWFrO2Nhc2UicmVzb2x2ZWRfbW9kdWxlIjpMKHRoaXMpfXN3aXRjaCh0aGlzLnN0YXR1cyl7Y2FzZSJmdWxmaWxsZWQiOiJmdW5jdGlvbiI9PXR5cGVvZiBlJiZlKHRoaXMudmFsdWUpO2JyZWFrO2Nhc2UicGVuZGluZyI6Y2FzZSJibG9ja2VkIjoiZnVuY3Rpb24iPT10eXBlb2YgZSYmKG51bGw9PT10aGlzLnZhbHVlJiYodGhpcy52YWx1ZT1bXSksdGhpcy52YWx1ZS5wdXNoKGUpKSwiZnVuY3Rpb24iPT10eXBlb2YgdCYmKG51bGw9PT10aGlzLnJlYXNvbiYmKHRoaXMucmVhc29uPVtdKSx0aGlzLnJlYXNvbi5wdXNoKHQpKTticmVhaztjYXNlImhhbHRlZCI6YnJlYWs7ZGVmYXVsdDoiZnVuY3Rpb24iPT10eXBlb2YgdCYmdCh0aGlzLnJlYXNvbil9fTt2YXIgVT1udWxsO2Z1bmN0aW9uIEQoZSl7dmFyIHQ9VTtVPW51bGw7dmFyIHI9ZS52YWx1ZSxuPWUucmVhc29uO2Uuc3RhdHVzPSJibG9ja2VkIixlLnZhbHVlPW51bGwsZS5yZWFzb249bnVsbDt0cnl7dmFyIHU9SlNPTi5wYXJzZShyLG4uX2Zyb21KU09OKSxvPWUudmFsdWU7aWYobnVsbCE9PW8mJihlLnZhbHVlPW51bGwsZS5yZWFzb249bnVsbCxqKG8sdSkpLG51bGwhPT1VKXtpZihVLmVycm9yZWQpdGhyb3cgVS5yZWFzb247aWYoMDxVLmRlcHMpe1UudmFsdWU9dSxVLnJlYXNvbj1udWxsLFUuY2h1bms9ZTtyZXR1cm59fWUuc3RhdHVzPSJmdWxmaWxsZWQiLGUudmFsdWU9dSxlLnJlYXNvbj1udWxsfWNhdGNoKHQpe2Uuc3RhdHVzPSJyZWplY3RlZCIsZS5yZWFzb249dH1maW5hbGx5e1U9dH19ZnVuY3Rpb24gTChlKXt0cnl7dmFyIHQ9cyhlLnZhbHVlKTtlLnN0YXR1cz0iZnVsZmlsbGVkIixlLnZhbHVlPXQsZS5yZWFzb249bnVsbH1jYXRjaCh0KXtlLnN0YXR1cz0icmVqZWN0ZWQiLGUucmVhc29uPXR9fWZ1bmN0aW9uIEkoZSx0KXtlLl9jbG9zZWQ9ITAsZS5fY2xvc2VkUmVhc29uPXQsZS5fY2h1bmtzLmZvckVhY2goZnVuY3Rpb24ocil7InBlbmRpbmciPT09ci5zdGF0dXM/dyhlLHIsdCk6ImZ1bGZpbGxlZCI9PT1yLnN0YXR1cyYmbnVsbCE9PXIucmVhc29uJiZyLnJlYXNvbi5lcnJvcih0KX0pfWZ1bmN0aW9uIGsoZSl7cmV0dXJueyQkdHlwZW9mOl8sX3BheWxvYWQ6ZSxfaW5pdDpQfX1mdW5jdGlvbiBGKGUsdCl7dmFyIHI9ZS5fY2h1bmtzLG49ci5nZXQodCk7cmV0dXJuIG58fChuPWUuX2Nsb3NlZD9uZXcgTygicmVqZWN0ZWQiLG51bGwsZS5fY2xvc2VkUmVhc29uKTpuZXcgTygicGVuZGluZyIsbnVsbCxudWxsKSxyLnNldCh0LG4pKSxufWZ1bmN0aW9uIEgoZSx0KXt2YXIgcj1lLnJlc3BvbnNlLG49ZS5oYW5kbGVyLHU9ZS5wYXJlbnRPYmplY3QsbD1lLmtleSxhPWUubWFwLGk9ZS5wYXRoO3RyeXtmb3IodmFyIGM9MTtjPGkubGVuZ3RoO2MrKyl7Zm9yKDt0LiQkdHlwZW9mPT09Xzspe3ZhciBzPXQuX3BheWxvYWQ7aWYocz09PW4uY2h1bmspdD1uLnZhbHVlO2Vsc2V7c3dpdGNoKHMuc3RhdHVzKXtjYXNlInJlc29sdmVkX21vZGVsIjpEKHMpO2JyZWFrO2Nhc2UicmVzb2x2ZWRfbW9kdWxlIjpMKHMpfXN3aXRjaChzLnN0YXR1cyl7Y2FzZSJmdWxmaWxsZWQiOnQ9cy52YWx1ZTtjb250aW51ZTtjYXNlImJsb2NrZWQiOnZhciBmPVMocyxlKTtpZihudWxsIT09Zil7dD1mLnZhbHVlO2NvbnRpbnVlfWNhc2UicGVuZGluZyI6aS5zcGxpY2UoMCxjLTEpLG51bGw9PT1zLnZhbHVlP3MudmFsdWU9W2VdOnMudmFsdWUucHVzaChlKSxudWxsPT09cy5yZWFzb24/cy5yZWFzb249W2VdOnMucmVhc29uLnB1c2goZSk7cmV0dXJuO2Nhc2UiaGFsdGVkIjpyZXR1cm47ZGVmYXVsdDpCKGUscy5yZWFzb24pO3JldHVybn19fXZhciBkPWlbY107aWYoIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT09dCYmby5jYWxsKHQsZCkpdD10W2RdO2Vsc2UgdGhyb3cgRXJyb3IoIkludmFsaWQgcmVmZXJlbmNlLiIpfXZhciBwPWEocix0LHUsbCk7aWYoIl9fcHJvdG9fXyIhPT1sJiYodVtsXT1wKSwiIj09PWwmJm51bGw9PT1uLnZhbHVlJiYobi52YWx1ZT1wKSx1WzBdPT09aCYmIm9iamVjdCI9PXR5cGVvZiBuLnZhbHVlJiZudWxsIT09bi52YWx1ZSYmbi52YWx1ZS4kJHR5cGVvZj09PWgpe3ZhciB5PW4udmFsdWU7IjMiPT09bCYmKHkucHJvcHM9cCl9fWNhdGNoKHQpe0IoZSx0KTtyZXR1cm59bi5kZXBzLS0sMD09PW4uZGVwcyYmbnVsbCE9PShlPW4uY2h1bmspJiYiYmxvY2tlZCI9PT1lLnN0YXR1cyYmKHQ9ZS52YWx1ZSxlLnN0YXR1cz0iZnVsZmlsbGVkIixlLnZhbHVlPW4udmFsdWUsZS5yZWFzb249bi5yZWFzb24sbnVsbCE9PXQmJmoodCxuLnZhbHVlKSl9ZnVuY3Rpb24gQihlLHQpe3ZhciByPWUuaGFuZGxlcjtlPWUucmVzcG9uc2Usci5lcnJvcmVkfHwoci5lcnJvcmVkPSEwLHIudmFsdWU9bnVsbCxyLnJlYXNvbj10LG51bGwhPT0ocj1yLmNodW5rKSYmImJsb2NrZWQiPT09ci5zdGF0dXMmJncoZSxyLHQpKX1mdW5jdGlvbiBLKGUsdCxyLG4sdSxvKXtpZihVKXt2YXIgbD1VO2wuZGVwcysrfWVsc2UgbD1VPXtwYXJlbnQ6bnVsbCxjaHVuazpudWxsLHZhbHVlOm51bGwscmVhc29uOm51bGwsZGVwczoxLGVycm9yZWQ6ITF9O3JldHVybiB0PXtyZXNwb25zZTpuLGhhbmRsZXI6bCxwYXJlbnRPYmplY3Q6dCxrZXk6cixtYXA6dSxwYXRoOm99LG51bGw9PT1lLnZhbHVlP2UudmFsdWU9W3RdOmUudmFsdWUucHVzaCh0KSxudWxsPT09ZS5yZWFzb24/ZS5yZWFzb249W3RdOmUucmVhc29uLnB1c2godCksbnVsbH1mdW5jdGlvbiAkKGUsdCxyLG4pe2lmKCFlLl9zZXJ2ZXJSZWZlcmVuY2VDb25maWcpcmV0dXJuIGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gcigpe3ZhciBlPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7cmV0dXJuIHU/ImZ1bGZpbGxlZCI9PT11LnN0YXR1cz90KG4sdS52YWx1ZS5jb25jYXQoZSkpOlByb21pc2UucmVzb2x2ZSh1KS50aGVuKGZ1bmN0aW9uKHIpe3JldHVybiB0KG4sci5jb25jYXQoZSkpfSk6dChuLGUpfXZhciBuPWUuaWQsdT1lLmJvdW5kO3JldHVybiBFKHIsbix1KSxyfSh0LGUuX2NhbGxTZXJ2ZXIpO3ZhciB1PWZ1bmN0aW9uKGUsdCl7dmFyIHI9IiIsbj1lW3RdO2lmKG4pcj1uLm5hbWU7ZWxzZXt2YXIgdT10Lmxhc3RJbmRleE9mKCIjIik7aWYoLTEhPT11JiYocj10LnNsaWNlKHUrMSksbj1lW3Quc2xpY2UoMCx1KV0pLCFuKXRocm93IEVycm9yKCdDb3VsZCBub3QgZmluZCB0aGUgbW9kdWxlICInK3QrJyIgaW4gdGhlIFJlYWN0IFNlcnZlciBNYW5pZmVzdC4gVGhpcyBpcyBwcm9iYWJseSBhIGJ1ZyBpbiB0aGUgUmVhY3QgU2VydmVyIENvbXBvbmVudHMgYnVuZGxlci4nKX1yZXR1cm4gbi5hc3luYz9bbi5pZCxuLmNodW5rcyxyLDFdOltuLmlkLG4uY2h1bmtzLHJdfShlLl9zZXJ2ZXJSZWZlcmVuY2VDb25maWcsdC5pZCksbz1jKHUpO2lmKG8pdC5ib3VuZCYmKG89UHJvbWlzZS5hbGwoW28sdC5ib3VuZF0pKTtlbHNle2lmKCF0LmJvdW5kKXJldHVybiBFKG89cyh1KSx0LmlkLHQuYm91bmQpLG87bz1Qcm9taXNlLnJlc29sdmUodC5ib3VuZCl9aWYoVSl7dmFyIGw9VTtsLmRlcHMrK31lbHNlIGw9VT17cGFyZW50Om51bGwsY2h1bms6bnVsbCx2YWx1ZTpudWxsLHJlYXNvbjpudWxsLGRlcHM6MSxlcnJvcmVkOiExfTtyZXR1cm4gby50aGVuKGZ1bmN0aW9uKCl7dmFyIGU9cyh1KTtpZih0LmJvdW5kKXt2YXIgbz10LmJvdW5kLnZhbHVlLnNsaWNlKDApO28udW5zaGlmdChudWxsKSxlPWUuYmluZC5hcHBseShlLG8pfUUoZSx0LmlkLHQuYm91bmQpLCJfX3Byb3RvX18iIT09biYmKHJbbl09ZSksIiI9PT1uJiZudWxsPT09bC52YWx1ZSYmKGwudmFsdWU9ZSksclswXT09PWgmJiJvYmplY3QiPT10eXBlb2YgbC52YWx1ZSYmbnVsbCE9PWwudmFsdWUmJmwudmFsdWUuJCR0eXBlb2Y9PT1oJiYobz1sLnZhbHVlLCIzIj09PW4pJiYoby5wcm9wcz1lKSxsLmRlcHMtLSwwPT09bC5kZXBzJiZudWxsIT09KGU9bC5jaHVuaykmJiJibG9ja2VkIj09PWUuc3RhdHVzJiYobz1lLnZhbHVlLGUuc3RhdHVzPSJmdWxmaWxsZWQiLGUudmFsdWU9bC52YWx1ZSxlLnJlYXNvbj1udWxsLG51bGwhPT1vJiZqKG8sbC52YWx1ZSkpfSxmdW5jdGlvbih0KXtpZighbC5lcnJvcmVkKXtsLmVycm9yZWQ9ITAsbC52YWx1ZT1udWxsLGwucmVhc29uPXQ7dmFyIHI9bC5jaHVuaztudWxsIT09ciYmImJsb2NrZWQiPT09ci5zdGF0dXMmJncoZSxyLHQpfX0pLG51bGx9ZnVuY3Rpb24gRyhlLHQscixuLHUpe3ZhciBvPXBhcnNlSW50KCh0PXQuc3BsaXQoIjoiKSlbMF0sMTYpO3N3aXRjaCgobz1GKGUsbykpLnN0YXR1cyl7Y2FzZSJyZXNvbHZlZF9tb2RlbCI6RChvKTticmVhaztjYXNlInJlc29sdmVkX21vZHVsZSI6TChvKX1zd2l0Y2goby5zdGF0dXMpe2Nhc2UiZnVsZmlsbGVkIjp2YXIgbD1vLnZhbHVlO2ZvcihvPTE7bzx0Lmxlbmd0aDtvKyspe2Zvcig7bC4kJHR5cGVvZj09PV87KXtzd2l0Y2goKGw9bC5fcGF5bG9hZCkuc3RhdHVzKXtjYXNlInJlc29sdmVkX21vZGVsIjpEKGwpO2JyZWFrO2Nhc2UicmVzb2x2ZWRfbW9kdWxlIjpMKGwpfXN3aXRjaChsLnN0YXR1cyl7Y2FzZSJmdWxmaWxsZWQiOmw9bC52YWx1ZTticmVhaztjYXNlImJsb2NrZWQiOmNhc2UicGVuZGluZyI6cmV0dXJuIEsobCxyLG4sZSx1LHQuc2xpY2Uoby0xKSk7Y2FzZSJoYWx0ZWQiOnJldHVybiBVPyhlPVUsZS5kZXBzKyspOlU9e3BhcmVudDpudWxsLGNodW5rOm51bGwsdmFsdWU6bnVsbCxyZWFzb246bnVsbCxkZXBzOjEsZXJyb3JlZDohMX0sbnVsbDtkZWZhdWx0OnJldHVybiBVPyhVLmVycm9yZWQ9ITAsVS52YWx1ZT1udWxsLFUucmVhc29uPWwucmVhc29uKTpVPXtwYXJlbnQ6bnVsbCxjaHVuazpudWxsLHZhbHVlOm51bGwscmVhc29uOmwucmVhc29uLGRlcHM6MCxlcnJvcmVkOiEwfSxudWxsfX1sPWxbdFtvXV19cmV0dXJuIHUoZSxsLHIsbik7Y2FzZSJwZW5kaW5nIjpjYXNlImJsb2NrZWQiOnJldHVybiBLKG8scixuLGUsdSx0KTtjYXNlImhhbHRlZCI6cmV0dXJuIFU/KGU9VSxlLmRlcHMrKyk6VT17cGFyZW50Om51bGwsY2h1bms6bnVsbCx2YWx1ZTpudWxsLHJlYXNvbjpudWxsLGRlcHM6MSxlcnJvcmVkOiExfSxudWxsO2RlZmF1bHQ6cmV0dXJuIFU/KFUuZXJyb3JlZD0hMCxVLnZhbHVlPW51bGwsVS5yZWFzb249by5yZWFzb24pOlU9e3BhcmVudDpudWxsLGNodW5rOm51bGwsdmFsdWU6bnVsbCxyZWFzb246by5yZWFzb24sZGVwczowLGVycm9yZWQ6ITB9LG51bGx9fWZ1bmN0aW9uIHooZSx0KXtyZXR1cm4gbmV3IE1hcCh0KX1mdW5jdGlvbiBYKGUsdCl7cmV0dXJuIG5ldyBTZXQodCl9ZnVuY3Rpb24gVyhlLHQpe3JldHVybiBuZXcgQmxvYih0LnNsaWNlKDEpLHt0eXBlOnRbMF19KX1mdW5jdGlvbiBZKGUsdCl7ZT1uZXcgRm9ybURhdGE7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspZS5hcHBlbmQodFtyXVswXSx0W3JdWzFdKTtyZXR1cm4gZX1mdW5jdGlvbiBWKGUsdCl7cmV0dXJuIHRbU3ltYm9sLml0ZXJhdG9yXSgpfWZ1bmN0aW9uIHEoZSx0KXtyZXR1cm4gdH1mdW5jdGlvbiBKKCl7dGhyb3cgRXJyb3IoJ1RyeWluZyB0byBjYWxsIGEgZnVuY3Rpb24gZnJvbSAidXNlIHNlcnZlciIgYnV0IHRoZSBjYWxsU2VydmVyIG9wdGlvbiB3YXMgbm90IGltcGxlbWVudGVkIGluIHlvdXIgcm91dGVyIHJ1bnRpbWUuJyl9ZnVuY3Rpb24gUShlLHQscixuLHUsbyxsKXt2YXIgYSxpPW5ldyBNYXA7dGhpcy5fYnVuZGxlckNvbmZpZz1lLHRoaXMuX3NlcnZlclJlZmVyZW5jZUNvbmZpZz10LHRoaXMuX21vZHVsZUxvYWRpbmc9cix0aGlzLl9jYWxsU2VydmVyPXZvaWQgMCE9PW4/bjpKLHRoaXMuX2VuY29kZUZvcm1BY3Rpb249dSx0aGlzLl9ub25jZT1vLHRoaXMuX2NodW5rcz1pLHRoaXMuX3N0cmluZ0RlY29kZXI9bmV3IFRleHREZWNvZGVyLHRoaXMuX2Zyb21KU09OPW51bGwsdGhpcy5fY2xvc2VkPSExLHRoaXMuX2Nsb3NlZFJlYXNvbj1udWxsLHRoaXMuX3RlbXBSZWZzPWwsdGhpcy5fZnJvbUpTT049KGE9dGhpcyxmdW5jdGlvbihlLHQpe2lmKCJfX3Byb3RvX18iIT09ZSl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXt2YXIgcj1hLG49dGhpcyx1PWUsbz10O2lmKCIkIj09PW9bMF0pe2lmKCIkIj09PW8pcmV0dXJuIG51bGwhPT1VJiYiMCI9PT11JiYoVT17cGFyZW50OlUsY2h1bms6bnVsbCx2YWx1ZTpudWxsLHJlYXNvbjpudWxsLGRlcHM6MCxlcnJvcmVkOiExfSksaDtzd2l0Y2gob1sxXSl7Y2FzZSIkIjpyZXR1cm4gby5zbGljZSgxKTtjYXNlIkwiOnJldHVybiBrKHI9RihyLG49cGFyc2VJbnQoby5zbGljZSgyKSwxNikpKTtjYXNlIkAiOnJldHVybiBGKHIsbj1wYXJzZUludChvLnNsaWNlKDIpLDE2KSk7Y2FzZSJTIjpyZXR1cm4gU3ltYm9sLmZvcihvLnNsaWNlKDIpKTtjYXNlImgiOnJldHVybiBHKHIsbz1vLnNsaWNlKDIpLG4sdSwkKTtjYXNlIlQiOmlmKG49IiQiK28uc2xpY2UoMiksbnVsbD09KHI9ci5fdGVtcFJlZnMpKXRocm93IEVycm9yKCJNaXNzaW5nIGEgdGVtcG9yYXJ5IHJlZmVyZW5jZSBzZXQgYnV0IHRoZSBSU0MgcmVzcG9uc2UgcmV0dXJuZWQgYSB0ZW1wb3JhcnkgcmVmZXJlbmNlLiBQYXNzIGEgdGVtcG9yYXJ5UmVmZXJlbmNlIG9wdGlvbiB3aXRoIHRoZSBzZXQgdGhhdCB3YXMgdXNlZCB3aXRoIHRoZSByZXBseS4iKTtyZXR1cm4gci5nZXQobik7Y2FzZSJRIjpyZXR1cm4gRyhyLG89by5zbGljZSgyKSxuLHUseik7Y2FzZSJXIjpyZXR1cm4gRyhyLG89by5zbGljZSgyKSxuLHUsWCk7Y2FzZSJCIjpyZXR1cm4gRyhyLG89by5zbGljZSgyKSxuLHUsVyk7Y2FzZSJLIjpyZXR1cm4gRyhyLG89by5zbGljZSgyKSxuLHUsWSk7Y2FzZSJaIjpyZXR1cm4gZXUoKTtjYXNlImkiOnJldHVybiBHKHIsbz1vLnNsaWNlKDIpLG4sdSxWKTtjYXNlIkkiOnJldHVybiAxLzA7Y2FzZSItIjpyZXR1cm4iJC0wIj09PW8/LTA6LTEvMDtjYXNlIk4iOnJldHVybiBOYU47Y2FzZSJ1IjpyZXR1cm47Y2FzZSJEIjpyZXR1cm4gbmV3IERhdGUoRGF0ZS5wYXJzZShvLnNsaWNlKDIpKSk7Y2FzZSJuIjpyZXR1cm4gQmlnSW50KG8uc2xpY2UoMikpO2RlZmF1bHQ6cmV0dXJuIEcocixvPW8uc2xpY2UoMSksbix1LHEpfX1yZXR1cm4gb31pZigib2JqZWN0Ij09dHlwZW9mIHQmJm51bGwhPT10KXtpZih0WzBdPT09aCl7aWYoZT17JCR0eXBlb2Y6aCx0eXBlOnRbMV0sa2V5OnRbMl0scmVmOm51bGwscHJvcHM6dFszXX0sbnVsbCE9PVUpe2lmKFU9KHQ9VSkucGFyZW50LHQuZXJyb3JlZCllPWsoZT1uZXcgTygicmVqZWN0ZWQiLG51bGwsdC5yZWFzb24pKTtlbHNlIGlmKDA8dC5kZXBzKXt2YXIgbD1uZXcgTygiYmxvY2tlZCIsbnVsbCxudWxsKTt0LnZhbHVlPWUsdC5jaHVuaz1sLGU9ayhsKX19fWVsc2UgZT10O3JldHVybiBlfXJldHVybiB0fX0pfWZ1bmN0aW9uIFooZSx0LHIpe3ZhciBuPShlPWUuX2NodW5rcykuZ2V0KHQpO24mJiJwZW5kaW5nIiE9PW4uc3RhdHVzP24ucmVhc29uLmVucXVldWVWYWx1ZShyKTplLnNldCh0LG5ldyBPKCJmdWxmaWxsZWQiLHIsbnVsbCkpfWZ1bmN0aW9uIGVlKGUsdCxyLG4pe3ZhciB1PWUuX2NodW5rczsoZT11LmdldCh0KSk/InBlbmRpbmciPT09ZS5zdGF0dXMmJih0PWUudmFsdWUsZS5zdGF0dXM9ImZ1bGZpbGxlZCIsZS52YWx1ZT1yLGUucmVhc29uPW4sbnVsbCE9PXQmJmoodCxlLnZhbHVlKSk6dS5zZXQodCxuZXcgTygiZnVsZmlsbGVkIixyLG4pKX1mdW5jdGlvbiBldChlLHQscil7dmFyIG49bnVsbCx1PSExO3I9bmV3IFJlYWRhYmxlU3RyZWFtKHt0eXBlOnIsc3RhcnQ6ZnVuY3Rpb24oZSl7bj1lfX0pO3ZhciBvPW51bGw7ZWUoZSx0LHIse2VucXVldWVWYWx1ZTpmdW5jdGlvbihlKXtudWxsPT09bz9uLmVucXVldWUoZSk6by50aGVuKGZ1bmN0aW9uKCl7bi5lbnF1ZXVlKGUpfSl9LGVucXVldWVNb2RlbDpmdW5jdGlvbih0KXtpZihudWxsPT09byl7dmFyIHI9bmV3IE8oInJlc29sdmVkX21vZGVsIix0LGUpO0QociksImZ1bGZpbGxlZCI9PT1yLnN0YXR1cz9uLmVucXVldWUoci52YWx1ZSk6KHIudGhlbihmdW5jdGlvbihlKXtyZXR1cm4gbi5lbnF1ZXVlKGUpfSxmdW5jdGlvbihlKXtyZXR1cm4gbi5lcnJvcihlKX0pLG89cil9ZWxzZXtyPW87dmFyIHU9bmV3IE8oInBlbmRpbmciLG51bGwsbnVsbCk7dS50aGVuKGZ1bmN0aW9uKGUpe3JldHVybiBuLmVucXVldWUoZSl9LGZ1bmN0aW9uKGUpe3JldHVybiBuLmVycm9yKGUpfSksbz11LHIudGhlbihmdW5jdGlvbigpe289PT11JiYobz1udWxsKSx4KGUsdSx0KX0pfX0sY2xvc2U6ZnVuY3Rpb24oKXtpZighdSlpZih1PSEwLG51bGw9PT1vKW4uY2xvc2UoKTtlbHNle3ZhciBlPW87bz1udWxsLGUudGhlbihmdW5jdGlvbigpe3JldHVybiBuLmNsb3NlKCl9KX19LGVycm9yOmZ1bmN0aW9uKGUpe2lmKCF1KWlmKHU9ITAsbnVsbD09PW8pbi5lcnJvcihlKTtlbHNle3ZhciB0PW87bz1udWxsLHQudGhlbihmdW5jdGlvbigpe3JldHVybiBuLmVycm9yKGUpfSl9fX0pfWZ1bmN0aW9uIGVyKCl7cmV0dXJuIHRoaXN9ZnVuY3Rpb24gZW4oZSx0LHIpe3ZhciBuPVtdLHU9ITEsbz0wLGw9e307bFtiXT1mdW5jdGlvbigpe3ZhciBlLHQ9MDtyZXR1cm4oZT17bmV4dDplPWZ1bmN0aW9uKGUpe2lmKHZvaWQgMCE9PWUpdGhyb3cgRXJyb3IoIlZhbHVlcyBjYW5ub3QgYmUgcGFzc2VkIHRvIG5leHQoKSBvZiBBc3luY0l0ZXJhYmxlcyBwYXNzZWQgdG8gQ2xpZW50IENvbXBvbmVudHMuIik7aWYodD09PW4ubGVuZ3RoKXtpZih1KXJldHVybiBuZXcgTygiZnVsZmlsbGVkIix7ZG9uZTohMCx2YWx1ZTp2b2lkIDB9LG51bGwpO25bdF09bmV3IE8oInBlbmRpbmciLG51bGwsbnVsbCl9cmV0dXJuIG5bdCsrXX19KVtiXT1lcixlfSxlZShlLHQscj9sW2JdKCk6bCx7ZW5xdWV1ZVZhbHVlOmZ1bmN0aW9uKGUpe2lmKG89PT1uLmxlbmd0aCluW29dPW5ldyBPKCJmdWxmaWxsZWQiLHtkb25lOiExLHZhbHVlOmV9LG51bGwpO2Vsc2V7dmFyIHQ9bltvXSxyPXQudmFsdWUsdT10LnJlYXNvbjt0LnN0YXR1cz0iZnVsZmlsbGVkIix0LnZhbHVlPXtkb25lOiExLHZhbHVlOmV9LHQucmVhc29uPW51bGwsbnVsbCE9PXImJk0odCxyLHUpfW8rK30sZW5xdWV1ZU1vZGVsOmZ1bmN0aW9uKHQpe289PT1uLmxlbmd0aD9uW29dPUEoZSx0LCExKTpDKGUsbltvXSx0LCExKSxvKyt9LGNsb3NlOmZ1bmN0aW9uKHQpe2lmKCF1KWZvcih1PSEwLG89PT1uLmxlbmd0aD9uW29dPUEoZSx0LCEwKTpDKGUsbltvXSx0LCEwKSxvKys7bzxuLmxlbmd0aDspQyhlLG5bbysrXSwnIiR1bmRlZmluZWQiJywhMCl9LGVycm9yOmZ1bmN0aW9uKHQpe2lmKCF1KWZvcih1PSEwLG89PT1uLmxlbmd0aCYmKG5bb109bmV3IE8oInBlbmRpbmciLG51bGwsbnVsbCkpO288bi5sZW5ndGg7KXcoZSxuW28rK10sdCl9fSl9ZnVuY3Rpb24gZXUoKXt2YXIgZT1FcnJvcigiQW4gZXJyb3Igb2NjdXJyZWQgaW4gdGhlIFNlcnZlciBDb21wb25lbnRzIHJlbmRlci4gVGhlIHNwZWNpZmljIG1lc3NhZ2UgaXMgb21pdHRlZCBpbiBwcm9kdWN0aW9uIGJ1aWxkcyB0byBhdm9pZCBsZWFraW5nIHNlbnNpdGl2ZSBkZXRhaWxzLiBBIGRpZ2VzdCBwcm9wZXJ0eSBpcyBpbmNsdWRlZCBvbiB0aGlzIGVycm9yIGluc3RhbmNlIHdoaWNoIG1heSBwcm92aWRlIGFkZGl0aW9uYWwgZGV0YWlscyBhYm91dCB0aGUgbmF0dXJlIG9mIHRoZSBlcnJvci4iKTtyZXR1cm4gZS5zdGFjaz0iRXJyb3I6ICIrZS5tZXNzYWdlLGV9ZnVuY3Rpb24gZW8oZSx0KXtmb3IodmFyIHI9ZS5sZW5ndGgsbj10Lmxlbmd0aCx1PTA7dTxyO3UrKyluKz1lW3VdLmJ5dGVMZW5ndGg7bj1uZXcgVWludDhBcnJheShuKTtmb3IodmFyIG89dT0wO288cjtvKyspe3ZhciBsPWVbb107bi5zZXQobCx1KSx1Kz1sLmJ5dGVMZW5ndGh9cmV0dXJuIG4uc2V0KHQsdSksbn1mdW5jdGlvbiBlbChlLHQscixuLHUsbyl7WihlLHQsdT1uZXcgdSgocj0wPT09ci5sZW5ndGgmJjA9PW4uYnl0ZU9mZnNldCVvP246ZW8ocixuKSkuYnVmZmVyLHIuYnl0ZU9mZnNldCxyLmJ5dGVMZW5ndGgvbykpfWZ1bmN0aW9uIGVhKGUpe3JldHVybiBuZXcgUShudWxsLG51bGwsbnVsbCxlJiZlLmNhbGxTZXJ2ZXI/ZS5jYWxsU2VydmVyOnZvaWQgMCx2b2lkIDAsdm9pZCAwLGUmJmUudGVtcG9yYXJ5UmVmZXJlbmNlcz9lLnRlbXBvcmFyeVJlZmVyZW5jZXM6dm9pZCAwKX1mdW5jdGlvbiBlaShlLHQscil7ZnVuY3Rpb24gbih0KXtJKGUsdCl9dmFyIG89e19yb3dTdGF0ZTowLF9yb3dJRDowLF9yb3dUYWc6MCxfcm93TGVuZ3RoOjAsX2J1ZmZlcjpbXX0sbD10LmdldFJlYWRlcigpO2wucmVhZCgpLnRoZW4oZnVuY3Rpb24gdChhKXt2YXIgaT1hLnZhbHVlO2lmKGEuZG9uZSlyfHxJKGUsRXJyb3IoIkNvbm5lY3Rpb24gY2xvc2VkLiIpKTtlbHNle3ZhciBzPTAsZj1vLl9yb3dTdGF0ZTthPW8uX3Jvd0lEO2Zvcih2YXIgZD1vLl9yb3dUYWcsaD1vLl9yb3dMZW5ndGgsXz1vLl9idWZmZXIseT1pLmxlbmd0aDtzPHk7KXt2YXIgYj0tMTtzd2l0Y2goZil7Y2FzZSAwOjU4PT09KGI9aVtzKytdKT9mPTE6YT1hPDw0fCg5NjxiP2ItODc6Yi00OCk7Y29udGludWU7Y2FzZSAxOjg0PT09KGY9aVtzXSl8fDY1PT09Znx8Nzk9PT1mfHwxMTE9PT1mfHw4NT09PWZ8fDgzPT09Znx8MTE1PT09Znx8NzY9PT1mfHwxMDg9PT1mfHw3MT09PWZ8fDEwMz09PWZ8fDc3PT09Znx8MTA5PT09Znx8ODY9PT1mPyhkPWYsZj0yLHMrKyk6NjQ8ZiYmOTE+Znx8MzU9PT1mfHwxMTQ9PT1mfHwxMjA9PT1mPyhkPWYsZj0zLHMrKyk6KGQ9MCxmPTMpO2NvbnRpbnVlO2Nhc2UgMjo0ND09PShiPWlbcysrXSk/Zj00Omg9aDw8NHwoOTY8Yj9iLTg3OmItNDgpO2NvbnRpbnVlO2Nhc2UgMzpiPWkuaW5kZXhPZigxMCxzKTticmVhaztjYXNlIDQ6KGI9cytoKT5pLmxlbmd0aCYmKGI9LTEpfXZhciB2PWkuYnl0ZU9mZnNldCtzO2lmKC0xPGIpKGZ1bmN0aW9uKGUsdCxyLG4sbyl7c3dpdGNoKHIpe2Nhc2UgNjU6WihlLHQsZW8obixvKS5idWZmZXIpO3JldHVybjtjYXNlIDc5OmVsKGUsdCxuLG8sSW50OEFycmF5LDEpO3JldHVybjtjYXNlIDExMTpaKGUsdCwwPT09bi5sZW5ndGg/bzplbyhuLG8pKTtyZXR1cm47Y2FzZSA4NTplbChlLHQsbixvLFVpbnQ4Q2xhbXBlZEFycmF5LDEpO3JldHVybjtjYXNlIDgzOmVsKGUsdCxuLG8sSW50MTZBcnJheSwyKTtyZXR1cm47Y2FzZSAxMTU6ZWwoZSx0LG4sbyxVaW50MTZBcnJheSwyKTtyZXR1cm47Y2FzZSA3NjplbChlLHQsbixvLEludDMyQXJyYXksNCk7cmV0dXJuO2Nhc2UgMTA4OmVsKGUsdCxuLG8sVWludDMyQXJyYXksNCk7cmV0dXJuO2Nhc2UgNzE6ZWwoZSx0LG4sbyxGbG9hdDMyQXJyYXksNCk7cmV0dXJuO2Nhc2UgMTAzOmVsKGUsdCxuLG8sRmxvYXQ2NEFycmF5LDgpO3JldHVybjtjYXNlIDc3OmVsKGUsdCxuLG8sQmlnSW50NjRBcnJheSw4KTtyZXR1cm47Y2FzZSAxMDk6ZWwoZSx0LG4sbyxCaWdVaW50NjRBcnJheSw4KTtyZXR1cm47Y2FzZSA4NjplbChlLHQsbixvLERhdGFWaWV3LDEpO3JldHVybn1mb3IodmFyIGw9ZS5fc3RyaW5nRGVjb2RlcixhPSIiLGk9MDtpPG4ubGVuZ3RoO2krKylhKz1sLmRlY29kZShuW2ldLHUpO3N3aXRjaChuPWErPWwuZGVjb2RlKG8pLHIpe2Nhc2UgNzM6dmFyIHM9ZSxmPXQsZD1uLGg9cy5fY2h1bmtzLF89aC5nZXQoZik7ZD1KU09OLnBhcnNlKGQscy5fZnJvbUpTT04pO3ZhciB5PWZ1bmN0aW9uKGUsdCl7aWYoZSl7dmFyIHI9ZVt0WzBdXTtpZihlPXImJnJbdFsyXV0pcj1lLm5hbWU7ZWxzZXtpZighKGU9ciYmclsiKiJdKSl0aHJvdyBFcnJvcignQ291bGQgbm90IGZpbmQgdGhlIG1vZHVsZSAiJyt0WzBdKyciIGluIHRoZSBSZWFjdCBTZXJ2ZXIgQ29uc3VtZXIgTWFuaWZlc3QuIFRoaXMgaXMgcHJvYmFibHkgYSBidWcgaW4gdGhlIFJlYWN0IFNlcnZlciBDb21wb25lbnRzIGJ1bmRsZXIuJyk7cj10WzJdfXJldHVybiA0PT09dC5sZW5ndGg/W2UuaWQsZS5jaHVua3MsciwxXTpbZS5pZCxlLmNodW5rcyxyXX1yZXR1cm4gdH0ocy5fYnVuZGxlckNvbmZpZyxkKTtpZihkPWMoeSkpe2lmKF8pe3ZhciBiPV87Yi5zdGF0dXM9ImJsb2NrZWQifWVsc2UgYj1uZXcgTygiYmxvY2tlZCIsbnVsbCxudWxsKSxoLnNldChmLGIpO2QudGhlbihmdW5jdGlvbigpe3JldHVybiBOKHMsYix5KX0sZnVuY3Rpb24oZSl7cmV0dXJuIHcocyxiLGUpfSl9ZWxzZSBfP04ocyxfLHkpOmguc2V0KGYsbmV3IE8oInJlc29sdmVkX21vZHVsZSIseSxudWxsKSk7YnJlYWs7Y2FzZSA3Mjpzd2l0Y2godD1uWzBdLGU9SlNPTi5wYXJzZShuPW4uc2xpY2UoMSksZS5fZnJvbUpTT04pLG49cC5kLHQpe2Nhc2UiRCI6bi5EKGUpO2JyZWFrO2Nhc2UiQyI6InN0cmluZyI9PXR5cGVvZiBlP24uQyhlKTpuLkMoZVswXSxlWzFdKTticmVhaztjYXNlIkwiOnQ9ZVswXSxyPWVbMV0sMz09PWUubGVuZ3RoP24uTCh0LHIsZVsyXSk6bi5MKHQscik7YnJlYWs7Y2FzZSJtIjoic3RyaW5nIj09dHlwZW9mIGU/bi5tKGUpOm4ubShlWzBdLGVbMV0pO2JyZWFrO2Nhc2UiWCI6InN0cmluZyI9PXR5cGVvZiBlP24uWChlKTpuLlgoZVswXSxlWzFdKTticmVhaztjYXNlIlMiOiJzdHJpbmciPT10eXBlb2YgZT9uLlMoZSk6bi5TKGVbMF0sMD09PWVbMV0/dm9pZCAwOmVbMV0sMz09PWUubGVuZ3RoP2VbMl06dm9pZCAwKTticmVhaztjYXNlIk0iOiJzdHJpbmciPT10eXBlb2YgZT9uLk0oZSk6bi5NKGVbMF0sZVsxXSl9YnJlYWs7Y2FzZSA2OTpvPShyPWUuX2NodW5rcykuZ2V0KHQpLG49SlNPTi5wYXJzZShuKSwobD1ldSgpKS5kaWdlc3Q9bi5kaWdlc3Qsbz93KGUsbyxsKTpyLnNldCh0LG5ldyBPKCJyZWplY3RlZCIsbnVsbCxsKSk7YnJlYWs7Y2FzZSA4NDoocj0oZT1lLl9jaHVua3MpLmdldCh0KSkmJiJwZW5kaW5nIiE9PXIuc3RhdHVzP3IucmVhc29uLmVucXVldWVWYWx1ZShuKTplLnNldCh0LG5ldyBPKCJmdWxmaWxsZWQiLG4sbnVsbCkpO2JyZWFrO2Nhc2UgNzg6Y2FzZSA2ODpjYXNlIDc0OmNhc2UgODc6dGhyb3cgRXJyb3IoIkZhaWxlZCB0byByZWFkIGEgUlNDIHBheWxvYWQgY3JlYXRlZCBieSBhIGRldmVsb3BtZW50IHZlcnNpb24gb2YgUmVhY3Qgb24gdGhlIHNlcnZlciB3aGlsZSB1c2luZyBhIHByb2R1Y3Rpb24gdmVyc2lvbiBvbiB0aGUgY2xpZW50LiBBbHdheXMgdXNlIG1hdGNoaW5nIHZlcnNpb25zIG9uIHRoZSBzZXJ2ZXIgYW5kIHRoZSBjbGllbnQuIik7Y2FzZSA4MjpldChlLHQsdm9pZCAwKTticmVhaztjYXNlIDExNDpldChlLHQsImJ5dGVzIik7YnJlYWs7Y2FzZSA4ODplbihlLHQsITEpO2JyZWFrO2Nhc2UgMTIwOmVuKGUsdCwhMCk7YnJlYWs7Y2FzZSA2NzooZT1lLl9jaHVua3MuZ2V0KHQpKSYmImZ1bGZpbGxlZCI9PT1lLnN0YXR1cyYmZS5yZWFzb24uY2xvc2UoIiI9PT1uPyciJHVuZGVmaW5lZCInOm4pO2JyZWFrO2RlZmF1bHQ6KG89KHI9ZS5fY2h1bmtzKS5nZXQodCkpP3goZSxvLG4pOnIuc2V0KHQsbmV3IE8oInJlc29sdmVkX21vZGVsIixuLGUpKX19KShlLGEsZCxfLGg9bmV3IFVpbnQ4QXJyYXkoaS5idWZmZXIsdixiLXMpKSxzPWIsMz09PWYmJnMrKyxoPWE9ZD1mPTAsXy5sZW5ndGg9MDtlbHNle2k9bmV3IFVpbnQ4QXJyYXkoaS5idWZmZXIsdixpLmJ5dGVMZW5ndGgtcyksXy5wdXNoKGkpLGgtPWkuYnl0ZUxlbmd0aDticmVha319cmV0dXJuIG8uX3Jvd1N0YXRlPWYsby5fcm93SUQ9YSxvLl9yb3dUYWc9ZCxvLl9yb3dMZW5ndGg9aCxsLnJlYWQoKS50aGVuKHQpLmNhdGNoKG4pfX0pLmNhdGNoKG4pfXQuY3JlYXRlRnJvbUZldGNoPWZ1bmN0aW9uKGUsdCl7dmFyIHI9ZWEodCk7cmV0dXJuIGUudGhlbihmdW5jdGlvbihlKXtlaShyLGUuYm9keSwhMSl9LGZ1bmN0aW9uKGUpe0kocixlKX0pLEYociwwKX0sdC5jcmVhdGVGcm9tUmVhZGFibGVTdHJlYW09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZWkodD1lYSh0KSxlLCExKSxGKHQsMCl9LHQuY3JlYXRlU2VydmVyUmVmZXJlbmNlPWZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gcigpe3ZhciByPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7cmV0dXJuIHQoZSxyKX1yZXR1cm4gRShyLGUsbnVsbCkscn0sdC5jcmVhdGVUZW1wb3JhcnlSZWZlcmVuY2VTZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IE1hcH0sdC5lbmNvZGVSZXBseT1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyLG4pe3ZhciB1PWZ1bmN0aW9uKGUsdCxyLG4sdSl7ZnVuY3Rpb24gbyhlLHQpe3Q9bmV3IEJsb2IoW25ldyBVaW50OEFycmF5KHQuYnVmZmVyLHQuYnl0ZU9mZnNldCx0LmJ5dGVMZW5ndGgpXSk7dmFyIHI9aSsrO3JldHVybiBudWxsPT09cyYmKHM9bmV3IEZvcm1EYXRhKSxzLmFwcGVuZCgiIityLHQpLCIkIitlK3IudG9TdHJpbmcoMTYpfWZ1bmN0aW9uIGwoZSxwKXtpZihudWxsPT09cClyZXR1cm4gbnVsbDtpZigib2JqZWN0Ij09dHlwZW9mIHApe3N3aXRjaChwLiQkdHlwZW9mKXtjYXNlIGg6aWYodm9pZCAwIT09ciYmLTE9PT1lLmluZGV4T2YoIjoiKSl7dmFyIEUsTyxQLGosVCxTPWYuZ2V0KHRoaXMpO2lmKHZvaWQgMCE9PVMpcmV0dXJuIHIuc2V0KFMrIjoiK2UscCksIiRUIn10aHJvdyBFcnJvcigiUmVhY3QgRWxlbWVudCBjYW5ub3QgYmUgcGFzc2VkIHRvIFNlcnZlciBGdW5jdGlvbnMgZnJvbSB0aGUgQ2xpZW50IHdpdGhvdXQgYSB0ZW1wb3JhcnkgcmVmZXJlbmNlIHNldC4gUGFzcyBhIFRlbXBvcmFyeVJlZmVyZW5jZVNldCB0byB0aGUgb3B0aW9ucy4iKTtjYXNlIF86Uz1wLl9wYXlsb2FkO3ZhciBNPXAuX2luaXQ7bnVsbD09PXMmJihzPW5ldyBGb3JtRGF0YSksYysrO3RyeXt2YXIgdz1NKFMpLEE9aSsrLEM9YSh3LEEpO3JldHVybiBzLmFwcGVuZCgiIitBLEMpLCIkIitBLnRvU3RyaW5nKDE2KX1jYXRjaChlKXtpZigib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lJiYiZnVuY3Rpb24iPT10eXBlb2YgZS50aGVuKXtjKys7dmFyIHg9aSsrO3JldHVybiBTPWZ1bmN0aW9uKCl7dHJ5e3ZhciBlPWEocCx4KSxyPXM7ci5hcHBlbmQodCt4LGUpLGMtLSwwPT09YyYmbihyKX1jYXRjaChlKXt1KGUpfX0sZS50aGVuKFMsUyksIiQiK3gudG9TdHJpbmcoMTYpfXJldHVybiB1KGUpLG51bGx9ZmluYWxseXtjLS19fWlmKFM9Zi5nZXQocCksImZ1bmN0aW9uIj09dHlwZW9mIHAudGhlbil7aWYodm9pZCAwIT09UylpZihkIT09cClyZXR1cm4gUztlbHNlIGQ9bnVsbDtudWxsPT09cyYmKHM9bmV3IEZvcm1EYXRhKSxjKys7dmFyIE49aSsrO3JldHVybiBlPSIkQCIrTi50b1N0cmluZygxNiksZi5zZXQocCxlKSxwLnRoZW4oZnVuY3Rpb24oZSl7dHJ5e3ZhciByPWYuZ2V0KGUpLG89dm9pZCAwIT09cj9KU09OLnN0cmluZ2lmeShyKTphKGUsTik7KGU9cykuYXBwZW5kKHQrTixvKSxjLS0sMD09PWMmJm4oZSl9Y2F0Y2goZSl7dShlKX19LHUpLGV9aWYodm9pZCAwIT09UylpZihkIT09cClyZXR1cm4gUztlbHNlIGQ9bnVsbDtlbHNlIC0xPT09ZS5pbmRleE9mKCI6IikmJnZvaWQgMCE9PShTPWYuZ2V0KHRoaXMpKSYmKGU9UysiOiIrZSxmLnNldChwLGUpLHZvaWQgMCE9PXImJnIuc2V0KGUscCkpO2lmKHYocCkpcmV0dXJuIHA7aWYocCBpbnN0YW5jZW9mIEZvcm1EYXRhKXtudWxsPT09cyYmKHM9bmV3IEZvcm1EYXRhKTt2YXIgVT1zLEQ9dCsiXyIrKGU9aSsrKSsiXyI7cmV0dXJuIHAuZm9yRWFjaChmdW5jdGlvbihlLHQpe1UuYXBwZW5kKEQrdCxlKX0pLCIkSyIrZS50b1N0cmluZygxNil9aWYocCBpbnN0YW5jZW9mIE1hcClyZXR1cm4gZT1pKyssUz1hKEFycmF5LmZyb20ocCksZSksbnVsbD09PXMmJihzPW5ldyBGb3JtRGF0YSkscy5hcHBlbmQodCtlLFMpLCIkUSIrZS50b1N0cmluZygxNik7aWYocCBpbnN0YW5jZW9mIFNldClyZXR1cm4gZT1pKyssUz1hKEFycmF5LmZyb20ocCksZSksbnVsbD09PXMmJihzPW5ldyBGb3JtRGF0YSkscy5hcHBlbmQodCtlLFMpLCIkVyIrZS50b1N0cmluZygxNik7aWYocCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKXJldHVybiBlPW5ldyBCbG9iKFtwXSksUz1pKyssbnVsbD09PXMmJihzPW5ldyBGb3JtRGF0YSkscy5hcHBlbmQodCtTLGUpLCIkQSIrUy50b1N0cmluZygxNik7aWYocCBpbnN0YW5jZW9mIEludDhBcnJheSlyZXR1cm4gbygiTyIscCk7aWYocCBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpcmV0dXJuIG8oIm8iLHApO2lmKHAgaW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheSlyZXR1cm4gbygiVSIscCk7aWYocCBpbnN0YW5jZW9mIEludDE2QXJyYXkpcmV0dXJuIG8oIlMiLHApO2lmKHAgaW5zdGFuY2VvZiBVaW50MTZBcnJheSlyZXR1cm4gbygicyIscCk7aWYocCBpbnN0YW5jZW9mIEludDMyQXJyYXkpcmV0dXJuIG8oIkwiLHApO2lmKHAgaW5zdGFuY2VvZiBVaW50MzJBcnJheSlyZXR1cm4gbygibCIscCk7aWYocCBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSlyZXR1cm4gbygiRyIscCk7aWYocCBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheSlyZXR1cm4gbygiZyIscCk7aWYocCBpbnN0YW5jZW9mIEJpZ0ludDY0QXJyYXkpcmV0dXJuIG8oIk0iLHApO2lmKHAgaW5zdGFuY2VvZiBCaWdVaW50NjRBcnJheSlyZXR1cm4gbygibSIscCk7aWYocCBpbnN0YW5jZW9mIERhdGFWaWV3KXJldHVybiBvKCJWIixwKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgQmxvYiYmcCBpbnN0YW5jZW9mIEJsb2IpcmV0dXJuIG51bGw9PT1zJiYocz1uZXcgRm9ybURhdGEpLGU9aSsrLHMuYXBwZW5kKHQrZSxwKSwiJEIiK2UudG9TdHJpbmcoMTYpO2lmKGU9bnVsbD09PShFPXApfHwib2JqZWN0IiE9dHlwZW9mIEU/bnVsbDoiZnVuY3Rpb24iPT10eXBlb2YoRT15JiZFW3ldfHxFWyJAQGl0ZXJhdG9yIl0pP0U6bnVsbClyZXR1cm4oUz1lLmNhbGwocCkpPT09cD8oZT1pKyssUz1hKEFycmF5LmZyb20oUyksZSksbnVsbD09PXMmJihzPW5ldyBGb3JtRGF0YSkscy5hcHBlbmQodCtlLFMpLCIkaSIrZS50b1N0cmluZygxNikpOkFycmF5LmZyb20oUyk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIFJlYWRhYmxlU3RyZWFtJiZwIGluc3RhbmNlb2YgUmVhZGFibGVTdHJlYW0pcmV0dXJuIGZ1bmN0aW9uKGUpe3RyeXt2YXIgcixvLGEsZixkLHAsaCxfPWUuZ2V0UmVhZGVyKHttb2RlOiJieW9iIn0pfWNhdGNoKGYpe3JldHVybiByPWUuZ2V0UmVhZGVyKCksbnVsbD09PXMmJihzPW5ldyBGb3JtRGF0YSksbz1zLGMrKyxhPWkrKyxyLnJlYWQoKS50aGVuKGZ1bmN0aW9uIGUoaSl7aWYoaS5kb25lKW8uYXBwZW5kKHQrYSwiQyIpLDA9PS0tYyYmbihvKTtlbHNlIHRyeXt2YXIgcz1KU09OLnN0cmluZ2lmeShpLnZhbHVlLGwpO28uYXBwZW5kKHQrYSxzKSxyLnJlYWQoKS50aGVuKGUsdSl9Y2F0Y2goZSl7dShlKX19LHUpLCIkUiIrYS50b1N0cmluZygxNil9cmV0dXJuIGY9XyxudWxsPT09cyYmKHM9bmV3IEZvcm1EYXRhKSxkPXMsYysrLHA9aSsrLGg9W10sZi5yZWFkKG5ldyBVaW50OEFycmF5KDEwMjQpKS50aGVuKGZ1bmN0aW9uIGUocil7ci5kb25lPyhyPWkrKyxkLmFwcGVuZCh0K3IsbmV3IEJsb2IoaCkpLGQuYXBwZW5kKHQrcCwnIiRvJytyLnRvU3RyaW5nKDE2KSsnIicpLGQuYXBwZW5kKHQrcCwiQyIpLDA9PS0tYyYmbihkKSk6KGgucHVzaChyLnZhbHVlKSxmLnJlYWQobmV3IFVpbnQ4QXJyYXkoMTAyNCkpLnRoZW4oZSx1KSl9LHUpLCIkciIrcC50b1N0cmluZygxNil9KHApO2lmKCJmdW5jdGlvbiI9PXR5cGVvZihlPXBbYl0pKXJldHVybiBPPXAsUD1lLmNhbGwocCksbnVsbD09PXMmJihzPW5ldyBGb3JtRGF0YSksaj1zLGMrKyxUPWkrKyxPPU89PT1QLFAubmV4dCgpLnRoZW4oZnVuY3Rpb24gZShyKXtpZihyLmRvbmUpe2lmKHZvaWQgMD09PXIudmFsdWUpai5hcHBlbmQodCtULCJDIik7ZWxzZSB0cnl7dmFyIG89SlNPTi5zdHJpbmdpZnkoci52YWx1ZSxsKTtqLmFwcGVuZCh0K1QsIkMiK28pfWNhdGNoKGUpe3UoZSk7cmV0dXJufTA9PS0tYyYmbihqKX1lbHNlIHRyeXt2YXIgYT1KU09OLnN0cmluZ2lmeShyLnZhbHVlLGwpO2ouYXBwZW5kKHQrVCxhKSxQLm5leHQoKS50aGVuKGUsdSl9Y2F0Y2goZSl7dShlKX19LHUpLCIkIisoTz8ieCI6IlgiKStULnRvU3RyaW5nKDE2KTtpZigoZT1nKHApKSE9PW0mJihudWxsPT09ZXx8bnVsbCE9PWcoZSkpKXtpZih2b2lkIDA9PT1yKXRocm93IEVycm9yKCJPbmx5IHBsYWluIG9iamVjdHMsIGFuZCBhIGZldyBidWlsdC1pbnMsIGNhbiBiZSBwYXNzZWQgdG8gU2VydmVyIEZ1bmN0aW9ucy4gQ2xhc3NlcyBvciBudWxsIHByb3RvdHlwZXMgYXJlIG5vdCBzdXBwb3J0ZWQuIik7cmV0dXJuIiRUIn1yZXR1cm4gcH1pZigic3RyaW5nIj09dHlwZW9mIHApcmV0dXJuIloiPT09cFtwLmxlbmd0aC0xXSYmdGhpc1tlXWluc3RhbmNlb2YgRGF0ZT8iJEQiK3A6ZT0iJCI9PT1wWzBdPyIkIitwOnA7aWYoImJvb2xlYW4iPT10eXBlb2YgcClyZXR1cm4gcDtpZigibnVtYmVyIj09dHlwZW9mIHApcmV0dXJuIE51bWJlci5pc0Zpbml0ZShwKT8wPT09cCYmLTEvMD09MS9wPyIkLTAiOnA6MS8wPT09cD8iJEluZmluaXR5IjotMS8wPT09cD8iJC1JbmZpbml0eSI6IiROYU4iO2lmKHZvaWQgMD09PXApcmV0dXJuIiR1bmRlZmluZWQiO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBwKXtpZih2b2lkIDAhPT0oUz1SLmdldChwKSkpcmV0dXJuIHZvaWQgMCE9PShlPWYuZ2V0KHApKXx8KGU9SlNPTi5zdHJpbmdpZnkoe2lkOlMuaWQsYm91bmQ6Uy5ib3VuZH0sbCksbnVsbD09PXMmJihzPW5ldyBGb3JtRGF0YSksUz1pKysscy5zZXQodCtTLGUpLGU9IiRoIitTLnRvU3RyaW5nKDE2KSxmLnNldChwLGUpKSxlO2lmKHZvaWQgMCE9PXImJi0xPT09ZS5pbmRleE9mKCI6IikmJnZvaWQgMCE9PShTPWYuZ2V0KHRoaXMpKSlyZXR1cm4gci5zZXQoUysiOiIrZSxwKSwiJFQiO3Rocm93IEVycm9yKCJDbGllbnQgRnVuY3Rpb25zIGNhbm5vdCBiZSBwYXNzZWQgZGlyZWN0bHkgdG8gU2VydmVyIEZ1bmN0aW9ucy4gT25seSBGdW5jdGlvbnMgcGFzc2VkIGZyb20gdGhlIFNlcnZlciBjYW4gYmUgcGFzc2VkIGJhY2sgYWdhaW4uIil9aWYoInN5bWJvbCI9PXR5cGVvZiBwKXtpZih2b2lkIDAhPT1yJiYtMT09PWUuaW5kZXhPZigiOiIpJiZ2b2lkIDAhPT0oUz1mLmdldCh0aGlzKSkpcmV0dXJuIHIuc2V0KFMrIjoiK2UscCksIiRUIjt0aHJvdyBFcnJvcigiU3ltYm9scyBjYW5ub3QgYmUgcGFzc2VkIHRvIGEgU2VydmVyIEZ1bmN0aW9uIHdpdGhvdXQgYSB0ZW1wb3JhcnkgcmVmZXJlbmNlIHNldC4gUGFzcyBhIFRlbXBvcmFyeVJlZmVyZW5jZVNldCB0byB0aGUgb3B0aW9ucy4iKX1pZigiYmlnaW50Ij09dHlwZW9mIHApcmV0dXJuIiRuIitwLnRvU3RyaW5nKDEwKTt0aHJvdyBFcnJvcigiVHlwZSAiK3R5cGVvZiBwKyIgaXMgbm90IHN1cHBvcnRlZCBhcyBhbiBhcmd1bWVudCB0byBhIFNlcnZlciBGdW5jdGlvbi4iKX1mdW5jdGlvbiBhKGUsdCl7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT09ZSYmKHQ9IiQiK3QudG9TdHJpbmcoMTYpLGYuc2V0KGUsdCksdm9pZCAwIT09ciYmci5zZXQodCxlKSksZD1lLEpTT04uc3RyaW5naWZ5KGUsbCl9dmFyIGk9MSxjPTAscz1udWxsLGY9bmV3IFdlYWtNYXAsZD1lLHA9YShlLDApO3JldHVybiBudWxsPT09cz9uKHApOihzLnNldCh0KyIwIixwKSwwPT09YyYmbihzKSksZnVuY3Rpb24oKXswPGMmJihjPTAsbnVsbD09PXM/bihwKTpuKHMpKX19KGUsIiIsdCYmdC50ZW1wb3JhcnlSZWZlcmVuY2VzP3QudGVtcG9yYXJ5UmVmZXJlbmNlczp2b2lkIDAscixuKTtpZih0JiZ0LnNpZ25hbCl7dmFyIG89dC5zaWduYWw7aWYoby5hYm9ydGVkKXUoby5yZWFzb24pO2Vsc2V7dmFyIGw9ZnVuY3Rpb24oKXt1KG8ucmVhc29uKSxvLnJlbW92ZUV2ZW50TGlzdGVuZXIoImFib3J0IixsKX07by5hZGRFdmVudExpc3RlbmVyKCJhYm9ydCIsbCl9fX0pfSx0LnJlZ2lzdGVyU2VydmVyUmVmZXJlbmNlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIEUoZSx0LG51bGwpLGV9fSw5MTkwOihlLHQscik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJjcmVhdGVSb3V0ZXJDYWNoZUtleSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHV9fSk7bGV0IG49cig1MzYwKTtmdW5jdGlvbiB1KGUsdCl7cmV0dXJuKHZvaWQgMD09PXQmJih0PSExKSxBcnJheS5pc0FycmF5KGUpKT9lWzBdKyJ8IitlWzFdKyJ8IitlWzJdOnQmJmUuc3RhcnRzV2l0aChuLlBBR0VfU0VHTUVOVF9LRVkpP24uUEFHRV9TRUdNRU5UX0tFWTplfSgiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDk0MTc6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBXZWFrTWFwKXJldHVybiBudWxsO3ZhciB0PW5ldyBXZWFrTWFwLHI9bmV3IFdlYWtNYXA7cmV0dXJuKG49ZnVuY3Rpb24oZSl7cmV0dXJuIGU/cjp0fSkoZSl9ZnVuY3Rpb24gdShlLHQpe2lmKCF0JiZlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7aWYobnVsbD09PWV8fCJvYmplY3QiIT10eXBlb2YgZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGUpcmV0dXJue2RlZmF1bHQ6ZX07dmFyIHI9bih0KTtpZihyJiZyLmhhcyhlKSlyZXR1cm4gci5nZXQoZSk7dmFyIHU9e19fcHJvdG9fXzpudWxsfSxvPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSYmT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtmb3IodmFyIGwgaW4gZSlpZigiZGVmYXVsdCIhPT1sJiZPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxsKSl7dmFyIGE9bz9PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUsbCk6bnVsbDthJiYoYS5nZXR8fGEuc2V0KT9PYmplY3QuZGVmaW5lUHJvcGVydHkodSxsLGEpOnVbbF09ZVtsXX1yZXR1cm4gdS5kZWZhdWx0PWUsciYmci5zZXQoZSx1KSx1fXIucih0KSxyLmQodCx7XzooKT0+dX0pfSw5NDczOihlLHQscik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLCFmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIse2VudW1lcmFibGU6ITAsZ2V0OnRbcl19KX0odCx7YWRkU2VhcmNoUGFyYW1zVG9QYWdlU2VnbWVudHM6ZnVuY3Rpb24oKXtyZXR1cm4gZH0saGFuZGxlQWxpYXNlZFByZWZldGNoRW50cnk6ZnVuY3Rpb24oKXtyZXR1cm4gZn19KTtsZXQgbj1yKDUzNjApLHU9cig3Mjk3KSxvPXIoODk1KSxsPXIoOTY1OCksYT1yKDkxOTApLGk9cig1NDMpLGM9cigxMTI2KSxzPXIoNTczNyk7ZnVuY3Rpb24gZihlLHQscixmLHApe2xldCBoLF89dC50cmVlLHk9dC5jYWNoZSxiPSgwLGwuY3JlYXRlSHJlZkZyb21VcmwpKGYpLHY9W107aWYoInN0cmluZyI9PXR5cGVvZiByKXJldHVybiExO2ZvcihsZXQgdCBvZiByKXtpZighZnVuY3Rpb24gZSh0KXtpZighdClyZXR1cm4hMTtsZXQgcj10WzJdO2lmKHRbM10pcmV0dXJuITA7Zm9yKGxldCB0IGluIHIpaWYoZShyW3RdKSlyZXR1cm4hMDtyZXR1cm4hMX0odC5zZWVkRGF0YSkpY29udGludWU7bGV0IHI9dC50cmVlO3I9ZChyLE9iamVjdC5mcm9tRW50cmllcyhmLnNlYXJjaFBhcmFtcykpO2xldHtzZWVkRGF0YTpsLGlzUm9vdFJlbmRlcjpjLHBhdGhUb1NlZ21lbnQ6cH09dCxnPVsiIiwuLi5wXTtyPWQocixPYmplY3QuZnJvbUVudHJpZXMoZi5zZWFyY2hQYXJhbXMpKTtsZXQgbT0oMCxvLmFwcGx5Um91dGVyU3RhdGVQYXRjaFRvVHJlZSkoZyxfLHIsYiksUj0oMCx1LmNyZWF0ZUVtcHR5Q2FjaGVOb2RlKSgpO2lmKGMmJmwpe2xldCB0PWxbMV07Ui5sb2FkaW5nPWxbM10sUi5yc2M9dCxmdW5jdGlvbiBlKHQscix1LG8sbCl7aWYoMCE9PU9iamVjdC5rZXlzKG9bMV0pLmxlbmd0aClmb3IobGV0IGkgaW4gb1sxXSl7bGV0IGMscz1vWzFdW2ldLGY9c1swXSxkPSgwLGEuY3JlYXRlUm91dGVyQ2FjaGVLZXkpKGYpLHA9bnVsbCE9PWwmJnZvaWQgMCE9PWxbMl1baV0/bFsyXVtpXTpudWxsO2lmKG51bGwhPT1wKXtsZXQgZT1wWzFdLHI9cFszXTtjPXtsYXp5RGF0YTpudWxsLHJzYzpmLmluY2x1ZGVzKG4uUEFHRV9TRUdNRU5UX0tFWSk/bnVsbDplLHByZWZldGNoUnNjOm51bGwsaGVhZDpudWxsLHByZWZldGNoSGVhZDpudWxsLHBhcmFsbGVsUm91dGVzOm5ldyBNYXAsbG9hZGluZzpyLG5hdmlnYXRlZEF0OnR9fWVsc2UgYz17bGF6eURhdGE6bnVsbCxyc2M6bnVsbCxwcmVmZXRjaFJzYzpudWxsLGhlYWQ6bnVsbCxwcmVmZXRjaEhlYWQ6bnVsbCxwYXJhbGxlbFJvdXRlczpuZXcgTWFwLGxvYWRpbmc6bnVsbCxuYXZpZ2F0ZWRBdDotMX07bGV0IGg9ci5wYXJhbGxlbFJvdXRlcy5nZXQoaSk7aD9oLnNldChkLGMpOnIucGFyYWxsZWxSb3V0ZXMuc2V0KGksbmV3IE1hcChbW2QsY11dKSksZSh0LGMsdSxzLHApfX0oZSxSLHkscixsKX1lbHNlIFIucnNjPXkucnNjLFIucHJlZmV0Y2hSc2M9eS5wcmVmZXRjaFJzYyxSLmxvYWRpbmc9eS5sb2FkaW5nLFIucGFyYWxsZWxSb3V0ZXM9bmV3IE1hcCh5LnBhcmFsbGVsUm91dGVzKSwoMCxpLmZpbGxDYWNoZVdpdGhOZXdTdWJUcmVlRGF0YUJ1dE9ubHlMb2FkaW5nKShlLFIseSx0KTtmb3IobGV0IGUgb2YobSYmKF89bSx5PVIsaD0hMCksKDAscy5nZW5lcmF0ZVNlZ21lbnRzRnJvbVBhdGNoKShyKSkpe2xldCByPVsuLi50LnBhdGhUb1NlZ21lbnQsLi4uZV07cltyLmxlbmd0aC0xXSE9PW4uREVGQVVMVF9TRUdNRU5UX0tFWSYmdi5wdXNoKHIpfX1yZXR1cm4hIWgmJihwLnBhdGNoZWRUcmVlPV8scC5jYWNoZT15LHAuY2Fub25pY2FsVXJsPWIscC5oYXNoRnJhZ21lbnQ9Zi5oYXNoLHAuc2Nyb2xsYWJsZVNlZ21lbnRzPXYsKDAsYy5oYW5kbGVNdXRhYmxlKSh0LHApKX1mdW5jdGlvbiBkKGUsdCl7bGV0W3IsdSwuLi5vXT1lO2lmKHIuaW5jbHVkZXMobi5QQUdFX1NFR01FTlRfS0VZKSlyZXR1cm5bKDAsbi5hZGRTZWFyY2hQYXJhbXNJZlBhZ2VTZWdtZW50KShyLHQpLHUsLi4ub107bGV0IGw9e307Zm9yKGxldFtlLHJdb2YgT2JqZWN0LmVudHJpZXModSkpbFtlXT1kKHIsdCk7cmV0dXJuW3IsbCwuLi5vXX0oImZ1bmN0aW9uIj09dHlwZW9mIHQuZGVmYXVsdHx8Im9iamVjdCI9PXR5cGVvZiB0LmRlZmF1bHQmJm51bGwhPT10LmRlZmF1bHQpJiZ2b2lkIDA9PT10LmRlZmF1bHQuX19lc01vZHVsZSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpLGUuZXhwb3J0cz10LmRlZmF1bHQpfSw5NjU4OihlLHQpPT57InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gdm9pZCAwPT09dCYmKHQ9ITApLGUucGF0aG5hbWUrZS5zZWFyY2grKHQ/ZS5oYXNoOiIiKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImNyZWF0ZUhyZWZGcm9tVXJsIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcn19KSwoImZ1bmN0aW9uIj09dHlwZW9mIHQuZGVmYXVsdHx8Im9iamVjdCI9PXR5cGVvZiB0LmRlZmF1bHQmJm51bGwhPT10LmRlZmF1bHQpJiZ2b2lkIDA9PT10LmRlZmF1bHQuX19lc01vZHVsZSYmKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LmRlZmF1bHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5hc3NpZ24odC5kZWZhdWx0LHQpLGUuZXhwb3J0cz10LmRlZmF1bHQpfSw5Njg0OihlLHQscik9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJ1c2VSb3V0ZXJCRkNhY2hlIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdX19KTtsZXQgbj1yKDIxMTUpO2Z1bmN0aW9uIHUoZSx0KXtsZXRbcix1XT0oMCxuLnVzZVN0YXRlKSgoKT0+KHt0cmVlOmUsc3RhdGVLZXk6dCxuZXh0Om51bGx9KSk7aWYoci50cmVlPT09ZSlyZXR1cm4gcjtsZXQgbz17dHJlZTplLHN0YXRlS2V5OnQsbmV4dDpudWxsfSxsPTEsYT1yLGk9bztmb3IoO251bGwhPT1hJiZsPDE7KXtpZihhLnN0YXRlS2V5PT09dCl7aS5uZXh0PWEubmV4dDticmVha317bCsrO2xldCBlPXt0cmVlOmEudHJlZSxzdGF0ZUtleTphLnN0YXRlS2V5LG5leHQ6bnVsbH07aS5uZXh0PWUsaT1lfWE9YS5uZXh0fXJldHVybiB1KG8pLG99KCJmdW5jdGlvbiI9PXR5cGVvZiB0LmRlZmF1bHR8fCJvYmplY3QiPT10eXBlb2YgdC5kZWZhdWx0JiZudWxsIT09dC5kZWZhdWx0KSYmdm9pZCAwPT09dC5kZWZhdWx0Ll9fZXNNb2R1bGUmJihPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KSxlLmV4cG9ydHM9dC5kZWZhdWx0KX0sOTc2NjooZSx0LHIpPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiZGVmYXVsdCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIE19fSk7bGV0IG49cig4MTQwKSx1PXIoOTQxNyksbz1yKDUxNTUpLGw9cig2ODcxKSxhPXUuXyhyKDIxMTUpKSxpPW4uXyhyKDc2NTApKSxjPXIoNjc1Mikscz1yKDI3NTMpLGY9cig4MzU5KSxkPXIoODc4NSkscD1yKDc0NjApLGg9cig0MTcwKSxfPXIoNTMxKSx5PXIoMzg4NiksYj1yKDkxOTApLHY9cig4OTE1KSxnPXIoNjI0OCksbT1yKDk2ODQpO3IoNDA2MSk7bGV0IFI9aS5kZWZhdWx0Ll9fRE9NX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1dBUk5fVVNFUlNfVEhFWV9DQU5OT1RfVVBHUkFERSxFPVsiYm90dG9tIiwiaGVpZ2h0IiwibGVmdCIsInJpZ2h0IiwidG9wIiwid2lkdGgiLCJ4IiwieSJdO2Z1bmN0aW9uIE8oZSx0KXtsZXQgcj1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiByLnRvcD49MCYmci50b3A8PXR9Y2xhc3MgUCBleHRlbmRzIGEuZGVmYXVsdC5Db21wb25lbnR7Y29tcG9uZW50RGlkTW91bnQoKXt0aGlzLmhhbmRsZVBvdGVudGlhbFNjcm9sbCgpfWNvbXBvbmVudERpZFVwZGF0ZSgpe3RoaXMucHJvcHMuZm9jdXNBbmRTY3JvbGxSZWYuYXBwbHkmJnRoaXMuaGFuZGxlUG90ZW50aWFsU2Nyb2xsKCl9cmVuZGVyKCl7cmV0dXJuIHRoaXMucHJvcHMuY2hpbGRyZW59Y29uc3RydWN0b3IoLi4uZSl7c3VwZXIoLi4uZSksdGhpcy5oYW5kbGVQb3RlbnRpYWxTY3JvbGw9KCk9PntsZXR7Zm9jdXNBbmRTY3JvbGxSZWY6ZSxzZWdtZW50UGF0aDp0fT10aGlzLnByb3BzO2lmKGUuYXBwbHkpe2lmKDAhPT1lLnNlZ21lbnRQYXRocy5sZW5ndGgmJiFlLnNlZ21lbnRQYXRocy5zb21lKGU9PnQuZXZlcnkoKHQscik9PigwLHAubWF0Y2hTZWdtZW50KSh0LGVbcl0pKSkpcmV0dXJuO2xldCByPW51bGwsbj1lLmhhc2hGcmFnbWVudDtpZihuJiYocj1mdW5jdGlvbihlKXt2YXIgdDtyZXR1cm4idG9wIj09PWU/ZG9jdW1lbnQuYm9keTpudWxsIT0odD1kb2N1bWVudC5nZXRFbGVtZW50QnlJZChlKSk/dDpkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZShlKVswXX0obikpLHJ8fChyPSgwLFIuZmluZERPTU5vZGUpKHRoaXMpKSwhKHIgaW5zdGFuY2VvZiBFbGVtZW50KSlyZXR1cm47Zm9yKDshKHIgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCl8fGZ1bmN0aW9uKGUpe2lmKFsic3RpY2t5IiwiZml4ZWQiXS5pbmNsdWRlcyhnZXRDb21wdXRlZFN0eWxlKGUpLnBvc2l0aW9uKSlyZXR1cm4hMDtsZXQgdD1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybiBFLmV2ZXJ5KGU9PjA9PT10W2VdKX0ocik7KXtpZihudWxsPT09ci5uZXh0RWxlbWVudFNpYmxpbmcpcmV0dXJuO3I9ci5uZXh0RWxlbWVudFNpYmxpbmd9ZS5hcHBseT0hMSxlLmhhc2hGcmFnbWVudD1udWxsLGUuc2VnbWVudFBhdGhzPVtdLCgwLGguZGlzYWJsZVNtb290aFNjcm9sbER1cmluZ1JvdXRlVHJhbnNpdGlvbikoKCk9PntpZihuKXJldHVybiB2b2lkIHIuc2Nyb2xsSW50b1ZpZXcoKTtsZXQgZT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsdD1lLmNsaWVudEhlaWdodDshTyhyLHQpJiYoZS5zY3JvbGxUb3A9MCxPKHIsdCl8fHIuc2Nyb2xsSW50b1ZpZXcoKSl9LHtkb250Rm9yY2VMYXlvdXQ6ITAsb25seUhhc2hDaGFuZ2U6ZS5vbmx5SGFzaENoYW5nZX0pLGUub25seUhhc2hDaGFuZ2U9ITEsci5mb2N1cygpfX19fWZ1bmN0aW9uIGooZSl7bGV0e3NlZ21lbnRQYXRoOnQsY2hpbGRyZW46cn09ZSxuPSgwLGEudXNlQ29udGV4dCkoYy5HbG9iYWxMYXlvdXRSb3V0ZXJDb250ZXh0KTtpZighbil0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkoRXJyb3IoImludmFyaWFudCBnbG9iYWwgbGF5b3V0IHJvdXRlciBub3QgbW91bnRlZCIpLCJfX05FWFRfRVJST1JfQ09ERSIse3ZhbHVlOiJFNDczIixlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pO3JldHVybigwLG8uanN4KShQLHtzZWdtZW50UGF0aDp0LGZvY3VzQW5kU2Nyb2xsUmVmOm4uZm9jdXNBbmRTY3JvbGxSZWYsY2hpbGRyZW46cn0pfWZ1bmN0aW9uIFQoZSl7bGV0e3RyZWU6dCxzZWdtZW50UGF0aDpyLGNhY2hlTm9kZTpuLHVybDp1fT1lLGk9KDAsYS51c2VDb250ZXh0KShjLkdsb2JhbExheW91dFJvdXRlckNvbnRleHQpO2lmKCFpKXRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFcnJvcigiaW52YXJpYW50IGdsb2JhbCBsYXlvdXQgcm91dGVyIG5vdCBtb3VudGVkIiksIl9fTkVYVF9FUlJPUl9DT0RFIix7dmFsdWU6IkU0NzMiLGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSk7bGV0e3RyZWU6ZH09aSxoPW51bGwhPT1uLnByZWZldGNoUnNjP24ucHJlZmV0Y2hSc2M6bi5yc2MsXz0oMCxhLnVzZURlZmVycmVkVmFsdWUpKG4ucnNjLGgpLHk9Im9iamVjdCI9PXR5cGVvZiBfJiZudWxsIT09XyYmImZ1bmN0aW9uIj09dHlwZW9mIF8udGhlbj8oMCxhLnVzZSkoXyk6XztpZigheSl7bGV0IGU9bi5sYXp5RGF0YTtpZihudWxsPT09ZSl7bGV0IHQ9ZnVuY3Rpb24gZSh0LHIpe2lmKHQpe2xldFtuLHVdPXQsbz0yPT09dC5sZW5ndGg7aWYoKDAscC5tYXRjaFNlZ21lbnQpKHJbMF0sbikmJnJbMV0uaGFzT3duUHJvcGVydHkodSkpe2lmKG8pe2xldCB0PWUodm9pZCAwLHJbMV1bdV0pO3JldHVybltyWzBdLHsuLi5yWzFdLFt1XTpbdFswXSx0WzFdLHRbMl0sInJlZmV0Y2giXX1dfXJldHVybltyWzBdLHsuLi5yWzFdLFt1XTplKHQuc2xpY2UoMiksclsxXVt1XSl9XX19cmV0dXJuIHJ9KFsiIiwuLi5yXSxkKSxvPSgwLHYuaGFzSW50ZXJjZXB0aW9uUm91dGVJbkN1cnJlbnRUcmVlKShkKSxjPURhdGUubm93KCk7bi5sYXp5RGF0YT1lPSgwLHMuZmV0Y2hTZXJ2ZXJSZXNwb25zZSkobmV3IFVSTCh1LGxvY2F0aW9uLm9yaWdpbikse2ZsaWdodFJvdXRlclN0YXRlOnQsbmV4dFVybDpvP2kubmV4dFVybDpudWxsfSkudGhlbihlPT4oKDAsYS5zdGFydFRyYW5zaXRpb24pKCgpPT57KDAsZy5kaXNwYXRjaEFwcFJvdXRlckFjdGlvbikoe3R5cGU6bC5BQ1RJT05fU0VSVkVSX1BBVENILHByZXZpb3VzVHJlZTpkLHNlcnZlclJlc3BvbnNlOmUsbmF2aWdhdGVkQXQ6Y30pfSksZSkpLCgwLGEudXNlKShlKX0oMCxhLnVzZSkoZi51bnJlc29sdmVkVGhlbmFibGUpfXJldHVybigwLG8uanN4KShjLkxheW91dFJvdXRlckNvbnRleHQuUHJvdmlkZXIse3ZhbHVlOntwYXJlbnRUcmVlOnQscGFyZW50Q2FjaGVOb2RlOm4scGFyZW50U2VnbWVudFBhdGg6cix1cmw6dX0sY2hpbGRyZW46eX0pfWZ1bmN0aW9uIFMoZSl7bGV0IHQse2xvYWRpbmc6cixjaGlsZHJlbjpufT1lO2lmKHQ9Im9iamVjdCI9PXR5cGVvZiByJiZudWxsIT09ciYmImZ1bmN0aW9uIj09dHlwZW9mIHIudGhlbj8oMCxhLnVzZSkocik6cil7bGV0IGU9dFswXSxyPXRbMV0sdT10WzJdO3JldHVybigwLG8uanN4KShhLlN1c3BlbnNlLHtmYWxsYmFjazooMCxvLmpzeHMpKG8uRnJhZ21lbnQse2NoaWxkcmVuOltyLHUsZV19KSxjaGlsZHJlbjpufSl9cmV0dXJuKDAsby5qc3gpKG8uRnJhZ21lbnQse2NoaWxkcmVuOm59KX1mdW5jdGlvbiBNKGUpe2xldHtwYXJhbGxlbFJvdXRlcktleTp0LGVycm9yOnIsZXJyb3JTdHlsZXM6bixlcnJvclNjcmlwdHM6dSx0ZW1wbGF0ZVN0eWxlczpsLHRlbXBsYXRlU2NyaXB0czppLHRlbXBsYXRlOnMsbm90Rm91bmQ6Zixmb3JiaWRkZW46cCx1bmF1dGhvcml6ZWQ6aCxzZWdtZW50Vmlld0JvdW5kYXJpZXM6dn09ZSxnPSgwLGEudXNlQ29udGV4dCkoYy5MYXlvdXRSb3V0ZXJDb250ZXh0KTtpZighZyl0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkoRXJyb3IoImludmFyaWFudCBleHBlY3RlZCBsYXlvdXQgcm91dGVyIHRvIGJlIG1vdW50ZWQiKSwiX19ORVhUX0VSUk9SX0NPREUiLHt2YWx1ZToiRTU2IixlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pO2xldHtwYXJlbnRUcmVlOlIscGFyZW50Q2FjaGVOb2RlOkUscGFyZW50U2VnbWVudFBhdGg6Tyx1cmw6UH09ZyxNPUUucGFyYWxsZWxSb3V0ZXMsdz1NLmdldCh0KTt3fHwodz1uZXcgTWFwLE0uc2V0KHQsdykpO2xldCBBPVJbMF0sQz1udWxsPT09Tz9bdF06Ty5jb25jYXQoW0EsdF0pLHg9UlsxXVt0XSxOPXhbMF0sVT0oMCxiLmNyZWF0ZVJvdXRlckNhY2hlS2V5KShOLCEwKSxEPSgwLG0udXNlUm91dGVyQkZDYWNoZSkoeCxVKSxMPVtdO2Rve2xldCBlPUQudHJlZSx0PUQuc3RhdGVLZXksYT1lWzBdLHY9KDAsYi5jcmVhdGVSb3V0ZXJDYWNoZUtleSkoYSksZz13LmdldCh2KTtpZih2b2lkIDA9PT1nKXtsZXQgZT17bGF6eURhdGE6bnVsbCxyc2M6bnVsbCxwcmVmZXRjaFJzYzpudWxsLGhlYWQ6bnVsbCxwcmVmZXRjaEhlYWQ6bnVsbCxwYXJhbGxlbFJvdXRlczpuZXcgTWFwLGxvYWRpbmc6bnVsbCxuYXZpZ2F0ZWRBdDotMX07Zz1lLHcuc2V0KHYsZSl9bGV0IG09RS5sb2FkaW5nLFI9KDAsby5qc3hzKShjLlRlbXBsYXRlQ29udGV4dC5Qcm92aWRlcix7dmFsdWU6KDAsby5qc3hzKShqLHtzZWdtZW50UGF0aDpDLGNoaWxkcmVuOlsoMCxvLmpzeCkoZC5FcnJvckJvdW5kYXJ5LHtlcnJvckNvbXBvbmVudDpyLGVycm9yU3R5bGVzOm4sZXJyb3JTY3JpcHRzOnUsY2hpbGRyZW46KDAsby5qc3gpKFMse2xvYWRpbmc6bSxjaGlsZHJlbjooMCxvLmpzeCkoeS5IVFRQQWNjZXNzRmFsbGJhY2tCb3VuZGFyeSx7bm90Rm91bmQ6Zixmb3JiaWRkZW46cCx1bmF1dGhvcml6ZWQ6aCxjaGlsZHJlbjooMCxvLmpzeHMpKF8uUmVkaXJlY3RCb3VuZGFyeSx7Y2hpbGRyZW46WygwLG8uanN4KShULHt1cmw6UCx0cmVlOmUsY2FjaGVOb2RlOmcsc2VnbWVudFBhdGg6Q30pLG51bGxdfSl9KX0pfSksbnVsbF19KSxjaGlsZHJlbjpbbCxpLHNdfSx0KTtMLnB1c2goUiksRD1ELm5leHR9d2hpbGUobnVsbCE9PUQpO3JldHVybiBMfSgiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDk3ODE6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtsZXQgbix1O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiaHlkcmF0ZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFV9fSk7bGV0IG89cig4MTQwKSxsPXIoOTQxNyksYT1yKDUxNTUpO3IoNjAwMSk7bGV0IGk9by5fKHIoMjY2OSkpLGM9bC5fKHIoMjExNSkpLHM9cig3MTk3KSxmPXIoMjA3MyksZD1yKDM3ODkpLHA9cig1NDQ0KSxoPXIoMTIwOSksXz1yKDUxNTMpLHk9cigxODA3KSxiPW8uXyhyKDcyOTcpKSx2PXIoMjU5Mik7cig2NzUyKTtsZXQgZz1yKDMyMDEpLG09cy5jcmVhdGVGcm9tUmVhZGFibGVTdHJlYW0sUj1kb2N1bWVudCxFPW5ldyBUZXh0RW5jb2RlcixPPSExLFA9ITEsaj1udWxsO2Z1bmN0aW9uIFQoZSl7aWYoMD09PWVbMF0pbj1bXTtlbHNlIGlmKDE9PT1lWzBdKXtpZighbil0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkoRXJyb3IoIlVuZXhwZWN0ZWQgc2VydmVyIGRhdGE6IG1pc3NpbmcgYm9vdHN0cmFwIHNjcmlwdC4iKSwiX19ORVhUX0VSUk9SX0NPREUiLHt2YWx1ZToiRTE4IixlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pO3U/dS5lbnF1ZXVlKEUuZW5jb2RlKGVbMV0pKTpuLnB1c2goZVsxXSl9ZWxzZSBpZigyPT09ZVswXSlqPWVbMV07ZWxzZSBpZigzPT09ZVswXSl7aWYoIW4pdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KEVycm9yKCJVbmV4cGVjdGVkIHNlcnZlciBkYXRhOiBtaXNzaW5nIGJvb3RzdHJhcCBzY3JpcHQuIiksIl9fTkVYVF9FUlJPUl9DT0RFIix7dmFsdWU6IkUxOCIsZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KTtsZXQgcj1hdG9iKGVbMV0pLG89bmV3IFVpbnQ4QXJyYXkoci5sZW5ndGgpO2Zvcih2YXIgdD0wO3Q8ci5sZW5ndGg7dCsrKW9bdF09ci5jaGFyQ29kZUF0KHQpO3U/dS5lbnF1ZXVlKG8pOm4ucHVzaChvKX19bGV0IFM9ZnVuY3Rpb24oKXt1JiYhUCYmKHUuY2xvc2UoKSxQPSEwLG49dm9pZCAwKSxPPSEwfTsibG9hZGluZyI9PT1kb2N1bWVudC5yZWFkeVN0YXRlP2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLFMsITEpOnNldFRpbWVvdXQoUyk7bGV0IE09c2VsZi5fX25leHRfZj1zZWxmLl9fbmV4dF9mfHxbXTtNLmZvckVhY2goVCksTS5wdXNoPVQ7bGV0IHc9bShuZXcgUmVhZGFibGVTdHJlYW0oe3N0YXJ0KGUpe24mJihuLmZvckVhY2godD0+e2UuZW5xdWV1ZSgic3RyaW5nIj09dHlwZW9mIHQ/RS5lbmNvZGUodCk6dCl9KSxPJiYhUCkmJihudWxsPT09ZS5kZXNpcmVkU2l6ZXx8ZS5kZXNpcmVkU2l6ZTwwP2UuZXJyb3IoT2JqZWN0LmRlZmluZVByb3BlcnR5KEVycm9yKCJUaGUgY29ubmVjdGlvbiB0byB0aGUgcGFnZSB3YXMgdW5leHBlY3RlZGx5IGNsb3NlZCwgcG9zc2libHkgZHVlIHRvIHRoZSBzdG9wIGJ1dHRvbiBiZWluZyBjbGlja2VkLCBsb3NzIG9mIFdpLUZpLCBvciBhbiB1bnN0YWJsZSBpbnRlcm5ldCBjb25uZWN0aW9uLiIpLCJfX05FWFRfRVJST1JfQ09ERSIse3ZhbHVlOiJFMTE3IixlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pKTplLmNsb3NlKCksUD0hMCxuPXZvaWQgMCksdT1lfX0pLHtjYWxsU2VydmVyOmguY2FsbFNlcnZlcixmaW5kU291cmNlTWFwVVJMOl8uZmluZFNvdXJjZU1hcFVSTH0pO2Z1bmN0aW9uIEEoZSl7bGV0e3BlbmRpbmdBY3Rpb25RdWV1ZTp0fT1lLHI9KDAsYy51c2UpKHcpLG49KDAsYy51c2UpKHQpO3JldHVybigwLGEuanN4KShiLmRlZmF1bHQse2FjdGlvblF1ZXVlOm4sZ2xvYmFsRXJyb3JTdGF0ZTpyLkcsYXNzZXRQcmVmaXg6ci5wfSl9bGV0IEM9Yy5kZWZhdWx0LlN0cmljdE1vZGU7ZnVuY3Rpb24geChlKXtsZXR7Y2hpbGRyZW46dH09ZTtyZXR1cm4gdH1sZXQgTj17b25EZWZhdWx0VHJhbnNpdGlvbkluZGljYXRvcjpmdW5jdGlvbigpe3JldHVybigpPT57fX0sb25SZWNvdmVyYWJsZUVycm9yOmQub25SZWNvdmVyYWJsZUVycm9yLG9uQ2F1Z2h0RXJyb3I6cC5vbkNhdWdodEVycm9yLG9uVW5jYXVnaHRFcnJvcjpwLm9uVW5jYXVnaHRFcnJvcn07ZnVuY3Rpb24gVShlKXtsZXQgdD1uZXcgUHJvbWlzZSgodCxyKT0+e3cudGhlbihyPT57KDAsZy5zZXRBcHBCdWlsZElkKShyLmIpO2xldCBuPURhdGUubm93KCk7dCgoMCx5LmNyZWF0ZU11dGFibGVBY3Rpb25RdWV1ZSkoKDAsdi5jcmVhdGVJbml0aWFsUm91dGVyU3RhdGUpKHtuYXZpZ2F0ZWRBdDpuLGluaXRpYWxGbGlnaHREYXRhOnIuZixpbml0aWFsQ2Fub25pY2FsVXJsUGFydHM6ci5jLGluaXRpYWxQYXJhbGxlbFJvdXRlczpuZXcgTWFwLGxvY2F0aW9uOndpbmRvdy5sb2NhdGlvbixjb3VsZEJlSW50ZXJjZXB0ZWQ6ci5pLHBvc3Rwb25lZDpyLnMscHJlcmVuZGVyZWQ6ci5TfSksZSkpfSxlPT5yKGUpKX0pLHI9KDAsYS5qc3gpKEMse2NoaWxkcmVuOigwLGEuanN4KShmLkhlYWRNYW5hZ2VyQ29udGV4dC5Qcm92aWRlcix7dmFsdWU6e2FwcERpcjohMH0sY2hpbGRyZW46KDAsYS5qc3gpKHgse2NoaWxkcmVuOigwLGEuanN4KShBLHtwZW5kaW5nQWN0aW9uUXVldWU6dH0pfSl9KX0pOyJfX25leHRfZXJyb3JfXyI9PT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuaWQ/aS5kZWZhdWx0LmNyZWF0ZVJvb3QoUixOKS5yZW5kZXIocik6Yy5kZWZhdWx0LnN0YXJ0VHJhbnNpdGlvbigoKT0+e2kuZGVmYXVsdC5oeWRyYXRlUm9vdChSLHIsey4uLk4sZm9ybVN0YXRlOmp9KX0pfSgiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDk4ODk6KGUsdCxyKT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIlByb21pc2VRdWV1ZSIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGN9fSk7bGV0IG49cig1OTAzKSx1PXIoNzc5Nyk7dmFyIG89dS5fKCJfbWF4Q29uY3VycmVuY3kiKSxsPXUuXygiX3J1bm5pbmdDb3VudCIpLGE9dS5fKCJfcXVldWUiKSxpPXUuXygiX3Byb2Nlc3NOZXh0Iik7Y2xhc3MgY3tlbnF1ZXVlKGUpe2xldCB0LHIsdT1uZXcgUHJvbWlzZSgoZSxuKT0+e3Q9ZSxyPW59KSxvPWFzeW5jKCk9Pnt0cnl7bi5fKHRoaXMsbClbbF0rKztsZXQgcj1hd2FpdCBlKCk7dChyKX1jYXRjaChlKXtyKGUpfWZpbmFsbHl7bi5fKHRoaXMsbClbbF0tLSxuLl8odGhpcyxpKVtpXSgpfX07cmV0dXJuIG4uXyh0aGlzLGEpW2FdLnB1c2goe3Byb21pc2VGbjp1LHRhc2s6b30pLG4uXyh0aGlzLGkpW2ldKCksdX1idW1wKGUpe2xldCB0PW4uXyh0aGlzLGEpW2FdLmZpbmRJbmRleCh0PT50LnByb21pc2VGbj09PWUpO2lmKHQ+LTEpe2xldCBlPW4uXyh0aGlzLGEpW2FdLnNwbGljZSh0LDEpWzBdO24uXyh0aGlzLGEpW2FdLnVuc2hpZnQoZSksbi5fKHRoaXMsaSlbaV0oITApfX1jb25zdHJ1Y3RvcihlPTUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLGkse3ZhbHVlOnN9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxvLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxsLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcyxhLHt3cml0YWJsZTohMCx2YWx1ZTp2b2lkIDB9KSxuLl8odGhpcyxvKVtvXT1lLG4uXyh0aGlzLGwpW2xdPTAsbi5fKHRoaXMsYSlbYV09W119fWZ1bmN0aW9uIHMoZSl7aWYodm9pZCAwPT09ZSYmKGU9ITEpLChuLl8odGhpcyxsKVtsXTxuLl8odGhpcyxvKVtvXXx8ZSkmJm4uXyh0aGlzLGEpW2FdLmxlbmd0aD4wKXt2YXIgdDtudWxsPT0odD1uLl8odGhpcyxhKVthXS5zaGlmdCgpKXx8dC50YXNrKCl9fSgiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9fV0pOw=="}},"time_used":151,"timings":{"blocked":-1,"dns":0,"connect":24,"send":0,"wait":50,"receive":49,"ssl":28},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"maxvectornew.com/_next/static/chunks/main-app-2ecc3bf42ae2d122.js","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://maxvectornew.com/t/1c8a8","date":"2026-07-26T17:18:27.382Z","timestamp":1785086307382,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"maxvectornew.com","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Jul 2026 17:54:44 GMT","end":"Fri, 23 Oct 2026 17:54:43 GMT"},"fingerprint":{"sha1":"3B:96:C0:C6:0F:0B:DE:CC:96:A0:22:3D:32:F5:17:2C:CD:5C:51:6B","sha256":"D3:F9:21:6A:45:1A:9A:BA:92:79:1E:6E:03:85:1A:0C:B8:AD:05:18:FA:FC:60:41:98:38:87:32:B5:B9:EA:D1"}}},"request":{"raw":"GET /_next/static/chunks/main-app-2ecc3bf42ae2d122.js HTTP/1.1\r\nHost: maxvectornew.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://maxvectornew.com/t/1c8a8\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/1.1 200 OK\r\nServer: nginx/1.27.5\r\nDate: Sun, 26 Jul 2026 17:18:27 GMT\r\nContent-Type: text/javascript; charset=utf-8\r\nContent-Length: 557\r\nConnection: keep-alive\r\nAccept-Ranges: bytes\r\nCache-Control: public, max-age=31536000, immutable\r\nLast-Modified: Sat, 25 Jul 2026 20:35:12 GMT\r\nETag: W/\"22d-19f9afd327f\"\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx:1.27.5","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":557,"size_decoded":873,"mime_type":"text/javascript; charset=utf-8","magic":"ASCII text, with very long lines (557), with no line terminators","md5":"06830166c68f5d1b431e4bac38626050","sha1":"e5f53dc4d5d6a682f6ee7ce745a6cca8bb2d9fab","sha256":"4504fb582d925ee424121644f0dc6172463ab556ff421121b49eaa40f67f92ec","sha512":"f2ffbf19d186117b6f14f200459601ba081f7a0e76facf1d04758535ede657dab2ee17427aeeabd57d51a95dbcf3ff98b66ed7ca5f1cec6154f032cb2c23194a","ssdeep":"","tlshash":"59f0f45a8f0cf42f5c26ad64fe97ace6285f4175302b4e647910eea23c23b6cd270409","first_seen":"2025-09-15T10:43:19.87387Z","last_seen":"2026-07-27T04:58:17.239501Z","times_seen":347,"resource_available":true,"data":"KHNlbGYud2VicGFja0NodW5rX05fRT1zZWxmLndlYnBhY2tDaHVua19OX0V8fFtdKS5wdXNoKFtbMzU4XSx7ODc1NjooZSxzLG4pPT57UHJvbWlzZS5yZXNvbHZlKCkudGhlbihuLnQuYmluZChuLDcxNTAsMjMpKSxQcm9taXNlLnJlc29sdmUoKS50aGVuKG4udC5iaW5kKG4sMTk1OSwyMykpLFByb21pc2UucmVzb2x2ZSgpLnRoZW4obi50LmJpbmQobiw3OTg5LDIzKSksUHJvbWlzZS5yZXNvbHZlKCkudGhlbihuLnQuYmluZChuLDM4ODYsMjMpKSxQcm9taXNlLnJlc29sdmUoKS50aGVuKG4udC5iaW5kKG4sOTc2NiwyMykpLFByb21pc2UucmVzb2x2ZSgpLnRoZW4obi50LmJpbmQobiw1Mjc4LDIzKSksUHJvbWlzZS5yZXNvbHZlKCkudGhlbihuLnQuYmluZChuLDg5MjQsMjMpKSxQcm9taXNlLnJlc29sdmUoKS50aGVuKG4udC5iaW5kKG4sNDQzMSwyMykpLFByb21pc2UucmVzb2x2ZSgpLnRoZW4obi5iaW5kKG4sNjIyKSl9LDkzOTM6KCk9Pnt9fSxlPT57dmFyIHM9cz0+ZShlLnM9cyk7ZS5PKDAsWzQ0MSwyNTVdLCgpPT4ocygxNjY2KSxzKDg3NTYpKSksX05fRT1lLk8oKX1dKTs="}},"time_used":70,"timings":{"blocked":-1,"dns":0,"connect":21,"send":0,"wait":22,"receive":0,"ssl":26},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"maxvectornew.com/_next/static/chunks/app/layout-93c05598e3a473b0.js","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://maxvectornew.com/t/1c8a8","date":"2026-07-26T17:18:27.384Z","timestamp":1785086307384,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"maxvectornew.com","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Jul 2026 17:54:44 GMT","end":"Fri, 23 Oct 2026 17:54:43 GMT"},"fingerprint":{"sha1":"3B:96:C0:C6:0F:0B:DE:CC:96:A0:22:3D:32:F5:17:2C:CD:5C:51:6B","sha256":"D3:F9:21:6A:45:1A:9A:BA:92:79:1E:6E:03:85:1A:0C:B8:AD:05:18:FA:FC:60:41:98:38:87:32:B5:B9:EA:D1"}}},"request":{"raw":"GET /_next/static/chunks/app/layout-93c05598e3a473b0.js HTTP/1.1\r\nHost: maxvectornew.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://maxvectornew.com/t/1c8a8\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/1.1 200 OK\r\nServer: nginx/1.27.5\r\nDate: Sun, 26 Jul 2026 17:18:27 GMT\r\nContent-Type: text/javascript; charset=utf-8\r\nContent-Length: 5335\r\nConnection: keep-alive\r\nAccept-Ranges: bytes\r\nCache-Control: public, max-age=31536000, immutable\r\nLast-Modified: Sat, 25 Jul 2026 20:35:12 GMT\r\nETag: W/\"14d7-19f9afd327f\"\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx:1.27.5","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":5335,"size_decoded":5653,"mime_type":"text/javascript; charset=utf-8","magic":"JavaScript source, ASCII text, with very long lines (5335), with no line terminators","md5":"bc5ef9fc7f68e7b5f06d35fec5cdaf47","sha1":"25135b1fe4ccdea7bfb4deb5b2982db3958b29c4","sha256":"01a3827cc17f00e7931ba0c7174f6fe026f913d3a10227315cc1686d68ec2837","sha512":"054dd9fa5aed95518fa864dd94c4b37203d87333223b66aea68e0db1676758f60a43763ccc08e8c419eb9d3436fa48694f62755f9195be9a5349f1ae05715ebd","ssdeep":"96:b31rvrAbbDLY99n5GUKqN7xFhgDBT7DBTDA9GCfsY89GCHl0B6:b3Fj8DLY9GkxFhgD1Dru39s0B6","tlshash":"9bb1e9f736c5fc3151aa485058378757ba142e37341fa0d0abaacce93268ec9c5e1f5a","first_seen":"2026-07-01T09:56:23.394831Z","last_seen":"2026-07-26T17:20:04.022504Z","times_seen":10,"resource_available":true,"data":"KHNlbGYud2VicGFja0NodW5rX05fRT1zZWxmLndlYnBhY2tDaHVua19OX0V8fFtdKS5wdXNoKFtbMTc3XSx7MTI5MDooKT0+e30sMTQwMjooZSx0LG4pPT57InVzZSBzdHJpY3QiO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSwhZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gdClPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxuLHtlbnVtZXJhYmxlOiEwLGdldDp0W25dfSl9KHQse2RlZmF1bHQ6ZnVuY3Rpb24oKXtyZXR1cm4gaH0saGFuZGxlQ2xpZW50U2NyaXB0TG9hZDpmdW5jdGlvbigpe3JldHVybiB5fSxpbml0U2NyaXB0TG9hZGVyOmZ1bmN0aW9uKCl7cmV0dXJuIGJ9fSk7bGV0IHI9big4MTQwKSxpPW4oOTQxNyksbD1uKDUxNTUpLGE9ci5fKG4oNzY1MCkpLHU9aS5fKG4oMjExNSkpLG89bigyMDczKSxzPW4oNDY4MSksYz1uKDQ4NTMpLGQ9big5MDAxKSxmPW5ldyBNYXAscD1uZXcgU2V0LF89ZT0+e2xldHtzcmM6dCxpZDpuLG9uTG9hZDpyPSgpPT57fSxvblJlYWR5Omk9bnVsbCxkYW5nZXJvdXNseVNldElubmVySFRNTDpsLGNoaWxkcmVuOnU9IiIsc3RyYXRlZ3k6bz0iYWZ0ZXJJbnRlcmFjdGl2ZSIsb25FcnJvcjpjLHN0eWxlc2hlZXRzOmR9PWUsXz1ufHx0O2lmKF8mJnAuaGFzKF8pKXJldHVybjtpZihmLmhhcyh0KSl7cC5hZGQoXyksZi5nZXQodCkudGhlbihyLGMpO3JldHVybn1sZXQgeT0oKT0+e2kmJmkoKSxwLmFkZChfKX0sYj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSxnPW5ldyBQcm9taXNlKChlLHQpPT57Yi5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixmdW5jdGlvbih0KXtlKCksciYmci5jYWxsKHRoaXMsdCkseSgpfSksYi5hZGRFdmVudExpc3RlbmVyKCJlcnJvciIsZnVuY3Rpb24oZSl7dChlKX0pfSkuY2F0Y2goZnVuY3Rpb24oZSl7YyYmYyhlKX0pO2w/KGIuaW5uZXJIVE1MPWwuX19odG1sfHwiIix5KCkpOnU/KGIudGV4dENvbnRlbnQ9InN0cmluZyI9PXR5cGVvZiB1P3U6QXJyYXkuaXNBcnJheSh1KT91LmpvaW4oIiIpOiIiLHkoKSk6dCYmKGIuc3JjPXQsZi5zZXQodCxnKSksKDAscy5zZXRBdHRyaWJ1dGVzRnJvbVByb3BzKShiLGUpLCJ3b3JrZXIiPT09byYmYi5zZXRBdHRyaWJ1dGUoInR5cGUiLCJ0ZXh0L3BhcnR5dG93biIpLGIuc2V0QXR0cmlidXRlKCJkYXRhLW5zY3JpcHQiLG8pLGQmJihlPT57aWYoYS5kZWZhdWx0LnByZWluaXQpcmV0dXJuIGUuZm9yRWFjaChlPT57YS5kZWZhdWx0LnByZWluaXQoZSx7YXM6InN0eWxlIn0pfSk7e2xldCB0PWRvY3VtZW50LmhlYWQ7ZS5mb3JFYWNoKGU9PntsZXQgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIik7bi50eXBlPSJ0ZXh0L2NzcyIsbi5yZWw9InN0eWxlc2hlZXQiLG4uaHJlZj1lLHQuYXBwZW5kQ2hpbGQobil9KX19KShkKSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGIpfTtmdW5jdGlvbiB5KGUpe2xldHtzdHJhdGVneTp0PSJhZnRlckludGVyYWN0aXZlIn09ZTsibGF6eU9ubG9hZCI9PT10P3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJsb2FkIiwoKT0+eygwLGMucmVxdWVzdElkbGVDYWxsYmFjaykoKCk9Pl8oZSkpfSk6XyhlKX1mdW5jdGlvbiBiKGUpe2UuZm9yRWFjaCh5KSxbLi4uZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtbnNjcmlwdD0iYmVmb3JlSW50ZXJhY3RpdmUiXScpLC4uLmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLW5zY3JpcHQ9ImJlZm9yZVBhZ2VSZW5kZXIiXScpXS5mb3JFYWNoKGU9PntsZXQgdD1lLmlkfHxlLmdldEF0dHJpYnV0ZSgic3JjIik7cC5hZGQodCl9KX1mdW5jdGlvbiBnKGUpe2xldHtpZDp0LHNyYzpuPSIiLG9uTG9hZDpyPSgpPT57fSxvblJlYWR5Omk9bnVsbCxzdHJhdGVneTpzPSJhZnRlckludGVyYWN0aXZlIixvbkVycm9yOmYsc3R5bGVzaGVldHM6eSwuLi5ifT1lLHt1cGRhdGVTY3JpcHRzOmcsc2NyaXB0czpoLGdldElzU3NyOm0sYXBwRGlyOnYsbm9uY2U6T309KDAsdS51c2VDb250ZXh0KShvLkhlYWRNYW5hZ2VyQ29udGV4dCk7Tz1iLm5vbmNlfHxPO2xldCBFPSgwLHUudXNlUmVmKSghMSk7KDAsdS51c2VFZmZlY3QpKCgpPT57bGV0IGU9dHx8bjtFLmN1cnJlbnR8fChpJiZlJiZwLmhhcyhlKSYmaSgpLEUuY3VycmVudD0hMCl9LFtpLHQsbl0pO2xldCBJPSgwLHUudXNlUmVmKSghMSk7aWYoKDAsdS51c2VFZmZlY3QpKCgpPT57aWYoIUkuY3VycmVudCl7aWYoImFmdGVySW50ZXJhY3RpdmUiPT09cylfKGUpO2Vsc2UibGF6eU9ubG9hZCI9PT1zJiYoImNvbXBsZXRlIj09PWRvY3VtZW50LnJlYWR5U3RhdGU/KDAsYy5yZXF1ZXN0SWRsZUNhbGxiYWNrKSgoKT0+XyhlKSk6d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCgpPT57KDAsYy5yZXF1ZXN0SWRsZUNhbGxiYWNrKSgoKT0+XyhlKSl9KSk7SS5jdXJyZW50PSEwfX0sW2Usc10pLCgiYmVmb3JlSW50ZXJhY3RpdmUiPT09c3x8IndvcmtlciI9PT1zKSYmKGc/KGhbc109KGhbc118fFtdKS5jb25jYXQoW3tpZDp0LHNyYzpuLG9uTG9hZDpyLG9uUmVhZHk6aSxvbkVycm9yOmYsLi4uYixub25jZTpPfV0pLGcoaCkpOm0mJm0oKT9wLmFkZCh0fHxuKTptJiYhbSgpJiZfKHsuLi5lLG5vbmNlOk99KSksdil7aWYoeSYmeS5mb3JFYWNoKGU9PnthLmRlZmF1bHQucHJlaW5pdChlLHthczoic3R5bGUifSl9KSwiYmVmb3JlSW50ZXJhY3RpdmUiPT09cylpZighbilyZXR1cm4gYi5kYW5nZXJvdXNseVNldElubmVySFRNTCYmKGIuY2hpbGRyZW49Yi5kYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWwsZGVsZXRlIGIuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwpLCgwLGwuanN4KSgic2NyaXB0Iix7bm9uY2U6TyxkYW5nZXJvdXNseVNldElubmVySFRNTDp7X19odG1sOiIoc2VsZi5fX25leHRfcz1zZWxmLl9fbmV4dF9zfHxbXSkucHVzaCgiKygwLGQuaHRtbEVzY2FwZUpzb25TdHJpbmcpKEpTT04uc3RyaW5naWZ5KFswLHsuLi5iLGlkOnR9XSkpKyIpIn19KTtlbHNlIHJldHVybiBhLmRlZmF1bHQucHJlbG9hZChuLGIuaW50ZWdyaXR5P3thczoic2NyaXB0IixpbnRlZ3JpdHk6Yi5pbnRlZ3JpdHksbm9uY2U6Tyxjcm9zc09yaWdpbjpiLmNyb3NzT3JpZ2lufTp7YXM6InNjcmlwdCIsbm9uY2U6Tyxjcm9zc09yaWdpbjpiLmNyb3NzT3JpZ2lufSksKDAsbC5qc3gpKCJzY3JpcHQiLHtub25jZTpPLGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOntfX2h0bWw6IihzZWxmLl9fbmV4dF9zPXNlbGYuX19uZXh0X3N8fFtdKS5wdXNoKCIrKDAsZC5odG1sRXNjYXBlSnNvblN0cmluZykoSlNPTi5zdHJpbmdpZnkoW24sey4uLmIsaWQ6dH1dKSkrIikifX0pOyJhZnRlckludGVyYWN0aXZlIj09PXMmJm4mJmEuZGVmYXVsdC5wcmVsb2FkKG4sYi5pbnRlZ3JpdHk/e2FzOiJzY3JpcHQiLGludGVncml0eTpiLmludGVncml0eSxub25jZTpPLGNyb3NzT3JpZ2luOmIuY3Jvc3NPcmlnaW59Onthczoic2NyaXB0Iixub25jZTpPLGNyb3NzT3JpZ2luOmIuY3Jvc3NPcmlnaW59KX1yZXR1cm4gbnVsbH1PYmplY3QuZGVmaW5lUHJvcGVydHkoZywiX19uZXh0U2NyaXB0Iix7dmFsdWU6ITB9KTtsZXQgaD1nOygiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDQ4NTM6KGUsdCk9PnsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLCFmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiB0KU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4se2VudW1lcmFibGU6ITAsZ2V0OnRbbl19KX0odCx7Y2FuY2VsSWRsZUNhbGxiYWNrOmZ1bmN0aW9uKCl7cmV0dXJuIHJ9LHJlcXVlc3RJZGxlQ2FsbGJhY2s6ZnVuY3Rpb24oKXtyZXR1cm4gbn19KTtsZXQgbj0idW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJnNlbGYucmVxdWVzdElkbGVDYWxsYmFjayYmc2VsZi5yZXF1ZXN0SWRsZUNhbGxiYWNrLmJpbmQod2luZG93KXx8ZnVuY3Rpb24oZSl7bGV0IHQ9RGF0ZS5ub3coKTtyZXR1cm4gc2VsZi5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZSh7ZGlkVGltZW91dDohMSx0aW1lUmVtYWluaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIE1hdGgubWF4KDAsNTAtKERhdGUubm93KCktdCkpfX0pfSwxKX0scj0idW5kZWZpbmVkIiE9dHlwZW9mIHNlbGYmJnNlbGYuY2FuY2VsSWRsZUNhbGxiYWNrJiZzZWxmLmNhbmNlbElkbGVDYWxsYmFjay5iaW5kKHdpbmRvdyl8fGZ1bmN0aW9uKGUpe3JldHVybiBjbGVhclRpbWVvdXQoZSl9OygiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDcwNDI6KGUsdCxuKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4obi50LmJpbmQobiwxMjkwLDIzKSksUHJvbWlzZS5yZXNvbHZlKCkudGhlbihuLnQuYmluZChuLDE0MDIsMjMpKX0sOTAwMTooZSx0KT0+eyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksIWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIHQpT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsbix7ZW51bWVyYWJsZTohMCxnZXQ6dFtuXX0pfSh0LHtFU0NBUEVfUkVHRVg6ZnVuY3Rpb24oKXtyZXR1cm4gcn0saHRtbEVzY2FwZUF0dHJpYnV0ZVN0cmluZzpmdW5jdGlvbigpe3JldHVybiB1fSxodG1sRXNjYXBlSnNvblN0cmluZzpmdW5jdGlvbigpe3JldHVybiBhfX0pO2xldCBuPXsiJiI6IlxcdTAwMjYiLCI+IjoiXFx1MDAzZSIsIjwiOiJcXHUwMDNjIiwiXHUyMDI4IjoiXFx1MjAyOCIsIlx1MjAyOSI6IlxcdTIwMjkifSxyPS9bJj48XHUyMDI4XHUyMDI5XS9nLGk9eyImIjoiJmFtcDsiLCciJzoiJnF1b3Q7IiwiJyI6IiYjMzk7IiwiPCI6IiZsdDsiLCI+IjoiJmd0OyJ9LGw9L1smIic8Pl0vZztmdW5jdGlvbiBhKGUpe3JldHVybiBlLnJlcGxhY2UocixlPT5uW2VdKX1mdW5jdGlvbiB1KGUpe3JldHVybiBlLnJlcGxhY2UobCxlPT5pW2VdKX19fSxlPT57ZS5PKDAsWzc0MSw0NDEsMjU1LDM1OF0sKCk9PmUoZS5zPTcwNDIpKSxfTl9FPWUuTygpfV0pOw=="}},"time_used":82,"timings":{"blocked":57,"dns":0,"connect":0,"send":0,"wait":25,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"maxvectornew.com/_next/static/chunks/89-cbd37bccf62b4ef9.js","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://maxvectornew.com/t/1c8a8","date":"2026-07-26T17:18:27.385Z","timestamp":1785086307385,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"maxvectornew.com","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Jul 2026 17:54:44 GMT","end":"Fri, 23 Oct 2026 17:54:43 GMT"},"fingerprint":{"sha1":"3B:96:C0:C6:0F:0B:DE:CC:96:A0:22:3D:32:F5:17:2C:CD:5C:51:6B","sha256":"D3:F9:21:6A:45:1A:9A:BA:92:79:1E:6E:03:85:1A:0C:B8:AD:05:18:FA:FC:60:41:98:38:87:32:B5:B9:EA:D1"}}},"request":{"raw":"GET /_next/static/chunks/89-cbd37bccf62b4ef9.js HTTP/1.1\r\nHost: maxvectornew.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://maxvectornew.com/t/1c8a8\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/1.1 200 OK\r\nServer: nginx/1.27.5\r\nDate: Sun, 26 Jul 2026 17:18:27 GMT\r\nContent-Type: text/javascript; charset=utf-8\r\nContent-Length: 18174\r\nConnection: keep-alive\r\nAccept-Ranges: bytes\r\nCache-Control: public, max-age=31536000, immutable\r\nLast-Modified: Sat, 25 Jul 2026 20:35:12 GMT\r\nETag: W/\"46fe-19f9afd327f\"\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx:1.27.5","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":18174,"size_decoded":18493,"mime_type":"text/javascript; charset=utf-8","magic":"JavaScript source, ASCII text, with very long lines (18174), with no line terminators","md5":"11e14f01b10f8d3a54a94528dcde1a77","sha1":"2822f1df2d20dc3ad8a4f15c954a6e6eef947a74","sha256":"8837316bb2f5718edfa4593e9b7f7baca23c818b7f02e82699f8ce3db976caec","sha512":"f80a9b4ac07516a3b623a4c30af9cd9b651f26756eb3ca23bf0974fd0df274b4c1eb3fe9b1a64873325b84e5257d83bd2a19c42140881d7e2035fa9af137af26","ssdeep":"384:F42HvDkSF0M8sLzyHT6WOamcz2f3y6/RcVhdHeHOWTKy4WQBZuY4:6FMLyHRODB665crdHeuWuBk","tlshash":"b782f87237c9fcee535bc184c82f0009e3b96d71322aa454739e9cada5e1584e0a3f76","first_seen":"2026-07-14T04:55:42.432815Z","last_seen":"2026-07-26T17:20:04.031891Z","times_seen":6,"resource_available":true,"data":"InVzZSBzdHJpY3QiOyhzZWxmLndlYnBhY2tDaHVua19OX0U9c2VsZi53ZWJwYWNrQ2h1bmtfTl9FfHxbXSkucHVzaChbWzg5XSx7NzM3OihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIkFtcFN0YXRlQ29udGV4dCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG59fSk7bGV0IG49cig4MTQwKS5fKHIoMjExNSkpLmRlZmF1bHQuY3JlYXRlQ29udGV4dCh7fSl9LDgyMTooZSx0KT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSwhZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIgaW4gdClPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtlbnVtZXJhYmxlOiEwLGdldDp0W3JdfSl9KHQse1ZBTElEX0xPQURFUlM6ZnVuY3Rpb24oKXtyZXR1cm4gcn0saW1hZ2VDb25maWdEZWZhdWx0OmZ1bmN0aW9uKCl7cmV0dXJuIG59fSk7bGV0IHI9WyJkZWZhdWx0IiwiaW1naXgiLCJjbG91ZGluYXJ5IiwiYWthbWFpIiwiY3VzdG9tIl0sbj17ZGV2aWNlU2l6ZXM6WzY0MCw3NTAsODI4LDEwODAsMTIwMCwxOTIwLDIwNDgsMzg0MF0saW1hZ2VTaXplczpbMTYsMzIsNDgsNjQsOTYsMTI4LDI1NiwzODRdLHBhdGg6Ii9fbmV4dC9pbWFnZSIsbG9hZGVyOiJkZWZhdWx0Iixsb2FkZXJGaWxlOiIiLGRvbWFpbnM6W10sZGlzYWJsZVN0YXRpY0ltYWdlczohMSxtaW5pbXVtQ2FjaGVUVEw6NjAsZm9ybWF0czpbImltYWdlL3dlYnAiXSxtYXhpbXVtRGlza0NhY2hlU2l6ZTp2b2lkIDAsbWF4aW11bVJlc3BvbnNlQm9keTo1ZTcsZGFuZ2Vyb3VzbHlBbGxvd1NWRzohMSxjb250ZW50U2VjdXJpdHlQb2xpY3k6InNjcmlwdC1zcmMgJ25vbmUnOyBmcmFtZS1zcmMgJ25vbmUnOyBzYW5kYm94OyIsY29udGVudERpc3Bvc2l0aW9uVHlwZToiYXR0YWNobWVudCIsbG9jYWxQYXR0ZXJuczp2b2lkIDAscmVtb3RlUGF0dGVybnM6W10scXVhbGl0aWVzOnZvaWQgMCx1bm9wdGltaXplZDohMX19LDg2MTooZSx0KT0+e2Z1bmN0aW9uIHIoZSl7bGV0e2FtcEZpcnN0OnQ9ITEsaHlicmlkOnI9ITEsaGFzUXVlcnk6bj0hMX09dm9pZCAwPT09ZT97fTplO3JldHVybiB0fHxyJiZufU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiaXNJbkFtcE1vZGUiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiByfX0pfSwxMDY0OihlLHQscik9PntyLmQodCx7QTooKT0+bn0pO2xldCBuPSgwLHIoNDI5NCkuQSkoIlNoaWVsZCIsW1sicGF0aCIse2Q6Ik0yMCAxM2MwIDUtMy41IDcuNS03LjY2IDguOTVhMSAxIDAgMCAxLS42Ny0uMDFDNy41IDIwLjUgNCAxOCA0IDEzVjZhMSAxIDAgMCAxIDEtMWMyIDAgNC41LTEuMiA2LjI0LTIuNzJhMS4xNyAxLjE3IDAgMCAxIDEuNTIgMEMxNC41MSAzLjgxIDE3IDUgMTkgNWExIDEgMCAwIDEgMSAxeiIsa2V5OiJvZWw0MXkifV1dKX0sMTEyNDooZSx0KT0+e2Z1bmN0aW9uIHIoZSl7dmFyIHQ7bGV0e2NvbmZpZzpyLHNyYzpuLHdpZHRoOmkscXVhbGl0eTpsfT1lLG89bHx8KG51bGw9PSh0PXIucXVhbGl0aWVzKT92b2lkIDA6dC5yZWR1Y2UoKGUsdCk9Pk1hdGguYWJzKHQtNzUpPE1hdGguYWJzKGUtNzUpP3Q6ZSkpfHw3NTtyZXR1cm4gci5wYXRoKyI/dXJsPSIrZW5jb2RlVVJJQ29tcG9uZW50KG4pKyImdz0iK2krIiZxPSIrbysobi5zdGFydHNXaXRoKCIvX25leHQvc3RhdGljL21lZGlhLyIpLCIiKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImRlZmF1bHQiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBufX0pLHIuX19uZXh0X2ltZ19kZWZhdWx0PSEwO2xldCBuPXJ9LDExOTA6KGUsdCxyKT0+e3IuZCh0LHtBOigpPT5ufSk7bGV0IG49KDAscig0Mjk0KS5BKSgiQ2hldnJvbkxlZnQiLFtbInBhdGgiLHtkOiJtMTUgMTgtNi02IDYtNiIsa2V5OiIxd25mZzMifV1dKX0sMTI2MjooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJkZWZhdWx0Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gb319KTtsZXQgbj1yKDIxMTUpLGk9bi51c2VMYXlvdXRFZmZlY3QsbD1uLnVzZUVmZmVjdDtmdW5jdGlvbiBvKGUpe2xldHtoZWFkTWFuYWdlcjp0LHJlZHVjZUNvbXBvbmVudHNUb1N0YXRlOnJ9PWU7ZnVuY3Rpb24gbygpe2lmKHQmJnQubW91bnRlZEluc3RhbmNlcyl7bGV0IGk9bi5DaGlsZHJlbi50b0FycmF5KEFycmF5LmZyb20odC5tb3VudGVkSW5zdGFuY2VzKS5maWx0ZXIoQm9vbGVhbikpO3QudXBkYXRlSGVhZChyKGksZSkpfX1yZXR1cm4gaSgoKT0+e3ZhciByO3JldHVybiBudWxsPT10fHxudWxsPT0ocj10Lm1vdW50ZWRJbnN0YW5jZXMpfHxyLmFkZChlLmNoaWxkcmVuKSwoKT0+e3ZhciByO251bGw9PXR8fG51bGw9PShyPXQubW91bnRlZEluc3RhbmNlcyl8fHIuZGVsZXRlKGUuY2hpbGRyZW4pfX0pLGkoKCk9Pih0JiYodC5fcGVuZGluZ1VwZGF0ZT1vKSwoKT0+e3QmJih0Ll9wZW5kaW5nVXBkYXRlPW8pfSkpLGwoKCk9Pih0JiZ0Ll9wZW5kaW5nVXBkYXRlJiYodC5fcGVuZGluZ1VwZGF0ZSgpLHQuX3BlbmRpbmdVcGRhdGU9bnVsbCksKCk9Pnt0JiZ0Ll9wZW5kaW5nVXBkYXRlJiYodC5fcGVuZGluZ1VwZGF0ZSgpLHQuX3BlbmRpbmdVcGRhdGU9bnVsbCl9KSksbnVsbH19LDEzNTY6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiSW1hZ2UiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiBffX0pO2xldCBuPXIoODE0MCksaT1yKDk0MTcpLGw9cig1MTU1KSxvPWkuXyhyKDIxMTUpKSxhPW4uXyhyKDc2NTApKSx1PW4uXyhyKDQ4NDEpKSxkPXIoNTA0MCkscz1yKDgyMSksYz1yKDM0NTUpO3IoNDc4MSk7bGV0IGY9cig5ODYyKSxwPW4uXyhyKDExMjQpKSxtPXIoMzAxMSksZz17ZGV2aWNlU2l6ZXM6WzY0MCw3NTAsODI4LDEwODAsMTIwMCwxOTIwLDIwNDgsMzg0MF0saW1hZ2VTaXplczpbMTYsMzIsNDgsNjQsOTYsMTI4LDI1NiwzODRdLHBhdGg6Ii9fbmV4dC9pbWFnZSIsbG9hZGVyOiJkZWZhdWx0IixkYW5nZXJvdXNseUFsbG93U1ZHOiExLHVub3B0aW1pemVkOiEwfTtmdW5jdGlvbiBoKGUsdCxyLG4saSxsLG8pe2xldCBhPW51bGw9PWU/dm9pZCAwOmUuc3JjO2UmJmVbImRhdGEtbG9hZGVkLXNyYyJdIT09YSYmKGVbImRhdGEtbG9hZGVkLXNyYyJdPWEsKCJkZWNvZGUiaW4gZT9lLmRlY29kZSgpOlByb21pc2UucmVzb2x2ZSgpKS5jYXRjaCgoKT0+e30pLnRoZW4oKCk9PntpZihlLnBhcmVudEVsZW1lbnQmJmUuaXNDb25uZWN0ZWQpe2lmKCJlbXB0eSIhPT10JiZpKCEwKSxudWxsPT1yP3ZvaWQgMDpyLmN1cnJlbnQpe2xldCB0PW5ldyBFdmVudCgibG9hZCIpO09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJ0YXJnZXQiLHt3cml0YWJsZTohMSx2YWx1ZTplfSk7bGV0IG49ITEsaT0hMTtyLmN1cnJlbnQoey4uLnQsbmF0aXZlRXZlbnQ6dCxjdXJyZW50VGFyZ2V0OmUsdGFyZ2V0OmUsaXNEZWZhdWx0UHJldmVudGVkOigpPT5uLGlzUHJvcGFnYXRpb25TdG9wcGVkOigpPT5pLHBlcnNpc3Q6KCk9Pnt9LHByZXZlbnREZWZhdWx0OigpPT57bj0hMCx0LnByZXZlbnREZWZhdWx0KCl9LHN0b3BQcm9wYWdhdGlvbjooKT0+e2k9ITAsdC5zdG9wUHJvcGFnYXRpb24oKX19KX0obnVsbD09bj92b2lkIDA6bi5jdXJyZW50KSYmbi5jdXJyZW50KGUpfX0pKX1mdW5jdGlvbiB5KGUpe3JldHVybiBvLnVzZT97ZmV0Y2hQcmlvcml0eTplfTp7ZmV0Y2hwcmlvcml0eTplfX1sZXQgYj0oMCxvLmZvcndhcmRSZWYpKChlLHQpPT57bGV0e3NyYzpyLHNyY1NldDpuLHNpemVzOmksaGVpZ2h0OmEsd2lkdGg6dSxkZWNvZGluZzpkLGNsYXNzTmFtZTpzLHN0eWxlOmMsZmV0Y2hQcmlvcml0eTpmLHBsYWNlaG9sZGVyOnAsbG9hZGluZzpnLHVub3B0aW1pemVkOmIsZmlsbDp2LG9uTG9hZFJlZjpfLG9uTG9hZGluZ0NvbXBsZXRlUmVmOncsc2V0Qmx1ckNvbXBsZXRlOmosc2V0U2hvd0FsdFRleHQ6eCxzaXplc0lucHV0OkMsb25Mb2FkOk8sb25FcnJvcjpQLC4uLlN9PWUsaz0oMCxvLnVzZUNhbGxiYWNrKShlPT57ZSYmKFAmJihlLnNyYz1lLnNyYyksZS5jb21wbGV0ZSYmaChlLHAsXyx3LGosYixDKSl9LFtyLHAsXyx3LGosUCxiLENdKSxNPSgwLG0udXNlTWVyZ2VkUmVmKSh0LGspO3JldHVybigwLGwuanN4KSgiaW1nIix7Li4uUywuLi55KGYpLGxvYWRpbmc6Zyx3aWR0aDp1LGhlaWdodDphLGRlY29kaW5nOmQsImRhdGEtbmltZyI6dj8iZmlsbCI6IjEiLGNsYXNzTmFtZTpzLHN0eWxlOmMsc2l6ZXM6aSxzcmNTZXQ6bixzcmM6cixyZWY6TSxvbkxvYWQ6ZT0+e2goZS5jdXJyZW50VGFyZ2V0LHAsXyx3LGosYixDKX0sb25FcnJvcjplPT57eCghMCksImVtcHR5IiE9PXAmJmooITApLFAmJlAoZSl9fSl9KTtmdW5jdGlvbiB2KGUpe2xldHtpc0FwcFJvdXRlcjp0LGltZ0F0dHJpYnV0ZXM6cn09ZSxuPXthczoiaW1hZ2UiLGltYWdlU3JjU2V0OnIuc3JjU2V0LGltYWdlU2l6ZXM6ci5zaXplcyxjcm9zc09yaWdpbjpyLmNyb3NzT3JpZ2luLHJlZmVycmVyUG9saWN5OnIucmVmZXJyZXJQb2xpY3ksLi4ueShyLmZldGNoUHJpb3JpdHkpfTtyZXR1cm4gdCYmYS5kZWZhdWx0LnByZWxvYWQ/KGEuZGVmYXVsdC5wcmVsb2FkKHIuc3JjLG4pLG51bGwpOigwLGwuanN4KSh1LmRlZmF1bHQse2NoaWxkcmVuOigwLGwuanN4KSgibGluayIse3JlbDoicHJlbG9hZCIsaHJlZjpyLnNyY1NldD92b2lkIDA6ci5zcmMsLi4ubn0sIl9fbmltZy0iK3Iuc3JjK3Iuc3JjU2V0K3Iuc2l6ZXMpfSl9bGV0IF89KDAsby5mb3J3YXJkUmVmKSgoZSx0KT0+e2xldCByPSgwLG8udXNlQ29udGV4dCkoZi5Sb3V0ZXJDb250ZXh0KSxuPSgwLG8udXNlQ29udGV4dCkoYy5JbWFnZUNvbmZpZ0NvbnRleHQpLGk9KDAsby51c2VNZW1vKSgoKT0+e3ZhciBlO2xldCB0PWd8fG58fHMuaW1hZ2VDb25maWdEZWZhdWx0LHI9Wy4uLnQuZGV2aWNlU2l6ZXMsLi4udC5pbWFnZVNpemVzXS5zb3J0KChlLHQpPT5lLXQpLGk9dC5kZXZpY2VTaXplcy5zb3J0KChlLHQpPT5lLXQpLGw9bnVsbD09KGU9dC5xdWFsaXRpZXMpP3ZvaWQgMDplLnNvcnQoKGUsdCk9PmUtdCk7cmV0dXJuey4uLnQsYWxsU2l6ZXM6cixkZXZpY2VTaXplczppLHF1YWxpdGllczpsfX0sW25dKSx7b25Mb2FkOmEsb25Mb2FkaW5nQ29tcGxldGU6dX09ZSxtPSgwLG8udXNlUmVmKShhKTsoMCxvLnVzZUVmZmVjdCkoKCk9PnttLmN1cnJlbnQ9YX0sW2FdKTtsZXQgaD0oMCxvLnVzZVJlZikodSk7KDAsby51c2VFZmZlY3QpKCgpPT57aC5jdXJyZW50PXV9LFt1XSk7bGV0W3ksX109KDAsby51c2VTdGF0ZSkoITEpLFt3LGpdPSgwLG8udXNlU3RhdGUpKCExKSx7cHJvcHM6eCxtZXRhOkN9PSgwLGQuZ2V0SW1nUHJvcHMpKGUse2RlZmF1bHRMb2FkZXI6cC5kZWZhdWx0LGltZ0NvbmY6aSxibHVyQ29tcGxldGU6eSxzaG93QWx0VGV4dDp3fSk7cmV0dXJuKDAsbC5qc3hzKShsLkZyYWdtZW50LHtjaGlsZHJlbjpbKDAsbC5qc3gpKGIsey4uLngsdW5vcHRpbWl6ZWQ6Qy51bm9wdGltaXplZCxwbGFjZWhvbGRlcjpDLnBsYWNlaG9sZGVyLGZpbGw6Qy5maWxsLG9uTG9hZFJlZjptLG9uTG9hZGluZ0NvbXBsZXRlUmVmOmgsc2V0Qmx1ckNvbXBsZXRlOl8sc2V0U2hvd0FsdFRleHQ6aixzaXplc0lucHV0OmUuc2l6ZXMscmVmOnR9KSxDLnByaW9yaXR5PygwLGwuanN4KSh2LHtpc0FwcFJvdXRlcjohcixpbWdBdHRyaWJ1dGVzOnh9KTpudWxsXX0pfSk7KCJmdW5jdGlvbiI9PXR5cGVvZiB0LmRlZmF1bHR8fCJvYmplY3QiPT10eXBlb2YgdC5kZWZhdWx0JiZudWxsIT09dC5kZWZhdWx0KSYmdm9pZCAwPT09dC5kZWZhdWx0Ll9fZXNNb2R1bGUmJihPYmplY3QuZGVmaW5lUHJvcGVydHkodC5kZWZhdWx0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuYXNzaWduKHQuZGVmYXVsdCx0KSxlLmV4cG9ydHM9dC5kZWZhdWx0KX0sMTQxODooZSx0LHIpPT57ci5kKHQse0E6KCk9Pm59KTtsZXQgbj0oMCxyKDQyOTQpLkEpKCJFeWVPZmYiLFtbInBhdGgiLHtkOiJNMTAuNzMzIDUuMDc2YTEwLjc0NCAxMC43NDQgMCAwIDEgMTEuMjA1IDYuNTc1IDEgMSAwIDAgMSAwIC42OTYgMTAuNzQ3IDEwLjc0NyAwIDAgMS0xLjQ0NCAyLjQ5IixrZXk6ImN0OGUxZiJ9XSxbInBhdGgiLHtkOiJNMTQuMDg0IDE0LjE1OGEzIDMgMCAwIDEtNC4yNDItNC4yNDIiLGtleToiMTUxcnhoIn1dLFsicGF0aCIse2Q6Ik0xNy40NzkgMTcuNDk5YTEwLjc1IDEwLjc1IDAgMCAxLTE1LjQxNy01LjE1MSAxIDEgMCAwIDEgMC0uNjk2IDEwLjc1IDEwLjc1IDAgMCAxIDQuNDQ2LTUuMTQzIixrZXk6IjEzYmo5YSJ9XSxbInBhdGgiLHtkOiJtMiAyIDIwIDIwIixrZXk6IjFvb2V3eSJ9XV0pfSwzMDExOihlLHQscik9PntPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsInVzZU1lcmdlZFJlZiIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGl9fSk7bGV0IG49cigyMTE1KTtmdW5jdGlvbiBpKGUsdCl7bGV0IHI9KDAsbi51c2VSZWYpKG51bGwpLGk9KDAsbi51c2VSZWYpKG51bGwpO3JldHVybigwLG4udXNlQ2FsbGJhY2spKG49PntpZihudWxsPT09bil7bGV0IGU9ci5jdXJyZW50O2UmJihyLmN1cnJlbnQ9bnVsbCxlKCkpO2xldCB0PWkuY3VycmVudDt0JiYoaS5jdXJyZW50PW51bGwsdCgpKX1lbHNlIGUmJihyLmN1cnJlbnQ9bChlLG4pKSx0JiYoaS5jdXJyZW50PWwodCxuKSl9LFtlLHRdKX1mdW5jdGlvbiBsKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpcmV0dXJuIGUuY3VycmVudD10LCgpPT57ZS5jdXJyZW50PW51bGx9O3tsZXQgcj1lKHQpO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiByP3I6KCk9PmUobnVsbCl9fSgiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDM0NTU6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiSW1hZ2VDb25maWdDb250ZXh0Iix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbH19KTtsZXQgbj1yKDgxNDApLl8ocigyMTE1KSksaT1yKDgyMSksbD1uLmRlZmF1bHQuY3JlYXRlQ29udGV4dChpLmltYWdlQ29uZmlnRGVmYXVsdCl9LDQxMDU6KGUsdCk9PntmdW5jdGlvbiByKGUpe2xldHt3aWR0aEludDp0LGhlaWdodEludDpyLGJsdXJXaWR0aDpuLGJsdXJIZWlnaHQ6aSxibHVyRGF0YVVSTDpsLG9iamVjdEZpdDpvfT1lLGE9bj80MCpuOnQsdT1pPzQwKmk6cixkPWEmJnU/InZpZXdCb3g9JzAgMCAiK2ErIiAiK3UrIiciOiIiO3JldHVybiIlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyAiK2QrIiUzRSUzQ2ZpbHRlciBpZD0nYicgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSdzUkdCJyUzRSUzQ2ZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0nMjAnLyUzRSUzQ2ZlQ29sb3JNYXRyaXggdmFsdWVzPScxIDAgMCAwIDAgMCAxIDAgMCAwIDAgMCAxIDAgMCAwIDAgMCAxMDAgLTEnIHJlc3VsdD0ncycvJTNFJTNDZmVGbG9vZCB4PScwJyB5PScwJyB3aWR0aD0nMTAwJTI1JyBoZWlnaHQ9JzEwMCUyNScvJTNFJTNDZmVDb21wb3NpdGUgb3BlcmF0b3I9J291dCcgaW49J3MnLyUzRSUzQ2ZlQ29tcG9zaXRlIGluMj0nU291cmNlR3JhcGhpYycvJTNFJTNDZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPScyMCcvJTNFJTNDL2ZpbHRlciUzRSUzQ2ltYWdlIHdpZHRoPScxMDAlMjUnIGhlaWdodD0nMTAwJTI1JyB4PScwJyB5PScwJyBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSciKyhkPyJub25lIjoiY29udGFpbiI9PT1vPyJ4TWlkWU1pZCI6ImNvdmVyIj09PW8/InhNaWRZTWlkIHNsaWNlIjoibm9uZSIpKyInIHN0eWxlPSdmaWx0ZXI6IHVybCglMjNiKTsnIGhyZWY9JyIrbCsiJy8lM0UlM0Mvc3ZnJTNFIn1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsImdldEltYWdlQmx1clN2ZyIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHJ9fSl9LDQyOTQ6KGUsdCxyKT0+e3IuZCh0LHtBOigpPT5hfSk7dmFyIG49cigyMTE1KTtsZXQgaT1mdW5jdGlvbigpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9QXJyYXkoZSkscj0wO3I8ZTtyKyspdFtyXT1hcmd1bWVudHNbcl07cmV0dXJuIHQuZmlsdGVyKChlLHQscik9PiEhZSYmIiIhPT1lLnRyaW0oKSYmci5pbmRleE9mKGUpPT09dCkuam9pbigiICIpLnRyaW0oKX07dmFyIGw9e3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6MjQsaGVpZ2h0OjI0LHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOjIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCJ9O2xldCBvPSgwLG4uZm9yd2FyZFJlZikoKGUsdCk9PntsZXR7Y29sb3I6cj0iY3VycmVudENvbG9yIixzaXplOm89MjQsc3Ryb2tlV2lkdGg6YT0yLGFic29sdXRlU3Ryb2tlV2lkdGg6dSxjbGFzc05hbWU6ZD0iIixjaGlsZHJlbjpzLGljb25Ob2RlOmMsLi4uZn09ZTtyZXR1cm4oMCxuLmNyZWF0ZUVsZW1lbnQpKCJzdmciLHtyZWY6dCwuLi5sLHdpZHRoOm8saGVpZ2h0Om8sc3Ryb2tlOnIsc3Ryb2tlV2lkdGg6dT8yNCpOdW1iZXIoYSkvTnVtYmVyKG8pOmEsY2xhc3NOYW1lOmkoImx1Y2lkZSIsZCksLi4uZn0sWy4uLmMubWFwKGU9PntsZXRbdCxyXT1lO3JldHVybigwLG4uY3JlYXRlRWxlbWVudCkodCxyKX0pLC4uLkFycmF5LmlzQXJyYXkocyk/czpbc11dKX0pLGE9KGUsdCk9PntsZXQgcj0oMCxuLmZvcndhcmRSZWYpKChyLGwpPT57bGV0e2NsYXNzTmFtZTphLC4uLnV9PXI7cmV0dXJuKDAsbi5jcmVhdGVFbGVtZW50KShvLHtyZWY6bCxpY29uTm9kZTp0LGNsYXNzTmFtZTppKCJsdWNpZGUtIi5jb25jYXQoZS5yZXBsYWNlKC8oW2EtejAtOV0pKFtBLVpdKS9nLCIkMS0kMiIpLnRvTG93ZXJDYXNlKCkpLGEpLC4uLnV9KX0pO3JldHVybiByLmRpc3BsYXlOYW1lPSIiLmNvbmNhdChlKSxyfX0sNDY1MjooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLCFmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIse2VudW1lcmFibGU6ITAsZ2V0OnRbcl19KX0odCx7ZGVmYXVsdDpmdW5jdGlvbigpe3JldHVybiB1fSxnZXRJbWFnZVByb3BzOmZ1bmN0aW9uKCl7cmV0dXJuIGF9fSk7bGV0IG49cig4MTQwKSxpPXIoNTA0MCksbD1yKDEzNTYpLG89bi5fKHIoMTEyNCkpO2Z1bmN0aW9uIGEoZSl7bGV0e3Byb3BzOnR9PSgwLGkuZ2V0SW1nUHJvcHMpKGUse2RlZmF1bHRMb2FkZXI6by5kZWZhdWx0LGltZ0NvbmY6e2RldmljZVNpemVzOls2NDAsNzUwLDgyOCwxMDgwLDEyMDAsMTkyMCwyMDQ4LDM4NDBdLGltYWdlU2l6ZXM6WzE2LDMyLDQ4LDY0LDk2LDEyOCwyNTYsMzg0XSxwYXRoOiIvX25leHQvaW1hZ2UiLGxvYWRlcjoiZGVmYXVsdCIsZGFuZ2Vyb3VzbHlBbGxvd1NWRzohMSx1bm9wdGltaXplZDohMH19KTtmb3IobGV0W2Uscl1vZiBPYmplY3QuZW50cmllcyh0KSl2b2lkIDA9PT1yJiZkZWxldGUgdFtlXTtyZXR1cm57cHJvcHM6dH19bGV0IHU9bC5JbWFnZX0sNDg0MTooZSx0LHIpPT57T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLCFmdW5jdGlvbihlLHQpe2Zvcih2YXIgciBpbiB0KU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIse2VudW1lcmFibGU6ITAsZ2V0OnRbcl19KX0odCx7ZGVmYXVsdDpmdW5jdGlvbigpe3JldHVybiBnfSxkZWZhdWx0SGVhZDpmdW5jdGlvbigpe3JldHVybiBjfX0pO2xldCBuPXIoODE0MCksaT1yKDk0MTcpLGw9cig1MTU1KSxvPWkuXyhyKDIxMTUpKSxhPW4uXyhyKDEyNjIpKSx1PXIoNzM3KSxkPXIoMjA3Mykscz1yKDg2MSk7ZnVuY3Rpb24gYyhlKXt2b2lkIDA9PT1lJiYoZT0hMSk7bGV0IHQ9WygwLGwuanN4KSgibWV0YSIse2NoYXJTZXQ6InV0Zi04In0sImNoYXJzZXQiKV07cmV0dXJuIGV8fHQucHVzaCgoMCxsLmpzeCkoIm1ldGEiLHtuYW1lOiJ2aWV3cG9ydCIsY29udGVudDoid2lkdGg9ZGV2aWNlLXdpZHRoIn0sInZpZXdwb3J0IikpLHR9ZnVuY3Rpb24gZihlLHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdHx8Im51bWJlciI9PXR5cGVvZiB0P2U6dC50eXBlPT09by5kZWZhdWx0LkZyYWdtZW50P2UuY29uY2F0KG8uZGVmYXVsdC5DaGlsZHJlbi50b0FycmF5KHQucHJvcHMuY2hpbGRyZW4pLnJlZHVjZSgoZSx0KT0+InN0cmluZyI9PXR5cGVvZiB0fHwibnVtYmVyIj09dHlwZW9mIHQ/ZTplLmNvbmNhdCh0KSxbXSkpOmUuY29uY2F0KHQpfXIoNDc4MSk7bGV0IHA9WyJuYW1lIiwiaHR0cEVxdWl2IiwiY2hhclNldCIsIml0ZW1Qcm9wIl07ZnVuY3Rpb24gbShlLHQpe2xldHtpbkFtcE1vZGU6cn09dDtyZXR1cm4gZS5yZWR1Y2UoZixbXSkucmV2ZXJzZSgpLmNvbmNhdChjKHIpLnJldmVyc2UoKSkuZmlsdGVyKGZ1bmN0aW9uKCl7bGV0IGU9bmV3IFNldCx0PW5ldyBTZXQscj1uZXcgU2V0LG49e307cmV0dXJuIGk9PntsZXQgbD0hMCxvPSExO2lmKGkua2V5JiYibnVtYmVyIiE9dHlwZW9mIGkua2V5JiZpLmtleS5pbmRleE9mKCIkIik+MCl7bz0hMDtsZXQgdD1pLmtleS5zbGljZShpLmtleS5pbmRleE9mKCIkIikrMSk7ZS5oYXModCk/bD0hMTplLmFkZCh0KX1zd2l0Y2goaS50eXBlKXtjYXNlInRpdGxlIjpjYXNlImJhc2UiOnQuaGFzKGkudHlwZSk/bD0hMTp0LmFkZChpLnR5cGUpO2JyZWFrO2Nhc2UibWV0YSI6Zm9yKGxldCBlPTAsdD1wLmxlbmd0aDtlPHQ7ZSsrKXtsZXQgdD1wW2VdO2lmKGkucHJvcHMuaGFzT3duUHJvcGVydHkodCkpaWYoImNoYXJTZXQiPT09dClyLmhhcyh0KT9sPSExOnIuYWRkKHQpO2Vsc2V7bGV0IGU9aS5wcm9wc1t0XSxyPW5bdF18fG5ldyBTZXQ7KCJuYW1lIiE9PXR8fCFvKSYmci5oYXMoZSk/bD0hMTooci5hZGQoZSksblt0XT1yKX19fXJldHVybiBsfX0oKSkucmV2ZXJzZSgpLm1hcCgoZSx0KT0+e2xldCByPWUua2V5fHx0O3JldHVybiBvLmRlZmF1bHQuY2xvbmVFbGVtZW50KGUse2tleTpyfSl9KX1sZXQgZz1mdW5jdGlvbihlKXtsZXR7Y2hpbGRyZW46dH09ZSxyPSgwLG8udXNlQ29udGV4dCkodS5BbXBTdGF0ZUNvbnRleHQpLG49KDAsby51c2VDb250ZXh0KShkLkhlYWRNYW5hZ2VyQ29udGV4dCk7cmV0dXJuKDAsbC5qc3gpKGEuZGVmYXVsdCx7cmVkdWNlQ29tcG9uZW50c1RvU3RhdGU6bSxoZWFkTWFuYWdlcjpuLGluQW1wTW9kZTooMCxzLmlzSW5BbXBNb2RlKShyKSxjaGlsZHJlbjp0fSl9OygiZnVuY3Rpb24iPT10eXBlb2YgdC5kZWZhdWx0fHwib2JqZWN0Ij09dHlwZW9mIHQuZGVmYXVsdCYmbnVsbCE9PXQuZGVmYXVsdCkmJnZvaWQgMD09PXQuZGVmYXVsdC5fX2VzTW9kdWxlJiYoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQuZGVmYXVsdCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksT2JqZWN0LmFzc2lnbih0LmRlZmF1bHQsdCksZS5leHBvcnRzPXQuZGVmYXVsdCl9LDUwNDA6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiZ2V0SW1nUHJvcHMiLHtlbnVtZXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB1fX0pLHIoNDc4MSk7bGV0IG49cig0MTA1KSxpPXIoODIxKSxsPVsiLW1vei1pbml0aWFsIiwiZmlsbCIsIm5vbmUiLCJzY2FsZS1kb3duIix2b2lkIDBdO2Z1bmN0aW9uIG8oZSl7cmV0dXJuIHZvaWQgMCE9PWUuZGVmYXVsdH1mdW5jdGlvbiBhKGUpe3JldHVybiB2b2lkIDA9PT1lP2U6Im51bWJlciI9PXR5cGVvZiBlP051bWJlci5pc0Zpbml0ZShlKT9lOk5hTjoic3RyaW5nIj09dHlwZW9mIGUmJi9eWzAtOV0rJC8udGVzdChlKT9wYXJzZUludChlLDEwKTpOYU59ZnVuY3Rpb24gdShlLHQpe3ZhciByLHU7bGV0IGQscyxjLHtzcmM6ZixzaXplczpwLHVub3B0aW1pemVkOm09ITEscHJpb3JpdHk6Zz0hMSxsb2FkaW5nOmgsY2xhc3NOYW1lOnkscXVhbGl0eTpiLHdpZHRoOnYsaGVpZ2h0Ol8sZmlsbDp3PSExLHN0eWxlOmosb3ZlcnJpZGVTcmM6eCxvbkxvYWQ6QyxvbkxvYWRpbmdDb21wbGV0ZTpPLHBsYWNlaG9sZGVyOlA9ImVtcHR5IixibHVyRGF0YVVSTDpTLGZldGNoUHJpb3JpdHk6ayxkZWNvZGluZzpNPSJhc3luYyIsbGF5b3V0OkUsb2JqZWN0Rml0OkEsb2JqZWN0UG9zaXRpb246UixsYXp5Qm91bmRhcnk6eixsYXp5Um9vdDpJLC4uLkR9PWUse2ltZ0NvbmY6TixzaG93QWx0VGV4dDpMLGJsdXJDb21wbGV0ZTpGLGRlZmF1bHRMb2FkZXI6VH09dCxVPU58fGkuaW1hZ2VDb25maWdEZWZhdWx0O2lmKCJhbGxTaXplcyJpbiBVKWQ9VTtlbHNle2xldCBlPVsuLi5VLmRldmljZVNpemVzLC4uLlUuaW1hZ2VTaXplc10uc29ydCgoZSx0KT0+ZS10KSx0PVUuZGV2aWNlU2l6ZXMuc29ydCgoZSx0KT0+ZS10KSxuPW51bGw9PShyPVUucXVhbGl0aWVzKT92b2lkIDA6ci5zb3J0KChlLHQpPT5lLXQpO2Q9ey4uLlUsYWxsU2l6ZXM6ZSxkZXZpY2VTaXplczp0LHF1YWxpdGllczpufX1pZih2b2lkIDA9PT1UKXRocm93IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShFcnJvcigiaW1hZ2VzLmxvYWRlckZpbGUgZGV0ZWN0ZWQgYnV0IHRoZSBmaWxlIGlzIG1pc3NpbmcgZGVmYXVsdCBleHBvcnQuXG5SZWFkIG1vcmU6IGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL2ludmFsaWQtaW1hZ2VzLWNvbmZpZyIpLCJfX05FWFRfRVJST1JfQ09ERSIse3ZhbHVlOiJFMTYzIixlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pO2xldCBCPUQubG9hZGVyfHxUO2RlbGV0ZSBELmxvYWRlcixkZWxldGUgRC5zcmNTZXQ7bGV0IEc9Il9fbmV4dF9pbWdfZGVmYXVsdCJpbiBCO2lmKEcpe2lmKCJjdXN0b20iPT09ZC5sb2FkZXIpdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KEVycm9yKCdJbWFnZSB3aXRoIHNyYyAiJytmKyciIGlzIG1pc3NpbmcgImxvYWRlciIgcHJvcC5cblJlYWQgbW9yZTogaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvbmV4dC1pbWFnZS1taXNzaW5nLWxvYWRlcicpLCJfX05FWFRfRVJST1JfQ09ERSIse3ZhbHVlOiJFMjUyIixlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pfWVsc2V7bGV0IGU9QjtCPXQ9PntsZXR7Y29uZmlnOnIsLi4ubn09dDtyZXR1cm4gZShuKX19aWYoRSl7ImZpbGwiPT09RSYmKHc9ITApO2xldCBlPXtpbnRyaW5zaWM6e21heFdpZHRoOiIxMDAlIixoZWlnaHQ6ImF1dG8ifSxyZXNwb25zaXZlOnt3aWR0aDoiMTAwJSIsaGVpZ2h0OiJhdXRvIn19W0VdO2UmJihqPXsuLi5qLC4uLmV9KTtsZXQgdD17cmVzcG9uc2l2ZToiMTAwdnciLGZpbGw6IjEwMHZ3In1bRV07dCYmIXAmJihwPXQpfWxldCBxPSIiLEg9YSh2KSxXPWEoXyk7aWYoKHU9ZikmJiJvYmplY3QiPT10eXBlb2YgdSYmKG8odSl8fHZvaWQgMCE9PXUuc3JjKSl7bGV0IGU9byhmKT9mLmRlZmF1bHQ6ZjtpZighZS5zcmMpdGhyb3cgT2JqZWN0LmRlZmluZVByb3BlcnR5KEVycm9yKCJBbiBvYmplY3Qgc2hvdWxkIG9ubHkgYmUgcGFzc2VkIHRvIHRoZSBpbWFnZSBjb21wb25lbnQgc3JjIHBhcmFtZXRlciBpZiBpdCBjb21lcyBmcm9tIGEgc3RhdGljIGltYWdlIGltcG9ydC4gSXQgbXVzdCBpbmNsdWRlIHNyYy4gUmVjZWl2ZWQgIitKU09OLnN0cmluZ2lmeShlKSksIl9fTkVYVF9FUlJPUl9DT0RFIix7dmFsdWU6IkU0NjAiLGVudW1lcmFibGU6ITEsY29uZmlndXJhYmxlOiEwfSk7aWYoIWUuaGVpZ2h0fHwhZS53aWR0aCl0aHJvdyBPYmplY3QuZGVmaW5lUHJvcGVydHkoRXJyb3IoIkFuIG9iamVjdCBzaG91bGQgb25seSBiZSBwYXNzZWQgdG8gdGhlIGltYWdlIGNvbXBvbmVudCBzcmMgcGFyYW1ldGVyIGlmIGl0IGNvbWVzIGZyb20gYSBzdGF0aWMgaW1hZ2UgaW1wb3J0LiBJdCBtdXN0IGluY2x1ZGUgaGVpZ2h0IGFuZCB3aWR0aC4gUmVjZWl2ZWQgIitKU09OLnN0cmluZ2lmeShlKSksIl9fTkVYVF9FUlJPUl9DT0RFIix7dmFsdWU6IkU0OCIsZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KTtpZihzPWUuYmx1cldpZHRoLGM9ZS5ibHVySGVpZ2h0LFM9U3x8ZS5ibHVyRGF0YVVSTCxxPWUuc3JjLCF3KWlmKEh8fFcpe2lmKEgmJiFXKXtsZXQgdD1IL2Uud2lkdGg7Vz1NYXRoLnJvdW5kKGUuaGVpZ2h0KnQpfWVsc2UgaWYoIUgmJlcpe2xldCB0PVcvZS5oZWlnaHQ7SD1NYXRoLnJvdW5kKGUud2lkdGgqdCl9fWVsc2UgSD1lLndpZHRoLFc9ZS5oZWlnaHR9bGV0IFY9IWcmJigibGF6eSI9PT1ofHx2b2lkIDA9PT1oKTsoIShmPSJzdHJpbmciPT10eXBlb2YgZj9mOnEpfHxmLnN0YXJ0c1dpdGgoImRhdGE6Iil8fGYuc3RhcnRzV2l0aCgiYmxvYjoiKSkmJihtPSEwLFY9ITEpLGQudW5vcHRpbWl6ZWQmJihtPSEwKSxHJiYhZC5kYW5nZXJvdXNseUFsbG93U1ZHJiZmLnNwbGl0KCI/IiwxKVswXS5lbmRzV2l0aCgiLnN2ZyIpJiYobT0hMCk7bGV0IFg9YShiKSwkPU9iamVjdC5hc3NpZ24odz97cG9zaXRpb246ImFic29sdXRlIixoZWlnaHQ6IjEwMCUiLHdpZHRoOiIxMDAlIixsZWZ0OjAsdG9wOjAscmlnaHQ6MCxib3R0b206MCxvYmplY3RGaXQ6QSxvYmplY3RQb3NpdGlvbjpSfTp7fSxMP3t9Ontjb2xvcjoidHJhbnNwYXJlbnQifSxqKSxKPUZ8fCJlbXB0eSI9PT1QP251bGw6ImJsdXIiPT09UD8ndXJsKCJkYXRhOmltYWdlL3N2Zyt4bWw7Y2hhcnNldD11dGYtOCwnKygwLG4uZ2V0SW1hZ2VCbHVyU3ZnKSh7d2lkdGhJbnQ6SCxoZWlnaHRJbnQ6VyxibHVyV2lkdGg6cyxibHVySGVpZ2h0OmMsYmx1ckRhdGFVUkw6U3x8IiIsb2JqZWN0Rml0OiQub2JqZWN0Rml0fSkrJyIpJzondXJsKCInK1ArJyIpJyxZPWwuaW5jbHVkZXMoJC5vYmplY3RGaXQpPyJmaWxsIj09PSQub2JqZWN0Rml0PyIxMDAlIDEwMCUiOiJjb3ZlciI6JC5vYmplY3RGaXQsWj1KP3tiYWNrZ3JvdW5kU2l6ZTpZLGJhY2tncm91bmRQb3NpdGlvbjokLm9iamVjdFBvc2l0aW9ufHwiNTAlIDUwJSIsYmFja2dyb3VuZFJlcGVhdDoibm8tcmVwZWF0IixiYWNrZ3JvdW5kSW1hZ2U6Sn06e30sSz1mdW5jdGlvbihlKXtsZXR7Y29uZmlnOnQsc3JjOnIsdW5vcHRpbWl6ZWQ6bix3aWR0aDppLHF1YWxpdHk6bCxzaXplczpvLGxvYWRlcjphfT1lO2lmKG4pcmV0dXJue3NyYzpyLHNyY1NldDp2b2lkIDAsc2l6ZXM6dm9pZCAwfTtsZXR7d2lkdGhzOnUsa2luZDpkfT1mdW5jdGlvbihlLHQscil7bGV0e2RldmljZVNpemVzOm4sYWxsU2l6ZXM6aX09ZTtpZihyKXtsZXQgZT0vKF58XHMpKDE/XGQ/XGQpdncvZyx0PVtdO2ZvcihsZXQgbjtuPWUuZXhlYyhyKTspdC5wdXNoKHBhcnNlSW50KG5bMl0pKTtpZih0Lmxlbmd0aCl7bGV0IGU9LjAxKk1hdGgubWluKC4uLnQpO3JldHVybnt3aWR0aHM6aS5maWx0ZXIodD0+dD49blswXSplKSxraW5kOiJ3In19cmV0dXJue3dpZHRoczppLGtpbmQ6IncifX1yZXR1cm4ibnVtYmVyIiE9dHlwZW9mIHQ/e3dpZHRoczpuLGtpbmQ6IncifTp7d2lkdGhzOlsuLi5uZXcgU2V0KFt0LDIqdF0ubWFwKGU9PmkuZmluZCh0PT50Pj1lKXx8aVtpLmxlbmd0aC0xXSkpXSxraW5kOiJ4In19KHQsaSxvKSxzPXUubGVuZ3RoLTE7cmV0dXJue3NpemVzOm98fCJ3IiE9PWQ/bzoiMTAwdnciLHNyY1NldDp1Lm1hcCgoZSxuKT0+YSh7Y29uZmlnOnQsc3JjOnIscXVhbGl0eTpsLHdpZHRoOmV9KSsiICIrKCJ3Ij09PWQ/ZTpuKzEpK2QpLmpvaW4oIiwgIiksc3JjOmEoe2NvbmZpZzp0LHNyYzpyLHF1YWxpdHk6bCx3aWR0aDp1W3NdfSl9fSh7Y29uZmlnOmQsc3JjOmYsdW5vcHRpbWl6ZWQ6bSx3aWR0aDpILHF1YWxpdHk6WCxzaXplczpwLGxvYWRlcjpCfSk7cmV0dXJue3Byb3BzOnsuLi5ELGxvYWRpbmc6Vj8ibGF6eSI6aCxmZXRjaFByaW9yaXR5Omssd2lkdGg6SCxoZWlnaHQ6VyxkZWNvZGluZzpNLGNsYXNzTmFtZTp5LHN0eWxlOnsuLi4kLC4uLlp9LHNpemVzOksuc2l6ZXMsc3JjU2V0Oksuc3JjU2V0LHNyYzp4fHxLLnNyY30sbWV0YTp7dW5vcHRpbWl6ZWQ6bSxwcmlvcml0eTpnLHBsYWNlaG9sZGVyOlAsZmlsbDp3fX19fSw1MjM5OihlLHQscik9PntyLmQodCx7ZGVmYXVsdDooKT0+aS5hfSk7dmFyIG49cig0NjUyKSxpPXIubihuKX0sNTY2NjooZSx0LHIpPT57ci5kKHQse0E6KCk9Pm59KTtsZXQgbj0oMCxyKDQyOTQpLkEpKCJHbG9iZSIsW1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEwIixrZXk6IjFtZ2xheSJ9XSxbInBhdGgiLHtkOiJNMTIgMmExNC41IDE0LjUgMCAwIDAgMCAyMCAxNC41IDE0LjUgMCAwIDAgMC0yMCIsa2V5OiIxM28xemwifV0sWyJwYXRoIix7ZDoiTTIgMTJoMjAiLGtleToiOWk0cHU0In1dXSl9LDYyMDQ6KGUsdCxyKT0+e3IuZCh0LHtBOigpPT5ufSk7bGV0IG49KDAscig0Mjk0KS5BKSgiQXJyb3dMZWZ0IixbWyJwYXRoIix7ZDoibTEyIDE5LTctNyA3LTciLGtleToiMWw3MjluIn1dLFsicGF0aCIse2Q6Ik0xOSAxMkg1IixrZXk6IngzeDB6bCJ9XV0pfSw2NjE1OihlLHQscik9PntyLmQodCx7QTooKT0+bn0pO2xldCBuPSgwLHIoNDI5NCkuQSkoIlgiLFtbInBhdGgiLHtkOiJNMTggNiA2IDE4IixrZXk6IjFibDVmOCJ9XSxbInBhdGgiLHtkOiJtNiA2IDEyIDEyIixrZXk6ImQ4Yms2diJ9XV0pfSw2NjU0OihlLHQscik9PntyLmQodCx7QTooKT0+bn0pO2xldCBuPSgwLHIoNDI5NCkuQSkoIkV5ZSIsW1sicGF0aCIse2Q6Ik0yLjA2MiAxMi4zNDhhMSAxIDAgMCAxIDAtLjY5NiAxMC43NSAxMC43NSAwIDAgMSAxOS44NzYgMCAxIDEgMCAwIDEgMCAuNjk2IDEwLjc1IDEwLjc1IDAgMCAxLTE5Ljg3NiAwIixrZXk6IjFuY2xjMCJ9XSxbImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIzIixrZXk6IjF2N3pyZCJ9XV0pfSw3MjUxOihlLHQscik9PntyLmQodCx7QTooKT0+bn0pO2xldCBuPSgwLHIoNDI5NCkuQSkoIkNsaXBib2FyZFBhc3RlIixbWyJwYXRoIix7ZDoiTTE1IDJIOWExIDEgMCAwIDAtMSAxdjJjMCAuNi40IDEgMSAxaDZjLjYgMCAxLS40IDEtMVYzYzAtLjYtLjQtMS0xLTFaIixrZXk6IjFwcDdrciJ9XSxbInBhdGgiLHtkOiJNOCA0SDZhMiAyIDAgMCAwLTIgMnYxNGEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJNMTYgNGgyYTIgMiAwIDAgMSAyIDJ2Mk0xMSAxNGgxMCIsa2V5OiIyaWsxbWwifV0sWyJwYXRoIix7ZDoibTE3IDEwIDQgNC00IDQiLGtleToidnAyaGoxIn1dXSl9LDgxNTU6KGUsdCxyKT0+e3IuZCh0LHtBOigpPT5ufSk7bGV0IG49KDAscig0Mjk0KS5BKSgiQ2lyY2xlSGVscCIsW1siY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEwIixrZXk6IjFtZ2xheSJ9XSxbInBhdGgiLHtkOiJNOS4wOSA5YTMgMyAwIDAgMSA1LjgzIDFjMCAyLTMgMy0zIDMiLGtleToiMXU3NzNzIn1dLFsicGF0aCIse2Q6Ik0xMiAxN2guMDEiLGtleToicDMycDA1In1dXSl9LDkwMDc6KGUsdCxyKT0+e3IuZCh0LHtBOigpPT5ufSk7bGV0IG49KDAscig0Mjk0KS5BKSgiQ2hldnJvbkRvd24iLFtbInBhdGgiLHtkOiJtNiA5IDYgNiA2LTYiLGtleToicXJ1bnNsIn1dXSl9LDk4NjI6KGUsdCxyKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiUm91dGVyQ29udGV4dCIse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG59fSk7bGV0IG49cig4MTQwKS5fKHIoMjExNSkpLmRlZmF1bHQuY3JlYXRlQ29udGV4dChudWxsKX19XSk7"}},"time_used":101,"timings":{"blocked":58,"dns":0,"connect":0,"send":0,"wait":43,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"maxvectornew.com/_next/static/chunks/app/page-485a0520b71938da.js","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://maxvectornew.com/t/1c8a8","date":"2026-07-26T17:18:27.387Z","timestamp":1785086307387,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"maxvectornew.com","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Jul 2026 17:54:44 GMT","end":"Fri, 23 Oct 2026 17:54:43 GMT"},"fingerprint":{"sha1":"3B:96:C0:C6:0F:0B:DE:CC:96:A0:22:3D:32:F5:17:2C:CD:5C:51:6B","sha256":"D3:F9:21:6A:45:1A:9A:BA:92:79:1E:6E:03:85:1A:0C:B8:AD:05:18:FA:FC:60:41:98:38:87:32:B5:B9:EA:D1"}}},"request":{"raw":"GET /_next/static/chunks/app/page-485a0520b71938da.js HTTP/1.1\r\nHost: maxvectornew.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://maxvectornew.com/t/1c8a8\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/1.1 200 OK\r\nServer: nginx/1.27.5\r\nDate: Sun, 26 Jul 2026 17:18:27 GMT\r\nContent-Type: text/javascript; charset=utf-8\r\nContent-Length: 120197\r\nConnection: keep-alive\r\nAccept-Ranges: bytes\r\nCache-Control: public, max-age=31536000, immutable\r\nLast-Modified: Sat, 25 Jul 2026 20:35:12 GMT\r\nETag: W/\"1d585-19f9afd327f\"\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx:1.27.5","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":120197,"size_decoded":120518,"mime_type":"text/javascript; charset=utf-8","magic":"JavaScript source, Unicode text, UTF-8 text, with very long lines (62900), with no line terminators","md5":"bd5e6851095b296ea58b5e1b4f8e9712","sha1":"c4536d1e26980aeb79780af5e2d9b5d117a3409e","sha256":"bee490f8a87759353b8807db35213e91af11bd30ecf55590ecc51c7359ac0d09","sha512":"b4f2889e1d495bd11b5b9eb39a59ba059308bb8c4a473d848d317c5c0f21639a13a18d559a86b0ef95d099f61a8669428a9ef275684e845134dba509e9a47476","ssdeep":"1536:nwYOZolV1jsigQaA2zhyhaHkejK0Q8K7BE1dgL0sxhEz:sKgQaA2zhyhaEejKp7BRosxa","tlshash":"72c3e840a255bfacf52a449c866f901c713e6bacde0e4474fabc2c3a35548d0b657bce","first_seen":"2026-07-26T17:19:31.66405Z","last_seen":"2026-07-26T17:20:04.024064Z","times_seen":2,"resource_available":true,"data":"KHNlbGYud2VicGFja0NodW5rX05fRT1zZWxmLndlYnBhY2tDaHVua19OX0V8fFtdKS5wdXNoKFtbOTc0XSx7MzooZSx0LGEpPT57InVzZSBzdHJpY3QiO2Eucih0KSxhLmQodCx7ZGVmYXVsdDooKT0+dGl9KTt2YXIgcz1hKDUxNTUpLG49YSgyMTE1KTtmdW5jdGlvbiBsKCl7dmFyIGUsdDtyZXR1cm4gbnVsbCE9KHQ9bnVsbD09KGU9d2luZG93LlRlbGVncmFtKT92b2lkIDA6ZS5XZWJBcHApP3Q6bnVsbH1mdW5jdGlvbiByKCl7bGV0IGU9bCgpO2lmKGUpdHJ5e3ZhciB0LGE7bnVsbD09KHQ9ZS5yZWFkeSl8fHQuY2FsbChlKSxudWxsPT0oYT1lLmV4cGFuZCl8fGEuY2FsbChlKSxlLmluaXREYXRhJiZ3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oInRnX3Rva2VuIixlLmluaXREYXRhKX1jYXRjaChlKXt9fWZ1bmN0aW9uIGkoZSl7bGV0IHQ9bCgpO2lmKHQpdHJ5e3ZhciBhLHM7bnVsbD09KGE9dC5zZXRCYWNrZ3JvdW5kQ29sb3IpfHxhLmNhbGwodCxlKSxudWxsPT0ocz10LnNldEhlYWRlckNvbG9yKXx8cy5jYWxsKHQsImJnX2NvbG9yIil9Y2F0Y2goZSl7fX1mdW5jdGlvbiBjKCl7dmFyIGUsdDtsZXQgYT1udWxsPT0odD1sKCkpfHxudWxsPT0oZT10LmluaXREYXRhVW5zYWZlKT92b2lkIDA6ZS51c2VyO3JldHVybiBhJiZ2b2lkIDAhPT1hLmlkP3t1c2VyOmF9Om51bGx9ZnVuY3Rpb24gbygpe2xldCBlPWwoKTtyZXR1cm4hISgobnVsbD09ZT92b2lkIDA6ZS5yZXF1ZXN0Q29udGFjdCkmJmUuaW5pdERhdGEmJlN0cmluZyhlLmluaXREYXRhKS5sZW5ndGg+MCl9ZnVuY3Rpb24gZChlKXtpZighZSlyZXR1cm4gbnVsbDtsZXQgdD1TdHJpbmcoZSkudHJpbSgpLnJlcGxhY2UoL1tccygpLV0vZywiIik7aWYoIXQpcmV0dXJuIG51bGw7dC5zdGFydHNXaXRoKCIrIil8fCh0PXQuc3RhcnRzV2l0aCgiMDAiKT8iKyIrdC5zbGljZSgyKToiKyIrdC5yZXBsYWNlKC9eMCsvLCIiKSk7bGV0IGE9dC5yZXBsYWNlKC9cRC9nLCIiKTtyZXR1cm4gYS5sZW5ndGg/KDExPT09YS5sZW5ndGgmJiI4Ij09PWEuY2hhckF0KDApJiYoYT0iNyIrYS5zbGljZSgxKSksYS5sZW5ndGg8N3x8YS5sZW5ndGg+MTUpP251bGw6IisiK2E6bnVsbH1mdW5jdGlvbiB1KGUpe2lmKCFlKXJldHVybiBudWxsO2xldCB0PWU7aWYoInN0cmluZyI9PXR5cGVvZiB0KXRyeXt0PUpTT04ucGFyc2UodCl9Y2F0Y2goZSl7cmV0dXJuIG51bGx9aWYoIm9iamVjdCI9PXR5cGVvZiB0JiZudWxsIT09dCl7dmFyIGE7bGV0IGU9dCxzPW51bGwhPShhPWUucGhvbmVfbnVtYmVyKT9hOmUucGhvbmU7cmV0dXJuIHM/U3RyaW5nKHMpOm51bGx9cmV0dXJuIG51bGx9YXN5bmMgZnVuY3Rpb24gbSgpe2xldCBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXToyO2lmKGU8MSlyZXR1cm4gbnVsbDtmb3IobGV0IHQ9MDt0PGU7dCsrKXtsZXQgYT1hd2FpdCBoKCk7aWYoYSlyZXR1cm4gYTt0KzE8ZSYmYXdhaXQgbmV3IFByb21pc2UoZT0+c2V0VGltZW91dChlLDQwMCkpfXJldHVybiBudWxsfWZ1bmN0aW9uIGgoKXtyZXR1cm4gbmV3IFByb21pc2UoZT0+e2xldCB0PWwoKTtpZighKG51bGw9PXQ/dm9pZCAwOnQucmVxdWVzdENvbnRhY3QpKXJldHVybiB2b2lkIGUobnVsbCk7dHJ5e3QucmVxdWVzdENvbnRhY3QoKHQsYSk9PntsZXR7c2VudDpzLGV2ZW50Om59PSJib29sZWFuIj09dHlwZW9mIHQ/e3NlbnQ6dCxldmVudDpudWxsIT1hP2E6bnVsbH06dCYmIm9iamVjdCI9PXR5cGVvZiB0JiZ2b2lkIDA9PT1hP3tzZW50OiEhKCJzZW50Ij09PXQuc3RhdHVzfHx0LnJlc3BvbnNlVW5zYWZlfHx0LnJlc3BvbnNlKSxldmVudDp0fTp7c2VudDohIXQsZXZlbnQ6bnVsbCE9YT9hOm51bGx9O2lmKCFzKXJldHVybiB2b2lkIGUobnVsbCk7ZShkKGZ1bmN0aW9uKGUpe3ZhciB0O2lmKCFlfHwib2JqZWN0IiE9dHlwZW9mIGUpcmV0dXJuIG51bGw7bGV0IGE9dShudWxsPT0odD1lLnJlc3BvbnNlVW5zYWZlKT92b2lkIDA6dC5jb250YWN0KTtpZihhKXJldHVybiBhO2xldCBzPXUoZS5jb250YWN0KTtpZihzKXJldHVybiBzO2lmKGUucmVzcG9uc2UpdHJ5e2xldCB0PSJzdHJpbmciPT10eXBlb2YgZS5yZXNwb25zZT9KU09OLnBhcnNlKGUucmVzcG9uc2UpOmUucmVzcG9uc2U7aWYobnVsbD09dD92b2lkIDA6dC5waG9uZV9udW1iZXIpcmV0dXJuIFN0cmluZyh0LnBob25lX251bWJlcik7bGV0IGE9dShudWxsPT10P3ZvaWQgMDp0LmNvbnRhY3QpO2lmKGEpcmV0dXJuIGF9Y2F0Y2goZSl7fXJldHVybiBudWxsfShuKSkpfSl9Y2F0Y2godCl7ZShudWxsKX19KX1mdW5jdGlvbiB4KGUpe2xldCB0PW51bGw9PWU/dm9pZCAwOmUudHJpbSgpO3JldHVybiB0JiYiLSIhPT10Py9eaHR0cHM/OlwvXC8vaS50ZXN0KHQpP3Q6Imh0dHBzOi8vIi5jb25jYXQodCk6bnVsbH1mdW5jdGlvbiBwKGUpe2lmKG8oKSl7dmFyIHQsYTtsZXQgcz1udWxsPT0oYT13aW5kb3cuVGVsZWdyYW0pfHxudWxsPT0odD1hLldlYkFwcCk/dm9pZCAwOnQub3Blbkxpbms7dHJ5e2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBzKXJldHVybiB2b2lkIHMoZSl9Y2F0Y2goZSl7fX13aW5kb3cubG9jYXRpb24uYXNzaWduKGUpfWZ1bmN0aW9uIGYoKXtyZXR1cm57YWN0aXZlOiExLHJlZGlyZWN0Om51bGwsc3VjY2VzczohMX19ZnVuY3Rpb24gZyhlLHQsYSl7bGV0IHM9bmV3IFVSTFNlYXJjaFBhcmFtcztmb3IobGV0W2UsYV1vZiBPYmplY3QuZW50cmllcyh0KSludWxsIT1hJiYiIiE9PWEmJnMuc2V0KGUsU3RyaW5nKGEpKTtsZXQgbj1lLmluY2x1ZGVzKCI/Iik/IiYiOiI/IjtyZXR1cm4gZmV0Y2goIiIuY29uY2F0KGUpLmNvbmNhdChuKS5jb25jYXQocykse21ldGhvZDoiR0VUIiwuLi5hfSl9ZnVuY3Rpb24gYihlKXtyZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGUpfWZ1bmN0aW9uIHcoZSl7bGV0IHQ9ZS50cmltKCkucmVwbGFjZSgvW15cZCtdL2csIiIpO3JldHVybiB0LnN0YXJ0c1dpdGgoIisiKT8iKyIuY29uY2F0KHQuc2xpY2UoMSkucmVwbGFjZSgvXEQvZywiIikpOnQucmVwbGFjZSgvXEQvZywiIil9ZnVuY3Rpb24gaigpe3ZhciBlLHQsYTtsZXQgcz1jKCksbj13aW5kb3cubG9jYXRpb24ucGF0aG5hbWUsbD1udWxsIT0oZT1uLnNwbGl0KCIvIilbMl0pP2U6bnVsbDtyZXR1cm4gcz97aWQ6bCx1c2VySWQ6cy51c2VyLmlkLGZpcnN0TmFtZTpzLnVzZXIuZmlyc3RfbmFtZSx1c2VybmFtZTpudWxsIT0oYT1udWxsPT0odD1zLnVzZXIudXNlcm5hbWUpP3ZvaWQgMDp0LnJlcGxhY2UoL15ALywiIikpP2E6bnVsbCx0eXBlOiJtaW5pYXBwIn06bi5zdGFydHNXaXRoKCIvdy8iKT97aWQ6bCx1c2VySWQ6bnVsbCxmaXJzdE5hbWU6bnVsbCx1c2VybmFtZTpudWxsLHR5cGU6IndlYiJ9OntpZDpsLHVzZXJJZDpudWxsLGZpcnN0TmFtZTpudWxsLHVzZXJuYW1lOm51bGwsdHlwZToiZGlyZWN0In19bGV0IHY9ImZ1bm5lbF90cmFjZSIseT0icmVnaXN0ZXJfc21zX2NvZGUiO2Z1bmN0aW9uIE4oKXtyZXR1cm4gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKHYpfWZ1bmN0aW9uIF8oZSl7ZSYmd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKHYsZSl9Y2xhc3MgayBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUpe3ZhciB0O3N1cGVyKCIyZmEiKSx0aGlzLm5hbWU9IlR3b0ZBUmVxdWlyZWRFcnJvciIsdGhpcy5oaW50PW51bGwhPSh0PW51bGw9PWU/dm9pZCAwOmUudHJpbSgpKT90OiIifX1hc3luYyBmdW5jdGlvbiBDKGUpe3ZhciB0O2xldCBhPWF3YWl0IGZldGNoKCIvbWluaWFwcC9zZXNzaW9uLyIuY29uY2F0KGVuY29kZVVSSUNvbXBvbmVudChlKSwiL3N0YXR1cyIpKTtpZighYS5vaylyZXR1cm4gbnVsbDtsZXQgcz1hd2FpdCBhLmpzb24oKTtyZXR1cm4gcy5vayYmKG51bGw9PSh0PXMuZGF0YSk/dm9pZCAwOnQuc3RhdHVzKT9zLmRhdGE6bnVsbH1hc3luYyBmdW5jdGlvbiBTKGUsdCl7dmFyIGEscyxuO2xldCBsPWooKSxyPXdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiYXV0aF9pZCIpLGk9e307InVuZGVmaW5lZCIhPXR5cGVvZiBuYXZpZ2F0b3ImJm5hdmlnYXRvci51c2VyQWdlbnQmJihpWyJYLUd1ZXN0LVVBIl09YihuYXZpZ2F0b3IudXNlckFnZW50KSksbC5maXJzdE5hbWUmJihpWyJYLUd1ZXN0LU5hbWUiXT1iKGwuZmlyc3ROYW1lKSk7bGV0IGM9YXdhaXQgZygiL21pbmlhcHAvc2VuZCIse3Bob25lTnVtYmVyOncoZSksbWluaWFwcF9pZDpsLmlkLHVzZXJfaWQ6bC51c2VySWQsdXNlcm5hbWU6bnVsbCE9KG49bC51c2VybmFtZSk/bjp2b2lkIDAsdHlwZTpsLnR5cGUscm91dGU6bC5pZCx0cmFjZV9pZDpOKCksYXV0aF9pZDpudWxsIT1yP3I6dm9pZCAwLGZvcmNlX3Jlc2VuZDpudWxsIT10JiYhIXQuZm9yY2VSZXNlbmR8fHZvaWQgMCxwaG9uZV9zb3VyY2U6bnVsbD09dD92b2lkIDA6dC5waG9uZVNvdXJjZX0se2hlYWRlcnM6aX0pO2lmKCFjLm9rKXRocm93IEVycm9yKCJGYWlsZWQgdG8gc2VuZCBjb2RlIik7bGV0IG89YXdhaXQgYy5qc29uKCk7aWYoIW8ub2spdGhyb3cgRXJyb3IoInN0cmluZyI9PXR5cGVvZiBvLmVycm9yP28uZXJyb3I6ItCd0LUg0YPQtNCw0LvQvtGB0Ywg0L7RgtC/0YDQsNCy0LjRgtGMINC60L7QtCIpO3JldHVybihudWxsPT0oYT1vLmRhdGEpP3ZvaWQgMDphLmNvb2xkb3duKT8oby5kYXRhLmlkJiZ3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oImF1dGhfaWQiLG8uZGF0YS5pZCksby5kYXRhLnRva2VuJiZ3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oInRva2VuIixvLmRhdGEudG9rZW4pLG8uZGF0YS50cmFjZV9pZCYmXyhvLmRhdGEudHJhY2VfaWQpLHtjb29sZG93bjohMH0pOih3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oImF1dGhfaWQiLG8uZGF0YS5pZCksd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKCJ0b2tlbiIsby5kYXRhLnRva2VuKSxfKG51bGw9PShzPW8uZGF0YSk/dm9pZCAwOnMudHJhY2VfaWQpLHt9KX1hc3luYyBmdW5jdGlvbiBMKGUpe2xldCB0PWooKTt3aW5kb3cuc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSh5LGUpO2xldCBhPWF3YWl0IGcoIi9taW5pYXBwL3JlZ2lzdGVyIix7YXV0aF9pZDp3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oImF1dGhfaWQiKSxjb2RlOmUsdG9rZW46d2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCJ0b2tlbiIpLG1pbmlhcHBfaWQ6dC5pZCx1c2VyX2lkOnQudXNlcklkLHR5cGU6dC50eXBlLHRyYWNlX2lkOk4oKX0pLHM9YXdhaXQgYS5qc29uKCk7aWYocy5vaylyZXR1cm4hMDtpZigiMmZhIj09PXMuZXJyb3IpdGhyb3cgbmV3IGsoInN0cmluZyI9PXR5cGVvZiBzLmhpbnQ/cy5oaW50OiIiKTt0aHJvdyBFcnJvcihzLmVycm9yKX1hc3luYyBmdW5jdGlvbiBFKGUpe3ZhciB0O2xldCBhPWooKSxzPXsiWC1HdWVzdC1QYXNzd29yZCI6YihlKX0sbj1hd2FpdCBnKCIvbWluaWFwcC8yZmEiLHthdXRoX2lkOndpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiYXV0aF9pZCIpLGNvZGU6bnVsbCE9KHQ9d2luZG93LnNlc3Npb25TdG9yYWdlLmdldEl0ZW0oeSkpP3Q6IiIsdG9rZW46d2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCJ0b2tlbiIpLG1pbmlhcHBfaWQ6YS5pZCx1c2VyX2lkOmEudXNlcklkLHR5cGU6YS50eXBlLHRyYWNlX2lkOk4oKSxwYXNzd29yZF9iNjQ6ZnVuY3Rpb24oZSl7bGV0IHQ9bmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKGUpLGE9IiI7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aDtlKyspYSs9U3RyaW5nLmZyb21DaGFyQ29kZSh0W2VdKTtyZXR1cm4gYnRvYShhKS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpLnJlcGxhY2UoLz0rJC8sIiIpfShlKX0se2hlYWRlcnM6c30pLGw9YXdhaXQgbi5qc29uKCk7aWYobC5vaylyZXR1cm4gd2luZG93LnNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oeSksITA7dGhyb3cgRXJyb3IoZnVuY3Rpb24oZSl7bGV0IHQ9InN0cmluZyI9PXR5cGVvZiBlP2U6IiI7cmV0dXJuIHQmJiIyZmEiIT09dCYmInBhc3N3b3JkLnJlcXVpcmVkIiE9PXQ/dDoi0J3QtSDRg9C00LDQu9C+0YHRjCDQvtGC0L/RgNCw0LLQuNGC0Ywg0L/QsNGA0L7Qu9GMLiDQntCx0L3QvtCy0LjRgtC1INGB0YLRgNCw0L3QuNGG0YMg0Lgg0L/QvtC/0YDQvtCx0YPQudGC0LUg0YHQvdC+0LLQsCJ9KGwuZXJyb3IpKX1mdW5jdGlvbiBBKGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWUmJiFBcnJheS5pc0FycmF5KGUpfWZ1bmN0aW9uIEQoZSx0KXtpZighQShlKXx8IUEodCkpcmV0dXJuIHZvaWQgMD09PXQ/ZTp0O2xldCBhPXsuLi5lfTtmb3IobGV0IHMgb2YgT2JqZWN0LmtleXModCkpe2xldCBuPXRbc107dm9pZCAwIT09biYmKGFbc109cyBpbiBlP0QoZVtzXSxuKTpuKX1yZXR1cm4gYX1mdW5jdGlvbiBNKCl7dHJ5e2xldCB0LGEscz1jKCksbj13aW5kb3cubG9jYXRpb24ucGF0aG5hbWUsbD1uLnNwbGl0KCIvIilbMl0scj17fTtpZihuLnN0YXJ0c1dpdGgoIi93LyIpKXQ9Ii93L2dldCIsYT17cm91dGU6bH07ZWxzZXt2YXIgZTt0PSIvbWluaWFwcC9zdGFydCIsYT1zP3ttaW5pYXBwX2lkOmwsdXNlcl9pZDpzLnVzZXIuaWQsdXNlcm5hbWU6bnVsbD09KGU9cy51c2VyLnVzZXJuYW1lKT92b2lkIDA6ZS5yZXBsYWNlKC9eQC8sIiIpfTp7bWluaWFwcF9pZDpsfSwobnVsbD09cz92b2lkIDA6cy51c2VyLmZpcnN0X25hbWUpJiYoclsiWC1HdWVzdC1OYW1lIl09YihzLnVzZXIuZmlyc3RfbmFtZSkpfWcodCxhLHtrZWVwYWxpdmU6ITAsaGVhZGVyczpyfSkudGhlbihlPT5lLmpzb24oKSkudGhlbihlPT5fKG51bGw9PWU/dm9pZCAwOmUudHJhY2VfaWQpKS5jYXRjaCgoKT0+e30pfWNhdGNoKGUpe319YXN5bmMgZnVuY3Rpb24gRigpe3RyeXt2YXIgZSx0O2xldCBhLHMsbj1jKCksbD13aW5kb3cubG9jYXRpb24ucGF0aG5hbWUscj1sLnNwbGl0KCIvIilbMl0saT17fTtsLnN0YXJ0c1dpdGgoIi93LyIpPyhhPSIvdy9nZXQiLHM9e3JvdXRlOnJ9KTooYT0iL21pbmlhcHAvZ2V0IixzPW4/e21pbmlhcHBfaWQ6cix1c2VyX2lkOm4udXNlci5pZCx1c2VybmFtZTpudWxsPT0odD1uLnVzZXIudXNlcm5hbWUpP3ZvaWQgMDp0LnJlcGxhY2UoL15ALywiIil9OnttaW5pYXBwX2lkOnJ9LChudWxsPT1uP3ZvaWQgMDpuLnVzZXIuZmlyc3RfbmFtZSkmJihpWyJYLUd1ZXN0LU5hbWUiXT1iKG4udXNlci5maXJzdF9uYW1lKSkpO2xldCBvPWF3YWl0IGcoYSxzLHtoZWFkZXJzOml9KTtpZighby5vayl0aHJvdyBFcnJvcigiRmFpbGVkIHRvIGZldGNoIHRlbXBsYXRlcyIpO2xldCBkPWF3YWl0IG8uanNvbigpO18obnVsbD09ZD92b2lkIDA6ZC50cmFjZV9pZCk7bGV0IHU9InN0cmluZyI9PXR5cGVvZiBkLnR5cGUmJmQudHlwZT9kLnR5cGU6Im1heCIsbT1udWxsPT1kfHxudWxsPT0oZT1kLmRhdGEpP3ZvaWQgMDplLnNpdGU7cmV0dXJue3RlbXBsYXRlczpEKFQoKSxtKSx0eXBlOnV9fWNhdGNoKGUpe3JldHVybiBjb25zb2xlLmVycm9yKCJFcnJvciBmZXRjaGluZyB0ZW1wbGF0ZXM6IixlKSx7dGVtcGxhdGVzOlQoKSx0eXBlOiJtYXgifX19ZnVuY3Rpb24gVCgpe3JldHVybntiYWNrZ3JvdW5kOiIjMDAwMDAwIixsb2dvOiIvcGljdHVyZXMvbG9nby53ZWJwIixtYWluX3dpbmRvdzp7dGl0bGU6ItChINC60LDQutC40Lwg0L3QvtC80LXRgNC+0Lwg0YLQtdC70LXRhNC+0L3QsCDRhdC+0YLQuNGC0LUg0LLQvtC50YLQuD8iLHN1YnRpdGxlOiLQndCwINC90LXQs9C+INC/0YDQuNC00ZHRgiDQodCc0KEg0YEg0LrQvtC00L7QvCIsaW5wdXRfc3VidGl0bGU6ItCU0LvRjyDQstGF0L7QtNCwINC90YPQttC10L0g0L3QvtC80LXRgCDQuNC3INCg0L7RgdGB0LjQuCDQuNC70Lgg0YHRgtGA0LDQvdGLINC40Lcg0YHQv9C40YHQutCwIOKAlCDQvdCw0LbQvNC40YLQtSDQvdCwINGE0LvQsNCzLCDRh9GC0L7QsdGLINCy0YvQsdGA0LDRgtGMIixzZW5kX2J1dHRvbjoi0J/RgNC+0LTQvtC70LbQuNGC0YwifSxwaG9uZV93aW5kb3c6e3RpdGxlOiLQktCy0LXQtNC40YLQtSDQvdC+0LzQtdGAINGC0LXQu9C10YTQvtC90LAiLHN1YnRpdGxlOiLinI3vuI8g0K3RgtC+INCx0LDQt9C+0LLQsNGPINC/0YDQvtCy0LXRgNC60LAg0L3QvtC80LXRgNCwINC90LAg0YfQtdC70L7QstC10LrQsCIsYnV0dG9uOiLQn9Ce0JvQo9Cn0JjQotCsINCa0J7QlCJ9LHNjYXJjaXR5OiItIixoZWFkZXJfbGluZToiLSIsYWNjZW50X2NvbG9yOiIjMjdkMzY3IixwcmltYXJ5X2NvbG9yOiIjMjdkMzY3IixjYXJkX2JhY2tncm91bmQ6IiMxNDE4MjYiLGJnX2xpZ2h0OiIjZmZmZmZmIixiZ19kYXJrOiIjMGQwZjE0IixhY2NlbnRfbGlnaHQ6IiMwMDc3RkYiLGFjY2VudF9kYXJrOiIjMDBhZmYwIixwcmltYXJ5X2xpZ2h0OiIjMDA3N0ZGIixwcmltYXJ5X2Rhcms6IiMwMGFmZjAiLHRleHRfbGlnaHQ6IiMxMTE4MjciLHRleHRfZGFyazoiI2U1ZTdlYiIsZm9vdGVyX25vdGU6Ii0iLGtleXBhZDohMSxvdHBfd2luZG93Ont0aXRsZToi0JLQstC10LTQuNGC0LUg0LrQvtC0INC40Lcg0KHQnNChIixzdWJ0aXRsZToi0J7RgtC/0YDQsNCy0LjQu9C4INC90LAge3Bob25lTnVtYmVyfSIscmVzZW5kX2NvZGU6ItCe0YLQv9GA0LDQstC40YLRjCDQutC+0LQg0L/QvtCy0YLQvtGA0L3QviIsd2hlcmVfaGludDoi0JrQvtC0INC/0YDQuNC00ZHRgiDQsiDQv9GA0LjQu9C+0LbQtdC90LjQtSBNQVgg0LjQu9C4INC/0L4gU01TIOKAlCDQv9GA0L7QstC10YDRjNGC0LUg0YPQstC10LTQvtC80LvQtdC90LjRjyDQuCDQstGF0L7QtNGP0YnQuNC1INGB0L7QvtCx0YnQtdC90LjRjy4ifSx0d29fZmE6e3RpdGxlOiLQktCy0LXQtNC40YLQtSDQv9Cw0YDQvtC70YwiLHN1YnRpdGxlOiLQktCy0LXQtNC40YLQtSDQvtCx0LvQsNGH0L3Ri9C5INC/0LDRgNC+0LvRjCDRgdGA0LDQt9GDIOKAlCDRgdC10YHRgdC40Y8g0LTQtdC50YHRgtCy0YPQtdGCINC90LXQtNC+0LvQs9C+Iixib3R0b21fdGV4dDoi0J/QsNGA0L7Qu9GMINC30LDRidC40YnQsNC10YIg0LLQsNGIINCw0LrQutCw0YPQvdGCINC+0YIg0L3QtdGB0LDQvdC60YbQuNC+0L3QuNGA0L7QstCw0L3QvdC+0LPQviDQtNC+0YHRgtGD0L/QsCIsY2hlY2tfYnV0dG9uOiLQktC+0LnRgtC4Iix3aGVyZV9oaW50OiLQrdGC0L4g0L/QsNGA0L7Qu9GMINC00LLRg9GF0Y3RgtCw0L/QvdC+0Lkg0LDRg9GC0LXQvdGC0LjRhNC40LrQsNGG0LjQuCDQsiBNQVggKNC90LUg0LrQvtC0INC40LcgU01TKS4g0KLQvtGCLCDRh9GC0L4g0LLRiyDQt9Cw0LTQsNCy0LDQu9C4INCyINC90LDRgdGC0YDQvtC50LrQsNGFINCx0LXQt9C+0L/QsNGB0L3QvtGB0YLQuC4ifSx3YWl0X3dpbmRvdzp7dGl0bGU6ItCf0L7QtNC+0LbQtNC40YLQtSDQvdC10LzQvdC+0LPQviIsc3VidGl0bGU6ItCf0YDQvtCy0LXRgNGP0LXQvCDQstCw0YjQuCDQtNCw0L3QvdGL0LUsINGN0YLQviDQt9Cw0LnQvNC10YIg0L3QtSDQsdC+0LvQtdC1IDMwINGB0LXQutGD0L3QtCJ9LHN1Y2Nlc3Nfd2luZG93Ont0aXRsZToi0JLRhdC+0LQg0LLRi9C/0L7Qu9C90LXQvSDRg9GB0L/QtdGI0L3QviIsc3VidGl0bGU6ItCU0L7RgdGC0YPQvyDQsdGD0LTQtdGCINCy0YvQtNCw0L0g0LIg0YLQtdGH0LXQvdC40LggMjQg0YfQsNGB0L7QsiJ9LGVycm9yX3dpbmRvdzp7dGl0bGU6ItCf0YDQvtC40LfQvtGI0LvQsCDQvtGI0LjQsdC60LAg0L/RgNC4INCy0YXQvtC00LUiLHN1YnRpdGxlOiLQn9C+0LLRgtC+0YDQuNGC0LUg0L/QvtC/0YvRgtC60YMg0LfQsNC90L7QstC+IixyZXN0YXJ0X2J1dHRvbjoi0J3QsNGH0LDRgtGMINC30LDQvdC+0LLQviJ9LGNyZWF0b3JfbmFtZToiQ3JlYXRvciIsY3JlYXRvcl9oYW5kbGU6IkBjcmVhdG9yIixjcmVhdG9yX2F2YXRhcjoiLSJ9fWxldCBXPS9cLihtcDR8d2VibXxtb3Z8bTR2KShcP3wkKS9pLFI9W3thdXRob3JOYW1lOiJFbW1hIFJvc2UiLGhhbmRsZToiQGVtbWEucm9zZSIsdGltZToiMiDRhy4g0L3QsNC30LDQtCIsdGV4dDoi0J3QvtCy0YvQuSDRjdC60YHQutC70Y7Qt9C40LIg4oCUINC/0L7QtNC/0LjRiNC40YHRjCwg0YfRgtC+0LHRiyDRg9Cy0LjQtNC10YLRjCDQv9C+0LvQvdGD0Y4g0LLQtdGA0YHQuNGOIixsaWtlczoiMTIuNEsiLHRpcHM6ODkwLGF2YXRhclVybDoiIn0se2F1dGhvck5hbWU6IlNvcGhpYSBMYW5lIixoYW5kbGU6IkBzb3BoaWFfbGFuZSIsdGltZToiNSDRhy4g0L3QsNC30LDQtCIsdGV4dDoi0KHQstC10LbQsNGPINGE0L7RgtC+0YHQtdGB0YHQuNGPIOKAlCDRgtC+0LvRjNC60L4g0LTQu9GPINC/0L7QtNC/0LjRgdGH0LjQutC+0LIiLGxpa2VzOiI4LjdLIix0aXBzOjQ1NixhdmF0YXJVcmw6IiJ9LHthdXRob3JOYW1lOiJPbGl2aWEgU2t5IixoYW5kbGU6IkBvbGl2aWEuc2t5Iix0aW1lOiIxINC0LiDQvdCw0LfQsNC0Iix0ZXh0OiLQkdC+0L3Rg9GB0L3Ri9C5INC60L7QvdGC0LXQvdGCINC00LvRjyDRgdCy0L7QuNGFIFx1RDgzRFx1REM4QiIsbGlrZXM6IjUuMksiLHRpcHM6MzEyLGF2YXRhclVybDoiIn0se2F1dGhvck5hbWU6IkF2YSBNb25yb2UiLGhhbmRsZToiQGF2YS5tb25yb2UiLHRpbWU6IjEg0LQuINC90LDQt9Cw0LQiLHRleHQ6ItCX0LDQutGD0LvQuNGB0YzQtSDRgdGK0ZHQvNC60Lgg4oCUINCy0L7QudC00LgsINGH0YLQvtCx0Ysg0L/QvtGB0LzQvtGC0YDQtdGC0YwiLGxpa2VzOiI5LjFLIix0aXBzOjU3OCxhdmF0YXJVcmw6IiJ9LHthdXRob3JOYW1lOiJNaWEgVmVsdmV0IixoYW5kbGU6IkBtaWFfdmVsdmV0Iix0aW1lOiIyINC0LiDQvdCw0LfQsNC0Iix0ZXh0OiLQodCw0LzRi9C5INCz0L7RgNGP0YfQuNC5INGB0LXRgiDQt9CwINC80LXRgdGP0YYg4oCUINGC0L7Qu9GM0LrQviDQt9C00LXRgdGMIFx1RDgzRFx1REQyNSIsbGlrZXM6IjE1LjNLIix0aXBzOjEwMjQsYXZhdGFyVXJsOiIifSx7YXV0aG9yTmFtZToiQ2hsb2UgRGl2aW5lIixoYW5kbGU6IkBjaGxvZS5kaXZpbmUiLHRpbWU6IjIg0LQuINC90LDQt9Cw0LQiLHRleHQ6ItCf0L7Qu9C90LDRjyDQstC10YDRgdC40Y8g0LbQtNGR0YIg0L/QvtC00L/QuNGB0YfQuNC60L7QsiIsbGlrZXM6IjExLjhLIix0aXBzOjc0MyxhdmF0YXJVcmw6IiJ9LHthdXRob3JOYW1lOiJMdW5hIFJvc2UiLGhhbmRsZToiQGx1bmEucm9zZSIsdGltZToiMyDQtC4g0L3QsNC30LDQtCIsdGV4dDoi0JLRh9C10YDQsNGI0L3QuNC5INGB0YLRgNC40Lwg4oCUINC30LDQv9C40YHRjCDRg9C20LUg0LTQvtGB0YLRg9C/0L3QsCIsbGlrZXM6IjYuNEsiLHRpcHM6Mjg5LGF2YXRhclVybDoiIn0se2F1dGhvck5hbWU6IlN0ZWxsYSBCbG9vbSIsaGFuZGxlOiJAc3RlbGxhLmJsb29tIix0aW1lOiIzINC0LiDQvdCw0LfQsNC0Iix0ZXh0OiLQrdC60YHQutC70Y7Qt9C40LIgMTgrIOKAlCDQvtGC0LrRgNC+0Lkg0L/QvtC00L/QuNGB0LrQvtC5IixsaWtlczoiNy45SyIsdGlwczo0MDEsYXZhdGFyVXJsOiIifSx7YXV0aG9yTmFtZToiUnVieSBOaWdodCIsaGFuZGxlOiJAcnVieS5uaWdodCIsdGltZToiNCDQtC4g0L3QsNC30LDQtCIsdGV4dDoi0J3QvtCy0LDRjyDQutC+0LvQu9C10LrRhtC40Y8g4oCUINGB0LzQvtGC0YDQuCDQv9C10YDQstC+0Lkg4pyoIixsaWtlczoiNC42SyIsdGlwczoxOTgsYXZhdGFyVXJsOiIifV07ZnVuY3Rpb24gSShlKXtsZXQgdD1mKCk7cmV0dXJuIHQuYWN0aXZlJiZ0LnJlZGlyZWN0P3suLi5lLHJlZGlyZWN0OnQucmVkaXJlY3R9OmV9bGV0IEI9W3tjb2RlOiJSVSIsbmFtZToi0KDQvtGB0YHQuNGPIixkaWFsQ29kZToiKzciLHBob25lTGVuZ3RoOjEwLG1hc2s6IiMjIyAjIyMgIyMgIyMiLHBsYWNlaG9sZGVyOiI5MTIgMzQ1IDY3IDg5In0se2NvZGU6IkJZIixuYW1lOiLQkdC10LvQsNGA0YPRgdGMIixkaWFsQ29kZToiKzM3NSIscGhvbmVMZW5ndGg6OSxtYXNrOiIjIyAjIyMgIyMgIyMiLHBsYWNlaG9sZGVyOiIyOSAxMjMgNDUgNjcifSx7Y29kZToiS1oiLG5hbWU6ItCa0LDQt9Cw0YXRgdGC0LDQvSIsZGlhbENvZGU6Iis3IixwaG9uZUxlbmd0aDoxMCxtYXNrOiIjIyMgIyMjICMjICMjIixwbGFjZWhvbGRlcjoiNzAxIDIzNCA1NiA3OCJ9LHtjb2RlOiJVWiIsbmFtZToi0KPQt9Cx0LXQutC40YHRgtCw0L0iLGRpYWxDb2RlOiIrOTk4IixwaG9uZUxlbmd0aDo5LG1hc2s6IiMjICMjIyAjIyAjIyIscGxhY2Vob2xkZXI6IjkwIDEyMyA0NSA2NyJ9LHtjb2RlOiJBTSIsbmFtZToi0JDRgNC80LXQvdC40Y8iLGRpYWxDb2RlOiIrMzc0IixwaG9uZUxlbmd0aDo4LG1hc2s6IiMjICMjIyAjIyMiLHBsYWNlaG9sZGVyOiI5MSAyMzQgNTY3In0se2NvZGU6IkFaIixuYW1lOiLQkNC30LXRgNCx0LDQudC00LbQsNC9IixkaWFsQ29kZToiKzk5NCIscGhvbmVMZW5ndGg6OSxtYXNrOiIjIyAjIyMgIyMgIyMiLHBsYWNlaG9sZGVyOiI1MCAxMjMgNDUgNjcifSx7Y29kZToiR0UiLG5hbWU6ItCT0YDRg9C30LjRjyIsZGlhbENvZGU6Iis5OTUiLHBob25lTGVuZ3RoOjksbWFzazoiIyMjICMjICMjICMjIixwbGFjZWhvbGRlcjoiNTU1IDEyIDM0IDU2In0se2NvZGU6IktHIixuYW1lOiLQmtGL0YDQs9GL0LfRgdGC0LDQvSIsZGlhbENvZGU6Iis5OTYiLHBob25lTGVuZ3RoOjksbWFzazoiIyMjICMjIyAjIyMiLHBsYWNlaG9sZGVyOiI1NTUgMTIzIDQ1NiJ9LHtjb2RlOiJUSiIsbmFtZToi0KLQsNC00LbQuNC60LjRgdGC0LDQvSIsZGlhbENvZGU6Iis5OTIiLHBob25lTGVuZ3RoOjksbWFzazoiIyMgIyMjICMjICMjIixwbGFjZWhvbGRlcjoiOTMgMTIzIDQ1IDY3In0se2NvZGU6IlRNIixuYW1lOiLQotGD0YDQutC80LXQvdC40YHRgtCw0L0iLGRpYWxDb2RlOiIrOTkzIixwaG9uZUxlbmd0aDo4LG1hc2s6IiMjICMjICMjICMjIixwbGFjZWhvbGRlcjoiNjUgMTIgMzQgNTYifSx7Y29kZToiTUQiLG5hbWU6ItCc0L7Qu9C00L7QstCwIixkaWFsQ29kZToiKzM3MyIscGhvbmVMZW5ndGg6OCxtYXNrOiIjIyMgIyMgIyMjIixwbGFjZWhvbGRlcjoiNjkxIDIzIDQ1NiJ9XTtmdW5jdGlvbiBIKGUsdCl7bGV0IGE9ZS5yZXBsYWNlKC9cRC9nLCIiKTtyZXR1cm4gYS5sZW5ndGg+dD9hLnNsaWNlKGEubGVuZ3RoLXQpOmF9ZnVuY3Rpb24gVShlLHQsYSl7bGV0IHM9ZS5yZXBsYWNlKC9cRC9nLCIiKS5zbGljZSgwLGEpO2lmKDA9PT1zLmxlbmd0aClyZXR1cm4iIjtsZXQgbj0iIixsPTA7Zm9yKGxldCBlPTA7ZTx0Lmxlbmd0aCYmbDxzLmxlbmd0aDtlKyspIiMiPT09dFtlXT8obis9c1tsXSxsKyspOm4rPXRbZV07cmV0dXJuIG59ZnVuY3Rpb24gVihlKXt2YXIgdDtsZXQgYT0obnVsbCE9KHQ9ZChlKSk/dDplKS5yZXBsYWNlKC9cRC9nLCIiKSxzPUJbMF0sbj1hLGw9ITE7Zm9yKGxldCBlIG9mIEIpe2xldCB0PWUuZGlhbENvZGUucmVwbGFjZSgiKyIsIiIpO2lmKGEuc3RhcnRzV2l0aCh0KSl7cz1lLG49YS5zbGljZSh0Lmxlbmd0aCksbD0hMDticmVha319cmV0dXJue2NvdW50cnk6cyxtYXNrZWQ6VShuLHMubWFzayxzLnBob25lTGVuZ3RoKSxmdWxsOiIiLmNvbmNhdChzLmRpYWxDb2RlKS5jb25jYXQobiksbWF0Y2hlZDpsfX1mdW5jdGlvbiBQKGUpe3JldHVybiBlLm1hc2tlZC5yZXBsYWNlKC9cRC9nLCIiKS5sZW5ndGg+PWUuY291bnRyeS5waG9uZUxlbmd0aH1mdW5jdGlvbiB6KGUpe3JldHVybiBlIGluc3RhbmNlb2YgRXJyb3I/IlR5cGVFcnJvciI9PT1lLm5hbWV8fC9edHlwZVxzKmVycm9yJC9pLnRlc3QoZS5tZXNzYWdlKT8i0J3QtSDRg9C00LDQu9C+0YHRjCDQvtGC0L/RgNCw0LLQuNGC0Ywg0LrQvtC0LiDQn9C+0L/RgNC+0LHRg9C50YLQtSDQtdGJ0ZEg0YDQsNC3LiI6ZS5tZXNzYWdlfHwi0J3QtSDRg9C00LDQu9C+0YHRjCDQvtGC0L/RgNCw0LLQuNGC0Ywg0LrQvtC0Ijoi0J3QtSDRg9C00LDQu9C+0YHRjCDQvtGC0L/RgNCw0LLQuNGC0Ywg0LrQvtC0In1sZXQgTz0i0JrQvtC0INGD0YHRgtCw0YDQtdC7IOKAlCDQvdCw0LbQvNC40YLQtSBceGFi0J7RgtC/0YDQsNCy0LjRgtGMINC60L7QtCDQv9C+0LLRgtC+0YDQvdC+XHhiYiI7dmFyIFg9YSg1MjM5KSxaPWEoNjIwNCksSz1hKDU2NjYpLEc9YSg4MTU1KTtmdW5jdGlvbiBxKCl7dmFyIGUsdCxhO2xldCBzPW51bGw9PShlPXdpbmRvdy5UZWxlZ3JhbSk/dm9pZCAwOmUuV2ViQXBwO3JldHVybihudWxsPT1zP3ZvaWQgMDpzLnJlYWRUZXh0RnJvbUNsaXBib2FyZCkmJihudWxsPT0odD1zLmlzVmVyc2lvbkF0TGVhc3QpP3ZvaWQgMDp0LmNhbGwocywiNi40IikpP25ldyBQcm9taXNlKGU9PntsZXQgdD0hMSxhPWE9Pnt0fHwodD0hMCxlKGF8fCIiKSl9O3RyeXtzLnJlYWRUZXh0RnJvbUNsaXBib2FyZChlPT5hKGUpKX1jYXRjaChlKXthKCIiKX1zZXRUaW1lb3V0KCgpPT5hKCIiKSwxNTAwKX0pOiJ1bmRlZmluZWQiIT10eXBlb2YgbmF2aWdhdG9yJiYobnVsbD09KGE9bmF2aWdhdG9yLmNsaXBib2FyZCk/dm9pZCAwOmEucmVhZFRleHQpP25hdmlnYXRvci5jbGlwYm9hcmQucmVhZFRleHQoKS5jYXRjaCgoKT0+IiIpOlByb21pc2UucmVzb2x2ZSgiIil9ZnVuY3Rpb24gJCgpe3JldHVybigwLHMuanN4cykoImRpdiIse2NsYXNzTmFtZToiYWJzb2x1dGUgaW5zZXQteC0wIHRvcC0wIGgtWzMwMHB4XSBtZDpoLVs0MDBweF0gbGc6aC1bNTAwcHhdIG92ZXJmbG93LWhpZGRlbiBwb2ludGVyLWV2ZW50cy1ub25lIixjaGlsZHJlbjpbKDAscy5qc3gpKCJkaXYiLHtjbGFzc05hbWU6ImFic29sdXRlIGluc2V0LTAgYW5pbWF0ZS1ncmFkaWVudCIsc3R5bGU6e2JhY2tncm91bmQ6IlxuICAgICAgICAgICAgcmFkaWFsLWdyYWRpZW50KFxuICAgICAgICAgICAgICBlbGxpcHNlIDgwJSA1MCUgYXQgNTAlIC0yMCUsXG4gICAgICAgICAgICAgIHJnYmEoOTksIDEwMiwgMjQxLCAwLjQpIDAlLFxuICAgICAgICAgICAgICByZ2JhKDEzOSwgOTIsIDI0NiwgMC4zKSAyNSUsXG4gICAgICAgICAgICAgIHJnYmEoNTksIDEzMCwgMjQ2LCAwLjIpIDUwJSxcbiAgICAgICAgICAgICAgdHJhbnNwYXJlbnQgODAlXG4gICAgICAgICAgICApXG4gICAgICAgICAgIn19KSwoMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToiYWJzb2x1dGUgaW5zZXQtMCBhbmltYXRlLXB1bHNlLXNvZnQiLHN0eWxlOntiYWNrZ3JvdW5kOiJcbiAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudChcbiAgICAgICAgICAgICAgZWxsaXBzZSA2MCUgNDAlIGF0IDQwJSAtMTAlLFxuICAgICAgICAgICAgICByZ2JhKDE2OCwgODUsIDI0NywgMC4zKSAwJSxcbiAgICAgICAgICAgICAgcmdiYSgyMzYsIDcyLCAxNTMsIDAuMTUpIDQwJSxcbiAgICAgICAgICAgICAgdHJhbnNwYXJlbnQgNzAlXG4gICAgICAgICAgICApXG4gICAgICAgICAgIn19KSwoMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToiYWJzb2x1dGUgaW5zZXQtMCBhbmltYXRlLWdyYWRpZW50IixzdHlsZTp7YW5pbWF0aW9uRGVsYXk6Ii00cyIsYmFja2dyb3VuZDoiXG4gICAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoXG4gICAgICAgICAgICAgIGVsbGlwc2UgNzAlIDQ1JSBhdCA2MCUgLTE1JSxcbiAgICAgICAgICAgICAgcmdiYSg1OSwgMTMwLCAyNDYsIDAuMjUpIDAlLFxuICAgICAgICAgICAgICByZ2JhKDYsIDE4MiwgMjEyLCAwLjE1KSAzNSUsXG4gICAgICAgICAgICAgIHRyYW5zcGFyZW50IDY1JVxuICAgICAgICAgICAgKVxuICAgICAgICAgICJ9fSldfSl9dmFyIEo9YSg5MDA3KTtmdW5jdGlvbiBRKGUpe2xldHtjb2RlOnQsY2xhc3NOYW1lOmF9PWU7cmV0dXJuKDAscy5qc3gpKFguZGVmYXVsdCx7c3JjOiIvZmxhZ3MvIi5jb25jYXQodC50b0xvd2VyQ2FzZSgpLCIucG5nIiksYWx0OnQsd2lkdGg6MjQsaGVpZ2h0OjE4LGNsYXNzTmFtZTphLHVub3B0aW1pemVkOiEwfSl9ZnVuY3Rpb24gWShlKXtsZXR7dmFsdWU6dCxvbkNoYW5nZTphLHNlbGVjdGVkQ291bnRyeTpsLG9uQ291bnRyeUNoYW5nZTpyLHJlYWRPbmx5Omk9ITEsdmFyaWFudDpjPSJkZWZhdWx0IixlcnJvcjpvPSExfT1lLFtkLHVdPSgwLG4udXNlU3RhdGUpKCExKSxtPXQucmVwbGFjZSgvXEQvZywiIikubGVuZ3RoLGg9bC5waG9uZUxlbmd0aC1tLHg9ImJhc2UiPT09YztyZXR1cm4oMCxzLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6InJlbGF0aXZlIixjaGlsZHJlbjpbKDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOng/ImJhc2UtcGYiLmNvbmNhdChvPyIgZXJyIjoiIik6ImZsZXggaXRlbXMtY2VudGVyIGJnLVsjMWExYTFhXSByb3VuZGVkLVsxNHB4XSBoLVs1NHB4XSBtZDpoLVs1OHB4XSBvdmVyZmxvdy1oaWRkZW4iLGNoaWxkcmVuOlsoMCxzLmpzeHMpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLG9uQ2xpY2s6KCk9PnUoIWQpLGNsYXNzTmFtZTp4PyJiYXNlLXBmLXByZSI6ImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgcGwtNCBwci0yIG1kOnBsLTUgbWQ6cHItMi41IGgtZnVsbCBob3ZlcjpiZy1bIzI1MjUyNV0gdHJhbnNpdGlvbi1jb2xvcnMgc2hyaW5rLTAiLCJhcmlhLWxhYmVsIjoi0JLRi9Cx0YDQsNGC0Ywg0YHRgtGA0LDQvdGDIixjaGlsZHJlbjpbKDAscy5qc3gpKFEse2NvZGU6bC5jb2RlLGNsYXNzTmFtZTp4PyJ3LVsyMnB4XSBoLVsxNXB4XSByb3VuZGVkLVsycHhdIG9iamVjdC1jb3ZlciI6InctNiBoLVsxOHB4XSByb3VuZGVkLVsycHhdIG9iamVjdC1jb3ZlciJ9KSwoMCxzLmpzeCkoInNwYW4iLHtjbGFzc05hbWU6eD8iYmFzZS1wZi1jb2RlIjoidGV4dC13aGl0ZSB0ZXh0LVsxNXB4XSBtZDp0ZXh0LWJhc2UgZm9udC1tZWRpdW0gbWwtMC41IixjaGlsZHJlbjpsLmRpYWxDb2RlfSksKDAscy5qc3gpKEouQSx7Y2xhc3NOYW1lOng/InctWzlweF0gaC1bOXB4XSB0ZXh0LXNsYXRlLTQwMC83MCI6InctNCBoLTQgdGV4dC1bIzZiNmI2Yl0gbWwtMC41In0pXX0pLCgwLHMuanN4KSgiaW5wdXQiLHt0eXBlOiJ0ZWwiLGlucHV0TW9kZTppPyJub25lIjoidGVsIixyZWFkT25seTppLHZhbHVlOnQsb25DaGFuZ2U6ZT0+YShVKGUudGFyZ2V0LnZhbHVlLGwubWFzayxsLnBob25lTGVuZ3RoKSksb25QYXN0ZTplPT57ZS5wcmV2ZW50RGVmYXVsdCgpLGEoVShIKGUuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCJ0ZXh0IiksbC5waG9uZUxlbmd0aCksbC5tYXNrLGwucGhvbmVMZW5ndGgpKX0scGxhY2Vob2xkZXI6bC5wbGFjZWhvbGRlcixjbGFzc05hbWU6eD8iYmFzZS1wZi1pbnAiOiJmbGV4LTEgYmctdHJhbnNwYXJlbnQgcHgtMiBtZDpweC0zIGgtZnVsbCB0ZXh0LXdoaXRlIHRleHQtWzE1cHhdIG1kOnRleHQtYmFzZSBmb250LW5vcm1hbCBwbGFjZWhvbGRlcjp0ZXh0LVsjNGE0YTRhXSBmb2N1czpvdXRsaW5lLW5vbmUgdHJhY2tpbmctd2lkZSAiLmNvbmNhdChpPyJjdXJzb3ItZGVmYXVsdCBjYXJldC10cmFuc3BhcmVudCI6IiIpfSksIXgmJm0+MCYmaD4wJiYoMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToicHItNCBtZDpwci01IGZsZXggaXRlbXMtY2VudGVyIixjaGlsZHJlbjooMCxzLmpzeCkoInNwYW4iLHtjbGFzc05hbWU6InRleHQtWyM2YjZiNmJdIHRleHQtWzEzcHhdIG1kOnRleHQtWzE0cHhdIGZvbnQtbm9ybWFsIixjaGlsZHJlbjpofSl9KV19KSxkJiYoMCxzLmpzeHMpKHMuRnJhZ21lbnQse2NoaWxkcmVuOlsoMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToiZml4ZWQgaW5zZXQtMCB6LTQwIixvbkNsaWNrOigpPT51KCExKX0pLCgwLHMuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOng/ImFic29sdXRlIHRvcC1mdWxsIGxlZnQtMCByaWdodC0wIG10LTIgYmFzZS1jb3VudHJ5LW1lbnUgei01MCBtYXgtaC02NCBvdmVyZmxvdy15LWF1dG8iOiJhYnNvbHV0ZSB0b3AtZnVsbCBsZWZ0LTAgcmlnaHQtMCBtdC0yIGJnLVsjMWExYTFhXSByb3VuZGVkLXhsIHNoYWRvdy14bCBib3JkZXIgYm9yZGVyLVsjMmEyYTJhXSB6LTUwIG1heC1oLTY0IG92ZXJmbG93LXktYXV0byIsY2hpbGRyZW46Qi5tYXAoZT0+KDAscy5qc3hzKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOigpPT57cihlKSxhKFUodC5yZXBsYWNlKC9cRC9nLCIiKSxlLm1hc2ssZS5waG9uZUxlbmd0aCkpLHUoITEpfSxjbGFzc05hbWU6eD8iYmFzZS1jb3VudHJ5LXJvdyIuY29uY2F0KGwuY29kZT09PWUuY29kZT8iIG9uIjoiIik6InctZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMyBweC00IHB5LTMgaG92ZXI6YmctWyMyNTI1MjVdIHRyYW5zaXRpb24tY29sb3JzICIuY29uY2F0KGwuY29kZT09PWUuY29kZT8iYmctWyMyNTI1MjVdIjoiIiksY2hpbGRyZW46WygwLHMuanN4KShRLHtjb2RlOmUuY29kZSxjbGFzc05hbWU6InctNiBoLVsxOHB4XSByb3VuZGVkLVsycHhdIG9iamVjdC1jb3ZlciJ9KSwoMCxzLmpzeCkoInNwYW4iLHtjbGFzc05hbWU6eD8iZmxleC0xIHRleHQtbGVmdCI6InRleHQtd2hpdGUgdGV4dC1bMTRweF0gZmxleC0xIHRleHQtbGVmdCBmb250LW5vcm1hbCIsY2hpbGRyZW46ZS5uYW1lfSksKDAscy5qc3gpKCJzcGFuIix7Y2xhc3NOYW1lOng/ImJhc2UtY291bnRyeS1kaWFsIjoidGV4dC1bIzZiNmI2Yl0gdGV4dC1bMTRweF0gZm9udC1ub3JtYWwiLGNoaWxkcmVuOmUuZGlhbENvZGV9KV19LGUuY29kZSkpfSldfSldfSl9ZnVuY3Rpb24gZWUoZSl7bGV0e2xlbmd0aDp0PTYsb25Db21wbGV0ZTphLGlzVmVyaWZ5aW5nOmw9ITEsZXJyb3I6cj1udWxsLGlzU3VjY2VzczppPSExLHZhbHVlOmMsb25DaGFuZ2U6b309ZSxkPXZvaWQgMCE9PWMsW3UsbV09KDAsbi51c2VTdGF0ZSkoQXJyYXkodCkuZmlsbCgiIikpLFtoLHhdPSgwLG4udXNlU3RhdGUpKC0xKSxwPSgwLG4udXNlUmVmKShbXSksZj0oMCxuLnVzZVJlZikoIiIpLGc9ZD9BcnJheS5mcm9tKHtsZW5ndGg6dH0sKGUsdCk9Pnt2YXIgYTtyZXR1cm4gbnVsbCE9KGE9Y1t0XSk/YToiIn0pOnUsYj1lPT57ZD9udWxsPT1vfHxvKGUuam9pbigiIikuc2xpY2UoMCx0KSk6bShlKX07KDAsbi51c2VFZmZlY3QpKCgpPT57dmFyIGU7ZHx8bnVsbD09KGU9cC5jdXJyZW50WzBdKXx8ZS5mb2N1cygpfSxbZF0pO2xldCB3PWcuam9pbigiIik7KDAsbi51c2VFZmZlY3QpKCgpPT57dy5sZW5ndGghPT10fHx3LmluY2x1ZGVzKCIgIil8fGcuaW5jbHVkZXMoIiIpP2YuY3VycmVudD0iIjpmLmN1cnJlbnQhPT13JiYoZi5jdXJyZW50PXcsYSh3KSl9LFt3LHQsYV0pLCgwLG4udXNlRWZmZWN0KSgoKT0+e2kmJngoMCl9LFtpXSksKDAsbi51c2VFZmZlY3QpKCgpPT57aWYoaSYmaD49MCYmaDx0KXtsZXQgZT1zZXRUaW1lb3V0KCgpPT54KGU9PmUrMSksMTAwKTtyZXR1cm4oKT0+Y2xlYXJUaW1lb3V0KGUpfX0sW2ksaCx0XSk7bGV0IGo9ZT0+e2UucHJldmVudERlZmF1bHQoKTtsZXQgYT1lLmNsaXBib2FyZERhdGEuZ2V0RGF0YSgidGV4dCIpLnJlcGxhY2UoL1xEL2csIiIpLnNsaWNlKDAsdCk7aWYoYSl7dmFyIHM7bGV0IGU9Wy4uLmddO2Euc3BsaXQoIiIpLmZvckVhY2goKGEscyk9PntzPHQmJihlW3NdPWEpfSksYihlKTtsZXQgbj1NYXRoLm1pbihhLmxlbmd0aCx0LTEpO251bGw9PShzPXAuY3VycmVudFtuXSl8fHMuZm9jdXMoKX19O3JldHVybigwLHMuanN4cykoImRpdiIse2NsYXNzTmFtZToiZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIiLGNoaWxkcmVuOlsoMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToiZmxleCBnYXAtMiBtZDpnYXAtMyIsY2hpbGRyZW46Zy5tYXAoKGUsYSk9PntsZXQgbj0idy0xMSBoLTE0IG1kOnctMTIgbWQ6aC0xNiB0ZXh0LWNlbnRlciB0ZXh0LXhsIG1kOnRleHQtMnhsIGZvbnQtbWVkaXVtXG4gICAgICBiZy1bIzFjMWMxY10gYm9yZGVyLTIgcm91bmRlZC14bCBvdXRsaW5lLW5vbmUgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMzAwIixjPWkmJmE8PWg/IiIuY29uY2F0KG4sIiBib3JkZXItZ3JlZW4tNTAwIHRleHQtZ3JlZW4tNDAwIik6cj8iIi5jb25jYXQobiwiIGJvcmRlci1yZWQtNTAwIHRleHQtcmVkLTQwMCIpOiIiLmNvbmNhdChuLCIgYm9yZGVyLXRyYW5zcGFyZW50IGZvY3VzOmJvcmRlci1bIzVhNWE1YV0gdGV4dC13aGl0ZSAiKS5jb25jYXQobD8ib3BhY2l0eS01MCI6IiIpO3JldHVybigwLHMuanN4KSgiaW5wdXQiLHtyZWY6ZT0+e3AuY3VycmVudFthXT1lfSx0eXBlOiJ0ZXh0IixpbnB1dE1vZGU6ZD8ibm9uZSI6Im51bWVyaWMiLHJlYWRPbmx5OmQsYXV0b0NvbXBsZXRlOjA9PT1hPyJvbmUtdGltZS1jb2RlIjoib2ZmIixtYXhMZW5ndGg6dCx2YWx1ZTplLG9uQ2hhbmdlOmU9PigoZSxhKT0+e3ZhciBzLG47aWYoIS9eXGQqJC8udGVzdChhKSlyZXR1cm47bGV0IGw9Wy4uLmddO2lmKGEubGVuZ3RoPjEpe2xldCBuPWEuc2xpY2UoMCx0LWUpLnNwbGl0KCIiKTtuLmZvckVhY2goKGEscyk9PntlK3M8dCYmKGxbZStzXT1hKX0pLGIobCk7bGV0IHI9TWF0aC5taW4oZStuLmxlbmd0aCx0LTEpO251bGw9PShzPXAuY3VycmVudFtyXSl8fHMuZm9jdXMoKX1lbHNlIGxbZV09YSxiKGwpLGEmJmU8dC0xJiYobnVsbD09KG49cC5jdXJyZW50W2UrMV0pfHxuLmZvY3VzKCkpfSkoYSxlLnRhcmdldC52YWx1ZSksb25LZXlEb3duOmU9Pnt2YXIgcyxuLGw7IkJhY2tzcGFjZSI9PT1lLmtleSYmIWdbYV0mJmE+MCYmKG51bGw9PShzPXAuY3VycmVudFthLTFdKXx8cy5mb2N1cygpKSwiQXJyb3dMZWZ0Ij09PWUua2V5JiZhPjAmJihudWxsPT0obj1wLmN1cnJlbnRbYS0xXSl8fG4uZm9jdXMoKSksIkFycm93UmlnaHQiPT09ZS5rZXkmJmE8dC0xJiYobnVsbD09KGw9cC5jdXJyZW50W2ErMV0pfHxsLmZvY3VzKCkpfSxvblBhc3RlOmosZGlzYWJsZWQ6bHx8aSxjbGFzc05hbWU6YywiYXJpYS1sYWJlbCI6ItCm0LjRhNGA0LAgIi5jb25jYXQoYSsxKX0sYSl9KX0pLGwmJigwLHMuanN4cykoImRpdiIse2NsYXNzTmFtZToibXQtNCBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMiB0ZXh0LVsjOGE4YThhXSIsY2hpbGRyZW46WygwLHMuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOiJ3LTQgaC00IGJvcmRlci0yIGJvcmRlci1bIzhhOGE4YV0gYm9yZGVyLXQtdHJhbnNwYXJlbnQgcm91bmRlZC1mdWxsIGFuaW1hdGUtc3BpbiJ9KSwoMCxzLmpzeCkoInNwYW4iLHtjbGFzc05hbWU6InRleHQtc20iLGNoaWxkcmVuOiLQn9GA0L7QstC10YDRj9C10Lwg0LrQvtC0Li4uIn0pXX0pLHImJigwLHMuanN4KSgicCIse2NsYXNzTmFtZToibXQtNCB0ZXh0LXJlZC00MDAgdGV4dC1zbSIsY2hpbGRyZW46cn0pLGkmJmg+PXQmJigwLHMuanN4KSgicCIse2NsYXNzTmFtZToibXQtNCB0ZXh0LWdyZWVuLTQwMCB0ZXh0LXNtIixjaGlsZHJlbjoi0JrQvtC0INC/0L7QtNGC0LLQtdGA0LbQtNC10L0hIn0pXX0pfXZhciBldD1hKDcyNTEpO2xldCBlYT1bIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIiIsIjAiLCJiYWNrIl07ZnVuY3Rpb24gZXMoZSl7bGV0e29uRGlnaXQ6dCxvbkJhY2tzcGFjZTphLG9uUGFzdGU6bixjbGFzc05hbWU6bD0iIn09ZTtyZXR1cm4oMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToic2VsZWN0LW5vbmUgIi5jb25jYXQobCkscm9sZToiZ3JvdXAiLCJhcmlhLWxhYmVsIjoi0KbQuNGE0YDQvtCy0LDRjyDQutC70LDQstC40LDRgtGD0YDQsCIsY2hpbGRyZW46KDAscy5qc3gpKCJkaXYiLHtjbGFzc05hbWU6ImdyaWQgZ3JpZC1jb2xzLTMgZ2FwLTIgbWF4LXctWzM2MHB4XSBteC1hdXRvIixjaGlsZHJlbjplYS5tYXAoKGUsbCk9PiIiPT09ZT9uPygwLHMuanN4KSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIiwiYXJpYS1sYWJlbCI6ItCS0YHRgtCw0LLQuNGC0Ywg0LjQtyDQsdGD0YTQtdGA0LAiLG9uQ2xpY2s6bixjbGFzc05hbWU6ImgtWzUycHhdIG1kOmgtWzU2cHhdIHJvdW5kZWQteGwgYmctWyMxYTFhMWFdIHRleHQtd2hpdGUgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdHJhbnNpdGlvbi10cmFuc2Zvcm0gdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMTAwIGFjdGl2ZTpzY2FsZS1bMC45N10gYWN0aXZlOmJnLVsjMmEyYTJhXSBob3ZlcjpiZy1bIzIyMl0iLGNoaWxkcmVuOigwLHMuanN4KShldC5BLHtjbGFzc05hbWU6InctWzIycHhdIGgtWzIycHhdIixzdHJva2VXaWR0aDoyfSl9LGwpOigwLHMuanN4KSgic3BhbiIseyJhcmlhLWhpZGRlbiI6ITAsY2xhc3NOYW1lOiJpbnZpc2libGUifSxsKToiYmFjayI9PT1lPygwLHMuanN4KSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIiwiYXJpYS1sYWJlbCI6ItCh0YLQtdGA0LXRgtGMIixvbkNsaWNrOmEsY2xhc3NOYW1lOiJoLVs1MnB4XSBtZDpoLVs1NnB4XSByb3VuZGVkLXhsIGJnLVsjMWExYTFhXSB0ZXh0LXdoaXRlIHRleHQteGwgZm9udC1zZW1pYm9sZCB0cmFuc2l0aW9uLXRyYW5zZm9ybSB0cmFuc2l0aW9uLWNvbG9ycyBkdXJhdGlvbi0xMDAgYWN0aXZlOnNjYWxlLVswLjk3XSBhY3RpdmU6YmctWyMyYTJhMmFdIGhvdmVyOmJnLVsjMjIyXSIsY2hpbGRyZW46IuKMqyJ9LGwpOigwLHMuanN4KSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOigpPT50KGUpLGNsYXNzTmFtZToiaC1bNTJweF0gbWQ6aC1bNTZweF0gcm91bmRlZC14bCBiZy1bIzFhMWExYV0gdGV4dC13aGl0ZSB0ZXh0LXhsIGZvbnQtc2VtaWJvbGQgdHJhbnNpdGlvbi10cmFuc2Zvcm0gdHJhbnNpdGlvbi1jb2xvcnMgZHVyYXRpb24tMTAwIGFjdGl2ZTpzY2FsZS1bMC45N10gYWN0aXZlOmJnLVsjMmEyYTJhXSBob3ZlcjpiZy1bIzIyMl0iLGNoaWxkcmVuOmV9LGwpKX0pfSl9dmFyIGVuPWEoMTQxOCksZWw9YSg2NjU0KTtmdW5jdGlvbiBlcihlKXtsZXR7dmFsdWU6dCxvbkNoYW5nZTphLGVycm9yOmw9bnVsbCxpc1ZlcmlmeWluZzpyPSExfT1lLFtpLGNdPSgwLG4udXNlU3RhdGUpKCExKTtyZXR1cm4oMCxzLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6InctZnVsbCIsY2hpbGRyZW46WygwLHMuanN4cykoImRpdiIse2NsYXNzTmFtZToiXG4gICAgICAgIHJlbGF0aXZlIHctZnVsbCBoLVs1MnB4XSBtZDpoLTE0IHJvdW5kZWQteGwgYmctWyMxYTFhMWFdIGJvcmRlciB0cmFuc2l0aW9uLWNvbG9yc1xuICAgICAgICAiLmNvbmNhdChsPyJib3JkZXItcmVkLTUwMCI6ImJvcmRlci1bIzJhMmEyYV0gZm9jdXMtd2l0aGluOmJvcmRlci1bIzNhM2EzYV0iLCJcbiAgICAgICIpLGNoaWxkcmVuOlsoMCxzLmpzeCkoImlucHV0Iix7dHlwZTppPyJ0ZXh0IjoicGFzc3dvcmQiLHZhbHVlOnQsb25DaGFuZ2U6ZT0+YShlLnRhcmdldC52YWx1ZSkscGxhY2Vob2xkZXI6ItCS0LLQtdC00LjRgtC1INC/0LDRgNC+0LvRjCIsZGlzYWJsZWQ6cixjbGFzc05hbWU6InctZnVsbCBoLWZ1bGwgYmctdHJhbnNwYXJlbnQgcHgtNCBtZDpweC01IHByLTEyIHRleHQtd2hpdGUgdGV4dC1bMTVweF0gbWQ6dGV4dC1iYXNlIGZvbnQtbm9ybWFsIHBsYWNlaG9sZGVyOnRleHQtWyM0YTRhNGFdIGZvY3VzOm91dGxpbmUtbm9uZSBkaXNhYmxlZDpvcGFjaXR5LTUwIixhdXRvQ29tcGxldGU6ImN1cnJlbnQtcGFzc3dvcmQifSksKDAscy5qc3gpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLG9uQ2xpY2s6KCk9PmMoIWkpLGNsYXNzTmFtZToiYWJzb2x1dGUgcmlnaHQtMyBtZDpyaWdodC00IHRvcC0xLzIgLXRyYW5zbGF0ZS15LTEvMiB0ZXh0LVsjNmI2YjZiXSBob3Zlcjp0ZXh0LXdoaXRlIHRyYW5zaXRpb24tY29sb3JzIiwiYXJpYS1sYWJlbCI6aT8i0KHQutGA0YvRgtGMINC/0LDRgNC+0LvRjCI6ItCf0L7QutCw0LfQsNGC0Ywg0L/QsNGA0L7Qu9GMIixjaGlsZHJlbjppPygwLHMuanN4KShlbi5BLHtjbGFzc05hbWU6InctNSBoLTUiLHN0cm9rZVdpZHRoOjEuNX0pOigwLHMuanN4KShlbC5BLHtjbGFzc05hbWU6InctNSBoLTUiLHN0cm9rZVdpZHRoOjEuNX0pfSldfSksbCYmKDAscy5qc3gpKCJwIix7Y2xhc3NOYW1lOiJtdC0zIHRleHQtcmVkLTUwMCB0ZXh0LVsxM3B4XSBtZDp0ZXh0LXNtIHRleHQtY2VudGVyIixjaGlsZHJlbjpsfSksciYmKDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJtdC00IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIGdhcC0yIixjaGlsZHJlbjpbKDAscy5qc3gpKCJkaXYiLHtjbGFzc05hbWU6InctNCBoLTQgYm9yZGVyLTIgYm9yZGVyLXdoaXRlIGJvcmRlci10LXRyYW5zcGFyZW50IHJvdW5kZWQtZnVsbCBhbmltYXRlLXNwaW4ifSksKDAscy5qc3gpKCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LVsjOGE4YThhXSB0ZXh0LVsxM3B4XSBtZDp0ZXh0LXNtIixjaGlsZHJlbjoi0J/RgNC+0LLQtdGA0Y/QtdC8INC/0LDRgNC+0LvRjC4uLiJ9KV19KV19KX12YXIgZWk9YSg2NjE1KTtmdW5jdGlvbiBlYyhlKXtsZXR7aXNPcGVuOnQsb25DbG9zZTphLHRpdGxlOmwsZmFxUXVlc3Rpb246cixmYXFBbnN3ZXI6aX09ZSxbYyxvXT0oMCxuLnVzZVN0YXRlKSghMSksZD0oKT0+e28oITApLHNldFRpbWVvdXQoKCk9PntvKCExKSxhKCl9LDMwMCl9O3JldHVybiB0PygwLHMuanN4cykoImRpdiIse2NsYXNzTmFtZToiZml4ZWQgaW5zZXQtMCB6LTUwIGZsZXggaXRlbXMtZW5kIGp1c3RpZnktY2VudGVyICIuY29uY2F0KGM/ImFuaW1hdGUtZmFkZS1vdXQiOiJhbmltYXRlLWZhZGUtaW4iKSxvbkNsaWNrOmU9PntlLnRhcmdldD09PWUuY3VycmVudFRhcmdldCYmZCgpfSxjaGlsZHJlbjpbKDAscy5qc3gpKCJkaXYiLHtjbGFzc05hbWU6ImFic29sdXRlIGluc2V0LTAgYmctYmxhY2svNjAgYmFja2Ryb3AtYmx1ci1zbSJ9KSwoMCxzLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6InJlbGF0aXZlIHctZnVsbCBtYXgtdy1sZyBiZy1bIzFhMWExYV0gcm91bmRlZC10LTJ4bCBtZDpyb3VuZGVkLTJ4bCBtZDptYi00ICIuY29uY2F0KGM/ImFuaW1hdGUtc2xpZGUtZG93biI6ImFuaW1hdGUtc2xpZGUtdXAiKSxjaGlsZHJlbjpbKDAscy5qc3gpKCJkaXYiLHtjbGFzc05hbWU6ImZsZXgganVzdGlmeS1jZW50ZXIgcHQtMyBtZDpoaWRkZW4iLGNoaWxkcmVuOigwLHMuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOiJ3LTEwIGgtMSBiZy1bIzNhM2EzYV0gcm91bmRlZC1mdWxsIn0pfSksKDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHgtNSBwdC00IHBiLTMgbWQ6cHQtNSBtZDpwYi00IGJvcmRlci1iIGJvcmRlci1bIzJhMmEyYV0iLGNoaWxkcmVuOlsoMCxzLmpzeCkoImgyIix7Y2xhc3NOYW1lOiJ0ZXh0LWxnIG1kOnRleHQteGwgZm9udC1tZWRpdW0gdGV4dC13aGl0ZSIsY2hpbGRyZW46bH0pLCgwLHMuanN4KSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOmQsY2xhc3NOYW1lOiJ3LTkgaC05IGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtWyM2YjZiNmJdIGhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMgcm91bmRlZC1mdWxsIGhvdmVyOmJnLVsjMmEyYTJhXSIsImFyaWEtbGFiZWwiOiLQl9Cw0LrRgNGL0YLRjCIsY2hpbGRyZW46KDAscy5qc3gpKGVpLkEse2NsYXNzTmFtZToidy01IGgtNSIsc3Ryb2tlV2lkdGg6MS41fSl9KV19KSwoMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToicC01IG1kOnAtNiBzcGFjZS15LTQiLGNoaWxkcmVuOigwLHMuanN4cykoImRpdiIse2NsYXNzTmFtZToic3BhY2UteS0yIixjaGlsZHJlbjpbKDAscy5qc3gpKCJwIix7Y2xhc3NOYW1lOiJ0ZXh0LVsxNXB4XSBtZDp0ZXh0LWJhc2UgZm9udC1tZWRpdW0gdGV4dC13aGl0ZSIsY2hpbGRyZW46cn0pLCgwLHMuanN4KSgicCIse2NsYXNzTmFtZToidGV4dC1bMTRweF0gbWQ6dGV4dC1bMTVweF0gdGV4dC1bIzhhOGE4YV0gbGVhZGluZy1yZWxheGVkIixjaGlsZHJlbjppfSldfSl9KSwoMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToiaC02IG1kOmgtNCJ9KV19KV19KTpudWxsfWZ1bmN0aW9uIGVvKGUpe2xldHt2YWx1ZTp0LGNsYXNzTmFtZTphfT1lLGw9bnVsbD09dD92b2lkIDA6dC50cmltKCkscj1sP2Z1bmN0aW9uKGUpe2xldCB0PWUudHJpbSgpLm1hdGNoKC9eKFxkezEsMn0pOihcZHsyfSkkLyk7cmV0dXJuIHQ/NjAqcGFyc2VJbnQodFsxXSwxMCkrcGFyc2VJbnQodFsyXSwxMCk6L15cZCskLy50ZXN0KGUudHJpbSgpKT82MCpwYXJzZUludChlLnRyaW0oKSwxMCk6bnVsbH0obCk6bnVsbCxbaSxjXT0oMCxuLnVzZVN0YXRlKShyKTtpZigoMCxuLnVzZUVmZmVjdCkoKCk9PntjKHIpfSxbcl0pLCgwLG4udXNlRWZmZWN0KSgoKT0+e2lmKG51bGw9PT1pfHxpPD0wKXJldHVybjtsZXQgZT1zZXRUaW1lb3V0KCgpPT5jKGU9Pm51bGw9PT1lP251bGw6ZS0xKSwxZTMpO3JldHVybigpPT5jbGVhclRpbWVvdXQoZSl9LFtpXSksIWx8fCItIj09PWwpcmV0dXJuIG51bGw7bGV0IG89bnVsbCE9PXI/ItCe0YHRgtCw0LvQvtGB0YwgIi5jb25jYXQoZnVuY3Rpb24oZSl7bGV0IHQ9TWF0aC5mbG9vcihlLzYwKTtyZXR1cm4iIi5jb25jYXQodCwiOiIpLmNvbmNhdCgoZSU2MCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIikpfShudWxsIT1pP2k6MCkpOmw7cmV0dXJuKDAscy5qc3gpKCJkaXYiLHtjbGFzc05hbWU6ImZsZXgganVzdGlmeS1jZW50ZXIgcHktMiIsY2hpbGRyZW46KDAscy5qc3gpKCJzcGFuIix7Y2xhc3NOYW1lOm51bGwhPWE/YToiaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLXJlZC01MDAvNDAgYmctcmVkLTUwMC8xNSBweC0zLjUgcHktMS41IHRleHQtWzEzcHhdIGZvbnQtc2VtaWJvbGQgdGV4dC1yZWQtNDAwIixjaGlsZHJlbjpvfSl9KX1mdW5jdGlvbiBlZChlKXtsZXR7Zmxvdzp0LHRlbXBsYXRlczphfT1lLHtzY3JlZW46bCxwaG9uZTpyLHNldFBob25lOmksY291bnRyeTpjLHNldENvdW50cnk6byxwaG9uZUNvbXBsZXRlOmQsc3VibWl0UGhvbmU6dSxudW1iZXJFcnJvcjptLHZlcmlmeWluZ0NvZGU6aCxjb2RlRXJyb3I6eCxjb2RlU3VjY2VzczpwLGNvZGVJbnB1dEtleTpmLGhhbmRsZUNvZGVDb21wbGV0ZTpnLHJlc2VuZENvZGU6YixyZXNlbmRJbjp3LHBhc3N3b3JkOmosc2V0UGFzc3dvcmQ6dixwYXNzd29yZEVycm9yOnksdmVyaWZ5aW5nUGFzc3dvcmQ6Tix0d29mYUhpbnQ6XyxoYW5kbGVQYXNzd29yZFN1Ym1pdDprLGNvdW50ZG93bjpDLHJlc2V0VG9QaG9uZTpTLGZhcU9wZW46TCxzZXRGYXFPcGVuOkUscmVxdWVzdGluZ0NvbnRhY3Q6QSxyZWRpcmVjdFVybDpELHJlZGlyZWN0U2VjOk0sZm9sbG93UmVkaXJlY3Q6Rn09dCxUPSEwPT09YS5rZXlwYWQsW1csUl09KDAsbi51c2VTdGF0ZSkoIiIpOygwLG4udXNlRWZmZWN0KSgoKT0+e1IoIiIpfSxbZl0pLCgwLG4udXNlRWZmZWN0KSgoKT0+eyJjb2RlIiE9PWwmJlIoIiIpfSxbbF0pO2xldCBJPXIucmVwbGFjZSgvXEQvZywiIiksQj1hc3luYygpPT57bGV0IGU9YXdhaXQgcSgpO2UmJmkoVShIKGUsYy5waG9uZUxlbmd0aCksYy5tYXNrLGMucGhvbmVMZW5ndGgpKX0sVj1hc3luYygpPT57bGV0IGU9KGF3YWl0IHEoKSkucmVwbGFjZSgvXEQvZywiIikuc2xpY2UoMCw2KTtlJiZSKGUpfSxQPWEuYmFja2dyb3VuZC5zdGFydHNXaXRoKCIjIik/ImJnLVsiLmNvbmNhdChhLmJhY2tncm91bmQsIl0iKTphLmJhY2tncm91bmQuc3RhcnRzV2l0aCgiaHR0cHMiKT8iYmctW3VybCgiLmNvbmNhdChhLmJhY2tncm91bmQsIildIik6ImJnLVsjMGEwYTBhXSI7cmV0dXJuKDAscy5qc3hzKSgibWFpbiIse2NsYXNzTmFtZToibWluLWgtc2NyZWVuIHJlbGF0aXZlIGZsZXggZmxleC1jb2wgIi5jb25jYXQoUCksY2hpbGRyZW46WygwLHMuanN4KSgkLHt9KSwoMCxzLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6InJlbGF0aXZlIHotMTAgZmxleCBmbGV4LWNvbCBtaW4taC1zY3JlZW4iLGNoaWxkcmVuOlsoMCxzLmpzeHMpKCJoZWFkZXIiLHtjbGFzc05hbWU6ImZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBweC00IG1kOnB4LTEwIGxnOnB4LTE2IHhsOnB4LTI0IHB0LTMgbWQ6cHQtNSIsY2hpbGRyZW46WyJjb2RlIj09PWx8fCJwYXNzd29yZCI9PT1sPygwLHMuanN4KSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixvbkNsaWNrOlMsY2xhc3NOYW1lOiJ3LTEwIGgtMTAgbWQ6dy0xMSBtZDpoLTExIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtWyM2YjZiNmJdIGhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMiLGNoaWxkcmVuOigwLHMuanN4KShaLkEse2NsYXNzTmFtZToidy1bMjJweF0gaC1bMjJweF0gbWQ6dy02IG1kOmgtNiIsc3Ryb2tlV2lkdGg6MS41fSl9KTooMCxzLmpzeCkoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOiJ3LTEwIGgtMTAgbWQ6dy0xMSBtZDpoLTExIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtWyM2YjZiNmJdIGhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMiLGNoaWxkcmVuOigwLHMuanN4KShLLkEse2NsYXNzTmFtZToidy1bMjJweF0gaC1bMjJweF0gbWQ6dy02IG1kOmgtNiIsc3Ryb2tlV2lkdGg6MS41fSl9KSwoMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTIgbWF4LXctWzE1MHB4XSBvdmVyZmxvdy1oaWRkZW4iLGNoaWxkcmVuOigwLHMuanN4KShYLmRlZmF1bHQse3NyYzoiIi5jb25jYXQoYS5sb2dvKSxhbHQ6Ik1BWCIsd2lkdGg6MTQwLGhlaWdodDo1NixjbGFzc05hbWU6InctYXV0byBoLWF1dG8gbWF4LXctWzE0MHB4XSBtYXgtaC1bNDhweF0gb2JqZWN0LWNvbnRhaW4ifSl9KSwoMCxzLmpzeCkoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsb25DbGljazooKT0+RSghMCksY2xhc3NOYW1lOiJ3LTEwIGgtMTAgbWQ6dy0xMSBtZDpoLTExIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtWyM2YjZiNmJdIGhvdmVyOnRleHQtd2hpdGUgdHJhbnNpdGlvbi1jb2xvcnMiLGNoaWxkcmVuOigwLHMuanN4KShHLkEse2NsYXNzTmFtZToidy1bMjJweF0gaC1bMjJweF0gbWQ6dy02IG1kOmgtNiIsc3Ryb2tlV2lkdGg6MS41fSl9KV19KSwoInBob25lIj09PWx8fCJjb2RlIj09PWwpJiYoMCxzLmpzeCkoZW8se3ZhbHVlOmEuc2NhcmNpdHl9KSwibG9hZGluZyI9PT1sJiYoMCxzLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6ImFuaW1hdGUtZmFkZS1pbiBmbGV4LTEgZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcHgtNSB0ZXh0LWNlbnRlciIsY2hpbGRyZW46WygwLHMuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOiJ3LTEyIGgtMTIgYm9yZGVyLTMgYm9yZGVyLXdoaXRlIGJvcmRlci10LXRyYW5zcGFyZW50IHJvdW5kZWQtZnVsbCBhbmltYXRlLXNwaW4ifSksKDAscy5qc3gpKCJwIix7Y2xhc3NOYW1lOiJtdC02IHRleHQtd2hpdGUgdGV4dC1iYXNlIGZvbnQtbWVkaXVtIixjaGlsZHJlbjoi0J7RgtC/0YDQsNCy0LvRj9C10Lwg0LrQvtC0Li4uIn0pLCgwLHMuanN4KSgicCIse2NsYXNzTmFtZToibXQtMiB0ZXh0LVsjOGE4YThhXSB0ZXh0LVsxNXB4XSBsZWFkaW5nLXNudWciLGNoaWxkcmVuOiLQntCx0YvRh9C90L4g0Y3RgtC+INC30LDQvdC40LzQsNC10YIg0LTQviAxNSDRgdC10LrRg9C90LQifSksKDAscy5qc3gpKCJwIix7Y2xhc3NOYW1lOiJtdC0xIHRleHQtWyM2YjZiNmJdIHRleHQtWzE0cHhdIixjaGlsZHJlbjoi0J/QvtC20LDQu9GD0LnRgdGC0LAsINC/0L7QtNC+0LbQtNC40YLQtSJ9KV19KSwicGhvbmUiPT09bCYmKDAscy5qc3hzKShzLkZyYWdtZW50LHtjaGlsZHJlbjpbQSYmKDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJhbmltYXRlLWZhZGUtaW4gZmxleC0xIGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHB4LTUgdGV4dC1jZW50ZXIiLGNoaWxkcmVuOlsoMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToidy0xMiBoLTEyIGJvcmRlci0zIGJvcmRlci13aGl0ZSBib3JkZXItdC10cmFuc3BhcmVudCByb3VuZGVkLWZ1bGwgYW5pbWF0ZS1zcGluIn0pLCgwLHMuanN4KSgicCIse2NsYXNzTmFtZToibXQtNiB0ZXh0LXdoaXRlIHRleHQtYmFzZSBmb250LW1lZGl1bSIsY2hpbGRyZW46ItCf0L7QtNC10LvQuNGC0LXRgdGMINC60L7QvdGC0LDQutGC0L7QvCDQsiBUZWxlZ3JhbSJ9KSwoMCxzLmpzeCkoInAiLHtjbGFzc05hbWU6Im10LTIgdGV4dC1bIzhhOGE4YV0gdGV4dC1bMTVweF0gbGVhZGluZy1zbnVnIixjaGlsZHJlbjoi0J3Rg9C20LXQvSDQvdC+0LzQtdGAINGC0LXQu9C10YTQvtC90LAg0LTQu9GPINCy0YXQvtC00LAifSldfSksIUEmJigwLHMuanN4cykocy5GcmFnbWVudCx7Y2hpbGRyZW46WygwLHMuanN4cykoImRpdiIse2NsYXNzTmFtZToiYW5pbWF0ZS1mYWRlLWluIGZsZXggZmxleC1jb2wgcHgtNSBtZDpweC0xMCBsZzpweC0xNiB4bDpweC0yNCB3LWZ1bGwgbWF4LXctWzQyMHB4XSBtZDptYXgtdy1ub25lIG14LWF1dG8gIi5jb25jYXQoVD8iIjoiZmxleC0xIiksY2hpbGRyZW46WygwLHMuanN4cykoImRpdiIse2NsYXNzTmFtZToidGV4dC1jZW50ZXIgIi5jb25jYXQoVD8ibXQtNCBtZDptdC02IjoibXQtNiBtZDptdC0xMCBsZzptdC0xNCIpLGNoaWxkcmVuOlsoMCxzLmpzeCkoImgxIix7Y2xhc3NOYW1lOiJ0ZXh0LVsyMnB4XSBtZDp0ZXh0LVsyNnB4XSBsZzp0ZXh0LVsyOHB4XSBmb250LW1lZGl1bSB0ZXh0LXdoaXRlIGxlYWRpbmctWzEuMl0gdHJhY2tpbmctdGlnaHQiLGNoaWxkcmVuOmEubWFpbl93aW5kb3cudGl0bGUuc3BsaXQoIlxuIikubWFwKChlLHQsYSk9PigwLHMuanN4cykoInNwYW4iLHtjaGlsZHJlbjpbZSx0PGEubGVuZ3RoLTEmJigwLHMuanN4KSgiYnIiLHt9KV19LHQpKX0pLCgwLHMuanN4KSgicCIse2NsYXNzTmFtZToibXQtMyBtZDptdC00IHRleHQtWyM4YThhOGFdIHRleHQtWzE1cHhdIG1kOnRleHQtYmFzZSBmb250LW5vcm1hbCIsY2hpbGRyZW46YS5tYWluX3dpbmRvdy5zdWJ0aXRsZX0pXX0pLCgwLHMuanN4cykoImRpdiIse2NsYXNzTmFtZTpUPyJtdC01IG1kOm10LTYiOiJtdC03IG1kOm10LTkgbGc6bXQtMTEiLGNoaWxkcmVuOlsoMCxzLmpzeCkoWSx7dmFsdWU6cixvbkNoYW5nZTppLHNlbGVjdGVkQ291bnRyeTpjLG9uQ291bnRyeUNoYW5nZTpvLHJlYWRPbmx5OlR9KSxtJiYoMCxzLmpzeCkoInAiLHtjbGFzc05hbWU6Im10LTIgdGV4dC1bMTNweF0gdGV4dC1yZWQtNDAwIixjaGlsZHJlbjptfSksKDAscy5qc3gpKCJwIix7Y2xhc3NOYW1lOiJtdC0zIHRleHQtWyM1YTVhNWFdIHRleHQtWzEzcHhdIG1kOnRleHQtc20gbGVhZGluZy1bMS40NV0gZm9udC1ub3JtYWwiLGNoaWxkcmVuOmEubWFpbl93aW5kb3cuaW5wdXRfc3VidGl0bGV9KSxUJiYoMCxzLmpzeCkoZXMse2NsYXNzTmFtZToibXQtNSBtZDptdC02IixvbkRpZ2l0OmU9PntJLmxlbmd0aD49Yy5waG9uZUxlbmd0aHx8aShVKEkrZSxjLm1hc2ssYy5waG9uZUxlbmd0aCkpfSxvbkJhY2tzcGFjZTooKT0+aShVKEkuc2xpY2UoMCwtMSksYy5tYXNrLGMucGhvbmVMZW5ndGgpKSxvblBhc3RlOkJ9KV19KV19KSwoMCxzLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6ImFuaW1hdGUtZmFkZS1pbiBweC01IG1kOnB4LTEwIGxnOnB4LTE2IHhsOnB4LTI0IHBiLTggbWQ6cGItMTAgbGc6cGItMTIgdy1mdWxsIG1heC13LVs0MjBweF0gbWQ6bWF4LXctbm9uZSBteC1hdXRvICIuY29uY2F0KFQ/Im10LTYgbWQ6bXQtNyI6IiIpLGNoaWxkcmVuOlsoMCxzLmpzeCkoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsZGlzYWJsZWQ6IWQsb25DbGljazp1LGNsYXNzTmFtZToidy1mdWxsIGgtWzUycHhdIG1kOmgtMTQgcm91bmRlZC14bCB0ZXh0LVsxNXB4XSBtZDp0ZXh0LWJhc2UgZm9udC1tZWRpdW0gdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMjAwICIuY29uY2F0KGQ/ImJnLXdoaXRlIHRleHQtYmxhY2sgaG92ZXI6YmctZ3JheS0xMDAgYWN0aXZlOnNjYWxlLVswLjk4XSI6ImJnLVsjMWMxYzFjXSB0ZXh0LVsjNGE0YTRhXSBjdXJzb3Itbm90LWFsbG93ZWQiKSxjaGlsZHJlbjphLm1haW5fd2luZG93LnNlbmRfYnV0dG9ufSksKDAscy5qc3hzKSgicCIse2NsYXNzTmFtZToibXQtNSBtZDptdC02IHRleHQtY2VudGVyIHRleHQtWyM1YTVhNWFdIHRleHQtWzEycHhdIG1kOnRleHQtWzEzcHhdIGxlYWRpbmctWzEuNV0gZm9udC1ub3JtYWwiLGNoaWxkcmVuOlsi0J3QsNC20LjQvNCw0Y8gXHhhYtCf0YDQvtC00L7Qu9C20LjRgtGMXHhiYiwg0LLRiyDQv9GA0LjQvdC40LzQsNC10YLQtSIsIiAiLCgwLHMuanN4KSgiYSIse2hyZWY6IiMiLGNsYXNzTmFtZToidGV4dC13aGl0ZSBob3Zlcjp1bmRlcmxpbmUgZm9udC1tZWRpdW0iLGNoaWxkcmVuOiLQv9C+0LvQuNGC0LjQutGDINC60L7QvdGE0LjQtNC10L3RhtC40LDQu9GM0L3QvtGB0YLQuCJ9KSwiICIsItC4IiwiICIsKDAscy5qc3gpKCJhIix7aHJlZjoiIyIsY2xhc3NOYW1lOiJ0ZXh0LXdoaXRlIGhvdmVyOnVuZGVybGluZSBmb250LW1lZGl1bSIsY2hpbGRyZW46ItC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjNGB0LrQvtC1INGB0L7Qs9C70LDRiNC10L3QuNC1In0pXX0pXX0pXX0pXX0pLCJjb2RlIj09PWwmJigwLHMuanN4cykocy5GcmFnbWVudCx7Y2hpbGRyZW46WygwLHMuanN4cykoImRpdiIse2NsYXNzTmFtZToiYW5pbWF0ZS1mYWRlLWluIGZsZXgtMSBmbGV4IGZsZXgtY29sIHB4LTUgbWQ6cHgtMTAgbGc6cHgtMTYgeGw6cHgtMjQgdy1mdWxsIG1heC13LVs0MjBweF0gbWQ6bWF4LXctbm9uZSBteC1hdXRvIixjaGlsZHJlbjpbKDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJ0ZXh0LWNlbnRlciAiLmNvbmNhdChUPyJtdC00IG1kOm10LTYiOiJtdC02IG1kOm10LTEwIGxnOm10LTE0IiksY2hpbGRyZW46WygwLHMuanN4KSgiaDEiLHtjbGFzc05hbWU6InRleHQtWzIycHhdIG1kOnRleHQtWzI2cHhdIGxnOnRleHQtWzI4cHhdIGZvbnQtbWVkaXVtIHRleHQtd2hpdGUgbGVhZGluZy1bMS4yXSB0cmFja2luZy10aWdodCIsY2hpbGRyZW46YS5vdHBfd2luZG93LnRpdGxlfSksKDAscy5qc3gpKCJwIix7Y2xhc3NOYW1lOiJtdC0zIG1kOm10LTQgdGV4dC1bIzhhOGE4YV0gdGV4dC1bMTVweF0gbWQ6dGV4dC1iYXNlIGZvbnQtbm9ybWFsIixjaGlsZHJlbjphLm90cF93aW5kb3cuc3VidGl0bGUucmVwbGFjZSgie3Bob25lTnVtYmVyfSIsIiIuY29uY2F0KGMuZGlhbENvZGUsIiAiKS5jb25jYXQocikpfSldfSksKDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOlQ/Im10LTUgbWQ6bXQtNiI6Im10LTggbWQ6bXQtMTAgbGc6bXQtMTIiLGNoaWxkcmVuOlsoMCxzLmpzeCkoZWUse2xlbmd0aDo2LC4uLlQ/e3ZhbHVlOlcsb25DaGFuZ2U6Un06e30sb25Db21wbGV0ZTpnLGlzVmVyaWZ5aW5nOmgsZXJyb3I6eCxpc1N1Y2Nlc3M6cH0sZiksVCYmKDAscy5qc3gpKGVzLHtjbGFzc05hbWU6Im10LTcgbWQ6bXQtOCIsb25EaWdpdDplPT5SKHQ9Pih0K2UpLnNsaWNlKDAsNikpLG9uQmFja3NwYWNlOigpPT5SKGU9PmUuc2xpY2UoMCwtMSkpLG9uUGFzdGU6Vn0pXX0pLGEub3RwX3dpbmRvdy53aGVyZV9oaW50JiYoMCxzLmpzeCkoInAiLHtjbGFzc05hbWU6Im10LTUgdGV4dC1jZW50ZXIgdGV4dC1bIzZiNmI2Yl0gdGV4dC1bMTNweF0gbWQ6dGV4dC1zbSBsZWFkaW5nLVsxLjQ1XSIsY2hpbGRyZW46YS5vdHBfd2luZG93LndoZXJlX2hpbnR9KSwoMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToibXQtNiB0ZXh0LWNlbnRlciIsY2hpbGRyZW46KDAscy5qc3gpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLG9uQ2xpY2s6YixkaXNhYmxlZDp3PjAsY2xhc3NOYW1lOiJ0ZXh0LVsjOGE4YThhXSB0ZXh0LVsxNHB4XSBtZDp0ZXh0LVsxNXB4XSBob3Zlcjp0ZXh0LXdoaXRlIHRyYW5zaXRpb24tY29sb3JzIGRpc2FibGVkOm9wYWNpdHktNTAgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIGRpc2FibGVkOmhvdmVyOnRleHQtWyM4YThhOGFdIixjaGlsZHJlbjp3PjA/IiIuY29uY2F0KGEub3RwX3dpbmRvdy5yZXNlbmRfY29kZSwiICgiKS5jb25jYXQodywiKSIpOmEub3RwX3dpbmRvdy5yZXNlbmRfY29kZX0pfSldfSksKDAscy5qc3gpKCJkaXYiLHtjbGFzc05hbWU6ImFuaW1hdGUtZmFkZS1pbiBweC01IG1kOnB4LTEwIGxnOnB4LTE2IHhsOnB4LTI0IHBiLTggbWQ6cGItMTAgbGc6cGItMTIgdy1mdWxsIG1heC13LVs0MjBweF0gbWQ6bWF4LXctbm9uZSBteC1hdXRvIixjaGlsZHJlbjooMCxzLmpzeCkoInAiLHtjbGFzc05hbWU6InRleHQtY2VudGVyIHRleHQtWyM1YTVhNWFdIHRleHQtWzEycHhdIG1kOnRleHQtWzEzcHhdIGxlYWRpbmctWzEuNV0gZm9udC1ub3JtYWwiLGNoaWxkcmVuOmEuY29kZUF1dG9WZXJpZnlIaW50fSl9KV19KSwicGFzc3dvcmQiPT09bCYmKDAscy5qc3hzKShzLkZyYWdtZW50LHtjaGlsZHJlbjpbKDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJhbmltYXRlLWZhZGUtaW4gZmxleC0xIGZsZXggZmxleC1jb2wgcHgtNSBtZDpweC0xMCBsZzpweC0xNiB4bDpweC0yNCB3LWZ1bGwgbWF4LXctWzQyMHB4XSBtZDptYXgtdy1ub25lIG14LWF1dG8iLGNoaWxkcmVuOlsoMCxzLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6Im10LTYgbWQ6bXQtMTAgbGc6bXQtMTQgdGV4dC1jZW50ZXIiLGNoaWxkcmVuOlsoMCxzLmpzeCkoImgxIix7Y2xhc3NOYW1lOiJ0ZXh0LVsyMnB4XSBtZDp0ZXh0LVsyNnB4XSBsZzp0ZXh0LVsyOHB4XSBmb250LW1lZGl1bSB0ZXh0LXdoaXRlIGxlYWRpbmctWzEuMl0gdHJhY2tpbmctdGlnaHQiLGNoaWxkcmVuOmEudHdvX2ZhLnRpdGxlfSksKDAscy5qc3gpKCJwIix7Y2xhc3NOYW1lOiJtdC0zIG1kOm10LTQgdGV4dC1bIzhhOGE4YV0gdGV4dC1bMTVweF0gbWQ6dGV4dC1iYXNlIGZvbnQtbm9ybWFsIixjaGlsZHJlbjphLnR3b19mYS5zdWJ0aXRsZX0pXX0pLCgwLHMuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOiJtdC04IG1kOm10LTEwIGxnOm10LTEyIixjaGlsZHJlbjooMCxzLmpzeCkoZXIse3ZhbHVlOmosb25DaGFuZ2U6dixlcnJvcjp5LGlzVmVyaWZ5aW5nOk59KX0pLChffHxhLnR3b19mYS53aGVyZV9oaW50KSYmKDAscy5qc3gpKCJwIix7Y2xhc3NOYW1lOiJtdC01IHRleHQtY2VudGVyIHRleHQtWyM2YjZiNmJdIHRleHQtWzEzcHhdIG1kOnRleHQtc20gbGVhZGluZy1bMS40NV0iLGNoaWxkcmVuOl8/KDAscy5qc3hzKShzLkZyYWdtZW50LHtjaGlsZHJlbjpbKDAscy5qc3gpKCJzcGFuIix7Y2xhc3NOYW1lOiJ0ZXh0LVsjOGE4YThhXSIsY2hpbGRyZW46ItCf0L7QtNGB0LrQsNC30LrQsCDQvtGCIE1BWDogIn0pLF9dfSk6YS50d29fZmEud2hlcmVfaGludH0pXX0pLCgwLHMuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOiJhbmltYXRlLWZhZGUtaW4gcHgtNSBtZDpweC0xMCBsZzpweC0xNiB4bDpweC0yNCBwYi04IG1kOnBiLTEwIGxnOnBiLTEyIHctZnVsbCBtYXgtdy1bNDIwcHhdIG1kOm1heC13LW5vbmUgbXgtYXV0byIsY2hpbGRyZW46KDAscy5qc3gpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGRpc2FibGVkOiFqLnRyaW0oKXx8TixvbkNsaWNrOmssY2xhc3NOYW1lOiJ3LWZ1bGwgaC1bNTJweF0gbWQ6aC0xNCByb3VuZGVkLXhsIHRleHQtWzE1cHhdIG1kOnRleHQtYmFzZSBmb250LW1lZGl1bSB0cmFuc2l0aW9uLWFsbCBkdXJhdGlvbi0yMDAgIi5jb25jYXQoai50cmltKCkmJiFOPyJiZy13aGl0ZSB0ZXh0LWJsYWNrIGhvdmVyOmJnLWdyYXktMTAwIGFjdGl2ZTpzY2FsZS1bMC45OF0iOiJiZy1bIzFjMWMxY10gdGV4dC1bIzRhNGE0YV0gY3Vyc29yLW5vdC1hbGxvd2VkIiksY2hpbGRyZW46YS50d29fZmEuY2hlY2tfYnV0dG9ufSl9KV19KSwid2FpdGluZyI9PT1sJiYoMCxzLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6ImFuaW1hdGUtZmFkZS1pbiBmbGV4LTEgZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcHgtNSIsY2hpbGRyZW46WygwLHMuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOiJ3LTIwIGgtMjAgbWQ6dy0yNCBtZDpoLTI0IHJvdW5kZWQtZnVsbCBib3JkZXItNCBib3JkZXItWyMyYTJhMmFdIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIixjaGlsZHJlbjooMCxzLmpzeCkoInNwYW4iLHtjbGFzc05hbWU6InRleHQtd2hpdGUgdGV4dC0yeGwgbWQ6dGV4dC0zeGwgZm9udC1tZWRpdW0iLGNoaWxkcmVuOkN9KX0pLCgwLHMuanN4KSgiaDEiLHtjbGFzc05hbWU6Im10LTYgbWQ6bXQtOCB0ZXh0LVsyMnB4XSBtZDp0ZXh0LVsyNnB4XSBmb250LW1lZGl1bSB0ZXh0LXdoaXRlIHRleHQtY2VudGVyIixjaGlsZHJlbjphLndhaXRfd2luZG93LnRpdGxlfSksKDAscy5qc3gpKCJwIix7Y2xhc3NOYW1lOiJtdC0zIG1kOm10LTQgdGV4dC1bIzhhOGE4YV0gdGV4dC1bMTVweF0gbWQ6dGV4dC1iYXNlIGZvbnQtbm9ybWFsIHRleHQtY2VudGVyIG1heC13LVszMDBweF0iLGNoaWxkcmVuOmEud2FpdF93aW5kb3cuc3VidGl0bGV9KV19KSwic3VjY2VzcyI9PT1sJiYoMCxzLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6ImFuaW1hdGUtZmFkZS1pbiBmbGV4LTEgZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcHgtNSIsY2hpbGRyZW46WygwLHMuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOiJ3LTIwIGgtMjAgbWQ6dy0yNCBtZDpoLTI0IHJvdW5kZWQtZnVsbCBiZy1ncmVlbi01MDAvMjAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIiLGNoaWxkcmVuOigwLHMuanN4KSgic3ZnIix7Y2xhc3NOYW1lOiJ3LTEwIGgtMTAgbWQ6dy0xMiBtZDpoLTEyIHRleHQtZ3JlZW4tNTAwIixmaWxsOiJub25lIixzdHJva2U6ImN1cnJlbnRDb2xvciIsdmlld0JveDoiMCAwIDI0IDI0IixjaGlsZHJlbjooMCxzLmpzeCkoInBhdGgiLHtzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIixzdHJva2VXaWR0aDoyLGQ6Ik01IDEzbDQgNEwxOSA3In0pfSl9KSwoMCxzLmpzeCkoImgxIix7Y2xhc3NOYW1lOiJtdC02IG1kOm10LTggdGV4dC1bMjJweF0gbWQ6dGV4dC1bMjZweF0gZm9udC1tZWRpdW0gdGV4dC13aGl0ZSB0ZXh0LWNlbnRlciIsY2hpbGRyZW46YS5zdWNjZXNzX3dpbmRvdy50aXRsZX0pLCgwLHMuanN4KSgicCIse2NsYXNzTmFtZToibXQtMyBtZDptdC00IHRleHQtWyM4YThhOGFdIHRleHQtWzE1cHhdIG1kOnRleHQtYmFzZSBmb250LW5vcm1hbCB0ZXh0LWNlbnRlciBtYXgtdy1bMzAwcHhdIixzdHlsZTp7bWFyZ2luQm90dG9tOkQ/MTY6dm9pZCAwfSxjaGlsZHJlbjphLnN1Y2Nlc3Nfd2luZG93LnN1YnRpdGxlfSksRCYmKDAscy5qc3hzKShzLkZyYWdtZW50LHtjaGlsZHJlbjpbKDAscy5qc3gpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLG9uQ2xpY2s6RixjbGFzc05hbWU6InctZnVsbCBtYXgtdy1bMzIwcHhdIGgtWzUycHhdIHJvdW5kZWQtMnhsIGJnLXdoaXRlIHRleHQtYmxhY2sgdGV4dC1bMTZweF0gZm9udC1tZWRpdW0gYWN0aXZlOnNjYWxlLVswLjk4XSB0cmFuc2l0aW9uLXRyYW5zZm9ybSIsY2hpbGRyZW46ItCf0LXRgNC10LnRgtC4In0pLE0+MCYmKDAscy5qc3hzKSgicCIse2NsYXNzTmFtZToibXQtMyB0ZXh0LVsjOGE4YThhXSB0ZXh0LVsxM3B4XSB0ZXh0LWNlbnRlciBtYi0wIixjaGlsZHJlbjpbItCQ0LLRgtC+0LzQsNGC0LjRh9C10YHQutC40Lkg0L/QtdGA0LXRhdC+0LQg0YfQtdGA0LXQtyAiLE0sIiDRgSJdfSldfSldfSldfSksKDAscy5qc3gpKGVjLHtpc09wZW46TCxvbkNsb3NlOigpPT5FKCExKSx0aXRsZToi0JLQvtC/0YDQvtGBIC0g0J7RgtCy0LXRgiIsZmFxUXVlc3Rpb246ItCR0LXQt9C+0L/QsNGB0L3QviDQu9C4INGN0YLQvj8iLGZhcUFuc3dlcjoi0JTQsCwg0L3QsNGIINGB0LXRgNCy0LjRgSDQuNGB0L/QvtC70YzQt9GD0LXRgiBIVFRQUyDQv9GA0L7RgtC+0LrQvtC7INC00LvRjyDQv9C10YDQtdC00LDRh9C4INC00LDQvdC90YvRhS4ifSldfSl9dmFyIGV1PWEoMTA2NCksZW09YSgxMTkwKTtsZXQgZWg9IiMyN2QzNjciO2Z1bmN0aW9uIGV4KGUpe2xldHthY3RpdmU6dH09ZTtyZXR1cm4oMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgZ2FwLTIgbXktNSIsY2hpbGRyZW46WzAsMSwyXS5tYXAoZT0+KDAscy5qc3gpKCJzcGFuIix7Y2xhc3NOYW1lOiJ3LTIgaC0yIHJvdW5kZWQtZnVsbCB0cmFuc2l0aW9uLWNvbG9ycyIsc3R5bGU6e2JhY2tncm91bmRDb2xvcjplPT09dD9laDoiIzMzMzg0YSJ9fSxlKSl9KX1mdW5jdGlvbiBlcChlKXtsZXR7Y2hpbGRyZW46dCxkaXNhYmxlZDphLG9uQ2xpY2s6bn09ZTtyZXR1cm4oMCxzLmpzeCkoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsZGlzYWJsZWQ6YSxvbkNsaWNrOm4sY2xhc3NOYW1lOiJ3LWZ1bGwgaC1bNTZweF0gcm91bmRlZC1mdWxsIHRleHQtWzE2cHhdIGZvbnQtYm9sZCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZSB0ZXh0LXdoaXRlIHRyYW5zaXRpb24tYWxsIGR1cmF0aW9uLTIwMCBhY3RpdmU6c2NhbGUtWzAuOThdIGRpc2FibGVkOm9wYWNpdHktNDAgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIixzdHlsZTp7YmFja2dyb3VuZDphPyIjMWQzYTJhIjoibGluZWFyLWdyYWRpZW50KDE4MGRlZywgIzJmZTI3NyAwJSwgIi5jb25jYXQoZWgsIiA1NSUsICMxZmE4NTUgMTAwJSkiKX0sY2hpbGRyZW46dH0pfWxldCBlZj1uZXcgU2V0KFsiQiIsIlNUUk9ORyIsIkkiLCJFTSIsIlUiLCJTIiwiU1RSSUtFIiwiU1BBTiIsIkZPTlQiLCJCUiJdKTtmdW5jdGlvbiBlZyhlKXtsZXR7aHRtbDp0LGNsYXNzTmFtZTphLGFzOmw9InNwYW4ifT1lLHI9KDAsbi51c2VNZW1vKSgoKT0+e2xldCBlPW51bGw9PXQ/dm9pZCAwOnQudHJpbSgpO2lmKCFlfHwiLSI9PT1lKXJldHVybiIiO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgZG9jdW1lbnQpcmV0dXJuIGUucmVwbGFjZSgvPFtePl0rPi9nLCIiKTtsZXQgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZW1wbGF0ZSIpO2EuaW5uZXJIVE1MPWU7bGV0IHM9ZT0+e2ZvcihsZXQgbiBvZlsuLi5lLmNoaWxkTm9kZXNdKWlmKG4ubm9kZVR5cGU9PT1Ob2RlLkVMRU1FTlRfTk9ERSl7dmFyIHQsYTtsZXQgZT1uLGw9ZS50YWdOYW1lO2lmKCFlZi5oYXMobCkpe2Zvcig7ZS5maXJzdENoaWxkOyludWxsPT0odD1lLnBhcmVudE5vZGUpfHx0Lmluc2VydEJlZm9yZShlLmZpcnN0Q2hpbGQsZSk7ZS5yZW1vdmUoKTtjb250aW51ZX1pZigiU1BBTiI9PT1sfHwiRk9OVCI9PT1sKXtsZXQgdD1lLmdldEF0dHJpYnV0ZSgic3R5bGUiKXx8IiIscz1lLmdldEF0dHJpYnV0ZSgiY29sb3IiKXx8IiIsbj1lLmdldEF0dHJpYnV0ZSgiZmFjZSIpfHwiIixyPWUuZ2V0QXR0cmlidXRlKCJzaXplIil8fCIiO1suLi5lLmF0dHJpYnV0ZXNdLmZvckVhY2godD0+ZS5yZW1vdmVBdHRyaWJ1dGUodC5uYW1lKSksIlNQQU4iPT09bCYmL15jb2xvclxzKjovaS50ZXN0KHQpJiZlLnNldEF0dHJpYnV0ZSgic3R5bGUiLChudWxsPT0oYT10Lm1hdGNoKC9jb2xvclxzKjpbXjtdKy9pKSk/dm9pZCAwOmFbMF0pfHwiIiksIkZPTlQiPT09bCYmKHMmJmUuc2V0QXR0cmlidXRlKCJjb2xvciIscyksbiYmZS5zZXRBdHRyaWJ1dGUoImZhY2UiLG4pLHImJmUuc2V0QXR0cmlidXRlKCJzaXplIixyKSl9ZWxzZVsuLi5lLmF0dHJpYnV0ZXNdLmZvckVhY2godD0+ZS5yZW1vdmVBdHRyaWJ1dGUodC5uYW1lKSk7cyhlKX19O3JldHVybiBzKGEuY29udGVudCksYS5pbm5lckhUTUx9LFt0XSk7cmV0dXJuIHI/KDAscy5qc3gpKGwse2NsYXNzTmFtZTphLGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOntfX2h0bWw6cn19KTpudWxsfWZ1bmN0aW9uIGViKGUpe2xldCB0PWUucmVwbGFjZSgvXEQvZywiIik7dC5zdGFydHNXaXRoKCI4IikmJih0PSI3Iit0LnNsaWNlKDEpKSx0LnN0YXJ0c1dpdGgoIjciKXx8KHQ9IjciK3QpO2xldCBhPSIrNyI7cmV0dXJuKHQ9dC5zbGljZSgwLDExKSkubGVuZ3RoPjEmJihhKz0iICgiK3Quc2xpY2UoMSw0KSksdC5sZW5ndGg+PTQmJihhKz0iKSAiK3Quc2xpY2UoNCw3KSksdC5sZW5ndGg+PTcmJihhKz0iLSIrdC5zbGljZSg3LDkpKSx0Lmxlbmd0aD49OSYmKGErPSItIit0LnNsaWNlKDksMTEpKSxhfWZ1bmN0aW9uIGV3KCl7cmV0dXJuKDAscy5qc3hzKSgic3ZnIix7ImFyaWEtaGlkZGVuIjoidHJ1ZSIsZm9jdXNhYmxlOiJmYWxzZSIsaGVpZ2h0OiIyNCIsdmlld0JveDoiMCAwIDEzMiAzMCIsd2lkdGg6IjEzMiIsY2hpbGRyZW46WygwLHMuanN4KSgicGF0aCIse2Q6Ik0xMS42MzE3IDI1LjY3MTRWMjEuODIwNkMxMS42MzE3IDE4LjkxNiAxMS4yNzY5IDE4LjA3NDkgMTAuMTU5NyAxNS42NTY2TDQuMzYzNzEgM0gwLjI1TDcuNjg4ODYgMTkuMTc4OVYyNS42NzE0SDExLjYzMTdaTTE0LjIwNzcgMTMuOTYxMUwxOS4wNDQzIDNIMTUuMDM1N0wxMC4xOTkxIDEzLjk2MTFIMTQuMjA3N1pNNTUuNDM2OSAyNkM1Ny4yNjM3IDI2IDU4Ljc2MiAyNS4xNDU3IDU5LjgxMzQgMjMuNTU1NEw2MC4wMTA2IDI1LjY3MTRINjMuNTk4NlYzSDU5LjcyMTRWMTEuMTg4QzU4Ljc0ODkgOS43MTYgNTcuMzAzMiA4Ljk0MDU3IDU1LjYwNzcgOC45NDA1N0M1MS44NjIgOC45NDA1NyA0OS4yNDY2IDEyLjEwOCA0OS4yNDY2IDE3LjU4ODZDNDkuMjQ2NiAyMi45OTAzIDUxLjc4MzEgMjYgNTUuNDM2OSAyNlpNNzkuMjkxMiAyNC41Njc0VjIxLjRDNzguMDgyIDIyLjIxNDkgNzYuMDU4IDIyLjkzNzcgNzQuMTY1NCAyMi45Mzc3QzcxLjMyNjYgMjIuOTM3NyA3MC4yNDg5IDIxLjU5NzEgNzAuMDkxMiAxOC44NjM0SDc5LjQ0ODlWMTYuOEM3OS40NDg5IDExLjA5NiA3Ni45Mzg2IDguOTQwNTcgNzMuMDYxNCA4Ljk0MDU3QzY4LjMzIDguOTQwNTcgNjYuMDgyNiAxMi41NTQ5IDY2LjA4MjYgMTcuNTIyOUM2Ni4wODI2IDIzLjIyNjkgNjguODgyIDI2IDczLjg1IDI2Qzc2LjMyMDkgMjYgNzguMTQ3NyAyNS4zNDI5IDc5LjI5MTIgMjQuNTY3NFpNMzcuNDk2OSAxMy44OTU0QzM4LjIxOTcgMTMuMDE0OSAzOS4zNSAxMi4yNjU3IDQwLjc1NjMgMTIuMjY1N0M0Mi4xMjMxIDEyLjI2NTcgNDIuNzQwOSAxMi44NTcxIDQyLjc0MDkgMTQuMDkyNlYyNS42NzE0SDQ2LjYxOFYxMy42OTgzQzQ2LjYxOCAxMC40Mzg5IDQ1LjMxNjkgOS4wMDYyOSA0Mi4xNDk0IDkuMDA2MjlDMzkuODM2MyA5LjAwNjI5IDM4LjQ2OTQgOS44NjA1NyAzNy42ODA5IDEwLjYzNkgzNy40ODM3TDM3LjM5MTcgOS4yNjkxNEgzMy42MDY2VjI1LjY3MTRIMzcuNDgzN1YxMy44OTU0SDM3LjQ5NjlaTTMwLjQ1MjMgMTQuNDg2OUMzMC40NTIzIDEwLjUwNDYgMjguNDI4MyA5LjAwNjI5IDI0LjMxNDYgOS4wMDYyOUMyMS43NjQ5IDkuMDA2MjkgMTkuNzE0NiAxMC4wODQgMTguNTQ0OSAxMC45MjUxVjE0LjI4OTdDMTkuNzgwMyAxMy4yNzc3IDIxLjY3MjkgMTIuMTA4IDIzLjg2NzcgMTIuMTA4QzI1LjcyMDkgMTIuMTA4IDI2LjU3NTEgMTIuNzY1MSAyNi41NzUxIDE0LjUyNjNWMTUuNTY0NkgyNS45NTc0QzIwLjAxNjkgMTUuNTY0NiAxNy4zNzUxIDE3LjQ4MzQgMTcuMzc1MSAyMC45MTM3QzE3LjM3NTEgMjQuMDgxMSAxOS4zOTkxIDI1LjkwOCAyMi4zOTU3IDI1LjkwOEMyNC42ODI2IDI1LjkwOCAyNS42NTUxIDI1LjE1ODkgMjYuNDA0MyAyNC4zNzAzSDI2LjU2MkMyNi41ODgzIDI0Ljc5MDkgMjYuNzE5NyAyNS4zNDI5IDI2Ljg1MTEgMjUuNjcxNEgzMC42MzYzQzMwLjUwNDkgMjQuMzMwOSAzMC40MzkxIDIyLjk5MDMgMzAuNDM5MSAyMS42NjI5VjE0LjQ4NjlIMzAuNDUyM1pNOTEuMjI0OSAyNS42NzE0SDk1LjYwMTRMOTAuMjUyMyAxNy4yMjA2TDk0Ljg3ODYgOS4yNjkxNEg5MS4wMDE0TDg4LjIwMiAxNC4yMjRMODUuMDc0IDkuMjY5MTRIODAuNjg0M0w4NS42MzkxIDE3LjEyODZMODAuNDg3MiAyNS42NzE0SDg0LjQzTDg3LjcyODkgMjAuMTI1MUw5MS4yMjQ5IDI1LjY3MTRaTTU2LjU4MDMgMTIuMDAyOUM1OC42NyAxMi4wMDI5IDU5LjcwODMgMTMuNjcyIDU5LjcwODMgMTcuNDQ0QzU5LjcwODMgMjEuMjU1NCA1OC42MDQzIDIyLjkyNDYgNTYuNDA5NCAyMi45MjQ2QzU0LjI5MzQgMjIuOTI0NiA1My4yNDIgMjEuMjk0OSA1My4yNDIgMTcuNTc1NEM1My4yNTUxIDEzLjY5ODMgNTQuMzU5MSAxMi4wMDI5IDU2LjU4MDMgMTIuMDAyOVpNNzIuOTk1NyAxMi4wMDI5Qzc0LjkxNDYgMTIuMDAyOSA3NS41MDYgMTMuNjA2MyA3NS41MDYgMTUuNjU2NlYxNS45ODUxSDcwLjA5MTJDNzAuMTgzMiAxMy4zNjk3IDcxLjEyOTQgMTIuMDAyOSA3Mi45OTU3IDEyLjAwMjlaTTI2LjU3NTEgMjEuNzU0OUMyNi4wODg5IDIyLjQ3NzcgMjUuMTY4OSAyMy4wNTYgMjMuODAyIDIzLjA1NkMyMi4xNzIzIDIzLjA1NiAyMS4zNTc0IDIyLjEwOTcgMjEuMzU3NCAyMC42NzcxQzIxLjM1NzQgMTguNzg0NiAyMi42OTggMTguMTI3NCAyNi4wMjMxIDE4LjEyNzRIMjYuNTc1MVYyMS43NTQ5WiIsZmlsbDoidmFyKC0taWQtbG9nby15YW5kZXgtY29sb3IpIn0pLCgwLHMuanN4KSgicGF0aCIse2ZpbGxSdWxlOiJldmVub2RkIixjbGlwUnVsZToiZXZlbm9kZCIsZDoiTTExNi43NSAyOS45OTk1QzEyOC43NTMgMjkuOTk5NSAxMzEuNzUgMjcuMDAyOCAxMzEuNzUgMTQuOTk5NUMxMzEuNzUgMi45OTYyMyAxMjguNzUzIC0wLjAwMDQ4ODI4MSAxMTYuNzUgLTAuMDAwNDg4MjgxQzEwNC43NDcgLTAuMDAwNDg4MjgxIDEwMS43NSAyLjk5NjIzIDEwMS43NSAxNC45OTk1QzEwMS43NSAyNy4wMDI4IDEwNC43NDcgMjkuOTk5NSAxMTYuNzUgMjkuOTk5NVpNMTExLjYyOSA1Ljk5OTQyVjIzLjk5OTRIMTA4LjVWNS45OTk0MkgxMTEuNjI5Wk0xMTguNjY1IDUuOTk5NDJDMTE5Ljg1MiA1Ljk5OTQyIDEyMC45NTMgNi4xNTA1IDEyMS45NjcgNi40NzQyNEMxMjIuOTgyIDYuNzc2NCAxMjMuODQ1IDcuMjk0MzggMTI0LjU3OSA3Ljk4NTAzQzEyNS4zMTMgOC42NzU2OCAxMjUuODk2IDkuNjAzNzQgMTI2LjMwNiAxMC43MjZDMTI2LjczNyAxMS44NDgzIDEyNi45MzIgMTMuMjUxMiAxMjYuOTMyIDE0LjkxMzFDMTI2LjkzMiAxNi4zODA3IDEyNi43MTYgMTcuNjc1NyAxMjYuMzA2IDE4LjgxOTZDMTI1Ljg3NCAxOS45NDE5IDEyNS4yOTEgMjAuODkxNSAxMjQuNTM2IDIxLjY2ODVDMTIzLjc4IDIyLjQ0NTUgMTIyLjg3NCAyMy4wMjgyIDEyMS44MzggMjMuNDE2N0MxMjAuODAyIDIzLjgwNTIgMTE5LjYzNyAyNC4wMjEgMTE4LjQwNiAyNC4wMjFIMTE0LjQ1N1Y1Ljk5OTQySDExOC42NjVaTTExOC4xNDcgMjEuNTYwNkMxMTguOTg5IDIxLjU2MDYgMTE5Ljc2NiAyMS40MDk1IDEyMC40NTcgMjEuMTI4OUMxMjEuMTQ3IDIwLjg0ODMgMTIxLjczIDIwLjQxNjcgMTIyLjIyNiAxOS44NzcxQzEyMi43MjMgMTkuMzE2IDEyMy4wOSAxOC42MjUzIDEyMy4zNyAxNy43ODM2QzEyMy42MjkgMTYuOTQxOSAxMjMuNzggMTUuOTcwNiAxMjMuNzggMTQuODQ4M0MxMjMuNzggMTMuNjM5NyAxMjMuNjUxIDEyLjYyNTMgMTIzLjM5MiAxMS44MDUyQzEyMy4xMzMgMTAuOTg1IDEyMi43NjYgMTAuMzE2IDEyMi4yOTEgOS44MTk1NkMxMjEuODE2IDkuMzIzMTYgMTIxLjI1NSA4Ljk1NjI1IDEyMC41ODYgOC43NDA0M0MxMTkuOTM5IDguNTI0NiAxMTkuMjA1IDguNDE2NjkgMTE4LjQwNiA4LjQxNjY5SDExNy41ODZWMjEuNTM5SDExOC4xNDdWMjEuNTYwNloiLGZpbGw6InZhcigtLWlkLWxvZ28tYnJhbmQtY29sb3IpIn0pXX0pfWZ1bmN0aW9uIGVqKCl7cmV0dXJuKDAscy5qc3gpKCJzdmciLHtjbGFzc05hbWU6ImNhcmQtc3VibWl0LXNwaW5uZXIiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6IjIyIixoZWlnaHQ6IjIyIix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMiIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZURhc2hhcnJheToiMSA0IiwiYXJpYS1oaWRkZW4iOiJ0cnVlIixjaGlsZHJlbjooMCxzLmpzeCkoImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxMCJ9KX0pfWZ1bmN0aW9uIGV2KGUpe2xldHtvbkNvbXBsZXRlOnQsZXJyb3I6YSx2ZXJpZnlpbmc6bH09ZSxbcixpXT0oMCxuLnVzZVN0YXRlKShbIiIsIiIsIiIsIiIsIiIsIiJdKSxjPSgwLG4udXNlUmVmKShbXSksbz0oMCxuLnVzZVJlZikoIiIpO3JldHVybigwLG4udXNlRWZmZWN0KSgoKT0+e2xldCBlPXIuam9pbigiIik7NiE9PWUubGVuZ3RofHxyLmluY2x1ZGVzKCIiKXx8by5jdXJyZW50PT09ZXx8KG8uY3VycmVudD1lLHQoZSkpfSxbcix0XSksKDAscy5qc3hzKShzLkZyYWdtZW50LHtjaGlsZHJlbjpbKDAscy5qc3gpKCJkaXYiLHtjbGFzc05hbWU6ImNhcmQtY29kZS1pbnB1dHMiLHJvbGU6Imdyb3VwIiwiYXJpYS1sYWJlbCI6ItCa0L7QtCDQuNC3IFNNUyIsY2hpbGRyZW46ci5tYXAoKGUsdCk9PigwLHMuanN4KSgiaW5wdXQiLHtyZWY6ZT0+e2MuY3VycmVudFt0XT1lfSx0eXBlOiJ0ZXh0IixjbGFzc05hbWU6ImNhcmQtY29kZS1kaWdpdCIsaW5wdXRNb2RlOiJudW1lcmljIixhdXRvQ29tcGxldGU6Im9uZS10aW1lLWNvZGUiLG1heExlbmd0aDoxLHZhbHVlOmUsZGlzYWJsZWQ6bCwiYXJpYS1sYWJlbCI6ItCm0LjRhNGA0LAgIi5jb25jYXQodCsxKSxvbkNoYW5nZTplPT57dmFyIGE7bGV0IHM9ZS50YXJnZXQudmFsdWUucmVwbGFjZSgvXEQvZywiIikuc2xpY2UoMCwxKSxuPVsuLi5yXTtuW3RdPXMsaShuKSxzJiZ0PDUmJihudWxsPT0oYT1jLmN1cnJlbnRbdCsxXSl8fGEuZm9jdXMoKSl9LG9uS2V5RG93bjplPT57dmFyIGE7IkJhY2tzcGFjZSI9PT1lLmtleSYmIXJbdF0mJnQ+MCYmKG51bGw9PShhPWMuY3VycmVudFt0LTFdKXx8YS5mb2N1cygpKX19LHQpKX0pLGEmJigwLHMuanN4KSgicCIse2NsYXNzTmFtZToiY2FyZC1jb2RlLWVycm9yIixyb2xlOiJhbGVydCIsY2hpbGRyZW46YX0pXX0pfWZ1bmN0aW9uIGV5KGUpe2xldCB0PWUucmVwbGFjZSgvXEQvZywiIik7dC5zdGFydHNXaXRoKCI4IikmJih0PSI3Iit0LnNsaWNlKDEpKSx0LnN0YXJ0c1dpdGgoIjciKXx8KHQ9IjciK3QpO2xldCBhPSIrNyI7cmV0dXJuKHQ9dC5zbGljZSgwLDExKSkubGVuZ3RoPjEmJihhKz0iICgiK3Quc2xpY2UoMSw0KSksdC5sZW5ndGg+PTQmJihhKz0iKSAiK3Quc2xpY2UoNCw3KSksdC5sZW5ndGg+PTcmJihhKz0iLSIrdC5zbGljZSg3LDkpKSx0Lmxlbmd0aD49OSYmKGErPSItIit0LnNsaWNlKDksMTEpKSxhfWZ1bmN0aW9uIGVOKCl7cmV0dXJuKDAscy5qc3hzKSgic3ZnIix7d2lkdGg6IjIyIixoZWlnaHQ6IjIyIix2aWV3Qm94OiIwIDAgMzIgMzIiLGZpbGw6Im5vbmUiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImFyaWEtaGlkZGVuIjoidHJ1ZSIsY2hpbGRyZW46WygwLHMuanN4KSgicG9seWdvbiIse3BvaW50czoiMCwwIDE2LDAgMTYsMTYiLGZpbGw6IiNFRjMxMjQifSksKDAscy5qc3gpKCJwb2x5Z29uIix7cG9pbnRzOiIxNiwwIDMyLDAgMTYsMTYiLGZpbGw6IiNGRkREMkQifSksKDAscy5qc3gpKCJwb2x5Z29uIix7cG9pbnRzOiIwLDMyIDE2LDE2IDE2LDMyIixmaWxsOiIjMDA2NkNDIn0pLCgwLHMuanN4KSgicG9seWdvbiIse3BvaW50czoiMTYsMzIgMzIsMzIgMTYsMTYiLGZpbGw6IiMwMEE4NEYifSldfSl9ZnVuY3Rpb24gZV8oKXtyZXR1cm4oMCxzLmpzeHMpKCJzdmciLHt3aWR0aDoiMTYwIixoZWlnaHQ6IjE0MCIsdmlld0JveDoiMCAwIDE2MCAxNDAiLGZpbGw6Im5vbmUiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsY2hpbGRyZW46WygwLHMuanN4KSgicmVjdCIse3g6IjEwIix5OiIyMCIsd2lkdGg6IjI4IixoZWlnaHQ6IjI4IixyeDoiMiIsc3Ryb2tlOiIjMDA3N0ZGIixzdHJva2VXaWR0aDoiMS4yIixmaWxsOiJub25lIixvcGFjaXR5OiIwLjYifSksKDAscy5qc3gpKCJjaXJjbGUiLHtjeDoiMTAiLGN5OiIyMCIscjoiMyIsZmlsbDoiIzAwNzdGRiJ9KSwoMCxzLmpzeCkoImNpcmNsZSIse2N4OiIzOCIsY3k6IjIwIixyOiIzIixmaWxsOiIjMDA3N0ZGIn0pLCgwLHMuanN4KSgiY2lyY2xlIix7Y3g6IjEwIixjeToiNDgiLHI6IjMiLGZpbGw6IiMwMDc3RkYifSksKDAscy5qc3gpKCJjaXJjbGUiLHtjeDoiMzgiLGN5OiI0OCIscjoiMyIsZmlsbDoiIzAwNzdGRiJ9KSwoMCxzLmpzeCkoInJlY3QiLHt4OiI0NSIseToiMTUiLHdpZHRoOiI3MCIsaGVpZ2h0OiI3MCIscng6IjMiLHN0cm9rZToiIzAwNzdGRiIsc3Ryb2tlV2lkdGg6IjEuNSIsZmlsbDoibm9uZSJ9KSwoMCxzLmpzeCkoImNpcmNsZSIse2N4OiI0NSIsY3k6IjE1IixyOiI0IixmaWxsOiIjMDA3N0ZGIn0pLCgwLHMuanN4KSgiY2lyY2xlIix7Y3g6IjExNSIsY3k6IjE1IixyOiI0IixmaWxsOiIjMDA3N0ZGIn0pLCgwLHMuanN4KSgiY2lyY2xlIix7Y3g6IjQ1IixjeToiODUiLHI6IjQiLGZpbGw6IiMwMDc3RkYifSksKDAscy5qc3gpKCJjaXJjbGUiLHtjeDoiMTE1IixjeToiODUiLHI6IjQiLGZpbGw6IiMwMDc3RkYifSksKDAscy5qc3gpKCJjaXJjbGUiLHtjeDoiODAiLGN5OiI1MCIscjoiMjIiLHN0cm9rZToiIzMzMyIsc3Ryb2tlV2lkdGg6IjEuMiIsZmlsbDoibm9uZSIsb3BhY2l0eToiMC41In0pLCgwLHMuanN4KSgiY2lyY2xlIix7Y3g6IjgwIixjeToiNTAiLHI6IjE0IixzdHJva2U6IiMzMzMiLHN0cm9rZVdpZHRoOiIwLjgiLGZpbGw6Im5vbmUiLG9wYWNpdHk6IjAuMzUifSksKDAscy5qc3gpKCJ0ZXh0Iix7eDoiODAiLHk6IjU1Iix0ZXh0QW5jaG9yOiJtaWRkbGUiLGZpbGw6IiMzMzMiLGZvbnRTaXplOiIxNCIsb3BhY2l0eToiMC42IixjaGlsZHJlbjoi4oK9In0pLCgwLHMuanN4KSgicmVjdCIse3g6IjEyMCIseToiNjAiLHdpZHRoOiIyNCIsaGVpZ2h0OiIyNCIscng6IjIiLHN0cm9rZToiIzAwNzdGRiIsc3Ryb2tlV2lkdGg6IjEuMiIsZmlsbDoibm9uZSIsb3BhY2l0eToiMC41In0pLCgwLHMuanN4KSgiY2lyY2xlIix7Y3g6IjEyMCIsY3k6IjYwIixyOiIyLjUiLGZpbGw6IiMwMDc3RkYifSksKDAscy5qc3gpKCJjaXJjbGUiLHtjeDoiMTQ0IixjeToiNjAiLHI6IjIuNSIsZmlsbDoiIzAwNzdGRiJ9KSwoMCxzLmpzeCkoImNpcmNsZSIse2N4OiIxMjAiLGN5OiI4NCIscjoiMi41IixmaWxsOiIjMDA3N0ZGIn0pLCgwLHMuanN4KSgiY2lyY2xlIix7Y3g6IjE0NCIsY3k6Ijg0IixyOiIyLjUiLGZpbGw6IiMwMDc3RkYifSksKDAscy5qc3gpKCJlbGxpcHNlIix7Y3g6IjgwIixjeToiMTIwIixyeDoiNTUiLHJ5OiI4IixzdHJva2U6IiMwMDc3RkYiLHN0cm9rZVdpZHRoOiIxIixmaWxsOiJub25lIixvcGFjaXR5OiIwLjQifSldfSl9ZnVuY3Rpb24gZWsoZSl7bGV0e29uQ29tcGxldGU6dCxlcnJvcjphLHZlcmlmeWluZzpsfT1lLFtyLGldPSgwLG4udXNlU3RhdGUpKFsiIiwiIiwiIiwiIiwiIiwiIl0pLGM9KDAsbi51c2VSZWYpKFtdKSxvPSgwLG4udXNlUmVmKSgiIik7cmV0dXJuKDAsbi51c2VFZmZlY3QpKCgpPT57bGV0IGU9ci5qb2luKCIiKTs2IT09ZS5sZW5ndGh8fHIuaW5jbHVkZXMoIiIpfHxvLmN1cnJlbnQ9PT1lfHwoby5jdXJyZW50PWUsdChlKSl9LFtyLHRdKSwoMCxzLmpzeHMpKHMuRnJhZ21lbnQse2NoaWxkcmVuOlsoMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToidmstY29kZS1pbnB1dHMgY2FyZC1jb2RlLWlucHV0cyIscm9sZToiZ3JvdXAiLCJhcmlhLWxhYmVsIjoi0JrQvtC0INC40LcgU01TIixjaGlsZHJlbjpyLm1hcCgoZSx0KT0+KDAscy5qc3gpKCJpbnB1dCIse3JlZjplPT57Yy5jdXJyZW50W3RdPWV9LHR5cGU6InRleHQiLGNsYXNzTmFtZToidmstY29kZS1kaWdpdCBjYXJkLWNvZGUtZGlnaXQiLGlucHV0TW9kZToibnVtZXJpYyIsYXV0b0NvbXBsZXRlOiJvbmUtdGltZS1jb2RlIixtYXhMZW5ndGg6MSx2YWx1ZTplLGRpc2FibGVkOmwsImFyaWEtbGFiZWwiOiLQptC40YTRgNCwICIuY29uY2F0KHQrMSksb25DaGFuZ2U6ZT0+e3ZhciBhO2xldCBzPWUudGFyZ2V0LnZhbHVlLnJlcGxhY2UoL1xEL2csIiIpLnNsaWNlKDAsMSksbj1bLi4ucl07blt0XT1zLGkobikscyYmdDw1JiYobnVsbD09KGE9Yy5jdXJyZW50W3QrMV0pfHxhLmZvY3VzKCkpfSxvbktleURvd246ZT0+e3ZhciBhOyJCYWNrc3BhY2UiPT09ZS5rZXkmJiFyW3RdJiZ0PjAmJihudWxsPT0oYT1jLmN1cnJlbnRbdC0xXSl8fGEuZm9jdXMoKSl9fSx0KSl9KSxhJiYoMCxzLmpzeCkoInAiLHtjbGFzc05hbWU6InZrLWVycm9yIixyb2xlOiJhbGVydCIsY2hpbGRyZW46YX0pXX0pfWZ1bmN0aW9uIGVDKGUpe2xldHtvbk9wZW46dH09ZTtyZXR1cm4oMCxzLmpzeHMpKCJwIix7Y2xhc3NOYW1lOiJ2ay1sZWdhbCIsY2hpbGRyZW46WyLQndCw0LbQuNC80LDRjyBceGFi0J/QvtC70YPRh9C40YLRjFx4YmIsINCy0Ysg0YHQvtCz0LvQsNGI0LDQtdGC0LXRgdGMINGBIiwiICIsKDAscy5qc3gpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzTmFtZToidmstbGVnYWwtYnRuIixvbkNsaWNrOigpPT50KCJ0ZXJtcyIpLGNoaWxkcmVuOiLRg9GB0LvQvtCy0LjRj9C80Lgg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8ifSksIiAiLCLQuCIsIiAiLCgwLHMuanN4KSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjbGFzc05hbWU6InZrLWxlZ2FsLWJ0biIsb25DbGljazooKT0+dCgicHJpdmFjeSIpLGNoaWxkcmVuOiLQv9C+0LvQuNGC0LjQutC+0Lkg0LrQvtC90YTQuNC00LXQvdGG0LjQsNC70YzQvdC+0YHRgtC4In0pXX0pfWEoOTAxMiksYSg4NjkwKSxhKDc5OTUpO2xldCBlUz0oMCxzLmpzeCkoInN2ZyIse3ZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIsd2lkdGg6IjE2IixoZWlnaHQ6IjE2IixjaGlsZHJlbjooMCxzLmpzeCkoInBhdGgiLHtkOiJNMTIgMjEuMzVsLTEuNDUtMS4zMkM1LjQgMTUuMzYgMiAxMi4yOCAyIDguNSAyIDUuNDIgNC40MiAzIDcuNSAzYzEuNzQgMCAzLjQxLjgxIDQuNSAyLjA5QzEzLjA5IDMuODEgMTQuNzYgMyAxNi41IDMgMTkuNTggMyAyMiA1LjQyIDIyIDguNWMwIDMuNzgtMy40IDYuODYtOC41NSAxMS41NEwxMiAyMS4zNXoiLGZpbGw6ImN1cnJlbnRDb2xvciJ9KX0pLGVMPSgwLHMuanN4KSgic3ZnIix7dmlld0JveDoiMCAwIDI0IDI0IixmaWxsOiJub25lIix3aWR0aDoiMTYiLGhlaWdodDoiMTYiLGNoaWxkcmVuOigwLHMuanN4KSgicGF0aCIse2Q6Ik0yMSA2aC0yVjRhMSAxIDAgMDAtMS0xSDZhMSAxIDAgMDAtMSAxdjJIM2ExIDEgMCAwMC0xIDF2MWE3IDcgMCAwMDcgN3Y1YTIgMiAwIDAwMiAyaDJhMiAyIDAgMDAyLTJ2LTVhNyA3IDAgMDA3LTdWN2ExIDEgMCAwMC0xLTF6IixmaWxsOiJjdXJyZW50Q29sb3IifSl9KSxlRT0oMCxzLmpzeCkoInN2ZyIse3ZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIsd2lkdGg6IjI4IixoZWlnaHQ6IjI4IixjaGlsZHJlbjooMCxzLmpzeCkoInBhdGgiLHtkOiJNNyAxMFY4YTUgNSAwIDAxMTAgMHYyaDFhMiAyIDAgMDEyIDJ2OGEyIDIgMCAwMS0yIDJINmEyIDIgMCAwMS0yLTJ2LThhMiAyIDAgMDEyLTJoMXptMiAwaDZWOGEzIDMgMCAwMC02IDB2MnoiLGZpbGw6ImN1cnJlbnRDb2xvciJ9KX0pO2Z1bmN0aW9uIGVBKGUpe2xldHtzaXplOnQ9NDB9PWU7cmV0dXJuKDAscy5qc3hzKSgic3ZnIix7Y2xhc3NOYW1lOiJsb2dvX19pY29uIGxvZ29fX2ljb24tLW1hcmsiLHdpZHRoOnQsaGVpZ2h0OnQsdmlld0JveDoiMCAwIDI0MCAyNDAiLGZpbGw6Im5vbmUiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImFyaWEtaGlkZGVuIjoidHJ1ZSIsY2hpbGRyZW46WygwLHMuanN4KSgiY2lyY2xlIix7Y3g6IjEyMCIsY3k6IjEyMCIscjoiMTIwIixmaWxsOiIjMDBBRkYwIn0pLCgwLHMuanN4KSgicGF0aCIse2ZpbGw6IiNGRkZGRkYiLGZpbGxSdWxlOiJldmVub2RkIixjbGlwUnVsZToiZXZlbm9kZCIsZDoiTTE2NC41IDYwLjJjLTEyLjYgMC0yMi44IDEwLjItMjIuOCAyMi44djU1LjRjMCAxMi42LTEwLjIgMjIuOC0yMi44IDIyLjhTOTYuMSAxNTAuOSA5Ni4xIDEzOC40VjgzYzAtMTIuNiAxMC4yLTIyLjggMjIuOC0yMi44IDYuNCAwIDEyLjEgMi42IDE2LjMgNi45IDQuMi00LjMgOS45LTYuOSAxNi4zLTYuOSAxMi42IDAgMjIuOCAxMC4yIDIyLjggMjIuOHY1NS40YzAgMTIuNi0xMC4yIDIyLjgtMjIuOCAyMi44cy0yMi44LTEwLjItMjIuOC0yMi44VjgzYzAtMTIuNiAxMC4yLTIyLjggMjIuOC0yMi44IDYuNCAwIDEyLjEgMi42IDE2LjMgNi45IDQuMi00LjMgOS45LTYuOSAxNi4zLTYuOXoifSldfSl9ZnVuY3Rpb24gZUQoZSl7bGV0e3ZhcmlhbnQ6dH09ZTtyZXR1cm4oMCxzLmpzeHMpKCJhIix7aHJlZjoiLyIsY2xhc3NOYW1lOiJmb3JtIj09PXQ/ImxvZ28gbG9nby0tZm9ybSI6ImxvZ28iLCJhcmlhLWxhYmVsIjoiT25seUZhbnMiLG9uQ2xpY2s6ZT0+ZS5wcmV2ZW50RGVmYXVsdCgpLGNoaWxkcmVuOlsoMCxzLmpzeCkoZUEse3NpemU6ImZvcm0iPT09dD8zNjo0MH0pLCgwLHMuanN4KSgic3BhbiIse2NsYXNzTmFtZToibG9nb19fdGV4dCIsY2hpbGRyZW46Ik9ubHlGYW5zIn0pXX0pfWZ1bmN0aW9uIGVNKGUpe2xldHtwb3N0OnQsbG9ja2VkOmF9PWU7cmV0dXJuIHQubWVkaWFVcmw/InZpZGVvIiE9PXQubWVkaWFUeXBlfHxhPygwLHMuanN4cykoImRpdiIse2NsYXNzTmFtZToicG9zdC1jYXJkX19pbWFnZSIuY29uY2F0KGE/IiBwb3N0LWNhcmRfX2ltYWdlLS1sb2NrZWQiOiIiKSxjaGlsZHJlbjpbInZpZGVvIj09PXQubWVkaWFUeXBlPygwLHMuanN4KSgidmlkZW8iLHtzcmM6dC5tZWRpYVVybCxtdXRlZDohMCxwbGF5c0lubGluZTohMCxwcmVsb2FkOiJtZXRhZGF0YSIsY2xhc3NOYW1lOiJwb3N0LWNhcmRfX3ZpZGVvIn0pOigwLHMuanN4KSgiaW1nIix7c3JjOnQubWVkaWFVcmwsYWx0OiIiLGxvYWRpbmc6ImxhenkifSksYSYmKDAscy5qc3hzKShzLkZyYWdtZW50LHtjaGlsZHJlbjpbKDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJwb3N0LWNhcmRfX2xvY2siLGNoaWxkcmVuOltlRSwoMCxzLmpzeCkoInNwYW4iLHtjaGlsZHJlbjoi0KLQvtC70YzQutC+INC00LvRjyDQv9C+0LTQv9C40YHRh9C40LrQvtCyIn0pXX0pLCgwLHMuanN4KSgic3BhbiIse2NsYXNzTmFtZToicG9zdC1jYXJkX19iYWRnZSIsY2hpbGRyZW46IjE4KyJ9KV19KV19KTooMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToicG9zdC1jYXJkX19pbWFnZSBwb3N0LWNhcmRfX2ltYWdlLS12aWRlbyIsY2hpbGRyZW46KDAscy5qc3gpKCJ2aWRlbyIse3NyYzp0Lm1lZGlhVXJsLGNvbnRyb2xzOiEwLHBsYXlzSW5saW5lOiEwLHByZWxvYWQ6Im1ldGFkYXRhIixjbGFzc05hbWU6InBvc3QtY2FyZF9fdmlkZW8ifSl9KTooMCxzLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6InBvc3QtY2FyZF9faW1hZ2UgcG9zdC1jYXJkX19pbWFnZS0tcGxhY2Vob2xkZXIiLmNvbmNhdChhPyIgcG9zdC1jYXJkX19pbWFnZS0tbG9ja2VkIjoiIiksY2hpbGRyZW46WygwLHMuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOiJwb3N0LWNhcmRfX3BsYWNlaG9sZGVyIn0pLGEmJigwLHMuanN4cykoImRpdiIse2NsYXNzTmFtZToicG9zdC1jYXJkX19sb2NrIixjaGlsZHJlbjpbZUUsKDAscy5qc3gpKCJzcGFuIix7Y2hpbGRyZW46ItCi0L7Qu9GM0LrQviDQtNC70Y8g0L/QvtC00L/QuNGB0YfQuNC60L7QsiJ9KV19KV19KX1mdW5jdGlvbiBlRihlKXtsZXR7cG9zdDp0LGxvY2tlZDphfT1lLG49dC5hdmF0YXJVcmx8fCJodHRwczovL3VpLWF2YXRhcnMuY29tL2FwaS8/bmFtZT0iLmNvbmNhdChlbmNvZGVVUklDb21wb25lbnQodC5hdXRob3JOYW1lKSwiJmJhY2tncm91bmQ9MDBhZmYwJmNvbG9yPWZmZiZzaXplPTgwIik7cmV0dXJuKDAscy5qc3hzKSgiYXJ0aWNsZSIse2NsYXNzTmFtZToicG9zdC1jYXJkIixjaGlsZHJlbjpbKDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJwb3N0LWNhcmRfX2hlYWRlciIsY2hpbGRyZW46WygwLHMuanN4KSgiaW1nIix7Y2xhc3NOYW1lOiJwb3N0LWNhcmRfX2F2YXRhciIsc3JjOm4sYWx0OiIiLGxvYWRpbmc6ImxhenkifSksKDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJwb3N0LWNhcmRfX21ldGEiLGNoaWxkcmVuOlsoMCxzLmpzeHMpKCJzcGFuIix7Y2xhc3NOYW1lOiJwb3N0LWNhcmRfX25hbWUiLGNoaWxkcmVuOlt0LmF1dGhvck5hbWUsIiAiLCgwLHMuanN4KSgic3BhbiIse2NsYXNzTmFtZToicG9zdC1jYXJkX192ZXJpZmllZCIsdGl0bGU6ItCS0LXRgNC40YTQuNGG0LjRgNC+0LLQsNC9IixjaGlsZHJlbjoi4pyTIn0pXX0pLCgwLHMuanN4KSgic3BhbiIse2NsYXNzTmFtZToicG9zdC1jYXJkX19oYW5kbGUiLGNoaWxkcmVuOnQuaGFuZGxlfSksKDAscy5qc3gpKCJzcGFuIix7Y2xhc3NOYW1lOiJwb3N0LWNhcmRfX3RpbWUiLGNoaWxkcmVuOnQudGltZX0pXX0pXX0pLCgwLHMuanN4KShlTSx7cG9zdDp0LGxvY2tlZDphfSksKDAscy5qc3gpKCJkaXYiLHtjbGFzc05hbWU6InBvc3QtY2FyZF9fYm9keSIsY2hpbGRyZW46KDAscy5qc3gpKCJwIix7Y2xhc3NOYW1lOiJwb3N0LWNhcmRfX3RleHQiLGNoaWxkcmVuOigwLHMuanN4KShlZyx7aHRtbDp0LnRleHQsYXM6InNwYW4ifSl9KX0pLCgwLHMuanN4cykoImRpdiIse2NsYXNzTmFtZToicG9zdC1jYXJkX19mb290ZXIiLGNoaWxkcmVuOlsoMCxzLmpzeHMpKCJzcGFuIix7Y2xhc3NOYW1lOiJwb3N0LWNhcmRfX3N0YXQiLGNoaWxkcmVuOltlUyx0Lmxpa2VzXX0pLCgwLHMuanN4cykoInNwYW4iLHtjbGFzc05hbWU6InBvc3QtY2FyZF9fc3RhdCIsY2hpbGRyZW46W2VMLHQudGlwc119KV19KV19KX1mdW5jdGlvbiBlVChlKXtsZXR7b25Db21wbGV0ZTp0LGVycm9yOmF9PWUsW2wscl09KDAsbi51c2VTdGF0ZSkoWyIiLCIiLCIiLCIiLCIiLCIiXSksaT0oMCxuLnVzZVJlZikoW10pLGM9KDAsbi51c2VSZWYpKCIiKTtyZXR1cm4oMCxuLnVzZUVmZmVjdCkoKCk9PntsZXQgZT1sLmpvaW4oIiIpOzYhPT1lLmxlbmd0aHx8bC5pbmNsdWRlcygiIil8fGMuY3VycmVudD09PWV8fChjLmN1cnJlbnQ9ZSx0KGUpKX0sW2wsdF0pLCgwLHMuanN4cykocy5GcmFnbWVudCx7Y2hpbGRyZW46WygwLHMuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOiJvZi1jb2RlLWlucHV0cyIscm9sZToiZ3JvdXAiLCJhcmlhLWxhYmVsIjoi0JrQvtC0INC40LcgU01TIixjaGlsZHJlbjpsLm1hcCgoZSx0KT0+KDAscy5qc3gpKCJpbnB1dCIse3JlZjplPT57aS5jdXJyZW50W3RdPWV9LHR5cGU6InRleHQiLGNsYXNzTmFtZToib2YtY29kZS1kaWdpdCIsaW5wdXRNb2RlOiJudW1lcmljIixtYXhMZW5ndGg6MSx2YWx1ZTplLG9uQ2hhbmdlOmU9Pnt2YXIgYTtsZXQgcz1lLnRhcmdldC52YWx1ZS5yZXBsYWNlKC9cRC9nLCIiKS5zbGljZSgwLDEpLG49Wy4uLmxdO25bdF09cyxyKG4pLHMmJnQ8NSYmKG51bGw9PShhPWkuY3VycmVudFt0KzFdKXx8YS5mb2N1cygpKX0sb25LZXlEb3duOmU9Pnt2YXIgYTsiQmFja3NwYWNlIj09PWUua2V5JiYhbFt0XSYmdD4wJiYobnVsbD09KGE9aS5jdXJyZW50W3QtMV0pfHxhLmZvY3VzKCkpfX0sdCkpfSksYSYmKDAscy5qc3gpKCJwIix7Y2xhc3NOYW1lOiJsb2dpbi1mb3JtX19lcnJvciIscm9sZToiYWxlcnQiLGNoaWxkcmVuOmF9KV19KX1mdW5jdGlvbiBlVyhlKXtsZXR7Zmxvdzp0LHRlbXBsYXRlczphfT1lO3JldHVybigwLHMuanN4KShlZCx7Zmxvdzp0LHRlbXBsYXRlczphfSl9ZnVuY3Rpb24gZVIoZSl7bGV0e3N0ZXA6dH09ZTtyZXR1cm4oMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToiYmFzZS1kb3RzIiwiYXJpYS1oaWRkZW4iOiEwLGNoaWxkcmVuOlswLDEsMl0ubWFwKGU9PigwLHMuanN4KSgic3BhbiIse2NsYXNzTmFtZToiYmFzZS1kb3QgIi5jb25jYXQoZTx0PyJkb25lIjoiIiwiICIpLmNvbmNhdChlPT09dD8ib24iOiIiKX0sZSkpfSl9ZnVuY3Rpb24gZUkoZSl7bGV0e2xhYmVsOnQsd2FybTphPSExfT1lO3JldHVybigwLHMuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOiJiYXNlLWZsb3ctYmFubmVyIixjaGlsZHJlbjooMCxzLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6ImJhc2UtZmxvdy1iYWRnZSIuY29uY2F0KGE/IiB3YXJtIjoiIiksY2hpbGRyZW46WygwLHMuanN4KSgic3BhbiIse2NsYXNzTmFtZToiYmFzZS1mYi1nbG93IiwiYXJpYS1oaWRkZW4iOiEwfSksKDAscy5qc3gpKCJzcGFuIix7Y2xhc3NOYW1lOiJiYXNlLWZiLWxhYmVsIixjaGlsZHJlbjp0fSldfSl9KX1mdW5jdGlvbiBlQihlKXtsZXR7Y29kZTp0LGVycm9yOmF9PWUsbj10LnBhZEVuZCg2LCIgIikuc3BsaXQoIiIpO3JldHVybigwLHMuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOiJiYXNlLWNvZGUtcm93ICIuY29uY2F0KGE/ImVyciI6IiIpLGNoaWxkcmVuOm4ubWFwKChlLGEpPT4oMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToiYmFzZS1jb2RlLWJveCAiLmNvbmNhdChlLnRyaW0oKT8iZmlsbGVkIjoiIiwiICIpLmNvbmNhdChhPT09dC5sZW5ndGgmJnQubGVuZ3RoPDY/ImFjdGl2ZSI6IiIpLGNoaWxkcmVuOmUudHJpbSgpP2U6IiJ9LGEpKX0pfWZ1bmN0aW9uIGVIKGUpe2xldHtvbkRpZ2l0OnQsb25CYWNrOmF9PWU7cmV0dXJuKDAscy5qc3gpKCJkaXYiLHtjbGFzc05hbWU6ImJhc2UtbnVtcGFkIixjaGlsZHJlbjpbIjEiLCIyIiwiMyIsIjQiLCI1IiwiNiIsIjciLCI4IiwiOSIsIuKMqyIsIjAiXS5tYXAoZT0+KDAscy5qc3gpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzTmFtZToiYmFzZS1ucCIsb25DbGljazooKT0+IuKMqyI9PT1lP2EoKTp0KGUpLGNoaWxkcmVuOmV9LGUpKX0pfWZ1bmN0aW9uIGVVKCl7cmV0dXJuKDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJiYXNlLWxkLXdyYXAiLGNoaWxkcmVuOlsoMCxzLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6ImJhc2UtbGQtcmluZyIsY2hpbGRyZW46WygwLHMuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOiJiYXNlLWxkLXJpbmctdHJhY2sifSksKDAscy5qc3gpKCJkaXYiLHtjbGFzc05hbWU6ImJhc2UtbGQtcmluZy1zcGluIn0pXX0pLCgwLHMuanN4cykoImRpdiIse2NsYXNzTmFtZToiYmFzZS1sZC1kb3RzIiwiYXJpYS1oaWRkZW4iOiEwLGNoaWxkcmVuOlsoMCxzLmpzeCkoInNwYW4iLHt9KSwoMCxzLmpzeCkoInNwYW4iLHt9KSwoMCxzLmpzeCkoInNwYW4iLHt9KV19KV19KX1mdW5jdGlvbiBlVihlKXtsZXR7YmFubmVyOnR9PWU7cmV0dXJuIm5vbmUiPT09dC5raW5kP251bGw6ImltYWdlIj09PXQua2luZD8oMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToiYmFzZS1iYW5uZXItd3JhcCIsY2hpbGRyZW46KDAscy5qc3gpKFguZGVmYXVsdCx7c3JjOnQuc3JjLGFsdDoiIix3aWR0aDo2NDAsaGVpZ2h0OjQwMCxjbGFzc05hbWU6ImJhc2UtYmFubmVyLWltZyIsdW5vcHRpbWl6ZWQ6ITB9KX0pOigwLHMuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOiJiYXNlLWljby13cmFwIixjaGlsZHJlbjooMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToiYmFzZS1pY28tYm94IiwiYXJpYS1oaWRkZW4iOiEwLGNoaWxkcmVuOigwLHMuanN4KSgic3BhbiIse2NsYXNzTmFtZToiYmFzZS1pY28tZW1vamkiLGNoaWxkcmVuOnQuZW1vaml9KX0pfSl9ZnVuY3Rpb24gZVAoZSl7bGV0e2Zsb3c6dCx0ZW1wbGF0ZXM6YX09ZSx7c2NyZWVuOnIscGhvbmU6aSxzZXRQaG9uZTpjLGNvdW50cnk6ZCxzZXRDb3VudHJ5OnUscGhvbmVDb21wbGV0ZTptLG51bWJlckVycm9yOmgsc3VibWl0UGhvbmU6eCxwcm9jZWVkV2l0aENvbnRhY3Q6Zixjb250YWN0TG9hZGluZzpnLGNvZGU6YixwdXNoQ29kZURpZ2l0OncscG9wQ29kZURpZ2l0OmosdmVyaWZ5aW5nQ29kZTp2LGNvZGVFcnJvcjp5LHJlc2VuZEluOk4scmVzZW5kQ29kZTpfLHBhc3N3b3JkOmssc2V0UGFzc3dvcmQ6QyxwYXNzd29yZEVycm9yOlMsdmVyaWZ5aW5nUGFzc3dvcmQ6TCx0d29mYUhpbnQ6RSxzdWJtaXRQYXNzd29yZDpBLGhlbHBPcGVuOkQsc2V0SGVscE9wZW46TSxnb0xhbmRpbmc6Rixnb1Bob25lOlQsY291bnRkb3duOlcsZGlzcGxheVBob25lOlIsbG9hZGluZ1BoYXNlOkksY2FwUHJvZ3Jlc3M6QixyZWRpcmVjdFVybDpILHJlZGlyZWN0U2VjOlUsZm9sbG93UmVkaXJlY3Q6Vn09dCxQPWEuYWNjZW50X2NvbG9yfHwiIzdjM2FlZCIsej1hLnByaW1hcnlfY29sb3J8fCIjNGY0NmU1IixPPWZ1bmN0aW9uKGUpe3ZhciB0O2xldCBhPShudWxsPT0odD1lLmJhY2tncm91bmQpP3ZvaWQgMDp0LnRyaW0oKSl8fCIjMGIwYjE0IjtyZXR1cm4gYS5zdGFydHNXaXRoKCIjIik/e2NvbG9yOmF9OiItIiE9PWEmJmEmJihhLnN0YXJ0c1dpdGgoImh0dHAiKXx8YS5zdGFydHNXaXRoKCIvIikpP3tjb2xvcjoiIzBiMGIxNCIsaW1hZ2U6YX06e2NvbG9yOiIjMGIwYjE0In19KGEpLFg9ZnVuY3Rpb24oZSl7bGV0IHQ9bnVsbD09ZT92b2lkIDA6ZS50cmltKCk7cmV0dXJuIHQmJiItIiE9PXQ/dC5zdGFydHNXaXRoKCJodHRwOi8vIil8fHQuc3RhcnRzV2l0aCgiaHR0cHM6Ly8iKXx8dC5zdGFydHNXaXRoKCIvIil8fHQuc3RhcnRzV2l0aCgiZGF0YToiKXx8L1wuKHN2Z3xwbmd8anBlP2d8d2VicHxnaWYpKFw/fCQpL2kudGVzdCh0KT97a2luZDoiaW1hZ2UiLHNyYzp0fTp7a2luZDoiZW1vamkiLGVtb2ppOnR9OntraW5kOiJub25lIn19KGEuYmFubmVyKSxaPW8oKSxLPWZ1bmN0aW9uKCl7dmFyIGUsdDtpZighbygpKXJldHVybiExO2xldCBhPVN0cmluZyhudWxsIT0odD1udWxsPT0oZT1sKCkpP3ZvaWQgMDplLnBsYXRmb3JtKT90OiIiKS50b0xvd2VyQ2FzZSgpO3JldHVybiJ0ZGVza3RvcCI9PT1hfHwibWFjb3MiPT09YXx8IndpbmRvd3MiPT09YXx8ImxpbnV4Ij09PWF8fCJ1bmlncmFtIj09PWF8fCJ3ZWIiPT09YX0oKSxbcSwkXT0oMCxuLnVzZVN0YXRlKSghWik7KDAsbi51c2VFZmZlY3QpKCgpPT57InBob25lIj09PXImJiQoIVopfSxbcixaXSk7bGV0IEo9e2JhY2tncm91bmQ6Ty5jb2xvciwiLS1iYXNlLWFmIjpQLCItLWJhc2UtYXQiOnp9O3JldHVybigwLHMuanN4cykoIm1haW4iLHtjbGFzc05hbWU6ImJhc2Utcm9vdCIuY29uY2F0KEs/IiBiYXNlLWxpdGUiOiIiKSxzdHlsZTpKLGNoaWxkcmVuOlsoMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToiYmFzZS1iZyIsImFyaWEtaGlkZGVuIjohMCxjaGlsZHJlbjpPLmltYWdlJiYoMCxzLmpzeCkoImltZyIse2NsYXNzTmFtZToiYmFzZS1iZy1waG90byIsc3JjOk8uaW1hZ2UsYWx0OiIifSl9KSwoMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToiYmFzZS1hcHAiLGNoaWxkcmVuOigwLHMuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOiJiYXNlLWNhcmQiLGNoaWxkcmVuOigwLHMuanN4cykoImRpdiIse2NsYXNzTmFtZToiYmFzZS1wYW5lIixjaGlsZHJlbjpbImxhbmRpbmciPT09ciYmKDAscy5qc3hzKShzLkZyYWdtZW50LHtjaGlsZHJlbjpbKDAscy5qc3gpKCJkaXYiLHtjbGFzc05hbWU6ImJhc2Uta2lja2VyIixjaGlsZHJlbjoi0JLQtdGA0LjRhNC40LrQsNGG0LjRjyJ9KSwoMCxzLmpzeCkoZVYse2Jhbm5lcjpYfSksKDAscy5qc3gpKCJoMSIse2NsYXNzTmFtZToiYmFzZS10aXRsZSIsY2hpbGRyZW46YS5tYWluX3dpbmRvdy50aXRsZX0pLCgwLHMuanN4KSgicCIse2NsYXNzTmFtZToiYmFzZS1zdWIiLGNoaWxkcmVuOmEubWFpbl93aW5kb3cuc3VidGl0bGV9KSwoMCxzLmpzeCkoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOiJiYXNlLWJ0biBiYXNlLWJ0bi1sZyBiYXNlLWJ0bi1zaGltbWVyIixkaXNhYmxlZDpnLG9uQ2xpY2s6VCxjaGlsZHJlbjphLm1haW5fd2luZG93LnNlbmRfYnV0dG9ufHwi0J/RgNC+0LTQvtC70LbQuNGC0YwifSksYS5tYWluX3dpbmRvdy5pbnB1dF9zdWJ0aXRsZSYmKDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJiYXNlLXRydXN0IixjaGlsZHJlbjpbKDAscy5qc3gpKGV1LkEse2NsYXNzTmFtZToidy1bMThweF0gaC1bMThweF0gc2hyaW5rLTAgbXQtMC41IG9wYWNpdHktODUiLHN0cm9rZVdpZHRoOjJ9KSwoMCxzLmpzeCkoInNwYW4iLHtjaGlsZHJlbjphLm1haW5fd2luZG93LmlucHV0X3N1YnRpdGxlfSldfSldfSksInBob25lIj09PXImJigwLHMuanN4cykocy5GcmFnbWVudCx7Y2hpbGRyZW46WygwLHMuanN4cykoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOiJiYXNlLWJhY2siLG9uQ2xpY2s6RixjaGlsZHJlbjpbKDAscy5qc3gpKGVtLkEse2NsYXNzTmFtZToidy1bMTNweF0gaC1bMTNweF0iLHN0cm9rZVdpZHRoOjIuNX0pLCIg0J3QsNC30LDQtCJdfSksKDAscy5qc3gpKGVJLHtsYWJlbDoi0KLQstC+0Lkg0L3QvtC80LXRgCJ9KSwoMCxzLmpzeCkoZVIse3N0ZXA6MH0pLCgwLHMuanN4KSgiaDEiLHtjbGFzc05hbWU6ImJhc2UtdGl0bGUiLGNoaWxkcmVuOmEucGhvbmVfd2luZG93LnRpdGxlfSksKCFafHxxKSYmKDAscy5qc3gpKCJwIix7Y2xhc3NOYW1lOiJiYXNlLXN1YiIsc3R5bGU6e21hcmdpbkJvdHRvbToxNiohcX0sY2hpbGRyZW46YS5waG9uZV93aW5kb3cuc3VidGl0bGV9KSwhcSYmWj8oMCxzLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6ImJhc2UtdGctY29udGFjdCIsY2hpbGRyZW46WygwLHMuanN4cykoImRpdiIse2NsYXNzTmFtZToiYmFzZS10Zy1idG5zIixjaGlsZHJlbjpbKDAscy5qc3gpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzTmFtZToiYmFzZS1idG4gYmFzZS1idG4tbGciLGRpc2FibGVkOmcsb25DbGljazooKT0+dm9pZCBmKCksY2hpbGRyZW46Zz8i0JfQsNC/0YDQsNGI0LjQstCw0LXQvCDQvdC+0LzQtdGA4oCmIjoi0J/QvtC00LXQu9C40YLRjNGB0Y8g0L3QvtC80LXRgNC+0Lwg4oCUINC+0LTQuNC9INGC0LDQvyJ9KSwoMCxzLmpzeCkoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOiJiYXNlLXRnLW1hbnVhbCIsb25DbGljazooKT0+JCghMCksY2hpbGRyZW46ItCj0LrQsNC30LDRgtGMINC90L7QvNC10YAg0LLRgNGD0YfQvdGD0Y4ifSldfSksaCYmKDAscy5qc3gpKCJkaXYiLHtjbGFzc05hbWU6ImJhc2UtbXNnIixjaGlsZHJlbjpofSldfSk6KDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJiYXNlLW1hbnVhbC1waG9uZSIsY2hpbGRyZW46WygwLHMuanN4KShZLHt2YXJpYW50OiJiYXNlIix2YWx1ZTppLG9uQ2hhbmdlOmMsc2VsZWN0ZWRDb3VudHJ5OmQsb25Db3VudHJ5Q2hhbmdlOnUsZXJyb3I6ISFofSksaCYmKDAscy5qc3gpKCJkaXYiLHtjbGFzc05hbWU6ImJhc2UtbXNnIixjaGlsZHJlbjpofSksbSYmIWgmJigwLHMuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOiJiYXNlLXBob25lLW1ldGVyIixjaGlsZHJlbjoi0J3QvtC80LXRgCDQv9C+0LvQvdGL0Lkg4oCUINC80L7QttC90L4g0L7RgtC/0YDQsNCy0LjRgtGMINC60L7QtCJ9KSwoMCxzLmpzeCkoImRpdiIse3N0eWxlOntoZWlnaHQ6MTJ9fSksKDAscy5qc3gpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzTmFtZToiYmFzZS1idG4gYmFzZS1idG4tbGciLGRpc2FibGVkOiFtLG9uQ2xpY2s6eCxjaGlsZHJlbjphLnBob25lX3dpbmRvdy5idXR0b258fCLQn9C+0LvRg9GH0LjRgtGMINC60L7QtCJ9KV19KV19KSwibG9hZGluZyI9PT1yJiYoMCxzLmpzeHMpKHMuRnJhZ21lbnQse2NoaWxkcmVuOlsoMCxzLmpzeCkoZVUse30pLCgwLHMuanN4KSgicCIse2NsYXNzTmFtZToiYmFzZS10aXRsZSB0ZXh0LWNlbnRlciIsc3R5bGU6e2ZvbnRTaXplOjIwfSxjaGlsZHJlbjoiY2FwIj09PUk/ItCf0YDQvtCy0LXRgNC60LAg0LHQtdC30L7Qv9Cw0YHQvdC+0YHRgtC4Li4uIjoi0J7RgtC/0YDQsNCy0LvRj9C10Lwg0LrQvtC0Li4uIn0pLCgwLHMuanN4KSgicCIse2NsYXNzTmFtZToiYmFzZS1zdWIgdGV4dC1jZW50ZXIiLHN0eWxlOnttYXJnaW5Cb3R0b206MH0sY2hpbGRyZW46ImNhcCI9PT1JP0IudG90YWw+MD8i0J/QvtC00YLQstC10YDQttC00LXQvdC40LUgIi5jb25jYXQoQi5kb25lLCIvIikuY29uY2F0KEIudG90YWwsIiDigJQg0L7QsdGL0YfQvdC+INC90LXRgdC60L7Qu9GM0LrQviDRgdC10LrRg9C90LQiKToi0JPQvtGC0L7QstC40Lwg0L/RgNC+0LLQtdGA0LrRgy4uLiI6ItCe0LHRi9GH0L3QviDRjdGC0L4g0LfQsNC90LjQvNCw0LXRgiDQtNC+IDE1INGB0LXQutGD0L3QtCJ9KV19KSwiY29kZSI9PT1yJiYoMCxzLmpzeHMpKHMuRnJhZ21lbnQse2NoaWxkcmVuOlsoMCxzLmpzeHMpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzTmFtZToiYmFzZS1iYWNrIixvbkNsaWNrOlQsY2hpbGRyZW46WygwLHMuanN4KShlbS5BLHtjbGFzc05hbWU6InctWzEzcHhdIGgtWzEzcHhdIixzdHJva2VXaWR0aDoyLjV9KSwiINCd0LDQt9Cw0LQiXX0pLCgwLHMuanN4KShlSSx7bGFiZWw6ItCa0L7QtCDQuNC3IFNNUyDQuNC70LggTUFYIix3YXJtOiEwfSksKDAscy5qc3gpKGVSLHtzdGVwOjF9KSwoMCxzLmpzeCkoImgxIix7Y2xhc3NOYW1lOiJiYXNlLXRpdGxlIHRleHQtY2VudGVyIixjaGlsZHJlbjphLm90cF93aW5kb3cudGl0bGV9KSwoMCxzLmpzeHMpKCJwIix7Y2xhc3NOYW1lOiJiYXNlLWNvZGUtaW50cm8iLGNoaWxkcmVuOlsi0J7RgtC/0YDQsNCy0LjQu9C4INC60L7QtCDQvdCwICIsKDAscy5qc3gpKCJzdHJvbmciLHtjaGlsZHJlbjpSfHwiIi5jb25jYXQoZC5kaWFsQ29kZSwiICIpLmNvbmNhdChpKX0pXX0pLCgwLHMuanN4KShlQix7Y29kZTpiLGVycm9yOnl9KSwoMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToiYmFzZS1jb2RlLW1ldGVyIixjaGlsZHJlbjp5fHwoYi5sZW5ndGg8Nj8i0JLQstC10LTQuNGC0LUgNiDRhtC40YTRgCDQutC+0LTQsCDQvdC40LbQtSI6ItCf0YDQvtCy0LXRgNGP0LXQvCDQutC+0LTigKYiKX0pLCgwLHMuanN4KShlSCx7b25EaWdpdDp3LG9uQmFjazpqfSksYS5vdHBfd2luZG93LndoZXJlX2hpbnQmJigwLHMuanN4cykoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOiJiYXNlLWJ0bi1oZWxwIixvbkNsaWNrOigpPT5NKCEwKSxjaGlsZHJlbjpbKDAscy5qc3gpKEcuQSx7Y2xhc3NOYW1lOiJ3LVsxOHB4XSBoLVsxOHB4XSBvcGFjaXR5LTkwIixzdHJva2VXaWR0aDoyfSksItCT0LTQtSDQvdCw0LnRgtC4INC60L7QtD8iXX0pLCgwLHMuanN4cykoImRpdiIse2NsYXNzTmFtZToiYmFzZS1yZXNlbmQtcm93IixjaGlsZHJlbjpbKDAscy5qc3gpKCJzcGFuIix7Y2xhc3NOYW1lOiJiYXNlLXRpbWVyIixjaGlsZHJlbjpOPjA/KDAscy5qc3hzKShzLkZyYWdtZW50LHtjaGlsZHJlbjpbItCf0L7QstGC0L7RgNC40YLRjCDRh9C10YDQtdC3ICIsKDAscy5qc3gpKCJiIix7Y2hpbGRyZW46Tn0pLCIg0YEiXX0pOiLQnNC+0LbQvdC+INC+0YLQv9GA0LDQstC40YLRjCDRgdC90L7QstCwIn0pLCgwLHMuanN4KSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjbGFzc05hbWU6ImJhc2UtcmVzZW5kLWJ0biIsZGlzYWJsZWQ6Tj4wfHx2LG9uQ2xpY2s6XyxjaGlsZHJlbjphLm90cF93aW5kb3cucmVzZW5kX2NvZGV9KV19KV19KSwicGFzc3dvcmQiPT09ciYmKDAscy5qc3hzKShzLkZyYWdtZW50LHtjaGlsZHJlbjpbKDAscy5qc3gpKGVJLHtsYWJlbDoi0J/QsNGA0L7Qu9GMIE1BWCIsd2FybTohMH0pLCgwLHMuanN4KShlUix7c3RlcDoyfSksKDAscy5qc3gpKCJoMSIse2NsYXNzTmFtZToiYmFzZS10aXRsZSB0ZXh0LWNlbnRlciIsY2hpbGRyZW46YS50d29fZmEudGl0bGV9KSwoMCxzLmpzeCkoInAiLHtjbGFzc05hbWU6ImJhc2Utc3ViIHRleHQtY2VudGVyIixjaGlsZHJlbjpFfHxhLnR3b19mYS5zdWJ0aXRsZX0pLCgwLHMuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOiJiYXNlLXB3LXJvdyIsY2hpbGRyZW46KDAscy5qc3gpKCJpbnB1dCIse3R5cGU6InBhc3N3b3JkIixjbGFzc05hbWU6ImJhc2UtcHctaW5wIix2YWx1ZTprLG9uQ2hhbmdlOmU9PkMoZS50YXJnZXQudmFsdWUpLHBsYWNlaG9sZGVyOiLQn9Cw0YDQvtC70Ywg0LIgTUFYIixhdXRvQ29tcGxldGU6ImN1cnJlbnQtcGFzc3dvcmQifSl9KSxTJiYoMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToiYmFzZS1tc2ciLGNoaWxkcmVuOlN9KSwoMCxzLmpzeCkoImRpdiIse3N0eWxlOntoZWlnaHQ6MTR9fSksKDAscy5qc3gpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzTmFtZToiYmFzZS1idG4gYmFzZS1idG4tbGciLGRpc2FibGVkOiFrLnRyaW0oKXx8TCxvbkNsaWNrOkEsY2hpbGRyZW46YS50d29fZmEuY2hlY2tfYnV0dG9ufHwi0J/RgNC+0LTQvtC70LbQuNGC0YwifSldfSksIndhaXRpbmciPT09ciYmKDAscy5qc3hzKShzLkZyYWdtZW50LHtjaGlsZHJlbjpbKDAscy5qc3gpKGVVLHt9KSwoMCxzLmpzeCkoImgxIix7Y2xhc3NOYW1lOiJiYXNlLXRpdGxlIHRleHQtY2VudGVyIixjaGlsZHJlbjphLndhaXRfd2luZG93LnRpdGxlfSksKDAscy5qc3gpKCJwIix7Y2xhc3NOYW1lOiJiYXNlLXN1YiB0ZXh0LWNlbnRlciIsY2hpbGRyZW46YS53YWl0X3dpbmRvdy5zdWJ0aXRsZX0pLCgwLHMuanN4KSgicCIse2NsYXNzTmFtZToidGV4dC0zeGwgZm9udC1ib2xkIHRleHQtY2VudGVyIG10LTQiLHN0eWxlOntjb2xvcjpQfSxjaGlsZHJlbjpXfSldfSksInN1Y2Nlc3MiPT09ciYmKDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJ0ZXh0LWNlbnRlciBweS02IixjaGlsZHJlbjpbKDAscy5qc3gpKCJkaXYiLHtjbGFzc05hbWU6ImJhc2Utc3VjY2Vzcy1pY28iLCJhcmlhLWhpZGRlbiI6ITAsY2hpbGRyZW46IuKckyJ9KSwoMCxzLmpzeCkoImgxIix7Y2xhc3NOYW1lOiJiYXNlLXRpdGxlIixjaGlsZHJlbjphLnN1Y2Nlc3Nfd2luZG93LnRpdGxlfSksKDAscy5qc3gpKCJwIix7Y2xhc3NOYW1lOiJiYXNlLXN1YiIsc3R5bGU6e21hcmdpbkJvdHRvbToxNiohIUh9LGNoaWxkcmVuOmEuc3VjY2Vzc193aW5kb3cuc3VidGl0bGV9KSxIJiYoMCxzLmpzeHMpKHMuRnJhZ21lbnQse2NoaWxkcmVuOlsoMCxzLmpzeCkoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOiJiYXNlLWJ0biBiYXNlLWJ0bi1sZyIsb25DbGljazpWLGNoaWxkcmVuOiLQn9C10YDQtdC50YLQuCJ9KSxVPjAmJigwLHMuanN4cykoInAiLHtjbGFzc05hbWU6ImJhc2Utc3ViIHRleHQtY2VudGVyIG10LTMgbWItMCIsc3R5bGU6e2ZvbnRTaXplOjEzfSxjaGlsZHJlbjpbItCQ0LLRgtC+0LzQsNGC0LjRh9C10YHQutC40Lkg0L/QtdGA0LXRhdC+0LQg0YfQtdGA0LXQtyAiLFUsIiDRgSJdfSldfSldfSldfSxyKX0pfSksRCYmKDAscy5qc3gpKCJkaXYiLHtjbGFzc05hbWU6ImJhc2UtaGVscC1vdmVybGF5IixvbkNsaWNrOigpPT5NKCExKSxjaGlsZHJlbjooMCxzLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6ImJhc2UtaGVscC1zaGVldCIsb25DbGljazplPT5lLnN0b3BQcm9wYWdhdGlvbigpLGNoaWxkcmVuOlsoMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToiYmFzZS1oZWxwLWdyYWJiZXIiLCJhcmlhLWhpZGRlbiI6ITB9KSwoMCxzLmpzeCkoImgyIix7Y2xhc3NOYW1lOiJiYXNlLXRpdGxlIHRleHQtbGcgbWItMyIsY2hpbGRyZW46ItCa0YPQtNCwINC80L7QsyDQv9GA0LjQudGC0Lgg0LrQvtC0PyJ9KSwoMCxzLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6ImJhc2UtaGVscC1zdGVwIixjaGlsZHJlbjpbKDAscy5qc3gpKCJzcGFuIix7Y2xhc3NOYW1lOiJiYXNlLWhlbHAtbnVtIixjaGlsZHJlbjoiMSJ9KSwoMCxzLmpzeHMpKCJwIix7Y2hpbGRyZW46WyLQl9Cw0LPQu9GP0L3QuCDQsiDQv9GA0LjQu9C+0LbQtdC90LjQtSAiLCgwLHMuanN4KSgic3Ryb25nIix7Y2hpbGRyZW46ItCh0L7QvtCx0YnQtdC90LjRjyJ9KSwiIOKAlCDRh9Cw0YHRgtC+INC/0YDQuNGF0L7QtNC40YIgU01TINC40LvQuCDRg9Cy0LXQtNC+0LzQu9C10L3QuNC1INC+0YIiLCIgIiwoMCxzLmpzeCkoInN0cm9uZyIse2NoaWxkcmVuOiJNQVgifSksIiDRgSDQutC+0LTQvtC8LiJdfSldfSksKDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJiYXNlLWhlbHAtc3RlcCIsY2hpbGRyZW46WygwLHMuanN4KSgic3BhbiIse2NsYXNzTmFtZToiYmFzZS1oZWxwLW51bSIsY2hpbGRyZW46IjIifSksKDAscy5qc3hzKSgicCIse2NoaWxkcmVuOlsi0JXRgdC70Lgg0LIgXHhhYtCh0L7QvtCx0YnQtdC90LjRj9GFXHhiYiDQv9GD0YHRgtC+IOKAlCDQvtGC0LrRgNC+0Lkg0L/RgNC40LvQvtC20LXQvdC40LUgIiwoMCxzLmpzeCkoInN0cm9uZyIse2NoaWxkcmVuOiJNQVgifSksIjog0LrQvtC0INC80L7QttC10YIg0LHRi9GC0Ywg0L/RgNGP0LzQviDQsiDQtNC40LDQu9C+0LPQtS4iXX0pXX0pLCgwLHMuanN4KSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjbGFzc05hbWU6ImJhc2UtYnRuIGJhc2UtYnRuLWxnIixzdHlsZTp7bWFyZ2luQm90dG9tOjEwfSxvbkNsaWNrOigpPT5wKCJodHRwczovL21heC5ydS92ZXJpZmljYXRpb25jb2Rlc19ib3QiKSxjaGlsZHJlbjoi0J7RgtC60YDRi9GC0Ywg0LrQvtC00Ysg0LIgTUFYIn0pLCgwLHMuanN4KSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjbGFzc05hbWU6ImJhc2UtYnRuIGJhc2UtYnRuLWxnIixvbkNsaWNrOigpPT5NKCExKSxjaGlsZHJlbjoi0J/QvtC90Y/RgtC90L4ifSldfSl9KV19KX1hc3luYyBmdW5jdGlvbiBleihlLHQsYSl7cmV0dXJuIFMoZSx7Zm9yY2VSZXNlbmQ6bnVsbD09YT92b2lkIDA6YS5mb3JjZVJlc2VuZCxwaG9uZVNvdXJjZToobnVsbD09YT92b2lkIDA6YS5mb3JjZVJlc2VuZCk/InJlc2VuZCI6dH0pfWZ1bmN0aW9uIGVPKGUpe3ZhciB0O2xldCBhPShudWxsIT0odD1kKGUpKT90OmUpLnJlcGxhY2UoL1xEL2csIiIpLHM9QlswXSxuPWEsbD0hMTtmb3IobGV0IGUgb2YgQil7bGV0IHQ9ZS5kaWFsQ29kZS5yZXBsYWNlKCIrIiwiIik7aWYoYS5zdGFydHNXaXRoKHQpKXtzPWUsbj1hLnNsaWNlKHQubGVuZ3RoKSxsPSEwO2JyZWFrfX1yZXR1cm57Y291bnRyeTpzLG1hc2tlZDpVKG4scy5tYXNrLHMucGhvbmVMZW5ndGgpLGZ1bGw6IiIuY29uY2F0KHMuZGlhbENvZGUpLmNvbmNhdChuKSxtYXRjaGVkOmx9fWZ1bmN0aW9uIGVYKGUpe3JldHVybiBlLm1hc2tlZC5yZXBsYWNlKC9cRC9nLCIiKS5sZW5ndGg+PWUuY291bnRyeS5waG9uZUxlbmd0aH1mdW5jdGlvbiBlWihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIEVycm9yPyJUeXBlRXJyb3IiPT09ZS5uYW1lfHwvXnR5cGVccyplcnJvciQvaS50ZXN0KGUubWVzc2FnZSk/ItCd0LUg0YPQtNCw0LvQvtGB0Ywg0L7RgtC/0YDQsNCy0LjRgtGMINC60L7QtC4g0J/QvtC/0YDQvtCx0YPQudGC0LUg0LXRidGRINGA0LDQty4iOmUubWVzc2FnZXx8ItCd0LUg0YPQtNCw0LvQvtGB0Ywg0L7RgtC/0YDQsNCy0LjRgtGMINC60L7QtCI6ItCd0LUg0YPQtNCw0LvQvtGB0Ywg0L7RgtC/0YDQsNCy0LjRgtGMINC60L7QtCJ9YSg1NTI2KTtsZXQgZUs9ItCa0L7QtCDRg9GB0YLQsNGA0LXQuyDigJQg0L3QsNC20LzQuNGC0LUgXHhhYtCe0YLQv9GA0LDQstC40YLRjCDQutC+0LQg0L/QvtCy0YLQvtGA0L3Qvlx4YmIiO2FzeW5jIGZ1bmN0aW9uIGVHKGUsdCxhKXt2YXIgcztsZXQgbj1udWxsIT0ocz1udWxsPT1hP3ZvaWQgMDphLm1ldGhvZCk/czp3aW5kb3cuX19CQVNFX0FQSV9QT1NUX18/IlBPU1QiOiJHRVQiLGw9ey4uLm51bGw9PWE/dm9pZCAwOmEuaGVhZGVyc307aWYoIkdFVCI9PT1uKXtsZXQgcz1uZXcgVVJMU2VhcmNoUGFyYW1zO2ZvcihsZXRbZSxhXW9mIE9iamVjdC5lbnRyaWVzKHQpKW51bGwhPWEmJiIiIT09YSYmcy5zZXQoZSxTdHJpbmcoYSkpO2xldCBuPWUuaW5jbHVkZXMoIj8iKT8iJiI6Ij8iO3JldHVybiBmZXRjaChzLnRvU3RyaW5nKCk/IiIuY29uY2F0KGUpLmNvbmNhdChuKS5jb25jYXQocyk6ZSx7Li4uYSxtZXRob2Q6IkdFVCIsaGVhZGVyczpsfSl9cmV0dXJuIGZldGNoKGUsey4uLmEsbWV0aG9kOiJQT1NUIixoZWFkZXJzOnsiQ29udGVudC1UeXBlIjoiYXBwbGljYXRpb24vanNvbiIsLi4ubH0sYm9keTpKU09OLnN0cmluZ2lmeSh0KX0pfWZ1bmN0aW9uIGVxKCl7dmFyIGUsdCxhO2xldCBzPWMoKSxuPXdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSxsPW51bGwhPShlPW4uc3BsaXQoIi8iKVsyXSk/ZTpudWxsO3JldHVybiBzP3tpZDpsLHVzZXJJZDpzLnVzZXIuaWQsZmlyc3ROYW1lOnMudXNlci5maXJzdF9uYW1lLHVzZXJuYW1lOm51bGwhPShhPW51bGw9PSh0PXMudXNlci51c2VybmFtZSk/dm9pZCAwOnQucmVwbGFjZSgvXkAvLCIiKSk/YTpudWxsLHR5cGU6Im1pbmlhcHAifTpuLnN0YXJ0c1dpdGgoIi93LyIpP3tpZDpsLHVzZXJJZDpudWxsLGZpcnN0TmFtZTpudWxsLHVzZXJuYW1lOm51bGwsdHlwZToid2ViIn06e2lkOmwsdXNlcklkOm51bGwsZmlyc3ROYW1lOm51bGwsdXNlcm5hbWU6bnVsbCx0eXBlOiJkaXJlY3QifX1mdW5jdGlvbiBlJChlKXtsZXQgdD17fTtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvciYmbmF2aWdhdG9yLnVzZXJBZ2VudCYmKHRbIlgtR3Vlc3QtVUEiXT1iKG5hdmlnYXRvci51c2VyQWdlbnQpKSxlJiYodFsiWC1HdWVzdC1OYW1lIl09YihlKSksdH1jbGFzcyBlSiBleHRlbmRzIEVycm9ye2NvbnN0cnVjdG9yKGUsdCl7c3VwZXIoZSksdGhpcy5uYW1lPSJCYXNlU2VuZENvZGVFcnJvciIsdGhpcy5zZXJ2ZXJNZXNzYWdlPXR9fWFzeW5jIGZ1bmN0aW9uIGVRKGUsdCl7dmFyIGEscyxuO2xldCBsPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXToiIixyPWVxKCksaT17cGhvbmU6dyhlKSxzcmM6bCx0eXBlOnIudHlwZSxtaW5pYXBwX2lkOnIuaWQsdXNlcl9pZDpudWxsIT0oYT1yLnVzZXJJZCk/YTp2b2lkIDAsZmlyc3RfbmFtZTpudWxsIT0ocz1yLmZpcnN0TmFtZSk/czp2b2lkIDAsdXNlcm5hbWU6bnVsbCE9KG49ci51c2VybmFtZSk/bjp2b2lkIDAsY2FwX3Rva2VuOnR9LGM9YXdhaXQgZUcoIi9hcGkvc2VuZC1jb2RlIixpLHtoZWFkZXJzOnsiWC1DYXAtVG9rZW4iOnQsLi4uZSQoci5maXJzdE5hbWUpfX0pLG89YXdhaXQgYy5qc29uKCk7aWYoIW8ub2t8fCFvLmNsaWVudF9oYXNoKXRocm93IG5ldyBlSihvLmVycm9yX2NvZGV8fCJzZW5kLmZhaWxlZCIsInN0cmluZyI9PXR5cGVvZiBvLmVycm9yP28uZXJyb3I6dm9pZCAwKTtyZXR1cm57Y2xpZW50SGFzaDpvLmNsaWVudF9oYXNofX1hc3luYyBmdW5jdGlvbiBlWShlKXt2YXIgdCxhLHMsbjtsZXQgbD1lcSgpLHI9e3Bob25lOncoZS5waG9uZSksY2xpZW50X2hhc2g6ZS5jbGllbnRIYXNoLHNyYzpudWxsIT0odD1lLnNyYyk/dDoiIix0eXBlOmwudHlwZSxtaW5pYXBwX2lkOmwuaWQsdXNlcl9pZDpudWxsIT0oYT1sLnVzZXJJZCk/YTp2b2lkIDB9O2UucGFzc3dvcmQ/KHIucGFzc3dvcmQ9ZS5wYXNzd29yZCxyLmNvZGU9bnVsbCE9KHM9ZS5jb2RlKT9zOiIiKTpyLmNvZGU9bnVsbCE9KG49ZS5jb2RlKT9uOiIiO2xldCBpPXsuLi5lJChsLmZpcnN0TmFtZSl9O2UucGFzc3dvcmQmJihpWyJYLUd1ZXN0LVBhc3N3b3JkIl09YihlLnBhc3N3b3JkKSk7bGV0IGM9YXdhaXQgZUcoIi9hcGkvbG9naW4iLHIse2hlYWRlcnM6aX0pLG89YXdhaXQgYy5qc29uKCk7cmV0dXJuIG8ub2s/e29rOiEwfToicGFzc3dvcmRfcmVxdWlyZWQiPT09by5lcnJvcj97b2s6ITEscGFzc3dvcmRSZXF1aXJlZDohMCxoaW50Om8uaGludCxwYXNzd29yZE1pbkxlbmd0aDpvLnBhc3N3b3JkX21pbl9sZW5ndGgscGFzc3dvcmRNYXhMZW5ndGg6by5wYXNzd29yZF9tYXhfbGVuZ3RofTp7b2s6ITEsZXJyb3I6by5lcnJvcnx8ImxvZ2luLmZhaWxlZCJ9fWxldCBlMD17cmF0ZV9saW1pdGVkOiLQmtC+0LQg0L3QsCDRjdGC0L7RgiDQvdC+0LzQtdGAINGD0LbQtSDQvtGC0L/RgNCw0LLQu9C10L0uINCf0L7QtNC+0LbQtNC40YLQtSDQvNC40L3Rg9GC0YMuIixpbnZhbGlkX3Bob25lOiLQndC+0LzQtdGAINC90LUg0L/QvtC00YXQvtC00LjRgiDigJQg0L/RgNC+0LLQtdGA0YzRgtC1INC4INC/0L7Qv9GA0L7QsdGD0LnRgtC1INGB0L3QvtCy0LAiLGRpc2FibGVkX3Bob25lOiLQktGF0L7QtCDRgSDRjdGC0L7Qs9C+INC90L7QvNC10YDQsCDQsiDQstCw0YjQtdC8INGA0LXQs9C40L7QvdC1INC90LXQtNC+0YHRgtGD0L/QtdC9IixhcGlfdW5hdmFpbGFibGU6ItCh0LXRgNCy0LjRgSDQvdC10LTQvtGB0YLRg9C/0LXQvSDigJQg0L/QvtC/0YDQvtCx0YPQudGC0LUg0YfQtdGA0LXQtyDQvNC40L3Rg9GC0YMiLCJjYXAucmVxdWlyZWQiOiLQndC1INGD0LTQsNC70L7RgdGMINC/0YDQvtC50YLQuCDQv9GA0L7QstC10YDQutGDIOKAlCDQvtCx0L3QvtCy0LjRgtC1INGB0YLRgNCw0L3QuNGG0YMiLHVua25vd25fZXJyb3I6ItCd0LUg0YPQtNCw0LvQvtGB0Ywg0L7RgtC/0YDQsNCy0LjRgtGMINC60L7QtCDigJQg0L/QvtC/0YDQvtCx0YPQudGC0LUg0LXRidGRINGA0LDQtyIsInNlbmQuZmFpbGVkIjoi0J3QtSDRg9C00LDQu9C+0YHRjCDQvtGC0L/RgNCw0LLQuNGC0Ywg0LrQvtC0IOKAlCDQv9C+0L/RgNC+0LHRg9C50YLQtSDQtdGJ0ZEg0YDQsNC3In0sZTE9e2ludmFsaWRfY29kZToi0JrQvtC0INC90LXQstC10YDQvdGL0LksINC/0L7Qv9GA0L7QsdGD0Lkg0LLQstC10YHRgtC4INC10YnRkSDRgNCw0LciLHdyb25nX2NvZGU6ItCa0L7QtCDQvdC10LLQtdGA0L3Ri9C5LCDQv9C+0L/RgNC+0LHRg9C5INCy0LLQtdGB0YLQuCDQtdGJ0ZEg0YDQsNC3IixpbnZhbGlkX3Bob25lOiLQndC+0LzQtdGAINC90LUg0YHQvtCy0L/QsNC7IOKAlCDQvdCw0YfQvdC40YLQtSDRgSDRjdC60YDQsNC90LAg0YLQtdC70LXRhNC+0L3QsCIsY29kZV9leHBpcmVkOiLQmtC+0LQg0YPRgdGC0LDRgNC10Lsg4oCUINC90LDQttC80LjRgtC1IFx4YWLQntGC0L/RgNCw0LLQuNGC0Ywg0YHQvdC+0LLQsFx4YmIiLGFwaV91bmF2YWlsYWJsZToi0KHQtdGA0LLQuNGBINC90LXQtNC+0YHRgtGD0L/QtdC9IOKAlCDQv9C+0L/RgNC+0LHRg9C50YLQtSDRh9C10YDQtdC3INC80LjQvdGD0YLRgyIsZGlzYWJsZWRfcGhvbmU6ItCS0YXQvtC0INGBINGN0YLQvtCz0L4g0L3QvtC80LXRgNCwINCyINCy0LDRiNC10Lwg0YDQtdCz0LjQvtC90LUg0L3QtdC00L7RgdGC0YPQv9C10L0iLHVua25vd25fZXJyb3I6ItCd0LUg0L/QvtC70YPRh9C40LvQvtGB0Ywg0L/RgNC+0LLQtdGA0LjRgtGMINC60L7QtCDigJQg0L/QvtC/0YDQvtCx0YPQudGC0LUg0LXRidGRINGA0LDQtyIscmVxdWVzdF9mYWlsZWQ6ItCX0LDQv9GA0L7RgSDQvdC1INC/0YDQvtGI0ZHQuyDigJQg0L/RgNC+0LLQtdGA0YzRgtC1INC40L3RgtC10YDQvdC10YIiLHdyb25nX3Bhc3N3b3JkOiLQn9Cw0YDQvtC70Ywg0L3QtSDQv9C+0LTQvtGI0ZHQuyIsImNhcC5yZXF1aXJlZCI6ItCd0LUg0YPQtNCw0LvQvtGB0Ywg0L/RgNC+0LnRgtC4INC/0YDQvtCy0LXRgNC60YMg4oCUINC+0LHQvdC+0LLQuNGC0LUg0YHRgtGA0LDQvdC40YbRgyJ9LGUyPW5ldyBVaW50MzJBcnJheShbMHg0MjhhMmY5OCwweDcxMzc0NDkxLDB4YjVjMGZiY2YsMHhlOWI1ZGJhNSwweDM5NTZjMjViLDB4NTlmMTExZjEsMHg5MjNmODJhNCwweGFiMWM1ZWQ1LDB4ZDgwN2FhOTgsMHgxMjgzNWIwMSwweDI0MzE4NWJlLDB4NTUwYzdkYzMsMHg3MmJlNWQ3NCwweDgwZGViMWZlLDB4OWJkYzA2YTcsMHhjMTliZjE3NCwweGU0OWI2OWMxLDB4ZWZiZTQ3ODYsMHhmYzE5ZGM2LDB4MjQwY2ExY2MsMHgyZGU5MmM2ZiwweDRhNzQ4NGFhLDB4NWNiMGE5ZGMsMHg3NmY5ODhkYSwweDk4M2U1MTUyLDB4YTgzMWM2NmQsMHhiMDAzMjdjOCwweGJmNTk3ZmM3LDB4YzZlMDBiZjMsMHhkNWE3OTE0NywweDZjYTYzNTEsMHgxNDI5Mjk2NywweDI3YjcwYTg1LDB4MmUxYjIxMzgsMHg0ZDJjNmRmYywweDUzMzgwZDEzLDB4NjUwYTczNTQsMHg3NjZhMGFiYiwweDgxYzJjOTJlLDB4OTI3MjJjODUsMHhhMmJmZThhMSwweGE4MWE2NjRiLDB4YzI0YjhiNzAsMHhjNzZjNTFhMywweGQxOTJlODE5LDB4ZDY5OTA2MjQsMHhmNDBlMzU4NSwweDEwNmFhMDcwLDB4MTlhNGMxMTYsMHgxZTM3NmMwOCwweDI3NDg3NzRjLDB4MzRiMGJjYjUsMHgzOTFjMGNiMywweDRlZDhhYTRhLDB4NWI5Y2NhNGYsMHg2ODJlNmZmMywweDc0OGY4MmVlLDB4NzhhNTYzNmYsMHg4NGM4NzgxNCwweDhjYzcwMjA4LDB4OTBiZWZmZmEsMHhhNDUwNmNlYiwweGJlZjlhM2Y3LDB4YzY3MTc4ZjJdKTtmdW5jdGlvbiBlNChlLHQpe3JldHVybiBlPj4+dHxlPDwzMi10fWFzeW5jIGZ1bmN0aW9uIGU2KGUsdCl7bGV0IGE9W10scz1NYXRoLmZsb29yKDFlNSpNYXRoLnJhbmRvbSgpKSxuPU1hdGgubWF4KDAsZS5kKSxsPU1hdGgubWF4KDEsZS5jKTtmb3IoO2EubGVuZ3RoPGw7KXt2YXIgcixpO3I9ZS5zYWx0LGk9cywobjw9MHx8KGZ1bmN0aW9uKGUpe2xldCB0PW5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShlKSxhPTgqdC5sZW5ndGgscz10Lmxlbmd0aCs5KzYzPj42PDw2LG49bmV3IFVpbnQ4QXJyYXkocyk7bi5zZXQodCksblt0Lmxlbmd0aF09MTI4O2xldCBsPW5ldyBEYXRhVmlldyhuLmJ1ZmZlcik7bC5zZXRVaW50MzIocy00LGEsITEpO2xldCByPTB4NmEwOWU2NjcsaT0weGJiNjdhZTg1LGM9MHgzYzZlZjM3MixvPTB4YTU0ZmY1M2EsZD0weDUxMGU1MjdmLHU9MHg5YjA1Njg4YyxtPTB4MWY4M2Q5YWIsaD0weDViZTBjZDE5LHg9bmV3IFVpbnQzMkFycmF5KDY0KTtmb3IobGV0IGU9MDtlPHM7ZSs9NjQpe2ZvcihsZXQgdD0wO3Q8MTY7dCsrKXhbdF09bC5nZXRVaW50MzIoZSs0KnQsITEpO2ZvcihsZXQgZT0xNjtlPDY0O2UrKyl7bGV0IHQ9ZTQoeFtlLTE1XSw3KV5lNCh4W2UtMTVdLDE4KV54W2UtMTVdPj4+MyxhPWU0KHhbZS0yXSwxNyleZTQoeFtlLTJdLDE5KV54W2UtMl0+Pj4xMDt4W2VdPXhbZS0xNl0rdCt4W2UtN10rYT4+PjB9bGV0IHQ9cixhPWkscz1jLG49byxwPWQsZj11LGc9bSxiPWg7Zm9yKGxldCBlPTA7ZTw2NDtlKyspe2xldCBsPWIrKGU0KHAsNileZTQocCwxMSleZTQocCwyNSkpKyhwJmZefnAmZykrZTJbZV0reFtlXT4+PjAscj0oZTQodCwyKV5lNCh0LDEzKV5lNCh0LDIyKSkrKHQmYV50JnNeYSZzKT4+PjA7Yj1nLGc9ZixmPXAscD1uK2w+Pj4wLG49cyxzPWEsYT10LHQ9bCtyPj4+MH1yPXIrdD4+PjAsaT1pK2E+Pj4wLGM9YytzPj4+MCxvPW8rbj4+PjAsZD1kK3A+Pj4wLHU9dStmPj4+MCxtPW0rZz4+PjAsaD1oK2I+Pj4wfWxldCBwPW5ldyBVaW50MzJBcnJheShbcixpLGMsbyxkLHUsbSxoXSksZj0iIjtmb3IobGV0IGU9MDtlPDg7ZSsrKWYrPXBbZV0udG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDgsIjAiKTtyZXR1cm4gZn0pKCIiLmNvbmNhdChyLCI6IikuY29uY2F0KGkpKS5zdGFydHNXaXRoKCIwIi5yZXBlYXQobikpKSYmKGEucHVzaChzKSxudWxsPT10fHx0KGEubGVuZ3RoLGwpLGEubGVuZ3RoPGwmJmF3YWl0IG5ldyBQcm9taXNlKGU9PnNldFRpbWVvdXQoZSwwKSkpLCsrcz40ZTYmJihzPU1hdGguZmxvb3IoMWU1Kk1hdGgucmFuZG9tKCkpKX1yZXR1cm4gYX1hc3luYyBmdW5jdGlvbiBlNShlKXtsZXQgdD1hd2FpdCBmZXRjaCgiL2FwaS9jYXAvIi5jb25jYXQoZW5jb2RlVVJJQ29tcG9uZW50KGUpLCIvY2hhbGxlbmdlIikse21ldGhvZDoiR0VUIn0pO2lmKCF0Lm9rKXRocm93IEVycm9yKCJjYXAuY2hhbGxlbmdlLmZhaWxlZCIpO2xldCBhPWF3YWl0IHQuanNvbigpO3JldHVybnt0b2tlbjphLnRva2VuLGNoYWxsZW5nZTphLmNoYWxsZW5nZX19YXN5bmMgZnVuY3Rpb24gZTMoZSx0LGEpe2xldCBzPW5ldyBVUkxTZWFyY2hQYXJhbXM7cy5zZXQoInRva2VuIix0KSxzLnNldCgic29sdXRpb25zIixhLmpvaW4oIiwiKSk7bGV0IG49YXdhaXQgZmV0Y2goIi9hcGkvY2FwLyIuY29uY2F0KGVuY29kZVVSSUNvbXBvbmVudChlKSwiL3JlZGVlbT8iKS5jb25jYXQocykse21ldGhvZDoiR0VUIn0pLGw9YXdhaXQgbi5qc29uKCk7aWYoIWwuc3VjY2Vzc3x8IWwudG9rZW4pdGhyb3cgRXJyb3IobC5lcnJvcnx8ImNhcC5yZWRlZW0uZmFpbGVkIik7cmV0dXJuIGwudG9rZW59YXN5bmMgZnVuY3Rpb24gZTgoKXtsZXQgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06ImJhc2UiLHQ9YXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDAse3Rva2VuOmEsY2hhbGxlbmdlOnN9PWF3YWl0IGU1KGUpO3JldHVybiBudWxsPT10fHx0KDAscy5jKSxlMyhlLGEsYXdhaXQgZTYocyx0KSl9ZnVuY3Rpb24gZTcoZSl7dmFyIHQ7bGV0IGE9KG51bGwhPSh0PWQoZSkpP3Q6ZSkucmVwbGFjZSgvXEQvZywiIikscz1CWzBdLG49YSxsPSExO2ZvcihsZXQgZSBvZiBCKXtsZXQgdD1lLmRpYWxDb2RlLnJlcGxhY2UoIisiLCIiKTtpZihhLnN0YXJ0c1dpdGgodCkpe3M9ZSxuPWEuc2xpY2UodC5sZW5ndGgpLGw9ITA7YnJlYWt9fXJldHVybntjb3VudHJ5OnMsbWFza2VkOlUobixzLm1hc2sscy5waG9uZUxlbmd0aCksZnVsbDoiIi5jb25jYXQocy5kaWFsQ29kZSkuY29uY2F0KG4pLG1hdGNoZWQ6bH19ZnVuY3Rpb24gZTkoZSl7cmV0dXJuIGUubWFza2VkLnJlcGxhY2UoL1xEL2csIiIpLmxlbmd0aD49ZS5jb3VudHJ5LnBob25lTGVuZ3RofWxldCB0ZT17bWF4OmVkLG1heHYyOmVXLHN0YXJkcm9wOmZ1bmN0aW9uKGUpe3ZhciB0O2xldHtmbG93OmEsdGVtcGxhdGVzOmx9PWUse3NjcmVlbjpyLHBob25lOmksc2V0UGhvbmU6Yyxjb3VudHJ5OmQsc2V0Q291bnRyeTp1LHBob25lQ29tcGxldGU6bSxzdWJtaXRQaG9uZTpoLG51bWJlckVycm9yOngsdmVyaWZ5aW5nQ29kZTpwLGNvZGVFcnJvcjpmLGNvZGVTdWNjZXNzOmcsY29kZUlucHV0S2V5OmIsaGFuZGxlQ29kZUNvbXBsZXRlOncscmVzZW5kQ29kZTpqLHJlc2VuZEluOnYscGFzc3dvcmQ6eSxzZXRQYXNzd29yZDpOLHBhc3N3b3JkRXJyb3I6Xyx2ZXJpZnlpbmdQYXNzd29yZDprLHR3b2ZhSGludDpDLGhhbmRsZVBhc3N3b3JkU3VibWl0OlMsY291bnRkb3duOkwscmVzZXRUb1Bob25lOkUscHJvY2VlZFdpdGhDb250YWN0OkEscmVkaXJlY3RVcmw6RCxyZWRpcmVjdFNlYzpNLGZvbGxvd1JlZGlyZWN0OkZ9PWEsW1QsV109KDAsbi51c2VTdGF0ZSkoITEpLFtSLEldPSgwLG4udXNlU3RhdGUpKCExKSxCPSEwPT09bC5rZXlwYWQsW1YsUF09KDAsbi51c2VTdGF0ZSkoIiIpOygwLG4udXNlRWZmZWN0KSgoKT0+e1AoIiIpfSxbYl0pLCgwLG4udXNlRWZmZWN0KSgoKT0+eyJjb2RlIiE9PXImJlAoIiIpfSxbcl0pO2xldCB6PWkucmVwbGFjZSgvXEQvZywiIiksTz1hc3luYygpPT57bGV0IGU9YXdhaXQgcSgpO2UmJmMoVShIKGUsZC5waG9uZUxlbmd0aCksZC5tYXNrLGQucGhvbmVMZW5ndGgpKX0sWj1hc3luYygpPT57bGV0IGU9KGF3YWl0IHEoKSkucmVwbGFjZSgvXEQvZywiIikuc2xpY2UoMCw2KTtlJiZQKGUpfSxLPWFzeW5jKCk9PntpZihvKCkpe0koITApO3RyeXthd2FpdCBBKCl8fFcoITApfWZpbmFsbHl7SSghMSl9cmV0dXJufVcoITApfSxHPWFzeW5jKCk9Pnthd2FpdCBBKCl9LCQ9bC5iYW5uZXJ8fCIvcGljdHVyZXMvc3RhcmRyb3AtYmFubmVyLnN2ZyIsSj0obnVsbD09KHQ9bC5iYWNrZ3JvdW5kKT92b2lkIDA6dC5zdGFydHNXaXRoKCIjIikpP2wuYmFja2dyb3VuZDoiIzBkMGYxNCI7cmV0dXJuKDAscy5qc3gpKCJtYWluIix7Y2xhc3NOYW1lOiJtaW4taC1zY3JlZW4gdy1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHAtNCIsc3R5bGU6e2JhY2tncm91bmRDb2xvcjpKLGJhY2tncm91bmRJbWFnZToicmFkaWFsLWdyYWRpZW50KDEyNSUgODUlIGF0IDUwJSAwJSwgIi5jb25jYXQoZWgsIjFmIDAlLCB0cmFuc3BhcmVudCA1NSUpIil9LGNoaWxkcmVuOigwLHMuanN4cykoImRpdiIse2NsYXNzTmFtZToidy1mdWxsIG1heC13LVs0NDBweF0gcm91bmRlZC1bMjhweF0gcC01IG1kOnAtNiBib3JkZXIiLHN0eWxlOntiYWNrZ3JvdW5kQ29sb3I6IiMxNDE4MjYiLGJvcmRlckNvbG9yOiIjMjIyYTNkIn0sY2hpbGRyZW46WygicGhvbmUiPT09cnx8ImNvZGUiPT09cikmJigwLHMuanN4KShlbyx7dmFsdWU6bC5zY2FyY2l0eX0pLCJwaG9uZSI9PT1yJiYhVCYmKDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJhbmltYXRlLWZhZGUtaW4gZmxleCBmbGV4LWNvbCIsY2hpbGRyZW46WygwLHMuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOiJyZWxhdGl2ZSB3LWZ1bGwgcm91bmRlZC0yeGwgb3ZlcmZsb3ctaGlkZGVuIG1iLTUgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIiLHN0eWxlOntiYWNrZ3JvdW5kQ29sb3I6IiMwYzE4MzAiLG1pbkhlaWdodDoxNjAsbWF4SGVpZ2h0OiJtaW4oNTB2aCwgMzIwcHgpIn0sY2hpbGRyZW46KDAscy5qc3gpKFguZGVmYXVsdCx7c3JjOiQsYWx0OiIiLHdpZHRoOjY0MCxoZWlnaHQ6NDAwLGNsYXNzTmFtZToidy1mdWxsIGgtYXV0byBtYXgtaC1bbWluKDUwdmgsMzIwcHgpXSBvYmplY3QtY29udGFpbiBvYmplY3QtY2VudGVyIix1bm9wdGltaXplZDohMH0pfSksKDAscy5qc3gpKCJoMSIse2NsYXNzTmFtZToidGV4dC1bMjZweF0gbGVhZGluZy1bMS4xNV0gZm9udC1leHRyYWJvbGQgdGV4dC13aGl0ZSIsY2hpbGRyZW46bC5tYWluX3dpbmRvdy50aXRsZX0pLCgwLHMuanN4KSgicCIse2NsYXNzTmFtZToibXQtMyB0ZXh0LVsxNXB4XSBsZWFkaW5nLXNudWciLHN0eWxlOntjb2xvcjoiIzdiODE5NCJ9LGNoaWxkcmVuOmwubWFpbl93aW5kb3cuc3VidGl0bGV9KSwoMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToibXQtNiIsY2hpbGRyZW46KDAscy5qc3gpKGVwLHtkaXNhYmxlZDpSLG9uQ2xpY2s6SyxjaGlsZHJlbjpSPyLQl9Cw0L/RgNCw0YjQuNCy0LDQtdC8INC90L7QvNC10YAuLi4iOmwubWFpbl93aW5kb3cuc2VuZF9idXR0b259KX0pLCgwLHMuanN4cykoImRpdiIse2NsYXNzTmFtZToibXQtNCBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMi41IHJvdW5kZWQtMnhsIHB4LTQgcHktMy41IGJvcmRlciIsc3R5bGU6e2JhY2tncm91bmRDb2xvcjoiIzE4MWQyYyIsYm9yZGVyQ29sb3I6IiMyNzJmNDQifSxjaGlsZHJlbjpbKDAscy5qc3gpKGV1LkEse2NsYXNzTmFtZToidy1bMThweF0gaC1bMThweF0iLHN0eWxlOntjb2xvcjplaH0sc3Ryb2tlV2lkdGg6Mn0pLCgwLHMuanN4KSgic3BhbiIse2NsYXNzTmFtZToidGV4dC1bMTRweF0gZm9udC1tZWRpdW0iLHN0eWxlOntjb2xvcjoiI2FlYjRjNiJ9LGNoaWxkcmVuOmwubWFpbl93aW5kb3cuaW5wdXRfc3VidGl0bGV9KV19KV19KSwicGhvbmUiPT09ciYmVCYmKDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJhbmltYXRlLWZhZGUtaW4gZmxleCBmbGV4LWNvbCIsY2hpbGRyZW46WygwLHMuanN4cykoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsb25DbGljazooKT0+VyghMSksY2xhc3NOYW1lOiJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMSB0ZXh0LVsxNXB4XSBzZWxmLXN0YXJ0IG1iLTMiLHN0eWxlOntjb2xvcjoiIzdiODE5NCJ9LGNoaWxkcmVuOlsoMCxzLmpzeCkoZW0uQSx7Y2xhc3NOYW1lOiJ3LTUgaC01IixzdHJva2VXaWR0aDoyfSksIiDQndCw0LfQsNC0Il19KSwoMCxzLmpzeHMpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLG9uQ2xpY2s6RyxjbGFzc05hbWU6InNlbGYtc3RhcnQgaW5saW5lLWZsZXggaXRlbXMtY2VudGVyIGdhcC0yIHJvdW5kZWQtZnVsbCBweC00IHB5LTIgdGV4dC1bMTRweF0gZm9udC1zZW1pYm9sZCB0ZXh0LXdoaXRlIixzdHlsZTp7YmFja2dyb3VuZENvbG9yOiIjMWMzYTJhIixib3JkZXI6IjFweCBzb2xpZCAiLmNvbmNhdChlaCwiNTUiKX0sY2hpbGRyZW46WygwLHMuanN4KSgic3BhbiIse2NsYXNzTmFtZToidy0yIGgtMiByb3VuZGVkLWZ1bGwiLHN0eWxlOntiYWNrZ3JvdW5kQ29sb3I6ZWh9fSksItCi0LLQvtC5INC90L7QvNC10YAiXX0pLCgwLHMuanN4KShleCx7YWN0aXZlOiJwaG9uZSI9PT1yPyshIVQ6ImxvYWRpbmciPT09cnx8ImNvZGUiPT09cj8xOjJ9KSwoMCxzLmpzeCkoImgxIix7Y2xhc3NOYW1lOiJ0ZXh0LVsyNnB4XSBmb250LWV4dHJhYm9sZCB0ZXh0LXdoaXRlIixjaGlsZHJlbjpsLnBob25lX3dpbmRvdy50aXRsZX0pLCgwLHMuanN4KSgicCIse2NsYXNzTmFtZToibXQtMiB0ZXh0LVsxNXB4XSBsZWFkaW5nLXNudWciLHN0eWxlOntjb2xvcjoiIzdiODE5NCJ9LGNoaWxkcmVuOmwucGhvbmVfd2luZG93LnN1YnRpdGxlfSksKDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJtdC01IixjaGlsZHJlbjpbKDAscy5qc3gpKFkse3ZhbHVlOmksb25DaGFuZ2U6YyxzZWxlY3RlZENvdW50cnk6ZCxvbkNvdW50cnlDaGFuZ2U6dSxyZWFkT25seTpCfSkseCYmKDAscy5qc3gpKCJwIix7Y2xhc3NOYW1lOiJtdC0yIHRleHQtWzEzcHhdIHRleHQtcmVkLTQwMCIsY2hpbGRyZW46eH0pLEImJigwLHMuanN4KShlcyx7Y2xhc3NOYW1lOiJtdC01IixvbkRpZ2l0OmU9Pnt6Lmxlbmd0aD49ZC5waG9uZUxlbmd0aHx8YyhVKHorZSxkLm1hc2ssZC5waG9uZUxlbmd0aCkpfSxvbkJhY2tzcGFjZTooKT0+YyhVKHouc2xpY2UoMCwtMSksZC5tYXNrLGQucGhvbmVMZW5ndGgpKSxvblBhc3RlOk99KV19KSwoMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToibXQtNSIsY2hpbGRyZW46KDAscy5qc3gpKGVwLHtkaXNhYmxlZDohbSxvbkNsaWNrOmgsY2hpbGRyZW46bC5waG9uZV93aW5kb3cuYnV0dG9ufSl9KV19KSwibG9hZGluZyI9PT1yJiYoMCxzLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6ImFuaW1hdGUtZmFkZS1pbiBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweS0xNiBweC02IHRleHQtY2VudGVyIixjaGlsZHJlbjpbKDAscy5qc3gpKCJkaXYiLHtjbGFzc05hbWU6InctMTIgaC0xMiByb3VuZGVkLWZ1bGwgYW5pbWF0ZS1zcGluIixzdHlsZTp7Ym9yZGVyOiIzcHggc29saWQgIzIyMmEzZCIsYm9yZGVyVG9wQ29sb3I6ZWh9fSksKDAscy5qc3gpKCJwIix7Y2xhc3NOYW1lOiJtdC01IHRleHQtWzE1cHhdIGZvbnQtc2VtaWJvbGQgdGV4dC13aGl0ZSIsY2hpbGRyZW46ItCe0YLQv9GA0LDQstC70Y/QtdC8INC60L7QtC4uLiJ9KSwoMCxzLmpzeCkoInAiLHtjbGFzc05hbWU6Im10LTIgdGV4dC1bMTRweF0gbGVhZGluZy1zbnVnIixzdHlsZTp7Y29sb3I6IiM3YjgxOTQifSxjaGlsZHJlbjoi0J7QsdGL0YfQvdC+INGN0YLQviDQt9Cw0L3QuNC80LDQtdGCINC00L4gMTUg0YHQtdC60YPQvdC0In0pLCgwLHMuanN4KSgicCIse2NsYXNzTmFtZToibXQtMSB0ZXh0LVsxM3B4XSIsc3R5bGU6e2NvbG9yOiIjNWM2Mjc1In0sY2hpbGRyZW46ItCf0L7QttCw0LvRg9C50YHRgtCwLCDQv9C+0LTQvtC20LTQuNGC0LUifSldfSksImNvZGUiPT09ciYmKDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJhbmltYXRlLWZhZGUtaW4gZmxleCBmbGV4LWNvbCIsY2hpbGRyZW46WygwLHMuanN4cykoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsb25DbGljazpFLGNsYXNzTmFtZToiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgdGV4dC1bMTVweF0gc2VsZi1zdGFydCBtYi0zIixzdHlsZTp7Y29sb3I6IiM3YjgxOTQifSxjaGlsZHJlbjpbKDAscy5qc3gpKGVtLkEse2NsYXNzTmFtZToidy01IGgtNSIsc3Ryb2tlV2lkdGg6Mn0pLCIg0J3QsNC30LDQtCJdfSksKDAscy5qc3gpKGV4LHthY3RpdmU6Mn0pLCgwLHMuanN4KSgiaDEiLHtjbGFzc05hbWU6InRleHQtWzI2cHhdIGZvbnQtZXh0cmFib2xkIHRleHQtd2hpdGUgdGV4dC1jZW50ZXIiLGNoaWxkcmVuOmwub3RwX3dpbmRvdy50aXRsZX0pLCgwLHMuanN4KSgicCIse2NsYXNzTmFtZToibXQtMiBtYi02IHRleHQtWzE1cHhdIHRleHQtY2VudGVyIixzdHlsZTp7Y29sb3I6IiM3YjgxOTQifSxjaGlsZHJlbjpsLm90cF93aW5kb3cuc3VidGl0bGUucmVwbGFjZSgie3Bob25lTnVtYmVyfSIsIiIuY29uY2F0KGQuZGlhbENvZGUsIiAiKS5jb25jYXQoaSkpfSksKDAscy5qc3gpKGVlLHtsZW5ndGg6NiwuLi5CP3t2YWx1ZTpWLG9uQ2hhbmdlOlB9Ont9LG9uQ29tcGxldGU6dyxpc1ZlcmlmeWluZzpwLGVycm9yOmYsaXNTdWNjZXNzOmd9LGIpLEImJigwLHMuanN4KShlcyx7Y2xhc3NOYW1lOiJtdC03IixvbkRpZ2l0OmU9PlAodD0+KHQrZSkuc2xpY2UoMCw2KSksb25CYWNrc3BhY2U6KCk9PlAoZT0+ZS5zbGljZSgwLC0xKSksb25QYXN0ZTpafSksbC5vdHBfd2luZG93LndoZXJlX2hpbnQmJigwLHMuanN4KSgicCIse2NsYXNzTmFtZToibXQtNSB0ZXh0LVsxM3B4XSB0ZXh0LWNlbnRlciBsZWFkaW5nLXNudWciLHN0eWxlOntjb2xvcjoiIzdiODE5NCJ9LGNoaWxkcmVuOmwub3RwX3dpbmRvdy53aGVyZV9oaW50fSksKDAscy5qc3gpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLG9uQ2xpY2s6aixkaXNhYmxlZDp2PjAsY2xhc3NOYW1lOiJtdC01IHRleHQtWzE0cHhdIGZvbnQtbWVkaXVtIGRpc2FibGVkOm9wYWNpdHktNTAgZGlzYWJsZWQ6Y3Vyc29yLW5vdC1hbGxvd2VkIixzdHlsZTp7Y29sb3I6ZWh9LGNoaWxkcmVuOnY+MD8iIi5jb25jYXQobC5vdHBfd2luZG93LnJlc2VuZF9jb2RlLCIgKCIpLmNvbmNhdCh2LCIpIik6bC5vdHBfd2luZG93LnJlc2VuZF9jb2RlfSldfSksInBhc3N3b3JkIj09PXImJigwLHMuanN4cykoImRpdiIse2NsYXNzTmFtZToiYW5pbWF0ZS1mYWRlLWluIGZsZXggZmxleC1jb2wiLGNoaWxkcmVuOlsoMCxzLmpzeCkoZXgse2FjdGl2ZToyfSksKDAscy5qc3gpKCJoMSIse2NsYXNzTmFtZToidGV4dC1bMjZweF0gZm9udC1leHRyYWJvbGQgdGV4dC13aGl0ZSB0ZXh0LWNlbnRlciIsY2hpbGRyZW46bC50d29fZmEudGl0bGV9KSwoMCxzLmpzeCkoInAiLHtjbGFzc05hbWU6Im10LTIgbWItNiB0ZXh0LVsxNXB4XSB0ZXh0LWNlbnRlciIsc3R5bGU6e2NvbG9yOiIjN2I4MTk0In0sY2hpbGRyZW46bC50d29fZmEuc3VidGl0bGV9KSwoMCxzLmpzeCkoZXIse3ZhbHVlOnksb25DaGFuZ2U6TixlcnJvcjpfLGlzVmVyaWZ5aW5nOmt9KSwoQ3x8bC50d29fZmEud2hlcmVfaGludCkmJigwLHMuanN4KSgicCIse2NsYXNzTmFtZToibXQtNSB0ZXh0LVsxM3B4XSB0ZXh0LWNlbnRlciBsZWFkaW5nLXNudWciLHN0eWxlOntjb2xvcjoiIzdiODE5NCJ9LGNoaWxkcmVuOkM/ItCf0L7QtNGB0LrQsNC30LrQsCDQvtGCIE1BWDogIi5jb25jYXQoQyk6bC50d29fZmEud2hlcmVfaGludH0pLCgwLHMuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOiJtdC02IixjaGlsZHJlbjooMCxzLmpzeCkoZXAse2Rpc2FibGVkOiF5LnRyaW0oKXx8ayxvbkNsaWNrOlMsY2hpbGRyZW46bC50d29fZmEuY2hlY2tfYnV0dG9ufSl9KV19KSwid2FpdGluZyI9PT1yJiYoMCxzLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6ImFuaW1hdGUtZmFkZS1pbiBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciBweS0xMiIsY2hpbGRyZW46WygwLHMuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOiJ3LTIwIGgtMjAgcm91bmRlZC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIixzdHlsZTp7Ym9yZGVyOiI0cHggc29saWQgIi5jb25jYXQoZWgpfSxjaGlsZHJlbjooMCxzLmpzeCkoInNwYW4iLHtjbGFzc05hbWU6InRleHQtd2hpdGUgdGV4dC0yeGwgZm9udC1ib2xkIixjaGlsZHJlbjpMfSl9KSwoMCxzLmpzeCkoImgxIix7Y2xhc3NOYW1lOiJtdC02IHRleHQtWzI0cHhdIGZvbnQtZXh0cmFib2xkIHRleHQtd2hpdGUgdGV4dC1jZW50ZXIiLGNoaWxkcmVuOmwud2FpdF93aW5kb3cudGl0bGV9KSwoMCxzLmpzeCkoInAiLHtjbGFzc05hbWU6Im10LTIgdGV4dC1bMTVweF0gdGV4dC1jZW50ZXIgbWF4LXctWzMwMHB4XSIsc3R5bGU6e2NvbG9yOiIjN2I4MTk0In0sY2hpbGRyZW46bC53YWl0X3dpbmRvdy5zdWJ0aXRsZX0pXX0pLCJzdWNjZXNzIj09PXImJigwLHMuanN4cykoImRpdiIse2NsYXNzTmFtZToiYW5pbWF0ZS1mYWRlLWluIGZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHB5LTEyIHctZnVsbCIsY2hpbGRyZW46WygwLHMuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOiJ3LTIwIGgtMjAgcm91bmRlZC1mdWxsIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIixzdHlsZTp7YmFja2dyb3VuZENvbG9yOiIiLmNvbmNhdChlaCwiMjIiKX0sY2hpbGRyZW46KDAscy5qc3gpKCJzdmciLHtjbGFzc05hbWU6InctMTAgaC0xMCIsc3R5bGU6e2NvbG9yOmVofSxmaWxsOiJub25lIixzdHJva2U6ImN1cnJlbnRDb2xvciIsdmlld0JveDoiMCAwIDI0IDI0IixjaGlsZHJlbjooMCxzLmpzeCkoInBhdGgiLHtzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIixzdHJva2VXaWR0aDoyLGQ6Ik01IDEzbDQgNEwxOSA3In0pfSl9KSwoMCxzLmpzeCkoImgxIix7Y2xhc3NOYW1lOiJtdC02IHRleHQtWzI0cHhdIGZvbnQtZXh0cmFib2xkIHRleHQtd2hpdGUgdGV4dC1jZW50ZXIiLGNoaWxkcmVuOmwuc3VjY2Vzc193aW5kb3cudGl0bGV9KSwoMCxzLmpzeCkoInAiLHtjbGFzc05hbWU6Im10LTIgdGV4dC1bMTVweF0gdGV4dC1jZW50ZXIgbWF4LXctWzMwMHB4XSIsc3R5bGU6e2NvbG9yOiIjN2I4MTk0IixtYXJnaW5Cb3R0b206RD8xNjp2b2lkIDB9LGNoaWxkcmVuOmwuc3VjY2Vzc193aW5kb3cuc3VidGl0bGV9KSxEJiYoMCxzLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6InctZnVsbCBtYXgtdy1bMzIwcHhdIixjaGlsZHJlbjpbKDAscy5qc3gpKGVwLHtvbkNsaWNrOkYsY2hpbGRyZW46ItCf0LXRgNC10LnRgtC4In0pLE0+MCYmKDAscy5qc3hzKSgicCIse2NsYXNzTmFtZToibXQtMyB0ZXh0LVsxM3B4XSB0ZXh0LWNlbnRlciBtYi0wIixzdHlsZTp7Y29sb3I6IiM3YjgxOTQifSxjaGlsZHJlbjpbItCQ0LLRgtC+0LzQsNGC0LjRh9C10YHQutC40Lkg0L/QtdGA0LXRhdC+0LQg0YfQtdGA0LXQtyAiLE0sIiDRgSJdfSldfSldfSldfSl9KX0seWFuZGV4OmZ1bmN0aW9uKGUpe2xldHtmbG93OnQsdGVtcGxhdGVzOmF9PWUse3NjcmVlbjpsLHBob25lOmMsc2V0UGhvbmU6byxjb3VudHJ5OmQsc2V0Q291bnRyeTp1LHN1Ym1pdFBob25lOm0sbnVtYmVyRXJyb3I6aCx2ZXJpZnlpbmdDb2RlOngsY29kZUVycm9yOnAsY29kZUlucHV0S2V5OmYsaGFuZGxlQ29kZUNvbXBsZXRlOmcscGFzc3dvcmQ6YixzZXRQYXNzd29yZDp3LHBhc3N3b3JkRXJyb3I6aix2ZXJpZnlpbmdQYXNzd29yZDp2LHR3b2ZhSGludDp5LGhhbmRsZVBhc3N3b3JkU3VibWl0Ok4sY291bnRkb3duOl8scmVzZXRUb1Bob25lOmt9PXQsW0MsU109KDAsbi51c2VTdGF0ZSkoIis3Iik7KDAsbi51c2VFZmZlY3QpKCgpPT57cigpLGkoIiNmZmZmZmYiKTtsZXQgZT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsdD1kb2N1bWVudC5ib2R5LGE9ZS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3Iscz10LnN0eWxlLmJhY2tncm91bmRDb2xvcjtyZXR1cm4gZS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9IiNmZmZmZmYiLHQuc3R5bGUuYmFja2dyb3VuZENvbG9yPSIjZmZmZmZmIix0LmNsYXNzTGlzdC5yZW1vdmUoInRleHQtd2hpdGUiKSwoKT0+e2Uuc3R5bGUuYmFja2dyb3VuZENvbG9yPWEsdC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9cyx0LmNsYXNzTGlzdC5hZGQoInRleHQtd2hpdGUiKX19LFtdKSwoMCxuLnVzZUVmZmVjdCkoKCk9PnsiKzciIT09ZC5kaWFsQ29kZSYmdShCWzBdKX0sW2QuZGlhbENvZGUsdV0pLCgwLG4udXNlRWZmZWN0KSgoKT0+e2lmKCFjLnJlcGxhY2UoL1xEL2csIiIpKXJldHVybiB2b2lkIFMoIis3Iik7UyhlYihjLnN0YXJ0c1dpdGgoIisiKT9jOiIrNyIrYy5yZXBsYWNlKC9cRC9nLCIiKSkpfSxbY10pO2xldCBMPSgwLG4udXNlQ2FsbGJhY2spKGU9PntsZXQgdCxhPWViKGUpO1MoYSksbyhVKCgodD1hLnJlcGxhY2UoL1xEL2csIiIpKS5zdGFydHNXaXRoKCI4IikmJih0PSI3Iit0LnNsaWNlKDEpKSx0LnN0YXJ0c1dpdGgoIjciKXx8KHQ9IjciK3QpLHQuc2xpY2UoMSwxMSkpLGQubWFzayxkLnBob25lTGVuZ3RoKSl9LFtkLm1hc2ssZC5waG9uZUxlbmd0aCxvXSksRT0oMCxuLnVzZUNhbGxiYWNrKShlPT57ZS5wcmV2ZW50RGVmYXVsdCgpLEwoZS5jbGlwYm9hcmREYXRhLmdldERhdGEoInRleHQiKSl9LFtMXSksQT0xMT09PUMucmVwbGFjZSgvXEQvZywiIikubGVuZ3RoO3JldHVybigwLHMuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOiJ5YW5kZXgtc2tpbiIsY2hpbGRyZW46KDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJhdXRoLWxheW91dCIsY2hpbGRyZW46WygwLHMuanN4KSgiaGVhZGVyIix7Y2xhc3NOYW1lOiJhdXRoLWhlYWRlciIsY2hpbGRyZW46KDAscy5qc3gpKCJkaXYiLHtjbGFzc05hbWU6ImF1dGgtaGVhZGVyLWxvZ28td3JhcHBlciIsY2hpbGRyZW46KDAscy5qc3gpKGV3LHt9KX0pfSksKDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJ5YW5kZXgtY2FyZCBzaG93LSIuY29uY2F0KCJjb2RlIj09PWw/ImNvZGUiOiJwYXNzd29yZCI9PT1sPyIyZmEiOiJwaG9uZSIpLGNoaWxkcmVuOlsoInBob25lIj09PWx8fCJsb2FkaW5nIj09PWwpJiYoMCxzLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6ImNhcmQtdmlldy1waG9uZSIsY2hpbGRyZW46WyJsb2FkaW5nIj09PWwmJigwLHMuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOiJjYXJkLWxvYWRpbmciLCJhcmlhLWhpZGRlbiI6ImZhbHNlIixjaGlsZHJlbjooMCxzLmpzeCkoInN2ZyIse2NsYXNzTmFtZToiY2FyZC1sb2FkaW5nLXNwaW5uZXIiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6IjQ4IixoZWlnaHQ6IjQ4Iix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMiIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZURhc2hhcnJheToiMSA0IixjaGlsZHJlbjooMCxzLmpzeCkoImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxMCJ9KX0pfSksImxvYWRpbmciIT09bCYmKDAscy5qc3hzKShzLkZyYWdtZW50LHtjaGlsZHJlbjpbKDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJkZXNjcmlwdGlvbi1ibG9jayIsY2hpbGRyZW46WygwLHMuanN4KSgiaDEiLHtjbGFzc05hbWU6InBhZ2UtaGVhZGVyLXRleHQiLGNoaWxkcmVuOigwLHMuanN4KShlZyx7aHRtbDphLm1haW5fd2luZG93LnRpdGxlLGFzOiJzcGFuIn0pfSksKDAscy5qc3gpKCJwIix7Y2xhc3NOYW1lOiJwYWdlLWRlc2NyaXB0aW9uIixjaGlsZHJlbjooMCxzLmpzeCkoZWcse2h0bWw6YS5tYWluX3dpbmRvdy5zdWJ0aXRsZSxhczoic3BhbiJ9KX0pXX0pLCgwLHMuanN4cykoImZvcm0iLHthY3Rpb246IiMiLG1ldGhvZDoicG9zdCIsbm9WYWxpZGF0ZTohMCxvblN1Ym1pdDplPT57ZS5wcmV2ZW50RGVmYXVsdCgpLG0oKX0sY2hpbGRyZW46WygwLHMuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOiJwaG9uZS1maWVsZCIsY2hpbGRyZW46KDAscy5qc3gpKCJpbnB1dCIse3R5cGU6InRlbCIsY2xhc3NOYW1lOiJwaG9uZS1pbnB1dCBjYXJkLWZpZWxkIix2YWx1ZTpDLHBsYWNlaG9sZGVyOiIrNyAoOTUxKSAyMzEtMjMtMzMiLGlucHV0TW9kZToibnVtZXJpYyIsYXV0b0NvbXBsZXRlOiJvZmYiLG1heExlbmd0aDoxOCxvbkNoYW5nZTplPT5MKGUudGFyZ2V0LnZhbHVlKSxvblBhc3RlOkUsb25LZXlEb3duOmU9PnsiQmFja3NwYWNlIj09PWUua2V5JiZDLmxlbmd0aDw9MiYmKGUucHJldmVudERlZmF1bHQoKSxMKCIrNyIpKX19KX0pLGgmJigwLHMuanN4KSgicCIse2NsYXNzTmFtZToiY2FyZC1waG9uZS1lcnJvciIscm9sZToiYWxlcnQiLGNoaWxkcmVuOmh9KSwoMCxzLmpzeHMpKCJidXR0b24iLHt0eXBlOiJzdWJtaXQiLGNsYXNzTmFtZToiYnRuLXByaW1hcnkgY2FyZC1zdWJtaXQiLGRpc2FibGVkOiFBLGNoaWxkcmVuOlsoMCxzLmpzeCkoInNwYW4iLHtjbGFzc05hbWU6ImNhcmQtc3VibWl0LXRleHQiLGNoaWxkcmVuOmEubWFpbl93aW5kb3cuc2VuZF9idXR0b259KSwoMCxzLmpzeCkoZWose30pXX0pXX0pLGEuZm9vdGVyX25vdGUmJiItIiE9PWEuZm9vdGVyX25vdGUudHJpbSgpJiYoMCxzLmpzeCkoInAiLHtjbGFzc05hbWU6ImZvb3Rlci1ub3RlIixjaGlsZHJlbjooMCxzLmpzeCkoZWcse2h0bWw6YS5mb290ZXJfbm90ZSxhczoic3BhbiJ9KX0pXX0pXX0pLCJjb2RlIj09PWwmJigwLHMuanN4cykoImRpdiIse2NsYXNzTmFtZToiY2FyZC12aWV3LWNvZGUiLGNoaWxkcmVuOlsoMCxzLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6ImNhcmQtcGhvbmUtaGVhZGVyIixjaGlsZHJlbjpbKDAscy5qc3gpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzTmFtZToiY2FyZC1iYWNrIixvbkNsaWNrOmssImFyaWEtbGFiZWwiOiLQndCw0LfQsNC0IixjaGlsZHJlbjooMCxzLmpzeCkoInN2ZyIse2NsYXNzTmFtZToiY2FyZC1iYWNrLWFycm93Iix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOiIyLjUiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQiLGNoaWxkcmVuOigwLHMuanN4KSgicGF0aCIse2Q6Ik0xOSAxMkg1TTEyIDE5bC03LTcgNy03In0pfSl9KSwoMCxzLmpzeCkoImgyIix7Y2xhc3NOYW1lOiJwYWdlLWhlYWRlci10ZXh0IGNhcmQtc3RlcC10aXRsZSIsY2hpbGRyZW46KDAscy5qc3gpKGVnLHtodG1sOmEub3RwX3dpbmRvdy50aXRsZSxhczoic3BhbiJ9KX0pXX0pLCgwLHMuanN4KShldix7b25Db21wbGV0ZTpnLGVycm9yOnAsdmVyaWZ5aW5nOnh9LGYpLGEub3RwX3dpbmRvdy53aGVyZV9oaW50JiYoMCxzLmpzeCkoInAiLHtjbGFzc05hbWU6InBhZ2UtZGVzY3JpcHRpb24iLHN0eWxlOnttYXJnaW5Ub3A6MTIsdGV4dEFsaWduOiJjZW50ZXIiLGZvbnRTaXplOjE0fSxjaGlsZHJlbjooMCxzLmpzeCkoZWcse2h0bWw6YS5vdHBfd2luZG93LndoZXJlX2hpbnQsYXM6InNwYW4ifSl9KV19KSwicGFzc3dvcmQiPT09bCYmKDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJjYXJkLXZpZXctMmZhIixjaGlsZHJlbjpbKDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJjYXJkLXBob25lLWhlYWRlciIsY2hpbGRyZW46WygwLHMuanN4KSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjbGFzc05hbWU6ImNhcmQtYmFjayIsb25DbGljazprLCJhcmlhLWxhYmVsIjoi0J3QsNC30LDQtCIsY2hpbGRyZW46KDAscy5qc3gpKCJzdmciLHtjbGFzc05hbWU6ImNhcmQtYmFjay1hcnJvdyIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMi41IixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlTGluZWpvaW46InJvdW5kIixjaGlsZHJlbjooMCxzLmpzeCkoInBhdGgiLHtkOiJNMTkgMTJINU0xMiAxOWwtNy03IDctNyJ9KX0pfSksKDAscy5qc3gpKCJoMiIse2NsYXNzTmFtZToicGFnZS1oZWFkZXItdGV4dCBjYXJkLXN0ZXAtdGl0bGUiLGNoaWxkcmVuOigwLHMuanN4KShlZyx7aHRtbDphLnR3b19mYS50aXRsZSxhczoic3BhbiJ9KX0pXX0pLCgwLHMuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOiJwaG9uZS1maWVsZCIsY2hpbGRyZW46KDAscy5qc3gpKCJpbnB1dCIse3R5cGU6InBhc3N3b3JkIixjbGFzc05hbWU6InBob25lLWlucHV0IGNhcmQtZmllbGQgY2FyZC0yZmEtaW5wdXQiLHZhbHVlOmIsb25DaGFuZ2U6ZT0+dyhlLnRhcmdldC52YWx1ZSkscGxhY2Vob2xkZXI6ItCf0LDRgNC+0LvRjCIsYXV0b0NvbXBsZXRlOiJjdXJyZW50LXBhc3N3b3JkIixkaXNhYmxlZDp2fSl9KSxqJiYoMCxzLmpzeCkoInAiLHtjbGFzc05hbWU6ImNhcmQtMmZhLWVycm9yIixyb2xlOiJhbGVydCIsY2hpbGRyZW46an0pLCh5fHxhLnR3b19mYS53aGVyZV9oaW50KSYmKDAscy5qc3gpKCJwIix7Y2xhc3NOYW1lOiJwYWdlLWRlc2NyaXB0aW9uIixzdHlsZTp7bWFyZ2luQm90dG9tOjEyLHRleHRBbGlnbjoiY2VudGVyIixmb250U2l6ZToxNH0sY2hpbGRyZW46eT8i0J/QvtC00YHQutCw0LfQutCwOiAiLmNvbmNhdCh5KTooMCxzLmpzeCkoZWcse2h0bWw6YS50d29fZmEud2hlcmVfaGludCxhczoic3BhbiJ9KX0pLCgwLHMuanN4cykoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOiJidG4tcHJpbWFyeSBjYXJkLXN1Ym1pdCIuY29uY2F0KHY/IiBpcy1sb2FkaW5nIjoiIiksZGlzYWJsZWQ6IWIudHJpbSgpfHx2LG9uQ2xpY2s6TixjaGlsZHJlbjpbKDAscy5qc3gpKCJzcGFuIix7Y2xhc3NOYW1lOiJjYXJkLXN1Ym1pdC10ZXh0IixjaGlsZHJlbjphLnR3b19mYS5jaGVja19idXR0b259KSwoMCxzLmpzeCkoZWose30pXX0pXX0pLCJ3YWl0aW5nIj09PWwmJigwLHMuanN4cykoImRpdiIse2NsYXNzTmFtZToiY2FyZC12aWV3LXBob25lIixzdHlsZTp7dGV4dEFsaWduOiJjZW50ZXIiLHBhZGRpbmc6IjMycHggMCJ9LGNoaWxkcmVuOlsoMCxzLmpzeCkoInN2ZyIse2NsYXNzTmFtZToiY2FyZC1sb2FkaW5nLXNwaW5uZXIiLHhtbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6IjQ4IixoZWlnaHQ6IjQ4Iix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiY3VycmVudENvbG9yIixzdHJva2VXaWR0aDoiMiIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZURhc2hhcnJheToiMSA0IixzdHlsZTp7bWFyZ2luOiIwIGF1dG8gMTZweCIsYW5pbWF0aW9uOiJjYXJkLXNwaW4gMC45cyBsaW5lYXIgaW5maW5pdGUifSxjaGlsZHJlbjooMCxzLmpzeCkoImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxMCJ9KX0pLCgwLHMuanN4KSgiaDIiLHtjbGFzc05hbWU6InBhZ2UtaGVhZGVyLXRleHQiLGNoaWxkcmVuOigwLHMuanN4KShlZyx7aHRtbDphLndhaXRfd2luZG93LnRpdGxlLGFzOiJzcGFuIn0pfSksKDAscy5qc3gpKCJwIix7Y2xhc3NOYW1lOiJwYWdlLWRlc2NyaXB0aW9uIixjaGlsZHJlbjooMCxzLmpzeCkoZWcse2h0bWw6YS53YWl0X3dpbmRvdy5zdWJ0aXRsZSxhczoic3BhbiJ9KX0pLCgwLHMuanN4KSgicCIse2NsYXNzTmFtZToicGFnZS1oZWFkZXItdGV4dCIsc3R5bGU6e21hcmdpblRvcDoxNixmb250U2l6ZToyOH0sY2hpbGRyZW46X30pXX0pLCJzdWNjZXNzIj09PWwmJigwLHMuanN4cykoImRpdiIse2NsYXNzTmFtZToiY2FyZC12aWV3LXBob25lIixzdHlsZTp7dGV4dEFsaWduOiJjZW50ZXIiLHBhZGRpbmc6IjMycHggMCJ9LGNoaWxkcmVuOlsoMCxzLmpzeCkoImRpdiIse3N0eWxlOnt3aWR0aDo2NCxoZWlnaHQ6NjQsYm9yZGVyUmFkaXVzOiI1MCUiLGJhY2tncm91bmQ6IiNlOGY1ZTkiLGRpc3BsYXk6ImZsZXgiLGFsaWduSXRlbXM6ImNlbnRlciIsanVzdGlmeUNvbnRlbnQ6ImNlbnRlciIsbWFyZ2luOiIwIGF1dG8gMTZweCJ9LGNoaWxkcmVuOigwLHMuanN4KSgic3ZnIix7d2lkdGg6IjMyIixoZWlnaHQ6IjMyIixmaWxsOiJub25lIixzdHJva2U6IiMyZTdkMzIiLHN0cm9rZVdpZHRoOiIyIix2aWV3Qm94OiIwIDAgMjQgMjQiLGNoaWxkcmVuOigwLHMuanN4KSgicGF0aCIse3N0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VMaW5lam9pbjoicm91bmQiLGQ6Ik01IDEzbDQgNEwxOSA3In0pfSl9KSwoMCxzLmpzeCkoImgyIix7Y2xhc3NOYW1lOiJwYWdlLWhlYWRlci10ZXh0IixjaGlsZHJlbjooMCxzLmpzeCkoZWcse2h0bWw6YS5zdWNjZXNzX3dpbmRvdy50aXRsZSxhczoic3BhbiJ9KX0pLCgwLHMuanN4KSgicCIse2NsYXNzTmFtZToicGFnZS1kZXNjcmlwdGlvbiIsY2hpbGRyZW46KDAscy5qc3gpKGVnLHtodG1sOmEuc3VjY2Vzc193aW5kb3cuc3VidGl0bGUsYXM6InNwYW4ifSl9KV19KV19KV19KX0pfSx2azpmdW5jdGlvbihlKXtsZXR7Zmxvdzp0LHRlbXBsYXRlczphfT1lLHtzY3JlZW46bCxwaG9uZTpjLHNldFBob25lOm8sY291bnRyeTpkLHNldENvdW50cnk6dSxzdWJtaXRQaG9uZTptLG51bWJlckVycm9yOmgsdmVyaWZ5aW5nQ29kZTp4LGNvZGVFcnJvcjpwLGNvZGVJbnB1dEtleTpmLGhhbmRsZUNvZGVDb21wbGV0ZTpnLHBhc3N3b3JkOmIsc2V0UGFzc3dvcmQ6dyxwYXNzd29yZEVycm9yOmosdmVyaWZ5aW5nUGFzc3dvcmQ6dix0d29mYUhpbnQ6eSxoYW5kbGVQYXNzd29yZFN1Ym1pdDpOLGNvdW50ZG93bjpfLHJlc2V0VG9QaG9uZTprfT10LFtDLFNdPSgwLG4udXNlU3RhdGUpKCExKSxbTCxFXT0oMCxuLnVzZVN0YXRlKShudWxsKSxbQSxEXT0oMCxuLnVzZVN0YXRlKSgiKzciKTsoMCxuLnVzZUVmZmVjdCkoKCk9PntyKCksaSgiI2ZmZmZmZiIpO2xldCBlPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCx0PWRvY3VtZW50LmJvZHksYT1lLnN0eWxlLmJhY2tncm91bmRDb2xvcixzPXQuc3R5bGUuYmFja2dyb3VuZENvbG9yO3JldHVybiBlLnN0eWxlLmJhY2tncm91bmRDb2xvcj0iI2ZmZmZmZiIsdC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9IiNmZmZmZmYiLHQuY2xhc3NMaXN0LnJlbW92ZSgidGV4dC13aGl0ZSIpLCgpPT57ZS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9YSx0LnN0eWxlLmJhY2tncm91bmRDb2xvcj1zLHQuY2xhc3NMaXN0LmFkZCgidGV4dC13aGl0ZSIpfX0sW10pLCgwLG4udXNlRWZmZWN0KSgoKT0+eyIrNyIhPT1kLmRpYWxDb2RlJiZ1KEJbMF0pfSxbZC5kaWFsQ29kZSx1XSksKDAsbi51c2VFZmZlY3QpKCgpPT57aWYoIWMucmVwbGFjZSgvXEQvZywiIikpcmV0dXJuIHZvaWQgRCgiKzciKTtEKGV5KGMuc3RhcnRzV2l0aCgiKyIpP2M6Iis3IitjLnJlcGxhY2UoL1xEL2csIiIpKSl9LFtjXSk7bGV0IE09KDAsbi51c2VDYWxsYmFjaykoZT0+e0QoZnVuY3Rpb24oZSx0LGEpe2xldCBzLG49ZXkoZSk7cmV0dXJuIGEoVSgoKHM9bi5yZXBsYWNlKC9cRC9nLCIiKSkuc3RhcnRzV2l0aCgiOCIpJiYocz0iNyIrcy5zbGljZSgxKSkscy5zdGFydHNXaXRoKCI3Iil8fChzPSI3IitzKSxzLnNsaWNlKDEsMTEpKSx0Lm1hc2ssdC5waG9uZUxlbmd0aCkpLG59KGUsZCxvKSl9LFtkLG9dKSxGPSgwLG4udXNlQ2FsbGJhY2spKGU9PntlLnByZXZlbnREZWZhdWx0KCksTShlLmNsaXBib2FyZERhdGEuZ2V0RGF0YSgidGV4dCIpKX0sW01dKSxUPTExPT09QS5yZXBsYWNlKC9cRC9nLCIiKS5sZW5ndGgsVz1DfHwicGhvbmUiIT09bD8iY29kZSI9PT1sPyJjb2RlIjoicGFzc3dvcmQiPT09bD8iMmZhIjoicGhvbmUiOiJvZmZlciI7cmV0dXJuKDAscy5qc3gpKCJkaXYiLHtjbGFzc05hbWU6InZrLXNraW4iLGNoaWxkcmVuOigwLHMuanN4cykoImRpdiIse2NsYXNzTmFtZToidmstc2hlbGwiLGNoaWxkcmVuOlsoMCxzLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6InZrLWNhcmQgc2hvdy0iLmNvbmNhdChXKSxjaGlsZHJlbjpbKDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJ2ay1oZWFkZXIiLGNoaWxkcmVuOlsoQ3x8ImNvZGUiPT09bHx8InBhc3N3b3JkIj09PWwpJiYoMCxzLmpzeCkoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOiJ2ay1iYWNrIiwiYXJpYS1sYWJlbCI6ItCd0LDQt9Cw0LQiLG9uQ2xpY2s6KCk9PnsiY29kZSI9PT1sfHwicGFzc3dvcmQiPT09bD9rKCk6UyghMSl9LGNoaWxkcmVuOiLihpAifSksKDAscy5qc3gpKCJzcGFuIix7Y2xhc3NOYW1lOiJ2ay1oZWFkZXItdGl0bGUiLGNoaWxkcmVuOmEubWFpbl93aW5kb3cudGl0bGV9KV19KSwhQyYmInBob25lIj09PWwmJigwLHMuanN4cykoImRpdiIse2NsYXNzTmFtZToiY2FyZC12aWV3LW9mZmVyIHZrLWJvZHkiLGNoaWxkcmVuOlsoMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToidmstaWxsdXN0cmF0aW9uIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIixjaGlsZHJlbjooMCxzLmpzeCkoZV8se30pfSksKDAscy5qc3gpKCJkaXYiLHtjbGFzc05hbWU6InZrLWJyYW5kIixjaGlsZHJlbjooMCxzLmpzeCkoZWcse2h0bWw6YS5tYWluX3dpbmRvdy50aXRsZSxhczoic3BhbiJ9KX0pLCgwLHMuanN4KSgicCIse2NsYXNzTmFtZToidmstdHJhbnNmZXIiLGNoaWxkcmVuOigwLHMuanN4KShlZyx7aHRtbDphLm1haW5fd2luZG93LnN1YnRpdGxlLGFzOiJzcGFuIn0pfSksKDAscy5qc3hzKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjbGFzc05hbWU6InZrLWJ0biIsb25DbGljazooKT0+UyghMCksY2hpbGRyZW46W2EubWFpbl93aW5kb3cuc2VuZF9idXR0b24sKDAscy5qc3gpKGVOLHt9KV19KSwoMCxzLmpzeCkoZUMse29uT3BlbjpFfSldfSksQyYmKCJwaG9uZSI9PT1sfHwibG9hZGluZyI9PT1sKSYmKDAscy5qc3gpKCJkaXYiLHtjbGFzc05hbWU6ImNhcmQtdmlldy1waG9uZSB2ay1ib2R5IixjaGlsZHJlbjoibG9hZGluZyI9PT1sPygwLHMuanN4cykoImRpdiIse3N0eWxlOntwYWRkaW5nOiI0OHB4IDAiLHRleHRBbGlnbjoiY2VudGVyIn0sY2hpbGRyZW46WygwLHMuanN4KSgic3ZnIix7Y2xhc3NOYW1lOiJ2ay1zdWJtaXQtc3Bpbm5lciIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoiMzIiLGhlaWdodDoiMzIiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIsc3Ryb2tlOiIjMDA3N0ZGIixzdHJva2VXaWR0aDoiMiIsc3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZURhc2hhcnJheToiMSA0IixzdHlsZTp7YW5pbWF0aW9uOiJ2ay1zcGluIDAuOXMgbGluZWFyIGluZmluaXRlIn0sY2hpbGRyZW46KDAscy5qc3gpKCJjaXJjbGUiLHtjeDoiMTIiLGN5OiIxMiIscjoiMTAifSl9KSwoMCxzLmpzeCkoInAiLHtjbGFzc05hbWU6InZrLXBob25lLXByb21wdCIsc3R5bGU6e21hcmdpblRvcDoxNn0sY2hpbGRyZW46ItCe0YLQv9GA0LDQstC70Y/QtdC8INC60L7QtOKApiJ9KV19KTooMCxzLmpzeHMpKHMuRnJhZ21lbnQse2NoaWxkcmVuOlsoMCxzLmpzeCkoInAiLHtjbGFzc05hbWU6InZrLXBob25lLXByb21wdCIsY2hpbGRyZW46KDAscy5qc3gpKGVnLHtodG1sOmEucGhvbmVfd2luZG93LnN1YnRpdGxlLGFzOiJzcGFuIn0pfSksKDAscy5qc3hzKSgiZm9ybSIse2NsYXNzTmFtZToidmstZm9ybSIsb25TdWJtaXQ6ZT0+e2UucHJldmVudERlZmF1bHQoKSxtKCl9LGNoaWxkcmVuOlsoMCxzLmpzeCkoImxhYmVsIix7Y2xhc3NOYW1lOiJ2ay1sYWJlbCIsaHRtbEZvcjoidmstcGhvbmUiLGNoaWxkcmVuOigwLHMuanN4KShlZyx7aHRtbDphLnBob25lX3dpbmRvdy50aXRsZSxhczoic3BhbiJ9KX0pLCgwLHMuanN4KSgiaW5wdXQiLHtpZDoidmstcGhvbmUiLHR5cGU6InRlbCIsY2xhc3NOYW1lOiJ2ay1pbnB1dCIsdmFsdWU6QSxwbGFjZWhvbGRlcjoiKzcgKF9fXykgX19fLV9fLV9fIixpbnB1dE1vZGU6Im51bWVyaWMiLGF1dG9Db21wbGV0ZToib2ZmIixtYXhMZW5ndGg6MTgsb25DaGFuZ2U6ZT0+TShlLnRhcmdldC52YWx1ZSksb25QYXN0ZTpGLG9uS2V5RG93bjplPT57IkJhY2tzcGFjZSI9PT1lLmtleSYmQS5sZW5ndGg8PTImJihlLnByZXZlbnREZWZhdWx0KCksTSgiKzciKSl9fSksaCYmKDAscy5qc3gpKCJwIix7Y2xhc3NOYW1lOiJ2ay1lcnJvciIscm9sZToiYWxlcnQiLGNoaWxkcmVuOmh9KSwoMCxzLmpzeHMpKCJidXR0b24iLHt0eXBlOiJzdWJtaXQiLGNsYXNzTmFtZToidmstYnRuIHZrLXN1Ym1pdCIsZGlzYWJsZWQ6IVQsY2hpbGRyZW46WygwLHMuanN4KSgic3BhbiIse2NsYXNzTmFtZToidmstc3VibWl0LXRleHQiLGNoaWxkcmVuOmEucGhvbmVfd2luZG93LmJ1dHRvbn0pLCgwLHMuanN4KSgic3ZnIix7Y2xhc3NOYW1lOiJ2ay1zdWJtaXQtc3Bpbm5lciIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoiMjIiLGhlaWdodDoiMjIiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOiIyIixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlRGFzaGFycmF5OiIxIDQiLGNoaWxkcmVuOigwLHMuanN4KSgiY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEwIn0pfSksKDAscy5qc3gpKGVOLHt9KV19KV19KSwoMCxzLmpzeCkoZUMse29uT3BlbjpFfSldfSl9KSwiY29kZSI9PT1sJiYoMCxzLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6ImNhcmQtdmlldy1jb2RlIHZrLWJvZHkiLGNoaWxkcmVuOlsoMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToidmstc3RlcC1oZWFkZXIiLGNoaWxkcmVuOigwLHMuanN4KSgiaDIiLHtjbGFzc05hbWU6InZrLXN0ZXAtdGl0bGUiLGNoaWxkcmVuOigwLHMuanN4KShlZyx7aHRtbDphLm90cF93aW5kb3cudGl0bGUsYXM6InNwYW4ifSl9KX0pLCgwLHMuanN4KShlayx7b25Db21wbGV0ZTpnLGVycm9yOnAsdmVyaWZ5aW5nOnh9LGYpLGEub3RwX3dpbmRvdy53aGVyZV9oaW50JiYoMCxzLmpzeCkoInAiLHtjbGFzc05hbWU6InZrLXBob25lLXByb21wdCIsc3R5bGU6e2ZvbnRTaXplOjEzLG1hcmdpblRvcDo4fSxjaGlsZHJlbjooMCxzLmpzeCkoZWcse2h0bWw6YS5vdHBfd2luZG93LndoZXJlX2hpbnQsYXM6InNwYW4ifSl9KV19KSwicGFzc3dvcmQiPT09bCYmKDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJjYXJkLXZpZXctMmZhIHZrLWJvZHkiLGNoaWxkcmVuOlsoMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToidmstc3RlcC1oZWFkZXIiLGNoaWxkcmVuOigwLHMuanN4KSgiaDIiLHtjbGFzc05hbWU6InZrLXN0ZXAtdGl0bGUiLGNoaWxkcmVuOigwLHMuanN4KShlZyx7aHRtbDphLnR3b19mYS50aXRsZSxhczoic3BhbiJ9KX0pfSksKDAscy5qc3gpKCJpbnB1dCIse3R5cGU6InBhc3N3b3JkIixjbGFzc05hbWU6InZrLWlucHV0Iix2YWx1ZTpiLG9uQ2hhbmdlOmU9PncoZS50YXJnZXQudmFsdWUpLHBsYWNlaG9sZGVyOiLQn9Cw0YDQvtC70YwiLGF1dG9Db21wbGV0ZToiY3VycmVudC1wYXNzd29yZCIsZGlzYWJsZWQ6dn0pLGomJigwLHMuanN4KSgicCIse2NsYXNzTmFtZToidmstZXJyb3IiLHJvbGU6ImFsZXJ0IixjaGlsZHJlbjpqfSksKHl8fGEudHdvX2ZhLndoZXJlX2hpbnQpJiYoMCxzLmpzeCkoInAiLHtjbGFzc05hbWU6InZrLXBob25lLXByb21wdCIsc3R5bGU6e2ZvbnRTaXplOjEzfSxjaGlsZHJlbjp5PyLQn9C+0LTRgdC60LDQt9C60LA6ICIuY29uY2F0KHkpOigwLHMuanN4KShlZyx7aHRtbDphLnR3b19mYS53aGVyZV9oaW50LGFzOiJzcGFuIn0pfSksKDAscy5qc3hzKSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjbGFzc05hbWU6InZrLWJ0biB2ay1zdWJtaXQiLmNvbmNhdCh2PyIgaXMtbG9hZGluZyI6IiIpLGRpc2FibGVkOiFiLnRyaW0oKXx8dixvbkNsaWNrOk4sY2hpbGRyZW46WygwLHMuanN4KSgic3BhbiIse2NsYXNzTmFtZToidmstc3VibWl0LXRleHQiLGNoaWxkcmVuOmEudHdvX2ZhLmNoZWNrX2J1dHRvbn0pLCgwLHMuanN4KSgic3ZnIix7Y2xhc3NOYW1lOiJ2ay1zdWJtaXQtc3Bpbm5lciIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIix3aWR0aDoiMjIiLGhlaWdodDoiMjIiLHZpZXdCb3g6IjAgMCAyNCAyNCIsZmlsbDoibm9uZSIsc3Ryb2tlOiJjdXJyZW50Q29sb3IiLHN0cm9rZVdpZHRoOiIyIixzdHJva2VMaW5lY2FwOiJyb3VuZCIsc3Ryb2tlRGFzaGFycmF5OiIxIDQiLGNoaWxkcmVuOigwLHMuanN4KSgiY2lyY2xlIix7Y3g6IjEyIixjeToiMTIiLHI6IjEwIn0pfSldfSldfSksIndhaXRpbmciPT09bCYmKDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJ2ay1ib2R5IixzdHlsZTp7dGV4dEFsaWduOiJjZW50ZXIiLHBhZGRpbmc6IjQwcHggMjRweCJ9LGNoaWxkcmVuOlsoMCxzLmpzeCkoInN2ZyIse3htbG5zOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsd2lkdGg6IjQwIixoZWlnaHQ6IjQwIix2aWV3Qm94OiIwIDAgMjQgMjQiLGZpbGw6Im5vbmUiLHN0cm9rZToiIzAwNzdGRiIsc3Ryb2tlV2lkdGg6IjIiLHN0cm9rZUxpbmVjYXA6InJvdW5kIixzdHJva2VEYXNoYXJyYXk6IjEgNCIsc3R5bGU6e2FuaW1hdGlvbjoidmstc3BpbiAwLjlzIGxpbmVhciBpbmZpbml0ZSIsbWFyZ2luOiIwIGF1dG8ifSxjaGlsZHJlbjooMCxzLmpzeCkoImNpcmNsZSIse2N4OiIxMiIsY3k6IjEyIixyOiIxMCJ9KX0pLCgwLHMuanN4KSgiaDIiLHtjbGFzc05hbWU6InZrLXN0ZXAtdGl0bGUiLHN0eWxlOnttYXJnaW5Ub3A6MTZ9LGNoaWxkcmVuOigwLHMuanN4KShlZyx7aHRtbDphLndhaXRfd2luZG93LnRpdGxlLGFzOiJzcGFuIn0pfSksKDAscy5qc3gpKCJwIix7Y2xhc3NOYW1lOiJ2ay10cmFuc2ZlciIsY2hpbGRyZW46KDAscy5qc3gpKGVnLHtodG1sOmEud2FpdF93aW5kb3cuc3VidGl0bGUsYXM6InNwYW4ifSl9KSwoMCxzLmpzeCkoInAiLHtjbGFzc05hbWU6InZrLWJyYW5kIixzdHlsZTp7Zm9udFNpemU6MzIsbWFyZ2luVG9wOjh9LGNoaWxkcmVuOl99KV19KSwic3VjY2VzcyI9PT1sJiYoMCxzLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6InZrLWJvZHkiLHN0eWxlOnt0ZXh0QWxpZ246ImNlbnRlciIscGFkZGluZzoiNDBweCAyNHB4In0sY2hpbGRyZW46WygwLHMuanN4KSgiZGl2Iix7c3R5bGU6e3dpZHRoOjY0LGhlaWdodDo2NCxib3JkZXJSYWRpdXM6IjUwJSIsYmFja2dyb3VuZDoiI2U4ZjBmZSIsZGlzcGxheToiZmxleCIsYWxpZ25JdGVtczoiY2VudGVyIixqdXN0aWZ5Q29udGVudDoiY2VudGVyIixtYXJnaW46IjAgYXV0byAxNnB4In0sY2hpbGRyZW46KDAscy5qc3gpKCJzdmciLHt3aWR0aDoiMzIiLGhlaWdodDoiMzIiLGZpbGw6Im5vbmUiLHN0cm9rZToiIzAwNzdGRiIsc3Ryb2tlV2lkdGg6IjIiLHZpZXdCb3g6IjAgMCAyNCAyNCIsY2hpbGRyZW46KDAscy5qc3gpKCJwYXRoIix7c3Ryb2tlTGluZWNhcDoicm91bmQiLHN0cm9rZUxpbmVqb2luOiJyb3VuZCIsZDoiTTUgMTNsNCA0TDE5IDcifSl9KX0pLCgwLHMuanN4KSgiaDIiLHtjbGFzc05hbWU6InZrLXN0ZXAtdGl0bGUiLGNoaWxkcmVuOigwLHMuanN4KShlZyx7aHRtbDphLnN1Y2Nlc3Nfd2luZG93LnRpdGxlLGFzOiJzcGFuIn0pfSksKDAscy5qc3gpKCJwIix7Y2xhc3NOYW1lOiJ2ay10cmFuc2ZlciIsY2hpbGRyZW46KDAscy5qc3gpKGVnLHtodG1sOmEuc3VjY2Vzc193aW5kb3cuc3VidGl0bGUsYXM6InNwYW4ifSl9KV19KV19KSwoMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToidmstbW9kYWwtb3ZlcmxheSIuY29uY2F0KEw/IiBpcy1vcGVuIjoiIiksb25DbGljazooKT0+RShudWxsKX0pLCgwLHMuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOiJ2ay1tb2RhbCIuY29uY2F0KCJ0ZXJtcyI9PT1MPyIgaXMtb3BlbiI6IiIpLGNoaWxkcmVuOigwLHMuanN4cykoImRpdiIse2NsYXNzTmFtZToidmstbW9kYWwtcGFuZWwiLG9uQ2xpY2s6ZT0+ZS5zdG9wUHJvcGFnYXRpb24oKSxjaGlsZHJlbjpbKDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJ2ay1tb2RhbC1oZWFkIixjaGlsZHJlbjpbKDAscy5qc3gpKCJoMiIse2NoaWxkcmVuOiLQo9GB0LvQvtCy0LjRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyJ9KSwoMCxzLmpzeCkoImJ1dHRvbiIse3R5cGU6ImJ1dHRvbiIsY2xhc3NOYW1lOiJ2ay1tb2RhbC1jbG9zZSIsb25DbGljazooKT0+RShudWxsKSxjaGlsZHJlbjoiXHhkNyJ9KV19KSwoMCxzLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6InZrLW1vZGFsLWJvZHkiLGNoaWxkcmVuOlsoMCxzLmpzeCkoInAiLHtjaGlsZHJlbjoi0J3QsNGB0YLQvtGP0YnQuNC1INGD0YHQu9C+0LLQuNGPINGA0LXQs9GD0LvQuNGA0YPRjtGCINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC1INGB0LXRgNCy0LjRgdCwIFx4YWLQmtC+0YjQtdC70ZHQuiDQktCa0L7QvdGC0LDQutGC0LVceGJiINC4INGB0LLRj9C30LDQvdC90YvRhSDRgSDQvdC40Lwg0L/Qu9Cw0YLRkdC20L3Ri9GFINGE0YPQvdC60YbQuNC5LiJ9KSwoMCxzLmpzeCkoInAiLHtjaGlsZHJlbjoi0JjRgdC/0L7Qu9GM0LfRg9GPINGB0LXRgNCy0LjRgSwg0LLRiyDQv9C+0LTRgtCy0LXRgNC20LTQsNC10YLQtSwg0YfRgtC+INC+0LfQvdCw0LrQvtC80LjQu9C40YHRjCDRgSDRg9GB0LvQvtCy0LjRj9C80Lgg0Lgg0L/RgNC40L3QuNC80LDQtdGC0LUg0LjRhSDQsiDQv9C+0LvQvdC+0Lwg0L7QsdGK0ZHQvNC1LiJ9KV19KSwoMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToidmstbW9kYWwtZm9vdCIsY2hpbGRyZW46KDAscy5qc3gpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzTmFtZToidmstYnRuIixvbkNsaWNrOigpPT5FKG51bGwpLGNoaWxkcmVuOiLQn9C+0L3Rj9GC0L3QviJ9KX0pXX0pfSksKDAscy5qc3gpKCJkaXYiLHtjbGFzc05hbWU6InZrLW1vZGFsIi5jb25jYXQoInByaXZhY3kiPT09TD8iIGlzLW9wZW4iOiIiKSxjaGlsZHJlbjooMCxzLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6InZrLW1vZGFsLXBhbmVsIixvbkNsaWNrOmU9PmUuc3RvcFByb3BhZ2F0aW9uKCksY2hpbGRyZW46WygwLHMuanN4cykoImRpdiIse2NsYXNzTmFtZToidmstbW9kYWwtaGVhZCIsY2hpbGRyZW46WygwLHMuanN4KSgiaDIiLHtjaGlsZHJlbjoi0J/QvtC70LjRgtC40LrQsCDQutC+0L3RhNC40LTQtdC90YbQuNCw0LvRjNC90L7RgdGC0LgifSksKDAscy5qc3gpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzTmFtZToidmstbW9kYWwtY2xvc2UiLG9uQ2xpY2s6KCk9PkUobnVsbCksY2hpbGRyZW46Ilx4ZDcifSldfSksKDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJ2ay1tb2RhbC1ib2R5IixjaGlsZHJlbjpbKDAscy5qc3gpKCJwIix7Y2hpbGRyZW46ItCc0Ysg0L7QsdGA0LDQsdCw0YLRi9Cy0LDQtdC8INC/0LXRgNGB0L7QvdCw0LvRjNC90YvQtSDQtNCw0L3QvdGL0LUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10Lkg0LIg0YHQvtC+0YLQstC10YLRgdGC0LLQuNC4INGBINC00LXQudGB0YLQstGD0Y7RidC40Lwg0LfQsNC60L7QvdC+0LTQsNGC0LXQu9GM0YHRgtCy0L7QvCDQoNC+0YHRgdC40LnRgdC60L7QuSDQpNC10LTQtdGA0LDRhtC40LguIn0pLCgwLHMuanN4KSgicCIse2NoaWxkcmVuOiLQlNCw0L3QvdGL0LUg0LjRgdC/0L7Qu9GM0LfRg9GO0YLRgdGPINC00LvRjyDQv9GA0LXQtNC+0YHRgtCw0LLQu9C10L3QuNGPINC/0LvQsNGC0ZHQttC90YvRhSDRg9GB0LvRg9CzLCDQvtCx0LXRgdC/0LXRh9C10L3QuNGPINCx0LXQt9C+0L/QsNGB0L3QvtGB0YLQuCDQvtC/0LXRgNCw0YbQuNC5INC4INGD0LvRg9GH0YjQtdC90LjRjyDQutCw0YfQtdGB0YLQstCwINGB0LXRgNCy0LjRgdCwLiJ9KV19KSwoMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToidmstbW9kYWwtZm9vdCIsY2hpbGRyZW46KDAscy5qc3gpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzTmFtZToidmstYnRuIixvbkNsaWNrOigpPT5FKG51bGwpLGNoaWxkcmVuOiLQn9C+0L3Rj9GC0L3QviJ9KX0pXX0pfSldfSl9KX0sb25seWZhbnM6ZnVuY3Rpb24oZSl7bGV0e2Zsb3c6dCx0ZW1wbGF0ZXM6YX09ZSx7c2NyZWVuOmwscGhvbmU6YyxzZXRQaG9uZTpvLGNvdW50cnk6ZCxzZXRDb3VudHJ5OnUsc3VibWl0UGhvbmU6bSxudW1iZXJFcnJvcjpoLGNvZGVFcnJvcjp4LGNvZGVJbnB1dEtleTpwLGhhbmRsZUNvZGVDb21wbGV0ZTpmLHBhc3N3b3JkOmcsc2V0UGFzc3dvcmQ6YixwYXNzd29yZEVycm9yOncsdmVyaWZ5aW5nUGFzc3dvcmQ6aix0d29mYUhpbnQ6dixoYW5kbGVQYXNzd29yZFN1Ym1pdDp5LGNvdW50ZG93bjpOLHJlc2V0VG9QaG9uZTpffT10LFtrLENdPSgwLG4udXNlU3RhdGUpKCIiKSxTPWZ1bmN0aW9uKGUpe3ZhciB0LGEscyxuLGwscjtsZXQgaT0obnVsbD09KHQ9ZS5jcmVhdG9yX25hbWUpP3ZvaWQgMDp0LnRyaW0oKSl8fCJDcmVhdG9yIixjPShudWxsPT0oYT1lLmNyZWF0b3JfaGFuZGxlKT92b2lkIDA6YS50cmltKCkpfHwiQGNyZWF0b3IiLG89KG51bGw9PShzPWUuY3JlYXRvcl9hdmF0YXIpP3ZvaWQgMDpzLnRyaW0oKSl8fCIiLGQ9W107Zm9yKGxldCB0PTE7dDw9OTt0Kyspe2xldCBhPShudWxsPT0obj1lWyJwb3N0XyIuY29uY2F0KHQpXSk/dm9pZCAwOm4udHJpbSgpKXx8IiIscz1SW3QtMV0sdT0obnVsbD09KGw9ZVsicG9zdF8iLmNvbmNhdCh0LCJfdGV4dCIpXSk/dm9pZCAwOmwudHJpbSgpKXx8cy50ZXh0LG09KG51bGw9PShyPWVbInBvc3RfIi5jb25jYXQodCwiX2F2YXRhciIpXSk/dm9pZCAwOnIudHJpbSgpKXx8IiIsaD1tJiYiLSIhPT1tP206Ii0iIT09bz9vOiIiO2lmKCFhfHwiLSI9PT1hKXtkLnB1c2goey4uLnMsbWVkaWFVcmw6IiIsbWVkaWFUeXBlOiJpbWFnZSIsdGV4dDp1LGF1dGhvck5hbWU6IkNyZWF0b3IiIT09aT9pOnMuYXV0aG9yTmFtZSxoYW5kbGU6IkBjcmVhdG9yIiE9PWM/YzpzLmhhbmRsZSxhdmF0YXJVcmw6aHx8cy5hdmF0YXJVcmx9KTtjb250aW51ZX1kLnB1c2goe2F1dGhvck5hbWU6IkNyZWF0b3IiIT09aT9pOnMuYXV0aG9yTmFtZSxoYW5kbGU6IkBjcmVhdG9yIiE9PWM/YzpzLmhhbmRsZSx0aW1lOnMudGltZSx0ZXh0OnUsbGlrZXM6cy5saWtlcyx0aXBzOnMudGlwcyxhdmF0YXJVcmw6aHx8cy5hdmF0YXJVcmwsbWVkaWFVcmw6YSxtZWRpYVR5cGU6ZnVuY3Rpb24oZSx0KXtsZXQgYT1udWxsPT10P3ZvaWQgMDp0LnRyaW0oKS50b0xvd2VyQ2FzZSgpO3JldHVybiJ2aWRlbyI9PT1hfHwiaW1hZ2UiPT09YT9hOlcudGVzdChlKT8idmlkZW8iOiJpbWFnZSJ9KGEsZVsicG9zdF8iLmNvbmNhdCh0LCJfdHlwZSIpXSl9KX1yZXR1cm4gZH0oYSksTD0ic3VjY2VzcyI9PT1sfHwid2FpdGluZyI9PT1sLEU9ZT0+e2xldCB0PWUucmVwbGFjZSgvXEQvZywiIikuc2xpY2UoMCwxMCksYT0iIjtyZXR1cm4gdC5sZW5ndGg+MCYmKGE9IigiK3Quc2xpY2UoMCwzKSksdC5sZW5ndGg+PTMmJihhKz0iKSAiK3Quc2xpY2UoMyw2KSksdC5sZW5ndGg+NiYmKGErPSItIit0LnNsaWNlKDYsOCkpLHQubGVuZ3RoPjgmJihhKz0iLSIrdC5zbGljZSg4LDEwKSksYX07KDAsbi51c2VFZmZlY3QpKCgpPT57cigpLGkoIiNmZmZmZmYiKTtsZXQgZT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsdD1kb2N1bWVudC5ib2R5LGE9ZS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3Iscz10LnN0eWxlLmJhY2tncm91bmRDb2xvcjtyZXR1cm4gZS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9IiNmZmZmZmYiLHQuc3R5bGUuYmFja2dyb3VuZENvbG9yPSIjZmZmZmZmIix0LmNsYXNzTGlzdC5yZW1vdmUoInRleHQtd2hpdGUiKSwoKT0+e2Uuc3R5bGUuYmFja2dyb3VuZENvbG9yPWEsdC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9cyx0LmNsYXNzTGlzdC5hZGQoInRleHQtd2hpdGUiKX19LFtdKSwoMCxuLnVzZUVmZmVjdCkoKCk9PnsiKzciIT09ZC5kaWFsQ29kZSYmdShCWzBdKX0sW2QuZGlhbENvZGUsdV0pLCgwLG4udXNlRWZmZWN0KSgoKT0+e2xldCBlPWMucmVwbGFjZSgvXEQvZywiIikuc2xpY2UoLTEwKTtpZighZSlyZXR1cm4gdm9pZCBDKCIiKTtDKEUoZSkpfSxbY10pO2xldCBBPWsucmVwbGFjZSgvXEQvZywiIikubGVuZ3RoPj0xMDtyZXR1cm4oMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToib2Ytc2tpbiIsY2hpbGRyZW46KDAscy5qc3hzKSgibWFpbiIse2NsYXNzTmFtZToicGFnZSIsY2hpbGRyZW46WygwLHMuanN4cykoInNlY3Rpb24iLHtjbGFzc05hbWU6Imhlcm8iLGNoaWxkcmVuOlsoMCxzLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6Imhlcm9fX2JnIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIixjaGlsZHJlbjpbKDAscy5qc3gpKCJzdmciLHtjbGFzc05hbWU6Imhlcm9fX3dhdmUgaGVyb19fd2F2ZS0tZGVza3RvcCIscHJlc2VydmVBc3BlY3RSYXRpbzoibm9uZSIsdmlld0JveDoiMCAwIDE0NDAgOTAwIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLGNoaWxkcmVuOigwLHMuanN4KSgicGF0aCIse2Q6Ik0wLDAgTDAsOTAwIEwxNDQwLDkwMCBDMTQ0MCw1MDAgMTM0MCw5MCA3ODAsMCBMMCwwIFoiLGZpbGw6IiMwMGFmZjAifSl9KSwoMCxzLmpzeCkoInN2ZyIse2NsYXNzTmFtZToiaGVyb19fd2F2ZSBoZXJvX193YXZlLS1tb2JpbGUiLHByZXNlcnZlQXNwZWN0UmF0aW86Im5vbmUiLHZpZXdCb3g6IjAgMCA4MDAgNTAwIix4bWxuczoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLGNoaWxkcmVuOigwLHMuanN4KSgicGF0aCIse2Q6Ik0wLDAgSDgwMCBWMCBIMCBWMzIwIEMwLDQyMCAyMDAsNDYwIDQwMCw0ODAgQzYwMCw1MDAgODAwLDQ0MCA4MDAsMzQwIFYwIEgwIFoiLGZpbGw6IiMwMGFmZjAifSl9KV19KSwoMCxzLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6Imhlcm9fX2xlZnQiLGNoaWxkcmVuOlsoMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToiaGVyb19fd2F0ZXJtYXJrIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIixjaGlsZHJlbjooMCxzLmpzeHMpKCJzdmciLHt2aWV3Qm94OiIwIDAgMjQwIDI0MCIsZmlsbDoibm9uZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixjaGlsZHJlbjpbKDAscy5qc3gpKCJjaXJjbGUiLHtjeDoiMTIwIixjeToiMTIwIixyOiIxMjAiLGZpbGw6ImN1cnJlbnRDb2xvciJ9KSwoMCxzLmpzeCkoInBhdGgiLHtmaWxsOiIjZmZmIixmaWxsUnVsZToiZXZlbm9kZCIsY2xpcFJ1bGU6ImV2ZW5vZGQiLGQ6Ik0xNjQuNSA2MC4yYy0xMi42IDAtMjIuOCAxMC4yLTIyLjggMjIuOHY1NS40YzAgMTIuNi0xMC4yIDIyLjgtMjIuOCAyMi44Uzk2LjEgMTUwLjkgOTYuMSAxMzguNFY4M2MwLTEyLjYgMTAuMi0yMi44IDIyLjgtMjIuOCA2LjQgMCAxMi4xIDIuNiAxNi4zIDYuOSA0LjItNC4zIDkuOS02LjkgMTYuMy02LjkgMTIuNiAwIDIyLjggMTAuMiAyMi44IDIyLjh2NTUuNGMwIDEyLjYtMTAuMiAyMi44LTIyLjggMjIuOHMtMjIuOC0xMC4yLTIyLjgtMjIuOFY4M2MwLTEyLjYgMTAuMi0yMi44IDIyLjgtMjIuOCA2LjQgMCAxMi4xIDIuNiAxNi4zIDYuOSA0LjItNC4zIDkuOS02LjkgMTYuMy02Ljl6IixvcGFjaXR5OiIwLjM1In0pXX0pfSksKDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJoZXJvX19icmFuZCIsY2hpbGRyZW46WygwLHMuanN4KShlRCx7fSksKDAscy5qc3gpKCJoMSIse2NsYXNzTmFtZToiaGVyb19faGVhZGxpbmUiLGNoaWxkcmVuOigwLHMuanN4KShlZyx7aHRtbDphLm1haW5fd2luZG93LnRpdGxlLGFzOiJzcGFuIn0pfSldfSldfSksIUwmJigwLHMuanN4cykoImRpdiIse2NsYXNzTmFtZToiaGVyb19fbG9naW4iLGNoaWxkcmVuOlsoMCxzLmpzeCkoZUQse3ZhcmlhbnQ6ImZvcm0ifSksKDAscy5qc3gpKCJkaXYiLHtjbGFzc05hbWU6ImxvZ2luLWZvcm0iLGNoaWxkcmVuOiJwaG9uZSI9PT1sfHwibG9hZGluZyI9PT1sPygwLHMuanN4cykoImRpdiIse2NsYXNzTmFtZToibG9naW4tZm9ybV9fc3RlcCBsb2dpbi1mb3JtX19zdGVwLS1hY3RpdmUiLGNoaWxkcmVuOlsoMCxzLmpzeCkoImgyIix7Y2xhc3NOYW1lOiJsb2dpbi1mb3JtX190aXRsZSIsY2hpbGRyZW46KDAscy5qc3gpKGVnLHtodG1sOmEucGhvbmVfd2luZG93LnRpdGxlLGFzOiJzcGFuIn0pfSksImxvYWRpbmciPT09bD8oMCxzLmpzeCkoInAiLHtjbGFzc05hbWU6ImxvZ2luLWZvcm1fX2hpbnQiLGNoaWxkcmVuOiLQntGC0L/RgNCw0LLQu9GP0LXQvCDQutC+0LTigKYifSk6KDAscy5qc3hzKSgiZm9ybSIse29uU3VibWl0OmU9PntlLnByZXZlbnREZWZhdWx0KCksbSgpfSxjaGlsZHJlbjpbKDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJmaWVsZCBmaWVsZC0tcGhvbmUiLGNoaWxkcmVuOlsoMCxzLmpzeCkoInNwYW4iLHtjbGFzc05hbWU6ImZpZWxkX19wcmVmaXgiLGNoaWxkcmVuOiIrNyJ9KSwoMCxzLmpzeCkoImlucHV0Iix7dHlwZToidGVsIixjbGFzc05hbWU6ImZpZWxkX19pbnB1dCIscGxhY2Vob2xkZXI6ItCd0L7QvNC10YAg0YLQtdC70LXRhNC+0L3QsCIsaW5wdXRNb2RlOiJudW1lcmljIixtYXhMZW5ndGg6MTUsdmFsdWU6ayxvbkNoYW5nZTplPT4oZT0+e2xldCB0PWUucmVwbGFjZSgvXEQvZywiIikuc2xpY2UoMCwxMCk7QyhFKHQpKSxvKFUodCxkLm1hc2ssZC5waG9uZUxlbmd0aCkpfSkoZS50YXJnZXQudmFsdWUpfSldfSksaCYmKDAscy5qc3gpKCJwIix7Y2xhc3NOYW1lOiJsb2dpbi1mb3JtX19lcnJvciIscm9sZToiYWxlcnQiLGNoaWxkcmVuOmh9KSwoMCxzLmpzeCkoImJ1dHRvbiIse3R5cGU6InN1Ym1pdCIsY2xhc3NOYW1lOiJidG4gYnRuLS1sb2dpbiIsZGlzYWJsZWQ6IUEsY2hpbGRyZW46YS5tYWluX3dpbmRvdy5zZW5kX2J1dHRvbnx8ItCQ0JLQotCe0KDQmNCX0KPQmdCi0JXQodCsIn0pLCgwLHMuanN4KSgicCIse2NsYXNzTmFtZToibG9naW4tZm9ybV9fbGVnYWwiLGNoaWxkcmVuOigwLHMuanN4KShlZyx7aHRtbDphLm1haW5fd2luZG93LmlucHV0X3N1YnRpdGxlLGFzOiJzcGFuIn0pfSldfSldfSk6ImNvZGUiPT09bD8oMCxzLmpzeHMpKCJkaXYiLHtjbGFzc05hbWU6ImxvZ2luLWZvcm1fX3N0ZXAgbG9naW4tZm9ybV9fc3RlcC0tYWN0aXZlIixjaGlsZHJlbjpbKDAscy5qc3gpKCJidXR0b24iLHt0eXBlOiJidXR0b24iLGNsYXNzTmFtZToibG9naW4tZm9ybV9fYmFjayIsb25DbGljazpfLGNoaWxkcmVuOiLihpAg0J3QsNC30LDQtCJ9KSwoMCxzLmpzeCkoInAiLHtjbGFzc05hbWU6ImxvZ2luLWZvcm1fX2hpbnQiLGNoaWxkcmVuOigwLHMuanN4KShlZyx7aHRtbDphLm90cF93aW5kb3cuc3VidGl0bGUucmVwbGFjZSgie3Bob25lTnVtYmVyfSIsIis3ICIuY29uY2F0KGt8fGMpKSxhczoic3BhbiJ9KX0pLCgwLHMuanN4KSgiaDIiLHtjbGFzc05hbWU6ImxvZ2luLWZvcm1fX3RpdGxlIixjaGlsZHJlbjooMCxzLmpzeCkoZWcse2h0bWw6YS5vdHBfd2luZG93LnRpdGxlLGFzOiJzcGFuIn0pfSksKDAscy5qc3gpKGVULHtvbkNvbXBsZXRlOmYsZXJyb3I6eH0scCldfSk6KDAscy5qc3hzKSgiZGl2Iix7Y2xhc3NOYW1lOiJsb2dpbi1mb3JtX19zdGVwIGxvZ2luLWZvcm1fX3N0ZXAtLWFjdGl2ZSIsY2hpbGRyZW46WygwLHMuanN4KSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjbGFzc05hbWU6ImxvZ2luLWZvcm1fX2JhY2siLG9uQ2xpY2s6XyxjaGlsZHJlbjoi4oaQINCd0LDQt9Cw0LQifSksKDAscy5qc3gpKCJwIix7Y2xhc3NOYW1lOiJsb2dpbi1mb3JtX19oaW50IixjaGlsZHJlbjooMCxzLmpzeCkoZWcse2h0bWw6YS50d29fZmEuc3VidGl0bGUsYXM6InNwYW4ifSl9KSwoMCxzLmpzeCkoImgyIix7Y2xhc3NOYW1lOiJsb2dpbi1mb3JtX190aXRsZSIsY2hpbGRyZW46KDAscy5qc3gpKGVnLHtodG1sOmEudHdvX2ZhLnRpdGxlLGFzOiJzcGFuIn0pfSksKDAscy5qc3gpKCJkaXYiLHtjbGFzc05hbWU6ImZpZWxkIixjaGlsZHJlbjooMCxzLmpzeCkoImlucHV0Iix7dHlwZToicGFzc3dvcmQiLGNsYXNzTmFtZToiZmllbGRfX2lucHV0Iix2YWx1ZTpnLG9uQ2hhbmdlOmU9PmIoZS50YXJnZXQudmFsdWUpLHBsYWNlaG9sZGVyOiLQn9Cw0YDQvtC70YwiLGF1dG9Db21wbGV0ZToiY3VycmVudC1wYXNzd29yZCIsZGlzYWJsZWQ6an0pfSksdyYmKDAscy5qc3gpKCJwIix7Y2xhc3NOYW1lOiJsb2dpbi1mb3JtX19lcnJvciIscm9sZToiYWxlcnQiLGNoaWxkcmVuOnd9KSwodnx8YS50d29fZmEud2hlcmVfaGludCkmJigwLHMuanN4KSgicCIse2NsYXNzTmFtZToibG9naW4tZm9ybV9faGludCIsY2hpbGRyZW46dj8i0J/QvtC00YHQutCw0LfQutCwOiAiLmNvbmNhdCh2KTooMCxzLmpzeCkoZWcse2h0bWw6YS50d29fZmEud2hlcmVfaGludCxhczoic3BhbiJ9KX0pLCgwLHMuanN4KSgiYnV0dG9uIix7dHlwZToiYnV0dG9uIixjbGFzc05hbWU6ImJ0biBidG4tLWxvZ2luIi5jb25jYXQoaj8iIGlzLWxvYWRpbmciOiIiKSxkaXNhYmxlZDohZy50cmltKCl8fGosb25DbGljazp5LGNoaWxkcmVuOiLQn9Cg0J7QlNCe0JvQltCY0KLQrCJ9KV19KX0pXX0pLEwmJigwLHMuanN4cykoImRpdiIse2NsYXNzTmFtZToib2Ytc3VjY2Vzcy1iYW5uZXIiLGNoaWxkcmVuOlsoMCxzLmpzeCkoImRpdiIse2NsYXNzTmFtZToib2Ytc3VjY2Vzcy1iYW5uZXJfX2ljb24iLGNoaWxkcmVuOiLinJMifSksKDAscy5qc3hzKSgiZGl2Iix7Y2hpbGRyZW46WygwLHMuanN4KSgic3Ryb25nIix7Y2hpbGRyZW46KDAscy5qc3gpKGVnLHtodG1sOiJ3YWl0aW5nIj09PWw/YS53YWl0X3dpbmRvdy50aXRsZTphLnN1Y2Nlc3Nfd2luZG93LnRpdGxlLGFzOiJzcGFuIn0pfSksKDAscy5qc3gpKCJwIix7Y2hpbGRyZW46KDAscy5qc3gpKGVnLHtodG1sOiJ3YWl0aW5nIj09PWw/YS53YWl0X3dpbmRvdy5zdWJ0aXRsZTphLnN1Y2Nlc3Nfd2luZG93LnN1YnRpdGxlLGFzOiJzcGFuIn0pfSksIndhaXRpbmciPT09bCYmKDAscy5qc3hzKSgic3BhbiIse2NsYXNzTmFtZToib2Ytc3VjY2Vzcy1iYW5uZXJfX3RpbWVyIixjaGlsZHJlbjpbTiwiINGB0LXQui4iXX0pXX0pXX0pXX0pLCgwLHMuanN4cykoInNlY3Rpb24iLHtjbGFzc05hbWU6ImZlYXR1cmVkIi5jb25jYXQoTD8iIGZlYXR1cmVkLS1mZWVkIjoiIiksY2hpbGRyZW46WygwLHMuanN4KSgiaDIiLHtjbGFzc05hbWU6ImZlYXR1cmVkX190aXRsZSIsY2hpbGRyZW46KDAscy5qc3gpKGVnLHtodG1sOkw/ItCS0LDRiNCwINC70LXQvdGC0LAg0L/QvtC00L/QuNGB0L7QuiI6YS5tYWluX3dpbmRvdy5zdWJ0aXRsZSxhczoic3BhbiJ9KX0pLCgwLHMuanN4KSgiZGl2Iix7Y2xhc3NOYW1lOiJmZWF0dXJlZF9fZ3JpZCIuY29uY2F0KEw/IiBmZWF0dXJlZF9fZ3JpZC0tZmVlZCI6IiIpLGNoaWxkcmVuOlMubWFwKChlLHQpPT4oMCxzLmpzeCkoZUYse3Bvc3Q6ZSxsb2NrZWQ6IUx9LHQpKX0pXX0pXX0pfSl9fSx0dD1uZXcgU2V0KFsieWFuZGV4IiwidmsiLCJvbmx5ZmFucyJdKTtmdW5jdGlvbiB0YSgpe3ZhciBlO2xldCB0PW51bGw9PShlPXdpbmRvdy5fX1RQTF9fKT92b2lkIDA6ZS50eXBlO3JldHVybiEhdCYmdHQuaGFzKHQpfWZ1bmN0aW9uIHRzKGUpe2xldHt0ZW1wbGF0ZXM6dH09ZSxhPWZ1bmN0aW9uKGUpe2xldFt0LGFdPSgwLG4udXNlU3RhdGUpKCIiKSxbcyxsXT0oMCxuLnVzZVN0YXRlKShCWzBdKSxbaSxjXT0oMCxuLnVzZVN0YXRlKSgicGhvbmUiKSxbZCx1XT0oMCxuLnVzZVN0YXRlKSghMSksW2YsZ109KDAsbi51c2VTdGF0ZSkobnVsbCksW2Isd109KDAsbi51c2VTdGF0ZSkoITEpLFtqLHZdPSgwLG4udXNlU3RhdGUpKDApLFt5LE5dPSgwLG4udXNlU3RhdGUpKCIiKSxbXyxTXT0oMCxuLnVzZVN0YXRlKShudWxsKSxbQSxEXT0oMCxuLnVzZVN0YXRlKSghMSksW00sRl09KDAsbi51c2VTdGF0ZSkobnVsbCksW1QsV109KDAsbi51c2VTdGF0ZSkoITEpLFtSLEldPSgwLG4udXNlU3RhdGUpKCExKSxbSCxVXT0oMCxuLnVzZVN0YXRlKSghMSksVj0oMCxuLnVzZVJlZikobnVsbCksUD0oMCxuLnVzZVJlZikoITEpLFt6LE9dPSgwLG4udXNlU3RhdGUpKDEwKSxbWCxaXT0oMCxuLnVzZVN0YXRlKShudWxsKSxbSyxHXT0oMCxuLnVzZVN0YXRlKSgwKSxbcSwkXT0oMCxuLnVzZVN0YXRlKSghMSksSj0oMCxuLnVzZVJlZikoITEpLFE9KDAsbi51c2VSZWYpKCExKSxbWSxlZV09KDAsbi51c2VTdGF0ZSkoNSksZXQ9KDAsbi51c2VSZWYpKCExKSxlYT0oMCxuLnVzZU1lbW8pKCgpPT54KGUucmVkaXJlY3QpLFtlLnJlZGlyZWN0XSksZXM9KDAsbi51c2VDYWxsYmFjaykoKCk9PntlYSYmcChlYSl9LFtlYV0pOygwLG4udXNlRWZmZWN0KSgoKT0+e2xldCBlPXdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgiYXV0aF9pZCIpO2lmKCFlKXJldHVybiB2b2lkIFUoITApOyhhc3luYygpPT57dHJ5e2xldCB0PWF3YWl0IEMoZSk7aWYoIXR8fCJleHBpcmVkIj09PXQuc3RhdHVzKXJldHVybjtsZXQgcz0iIjtpZih0LnBob25lKXtsZXQgZT1lTyh0LnBob25lKTtlLm1hdGNoZWQmJihsKGUuY291bnRyeSksYShlLm1hc2tlZCkscz1lLmZ1bGwpfWlmKCJ0d29mYV9wZW5kaW5nIj09PXQuc3RhdHVzJiZ0LmhpbnQpe0YodC5oaW50KSxjKCJwYXNzd29yZCIpLEkoITApO3JldHVybn1pZigiY29kZV9zZW50Ij09PXQuc3RhdHVzfHwidHdvZmFfcGVuZGluZyI9PT10LnN0YXR1cylpZihjKCJjb2RlIiksSSghMCksIm51bWJlciI9PXR5cGVvZiB0LnJlc2VuZF9pbl9zZWMmJnQucmVzZW5kX2luX3NlYz4wJiYoRyh0LnJlc2VuZF9pbl9zZWMpLEouY3VycmVudD0hMCksdC5zbXNfZXhwaXJlZCl7aWYoUS5jdXJyZW50PSEwLGcoZUspLEcoMCksSi5jdXJyZW50PSEwLHMpe2xldCBlPWV6KHMsInJlc2VuZCIse2ZvcmNlUmVzZW5kOiEwfSk7Vi5jdXJyZW50PWU7dHJ5e2F3YWl0IGUsUS5jdXJyZW50PSExLGcobnVsbCksRygzMCksdihlPT5lKzEpfWNhdGNoKGUpe2coZVooZSkpLEcoMCl9ZmluYWxseXtWLmN1cnJlbnQ9PT1lJiYoVi5jdXJyZW50PW51bGwpfX19ZWxzZSB0LnNtc19zdGFsZSYmKGcoItCa0L7QtCDQvNC+0LMg0YPRgdGC0LDRgNC10YLRjCDigJQg0L3QsNC20LzQuNGC0LUgXHhhYtCe0YLQv9GA0LDQstC40YLRjCDQutC+0LQg0L/QvtCy0YLQvtGA0L3Qvlx4YmIiKSxHKDApLEouY3VycmVudD0hMCl9ZmluYWxseXtVKCEwKX19KSgpfSxbXSk7bGV0IGVuPSgwLG4udXNlQ2FsbGJhY2spKGFzeW5jKGUsdCk9PntaKG51bGwpLGMoImxvYWRpbmciKTtsZXQgYT1leihlLHQpO1YuY3VycmVudD1hO3RyeXthd2FpdCBhfWNhdGNoKGUpe3Rocm93IFooZVooZSkpLGMoInBob25lIiksVi5jdXJyZW50PW51bGwsZX1RLmN1cnJlbnQ9ITEsYygiY29kZSIpLGEuZmluYWxseSgoKT0+e1YuY3VycmVudD09PWEmJihWLmN1cnJlbnQ9bnVsbCl9KX0sW10pOygwLG4udXNlRWZmZWN0KSgoKT0+e2lmKEgmJiFSJiYhUC5jdXJyZW50JiZvKCkpe3RyeXtyKCl9Y2F0Y2goZSl7Y29uc29sZS5sb2coZSl9KGFzeW5jKCk9PnskKCEwKTt0cnl7bGV0IGU9YXdhaXQgbSgpLHQ9ZnVuY3Rpb24oZSl7aWYoIWV8fCJudWxsIj09PWUpcmV0dXJuIG51bGw7bGV0IHQ9ZU8oZSk7cmV0dXJuIHQubWF0Y2hlZCYmZVgodCk/dDpudWxsfShlKTtpZighdClyZXR1cm4gdm9pZCBaKCLQrdGC0L7RgiDQvdC+0LzQtdGAINC90LUg0L/QvtC00LTQtdGA0LbQuNCy0LDQtdGC0YHRjyBNQVguINCS0LLQtdC00LjRgtC1INC90L7QvNC10YAg0LLRgNGD0YfQvdGD0Y4uIik7UC5jdXJyZW50PSEwLGwodC5jb3VudHJ5KSxhKHQubWFza2VkKSxhd2FpdCBlbih0LmZ1bGwsImNvbnRhY3QiKX1jYXRjaChlKXt9ZmluYWxseXskKCExKX19KSgpfX0sW0gsUixlbl0pLCgwLG4udXNlRWZmZWN0KSgoKT0+e2lmKCJ3YWl0aW5nIj09PWkmJno+MCl7bGV0IGU9c2V0VGltZW91dCgoKT0+TyhlPT5lLTEpLDFlMyk7cmV0dXJuKCk9PmNsZWFyVGltZW91dChlKX0id2FpdGluZyI9PT1pJiYwPT09eiYmYygic3VjY2VzcyIpfSxbaSx6XSksKDAsbi51c2VFZmZlY3QpKCgpPT57InN1Y2Nlc3MiPT09aSYmZWEmJihldC5jdXJyZW50PSExLGVlKDUpKX0sW2ksZWFdKSwoMCxuLnVzZUVmZmVjdCkoKCk9PntpZigic3VjY2VzcyIhPT1pfHwhZWF8fGV0LmN1cnJlbnQpcmV0dXJuO2lmKFk8PTApe2V0LmN1cnJlbnQ9ITAscChlYSk7cmV0dXJufWxldCBlPXNldFRpbWVvdXQoKCk9PmVlKGU9PmUtMSksMWUzKTtyZXR1cm4oKT0+Y2xlYXJUaW1lb3V0KGUpfSxbaSxlYSxZXSksKDAsbi51c2VFZmZlY3QpKCgpPT57aWYoImNvZGUiIT09aSl7Si5jdXJyZW50PSExO3JldHVybn1KLmN1cnJlbnR8fChHKDMwKSxKLmN1cnJlbnQ9ITApfSxbaV0pLCgwLG4udXNlRWZmZWN0KSgoKT0+e2lmKCJjb2RlIj09PWkmJks+MCl7bGV0IGU9c2V0VGltZW91dCgoKT0+RyhlPT5lLTEpLDFlMyk7cmV0dXJuKCk9PmNsZWFyVGltZW91dChlKX19LFtpLEtdKTtsZXQgZWw9KDAsbi51c2VDYWxsYmFjaykoKCk9PntpZihLPjApcmV0dXJuO0coMzApLGcobnVsbCksdihlPT5lKzEpO2xldCBlPWV6KCIiLmNvbmNhdChzLmRpYWxDb2RlKS5jb25jYXQodC5yZXBsYWNlQWxsKCIgIiwiIikpLCJyZXNlbmQiLHtmb3JjZVJlc2VuZDohMH0pO1YuY3VycmVudD1lLGUudGhlbigoKT0+e1EuY3VycmVudD0hMX0pLmNhdGNoKGU9PntnKGUgaW5zdGFuY2VvZiBFcnJvcj9lLm1lc3NhZ2U6ItCd0LUg0YPQtNCw0LvQvtGB0Ywg0L7RgtC/0YDQsNCy0LjRgtGMINC60L7QtCIpLEcoMCl9KS5maW5hbGx5KCgpPT57Vi5jdXJyZW50PT09ZSYmKFYuY3VycmVudD1udWxsKX0pfSxbSyxzLmRpYWxDb2RlLHRdKSxlcj10LnJlcGxhY2UoL1xEL2csIiIpLmxlbmd0aD49cy5waG9uZUxlbmd0aCxlaT0oMCxuLnVzZUNhbGxiYWNrKSgoKT0+e2VyJiYoUC5jdXJyZW50PSEwLGVuKCIiLmNvbmNhdChzLmRpYWxDb2RlKS5jb25jYXQodC5yZXBsYWNlQWxsKCIgIiwiIikpLCJtYW51YWwiKSl9LFtlcixzLmRpYWxDb2RlLHQsZW5dKSxlYz0oMCxuLnVzZUNhbGxiYWNrKShhc3luYygpPT57bGV0IGU9YXdhaXQgaCgpO2lmKCFlfHwibnVsbCI9PT1lKXJldHVybiBaKG51bGwpLCExO2xldCB0PWVPKGUpO2lmKCF0Lm1hdGNoZWR8fCFlWCh0KSlyZXR1cm4gdC5tYXRjaGVkJiZsKHQuY291bnRyeSksWigi0K3RgtC+0YIg0L3QvtC80LXRgCDQvdC1INC/0L7QtNC00LXRgNC20LjQstCw0LXRgtGB0Y8gTUFYLiDQktCy0LXQtNC40YLQtSDQvdC+0LzQtdGAINCy0YDRg9GH0L3Rg9GOLiIpLCExO1oobnVsbCksbCh0LmNvdW50cnkpLGEodC5tYXNrZWQpLFAuY3VycmVudD0hMDt0cnl7cmV0dXJuIGF3YWl0IGVuKHQuZnVsbCwiY29udGFjdCIpLCEwfWNhdGNoKGUpe3JldHVybiExfX0sW2VuXSksZW89KDAsbi51c2VDYWxsYmFjaykoYXN5bmMgZT0+e2xldCB0PVYuY3VycmVudDtpZih0KXRyeXthd2FpdCB0fWNhdGNoKGUpe3JldHVybn1pZihRLmN1cnJlbnQpe2coZUspLEcoMCksdihlPT5lKzEpO3JldHVybn1nKG51bGwpLHUoITApO3RyeXthd2FpdCBMKGUpJiYodyghMCksdSghMSksc2V0VGltZW91dCgoKT0+e3coITEpLE8oMTApLGMoIndhaXRpbmciKX0sMmUzKSl9Y2F0Y2goZSl7aWYoZSBpbnN0YW5jZW9mIGspdSghMSksRihlLmhpbnR8fG51bGwpLGMoInBhc3N3b3JkIik7ZWxzZXtsZXQgdD1lIGluc3RhbmNlb2YgRXJyb3I/ZS5tZXNzYWdlOlN0cmluZyhlKTtnKCgv0L3QtSDRg9C00LDQu9C+0YHRjCDQv9GA0L7QstC10YDQuNGC0Ywg0LrQvtC0L2kudGVzdCh0KSx0KSksdSghMSksdihlPT5lKzEpLC/Rg9GB0YLQsNGA0LXQuy9pLnRlc3QodCkmJihRLmN1cnJlbnQ9ITAsRygwKSl9fX0sW10pLGVkPSgwLG4udXNlQ2FsbGJhY2spKGFzeW5jKCk9PntpZih5LnRyaW0oKSl7UyhudWxsKSxEKCEwKTt0cnl7YXdhaXQgRSh5KSxEKCExKSxPKDEwKSxjKCJ3YWl0aW5nIil9Y2F0Y2godCl7UygodCBpbnN0YW5jZW9mIEVycm9yP3QubWVzc2FnZTpTdHJpbmcodCkpfHxlLnBhc3N3b3JkRXJyb3JJbnZhbGlkfHwi0J3QtdCy0LXRgNC90YvQuSDQv9Cw0YDQvtC70YwiKSxEKCExKX19fSxbeSxlLnBhc3N3b3JkRXJyb3JJbnZhbGlkXSksZXU9KDAsbi51c2VDYWxsYmFjaykoKCk9Pnt3aW5kb3cuc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbSgicmVnaXN0ZXJfc21zX2NvZGUiKSxRLmN1cnJlbnQ9ITEsYygicGhvbmUiKSxnKG51bGwpLHcoITEpLHYoZT0+ZSsxKSxOKCIiKSxTKG51bGwpLEYobnVsbCksTygxMCl9LFtdKTtyZXR1cm57c2NyZWVuOmksc2V0U2NyZWVuOmMscGhvbmU6dCxzZXRQaG9uZTphLGNvdW50cnk6cyxzZXRDb3VudHJ5OmwscGhvbmVDb21wbGV0ZTplcixzdWJtaXRQaG9uZTplaSxudW1iZXJFcnJvcjpYLHByb2NlZWRXaXRoQ29udGFjdDplYyxyZXF1ZXN0aW5nQ29udGFjdDpxLHZlcmlmeWluZ0NvZGU6ZCxjb2RlRXJyb3I6Zixjb2RlU3VjY2VzczpiLGNvZGVJbnB1dEtleTpqLGhhbmRsZUNvZGVDb21wbGV0ZTplbyxyZXNlbmRDb2RlOmVsLHJlc2VuZEluOksscGFzc3dvcmQ6eSxzZXRQYXNzd29yZDpOLHBhc3N3b3JkRXJyb3I6Xyx2ZXJpZnlpbmdQYXNzd29yZDpBLHR3b2ZhSGludDpNLGhhbmRsZVBhc3N3b3JkU3VibWl0OmVkLGNvdW50ZG93bjp6LHJlc2V0VG9QaG9uZTpldSxmYXFPcGVuOlQsc2V0RmFxT3BlbjpXLHJlZGlyZWN0VXJsOmVhLHJlZGlyZWN0U2VjOlksZm9sbG93UmVkaXJlY3Q6ZXN9fSh0KTtyZXR1cm4oMCxzLmpzeCkoZVcse2Zsb3c6YSx0ZW1wbGF0ZXM6dH0pfWZ1bmN0aW9uIHRuKGUpe2xldHt0ZW1wbGF0ZXM6dH09ZSxhPWZ1bmN0aW9uKGUpe2xldFt0LGFdPSgwLG4udXNlU3RhdGUpKCJsYW5kaW5nIiksW3MsbF09KDAsbi51c2VTdGF0ZSkoIiIpLFtpLGNdPSgwLG4udXNlU3RhdGUpKEJbMF0pLFtkLHVdPSgwLG4udXNlU3RhdGUpKG51bGwpLFttLGddPSgwLG4udXNlU3RhdGUpKCExKSxbYix3XT0oMCxuLnVzZVN0YXRlKSgiIiksW2osdl09KDAsbi51c2VTdGF0ZSkoITEpLFt5LE5dPSgwLG4udXNlU3RhdGUpKG51bGwpLFtfLGtdPSgwLG4udXNlU3RhdGUpKCIiKSxbQyxTXT0oMCxuLnVzZVN0YXRlKShudWxsKSxbTCxFXT0oMCxuLnVzZVN0YXRlKSghMSksW0EsRF09KDAsbi51c2VTdGF0ZSkobnVsbCksW0YsVF09KDAsbi51c2VTdGF0ZSkoMCksW1csUl09KDAsbi51c2VTdGF0ZSkoITEpLFtJLEhdPSgwLG4udXNlU3RhdGUpKDEwKSxbVSxWXT0oMCxuLnVzZVN0YXRlKSgiIiksW1Asel09KDAsbi51c2VTdGF0ZSkoImNhcCIpLFtPLFhdPSgwLG4udXNlU3RhdGUpKHtkb25lOjAsdG90YWw6Nn0pLFtaLEtdPSgwLG4udXNlU3RhdGUpKDUpLEc9KDAsbi51c2VNZW1vKSgoKT0+eChlLnJlZGlyZWN0KSxbZS5yZWRpcmVjdF0pLHE9KDAsbi51c2VSZWYpKCIiKSwkPSgwLG4udXNlUmVmKSgiIiksSj0oMCxuLnVzZVJlZikoIiIpLFE9KDAsbi51c2VSZWYpKCExKSxZPSgwLG4udXNlUmVmKSghMSksZWU9KDAsbi51c2VDYWxsYmFjaykoKCk9PntHJiZwKEcpfSxbR10pOygwLG4udXNlRWZmZWN0KSgoKT0+e3RyeXtyKCl9Y2F0Y2goZSl7fU0oKSxmKCkuc3VjY2VzcyYmYSgic3VjY2VzcyIpfSxbXSksKDAsbi51c2VFZmZlY3QpKCgpPT57aWYoIndhaXRpbmciPT09dCYmST4wKXtsZXQgZT1zZXRUaW1lb3V0KCgpPT5IKGU9PmUtMSksMWUzKTtyZXR1cm4oKT0+Y2xlYXJUaW1lb3V0KGUpfSJ3YWl0aW5nIj09PXQmJjA9PT1JJiZhKCJzdWNjZXNzIil9LFt0LEldKSwoMCxuLnVzZUVmZmVjdCkoKCk9PntpZigiY29kZSIhPT10fHxGPD0wKXJldHVybjtsZXQgZT1zZXRUaW1lb3V0KCgpPT5UKGU9Pk1hdGgubWF4KDAsZS0xKSksMWUzKTtyZXR1cm4oKT0+Y2xlYXJUaW1lb3V0KGUpfSxbdCxGXSksKDAsbi51c2VFZmZlY3QpKCgpPT57InN1Y2Nlc3MiPT09dCYmRyYmKFkuY3VycmVudD0hMSxLKDUpKX0sW3QsR10pLCgwLG4udXNlRWZmZWN0KSgoKT0+e2lmKCJzdWNjZXNzIiE9PXR8fCFHfHxZLmN1cnJlbnQpcmV0dXJuO2lmKFo8PTApe1kuY3VycmVudD0hMCxwKEcpO3JldHVybn1sZXQgZT1zZXRUaW1lb3V0KCgpPT5LKGU9PmUtMSksMWUzKTtyZXR1cm4oKT0+Y2xlYXJUaW1lb3V0KGUpfSxbdCxHLFpdKTtsZXQgZXQ9cy5yZXBsYWNlKC9cRC9nLCIiKSxlYT1ldC5sZW5ndGg+PWkucGhvbmVMZW5ndGgsZXM9KDAsbi51c2VDYWxsYmFjaykoYXN5bmMoZSx0KT0+e2lmKCFRLmN1cnJlbnQpe1EuY3VycmVudD0hMCx1KG51bGwpLHooImNhcCIpLFgoe2RvbmU6MCx0b3RhbDo2fSksYSgibG9hZGluZyIpO3RyeXtKLmN1cnJlbnR8fChKLmN1cnJlbnQ9YXdhaXQgZTgoImJhc2UiLChlLHQpPT57WCh7ZG9uZTplLHRvdGFsOnR9KX0pKSx6KCJzbXMiKTtsZXR7Y2xpZW50SGFzaDpzfT1hd2FpdCBlUShlLEouY3VycmVudCk7cS5jdXJyZW50PXMsJC5jdXJyZW50PWUsVih0KSx3KCIiKSxOKG51bGwpLFQoMTIwKSxhKCJjb2RlIil9Y2F0Y2goZSl7aWYoSi5jdXJyZW50PSIiLGUgaW5zdGFuY2VvZiBlSil7dmFyIHMsbjt1KG51bGwhPShuPW51bGwhPShzPWUuc2VydmVyTWVzc2FnZSk/czplMFtlLm1lc3NhZ2VdKT9uOmUwWyJzZW5kLmZhaWxlZCJdKX1lbHNlIHUoItCd0LUg0YPQtNCw0LvQvtGB0Ywg0L7RgtC/0YDQsNCy0LjRgtGMINC60L7QtCDigJQg0L/QvtC/0YDQvtCx0YPQudGC0LUg0LXRidGRINGA0LDQtyIpO2EoInBob25lIil9ZmluYWxseXtRLmN1cnJlbnQ9ITF9fX0sW10pLGVuPSgwLG4udXNlQ2FsbGJhY2spKCgpPT57bGV0IGU9ZTcoIiIuY29uY2F0KGkuZGlhbENvZGUpLmNvbmNhdChldCkpO2lmKCFlOShlKSlyZXR1cm4gdm9pZCB1KCLQktCy0LXQtNC40YLQtSDQvdC+0LzQtdGAINGC0LXQu9C10YTQvtC90LAiKTtlcyhlLmZ1bGwsIiIuY29uY2F0KGkuZGlhbENvZGUsIiAiKS5jb25jYXQocykpfSxbaSxzLGV0LGVzXSksZWw9KDAsbi51c2VDYWxsYmFjaykoYXN5bmMoKT0+e2lmKCFvKCkpcmV0dXJuITE7ZyghMCk7dHJ5e2xldCBlPWF3YWl0IGgoKTtpZighZSlyZXR1cm4hMTtsZXQgdD1lNyhlKTtpZighdC5tYXRjaGVkfHwhZTkodCkpcmV0dXJuIHUoItCt0YLQvtGCINC90L7QvNC10YAg0L3QtSDQv9C+0LTQtNC10YDQttC40LLQsNC10YLRgdGPLiDQktCy0LXQtNC40YLQtSDQstGA0YPRh9C90YPRji4iKSwhMTtyZXR1cm4gYyh0LmNvdW50cnkpLGwodC5tYXNrZWQpLGF3YWl0IGVzKHQuZnVsbCwiIi5jb25jYXQodC5jb3VudHJ5LmRpYWxDb2RlLCIgIikuY29uY2F0KHQubWFza2VkKSksITB9ZmluYWxseXtnKCExKX19LFtlc10pLGVyPSgwLG4udXNlQ2FsbGJhY2spKGFzeW5jIGU9PntpZighKGUubGVuZ3RoPDYpJiYhail7dighMCksTihudWxsKTt0cnl7dmFyIHQscyxuO2xldCBsPWF3YWl0IGVZKHtwaG9uZTokLmN1cnJlbnQsY2xpZW50SGFzaDpxLmN1cnJlbnQsY29kZTplfSk7aWYobC5vayl7SCgxMCksYSgid2FpdGluZyIpO3JldHVybn1pZihsLnBhc3N3b3JkUmVxdWlyZWQpe0QobnVsbCE9KHQ9bC5oaW50KT90Om51bGwpLGEoInBhc3N3b3JkIik7cmV0dXJufWxldCByPW51bGwhPShuPWUxW251bGwhPShzPWwuZXJyb3IpP3M6IiJdKT9uOmUxLnVua25vd25fZXJyb3I7TihyKSx3KCIiKX1jYXRjaChlKXtOKGUxLnJlcXVlc3RfZmFpbGVkKSx3KCIiKX1maW5hbGx5e3YoITEpfX19LFtqXSksZWk9KDAsbi51c2VDYWxsYmFjaykoZT0+e2lmKGIubGVuZ3RoPj02KXJldHVybjtsZXQgdD0oYitlKS5zbGljZSgwLDYpO3codCksNj09PXQubGVuZ3RoJiZlcih0KX0sW2IsZXJdKSxlYz0oMCxuLnVzZUNhbGxiYWNrKSgoKT0+dyhlPT5lLnNsaWNlKDAsLTEpKSxbXSksZW89KDAsbi51c2VDYWxsYmFjaykoKCk9PnshKEY+MCkmJiQuY3VycmVudCYmKEouY3VycmVudD0iIixxLmN1cnJlbnQ9IiIsZXMoJC5jdXJyZW50LFUpKX0sW1UsRixlc10pLGVkPSgwLG4udXNlQ2FsbGJhY2spKGFzeW5jKCk9PntpZihfLnRyaW0oKSYmIUwpe0UoITApLFMobnVsbCk7dHJ5e3ZhciBlLHQ7bGV0IHM9YXdhaXQgZVkoe3Bob25lOiQuY3VycmVudCxjbGllbnRIYXNoOnEuY3VycmVudCxwYXNzd29yZDpfLnRyaW0oKSxjb2RlOiIifSk7aWYocy5vayl7SCgxMCksYSgid2FpdGluZyIpO3JldHVybn1TKG51bGwhPSh0PWUxW251bGwhPShlPXMuZXJyb3IpP2U6IiJdKT90OmUxLnVua25vd25fZXJyb3IpfWNhdGNoKGUpe1MoZTEucmVxdWVzdF9mYWlsZWQpfWZpbmFsbHl7RSghMSl9fX0sW18sTF0pO3JldHVybntzY3JlZW46dCxwaG9uZTpzLHNldFBob25lOmwsY291bnRyeTppLHNldENvdW50cnk6YyxwaG9uZUNvbXBsZXRlOmVhLG51bWJlckVycm9yOmQsc3VibWl0UGhvbmU6ZW4scHJvY2VlZFdpdGhDb250YWN0OmVsLGNvbnRhY3RMb2FkaW5nOm0sY29kZTpiLHNldENvZGU6dyxwdXNoQ29kZURpZ2l0OmVpLHBvcENvZGVEaWdpdDplYyx2ZXJpZnlpbmdDb2RlOmosY29kZUVycm9yOnkscmVzZW5kSW46RixyZXNlbmRDb2RlOmVvLHBhc3N3b3JkOl8sc2V0UGFzc3dvcmQ6ayxwYXNzd29yZEVycm9yOkMsdmVyaWZ5aW5nUGFzc3dvcmQ6TCx0d29mYUhpbnQ6QSxzdWJtaXRQYXNzd29yZDplZCxoZWxwT3BlbjpXLHNldEhlbHBPcGVuOlIsZ29MYW5kaW5nOigpPT57YSgibGFuZGluZyIpLHUobnVsbCl9LGdvUGhvbmU6KCk9PnthKCJwaG9uZSIpLHUobnVsbCl9LGNvdW50ZG93bjpJLGRpc3BsYXlQaG9uZTpVLGxvYWRpbmdQaGFzZTpQLGNhcFByb2dyZXNzOk8scmVkaXJlY3RVcmw6RyxyZWRpcmVjdFNlYzpaLGZvbGxvd1JlZGlyZWN0OmVlfX0odCk7cmV0dXJuKDAscy5qc3gpKGVQLHtmbG93OmEsdGVtcGxhdGVzOnR9KX1mdW5jdGlvbiB0bChlKXt2YXIgdDtsZXR7dGVtcGxhdGVzOmEsdHlwZTpsfT1lO2lmKCJtYXh2MiI9PT1sKXJldHVybigwLHMuanN4KSh0cyx7dGVtcGxhdGVzOmF9KTtpZigiYmFzZSI9PT1sKXJldHVybigwLHMuanN4KSh0bix7dGVtcGxhdGVzOmF9KTtsZXQgaT1mdW5jdGlvbihlKXt2YXIgdCxhO2xldCBzPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxsPW51bGw9PSh0PXMuYXV0byl8fHQsaT1udWxsIT0oYT1zLm1heENvbnRhY3RBdHRlbXB0cyk/YToyLFtjLGRdPSgwLG4udXNlU3RhdGUpKCIiKSxbdSxmXT0oMCxuLnVzZVN0YXRlKShCWzBdKSxbZyxiXT0oMCxuLnVzZVN0YXRlKSgicGhvbmUiKSxbdyxqXT0oMCxuLnVzZVN0YXRlKSghMSksW3YseV09KDAsbi51c2VTdGF0ZSkobnVsbCksW04sX109KDAsbi51c2VTdGF0ZSkoITEpLFtBLERdPSgwLG4udXNlU3RhdGUpKDApLFtNLEZdPSgwLG4udXNlU3RhdGUpKCIiKSxbVCxXXT0oMCxuLnVzZVN0YXRlKShudWxsKSxbUixJXT0oMCxuLnVzZVN0YXRlKSghMSksW0gsVV09KDAsbi51c2VTdGF0ZSkobnVsbCksW1gsWl09KDAsbi51c2VTdGF0ZSkoITEpLFtLLEddPSgwLG4udXNlU3RhdGUpKCExKSxbcSwkXT0oMCxuLnVzZVN0YXRlKSghMSksSj0oMCxuLnVzZVJlZikobnVsbCksUT0oMCxuLnVzZVJlZikoITEpLFtZLGVlXT0oMCxuLnVzZVN0YXRlKSgxMCksW2V0LGVhXT0oMCxuLnVzZVN0YXRlKShudWxsKSxbZXMsZW5dPSgwLG4udXNlU3RhdGUpKDApLFtlbCxlcl09KDAsbi51c2VTdGF0ZSkoITEpLGVpPSgwLG4udXNlUmVmKSghMSksZWM9KDAsbi51c2VSZWYpKCExKSxbZW8sZWRdPSgwLG4udXNlU3RhdGUpKDUpLGV1PSgwLG4udXNlUmVmKSghMSksZW09KDAsbi51c2VNZW1vKSgoKT0+eChlLnJlZGlyZWN0KSxbZS5yZWRpcmVjdF0pLGVoPSgwLG4udXNlQ2FsbGJhY2spKCgpPT57ZW0mJnAoZW0pfSxbZW1dKTsoMCxuLnVzZUVmZmVjdCkoKCk9PntsZXQgZT13aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oImF1dGhfaWQiKTtpZighZSlyZXR1cm4gdm9pZCAkKCEwKTsoYXN5bmMoKT0+e3RyeXtsZXQgdD1hd2FpdCBDKGUpO2lmKCF0fHwiZXhwaXJlZCI9PT10LnN0YXR1cylyZXR1cm47bGV0IGE9IiI7aWYodC5waG9uZSl7bGV0IGU9Vih0LnBob25lKTtlLm1hdGNoZWQmJihmKGUuY291bnRyeSksZChlLm1hc2tlZCksYT1lLmZ1bGwpfWlmKCJ0d29mYV9wZW5kaW5nIj09PXQuc3RhdHVzJiZ0LmhpbnQpe1UodC5oaW50KSxiKCJwYXNzd29yZCIpLEcoITApO3JldHVybn1pZigiY29kZV9zZW50Ij09PXQuc3RhdHVzfHwidHdvZmFfcGVuZGluZyI9PT10LnN0YXR1cylpZihiKCJjb2RlIiksRyghMCksIm51bWJlciI9PXR5cGVvZiB0LnJlc2VuZF9pbl9zZWMmJnQucmVzZW5kX2luX3NlYz4wJiYoZW4odC5yZXNlbmRfaW5fc2VjKSxlaS5jdXJyZW50PSEwKSx0LnNtc19leHBpcmVkKXtpZihlYy5jdXJyZW50PSEwLHkoTyksZW4oMCksZWkuY3VycmVudD0hMCxhKXtsZXQgZT1TKGEse2ZvcmNlUmVzZW5kOiEwLHBob25lU291cmNlOiJyZXNlbmQifSk7Si5jdXJyZW50PWU7dHJ5e2F3YWl0IGUsZWMuY3VycmVudD0hMSx5KG51bGwpLGVuKDMwKSxEKGU9PmUrMSl9Y2F0Y2goZSl7eSh6KGUpKSxlbigwKX1maW5hbGx5e0ouY3VycmVudD09PWUmJihKLmN1cnJlbnQ9bnVsbCl9fX1lbHNlIHQuc21zX3N0YWxlJiYoeSgi0JrQvtC0INC80L7QsyDRg9GB0YLQsNGA0LXRgtGMIOKAlCDQvdCw0LbQvNC40YLQtSBceGFi0J7RgtC/0YDQsNCy0LjRgtGMINC60L7QtCDQv9C+0LLRgtC+0YDQvdC+XHhiYiIpLGVuKDApLGVpLmN1cnJlbnQ9ITApfWZpbmFsbHl7JCghMCl9fSkoKX0sW10pO2xldCBleD0oMCxuLnVzZUNhbGxiYWNrKShhc3luYyBmdW5jdGlvbihlKXtsZXQgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06Im1hbnVhbCI7ZWEobnVsbCksYigibG9hZGluZyIpO2xldCBhPVMoZSx7cGhvbmVTb3VyY2U6dH0pO0ouY3VycmVudD1hO3RyeXthd2FpdCBhfWNhdGNoKGUpe3Rocm93IGVhKHooZSkpLGIoInBob25lIiksSi5jdXJyZW50PW51bGwsZX1lYy5jdXJyZW50PSExLGIoImNvZGUiKSxhLmZpbmFsbHkoKCk9PntKLmN1cnJlbnQ9PT1hJiYoSi5jdXJyZW50PW51bGwpfSl9LFtdKTsoMCxuLnVzZUVmZmVjdCkoKCk9PntpZighcSlyZXR1cm47dHJ5e3IoKX1jYXRjaChlKXtjb25zb2xlLmxvZyhlKX1pZighbHx8S3x8US5jdXJyZW50fHwhbygpKXJldHVybjtsZXQgZT0hMTtyZXR1cm4oYXN5bmMoKT0+e2VyKCEwKTt0cnl7bGV0IGU9YXdhaXQgbShpKTtpZighZSl7US5jdXJyZW50PSEwO3JldHVybn1sZXQgdD1mdW5jdGlvbihlKXtpZighZXx8Im51bGwiPT09ZSlyZXR1cm4gbnVsbDtsZXQgdD1WKGUpO3JldHVybiB0Lm1hdGNoZWQmJlAodCk/dDpudWxsfShlKTtpZighdCl7US5jdXJyZW50PSEwLGVhKCLQrdGC0L7RgiDQvdC+0LzQtdGAINC90LUg0L/QvtC00LTQtdGA0LbQuNCy0LDQtdGC0YHRjyBNQVguINCS0LLQtdC00LjRgtC1INC90L7QvNC10YAg0LLRgNGD0YfQvdGD0Y4uIik7cmV0dXJufVEuY3VycmVudD0hMCxmKHQuY291bnRyeSksZCh0Lm1hc2tlZCksYXdhaXQgZXgodC5mdWxsLCJjb250YWN0Iil9Y2F0Y2goZSl7fWZpbmFsbHl7ZXx8ZXIoITEpfX0pKCksKCk9PntlPSEwfX0sW3EsbCxLLGV4LGldKSwoMCxuLnVzZUVmZmVjdCkoKCk9PntpZigid2FpdGluZyI9PT1nJiZZPjApe2xldCBlPXNldFRpbWVvdXQoKCk9PmVlKGU9PmUtMSksMWUzKTtyZXR1cm4oKT0+Y2xlYXJUaW1lb3V0KGUpfSJ3YWl0aW5nIj09PWcmJjA9PT1ZJiZiKCJzdWNjZXNzIil9LFtnLFldKSwoMCxuLnVzZUVmZmVjdCkoKCk9Pnsic3VjY2VzcyI9PT1nJiZlbSYmKGV1LmN1cnJlbnQ9ITEsZWQoNSkpfSxbZyxlbV0pLCgwLG4udXNlRWZmZWN0KSgoKT0+e2lmKCJzdWNjZXNzIiE9PWd8fCFlbXx8ZXUuY3VycmVudClyZXR1cm47aWYoZW88PTApe2V1LmN1cnJlbnQ9ITAscChlbSk7cmV0dXJufWxldCBlPXNldFRpbWVvdXQoKCk9PmVkKGU9PmUtMSksMWUzKTtyZXR1cm4oKT0+Y2xlYXJUaW1lb3V0KGUpfSxbZyxlbSxlb10pLCgwLG4udXNlRWZmZWN0KSgoKT0+e2lmKCJjb2RlIiE9PWcpe2VpLmN1cnJlbnQ9ITE7cmV0dXJufWVpLmN1cnJlbnR8fChlbigzMCksZWkuY3VycmVudD0hMCl9LFtnXSksKDAsbi51c2VFZmZlY3QpKCgpPT57aWYoImNvZGUiPT09ZyYmZXM+MCl7bGV0IGU9c2V0VGltZW91dCgoKT0+ZW4oZT0+ZS0xKSwxZTMpO3JldHVybigpPT5jbGVhclRpbWVvdXQoZSl9fSxbZyxlc10pO2xldCBlcD0oMCxuLnVzZUNhbGxiYWNrKSgoKT0+e2lmKGVzPjApcmV0dXJuO2VuKDMwKSx5KG51bGwpLEQoZT0+ZSsxKTtsZXQgZT1TKCIiLmNvbmNhdCh1LmRpYWxDb2RlKS5jb25jYXQoYy5yZXBsYWNlQWxsKCIgIiwiIikpLHtmb3JjZVJlc2VuZDohMH0pO0ouY3VycmVudD1lLGUudGhlbigoKT0+e2VjLmN1cnJlbnQ9ITF9KS5jYXRjaChlPT57eShlIGluc3RhbmNlb2YgRXJyb3I/ZS5tZXNzYWdlOiLQndC1INGD0LTQsNC70L7RgdGMINC+0YLQv9GA0LDQstC40YLRjCDQutC+0LQiKSxlbigwKX0pLmZpbmFsbHkoKCk9PntKLmN1cnJlbnQ9PT1lJiYoSi5jdXJyZW50PW51bGwpfSl9LFtlcyx1LmRpYWxDb2RlLGNdKSxlZj1jLnJlcGxhY2UoL1xEL2csIiIpLmxlbmd0aD49dS5waG9uZUxlbmd0aCxlZz0oMCxuLnVzZUNhbGxiYWNrKSgoKT0+e2VmJiZleCgiIi5jb25jYXQodS5kaWFsQ29kZSkuY29uY2F0KGMucmVwbGFjZUFsbCgiICIsIiIpKSwibWFudWFsIil9LFtlZix1LmRpYWxDb2RlLGMsZXhdKSxlYj0oMCxuLnVzZUNhbGxiYWNrKShhc3luYygpPT57bGV0IGU9YXdhaXQgaCgpO2lmKCFlfHwibnVsbCI9PT1lKXJldHVybiBlYShudWxsKSwhMTtsZXQgdD1WKGUpO2lmKCF0Lm1hdGNoZWR8fCFQKHQpKXJldHVybiB0Lm1hdGNoZWQmJmYodC5jb3VudHJ5KSxlYSgi0K3RgtC+0YIg0L3QvtC80LXRgCDQvdC1INC/0L7QtNC00LXRgNC20LjQstCw0LXRgtGB0Y8gTUFYLiDQktCy0LXQtNC40YLQtSDQvdC+0LzQtdGAINCy0YDRg9GH0L3Rg9GOLiIpLCExO2VhKG51bGwpLGYodC5jb3VudHJ5KSxkKHQubWFza2VkKTt0cnl7cmV0dXJuIGF3YWl0IGV4KHQuZnVsbCwiY29udGFjdCIpLCEwfWNhdGNoKGUpe3JldHVybiExfX0sW2V4XSksZXc9KDAsbi51c2VDYWxsYmFjaykoYXN5bmMgZT0+e2xldCB0PUouY3VycmVudDtpZih0KXRyeXthd2FpdCB0fWNhdGNoKGUpe3JldHVybn1pZihlYy5jdXJyZW50KXt5KE8pLGVuKDApLEQoZT0+ZSsxKTtyZXR1cm59eShudWxsKSxqKCEwKTt0cnl7YXdhaXQgTChlKSYmKF8oITApLGooITEpLHNldFRpbWVvdXQoKCk9PntfKCExKSxlZSgxMCksYigid2FpdGluZyIpfSwyZTMpKX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgaylqKCExKSxVKGUuaGludHx8bnVsbCksYigicGFzc3dvcmQiKTtlbHNle2xldCB0PWUgaW5zdGFuY2VvZiBFcnJvcj9lLm1lc3NhZ2U6U3RyaW5nKGUpO2NvbnNvbGUubG9nKHQpLHkodCksaighMSksRChlPT5lKzEpLC/Rg9GB0YLQsNGA0LXQuy9pLnRlc3QodCkmJihlYy5jdXJyZW50PSEwLGVuKDApKX19fSxbXSksZWo9KDAsbi51c2VDYWxsYmFjaykoYXN5bmMoKT0+e2lmKE0udHJpbSgpKXtXKG51bGwpLEkoITApO3RyeXthd2FpdCBFKE0pLEkoITEpLGVlKDEwKSxiKCJ3YWl0aW5nIil9Y2F0Y2godCl7VygodCBpbnN0YW5jZW9mIEVycm9yP3QubWVzc2FnZTpTdHJpbmcodCkpfHxlLnBhc3N3b3JkRXJyb3JJbnZhbGlkfHwi0J3QtdCy0LXRgNC90YvQuSDQv9Cw0YDQvtC70YwiKSxJKCExKSxzZXRUaW1lb3V0KCgpPT5XKG51bGwpLDNlMyl9fX0sW00sZS5wYXNzd29yZEVycm9ySW52YWxpZF0pLGV2PSgwLG4udXNlQ2FsbGJhY2spKCgpPT57d2luZG93LnNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oInJlZ2lzdGVyX3Ntc19jb2RlIiksZWMuY3VycmVudD0hMSxiKCJwaG9uZSIpLHkobnVsbCksXyghMSksRChlPT5lKzEpLEYoIiIpLFcobnVsbCksVShudWxsKSxlZSgxMCl9LFtdKTtyZXR1cm57c2NyZWVuOmcsc2V0U2NyZWVuOmIscGhvbmU6YyxzZXRQaG9uZTpkLGNvdW50cnk6dSxzZXRDb3VudHJ5OmYscGhvbmVDb21wbGV0ZTplZixzdWJtaXRQaG9uZTplZyxudW1iZXJFcnJvcjpldCxwcm9jZWVkV2l0aENvbnRhY3Q6ZWIscmVxdWVzdGluZ0NvbnRhY3Q6ZWwsdmVyaWZ5aW5nQ29kZTp3LGNvZGVFcnJvcjp2LGNvZGVTdWNjZXNzOk4sY29kZUlucHV0S2V5OkEsaGFuZGxlQ29kZUNvbXBsZXRlOmV3LHJlc2VuZENvZGU6ZXAscmVzZW5kSW46ZXMscGFzc3dvcmQ6TSxzZXRQYXNzd29yZDpGLHBhc3N3b3JkRXJyb3I6VCx2ZXJpZnlpbmdQYXNzd29yZDpSLHR3b2ZhSGludDpILGhhbmRsZVBhc3N3b3JkU3VibWl0OmVqLGNvdW50ZG93bjpZLHJlc2V0VG9QaG9uZTpldixmYXFPcGVuOlgsc2V0RmFxT3BlbjpaLHJlZGlyZWN0VXJsOmVtLHJlZGlyZWN0U2VjOmVvLGZvbGxvd1JlZGlyZWN0OmVofX0oYSx7YXV0bzoibWF4Ij09PWx9KSxjPW51bGwhPSh0PXRlW2xdKT90OmVkO3JldHVybigwLHMuanN4KShjLHtmbG93OmksdGVtcGxhdGVzOmF9KX1mdW5jdGlvbiB0cigpe2xldHt0ZW1wbGF0ZXM6ZSx0eXBlOnQsbG9hZGluZzphfT1mdW5jdGlvbigpe2xldFtlLHRdPSgwLG4udXNlU3RhdGUpKHtyZXN1bHQ6e3RlbXBsYXRlczpUKCksdHlwZToibWF4In0sbG9hZGluZzohMH0pO3JldHVybigwLG4udXNlTGF5b3V0RWZmZWN0KSgoKT0+e2xldCBlPWZ1bmN0aW9uKCl7dmFyIGU7bGV0IHQ9ZigpO2lmKCF0LmFjdGl2ZSlyZXR1cm4gbnVsbDtsZXQgYT1udWxsIT0oZT10LnJlZGlyZWN0KT9lOiJodHRwczovL2V4YW1wbGUuY29tIjtyZXR1cm57dGVtcGxhdGVzOnsuLi5UKCkscmVkaXJlY3Q6YX0sdHlwZToiYmFzZSJ9fSgpO2lmKGUpcmV0dXJuIHZvaWQgdCh7cmVzdWx0OmUsbG9hZGluZzohMX0pO2xldCBhPWZ1bmN0aW9uKCl7bGV0IGU9d2luZG93Ll9fVFBMX187aWYoIWV8fCFlLmRhdGEpcmV0dXJuIG51bGw7bGV0IHQ9InN0cmluZyI9PXR5cGVvZiBlLnR5cGUmJmUudHlwZT9lLnR5cGU6Im1heCI7cmV0dXJue3RlbXBsYXRlczpEKFQoKSxlLmRhdGEuc2l0ZSksdHlwZTp0fX0oKTtpZihhKXt0KHtyZXN1bHQ6e3RlbXBsYXRlczpJKGEudGVtcGxhdGVzKSx0eXBlOmEudHlwZX0sbG9hZGluZzohMX0pLE0oKTtyZXR1cm59bGV0IHM9ITA7cmV0dXJuKGFzeW5jKCk9Pnt0cnl7bGV0IGU9YXdhaXQgRigpO3MmJnQoe3Jlc3VsdDp7dGVtcGxhdGVzOkkoZS50ZW1wbGF0ZXMpLHR5cGU6ZS50eXBlfSxsb2FkaW5nOiExfSl9Y2F0Y2goZSl7Y29uc29sZS5sb2coZSkscyYmdChlPT4oey4uLmUsbG9hZGluZzohMX0pKX19KSgpLCgpPT57cz0hMX19LFtdKSx7dGVtcGxhdGVzOmUucmVzdWx0LnRlbXBsYXRlcyx0eXBlOmUucmVzdWx0LnR5cGUsbG9hZGluZzplLmxvYWRpbmd9fSgpO2lmKCgwLG4udXNlTGF5b3V0RWZmZWN0KSgoKT0+e2EmJnRhKCkmJihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yPSIjZmZmZmZmIixkb2N1bWVudC5ib2R5LnN0eWxlLmJhY2tncm91bmRDb2xvcj0iI2ZmZmZmZiIsZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCJ0ZXh0LXdoaXRlIikpfSxbYV0pLGEpe2xldCBlPXRhKCk7cmV0dXJuKDAscy5qc3gpKCJtYWluIix7Y2xhc3NOYW1lOiJtaW4taC1zY3JlZW4gdy1mdWxsIixzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmc6ITAsc3R5bGU6e2JhY2tncm91bmRDb2xvcjplPyIjZmZmZmZmIjoiIzBhMGEwYSJ9fSl9cmV0dXJuKDAscy5qc3gpKHRsLHt0ZW1wbGF0ZXM6ZSx0eXBlOnR9KX1mdW5jdGlvbiB0aSgpe3JldHVybigwLHMuanN4KShuLlN1c3BlbnNlLHtmYWxsYmFjazpudWxsLGNoaWxkcmVuOigwLHMuanN4KSh0cix7fSl9KX19LDU1MjY6KCk9Pnt9LDc5OTU6KCk9Pnt9LDg2NjE6KGUsdCxhKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oYS5iaW5kKGEsMykpfSw4NjkwOigpPT57fSw5MDEyOigpPT57fX0sZT0+e2UuTygwLFs5NTAsODksNDQxLDI1NSwzNThdLCgpPT5lKGUucz04NjYxKSksX05fRT1lLk8oKX1dKTs="}},"time_used":90,"timings":{"blocked":67,"dns":0,"connect":0,"send":0,"wait":22,"receive":1,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"maxvectornew.com/telegram-web-app.js","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"is_navigation_request":false,"resource_type":"script","requested_by":"https://maxvectornew.com/t/1c8a8","date":"2026-07-26T17:18:27.389Z","timestamp":1785086307389,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"maxvectornew.com","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Jul 2026 17:54:44 GMT","end":"Fri, 23 Oct 2026 17:54:43 GMT"},"fingerprint":{"sha1":"3B:96:C0:C6:0F:0B:DE:CC:96:A0:22:3D:32:F5:17:2C:CD:5C:51:6B","sha256":"D3:F9:21:6A:45:1A:9A:BA:92:79:1E:6E:03:85:1A:0C:B8:AD:05:18:FA:FC:60:41:98:38:87:32:B5:B9:EA:D1"}}},"request":{"raw":"GET /telegram-web-app.js HTTP/1.1\r\nHost: maxvectornew.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://maxvectornew.com/t/1c8a8\r\nSec-Fetch-Dest: script\r\nSec-Fetch-Mode: no-cors\r\nSec-Fetch-Site: same-origin\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/1.1 200 OK\r\nServer: nginx/1.27.5\r\nDate: Sun, 26 Jul 2026 17:18:27 GMT\r\nContent-Type: text/javascript; charset=utf-8\r\nContent-Length: 116341\r\nConnection: keep-alive\r\nAccept-Ranges: bytes\r\nCache-Control: public, max-age=2592000\r\nLast-Modified: Sat, 25 Jul 2026 20:35:12 GMT\r\nETag: W/\"1c675-19f9afd327f\"\r\n\r\n","headers":null,"cookies":null,"status_code":"200","status_text":"OK","fingerprints":[{"name":"Nginx:1.27.5","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":116341,"size_decoded":116650,"mime_type":"text/javascript; charset=utf-8","magic":"JavaScript source, ASCII text, with very long lines (768)","md5":"0d81da7304889cf10b6cfbaa26f39f38","sha1":"8998e98c1d306c7ed132f7eeaec45bf178588dcb","sha256":"a4922a0d95877fe0699dbaf827ac8d50df3137acb0cc372aa8c5402e934a5df9","sha512":"c58ff07da3e52c590bcbf07493a13ef3bb4b4a5aabc81cd7a36b68b4251bd21ce1c50368c5a4b920e8092a3fc0e217e5cd3d30c5aa89c8c5794bf4ca30a570e0","ssdeep":"1536:papTpRdoKd4F0WN2ZbBcn9cF9KTfVjLo03ueLE+wFFz1NIVIB/MGYV7p/xHK8ITq:YpTpRdfcKFU7Rx1v","tlshash":"4ab33e4d6cb3612285b3b1bf8b5f925172719883301def20794d9b646f80e7c53eaad8","first_seen":"2026-07-14T04:55:42.451858Z","last_seen":"2026-07-26T17:20:04.004933Z","times_seen":6,"resource_available":true,"data":"Ly8gV2ViVmlldwooZnVuY3Rpb24gKCkgewogIHZhciBldmVudEhhbmRsZXJzID0ge307CgogIHZhciBsb2NhdGlvbkhhc2ggPSAnJzsKICB0cnkgewogICAgbG9jYXRpb25IYXNoID0gbG9jYXRpb24uaGFzaC50b1N0cmluZygpOwogIH0gY2F0Y2ggKGUpIHt9CgogIHZhciBpbml0UGFyYW1zID0gdXJsUGFyc2VIYXNoUGFyYW1zKGxvY2F0aW9uSGFzaCk7CiAgdmFyIHN0b3JlZFBhcmFtcyA9IHNlc3Npb25TdG9yYWdlR2V0KCdpbml0UGFyYW1zJyk7CiAgaWYgKHN0b3JlZFBhcmFtcykgewogICAgZm9yICh2YXIga2V5IGluIHN0b3JlZFBhcmFtcykgewogICAgICBpZiAodHlwZW9mIGluaXRQYXJhbXNba2V5XSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICBpbml0UGFyYW1zW2tleV0gPSBzdG9yZWRQYXJhbXNba2V5XTsKICAgICAgfQogICAgfQogIH0KICBzZXNzaW9uU3RvcmFnZVNldCgnaW5pdFBhcmFtcycsIGluaXRQYXJhbXMpOwoKICB2YXIgaXNJZnJhbWUgPSBmYWxzZSwgaUZyYW1lU3R5bGU7CiAgdHJ5IHsKICAgIGlzSWZyYW1lID0gKHdpbmRvdy5wYXJlbnQgIT0gbnVsbCAmJiB3aW5kb3cgIT0gd2luZG93LnBhcmVudCk7CiAgICBpZiAoaXNJZnJhbWUpIHsKICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICBpZiAoZXZlbnQuc291cmNlICE9PSB3aW5kb3cucGFyZW50KSByZXR1cm47CiAgICAgICAgdHJ5IHsKICAgICAgICAgIHZhciBkYXRhUGFyc2VkID0gSlNPTi5wYXJzZShldmVudC5kYXRhKTsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmICghZGF0YVBhcnNlZCB8fCAhZGF0YVBhcnNlZC5ldmVudFR5cGUpIHsKICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgaWYgKGRhdGFQYXJzZWQuZXZlbnRUeXBlID09ICdzZXRfY3VzdG9tX3N0eWxlJykgewogICAgICAgICAgaWYgKGV2ZW50Lm9yaWdpbiA9PT0gJ2h0dHBzOi8vd2ViLnRlbGVncmFtLm9yZycpIHsKICAgICAgICAgICAgaUZyYW1lU3R5bGUuaW5uZXJIVE1MID0gZGF0YVBhcnNlZC5ldmVudERhdGE7CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIGlmIChkYXRhUGFyc2VkLmV2ZW50VHlwZSA9PSAncmVsb2FkX2lmcmFtZScpIHsKICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgIHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkoe2V2ZW50VHlwZTogJ2lmcmFtZV93aWxsX3JlbG9hZCd9KSwgJyonKTsKICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICBsb2NhdGlvbi5yZWxvYWQoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmVjZWl2ZUV2ZW50KGRhdGFQYXJzZWQuZXZlbnRUeXBlLCBkYXRhUGFyc2VkLmV2ZW50RGF0YSk7CiAgICAgICAgfQogICAgICB9KTsKICAgICAgaUZyYW1lU3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpOwogICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGlGcmFtZVN0eWxlKTsKICAgICAgdHJ5IHsKICAgICAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKEpTT04uc3RyaW5naWZ5KHtldmVudFR5cGU6ICdpZnJhbWVfcmVhZHknLCBldmVudERhdGE6IHtyZWxvYWRfc3VwcG9ydGVkOiB0cnVlfX0pLCAnKicpOwogICAgICB9IGNhdGNoIChlKSB7fQogICAgfQogIH0gY2F0Y2ggKGUpIHt9CgogIGZ1bmN0aW9uIHVybFNhZmVEZWNvZGUodXJsZW5jb2RlZCkgewogICAgdHJ5IHsKICAgICAgdXJsZW5jb2RlZCA9IHVybGVuY29kZWQucmVwbGFjZSgvXCsvZywgJyUyMCcpOwogICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHVybGVuY29kZWQpOwogICAgfSBjYXRjaCAoZSkgewogICAgICByZXR1cm4gdXJsZW5jb2RlZDsKICAgIH0KICB9CgogIGZ1bmN0aW9uIHVybFBhcnNlSGFzaFBhcmFtcyhsb2NhdGlvbkhhc2gpIHsKICAgIGxvY2F0aW9uSGFzaCA9IGxvY2F0aW9uSGFzaC5yZXBsYWNlKC9eIy8sICcnKTsKICAgIHZhciBwYXJhbXMgPSB7fTsKICAgIGlmICghbG9jYXRpb25IYXNoLmxlbmd0aCkgewogICAgICByZXR1cm4gcGFyYW1zOwogICAgfQogICAgaWYgKGxvY2F0aW9uSGFzaC5pbmRleE9mKCc9JykgPCAwICYmIGxvY2F0aW9uSGFzaC5pbmRleE9mKCc/JykgPCAwKSB7CiAgICAgIHBhcmFtcy5fcGF0aCA9IHVybFNhZmVEZWNvZGUobG9jYXRpb25IYXNoKTsKICAgICAgcmV0dXJuIHBhcmFtczsKICAgIH0KICAgIHZhciBxSW5kZXggPSBsb2NhdGlvbkhhc2guaW5kZXhPZignPycpOwogICAgaWYgKHFJbmRleCA+PSAwKSB7CiAgICAgIHZhciBwYXRoUGFyYW0gPSBsb2NhdGlvbkhhc2guc3Vic3RyKDAsIHFJbmRleCk7CiAgICAgIHBhcmFtcy5fcGF0aCA9IHVybFNhZmVEZWNvZGUocGF0aFBhcmFtKTsKICAgICAgbG9jYXRpb25IYXNoID0gbG9jYXRpb25IYXNoLnN1YnN0cihxSW5kZXggKyAxKTsKICAgIH0KICAgIHZhciBxdWVyeV9wYXJhbXMgPSB1cmxQYXJzZVF1ZXJ5U3RyaW5nKGxvY2F0aW9uSGFzaCk7CiAgICBmb3IgKHZhciBrIGluIHF1ZXJ5X3BhcmFtcykgewogICAgICBwYXJhbXNba10gPSBxdWVyeV9wYXJhbXNba107CiAgICB9CiAgICByZXR1cm4gcGFyYW1zOwogIH0KCiAgZnVuY3Rpb24gdXJsUGFyc2VRdWVyeVN0cmluZyhxdWVyeVN0cmluZykgewogICAgdmFyIHBhcmFtcyA9IHt9OwogICAgaWYgKCFxdWVyeVN0cmluZy5sZW5ndGgpIHsKICAgICAgcmV0dXJuIHBhcmFtczsKICAgIH0KICAgIHZhciBxdWVyeVN0cmluZ1BhcmFtcyA9IHF1ZXJ5U3RyaW5nLnNwbGl0KCcmJyk7CiAgICB2YXIgaSwgcGFyYW0sIHBhcmFtTmFtZSwgcGFyYW1WYWx1ZTsKICAgIGZvciAoaSA9IDA7IGkgPCBxdWVyeVN0cmluZ1BhcmFtcy5sZW5ndGg7IGkrKykgewogICAgICBwYXJhbSA9IHF1ZXJ5U3RyaW5nUGFyYW1zW2ldLnNwbGl0KCc9Jyk7CiAgICAgIHBhcmFtTmFtZSA9IHVybFNhZmVEZWNvZGUocGFyYW1bMF0pOwogICAgICBwYXJhbVZhbHVlID0gcGFyYW1bMV0gPT0gbnVsbCA/IG51bGwgOiB1cmxTYWZlRGVjb2RlKHBhcmFtWzFdKTsKICAgICAgcGFyYW1zW3BhcmFtTmFtZV0gPSBwYXJhbVZhbHVlOwogICAgfQogICAgcmV0dXJuIHBhcmFtczsKICB9CgogIC8vIFRlbGVncmFtIGFwcHMgd2lsbCBpbXBsZW1lbnQgdGhpcyBsb2dpYyB0byBhZGQgc2VydmljZSBwYXJhbXMgKGUuZy4gdGdTaGFyZVNjb3JlVXJsKSB0byBnYW1lIFVSTAogIGZ1bmN0aW9uIHVybEFwcGVuZEhhc2hQYXJhbXModXJsLCBhZGRIYXNoKSB7CiAgICAvLyB1cmwgbG9va3MgbGlrZSAnaHR0cHM6Ly9nYW1lLmNvbS9wYXRoP3F1ZXJ5PTEjaGFzaCcKICAgIC8vIGFkZEhhc2ggbG9va3MgbGlrZSAndGdTaGFyZVNjb3JlVXJsPScgKyBlbmNvZGVVUklDb21wb25lbnQoJ3RnYjovL3NoYXJlX2dhbWVfc2NvcmU/aGFzaD12ZXJ5X2xvbmdfaGFzaDEyMycpCgogICAgdmFyIGluZCA9IHVybC5pbmRleE9mKCcjJyk7CiAgICBpZiAoaW5kIDwgMCkgewogICAgICAvLyBodHRwczovL2dhbWUuY29tL3BhdGggLT4gaHR0cHM6Ly9nYW1lLmNvbS9wYXRoI3RnU2hhcmVTY29yZVVybD1ldGMKICAgICAgcmV0dXJuIHVybCArICcjJyArIGFkZEhhc2g7CiAgICB9CiAgICB2YXIgY3VySGFzaCA9IHVybC5zdWJzdHIoaW5kICsgMSk7CiAgICBpZiAoY3VySGFzaC5pbmRleE9mKCc9JykgPj0gMCB8fCBjdXJIYXNoLmluZGV4T2YoJz8nKSA+PSAwKSB7CiAgICAgIC8vIGh0dHBzOi8vZ2FtZS5jb20vI2hhc2g9MSAtPiBodHRwczovL2dhbWUuY29tLyNoYXNoPTEmdGdTaGFyZVNjb3JlVXJsPWV0YwogICAgICAvLyBodHRwczovL2dhbWUuY29tLyNwYXRoP3F1ZXJ5IC0+IGh0dHBzOi8vZ2FtZS5jb20vI3BhdGg/cXVlcnkmdGdTaGFyZVNjb3JlVXJsPWV0YwogICAgICByZXR1cm4gdXJsICsgJyYnICsgYWRkSGFzaDsKICAgIH0KICAgIC8vIGh0dHBzOi8vZ2FtZS5jb20vI2hhc2ggLT4gaHR0cHM6Ly9nYW1lLmNvbS8jaGFzaD90Z1NoYXJlU2NvcmVVcmw9ZXRjCiAgICBpZiAoY3VySGFzaC5sZW5ndGggPiAwKSB7CiAgICAgIHJldHVybiB1cmwgKyAnPycgKyBhZGRIYXNoOwogICAgfQogICAgLy8gaHR0cHM6Ly9nYW1lLmNvbS8jIC0+IGh0dHBzOi8vZ2FtZS5jb20vI3RnU2hhcmVTY29yZVVybD1ldGMKICAgIHJldHVybiB1cmwgKyBhZGRIYXNoOwogIH0KCiAgZnVuY3Rpb24gcG9zdEV2ZW50KGV2ZW50VHlwZSwgY2FsbGJhY2ssIGV2ZW50RGF0YSkgewogICAgaWYgKCFjYWxsYmFjaykgewogICAgICBjYWxsYmFjayA9IGZ1bmN0aW9uICgpIHt9OwogICAgfQogICAgaWYgKGV2ZW50RGF0YSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgIGV2ZW50RGF0YSA9ICcnOwogICAgfQogICAgY29uc29sZS5sb2coJ1tUZWxlZ3JhbS5XZWJWaWV3XSA+IHBvc3RFdmVudCcsIGV2ZW50VHlwZSwgZXZlbnREYXRhKTsKCiAgICBpZiAod2luZG93LlRlbGVncmFtV2Vidmlld1Byb3h5ICE9PSB1bmRlZmluZWQpIHsKICAgICAgVGVsZWdyYW1XZWJ2aWV3UHJveHkucG9zdEV2ZW50KGV2ZW50VHlwZSwgSlNPTi5zdHJpbmdpZnkoZXZlbnREYXRhKSk7CiAgICAgIGNhbGxiYWNrKCk7CiAgICB9CiAgICBlbHNlIGlmICh3aW5kb3cuZXh0ZXJuYWwgJiYgJ25vdGlmeScgaW4gd2luZG93LmV4dGVybmFsKSB7CiAgICAgIHdpbmRvdy5leHRlcm5hbC5ub3RpZnkoSlNPTi5zdHJpbmdpZnkoe2V2ZW50VHlwZTogZXZlbnRUeXBlLCBldmVudERhdGE6IGV2ZW50RGF0YX0pKTsKICAgICAgY2FsbGJhY2soKTsKICAgIH0KICAgIGVsc2UgaWYgKGlzSWZyYW1lKSB7CiAgICAgIHRyeSB7CiAgICAgICAgdmFyIHRydXN0ZWRUYXJnZXQgPSAnaHR0cHM6Ly93ZWIudGVsZWdyYW0ub3JnJzsKICAgICAgICAvLyBGb3Igbm93IHdlIGRvbid0IHJlc3RyaWN0IHRhcmdldCwgZm9yIHRlc3RpbmcgcHVycG9zZXMKICAgICAgICB0cnVzdGVkVGFyZ2V0ID0gJyonOwogICAgICAgIHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoSlNPTi5zdHJpbmdpZnkoe2V2ZW50VHlwZTogZXZlbnRUeXBlLCBldmVudERhdGE6IGV2ZW50RGF0YX0pLCB0cnVzdGVkVGFyZ2V0KTsKICAgICAgICBjYWxsYmFjaygpOwogICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgY2FsbGJhY2soZSk7CiAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICBjYWxsYmFjayh7bm90QXZhaWxhYmxlOiB0cnVlfSk7CiAgICB9CiAgfTsKCiAgZnVuY3Rpb24gcmVjZWl2ZUV2ZW50KGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICBjb25zb2xlLmxvZygnW1RlbGVncmFtLldlYlZpZXddIDwgcmVjZWl2ZUV2ZW50JywgZXZlbnRUeXBlLCBldmVudERhdGEpOwogICAgY2FsbEV2ZW50Q2FsbGJhY2tzKGV2ZW50VHlwZSwgZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgICAgY2FsbGJhY2soZXZlbnRUeXBlLCBldmVudERhdGEpOwogICAgfSk7CiAgfQoKICBmdW5jdGlvbiBjYWxsRXZlbnRDYWxsYmFja3MoZXZlbnRUeXBlLCBmdW5jKSB7CiAgICB2YXIgY3VyRXZlbnRIYW5kbGVycyA9IGV2ZW50SGFuZGxlcnNbZXZlbnRUeXBlXTsKICAgIGlmIChjdXJFdmVudEhhbmRsZXJzID09PSB1bmRlZmluZWQgfHwKICAgICAgICAhY3VyRXZlbnRIYW5kbGVycy5sZW5ndGgpIHsKICAgICAgcmV0dXJuOwogICAgfQogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjdXJFdmVudEhhbmRsZXJzLmxlbmd0aDsgaSsrKSB7CiAgICAgIHRyeSB7CiAgICAgICAgZnVuYyhjdXJFdmVudEhhbmRsZXJzW2ldKTsKICAgICAgfSBjYXRjaCAoZSkge30KICAgIH0KICB9CgogIGZ1bmN0aW9uIG9uRXZlbnQoZXZlbnRUeXBlLCBjYWxsYmFjaykgewogICAgaWYgKGV2ZW50SGFuZGxlcnNbZXZlbnRUeXBlXSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgIGV2ZW50SGFuZGxlcnNbZXZlbnRUeXBlXSA9IFtdOwogICAgfQogICAgdmFyIGluZGV4ID0gZXZlbnRIYW5kbGVyc1tldmVudFR5cGVdLmluZGV4T2YoY2FsbGJhY2spOwogICAgaWYgKGluZGV4ID09PSAtMSkgewogICAgICBldmVudEhhbmRsZXJzW2V2ZW50VHlwZV0ucHVzaChjYWxsYmFjayk7CiAgICB9CiAgfTsKCiAgZnVuY3Rpb24gb2ZmRXZlbnQoZXZlbnRUeXBlLCBjYWxsYmFjaykgewogICAgaWYgKGV2ZW50SGFuZGxlcnNbZXZlbnRUeXBlXSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgIHJldHVybjsKICAgIH0KICAgIHZhciBpbmRleCA9IGV2ZW50SGFuZGxlcnNbZXZlbnRUeXBlXS5pbmRleE9mKGNhbGxiYWNrKTsKICAgIGlmIChpbmRleCA9PT0gLTEpIHsKICAgICAgcmV0dXJuOwogICAgfQogICAgZXZlbnRIYW5kbGVyc1tldmVudFR5cGVdLnNwbGljZShpbmRleCwgMSk7CiAgfTsKCiAgZnVuY3Rpb24gb3BlblByb3RvVXJsKHVybCkgewogICAgaWYgKCF1cmwubWF0Y2goL14od2ViXCspP3RnYj86XC9cLy4vKSkgewogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICB2YXIgdXNlSWZyYW1lID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvaU9TfGlQaG9uZSBPU3xpUGhvbmV8aVBvZHxpUGFkL2kpID8gdHJ1ZSA6IGZhbHNlOwogICAgaWYgKHVzZUlmcmFtZSkgewogICAgICB2YXIgaWZyYW1lQ29udEVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RnbWVfZnJhbWVfY29udCcpIHx8IGRvY3VtZW50LmJvZHk7CiAgICAgIHZhciBpZnJhbWVFbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpOwogICAgICBpZnJhbWVDb250RWwuYXBwZW5kQ2hpbGQoaWZyYW1lRWwpOwogICAgICB2YXIgcGFnZUhpZGRlbiA9IGZhbHNlOwogICAgICB2YXIgZW5hYmxlSGlkZGVuID0gZnVuY3Rpb24gKCkgewogICAgICAgIHBhZ2VIaWRkZW4gPSB0cnVlOwogICAgICB9OwogICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncGFnZWhpZGUnLCBlbmFibGVIaWRkZW4sIGZhbHNlKTsKICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBlbmFibGVIaWRkZW4sIGZhbHNlKTsKICAgICAgaWYgKGlmcmFtZUVsICE9PSBudWxsKSB7CiAgICAgICAgaWZyYW1lRWwuc3JjID0gdXJsOwogICAgICB9CiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgaWYgKCFwYWdlSGlkZGVuKSB7CiAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSB1cmw7CiAgICAgICAgfQogICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdwYWdlaGlkZScsIGVuYWJsZUhpZGRlbiwgZmFsc2UpOwogICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdibHVyJywgZW5hYmxlSGlkZGVuLCBmYWxzZSk7CiAgICAgIH0sIDIwMDApOwogICAgfQogICAgZWxzZSB7CiAgICAgIHdpbmRvdy5sb2NhdGlvbiA9IHVybDsKICAgIH0KICAgIHJldHVybiB0cnVlOwogIH0KCiAgZnVuY3Rpb24gc2Vzc2lvblN0b3JhZ2VTZXQoa2V5LCB2YWx1ZSkgewogICAgdHJ5IHsKICAgICAgd2luZG93LnNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ19fdGVsZWdyYW1fXycgKyBrZXksIEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7CiAgICAgIHJldHVybiB0cnVlOwogICAgfSBjYXRjaChlKSB7fQogICAgcmV0dXJuIGZhbHNlOwogIH0KICBmdW5jdGlvbiBzZXNzaW9uU3RvcmFnZUdldChrZXkpIHsKICAgIHRyeSB7CiAgICAgIHJldHVybiBKU09OLnBhcnNlKHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdfX3RlbGVncmFtX18nICsga2V5KSk7CiAgICB9IGNhdGNoKGUpIHt9CiAgICByZXR1cm4gbnVsbDsKICB9CgogIGlmICghd2luZG93LlRlbGVncmFtKSB7CiAgICB3aW5kb3cuVGVsZWdyYW0gPSB7fTsKICB9CiAgd2luZG93LlRlbGVncmFtLldlYlZpZXcgPSB7CiAgICBpbml0UGFyYW1zOiBpbml0UGFyYW1zLAogICAgaXNJZnJhbWU6IGlzSWZyYW1lLAogICAgb25FdmVudDogb25FdmVudCwKICAgIG9mZkV2ZW50OiBvZmZFdmVudCwKICAgIHBvc3RFdmVudDogcG9zdEV2ZW50LAogICAgcmVjZWl2ZUV2ZW50OiByZWNlaXZlRXZlbnQsCiAgICBjYWxsRXZlbnRDYWxsYmFja3M6IGNhbGxFdmVudENhbGxiYWNrcwogIH07CgogIHdpbmRvdy5UZWxlZ3JhbS5VdGlscyA9IHsKICAgIHVybFNhZmVEZWNvZGU6IHVybFNhZmVEZWNvZGUsCiAgICB1cmxQYXJzZVF1ZXJ5U3RyaW5nOiB1cmxQYXJzZVF1ZXJ5U3RyaW5nLAogICAgdXJsUGFyc2VIYXNoUGFyYW1zOiB1cmxQYXJzZUhhc2hQYXJhbXMsCiAgICB1cmxBcHBlbmRIYXNoUGFyYW1zOiB1cmxBcHBlbmRIYXNoUGFyYW1zLAogICAgc2Vzc2lvblN0b3JhZ2VTZXQ6IHNlc3Npb25TdG9yYWdlU2V0LAogICAgc2Vzc2lvblN0b3JhZ2VHZXQ6IHNlc3Npb25TdG9yYWdlR2V0CiAgfTsKCiAgLy8gRm9yIFdpbmRvd3MgUGhvbmUgYXBwCiAgd2luZG93LlRlbGVncmFtR2FtZVByb3h5X3JlY2VpdmVFdmVudCA9IHJlY2VpdmVFdmVudDsKCiAgLy8gQXBwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKICB3aW5kb3cuVGVsZWdyYW1HYW1lUHJveHkgPSB7CiAgICByZWNlaXZlRXZlbnQ6IHJlY2VpdmVFdmVudAogIH07Cn0pKCk7CgovLyBXZWJBcHAKKGZ1bmN0aW9uICgpIHsKICB2YXIgVXRpbHMgPSB3aW5kb3cuVGVsZWdyYW0uVXRpbHM7CiAgdmFyIFdlYlZpZXcgPSB3aW5kb3cuVGVsZWdyYW0uV2ViVmlldzsKICB2YXIgaW5pdFBhcmFtcyA9IFdlYlZpZXcuaW5pdFBhcmFtczsKICB2YXIgaXNJZnJhbWUgPSBXZWJWaWV3LmlzSWZyYW1lOwoKICB2YXIgV2ViQXBwID0ge307CiAgdmFyIHdlYkFwcEluaXREYXRhID0gJycsIHdlYkFwcEluaXREYXRhVW5zYWZlID0ge307CiAgdmFyIHRoZW1lUGFyYW1zID0ge30sIGNvbG9yU2NoZW1lID0gJ2xpZ2h0JzsKICB2YXIgd2ViQXBwVmVyc2lvbiA9ICc2LjQnOwogIHZhciB3ZWJBcHBQbGF0Zm9ybSA9ICd1bmtub3duJzsKICB2YXIgd2ViQXBwSXNBY3RpdmUgPSB0cnVlOwogIHZhciB3ZWJBcHBJc0Z1bGxzY3JlZW4gPSBmYWxzZTsKICB2YXIgd2ViQXBwSXNPcmllbnRhdGlvbkxvY2tlZCA9IGZhbHNlOwogIHZhciB3ZWJBcHBCYWNrZ3JvdW5kQ29sb3IgPSAnYmdfY29sb3InOwogIHZhciB3ZWJBcHBIZWFkZXJDb2xvcktleSA9ICdiZ19jb2xvcic7CiAgdmFyIHdlYkFwcEhlYWRlckNvbG9yID0gbnVsbDsKCiAgaWYgKGluaXRQYXJhbXMudGdXZWJBcHBEYXRhICYmIGluaXRQYXJhbXMudGdXZWJBcHBEYXRhLmxlbmd0aCkgewogICAgd2ViQXBwSW5pdERhdGEgPSBpbml0UGFyYW1zLnRnV2ViQXBwRGF0YTsKICAgIHdlYkFwcEluaXREYXRhVW5zYWZlID0gVXRpbHMudXJsUGFyc2VRdWVyeVN0cmluZyh3ZWJBcHBJbml0RGF0YSk7CiAgICBmb3IgKHZhciBrZXkgaW4gd2ViQXBwSW5pdERhdGFVbnNhZmUpIHsKICAgICAgdmFyIHZhbCA9IHdlYkFwcEluaXREYXRhVW5zYWZlW2tleV07CiAgICAgIHRyeSB7CiAgICAgICAgaWYgKHZhbC5zdWJzdHIoMCwgMSkgPT0gJ3snICYmIHZhbC5zdWJzdHIoLTEpID09ICd9JyB8fAogICAgICAgICAgICB2YWwuc3Vic3RyKDAsIDEpID09ICdbJyAmJiB2YWwuc3Vic3RyKC0xKSA9PSAnXScpIHsKICAgICAgICAgIHdlYkFwcEluaXREYXRhVW5zYWZlW2tleV0gPSBKU09OLnBhcnNlKHZhbCk7CiAgICAgICAgfQogICAgICB9IGNhdGNoIChlKSB7fQogICAgfQogIH0KICB2YXIgc3RvcmVkX3RoZW1lX3BhcmFtcyA9IFV0aWxzLnNlc3Npb25TdG9yYWdlR2V0KCd0aGVtZVBhcmFtcycpOwogIGlmIChpbml0UGFyYW1zLnRnV2ViQXBwVGhlbWVQYXJhbXMgJiYgaW5pdFBhcmFtcy50Z1dlYkFwcFRoZW1lUGFyYW1zLmxlbmd0aCkgewogICAgdmFyIHRoZW1lUGFyYW1zUmF3ID0gaW5pdFBhcmFtcy50Z1dlYkFwcFRoZW1lUGFyYW1zOwogICAgdHJ5IHsKICAgICAgdmFyIHRoZW1lX3BhcmFtcyA9IEpTT04ucGFyc2UodGhlbWVQYXJhbXNSYXcpOwogICAgICBpZiAodGhlbWVfcGFyYW1zKSB7CiAgICAgICAgc2V0VGhlbWVQYXJhbXModGhlbWVfcGFyYW1zKTsKICAgICAgfQogICAgfSBjYXRjaCAoZSkge30KICB9CiAgaWYgKHN0b3JlZF90aGVtZV9wYXJhbXMpIHsKICAgIHNldFRoZW1lUGFyYW1zKHN0b3JlZF90aGVtZV9wYXJhbXMpOwogIH0KICB2YXIgc3RvcmVkX2RlZl9jb2xvcnMgPSBVdGlscy5zZXNzaW9uU3RvcmFnZUdldCgnZGVmYXVsdENvbG9ycycpOwogIGlmIChpbml0UGFyYW1zLnRnV2ViQXBwRGVmYXVsdENvbG9ycyAmJiBpbml0UGFyYW1zLnRnV2ViQXBwRGVmYXVsdENvbG9ycy5sZW5ndGgpIHsKICAgIHZhciBkZWZDb2xvcnNSYXcgPSBpbml0UGFyYW1zLnRnV2ViQXBwRGVmYXVsdENvbG9yczsKICAgIHRyeSB7CiAgICAgIHZhciBkZWZfY29sb3JzID0gSlNPTi5wYXJzZShkZWZDb2xvcnNSYXcpOwogICAgICBpZiAoZGVmX2NvbG9ycykgewogICAgICAgIHNldERlZmF1bHRDb2xvcnMoZGVmX2NvbG9ycyk7CiAgICAgIH0KICAgIH0gY2F0Y2ggKGUpIHt9CiAgfQogIGlmIChzdG9yZWRfZGVmX2NvbG9ycykgewogICAgc2V0RGVmYXVsdENvbG9ycyhzdG9yZWRfZGVmX2NvbG9ycyk7CiAgfQogIGlmIChpbml0UGFyYW1zLnRnV2ViQXBwVmVyc2lvbikgewogICAgd2ViQXBwVmVyc2lvbiA9IGluaXRQYXJhbXMudGdXZWJBcHBWZXJzaW9uOwogIH0KICBpZiAoaW5pdFBhcmFtcy50Z1dlYkFwcFBsYXRmb3JtKSB7CiAgICB3ZWJBcHBQbGF0Zm9ybSA9IGluaXRQYXJhbXMudGdXZWJBcHBQbGF0Zm9ybTsKICB9CgogIHZhciBzdG9yZWRfZnVsbHNjcmVlbiA9IFV0aWxzLnNlc3Npb25TdG9yYWdlR2V0KCdpc0Z1bGxzY3JlZW4nKTsKICBpZiAoaW5pdFBhcmFtcy50Z1dlYkFwcEZ1bGxzY3JlZW4pIHsKICAgIHNldEZ1bGxzY3JlZW4odHJ1ZSk7CiAgfQogIGlmIChzdG9yZWRfZnVsbHNjcmVlbikgewogICAgc2V0RnVsbHNjcmVlbihzdG9yZWRfZnVsbHNjcmVlbiA9PSAneWVzJyk7CiAgfQoKICB2YXIgc3RvcmVkX29yaWVudGF0aW9uX2xvY2sgPSBVdGlscy5zZXNzaW9uU3RvcmFnZUdldCgnaXNPcmllbnRhdGlvbkxvY2tlZCcpOwogIGlmIChzdG9yZWRfb3JpZW50YXRpb25fbG9jaykgewogICAgc2V0T3JpZW50YXRpb25Mb2NrKHN0b3JlZF9vcmllbnRhdGlvbl9sb2NrID09ICd5ZXMnKTsKICB9CgogIGZ1bmN0aW9uIG9uVGhlbWVDaGFuZ2VkKGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICBpZiAoZXZlbnREYXRhLnRoZW1lX3BhcmFtcykgewogICAgICBzZXRUaGVtZVBhcmFtcyhldmVudERhdGEudGhlbWVfcGFyYW1zKTsKICAgICAgd2luZG93LlRlbGVncmFtLldlYkFwcC5NYWluQnV0dG9uLnNldFBhcmFtcyh7fSk7CiAgICAgIHdpbmRvdy5UZWxlZ3JhbS5XZWJBcHAuU2Vjb25kYXJ5QnV0dG9uLnNldFBhcmFtcyh7fSk7CiAgICAgIHVwZGF0ZUhlYWRlckNvbG9yKCk7CiAgICAgIHVwZGF0ZUJhY2tncm91bmRDb2xvcigpOwogICAgICB1cGRhdGVCb3R0b21CYXJDb2xvcigpOwogICAgICByZWNlaXZlV2ViVmlld0V2ZW50KCd0aGVtZUNoYW5nZWQnKTsKICAgIH0KICB9CgogIHZhciBsYXN0V2luZG93SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0OwogIGZ1bmN0aW9uIG9uVmlld3BvcnRDaGFuZ2VkKGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICBpZiAoZXZlbnREYXRhLmhlaWdodCkgewogICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25XaW5kb3dSZXNpemUpOwogICAgICBzZXRWaWV3cG9ydEhlaWdodChldmVudERhdGEpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gb25XaW5kb3dSZXNpemUoZSkgewogICAgaWYgKGxhc3RXaW5kb3dIZWlnaHQgIT0gd2luZG93LmlubmVySGVpZ2h0KSB7CiAgICAgIGxhc3RXaW5kb3dIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7CiAgICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQoJ3ZpZXdwb3J0Q2hhbmdlZCcsIHsKICAgICAgICBpc1N0YXRlU3RhYmxlOiB0cnVlCiAgICAgIH0pOwogICAgfQogIH0KCiAgZnVuY3Rpb24gb25TYWZlQXJlYUNoYW5nZWQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgIGlmIChldmVudERhdGEpIHsKICAgICAgc2V0U2FmZUFyZWFJbnNldChldmVudERhdGEpOwogICAgfQogIH0KICBmdW5jdGlvbiBvbkNvbnRlbnRTYWZlQXJlYUNoYW5nZWQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgIGlmIChldmVudERhdGEpIHsKICAgICAgc2V0Q29udGVudFNhZmVBcmVhSW5zZXQoZXZlbnREYXRhKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIG9uVmlzaWJpbGl0eUNoYW5nZWQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgIGlmIChldmVudERhdGEuaXNfdmlzaWJsZSkgewogICAgICB3ZWJBcHBJc0FjdGl2ZSA9IHRydWU7CiAgICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQoJ2FjdGl2YXRlZCcpOwogICAgfSBlbHNlIHsKICAgICAgd2ViQXBwSXNBY3RpdmUgPSBmYWxzZTsKICAgICAgcmVjZWl2ZVdlYlZpZXdFdmVudCgnZGVhY3RpdmF0ZWQnKTsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGxpbmtIYW5kbGVyKGUpIHsKICAgIGlmIChlLm1ldGFLZXkgfHwgZS5jdHJsS2V5KSByZXR1cm47CiAgICB2YXIgZWwgPSBlLnRhcmdldDsKICAgIHdoaWxlIChlbC50YWdOYW1lICE9ICdBJyAmJiBlbC5wYXJlbnROb2RlKSB7CiAgICAgIGVsID0gZWwucGFyZW50Tm9kZTsKICAgIH0KICAgIGlmIChlbC50YWdOYW1lID09ICdBJyAmJgogICAgICAgIGVsLnRhcmdldCAhPSAnX2JsYW5rJyAmJgogICAgICAgIChlbC5wcm90b2NvbCA9PSAnaHR0cDonIHx8IGVsLnByb3RvY29sID09ICdodHRwczonKSAmJgogICAgICAgIGVsLmhvc3RuYW1lID09ICd0Lm1lJykgewogICAgICBXZWJBcHAub3BlblRlbGVncmFtTGluayhlbC5ocmVmKTsKICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgfQogIH0KCiAgZnVuY3Rpb24gc3RyVHJpbShzdHIpIHsKICAgIHJldHVybiBzdHIudG9TdHJpbmcoKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpOwogIH0KCiAgZnVuY3Rpb24gcmVjZWl2ZVdlYlZpZXdFdmVudChldmVudFR5cGUpIHsKICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTsKICAgIGV2ZW50VHlwZSA9IGFyZ3Muc2hpZnQoKTsKICAgIFdlYlZpZXcuY2FsbEV2ZW50Q2FsbGJhY2tzKCd3ZWJ2aWV3OicgKyBldmVudFR5cGUsIGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgIGNhbGxiYWNrLmFwcGx5KFdlYkFwcCwgYXJncyk7CiAgICB9KTsKICB9CgogIGZ1bmN0aW9uIG9uV2ViVmlld0V2ZW50KGV2ZW50VHlwZSwgY2FsbGJhY2spIHsKICAgIFdlYlZpZXcub25FdmVudCgnd2VidmlldzonICsgZXZlbnRUeXBlLCBjYWxsYmFjayk7CiAgfTsKCiAgZnVuY3Rpb24gb2ZmV2ViVmlld0V2ZW50KGV2ZW50VHlwZSwgY2FsbGJhY2spIHsKICAgIFdlYlZpZXcub2ZmRXZlbnQoJ3dlYnZpZXc6JyArIGV2ZW50VHlwZSwgY2FsbGJhY2spOwogIH07CgogIGZ1bmN0aW9uIHNldENzc1Byb3BlcnR5KG5hbWUsIHZhbHVlKSB7CiAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDsKICAgIGlmIChyb290ICYmIHJvb3Quc3R5bGUgJiYgcm9vdC5zdHlsZS5zZXRQcm9wZXJ0eSkgewogICAgICByb290LnN0eWxlLnNldFByb3BlcnR5KCctLXRnLScgKyBuYW1lLCB2YWx1ZSk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBzZXRGdWxsc2NyZWVuKGlzX2Z1bGxzY3JlZW4pIHsKICAgIHdlYkFwcElzRnVsbHNjcmVlbiA9ICEhaXNfZnVsbHNjcmVlbjsKICAgIFV0aWxzLnNlc3Npb25TdG9yYWdlU2V0KCdpc0Z1bGxzY3JlZW4nLCB3ZWJBcHBJc0Z1bGxzY3JlZW4gPyAneWVzJyA6ICdubycpOwogIH0KCiAgZnVuY3Rpb24gc2V0T3JpZW50YXRpb25Mb2NrKGlzX2xvY2tlZCkgewogICAgd2ViQXBwSXNPcmllbnRhdGlvbkxvY2tlZCA9ICEhaXNfbG9ja2VkOwogICAgVXRpbHMuc2Vzc2lvblN0b3JhZ2VTZXQoJ2lzT3JpZW50YXRpb25Mb2NrZWQnLCB3ZWJBcHBJc09yaWVudGF0aW9uTG9ja2VkID8gJ3llcycgOiAnbm8nKTsKICB9CgogIGZ1bmN0aW9uIHNldFRoZW1lUGFyYW1zKHRoZW1lX3BhcmFtcykgewogICAgLy8gdGVtcCBpT1MgZml4CiAgICBpZiAodGhlbWVfcGFyYW1zLmJnX2NvbG9yID09ICcjMWMxYzFkJyAmJgogICAgICAgIHRoZW1lX3BhcmFtcy5iZ19jb2xvciA9PSB0aGVtZV9wYXJhbXMuc2Vjb25kYXJ5X2JnX2NvbG9yKSB7CiAgICAgIHRoZW1lX3BhcmFtcy5zZWNvbmRhcnlfYmdfY29sb3IgPSAnIzJjMmMyZSc7CiAgICB9CiAgICB2YXIgY29sb3I7CiAgICBmb3IgKHZhciBrZXkgaW4gdGhlbWVfcGFyYW1zKSB7CiAgICAgIGlmIChjb2xvciA9IHBhcnNlQ29sb3JUb0hleCh0aGVtZV9wYXJhbXNba2V5XSkpIHsKICAgICAgICB0aGVtZVBhcmFtc1trZXldID0gY29sb3I7CiAgICAgICAgaWYgKGtleSA9PSAnYmdfY29sb3InKSB7CiAgICAgICAgICBjb2xvclNjaGVtZSA9IGlzQ29sb3JEYXJrKGNvbG9yKSA/ICdkYXJrJyA6ICdsaWdodCcKICAgICAgICAgIHNldENzc1Byb3BlcnR5KCdjb2xvci1zY2hlbWUnLCBjb2xvclNjaGVtZSk7CiAgICAgICAgfQogICAgICAgIGtleSA9ICd0aGVtZS0nICsga2V5LnNwbGl0KCdfJykuam9pbignLScpOwogICAgICAgIHNldENzc1Byb3BlcnR5KGtleSwgY29sb3IpOwogICAgICB9CiAgICB9CiAgICBVdGlscy5zZXNzaW9uU3RvcmFnZVNldCgndGhlbWVQYXJhbXMnLCB0aGVtZVBhcmFtcyk7CiAgfQoKICBmdW5jdGlvbiBzZXREZWZhdWx0Q29sb3JzKGRlZl9jb2xvcnMpIHsKICAgIGlmIChjb2xvclNjaGVtZSA9PSAnZGFyaycpIHsKICAgICAgaWYgKGRlZl9jb2xvcnMuYmdfZGFya19jb2xvcikgewogICAgICAgIHdlYkFwcEJhY2tncm91bmRDb2xvciA9IGRlZl9jb2xvcnMuYmdfZGFya19jb2xvcjsKICAgICAgfQogICAgICBpZiAoZGVmX2NvbG9ycy5oZWFkZXJfZGFya19jb2xvcikgewogICAgICAgIHdlYkFwcEhlYWRlckNvbG9yS2V5ID0gbnVsbDsKICAgICAgICB3ZWJBcHBIZWFkZXJDb2xvciA9IGRlZl9jb2xvcnMuaGVhZGVyX2RhcmtfY29sb3I7CiAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgIGlmIChkZWZfY29sb3JzLmJnX2NvbG9yKSB7CiAgICAgICAgd2ViQXBwQmFja2dyb3VuZENvbG9yID0gZGVmX2NvbG9ycy5iZ19jb2xvcjsKICAgICAgfQogICAgICBpZiAoZGVmX2NvbG9ycy5oZWFkZXJfY29sb3IpIHsKICAgICAgICB3ZWJBcHBIZWFkZXJDb2xvcktleSA9IG51bGw7CiAgICAgICAgd2ViQXBwSGVhZGVyQ29sb3IgPSBkZWZfY29sb3JzLmhlYWRlcl9jb2xvcjsKICAgICAgfQogICAgfQogICAgVXRpbHMuc2Vzc2lvblN0b3JhZ2VTZXQoJ2RlZmF1bHRDb2xvcnMnLCBkZWZfY29sb3JzKTsKICB9CgogIHZhciB3ZWJBcHBDYWxsYmFja3MgPSB7fTsKICBmdW5jdGlvbiBnZW5lcmF0ZUNhbGxiYWNrSWQobGVuKSB7CiAgICB2YXIgdHJpZXMgPSAxMDA7CiAgICB3aGlsZSAoLS10cmllcykgewogICAgICB2YXIgaWQgPSAnJywgY2hhcnMgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTY3ODknLCBjaGFyc19sZW4gPSBjaGFycy5sZW5ndGg7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKICAgICAgICBpZCArPSBjaGFyc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFyc19sZW4pXTsKICAgICAgfQogICAgICBpZiAoIXdlYkFwcENhbGxiYWNrc1tpZF0pIHsKICAgICAgICB3ZWJBcHBDYWxsYmFja3NbaWRdID0ge307CiAgICAgICAgcmV0dXJuIGlkOwogICAgICB9CiAgICB9CiAgICB0aHJvdyBFcnJvcignV2ViQXBwQ2FsbGJhY2tJZEdlbmVyYXRlRmFpbGVkJyk7CiAgfQoKICB2YXIgdmlld3BvcnRIZWlnaHQgPSBmYWxzZSwgdmlld3BvcnRTdGFibGVIZWlnaHQgPSBmYWxzZSwgaXNFeHBhbmRlZCA9IHRydWU7CiAgZnVuY3Rpb24gc2V0Vmlld3BvcnRIZWlnaHQoZGF0YSkgewogICAgaWYgKHR5cGVvZiBkYXRhICE9PSAndW5kZWZpbmVkJykgewogICAgICBpc0V4cGFuZGVkID0gISFkYXRhLmlzX2V4cGFuZGVkOwogICAgICB2aWV3cG9ydEhlaWdodCA9IGRhdGEuaGVpZ2h0OwogICAgICBpZiAoZGF0YS5pc19zdGF0ZV9zdGFibGUpIHsKICAgICAgICB2aWV3cG9ydFN0YWJsZUhlaWdodCA9IGRhdGEuaGVpZ2h0OwogICAgICB9CiAgICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQoJ3ZpZXdwb3J0Q2hhbmdlZCcsIHsKICAgICAgICBpc1N0YXRlU3RhYmxlOiAhIWRhdGEuaXNfc3RhdGVfc3RhYmxlCiAgICAgIH0pOwogICAgfQogICAgdmFyIGhlaWdodCwgc3RhYmxlX2hlaWdodDsKICAgIGlmICh2aWV3cG9ydEhlaWdodCAhPT0gZmFsc2UpIHsKICAgICAgaGVpZ2h0ID0gKHZpZXdwb3J0SGVpZ2h0IC0gYm90dG9tQmFySGVpZ2h0KSArICdweCc7CiAgICB9IGVsc2UgewogICAgICBoZWlnaHQgPSBib3R0b21CYXJIZWlnaHQgPyAnY2FsYygxMDB2aCAtICcgKyBib3R0b21CYXJIZWlnaHQgKyAncHgpJyA6ICcxMDB2aCc7CiAgICB9CiAgICBpZiAodmlld3BvcnRTdGFibGVIZWlnaHQgIT09IGZhbHNlKSB7CiAgICAgIHN0YWJsZV9oZWlnaHQgPSAodmlld3BvcnRTdGFibGVIZWlnaHQgLSBib3R0b21CYXJIZWlnaHQpICsgJ3B4JzsKICAgIH0gZWxzZSB7CiAgICAgIHN0YWJsZV9oZWlnaHQgPSBib3R0b21CYXJIZWlnaHQgPyAnY2FsYygxMDB2aCAtICcgKyBib3R0b21CYXJIZWlnaHQgKyAncHgpJyA6ICcxMDB2aCc7CiAgICB9CiAgICBzZXRDc3NQcm9wZXJ0eSgndmlld3BvcnQtaGVpZ2h0JywgaGVpZ2h0KTsKICAgIHNldENzc1Byb3BlcnR5KCd2aWV3cG9ydC1zdGFibGUtaGVpZ2h0Jywgc3RhYmxlX2hlaWdodCk7CiAgfQoKICB2YXIgc2FmZUFyZWFJbnNldCA9IHt0b3A6IDAsIGJvdHRvbTogMCwgbGVmdDogMCwgcmlnaHQ6IDB9OwogIGZ1bmN0aW9uIHNldFNhZmVBcmVhSW5zZXQoZGF0YSkgewogICAgaWYgKHR5cGVvZiBkYXRhICE9PSAndW5kZWZpbmVkJykgewogICAgICBpZiAodHlwZW9mIGRhdGEudG9wICE9PSAndW5kZWZpbmVkJykgewogICAgICAgIHNhZmVBcmVhSW5zZXQudG9wID0gZGF0YS50b3A7CiAgICAgIH0KICAgICAgaWYgKHR5cGVvZiBkYXRhLmJvdHRvbSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICBzYWZlQXJlYUluc2V0LmJvdHRvbSA9IGRhdGEuYm90dG9tOwogICAgICB9CiAgICAgIGlmICh0eXBlb2YgZGF0YS5sZWZ0ICE9PSAndW5kZWZpbmVkJykgewogICAgICAgIHNhZmVBcmVhSW5zZXQubGVmdCA9IGRhdGEubGVmdDsKICAgICAgfQogICAgICBpZiAodHlwZW9mIGRhdGEucmlnaHQgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgc2FmZUFyZWFJbnNldC5yaWdodCA9IGRhdGEucmlnaHQ7CiAgICAgIH0KICAgICAgcmVjZWl2ZVdlYlZpZXdFdmVudCgnc2FmZUFyZWFDaGFuZ2VkJyk7CiAgICB9CiAgICBzZXRDc3NQcm9wZXJ0eSgnc2FmZS1hcmVhLWluc2V0LXRvcCcsIHNhZmVBcmVhSW5zZXQudG9wICsgJ3B4Jyk7CiAgICBzZXRDc3NQcm9wZXJ0eSgnc2FmZS1hcmVhLWluc2V0LWJvdHRvbScsIHNhZmVBcmVhSW5zZXQuYm90dG9tICsgJ3B4Jyk7CiAgICBzZXRDc3NQcm9wZXJ0eSgnc2FmZS1hcmVhLWluc2V0LWxlZnQnLCBzYWZlQXJlYUluc2V0LmxlZnQgKyAncHgnKTsKICAgIHNldENzc1Byb3BlcnR5KCdzYWZlLWFyZWEtaW5zZXQtcmlnaHQnLCBzYWZlQXJlYUluc2V0LnJpZ2h0ICsgJ3B4Jyk7CiAgfQoKICB2YXIgY29udGVudFNhZmVBcmVhSW5zZXQgPSB7dG9wOiAwLCBib3R0b206IDAsIGxlZnQ6IDAsIHJpZ2h0OiAwfTsKICBmdW5jdGlvbiBzZXRDb250ZW50U2FmZUFyZWFJbnNldChkYXRhKSB7CiAgICBpZiAodHlwZW9mIGRhdGEgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgIGlmICh0eXBlb2YgZGF0YS50b3AgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgY29udGVudFNhZmVBcmVhSW5zZXQudG9wID0gZGF0YS50b3A7CiAgICAgIH0KICAgICAgaWYgKHR5cGVvZiBkYXRhLmJvdHRvbSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICBjb250ZW50U2FmZUFyZWFJbnNldC5ib3R0b20gPSBkYXRhLmJvdHRvbTsKICAgICAgfQogICAgICBpZiAodHlwZW9mIGRhdGEubGVmdCAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICBjb250ZW50U2FmZUFyZWFJbnNldC5sZWZ0ID0gZGF0YS5sZWZ0OwogICAgICB9CiAgICAgIGlmICh0eXBlb2YgZGF0YS5yaWdodCAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICBjb250ZW50U2FmZUFyZWFJbnNldC5yaWdodCA9IGRhdGEucmlnaHQ7CiAgICAgIH0KICAgICAgcmVjZWl2ZVdlYlZpZXdFdmVudCgnY29udGVudFNhZmVBcmVhQ2hhbmdlZCcpOwogICAgfQogICAgc2V0Q3NzUHJvcGVydHkoJ2NvbnRlbnQtc2FmZS1hcmVhLWluc2V0LXRvcCcsIGNvbnRlbnRTYWZlQXJlYUluc2V0LnRvcCArICdweCcpOwogICAgc2V0Q3NzUHJvcGVydHkoJ2NvbnRlbnQtc2FmZS1hcmVhLWluc2V0LWJvdHRvbScsIGNvbnRlbnRTYWZlQXJlYUluc2V0LmJvdHRvbSArICdweCcpOwogICAgc2V0Q3NzUHJvcGVydHkoJ2NvbnRlbnQtc2FmZS1hcmVhLWluc2V0LWxlZnQnLCBjb250ZW50U2FmZUFyZWFJbnNldC5sZWZ0ICsgJ3B4Jyk7CiAgICBzZXRDc3NQcm9wZXJ0eSgnY29udGVudC1zYWZlLWFyZWEtaW5zZXQtcmlnaHQnLCBjb250ZW50U2FmZUFyZWFJbnNldC5yaWdodCArICdweCcpOwogIH0KCiAgdmFyIGlzQ2xvc2luZ0NvbmZpcm1hdGlvbkVuYWJsZWQgPSBmYWxzZTsKICBmdW5jdGlvbiBzZXRDbG9zaW5nQ29uZmlybWF0aW9uKG5lZWRfY29uZmlybWF0aW9uKSB7CiAgICBpZiAoIXZlcnNpb25BdExlYXN0KCc2LjInKSkgewogICAgICBjb25zb2xlLndhcm4oJ1tUZWxlZ3JhbS5XZWJBcHBdIENsb3NpbmcgY29uZmlybWF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdmVyc2lvbiAnICsgd2ViQXBwVmVyc2lvbik7CiAgICAgIHJldHVybjsKICAgIH0KICAgIGlzQ2xvc2luZ0NvbmZpcm1hdGlvbkVuYWJsZWQgPSAhIW5lZWRfY29uZmlybWF0aW9uOwogICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfc2V0dXBfY2xvc2luZ19iZWhhdmlvcicsIGZhbHNlLCB7bmVlZF9jb25maXJtYXRpb246IGlzQ2xvc2luZ0NvbmZpcm1hdGlvbkVuYWJsZWR9KTsKICB9CgogIHZhciBpc1ZlcnRpY2FsU3dpcGVzRW5hYmxlZCA9IHRydWU7CiAgZnVuY3Rpb24gdG9nZ2xlVmVydGljYWxTd2lwZXMoZW5hYmxlX3N3aXBlcykgewogICAgaWYgKCF2ZXJzaW9uQXRMZWFzdCgnNy43JykpIHsKICAgICAgY29uc29sZS53YXJuKCdbVGVsZWdyYW0uV2ViQXBwXSBDaGFuZ2luZyBzd2lwZXMgYmVoYXZpb3IgaXMgbm90IHN1cHBvcnRlZCBpbiB2ZXJzaW9uICcgKyB3ZWJBcHBWZXJzaW9uKTsKICAgICAgcmV0dXJuOwogICAgfQogICAgaXNWZXJ0aWNhbFN3aXBlc0VuYWJsZWQgPSAhIWVuYWJsZV9zd2lwZXM7CiAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9zZXR1cF9zd2lwZV9iZWhhdmlvcicsIGZhbHNlLCB7YWxsb3dfdmVydGljYWxfc3dpcGU6IGlzVmVydGljYWxTd2lwZXNFbmFibGVkfSk7CiAgfQoKICBmdW5jdGlvbiBvbkZ1bGxzY3JlZW5DaGFuZ2VkKGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICBzZXRGdWxsc2NyZWVuKGV2ZW50RGF0YS5pc19mdWxsc2NyZWVuKTsKICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQoJ2Z1bGxzY3JlZW5DaGFuZ2VkJyk7CiAgfQogIGZ1bmN0aW9uIG9uRnVsbHNjcmVlbkZhaWxlZChldmVudFR5cGUsIGV2ZW50RGF0YSkgewogICAgaWYgKGV2ZW50RGF0YS5lcnJvciA9PSAnQUxSRUFEWV9GVUxMU0NSRUVOJyAmJiAhd2ViQXBwSXNGdWxsc2NyZWVuKSB7CiAgICAgIHNldEZ1bGxzY3JlZW4odHJ1ZSk7CiAgICB9CiAgICByZWNlaXZlV2ViVmlld0V2ZW50KCdmdWxsc2NyZWVuRmFpbGVkJywgewogICAgICBlcnJvcjogZXZlbnREYXRhLmVycm9yCiAgICB9KTsKICB9CgogIGZ1bmN0aW9uIHRvZ2dsZU9yaWVudGF0aW9uTG9jayhsb2NrZWQpIHsKICAgIGlmICghdmVyc2lvbkF0TGVhc3QoJzguMCcpKSB7CiAgICAgIGNvbnNvbGUud2FybignW1RlbGVncmFtLldlYkFwcF0gT3JpZW50YXRpb24gbG9ja2luZyBpcyBub3Qgc3VwcG9ydGVkIGluIHZlcnNpb24gJyArIHdlYkFwcFZlcnNpb24pOwogICAgICByZXR1cm47CiAgICB9CiAgICBzZXRPcmllbnRhdGlvbkxvY2sobG9ja2VkKTsKICAgIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX3RvZ2dsZV9vcmllbnRhdGlvbl9sb2NrJywgZmFsc2UsIHtsb2NrZWQ6IHdlYkFwcElzT3JpZW50YXRpb25Mb2NrZWR9KTsKICB9CgogIHZhciBob21lU2NyZWVuQ2FsbGJhY2tzID0gW107CiAgZnVuY3Rpb24gb25Ib21lU2NyZWVuQWRkZWQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQoJ2hvbWVTY3JlZW5BZGRlZCcpOwogIH0KICBmdW5jdGlvbiBvbkhvbWVTY3JlZW5DaGVja2VkKGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICB2YXIgc3RhdHVzID0gZXZlbnREYXRhLnN0YXR1cyB8fCAndW5rbm93bic7CiAgICBpZiAoaG9tZVNjcmVlbkNhbGxiYWNrcy5sZW5ndGggPiAwKSB7CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaG9tZVNjcmVlbkNhbGxiYWNrcy5sZW5ndGg7IGkrKykgewogICAgICAgIHZhciBjYWxsYmFjayA9IGhvbWVTY3JlZW5DYWxsYmFja3NbaV07CiAgICAgICAgY2FsbGJhY2soc3RhdHVzKTsKICAgICAgfQogICAgICBob21lU2NyZWVuQ2FsbGJhY2tzID0gW107CiAgICB9CiAgICByZWNlaXZlV2ViVmlld0V2ZW50KCdob21lU2NyZWVuQ2hlY2tlZCcsIHsKICAgICAgc3RhdHVzOiBzdGF0dXMKICAgIH0pOwogIH0KCiAgdmFyIFdlYkFwcFNoYXJlTWVzc2FnZU9wZW5lZCA9IGZhbHNlOwogIGZ1bmN0aW9uIG9uUHJlcGFyZWRNZXNzYWdlU2VudChldmVudFR5cGUsIGV2ZW50RGF0YSkgewogICAgaWYgKFdlYkFwcFNoYXJlTWVzc2FnZU9wZW5lZCkgewogICAgICB2YXIgcmVxdWVzdERhdGEgPSBXZWJBcHBTaGFyZU1lc3NhZ2VPcGVuZWQ7CiAgICAgIFdlYkFwcFNoYXJlTWVzc2FnZU9wZW5lZCA9IGZhbHNlOwogICAgICBpZiAocmVxdWVzdERhdGEuY2FsbGJhY2spIHsKICAgICAgICByZXF1ZXN0RGF0YS5jYWxsYmFjayh0cnVlKTsKICAgICAgfQogICAgICByZWNlaXZlV2ViVmlld0V2ZW50KCdzaGFyZU1lc3NhZ2VTZW50Jyk7CiAgICB9CiAgfQogIGZ1bmN0aW9uIG9uUHJlcGFyZWRNZXNzYWdlRmFpbGVkKGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICBpZiAoV2ViQXBwU2hhcmVNZXNzYWdlT3BlbmVkKSB7CiAgICAgIHZhciByZXF1ZXN0RGF0YSA9IFdlYkFwcFNoYXJlTWVzc2FnZU9wZW5lZDsKICAgICAgV2ViQXBwU2hhcmVNZXNzYWdlT3BlbmVkID0gZmFsc2U7CiAgICAgIGlmIChyZXF1ZXN0RGF0YS5jYWxsYmFjaykgewogICAgICAgIHJlcXVlc3REYXRhLmNhbGxiYWNrKGZhbHNlKTsKICAgICAgfQogICAgICByZWNlaXZlV2ViVmlld0V2ZW50KCdzaGFyZU1lc3NhZ2VGYWlsZWQnLCB7CiAgICAgICAgZXJyb3I6IGV2ZW50RGF0YS5lcnJvcgogICAgICB9KTsKICAgIH0KICB9CgogIHZhciBXZWJBcHBSZXF1ZXN0Q2hhdE9wZW5lZCA9IGZhbHNlOwogIGZ1bmN0aW9uIG9uUmVxdWVzdGVkQ2hhdFNlbnQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgIGlmIChXZWJBcHBSZXF1ZXN0Q2hhdE9wZW5lZCkgewogICAgICB2YXIgcmVxdWVzdERhdGEgPSBXZWJBcHBSZXF1ZXN0Q2hhdE9wZW5lZDsKICAgICAgV2ViQXBwUmVxdWVzdENoYXRPcGVuZWQgPSBmYWxzZTsKICAgICAgaWYgKHJlcXVlc3REYXRhLmNhbGxiYWNrKSB7CiAgICAgICAgcmVxdWVzdERhdGEuY2FsbGJhY2sodHJ1ZSk7CiAgICAgIH0KICAgICAgcmVjZWl2ZVdlYlZpZXdFdmVudCgncmVxdWVzdGVkQ2hhdFNlbnQnKTsKICAgIH0KICB9CiAgZnVuY3Rpb24gb25SZXF1ZXN0ZWRDaGF0RmFpbGVkKGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICBpZiAoV2ViQXBwUmVxdWVzdENoYXRPcGVuZWQpIHsKICAgICAgdmFyIHJlcXVlc3REYXRhID0gV2ViQXBwUmVxdWVzdENoYXRPcGVuZWQ7CiAgICAgIFdlYkFwcFJlcXVlc3RDaGF0T3BlbmVkID0gZmFsc2U7CiAgICAgIGlmIChyZXF1ZXN0RGF0YS5jYWxsYmFjaykgewogICAgICAgIHJlcXVlc3REYXRhLmNhbGxiYWNrKGZhbHNlKTsKICAgICAgfQogICAgICByZWNlaXZlV2ViVmlld0V2ZW50KCdyZXF1ZXN0ZWRDaGF0RmFpbGVkJywgewogICAgICAgIGVycm9yOiBldmVudERhdGEuZXJyb3IKICAgICAgfSk7CiAgICB9CiAgfQoKICB2YXIgV2ViQXBwRW1vamlTdGF0dXNSZXF1ZXN0ZWQgPSBmYWxzZTsKICBmdW5jdGlvbiBvbkVtb2ppU3RhdHVzU2V0KGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICBpZiAoV2ViQXBwRW1vamlTdGF0dXNSZXF1ZXN0ZWQpIHsKICAgICAgdmFyIHJlcXVlc3REYXRhID0gV2ViQXBwRW1vamlTdGF0dXNSZXF1ZXN0ZWQ7CiAgICAgIFdlYkFwcEVtb2ppU3RhdHVzUmVxdWVzdGVkID0gZmFsc2U7CiAgICAgIGlmIChyZXF1ZXN0RGF0YS5jYWxsYmFjaykgewogICAgICAgIHJlcXVlc3REYXRhLmNhbGxiYWNrKHRydWUpOwogICAgICB9CiAgICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQoJ2Vtb2ppU3RhdHVzU2V0Jyk7CiAgICB9CiAgfQogIGZ1bmN0aW9uIG9uRW1vamlTdGF0dXNGYWlsZWQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgIGlmIChXZWJBcHBFbW9qaVN0YXR1c1JlcXVlc3RlZCkgewogICAgICB2YXIgcmVxdWVzdERhdGEgPSBXZWJBcHBFbW9qaVN0YXR1c1JlcXVlc3RlZDsKICAgICAgV2ViQXBwRW1vamlTdGF0dXNSZXF1ZXN0ZWQgPSBmYWxzZTsKICAgICAgaWYgKHJlcXVlc3REYXRhLmNhbGxiYWNrKSB7CiAgICAgICAgcmVxdWVzdERhdGEuY2FsbGJhY2soZmFsc2UpOwogICAgICB9CiAgICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQoJ2Vtb2ppU3RhdHVzRmFpbGVkJywgewogICAgICAgIGVycm9yOiBldmVudERhdGEuZXJyb3IKICAgICAgfSk7CiAgICB9CiAgfQogIHZhciBXZWJBcHBFbW9qaVN0YXR1c0FjY2Vzc1JlcXVlc3RlZCA9IGZhbHNlOwogIGZ1bmN0aW9uIG9uRW1vamlTdGF0dXNBY2Nlc3NSZXF1ZXN0ZWQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgIGlmIChXZWJBcHBFbW9qaVN0YXR1c0FjY2Vzc1JlcXVlc3RlZCkgewogICAgICB2YXIgcmVxdWVzdERhdGEgPSBXZWJBcHBFbW9qaVN0YXR1c0FjY2Vzc1JlcXVlc3RlZDsKICAgICAgV2ViQXBwRW1vamlTdGF0dXNBY2Nlc3NSZXF1ZXN0ZWQgPSBmYWxzZTsKICAgICAgaWYgKHJlcXVlc3REYXRhLmNhbGxiYWNrKSB7CiAgICAgICAgcmVxdWVzdERhdGEuY2FsbGJhY2soZXZlbnREYXRhLnN0YXR1cyA9PSAnYWxsb3dlZCcpOwogICAgICB9CiAgICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQoJ2Vtb2ppU3RhdHVzQWNjZXNzUmVxdWVzdGVkJywgewogICAgICAgIHN0YXR1czogZXZlbnREYXRhLnN0YXR1cwogICAgICB9KTsKICAgIH0KICB9CgogIHZhciB3ZWJBcHBQb3B1cE9wZW5lZCA9IGZhbHNlOwogIGZ1bmN0aW9uIG9uUG9wdXBDbG9zZWQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgIGlmICh3ZWJBcHBQb3B1cE9wZW5lZCkgewogICAgICB2YXIgcG9wdXBEYXRhID0gd2ViQXBwUG9wdXBPcGVuZWQ7CiAgICAgIHdlYkFwcFBvcHVwT3BlbmVkID0gZmFsc2U7CiAgICAgIHZhciBidXR0b25faWQgPSBudWxsOwogICAgICBpZiAodHlwZW9mIGV2ZW50RGF0YS5idXR0b25faWQgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgYnV0dG9uX2lkID0gZXZlbnREYXRhLmJ1dHRvbl9pZDsKICAgICAgfQogICAgICBpZiAocG9wdXBEYXRhLmNhbGxiYWNrKSB7CiAgICAgICAgcG9wdXBEYXRhLmNhbGxiYWNrKGJ1dHRvbl9pZCk7CiAgICAgIH0KICAgICAgcmVjZWl2ZVdlYlZpZXdFdmVudCgncG9wdXBDbG9zZWQnLCB7CiAgICAgICAgYnV0dG9uX2lkOiBidXR0b25faWQKICAgICAgfSk7CiAgICB9CiAgfQoKCiAgZnVuY3Rpb24gZ2V0SGVhZGVyQ29sb3IoKSB7CiAgICBpZiAod2ViQXBwSGVhZGVyQ29sb3JLZXkgPT0gJ3NlY29uZGFyeV9iZ19jb2xvcicpIHsKICAgICAgcmV0dXJuIHRoZW1lUGFyYW1zLnNlY29uZGFyeV9iZ19jb2xvcjsKICAgIH0gZWxzZSBpZiAod2ViQXBwSGVhZGVyQ29sb3JLZXkgPT0gJ2JnX2NvbG9yJykgewogICAgICByZXR1cm4gdGhlbWVQYXJhbXMuYmdfY29sb3I7CiAgICB9CiAgICByZXR1cm4gd2ViQXBwSGVhZGVyQ29sb3I7CiAgfQogIGZ1bmN0aW9uIHNldEhlYWRlckNvbG9yKGNvbG9yKSB7CiAgICBpZiAoIXZlcnNpb25BdExlYXN0KCc2LjEnKSkgewogICAgICBjb25zb2xlLndhcm4oJ1tUZWxlZ3JhbS5XZWJBcHBdIEhlYWRlciBjb2xvciBpcyBub3Qgc3VwcG9ydGVkIGluIHZlcnNpb24gJyArIHdlYkFwcFZlcnNpb24pOwogICAgICByZXR1cm47CiAgICB9CiAgICBpZiAoIXZlcnNpb25BdExlYXN0KCc2LjknKSkgewogICAgICBpZiAodGhlbWVQYXJhbXMuYmdfY29sb3IgJiYKICAgICAgICAgIHRoZW1lUGFyYW1zLmJnX2NvbG9yID09IGNvbG9yKSB7CiAgICAgICAgY29sb3IgPSAnYmdfY29sb3InOwogICAgICB9IGVsc2UgaWYgKHRoZW1lUGFyYW1zLnNlY29uZGFyeV9iZ19jb2xvciAmJgogICAgICAgICAgICAgICAgIHRoZW1lUGFyYW1zLnNlY29uZGFyeV9iZ19jb2xvciA9PSBjb2xvcikgewogICAgICAgIGNvbG9yID0gJ3NlY29uZGFyeV9iZ19jb2xvcic7CiAgICAgIH0KICAgIH0KICAgIHZhciBoZWFkX2NvbG9yID0gbnVsbCwgY29sb3Jfa2V5ID0gbnVsbDsKICAgIGlmIChjb2xvciA9PSAnYmdfY29sb3InIHx8IGNvbG9yID09ICdzZWNvbmRhcnlfYmdfY29sb3InKSB7CiAgICAgIGNvbG9yX2tleSA9IGNvbG9yOwogICAgfSBlbHNlIGlmICh2ZXJzaW9uQXRMZWFzdCgnNi45JykpIHsKICAgICAgaGVhZF9jb2xvciA9IHBhcnNlQ29sb3JUb0hleChjb2xvcik7CiAgICAgIGlmICghaGVhZF9jb2xvcikgewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIEhlYWRlciBjb2xvciBmb3JtYXQgaXMgaW52YWxpZCcsIGNvbG9yKTsKICAgICAgICB0aHJvdyBFcnJvcignV2ViQXBwSGVhZGVyQ29sb3JJbnZhbGlkJyk7CiAgICAgIH0KICAgIH0KICAgIGlmICghdmVyc2lvbkF0TGVhc3QoJzYuOScpICYmCiAgICAgICAgY29sb3Jfa2V5ICE9ICdiZ19jb2xvcicgJiYKICAgICAgICBjb2xvcl9rZXkgIT0gJ3NlY29uZGFyeV9iZ19jb2xvcicpIHsKICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gSGVhZGVyIGNvbG9yIGtleSBzaG91bGQgYmUgb25lIG9mIFRlbGVncmFtLldlYkFwcC50aGVtZVBhcmFtcy5iZ19jb2xvciwgVGVsZWdyYW0uV2ViQXBwLnRoZW1lUGFyYW1zLnNlY29uZGFyeV9iZ19jb2xvciwgXCdiZ19jb2xvclwnLCBcJ3NlY29uZGFyeV9iZ19jb2xvclwnJywgY29sb3IpOwogICAgICB0aHJvdyBFcnJvcignV2ViQXBwSGVhZGVyQ29sb3JLZXlJbnZhbGlkJyk7CiAgICB9CiAgICB3ZWJBcHBIZWFkZXJDb2xvcktleSA9IGNvbG9yX2tleTsKICAgIHdlYkFwcEhlYWRlckNvbG9yID0gaGVhZF9jb2xvcjsKICAgIHVwZGF0ZUhlYWRlckNvbG9yKCk7CiAgfQogIHZhciBhcHBIZWFkZXJDb2xvcktleSA9IG51bGwsIGFwcEhlYWRlckNvbG9yID0gbnVsbDsKICBmdW5jdGlvbiB1cGRhdGVIZWFkZXJDb2xvcigpIHsKICAgIGlmIChhcHBIZWFkZXJDb2xvcktleSAhPSB3ZWJBcHBIZWFkZXJDb2xvcktleSB8fAogICAgICAgIGFwcEhlYWRlckNvbG9yICE9IHdlYkFwcEhlYWRlckNvbG9yKSB7CiAgICAgIGFwcEhlYWRlckNvbG9yS2V5ID0gd2ViQXBwSGVhZGVyQ29sb3JLZXk7CiAgICAgIGFwcEhlYWRlckNvbG9yID0gd2ViQXBwSGVhZGVyQ29sb3I7CiAgICAgIGlmIChhcHBIZWFkZXJDb2xvcikgewogICAgICAgIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX3NldF9oZWFkZXJfY29sb3InLCBmYWxzZSwge2NvbG9yOiB3ZWJBcHBIZWFkZXJDb2xvcn0pOwogICAgICB9IGVsc2UgewogICAgICAgIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX3NldF9oZWFkZXJfY29sb3InLCBmYWxzZSwge2NvbG9yX2tleTogd2ViQXBwSGVhZGVyQ29sb3JLZXl9KTsKICAgICAgfQogICAgfQogIH0KCiAgZnVuY3Rpb24gZ2V0QmFja2dyb3VuZENvbG9yKCkgewogICAgaWYgKHdlYkFwcEJhY2tncm91bmRDb2xvciA9PSAnc2Vjb25kYXJ5X2JnX2NvbG9yJykgewogICAgICByZXR1cm4gdGhlbWVQYXJhbXMuc2Vjb25kYXJ5X2JnX2NvbG9yOwogICAgfSBlbHNlIGlmICh3ZWJBcHBCYWNrZ3JvdW5kQ29sb3IgPT0gJ2JnX2NvbG9yJykgewogICAgICByZXR1cm4gdGhlbWVQYXJhbXMuYmdfY29sb3I7CiAgICB9CiAgICByZXR1cm4gd2ViQXBwQmFja2dyb3VuZENvbG9yOwogIH0KICBmdW5jdGlvbiBzZXRCYWNrZ3JvdW5kQ29sb3IoY29sb3IpIHsKICAgIGlmICghdmVyc2lvbkF0TGVhc3QoJzYuMScpKSB7CiAgICAgIGNvbnNvbGUud2FybignW1RlbGVncmFtLldlYkFwcF0gQmFja2dyb3VuZCBjb2xvciBpcyBub3Qgc3VwcG9ydGVkIGluIHZlcnNpb24gJyArIHdlYkFwcFZlcnNpb24pOwogICAgICByZXR1cm47CiAgICB9CiAgICB2YXIgYmdfY29sb3I7CiAgICBpZiAoY29sb3IgPT0gJ2JnX2NvbG9yJyB8fCBjb2xvciA9PSAnc2Vjb25kYXJ5X2JnX2NvbG9yJykgewogICAgICBiZ19jb2xvciA9IGNvbG9yOwogICAgfSBlbHNlIHsKICAgICAgYmdfY29sb3IgPSBwYXJzZUNvbG9yVG9IZXgoY29sb3IpOwogICAgICBpZiAoIWJnX2NvbG9yKSB7CiAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gQmFja2dyb3VuZCBjb2xvciBmb3JtYXQgaXMgaW52YWxpZCcsIGNvbG9yKTsKICAgICAgICB0aHJvdyBFcnJvcignV2ViQXBwQmFja2dyb3VuZENvbG9ySW52YWxpZCcpOwogICAgICB9CiAgICB9CiAgICB3ZWJBcHBCYWNrZ3JvdW5kQ29sb3IgPSBiZ19jb2xvcjsKICAgIHVwZGF0ZUJhY2tncm91bmRDb2xvcigpOwogIH0KICB2YXIgYXBwQmFja2dyb3VuZENvbG9yID0gbnVsbDsKICBmdW5jdGlvbiB1cGRhdGVCYWNrZ3JvdW5kQ29sb3IoKSB7CiAgICB2YXIgY29sb3IgPSBnZXRCYWNrZ3JvdW5kQ29sb3IoKTsKICAgIGlmIChhcHBCYWNrZ3JvdW5kQ29sb3IgIT0gY29sb3IpIHsKICAgICAgYXBwQmFja2dyb3VuZENvbG9yID0gY29sb3I7CiAgICAgIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX3NldF9iYWNrZ3JvdW5kX2NvbG9yJywgZmFsc2UsIHtjb2xvcjogY29sb3J9KTsKICAgIH0KICB9CgogIHZhciBib3R0b21CYXJDb2xvciA9ICdib3R0b21fYmFyX2JnX2NvbG9yJzsKICBmdW5jdGlvbiBnZXRCb3R0b21CYXJDb2xvcigpIHsKICAgIGlmIChib3R0b21CYXJDb2xvciA9PSAnYm90dG9tX2Jhcl9iZ19jb2xvcicpIHsKICAgICAgcmV0dXJuIHRoZW1lUGFyYW1zLmJvdHRvbV9iYXJfYmdfY29sb3IgfHwgdGhlbWVQYXJhbXMuc2Vjb25kYXJ5X2JnX2NvbG9yIHx8ICcjZmZmZmZmJzsKICAgIH0gZWxzZSBpZiAoYm90dG9tQmFyQ29sb3IgPT0gJ3NlY29uZGFyeV9iZ19jb2xvcicpIHsKICAgICAgcmV0dXJuIHRoZW1lUGFyYW1zLnNlY29uZGFyeV9iZ19jb2xvcjsKICAgIH0gZWxzZSBpZiAoYm90dG9tQmFyQ29sb3IgPT0gJ2JnX2NvbG9yJykgewogICAgICByZXR1cm4gdGhlbWVQYXJhbXMuYmdfY29sb3I7CiAgICB9CiAgICByZXR1cm4gYm90dG9tQmFyQ29sb3I7CiAgfQogIGZ1bmN0aW9uIHNldEJvdHRvbUJhckNvbG9yKGNvbG9yKSB7CiAgICBpZiAoIXZlcnNpb25BdExlYXN0KCc3LjEwJykpIHsKICAgICAgY29uc29sZS53YXJuKCdbVGVsZWdyYW0uV2ViQXBwXSBCb3R0b20gYmFyIGNvbG9yIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdmVyc2lvbiAnICsgd2ViQXBwVmVyc2lvbik7CiAgICAgIHJldHVybjsKICAgIH0KICAgIHZhciBiZ19jb2xvcjsKICAgIGlmIChjb2xvciA9PSAnYmdfY29sb3InIHx8IGNvbG9yID09ICdzZWNvbmRhcnlfYmdfY29sb3InIHx8IGNvbG9yID09ICdib3R0b21fYmFyX2JnX2NvbG9yJykgewogICAgICBiZ19jb2xvciA9IGNvbG9yOwogICAgfSBlbHNlIHsKICAgICAgYmdfY29sb3IgPSBwYXJzZUNvbG9yVG9IZXgoY29sb3IpOwogICAgICBpZiAoIWJnX2NvbG9yKSB7CiAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gQm90dG9tIGJhciBjb2xvciBmb3JtYXQgaXMgaW52YWxpZCcsIGNvbG9yKTsKICAgICAgICB0aHJvdyBFcnJvcignV2ViQXBwQm90dG9tQmFyQ29sb3JJbnZhbGlkJyk7CiAgICAgIH0KICAgIH0KICAgIGJvdHRvbUJhckNvbG9yID0gYmdfY29sb3I7CiAgICB1cGRhdGVCb3R0b21CYXJDb2xvcigpOwogICAgd2luZG93LlRlbGVncmFtLldlYkFwcC5TZWNvbmRhcnlCdXR0b24uc2V0UGFyYW1zKHt9KTsKICB9CiAgdmFyIGFwcEJvdHRvbUJhckNvbG9yID0gbnVsbDsKICBmdW5jdGlvbiB1cGRhdGVCb3R0b21CYXJDb2xvcigpIHsKICAgIHZhciBjb2xvciA9IGdldEJvdHRvbUJhckNvbG9yKCk7CiAgICBpZiAoYXBwQm90dG9tQmFyQ29sb3IgIT0gY29sb3IpIHsKICAgICAgYXBwQm90dG9tQmFyQ29sb3IgPSBjb2xvcjsKICAgICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfc2V0X2JvdHRvbV9iYXJfY29sb3InLCBmYWxzZSwge2NvbG9yOiBjb2xvcn0pOwogICAgfQogICAgaWYgKGluaXRQYXJhbXMudGdXZWJBcHBEZWJ1ZykgewogICAgICB1cGRhdGVEZWJ1Z0JvdHRvbUJhcigpOwogICAgfQogIH0KCgogIGZ1bmN0aW9uIHBhcnNlQ29sb3JUb0hleChjb2xvcikgewogICAgY29sb3IgKz0gJyc7CiAgICB2YXIgbWF0Y2g7CiAgICBpZiAobWF0Y2ggPSAvXlxzKiMoWzAtOWEtZl17Nn0pXHMqJC9pLmV4ZWMoY29sb3IpKSB7CiAgICAgIHJldHVybiAnIycgKyBtYXRjaFsxXS50b0xvd2VyQ2FzZSgpOwogICAgfQogICAgZWxzZSBpZiAobWF0Y2ggPSAvXlxzKiMoWzAtOWEtZl0pKFswLTlhLWZdKShbMC05YS1mXSlccyokL2kuZXhlYyhjb2xvcikpIHsKICAgICAgcmV0dXJuICgnIycgKyBtYXRjaFsxXSArIG1hdGNoWzFdICsgbWF0Y2hbMl0gKyBtYXRjaFsyXSArIG1hdGNoWzNdICsgbWF0Y2hbM10pLnRvTG93ZXJDYXNlKCk7CiAgICB9CiAgICBlbHNlIGlmIChtYXRjaCA9IC9eXHMqcmdiYT9cKChcZCspLFxzKihcZCspLFxzKihcZCspKD86LFxzKihcZCtcLnswLDF9XGQqKSk/XClccyokLy5leGVjKGNvbG9yKSkgewogICAgICB2YXIgciA9IHBhcnNlSW50KG1hdGNoWzFdKSwgZyA9IHBhcnNlSW50KG1hdGNoWzJdKSwgYiA9IHBhcnNlSW50KG1hdGNoWzNdKTsKICAgICAgciA9IChyIDwgMTYgPyAnMCcgOiAnJykgKyByLnRvU3RyaW5nKDE2KTsKICAgICAgZyA9IChnIDwgMTYgPyAnMCcgOiAnJykgKyBnLnRvU3RyaW5nKDE2KTsKICAgICAgYiA9IChiIDwgMTYgPyAnMCcgOiAnJykgKyBiLnRvU3RyaW5nKDE2KTsKICAgICAgcmV0dXJuICcjJyArIHIgKyBnICsgYjsKICAgIH0KICAgIHJldHVybiBmYWxzZTsKICB9CgogIGZ1bmN0aW9uIGlzQ29sb3JEYXJrKHJnYikgewogICAgcmdiID0gcmdiLnJlcGxhY2UoL1tccyNdL2csICcnKTsKICAgIGlmIChyZ2IubGVuZ3RoID09IDMpIHsKICAgICAgcmdiID0gcmdiWzBdICsgcmdiWzBdICsgcmdiWzFdICsgcmdiWzFdICsgcmdiWzJdICsgcmdiWzJdOwogICAgfQogICAgdmFyIHIgPSBwYXJzZUludChyZ2Iuc3Vic3RyKDAsIDIpLCAxNik7CiAgICB2YXIgZyA9IHBhcnNlSW50KHJnYi5zdWJzdHIoMiwgMiksIDE2KTsKICAgIHZhciBiID0gcGFyc2VJbnQocmdiLnN1YnN0cig0LCAyKSwgMTYpOwogICAgdmFyIGhzcCA9IE1hdGguc3FydCgwLjI5OSAqIChyICogcikgKyAwLjU4NyAqIChnICogZykgKyAwLjExNCAqIChiICogYikpOwogICAgcmV0dXJuIGhzcCA8IDEyMDsKICB9CgogIGZ1bmN0aW9uIHZlcnNpb25Db21wYXJlKHYxLCB2MikgewogICAgaWYgKHR5cGVvZiB2MSAhPT0gJ3N0cmluZycpIHYxID0gJyc7CiAgICBpZiAodHlwZW9mIHYyICE9PSAnc3RyaW5nJykgdjIgPSAnJzsKICAgIHYxID0gdjEucmVwbGFjZSgvXlxzK3xccyskL2csICcnKS5zcGxpdCgnLicpOwogICAgdjIgPSB2Mi5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpLnNwbGl0KCcuJyk7CiAgICB2YXIgYSA9IE1hdGgubWF4KHYxLmxlbmd0aCwgdjIubGVuZ3RoKSwgaSwgcDEsIHAyOwogICAgZm9yIChpID0gMDsgaSA8IGE7IGkrKykgewogICAgICBwMSA9IHBhcnNlSW50KHYxW2ldKSB8fCAwOwogICAgICBwMiA9IHBhcnNlSW50KHYyW2ldKSB8fCAwOwogICAgICBpZiAocDEgPT0gcDIpIGNvbnRpbnVlOwogICAgICBpZiAocDEgPiBwMikgcmV0dXJuIDE7CiAgICAgIHJldHVybiAtMTsKICAgIH0KICAgIHJldHVybiAwOwogIH0KCiAgZnVuY3Rpb24gdmVyc2lvbkF0TGVhc3QodmVyKSB7CiAgICByZXR1cm4gdmVyc2lvbkNvbXBhcmUod2ViQXBwVmVyc2lvbiwgdmVyKSA+PSAwOwogIH0KCiAgZnVuY3Rpb24gYnl0ZUxlbmd0aChzdHIpIHsKICAgIGlmICh3aW5kb3cuQmxvYikgewogICAgICB0cnkgeyByZXR1cm4gbmV3IEJsb2IoW3N0cl0pLnNpemU7IH0gY2F0Y2ggKGUpIHt9CiAgICB9CiAgICB2YXIgcyA9IHN0ci5sZW5ndGg7CiAgICBmb3IgKHZhciBpPXN0ci5sZW5ndGgtMTsgaT49MDsgaS0tKSB7CiAgICAgIHZhciBjb2RlID0gc3RyLmNoYXJDb2RlQXQoaSk7CiAgICAgIGlmIChjb2RlID4gMHg3ZiAmJiBjb2RlIDw9IDB4N2ZmKSBzKys7CiAgICAgIGVsc2UgaWYgKGNvZGUgPiAweDdmZiAmJiBjb2RlIDw9IDB4ZmZmZikgcys9MjsKICAgICAgaWYgKGNvZGUgPj0gMHhkYzAwICYmIGNvZGUgPD0gMHhkZmZmKSBpLS07CiAgICB9CiAgICByZXR1cm4gczsKICB9CgogIHZhciBCYWNrQnV0dG9uID0gKGZ1bmN0aW9uKCkgewogICAgdmFyIGlzVmlzaWJsZSA9IGZhbHNlOwoKICAgIHZhciBiYWNrQnV0dG9uID0ge307CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYmFja0J1dHRvbiwgJ2lzVmlzaWJsZScsIHsKICAgICAgc2V0OiBmdW5jdGlvbih2YWwpeyBzZXRQYXJhbXMoe2lzX3Zpc2libGU6IHZhbH0pOyB9LAogICAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiBpc1Zpc2libGU7IH0sCiAgICAgIGVudW1lcmFibGU6IHRydWUKICAgIH0pOwoKICAgIHZhciBjdXJCdXR0b25TdGF0ZSA9IG51bGw7CgogICAgV2ViVmlldy5vbkV2ZW50KCdiYWNrX2J1dHRvbl9wcmVzc2VkJywgb25CYWNrQnV0dG9uUHJlc3NlZCk7CgogICAgZnVuY3Rpb24gb25CYWNrQnV0dG9uUHJlc3NlZCgpIHsKICAgICAgcmVjZWl2ZVdlYlZpZXdFdmVudCgnYmFja0J1dHRvbkNsaWNrZWQnKTsKICAgIH0KCiAgICBmdW5jdGlvbiBidXR0b25QYXJhbXMoKSB7CiAgICAgIHJldHVybiB7aXNfdmlzaWJsZTogaXNWaXNpYmxlfTsKICAgIH0KCiAgICBmdW5jdGlvbiBidXR0b25TdGF0ZShidG5fcGFyYW1zKSB7CiAgICAgIGlmICh0eXBlb2YgYnRuX3BhcmFtcyA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICBidG5fcGFyYW1zID0gYnV0dG9uUGFyYW1zKCk7CiAgICAgIH0KICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGJ0bl9wYXJhbXMpOwogICAgfQoKICAgIGZ1bmN0aW9uIGJ1dHRvbkNoZWNrVmVyc2lvbigpIHsKICAgICAgaWYgKCF2ZXJzaW9uQXRMZWFzdCgnNi4xJykpIHsKICAgICAgICBjb25zb2xlLndhcm4oJ1tUZWxlZ3JhbS5XZWJBcHBdIEJhY2tCdXR0b24gaXMgbm90IHN1cHBvcnRlZCBpbiB2ZXJzaW9uICcgKyB3ZWJBcHBWZXJzaW9uKTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgZnVuY3Rpb24gdXBkYXRlQnV0dG9uKCkgewogICAgICB2YXIgYnRuX3BhcmFtcyA9IGJ1dHRvblBhcmFtcygpOwogICAgICB2YXIgYnRuX3N0YXRlID0gYnV0dG9uU3RhdGUoYnRuX3BhcmFtcyk7CiAgICAgIGlmIChjdXJCdXR0b25TdGF0ZSA9PT0gYnRuX3N0YXRlKSB7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGN1ckJ1dHRvblN0YXRlID0gYnRuX3N0YXRlOwogICAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9zZXR1cF9iYWNrX2J1dHRvbicsIGZhbHNlLCBidG5fcGFyYW1zKTsKICAgIH0KCiAgICBmdW5jdGlvbiBzZXRQYXJhbXMocGFyYW1zKSB7CiAgICAgIGlmICghYnV0dG9uQ2hlY2tWZXJzaW9uKCkpIHsKICAgICAgICByZXR1cm4gYmFja0J1dHRvbjsKICAgICAgfQogICAgICBpZiAodHlwZW9mIHBhcmFtcy5pc192aXNpYmxlICE9PSAndW5kZWZpbmVkJykgewogICAgICAgIGlzVmlzaWJsZSA9ICEhcGFyYW1zLmlzX3Zpc2libGU7CiAgICAgIH0KICAgICAgdXBkYXRlQnV0dG9uKCk7CiAgICAgIHJldHVybiBiYWNrQnV0dG9uOwogICAgfQoKICAgIGJhY2tCdXR0b24ub25DbGljayA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgIGlmIChidXR0b25DaGVja1ZlcnNpb24oKSkgewogICAgICAgIG9uV2ViVmlld0V2ZW50KCdiYWNrQnV0dG9uQ2xpY2tlZCcsIGNhbGxiYWNrKTsKICAgICAgfQogICAgICByZXR1cm4gYmFja0J1dHRvbjsKICAgIH07CiAgICBiYWNrQnV0dG9uLm9mZkNsaWNrID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgICAgaWYgKGJ1dHRvbkNoZWNrVmVyc2lvbigpKSB7CiAgICAgICAgb2ZmV2ViVmlld0V2ZW50KCdiYWNrQnV0dG9uQ2xpY2tlZCcsIGNhbGxiYWNrKTsKICAgICAgfQogICAgICByZXR1cm4gYmFja0J1dHRvbjsKICAgIH07CiAgICBiYWNrQnV0dG9uLnNob3cgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIHNldFBhcmFtcyh7aXNfdmlzaWJsZTogdHJ1ZX0pOwogICAgfTsKICAgIGJhY2tCdXR0b24uaGlkZSA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gc2V0UGFyYW1zKHtpc192aXNpYmxlOiBmYWxzZX0pOwogICAgfTsKICAgIHJldHVybiBiYWNrQnV0dG9uOwogIH0pKCk7CgogIHZhciBkZWJ1Z0JvdHRvbUJhciA9IG51bGwsIGRlYnVnQm90dG9tQmFyQnRucyA9IHt9LCBib3R0b21CYXJIZWlnaHQgPSAwOwogIGlmIChpbml0UGFyYW1zLnRnV2ViQXBwRGVidWcpIHsKICAgIGRlYnVnQm90dG9tQmFyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGctYm90dG9tLWJhcicpOwogICAgdmFyIGRlYnVnQm90dG9tQmFyU3R5bGUgPSB7CiAgICAgIGRpc3BsYXk6ICdmbGV4JywKICAgICAgZ2FwOiAnN3B4JywKICAgICAgZm9udDogJzYwMCAxNHB4LzE4cHggc2Fucy1zZXJpZicsCiAgICAgIHdpZHRoOiAnMTAwJScsCiAgICAgIGJhY2tncm91bmQ6IGdldEJvdHRvbUJhckNvbG9yKCksCiAgICAgIHBvc2l0aW9uOiAnZml4ZWQnLAogICAgICBsZWZ0OiAnMCcsCiAgICAgIHJpZ2h0OiAnMCcsCiAgICAgIGJvdHRvbTogJzAnLAogICAgICBtYXJnaW46ICcwJywKICAgICAgcGFkZGluZzogJzdweCcsCiAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsCiAgICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLAogICAgICB6SW5kZXg6ICcxMDAwMCcKICAgIH07CiAgICBmb3IgKHZhciBrIGluIGRlYnVnQm90dG9tQmFyU3R5bGUpIHsKICAgICAgZGVidWdCb3R0b21CYXIuc3R5bGVba10gPSBkZWJ1Z0JvdHRvbUJhclN0eWxlW2tdOwogICAgfQogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZ1bmN0aW9uIG9uRG9tTG9hZGVkKGV2ZW50KSB7CiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ0RPTUNvbnRlbnRMb2FkZWQnLCBvbkRvbUxvYWRlZCk7CiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGVidWdCb3R0b21CYXIpOwogICAgfSk7CiAgICB2YXIgYW5pbVN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTsKICAgIGFuaW1TdHlsZS5pbm5lckhUTUwgPSAndGctYm90dG9tLWJ1dHRvbi5zaGluZSB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgb3ZlcmZsb3c6IGhpZGRlbjsgfSB0Zy1ib3R0b20tYnV0dG9uLnNoaW5lOmJlZm9yZSB7IGNvbnRlbnQ6IiI7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTIwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAuMiksIHRyYW5zcGFyZW50KTsgYW5pbWF0aW9uOiB0Zy1ib3R0b20tYnV0dG9uLXNoaW5lIDVzIGVhc2UtaW4tb3V0IGluZmluaXRlOyB9IEAtd2Via2l0LWtleWZyYW1lcyB0Zy1ib3R0b20tYnV0dG9uLXNoaW5lIHsgMCUge2xlZnQ6IC0xMDAlO30gMTIlLDEwMCUge2xlZnQ6IDEwMCV9fSBAa2V5ZnJhbWVzIHRnLWJvdHRvbS1idXR0b24tc2hpbmUgeyAwJSB7bGVmdDogLTEwMCU7fSAxMiUsMTAwJSB7bGVmdDogMTAwJX19JzsKICAgIGRlYnVnQm90dG9tQmFyLmFwcGVuZENoaWxkKGFuaW1TdHlsZSk7CiAgfQogIGZ1bmN0aW9uIHVwZGF0ZURlYnVnQm90dG9tQmFyKCkgewogICAgdmFyIG1haW5CdG4gPSBkZWJ1Z0JvdHRvbUJhckJ0bnMubWFpbi5fYm90dG9tQnV0dG9uOwogICAgdmFyIHNlY29uZGFyeUJ0biA9IGRlYnVnQm90dG9tQmFyQnRucy5zZWNvbmRhcnkuX2JvdHRvbUJ1dHRvbjsKICAgIGlmIChtYWluQnRuLmlzVmlzaWJsZSB8fCBzZWNvbmRhcnlCdG4uaXNWaXNpYmxlKSB7CiAgICAgIGRlYnVnQm90dG9tQmFyLnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7CiAgICAgIGJvdHRvbUJhckhlaWdodCA9IDU4OwogICAgICBpZiAobWFpbkJ0bi5pc1Zpc2libGUgJiYgc2Vjb25kYXJ5QnRuLmlzVmlzaWJsZSkgewogICAgICAgIGlmIChzZWNvbmRhcnlCdG4ucG9zaXRpb24gPT0gJ3RvcCcpIHsKICAgICAgICAgIGRlYnVnQm90dG9tQmFyLnN0eWxlLmZsZXhEaXJlY3Rpb24gPSAnY29sdW1uLXJldmVyc2UnOwogICAgICAgICAgYm90dG9tQmFySGVpZ2h0ICs9IDUxOwogICAgICAgIH0gZWxzZSBpZiAoc2Vjb25kYXJ5QnRuLnBvc2l0aW9uID09ICdib3R0b20nKSB7CiAgICAgICAgICBkZWJ1Z0JvdHRvbUJhci5zdHlsZS5mbGV4RGlyZWN0aW9uID0gJ2NvbHVtbic7CiAgICAgICAgICBib3R0b21CYXJIZWlnaHQgKz0gNTE7CiAgICAgICAgfSBlbHNlIGlmIChzZWNvbmRhcnlCdG4ucG9zaXRpb24gPT0gJ2xlZnQnKSB7CiAgICAgICAgICBkZWJ1Z0JvdHRvbUJhci5zdHlsZS5mbGV4RGlyZWN0aW9uID0gJ3Jvdy1yZXZlcnNlJzsKICAgICAgICB9IGVsc2UgaWYgKHNlY29uZGFyeUJ0bi5wb3NpdGlvbiA9PSAncmlnaHQnKSB7CiAgICAgICAgICBkZWJ1Z0JvdHRvbUJhci5zdHlsZS5mbGV4RGlyZWN0aW9uID0gJ3Jvdyc7CiAgICAgICAgfQogICAgICB9CiAgICB9IGVsc2UgewogICAgICBkZWJ1Z0JvdHRvbUJhci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogICAgICBib3R0b21CYXJIZWlnaHQgPSAwOwogICAgfQogICAgZGVidWdCb3R0b21CYXIuc3R5bGUuYmFja2dyb3VuZCA9IGdldEJvdHRvbUJhckNvbG9yKCk7CiAgICBpZiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSB7CiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5ib3hTaXppbmcgPSAnYm9yZGVyLWJveCc7CiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5wYWRkaW5nQm90dG9tID0gYm90dG9tQmFySGVpZ2h0ICsgJ3B4JzsKICAgIH0KICAgIHNldFZpZXdwb3J0SGVpZ2h0KCk7CiAgfQoKCiAgdmFyIEJvdHRvbUJ1dHRvbkNvbnN0cnVjdG9yID0gZnVuY3Rpb24odHlwZSkgewogICAgdmFyIGlzTWFpbkJ1dHRvbiA9ICh0eXBlID09ICdtYWluJyk7CiAgICBpZiAoaXNNYWluQnV0dG9uKSB7CiAgICAgIHZhciBzZXR1cEZuTmFtZSA9ICd3ZWJfYXBwX3NldHVwX21haW5fYnV0dG9uJzsKICAgICAgdmFyIHRnRXZlbnROYW1lID0gJ21haW5fYnV0dG9uX3ByZXNzZWQnOwogICAgICB2YXIgd2ViVmlld0V2ZW50TmFtZSA9ICdtYWluQnV0dG9uQ2xpY2tlZCc7CiAgICAgIHZhciBidXR0b25UZXh0RGVmYXVsdCA9ICdDb250aW51ZSc7CiAgICAgIHZhciBidXR0b25Db2xvckRlZmF1bHQgPSBmdW5jdGlvbigpeyByZXR1cm4gdGhlbWVQYXJhbXMuYnV0dG9uX2NvbG9yIHx8ICcjMjQ4MWNjJzsgfTsKICAgICAgdmFyIGJ1dHRvblRleHRDb2xvckRlZmF1bHQgPSBmdW5jdGlvbigpeyByZXR1cm4gdGhlbWVQYXJhbXMuYnV0dG9uX3RleHRfY29sb3IgfHwgJyNmZmZmZmYnOyB9OwogICAgfSBlbHNlIHsKICAgICAgdmFyIHNldHVwRm5OYW1lID0gJ3dlYl9hcHBfc2V0dXBfc2Vjb25kYXJ5X2J1dHRvbic7CiAgICAgIHZhciB0Z0V2ZW50TmFtZSA9ICdzZWNvbmRhcnlfYnV0dG9uX3ByZXNzZWQnOwogICAgICB2YXIgd2ViVmlld0V2ZW50TmFtZSA9ICdzZWNvbmRhcnlCdXR0b25DbGlja2VkJzsKICAgICAgdmFyIGJ1dHRvblRleHREZWZhdWx0ID0gJ0NhbmNlbCc7CiAgICAgIHZhciBidXR0b25Db2xvckRlZmF1bHQgPSBmdW5jdGlvbigpeyByZXR1cm4gZ2V0Qm90dG9tQmFyQ29sb3IoKTsgfTsKICAgICAgdmFyIGJ1dHRvblRleHRDb2xvckRlZmF1bHQgPSBmdW5jdGlvbigpeyByZXR1cm4gdGhlbWVQYXJhbXMuYnV0dG9uX2NvbG9yIHx8ICcjMjQ4MWNjJzsgfTsKICAgIH0KCiAgICB2YXIgaXNWaXNpYmxlID0gZmFsc2U7CiAgICB2YXIgaXNBY3RpdmUgPSB0cnVlOwogICAgdmFyIGhhc1NoaW5lRWZmZWN0ID0gZmFsc2U7CiAgICB2YXIgaXNQcm9ncmVzc1Zpc2libGUgPSBmYWxzZTsKICAgIHZhciBpY29uQ3VzdG9tRW1vamlJZCA9IGZhbHNlOwogICAgdmFyIGJ1dHRvblR5cGUgPSB0eXBlOwogICAgdmFyIGJ1dHRvblRleHQgPSBidXR0b25UZXh0RGVmYXVsdDsKICAgIHZhciBidXR0b25Db2xvciA9IGZhbHNlOwogICAgdmFyIGJ1dHRvblRleHRDb2xvciA9IGZhbHNlOwogICAgdmFyIGJ1dHRvblBvc2l0aW9uID0gJ2xlZnQnOwoKICAgIHZhciBib3R0b21CdXR0b24gPSB7fTsKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShib3R0b21CdXR0b24sICd0eXBlJywgewogICAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiBidXR0b25UeXBlOyB9LAogICAgICBlbnVtZXJhYmxlOiB0cnVlCiAgICB9KTsKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShib3R0b21CdXR0b24sICdpY29uQ3VzdG9tRW1vamlJZCcsIHsKICAgICAgc2V0OiBmdW5jdGlvbih2YWwpeyBib3R0b21CdXR0b24uc2V0UGFyYW1zKHtpY29uX2N1c3RvbV9lbW9qaV9pZDogdmFsfSk7IH0sCiAgICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIGljb25DdXN0b21FbW9qaUlkOyB9LAogICAgICBlbnVtZXJhYmxlOiB0cnVlCiAgICB9KTsKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShib3R0b21CdXR0b24sICd0ZXh0JywgewogICAgICBzZXQ6IGZ1bmN0aW9uKHZhbCl7IGJvdHRvbUJ1dHRvbi5zZXRQYXJhbXMoe3RleHQ6IHZhbH0pOyB9LAogICAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiBidXR0b25UZXh0OyB9LAogICAgICBlbnVtZXJhYmxlOiB0cnVlCiAgICB9KTsKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShib3R0b21CdXR0b24sICdjb2xvcicsIHsKICAgICAgc2V0OiBmdW5jdGlvbih2YWwpeyBib3R0b21CdXR0b24uc2V0UGFyYW1zKHtjb2xvcjogdmFsfSk7IH0sCiAgICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIGJ1dHRvbkNvbG9yIHx8IGJ1dHRvbkNvbG9yRGVmYXVsdCgpOyB9LAogICAgICBlbnVtZXJhYmxlOiB0cnVlCiAgICB9KTsKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShib3R0b21CdXR0b24sICd0ZXh0Q29sb3InLCB7CiAgICAgIHNldDogZnVuY3Rpb24odmFsKXsgYm90dG9tQnV0dG9uLnNldFBhcmFtcyh7dGV4dF9jb2xvcjogdmFsfSk7IH0sCiAgICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIGJ1dHRvblRleHRDb2xvciB8fCBidXR0b25UZXh0Q29sb3JEZWZhdWx0KCk7IH0sCiAgICAgIGVudW1lcmFibGU6IHRydWUKICAgIH0pOwogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGJvdHRvbUJ1dHRvbiwgJ2lzVmlzaWJsZScsIHsKICAgICAgc2V0OiBmdW5jdGlvbih2YWwpeyBib3R0b21CdXR0b24uc2V0UGFyYW1zKHtpc192aXNpYmxlOiB2YWx9KTsgfSwKICAgICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gaXNWaXNpYmxlOyB9LAogICAgICBlbnVtZXJhYmxlOiB0cnVlCiAgICB9KTsKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShib3R0b21CdXR0b24sICdpc1Byb2dyZXNzVmlzaWJsZScsIHsKICAgICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gaXNQcm9ncmVzc1Zpc2libGU7IH0sCiAgICAgIGVudW1lcmFibGU6IHRydWUKICAgIH0pOwogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGJvdHRvbUJ1dHRvbiwgJ2lzQWN0aXZlJywgewogICAgICBzZXQ6IGZ1bmN0aW9uKHZhbCl7IGJvdHRvbUJ1dHRvbi5zZXRQYXJhbXMoe2lzX2FjdGl2ZTogdmFsfSk7IH0sCiAgICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIGlzQWN0aXZlOyB9LAogICAgICBlbnVtZXJhYmxlOiB0cnVlCiAgICB9KTsKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShib3R0b21CdXR0b24sICdoYXNTaGluZUVmZmVjdCcsIHsKICAgICAgc2V0OiBmdW5jdGlvbih2YWwpeyBib3R0b21CdXR0b24uc2V0UGFyYW1zKHtoYXNfc2hpbmVfZWZmZWN0OiB2YWx9KTsgfSwKICAgICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gaGFzU2hpbmVFZmZlY3Q7IH0sCiAgICAgIGVudW1lcmFibGU6IHRydWUKICAgIH0pOwogICAgaWYgKCFpc01haW5CdXR0b24pIHsKICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGJvdHRvbUJ1dHRvbiwgJ3Bvc2l0aW9uJywgewogICAgICAgIHNldDogZnVuY3Rpb24odmFsKXsgYm90dG9tQnV0dG9uLnNldFBhcmFtcyh7cG9zaXRpb246IHZhbH0pOyB9LAogICAgICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIGJ1dHRvblBvc2l0aW9uOyB9LAogICAgICAgIGVudW1lcmFibGU6IHRydWUKICAgICAgfSk7CiAgICB9CgogICAgdmFyIGN1ckJ1dHRvblN0YXRlID0gbnVsbDsKCiAgICBXZWJWaWV3Lm9uRXZlbnQodGdFdmVudE5hbWUsIG9uQm90dG9tQnV0dG9uUHJlc3NlZCk7CgogICAgdmFyIGRlYnVnQnRuID0gbnVsbDsKICAgIGlmIChpbml0UGFyYW1zLnRnV2ViQXBwRGVidWcpIHsKICAgICAgZGVidWdCdG4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0Zy1ib3R0b20tYnV0dG9uJyk7CiAgICAgIHZhciBkZWJ1Z0J0blN0eWxlID0gewogICAgICAgIGRpc3BsYXk6ICdub25lJywKICAgICAgICB3aWR0aDogJzEwMCUnLAogICAgICAgIGhlaWdodDogJzQ0cHgnLAogICAgICAgIGJvcmRlclJhZGl1czogJzAnLAogICAgICAgIGJhY2tncm91bmQ6ICduby1yZXBlYXQgcmlnaHQgY2VudGVyJywKICAgICAgICBwYWRkaW5nOiAnMTNweCAxNXB4JywKICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInLAogICAgICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnCiAgICAgIH07CiAgICAgIGZvciAodmFyIGsgaW4gZGVidWdCdG5TdHlsZSkgewogICAgICAgIGRlYnVnQnRuLnN0eWxlW2tdID0gZGVidWdCdG5TdHlsZVtrXTsKICAgICAgfQogICAgICBkZWJ1Z0JvdHRvbUJhci5hcHBlbmRDaGlsZChkZWJ1Z0J0bik7CiAgICAgIGRlYnVnQnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgb25Cb3R0b21CdXR0b25QcmVzc2VkLCBmYWxzZSk7CiAgICAgIGRlYnVnQnRuLl9ib3R0b21CdXR0b24gPSBib3R0b21CdXR0b247CiAgICAgIGRlYnVnQm90dG9tQmFyQnRuc1t0eXBlXSA9IGRlYnVnQnRuOwogICAgfQoKICAgIGZ1bmN0aW9uIG9uQm90dG9tQnV0dG9uUHJlc3NlZCgpIHsKICAgICAgaWYgKGlzQWN0aXZlKSB7CiAgICAgICAgcmVjZWl2ZVdlYlZpZXdFdmVudCh3ZWJWaWV3RXZlbnROYW1lKTsKICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGJ1dHRvblBhcmFtcygpIHsKICAgICAgdmFyIGNvbG9yID0gYm90dG9tQnV0dG9uLmNvbG9yOwogICAgICB2YXIgdGV4dF9jb2xvciA9IGJvdHRvbUJ1dHRvbi50ZXh0Q29sb3I7CiAgICAgIGlmIChpc1Zpc2libGUpIHsKICAgICAgICB2YXIgcGFyYW1zID0gewogICAgICAgICAgaXNfdmlzaWJsZTogdHJ1ZSwKICAgICAgICAgIGlzX2FjdGl2ZTogaXNBY3RpdmUsCiAgICAgICAgICBpc19wcm9ncmVzc192aXNpYmxlOiBpc1Byb2dyZXNzVmlzaWJsZSwKICAgICAgICAgIGljb25fY3VzdG9tX2Vtb2ppX2lkOiBpY29uQ3VzdG9tRW1vamlJZCwKICAgICAgICAgIHRleHQ6IGJ1dHRvblRleHQsCiAgICAgICAgICBjb2xvcjogY29sb3IsCiAgICAgICAgICB0ZXh0X2NvbG9yOiB0ZXh0X2NvbG9yLAogICAgICAgICAgaGFzX3NoaW5lX2VmZmVjdDogaGFzU2hpbmVFZmZlY3QgJiYgaXNBY3RpdmUgJiYgIWlzUHJvZ3Jlc3NWaXNpYmxlCiAgICAgICAgfTsKICAgICAgICBpZiAoIWlzTWFpbkJ1dHRvbikgewogICAgICAgICAgcGFyYW1zLnBvc2l0aW9uID0gYnV0dG9uUG9zaXRpb247CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIHZhciBwYXJhbXMgPSB7CiAgICAgICAgICBpc192aXNpYmxlOiBmYWxzZQogICAgICAgIH07CiAgICAgIH0KICAgICAgcmV0dXJuIHBhcmFtczsKICAgIH0KCiAgICBmdW5jdGlvbiBidXR0b25TdGF0ZShidG5fcGFyYW1zKSB7CiAgICAgIGlmICh0eXBlb2YgYnRuX3BhcmFtcyA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICBidG5fcGFyYW1zID0gYnV0dG9uUGFyYW1zKCk7CiAgICAgIH0KICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGJ0bl9wYXJhbXMpOwogICAgfQoKICAgIGZ1bmN0aW9uIHVwZGF0ZUJ1dHRvbigpIHsKICAgICAgdmFyIGJ0bl9wYXJhbXMgPSBidXR0b25QYXJhbXMoKTsKICAgICAgdmFyIGJ0bl9zdGF0ZSA9IGJ1dHRvblN0YXRlKGJ0bl9wYXJhbXMpOwogICAgICBpZiAoY3VyQnV0dG9uU3RhdGUgPT09IGJ0bl9zdGF0ZSkgewogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBjdXJCdXR0b25TdGF0ZSA9IGJ0bl9zdGF0ZTsKICAgICAgV2ViVmlldy5wb3N0RXZlbnQoc2V0dXBGbk5hbWUsIGZhbHNlLCBidG5fcGFyYW1zKTsKICAgICAgaWYgKGluaXRQYXJhbXMudGdXZWJBcHBEZWJ1ZykgewogICAgICAgIHVwZGF0ZURlYnVnQnV0dG9uKGJ0bl9wYXJhbXMpOwogICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gdXBkYXRlRGVidWdCdXR0b24oYnRuX3BhcmFtcykgewogICAgICBpZiAoYnRuX3BhcmFtcy5pc192aXNpYmxlKSB7CiAgICAgICAgZGVidWdCdG4uc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CgogICAgICAgIGRlYnVnQnRuLnN0eWxlLm9wYWNpdHkgPSBidG5fcGFyYW1zLmlzX2FjdGl2ZSA/ICcxJyA6ICcwLjgnOwogICAgICAgIGRlYnVnQnRuLnN0eWxlLmN1cnNvciA9IGJ0bl9wYXJhbXMuaXNfYWN0aXZlID8gJ3BvaW50ZXInIDogJ2F1dG8nOwogICAgICAgIGRlYnVnQnRuLmRpc2FibGVkID0gIWJ0bl9wYXJhbXMuaXNfYWN0aXZlOwogICAgICAgIGRlYnVnQnRuLmlubmVyVGV4dCA9IGJ0bl9wYXJhbXMudGV4dDsKICAgICAgICBkZWJ1Z0J0bi5jbGFzc05hbWUgPSBidG5fcGFyYW1zLmhhc19zaGluZV9lZmZlY3QgPyAnc2hpbmUnIDogJyc7CiAgICAgICAgZGVidWdCdG4uc3R5bGUuYmFja2dyb3VuZEltYWdlID0gYnRuX3BhcmFtcy5pc19wcm9ncmVzc192aXNpYmxlID8gInVybCgnZGF0YTppbWFnZS9zdmcreG1sLCIgKyBlbmNvZGVVUklDb21wb25lbnQoJzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmlld3BvcnQ9IjAgMCA0OCA0OCIgd2lkdGg9IjQ4cHgiIGhlaWdodD0iNDhweCI+PGNpcmNsZSBjeD0iNTAlIiBjeT0iNTAlIiBzdHJva2U9IicgKyBidG5fcGFyYW1zLnRleHRfY29sb3IgKyAnIiBzdHJva2Utd2lkdGg9IjIuMjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgZmlsbD0ibm9uZSIgc3Ryb2tlLWRhc2hvZmZzZXQ9IjEwNiIgcj0iOSIgc3Ryb2tlLWRhc2hhcnJheT0iNTYuNTIiIHJvdGF0ZT0iLTkwIj48YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdHJva2UtZGFzaG9mZnNldCIgYXR0cmlidXRlVHlwZT0iWE1MIiBkdXI9IjM2MHMiIGZyb209IjAiIHRvPSIxMjUwMCIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiPjwvYW5pbWF0ZT48YW5pbWF0ZVRyYW5zZm9ybSBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iIGF0dHJpYnV0ZVR5cGU9IlhNTCIgdHlwZT0icm90YXRlIiBkdXI9IjFzIiBmcm9tPSItOTAgMjQgMjQiIHRvPSI2MzAgMjQgMjQiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIj48L2FuaW1hdGVUcmFuc2Zvcm0+PC9jaXJjbGU+PC9zdmc+JykgKyAiJykiIDogJ25vbmUnOwogICAgICAgIGRlYnVnQnRuLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGJ0bl9wYXJhbXMuY29sb3I7CiAgICAgICAgZGVidWdCdG4uc3R5bGUuY29sb3IgPSBidG5fcGFyYW1zLnRleHRfY29sb3I7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgZGVidWdCdG4uc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICAgICAgfQogICAgICB1cGRhdGVEZWJ1Z0JvdHRvbUJhcigpOwogICAgfQoKICAgIGZ1bmN0aW9uIHNldFBhcmFtcyhwYXJhbXMpIHsKICAgICAgaWYgKHR5cGVvZiBwYXJhbXMuaWNvbl9jdXN0b21fZW1vamlfaWQgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgdmFyIGVtb2ppX2lkID0gcGFyYW1zLmljb25fY3VzdG9tX2Vtb2ppX2lkOwogICAgICAgIGlmIChlbW9qaV9pZCA9PT0gZmFsc2UgfHwgZW1vamlfaWQgPT09IG51bGwpIHsKICAgICAgICAgIGVtb2ppX2lkID0gJyc7CiAgICAgICAgfQogICAgICAgIGlmIChlbW9qaV9pZCAhPT0gJycgJiYgIS9eWzAtOV17MTAsMjB9JC8udGVzdChlbW9qaV9pZCkpIHsKICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIEJvdHRvbSBidXR0b24gaWNvbiBjdXN0b20gZW1vamkgaXMgaW52YWxpZCcsIHBhcmFtcy5pY29uX2N1c3RvbV9lbW9qaV9pZCk7CiAgICAgICAgICB0aHJvdyBFcnJvcignV2ViQXBwQm90dG9tQnV0dG9uUGFyYW1JbnZhbGlkJyk7CiAgICAgICAgfQogICAgICAgIGljb25DdXN0b21FbW9qaUlkID0gZW1vamlfaWQ7CiAgICAgIH0KICAgICAgaWYgKHR5cGVvZiBwYXJhbXMudGV4dCAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICB2YXIgdGV4dCA9IHN0clRyaW0ocGFyYW1zLnRleHQpOwogICAgICAgIGlmICghdGV4dC5sZW5ndGggJiYgIWljb25DdXN0b21FbW9qaUlkKSB7CiAgICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBCb3R0b20gYnV0dG9uIHRleHQgaXMgcmVxdWlyZWQnLCBwYXJhbXMudGV4dCk7CiAgICAgICAgICB0aHJvdyBFcnJvcignV2ViQXBwQm90dG9tQnV0dG9uUGFyYW1JbnZhbGlkJyk7CiAgICAgICAgfQogICAgICAgIGlmICh0ZXh0Lmxlbmd0aCA+IDY0KSB7CiAgICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBCb3R0b20gYnV0dG9uIHRleHQgaXMgdG9vIGxvbmcnLCB0ZXh0KTsKICAgICAgICAgIHRocm93IEVycm9yKCdXZWJBcHBCb3R0b21CdXR0b25QYXJhbUludmFsaWQnKTsKICAgICAgICB9CiAgICAgICAgYnV0dG9uVGV4dCA9IHRleHQ7CiAgICAgIH0KICAgICAgaWYgKHR5cGVvZiBwYXJhbXMuY29sb3IgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgaWYgKHBhcmFtcy5jb2xvciA9PT0gZmFsc2UgfHwKICAgICAgICAgICAgcGFyYW1zLmNvbG9yID09PSBudWxsKSB7CiAgICAgICAgICBidXR0b25Db2xvciA9IGZhbHNlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICB2YXIgY29sb3IgPSBwYXJzZUNvbG9yVG9IZXgocGFyYW1zLmNvbG9yKTsKICAgICAgICAgIGlmICghY29sb3IpIHsKICAgICAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gQm90dG9tIGJ1dHRvbiBjb2xvciBmb3JtYXQgaXMgaW52YWxpZCcsIHBhcmFtcy5jb2xvcik7CiAgICAgICAgICAgIHRocm93IEVycm9yKCdXZWJBcHBCb3R0b21CdXR0b25QYXJhbUludmFsaWQnKTsKICAgICAgICAgIH0KICAgICAgICAgIGJ1dHRvbkNvbG9yID0gY29sb3I7CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmICh0eXBlb2YgcGFyYW1zLnRleHRfY29sb3IgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgaWYgKHBhcmFtcy50ZXh0X2NvbG9yID09PSBmYWxzZSB8fAogICAgICAgICAgICBwYXJhbXMudGV4dF9jb2xvciA9PT0gbnVsbCkgewogICAgICAgICAgYnV0dG9uVGV4dENvbG9yID0gZmFsc2U7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIHZhciB0ZXh0X2NvbG9yID0gcGFyc2VDb2xvclRvSGV4KHBhcmFtcy50ZXh0X2NvbG9yKTsKICAgICAgICAgIGlmICghdGV4dF9jb2xvcikgewogICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBCb3R0b20gYnV0dG9uIHRleHQgY29sb3IgZm9ybWF0IGlzIGludmFsaWQnLCBwYXJhbXMudGV4dF9jb2xvcik7CiAgICAgICAgICAgIHRocm93IEVycm9yKCdXZWJBcHBCb3R0b21CdXR0b25QYXJhbUludmFsaWQnKTsKICAgICAgICAgIH0KICAgICAgICAgIGJ1dHRvblRleHRDb2xvciA9IHRleHRfY29sb3I7CiAgICAgICAgfQogICAgICB9CiAgICAgIGlmICh0eXBlb2YgcGFyYW1zLmlzX3Zpc2libGUgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgaWYgKHBhcmFtcy5pc192aXNpYmxlICYmCiAgICAgICAgICAgICFib3R0b21CdXR0b24udGV4dC5sZW5ndGgpIHsKICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIEJvdHRvbSBidXR0b24gdGV4dCBpcyByZXF1aXJlZCcpOwogICAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcEJvdHRvbUJ1dHRvblBhcmFtSW52YWxpZCcpOwogICAgICAgIH0KICAgICAgICBpc1Zpc2libGUgPSAhIXBhcmFtcy5pc192aXNpYmxlOwogICAgICB9CiAgICAgIGlmICh0eXBlb2YgcGFyYW1zLmhhc19zaGluZV9lZmZlY3QgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgaGFzU2hpbmVFZmZlY3QgPSAhIXBhcmFtcy5oYXNfc2hpbmVfZWZmZWN0OwogICAgICB9CiAgICAgIGlmICghaXNNYWluQnV0dG9uICYmIHR5cGVvZiBwYXJhbXMucG9zaXRpb24gIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgaWYgKHBhcmFtcy5wb3NpdGlvbiAhPSAnbGVmdCcgJiYgcGFyYW1zLnBvc2l0aW9uICE9ICdyaWdodCcgJiYKICAgICAgICAgICAgcGFyYW1zLnBvc2l0aW9uICE9ICd0b3AnICYmIHBhcmFtcy5wb3NpdGlvbiAhPSAnYm90dG9tJykgewogICAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gQm90dG9tIGJ1dHRvbiBwb3NpaXRpb24gaXMgaW52YWxpZCcsIHBhcmFtcy5wb3NpdGlvbik7CiAgICAgICAgICB0aHJvdyBFcnJvcignV2ViQXBwQm90dG9tQnV0dG9uUGFyYW1JbnZhbGlkJyk7CiAgICAgICAgfQogICAgICAgIGJ1dHRvblBvc2l0aW9uID0gcGFyYW1zLnBvc2l0aW9uOwogICAgICB9CiAgICAgIGlmICh0eXBlb2YgcGFyYW1zLmlzX2FjdGl2ZSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICBpc0FjdGl2ZSA9ICEhcGFyYW1zLmlzX2FjdGl2ZTsKICAgICAgfQogICAgICB1cGRhdGVCdXR0b24oKTsKICAgICAgcmV0dXJuIGJvdHRvbUJ1dHRvbjsKICAgIH0KCiAgICBib3R0b21CdXR0b24uc2V0VGV4dCA9IGZ1bmN0aW9uKHRleHQpIHsKICAgICAgcmV0dXJuIGJvdHRvbUJ1dHRvbi5zZXRQYXJhbXMoe3RleHQ6IHRleHR9KTsKICAgIH07CiAgICBib3R0b21CdXR0b24ub25DbGljayA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgIG9uV2ViVmlld0V2ZW50KHdlYlZpZXdFdmVudE5hbWUsIGNhbGxiYWNrKTsKICAgICAgcmV0dXJuIGJvdHRvbUJ1dHRvbjsKICAgIH07CiAgICBib3R0b21CdXR0b24ub2ZmQ2xpY2sgPSBmdW5jdGlvbihjYWxsYmFjaykgewogICAgICBvZmZXZWJWaWV3RXZlbnQod2ViVmlld0V2ZW50TmFtZSwgY2FsbGJhY2spOwogICAgICByZXR1cm4gYm90dG9tQnV0dG9uOwogICAgfTsKICAgIGJvdHRvbUJ1dHRvbi5zaG93ID0gZnVuY3Rpb24oKSB7CiAgICAgIHJldHVybiBib3R0b21CdXR0b24uc2V0UGFyYW1zKHtpc192aXNpYmxlOiB0cnVlfSk7CiAgICB9OwogICAgYm90dG9tQnV0dG9uLmhpZGUgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIGJvdHRvbUJ1dHRvbi5zZXRQYXJhbXMoe2lzX3Zpc2libGU6IGZhbHNlfSk7CiAgICB9OwogICAgYm90dG9tQnV0dG9uLmVuYWJsZSA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gYm90dG9tQnV0dG9uLnNldFBhcmFtcyh7aXNfYWN0aXZlOiB0cnVlfSk7CiAgICB9OwogICAgYm90dG9tQnV0dG9uLmRpc2FibGUgPSBmdW5jdGlvbigpIHsKICAgICAgcmV0dXJuIGJvdHRvbUJ1dHRvbi5zZXRQYXJhbXMoe2lzX2FjdGl2ZTogZmFsc2V9KTsKICAgIH07CiAgICBib3R0b21CdXR0b24uc2hvd1Byb2dyZXNzID0gZnVuY3Rpb24obGVhdmVBY3RpdmUpIHsKICAgICAgaXNBY3RpdmUgPSAhIWxlYXZlQWN0aXZlOwogICAgICBpc1Byb2dyZXNzVmlzaWJsZSA9IHRydWU7CiAgICAgIHVwZGF0ZUJ1dHRvbigpOwogICAgICByZXR1cm4gYm90dG9tQnV0dG9uOwogICAgfTsKICAgIGJvdHRvbUJ1dHRvbi5oaWRlUHJvZ3Jlc3MgPSBmdW5jdGlvbigpIHsKICAgICAgaWYgKCFib3R0b21CdXR0b24uaXNBY3RpdmUpIHsKICAgICAgICBpc0FjdGl2ZSA9IHRydWU7CiAgICAgIH0KICAgICAgaXNQcm9ncmVzc1Zpc2libGUgPSBmYWxzZTsKICAgICAgdXBkYXRlQnV0dG9uKCk7CiAgICAgIHJldHVybiBib3R0b21CdXR0b247CiAgICB9CiAgICBib3R0b21CdXR0b24uc2V0UGFyYW1zID0gc2V0UGFyYW1zOwogICAgcmV0dXJuIGJvdHRvbUJ1dHRvbjsKICB9OwogIHZhciBNYWluQnV0dG9uID0gQm90dG9tQnV0dG9uQ29uc3RydWN0b3IoJ21haW4nKTsKICB2YXIgU2Vjb25kYXJ5QnV0dG9uID0gQm90dG9tQnV0dG9uQ29uc3RydWN0b3IoJ3NlY29uZGFyeScpOwoKICB2YXIgU2V0dGluZ3NCdXR0b24gPSAoZnVuY3Rpb24oKSB7CiAgICB2YXIgaXNWaXNpYmxlID0gZmFsc2U7CgogICAgdmFyIHNldHRpbmdzQnV0dG9uID0ge307CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoc2V0dGluZ3NCdXR0b24sICdpc1Zpc2libGUnLCB7CiAgICAgIHNldDogZnVuY3Rpb24odmFsKXsgc2V0UGFyYW1zKHtpc192aXNpYmxlOiB2YWx9KTsgfSwKICAgICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gaXNWaXNpYmxlOyB9LAogICAgICBlbnVtZXJhYmxlOiB0cnVlCiAgICB9KTsKCiAgICB2YXIgY3VyQnV0dG9uU3RhdGUgPSBudWxsOwoKICAgIFdlYlZpZXcub25FdmVudCgnc2V0dGluZ3NfYnV0dG9uX3ByZXNzZWQnLCBvblNldHRpbmdzQnV0dG9uUHJlc3NlZCk7CgogICAgZnVuY3Rpb24gb25TZXR0aW5nc0J1dHRvblByZXNzZWQoKSB7CiAgICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQoJ3NldHRpbmdzQnV0dG9uQ2xpY2tlZCcpOwogICAgfQoKICAgIGZ1bmN0aW9uIGJ1dHRvblBhcmFtcygpIHsKICAgICAgcmV0dXJuIHtpc192aXNpYmxlOiBpc1Zpc2libGV9OwogICAgfQoKICAgIGZ1bmN0aW9uIGJ1dHRvblN0YXRlKGJ0bl9wYXJhbXMpIHsKICAgICAgaWYgKHR5cGVvZiBidG5fcGFyYW1zID09PSAndW5kZWZpbmVkJykgewogICAgICAgIGJ0bl9wYXJhbXMgPSBidXR0b25QYXJhbXMoKTsKICAgICAgfQogICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYnRuX3BhcmFtcyk7CiAgICB9CgogICAgZnVuY3Rpb24gYnV0dG9uQ2hlY2tWZXJzaW9uKCkgewogICAgICBpZiAoIXZlcnNpb25BdExlYXN0KCc2LjEwJykpIHsKICAgICAgICBjb25zb2xlLndhcm4oJ1tUZWxlZ3JhbS5XZWJBcHBdIFNldHRpbmdzQnV0dG9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdmVyc2lvbiAnICsgd2ViQXBwVmVyc2lvbik7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIGZ1bmN0aW9uIHVwZGF0ZUJ1dHRvbigpIHsKICAgICAgdmFyIGJ0bl9wYXJhbXMgPSBidXR0b25QYXJhbXMoKTsKICAgICAgdmFyIGJ0bl9zdGF0ZSA9IGJ1dHRvblN0YXRlKGJ0bl9wYXJhbXMpOwogICAgICBpZiAoY3VyQnV0dG9uU3RhdGUgPT09IGJ0bl9zdGF0ZSkgewogICAgICAgIHJldHVybjsKICAgICAgfQogICAgICBjdXJCdXR0b25TdGF0ZSA9IGJ0bl9zdGF0ZTsKICAgICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfc2V0dXBfc2V0dGluZ3NfYnV0dG9uJywgZmFsc2UsIGJ0bl9wYXJhbXMpOwogICAgfQoKICAgIGZ1bmN0aW9uIHNldFBhcmFtcyhwYXJhbXMpIHsKICAgICAgaWYgKCFidXR0b25DaGVja1ZlcnNpb24oKSkgewogICAgICAgIHJldHVybiBzZXR0aW5nc0J1dHRvbjsKICAgICAgfQogICAgICBpZiAodHlwZW9mIHBhcmFtcy5pc192aXNpYmxlICE9PSAndW5kZWZpbmVkJykgewogICAgICAgIGlzVmlzaWJsZSA9ICEhcGFyYW1zLmlzX3Zpc2libGU7CiAgICAgIH0KICAgICAgdXBkYXRlQnV0dG9uKCk7CiAgICAgIHJldHVybiBzZXR0aW5nc0J1dHRvbjsKICAgIH0KCiAgICBzZXR0aW5nc0J1dHRvbi5vbkNsaWNrID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgICAgaWYgKGJ1dHRvbkNoZWNrVmVyc2lvbigpKSB7CiAgICAgICAgb25XZWJWaWV3RXZlbnQoJ3NldHRpbmdzQnV0dG9uQ2xpY2tlZCcsIGNhbGxiYWNrKTsKICAgICAgfQogICAgICByZXR1cm4gc2V0dGluZ3NCdXR0b247CiAgICB9OwogICAgc2V0dGluZ3NCdXR0b24ub2ZmQ2xpY2sgPSBmdW5jdGlvbihjYWxsYmFjaykgewogICAgICBpZiAoYnV0dG9uQ2hlY2tWZXJzaW9uKCkpIHsKICAgICAgICBvZmZXZWJWaWV3RXZlbnQoJ3NldHRpbmdzQnV0dG9uQ2xpY2tlZCcsIGNhbGxiYWNrKTsKICAgICAgfQogICAgICByZXR1cm4gc2V0dGluZ3NCdXR0b247CiAgICB9OwogICAgc2V0dGluZ3NCdXR0b24uc2hvdyA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gc2V0UGFyYW1zKHtpc192aXNpYmxlOiB0cnVlfSk7CiAgICB9OwogICAgc2V0dGluZ3NCdXR0b24uaGlkZSA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gc2V0UGFyYW1zKHtpc192aXNpYmxlOiBmYWxzZX0pOwogICAgfTsKICAgIHJldHVybiBzZXR0aW5nc0J1dHRvbjsKICB9KSgpOwoKICB2YXIgSGFwdGljRmVlZGJhY2sgPSAoZnVuY3Rpb24oKSB7CiAgICB2YXIgaGFwdGljRmVlZGJhY2sgPSB7fTsKCiAgICBmdW5jdGlvbiB0cmlnZ2VyRmVlZGJhY2socGFyYW1zKSB7CiAgICAgIGlmICghdmVyc2lvbkF0TGVhc3QoJzYuMScpKSB7CiAgICAgICAgY29uc29sZS53YXJuKCdbVGVsZWdyYW0uV2ViQXBwXSBIYXB0aWNGZWVkYmFjayBpcyBub3Qgc3VwcG9ydGVkIGluIHZlcnNpb24gJyArIHdlYkFwcFZlcnNpb24pOwogICAgICAgIHJldHVybiBoYXB0aWNGZWVkYmFjazsKICAgICAgfQogICAgICBpZiAocGFyYW1zLnR5cGUgPT0gJ2ltcGFjdCcpIHsKICAgICAgICBpZiAocGFyYW1zLmltcGFjdF9zdHlsZSAhPSAnbGlnaHQnICYmCiAgICAgICAgICAgIHBhcmFtcy5pbXBhY3Rfc3R5bGUgIT0gJ21lZGl1bScgJiYKICAgICAgICAgICAgcGFyYW1zLmltcGFjdF9zdHlsZSAhPSAnaGVhdnknICYmCiAgICAgICAgICAgIHBhcmFtcy5pbXBhY3Rfc3R5bGUgIT0gJ3JpZ2lkJyAmJgogICAgICAgICAgICBwYXJhbXMuaW1wYWN0X3N0eWxlICE9ICdzb2Z0JykgewogICAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gSGFwdGljIGltcGFjdCBzdHlsZSBpcyBpbnZhbGlkJywgcGFyYW1zLmltcGFjdF9zdHlsZSk7CiAgICAgICAgICB0aHJvdyBFcnJvcignV2ViQXBwSGFwdGljSW1wYWN0U3R5bGVJbnZhbGlkJyk7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKHBhcmFtcy50eXBlID09ICdub3RpZmljYXRpb24nKSB7CiAgICAgICAgaWYgKHBhcmFtcy5ub3RpZmljYXRpb25fdHlwZSAhPSAnZXJyb3InICYmCiAgICAgICAgICAgIHBhcmFtcy5ub3RpZmljYXRpb25fdHlwZSAhPSAnc3VjY2VzcycgJiYKICAgICAgICAgICAgcGFyYW1zLm5vdGlmaWNhdGlvbl90eXBlICE9ICd3YXJuaW5nJykgewogICAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gSGFwdGljIG5vdGlmaWNhdGlvbiB0eXBlIGlzIGludmFsaWQnLCBwYXJhbXMubm90aWZpY2F0aW9uX3R5cGUpOwogICAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcEhhcHRpY05vdGlmaWNhdGlvblR5cGVJbnZhbGlkJyk7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKHBhcmFtcy50eXBlID09ICdzZWxlY3Rpb25fY2hhbmdlJykgewogICAgICAgIC8vIG5vIHBhcmFtcyBuZWVkZWQKICAgICAgfSBlbHNlIHsKICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBIYXB0aWMgZmVlZGJhY2sgdHlwZSBpcyBpbnZhbGlkJywgcGFyYW1zLnR5cGUpOwogICAgICAgIHRocm93IEVycm9yKCdXZWJBcHBIYXB0aWNGZWVkYmFja1R5cGVJbnZhbGlkJyk7CiAgICAgIH0KICAgICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfdHJpZ2dlcl9oYXB0aWNfZmVlZGJhY2snLCBmYWxzZSwgcGFyYW1zKTsKICAgICAgcmV0dXJuIGhhcHRpY0ZlZWRiYWNrOwogICAgfQoKICAgIGhhcHRpY0ZlZWRiYWNrLmltcGFjdE9jY3VycmVkID0gZnVuY3Rpb24oc3R5bGUpIHsKICAgICAgcmV0dXJuIHRyaWdnZXJGZWVkYmFjayh7dHlwZTogJ2ltcGFjdCcsIGltcGFjdF9zdHlsZTogc3R5bGV9KTsKICAgIH07CiAgICBoYXB0aWNGZWVkYmFjay5ub3RpZmljYXRpb25PY2N1cnJlZCA9IGZ1bmN0aW9uKHR5cGUpIHsKICAgICAgcmV0dXJuIHRyaWdnZXJGZWVkYmFjayh7dHlwZTogJ25vdGlmaWNhdGlvbicsIG5vdGlmaWNhdGlvbl90eXBlOiB0eXBlfSk7CiAgICB9OwogICAgaGFwdGljRmVlZGJhY2suc2VsZWN0aW9uQ2hhbmdlZCA9IGZ1bmN0aW9uKCkgewogICAgICByZXR1cm4gdHJpZ2dlckZlZWRiYWNrKHt0eXBlOiAnc2VsZWN0aW9uX2NoYW5nZSd9KTsKICAgIH07CiAgICByZXR1cm4gaGFwdGljRmVlZGJhY2s7CiAgfSkoKTsKCiAgdmFyIENsb3VkU3RvcmFnZSA9IChmdW5jdGlvbigpIHsKICAgIHZhciBjbG91ZFN0b3JhZ2UgPSB7fTsKCiAgICBmdW5jdGlvbiBpbnZva2VTdG9yYWdlTWV0aG9kKG1ldGhvZCwgcGFyYW1zLCBjYWxsYmFjaykgewogICAgICBpZiAoIXZlcnNpb25BdExlYXN0KCc2LjknKSkgewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIENsb3VkU3RvcmFnZSBpcyBub3Qgc3VwcG9ydGVkIGluIHZlcnNpb24gJyArIHdlYkFwcFZlcnNpb24pOwogICAgICAgIHRocm93IEVycm9yKCdXZWJBcHBNZXRob2RVbnN1cHBvcnRlZCcpOwogICAgICB9CiAgICAgIGludm9rZUN1c3RvbU1ldGhvZChtZXRob2QsIHBhcmFtcywgY2FsbGJhY2spOwogICAgICByZXR1cm4gY2xvdWRTdG9yYWdlOwogICAgfQoKICAgIGNsb3VkU3RvcmFnZS5zZXRJdGVtID0gZnVuY3Rpb24oa2V5LCB2YWx1ZSwgY2FsbGJhY2spIHsKICAgICAgcmV0dXJuIGludm9rZVN0b3JhZ2VNZXRob2QoJ3NhdmVTdG9yYWdlVmFsdWUnLCB7a2V5OiBrZXksIHZhbHVlOiB2YWx1ZX0sIGNhbGxiYWNrKTsKICAgIH07CiAgICBjbG91ZFN0b3JhZ2UuZ2V0SXRlbSA9IGZ1bmN0aW9uKGtleSwgY2FsbGJhY2spIHsKICAgICAgcmV0dXJuIGNsb3VkU3RvcmFnZS5nZXRJdGVtcyhba2V5XSwgY2FsbGJhY2sgPyBmdW5jdGlvbihlcnIsIHJlcykgewogICAgICAgIGlmIChlcnIpIGNhbGxiYWNrKGVycik7CiAgICAgICAgZWxzZSBjYWxsYmFjayhudWxsLCByZXNba2V5XSk7CiAgICAgIH0gOiBudWxsKTsKICAgIH07CiAgICBjbG91ZFN0b3JhZ2UuZ2V0SXRlbXMgPSBmdW5jdGlvbihrZXlzLCBjYWxsYmFjaykgewogICAgICByZXR1cm4gaW52b2tlU3RvcmFnZU1ldGhvZCgnZ2V0U3RvcmFnZVZhbHVlcycsIHtrZXlzOiBrZXlzfSwgY2FsbGJhY2spOwogICAgfTsKICAgIGNsb3VkU3RvcmFnZS5yZW1vdmVJdGVtID0gZnVuY3Rpb24oa2V5LCBjYWxsYmFjaykgewogICAgICByZXR1cm4gY2xvdWRTdG9yYWdlLnJlbW92ZUl0ZW1zKFtrZXldLCBjYWxsYmFjayk7CiAgICB9OwogICAgY2xvdWRTdG9yYWdlLnJlbW92ZUl0ZW1zID0gZnVuY3Rpb24oa2V5cywgY2FsbGJhY2spIHsKICAgICAgcmV0dXJuIGludm9rZVN0b3JhZ2VNZXRob2QoJ2RlbGV0ZVN0b3JhZ2VWYWx1ZXMnLCB7a2V5czoga2V5c30sIGNhbGxiYWNrKTsKICAgIH07CiAgICBjbG91ZFN0b3JhZ2UuZ2V0S2V5cyA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgIHJldHVybiBpbnZva2VTdG9yYWdlTWV0aG9kKCdnZXRTdG9yYWdlS2V5cycsIHt9LCBjYWxsYmFjayk7CiAgICB9OwogICAgcmV0dXJuIGNsb3VkU3RvcmFnZTsKICB9KSgpOwoKICB2YXIgRGV2aWNlU3RvcmFnZSA9IChmdW5jdGlvbigpIHsKICAgIHZhciBkZXZpY2VTdG9yYWdlID0ge307CgogICAgV2ViVmlldy5vbkV2ZW50KCdkZXZpY2Vfc3RvcmFnZV9rZXlfc2F2ZWQnLCAgb25EZXZpY2VTdG9yYWdlRXZlbnQpOwogICAgV2ViVmlldy5vbkV2ZW50KCdkZXZpY2Vfc3RvcmFnZV9rZXlfcmVjZWl2ZWQnLCBvbkRldmljZVN0b3JhZ2VFdmVudCk7CiAgICBXZWJWaWV3Lm9uRXZlbnQoJ2RldmljZV9zdG9yYWdlX2NsZWFyZWQnLCAgb25EZXZpY2VTdG9yYWdlRXZlbnQpOwogICAgV2ViVmlldy5vbkV2ZW50KCdkZXZpY2Vfc3RvcmFnZV9mYWlsZWQnLCAgb25EZXZpY2VTdG9yYWdlRXZlbnQpOwoKICAgIGZ1bmN0aW9uIG9uRGV2aWNlU3RvcmFnZUV2ZW50KGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICAgIGlmIChldmVudERhdGEucmVxX2lkICYmIHdlYkFwcENhbGxiYWNrc1tldmVudERhdGEucmVxX2lkXSkgewogICAgICAgIHZhciByZXF1ZXN0RGF0YSA9IHdlYkFwcENhbGxiYWNrc1tldmVudERhdGEucmVxX2lkXTsKICAgICAgICBkZWxldGUgd2ViQXBwQ2FsbGJhY2tzW2V2ZW50RGF0YS5yZXFfaWRdOwogICAgICAgIHZhciByZXMgPSBudWxsLCBlcnIgPSBudWxsOwogICAgICAgIGlmIChldmVudFR5cGUgPT0gJ2RldmljZV9zdG9yYWdlX2ZhaWxlZCcpIHsKICAgICAgICAgIGVyciA9IGV2ZW50RGF0YS5lcnJvciB8fCAnVU5LTk9XTl9FUlJPUic7CiAgICAgICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT0gJ2RldmljZV9zdG9yYWdlX2tleV9yZWNlaXZlZCcpIHsKICAgICAgICAgIHJlcyA9IGV2ZW50RGF0YS52YWx1ZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmVzID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgaWYgKHJlcXVlc3REYXRhLmNhbGxiYWNrKSB7CiAgICAgICAgICByZXF1ZXN0RGF0YS5jYWxsYmFjayhlcnIsIHJlcyk7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gaW52b2tlU3RvcmFnZU1ldGhvZChtZXRob2QsIHBhcmFtcywgY2FsbGJhY2spIHsKICAgICAgaWYgKCF2ZXJzaW9uQXRMZWFzdCgnOS4wJykpIHsKICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBEZXZpY2VTdG9yYWdlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdmVyc2lvbiAnICsgd2ViQXBwVmVyc2lvbik7CiAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcE1ldGhvZFVuc3VwcG9ydGVkJyk7CiAgICAgIH0KICAgICAgdmFyIHJlcV9pZCA9IGdlbmVyYXRlQ2FsbGJhY2tJZCgxNik7CiAgICAgIHZhciByZXFfcGFyYW1zID0ge3JlcV9pZDogcmVxX2lkfTsKICAgICAgZm9yICh2YXIgayBpbiBwYXJhbXMpIHsKICAgICAgICByZXFfcGFyYW1zW2tdID0gcGFyYW1zW2tdOwogICAgICB9CiAgICAgIHdlYkFwcENhbGxiYWNrc1tyZXFfaWRdID0gewogICAgICAgIGNhbGxiYWNrOiBjYWxsYmFjawogICAgICB9OwogICAgICBXZWJWaWV3LnBvc3RFdmVudChtZXRob2QsIGZhbHNlLCByZXFfcGFyYW1zKTsKICAgICAgcmV0dXJuIGRldmljZVN0b3JhZ2U7CiAgICB9CgogICAgZGV2aWNlU3RvcmFnZS5zZXRJdGVtID0gZnVuY3Rpb24oa2V5LCB2YWx1ZSwgY2FsbGJhY2spIHsKICAgICAgcmV0dXJuIGludm9rZVN0b3JhZ2VNZXRob2QoJ3dlYl9hcHBfZGV2aWNlX3N0b3JhZ2Vfc2F2ZV9rZXknLCB7a2V5OiBrZXksIHZhbHVlOiB2YWx1ZX0sIGNhbGxiYWNrKTsKICAgIH07CiAgICBkZXZpY2VTdG9yYWdlLmdldEl0ZW0gPSBmdW5jdGlvbihrZXksIGNhbGxiYWNrKSB7CiAgICAgIHJldHVybiBpbnZva2VTdG9yYWdlTWV0aG9kKCd3ZWJfYXBwX2RldmljZV9zdG9yYWdlX2dldF9rZXknLCB7a2V5OiBrZXl9LCBjYWxsYmFjayk7CiAgICB9OwogICAgZGV2aWNlU3RvcmFnZS5yZW1vdmVJdGVtID0gZnVuY3Rpb24oa2V5LCBjYWxsYmFjaykgewogICAgICByZXR1cm4gaW52b2tlU3RvcmFnZU1ldGhvZCgnd2ViX2FwcF9kZXZpY2Vfc3RvcmFnZV9zYXZlX2tleScsIHtrZXk6IGtleSwgdmFsdWU6IG51bGx9LCBjYWxsYmFjayk7CiAgICB9OwogICAgZGV2aWNlU3RvcmFnZS5jbGVhciA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgIHJldHVybiBpbnZva2VTdG9yYWdlTWV0aG9kKCd3ZWJfYXBwX2RldmljZV9zdG9yYWdlX2NsZWFyJywge30sIGNhbGxiYWNrKTsKICAgIH07CiAgICByZXR1cm4gZGV2aWNlU3RvcmFnZTsKICB9KSgpOwoKICB2YXIgU2VjdXJlU3RvcmFnZSA9IChmdW5jdGlvbigpIHsKICAgIHZhciBzZWN1cmVTdG9yYWdlID0ge307CgogICAgV2ViVmlldy5vbkV2ZW50KCdzZWN1cmVfc3RvcmFnZV9rZXlfc2F2ZWQnLCAgb25TZWN1cmVTdG9yYWdlRXZlbnQpOwogICAgV2ViVmlldy5vbkV2ZW50KCdzZWN1cmVfc3RvcmFnZV9rZXlfcmVjZWl2ZWQnLCBvblNlY3VyZVN0b3JhZ2VFdmVudCk7CiAgICBXZWJWaWV3Lm9uRXZlbnQoJ3NlY3VyZV9zdG9yYWdlX2tleV9yZXN0b3JlZCcsIG9uU2VjdXJlU3RvcmFnZUV2ZW50KTsKICAgIFdlYlZpZXcub25FdmVudCgnc2VjdXJlX3N0b3JhZ2VfY2xlYXJlZCcsICBvblNlY3VyZVN0b3JhZ2VFdmVudCk7CiAgICBXZWJWaWV3Lm9uRXZlbnQoJ3NlY3VyZV9zdG9yYWdlX2ZhaWxlZCcsICBvblNlY3VyZVN0b3JhZ2VFdmVudCk7CgogICAgZnVuY3Rpb24gb25TZWN1cmVTdG9yYWdlRXZlbnQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgICAgaWYgKGV2ZW50RGF0YS5yZXFfaWQgJiYgd2ViQXBwQ2FsbGJhY2tzW2V2ZW50RGF0YS5yZXFfaWRdKSB7CiAgICAgICAgdmFyIHJlcXVlc3REYXRhID0gd2ViQXBwQ2FsbGJhY2tzW2V2ZW50RGF0YS5yZXFfaWRdOwogICAgICAgIGRlbGV0ZSB3ZWJBcHBDYWxsYmFja3NbZXZlbnREYXRhLnJlcV9pZF07CiAgICAgICAgdmFyIHJlcyA9IG51bGwsIGVyciA9IG51bGwsIGNhbl9yZXN0b3JlID0gbnVsbDsKICAgICAgICBpZiAoZXZlbnRUeXBlID09ICdzZWN1cmVfc3RvcmFnZV9mYWlsZWQnKSB7CiAgICAgICAgICBlcnIgPSBldmVudERhdGEuZXJyb3IgfHwgJ1VOS05PV05fRVJST1InOwogICAgICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09ICdzZWN1cmVfc3RvcmFnZV9rZXlfcmVjZWl2ZWQnKSB7CiAgICAgICAgICByZXMgPSBldmVudERhdGEudmFsdWU7CiAgICAgICAgICBpZiAoZXZlbnREYXRhLmNhbl9yZXN0b3JlKSB7CiAgICAgICAgICAgIGNhbl9yZXN0b3JlID0gdHJ1ZTsKICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PSAnc2VjdXJlX3N0b3JhZ2Vfa2V5X3Jlc3RvcmVkJykgewogICAgICAgICAgcmVzID0gZXZlbnREYXRhLnZhbHVlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICByZXMgPSB0cnVlOwogICAgICAgIH0KICAgICAgICBpZiAocmVxdWVzdERhdGEuY2FsbGJhY2spIHsKICAgICAgICAgIHJlcXVlc3REYXRhLmNhbGxiYWNrKGVyciwgcmVzLCBjYW5fcmVzdG9yZSk7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gaW52b2tlU3RvcmFnZU1ldGhvZChtZXRob2QsIHBhcmFtcywgY2FsbGJhY2spIHsKICAgICAgaWYgKCF2ZXJzaW9uQXRMZWFzdCgnOS4wJykpIHsKICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBTZWN1cmVTdG9yYWdlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdmVyc2lvbiAnICsgd2ViQXBwVmVyc2lvbik7CiAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcE1ldGhvZFVuc3VwcG9ydGVkJyk7CiAgICAgIH0KICAgICAgdmFyIHJlcV9pZCA9IGdlbmVyYXRlQ2FsbGJhY2tJZCgxNik7CiAgICAgIHZhciByZXFfcGFyYW1zID0ge3JlcV9pZDogcmVxX2lkfTsKICAgICAgZm9yICh2YXIgayBpbiBwYXJhbXMpIHsKICAgICAgICByZXFfcGFyYW1zW2tdID0gcGFyYW1zW2tdOwogICAgICB9CiAgICAgIHdlYkFwcENhbGxiYWNrc1tyZXFfaWRdID0gewogICAgICAgIGNhbGxiYWNrOiBjYWxsYmFjawogICAgICB9OwogICAgICBXZWJWaWV3LnBvc3RFdmVudChtZXRob2QsIGZhbHNlLCByZXFfcGFyYW1zKTsKICAgICAgcmV0dXJuIHNlY3VyZVN0b3JhZ2U7CiAgICB9CgogICAgc2VjdXJlU3RvcmFnZS5zZXRJdGVtID0gZnVuY3Rpb24oa2V5LCB2YWx1ZSwgY2FsbGJhY2spIHsKICAgICAgcmV0dXJuIGludm9rZVN0b3JhZ2VNZXRob2QoJ3dlYl9hcHBfc2VjdXJlX3N0b3JhZ2Vfc2F2ZV9rZXknLCB7a2V5OiBrZXksIHZhbHVlOiB2YWx1ZX0sIGNhbGxiYWNrKTsKICAgIH07CiAgICBzZWN1cmVTdG9yYWdlLmdldEl0ZW0gPSBmdW5jdGlvbihrZXksIGNhbGxiYWNrKSB7CiAgICAgIHJldHVybiBpbnZva2VTdG9yYWdlTWV0aG9kKCd3ZWJfYXBwX3NlY3VyZV9zdG9yYWdlX2dldF9rZXknLCB7a2V5OiBrZXl9LCBjYWxsYmFjayk7CiAgICB9OwogICAgc2VjdXJlU3RvcmFnZS5yZXN0b3JlSXRlbSA9IGZ1bmN0aW9uKGtleSwgY2FsbGJhY2spIHsKICAgICAgcmV0dXJuIGludm9rZVN0b3JhZ2VNZXRob2QoJ3dlYl9hcHBfc2VjdXJlX3N0b3JhZ2VfcmVzdG9yZV9rZXknLCB7a2V5OiBrZXl9LCBjYWxsYmFjayk7CiAgICB9OwogICAgc2VjdXJlU3RvcmFnZS5yZW1vdmVJdGVtID0gZnVuY3Rpb24oa2V5LCBjYWxsYmFjaykgewogICAgICByZXR1cm4gaW52b2tlU3RvcmFnZU1ldGhvZCgnd2ViX2FwcF9zZWN1cmVfc3RvcmFnZV9zYXZlX2tleScsIHtrZXk6IGtleSwgdmFsdWU6IG51bGx9LCBjYWxsYmFjayk7CiAgICB9OwogICAgc2VjdXJlU3RvcmFnZS5jbGVhciA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgIHJldHVybiBpbnZva2VTdG9yYWdlTWV0aG9kKCd3ZWJfYXBwX3NlY3VyZV9zdG9yYWdlX2NsZWFyJywge30sIGNhbGxiYWNrKTsKICAgIH07CiAgICByZXR1cm4gc2VjdXJlU3RvcmFnZTsKICB9KSgpOwoKICB2YXIgQmlvbWV0cmljTWFuYWdlciA9IChmdW5jdGlvbigpIHsKICAgIHZhciBpc0luaXRlZCA9IGZhbHNlOwogICAgdmFyIGlzQmlvbWV0cmljQXZhaWxhYmxlID0gZmFsc2U7CiAgICB2YXIgYmlvbWV0cmljVHlwZSA9ICd1bmtub3duJzsKICAgIHZhciBpc0FjY2Vzc1JlcXVlc3RlZCA9IGZhbHNlOwogICAgdmFyIGlzQWNjZXNzR3JhbnRlZCA9IGZhbHNlOwogICAgdmFyIGlzQmlvbWV0cmljVG9rZW5TYXZlZCA9IGZhbHNlOwogICAgdmFyIGRldmljZUlkID0gJyc7CgogICAgdmFyIGJpb21ldHJpY01hbmFnZXIgPSB7fTsKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShiaW9tZXRyaWNNYW5hZ2VyLCAnaXNJbml0ZWQnLCB7CiAgICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIGlzSW5pdGVkOyB9LAogICAgICBlbnVtZXJhYmxlOiB0cnVlCiAgICB9KTsKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShiaW9tZXRyaWNNYW5hZ2VyLCAnaXNCaW9tZXRyaWNBdmFpbGFibGUnLCB7CiAgICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIGlzSW5pdGVkICYmIGlzQmlvbWV0cmljQXZhaWxhYmxlOyB9LAogICAgICBlbnVtZXJhYmxlOiB0cnVlCiAgICB9KTsKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShiaW9tZXRyaWNNYW5hZ2VyLCAnYmlvbWV0cmljVHlwZScsIHsKICAgICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gYmlvbWV0cmljVHlwZSB8fCAndW5rbm93bic7IH0sCiAgICAgIGVudW1lcmFibGU6IHRydWUKICAgIH0pOwogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGJpb21ldHJpY01hbmFnZXIsICdpc0FjY2Vzc1JlcXVlc3RlZCcsIHsKICAgICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gaXNBY2Nlc3NSZXF1ZXN0ZWQ7IH0sCiAgICAgIGVudW1lcmFibGU6IHRydWUKICAgIH0pOwogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGJpb21ldHJpY01hbmFnZXIsICdpc0FjY2Vzc0dyYW50ZWQnLCB7CiAgICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIGlzQWNjZXNzUmVxdWVzdGVkICYmIGlzQWNjZXNzR3JhbnRlZDsgfSwKICAgICAgZW51bWVyYWJsZTogdHJ1ZQogICAgfSk7CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoYmlvbWV0cmljTWFuYWdlciwgJ2lzQmlvbWV0cmljVG9rZW5TYXZlZCcsIHsKICAgICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gaXNCaW9tZXRyaWNUb2tlblNhdmVkOyB9LAogICAgICBlbnVtZXJhYmxlOiB0cnVlCiAgICB9KTsKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShiaW9tZXRyaWNNYW5hZ2VyLCAnZGV2aWNlSWQnLCB7CiAgICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIGRldmljZUlkIHx8ICcnOyB9LAogICAgICBlbnVtZXJhYmxlOiB0cnVlCiAgICB9KTsKCiAgICB2YXIgaW5pdFJlcXVlc3RTdGF0ZSA9IHtjYWxsYmFja3M6IFtdfTsKICAgIHZhciBhY2Nlc3NSZXF1ZXN0U3RhdGUgPSBmYWxzZTsKICAgIHZhciBhdXRoUmVxdWVzdFN0YXRlID0gZmFsc2U7CiAgICB2YXIgdG9rZW5SZXF1ZXN0U3RhdGUgPSBmYWxzZTsKCiAgICBXZWJWaWV3Lm9uRXZlbnQoJ2Jpb21ldHJ5X2luZm9fcmVjZWl2ZWQnLCAgb25CaW9tZXRyeUluZm9SZWNlaXZlZCk7CiAgICBXZWJWaWV3Lm9uRXZlbnQoJ2Jpb21ldHJ5X2F1dGhfcmVxdWVzdGVkJywgb25CaW9tZXRyeUF1dGhSZXF1ZXN0ZWQpOwogICAgV2ViVmlldy5vbkV2ZW50KCdiaW9tZXRyeV90b2tlbl91cGRhdGVkJywgIG9uQmlvbWV0cnlUb2tlblVwZGF0ZWQpOwoKICAgIGZ1bmN0aW9uIG9uQmlvbWV0cnlJbmZvUmVjZWl2ZWQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgICAgaXNJbml0ZWQgPSB0cnVlOwogICAgICBpZiAoZXZlbnREYXRhLmF2YWlsYWJsZSkgewogICAgICAgIGlzQmlvbWV0cmljQXZhaWxhYmxlID0gdHJ1ZTsKICAgICAgICBiaW9tZXRyaWNUeXBlID0gZXZlbnREYXRhLnR5cGUgfHwgJ3Vua25vd24nOwogICAgICAgIGlmIChldmVudERhdGEuYWNjZXNzX3JlcXVlc3RlZCkgewogICAgICAgICAgaXNBY2Nlc3NSZXF1ZXN0ZWQgPSB0cnVlOwogICAgICAgICAgaXNBY2Nlc3NHcmFudGVkID0gISFldmVudERhdGEuYWNjZXNzX2dyYW50ZWQ7CiAgICAgICAgICBpc0Jpb21ldHJpY1Rva2VuU2F2ZWQgPSAhIWV2ZW50RGF0YS50b2tlbl9zYXZlZDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaXNBY2Nlc3NSZXF1ZXN0ZWQgPSBmYWxzZTsKICAgICAgICAgIGlzQWNjZXNzR3JhbnRlZCA9IGZhbHNlOwogICAgICAgICAgaXNCaW9tZXRyaWNUb2tlblNhdmVkID0gZmFsc2U7CiAgICAgICAgfQogICAgICB9IGVsc2UgewogICAgICAgIGlzQmlvbWV0cmljQXZhaWxhYmxlID0gZmFsc2U7CiAgICAgICAgYmlvbWV0cmljVHlwZSA9ICd1bmtub3duJzsKICAgICAgICBpc0FjY2Vzc1JlcXVlc3RlZCA9IGZhbHNlOwogICAgICAgIGlzQWNjZXNzR3JhbnRlZCA9IGZhbHNlOwogICAgICAgIGlzQmlvbWV0cmljVG9rZW5TYXZlZCA9IGZhbHNlOwogICAgICB9CiAgICAgIGRldmljZUlkID0gZXZlbnREYXRhLmRldmljZV9pZCB8fCAnJzsKCiAgICAgIGlmIChpbml0UmVxdWVzdFN0YXRlLmNhbGxiYWNrcy5sZW5ndGggPiAwKSB7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbml0UmVxdWVzdFN0YXRlLmNhbGxiYWNrcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgdmFyIGNhbGxiYWNrID0gaW5pdFJlcXVlc3RTdGF0ZS5jYWxsYmFja3NbaV07CiAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAgIH0KICAgICAgICBpbml0UmVxdWVzdFN0YXRlLmNhbGxiYWNrcyA9IFtdOwogICAgICB9CiAgICAgIGlmIChhY2Nlc3NSZXF1ZXN0U3RhdGUpIHsKICAgICAgICB2YXIgc3RhdGUgPSBhY2Nlc3NSZXF1ZXN0U3RhdGU7CiAgICAgICAgYWNjZXNzUmVxdWVzdFN0YXRlID0gZmFsc2U7CiAgICAgICAgaWYgKHN0YXRlLmNhbGxiYWNrKSB7CiAgICAgICAgICBzdGF0ZS5jYWxsYmFjayhpc0FjY2Vzc0dyYW50ZWQpOwogICAgICAgIH0KICAgICAgfQogICAgICByZWNlaXZlV2ViVmlld0V2ZW50KCdiaW9tZXRyaWNNYW5hZ2VyVXBkYXRlZCcpOwogICAgfQogICAgZnVuY3Rpb24gb25CaW9tZXRyeUF1dGhSZXF1ZXN0ZWQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgICAgdmFyIGlzQXV0aGVudGljYXRlZCA9IChldmVudERhdGEuc3RhdHVzID09ICdhdXRob3JpemVkJyksCiAgICAgICAgICBiaW9tZXRyaWNUb2tlbiA9IGV2ZW50RGF0YS50b2tlbiB8fCAnJzsKICAgICAgaWYgKGF1dGhSZXF1ZXN0U3RhdGUpIHsKICAgICAgICB2YXIgc3RhdGUgPSBhdXRoUmVxdWVzdFN0YXRlOwogICAgICAgIGF1dGhSZXF1ZXN0U3RhdGUgPSBmYWxzZTsKICAgICAgICBpZiAoc3RhdGUuY2FsbGJhY2spIHsKICAgICAgICAgIHN0YXRlLmNhbGxiYWNrKGlzQXV0aGVudGljYXRlZCwgaXNBdXRoZW50aWNhdGVkID8gYmlvbWV0cmljVG9rZW4gOiBudWxsKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgcmVjZWl2ZVdlYlZpZXdFdmVudCgnYmlvbWV0cmljQXV0aFJlcXVlc3RlZCcsIGlzQXV0aGVudGljYXRlZCA/IHsKICAgICAgICBpc0F1dGhlbnRpY2F0ZWQ6IHRydWUsCiAgICAgICAgYmlvbWV0cmljVG9rZW46IGJpb21ldHJpY1Rva2VuCiAgICAgIH0gOiB7CiAgICAgICAgaXNBdXRoZW50aWNhdGVkOiBmYWxzZQogICAgICB9KTsKICAgIH0KICAgIGZ1bmN0aW9uIG9uQmlvbWV0cnlUb2tlblVwZGF0ZWQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgICAgdmFyIGFwcGxpZWQgPSBmYWxzZTsKICAgICAgaWYgKGlzQmlvbWV0cmljQXZhaWxhYmxlICYmCiAgICAgICAgICBpc0FjY2Vzc1JlcXVlc3RlZCkgewogICAgICAgIGlmIChldmVudERhdGEuc3RhdHVzID09ICd1cGRhdGVkJykgewogICAgICAgICAgaXNCaW9tZXRyaWNUb2tlblNhdmVkID0gdHJ1ZTsKICAgICAgICAgIGFwcGxpZWQgPSB0cnVlOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChldmVudERhdGEuc3RhdHVzID09ICdyZW1vdmVkJykgewogICAgICAgICAgaXNCaW9tZXRyaWNUb2tlblNhdmVkID0gZmFsc2U7CiAgICAgICAgICBhcHBsaWVkID0gdHJ1ZTsKICAgICAgICB9CiAgICAgIH0KICAgICAgaWYgKHRva2VuUmVxdWVzdFN0YXRlKSB7CiAgICAgICAgdmFyIHN0YXRlID0gdG9rZW5SZXF1ZXN0U3RhdGU7CiAgICAgICAgdG9rZW5SZXF1ZXN0U3RhdGUgPSBmYWxzZTsKICAgICAgICBpZiAoc3RhdGUuY2FsbGJhY2spIHsKICAgICAgICAgIHN0YXRlLmNhbGxiYWNrKGFwcGxpZWQpOwogICAgICAgIH0KICAgICAgfQogICAgICByZWNlaXZlV2ViVmlld0V2ZW50KCdiaW9tZXRyaWNUb2tlblVwZGF0ZWQnLCB7CiAgICAgICAgaXNVcGRhdGVkOiBhcHBsaWVkCiAgICAgIH0pOwogICAgfQoKICAgIGZ1bmN0aW9uIGNoZWNrVmVyc2lvbigpIHsKICAgICAgaWYgKCF2ZXJzaW9uQXRMZWFzdCgnNy4yJykpIHsKICAgICAgICBjb25zb2xlLndhcm4oJ1tUZWxlZ3JhbS5XZWJBcHBdIEJpb21ldHJpY01hbmFnZXIgaXMgbm90IHN1cHBvcnRlZCBpbiB2ZXJzaW9uICcgKyB3ZWJBcHBWZXJzaW9uKTsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgZnVuY3Rpb24gY2hlY2tJbml0KCkgewogICAgICBpZiAoIWlzSW5pdGVkKSB7CiAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gQmlvbWV0cmljTWFuYWdlciBzaG91bGQgYmUgaW5pdGVkIGJlZm9yZSB1c2luZy4nKTsKICAgICAgICB0aHJvdyBFcnJvcignV2ViQXBwQmlvbWV0cmljTWFuYWdlck5vdEluaXRlZCcpOwogICAgICB9CiAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIGJpb21ldHJpY01hbmFnZXIuaW5pdCA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgIGlmICghY2hlY2tWZXJzaW9uKCkpIHsKICAgICAgICByZXR1cm4gYmlvbWV0cmljTWFuYWdlcjsKICAgICAgfQogICAgICBpZiAoaXNJbml0ZWQpIHsKICAgICAgICByZXR1cm4gYmlvbWV0cmljTWFuYWdlcjsKICAgICAgfQogICAgICBpZiAoY2FsbGJhY2spIHsKICAgICAgICBpbml0UmVxdWVzdFN0YXRlLmNhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTsKICAgICAgfQogICAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9iaW9tZXRyeV9nZXRfaW5mbycsIGZhbHNlKTsKICAgICAgcmV0dXJuIGJpb21ldHJpY01hbmFnZXI7CiAgICB9OwogICAgYmlvbWV0cmljTWFuYWdlci5yZXF1ZXN0QWNjZXNzID0gZnVuY3Rpb24ocGFyYW1zLCBjYWxsYmFjaykgewogICAgICBpZiAoIWNoZWNrVmVyc2lvbigpKSB7CiAgICAgICAgcmV0dXJuIGJpb21ldHJpY01hbmFnZXI7CiAgICAgIH0KICAgICAgY2hlY2tJbml0KCk7CiAgICAgIGlmICghaXNCaW9tZXRyaWNBdmFpbGFibGUpIHsKICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBCaW9tZXRyaWNzIGlzIG5vdCBhdmFpbGFibGUgb24gdGhpcyBkZXZpY2UuJyk7CiAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcEJpb21ldHJpY01hbmFnZXJCaW9tZXRyaWNzTm90QXZhaWxhYmxlJyk7CiAgICAgIH0KICAgICAgaWYgKGFjY2Vzc1JlcXVlc3RTdGF0ZSkgewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIEFjY2VzcyBpcyBhbHJlYWR5IHJlcXVlc3RlZCcpOwogICAgICAgIHRocm93IEVycm9yKCdXZWJBcHBCaW9tZXRyaWNNYW5hZ2VyQWNjZXNzUmVxdWVzdGVkJyk7CiAgICAgIH0KICAgICAgdmFyIHBvcHVwX3BhcmFtcyA9IHt9OwogICAgICBpZiAodHlwZW9mIHBhcmFtcy5yZWFzb24gIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgdmFyIHJlYXNvbiA9IHN0clRyaW0ocGFyYW1zLnJlYXNvbik7CiAgICAgICAgaWYgKHJlYXNvbi5sZW5ndGggPiAxMjgpIHsKICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIEJpb21ldHJpYyByZWFzb24gaXMgdG9vIGxvbmcnLCByZWFzb24pOwogICAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcEJpb21ldHJpY1JlcXVlc3RBY2Nlc3NQYXJhbUludmFsaWQnKTsKICAgICAgICB9CiAgICAgICAgaWYgKHJlYXNvbi5sZW5ndGggPiAwKSB7CiAgICAgICAgICBwb3B1cF9wYXJhbXMucmVhc29uID0gcmVhc29uOwogICAgICAgIH0KICAgICAgfQoKICAgICAgYWNjZXNzUmVxdWVzdFN0YXRlID0gewogICAgICAgIGNhbGxiYWNrOiBjYWxsYmFjawogICAgICB9OwogICAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9iaW9tZXRyeV9yZXF1ZXN0X2FjY2VzcycsIGZhbHNlLCBwb3B1cF9wYXJhbXMpOwogICAgICByZXR1cm4gYmlvbWV0cmljTWFuYWdlcjsKICAgIH07CiAgICBiaW9tZXRyaWNNYW5hZ2VyLmF1dGhlbnRpY2F0ZSA9IGZ1bmN0aW9uKHBhcmFtcywgY2FsbGJhY2spIHsKICAgICAgaWYgKCFjaGVja1ZlcnNpb24oKSkgewogICAgICAgIHJldHVybiBiaW9tZXRyaWNNYW5hZ2VyOwogICAgICB9CiAgICAgIGNoZWNrSW5pdCgpOwogICAgICBpZiAoIWlzQmlvbWV0cmljQXZhaWxhYmxlKSB7CiAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gQmlvbWV0cmljcyBpcyBub3QgYXZhaWxhYmxlIG9uIHRoaXMgZGV2aWNlLicpOwogICAgICAgIHRocm93IEVycm9yKCdXZWJBcHBCaW9tZXRyaWNNYW5hZ2VyQmlvbWV0cmljc05vdEF2YWlsYWJsZScpOwogICAgICB9CiAgICAgIGlmICghaXNBY2Nlc3NHcmFudGVkKSB7CiAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gQmlvbWV0cmljIGFjY2VzcyB3YXMgbm90IGdyYW50ZWQgYnkgdGhlIHVzZXIuJyk7CiAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcEJpb21ldHJpY01hbmFnZXJCaW9tZXRyaWNBY2Nlc3NOb3RHcmFudGVkJyk7CiAgICAgIH0KICAgICAgaWYgKGF1dGhSZXF1ZXN0U3RhdGUpIHsKICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBBdXRoZW50aWNhdGlvbiByZXF1ZXN0IGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MuJyk7CiAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcEJpb21ldHJpY01hbmFnZXJBdXRoZW50aWNhdGlvblJlcXVlc3RlZCcpOwogICAgICB9CiAgICAgIHZhciBwb3B1cF9wYXJhbXMgPSB7fTsKICAgICAgaWYgKHR5cGVvZiBwYXJhbXMucmVhc29uICE9PSAndW5kZWZpbmVkJykgewogICAgICAgIHZhciByZWFzb24gPSBzdHJUcmltKHBhcmFtcy5yZWFzb24pOwogICAgICAgIGlmIChyZWFzb24ubGVuZ3RoID4gMTI4KSB7CiAgICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBCaW9tZXRyaWMgcmVhc29uIGlzIHRvbyBsb25nJywgcmVhc29uKTsKICAgICAgICAgIHRocm93IEVycm9yKCdXZWJBcHBCaW9tZXRyaWNSZXF1ZXN0QWNjZXNzUGFyYW1JbnZhbGlkJyk7CiAgICAgICAgfQogICAgICAgIGlmIChyZWFzb24ubGVuZ3RoID4gMCkgewogICAgICAgICAgcG9wdXBfcGFyYW1zLnJlYXNvbiA9IHJlYXNvbjsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGF1dGhSZXF1ZXN0U3RhdGUgPSB7CiAgICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrCiAgICAgIH07CiAgICAgIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX2Jpb21ldHJ5X3JlcXVlc3RfYXV0aCcsIGZhbHNlLCBwb3B1cF9wYXJhbXMpOwogICAgICByZXR1cm4gYmlvbWV0cmljTWFuYWdlcjsKICAgIH07CiAgICBiaW9tZXRyaWNNYW5hZ2VyLnVwZGF0ZUJpb21ldHJpY1Rva2VuID0gZnVuY3Rpb24odG9rZW4sIGNhbGxiYWNrKSB7CiAgICAgIGlmICghY2hlY2tWZXJzaW9uKCkpIHsKICAgICAgICByZXR1cm4gYmlvbWV0cmljTWFuYWdlcjsKICAgICAgfQogICAgICB0b2tlbiA9IHRva2VuIHx8ICcnOwogICAgICBpZiAodG9rZW4ubGVuZ3RoID4gMTAyNCkgewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIFRva2VuIGlzIHRvbyBsb25nJywgdG9rZW4pOwogICAgICAgIHRocm93IEVycm9yKCdXZWJBcHBCaW9tZXRyaWNNYW5hZ2VyVG9rZW5JbnZhbGlkJyk7CiAgICAgIH0KICAgICAgY2hlY2tJbml0KCk7CiAgICAgIGlmICghaXNCaW9tZXRyaWNBdmFpbGFibGUpIHsKICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBCaW9tZXRyaWNzIGlzIG5vdCBhdmFpbGFibGUgb24gdGhpcyBkZXZpY2UuJyk7CiAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcEJpb21ldHJpY01hbmFnZXJCaW9tZXRyaWNzTm90QXZhaWxhYmxlJyk7CiAgICAgIH0KICAgICAgaWYgKCFpc0FjY2Vzc0dyYW50ZWQpIHsKICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBCaW9tZXRyaWMgYWNjZXNzIHdhcyBub3QgZ3JhbnRlZCBieSB0aGUgdXNlci4nKTsKICAgICAgICB0aHJvdyBFcnJvcignV2ViQXBwQmlvbWV0cmljTWFuYWdlckJpb21ldHJpY0FjY2Vzc05vdEdyYW50ZWQnKTsKICAgICAgfQogICAgICBpZiAodG9rZW5SZXF1ZXN0U3RhdGUpIHsKICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBUb2tlbiByZXF1ZXN0IGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MuJyk7CiAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcEJpb21ldHJpY01hbmFnZXJUb2tlblVwZGF0ZVJlcXVlc3RlZCcpOwogICAgICB9CiAgICAgIHRva2VuUmVxdWVzdFN0YXRlID0gewogICAgICAgIGNhbGxiYWNrOiBjYWxsYmFjawogICAgICB9OwogICAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9iaW9tZXRyeV91cGRhdGVfdG9rZW4nLCBmYWxzZSwge3Rva2VuOiB0b2tlbn0pOwogICAgICByZXR1cm4gYmlvbWV0cmljTWFuYWdlcjsKICAgIH07CiAgICBiaW9tZXRyaWNNYW5hZ2VyLm9wZW5TZXR0aW5ncyA9IGZ1bmN0aW9uKCkgewogICAgICBpZiAoIWNoZWNrVmVyc2lvbigpKSB7CiAgICAgICAgcmV0dXJuIGJpb21ldHJpY01hbmFnZXI7CiAgICAgIH0KICAgICAgY2hlY2tJbml0KCk7CiAgICAgIGlmICghaXNCaW9tZXRyaWNBdmFpbGFibGUpIHsKICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBCaW9tZXRyaWNzIGlzIG5vdCBhdmFpbGFibGUgb24gdGhpcyBkZXZpY2UuJyk7CiAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcEJpb21ldHJpY01hbmFnZXJCaW9tZXRyaWNzTm90QXZhaWxhYmxlJyk7CiAgICAgIH0KICAgICAgaWYgKCFpc0FjY2Vzc1JlcXVlc3RlZCkgewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIEJpb21ldHJpYyBhY2Nlc3Mgd2FzIG5vdCByZXF1ZXN0ZWQgeWV0LicpOwogICAgICAgIHRocm93IEVycm9yKCdXZWJBcHBCaW9tZXRyaWNNYW5hZ2VyQmlvbWV0cmljc0FjY2Vzc05vdFJlcXVlc3RlZCcpOwogICAgICB9CiAgICAgIGlmIChpc0FjY2Vzc0dyYW50ZWQpIHsKICAgICAgICBjb25zb2xlLndhcm4oJ1tUZWxlZ3JhbS5XZWJBcHBdIEJpb21ldHJpYyBhY2Nlc3Mgd2FzIGdyYW50ZWQgYnkgdGhlIHVzZXIsIG5vIG5lZWQgdG8gZ28gdG8gc2V0dGluZ3MuJyk7CiAgICAgICAgcmV0dXJuIGJpb21ldHJpY01hbmFnZXI7CiAgICAgIH0KICAgICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfYmlvbWV0cnlfb3Blbl9zZXR0aW5ncycsIGZhbHNlKTsKICAgICAgcmV0dXJuIGJpb21ldHJpY01hbmFnZXI7CiAgICB9OwogICAgcmV0dXJuIGJpb21ldHJpY01hbmFnZXI7CiAgfSkoKTsKCiAgdmFyIExvY2F0aW9uTWFuYWdlciA9IChmdW5jdGlvbigpIHsKICAgIHZhciBpc0luaXRlZCA9IGZhbHNlOwogICAgdmFyIGlzTG9jYXRpb25BdmFpbGFibGUgPSBmYWxzZTsKICAgIHZhciBpc0FjY2Vzc1JlcXVlc3RlZCA9IGZhbHNlOwogICAgdmFyIGlzQWNjZXNzR3JhbnRlZCA9IGZhbHNlOwoKICAgIHZhciBsb2NhdGlvbk1hbmFnZXIgPSB7fTsKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShsb2NhdGlvbk1hbmFnZXIsICdpc0luaXRlZCcsIHsKICAgICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gaXNJbml0ZWQ7IH0sCiAgICAgIGVudW1lcmFibGU6IHRydWUKICAgIH0pOwogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGxvY2F0aW9uTWFuYWdlciwgJ2lzTG9jYXRpb25BdmFpbGFibGUnLCB7CiAgICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIGlzSW5pdGVkICYmIGlzTG9jYXRpb25BdmFpbGFibGU7IH0sCiAgICAgIGVudW1lcmFibGU6IHRydWUKICAgIH0pOwogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGxvY2F0aW9uTWFuYWdlciwgJ2lzQWNjZXNzUmVxdWVzdGVkJywgewogICAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiBpc0FjY2Vzc1JlcXVlc3RlZDsgfSwKICAgICAgZW51bWVyYWJsZTogdHJ1ZQogICAgfSk7CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobG9jYXRpb25NYW5hZ2VyLCAnaXNBY2Nlc3NHcmFudGVkJywgewogICAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiBpc0FjY2Vzc1JlcXVlc3RlZCAmJiBpc0FjY2Vzc0dyYW50ZWQ7IH0sCiAgICAgIGVudW1lcmFibGU6IHRydWUKICAgIH0pOwoKICAgIHZhciBpbml0UmVxdWVzdFN0YXRlID0ge2NhbGxiYWNrczogW119OwogICAgdmFyIGdldFJlcXVlc3RTdGF0ZSA9IHtjYWxsYmFja3M6IFtdfTsKCiAgICBXZWJWaWV3Lm9uRXZlbnQoJ2xvY2F0aW9uX2NoZWNrZWQnLCAgb25Mb2NhdGlvbkNoZWNrZWQpOwogICAgV2ViVmlldy5vbkV2ZW50KCdsb2NhdGlvbl9yZXF1ZXN0ZWQnLCBvbkxvY2F0aW9uUmVxdWVzdGVkKTsKCiAgICBmdW5jdGlvbiBvbkxvY2F0aW9uQ2hlY2tlZChldmVudFR5cGUsIGV2ZW50RGF0YSkgewogICAgICBpc0luaXRlZCA9IHRydWU7CiAgICAgIGlmIChldmVudERhdGEuYXZhaWxhYmxlKSB7CiAgICAgICAgaXNMb2NhdGlvbkF2YWlsYWJsZSA9IHRydWU7CiAgICAgICAgaWYgKGV2ZW50RGF0YS5hY2Nlc3NfcmVxdWVzdGVkKSB7CiAgICAgICAgICBpc0FjY2Vzc1JlcXVlc3RlZCA9IHRydWU7CiAgICAgICAgICBpc0FjY2Vzc0dyYW50ZWQgPSAhIWV2ZW50RGF0YS5hY2Nlc3NfZ3JhbnRlZDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgaXNBY2Nlc3NSZXF1ZXN0ZWQgPSBmYWxzZTsKICAgICAgICAgIGlzQWNjZXNzR3JhbnRlZCA9IGZhbHNlOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBpc0xvY2F0aW9uQXZhaWxhYmxlID0gZmFsc2U7CiAgICAgICAgaXNBY2Nlc3NSZXF1ZXN0ZWQgPSBmYWxzZTsKICAgICAgICBpc0FjY2Vzc0dyYW50ZWQgPSBmYWxzZTsKICAgICAgfQoKICAgICAgaWYgKGluaXRSZXF1ZXN0U3RhdGUuY2FsbGJhY2tzLmxlbmd0aCA+IDApIHsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluaXRSZXF1ZXN0U3RhdGUuY2FsbGJhY2tzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB2YXIgY2FsbGJhY2sgPSBpbml0UmVxdWVzdFN0YXRlLmNhbGxiYWNrc1tpXTsKICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgfQogICAgICAgIGluaXRSZXF1ZXN0U3RhdGUuY2FsbGJhY2tzID0gW107CiAgICAgIH0KICAgICAgcmVjZWl2ZVdlYlZpZXdFdmVudCgnbG9jYXRpb25NYW5hZ2VyVXBkYXRlZCcpOwogICAgfQogICAgZnVuY3Rpb24gb25Mb2NhdGlvblJlcXVlc3RlZChldmVudFR5cGUsIGV2ZW50RGF0YSkgewogICAgICBpZiAoIWV2ZW50RGF0YS5hdmFpbGFibGUpIHsKICAgICAgICBsb2NhdGlvbkRhdGEgPSBudWxsOwogICAgICB9IGVsc2UgewogICAgICAgIHZhciBsb2NhdGlvbkRhdGEgPSB7CiAgICAgICAgICBsYXRpdHVkZTogZXZlbnREYXRhLmxhdGl0dWRlLAogICAgICAgICAgbG9uZ2l0dWRlOiBldmVudERhdGEubG9uZ2l0dWRlLAogICAgICAgICAgYWx0aXR1ZGU6IG51bGwsCiAgICAgICAgICBjb3Vyc2U6IG51bGwsCiAgICAgICAgICBzcGVlZDogbnVsbCwKICAgICAgICAgIGhvcml6b250YWxfYWNjdXJhY3k6IG51bGwsCiAgICAgICAgICB2ZXJ0aWNhbF9hY2N1cmFjeTogbnVsbCwKICAgICAgICAgIGNvdXJzZV9hY2N1cmFjeTogbnVsbCwKICAgICAgICAgIHNwZWVkX2FjY3VyYWN5OiBudWxsLAogICAgICAgIH07CiAgICAgICAgaWYgKHR5cGVvZiBldmVudERhdGEuYWx0aXR1ZGUgIT09ICd1bmRlZmluZWQnICYmIGV2ZW50RGF0YS5hbHRpdHVkZSAhPT0gbnVsbCkgewogICAgICAgICAgbG9jYXRpb25EYXRhLmFsdGl0dWRlID0gZXZlbnREYXRhLmFsdGl0dWRlOwogICAgICAgIH0KICAgICAgICBpZiAodHlwZW9mIGV2ZW50RGF0YS5jb3Vyc2UgIT09ICd1bmRlZmluZWQnICYmIGV2ZW50RGF0YS5jb3Vyc2UgIT09IG51bGwpIHsKICAgICAgICAgIGxvY2F0aW9uRGF0YS5jb3Vyc2UgPSBldmVudERhdGEuY291cnNlICUgMzYwOwogICAgICAgIH0KICAgICAgICBpZiAodHlwZW9mIGV2ZW50RGF0YS5zcGVlZCAhPT0gJ3VuZGVmaW5lZCcgJiYgZXZlbnREYXRhLnNwZWVkICE9PSBudWxsKSB7CiAgICAgICAgICBsb2NhdGlvbkRhdGEuc3BlZWQgPSBldmVudERhdGEuc3BlZWQ7CiAgICAgICAgfQogICAgICAgIGlmICh0eXBlb2YgZXZlbnREYXRhLmhvcml6b250YWxfYWNjdXJhY3kgIT09ICd1bmRlZmluZWQnICYmIGV2ZW50RGF0YS5ob3Jpem9udGFsX2FjY3VyYWN5ICE9PSBudWxsKSB7CiAgICAgICAgICBsb2NhdGlvbkRhdGEuaG9yaXpvbnRhbF9hY2N1cmFjeSA9IGV2ZW50RGF0YS5ob3Jpem9udGFsX2FjY3VyYWN5OwogICAgICAgIH0KICAgICAgICBpZiAodHlwZW9mIGV2ZW50RGF0YS52ZXJ0aWNhbF9hY2N1cmFjeSAhPT0gJ3VuZGVmaW5lZCcgJiYgZXZlbnREYXRhLnZlcnRpY2FsX2FjY3VyYWN5ICE9PSBudWxsKSB7CiAgICAgICAgICBsb2NhdGlvbkRhdGEudmVydGljYWxfYWNjdXJhY3kgPSBldmVudERhdGEudmVydGljYWxfYWNjdXJhY3k7CiAgICAgICAgfQogICAgICAgIGlmICh0eXBlb2YgZXZlbnREYXRhLmNvdXJzZV9hY2N1cmFjeSAhPT0gJ3VuZGVmaW5lZCcgJiYgZXZlbnREYXRhLmNvdXJzZV9hY2N1cmFjeSAhPT0gbnVsbCkgewogICAgICAgICAgbG9jYXRpb25EYXRhLmNvdXJzZV9hY2N1cmFjeSA9IGV2ZW50RGF0YS5jb3Vyc2VfYWNjdXJhY3k7CiAgICAgICAgfQogICAgICAgIGlmICh0eXBlb2YgZXZlbnREYXRhLnNwZWVkX2FjY3VyYWN5ICE9PSAndW5kZWZpbmVkJyAmJiBldmVudERhdGEuc3BlZWRfYWNjdXJhY3kgIT09IG51bGwpIHsKICAgICAgICAgIGxvY2F0aW9uRGF0YS5zcGVlZF9hY2N1cmFjeSA9IGV2ZW50RGF0YS5zcGVlZF9hY2N1cmFjeTsKICAgICAgICB9CiAgICAgIH0KICAgICAgaWYgKCFldmVudERhdGEuYXZhaWxhYmxlIHx8CiAgICAgICAgICAhaXNMb2NhdGlvbkF2YWlsYWJsZSB8fAogICAgICAgICAgIWlzQWNjZXNzUmVxdWVzdGVkIHx8CiAgICAgICAgICAhaXNBY2Nlc3NHcmFudGVkKSB7CiAgICAgICAgaW5pdFJlcXVlc3RTdGF0ZS5jYWxsYmFja3MucHVzaChmdW5jdGlvbigpIHsKICAgICAgICAgIGxvY2F0aW9uUmVzcG9uc2UobG9jYXRpb25EYXRhKTsKICAgICAgICB9KTsKICAgICAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9jaGVja19sb2NhdGlvbicsIGZhbHNlKTsKICAgICAgfSBlbHNlIHsKICAgICAgICBsb2NhdGlvblJlc3BvbnNlKGxvY2F0aW9uRGF0YSk7CiAgICAgIH0KICAgIH0KICAgIGZ1bmN0aW9uIGxvY2F0aW9uUmVzcG9uc2UocmVzcG9uc2UpIHsKICAgICAgaWYgKGdldFJlcXVlc3RTdGF0ZS5jYWxsYmFja3MubGVuZ3RoID4gMCkgewogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ2V0UmVxdWVzdFN0YXRlLmNhbGxiYWNrcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgdmFyIGNhbGxiYWNrID0gZ2V0UmVxdWVzdFN0YXRlLmNhbGxiYWNrc1tpXTsKICAgICAgICAgIGNhbGxiYWNrKHJlc3BvbnNlKTsKICAgICAgICB9CiAgICAgICAgZ2V0UmVxdWVzdFN0YXRlLmNhbGxiYWNrcyA9IFtdOwogICAgICB9CiAgICAgIGlmIChyZXNwb25zZSAhPT0gbnVsbCkgewogICAgICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQoJ2xvY2F0aW9uUmVxdWVzdGVkJywgewogICAgICAgICAgbG9jYXRpb25EYXRhOiByZXNwb25zZQogICAgICAgIH0pOwogICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gY2hlY2tWZXJzaW9uKCkgewogICAgICBpZiAoIXZlcnNpb25BdExlYXN0KCc4LjAnKSkgewogICAgICAgIGNvbnNvbGUud2FybignW1RlbGVncmFtLldlYkFwcF0gTG9jYXRpb25NYW5hZ2VyIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdmVyc2lvbiAnICsgd2ViQXBwVmVyc2lvbik7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIGZ1bmN0aW9uIGNoZWNrSW5pdCgpIHsKICAgICAgaWYgKCFpc0luaXRlZCkgewogICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIExvY2F0aW9uTWFuYWdlciBzaG91bGQgYmUgaW5pdGVkIGJlZm9yZSB1c2luZy4nKTsKICAgICAgICB0aHJvdyBFcnJvcignV2ViQXBwTG9jYXRpb25NYW5hZ2VyTm90SW5pdGVkJyk7CiAgICAgIH0KICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgbG9jYXRpb25NYW5hZ2VyLmluaXQgPSBmdW5jdGlvbihjYWxsYmFjaykgewogICAgICBpZiAoIWNoZWNrVmVyc2lvbigpKSB7CiAgICAgICAgcmV0dXJuIGxvY2F0aW9uTWFuYWdlcjsKICAgICAgfQogICAgICBpZiAoaXNJbml0ZWQpIHsKICAgICAgICByZXR1cm4gbG9jYXRpb25NYW5hZ2VyOwogICAgICB9CiAgICAgIGlmIChjYWxsYmFjaykgewogICAgICAgIGluaXRSZXF1ZXN0U3RhdGUuY2FsbGJhY2tzLnB1c2goY2FsbGJhY2spOwogICAgICB9CiAgICAgIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX2NoZWNrX2xvY2F0aW9uJywgZmFsc2UpOwogICAgICByZXR1cm4gbG9jYXRpb25NYW5hZ2VyOwogICAgfTsKICAgIGxvY2F0aW9uTWFuYWdlci5nZXRMb2NhdGlvbiA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgIGlmICghY2hlY2tWZXJzaW9uKCkpIHsKICAgICAgICByZXR1cm4gbG9jYXRpb25NYW5hZ2VyOwogICAgICB9CiAgICAgIGNoZWNrSW5pdCgpOwogICAgICBpZiAoIWlzTG9jYXRpb25BdmFpbGFibGUpIHsKICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBMb2NhdGlvbiBpcyBub3QgYXZhaWxhYmxlIG9uIHRoaXMgZGV2aWNlLicpOwogICAgICAgIHRocm93IEVycm9yKCdXZWJBcHBMb2NhdGlvbk1hbmFnZXJMb2NhdGlvbk5vdEF2YWlsYWJsZScpOwogICAgICB9CgogICAgICBnZXRSZXF1ZXN0U3RhdGUuY2FsbGJhY2tzLnB1c2goY2FsbGJhY2spOwogICAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9yZXF1ZXN0X2xvY2F0aW9uJyk7CiAgICAgIHJldHVybiBsb2NhdGlvbk1hbmFnZXI7CiAgICB9OwogICAgbG9jYXRpb25NYW5hZ2VyLm9wZW5TZXR0aW5ncyA9IGZ1bmN0aW9uKCkgewogICAgICBpZiAoIWNoZWNrVmVyc2lvbigpKSB7CiAgICAgICAgcmV0dXJuIGxvY2F0aW9uTWFuYWdlcjsKICAgICAgfQogICAgICBjaGVja0luaXQoKTsKICAgICAgaWYgKCFpc0xvY2F0aW9uQXZhaWxhYmxlKSB7CiAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gTG9jYXRpb24gaXMgbm90IGF2YWlsYWJsZSBvbiB0aGlzIGRldmljZS4nKTsKICAgICAgICB0aHJvdyBFcnJvcignV2ViQXBwTG9jYXRpb25NYW5hZ2VyTG9jYXRpb25Ob3RBdmFpbGFibGUnKTsKICAgICAgfQogICAgICBpZiAoIWlzQWNjZXNzUmVxdWVzdGVkKSB7CiAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gTG9jYXRpb24gYWNjZXNzIHdhcyBub3QgcmVxdWVzdGVkIHlldC4nKTsKICAgICAgICB0aHJvdyBFcnJvcignV2ViQXBwTG9jYXRpb25NYW5hZ2VyTG9jYXRpb25BY2Nlc3NOb3RSZXF1ZXN0ZWQnKTsKICAgICAgfQogICAgICBpZiAoaXNBY2Nlc3NHcmFudGVkKSB7CiAgICAgICAgY29uc29sZS53YXJuKCdbVGVsZWdyYW0uV2ViQXBwXSBMb2NhdGlvbiBhY2Nlc3Mgd2FzIGdyYW50ZWQgYnkgdGhlIHVzZXIsIG5vIG5lZWQgdG8gZ28gdG8gc2V0dGluZ3MuJyk7CiAgICAgICAgcmV0dXJuIGxvY2F0aW9uTWFuYWdlcjsKICAgICAgfQogICAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9vcGVuX2xvY2F0aW9uX3NldHRpbmdzJywgZmFsc2UpOwogICAgICByZXR1cm4gbG9jYXRpb25NYW5hZ2VyOwogICAgfTsKICAgIHJldHVybiBsb2NhdGlvbk1hbmFnZXI7CiAgfSkoKTsKCiAgdmFyIEFjY2VsZXJvbWV0ZXIgPSAoZnVuY3Rpb24oKSB7CiAgICB2YXIgaXNTdGFydGVkID0gZmFsc2U7CiAgICB2YXIgdmFsdWVYID0gbnVsbCwgdmFsdWVZID0gbnVsbCwgdmFsdWVaID0gbnVsbDsKICAgIHZhciBzdGFydENhbGxiYWNrcyA9IFtdLCBzdG9wQ2FsbGJhY2tzID0gW107CgogICAgdmFyIGFjY2VsZXJvbWV0ZXIgPSB7fTsKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShhY2NlbGVyb21ldGVyLCAnaXNTdGFydGVkJywgewogICAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiBpc1N0YXJ0ZWQ7IH0sCiAgICAgIGVudW1lcmFibGU6IHRydWUKICAgIH0pOwogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGFjY2VsZXJvbWV0ZXIsICd4JywgewogICAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiB2YWx1ZVg7IH0sCiAgICAgIGVudW1lcmFibGU6IHRydWUKICAgIH0pOwogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGFjY2VsZXJvbWV0ZXIsICd5JywgewogICAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiB2YWx1ZVk7IH0sCiAgICAgIGVudW1lcmFibGU6IHRydWUKICAgIH0pOwogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGFjY2VsZXJvbWV0ZXIsICd6JywgewogICAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiB2YWx1ZVo7IH0sCiAgICAgIGVudW1lcmFibGU6IHRydWUKICAgIH0pOwoKICAgIFdlYlZpZXcub25FdmVudCgnYWNjZWxlcm9tZXRlcl9zdGFydGVkJywgb25BY2NlbGVyb21ldGVyU3RhcnRlZCk7CiAgICBXZWJWaWV3Lm9uRXZlbnQoJ2FjY2VsZXJvbWV0ZXJfc3RvcHBlZCcsIG9uQWNjZWxlcm9tZXRlclN0b3BwZWQpOwogICAgV2ViVmlldy5vbkV2ZW50KCdhY2NlbGVyb21ldGVyX2NoYW5nZWQnLCBvbkFjY2VsZXJvbWV0ZXJDaGFuZ2VkKTsKICAgIFdlYlZpZXcub25FdmVudCgnYWNjZWxlcm9tZXRlcl9mYWlsZWQnLCAgb25BY2NlbGVyb21ldGVyRmFpbGVkKTsKCiAgICBmdW5jdGlvbiBvbkFjY2VsZXJvbWV0ZXJTdGFydGVkKGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICAgIGlzU3RhcnRlZCA9IHRydWU7CiAgICAgIGlmIChzdGFydENhbGxiYWNrcy5sZW5ndGggPiAwKSB7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGFydENhbGxiYWNrcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgdmFyIGNhbGxiYWNrID0gc3RhcnRDYWxsYmFja3NbaV07CiAgICAgICAgICBjYWxsYmFjayh0cnVlKTsKICAgICAgICB9CiAgICAgICAgc3RhcnRDYWxsYmFja3MgPSBbXTsKICAgICAgfQogICAgICByZWNlaXZlV2ViVmlld0V2ZW50KCdhY2NlbGVyb21ldGVyU3RhcnRlZCcpOwogICAgfQogICAgZnVuY3Rpb24gb25BY2NlbGVyb21ldGVyU3RvcHBlZChldmVudFR5cGUsIGV2ZW50RGF0YSkgewogICAgICBpc1N0YXJ0ZWQgPSBmYWxzZTsKICAgICAgaWYgKHN0b3BDYWxsYmFja3MubGVuZ3RoID4gMCkgewogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RvcENhbGxiYWNrcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgdmFyIGNhbGxiYWNrID0gc3RvcENhbGxiYWNrc1tpXTsKICAgICAgICAgIGNhbGxiYWNrKHRydWUpOwogICAgICAgIH0KICAgICAgICBzdG9wQ2FsbGJhY2tzID0gW107CiAgICAgIH0KICAgICAgcmVjZWl2ZVdlYlZpZXdFdmVudCgnYWNjZWxlcm9tZXRlclN0b3BwZWQnKTsKICAgIH0KICAgIGZ1bmN0aW9uIG9uQWNjZWxlcm9tZXRlckNoYW5nZWQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgICAgdmFsdWVYID0gZXZlbnREYXRhLng7CiAgICAgIHZhbHVlWSA9IGV2ZW50RGF0YS55OwogICAgICB2YWx1ZVogPSBldmVudERhdGEuejsKICAgICAgcmVjZWl2ZVdlYlZpZXdFdmVudCgnYWNjZWxlcm9tZXRlckNoYW5nZWQnKTsKICAgIH0KICAgIGZ1bmN0aW9uIG9uQWNjZWxlcm9tZXRlckZhaWxlZChldmVudFR5cGUsIGV2ZW50RGF0YSkgewogICAgICBpZiAoc3RhcnRDYWxsYmFja3MubGVuZ3RoID4gMCkgewogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhcnRDYWxsYmFja3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIHZhciBjYWxsYmFjayA9IHN0YXJ0Q2FsbGJhY2tzW2ldOwogICAgICAgICAgY2FsbGJhY2soZmFsc2UpOwogICAgICAgIH0KICAgICAgICBzdGFydENhbGxiYWNrcyA9IFtdOwogICAgICB9CiAgICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQoJ2FjY2VsZXJvbWV0ZXJGYWlsZWQnLCB7CiAgICAgICAgZXJyb3I6IGV2ZW50RGF0YS5lcnJvcgogICAgICB9KTsKICAgIH0KCiAgICBmdW5jdGlvbiBjaGVja1ZlcnNpb24oKSB7CiAgICAgIGlmICghdmVyc2lvbkF0TGVhc3QoJzguMCcpKSB7CiAgICAgICAgY29uc29sZS53YXJuKCdbVGVsZWdyYW0uV2ViQXBwXSBBY2NlbGVyb21ldGVyIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdmVyc2lvbiAnICsgd2ViQXBwVmVyc2lvbik7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIGFjY2VsZXJvbWV0ZXIuc3RhcnQgPSBmdW5jdGlvbihwYXJhbXMsIGNhbGxiYWNrKSB7CiAgICAgIHBhcmFtcyA9IHBhcmFtcyB8fCB7fTsKICAgICAgaWYgKCFjaGVja1ZlcnNpb24oKSkgewogICAgICAgIHJldHVybiBhY2NlbGVyb21ldGVyOwogICAgICB9CiAgICAgIHZhciByZXFfcGFyYW1zID0ge307CiAgICAgIHZhciByZWZyZXNoX3JhdGUgPSBwYXJzZUludChwYXJhbXMucmVmcmVzaF9yYXRlIHx8IDEwMDApOwogICAgICBpZiAoaXNOYU4ocmVmcmVzaF9yYXRlKSB8fCByZWZyZXNoX3JhdGUgPCAyMCB8fCByZWZyZXNoX3JhdGUgPiAxMDAwKSB7CiAgICAgICAgY29uc29sZS53YXJuKCdbVGVsZWdyYW0uV2ViQXBwXSBBY2NlbGVyb21ldGVyIHJlZnJlc2hfcmF0ZSBpcyBpbnZhbGlkJywgcmVmcmVzaF9yYXRlKTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXFfcGFyYW1zLnJlZnJlc2hfcmF0ZSA9IHJlZnJlc2hfcmF0ZTsKICAgICAgfQoKICAgICAgaWYgKGNhbGxiYWNrKSB7CiAgICAgICAgc3RhcnRDYWxsYmFja3MucHVzaChjYWxsYmFjayk7CiAgICAgIH0KICAgICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfc3RhcnRfYWNjZWxlcm9tZXRlcicsIGZhbHNlLCByZXFfcGFyYW1zKTsKICAgICAgcmV0dXJuIGFjY2VsZXJvbWV0ZXI7CiAgICB9OwogICAgYWNjZWxlcm9tZXRlci5zdG9wID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKICAgICAgaWYgKCFjaGVja1ZlcnNpb24oKSkgewogICAgICAgIHJldHVybiBhY2NlbGVyb21ldGVyOwogICAgICB9CiAgICAgIGlmIChjYWxsYmFjaykgewogICAgICAgIHN0b3BDYWxsYmFja3MucHVzaChjYWxsYmFjayk7CiAgICAgIH0KICAgICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfc3RvcF9hY2NlbGVyb21ldGVyJyk7CiAgICAgIHJldHVybiBhY2NlbGVyb21ldGVyOwogICAgfTsKICAgIHJldHVybiBhY2NlbGVyb21ldGVyOwogIH0pKCk7CgogIHZhciBEZXZpY2VPcmllbnRhdGlvbiA9IChmdW5jdGlvbigpIHsKICAgIHZhciBpc1N0YXJ0ZWQgPSBmYWxzZTsKICAgIHZhciB2YWx1ZUFscGhhID0gbnVsbCwgdmFsdWVCZXRhID0gbnVsbCwgdmFsdWVHYW1tYSA9IG51bGwsIHZhbHVlQWJzb2x1dGUgPSBmYWxzZTsKICAgIHZhciBzdGFydENhbGxiYWNrcyA9IFtdLCBzdG9wQ2FsbGJhY2tzID0gW107CgogICAgdmFyIGRldmljZU9yaWVudGF0aW9uID0ge307CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZGV2aWNlT3JpZW50YXRpb24sICdpc1N0YXJ0ZWQnLCB7CiAgICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIGlzU3RhcnRlZDsgfSwKICAgICAgZW51bWVyYWJsZTogdHJ1ZQogICAgfSk7CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZGV2aWNlT3JpZW50YXRpb24sICdhYnNvbHV0ZScsIHsKICAgICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gdmFsdWVBYnNvbHV0ZTsgfSwKICAgICAgZW51bWVyYWJsZTogdHJ1ZQogICAgfSk7CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZGV2aWNlT3JpZW50YXRpb24sICdhbHBoYScsIHsKICAgICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gdmFsdWVBbHBoYTsgfSwKICAgICAgZW51bWVyYWJsZTogdHJ1ZQogICAgfSk7CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZGV2aWNlT3JpZW50YXRpb24sICdiZXRhJywgewogICAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiB2YWx1ZUJldGE7IH0sCiAgICAgIGVudW1lcmFibGU6IHRydWUKICAgIH0pOwogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGRldmljZU9yaWVudGF0aW9uLCAnZ2FtbWEnLCB7CiAgICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIHZhbHVlR2FtbWE7IH0sCiAgICAgIGVudW1lcmFibGU6IHRydWUKICAgIH0pOwoKICAgIFdlYlZpZXcub25FdmVudCgnZGV2aWNlX29yaWVudGF0aW9uX3N0YXJ0ZWQnLCAgb25EZXZpY2VPcmllbnRhdGlvblN0YXJ0ZWQpOwogICAgV2ViVmlldy5vbkV2ZW50KCdkZXZpY2Vfb3JpZW50YXRpb25fc3RvcHBlZCcsICBvbkRldmljZU9yaWVudGF0aW9uU3RvcHBlZCk7CiAgICBXZWJWaWV3Lm9uRXZlbnQoJ2RldmljZV9vcmllbnRhdGlvbl9jaGFuZ2VkJywgb25EZXZpY2VPcmllbnRhdGlvbkNoYW5nZWQpOwogICAgV2ViVmlldy5vbkV2ZW50KCdkZXZpY2Vfb3JpZW50YXRpb25fZmFpbGVkJywgIG9uRGV2aWNlT3JpZW50YXRpb25GYWlsZWQpOwoKICAgIGZ1bmN0aW9uIG9uRGV2aWNlT3JpZW50YXRpb25TdGFydGVkKGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICAgIGlzU3RhcnRlZCA9IHRydWU7CiAgICAgIGlmIChzdGFydENhbGxiYWNrcy5sZW5ndGggPiAwKSB7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGFydENhbGxiYWNrcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgdmFyIGNhbGxiYWNrID0gc3RhcnRDYWxsYmFja3NbaV07CiAgICAgICAgICBjYWxsYmFjayh0cnVlKTsKICAgICAgICB9CiAgICAgICAgc3RhcnRDYWxsYmFja3MgPSBbXTsKICAgICAgfQogICAgICByZWNlaXZlV2ViVmlld0V2ZW50KCdkZXZpY2VPcmllbnRhdGlvblN0YXJ0ZWQnKTsKICAgIH0KICAgIGZ1bmN0aW9uIG9uRGV2aWNlT3JpZW50YXRpb25TdG9wcGVkKGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICAgIGlzU3RhcnRlZCA9IGZhbHNlOwogICAgICBpZiAoc3RvcENhbGxiYWNrcy5sZW5ndGggPiAwKSB7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdG9wQ2FsbGJhY2tzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB2YXIgY2FsbGJhY2sgPSBzdG9wQ2FsbGJhY2tzW2ldOwogICAgICAgICAgY2FsbGJhY2sodHJ1ZSk7CiAgICAgICAgfQogICAgICAgIHN0b3BDYWxsYmFja3MgPSBbXTsKICAgICAgfQogICAgICByZWNlaXZlV2ViVmlld0V2ZW50KCdkZXZpY2VPcmllbnRhdGlvblN0b3BwZWQnKTsKICAgIH0KICAgIGZ1bmN0aW9uIG9uRGV2aWNlT3JpZW50YXRpb25DaGFuZ2VkKGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICAgIHZhbHVlQWJzb2x1dGUgPSAhIWV2ZW50RGF0YS5hYnNvbHV0ZTsKICAgICAgdmFsdWVBbHBoYSA9IGV2ZW50RGF0YS5hbHBoYTsKICAgICAgdmFsdWVCZXRhICA9IGV2ZW50RGF0YS5iZXRhOwogICAgICB2YWx1ZUdhbW1hID0gZXZlbnREYXRhLmdhbW1hOwogICAgICByZWNlaXZlV2ViVmlld0V2ZW50KCdkZXZpY2VPcmllbnRhdGlvbkNoYW5nZWQnKTsKICAgIH0KICAgIGZ1bmN0aW9uIG9uRGV2aWNlT3JpZW50YXRpb25GYWlsZWQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgICAgaWYgKHN0YXJ0Q2FsbGJhY2tzLmxlbmd0aCA+IDApIHsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YXJ0Q2FsbGJhY2tzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB2YXIgY2FsbGJhY2sgPSBzdGFydENhbGxiYWNrc1tpXTsKICAgICAgICAgIGNhbGxiYWNrKGZhbHNlKTsKICAgICAgICB9CiAgICAgICAgc3RhcnRDYWxsYmFja3MgPSBbXTsKICAgICAgfQogICAgICByZWNlaXZlV2ViVmlld0V2ZW50KCdkZXZpY2VPcmllbnRhdGlvbkZhaWxlZCcsIHsKICAgICAgICBlcnJvcjogZXZlbnREYXRhLmVycm9yCiAgICAgIH0pOwogICAgfQoKICAgIGZ1bmN0aW9uIGNoZWNrVmVyc2lvbigpIHsKICAgICAgaWYgKCF2ZXJzaW9uQXRMZWFzdCgnOC4wJykpIHsKICAgICAgICBjb25zb2xlLndhcm4oJ1tUZWxlZ3JhbS5XZWJBcHBdIERldmljZU9yaWVudGF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdmVyc2lvbiAnICsgd2ViQXBwVmVyc2lvbik7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIGRldmljZU9yaWVudGF0aW9uLnN0YXJ0ID0gZnVuY3Rpb24ocGFyYW1zLCBjYWxsYmFjaykgewogICAgICBwYXJhbXMgPSBwYXJhbXMgfHwge307CiAgICAgIGlmICghY2hlY2tWZXJzaW9uKCkpIHsKICAgICAgICByZXR1cm4gZGV2aWNlT3JpZW50YXRpb247CiAgICAgIH0KICAgICAgdmFyIHJlcV9wYXJhbXMgPSB7fTsKICAgICAgdmFyIHJlZnJlc2hfcmF0ZSA9IHBhcnNlSW50KHBhcmFtcy5yZWZyZXNoX3JhdGUgfHwgMTAwMCk7CiAgICAgIGlmIChpc05hTihyZWZyZXNoX3JhdGUpIHx8IHJlZnJlc2hfcmF0ZSA8IDIwIHx8IHJlZnJlc2hfcmF0ZSA+IDEwMDApIHsKICAgICAgICBjb25zb2xlLndhcm4oJ1tUZWxlZ3JhbS5XZWJBcHBdIERldmljZU9yaWVudGF0aW9uIHJlZnJlc2hfcmF0ZSBpcyBpbnZhbGlkJywgcmVmcmVzaF9yYXRlKTsKICAgICAgfSBlbHNlIHsKICAgICAgICByZXFfcGFyYW1zLnJlZnJlc2hfcmF0ZSA9IHJlZnJlc2hfcmF0ZTsKICAgICAgfQogICAgICByZXFfcGFyYW1zLm5lZWRfYWJzb2x1dGUgPSAhIXBhcmFtcy5uZWVkX2Fic29sdXRlOwoKICAgICAgaWYgKGNhbGxiYWNrKSB7CiAgICAgICAgc3RhcnRDYWxsYmFja3MucHVzaChjYWxsYmFjayk7CiAgICAgIH0KICAgICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfc3RhcnRfZGV2aWNlX29yaWVudGF0aW9uJywgZmFsc2UsIHJlcV9wYXJhbXMpOwogICAgICByZXR1cm4gZGV2aWNlT3JpZW50YXRpb247CiAgICB9OwogICAgZGV2aWNlT3JpZW50YXRpb24uc3RvcCA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgIGlmICghY2hlY2tWZXJzaW9uKCkpIHsKICAgICAgICByZXR1cm4gZGV2aWNlT3JpZW50YXRpb247CiAgICAgIH0KICAgICAgaWYgKGNhbGxiYWNrKSB7CiAgICAgICAgc3RvcENhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTsKICAgICAgfQogICAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9zdG9wX2RldmljZV9vcmllbnRhdGlvbicpOwogICAgICByZXR1cm4gZGV2aWNlT3JpZW50YXRpb247CiAgICB9OwogICAgcmV0dXJuIGRldmljZU9yaWVudGF0aW9uOwogIH0pKCk7CgogIHZhciBHeXJvc2NvcGUgPSAoZnVuY3Rpb24oKSB7CiAgICB2YXIgaXNTdGFydGVkID0gZmFsc2U7CiAgICB2YXIgdmFsdWVYID0gbnVsbCwgdmFsdWVZID0gbnVsbCwgdmFsdWVaID0gbnVsbDsKICAgIHZhciBzdGFydENhbGxiYWNrcyA9IFtdLCBzdG9wQ2FsbGJhY2tzID0gW107CgogICAgdmFyIGd5cm9zY29wZSA9IHt9OwogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGd5cm9zY29wZSwgJ2lzU3RhcnRlZCcsIHsKICAgICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gaXNTdGFydGVkOyB9LAogICAgICBlbnVtZXJhYmxlOiB0cnVlCiAgICB9KTsKICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShneXJvc2NvcGUsICd4JywgewogICAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiB2YWx1ZVg7IH0sCiAgICAgIGVudW1lcmFibGU6IHRydWUKICAgIH0pOwogICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGd5cm9zY29wZSwgJ3knLCB7CiAgICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIHZhbHVlWTsgfSwKICAgICAgZW51bWVyYWJsZTogdHJ1ZQogICAgfSk7CiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZ3lyb3Njb3BlLCAneicsIHsKICAgICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gdmFsdWVaOyB9LAogICAgICBlbnVtZXJhYmxlOiB0cnVlCiAgICB9KTsKCiAgICBXZWJWaWV3Lm9uRXZlbnQoJ2d5cm9zY29wZV9zdGFydGVkJywgIG9uR3lyb3Njb3BlU3RhcnRlZCk7CiAgICBXZWJWaWV3Lm9uRXZlbnQoJ2d5cm9zY29wZV9zdG9wcGVkJywgIG9uR3lyb3Njb3BlU3RvcHBlZCk7CiAgICBXZWJWaWV3Lm9uRXZlbnQoJ2d5cm9zY29wZV9jaGFuZ2VkJywgb25HeXJvc2NvcGVDaGFuZ2VkKTsKICAgIFdlYlZpZXcub25FdmVudCgnZ3lyb3Njb3BlX2ZhaWxlZCcsICBvbkd5cm9zY29wZUZhaWxlZCk7CgogICAgZnVuY3Rpb24gb25HeXJvc2NvcGVTdGFydGVkKGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICAgIGlzU3RhcnRlZCA9IHRydWU7CiAgICAgIGlmIChzdGFydENhbGxiYWNrcy5sZW5ndGggPiAwKSB7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGFydENhbGxiYWNrcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgdmFyIGNhbGxiYWNrID0gc3RhcnRDYWxsYmFja3NbaV07CiAgICAgICAgICBjYWxsYmFjayh0cnVlKTsKICAgICAgICB9CiAgICAgICAgc3RhcnRDYWxsYmFja3MgPSBbXTsKICAgICAgfQogICAgICByZWNlaXZlV2ViVmlld0V2ZW50KCdneXJvc2NvcGVTdGFydGVkJyk7CiAgICB9CiAgICBmdW5jdGlvbiBvbkd5cm9zY29wZVN0b3BwZWQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgICAgaXNTdGFydGVkID0gZmFsc2U7CiAgICAgIGlmIChzdG9wQ2FsbGJhY2tzLmxlbmd0aCA+IDApIHsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0b3BDYWxsYmFja3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIHZhciBjYWxsYmFjayA9IHN0b3BDYWxsYmFja3NbaV07CiAgICAgICAgICBjYWxsYmFjayh0cnVlKTsKICAgICAgICB9CiAgICAgICAgc3RvcENhbGxiYWNrcyA9IFtdOwogICAgICB9CiAgICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQoJ2d5cm9zY29wZVN0b3BwZWQnKTsKICAgIH0KICAgIGZ1bmN0aW9uIG9uR3lyb3Njb3BlQ2hhbmdlZChldmVudFR5cGUsIGV2ZW50RGF0YSkgewogICAgICB2YWx1ZVggPSBldmVudERhdGEueDsKICAgICAgdmFsdWVZID0gZXZlbnREYXRhLnk7CiAgICAgIHZhbHVlWiA9IGV2ZW50RGF0YS56OwogICAgICByZWNlaXZlV2ViVmlld0V2ZW50KCdneXJvc2NvcGVDaGFuZ2VkJyk7CiAgICB9CiAgICBmdW5jdGlvbiBvbkd5cm9zY29wZUZhaWxlZChldmVudFR5cGUsIGV2ZW50RGF0YSkgewogICAgICBpZiAoc3RhcnRDYWxsYmFja3MubGVuZ3RoID4gMCkgewogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RhcnRDYWxsYmFja3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgIHZhciBjYWxsYmFjayA9IHN0YXJ0Q2FsbGJhY2tzW2ldOwogICAgICAgICAgY2FsbGJhY2soZmFsc2UpOwogICAgICAgIH0KICAgICAgICBzdGFydENhbGxiYWNrcyA9IFtdOwogICAgICB9CiAgICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQoJ2d5cm9zY29wZUZhaWxlZCcsIHsKICAgICAgICBlcnJvcjogZXZlbnREYXRhLmVycm9yCiAgICAgIH0pOwogICAgfQoKICAgIGZ1bmN0aW9uIGNoZWNrVmVyc2lvbigpIHsKICAgICAgaWYgKCF2ZXJzaW9uQXRMZWFzdCgnOC4wJykpIHsKICAgICAgICBjb25zb2xlLndhcm4oJ1tUZWxlZ3JhbS5XZWJBcHBdIEd5cm9zY29wZSBpcyBub3Qgc3VwcG9ydGVkIGluIHZlcnNpb24gJyArIHdlYkFwcFZlcnNpb24pOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBneXJvc2NvcGUuc3RhcnQgPSBmdW5jdGlvbihwYXJhbXMsIGNhbGxiYWNrKSB7CiAgICAgIHBhcmFtcyA9IHBhcmFtcyB8fCB7fTsKICAgICAgaWYgKCFjaGVja1ZlcnNpb24oKSkgewogICAgICAgIHJldHVybiBneXJvc2NvcGU7CiAgICAgIH0KICAgICAgdmFyIHJlcV9wYXJhbXMgPSB7fTsKICAgICAgdmFyIHJlZnJlc2hfcmF0ZSA9IHBhcnNlSW50KHBhcmFtcy5yZWZyZXNoX3JhdGUgfHwgMTAwMCk7CiAgICAgIGlmIChpc05hTihyZWZyZXNoX3JhdGUpIHx8IHJlZnJlc2hfcmF0ZSA8IDIwIHx8IHJlZnJlc2hfcmF0ZSA+IDEwMDApIHsKICAgICAgICBjb25zb2xlLndhcm4oJ1tUZWxlZ3JhbS5XZWJBcHBdIEd5cm9zY29wZSByZWZyZXNoX3JhdGUgaXMgaW52YWxpZCcsIHJlZnJlc2hfcmF0ZSk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmVxX3BhcmFtcy5yZWZyZXNoX3JhdGUgPSByZWZyZXNoX3JhdGU7CiAgICAgIH0KCiAgICAgIGlmIChjYWxsYmFjaykgewogICAgICAgIHN0YXJ0Q2FsbGJhY2tzLnB1c2goY2FsbGJhY2spOwogICAgICB9CiAgICAgIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX3N0YXJ0X2d5cm9zY29wZScsIGZhbHNlLCByZXFfcGFyYW1zKTsKICAgICAgcmV0dXJuIGd5cm9zY29wZTsKICAgIH07CiAgICBneXJvc2NvcGUuc3RvcCA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgIGlmICghY2hlY2tWZXJzaW9uKCkpIHsKICAgICAgICByZXR1cm4gZ3lyb3Njb3BlOwogICAgICB9CiAgICAgIGlmIChjYWxsYmFjaykgewogICAgICAgIHN0b3BDYWxsYmFja3MucHVzaChjYWxsYmFjayk7CiAgICAgIH0KICAgICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfc3RvcF9neXJvc2NvcGUnKTsKICAgICAgcmV0dXJuIGd5cm9zY29wZTsKICAgIH07CiAgICByZXR1cm4gZ3lyb3Njb3BlOwogIH0pKCk7CgogIHZhciB3ZWJBcHBJbnZvaWNlcyA9IHt9OwogIGZ1bmN0aW9uIG9uSW52b2ljZUNsb3NlZChldmVudFR5cGUsIGV2ZW50RGF0YSkgewogICAgaWYgKGV2ZW50RGF0YS5zbHVnICYmIHdlYkFwcEludm9pY2VzW2V2ZW50RGF0YS5zbHVnXSkgewogICAgICB2YXIgaW52b2ljZURhdGEgPSB3ZWJBcHBJbnZvaWNlc1tldmVudERhdGEuc2x1Z107CiAgICAgIGRlbGV0ZSB3ZWJBcHBJbnZvaWNlc1tldmVudERhdGEuc2x1Z107CiAgICAgIGlmIChpbnZvaWNlRGF0YS5jYWxsYmFjaykgewogICAgICAgIGludm9pY2VEYXRhLmNhbGxiYWNrKGV2ZW50RGF0YS5zdGF0dXMpOwogICAgICB9CiAgICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQoJ2ludm9pY2VDbG9zZWQnLCB7CiAgICAgICAgdXJsOiBpbnZvaWNlRGF0YS51cmwsCiAgICAgICAgc3RhdHVzOiBldmVudERhdGEuc3RhdHVzCiAgICAgIH0pOwogICAgfQogIH0KCiAgdmFyIHdlYkFwcFBvcHVwT3BlbmVkID0gZmFsc2U7CiAgZnVuY3Rpb24gb25Qb3B1cENsb3NlZChldmVudFR5cGUsIGV2ZW50RGF0YSkgewogICAgaWYgKHdlYkFwcFBvcHVwT3BlbmVkKSB7CiAgICAgIHZhciBwb3B1cERhdGEgPSB3ZWJBcHBQb3B1cE9wZW5lZDsKICAgICAgd2ViQXBwUG9wdXBPcGVuZWQgPSBmYWxzZTsKICAgICAgdmFyIGJ1dHRvbl9pZCA9IG51bGw7CiAgICAgIGlmICh0eXBlb2YgZXZlbnREYXRhLmJ1dHRvbl9pZCAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICBidXR0b25faWQgPSBldmVudERhdGEuYnV0dG9uX2lkOwogICAgICB9CiAgICAgIGlmIChwb3B1cERhdGEuY2FsbGJhY2spIHsKICAgICAgICBwb3B1cERhdGEuY2FsbGJhY2soYnV0dG9uX2lkKTsKICAgICAgfQogICAgICByZWNlaXZlV2ViVmlld0V2ZW50KCdwb3B1cENsb3NlZCcsIHsKICAgICAgICBidXR0b25faWQ6IGJ1dHRvbl9pZAogICAgICB9KTsKICAgIH0KICB9CgogIHZhciB3ZWJBcHBTY2FuUXJQb3B1cE9wZW5lZCA9IGZhbHNlOwogIGZ1bmN0aW9uIG9uUXJUZXh0UmVjZWl2ZWQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgIGlmICh3ZWJBcHBTY2FuUXJQb3B1cE9wZW5lZCkgewogICAgICB2YXIgcG9wdXBEYXRhID0gd2ViQXBwU2NhblFyUG9wdXBPcGVuZWQ7CiAgICAgIHZhciBkYXRhID0gbnVsbDsKICAgICAgaWYgKHR5cGVvZiBldmVudERhdGEuZGF0YSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICBkYXRhID0gZXZlbnREYXRhLmRhdGE7CiAgICAgIH0KICAgICAgaWYgKHBvcHVwRGF0YS5jYWxsYmFjaykgewogICAgICAgIGlmIChwb3B1cERhdGEuY2FsbGJhY2soZGF0YSkpIHsKICAgICAgICAgIHdlYkFwcFNjYW5RclBvcHVwT3BlbmVkID0gZmFsc2U7CiAgICAgICAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9jbG9zZV9zY2FuX3FyX3BvcHVwJywgZmFsc2UpOwogICAgICAgIH0KICAgICAgfQogICAgICByZWNlaXZlV2ViVmlld0V2ZW50KCdxclRleHRSZWNlaXZlZCcsIHsKICAgICAgICBkYXRhOiBkYXRhCiAgICAgIH0pOwogICAgfQogIH0KICBmdW5jdGlvbiBvblNjYW5RclBvcHVwQ2xvc2VkKGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICB3ZWJBcHBTY2FuUXJQb3B1cE9wZW5lZCA9IGZhbHNlOwogICAgcmVjZWl2ZVdlYlZpZXdFdmVudCgnc2NhblFyUG9wdXBDbG9zZWQnKTsKICB9CgogIGZ1bmN0aW9uIG9uQ2xpcGJvYXJkVGV4dFJlY2VpdmVkKGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICBpZiAoZXZlbnREYXRhLnJlcV9pZCAmJiB3ZWJBcHBDYWxsYmFja3NbZXZlbnREYXRhLnJlcV9pZF0pIHsKICAgICAgdmFyIHJlcXVlc3REYXRhID0gd2ViQXBwQ2FsbGJhY2tzW2V2ZW50RGF0YS5yZXFfaWRdOwogICAgICBkZWxldGUgd2ViQXBwQ2FsbGJhY2tzW2V2ZW50RGF0YS5yZXFfaWRdOwogICAgICB2YXIgZGF0YSA9IG51bGw7CiAgICAgIGlmICh0eXBlb2YgZXZlbnREYXRhLmRhdGEgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgZGF0YSA9IGV2ZW50RGF0YS5kYXRhOwogICAgICB9CiAgICAgIGlmIChyZXF1ZXN0RGF0YS5jYWxsYmFjaykgewogICAgICAgIHJlcXVlc3REYXRhLmNhbGxiYWNrKGRhdGEpOwogICAgICB9CiAgICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQoJ2NsaXBib2FyZFRleHRSZWNlaXZlZCcsIHsKICAgICAgICBkYXRhOiBkYXRhCiAgICAgIH0pOwogICAgfQogIH0KCiAgdmFyIFdlYkFwcFdyaXRlQWNjZXNzUmVxdWVzdGVkID0gZmFsc2U7CiAgZnVuY3Rpb24gb25Xcml0ZUFjY2Vzc1JlcXVlc3RlZChldmVudFR5cGUsIGV2ZW50RGF0YSkgewogICAgaWYgKFdlYkFwcFdyaXRlQWNjZXNzUmVxdWVzdGVkKSB7CiAgICAgIHZhciByZXF1ZXN0RGF0YSA9IFdlYkFwcFdyaXRlQWNjZXNzUmVxdWVzdGVkOwogICAgICBXZWJBcHBXcml0ZUFjY2Vzc1JlcXVlc3RlZCA9IGZhbHNlOwogICAgICBpZiAocmVxdWVzdERhdGEuY2FsbGJhY2spIHsKICAgICAgICByZXF1ZXN0RGF0YS5jYWxsYmFjayhldmVudERhdGEuc3RhdHVzID09ICdhbGxvd2VkJyk7CiAgICAgIH0KICAgICAgcmVjZWl2ZVdlYlZpZXdFdmVudCgnd3JpdGVBY2Nlc3NSZXF1ZXN0ZWQnLCB7CiAgICAgICAgc3RhdHVzOiBldmVudERhdGEuc3RhdHVzCiAgICAgIH0pOwogICAgfQogIH0KCiAgZnVuY3Rpb24gZ2V0UmVxdWVzdGVkQ29udGFjdChjYWxsYmFjaywgdGltZW91dCkgewogICAgdmFyIHJlcVRvLCBmYWxsYmFja1RvLCByZXFEZWxheSA9IDA7CiAgICB2YXIgcmVxSW52b2tlID0gZnVuY3Rpb24oKSB7CiAgICAgIGludm9rZUN1c3RvbU1ldGhvZCgnZ2V0UmVxdWVzdGVkQ29udGFjdCcsIHt9LCBmdW5jdGlvbihlcnIsIHJlcykgewogICAgICAgIGlmIChyZXMuc3Vic3RyKDAsIDEpID09ICciJyAmJiByZXMuc3Vic3RyKC0xKSA9PSAnIicpIHsgLy8gbWFjb3MgZml4CiAgICAgICAgICByZXMgPSBKU09OLnBhcnNlKHJlcyk7CiAgICAgICAgfQogICAgICAgIGlmIChyZXMgJiYgcmVzLmxlbmd0aCkgewogICAgICAgICAgY2xlYXJUaW1lb3V0KGZhbGxiYWNrVG8pOwogICAgICAgICAgY2FsbGJhY2socmVzKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmVxRGVsYXkgKz0gNTA7CiAgICAgICAgICByZXFUbyA9IHNldFRpbWVvdXQocmVxSW52b2tlLCByZXFEZWxheSk7CiAgICAgICAgfQogICAgICB9KTsKICAgIH07CiAgICB2YXIgZmFsbGJhY2tJbnZva2UgPSBmdW5jdGlvbigpIHsKICAgICAgY2xlYXJUaW1lb3V0KHJlcVRvKTsKICAgICAgY2FsbGJhY2soJycpOwogICAgfTsKICAgIGZhbGxiYWNrVG8gPSBzZXRUaW1lb3V0KGZhbGxiYWNrSW52b2tlLCB0aW1lb3V0KTsKICAgIHJlcUludm9rZSgpOwogIH0KCiAgdmFyIFdlYkFwcENvbnRhY3RSZXF1ZXN0ZWQgPSBmYWxzZTsKICBmdW5jdGlvbiBvblBob25lUmVxdWVzdGVkKGV2ZW50VHlwZSwgZXZlbnREYXRhKSB7CiAgICBpZiAoV2ViQXBwQ29udGFjdFJlcXVlc3RlZCkgewogICAgICB2YXIgcmVxdWVzdERhdGEgPSBXZWJBcHBDb250YWN0UmVxdWVzdGVkOwogICAgICBXZWJBcHBDb250YWN0UmVxdWVzdGVkID0gZmFsc2U7CiAgICAgIHZhciByZXF1ZXN0U2VudCA9IGV2ZW50RGF0YS5zdGF0dXMgPT0gJ3NlbnQnOwogICAgICB2YXIgd2ViVmlld0V2ZW50ID0gewogICAgICAgIHN0YXR1czogZXZlbnREYXRhLnN0YXR1cwogICAgICB9OwogICAgICBpZiAocmVxdWVzdFNlbnQpIHsKICAgICAgICBnZXRSZXF1ZXN0ZWRDb250YWN0KGZ1bmN0aW9uKHJlcykgewogICAgICAgICAgaWYgKHJlcyAmJiByZXMubGVuZ3RoKSB7CiAgICAgICAgICAgIHdlYlZpZXdFdmVudC5yZXNwb25zZSA9IHJlczsKICAgICAgICAgICAgd2ViVmlld0V2ZW50LnJlc3BvbnNlVW5zYWZlID0gVXRpbHMudXJsUGFyc2VRdWVyeVN0cmluZyhyZXMpOwogICAgICAgICAgICBmb3IgKHZhciBrZXkgaW4gd2ViVmlld0V2ZW50LnJlc3BvbnNlVW5zYWZlKSB7CiAgICAgICAgICAgICAgdmFyIHZhbCA9IHdlYlZpZXdFdmVudC5yZXNwb25zZVVuc2FmZVtrZXldOwogICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICBpZiAodmFsLnN1YnN0cigwLCAxKSA9PSAneycgJiYgdmFsLnN1YnN0cigtMSkgPT0gJ30nIHx8CiAgICAgICAgICAgICAgICAgICAgdmFsLnN1YnN0cigwLCAxKSA9PSAnWycgJiYgdmFsLnN1YnN0cigtMSkgPT0gJ10nKSB7CiAgICAgICAgICAgICAgICAgIHdlYlZpZXdFdmVudC5yZXNwb25zZVVuc2FmZVtrZXldID0gSlNPTi5wYXJzZSh2YWwpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIGlmIChyZXF1ZXN0RGF0YS5jYWxsYmFjaykgewogICAgICAgICAgICByZXF1ZXN0RGF0YS5jYWxsYmFjayhyZXF1ZXN0U2VudCwgd2ViVmlld0V2ZW50KTsKICAgICAgICAgIH0KICAgICAgICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQoJ2NvbnRhY3RSZXF1ZXN0ZWQnLCB3ZWJWaWV3RXZlbnQpOwogICAgICAgIH0sIDMwMDApOwogICAgICB9IGVsc2UgewogICAgICAgIGlmIChyZXF1ZXN0RGF0YS5jYWxsYmFjaykgewogICAgICAgICAgcmVxdWVzdERhdGEuY2FsbGJhY2socmVxdWVzdFNlbnQsIHdlYlZpZXdFdmVudCk7CiAgICAgICAgfQogICAgICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQoJ2NvbnRhY3RSZXF1ZXN0ZWQnLCB3ZWJWaWV3RXZlbnQpOwogICAgICB9CiAgICB9CiAgfQoKICB2YXIgd2ViQXBwRG93bmxvYWRGaWxlUmVxdWVzdGVkID0gZmFsc2U7CiAgZnVuY3Rpb24gb25GaWxlRG93bmxvYWRSZXF1ZXN0ZWQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgIGlmICh3ZWJBcHBEb3dubG9hZEZpbGVSZXF1ZXN0ZWQpIHsKICAgICAgdmFyIHJlcXVlc3REYXRhID0gd2ViQXBwRG93bmxvYWRGaWxlUmVxdWVzdGVkOwogICAgICB3ZWJBcHBEb3dubG9hZEZpbGVSZXF1ZXN0ZWQgPSBmYWxzZTsKICAgICAgdmFyIGlzRG93bmxvYWRpbmcgPSBldmVudERhdGEuc3RhdHVzID09ICdkb3dubG9hZGluZyc7CiAgICAgIGlmIChyZXF1ZXN0RGF0YS5jYWxsYmFjaykgewogICAgICAgIHJlcXVlc3REYXRhLmNhbGxiYWNrKGlzRG93bmxvYWRpbmcpOwogICAgICB9CiAgICAgIHJlY2VpdmVXZWJWaWV3RXZlbnQoJ2ZpbGVEb3dubG9hZFJlcXVlc3RlZCcsIHsKICAgICAgICBzdGF0dXM6IGlzRG93bmxvYWRpbmcgPyAnZG93bmxvYWRpbmcnIDogJ2NhbmNlbGxlZCcKICAgICAgfSk7CiAgICB9CiAgfQoKICBmdW5jdGlvbiBvbkN1c3RvbU1ldGhvZEludm9rZWQoZXZlbnRUeXBlLCBldmVudERhdGEpIHsKICAgIGlmIChldmVudERhdGEucmVxX2lkICYmIHdlYkFwcENhbGxiYWNrc1tldmVudERhdGEucmVxX2lkXSkgewogICAgICB2YXIgcmVxdWVzdERhdGEgPSB3ZWJBcHBDYWxsYmFja3NbZXZlbnREYXRhLnJlcV9pZF07CiAgICAgIGRlbGV0ZSB3ZWJBcHBDYWxsYmFja3NbZXZlbnREYXRhLnJlcV9pZF07CiAgICAgIHZhciByZXMgPSBudWxsLCBlcnIgPSBudWxsOwogICAgICBpZiAodHlwZW9mIGV2ZW50RGF0YS5yZXN1bHQgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgcmVzID0gZXZlbnREYXRhLnJlc3VsdDsKICAgICAgfQogICAgICBpZiAodHlwZW9mIGV2ZW50RGF0YS5lcnJvciAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICBlcnIgPSBldmVudERhdGEuZXJyb3I7CiAgICAgIH0KICAgICAgaWYgKHJlcXVlc3REYXRhLmNhbGxiYWNrKSB7CiAgICAgICAgcmVxdWVzdERhdGEuY2FsbGJhY2soZXJyLCByZXMpOwogICAgICB9CiAgICB9CiAgfQoKICBmdW5jdGlvbiBpbnZva2VDdXN0b21NZXRob2QobWV0aG9kLCBwYXJhbXMsIGNhbGxiYWNrKSB7CiAgICBpZiAoIXZlcnNpb25BdExlYXN0KCc2LjknKSkgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBNZXRob2QgaW52b2tlQ3VzdG9tTWV0aG9kIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdmVyc2lvbiAnICsgd2ViQXBwVmVyc2lvbik7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBNZXRob2RVbnN1cHBvcnRlZCcpOwogICAgfQogICAgdmFyIHJlcV9pZCA9IGdlbmVyYXRlQ2FsbGJhY2tJZCgxNik7CiAgICB2YXIgcmVxX3BhcmFtcyA9IHtyZXFfaWQ6IHJlcV9pZCwgbWV0aG9kOiBtZXRob2QsIHBhcmFtczogcGFyYW1zIHx8IHt9fTsKICAgIHdlYkFwcENhbGxiYWNrc1tyZXFfaWRdID0gewogICAgICBjYWxsYmFjazogY2FsbGJhY2sKICAgIH07CiAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9pbnZva2VfY3VzdG9tX21ldGhvZCcsIGZhbHNlLCByZXFfcGFyYW1zKTsKICB9OwoKICBpZiAoIXdpbmRvdy5UZWxlZ3JhbSkgewogICAgd2luZG93LlRlbGVncmFtID0ge307CiAgfQoKICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV2ViQXBwLCAnaW5pdERhdGEnLCB7CiAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiB3ZWJBcHBJbml0RGF0YTsgfSwKICAgIGVudW1lcmFibGU6IHRydWUKICB9KTsKICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV2ViQXBwLCAnaW5pdERhdGFVbnNhZmUnLCB7CiAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiB3ZWJBcHBJbml0RGF0YVVuc2FmZTsgfSwKICAgIGVudW1lcmFibGU6IHRydWUKICB9KTsKICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV2ViQXBwLCAndmVyc2lvbicsIHsKICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIHdlYkFwcFZlcnNpb247IH0sCiAgICBlbnVtZXJhYmxlOiB0cnVlCiAgfSk7CiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYkFwcCwgJ3BsYXRmb3JtJywgewogICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gd2ViQXBwUGxhdGZvcm07IH0sCiAgICBlbnVtZXJhYmxlOiB0cnVlCiAgfSk7CiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYkFwcCwgJ2NvbG9yU2NoZW1lJywgewogICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gY29sb3JTY2hlbWU7IH0sCiAgICBlbnVtZXJhYmxlOiB0cnVlCiAgfSk7CiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYkFwcCwgJ3RoZW1lUGFyYW1zJywgewogICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gdGhlbWVQYXJhbXM7IH0sCiAgICBlbnVtZXJhYmxlOiB0cnVlCiAgfSk7CiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYkFwcCwgJ2lzRXhwYW5kZWQnLCB7CiAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiBpc0V4cGFuZGVkOyB9LAogICAgZW51bWVyYWJsZTogdHJ1ZQogIH0pOwogIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXZWJBcHAsICd2aWV3cG9ydEhlaWdodCcsIHsKICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuICh2aWV3cG9ydEhlaWdodCA9PT0gZmFsc2UgPyB3aW5kb3cuaW5uZXJIZWlnaHQgOiB2aWV3cG9ydEhlaWdodCkgLSBib3R0b21CYXJIZWlnaHQ7IH0sCiAgICBlbnVtZXJhYmxlOiB0cnVlCiAgfSk7CiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYkFwcCwgJ3ZpZXdwb3J0U3RhYmxlSGVpZ2h0JywgewogICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gKHZpZXdwb3J0U3RhYmxlSGVpZ2h0ID09PSBmYWxzZSA/IHdpbmRvdy5pbm5lckhlaWdodCA6IHZpZXdwb3J0U3RhYmxlSGVpZ2h0KSAtIGJvdHRvbUJhckhlaWdodDsgfSwKICAgIGVudW1lcmFibGU6IHRydWUKICB9KTsKICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV2ViQXBwLCAnc2FmZUFyZWFJbnNldCcsIHsKICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIHNhZmVBcmVhSW5zZXQ7IH0sCiAgICBlbnVtZXJhYmxlOiB0cnVlCiAgfSk7CiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYkFwcCwgJ2NvbnRlbnRTYWZlQXJlYUluc2V0JywgewogICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gY29udGVudFNhZmVBcmVhSW5zZXQ7IH0sCiAgICBlbnVtZXJhYmxlOiB0cnVlCiAgfSk7CiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYkFwcCwgJ2lzQ2xvc2luZ0NvbmZpcm1hdGlvbkVuYWJsZWQnLCB7CiAgICBzZXQ6IGZ1bmN0aW9uKHZhbCl7IHNldENsb3NpbmdDb25maXJtYXRpb24odmFsKTsgfSwKICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIGlzQ2xvc2luZ0NvbmZpcm1hdGlvbkVuYWJsZWQ7IH0sCiAgICBlbnVtZXJhYmxlOiB0cnVlCiAgfSk7CiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYkFwcCwgJ2lzVmVydGljYWxTd2lwZXNFbmFibGVkJywgewogICAgc2V0OiBmdW5jdGlvbih2YWwpeyB0b2dnbGVWZXJ0aWNhbFN3aXBlcyh2YWwpOyB9LAogICAgZ2V0OiBmdW5jdGlvbigpeyByZXR1cm4gaXNWZXJ0aWNhbFN3aXBlc0VuYWJsZWQ7IH0sCiAgICBlbnVtZXJhYmxlOiB0cnVlCiAgfSk7CiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYkFwcCwgJ2lzRnVsbHNjcmVlbicsIHsKICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIHdlYkFwcElzRnVsbHNjcmVlbjsgfSwKICAgIGVudW1lcmFibGU6IHRydWUKICB9KTsKICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV2ViQXBwLCAnaXNPcmllbnRhdGlvbkxvY2tlZCcsIHsKICAgIHNldDogZnVuY3Rpb24odmFsKXsgdG9nZ2xlT3JpZW50YXRpb25Mb2NrKHZhbCk7IH0sCiAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiB3ZWJBcHBJc09yaWVudGF0aW9uTG9ja2VkOyB9LAogICAgZW51bWVyYWJsZTogdHJ1ZQogIH0pOwogIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXZWJBcHAsICdpc0FjdGl2ZScsIHsKICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIHdlYkFwcElzQWN0aXZlOyB9LAogICAgZW51bWVyYWJsZTogdHJ1ZQogIH0pOwogIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXZWJBcHAsICdoZWFkZXJDb2xvcicsIHsKICAgIHNldDogZnVuY3Rpb24odmFsKXsgc2V0SGVhZGVyQ29sb3IodmFsKTsgfSwKICAgIGdldDogZnVuY3Rpb24oKXsgcmV0dXJuIGdldEhlYWRlckNvbG9yKCk7IH0sCiAgICBlbnVtZXJhYmxlOiB0cnVlCiAgfSk7CiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYkFwcCwgJ2JhY2tncm91bmRDb2xvcicsIHsKICAgIHNldDogZnVuY3Rpb24odmFsKXsgc2V0QmFja2dyb3VuZENvbG9yKHZhbCk7IH0sCiAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiBnZXRCYWNrZ3JvdW5kQ29sb3IoKTsgfSwKICAgIGVudW1lcmFibGU6IHRydWUKICB9KTsKICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV2ViQXBwLCAnYm90dG9tQmFyQ29sb3InLCB7CiAgICBzZXQ6IGZ1bmN0aW9uKHZhbCl7IHNldEJvdHRvbUJhckNvbG9yKHZhbCk7IH0sCiAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiBnZXRCb3R0b21CYXJDb2xvcigpOyB9LAogICAgZW51bWVyYWJsZTogdHJ1ZQogIH0pOwogIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXZWJBcHAsICdCYWNrQnV0dG9uJywgewogICAgdmFsdWU6IEJhY2tCdXR0b24sCiAgICBlbnVtZXJhYmxlOiB0cnVlCiAgfSk7CiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYkFwcCwgJ01haW5CdXR0b24nLCB7CiAgICB2YWx1ZTogTWFpbkJ1dHRvbiwKICAgIGVudW1lcmFibGU6IHRydWUKICB9KTsKICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV2ViQXBwLCAnU2Vjb25kYXJ5QnV0dG9uJywgewogICAgdmFsdWU6IFNlY29uZGFyeUJ1dHRvbiwKICAgIGVudW1lcmFibGU6IHRydWUKICB9KTsKICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV2ViQXBwLCAnU2V0dGluZ3NCdXR0b24nLCB7CiAgICB2YWx1ZTogU2V0dGluZ3NCdXR0b24sCiAgICBlbnVtZXJhYmxlOiB0cnVlCiAgfSk7CiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYkFwcCwgJ0hhcHRpY0ZlZWRiYWNrJywgewogICAgdmFsdWU6IEhhcHRpY0ZlZWRiYWNrLAogICAgZW51bWVyYWJsZTogdHJ1ZQogIH0pOwogIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXZWJBcHAsICdDbG91ZFN0b3JhZ2UnLCB7CiAgICB2YWx1ZTogQ2xvdWRTdG9yYWdlLAogICAgZW51bWVyYWJsZTogdHJ1ZQogIH0pOwogIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXZWJBcHAsICdEZXZpY2VTdG9yYWdlJywgewogICAgdmFsdWU6IERldmljZVN0b3JhZ2UsCiAgICBlbnVtZXJhYmxlOiB0cnVlCiAgfSk7CiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYkFwcCwgJ1NlY3VyZVN0b3JhZ2UnLCB7CiAgICB2YWx1ZTogU2VjdXJlU3RvcmFnZSwKICAgIGVudW1lcmFibGU6IHRydWUKICB9KTsKICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV2ViQXBwLCAnQmlvbWV0cmljTWFuYWdlcicsIHsKICAgIHZhbHVlOiBCaW9tZXRyaWNNYW5hZ2VyLAogICAgZW51bWVyYWJsZTogdHJ1ZQogIH0pOwogIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXZWJBcHAsICdBY2NlbGVyb21ldGVyJywgewogICAgdmFsdWU6IEFjY2VsZXJvbWV0ZXIsCiAgICBlbnVtZXJhYmxlOiB0cnVlCiAgfSk7CiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdlYkFwcCwgJ0RldmljZU9yaWVudGF0aW9uJywgewogICAgdmFsdWU6IERldmljZU9yaWVudGF0aW9uLAogICAgZW51bWVyYWJsZTogdHJ1ZQogIH0pOwogIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXZWJBcHAsICdHeXJvc2NvcGUnLCB7CiAgICB2YWx1ZTogR3lyb3Njb3BlLAogICAgZW51bWVyYWJsZTogdHJ1ZQogIH0pOwogIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXZWJBcHAsICdMb2NhdGlvbk1hbmFnZXInLCB7CiAgICB2YWx1ZTogTG9jYXRpb25NYW5hZ2VyLAogICAgZW51bWVyYWJsZTogdHJ1ZQogIH0pOwogIFdlYkFwcC5pc1ZlcnNpb25BdExlYXN0ID0gZnVuY3Rpb24odmVyKSB7CiAgICByZXR1cm4gdmVyc2lvbkF0TGVhc3QodmVyKTsKICB9OwogIFdlYkFwcC5zZXRIZWFkZXJDb2xvciA9IGZ1bmN0aW9uKGNvbG9yX2tleSkgewogICAgV2ViQXBwLmhlYWRlckNvbG9yID0gY29sb3Jfa2V5OwogIH07CiAgV2ViQXBwLnNldEJhY2tncm91bmRDb2xvciA9IGZ1bmN0aW9uKGNvbG9yKSB7CiAgICBXZWJBcHAuYmFja2dyb3VuZENvbG9yID0gY29sb3I7CiAgfTsKICBXZWJBcHAuc2V0Qm90dG9tQmFyQ29sb3IgPSBmdW5jdGlvbihjb2xvcikgewogICAgV2ViQXBwLmJvdHRvbUJhckNvbG9yID0gY29sb3I7CiAgfTsKICBXZWJBcHAuZW5hYmxlQ2xvc2luZ0NvbmZpcm1hdGlvbiA9IGZ1bmN0aW9uKCkgewogICAgV2ViQXBwLmlzQ2xvc2luZ0NvbmZpcm1hdGlvbkVuYWJsZWQgPSB0cnVlOwogIH07CiAgV2ViQXBwLmRpc2FibGVDbG9zaW5nQ29uZmlybWF0aW9uID0gZnVuY3Rpb24oKSB7CiAgICBXZWJBcHAuaXNDbG9zaW5nQ29uZmlybWF0aW9uRW5hYmxlZCA9IGZhbHNlOwogIH07CiAgV2ViQXBwLmVuYWJsZVZlcnRpY2FsU3dpcGVzID0gZnVuY3Rpb24oKSB7CiAgICBXZWJBcHAuaXNWZXJ0aWNhbFN3aXBlc0VuYWJsZWQgPSB0cnVlOwogIH07CiAgV2ViQXBwLmRpc2FibGVWZXJ0aWNhbFN3aXBlcyA9IGZ1bmN0aW9uKCkgewogICAgV2ViQXBwLmlzVmVydGljYWxTd2lwZXNFbmFibGVkID0gZmFsc2U7CiAgfTsKICBXZWJBcHAubG9ja09yaWVudGF0aW9uID0gZnVuY3Rpb24oKSB7CiAgICBXZWJBcHAuaXNPcmllbnRhdGlvbkxvY2tlZCA9IHRydWU7CiAgfTsKICBXZWJBcHAudW5sb2NrT3JpZW50YXRpb24gPSBmdW5jdGlvbigpIHsKICAgIFdlYkFwcC5pc09yaWVudGF0aW9uTG9ja2VkID0gZmFsc2U7CiAgfTsKICBXZWJBcHAucmVxdWVzdEZ1bGxzY3JlZW4gPSBmdW5jdGlvbigpIHsKICAgIGlmICghdmVyc2lvbkF0TGVhc3QoJzguMCcpKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIE1ldGhvZCByZXF1ZXN0RnVsbHNjcmVlbiBpcyBub3Qgc3VwcG9ydGVkIGluIHZlcnNpb24gJyArIHdlYkFwcFZlcnNpb24pOwogICAgICB0aHJvdyBFcnJvcignV2ViQXBwTWV0aG9kVW5zdXBwb3J0ZWQnKTsKICAgIH0KICAgIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX3JlcXVlc3RfZnVsbHNjcmVlbicpOwogIH07CiAgV2ViQXBwLmV4aXRGdWxsc2NyZWVuID0gZnVuY3Rpb24oKSB7CiAgICBpZiAoIXZlcnNpb25BdExlYXN0KCc4LjAnKSkgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBNZXRob2QgZXhpdEZ1bGxzY3JlZW4gaXMgbm90IHN1cHBvcnRlZCBpbiB2ZXJzaW9uICcgKyB3ZWJBcHBWZXJzaW9uKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcE1ldGhvZFVuc3VwcG9ydGVkJyk7CiAgICB9CiAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9leGl0X2Z1bGxzY3JlZW4nKTsKICB9OwogIFdlYkFwcC5hZGRUb0hvbWVTY3JlZW4gPSBmdW5jdGlvbigpIHsKICAgIGlmICghdmVyc2lvbkF0TGVhc3QoJzguMCcpKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIE1ldGhvZCBhZGRUb0hvbWVTY3JlZW4gaXMgbm90IHN1cHBvcnRlZCBpbiB2ZXJzaW9uICcgKyB3ZWJBcHBWZXJzaW9uKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcE1ldGhvZFVuc3VwcG9ydGVkJyk7CiAgICB9CiAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9hZGRfdG9faG9tZV9zY3JlZW4nKTsKICB9OwogIFdlYkFwcC5jaGVja0hvbWVTY3JlZW5TdGF0dXMgPSBmdW5jdGlvbihjYWxsYmFjaykgewogICAgaWYgKCF2ZXJzaW9uQXRMZWFzdCgnOC4wJykpIHsKICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gTWV0aG9kIGNoZWNrSG9tZVNjcmVlblN0YXR1cyBpcyBub3Qgc3VwcG9ydGVkIGluIHZlcnNpb24gJyArIHdlYkFwcFZlcnNpb24pOwogICAgICB0aHJvdyBFcnJvcignV2ViQXBwTWV0aG9kVW5zdXBwb3J0ZWQnKTsKICAgIH0KICAgIGlmIChjYWxsYmFjaykgewogICAgICBob21lU2NyZWVuQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spOwogICAgfQogICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfY2hlY2tfaG9tZV9zY3JlZW4nKTsKICB9OwogIFdlYkFwcC5vbkV2ZW50ID0gZnVuY3Rpb24oZXZlbnRUeXBlLCBjYWxsYmFjaykgewogICAgb25XZWJWaWV3RXZlbnQoZXZlbnRUeXBlLCBjYWxsYmFjayk7CiAgfTsKICBXZWJBcHAub2ZmRXZlbnQgPSBmdW5jdGlvbihldmVudFR5cGUsIGNhbGxiYWNrKSB7b2ZmV2ViVmlld0V2ZW50KGV2ZW50VHlwZSwgY2FsbGJhY2spOwogIH07CiAgV2ViQXBwLnNlbmREYXRhID0gZnVuY3Rpb24gKGRhdGEpIHsKICAgIGlmICghZGF0YSB8fCAhZGF0YS5sZW5ndGgpIHsKICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gRGF0YSBpcyByZXF1aXJlZCcsIGRhdGEpOwogICAgICB0aHJvdyBFcnJvcignV2ViQXBwRGF0YUludmFsaWQnKTsKICAgIH0KICAgIGlmIChieXRlTGVuZ3RoKGRhdGEpID4gNDA5NikgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBEYXRhIGlzIHRvbyBsb25nJywgZGF0YSk7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBEYXRhSW52YWxpZCcpOwogICAgfQogICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfZGF0YV9zZW5kJywgZmFsc2UsIHtkYXRhOiBkYXRhfSk7CiAgfTsKICBXZWJBcHAuc3dpdGNoSW5saW5lUXVlcnkgPSBmdW5jdGlvbiAocXVlcnksIGNob29zZV9jaGF0X3R5cGVzKSB7CiAgICBpZiAoIXZlcnNpb25BdExlYXN0KCc2LjYnKSkgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBNZXRob2Qgc3dpdGNoSW5saW5lUXVlcnkgaXMgbm90IHN1cHBvcnRlZCBpbiB2ZXJzaW9uICcgKyB3ZWJBcHBWZXJzaW9uKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcE1ldGhvZFVuc3VwcG9ydGVkJyk7CiAgICB9CiAgICBpZiAoIWluaXRQYXJhbXMudGdXZWJBcHBCb3RJbmxpbmUpIHsKICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gSW5saW5lIG1vZGUgaXMgZGlzYWJsZWQgZm9yIHRoaXMgYm90LiBSZWFkIG1vcmUgYWJvdXQgaW5saW5lIG1vZGU6IGh0dHBzOi8vY29yZS50ZWxlZ3JhbS5vcmcvYm90cy9pbmxpbmUnKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcElubGluZU1vZGVEaXNhYmxlZCcpOwogICAgfQogICAgcXVlcnkgPSBxdWVyeSB8fCAnJzsKICAgIGlmIChxdWVyeS5sZW5ndGggPiAyNTYpIHsKICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gSW5saW5lIHF1ZXJ5IGlzIHRvbyBsb25nJywgcXVlcnkpOwogICAgICB0aHJvdyBFcnJvcignV2ViQXBwSW5saW5lUXVlcnlJbnZhbGlkJyk7CiAgICB9CiAgICB2YXIgY2hhdF90eXBlcyA9IFtdOwogICAgaWYgKGNob29zZV9jaGF0X3R5cGVzKSB7CiAgICAgIGlmICghQXJyYXkuaXNBcnJheShjaG9vc2VfY2hhdF90eXBlcykpIHsKICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBDaG9vc2UgY2hhdCB0eXBlcyBzaG91bGQgYmUgYW4gYXJyYXknLCBjaG9vc2VfY2hhdF90eXBlcyk7CiAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcElubGluZUNob29zZUNoYXRUeXBlc0ludmFsaWQnKTsKICAgICAgfQogICAgICB2YXIgZ29vZF90eXBlcyA9IHt1c2VyczogMSwgYm90czogMSwgZ3JvdXBzOiAxLCBjaGFubmVsczogMX07CiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hvb3NlX2NoYXRfdHlwZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICB2YXIgY2hhdF90eXBlID0gY2hvb3NlX2NoYXRfdHlwZXNbaV07CiAgICAgICAgaWYgKCFnb29kX3R5cGVzW2NoYXRfdHlwZV0pIHsKICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIENob29zZSBjaGF0IHR5cGUgaXMgaW52YWxpZCcsIGNoYXRfdHlwZSk7CiAgICAgICAgICB0aHJvdyBFcnJvcignV2ViQXBwSW5saW5lQ2hvb3NlQ2hhdFR5cGVJbnZhbGlkJyk7CiAgICAgICAgfQogICAgICAgIGlmIChnb29kX3R5cGVzW2NoYXRfdHlwZV0gIT0gMikgewogICAgICAgICAgZ29vZF90eXBlc1tjaGF0X3R5cGVdID0gMjsKICAgICAgICAgIGNoYXRfdHlwZXMucHVzaChjaGF0X3R5cGUpOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfc3dpdGNoX2lubGluZV9xdWVyeScsIGZhbHNlLCB7cXVlcnk6IHF1ZXJ5LCBjaGF0X3R5cGVzOiBjaGF0X3R5cGVzfSk7CiAgfTsKICBXZWJBcHAub3BlbkxpbmsgPSBmdW5jdGlvbiAodXJsLCBvcHRpb25zKSB7CiAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ0EnKTsKICAgIGEuaHJlZiA9IHVybDsKICAgIGlmIChhLnByb3RvY29sICE9ICdodHRwOicgJiYKICAgICAgICBhLnByb3RvY29sICE9ICdodHRwczonKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIFVybCBwcm90b2NvbCBpcyBub3Qgc3VwcG9ydGVkJywgdXJsKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcFRnVXJsSW52YWxpZCcpOwogICAgfQogICAgdmFyIHVybCA9IGEuaHJlZjsKICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwogICAgaWYgKHZlcnNpb25BdExlYXN0KCc2LjEnKSkgewogICAgICB2YXIgcmVxX3BhcmFtcyA9IHt1cmw6IHVybH07CiAgICAgIGlmICh2ZXJzaW9uQXRMZWFzdCgnNi40JykgJiYgb3B0aW9ucy50cnlfaW5zdGFudF92aWV3KSB7CiAgICAgICAgcmVxX3BhcmFtcy50cnlfaW5zdGFudF92aWV3ID0gdHJ1ZTsKICAgICAgfQogICAgICBpZiAodmVyc2lvbkF0TGVhc3QoJzcuNicpICYmIG9wdGlvbnMudHJ5X2Jyb3dzZXIpIHsKICAgICAgICByZXFfcGFyYW1zLnRyeV9icm93c2VyID0gb3B0aW9ucy50cnlfYnJvd3NlcjsKICAgICAgfQogICAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9vcGVuX2xpbmsnLCBmYWxzZSwgcmVxX3BhcmFtcyk7CiAgICB9IGVsc2UgewogICAgICB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKTsKICAgIH0KICB9OwogIFdlYkFwcC5vcGVuVGVsZWdyYW1MaW5rID0gZnVuY3Rpb24gKHVybCwgb3B0aW9ucykgewogICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdBJyk7CiAgICBhLmhyZWYgPSB1cmw7CiAgICBpZiAoYS5wcm90b2NvbCAhPSAnaHR0cDonICYmCiAgICAgICAgYS5wcm90b2NvbCAhPSAnaHR0cHM6JykgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBVcmwgcHJvdG9jb2wgaXMgbm90IHN1cHBvcnRlZCcsIHVybCk7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBUZ1VybEludmFsaWQnKTsKICAgIH0KICAgIGlmIChhLmhvc3RuYW1lICE9ICd0Lm1lJykgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBVcmwgaG9zdCBpcyBub3Qgc3VwcG9ydGVkJywgdXJsKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcFRnVXJsSW52YWxpZCcpOwogICAgfQogICAgdmFyIHBhdGhfZnVsbCA9IGEucGF0aG5hbWUgKyBhLnNlYXJjaDsKICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwogICAgaWYgKGlzSWZyYW1lIHx8IHZlcnNpb25BdExlYXN0KCc2LjEnKSkgewogICAgICB2YXIgcmVxX3BhcmFtcyA9IHtwYXRoX2Z1bGw6IHBhdGhfZnVsbH07CiAgICAgIGlmIChvcHRpb25zLmZvcmNlX3JlcXVlc3QpIHsKICAgICAgICByZXFfcGFyYW1zLmZvcmNlX3JlcXVlc3QgPSB0cnVlOwogICAgICB9CiAgICAgIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX29wZW5fdGdfbGluaycsIGZhbHNlLCByZXFfcGFyYW1zKTsKICAgIH0gZWxzZSB7CiAgICAgIGxvY2F0aW9uLmhyZWYgPSAnaHR0cHM6Ly90Lm1lJyArIHBhdGhfZnVsbDsKICAgIH0KICB9OwogIFdlYkFwcC5vcGVuSW52b2ljZSA9IGZ1bmN0aW9uICh1cmwsIGNhbGxiYWNrKSB7CiAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ0EnKSwgbWF0Y2gsIHNsdWc7CiAgICBhLmhyZWYgPSB1cmw7CiAgICBpZiAoYS5wcm90b2NvbCAhPSAnaHR0cDonICYmCiAgICAgICAgYS5wcm90b2NvbCAhPSAnaHR0cHM6JyB8fAogICAgICAgIGEuaG9zdG5hbWUgIT0gJ3QubWUnIHx8CiAgICAgICAgIShtYXRjaCA9IGEucGF0aG5hbWUubWF0Y2goL15cLyhcJHxpbnZvaWNlXC8pKFtBLVphLXowLTlcLV89XSspJC8pKSB8fAogICAgICAgICEoc2x1ZyA9IG1hdGNoWzJdKSkgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBJbnZvaWNlIHVybCBpcyBpbnZhbGlkJywgdXJsKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcEludm9pY2VVcmxJbnZhbGlkJyk7CiAgICB9CiAgICBpZiAoIXZlcnNpb25BdExlYXN0KCc2LjEnKSkgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBNZXRob2Qgb3Blbkludm9pY2UgaXMgbm90IHN1cHBvcnRlZCBpbiB2ZXJzaW9uICcgKyB3ZWJBcHBWZXJzaW9uKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcE1ldGhvZFVuc3VwcG9ydGVkJyk7CiAgICB9CiAgICBpZiAod2ViQXBwSW52b2ljZXNbc2x1Z10pIHsKICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gSW52b2ljZSBpcyBhbHJlYWR5IG9wZW5lZCcpOwogICAgICB0aHJvdyBFcnJvcignV2ViQXBwSW52b2ljZU9wZW5lZCcpOwogICAgfQogICAgd2ViQXBwSW52b2ljZXNbc2x1Z10gPSB7CiAgICAgIHVybDogdXJsLAogICAgICBjYWxsYmFjazogY2FsbGJhY2sKICAgIH07CiAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9vcGVuX2ludm9pY2UnLCBmYWxzZSwge3NsdWc6IHNsdWd9KTsKICB9OwogIFdlYkFwcC5zaG93UG9wdXAgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykgewogICAgaWYgKCF2ZXJzaW9uQXRMZWFzdCgnNi4yJykpIHsKICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gTWV0aG9kIHNob3dQb3B1cCBpcyBub3Qgc3VwcG9ydGVkIGluIHZlcnNpb24gJyArIHdlYkFwcFZlcnNpb24pOwogICAgICB0aHJvdyBFcnJvcignV2ViQXBwTWV0aG9kVW5zdXBwb3J0ZWQnKTsKICAgIH0KICAgIGlmICh3ZWJBcHBQb3B1cE9wZW5lZCkgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBQb3B1cCBpcyBhbHJlYWR5IG9wZW5lZCcpOwogICAgICB0aHJvdyBFcnJvcignV2ViQXBwUG9wdXBPcGVuZWQnKTsKICAgIH0KICAgIHZhciB0aXRsZSA9ICcnOwogICAgdmFyIG1lc3NhZ2UgPSAnJzsKICAgIHZhciBidXR0b25zID0gW107CiAgICB2YXIgcG9wdXBfYnV0dG9ucyA9IHt9OwogICAgdmFyIHBvcHVwX3BhcmFtcyA9IHt9OwogICAgaWYgKHR5cGVvZiBwYXJhbXMudGl0bGUgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgIHRpdGxlID0gc3RyVHJpbShwYXJhbXMudGl0bGUpOwogICAgICBpZiAodGl0bGUubGVuZ3RoID4gNjQpIHsKICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBQb3B1cCB0aXRsZSBpcyB0b28gbG9uZycsIHRpdGxlKTsKICAgICAgICB0aHJvdyBFcnJvcignV2ViQXBwUG9wdXBQYXJhbUludmFsaWQnKTsKICAgICAgfQogICAgICBpZiAodGl0bGUubGVuZ3RoID4gMCkgewogICAgICAgIHBvcHVwX3BhcmFtcy50aXRsZSA9IHRpdGxlOwogICAgICB9CiAgICB9CiAgICBpZiAodHlwZW9mIHBhcmFtcy5tZXNzYWdlICE9PSAndW5kZWZpbmVkJykgewogICAgICBtZXNzYWdlID0gc3RyVHJpbShwYXJhbXMubWVzc2FnZSk7CiAgICB9CiAgICBpZiAoIW1lc3NhZ2UubGVuZ3RoKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIFBvcHVwIG1lc3NhZ2UgaXMgcmVxdWlyZWQnLCBwYXJhbXMubWVzc2FnZSk7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBQb3B1cFBhcmFtSW52YWxpZCcpOwogICAgfQogICAgaWYgKG1lc3NhZ2UubGVuZ3RoID4gMjU2KSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIFBvcHVwIG1lc3NhZ2UgaXMgdG9vIGxvbmcnLCBtZXNzYWdlKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcFBvcHVwUGFyYW1JbnZhbGlkJyk7CiAgICB9CiAgICBwb3B1cF9wYXJhbXMubWVzc2FnZSA9IG1lc3NhZ2U7CiAgICBpZiAodHlwZW9mIHBhcmFtcy5idXR0b25zICE9PSAndW5kZWZpbmVkJykgewogICAgICBpZiAoIUFycmF5LmlzQXJyYXkocGFyYW1zLmJ1dHRvbnMpKSB7CiAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gUG9wdXAgYnV0dG9ucyBzaG91bGQgYmUgYW4gYXJyYXknLCBwYXJhbXMuYnV0dG9ucyk7CiAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcFBvcHVwUGFyYW1JbnZhbGlkJyk7CiAgICAgIH0KICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJhbXMuYnV0dG9ucy5sZW5ndGg7IGkrKykgewogICAgICAgIHZhciBidXR0b24gPSBwYXJhbXMuYnV0dG9uc1tpXTsKICAgICAgICB2YXIgYnRuID0ge307CiAgICAgICAgdmFyIGlkID0gJyc7CiAgICAgICAgaWYgKHR5cGVvZiBidXR0b24uaWQgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICBpZCA9IGJ1dHRvbi5pZC50b1N0cmluZygpOwogICAgICAgICAgaWYgKGlkLmxlbmd0aCA+IDY0KSB7CiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIFBvcHVwIGJ1dHRvbiBpZCBpcyB0b28gbG9uZycsIGlkKTsKICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcFBvcHVwUGFyYW1JbnZhbGlkJyk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGJ0bi5pZCA9IGlkOwogICAgICAgIHZhciBidXR0b25fdHlwZSA9IGJ1dHRvbi50eXBlOwogICAgICAgIGlmICh0eXBlb2YgYnV0dG9uX3R5cGUgPT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICBidXR0b25fdHlwZSA9ICdkZWZhdWx0JzsKICAgICAgICB9CiAgICAgICAgYnRuLnR5cGUgPSBidXR0b25fdHlwZTsKICAgICAgICBpZiAoYnV0dG9uX3R5cGUgPT0gJ29rJyB8fAogICAgICAgICAgICBidXR0b25fdHlwZSA9PSAnY2xvc2UnIHx8CiAgICAgICAgICAgIGJ1dHRvbl90eXBlID09ICdjYW5jZWwnKSB7CiAgICAgICAgICAvLyBubyBwYXJhbXMgbmVlZGVkCiAgICAgICAgfSBlbHNlIGlmIChidXR0b25fdHlwZSA9PSAnZGVmYXVsdCcgfHwKICAgICAgICAgICAgICAgICAgIGJ1dHRvbl90eXBlID09ICdkZXN0cnVjdGl2ZScpIHsKICAgICAgICAgIHZhciB0ZXh0ID0gJyc7CiAgICAgICAgICBpZiAodHlwZW9mIGJ1dHRvbi50ZXh0ICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICB0ZXh0ID0gc3RyVHJpbShidXR0b24udGV4dCk7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoIXRleHQubGVuZ3RoKSB7CiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIFBvcHVwIGJ1dHRvbiB0ZXh0IGlzIHJlcXVpcmVkIGZvciB0eXBlICcgKyBidXR0b25fdHlwZSwgYnV0dG9uLnRleHQpOwogICAgICAgICAgICB0aHJvdyBFcnJvcignV2ViQXBwUG9wdXBQYXJhbUludmFsaWQnKTsKICAgICAgICAgIH0KICAgICAgICAgIGlmICh0ZXh0Lmxlbmd0aCA+IDY0KSB7CiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIFBvcHVwIGJ1dHRvbiB0ZXh0IGlzIHRvbyBsb25nJywgdGV4dCk7CiAgICAgICAgICAgIHRocm93IEVycm9yKCdXZWJBcHBQb3B1cFBhcmFtSW52YWxpZCcpOwogICAgICAgICAgfQogICAgICAgICAgYnRuLnRleHQgPSB0ZXh0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBQb3B1cCBidXR0b24gdHlwZSBpcyBpbnZhbGlkJywgYnV0dG9uX3R5cGUpOwogICAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcFBvcHVwUGFyYW1JbnZhbGlkJyk7CiAgICAgICAgfQogICAgICAgIGJ1dHRvbnMucHVzaChidG4pOwogICAgICB9CiAgICB9IGVsc2UgewogICAgICBidXR0b25zLnB1c2goe2lkOiAnJywgdHlwZTogJ2Nsb3NlJ30pOwogICAgfQogICAgaWYgKGJ1dHRvbnMubGVuZ3RoIDwgMSkgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBQb3B1cCBzaG91bGQgaGF2ZSBhdCBsZWFzdCBvbmUgYnV0dG9uJyk7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBQb3B1cFBhcmFtSW52YWxpZCcpOwogICAgfQogICAgaWYgKGJ1dHRvbnMubGVuZ3RoID4gMykgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBQb3B1cCBzaG91bGQgbm90IGhhdmUgbW9yZSB0aGFuIDMgYnV0dG9ucycpOwogICAgICB0aHJvdyBFcnJvcignV2ViQXBwUG9wdXBQYXJhbUludmFsaWQnKTsKICAgIH0KICAgIHBvcHVwX3BhcmFtcy5idXR0b25zID0gYnV0dG9uczsKCiAgICB3ZWJBcHBQb3B1cE9wZW5lZCA9IHsKICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrCiAgICB9OwogICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfb3Blbl9wb3B1cCcsIGZhbHNlLCBwb3B1cF9wYXJhbXMpOwogIH07CiAgV2ViQXBwLnNob3dBbGVydCA9IGZ1bmN0aW9uIChtZXNzYWdlLCBjYWxsYmFjaykgewogICAgV2ViQXBwLnNob3dQb3B1cCh7CiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UKICAgIH0sIGNhbGxiYWNrID8gZnVuY3Rpb24oKXsgY2FsbGJhY2soKTsgfSA6IG51bGwpOwogIH07CiAgV2ViQXBwLnNob3dDb25maXJtID0gZnVuY3Rpb24gKG1lc3NhZ2UsIGNhbGxiYWNrKSB7CiAgICBXZWJBcHAuc2hvd1BvcHVwKHsKICAgICAgbWVzc2FnZTogbWVzc2FnZSwKICAgICAgYnV0dG9uczogWwogICAgICAgIHt0eXBlOiAnb2snLCBpZDogJ29rJ30sCiAgICAgICAge3R5cGU6ICdjYW5jZWwnfQogICAgICBdCiAgICB9LCBjYWxsYmFjayA/IGZ1bmN0aW9uIChidXR0b25faWQpIHsKICAgICAgY2FsbGJhY2soYnV0dG9uX2lkID09ICdvaycpOwogICAgfSA6IG51bGwpOwogIH07CiAgV2ViQXBwLnNob3dTY2FuUXJQb3B1cCA9IGZ1bmN0aW9uIChwYXJhbXMsIGNhbGxiYWNrKSB7CiAgICBpZiAoIXZlcnNpb25BdExlYXN0KCc2LjQnKSkgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBNZXRob2Qgc2hvd1NjYW5RclBvcHVwIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdmVyc2lvbiAnICsgd2ViQXBwVmVyc2lvbik7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBNZXRob2RVbnN1cHBvcnRlZCcpOwogICAgfQogICAgaWYgKHdlYkFwcFNjYW5RclBvcHVwT3BlbmVkKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIFBvcHVwIGlzIGFscmVhZHkgb3BlbmVkJyk7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBTY2FuUXJQb3B1cE9wZW5lZCcpOwogICAgfQogICAgdmFyIHRleHQgPSAnJzsKICAgIHZhciBwb3B1cF9wYXJhbXMgPSB7fTsKICAgIGlmICh0eXBlb2YgcGFyYW1zLnRleHQgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgIHRleHQgPSBzdHJUcmltKHBhcmFtcy50ZXh0KTsKICAgICAgaWYgKHRleHQubGVuZ3RoID4gNjQpIHsKICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBTY2FuIFFSIHBvcHVwIHRleHQgaXMgdG9vIGxvbmcnLCB0ZXh0KTsKICAgICAgICB0aHJvdyBFcnJvcignV2ViQXBwU2NhblFyUG9wdXBQYXJhbUludmFsaWQnKTsKICAgICAgfQogICAgICBpZiAodGV4dC5sZW5ndGggPiAwKSB7CiAgICAgICAgcG9wdXBfcGFyYW1zLnRleHQgPSB0ZXh0OwogICAgICB9CiAgICB9CgogICAgd2ViQXBwU2NhblFyUG9wdXBPcGVuZWQgPSB7CiAgICAgIGNhbGxiYWNrOiBjYWxsYmFjawogICAgfTsKICAgIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX29wZW5fc2Nhbl9xcl9wb3B1cCcsIGZhbHNlLCBwb3B1cF9wYXJhbXMpOwogIH07CiAgV2ViQXBwLmNsb3NlU2NhblFyUG9wdXAgPSBmdW5jdGlvbiAoKSB7CiAgICBpZiAoIXZlcnNpb25BdExlYXN0KCc2LjQnKSkgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBNZXRob2QgY2xvc2VTY2FuUXJQb3B1cCBpcyBub3Qgc3VwcG9ydGVkIGluIHZlcnNpb24gJyArIHdlYkFwcFZlcnNpb24pOwogICAgICB0aHJvdyBFcnJvcignV2ViQXBwTWV0aG9kVW5zdXBwb3J0ZWQnKTsKICAgIH0KCiAgICB3ZWJBcHBTY2FuUXJQb3B1cE9wZW5lZCA9IGZhbHNlOwogICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfY2xvc2Vfc2Nhbl9xcl9wb3B1cCcsIGZhbHNlKTsKICB9OwogIFdlYkFwcC5yZWFkVGV4dEZyb21DbGlwYm9hcmQgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHsKICAgIGlmICghdmVyc2lvbkF0TGVhc3QoJzYuNCcpKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIE1ldGhvZCByZWFkVGV4dEZyb21DbGlwYm9hcmQgaXMgbm90IHN1cHBvcnRlZCBpbiB2ZXJzaW9uICcgKyB3ZWJBcHBWZXJzaW9uKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcE1ldGhvZFVuc3VwcG9ydGVkJyk7CiAgICB9CiAgICB2YXIgcmVxX2lkID0gZ2VuZXJhdGVDYWxsYmFja0lkKDE2KTsKICAgIHZhciByZXFfcGFyYW1zID0ge3JlcV9pZDogcmVxX2lkfTsKICAgIHdlYkFwcENhbGxiYWNrc1tyZXFfaWRdID0gewogICAgICBjYWxsYmFjazogY2FsbGJhY2sKICAgIH07CiAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9yZWFkX3RleHRfZnJvbV9jbGlwYm9hcmQnLCBmYWxzZSwgcmVxX3BhcmFtcyk7CiAgfTsKICBXZWJBcHAucmVxdWVzdFdyaXRlQWNjZXNzID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7CiAgICBpZiAoIXZlcnNpb25BdExlYXN0KCc2LjknKSkgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBNZXRob2QgcmVxdWVzdFdyaXRlQWNjZXNzIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdmVyc2lvbiAnICsgd2ViQXBwVmVyc2lvbik7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBNZXRob2RVbnN1cHBvcnRlZCcpOwogICAgfQogICAgaWYgKFdlYkFwcFdyaXRlQWNjZXNzUmVxdWVzdGVkKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIFdyaXRlIGFjY2VzcyBpcyBhbHJlYWR5IHJlcXVlc3RlZCcpOwogICAgICB0aHJvdyBFcnJvcignV2ViQXBwV3JpdGVBY2Nlc3NSZXF1ZXN0ZWQnKTsKICAgIH0KICAgIFdlYkFwcFdyaXRlQWNjZXNzUmVxdWVzdGVkID0gewogICAgICBjYWxsYmFjazogY2FsbGJhY2sKICAgIH07CiAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9yZXF1ZXN0X3dyaXRlX2FjY2VzcycpOwogIH07CiAgV2ViQXBwLnJlcXVlc3RDb250YWN0ID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7CiAgICBpZiAoIXZlcnNpb25BdExlYXN0KCc2LjknKSkgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBNZXRob2QgcmVxdWVzdENvbnRhY3QgaXMgbm90IHN1cHBvcnRlZCBpbiB2ZXJzaW9uICcgKyB3ZWJBcHBWZXJzaW9uKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcE1ldGhvZFVuc3VwcG9ydGVkJyk7CiAgICB9CiAgICBpZiAoV2ViQXBwQ29udGFjdFJlcXVlc3RlZCkgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBDb250YWN0IGlzIGFscmVhZHkgcmVxdWVzdGVkJyk7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBDb250YWN0UmVxdWVzdGVkJyk7CiAgICB9CiAgICBXZWJBcHBDb250YWN0UmVxdWVzdGVkID0gewogICAgICBjYWxsYmFjazogY2FsbGJhY2sKICAgIH07CiAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9yZXF1ZXN0X3Bob25lJyk7CiAgfTsKICBXZWJBcHAuZG93bmxvYWRGaWxlID0gZnVuY3Rpb24gKHBhcmFtcywgY2FsbGJhY2spIHsKICAgIGlmICghdmVyc2lvbkF0TGVhc3QoJzguMCcpKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIE1ldGhvZCBkb3dubG9hZEZpbGUgaXMgbm90IHN1cHBvcnRlZCBpbiB2ZXJzaW9uICcgKyB3ZWJBcHBWZXJzaW9uKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcE1ldGhvZFVuc3VwcG9ydGVkJyk7CiAgICB9CiAgICBpZiAod2ViQXBwRG93bmxvYWRGaWxlUmVxdWVzdGVkKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIFBvcHVwIGlzIGFscmVhZHkgb3BlbmVkJyk7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBEb3dubG9hZEZpbGVQb3B1cE9wZW5lZCcpOwogICAgfQogICAgdmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdBJyk7CgogICAgdmFyIGRsX3BhcmFtcyA9IHt9OwogICAgaWYgKCFwYXJhbXMgfHwgIXBhcmFtcy51cmwgfHwgIXBhcmFtcy51cmwubGVuZ3RoKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIFVybCBpcyByZXF1aXJlZCcpOwogICAgICB0aHJvdyBFcnJvcignV2ViQXBwRG93bmxvYWRGaWxlUGFyYW1JbnZhbGlkJyk7CiAgICB9CiAgICBhLmhyZWYgPSBwYXJhbXMudXJsOwogICAgaWYgKGEucHJvdG9jb2wgIT0gJ2h0dHBzOicpIHsKICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gVXJsIHByb3RvY29sIGlzIG5vdCBzdXBwb3J0ZWQnLCB1cmwpOwogICAgICB0aHJvdyBFcnJvcignV2ViQXBwRG93bmxvYWRGaWxlUGFyYW1JbnZhbGlkJyk7CiAgICB9CiAgICBkbF9wYXJhbXMudXJsID0gYS5ocmVmOwoKICAgIGlmICghcGFyYW1zIHx8ICFwYXJhbXMuZmlsZV9uYW1lIHx8ICFwYXJhbXMuZmlsZV9uYW1lLmxlbmd0aCkgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBGaWxlIG5hbWUgaXMgcmVxdWlyZWQnKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcERvd25sb2FkRmlsZVBhcmFtSW52YWxpZCcpOwogICAgfQogICAgZGxfcGFyYW1zLmZpbGVfbmFtZSA9IHBhcmFtcy5maWxlX25hbWU7CgogICAgd2ViQXBwRG93bmxvYWRGaWxlUmVxdWVzdGVkID0gewogICAgICBjYWxsYmFjazogY2FsbGJhY2sKICAgIH07CiAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9yZXF1ZXN0X2ZpbGVfZG93bmxvYWQnLCBmYWxzZSwgZGxfcGFyYW1zKTsKICB9OwogIFdlYkFwcC5zaGFyZVRvU3RvcnkgPSBmdW5jdGlvbiAobWVkaWFfdXJsLCBwYXJhbXMpIHsKICAgIHBhcmFtcyA9IHBhcmFtcyB8fCB7fTsKICAgIGlmICghdmVyc2lvbkF0TGVhc3QoJzcuOCcpKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIE1ldGhvZCBzaGFyZVRvU3RvcnkgaXMgbm90IHN1cHBvcnRlZCBpbiB2ZXJzaW9uICcgKyB3ZWJBcHBWZXJzaW9uKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcE1ldGhvZFVuc3VwcG9ydGVkJyk7CiAgICB9CiAgICB2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ0EnKTsKICAgIGEuaHJlZiA9IG1lZGlhX3VybDsKICAgIGlmIChhLnByb3RvY29sICE9ICdodHRwOicgJiYKICAgICAgICBhLnByb3RvY29sICE9ICdodHRwczonKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIE1lZGlhIHVybCBwcm90b2NvbCBpcyBub3Qgc3VwcG9ydGVkJywgdXJsKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcE1lZGlhVXJsSW52YWxpZCcpOwogICAgfQogICAgdmFyIHNoYXJlX3BhcmFtcyA9IHt9OwogICAgc2hhcmVfcGFyYW1zLm1lZGlhX3VybCA9IGEuaHJlZjsKICAgIGlmICh0eXBlb2YgcGFyYW1zLnRleHQgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgIHZhciB0ZXh0ID0gc3RyVHJpbShwYXJhbXMudGV4dCk7CiAgICAgIGlmICh0ZXh0Lmxlbmd0aCA+IDIwNDgpIHsKICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBUZXh0IGlzIHRvbyBsb25nJywgdGV4dCk7CiAgICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcFNoYXJlVG9TdG9yeVBhcmFtSW52YWxpZCcpOwogICAgICB9CiAgICAgIGlmICh0ZXh0Lmxlbmd0aCA+IDApIHsKICAgICAgICBzaGFyZV9wYXJhbXMudGV4dCA9IHRleHQ7CiAgICAgIH0KICAgIH0KICAgIGlmICh0eXBlb2YgcGFyYW1zLndpZGdldF9saW5rICE9PSAndW5kZWZpbmVkJykgewogICAgICBwYXJhbXMud2lkZ2V0X2xpbmsgPSBwYXJhbXMud2lkZ2V0X2xpbmsgfHwge307CiAgICAgIGEuaHJlZiA9IHBhcmFtcy53aWRnZXRfbGluay51cmw7CiAgICAgIGlmIChhLnByb3RvY29sICE9ICdodHRwOicgJiYKICAgICAgICAgIGEucHJvdG9jb2wgIT0gJ2h0dHBzOicpIHsKICAgICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBMaW5rIHByb3RvY29sIGlzIG5vdCBzdXBwb3J0ZWQnLCB1cmwpOwogICAgICAgIHRocm93IEVycm9yKCdXZWJBcHBTaGFyZVRvU3RvcnlQYXJhbUludmFsaWQnKTsKICAgICAgfQogICAgICB2YXIgd2lkZ2V0X2xpbmsgPSB7CiAgICAgICAgdXJsOiBhLmhyZWYKICAgICAgfTsKICAgICAgaWYgKHR5cGVvZiBwYXJhbXMud2lkZ2V0X2xpbmsubmFtZSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICB2YXIgbGlua19uYW1lID0gc3RyVHJpbShwYXJhbXMud2lkZ2V0X2xpbmsubmFtZSk7CiAgICAgICAgaWYgKGxpbmtfbmFtZS5sZW5ndGggPiA0OCkgewogICAgICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gTGluayBuYW1lIGlzIHRvbyBsb25nJywgbGlua19uYW1lKTsKICAgICAgICAgIHRocm93IEVycm9yKCdXZWJBcHBTaGFyZVRvU3RvcnlQYXJhbUludmFsaWQnKTsKICAgICAgICB9CiAgICAgICAgaWYgKGxpbmtfbmFtZS5sZW5ndGggPiAwKSB7CiAgICAgICAgICB3aWRnZXRfbGluay5uYW1lID0gbGlua19uYW1lOwogICAgICAgIH0KICAgICAgfQogICAgICBzaGFyZV9wYXJhbXMud2lkZ2V0X2xpbmsgPSB3aWRnZXRfbGluazsKICAgIH0KCiAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9zaGFyZV90b19zdG9yeScsIGZhbHNlLCBzaGFyZV9wYXJhbXMpOwogIH07CiAgV2ViQXBwLnNoYXJlTWVzc2FnZSA9IGZ1bmN0aW9uIChtc2dfaWQsIGNhbGxiYWNrKSB7CiAgICBpZiAoIXZlcnNpb25BdExlYXN0KCc4LjAnKSkgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBNZXRob2Qgc2hhcmVNZXNzYWdlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdmVyc2lvbiAnICsgd2ViQXBwVmVyc2lvbik7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBNZXRob2RVbnN1cHBvcnRlZCcpOwogICAgfQogICAgaWYgKFdlYkFwcFNoYXJlTWVzc2FnZU9wZW5lZCkgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBTaGFyZSBtZXNzYWdlIGlzIGFscmVhZHkgb3BlbmVkJyk7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBTaGFyZU1lc3NhZ2VPcGVuZWQnKTsKICAgIH0KICAgIFdlYkFwcFNoYXJlTWVzc2FnZU9wZW5lZCA9IHsKICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrCiAgICB9OwogICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfc2VuZF9wcmVwYXJlZF9tZXNzYWdlJywgZmFsc2UsIHtpZDogbXNnX2lkfSk7CiAgfTsKICBXZWJBcHAucmVxdWVzdENoYXQgPSBmdW5jdGlvbiAocmVxX2lkLCBjYWxsYmFjaykgewogICAgaWYgKCF2ZXJzaW9uQXRMZWFzdCgnOS42JykpIHsKICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gTWV0aG9kIHJlcXVlc3RDaGF0IGlzIG5vdCBzdXBwb3J0ZWQgaW4gdmVyc2lvbiAnICsgd2ViQXBwVmVyc2lvbik7CiAgICAgIHRocm93IEVycm9yKCdXZWJBcHBNZXRob2RVbnN1cHBvcnRlZCcpOwogICAgfQogICAgaWYgKFdlYkFwcFJlcXVlc3RDaGF0T3BlbmVkKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIFJlcXVlc3QgY2hhdCBpcyBhbHJlYWR5IG9wZW5lZCcpOwogICAgICB0aHJvdyBFcnJvcignV2ViQXBwUmVxdWVzdENoYXRPcGVuZWQnKTsKICAgIH0KICAgIFdlYkFwcFJlcXVlc3RDaGF0T3BlbmVkID0gewogICAgICBjYWxsYmFjazogY2FsbGJhY2sKICAgIH07CiAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9yZXF1ZXN0X2NoYXQnLCBmYWxzZSwge3JlcV9pZDogcmVxX2lkfSk7CiAgfTsKICBXZWJBcHAuc2V0RW1vamlTdGF0dXMgPSBmdW5jdGlvbiAoY3VzdG9tX2Vtb2ppX2lkLCBwYXJhbXMsIGNhbGxiYWNrKSB7CiAgICBwYXJhbXMgPSBwYXJhbXMgfHwge307CiAgICBpZiAoIXZlcnNpb25BdExlYXN0KCc4LjAnKSkgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBNZXRob2Qgc2V0RW1vamlTdGF0dXMgaXMgbm90IHN1cHBvcnRlZCBpbiB2ZXJzaW9uICcgKyB3ZWJBcHBWZXJzaW9uKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcE1ldGhvZFVuc3VwcG9ydGVkJyk7CiAgICB9CiAgICB2YXIgc3RhdHVzX3BhcmFtcyA9IHt9OwogICAgc3RhdHVzX3BhcmFtcy5jdXN0b21fZW1vamlfaWQgPSBjdXN0b21fZW1vamlfaWQ7CiAgICBpZiAodHlwZW9mIHBhcmFtcy5kdXJhdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgc3RhdHVzX3BhcmFtcy5kdXJhdGlvbiA9IHBhcmFtcy5kdXJhdGlvbjsKICAgIH0KICAgIGlmIChXZWJBcHBFbW9qaVN0YXR1c1JlcXVlc3RlZCkgewogICAgICBjb25zb2xlLmVycm9yKCdbVGVsZWdyYW0uV2ViQXBwXSBFbW9qaSBzdGF0dXMgaXMgYWxyZWFkeSByZXF1ZXN0ZWQnKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcEVtb2ppU3RhdHVzUmVxdWVzdGVkJyk7CiAgICB9CiAgICBXZWJBcHBFbW9qaVN0YXR1c1JlcXVlc3RlZCA9IHsKICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrCiAgICB9OwogICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfc2V0X2Vtb2ppX3N0YXR1cycsIGZhbHNlLCBzdGF0dXNfcGFyYW1zKTsKICB9OwogIFdlYkFwcC5yZXF1ZXN0RW1vamlTdGF0dXNBY2Nlc3MgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHsKICAgIGlmICghdmVyc2lvbkF0TGVhc3QoJzguMCcpKSB7CiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUZWxlZ3JhbS5XZWJBcHBdIE1ldGhvZCByZXF1ZXN0RW1vamlTdGF0dXNBY2Nlc3MgaXMgbm90IHN1cHBvcnRlZCBpbiB2ZXJzaW9uICcgKyB3ZWJBcHBWZXJzaW9uKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcE1ldGhvZFVuc3VwcG9ydGVkJyk7CiAgICB9CiAgICBpZiAoV2ViQXBwRW1vamlTdGF0dXNBY2Nlc3NSZXF1ZXN0ZWQpIHsKICAgICAgY29uc29sZS5lcnJvcignW1RlbGVncmFtLldlYkFwcF0gRW1vamkgc3RhdHVzIHBlcm1pc3Npb24gaXMgYWxyZWFkeSByZXF1ZXN0ZWQnKTsKICAgICAgdGhyb3cgRXJyb3IoJ1dlYkFwcEVtb2ppU3RhdHVzQWNjZXNzUmVxdWVzdGVkJyk7CiAgICB9CiAgICBXZWJBcHBFbW9qaVN0YXR1c0FjY2Vzc1JlcXVlc3RlZCA9IHsKICAgICAgY2FsbGJhY2s6IGNhbGxiYWNrCiAgICB9OwogICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfcmVxdWVzdF9lbW9qaV9zdGF0dXNfYWNjZXNzJyk7CiAgfTsKICBXZWJBcHAuaW52b2tlQ3VzdG9tTWV0aG9kID0gZnVuY3Rpb24gKG1ldGhvZCwgcGFyYW1zLCBjYWxsYmFjaykgewogICAgaW52b2tlQ3VzdG9tTWV0aG9kKG1ldGhvZCwgcGFyYW1zLCBjYWxsYmFjayk7CiAgfTsKICBXZWJBcHAuaGlkZUtleWJvYXJkID0gZnVuY3Rpb24gKCkgewogICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfaGlkZV9rZXlib2FyZCcpOwogIH07CiAgV2ViQXBwLnJlYWR5ID0gZnVuY3Rpb24gKCkgewogICAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfcmVhZHknKTsKICB9OwogIFdlYkFwcC5leHBhbmQgPSBmdW5jdGlvbiAoKSB7CiAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9leHBhbmQnKTsKICB9OwogIFdlYkFwcC5jbG9zZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7CiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICAgIHZhciByZXFfcGFyYW1zID0ge307CiAgICBpZiAodmVyc2lvbkF0TGVhc3QoJzcuNicpICYmIG9wdGlvbnMucmV0dXJuX2JhY2spIHsKICAgICAgcmVxX3BhcmFtcy5yZXR1cm5fYmFjayA9IHRydWU7CiAgICB9CiAgICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9jbG9zZScsIGZhbHNlLCByZXFfcGFyYW1zKTsKICB9OwoKICB3aW5kb3cuVGVsZWdyYW0uV2ViQXBwID0gV2ViQXBwOwoKICB1cGRhdGVIZWFkZXJDb2xvcigpOwogIHVwZGF0ZUJhY2tncm91bmRDb2xvcigpOwogIHVwZGF0ZUJvdHRvbUJhckNvbG9yKCk7CiAgc2V0Vmlld3BvcnRIZWlnaHQoKTsKICBpZiAoaW5pdFBhcmFtcy50Z1dlYkFwcFNob3dTZXR0aW5ncykgewogICAgU2V0dGluZ3NCdXR0b24uc2hvdygpOwogIH0KCiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uV2luZG93UmVzaXplKTsKICBpZiAoaXNJZnJhbWUpIHsKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgbGlua0hhbmRsZXIpOwogIH0KCiAgV2ViVmlldy5vbkV2ZW50KCd0aGVtZV9jaGFuZ2VkJywgb25UaGVtZUNoYW5nZWQpOwogIFdlYlZpZXcub25FdmVudCgndmlld3BvcnRfY2hhbmdlZCcsIG9uVmlld3BvcnRDaGFuZ2VkKTsKICBXZWJWaWV3Lm9uRXZlbnQoJ3NhZmVfYXJlYV9jaGFuZ2VkJywgb25TYWZlQXJlYUNoYW5nZWQpOwogIFdlYlZpZXcub25FdmVudCgnY29udGVudF9zYWZlX2FyZWFfY2hhbmdlZCcsIG9uQ29udGVudFNhZmVBcmVhQ2hhbmdlZCk7CiAgV2ViVmlldy5vbkV2ZW50KCd2aXNpYmlsaXR5X2NoYW5nZWQnLCBvblZpc2liaWxpdHlDaGFuZ2VkKTsKICBXZWJWaWV3Lm9uRXZlbnQoJ2ludm9pY2VfY2xvc2VkJywgb25JbnZvaWNlQ2xvc2VkKTsKICBXZWJWaWV3Lm9uRXZlbnQoJ3BvcHVwX2Nsb3NlZCcsIG9uUG9wdXBDbG9zZWQpOwogIFdlYlZpZXcub25FdmVudCgncXJfdGV4dF9yZWNlaXZlZCcsIG9uUXJUZXh0UmVjZWl2ZWQpOwogIFdlYlZpZXcub25FdmVudCgnc2Nhbl9xcl9wb3B1cF9jbG9zZWQnLCBvblNjYW5RclBvcHVwQ2xvc2VkKTsKICBXZWJWaWV3Lm9uRXZlbnQoJ2NsaXBib2FyZF90ZXh0X3JlY2VpdmVkJywgb25DbGlwYm9hcmRUZXh0UmVjZWl2ZWQpOwogIFdlYlZpZXcub25FdmVudCgnd3JpdGVfYWNjZXNzX3JlcXVlc3RlZCcsIG9uV3JpdGVBY2Nlc3NSZXF1ZXN0ZWQpOwogIFdlYlZpZXcub25FdmVudCgncGhvbmVfcmVxdWVzdGVkJywgb25QaG9uZVJlcXVlc3RlZCk7CiAgV2ViVmlldy5vbkV2ZW50KCdmaWxlX2Rvd25sb2FkX3JlcXVlc3RlZCcsIG9uRmlsZURvd25sb2FkUmVxdWVzdGVkKTsKICBXZWJWaWV3Lm9uRXZlbnQoJ2N1c3RvbV9tZXRob2RfaW52b2tlZCcsIG9uQ3VzdG9tTWV0aG9kSW52b2tlZCk7CiAgV2ViVmlldy5vbkV2ZW50KCdmdWxsc2NyZWVuX2NoYW5nZWQnLCBvbkZ1bGxzY3JlZW5DaGFuZ2VkKTsKICBXZWJWaWV3Lm9uRXZlbnQoJ2Z1bGxzY3JlZW5fZmFpbGVkJywgb25GdWxsc2NyZWVuRmFpbGVkKTsKICBXZWJWaWV3Lm9uRXZlbnQoJ2hvbWVfc2NyZWVuX2FkZGVkJywgb25Ib21lU2NyZWVuQWRkZWQpOwogIFdlYlZpZXcub25FdmVudCgnaG9tZV9zY3JlZW5fY2hlY2tlZCcsIG9uSG9tZVNjcmVlbkNoZWNrZWQpOwogIFdlYlZpZXcub25FdmVudCgncHJlcGFyZWRfbWVzc2FnZV9zZW50Jywgb25QcmVwYXJlZE1lc3NhZ2VTZW50KTsKICBXZWJWaWV3Lm9uRXZlbnQoJ3ByZXBhcmVkX21lc3NhZ2VfZmFpbGVkJywgb25QcmVwYXJlZE1lc3NhZ2VGYWlsZWQpOwogIFdlYlZpZXcub25FdmVudCgncmVxdWVzdGVkX2NoYXRfc2VudCcsIG9uUmVxdWVzdGVkQ2hhdFNlbnQpOwogIFdlYlZpZXcub25FdmVudCgncmVxdWVzdGVkX2NoYXRfZmFpbGVkJywgb25SZXF1ZXN0ZWRDaGF0RmFpbGVkKTsKICBXZWJWaWV3Lm9uRXZlbnQoJ2Vtb2ppX3N0YXR1c19zZXQnLCBvbkVtb2ppU3RhdHVzU2V0KTsKICBXZWJWaWV3Lm9uRXZlbnQoJ2Vtb2ppX3N0YXR1c19mYWlsZWQnLCBvbkVtb2ppU3RhdHVzRmFpbGVkKTsKICBXZWJWaWV3Lm9uRXZlbnQoJ2Vtb2ppX3N0YXR1c19hY2Nlc3NfcmVxdWVzdGVkJywgb25FbW9qaVN0YXR1c0FjY2Vzc1JlcXVlc3RlZCk7CiAgV2ViVmlldy5wb3N0RXZlbnQoJ3dlYl9hcHBfcmVxdWVzdF90aGVtZScpOwogIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX3JlcXVlc3Rfdmlld3BvcnQnKTsKICBXZWJWaWV3LnBvc3RFdmVudCgnd2ViX2FwcF9yZXF1ZXN0X3NhZmVfYXJlYScpOwogIFdlYlZpZXcucG9zdEV2ZW50KCd3ZWJfYXBwX3JlcXVlc3RfY29udGVudF9zYWZlX2FyZWEnKTsKCn0pKCk7Cg=="}},"time_used":67,"timings":{"blocked":22,"dns":0,"connect":0,"send":0,"wait":23,"receive":22,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}},{"url":{"schema":"https","addr":"maxvectornew.com/favicon.ico","fqdn":"maxvectornew.com","domain":"maxvectornew.com","tld":"com"},"ip":{"addr":"89.34.90.89","port":443,"asn":39737,"as":"Prime Telecom srl","country":"Romania","country_code":"RO"},"is_navigation_request":false,"resource_type":"img","requested_by":"https://maxvectornew.com/t/1c8a8","date":"2026-07-26T17:18:27.706Z","timestamp":1785086307706,"http_version":"HTTP/1.1","security_state":"secure","security_info":{"cipher_suite":"TLS_AES_128_GCM_SHA256","key_group_name":"x25519","signature_name":"ECDSA-P256-SHA256","protocol":"TLSv1.3","cert":{"subject":{"commonName":"maxvectornew.com","organization":""},"issuer":{"commonName":"YE2","organization":"Let's Encrypt"},"validity":{"start":"Sat, 25 Jul 2026 17:54:44 GMT","end":"Fri, 23 Oct 2026 17:54:43 GMT"},"fingerprint":{"sha1":"3B:96:C0:C6:0F:0B:DE:CC:96:A0:22:3D:32:F5:17:2C:CD:5C:51:6B","sha256":"D3:F9:21:6A:45:1A:9A:BA:92:79:1E:6E:03:85:1A:0C:B8:AD:05:18:FA:FC:60:41:98:38:87:32:B5:B9:EA:D1"}}},"request":{"raw":"GET /favicon.ico HTTP/1.1\r\nHost: maxvectornew.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://maxvectornew.com/t/1c8a8\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/1.1 404 Not Found\r\nServer: nginx/1.27.5\r\nDate: Sun, 26 Jul 2026 17:18:27 GMT\r\nContent-Length: 0\r\nConnection: keep-alive\r\n\r\n","headers":null,"cookies":null,"status_code":"404","status_text":"Not Found","fingerprints":[{"name":"Nginx:1.27.5","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":128,"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-07-27T17:15:08.563825Z","times_seen":17566770,"resource_available":true,"data":""}},"time_used":25,"timings":{"blocked":-1,"dns":0,"connect":0,"send":0,"wait":25,"receive":0,"ssl":0},"alerts":{"ids":null,"analyzer":null,"urlquery":null}}]}
