Mw0NChZae2PiWAAA4wAAAAAAAAAAAAAAAAQAAABAAAAAc04BAABkAFoAZAFkAmwBWgJkAWQCbANaA2QBZAJsBFoEZAFkAmwFWgZkAWQCbAdaB2QBZAJsCFoIZAFkA2wJbQpaCgEAZAFkBGwLbQxaDAEAZAFkBWwCbQ1aDQEAZAFkBmwObQ9aDwEAZAdkCGwQbRFaEQEAZAdkCWwSbRNaEwEAZAdkCmwSbRRaFAEAZQZqFXKmZAdkC2wWbRdaFwEAZAdkDGwWbRhaGAEAZRllBmoaZRkZAGQNnAJkDmQPhARaG0cAZBBkEYQAZBGDAlocRwBkEmQThABkE2UcgwNaHUcAZBRkFYQAZBVlHIMDWh5HAGQWZBeEAGQXZRyDA1ofRwBkGGQZhABkGWUcgwNaIEcAZBpkG4QAZBtlHIMDWiFHAGQcZB2EAGQdZRyDA1oiRwBkHmQfhABkH2UPgwNaI0cAZCBkIYQAZCFlHIMDWiRkAlMAKSJ6S0FQSSBhbmQgaW1wbGVtZW50YXRpb25zIGZvciBsb2FkaW5nIHRlbXBsYXRlcyBmcm9tIGRpZmZlcmVudCBkYXRhCnNvdXJjZXMuCukAAAAATikB2gNhYmMpAdoEc2hhMSkB2g1pbXBvcnRfbW9kdWxlKQHaCk1vZHVsZVR5cGXpAQAAACkB2hBUZW1wbGF0ZU5vdEZvdW5kKQHaDGludGVybmFsY29kZSkB2g5vcGVuX2lmX2V4aXN0cykB2gtFbnZpcm9ubWVudCkB2ghUZW1wbGF0ZSkC2gh0ZW1wbGF0ZdoGcmV0dXJuYwEAAAAAAAAAAwAAAAMAAABDAAAAc2gAAABnAH0BeF58AGoAZAGDAUQAXVB9AnQBagJqA3wCawZzQHQBagJqBHI0dAFqAmoEfAJrBnNAfAJ0AWoCagVrAnJKdAZ8AIMBggFxEHwCchB8AmQCawNyEHwBagd8AoMBAQBxEFcAfAFTACkDeolTcGxpdCBhIHBhdGggaW50byBzZWdtZW50cyBhbmQgcGVyZm9ybSBhIHNhbml0eSBjaGVjay4gIElmIGl0IGRldGVjdHMKICAgICcuLicgaW4gdGhlIHBhdGggaXQgd2lsbCByYWlzZSBhIGBUZW1wbGF0ZU5vdEZvdW5kYCBlcnJvci4KICAgIPoBL9oBLikI2gVzcGxpdNoCb3PaBHBhdGjaA3NlcNoGYWx0c2Vw2gZwYXJkaXJyBwAAANoGYXBwZW5kKQNyDAAAANoGcGllY2VzWgVwaWVjZakAchgAAAD6fy9ob21lL3VldGxoci9Eb2N1bWVudHMvU2VybW9QbG90X2JhY2tlbmQvZHJhZnRfU1JBTV9ibGFja2JveC9VRVRSVl9FU29DX21wdzgvdmVudi9saWIvcHl0aG9uMy42L3NpdGUtcGFja2FnZXMvamluamEyL2xvYWRlcnMucHnaE3NwbGl0X3RlbXBsYXRlX3BhdGgYAAAAcxIAAAAABAQBEAIMARQBDAIKAQwBDgFyGgAAAGMAAAAAAAAAAAAAAAAJAAAAQAAAAHOIAAAAZQBaAWQAWgJkAVoDZAJaBGQDZQVlBmoHZQVlBmoIZQUZAGUGaghlBmoJZwBlCmYCGQAZAGYDGQBkBJwDZAVkBoQEWgtlBmoMZQUZAGQHnAFkCGQJhARaDWUOZA9kA2UFZQZqCGUGag9lBWUGahBmAhkAGQBkC2QMnARkDWQOhAWDAVoRZApTACkQ2gpCYXNlTG9hZGVyYb0DAABCYXNlY2xhc3MgZm9yIGFsbCBsb2FkZXJzLiAgU3ViY2xhc3MgdGhpcyBhbmQgb3ZlcnJpZGUgYGdldF9zb3VyY2VgIHRvCiAgICBpbXBsZW1lbnQgYSBjdXN0b20gbG9hZGluZyBtZWNoYW5pc20uICBUaGUgZW52aXJvbm1lbnQgcHJvdmlkZXMgYQogICAgYGdldF90ZW1wbGF0ZWAgbWV0aG9kIHRoYXQgY2FsbHMgdGhlIGxvYWRlcidzIGBsb2FkYCBtZXRob2QgdG8gZ2V0IHRoZQogICAgOmNsYXNzOmBUZW1wbGF0ZWAgb2JqZWN0LgoKICAgIEEgdmVyeSBiYXNpYyBleGFtcGxlIGZvciBhIGxvYWRlciB0aGF0IGxvb2tzIHVwIHRlbXBsYXRlcyBvbiB0aGUgZmlsZQogICAgc3lzdGVtIGNvdWxkIGxvb2sgbGlrZSB0aGlzOjoKCiAgICAgICAgZnJvbSBqaW5qYTIgaW1wb3J0IEJhc2VMb2FkZXIsIFRlbXBsYXRlTm90Rm91bmQKICAgICAgICBmcm9tIG9zLnBhdGggaW1wb3J0IGpvaW4sIGV4aXN0cywgZ2V0bXRpbWUKCiAgICAgICAgY2xhc3MgTXlMb2FkZXIoQmFzZUxvYWRlcik6CgogICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCk6CiAgICAgICAgICAgICAgICBzZWxmLnBhdGggPSBwYXRoCgogICAgICAgICAgICBkZWYgZ2V0X3NvdXJjZShzZWxmLCBlbnZpcm9ubWVudCwgdGVtcGxhdGUpOgogICAgICAgICAgICAgICAgcGF0aCA9IGpvaW4oc2VsZi5wYXRoLCB0ZW1wbGF0ZSkKICAgICAgICAgICAgICAgIGlmIG5vdCBleGlzdHMocGF0aCk6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgVGVtcGxhdGVOb3RGb3VuZCh0ZW1wbGF0ZSkKICAgICAgICAgICAgICAgIG10aW1lID0gZ2V0bXRpbWUocGF0aCkKICAgICAgICAgICAgICAgIHdpdGggb3BlbihwYXRoKSBhcyBmOgogICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9IGYucmVhZCgpCiAgICAgICAgICAgICAgICByZXR1cm4gc291cmNlLCBwYXRoLCBsYW1iZGE6IG10aW1lID09IGdldG10aW1lKHBhdGgpCiAgICBUcgoAAAApA9oLZW52aXJvbm1lbnRyDAAAAHINAAAAYwMAAAAAAAAAAwAAAAMAAABDAAAAcyYAAAB8AGoAcxp0AXQCfACDAWoDmwBkAZ0CgwGCAXQEfAKDAYIBZAJTACkDYa8DAABHZXQgdGhlIHRlbXBsYXRlIHNvdXJjZSwgZmlsZW5hbWUgYW5kIHJlbG9hZCBoZWxwZXIgZm9yIGEgdGVtcGxhdGUuCiAgICAgICAgSXQncyBwYXNzZWQgdGhlIGVudmlyb25tZW50IGFuZCB0ZW1wbGF0ZSBuYW1lIGFuZCBoYXMgdG8gcmV0dXJuIGEKICAgICAgICB0dXBsZSBpbiB0aGUgZm9ybSBgYChzb3VyY2UsIGZpbGVuYW1lLCB1cHRvZGF0ZSlgYCBvciByYWlzZSBhCiAgICAgICAgYFRlbXBsYXRlTm90Rm91bmRgIGVycm9yIGlmIGl0IGNhbid0IGxvY2F0ZSB0aGUgdGVtcGxhdGUuCgogICAgICAgIFRoZSBzb3VyY2UgcGFydCBvZiB0aGUgcmV0dXJuZWQgdHVwbGUgbXVzdCBiZSB0aGUgc291cmNlIG9mIHRoZQogICAgICAgIHRlbXBsYXRlIGFzIGEgc3RyaW5nLiBUaGUgZmlsZW5hbWUgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIHRoZQogICAgICAgIGZpbGUgb24gdGhlIGZpbGVzeXN0ZW0gaWYgaXQgd2FzIGxvYWRlZCBmcm9tIHRoZXJlLCBvdGhlcndpc2UKICAgICAgICBgYE5vbmVgYC4gVGhlIGZpbGVuYW1lIGlzIHVzZWQgYnkgUHl0aG9uIGZvciB0aGUgdHJhY2ViYWNrcwogICAgICAgIGlmIG5vIGxvYWRlciBleHRlbnNpb24gaXMgdXNlZC4KCiAgICAgICAgVGhlIGxhc3QgaXRlbSBpbiB0aGUgdHVwbGUgaXMgdGhlIGB1cHRvZGF0ZWAgZnVuY3Rpb24uICBJZiBhdXRvCiAgICAgICAgcmVsb2FkaW5nIGlzIGVuYWJsZWQgaXQncyBhbHdheXMgY2FsbGVkIHRvIGNoZWNrIGlmIHRoZSB0ZW1wbGF0ZQogICAgICAgIGNoYW5nZWQuICBObyBhcmd1bWVudHMgYXJlIHBhc3NlZCBzbyB0aGUgZnVuY3Rpb24gbXVzdCBzdG9yZSB0aGUKICAgICAgICBvbGQgc3RhdGUgc29tZXdoZXJlIChmb3IgZXhhbXBsZSBpbiBhIGNsb3N1cmUpLiAgSWYgaXQgcmV0dXJucyBgRmFsc2VgCiAgICAgICAgdGhlIHRlbXBsYXRlIHdpbGwgYmUgcmVsb2FkZWQuCiAgICAgICAgeiQgY2Fubm90IHByb3ZpZGUgYWNjZXNzIHRvIHRoZSBzb3VyY2VOKQXaEWhhc19zb3VyY2VfYWNjZXNz2gxSdW50aW1lRXJyb3LaBHR5cGXaCF9fbmFtZV9fcgcAAAApA9oEc2VsZnIcAAAAcgwAAAByGAAAAHIYAAAAchkAAADaCmdldF9zb3VyY2VKAAAAcwgAAAAAFAYBAgESAnoVQmFzZUxvYWRlci5nZXRfc291cmNlKQFyDQAAAGMBAAAAAAAAAAEAAAACAAAAQwAAAHMMAAAAdABkAYMBggFkAlMAKQN6lEl0ZXJhdGVzIG92ZXIgYWxsIHRlbXBsYXRlcy4gIElmIHRoZSBsb2FkZXIgZG9lcyBub3Qgc3VwcG9ydCB0aGF0CiAgICAgICAgaXQgc2hvdWxkIHJhaXNlIGEgOmV4YzpgVHlwZUVycm9yYCB3aGljaCBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvci4KICAgICAgICB6LXRoaXMgbG9hZGVyIGNhbm5vdCBpdGVyYXRlIG92ZXIgYWxsIHRlbXBsYXRlc04pAdoJVHlwZUVycm9yKQFyIQAAAHIYAAAAchgAAAByGQAAANoObGlzdF90ZW1wbGF0ZXNkAAAAcwIAAAAABHoZQmFzZUxvYWRlci5saXN0X3RlbXBsYXRlc05yCwAAACkEchwAAADaBG5hbWXaB2dsb2JhbHNyDQAAAGMEAAAAAAAAAAoAAAAFAAAAQwAAAHOQAAAAZAF9BHwDZAFrCHIQaQB9A3wAagB8AXwCgwJcA30FfQZ9B3wBagF9CHwIZAFrCXJGfAhqAnwBfAJ8BnwFgwR9CXwJagN9BHwEZAFrCHJcfAFqBHwFfAJ8BoMDfQR8CGQBawlyfnwJagNkAWsIcn58BHwJXwN8CGoFfAmDAQEAfAFqBmoHfAF8BHwDfAeDBFMAKQJhYwEAAExvYWRzIGEgdGVtcGxhdGUuICBUaGlzIG1ldGhvZCBsb29rcyB1cCB0aGUgdGVtcGxhdGUgaW4gdGhlIGNhY2hlCiAgICAgICAgb3IgbG9hZHMgb25lIGJ5IGNhbGxpbmcgOm1ldGg6YGdldF9zb3VyY2VgLiAgU3ViY2xhc3NlcyBzaG91bGQgbm90CiAgICAgICAgb3ZlcnJpZGUgdGhpcyBtZXRob2QgYXMgbG9hZGVycyB3b3JraW5nIG9uIGNvbGxlY3Rpb25zIG9mIG90aGVyCiAgICAgICAgbG9hZGVycyAoc3VjaCBhcyA6Y2xhc3M6YFByZWZpeExvYWRlcmAgb3IgOmNsYXNzOmBDaG9pY2VMb2FkZXJgKQogICAgICAgIHdpbGwgbm90IGNhbGwgdGhpcyBtZXRob2QgYnV0IGBnZXRfc291cmNlYCBkaXJlY3RseS4KICAgICAgICBOKQhyIgAAAFoOYnl0ZWNvZGVfY2FjaGVaCmdldF9idWNrZXTaBGNvZGXaB2NvbXBpbGVaCnNldF9idWNrZXTaDnRlbXBsYXRlX2NsYXNzWglmcm9tX2NvZGUpCnIhAAAAchwAAAByJQAAAHImAAAAcicAAADaBnNvdXJjZdoIZmlsZW5hbWXaCHVwdG9kYXRlWgNiY2NaBmJ1Y2tldHIYAAAAchgAAAByGQAAANoEbG9hZGoAAABzHgAAAAANBAEIAQQEEgQGAQgBEAEGBAgBDgUSAQYBCgIGAXoPQmFzZUxvYWRlci5sb2FkKQFOKRJyIAAAANoKX19tb2R1bGVfX9oMX19xdWFsbmFtZV9f2gdfX2RvY19fch0AAADaA3N0ctoBdNoFVHVwbGXaCE9wdGlvbmFs2ghDYWxsYWJsZdoEYm9vbHIiAAAA2gRMaXN0ciQAAAByCAAAANoOTXV0YWJsZU1hcHBpbmfaA0FueXItAAAAchgAAAByGAAAAHIYAAAAchkAAAByGwAAACkAAABzEAAAAAgZBAYEAwQBMBgUBgIFGgFyGwAAAGMAAAAAAAAAAAAAAAAIAAAAQAAAAHOCAAAAZQBaAWQAWgJkAVoDZA9lBGoFZQZlB2oIZQRqCWUEagVlBmUHaghmAhkAGQBmAxkAZQZlCmQEZAWcBGQGZAeEBVoLZAhlBmUEagxlBmUGZQRqDWcAZQpmAhkAZgMZAGQJnANkCmQLhARaDmUEag9lBhkAZAycAWQNZA6EBFoQZARTACkQ2hBGaWxlU3lzdGVtTG9hZGVyYRwDAABMb2FkIHRlbXBsYXRlcyBmcm9tIGEgZGlyZWN0b3J5IGluIHRoZSBmaWxlIHN5c3RlbS4KCiAgICBUaGUgcGF0aCBjYW4gYmUgcmVsYXRpdmUgb3IgYWJzb2x1dGUuIFJlbGF0aXZlIHBhdGhzIGFyZSByZWxhdGl2ZSB0bwogICAgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCgogICAgLi4gY29kZS1ibG9jazo6IHB5dGhvbgoKICAgICAgICBsb2FkZXIgPSBGaWxlU3lzdGVtTG9hZGVyKCJ0ZW1wbGF0ZXMiKQoKICAgIEEgbGlzdCBvZiBwYXRocyBjYW4gYmUgZ2l2ZW4uIFRoZSBkaXJlY3RvcmllcyB3aWxsIGJlIHNlYXJjaGVkIGluCiAgICBvcmRlciwgc3RvcHBpbmcgYXQgdGhlIGZpcnN0IG1hdGNoaW5nIHRlbXBsYXRlLgoKICAgIC4uIGNvZGUtYmxvY2s6OiBweXRob24KCiAgICAgICAgbG9hZGVyID0gRmlsZVN5c3RlbUxvYWRlcihbIi9vdmVycmlkZS90ZW1wbGF0ZXMiLCAiL2RlZmF1bHQvdGVtcGxhdGVzIl0pCgogICAgOnBhcmFtIHNlYXJjaHBhdGg6IEEgcGF0aCwgb3IgbGlzdCBvZiBwYXRocywgdG8gdGhlIGRpcmVjdG9yeSB0aGF0CiAgICAgICAgY29udGFpbnMgdGhlIHRlbXBsYXRlcy4KICAgIDpwYXJhbSBlbmNvZGluZzogVXNlIHRoaXMgZW5jb2RpbmcgdG8gcmVhZCB0aGUgdGV4dCBmcm9tIHRlbXBsYXRlCiAgICAgICAgZmlsZXMuCiAgICA6cGFyYW0gZm9sbG93bGlua3M6IEZvbGxvdyBzeW1ib2xpYyBsaW5rcyBpbiB0aGUgcGF0aC4KCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDIuOAogICAgICAgIEFkZGVkIHRoZSBgYGZvbGxvd2xpbmtzYGAgcGFyYW1ldGVyLgogICAg+gV1dGYtOEZOKQTaCnNlYXJjaHBhdGjaCGVuY29kaW5n2gtmb2xsb3dsaW5rc3INAAAAYwQAAAAAAAAABAAAAAMAAABDAAAAcz4AAAB0AHwBdAFqAoMCDABzGHQAfAF0A4MCch58AWcBfQFkAWQChAB8AUQAgwF8AF8EfAJ8AF8FfAN8AF8GZABTACkDTmMBAAAAAAAAAAIAAAAEAAAAUwAAAHMWAAAAZwB8AF0OfQF0AGoBfAGDAZECcQRTAHIYAAAAKQJyEQAAANoGZnNwYXRoKQLaAi4w2gFwchgAAAByGAAAAHIZAAAA+go8bGlzdGNvbXA+uwAAAHMCAAAABgB6LUZpbGVTeXN0ZW1Mb2FkZXIuX19pbml0X18uPGxvY2Fscz4uPGxpc3Rjb21wPikH2gppc2luc3RhbmNlcgIAAADaCEl0ZXJhYmxlcjEAAAByPAAAAHI9AAAAcj4AAAApBHIhAAAAcjwAAAByPQAAAHI+AAAAchgAAAByGAAAAHIZAAAA2ghfX2luaXRfX7IAAABzCgAAAAAGGAEGAhABBgF6GUZpbGVTeXN0ZW1Mb2FkZXIuX19pbml0X19yCgAAACkDchwAAAByDAAAAHINAAAAYwMAAAAAAAAACAAAAA0AAAADAAAAc5AAAAB0AHwCgwF9A3h6fABqAUQAXXB9BHQCagNqBHwEZgF8A54CjgCJAHQFiACDAX0FfAVkAGsIcjhxEHoUfAVqBoMAagd8AGoIgwF9BlcAZAB8BWoJgwABAFgAdAJqA2oKiACDAYkBdAtkAZwBhwCHAWYCZAJkA4QMfQd8BogAfAdmA1MAVwB0DHwCgwGCAWQAUwApBE4pAXINAAAAYwAAAAAAAAAAAAAAAAsAAAATAAAAcyoAAAB5EHQAagFqAogAgwGIAWsCUwAEAHQDawpyJAEAAQABAGQBUwBYAGQAUwApAk5GKQRyEQAAAHISAAAA2ghnZXRtdGltZdoHT1NFcnJvcnIYAAAAKQJyKwAAANoFbXRpbWVyGAAAAHIZAAAAciwAAADPAAAAcwgAAAAAAQIBEAEOAXotRmlsZVN5c3RlbUxvYWRlci5nZXRfc291cmNlLjxsb2NhbHM+LnVwdG9kYXRlKQ1yGgAAAHI8AAAAchEAAAByEgAAANoEam9pbnIJAAAA2gRyZWFk2gZkZWNvZGVyPQAAANoFY2xvc2VyRgAAAHI2AAAAcgcAAAApCHIhAAAAchwAAAByDAAAAHIXAAAAcjwAAADaAWbaCGNvbnRlbnRzciwAAAByGAAAACkCcisAAABySAAAAHIZAAAAciIAAAC/AAAAcxoAAAAAAwgBDAESAQgBCAECAQIBFAIKAgwCFAYMAXobRmlsZVN5c3RlbUxvYWRlci5nZXRfc291cmNlKQFyDQAAAGMBAAAAAAAAAAkAAAAGAAAAQwAAAHOuAAAAdACDAH0BeJ58AGoBRABdlH0CdAJqA3wCfABqBGQBjQJ9A3h+fANEAF12XAN9BH0FfQZ4anwGRABdYn0HdAJqBWoGfAR8B4MCdAd8AoMBZACFAhkAagh0AmoFagmDAWoKdAJqBWoJZAKDAn0IfAhkAGQDhQIZAGQEawJyiHwIZANkAIUCGQB9CHwIfAFrB3I4fAFqC3wIgwEBAHE4VwBxKFcAcQ5XAHQMfAGDAVMAKQVOKQFyPgAAAHIOAAAA6QIAAAB6Ai4vKQ3aA3NldHI8AAAAchEAAADaBHdhbGtyPgAAAHISAAAAckkAAADaA2xlbtoFc3RyaXByEwAAANoHcmVwbGFjZdoDYWRk2gZzb3J0ZWQpCXIhAAAA2gVmb3VuZHI8AAAAWgh3YWxrX2RpctoHZGlycGF0aNoBX9oJZmlsZW5hbWVzcisAAAByDAAAAHIYAAAAchgAAAByGQAAAHIkAAAA2AAAAHMaAAAAAAEGAQwBEAEQAQoCGgEKAQwCEAEMAQgBFgF6H0ZpbGVTeXN0ZW1Mb2FkZXIubGlzdF90ZW1wbGF0ZXMpAnI7AAAARikRciAAAAByLgAAAHIvAAAAcjAAAAByMgAAANoFVW5pb25yMQAAAHIRAAAA2ghQYXRoTGlrZdoIU2VxdWVuY2VyNgAAAHJFAAAAcjMAAAByNQAAAHIiAAAAcjcAAAByJAAAAHIYAAAAchgAAAByGAAAAHIZAAAAcjoAAACXAAAAcw4AAAAIGQQFAAEoAQ4JBAEkF3I6AAAAYwAAAAAAAAAAAAAAAAkAAABAAAAAc2gAAABlAFoBZABaAmQBWgNkEGUEZARlBGQFZAacBGQHZAiEBVoFZAllBGUGagdlBGUEZQZqCGUGaglnAGUKZgIZABkAZgMZAGQKnANkC2QMhARaC2UGagxlBBkAZA2cAWQOZA+EBFoNZAVTACkR2g1QYWNrYWdlTG9hZGVyYWwEAABMb2FkIHRlbXBsYXRlcyBmcm9tIGEgZGlyZWN0b3J5IGluIGEgUHl0aG9uIHBhY2thZ2UuCgogICAgOnBhcmFtIHBhY2thZ2VfbmFtZTogSW1wb3J0IG5hbWUgb2YgdGhlIHBhY2thZ2UgdGhhdCBjb250YWlucyB0aGUKICAgICAgICB0ZW1wbGF0ZSBkaXJlY3RvcnkuCiAgICA6cGFyYW0gcGFja2FnZV9wYXRoOiBEaXJlY3Rvcnkgd2l0aGluIHRoZSBpbXBvcnRlZCBwYWNrYWdlIHRoYXQKICAgICAgICBjb250YWlucyB0aGUgdGVtcGxhdGVzLgogICAgOnBhcmFtIGVuY29kaW5nOiBFbmNvZGluZyBvZiB0ZW1wbGF0ZSBmaWxlcy4KCiAgICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgbG9va3MgdXAgdGVtcGxhdGVzIGluIHRoZSBgYHBhZ2VzYGAgZGlyZWN0b3J5CiAgICB3aXRoaW4gdGhlIGBgcHJvamVjdC51aWBgIHBhY2thZ2UuCgogICAgLi4gY29kZS1ibG9jazo6IHB5dGhvbgoKICAgICAgICBsb2FkZXIgPSBQYWNrYWdlTG9hZGVyKCJwcm9qZWN0LnVpIiwgInBhZ2VzIikKCiAgICBPbmx5IHBhY2thZ2VzIGluc3RhbGxlZCBhcyBkaXJlY3RvcmllcyAoc3RhbmRhcmQgcGlwIGJlaGF2aW9yKSBvcgogICAgemlwL2VnZyBmaWxlcyAobGVzcyBjb21tb24pIGFyZSBzdXBwb3J0ZWQuIFRoZSBQeXRob24gQVBJIGZvcgogICAgaW50cm9zcGVjdGluZyBkYXRhIGluIHBhY2thZ2VzIGlzIHRvbyBsaW1pdGVkIHRvIHN1cHBvcnQgb3RoZXIKICAgIGluc3RhbGxhdGlvbiBtZXRob2RzIHRoZSB3YXkgdGhpcyBsb2FkZXIgcmVxdWlyZXMuCgogICAgVGhlcmUgaXMgbGltaXRlZCBzdXBwb3J0IGZvciA6cGVwOmA0MjBgIG5hbWVzcGFjZSBwYWNrYWdlcy4gVGhlCiAgICB0ZW1wbGF0ZSBkaXJlY3RvcnkgaXMgYXNzdW1lZCB0byBvbmx5IGJlIGluIG9uZSBuYW1lc3BhY2UKICAgIGNvbnRyaWJ1dG9yLiBaaXAgZmlsZXMgY29udHJpYnV0aW5nIHRvIGEgbmFtZXNwYWNlIGFyZSBub3QKICAgIHN1cHBvcnRlZC4KCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMAogICAgICAgIE5vIGxvbmdlciB1c2VzIGBgc2V0dXB0b29sc2BgIGFzIGEgZGVwZW5kZW5jeS4KCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMAogICAgICAgIExpbWl0ZWQgUEVQIDQyMCBuYW1lc3BhY2UgcGFja2FnZSBzdXBwb3J0LgogICAg2gl0ZW1wbGF0ZXP6BXV0Zi04cjEAAABOKQTaDHBhY2thZ2VfbmFtZdoMcGFja2FnZV9wYXRocj0AAAByDQAAAGMEAAAAAAAAAAoAAAAEAAAAQwAAAHNsAQAAdABqAWoCfAKDAWoDdABqAWoEgwF9AnwCdABqAWoFawJyKGQBfQJuKHwCZABkAoUCGQB0AGoBagV0AGoBagQXAGsCclB8AmQCZACFAhkAfQJ8AnwAXwZ8AXwAXwd8A3wAXwh0CXwBgwEBAHQKagtqDHwBgwF9BHwEZABrCXOGdA1kA4MBggF8BGoOfQV8BWQAawlznHQNZASDAYIBfAV8AF8PZAB8AF8QZAB9BnQRfAV0EmoTgwJy3nwFahR8AF8QdBV0FnwEaheDAYMBfQd0AGoBahh8B3wCgwJ9Bm5qZwB9CHwEahdy9nwIahl8BGoXgwEBAG4gfARqGmQAawmQAXIWfAhqG3QAagFqHHwEahqDAYMBAQB4MHwIRABdKH0JdABqAWoYfAl8AoMCfQl0AGoBah18CYMBkAFyHHwJfQZQAJABcRxXAHwGZABrCJABcmJ0HmQFfAGbAmQGnQODAYIBfAZ8AF8fZABTACkHTtoAck8AAAB6LUFuIGltcG9ydCBzcGVjIHdhcyBub3QgZm91bmQgZm9yIHRoZSBwYWNrYWdlLnonQSBsb2FkZXIgd2FzIG5vdCBmb3VuZCBmb3IgdGhlIHBhY2thZ2UuegRUaGUgekMgcGFja2FnZSB3YXMgbm90IGluc3RhbGxlZCBpbiBhIHdheSB0aGF0IFBhY2thZ2VMb2FkZXIgdW5kZXJzdGFuZHMuKSByEQAAAHISAAAA2ghub3JtcGF0aNoGcnN0cmlwchMAAADaBmN1cmRpcnJiAAAAcmEAAAByPQAAAHIEAAAA2glpbXBvcnRsaWLaBHV0aWzaCWZpbmRfc3BlY9oOQXNzZXJ0aW9uRXJyb3LaBmxvYWRlctoHX2xvYWRlctoIX2FyY2hpdmVyQwAAANoJemlwaW1wb3J02gt6aXBpbXBvcnRlctoHYXJjaGl2ZdoEbmV4dNoEaXRlctoac3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnNySQAAANoGZXh0ZW5k2gZvcmlnaW5yFgAAANoHZGlybmFtZdoFaXNkaXLaClZhbHVlRXJyb3LaDl90ZW1wbGF0ZV9yb290KQpyIQAAAHJhAAAAcmIAAAByPQAAANoEc3BlY3JrAAAAWg10ZW1wbGF0ZV9yb290WgZwa2dkaXLaBXJvb3Rz2gRyb290chgAAAByGAAAAHIZAAAAckUAAAALAQAAc0QAAAAABhYDDAEGARwBDAIGAQYBBgQIAQwBEAEGARABBgEGAQQCDAEIAQ4BEAIEBAYBDgIMARQCCgEOAg4BBAEIAgoBAgEOBHoWUGFja2FnZUxvYWRlci5fX2luaXRfX3IKAAAAKQNyHAAAAHIMAAAAcg0AAABjAwAAAAAAAAAHAAAAEQAAAAMAAABzygAAAHQAagFqAnwAagNmAXQEfAKDAZ4CjgCJAXwAagVkAGsIcnZ0AGoBagaIAYMBczZ0B3wCgwGCAXQIiAFkAYMCjw59A3wDagmDAH0EVwBkAFEAUgBYAHQAagFqCogBgwGJAHQLZAKcAYcAhwFmAmQDZASEDH0FbkJ5EHwAagxqDYgBgwF9BFcAbiwEAHQOawpysgEAfQYBAHoQdAd8AoMBfAaCAlcAWQBkAGQAfQZ+BlgAbgJYAGQAfQV8BGoPfABqEIMBiAF8BWYDUwApBU7aAnJiKQFyDQAAAGMAAAAAAAAAAAAAAAACAAAAEwAAAHMcAAAAdABqAWoCiAGDAW8adABqAWoDiAGDAYgAawJTACkBTikEchEAAAByEgAAANoGaXNmaWxlckYAAAByGAAAACkCckgAAAByQQAAAHIYAAAAchkAAADaCnVwX3RvX2RhdGVWAQAAcwIAAAAAAXosUGFja2FnZUxvYWRlci5nZXRfc291cmNlLjxsb2NhbHM+LnVwX3RvX2RhdGUpEXIRAAAAchIAAABySQAAAHJ5AAAAchoAAABybQAAAHJ+AAAAcgcAAADaBG9wZW5ySgAAAHJGAAAAcjYAAABybAAAANoIZ2V0X2RhdGFyRwAAAHJLAAAAcj0AAAApB3IhAAAAchwAAAByDAAAAHJNAAAAcioAAAByfwAAANoBZXIYAAAAKQJySAAAAHJBAAAAchkAAAByIgAAAEYBAABzHAAAAAADGAMKAgwBCAIMARICDAIWBQIBEAEQARwFBAJ6GFBhY2thZ2VMb2FkZXIuZ2V0X3NvdXJjZSkBcg0AAABjAQAAAAAAAAAHAAAABQAAAAMAAABzAAEAAGcAfQF8AGoAZABrCHJkdAF8AGoCgwF9AnjadANqBHwAagKDAUQAXThcA4kAfQN9BIgAfAJkAIUCGQBqBXQDagZqB4MBiQB8AWoIhwBmAWQBZAKECHwERACDAYMBAQBxJlcAbpB0CXwAagpkA4MCc3h0C2QEgwGCAXwAagJ0AXwAagCDAWQAhQIZAGoFdANqBmoHgwF0A2oGagcXAH0FdAF8BYMBfQJ4THwAagpqDGoNgwBEAF08fQZ8BmoOfAWDAXK0fAZkBxkAdANqBmoHawNytHwBag98BnwCZACFAhkAahB0A2oGagdkBoMCgwEBAHG0VwB8AWoRgwABAHwBUwApCE5jAQAAAAAAAAACAAAABAAAADMAAABzKAAAAHwAXSB9AXQAagFqAogAfAGDAmoDdABqAWoEZACDAlYAAQBxAmQBUwApAnIOAAAATikFchEAAAByEgAAAHJJAAAAclQAAAByEwAAACkCckAAAAByJQAAACkBclgAAAByGAAAAHIZAAAA+gk8Z2VuZXhwcj5xAQAAcwIAAAAEAXovUGFja2FnZUxvYWRlci5saXN0X3RlbXBsYXRlcy48bG9jYWxzPi48Z2VuZXhwcj7aBl9maWxlc3pGVGhpcyB6aXAgaW1wb3J0IGRvZXMgbm90IGhhdmUgdGhlIHJlcXVpcmVkIG1ldGFkYXRhIHRvIGxpc3QgdGVtcGxhdGVzLnIGAAAAcg4AAADp/////ykScm0AAAByUgAAAHJ5AAAAchEAAAByUQAAANoGbHN0cmlwchIAAAByEwAAAHJ0AAAA2gdoYXNhdHRycmwAAAByIwAAAHKEAAAA2gRrZXlz2gpzdGFydHN3aXRochYAAAByVAAAANoEc29ydCkHciEAAADaB3Jlc3VsdHPaBm9mZnNldHJZAAAAcloAAADaBnByZWZpeHIlAAAAchgAAAApAXJYAAAAchkAAAByJAAAAGcBAABzJgAAAAABBAIKAgoCGAEWAQQBCgEQAwwBAgEGBhwBCgIIAhICGgEiAggBehxQYWNrYWdlTG9hZGVyLmxpc3RfdGVtcGxhdGVzKQJyXwAAAHJgAAAAKQ5yIAAAAHIuAAAAci8AAAByMAAAAHIxAAAAckUAAAByMgAAAHIzAAAAcjQAAAByNQAAAHI2AAAAciIAAAByNwAAAHIkAAAAchgAAAByGAAAAHIYAAAAchkAAAByXgAAAOoAAABzDgAAAAgfBAUAAQgBDjcEASofcl4AAABjAAAAAAAAAAAAAAAACAAAAEAAAABzZgAAAGUAWgFkAFoCZAFaA2UEagVlBmUGZgIZAGQCZAOcAmQEZAWEBFoHZAZlBmUEaghlBmQCZQRqCWcAZQpmAhkAZgMZAGQHnANkCGQJhARaC2UEagxlBhkAZAqcAWQLZAyEBFoNZAJTACkN2gpEaWN0TG9hZGVyYQYBAABMb2FkcyBhIHRlbXBsYXRlIGZyb20gYSBQeXRob24gZGljdCBtYXBwaW5nIHRlbXBsYXRlIG5hbWVzIHRvCiAgICB0ZW1wbGF0ZSBzb3VyY2UuICBUaGlzIGxvYWRlciBpcyB1c2VmdWwgZm9yIHVuaXR0ZXN0aW5nOgoKICAgID4+PiBsb2FkZXIgPSBEaWN0TG9hZGVyKHsnaW5kZXguaHRtbCc6ICdzb3VyY2UgaGVyZSd9KQoKICAgIEJlY2F1c2UgYXV0byByZWxvYWRpbmcgaXMgcmFyZWx5IHVzZWZ1bCB0aGlzIGlzIGRpc2FibGVkIHBlciBkZWZhdWx0LgogICAgTikC2gdtYXBwaW5ncg0AAABjAgAAAAAAAAACAAAAAgAAAEMAAABzCgAAAHwBfABfAGQAUwApAU4pAXKPAAAAKQJyIQAAAHKPAAAAchgAAAByGAAAAHIZAAAAckUAAACUAQAAcwIAAAAAAXoTRGljdExvYWRlci5fX2luaXRfX3IKAAAAKQNyHAAAAHIMAAAAcg0AAABjAwAAAAAAAAADAAAABQAAAAMAAABzNgAAAIgCiABqAGsGciqIAGoAiAIZAIkBiAFkAIcAhwGHAmYDZAFkAoQIZgNTAHQBiAKDAYIBZABTACkDTmMAAAAAAAAAAAAAAAADAAAAEwAAAHMQAAAAiAGIAGoAagGIAoMBawJTACkBTikCco8AAADaA2dldHIYAAAAKQNyIQAAAHIqAAAAcgwAAAByGAAAAHIZAAAA2gg8bGFtYmRhPpwBAABzAAAAAHonRGljdExvYWRlci5nZXRfc291cmNlLjxsb2NhbHM+LjxsYW1iZGE+KQJyjwAAAHIHAAAAKQNyIQAAAHIcAAAAcgwAAAByGAAAACkDciEAAAByKgAAAHIMAAAAchkAAAByIgAAAJcBAABzCAAAAAADCgEKARYBehVEaWN0TG9hZGVyLmdldF9zb3VyY2UpAXINAAAAYwEAAAAAAAAAAQAAAAIAAABDAAAAcwoAAAB0AHwAagGDAVMAKQFOKQJyVgAAAHKPAAAAKQFyIQAAAHIYAAAAchgAAAByGQAAAHIkAAAAnwEAAHMCAAAAAAF6GURpY3RMb2FkZXIubGlzdF90ZW1wbGF0ZXMpDnIgAAAAci4AAAByLwAAAHIwAAAAcjIAAADaB01hcHBpbmdyMQAAAHJFAAAAcjMAAAByNQAAAHI2AAAAciIAAAByNwAAAHIkAAAAchgAAAByGAAAAHIYAAAAchkAAAByjgAAAIsBAABzCgAAAAgHBAIaBAQBJAZyjgAAAGMAAAAAAAAAAAAAAAAMAAAAQAAAAHOSAAAAZQBaAWQAWgJkAVoDZQRqBWUGZwFlBGoHZQRqCGUGZQRqCWUGZQRqB2UGGQBlBGoHZQRqBWcAZQpmAhkAGQBmAxkAZgIZABkAZgIZAGQCZAOcAmQEZAWEBFoLZAZlBmUEagllBmUEagdlBhkAZQRqB2UEagVnAGUKZgIZABkAZgMZAGQHnANkCGQJhARaDGQCUwApCtoORnVuY3Rpb25Mb2FkZXJhrQIAAEEgbG9hZGVyIHRoYXQgaXMgcGFzc2VkIGEgZnVuY3Rpb24gd2hpY2ggZG9lcyB0aGUgbG9hZGluZy4gIFRoZQogICAgZnVuY3Rpb24gcmVjZWl2ZXMgdGhlIG5hbWUgb2YgdGhlIHRlbXBsYXRlIGFuZCBoYXMgdG8gcmV0dXJuIGVpdGhlcgogICAgYSBzdHJpbmcgd2l0aCB0aGUgdGVtcGxhdGUgc291cmNlLCBhIHR1cGxlIGluIHRoZSBmb3JtIGBgKHNvdXJjZSwKICAgIGZpbGVuYW1lLCB1cHRvZGF0ZWZ1bmMpYGAgb3IgYE5vbmVgIGlmIHRoZSB0ZW1wbGF0ZSBkb2VzIG5vdCBleGlzdC4KCiAgICA+Pj4gZGVmIGxvYWRfdGVtcGxhdGUobmFtZSk6CiAgICAuLi4gICAgIGlmIG5hbWUgPT0gJ2luZGV4Lmh0bWwnOgogICAgLi4uICAgICAgICAgcmV0dXJuICcuLi4nCiAgICAuLi4KICAgID4+PiBsb2FkZXIgPSBGdW5jdGlvbkxvYWRlcihsb2FkX3RlbXBsYXRlKQoKICAgIFRoZSBgdXB0b2RhdGVmdW5jYCBpcyBhIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIGlmIGF1dG9yZWxvYWQgaXMgZW5hYmxlZAogICAgYW5kIGhhcyB0byByZXR1cm4gYFRydWVgIGlmIHRoZSB0ZW1wbGF0ZSBpcyBzdGlsbCB1cCB0byBkYXRlLiAgRm9yIG1vcmUKICAgIGRldGFpbHMgaGF2ZSBhIGxvb2sgYXQgOm1ldGg6YEJhc2VMb2FkZXIuZ2V0X3NvdXJjZWAgd2hpY2ggaGFzIHRoZSBzYW1lCiAgICByZXR1cm4gdmFsdWUuCiAgICBOKQLaCWxvYWRfZnVuY3INAAAAYwIAAAAAAAAAAgAAAAIAAABDAAAAcwoAAAB8AXwAXwBkAFMAKQFOKQFylAAAACkCciEAAABylAAAAHIYAAAAchgAAAByGQAAAHJFAAAAtQEAAHMCAAAAAAt6F0Z1bmN0aW9uTG9hZGVyLl9faW5pdF9fcgoAAAApA3IcAAAAcgwAAAByDQAAAGMDAAAAAAAAAAQAAAADAAAAQwAAAHMyAAAAfABqAHwCgwF9A3wDZABrCHIadAF8AoMBggF0AnwDdAODAnIufANkAGQAZgNTAHwDUwApAU4pBHKUAAAAcgcAAAByQwAAAHIxAAAAKQRyIQAAAHIcAAAAcgwAAADaAnJ2chgAAAByGAAAAHIZAAAAciIAAADCAQAAcwwAAAAAAwoCCAEIAgoBCgJ6GUZ1bmN0aW9uTG9hZGVyLmdldF9zb3VyY2UpDXIgAAAAci4AAAByLwAAAHIwAAAAcjIAAAByNQAAAHIxAAAAcjQAAAByWwAAAHIzAAAAcjYAAAByRQAAAHIiAAAAchgAAAByGAAAAHIYAAAAchkAAABykwAAAKMBAABzEgAAAAgQBAQEAQQBBAEEATAEDgQEAXKTAAAAYwAAAAAAAAAAAAAAAAkAAABAAAAAc7wAAABlAFoBZABaAmQBWgNkFWUEagVlBmUHZgIZAGUGZANkBJwDZAVkBoQFWghlBmUEagllB2UGZgIZAGQHnAJkCGQJhARaCmQKZQZlBGoJZQZlBGoLZQYZAGUEagtlBGoMZwBlDWYCGQAZAGYDGQBkC5wDZAxkDYQEWg5lD2QWZAplBmUEagtlBGoQZQZlBGoRZgIZABkAZA5kD5wEZBBkEYQFgwFaEmUEahNlBhkAZBKcAWQTZBSEBFoUZANTACkX2gxQcmVmaXhMb2FkZXJhHgIAAEEgbG9hZGVyIHRoYXQgaXMgcGFzc2VkIGEgZGljdCBvZiBsb2FkZXJzIHdoZXJlIGVhY2ggbG9hZGVyIGlzIGJvdW5kCiAgICB0byBhIHByZWZpeC4gIFRoZSBwcmVmaXggaXMgZGVsaW1pdGVkIGZyb20gdGhlIHRlbXBsYXRlIGJ5IGEgc2xhc2ggcGVyCiAgICBkZWZhdWx0LCB3aGljaCBjYW4gYmUgY2hhbmdlZCBieSBzZXR0aW5nIHRoZSBgZGVsaW1pdGVyYCBhcmd1bWVudCB0bwogICAgc29tZXRoaW5nIGVsc2U6OgoKICAgICAgICBsb2FkZXIgPSBQcmVmaXhMb2FkZXIoewogICAgICAgICAgICAnYXBwMSc6ICAgICBQYWNrYWdlTG9hZGVyKCdteXBhY2thZ2UuYXBwMScpLAogICAgICAgICAgICAnYXBwMic6ICAgICBQYWNrYWdlTG9hZGVyKCdteXBhY2thZ2UuYXBwMicpCiAgICAgICAgfSkKCiAgICBCeSBsb2FkaW5nIGBgJ2FwcDEvaW5kZXguaHRtbCdgYCB0aGUgZmlsZSBmcm9tIHRoZSBhcHAxIHBhY2thZ2UgaXMgbG9hZGVkLAogICAgYnkgbG9hZGluZyBgYCdhcHAyL2luZGV4Lmh0bWwnYGAgdGhlIGZpbGUgZnJvbSB0aGUgc2Vjb25kLgogICAgcg4AAABOKQNyjwAAANoJZGVsaW1pdGVycg0AAABjAwAAAAAAAAADAAAAAgAAAEMAAABzEAAAAHwBfABfAHwCfABfAWQAUwApAU4pAnKPAAAAcpcAAAApA3IhAAAAco8AAABylwAAAHIYAAAAchgAAAByGQAAAHJFAAAA3wEAAHMEAAAAAAMGAXoVUHJlZml4TG9hZGVyLl9faW5pdF9fKQJyDAAAAHINAAAAYwIAAAAAAAAABgAAABAAAABDAAAAc1oAAAB5IHwBagB8AGoBZAGDAlwCfQJ9A3wAagJ8AhkAfQRXAG4wBAB0A3QEZgJrCnJQAQB9BQEAehB0BXwBgwF8BYICVwBZAGQAZAB9BX4FWABuAlgAfAR8A2YCUwApAk5yBgAAACkGchAAAABylwAAAHKPAAAAcngAAADaCEtleUVycm9ycgcAAAApBnIhAAAAcgwAAAByjQAAAHIlAAAAcmsAAAByggAAAHIYAAAAchgAAAByGQAAANoKZ2V0X2xvYWRlcuUBAABzDAAAAAABAgESAQ4BFAEcAXoXUHJlZml4TG9hZGVyLmdldF9sb2FkZXJyCgAAACkDchwAAAByDAAAAHINAAAAYwMAAAAAAAAABgAAABAAAABDAAAAc0wAAAB8AGoAfAKDAVwCfQN9BHkMfANqAXwBfASDAlMABAB0AmsKckYBAH0FAQB6EHQCfAKDAXwFggJXAFkAZABkAH0FfgVYAG4CWABkAFMAKQFOKQNymQAAAHIiAAAAcgcAAAApBnIhAAAAchwAAAByDAAAAHJrAAAAciUAAAByggAAAHIYAAAAchgAAAByGQAAAHIiAAAA7QEAAHMKAAAAAAMOAQIBDAEQA3oXUHJlZml4TG9hZGVyLmdldF9zb3VyY2VyCwAAACkEchwAAAByJQAAAHImAAAAcg0AAABjBAAAAAAAAAAHAAAAEAAAAEMAAABzTgAAAHwAagB8AoMBXAJ9BH0FeQ58BGoBfAF8BXwDgwNTAAQAdAJrCnJIAQB9BgEAehB0AnwCgwF8BoICVwBZAGQAZAB9Bn4GWABuAlgAZABTACkBTikDcpkAAAByLQAAAHIHAAAAKQdyIQAAAHIcAAAAciUAAAByJgAAAHJrAAAAWgpsb2NhbF9uYW1lcoIAAAByGAAAAHIYAAAAchkAAAByLQAAAPgBAABzCgAAAAAHDgECAQ4BEAN6EVByZWZpeExvYWRlci5sb2FkKQFyDQAAAGMBAAAAAAAAAAUAAAAFAAAAQwAAAHNGAAAAZwB9AXg8fABqAGoBgwBEAF0uXAJ9An0DeCR8A2oCgwBEAF0YfQR8AWoDfAJ8AGoEFwB8BBcAgwEBAHEiVwBxEFcAfAFTACkBTikFco8AAADaBWl0ZW1zciQAAAByFgAAAHKXAAAAKQVyIQAAANoGcmVzdWx0co0AAAByawAAAHIMAAAAchgAAAByGAAAAHIZAAAAciQAAAAHAgAAcwoAAAAAAQQBFAEOARwBehtQcmVmaXhMb2FkZXIubGlzdF90ZW1wbGF0ZXMpAXIOAAAAKQFOKRVyIAAAAHIuAAAAci8AAAByMAAAAHIyAAAAcpIAAAByMQAAAHIbAAAAckUAAAByMwAAAHKZAAAAcjQAAAByNQAAAHI2AAAAciIAAAByCAAAAHI4AAAAcjkAAAByLQAAAHI3AAAAciQAAAByGAAAAHIYAAAAchgAAAByGQAAAHKWAAAA0AEAAHMUAAAACA0EAxABDgQaCQQBMAkCBRoBEAlylgAAAGMAAAAAAAAAAAAAAAAJAAAAQAAAAHOaAAAAZQBaAWQAWgJkAVoDZQRqBWUGGQBkAmQDnAJkBGQFhARaB2QGZQhlBGoJZQhlBGoKZQgZAGUEagplBGoLZwBlDGYCGQAZAGYDGQBkB5wDZAhkCYQEWg1lDmQRZAZlCGUEagplBGoPZQhlBGoQZgIZABkAZApkC5wEZAxkDYQFgwFaEWUEahJlCBkAZA6cAWQPZBCEBFoTZAJTACkS2gxDaG9pY2VMb2FkZXJhqgEAAFRoaXMgbG9hZGVyIHdvcmtzIGxpa2UgdGhlIGBQcmVmaXhMb2FkZXJgIGp1c3QgdGhhdCBubyBwcmVmaXggaXMKICAgIHNwZWNpZmllZC4gIElmIGEgdGVtcGxhdGUgY291bGQgbm90IGJlIGZvdW5kIGJ5IG9uZSBsb2FkZXIgdGhlIG5leHQgb25lCiAgICBpcyB0cmllZC4KCiAgICA+Pj4gbG9hZGVyID0gQ2hvaWNlTG9hZGVyKFsKICAgIC4uLiAgICAgRmlsZVN5c3RlbUxvYWRlcignL3BhdGgvdG8vdXNlci90ZW1wbGF0ZXMnKSwKICAgIC4uLiAgICAgRmlsZVN5c3RlbUxvYWRlcignL3BhdGgvdG8vc3lzdGVtL3RlbXBsYXRlcycpCiAgICAuLi4gXSkKCiAgICBUaGlzIGlzIHVzZWZ1bCBpZiB5b3Ugd2FudCB0byBhbGxvdyB1c2VycyB0byBvdmVycmlkZSBidWlsdGluIHRlbXBsYXRlcwogICAgZnJvbSBhIGRpZmZlcmVudCBsb2NhdGlvbi4KICAgIE4pAtoHbG9hZGVyc3INAAAAYwIAAAAAAAAAAgAAAAIAAABDAAAAcwoAAAB8AXwAXwBkAFMAKQFOKQFynQAAACkCciEAAABynQAAAHIYAAAAchgAAAByGQAAAHJFAAAAHQIAAHMCAAAAAAF6FUNob2ljZUxvYWRlci5fX2luaXRfX3IKAAAAKQNyHAAAAHIMAAAAcg0AAABjAwAAAAAAAAAEAAAADAAAAEMAAABzPgAAAHgwfABqAEQAXSZ9A3kMfANqAXwBfAKDAlMABAB0AmsKciwBAAEAAQBZAHEIWABxCFcAdAJ8AoMBggFkAFMAKQFOKQNynQAAAHIiAAAAcgcAAAApBHIhAAAAchwAAAByDAAAAHJrAAAAchgAAAByGAAAAHIZAAAAciIAAAAgAgAAcwwAAAAAAwwBAgEMAQ4BCgF6F0Nob2ljZUxvYWRlci5nZXRfc291cmNlcgsAAAApBHIcAAAAciUAAAByJgAAAHINAAAAYwQAAAAAAAAABQAAAAwAAABDAAAAc0AAAAB4MnwAagBEAF0ofQR5DnwEagF8AXwCfAODA1MABAB0AmsKci4BAAEAAQBZAHEIWABxCFcAdAJ8AoMBggFkAFMAKQFOKQNynQAAAHItAAAAcgcAAAApBXIhAAAAchwAAAByJQAAAHImAAAAcmsAAAByGAAAAHIYAAAAchkAAAByLQAAACoCAABzDAAAAAAHDAECAQ4BDgEKAXoRQ2hvaWNlTG9hZGVyLmxvYWQpAXINAAAAYwEAAAAAAAAAAwAAAAMAAABDAAAAcywAAAB0AIMAfQF4HHwAagFEAF0SfQJ8AWoCfAJqA4MAgwEBAHEOVwB0BHwBgwFTACkBTikFclAAAABynQAAANoGdXBkYXRlciQAAAByVgAAACkDciEAAAByVwAAAHJrAAAAchgAAAByGAAAAHIZAAAAciQAAAA4AgAAcwgAAAAAAQYBDAESAXobQ2hvaWNlTG9hZGVyLmxpc3RfdGVtcGxhdGVzKQFOKRRyIAAAAHIuAAAAci8AAAByMAAAAHIyAAAAcl0AAAByGwAAAHJFAAAAcjEAAAByMwAAAHI0AAAAcjUAAAByNgAAAHIiAAAAcggAAAByOAAAAHI5AAAAci0AAAByNwAAAHIkAAAAchgAAAByGAAAAHIYAAAAchkAAABynAAAAA8CAABzEAAAAAgMBAIWBAQBMAgCBRoBEAhynAAAAGMAAAAAAAAAAAAAAAABAAAAQAAAAHMQAAAAZQBaAWQAWgJkAVoDZAJTACkD2g9fVGVtcGxhdGVNb2R1bGV6OUxpa2UgYSBub3JtYWwgbW9kdWxlIGJ1dCB3aXRoIHN1cHBvcnQgZm9yIHdlYWsgcmVmZXJlbmNlc04pBHIgAAAAci4AAAByLwAAAHIwAAAAchgAAAByGAAAAHIYAAAAchkAAABynwAAAD8CAABzAgAAAAgBcp8AAABjAAAAAAAAAAAAAAAACAAAAEAAAABzmAAAAGUAWgFkAFoCZAFaA2QCWgRlBWoGZQdlCGoJZQVqCmUFagZlB2UIaglmAhkAGQBmAxkAZANkBJwCZAVkBoQEWgtlDGUHZQdkB5wCZAhkCYQEgwFaDWUMZQdlB2QHnAJkCmQLhASDAVoOZQ9kEWQMZQdlBWoQZQVqEWUHZQVqEmYCGQAZAGQNZA6cBGQPZBCEBYMBWhNkA1MAKRLaDE1vZHVsZUxvYWRlcmE2AQAAVGhpcyBsb2FkZXIgbG9hZHMgdGVtcGxhdGVzIGZyb20gcHJlY29tcGlsZWQgdGVtcGxhdGVzLgoKICAgIEV4YW1wbGUgdXNhZ2U6CgogICAgPj4+IGxvYWRlciA9IENob2ljZUxvYWRlcihbCiAgICAuLi4gICAgIE1vZHVsZUxvYWRlcignL3BhdGgvdG8vY29tcGlsZWQvdGVtcGxhdGVzJyksCiAgICAuLi4gICAgIEZpbGVTeXN0ZW1Mb2FkZXIoJy9wYXRoL3RvL3RlbXBsYXRlcycpCiAgICAuLi4gXSkKCiAgICBUZW1wbGF0ZXMgY2FuIGJlIHByZWNvbXBpbGVkIHdpdGggOm1ldGg6YEVudmlyb25tZW50LmNvbXBpbGVfdGVtcGxhdGVzYC4KICAgIEZOKQJyEgAAAHINAAAAYwIAAAAAAAAAAwAAAAUAAAADAAAAc3AAAABkAXQAfACDAWQCmwSdAokAdAGIAIMBfQJ0AnwBdANqBIMCDABzMHQCfAF0BYMCcjZ8AWcBfQFkA2QEhAB8AUQAgwF8Al8GdAdqCHwChwBmAWQFZAaECIMCdAlqCogAPAB8AnwAXwuIAHwAXwxkAFMAKQdOWhlfamluamEyX21vZHVsZV90ZW1wbGF0ZXNf2gF4YwEAAAAAAAAAAgAAAAQAAABTAAAAcxYAAABnAHwAXQ59AXQAagF8AYMBkQJxBFMAchgAAAApAnIRAAAAcj8AAAApAnJAAAAAckEAAAByGAAAAHIYAAAAchkAAAByQgAAAF4CAABzAgAAAAYAeilNb2R1bGVMb2FkZXIuX19pbml0X18uPGxvY2Fscz4uPGxpc3Rjb21wPmMBAAAAAAAAAAEAAAADAAAAEwAAAHMOAAAAdABqAWoCiABkAIMCUwApAU4pA9oDc3lz2gdtb2R1bGVz2gNwb3ApAXKhAAAAKQFyYQAAAHIYAAAAchkAAABykQAAAGECAABzAAAAAHonTW9kdWxlTG9hZGVyLl9faW5pdF9fLjxsb2NhbHM+LjxsYW1iZGE+KQ3aAmlkcp8AAAByQwAAAHICAAAAckQAAAByMQAAANoIX19wYXRoX1/aB3dlYWtyZWbaBXByb3h5cqIAAAByowAAANoGbW9kdWxlcmEAAAApA3IhAAAAchIAAADaA21vZHIYAAAAKQFyYQAAAHIZAAAAckUAAABSAgAAcxIAAAAAAxAECAIYAQYCEAIEARYGBgF6FU1vZHVsZUxvYWRlci5fX2luaXRfXykCciUAAAByDQAAAGMBAAAAAAAAAAEAAAAEAAAAQwAAAHMWAAAAZAF0AHwAagFkAoMBgwFqAoMAFwBTACkDTloFdG1wbF96BXV0Zi04KQNyAwAAANoGZW5jb2Rl2gloZXhkaWdlc3QpAXIlAAAAchgAAAByGAAAAHIZAAAA2hBnZXRfdGVtcGxhdGVfa2V5agIAAHMCAAAAAAJ6HU1vZHVsZUxvYWRlci5nZXRfdGVtcGxhdGVfa2V5YwEAAAAAAAAAAQAAAAIAAABDAAAAcw4AAAB0AGoBfACDAWQBFwBTACkCTnoDLnB5KQJyoAAAAHKtAAAAKQFyJQAAAHIYAAAAchgAAAByGQAAANoTZ2V0X21vZHVsZV9maWxlbmFtZW4CAABzAgAAAAACeiBNb2R1bGVMb2FkZXIuZ2V0X21vZHVsZV9maWxlbmFtZXIKAAAAcgsAAAApBHIcAAAAciUAAAByJgAAAHINAAAAYwQAAAAAAAAACAAAABIAAABDAAAAc54AAAB8AGoAfAKDAX0EfABqAZsAZAF8BJsAnQN9BXQCfABqA3wFZACDA30GfAZkAGsIcoB5FHQEfAVkAGQAZAJnAYMEfQZXAG4sBAB0BWsKcnABAH0HAQB6EHQGfAKDAXwHggJXAFkAZABkAH0HfgdYAG4CWAB0B2oIagl8BWQAgwIBAHwDZABrCHKMaQB9A3wBagpqC3wBfAZqDHwDgwNTACkDTnIPAAAAcnwAAAApDXKtAAAAcmEAAADaB2dldGF0dHJyqQAAANoKX19pbXBvcnRfX9oLSW1wb3J0RXJyb3JyBwAAAHKiAAAAcqMAAABypAAAAHIpAAAAWhBmcm9tX21vZHVsZV9kaWN02ghfX2RpY3RfXykIciEAAAByHAAAAHIlAAAAciYAAADaA2tleXKpAAAAcqoAAAByggAAAHIYAAAAchgAAAByGQAAAHItAAAAcgIAAHMaAAAAAAcKARABDgIIAQIBFAEQARwEDgIIAQQCBgF6EU1vZHVsZUxvYWRlci5sb2FkKQFOKRRyIAAAAHIuAAAAci8AAAByMAAAAHIdAAAAcjIAAAByWwAAAHIxAAAAchEAAAByXAAAAHJdAAAAckUAAADaDHN0YXRpY21ldGhvZHKtAAAAcq4AAAByCAAAAHI0AAAAcjgAAAByOQAAAHItAAAAchgAAAByGAAAAHIYAAAAchkAAAByoAAAAEMCAABzFgAAAAgLBAIEAyIBDhYCARIDAgESAwIFGgFyoAAAACklcjAAAADaDmltcG9ydGxpYi51dGlscmcAAAByEQAAAHKiAAAA2gZ0eXBpbmdyMgAAAHKnAAAAcm4AAADaC2NvbGxlY3Rpb25zcgIAAADaB2hhc2hsaWJyAwAAAHIEAAAA2gV0eXBlc3IFAAAA2gpleGNlcHRpb25zcgcAAADaBXV0aWxzcggAAAByCQAAANoNVFlQRV9DSEVDS0lOR3IcAAAAcgoAAAByCwAAAHIxAAAAcjcAAAByGgAAAHIbAAAAcjoAAAByXgAAAHKOAAAAcpMAAABylgAAAHKcAAAAcp8AAAByoAAAAHIYAAAAchgAAAByGAAAAHIZAAAA2gg8bW9kdWxlPgMAAABzNgAAAAQBCAEIAQgBCAEIAQgBDAEMAQwBDAIMAQwBDAIGAQwBDAMWEQ5uEFMQfwAiEBgQLRA/EDAQBA==