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b3VyY2VfZGlyOiBUaGUgcGF0aCB0byB0aGUgc291cmNlIGRpcmVjdG9yeSwgY29udGFpbmluZwogICAgICAgIHB5cHJvamVjdC50b21sLgogICAgOnBhcmFtIGJ1aWxkX2JhY2tlbmQ6IFRoZSBidWlsZCBiYWNrZW5kIHNwZWMsIGFzIHBlciBQRVAgNTE3LCBmcm9tCiAgICAgICAgcHlwcm9qZWN0LnRvbWwuCiAgICA6cGFyYW0gYmFja2VuZF9wYXRoOiBUaGUgYmFja2VuZCBwYXRoLCBhcyBwZXIgUEVQIDUxNywgZnJvbSBweXByb2plY3QudG9tbC4KICAgIDpwYXJhbSBydW5uZXI6IEEgY2FsbGFibGUgdGhhdCBpbnZva2VzIHRoZSB3cmFwcGVyIHN1YnByb2Nlc3MuCiAgICA6cGFyYW0gcHl0aG9uX2V4ZWN1dGFibGU6IFRoZSBQeXRob24gZXhlY3V0YWJsZSB1c2VkIHRvIGludm9rZSB0aGUgYmFja2VuZAoKICAgIFRoZSAncnVubmVyJywgaWYgcHJvdmlkZWQsIG11c3QgZXhwZWN0IHRoZSBmb2xsb3dpbmc6CgogICAgLSBjbWQ6IGEgbGlzdCBvZiBzdHJpbmdzIHJlcHJlc2VudGluZyB0aGUgY29tbWFuZCBhbmQgYXJndW1lbnRzIHRvCiAgICAgIGV4ZWN1dGUsIGFzIHdvdWxkIGJlIHBhc3NlZCB0byBlLmcuICdzdWJwcm9jZXNzLmNoZWNrX2NhbGwnLgogICAgLSBjd2Q6IGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgd29ya2luZyBkaXJlY3RvcnkgdGhhdCBtdXN0IGJlCiAgICAgIHVzZWQgZm9yIHRoZSBzdWJwcm9jZXNzLiBDb3JyZXNwb25kcyB0byB0aGUgcHJvdmlkZWQgc291cmNlX2Rpci4KICAgIC0gZXh0cmFfZW52aXJvbjogYSBkaWN0IG1hcHBpbmcgZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZXMgdG8gdmFsdWVzCiAgICAgIHdoaWNoIG11c3QgYmUgc2V0IGZvciB0aGUgc3VicHJvY2VzcyBleGVjdXRpb24uCiAgICBOYwYAAAAAAAAABgAAAAMAAAADAAAAc1IAAAB8BGQAawhyDHQAfQR0AXwBgwGIAF8CfAKIAF8DfANyMocAZgFkAWQChAh8A0QAgwF9A3wDiABfBHwEiABfBXwFc0h0BmoHfQV8BYgAXwhkAFMAKQNOYwEAAAAAAAAAAgAAAAUAAAATAAAAcxgAAABnAHwAXRB9AXQAiABqAXwBgwKRAnEEUwByFgAAACkCcjcAAADaCnNvdXJjZV9kaXIpAtoCLjDaAXApAXIaAAAAchYAAAByFwAAAPoKPGxpc3Rjb21wPokAAABzAgAAAAYAei1QZXA1MTdIb29rQ2FsbGVyLl9faW5pdF9fLjxsb2NhbHM+LjxsaXN0Y29tcD4pCXIQAAAAcgMAAAByOAAAANoNYnVpbGRfYmFja2VuZHIhAAAA2hJfc3VicHJvY2Vzc19ydW5uZXLaA3N5c9oKZXhlY3V0YWJsZdoRcHl0aG9uX2V4ZWN1dGFibGUpBnIaAAAAcjgAAAByPAAAAHIhAAAA2gZydW5uZXJyQAAAAHIWAAAAKQFyGgAAAHIXAAAAchsAAAB6AAAAcxYAAAAACAgBBAIKAQYBBAISAgYBBgEEAQYBehlQZXA1MTdIb29rQ2FsbGVyLl9faW5pdF9fYwIAAAAAAAAAAwAAAAsAAABjAAAAcyQAAAB8AGoAfQJ8AXwAXwB6CmQBVgABAFcAZAF8AnwAXwBYAGQBUwApAnpcQSBjb250ZXh0IG1hbmFnZXIgZm9yIHRlbXBvcmFyaWx5IG92ZXJyaWRpbmcgdGhlIGRlZmF1bHQgc3VicHJvY2VzcwogICAgICAgIHJ1bm5lci4KICAgICAgICBOKQFyPQAAACkDchoAAAByQQAAANoEcHJldnIWAAAAchYAAAByFwAAANoRc3VicHJvY2Vzc19ydW5uZXKRAAAAcwoAAAAABQYBBgECAQoCeiJQZXA1MTdIb29rQ2FsbGVyLnN1YnByb2Nlc3NfcnVubmVyYwEAAAAAAAAAAQAAAAMAAABDAAAAcwwAAAB8AGoAZAFpAIMCUwApAno+UmV0dXJuIHRoZSBsaXN0IG9mIG9wdGlvbmFsIGZlYXR1cmVzIHN1cHBvcnRlZCBieSB0aGUgYmFja2VuZC7aE19zdXBwb3J0ZWRfZmVhdHVyZXMpAdoKX2NhbGxfaG9vaykBchoAAAByFgAAAHIWAAAAchcAAAByRAAAAJ0AAABzAgAAAAACeiRQZXA1MTdIb29rQ2FsbGVyLl9zdXBwb3J0ZWRfZmVhdHVyZXNjAgAAAAAAAAACAAAABAAAAEMAAABzEAAAAHwAagBkAWQCfAFpAYMCUwApA2FJAQAASWRlbnRpZnkgcGFja2FnZXMgcmVxdWlyZWQgZm9yIGJ1aWxkaW5nIGEgd2hlZWwKCiAgICAgICAgUmV0dXJucyBhIGxpc3Qgb2YgZGVwZW5kZW5jeSBzcGVjaWZpY2F0aW9ucywgZS5nLjo6CgogICAgICAgICAgICBbIndoZWVsID49IDAuMjUiLCAic2V0dXB0b29scyJdCgogICAgICAgIFRoaXMgZG9lcyBub3QgaW5jbHVkZSByZXF1aXJlbWVudHMgc3BlY2lmaWVkIGluIHB5cHJvamVjdC50b21sLgogICAgICAgIEl0IHJldHVybnMgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBlcXVpdmFsZW50bHkgbmFtZWQgaG9vayBpbiBhCiAgICAgICAgc3VicHJvY2Vzcy4KICAgICAgICDaHGdldF9yZXF1aXJlc19mb3JfYnVpbGRfd2hlZWzaD2NvbmZpZ19zZXR0aW5ncykBckUAAAApAnIaAAAAckcAAAByFgAAAHIWAAAAchcAAAByRgAAAKEAAABzBAAAAAALBgF6LVBlcDUxN0hvb2tDYWxsZXIuZ2V0X3JlcXVpcmVzX2Zvcl9idWlsZF93aGVlbFRjBAAAAAAAAAAEAAAABgAAAEMAAABzGAAAAHwAagBkAXQBfAGDAXwCfANkApwDgwJTACkDYXUBAABQcmVwYXJlIGEgYGAqLmRpc3QtaW5mb2BgIGZvbGRlciB3aXRoIG1ldGFkYXRhIGZvciB0aGlzIHByb2plY3QuCgogICAgICAgIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIG5ld2x5IGNyZWF0ZWQgZm9sZGVyLgoKICAgICAgICBJZiB0aGUgYnVpbGQgYmFja2VuZCBkZWZpbmVzIGEgaG9vayB3aXRoIHRoaXMgbmFtZSwgaXQgd2lsbCBiZSBjYWxsZWQKICAgICAgICBpbiBhIHN1YnByb2Nlc3MuIElmIG5vdCwgdGhlIGJhY2tlbmQgd2lsbCBiZSBhc2tlZCB0byBidWlsZCBhIHdoZWVsLAogICAgICAgIGFuZCB0aGUgZGlzdC1pbmZvIGV4dHJhY3RlZCBmcm9tIHRoYXQgKHVubGVzcyBfYWxsb3dfZmFsbGJhY2sgaXMKICAgICAgICBGYWxzZSkuCiAgICAgICAg2iBwcmVwYXJlX21ldGFkYXRhX2Zvcl9idWlsZF93aGVlbCkD2hJtZXRhZGF0YV9kaXJlY3RvcnlyRwAAANoPX2FsbG93X2ZhbGxiYWNrKQJyRQAAAHIDAAAAKQRyGgAAAHJJAAAAckcAAABySgAAAHIWAAAAchYAAAByFwAAAHJIAAAAsAAAAHMIAAAAAAwGAQYBAgF6MVBlcDUxN0hvb2tDYWxsZXIucHJlcGFyZV9tZXRhZGF0YV9mb3JfYnVpbGRfd2hlZWxjBAAAAAAAAAAEAAAABgAAAEMAAABzKAAAAHwDZAFrCXIQdAB8A4MBfQN8AGoBZAJ0AHwBgwF8AnwDZAOcA4MCUwApBGF2AQAAQnVpbGQgYSB3aGVlbCBmcm9tIHRoaXMgcHJvamVjdC4KCiAgICAgICAgUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgbmV3bHkgY3JlYXRlZCBmaWxlLgoKICAgICAgICBJbiBnZW5lcmFsLCB0aGlzIHdpbGwgY2FsbCB0aGUgJ2J1aWxkX3doZWVsJyBob29rIGluIHRoZSBiYWNrZW5kLgogICAgICAgIEhvd2V2ZXIsIGlmIHRoYXQgd2FzIHByZXZpb3VzbHkgY2FsbGVkIGJ5CiAgICAgICAgJ3ByZXBhcmVfbWV0YWRhdGFfZm9yX2J1aWxkX3doZWVsJywgYW5kIHRoZSBzYW1lIG1ldGFkYXRhX2RpcmVjdG9yeSBpcwogICAgICAgIHVzZWQsIHRoZSBwcmV2aW91c2x5IGJ1aWx0IHdoZWVsIHdpbGwgYmUgY29waWVkIHRvIHdoZWVsX2RpcmVjdG9yeS4KICAgICAgICBO2gtidWlsZF93aGVlbCkD2g93aGVlbF9kaXJlY3RvcnlyRwAAAHJJAAAAKQJyAwAAAHJFAAAAKQRyGgAAAHJMAAAAckcAAABySQAAAHIWAAAAchYAAAByFwAAAHJLAAAAwgAAAHMMAAAAAAwIAQgBBgEGAQIBehxQZXA1MTdIb29rQ2FsbGVyLmJ1aWxkX3doZWVsYwIAAAAAAAAAAgAAAAQAAABDAAAAcxAAAAB8AGoAZAFkAnwBaQGDAlMAKQNhUwEAAElkZW50aWZ5IHBhY2thZ2VzIHJlcXVpcmVkIGZvciBidWlsZGluZyBhbiBlZGl0YWJsZSB3aGVlbAoKICAgICAgICBSZXR1cm5zIGEgbGlzdCBvZiBkZXBlbmRlbmN5IHNwZWNpZmljYXRpb25zLCBlLmcuOjoKCiAgICAgICAgICAgIFsid2hlZWwgPj0gMC4yNSIsICJzZXR1cHRvb2xzIl0KCiAgICAgICAgVGhpcyBkb2VzIG5vdCBpbmNsdWRlIHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgaW4gcHlwcm9qZWN0LnRvbWwuCiAgICAgICAgSXQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIGVxdWl2YWxlbnRseSBuYW1lZCBob29rIGluIGEKICAgICAgICBzdWJwcm9jZXNzLgogICAgICAgINofZ2V0X3JlcXVpcmVzX2Zvcl9idWlsZF9lZGl0YWJsZXJHAAAAKQFyRQAAACkCchoAAAByRwAAAHIWAAAAchYAAAByFwAAAHJNAAAA1gAAAHMEAAAAAAsGAXowUGVwNTE3SG9va0NhbGxlci5nZXRfcmVxdWlyZXNfZm9yX2J1aWxkX2VkaXRhYmxlYwQAAAAAAAAABAAAAAYAAABDAAAAcxgAAAB8AGoAZAF0AXwBgwF8AnwDZAKcA4MCUwApA2F/AQAAUHJlcGFyZSBhIGBgKi5kaXN0LWluZm9gYCBmb2xkZXIgd2l0aCBtZXRhZGF0YSBmb3IgdGhpcyBwcm9qZWN0LgoKICAgICAgICBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBuZXdseSBjcmVhdGVkIGZvbGRlci4KCiAgICAgICAgSWYgdGhlIGJ1aWxkIGJhY2tlbmQgZGVmaW5lcyBhIGhvb2sgd2l0aCB0aGlzIG5hbWUsIGl0IHdpbGwgYmUgY2FsbGVkCiAgICAgICAgaW4gYSBzdWJwcm9jZXNzLiBJZiBub3QsIHRoZSBiYWNrZW5kIHdpbGwgYmUgYXNrZWQgdG8gYnVpbGQgYW4gZWRpdGFibGUKICAgICAgICB3aGVlbCwgYW5kIHRoZSBkaXN0LWluZm8gZXh0cmFjdGVkIGZyb20gdGhhdCAodW5sZXNzIF9hbGxvd19mYWxsYmFjayBpcwogICAgICAgIEZhbHNlKS4KICAgICAgICDaI3ByZXBhcmVfbWV0YWRhdGFfZm9yX2J1aWxkX2VkaXRhYmxlKQNySQAAAHJHAAAAckoAAAApAnJFAAAAcgMAAAApBHIaAAAAckkAAAByRwAAAHJKAAAAchYAAAByFgAAAHIXAAAAck4AAADlAAAAcwgAAAAADAYBBgECAXo0UGVwNTE3SG9va0NhbGxlci5wcmVwYXJlX21ldGFkYXRhX2Zvcl9idWlsZF9lZGl0YWJsZWMEAAAAAAAAAAQAAAAGAAAAQwAAAHMoAAAAfANkAWsJchB0AHwDgwF9A3wAagFkAnQAfAGDAXwCfANkA5wDgwJTACkEYYYBAABCdWlsZCBhbiBlZGl0YWJsZSB3aGVlbCBmcm9tIHRoaXMgcHJvamVjdC4KCiAgICAgICAgUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgbmV3bHkgY3JlYXRlZCBmaWxlLgoKICAgICAgICBJbiBnZW5lcmFsLCB0aGlzIHdpbGwgY2FsbCB0aGUgJ2J1aWxkX2VkaXRhYmxlJyBob29rIGluIHRoZSBiYWNrZW5kLgogICAgICAgIEhvd2V2ZXIsIGlmIHRoYXQgd2FzIHByZXZpb3VzbHkgY2FsbGVkIGJ5CiAgICAgICAgJ3ByZXBhcmVfbWV0YWRhdGFfZm9yX2J1aWxkX2VkaXRhYmxlJywgYW5kIHRoZSBzYW1lIG1ldGFkYXRhX2RpcmVjdG9yeQogICAgICAgIGlzIHVzZWQsIHRoZSBwcmV2aW91c2x5IGJ1aWx0IHdoZWVsIHdpbGwgYmUgY29waWVkIHRvIHdoZWVsX2RpcmVjdG9yeS4KICAgICAgICBO2g5idWlsZF9lZGl0YWJsZSkDckwAAAByRwAAAHJJAAAAKQJyAwAAAHJFAAAAKQRyGgAAAHJMAAAAckcAAABySQAAAHIWAAAAchYAAAByFwAAAHJPAAAA9wAAAHMMAAAAAAwIAQgBBgEGAQIBeh9QZXA1MTdIb29rQ2FsbGVyLmJ1aWxkX2VkaXRhYmxlYwIAAAAAAAAAAgAAAAQAAABDAAAAcxAAAAB8AGoAZAFkAnwBaQGDAlMAKQNhPgEAAElkZW50aWZ5IHBhY2thZ2VzIHJlcXVpcmVkIGZvciBidWlsZGluZyBhIHdoZWVsCgogICAgICAgIFJldHVybnMgYSBsaXN0IG9mIGRlcGVuZGVuY3kgc3BlY2lmaWNhdGlvbnMsIGUuZy46OgoKICAgICAgICAgICAgWyJzZXR1cHRvb2xzID49IDI2Il0KCiAgICAgICAgVGhpcyBkb2VzIG5vdCBpbmNsdWRlIHJlcXVpcmVtZW50cyBzcGVjaWZpZWQgaW4gcHlwcm9qZWN0LnRvbWwuCiAgICAgICAgSXQgcmV0dXJucyB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIGVxdWl2YWxlbnRseSBuYW1lZCBob29rIGluIGEKICAgICAgICBzdWJwcm9jZXNzLgogICAgICAgINocZ2V0X3JlcXVpcmVzX2Zvcl9idWlsZF9zZGlzdHJHAAAAKQFyRQAAACkCchoAAAByRwAAAHIWAAAAchYAAAByFwAAAHJQAAAACwEAAHMEAAAAAAsGAXotUGVwNTE3SG9va0NhbGxlci5nZXRfcmVxdWlyZXNfZm9yX2J1aWxkX3NkaXN0YwMAAAAAAAAAAwAAAAUAAABDAAAAcxYAAAB8AGoAZAF0AXwBgwF8AmQCnAKDAlMAKQN6o0J1aWxkIGFuIHNkaXN0IGZyb20gdGhpcyBwcm9qZWN0LgoKICAgICAgICBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBuZXdseSBjcmVhdGVkIGZpbGUuCgogICAgICAgIFRoaXMgY2FsbHMgdGhlICdidWlsZF9zZGlzdCcgYmFja2VuZCBob29rIGluIGEgc3VicHJvY2Vzcy4KICAgICAgICDaC2J1aWxkX3NkaXN0KQLaD3NkaXN0X2RpcmVjdG9yeXJHAAAAKQJyRQAAAHIDAAAAKQNyGgAAAHJSAAAAckcAAAByFgAAAHIWAAAAchcAAAByUQAAABoBAABzBgAAAAAHBgEGAXocUGVwNTE3SG9va0NhbGxlci5idWlsZF9zZGlzdGMDAAAAAAAAAAsAAAAUAAAAQwAAAHNgAQAAdABqAWQBGQBkAmsCchx8AGoCagNkA4MBfQNuBnwAagJ9A2QEfANpAX0EfABqBHJidAVqBmoHfABqBIMBfQV0AGoBZAEZAGQCawJyWnwFagN0AGoIgwCDAX0FfAV8BGQFPAB0CYMAj+59BmQGfAJpAX0HdApqC3wHdAx8BmQHgwJkAmQIjQMBAHQNgwCPLn0IfABqDn0JfABqD3wJdBB0EXwIgwGDAXwBfAZnBHwAahJ8BGQJjQMBAFcAZABRAFIAWAB0CmoTdAx8BmQKgwKDAX0KfApqFGQLgwFy7HQVfApqFGQMZA2DAoMBggF8CmoUZA6DAZABcgh0FnwKahRkDGQNgwKDAYIBfApqFGQPgwGQAXIudBd8AGoCfABqBHwKahRkEGQNgwJkEY0DggF8CmoUZBKDAZABck50GHwKahRkE4MBkAFwSnwBgwGCAXwKZBQZAFMAUQBSAFgAZABTACkVTnIBAAAA6QIAAADaBUFTQ0lJWhRQRVA1MTdfQlVJTERfQkFDS0VORFoTUEVQNTE3X0JBQ0tFTkRfUEFUSNoGa3dhcmdzegppbnB1dC5qc29uKQHaBmluZGVudCkCcicAAAByLgAAAHoLb3V0cHV0Lmpzb27aC3Vuc3VwcG9ydGVkchkAAADaAFoKbm9fYmFja2VuZFoPYmFja2VuZF9pbnZhbGlkWg1iYWNrZW5kX2Vycm9yKQNyIAAAAHIhAAAAciIAAABaDGhvb2tfbWlzc2luZ1oRbWlzc2luZ19ob29rX25hbWVaCnJldHVybl92YWwpGXI+AAAA2gx2ZXJzaW9uX2luZm9yPAAAANoGZW5jb2RlciEAAAByKQAAANoHcGF0aHNlcHIEAAAA2hVnZXRmaWxlc3lzdGVtZW5jb2RpbmdyGAAAAHIKAAAAWgp3cml0ZV9qc29u2gVwam9pbnILAAAAckAAAAByPQAAAHIDAAAA2gNzdHJyOAAAAFoJcmVhZF9qc29u2gNnZXRyDwAAAHIMAAAAcg0AAAByDgAAACkLchoAAAByJAAAAHJVAAAAcjwAAAByLgAAAHIhAAAAchUAAABaCmhvb2tfaW5wdXTaBnNjcmlwdNoGcHl0aG9u2gRkYXRhchYAAAByFgAAAHIXAAAAckUAAAAmAQAAc0AAAAAACA4BDgIGAQgCBgEOAQ4BDgEIAggBCAEOAQgDCAEGAQQBEgEEARIDEAEKARABDAEQAQwBAgEEAQQBEAIMARQBehtQZXA1MTdIb29rQ2FsbGVyLl9jYWxsX2hvb2spA05OTikBTikCTlQpAk5OKQFOKQJOVCkCTk4pAU4pAU4pEXIcAAAAch0AAAByHgAAAHIfAAAAchsAAAByAgAAAHJDAAAAckQAAAByRgAAAHJIAAAAcksAAAByTQAAAHJOAAAAck8AAAByUAAAAHJRAAAAckUAAAByFgAAAHIWAAAAchYAAAByFwAAAHISAAAAZgAAAHMmAAAACBMEBQABAAEKEQwMCAQKEAABChEAAQoSChAAAQoRAAEKEgoPCgxjAAAAAAAAAAAAAAAAAwAAAEAAAABzPAAAAGUAWgFkAFoCZAFaA2QCZAOEAFoEZARkBYQAWgVlBmQGZAeEAIMBWgdkCGQJhABaCGQKZAuEAFoJZAxTACkN2g1Mb2dnZXJXcmFwcGVyemQKICAgIFJlYWQgbWVzc2FnZXMgZnJvbSBhIHBpcGUgYW5kIHJlZGlyZWN0IHRoZW0KICAgIHRvIGEgbG9nZ2VyIChzZWUgcHl0aG9uJ3MgbG9nZ2luZyBtb2R1bGUpLgogICAgYwMAAAAAAAAAAwAAAAMAAABDAAAAc0gAAAB0AGoBagJ8AIMBAQBkAXwAXwN8AXwAXwR8AnwAXwV0BmoHgwBcAnwAXwh8AF8JdAZqCnwAagiDAXwAXwt8AGoMgwABAGQAUwApAk5UKQ3aCXRocmVhZGluZ9oGVGhyZWFkchsAAADaBmRhZW1vbtoGbG9nZ2Vy2gVsZXZlbHIpAAAA2gRwaXBlWgdmZF9yZWFk2ghmZF93cml0ZdoGZmRvcGVu2gZyZWFkZXLaBXN0YXJ0KQNyGgAAAHJnAAAAcmgAAAByFgAAAHIWAAAAchcAAAByGwAAAF4BAABzDgAAAAABDAEGAgYBBgMQAQ4CehZMb2dnZXJXcmFwcGVyLl9faW5pdF9fYwEAAAAAAAAAAQAAAAEAAABDAAAAcwYAAAB8AGoAUwApAU4pAXJqAAAAKQFyGgAAAHIWAAAAchYAAAByFwAAANoGZmlsZW5vawEAAHMCAAAAAAF6FExvZ2dlcldyYXBwZXIuZmlsZW5vYwEAAAAAAAAAAQAAAAMAAABDAAAAcxwAAAB8AGoAdAFqAoMBchh8AGQAZAKFAhkAUwB8AFMAKQNOcgkAAADp/////ykD2ghlbmRzd2l0aHIpAAAA2gdsaW5lc2VwKQHaA21zZ3IWAAAAchYAAAByFwAAANoOcmVtb3ZlX25ld2xpbmVuAQAAcwIAAAAAAnocTG9nZ2VyV3JhcHBlci5yZW1vdmVfbmV3bGluZWMBAAAAAAAAAAIAAAAEAAAAQwAAAHMkAAAAeB58AGoARABdFH0BfABqAXwAagJ8AYMBgwEBAHEIVwBkAFMAKQFOKQNybAAAANoGX3dyaXRlcnMAAAApAnIaAAAA2gRsaW5lchYAAAByFgAAAHIXAAAA2gNydW5yAQAAcwQAAAAAAQwBehFMb2dnZXJXcmFwcGVyLnJ1bmMCAAAAAAAAAAIAAAADAAAAQwAAAHMUAAAAfABqAGoBfABqAnwBgwIBAGQAUwApAU4pA3JnAAAA2gNsb2dyaAAAACkCchoAAAByIgAAAHIWAAAAchYAAAByFwAAAHJ0AAAAdgEAAHMCAAAAAAF6FExvZ2dlcldyYXBwZXIuX3dyaXRlTikKchwAAAByHQAAAHIeAAAAch8AAAByGwAAAHJuAAAA2gxzdGF0aWNtZXRob2RycwAAAHJ2AAAAcnQAAAByFgAAAHIWAAAAchYAAAByFwAAAHJjAAAAWAEAAHMMAAAACAQEAggNCAMMBAgEcmMAAAApAk5OKQJOTikicmQAAADaCmNvbnRleHRsaWJyAgAAAHIpAAAA2gdvcy5wYXRocgMAAAByBAAAAHJdAAAAchMAAADaCnN1YnByb2Nlc3NyBQAAAHIGAAAAcgcAAAByPgAAANoIdGVtcGZpbGVyCAAAAHJYAAAAcgoAAABaCmluX3Byb2Nlc3NyCwAAANoHX19hbGxfX3IYAAAA2glFeGNlcHRpb25yDAAAAHINAAAAcg4AAAByDwAAAHIQAAAAchEAAAByNwAAANoGb2JqZWN0chIAAAByZQAAAHJjAAAAchYAAAByFgAAAHIWAAAAchcAAADaCDxtb2R1bGU+AQAAAHM2AAAACAEMAQgBEAEIARQBCAEMAgwBDAMCAQIBAgECAQIBAgEGBAwJEAYQCBAHEAYKCQoJCBgQfwBz