bw0NCgAAAAClNI1jYRcAAOMAAAAAAAAAAAAAAAAAAAAABAAAAEAAAABzPgAAAGQAZAFsAG0BWgEBAGQCZANsAm0DWgMBAGQCZARsBG0FWgUBAGQFZwFaBkcAZAZkBYQAZAVlB4MDWghkB1MAKQjpAAAAACkB2g9hYnNvbHV0ZV9pbXBvcnTpAQAAACkB2hllbmNvZGVfbXVsdGlwYXJ0X2Zvcm1kYXRhKQHaCXVybGVuY29kZdoOUmVxdWVzdE1ldGhvZHNjAAAAAAAAAAAAAAAAAAAAAAMAAABAAAAAc1oAAABlAFoBZABaAmQBWgNoAGQCowFaBGQPZARkBYQBWgUJAwkDCQYJA2QQZAdkCIQBWgZkEWQJZAqEAVoHZBFkC2QMhAFaCAkDCQMJBgkDZBBkDWQOhAFaCWQDUwApEnIGAAAAYbcDAAAKICAgIENvbnZlbmllbmNlIG1peGluIGZvciBjbGFzc2VzIHdobyBpbXBsZW1lbnQgYSA6bWV0aDpgdXJsb3BlbmAgbWV0aG9kLCBzdWNoCiAgICBhcyA6Y2xhc3M6YHVybGxpYjMuSFRUUENvbm5lY3Rpb25Qb29sYCBhbmQKICAgIDpjbGFzczpgdXJsbGliMy5Qb29sTWFuYWdlcmAuCgogICAgUHJvdmlkZXMgYmVoYXZpb3IgZm9yIG1ha2luZyBjb21tb24gdHlwZXMgb2YgSFRUUCByZXF1ZXN0IG1ldGhvZHMgYW5kCiAgICBkZWNpZGVzIHdoaWNoIHR5cGUgb2YgcmVxdWVzdCBmaWVsZCBlbmNvZGluZyB0byB1c2UuCgogICAgU3BlY2lmaWNhbGx5LAoKICAgIDptZXRoOmAucmVxdWVzdF9lbmNvZGVfdXJsYCBpcyBmb3Igc2VuZGluZyByZXF1ZXN0cyB3aG9zZSBmaWVsZHMgYXJlCiAgICBlbmNvZGVkIGluIHRoZSBVUkwgKHN1Y2ggYXMgR0VULCBIRUFELCBERUxFVEUpLgoKICAgIDptZXRoOmAucmVxdWVzdF9lbmNvZGVfYm9keWAgaXMgZm9yIHNlbmRpbmcgcmVxdWVzdHMgd2hvc2UgZmllbGRzIGFyZQogICAgZW5jb2RlZCBpbiB0aGUgKmJvZHkqIG9mIHRoZSByZXF1ZXN0IHVzaW5nIG11bHRpcGFydCBvciB3d3ctZm9ybS11cmxlbmNvZGVkCiAgICAoc3VjaCBhcyBmb3IgUE9TVCwgUFVULCBQQVRDSCkuCgogICAgOm1ldGg6YC5yZXF1ZXN0YCBpcyBmb3IgbWFraW5nIGFueSBraW5kIG9mIHJlcXVlc3QsIGl0IHdpbGwgbG9vayB1cCB0aGUKICAgIGFwcHJvcHJpYXRlIGVuY29kaW5nIGZvcm1hdCBhbmQgdXNlIG9uZSBvZiB0aGUgYWJvdmUgdHdvIG1ldGhvZHMgdG8gbWFrZQogICAgdGhlIHJlcXVlc3QuCgogICAgSW5pdGlhbGl6ZXIgcGFyYW1ldGVyczoKCiAgICA6cGFyYW0gaGVhZGVyczoKICAgICAgICBIZWFkZXJzIHRvIGluY2x1ZGUgd2l0aCBhbGwgcmVxdWVzdHMsIHVubGVzcyBvdGhlciBoZWFkZXJzIGFyZSBnaXZlbgogICAgICAgIGV4cGxpY2l0bHkuCiAgICA+BAAAANoDR0VU2gRIRUFE2gZERUxFVEXaB09QVElPTlNOYwIAAAAAAAAAAAAAAAIAAAACAAAAQwAAAHMOAAAAfAFwA2kAfABfAGQAUwCpAU4pAdoHaGVhZGVycykC2gRzZWxmcgwAAACpAHIOAAAA+mYvcm9vdC9nZjE4MC1kZW1vL2NhcmF2ZWxfdXNlcl9wcm9qZWN0L3ZlbnYvbGliL3B5dGhvbjMuMTAvc2l0ZS1wYWNrYWdlcy9waXAvX3ZlbmRvci91cmxsaWIzL3JlcXVlc3QucHnaCF9faW5pdF9fKAAAAHMCAAAADgF6F1JlcXVlc3RNZXRob2RzLl9faW5pdF9fVGMHAAAAAAAAAAAAAAAIAAAAAgAAAEsAAABzCAAAAHQAZAGDAYIBKQJOek1DbGFzc2VzIGV4dGVuZGluZyBSZXF1ZXN0TWV0aG9kcyBtdXN0IGltcGxlbWVudCB0aGVpciBvd24gYGB1cmxvcGVuYGAgbWV0aG9kLikB2hNOb3RJbXBsZW1lbnRlZEVycm9yKQhyDQAAANoGbWV0aG9k2gN1cmzaBGJvZHlyDAAAANoQZW5jb2RlX211bHRpcGFydNoSbXVsdGlwYXJ0X2JvdW5kYXJ52gJrd3IOAAAAcg4AAAByDwAAANoHdXJsb3BlbisAAABzBgAAAAIKAgEE/3oW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ICAgICAgIDpmdW5jOmB1cmxsaWIucGFyc2UudXJsZW5jb2RlYCBpcyB1c2VkIHdpdGggdGhlCiAgICAgICAgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcgY29udGVudCB0eXBlLgoKICAgICAgICBNdWx0aXBhcnQgZW5jb2RpbmcgbXVzdCBiZSB1c2VkIHdoZW4gcG9zdGluZyBmaWxlcywgYW5kIGl0J3MgcmVhc29uYWJseQogICAgICAgIHNhZmUgdG8gdXNlIGl0IGluIG90aGVyIHRpbWVzIHRvby4gSG93ZXZlciwgaXQgbWF5IGJyZWFrIHJlcXVlc3QKICAgICAgICBzaWduaW5nLCBzdWNoIGFzIHdpdGggT0F1dGguCgogICAgICAgIFN1cHBvcnRzIGFuIG9wdGlvbmFsIGBgZmllbGRzYGAgcGFyYW1ldGVyIG9mIGtleS92YWx1ZSBzdHJpbmdzIEFORAogICAgICAgIGtleS9maWxldHVwbGUuIEEgZmlsZXR1cGxlIGlzIGEgKGZpbGVuYW1lLCBkYXRhLCBNSU1FIHR5cGUpIHR1cGxlIHdoZXJlCiAgICAgICAgdGhlIE1JTUUgdHlwZSBpcyBvcHRpb25hbC4gRm9yIGV4YW1wbGU6OgoKICAgICAgICAgICAgZmllbGRzID0gewogICAgICAgICAgICAgICAgJ2Zvbyc6ICdiYXInLAogICAgICAgICAgICAgICAgJ2Zha2VmaWxlJzogKCdmb29maWxlLnR4dCcsICdjb250ZW50cyBvZiBmb29maWxlJyksCiAgICAgICAgICAgICAgICAncmVhbGZpbGUnOiAoJ2JhcmZpbGUudHh0Jywgb3BlbigncmVhbGZpbGUnKS5yZWFkKCkpLAogICAgICAgICAgICAgICAgJ3R5cGVkZmlsZSc6ICgnYmF6ZmlsZS5iaW4nLCBvcGVuKCdiYXpmaWxlJykucmVhZCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1hZ2UvanBlZycpLAogICAgICAgICAgICAgICAgJ25vbmFtZWZpbGUnOiAnY29udGVudHMgb2Ygbm9uYW1lZmlsZSBmaWVsZCcsCiAgICAgICAgICAgIH0KCiAgICAgICAgV2hlbiB1cGxvYWRpbmcgYSBmaWxlLCBwcm92aWRpbmcgYSBmaWxlbmFtZSAodGhlIGZpcnN0IHBhcmFtZXRlciBvZiB0aGUKICAgICAgICB0dXBsZSkgaXMgb3B0aW9uYWwgYnV0IHJlY29tbWVuZGVkIHRvIGJlc3QgbWltaWMgYmVoYXZpb3Igb2YgYnJvd3NlcnMuCgogICAgICAgIE5vdGUgdGhhdCBpZiBgYGhlYWRlcnNgYCBhcmUgc3VwcGxpZWQsIHRoZSAnQ29udGVudC1UeXBlJyBoZWFkZXIgd2lsbAogICAgICAgIGJlIG92ZXJ3cml0dGVuIGJlY2F1c2UgaXQgZGVwZW5kcyBvbiB0aGUgZHluYW1pYyByYW5kb20gYm91bmRhcnkgc3RyaW5nCiAgICAgICAgd2hpY2ggaXMgdXNlZCB0byBjb21wb3NlIHRoZSBib2R5IG9mIHRoZSByZXF1ZXN0LiBUaGUgcmFuZG9tIGJvdW5kYXJ5CiAgICAgICAgc3RyaW5nIGNhbiBiZSBleHBsaWNpdGx5IHNldCB3aXRoIHRoZSBgYG11bHRpcGFydF9ib3VuZGFyeWBgIHBhcmFtZXRlci4KICAgICAgICBOcgwAAAByFAAAAHpGcmVxdWVzdCBnb3QgdmFsdWVzIGZvciBib3RoICdmaWVsZHMnIGFuZCAnYm9keScsIGNhbiBvbmx5IHNwZWNpZnkgb25lLikB2ghib3VuZGFyeXohYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkegxDb250ZW50LVR5cGUpBnIMAAAA2glUeXBlRXJyb3JyBAAAAHIFAAAAciIAAAByGAAAACkLcg0AAAByEgAAAHITAAAAchoAAAByDAAAAHIVAAAAchYAAAByHwAAAHIjAAAAchQAAADaDGNvbnRlbnRfdHlwZXIOAAAAcg4AAAByDwAAAHIeAAAAYgAAAHMoAAAACC0GAQgCBAIIAQIBAgEE/wQEAgEEAQz/BgUCAQb+CAUMAQ4CCgEUAnoiUmVxdWVzdE1ldGhvZHMucmVxdWVzdF9lbmNvZGVfYm9keXILAAAAKQROTlROKQJOTikK2ghfX25hbWVfX9oKX19tb2R1bGVfX9oMX19xdWFsbmFtZV9f2gdfX2RvY19fchwAAAByEAAAAHIYAAAAciAAAAByHQAAAHIeAAAAcg4AAAByDgAAAHIOAAAAcg8AAAByBgAAAAkAAABzIAAAAAgABAEIHAoCAgcCAQIBAgEK+QoPChgCFAIBAgECAQ75TikJ2gpfX2Z1dHVyZV9fcgIAAADaCGZpbGVwb3N0cgQAAADaH3BhY2thZ2VzLnNpeC5tb3Zlcy51cmxsaWIucGFyc2VyBQAAANoHX19hbGxfX9oGb2JqZWN0cgYAAAByDgAAAHIOAAAAcg4AAAByDwAAANoIPG1vZHVsZT4BAAAAcwoAAAAMAAwCDAEGAhQD