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GwAAAHIcAAAAchwAAAByHQAAAHIrAAAAPwAAAHMCAAAAAAx6GUJhc2VEaXN0cmlidXRpb24ubG9jYXRpb25jAQAAAAAAAAADAAAAAgAAAEMAAABzNgAAAHwAagB9AXwBch58AWoBgwByMnQCfAFqA4MBUwBuFHQEfABqBYMBfQJ8AnIyfABqBlMAZAFTACkCeslUaGUgcHJvamVjdCBsb2NhdGlvbiBmb3IgZWRpdGFibGUgZGlzdHJpYnV0aW9ucy4KCiAgICAgICAgVGhpcyBpcyB0aGUgZGlyZWN0b3J5IHdoZXJlIHB5cHJvamVjdC50b21sIG9yIHNldHVwLnB5IGlzIGxvY2F0ZWQuCiAgICAgICAgTm9uZSBpZiB0aGUgZGlzdHJpYnV0aW9uIGlzIG5vdCBpbnN0YWxsZWQgaW4gZWRpdGFibGUgbW9kZS4KICAgICAgICBOKQfaCmRpcmVjdF91cmxaEWlzX2xvY2FsX2VkaXRhYmxlchYAAADaA3VybHIVAAAAcikAAAByKwAAACkDchsAAAByLgAAAFoNZWdnX2xpbmtfcGF0aHIcAAAAchwAAAByHQAAANoZZWRpdGFibGVfcHJvamVjdF9sb2NhdGlvbk0AAABzEAAAAAAIBgEEAQgBDAQKAQQDBgF6KkJhc2VEaXN0cmlidXRpb24uZWRpdGFibGVfcHJvamVjdF9sb2NhdGlvbmMBAAAAAAAAAAEAAAABAAAAQwAAAHMKAAAAdACDAIIBZAFTACkCYScCAABMb2NhdGlvbiBvZiB0aGUgLltlZ2d8ZGlzdF0taW5mbyBkaXJlY3RvcnkuCgogICAgICAgIFNpbWlsYXJseSB0byBgYGxvY2F0aW9uYGAsIGEgc3RyaW5nIHZhbHVlIGlzIG5vdCBuZWNlc3NhcmlseSBhCiAgICAgICAgZmlsZXN5c3RlbSBwYXRoLiBgYE5vbmVgYCBtZWFucyB0aGUgZGlzdHJpYnV0aW9uIGlzIGNyZWF0ZWQgaW4tbWVtb3J5LgoKICAgICAgICBGb3IgYSBtb2Rlcm4gLmRpc3QtaW5mbyBpbnN0YWxsYXRpb24gb24gZGlzaywgdGhpcyBzaG91bGQgYmUgc29tZXRoaW5nCiAgICAgICAgbGlrZSBgYHtsb2NhdGlvbn0ve3Jhd19uYW1lfS17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