Mw0NChZae2MsEQAA4wAAAAAAAAAAAAAAAAUAAABAAAAAc7oAAABkAFoAZAFkAmwBWgJkA2QEbANtBFoEAQBkA2QFbAVtBloGAQBkA2QGbAVtB1oHAQBlAmoIckJkA2QHbAltCloKAQBHAGQIZAmEAGQJZQaDA1oLZQRqDGUCag1lDhkAZAqcAmQLZAyEBFoPZQRqEGUEahFlBGoSZQRqE2YEWhRlAmoVZQRqEGUEahFlBGoSZQRqE2YEGQBaFmUEagxlAmoXZQJqGGUOGQAZAGQKnAJkDWQOhARaGWQCUwApD3pfRnVuY3Rpb25zIHRoYXQgZXhwb3NlIGluZm9ybWF0aW9uIGFib3V0IHRlbXBsYXRlcyB0aGF0IG1pZ2h0IGJlCmludGVyZXN0aW5nIGZvciBpbnRyb3NwZWN0aW9uLgrpAAAAAE7pAQAAACkB2gVub2RlcykB2g1Db2RlR2VuZXJhdG9yKQHaBUZyYW1lKQHaC0Vudmlyb25tZW50YwAAAAAAAAAAAAAAAAQAAAAAAAAAc0wAAABlAFoBZABaAmQBWgNkAmQDZAScAocAZgFkBWQGhAxaBGUFZANkB5wCZAhkCYQEWgZlB2QDZAqcAocAZgFkC2QMhAxaCIcABABaCVMAKQ3aFVRyYWNraW5nQ29kZUdlbmVyYXRvcnouV2UgYWJ1c2UgdGhlIGNvZGUgZ2VuZXJhdG9yIGZvciBpbnRyb3NwZWN0aW9uLnIGAAAATikC2gtlbnZpcm9ubWVudNoGcmV0dXJuYwIAAAAAAAAAAgAAAAQAAAADAAAAcxwAAAB0AIMAagF8AWQBZAGDAwEAdAKDAHwAXwNkAFMAKQJOeg88aW50cm9zcGVjdGlvbj4pBNoFc3VwZXLaCF9faW5pdF9f2gNzZXTaFnVuZGVjbGFyZWRfaWRlbnRpZmllcnMpAtoEc2VsZnIIAAAAKQHaCV9fY2xhc3NfX6kA+nwvaG9tZS91ZXRsaHIvRG9jdW1lbnRzL1Nlcm1vUGxvdF9iYWNrZW5kL2RyYWZ0X1NSQU1fYmxhY2tib3gvVUVUUlZfRVNvQ19tcHc4L3ZlbnYvbGliL3B5dGhvbjMuNi9zaXRlLXBhY2thZ2VzL2ppbmphMi9tZXRhLnB5cgsAAAARAAAAcwQAAAAAARABeh5UcmFja2luZ0NvZGVHZW5lcmF0b3IuX19pbml0X18pAtoBeHIJAAAAYwIAAAAAAAAAAgAAAAEAAABDAAAAcwQAAABkAVMAKQJ6DERvbid0IHdyaXRlLk5yEAAAACkCcg4AAAByEgAAAHIQAAAAchAAAAByEQAAANoFd3JpdGUVAAAAcwAAAAB6G1RyYWNraW5nQ29kZUdlbmVyYXRvci53cml0ZSkC2gVmcmFtZXIJAAAAYwIAAAAAAAAABQAAAAMAAAADAAAAc04AAAB0AIMAagF8AYMBAQB4PHwBagJqA2oEgwBEAF0sXAJ9AlwCfQN9BHwDZAFrAnIafAR8AGoFagZrB3IafABqB2oIfASDAQEAcRpXAGQCUwApA3okUmVtZW1iZXIgYWxsIHVuZGVjbGFyZWQgaWRlbnRpZmllcnMu2gdyZXNvbHZlTikJcgoAAADaC2VudGVyX2ZyYW1l2gdzeW1ib2xz2gVsb2Fkc9oFaXRlbXNyCAAAANoHZ2xvYmFsc3INAAAA2gNhZGQpBXIOAAAAchQAAADaAV/aBmFjdGlvbtoFcGFyYW0pAXIPAAAAchAAAAByEQAAAHIWAAAAGAAAAHMIAAAAAAIMAhoBFAF6IVRyYWNraW5nQ29kZUdlbmVyYXRvci5lbnRlcl9mcmFtZSkK2ghfX25hbWVfX9oKX19tb2R1bGVfX9oMX19xdWFsbmFtZV9f2gdfX2RvY19fcgsAAADaA3N0cnITAAAAcgUAAAByFgAAANoNX19jbGFzc2NlbGxfX3IQAAAAchAAAAApAXIPAAAAchEAAAByBwAAAA4AAABzCAAAAAgBBAIUBBADcgcAAAApAtoDYXN0cgkAAABjAQAAAAAAAAACAAAAAgAAAEMAAABzGgAAAHQAfABqAYMBfQF8AWoCfACDAQEAfAFqA1MAKQFhFgMAAFJldHVybnMgYSBzZXQgb2YgYWxsIHZhcmlhYmxlcyBpbiB0aGUgQVNUIHRoYXQgd2lsbCBiZSBsb29rZWQgdXAgZnJvbQogICAgdGhlIGNvbnRleHQgYXQgcnVudGltZS4gIEJlY2F1c2UgYXQgY29tcGlsZSB0aW1lIGl0J3Mgbm90IGtub3duIHdoaWNoCiAgICB2YXJpYWJsZXMgd2lsbCBiZSB1c2VkIGRlcGVuZGluZyBvbiB0aGUgcGF0aCB0aGUgZXhlY3V0aW9uIHRha2VzIGF0CiAgICBydW50aW1lLCBhbGwgdmFyaWFibGVzIGFyZSByZXR1cm5lZC4KCiAgICA+Pj4gZnJvbSBqaW5qYTIgaW1wb3J0IEVudmlyb25tZW50LCBtZXRhCiAgICA+Pj4gZW52ID0gRW52aXJvbm1lbnQoKQogICAgPj4+IGFzdCA9IGVudi5wYXJzZSgneyUgc2V0IGZvbyA9IDQyICV9e3sgYmFyICsgZm9vIH19JykKICAgID4+PiBtZXRhLmZpbmRfdW5kZWNsYXJlZF92YXJpYWJsZXMoYXN0KSA9PSB7J2Jhcid9CiAgICBUcnVlCgogICAgLi4gYWRtb25pdGlvbjo6IEltcGxlbWVudGF0aW9uCgogICAgICAgSW50ZXJuYWxseSB0aGUgY29kZSBnZW5lcmF0b3IgaXMgdXNlZCBmb3IgZmluZGluZyB1bmRlY2xhcmVkIHZhcmlhYmxlcy4KICAgICAgIFRoaXMgaXMgZ29vZCB0byBrbm93IGJlY2F1c2UgdGhlIGNvZGUgZ2VuZXJhdG9yIG1pZ2h0IHJhaXNlIGEKICAgICAgIDpleGM6YFRlbXBsYXRlQXNzZXJ0aW9uRXJyb3JgIGR1cmluZyBjb21waWxhdGlvbiBhbmQgYXMgYSBtYXR0ZXIgb2YKICAgICAgIGZhY3QgdGhpcyBmdW5jdGlvbiBjYW4gY3VycmVudGx5IHJhaXNlIHRoYXQgZXhjZXB0aW9uIGFzIHdlbGwuCiAgICApBHIHAAAAcggAAADaBXZpc2l0cg0AAAApAnIlAAAAWgdjb2RlZ2VuchAAAAByEAAAAHIRAAAA2hlmaW5kX3VuZGVjbGFyZWRfdmFyaWFibGVzIQAAAHMGAAAAABMKAQoBcicAAABjAQAAAAAAAAAEAAAABQAAAGMAAABz2AAAAHjSfABqAHQBgwFEAF3EfQF8AWoCfQJ0A3wCdARqBYMCc3Z0A3wCdARqBnQEagdmAoMCcm54PnwCaghEAF0sfQN0A3wDdARqBYMCcmJ0A3wDagl0CoMCcmh8A2oJVgABAHE8ZAFWAAEAcTxXAHEMZAFWAAEAcQx0A3wCagl0CoMCcox8AmoJVgABAHEMdAN8AXQEaguDAnLKdAN8AmoJdAx0DWYCgwJyyngmfAJqCUQAXRR9A3QDfAN0CoMCcrB8A1YAAQBxsFcAcQxkAVYAAQBxDFcAZAFTACkCYWICAABGaW5kcyBhbGwgdGhlIHJlZmVyZW5jZWQgdGVtcGxhdGVzIGZyb20gdGhlIEFTVC4gIFRoaXMgd2lsbCByZXR1cm4gYW4KICAgIGl0ZXJhdG9yIG92ZXIgYWxsIHRoZSBoYXJkY29kZWQgdGVtcGxhdGUgZXh0ZW5zaW9ucywgaW5jbHVzaW9ucyBhbmQKICAgIGltcG9ydHMuICBJZiBkeW5hbWljIGluaGVyaXRhbmNlIG9yIGluY2x1c2lvbiBpcyB1c2VkLCBgTm9uZWAgd2lsbCBiZQogICAgeWllbGRlZC4KCiAgICA+Pj4gZnJvbSBqaW5qYTIgaW1wb3J0IEVudmlyb25tZW50LCBtZXRhCiAgICA+Pj4gZW52ID0gRW52aXJvbm1lbnQoKQogICAgPj4+IGFzdCA9IGVudi5wYXJzZSgneyUgZXh0ZW5kcyAibGF5b3V0Lmh0bWwiICV9eyUgaW5jbHVkZSBoZWxwZXIgJX0nKQogICAgPj4+IGxpc3QobWV0YS5maW5kX3JlZmVyZW5jZWRfdGVtcGxhdGVzKGFzdCkpCiAgICBbJ2xheW91dC5odG1sJywgTm9uZV0KCiAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWZ1bCBmb3IgZGVwZW5kZW5jeSB0cmFja2luZy4gIEZvciBleGFtcGxlIGlmIHlvdSB3YW50CiAgICB0byByZWJ1aWxkIHBhcnRzIG9mIHRoZSB3ZWJzaXRlIGFmdGVyIGEgbGF5b3V0IHRlbXBsYXRlIGhhcyBjaGFuZ2VkLgogICAgTikOWghmaW5kX2FsbNoKX3JlZl90eXBlc9oIdGVtcGxhdGXaCmlzaW5zdGFuY2VyAwAAAFoFQ29uc3TaBVR1cGxl2gRMaXN0chkAAADaBXZhbHVlciMAAADaB0luY2x1ZGXaBXR1cGxl2gRsaXN0KQRyJQAAANoEbm9kZXIpAAAAWg10ZW1wbGF0ZV9uYW1lchAAAAByEAAAAHIRAAAA2hlmaW5kX3JlZmVyZW5jZWRfdGVtcGxhdGVzPQAAAHMmAAAAABEQAQYCDAISAQwDDAEMAQoDDAMGAQICDAEKBA4BDgIMAQoBDANyMgAAACkaciIAAADaBnR5cGluZ9oBdNoAcgMAAADaCGNvbXBpbGVycgQAAAByBQAAANoNVFlQRV9DSEVDS0lOR3IIAAAAcgYAAAByBwAAANoIVGVtcGxhdGXaA1NldHIjAAAAcicAAABaB0V4dGVuZHNaCkZyb21JbXBvcnTaBkltcG9ydHIuAAAAcigAAADaBVVuaW9uWghfUmVmVHlwZdoISXRlcmF0b3LaCE9wdGlvbmFscjIAAAByEAAAAHIQAAAAchAAAAByEQAAANoIPG1vZHVsZT4DAAAAcxYAAAAEAQgCDAEMAQwCBgEMAxATGBgUARoD