A/MNCjFc/FVjAAAAAAAAAAADAAAAQAAAAHNGAAAAZAAAWgAAZAEAZAIAbAEAbQIAWgIAAWQDAGUDAGYBAGQEAIQAAIMAAFlaBABkBQBlBQBmAQBkBgCEAACDAABZWgYAZAcAUygIAAAAc8gAAABQYXJzZXIgZW5naW5lIGZvciB0aGUgZ3JhbW1hciB0YWJsZXMgZ2VuZXJhdGVkIGJ5IHBnZW4uCgpUaGUgZ3JhbW1hciB0YWJsZSBtdXN0IGJlIGxvYWRlZCBmaXJzdC4KClNlZSBQYXJzZXIvcGFyc2VyLmMgaW4gdGhlIFB5dGhvbiBkaXN0cmlidXRpb24gZm9yIGFkZGl0aW9uYWwgaW5mbyBvbgpob3cgdGhpcyBwYXJzaW5nIGVuZ2luZSB3b3Jrcy4KCmkBAAAAKAEAAAB0BQAAAHRva2VudAoAAABQYXJzZUVycm9yYwAAAAAAAAAAAQAAAEIAAABzFwAAAGUAAFoBAGQAAFoCAGQBAIQAAFoDAFJTKAIAAABzKAAAAEV4Y2VwdGlvbiB0byBzaWduYWwgdGhlIHBhcnNlciBpcyBzdHVjay5jBQAAAAUAAAAHAAAAQwAAAHNIAAAAdAAAagEAfAAAZAEAfAEAfAIAfAMAfAQAZgQAFoMCAAF8AQB8AABfAgB8AgB8AABfAwB8AwB8AABfBAB8BAB8AABfBQBkAABTKAIAAABOcyEAAAAlczogdHlwZT0lciwgdmFsdWU9JXIsIGNvbnRleHQ9JXIoBgAAAHQJAAAARXhjZXB0aW9udAgAAABfX2luaXRfX3QDAAAAbXNndAQAAAB0eXBldAUAAAB2YWx1ZXQHAAAAY29udGV4dCgFAAAAdAQAAABzZWxmUgQAAABSBQAAAFIGAAAAUgcAAAAoAAAAACgAAAAAc1oAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2xpYjJ0bzMvcGdlbjIvcGFyc2UucHlSAwAAABMAAABzDAAAAAABDAEUAQkBCQEJASgEAAAAdAgAAABfX25hbWVfX3QKAAAAX19tb2R1bGVfX3QHAAAAX19kb2NfX1IDAAAAKAAAAAAoAAAAACgAAAAAc1oAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2xpYjJ0bzMvcGdlbjIvcGFyc2UucHlSAQAAABAAAABzBAAAAAYBBgJ0BgAAAFBhcnNlcmMAAAAAAAAAAAIAAABCAAAAc1MAAABlAABaAQBkAABaAgBkCABkAQCEAQBaBABkCABkAgCEAQBaBQBkAwCEAABaBgBkBACEAABaBwBkBQCEAABaCABkBgCEAABaCQBkBwCEAABaCgBSUygJAAAAczUEAABQYXJzZXIgZW5naW5lLgoKICAgIFRoZSBwcm9wZXIgdXNhZ2Ugc2VxdWVuY2UgaXM6CgogICAgcCA9IFBhcnNlcihncmFtbWFyLCBbY29udmVydGVyXSkgICMgY3JlYXRlIGluc3RhbmNlCiAgICBwLnNldHVwKFtzdGFydF0pICAgICAgICAgICAgICAgICAgIyBwcmVwYXJlIGZvciBwYXJzaW5nCiAgICA8Zm9yIGVhY2ggaW5wdXQgdG9rZW4+OgogICAgICAgIGlmIHAuYWRkdG9rZW4oLi4uKTogICAgICAgICAgICMgcGFyc2UgYSB0b2tlbjsgbWF5IHJhaXNlIFBhcnNlRXJyb3IKICAgICAgICAgICAgYnJlYWsKICAgIHJvb3QgPSBwLnJvb3Rub2RlICAgICAgICAgICAgICAgICAjIHJvb3Qgb2YgYWJzdHJhY3Qgc3ludGF4IHRyZWUKCiAgICBBIFBhcnNlciBpbnN0YW5jZSBtYXkgYmUgcmV1c2VkIGJ5IGNhbGxpbmcgc2V0dXAoKSByZXBlYXRlZGx5LgoKICAgIEEgUGFyc2VyIGluc3RhbmNlIGNvbnRhaW5zIHN0YXRlIHBlcnRhaW5pbmcgdG8gdGhlIGN1cnJlbnQgdG9rZW4KICAgIHNlcXVlbmNlLCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkIGNvbmN1cnJlbnRseSBieSBkaWZmZXJlbnQgdGhyZWFkcwogICAgdG8gcGFyc2Ugc2VwYXJhdGUgdG9rZW4gc2VxdWVuY2VzLgoKICAgIFNlZSBkcml2ZXIucHkgZm9yIGhvdyB0byBnZXQgaW5wdXQgdG9rZW5zIGJ5IHRva2VuaXppbmcgYSBmaWxlIG9yCiAgICBzdHJpbmcuCgogICAgUGFyc2luZyBpcyBjb21wbGV0ZSB3aGVuIGFkZHRva2VuKCkgcmV0dXJucyBUcnVlOyB0aGUgcm9vdCBvZiB0aGUKICAgIGFic3RyYWN0IHN5bnRheCB0cmVlIGNhbiB0aGVuIGJlIHJldHJpZXZlZCBmcm9tIHRoZSByb290bm9kZQogICAgaW5zdGFuY2UgdmFyaWFibGUuICBXaGVuIGEgc3ludGF4IGVycm9yIG9jY3VycywgYWRkdG9rZW4oKSByYWlzZXMKICAgIHRoZSBQYXJzZUVycm9yIGV4Y2VwdGlvbi4gIFRoZXJlIGlzIG5vIGVycm9yIHJlY292ZXJ5OyB0aGUgcGFyc2VyCiAgICBjYW5ub3QgYmUgdXNlZCBhZnRlciBhIHN5bnRheCBlcnJvciB3YXMgcmVwb3J0ZWQgKGJ1dCBpdCBjYW4gYmUKICAgIHJlaW5pdGlhbGl6ZWQgYnkgY2FsbGluZyBzZXR1cCgpKS4KCiAgICBjAwAAAAMAAAADAAAAQwAAAHMfAAAAfAEAfAAAXwAAfAIAcBUAZAEAhAAAfAAAXwEAZAIAUygDAAAAc9oEAABDb25zdHJ1Y3Rvci4KCiAgICAgICAgVGhlIGdyYW1tYXIgYXJndW1lbnQgaXMgYSBncmFtbWFyLkdyYW1tYXIgaW5zdGFuY2U7IHNlZSB0aGUKICAgICAgICBncmFtbWFyIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCiAgICAgICAgVGhlIHBhcnNlciBpcyBub3QgcmVhZHkgeWV0IGZvciBwYXJzaW5nOyB5b3UgbXVzdCBjYWxsIHRoZQogICAgICAgIHNldHVwKCkgbWV0aG9kIHRvIGdldCBpdCBzdGFydGVkLgoKICAgICAgICBUaGUgb3B0aW9uYWwgY29udmVydCBhcmd1bWVudCBpcyBhIGZ1bmN0aW9uIG1hcHBpbmcgY29uY3JldGUKICAgICAgICBzeW50YXggdHJlZSBub2RlcyB0byBhYnN0cmFjdCBzeW50YXggdHJlZSBub2Rlcy4gIElmIG5vdAogICAgICAgIGdpdmVuLCBubyBjb252ZXJzaW9uIGlzIGRvbmUgYW5kIHRoZSBzeW50YXggdHJlZSBwcm9kdWNlZCBpcwogICAgICAgIHRoZSBjb25jcmV0ZSBzeW50YXggdHJlZS4gIElmIGdpdmVuLCBpdCBtdXN0IGJlIGEgZnVuY3Rpb24gb2YKICAgICAgICB0d28gYXJndW1lbnRzLCB0aGUgZmlyc3QgYmVpbmcgdGhlIGdyYW1tYXIgKGEgZ3JhbW1hci5HcmFtbWFyCiAgICAgICAgaW5zdGFuY2UpLCBhbmQgdGhlIHNlY29uZCBiZWluZyB0aGUgY29uY3JldGUgc3ludGF4IHRyZWUgbm9kZQogICAgICAgIHRvIGJlIGNvbnZlcnRlZC4gIFRoZSBzeW50YXggdHJlZSBpcyBjb252ZXJ0ZWQgZnJvbSB0aGUgYm90dG9tCiAgICAgICAgdXAuCgogICAgICAgIEEgY29uY3JldGUgc3ludGF4IHRyZWUgbm9kZSBpcyBhICh0eXBlLCB2YWx1ZSwgY29udGV4dCwgbm9kZXMpCiAgICAgICAgdHVwbGUsIHdoZXJlIHR5cGUgaXMgdGhlIG5vZGUgdHlwZSAoYSB0b2tlbiBvciBzeW1ib2wgbnVtYmVyKSwKICAgICAgICB2YWx1ZSBpcyBOb25lIGZvciBzeW1ib2xzIGFuZCBhIHN0cmluZyBmb3IgdG9rZW5zLCBjb250ZXh0IGlzCiAgICAgICAgTm9uZSBvciBhbiBvcGFxdWUgdmFsdWUgdXNlZCBmb3IgZXJyb3IgcmVwb3J0aW5nICh0eXBpY2FsbHkgYQogICAgICAgIChsaW5lbm8sIG9mZnNldCkgcGFpciksIGFuZCBub2RlcyBpcyBhIGxpc3Qgb2YgY2hpbGRyZW4gZm9yCiAgICAgICAgc3ltYm9scywgYW5kIE5vbmUgZm9yIHRva2Vucy4KCiAgICAgICAgQW4gYWJzdHJhY3Qgc3ludGF4IHRyZWUgbm9kZSBtYXkgYmUgYW55dGhpbmc7IHRoaXMgaXMgZW50aXJlbHkKICAgICAgICB1cCB0byB0aGUgY29udmVydGVyIGZ1bmN0aW9uLgoKICAgICAgICBjAgAAAAIAAAABAAAAUwAAAHMEAAAAfAEAUygBAAAATigAAAAAKAIAAAB0BwAAAGdyYW1tYXJ0BAAAAG5vZGUoAAAAACgAAAAAc1oAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9z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AAAAUhUAAABSFwAAACgIAAAAUggAAAB0BgAAAHBvcGRmYXQIAAAAcG9wc3RhdGV0BwAAAHBvcG5vZGVSGAAAAFIkAAAAUiUAAABSDgAAACgAAAAAKAAAAABzWgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvbGliMnRvMy9wZ2VuMi9wYXJzZS5weVIgAAAAvwAAAHMQAAAAAAIYARUBDAEJARYBFAIJAU4oCwAAAFIJAAAAUgoAAABSCwAAAFIRAAAAUgMAAABSGgAAAFIwAAAAUhsAAABSHwAAAFIiAAAAUiAAAAAoAAAAACgAAAAAKAAAAABzWgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvbGliMnRvMy9wZ2VuMi9wYXJzZS5weVIMAAAAGwAAAHMQAAAABhwGAgwgDBgJMAkOCQkJB04oBwAAAFILAAAAdAAAAABSAAAAAFICAAAAUgEAAAB0BgAAAG9iamVjdFIMAAAAKAAAAAAoAAAAACgAAAAAc1oAAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2xpYjJ0bzMvcGdlbjIvcGFyc2UucHl0CAAAADxtb2R1bGU+CwAAAHMGAAAABgMQAhYL