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EAAAAHIWAAAAchQAAAApAXIQAAAAchUAAADaCHBhc3Nfb2JqHwAAAHMEAAAAAAYMA3IbAAAARnoSdC5DYWxsYWJsZVtbRl0sIEZdKQPaC29iamVjdF90eXBl2gZlbnN1cmVyEQAAAGMCAAAAAAAAAAMAAAAEAAAAAwAAAHMaAAAAdAB0AGQBnAKHAIcBZgJkAmQDhAx9AnwCUwApBGEuAwAAR2l2ZW4gYW4gb2JqZWN0IHR5cGUgdGhpcyBjcmVhdGVzIGEgZGVjb3JhdG9yIHRoYXQgd2lsbCB3b3JrCiAgICBzaW1pbGFyIHRvIDpmdW5jOmBwYXNzX29iamAgYnV0IGluc3RlYWQgb2YgcGFzc2luZyB0aGUgb2JqZWN0IG9mIHRoZQogICAgY3VycmVudCBjb250ZXh0LCBpdCB3aWxsIGZpbmQgdGhlIGlubmVybW9zdCBjb250ZXh0IG9mIHR5cGUKICAgIDpmdW5jOmBvYmplY3RfdHlwZWAuCgogICAgVGhpcyBnZW5lcmF0ZXMgYSBkZWNvcmF0b3IgdGhhdCB3b3JrcyByb3VnaGx5IGxpa2UgdGhpczo6CgogICAgICAgIGZyb20gZnVuY3Rvb2xzIGltcG9ydCB1cGRhdGVfd3JhcHBlcgoKICAgICAgICBkZWYgZGVjb3JhdG9yKGYpOgogICAgICAgICAgICBAcGFzc19jb250ZXh0CiAgICAgICAgICAgIGRlZiBuZXdfZnVuYyhjdHgsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICAgICAgICBvYmogPSBjdHguZmluZF9vYmplY3Qob2JqZWN0X3R5cGUpCiAgICAgICAgICAgICAgICByZXR1cm4gY3R4Lmludm9rZShmLCBvYmosICphcmdzLCAqKmt3YXJncykKICAgICAgICAgICAgcmV0dXJuIHVwZGF0ZV93cmFwcGVyKG5ld19mdW5jLCBmKQogICAgICAgIHJldHVybiBkZWNvcmF0b3IKCiAgICA6cGFyYW0gb2JqZWN0X3R5cGU6IHRoZSB0eXBlIG9mIHRoZSBvYmplY3QgdG8gcGFzcy4KICAgIDpwYXJhbSBlbnN1cmU6IGlmIHNldCB0byBgVHJ1ZWAsIGEgbmV3IG9iamVjdCB3aWxsIGJlIGNyZWF0ZWQg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bnVtYmVyIHRvIHNob3cuIElmIG5vdCBwcm92aWRlZCwgQ2xpY2sKICAgICAgICB3aWxsIHRyeSB0byBkZXRlY3QgaXQuCiAgICA6cGFyYW0gcGFyYW1fZGVjbHM6IE9uZSBvciBtb3JlIG9wdGlvbiBuYW1lcy4gRGVmYXVsdHMgdG8gdGhlIHNpbmdsZQogICAgICAgIHZhbHVlIGBgIi0tdmVyc2lvbiJgYC4KICAgIDpwYXJhbSBwYWNrYWdlX25hbWU6IFRoZSBwYWNrYWdlIG5hbWUgdG8gZGV0ZWN0IHRoZSB2ZXJzaW9uIGZyb20uIElmCiAgICAgICAgbm90IHByb3ZpZGVkLCBDbGljayB3aWxsIHRyeSB0byBkZXRlY3QgaXQuCiAgICA6cGFyYW0gcHJvZ19uYW1lOiBUaGUgbmFtZSBvZiB0aGUgQ0xJIHRvIHNob3cgaW4gdGhlIG1lc3NhZ2UuIElmIG5vdAogICAgICAgIHByb3ZpZGVkLCBpdCB3aWxsIGJlIGRldGVjdGVkIGZyb20gdGhlIGNvbW1hbmQuCiAgICA6cGFyYW0gbWVzc2FnZTogVGhlIG1lc3NhZ2UgdG8gc2hvdy4gVGhlIHZhbHVlcyBgYCUocHJvZylzYGAsCiAgICAgICAgYGAlKHBhY2thZ2Upc2BgLCBhbmQgYGAlKHZlcnNpb24pc2BgIGFyZSBhdmFpbGFibGUuIERlZmF1bHRzIHRvCiAgICAgICAgYGAiJShwcm9nKXMsIHZlcnNpb24gJSh2ZXJzaW9uKXMiYGAuCiAgICA6cGFyYW0ga3dhcmdzOiBFeHRyYSBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byA6ZnVuYzpgb3B0aW9uYC4KICAgIDpyYWlzZSBSdW50aW1lRXJyb3I6IGBgdmVyc2lvbmBgIGNvdWxkIG5vdCBiZSBkZXRlY3RlZC4KCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDguMAogICAgICAgIEFkZCB0aGUgYGBwYWNrYWdlX25hbWVgYCBwYXJhbWV0ZXIsIGFuZCB0aGUgYGAlKHBhY2thZ2Upc2BgCiAgICAgICAgdmFsdWUgZm9yIG1lc3NhZ2VzLgoKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogOC4wCiAgICAgICAgVXNl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