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IChlLmcgMi4wID4gMS4xKTsgYW5kIHdhcm4gd2hlbgogICAgaW5zdGFsbGluZyBhIHZlcnNpb24gb25seSBtaW5vciB2ZXJzaW9uIGFoZWFkIChlLmcgMS4yID4gMS4xKS4KCiAgICB2ZXJzaW9uOiBhIDItdHVwbGUgcmVwcmVzZW50aW5nIGEgV2hlZWwtVmVyc2lvbiAoTWFqb3IsIE1pbm9yKQogICAgbmFtZTogbmFtZSBvZiB3aGVlbCBvciBwYWNrYWdlIHRvIHJhaXNlIGV4Y2VwdGlvbiBhYm91dAoKICAgIDpyYWlzZXMgVW5zdXBwb3J0ZWRXaGVlbDogd2hlbiBhbiBpbmNvbXBhdGlibGUgV2hlZWwtVmVyc2lvbiBpcyBnaXZlbgogICAgcgEAAAB6Qnt9J3MgV2hlZWwtVmVyc2lvbiAoe30pIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhpcyB2ZXJzaW9uIG9mIHBpcHI4AAAAeipJbnN0YWxsaW5nIGZyb20gYSBuZXdlciBXaGVlbC1WZXJzaW9uICglcylOKQjaElZFUlNJT05fQ09NUEFUSUJMRXIIAAAAchAAAAByJgAAAHI7AAAAchEAAADaBmxvZ2dlctoHd2FybmluZykCchUAAAByCwAAAHIXAAAAchcAAAByGAAAAHISAAAAcwAAAHMWAAAAAAwQAQIBBAEQ/wL/BgQIAQQBAgEO/nISAAAAKRzaB19fZG9jX1/aB2xvZ2dpbmfaDWVtYWlsLm1lc3NhZ2VyAgAAANoMZW1haWwucGFyc2VycgMAAADaBnR5cGluZ3IEAAAA2gd6aXBmaWxlcgUAAAByBgAAANobcGlwLl92ZW5kb3IucGFja2FnaW5nLnV0aWxzcgcAAADaGHBpcC5faW50ZXJuYWwuZXhjZXB0aW9uc3IIAAAAcj8AAADaCWdldExvZ2dlctoIX19uYW1lX19yQAAAAHIRAAAAchkAAAByDQAAANoFYnl0ZXNyMAAAAHIOAAAAcjwAAAByDwAAAHISAAAAchcAAAByFwAAAHIXAAAAchgAAADaCDxtb2R1bGU+AQAAAHMeAAAABAMIAQwBDAEMARACDAIMAgQDCgMaEhIhEgkSExgQ