3NAxHUEaM6RAG7rVDPL9L6DFZWkrqFtY98t · data · 2.7c767379.chunk.js?4?2?0
{
    "2.7c767379.chunk.js?4?2?0": "base64:d3JpdGU9ZnVuY3Rpb24oZSx0LHIsbil7aWYodm9pZCAwPT09dCluPSJ1dGY4IixyPXRoaXMubGVuZ3RoLHQ9MDtlbHNlIGlmKHZvaWQgMD09PXImJiJzdHJpbmciPT09dHlwZW9mIHQpbj10LHI9dGhpcy5sZW5ndGgsdD0wO2Vsc2V7aWYoIWlzRmluaXRlKHQpKXRocm93IG5ldyBFcnJvcigiQnVmZmVyLndyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldFssIGxlbmd0aF0pIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQiKTt0fD0wLGlzRmluaXRlKHIpPyhyfD0wLHZvaWQgMD09PW4mJihuPSJ1dGY4IikpOihuPXIscj12b2lkIDApfXZhciBpPXRoaXMubGVuZ3RoLXQ7aWYoKHZvaWQgMD09PXJ8fHI+aSkmJihyPWkpLGUubGVuZ3RoPjAmJihyPDB8fHQ8MCl8fHQ+dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkF0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzIik7bnx8KG49InV0ZjgiKTtmb3IodmFyIG89ITE7Oylzd2l0Y2gobil7Y2FzZSJoZXgiOnJldHVybiBtKHRoaXMsZSx0LHIpO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuIGIodGhpcyxlLHQscik7Y2FzZSJhc2NpaSI6cmV0dXJuIF8odGhpcyxlLHQscik7Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gUyh0aGlzLGUsdCxyKTtjYXNlImJhc2U2NCI6cmV0dXJuIEUodGhpcyxlLHQscik7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiB3KHRoaXMsZSx0LHIpO2RlZmF1bHQ6aWYobyl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK24pO249KCIiK24pLnRvTG93ZXJDYXNlKCksbz0hMH19LHUucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJCdWZmZXIiLGRhdGE6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyfHx0aGlzLDApfX07dmFyIEM9NDA5NjtmdW5jdGlvbiB4KGUsdCxyKXt2YXIgbj0iIjtyPU1hdGgubWluKGUubGVuZ3RoLHIpO2Zvcih2YXIgaT10O2k8cjsrK2kpbis9U3RyaW5nLmZyb21DaGFyQ29kZSgxMjcmZVtpXSk7cmV0dXJuIG59ZnVuY3Rpb24gSShlLHQscil7dmFyIG49IiI7cj1NYXRoLm1pbihlLmxlbmd0aCxyKTtmb3IodmFyIGk9dDtpPHI7KytpKW4rPVN0cmluZy5mcm9tQ2hhckNvZGUoZVtpXSk7cmV0dXJuIG59ZnVuY3Rpb24gayhlLHQscil7dmFyIG49ZS5sZW5ndGg7KCF0fHx0PDApJiYodD0wKSwoIXJ8fHI8MHx8cj5uKSYmKHI9bik7Zm9yKHZhciBpPSIiLG89dDtvPHI7KytvKWkrPVUoZVtvXSk7cmV0dXJuIGl9ZnVuY3Rpb24gTyhlLHQscil7Zm9yKHZhciBuPWUuc2xpY2UodCxyKSxpPSIiLG89MDtvPG4ubGVuZ3RoO28rPTIpaSs9U3RyaW5nLmZyb21DaGFyQ29kZShuW29dKzI1NipuW28rMV0pO3JldHVybiBpfWZ1bmN0aW9uIE4oZSx0LHIpe2lmKGUlMSE9PTB8fGU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib2Zmc2V0IGlzIG5vdCB1aW50Iik7aWYoZSt0PnIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgiKX1mdW5jdGlvbiBQKGUsdCxyLG4saSxvKXtpZighdS5pc0J1ZmZlcihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCciYnVmZmVyIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIGluc3RhbmNlJyk7aWYodD5pfHx0PG8pdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpO2lmKHIrbj5lLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gUihlLHQscixuKXt0PDAmJih0PTY1NTM1K3QrMSk7Zm9yKHZhciBpPTAsbz1NYXRoLm1pbihlLmxlbmd0aC1yLDIpO2k8bzsrK2kpZVtyK2ldPSh0JjI1NTw8OCoobj9pOjEtaSkpPj4+OCoobj9pOjEtaSl9ZnVuY3Rpb24gQihlLHQscixuKXt0PDAmJih0PTQyOTQ5NjcyOTUrdCsxKTtmb3IodmFyIGk9MCxvPU1hdGgubWluKGUubGVuZ3RoLXIsNCk7aTxvOysraSllW3IraV09dD4+PjgqKG4/aTozLWkpJjI1NX1mdW5jdGlvbiBNKGUsdCxyLG4saSxvKXtpZihyK24+ZS5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpO2lmKHI8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gTChlLHQscixuLG8pe3JldHVybiBvfHxNKGUsMCxyLDQpLGkud3JpdGUoZSx0LHIsbiwyMyw0KSxyKzR9ZnVuY3Rpb24gRChlLHQscixuLG8pe3JldHVybiBvfHxNKGUsMCxyLDgpLGkud3JpdGUoZSx0LHIsbiw1Miw4KSxyKzh9dS5wcm90b3R5cGUuc2xpY2U9ZnVuY3Rpb24oZSx0KXt2YXIgcixuPXRoaXMubGVuZ3RoO2lmKChlPX5+ZSk8MD8oZSs9bik8MCYmKGU9MCk6ZT5uJiYoZT1uKSwodD12b2lkIDA9PT10P246fn50KTwwPyh0Kz1uKTwwJiYodD0wKTp0Pm4mJih0PW4pLHQ8ZSYmKHQ9ZSksdS5UWVBFRF9BUlJBWV9TVVBQT1JUKShyPXRoaXMuc3ViYXJyYXkoZSx0KSkuX19wcm90b19fPXUucHJvdG90eXBlO2Vsc2V7dmFyIGk9dC1lO3I9bmV3IHUoaSx2b2lkIDApO2Zvcih2YXIgbz0wO288aTsrK28pcltvXT10aGlzW28rZV19cmV0dXJuIHJ9LHUucHJvdG90eXBlLnJlYWRVSW50TEU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHxOKGUsdCx0aGlzLmxlbmd0aCk7Zm9yKHZhciBuPXRoaXNbZV0saT0xLG89MDsrK288dCYmKGkqPTI1Nik7KW4rPXRoaXNbZStvXSppO3JldHVybiBufSx1LnByb3RvdHlwZS5yZWFkVUludEJFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8TihlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW2UrLS10XSxpPTE7dD4wJiYoaSo9MjU2KTspbis9dGhpc1tlKy0tdF0qaTtyZXR1cm4gbn0sdS5wcm90b3R5cGUucmVhZFVJbnQ4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fE4oZSwxLHRoaXMubGVuZ3RoKSx0aGlzW2VdfSx1LnByb3RvdHlwZS5yZWFkVUludDE2TEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8TihlLDIsdGhpcy5sZW5ndGgpLHRoaXNbZV18dGhpc1tlKzFdPDw4fSx1LnByb3RvdHlwZS5yZWFkVUludDE2QkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8TihlLDIsdGhpcy5sZW5ndGgpLHRoaXNbZV08PDh8dGhpc1tlKzFdfSx1LnByb3RvdHlwZS5yZWFkVUludDMyTEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8TihlLDQsdGhpcy5sZW5ndGgpLCh0aGlzW2VdfHRoaXNbZSsxXTw8OHx0aGlzW2UrMl08PDE2KSsxNjc3NzIxNip0aGlzW2UrM119LHUucHJvdG90eXBlLnJlYWRVSW50MzJCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxOKGUsNCx0aGlzLmxlbmd0aCksMTY3NzcyMTYqdGhpc1tlXSsodGhpc1tlKzFdPDwxNnx0aGlzW2UrMl08PDh8dGhpc1tlKzNdKX0sdS5wcm90b3R5cGUucmVhZEludExFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8TihlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW2VdLGk9MSxvPTA7KytvPHQmJihpKj0yNTYpOyluKz10aGlzW2Urb10qaTtyZXR1cm4gbj49KGkqPTEyOCkmJihuLT1NYXRoLnBvdygyLDgqdCkpLG59LHUucHJvdG90eXBlLnJlYWRJbnRCRT1mdW5jdGlvbihlLHQscil7ZXw9MCx0fD0wLHJ8fE4oZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dCxpPTEsbz10aGlzW2UrLS1uXTtuPjAmJihpKj0yNTYpOylvKz10aGlzW2UrLS1uXSppO3JldHVybiBvPj0oaSo9MTI4KSYmKG8tPU1hdGgucG93KDIsOCp0KSksb30sdS5wcm90b3R5cGUucmVhZEludDg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8TihlLDEsdGhpcy5sZW5ndGgpLDEyOCZ0aGlzW2VdPy0xKigyNTUtdGhpc1tlXSsxKTp0aGlzW2VdfSx1LnByb3RvdHlwZS5yZWFkSW50MTZMRT1mdW5jdGlvbihlLHQpe3R8fE4oZSwyLHRoaXMubGVuZ3RoKTt2YXIgcj10aGlzW2VdfHRoaXNbZSsxXTw8ODtyZXR1cm4gMzI3Njgmcj80Mjk0OTAxNzYwfHI6cn0sdS5wcm90b3R5cGUucmVhZEludDE2QkU9ZnVuY3Rpb24oZSx0KXt0fHxOKGUsMix0aGlzLmxlbmd0aCk7dmFyIHI9dGhpc1tlKzFdfHRoaXNbZV08PDg7cmV0dXJuIDMyNzY4JnI/NDI5NDkwMTc2MHxyOnJ9LHUucHJvdG90eXBlLnJlYWRJbnQzMkxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fE4oZSw0LHRoaXMubGVuZ3RoKSx0aGlzW2VdfHRoaXNbZSsxXTw8OHx0aGlzW2UrMl08PDE2fHRoaXNbZSszXTw8MjR9LHUucHJvdG90eXBlLnJlYWRJbnQzMkJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fE4oZSw0LHRoaXMubGVuZ3RoKSx0aGlzW2VdPDwyNHx0aGlzW2UrMV08PDE2fHRoaXNbZSsyXTw8OHx0aGlzW2UrM119LHUucHJvdG90eXBlLnJlYWRGbG9hdExFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fE4oZSw0LHRoaXMubGVuZ3RoKSxpLnJlYWQodGhpcyxlLCEwLDIzLDQpfSx1LnByb3RvdHlwZS5yZWFkRmxvYXRCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxOKGUsNCx0aGlzLmxlbmd0aCksaS5yZWFkKHRoaXMsZSwhMSwyMyw0KX0sdS5wcm90b3R5cGUucmVhZERvdWJsZUxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fE4oZSw4LHRoaXMubGVuZ3RoKSxpLnJlYWQodGhpcyxlLCEwLDUyLDgpfSx1LnByb3RvdHlwZS5yZWFkRG91YmxlQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8TihlLDgsdGhpcy5sZW5ndGgpLGkucmVhZCh0aGlzLGUsITEsNTIsOCl9LHUucHJvdG90eXBlLndyaXRlVUludExFPWZ1bmN0aW9uKGUsdCxyLG4peyhlPStlLHR8PTAscnw9MCxuKXx8UCh0aGlzLGUsdCxyLE1hdGgucG93KDIsOCpyKS0xLDApO3ZhciBpPTEsbz0wO2Zvcih0aGlzW3RdPTI1NSZlOysrbzxyJiYoaSo9MjU2KTspdGhpc1t0K29dPWUvaSYyNTU7cmV0dXJuIHQrcn0sdS5wcm90b3R5cGUud3JpdGVVSW50QkU9ZnVuY3Rpb24oZSx0LHIsbil7KGU9K2UsdHw9MCxyfD0wLG4pfHxQKHRoaXMsZSx0LHIsTWF0aC5wb3coMiw4KnIpLTEsMCk7dmFyIGk9ci0xLG89MTtmb3IodGhpc1t0K2ldPTI1NSZlOy0taT49MCYmKG8qPTI1Nik7KXRoaXNbdCtpXT1lL28mMjU1O3JldHVybiB0K3J9LHUucHJvdG90eXBlLndyaXRlVUludDg9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8UCh0aGlzLGUsdCwxLDI1NSwwKSx1LlRZUEVEX0FSUkFZX1NVUFBPUlR8fChlPU1hdGguZmxvb3IoZSkpLHRoaXNbdF09MjU1JmUsdCsxfSx1LnByb3RvdHlwZS53cml0ZVVJbnQxNkxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fFAodGhpcyxlLHQsMiw2NTUzNSwwKSx1LlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44KTpSKHRoaXMsZSx0LCEwKSx0KzJ9LHUucHJvdG90eXBlLndyaXRlVUludDE2QkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8UCh0aGlzLGUsdCwyLDY1NTM1LDApLHUuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+OCx0aGlzW3QrMV09MjU1JmUpOlIodGhpcyxlLHQsITEpLHQrMn0sdS5wcm90b3R5cGUud3JpdGVVSW50MzJMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxQKHRoaXMsZSx0LDQsNDI5NDk2NzI5NSwwKSx1LlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdCszXT1lPj4+MjQsdGhpc1t0KzJdPWU+Pj4xNix0aGlzW3QrMV09ZT4+PjgsdGhpc1t0XT0yNTUmZSk6Qih0aGlzLGUsdCwhMCksdCs0fSx1LnByb3RvdHlwZS53cml0ZVVJbnQzMkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fFAodGhpcyxlLHQsNCw0Mjk0OTY3Mjk1LDApLHUuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+MjQsdGhpc1t0KzFdPWU+Pj4xNix0aGlzW3QrMl09ZT4+PjgsdGhpc1t0KzNdPTI1NSZlKTpCKHRoaXMsZSx0LCExKSx0KzR9LHUucHJvdG90eXBlLndyaXRlSW50TEU9ZnVuY3Rpb24oZSx0LHIsbil7aWYoZT0rZSx0fD0wLCFuKXt2YXIgaT1NYXRoLnBvdygyLDgqci0xKTtQKHRoaXMsZSx0LHIsaS0xLC1pKX12YXIgbz0wLGE9MSxzPTA7Zm9yKHRoaXNbdF09MjU1JmU7KytvPHImJihhKj0yNTYpOyllPDAmJjA9PT1zJiYwIT09dGhpc1t0K28tMV0mJihzPTEpLHRoaXNbdCtvXT0oZS9hPj4wKS1zJjI1NTtyZXR1cm4gdCtyfSx1LnByb3RvdHlwZS53cml0ZUludEJFPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKGU9K2UsdHw9MCwhbil7dmFyIGk9TWF0aC5wb3coMiw4KnItMSk7UCh0aGlzLGUsdCxyLGktMSwtaSl9dmFyIG89ci0xLGE9MSxzPTA7Zm9yKHRoaXNbdCtvXT0yNTUmZTstLW8+PTAmJihhKj0yNTYpOyllPDAmJjA9PT1zJiYwIT09dGhpc1t0K28rMV0mJihzPTEpLHRoaXNbdCtvXT0oZS9hPj4wKS1zJjI1NTtyZXR1cm4gdCtyfSx1LnByb3RvdHlwZS53cml0ZUludDg9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8UCh0aGlzLGUsdCwxLDEyNywtMTI4KSx1LlRZUEVEX0FSUkFZX1NVUFBPUlR8fChlPU1hdGguZmxvb3IoZSkpLGU8MCYmKGU9MjU1K2UrMSksdGhpc1t0XT0yNTUmZSx0KzF9LHUucHJvdG90eXBlLndyaXRlSW50MTZMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxQKHRoaXMsZSx0LDIsMzI3NjcsLTMyNzY4KSx1LlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44KTpSKHRoaXMsZSx0LCEwKSx0KzJ9LHUucHJvdG90eXBlLndyaXRlSW50MTZCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxQKHRoaXMsZSx0LDIsMzI3NjcsLTMyNzY4KSx1LlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjgsdGhpc1t0KzFdPTI1NSZlKTpSKHRoaXMsZSx0LCExKSx0KzJ9LHUucHJvdG90eXBlLndyaXRlSW50MzJMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxQKHRoaXMsZSx0LDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksdS5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPTI1NSZlLHRoaXNbdCsxXT1lPj4+OCx0aGlzW3QrMl09ZT4+PjE2LHRoaXNbdCszXT1lPj4+MjQpOkIodGhpcyxlLHQsITApLHQrNH0sdS5wcm90b3R5cGUud3JpdGVJbnQzMkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fFAodGhpcyxlLHQsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSxlPDAmJihlPTQyOTQ5NjcyOTUrZSsxKSx1LlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjI0LHRoaXNbdCsxXT1lPj4+MTYsdGhpc1t0KzJdPWU+Pj44LHRoaXNbdCszXT0yNTUmZSk6Qih0aGlzLGUsdCwhMSksdCs0fSx1LnByb3RvdHlwZS53cml0ZUZsb2F0TEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBMKHRoaXMsZSx0LCEwLHIpfSx1LnByb3RvdHlwZS53cml0ZUZsb2F0QkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBMKHRoaXMsZSx0LCExLHIpfSx1LnByb3RvdHlwZS53cml0ZURvdWJsZUxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gRCh0aGlzLGUsdCwhMCxyKX0sdS5wcm90b3R5cGUud3JpdGVEb3VibGVCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIEQodGhpcyxlLHQsITEscil9LHUucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oZSx0LHIsbil7aWYocnx8KHI9MCksbnx8MD09PW58fChuPXRoaXMubGVuZ3RoKSx0Pj1lLmxlbmd0aCYmKHQ9ZS5sZW5ndGgpLHR8fCh0PTApLG4+MCYmbjxyJiYobj1yKSxuPT09cilyZXR1cm4gMDtpZigwPT09ZS5sZW5ndGh8fDA9PT10aGlzLmxlbmd0aClyZXR1cm4gMDtpZih0PDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoInRhcmdldFN0YXJ0IG91dCBvZiBib3VuZHMiKTtpZihyPDB8fHI+PXRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJzb3VyY2VTdGFydCBvdXQgb2YgYm91bmRzIik7aWYobjwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJzb3VyY2VFbmQgb3V0IG9mIGJvdW5kcyIpO24+dGhpcy5sZW5ndGgmJihuPXRoaXMubGVuZ3RoKSxlLmxlbmd0aC10PG4tciYmKG49ZS5sZW5ndGgtdCtyKTt2YXIgaSxvPW4tcjtpZih0aGlzPT09ZSYmcjx0JiZ0PG4pZm9yKGk9by0xO2k+PTA7LS1pKWVbaSt0XT10aGlzW2krcl07ZWxzZSBpZihvPDFlM3x8IXUuVFlQRURfQVJSQVlfU1VQUE9SVClmb3IoaT0wO2k8bzsrK2kpZVtpK3RdPXRoaXNbaStyXTtlbHNlIFVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKGUsdGhpcy5zdWJhcnJheShyLHIrbyksdCk7cmV0dXJuIG99LHUucHJvdG90eXBlLmZpbGw9ZnVuY3Rpb24oZSx0LHIsbil7aWYoInN0cmluZyI9PT10eXBlb2YgZSl7aWYoInN0cmluZyI9PT10eXBlb2YgdD8obj10LHQ9MCxyPXRoaXMubGVuZ3RoKToic3RyaW5nIj09PXR5cGVvZiByJiYobj1yLHI9dGhpcy5sZW5ndGgpLDE9PT1lLmxlbmd0aCl7dmFyIGk9ZS5jaGFyQ29kZUF0KDApO2k8MjU2JiYoZT1pKX1pZih2b2lkIDAhPT1uJiYic3RyaW5nIiE9PXR5cGVvZiBuKXRocm93IG5ldyBUeXBlRXJyb3IoImVuY29kaW5nIG11c3QgYmUgYSBzdHJpbmciKTtpZigic3RyaW5nIj09PXR5cGVvZiBuJiYhdS5pc0VuY29kaW5nKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrbil9ZWxzZSJudW1iZXIiPT09dHlwZW9mIGUmJihlJj0yNTUpO2lmKHQ8MHx8dGhpcy5sZW5ndGg8dHx8dGhpcy5sZW5ndGg8cil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiT3V0IG9mIHJhbmdlIGluZGV4Iik7aWYocjw9dClyZXR1cm4gdGhpczt2YXIgbztpZih0Pj4+PTAscj12b2lkIDA9PT1yP3RoaXMubGVuZ3RoOnI+Pj4wLGV8fChlPTApLCJudW1iZXIiPT09dHlwZW9mIGUpZm9yKG89dDtvPHI7KytvKXRoaXNbb109ZTtlbHNle3ZhciBhPXUuaXNCdWZmZXIoZSk/ZTpGKG5ldyB1KGUsbikudG9TdHJpbmcoKSkscz1hLmxlbmd0aDtmb3Iobz0wO288ci10Oysrbyl0aGlzW28rdF09YVtvJXNdfXJldHVybiB0aGlzfTt2YXIgaj0vW14rXC8wLTlBLVphLXotX10vZztmdW5jdGlvbiBVKGUpe3JldHVybiBlPDE2PyIwIitlLnRvU3RyaW5nKDE2KTplLnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBGKGUsdCl7dmFyIHI7dD10fHwxLzA7Zm9yKHZhciBuPWUubGVuZ3RoLGk9bnVsbCxvPVtdLGE9MDthPG47KythKXtpZigocj1lLmNoYXJDb2RlQXQoYSkpPjU1Mjk1JiZyPDU3MzQ0KXtpZighaSl7aWYocj41NjMxOSl7KHQtPTMpPi0xJiZvLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWlmKGErMT09PW4peyh0LT0zKT4tMSYmby5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1pPXI7Y29udGludWV9aWYocjw1NjMyMCl7KHQtPTMpPi0xJiZvLnB1c2goMjM5LDE5MSwxODkpLGk9cjtjb250aW51ZX1yPTY1NTM2KyhpLTU1Mjk2PDwxMHxyLTU2MzIwKX1lbHNlIGkmJih0LT0zKT4tMSYmby5wdXNoKDIzOSwxOTEsMTg5KTtpZihpPW51bGwscjwxMjgpe2lmKCh0LT0xKTwwKWJyZWFrO28ucHVzaChyKX1lbHNlIGlmKHI8MjA0OCl7aWYoKHQtPTIpPDApYnJlYWs7by5wdXNoKHI+PjZ8MTkyLDYzJnJ8MTI4KX1lbHNlIGlmKHI8NjU1MzYpe2lmKCh0LT0zKTwwKWJyZWFrO28ucHVzaChyPj4xMnwyMjQscj4+NiY2M3wxMjgsNjMmcnwxMjgpfWVsc2V7aWYoIShyPDExMTQxMTIpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2RlIHBvaW50Iik7aWYoKHQtPTQpPDApYnJlYWs7by5wdXNoKHI+PjE4fDI0MCxyPj4xMiY2M3wxMjgscj4+NiY2M3wxMjgsNjMmcnwxMjgpfX1yZXR1cm4gb31mdW5jdGlvbiBWKGUpe3JldHVybiBuLnRvQnl0ZUFycmF5KGZ1bmN0aW9uKGUpe2lmKChlPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRyaW0/ZS50cmltKCk6ZS5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIil9KGUpLnJlcGxhY2UoaiwiIikpLmxlbmd0aDwyKXJldHVybiIiO2Zvcig7ZS5sZW5ndGglNCE9PTA7KWUrPSI9IjtyZXR1cm4gZX0oZSkpfWZ1bmN0aW9uIHEoZSx0LHIsbil7Zm9yKHZhciBpPTA7aTxuJiYhKGkrcj49dC5sZW5ndGh8fGk+PWUubGVuZ3RoKTsrK2kpdFtpK3JdPWVbaV07cmV0dXJuIGl9fSkuY2FsbCh0aGlzLHIoMzQpKX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49cigxMzgpLGk9cigyMzEpLG89cig2NDcpLGE9cig2NDgpO3QuanNvbj1hO3ZhciBzPXIoMTM5KTt0LnNlcmlhbGl6ZVByaW1pdGl2ZXM9czt2YXIgdT1yKDIzMCk7dC5wYXJzZVByaW1pdGl2ZXM9dTt2YXIgYz1yKDEzOCk7dC5zY2hlbWFzPWM7dmFyIGY9e3NlcmlhbGl6ZXJGcm9tU2NoZW1hOmkuc2VyaWFsaXplckZyb21TY2hlbWEsc2VyaWFsaXplVHg6aS5zZXJpYWxpemVUeCxzZXJpYWxpemVPcmRlcjppLnNlcmlhbGl6ZU9yZGVyLHBhcnNlckZyb21TY2hlbWE6by5wYXJzZXJGcm9tU2NoZW1hLHBhcnNlVHg6by5wYXJzZVR4LHBhcnNlT3JkZXI6by5wYXJzZU9yZGVyfTtmdW5jdGlvbiBsKGUsdCxyLG4pe3ZhciBhPWkuc2VyaWFsaXplckZyb21TY2hlbWEodCxuKSxzPW8ucGFyc2VyRnJvbVNjaGVtYSh0LHIpKGEoZSkpLnZhbHVlO3JldHVybiBPYmplY3QuYXNzaWduKHt9LGUscyl9dC5iaW5hcnk9Zix0LmNvbnZlcnRMb25nRmllbGRzPWwsdC5jb252ZXJ0VHhMb25nRmllbGRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1lLnR5cGUsbz1lLnZlcnNpb247cmV0dXJuIGwoZSxuLmdldFRyYW5zYWN0aW9uU2NoZW1hKGksbyksdCxyKX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG47T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpPXIoMzA1KSxvPXIoMzA3KTt0LnNlZWRXb3Jkc0xpc3Q9by5zZWVkV29yZHNMaXN0O3ZhciBhPXIoMzYwKTt0LkNoYWlkSWQ9YS5DaGFpZElkO3ZhciBzPXIoMzU5KTt0LlNlZWQ9cy5TZWVkO3ZhciB1PXIoMjI4KTt0LmlzUHJpdmF0ZUtleT11LmlzUHJpdmF0ZUtleSx0LmlzUHVibGljS2V5PXUuaXNQdWJsaWNLZXk7dmFyIGM9cigzMDUpO3QuY3J5cHRvPWMuY3J5cHRvLGZ1bmN0aW9uKGUpe2Zvcih2YXIgciBpbiBlKXQuaGFzT3duUHJvcGVydHkocil8fCh0W3JdPWVbcl0pfShyKDEzNykpLHQuc2lnbkJ5dGVzPShuPWkuY3J5cHRvKHtvdXRwdXQ6IkJhc2U1OCJ9KSkuc2lnbkJ5dGVzLHQua2V5UGFpcj1uLmtleVBhaXIsdC5wdWJsaWNLZXk9bi5wdWJsaWNLZXksdC5wcml2YXRlS2V5PW4ucHJpdmF0ZUtleSx0LmFkZHJlc3M9bi5hZGRyZXNzLHQuYmxha2UyYj1uLmJsYWtlMmIsdC5rZWNjYWs9bi5rZWNjYWssdC5zaGEyNTY9bi5zaGEyNTYsdC5zaGFyZWRLZXk9bi5zaGFyZWRLZXksdC5zZWVkV2l0aE5vbmNlPW4uc2VlZFdpdGhOb25jZSx0LmJhc2U2NEVuY29kZT1uLmJhc2U2NEVuY29kZSx0LmJhc2U2NERlY29kZT1uLmJhc2U2NERlY29kZSx0LmJhc2U1OEVuY29kZT1uLmJhc2U1OEVuY29kZSx0LmJhc2U1OERlY29kZT1uLmJhc2U1OERlY29kZSx0LmJhc2UxNkVuY29kZT1uLmJhc2UxNkVuY29kZSx0LmJhc2UxNkRlY29kZT1uLmJhc2UxNkRlY29kZSx0LnN0cmluZ1RvQnl0ZXM9bi5zdHJpbmdUb0J5dGVzLHQuYnl0ZXNUb1N0cmluZz1uLmJ5dGVzVG9TdHJpbmcsdC5yYW5kb209bi5yYW5kb20sdC5yYW5kb21TZWVkPW4ucmFuZG9tU2VlZCx0LnJhbmRvbUJ5dGVzPW4ucmFuZG9tQnl0ZXMsdC52ZXJpZnlTaWduYXR1cmU9bi52ZXJpZnlTaWduYXR1cmUsdC52ZXJpZnlQdWJsaWNLZXk9bi52ZXJpZnlQdWJsaWNLZXksdC52ZXJpZnlBZGRyZXNzPW4udmVyaWZ5QWRkcmVzcyx0Lm1lc3NhZ2VEZWNyeXB0PW4ubWVzc2FnZURlY3J5cHQsdC5tZXNzYWdlRW5jcnlwdD1uLm1lc3NhZ2VFbmNyeXB0LHQuZW5jcnlwdFNlZWQ9bi5lbmNyeXB0U2VlZCx0LmRlY3J5cHRTZWVkPW4uZGVjcnlwdFNlZWQsdC5yc2FLZXlQYWlyPW4ucnNhS2V5UGFpcix0LnJzYUtleVBhaXJTeW5jPW4ucnNhS2V5UGFpclN5bmMsdC5yc2FTaWduPW4ucnNhU2lnbix0LnJzYVZlcmlmeT1uLnJzYVZlcmlmeSx0LmFlc0RlY3J5cHQ9bi5hZXNEZWNyeXB0LHQuYWVzRW5jcnlwdD1uLmFlc0VuY3J5cHQsdC5zcGxpdD1uLnNwbGl0LHQuY29uY2F0PW4uY29uY2F0fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNzgpKCJ3a3MiKSxpPXIoOTQpLG89cigxNykuU3ltYm9sLGE9ImZ1bmN0aW9uIj09dHlwZW9mIG87KGUuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbltlXXx8KG5bZV09YSYmb1tlXXx8KGE/bzppKSgiU3ltYm9sLiIrZSkpfSkuc3RvcmU9bn0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNTQyKSxpPXIoNTQzKSxvPXIoNTQ0KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbihlKXx8aShlLHQpfHxvKCl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig2MCksaT1NYXRoLm1pbjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGU+MD9pKG4oZSksOTAwNzE5OTI1NDc0MDk5MSk6MH19LGZ1bmN0aW9uKGUsdCxyKXsoZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0KXtpZighZSl0aHJvdyBuZXcgRXJyb3IodHx8IkFzc2VydGlvbiBmYWlsZWQiKX1mdW5jdGlvbiBpKGUsdCl7ZS5zdXBlcl89dDt2YXIgcj1mdW5jdGlvbigpe307ci5wcm90b3R5cGU9dC5wcm90b3R5cGUsZS5wcm90b3R5cGU9bmV3IHIsZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZX1mdW5jdGlvbiBvKGUsdCxyKXtpZihvLmlzQk4oZSkpcmV0dXJuIGU7dGhpcy5uZWdhdGl2ZT0wLHRoaXMud29yZHM9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMucmVkPW51bGwsbnVsbCE9PWUmJigibGUiIT09dCYmImJlIiE9PXR8fChyPXQsdD0xMCksdGhpcy5faW5pdChlfHwwLHR8fDEwLHJ8fCJiZSIpKX12YXIgYTsib2JqZWN0Ij09PXR5cGVvZiBlP2UuZXhwb3J0cz1vOnQuQk49byxvLkJOPW8sby53b3JkU2l6ZT0yNjt0cnl7YT1yKDU4NSkuQnVmZmVyfWNhdGNoKFQpe31mdW5jdGlvbiBzKGUsdCxyKXtmb3IodmFyIG49MCxpPU1hdGgubWluKGUubGVuZ3RoLHIpLG89dDtvPGk7bysrKXt2YXIgYT1lLmNoYXJDb2RlQXQobyktNDg7bjw8PTQsbnw9YT49NDkmJmE8PTU0P2EtNDkrMTA6YT49MTcmJmE8PTIyP2EtMTcrMTA6MTUmYX1yZXR1cm4gbn1mdW5jdGlvbiB1KGUsdCxyLG4pe2Zvcih2YXIgaT0wLG89TWF0aC5taW4oZS5sZW5ndGgsciksYT10O2E8bzthKyspe3ZhciBzPWUuY2hhckNvZGVBdChhKS00ODtpKj1uLGkrPXM+PTQ5P3MtNDkrMTA6cz49MTc/cy0xNysxMDpzfXJldHVybiBpfW8uaXNCTj1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIG98fG51bGwhPT1lJiYib2JqZWN0Ij09PXR5cGVvZiBlJiZlLmNvbnN0cnVjdG9yLndvcmRTaXplPT09by53b3JkU2l6ZSYmQXJyYXkuaXNBcnJheShlLndvcmRzKX0sby5tYXg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jbXAodCk+MD9lOnR9LG8ubWluPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY21wKHQpPDA/ZTp0fSxvLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbihlLHQscil7aWYoIm51bWJlciI9PT10eXBlb2YgZSlyZXR1cm4gdGhpcy5faW5pdE51bWJlcihlLHQscik7aWYoIm9iamVjdCI9PT10eXBlb2YgZSlyZXR1cm4gdGhpcy5faW5pdEFycmF5KGUsdCxyKTsiaGV4Ij09PXQmJih0PTE2KSxuKHQ9PT0oMHx0KSYmdD49MiYmdDw9MzYpO3ZhciBpPTA7Ii0iPT09KGU9ZS50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCIiKSlbMF0mJmkrKywxNj09PXQ/dGhpcy5fcGFyc2VIZXgoZSxpKTp0aGlzLl9wYXJzZUJhc2UoZSx0LGkpLCItIj09PWVbMF0mJih0aGlzLm5lZ2F0aXZlPTEpLHRoaXMuc3RyaXAoKSwibGUiPT09ciYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLHQscil9LG8ucHJvdG90eXBlLl9pbml0TnVtYmVyPWZ1bmN0aW9uKGUsdCxyKXtlPDAmJih0aGlzLm5lZ2F0aXZlPTEsZT0tZSksZTw2NzEwODg2ND8odGhpcy53b3Jkcz1bNjcxMDg4NjMmZV0sdGhpcy5sZW5ndGg9MSk6ZTw0NTAzNTk5NjI3MzcwNDk2Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZlLGUvNjcxMDg4NjQmNjcxMDg4NjNdLHRoaXMubGVuZ3RoPTIpOihuKGU8OTAwNzE5OTI1NDc0MDk5MiksdGhpcy53b3Jkcz1bNjcxMDg4NjMmZSxlLzY3MTA4ODY0JjY3MTA4ODYzLDFdLHRoaXMubGVuZ3RoPTMpLCJsZSI9PT1yJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksdCxyKX0sby5wcm90b3R5cGUuX2luaXRBcnJheT1mdW5jdGlvbihlLHQscil7aWYobigibnVtYmVyIj09PXR5cGVvZiBlLmxlbmd0aCksZS5sZW5ndGg8PTApcmV0dXJuIHRoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTEsdGhpczt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoZS5sZW5ndGgvMyksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgaT0wO2k8dGhpcy5sZW5ndGg7aSsrKXRoaXMud29yZHNbaV09MDt2YXIgbyxhLHM9MDtpZigiYmUiPT09cilmb3IoaT1lLmxlbmd0aC0xLG89MDtpPj0wO2ktPTMpYT1lW2ldfGVbaS0xXTw8OHxlW2ktMl08PDE2LHRoaXMud29yZHNbb118PWE8PHMmNjcxMDg4NjMsdGhpcy53b3Jkc1tvKzFdPWE+Pj4yNi1zJjY3MTA4ODYzLChzKz0yNCk+PTI2JiYocy09MjYsbysrKTtlbHNlIGlmKCJsZSI9PT1yKWZvcihpPTAsbz0wO2k8ZS5sZW5ndGg7aSs9MylhPWVbaV18ZVtpKzFdPDw4fGVbaSsyXTw8MTYsdGhpcy53b3Jkc1tvXXw9YTw8cyY2NzEwODg2Myx0aGlzLndvcmRzW28rMV09YT4+PjI2LXMmNjcxMDg4NjMsKHMrPTI0KT49MjYmJihzLT0yNixvKyspO3JldHVybiB0aGlzLnN0cmlwKCl9LG8ucHJvdG90eXBlLl9wYXJzZUhleD1mdW5jdGlvbihlLHQpe3RoaXMubGVuZ3RoPU1hdGguY2VpbCgoZS5sZW5ndGgtdCkvNiksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgcj0wO3I8dGhpcy5sZW5ndGg7cisrKXRoaXMud29yZHNbcl09MDt2YXIgbixpLG89MDtmb3Iocj1lLmxlbmd0aC02LG49MDtyPj10O3ItPTYpaT1zKGUscixyKzYpLHRoaXMud29yZHNbbl18PWk8PG8mNjcxMDg4NjMsdGhpcy53b3Jkc1tuKzFdfD1pPj4+MjYtbyY0MTk0MzAzLChvKz0yNCk+PTI2JiYoby09MjYsbisrKTtyKzYhPT10JiYoaT1zKGUsdCxyKzYpLHRoaXMud29yZHNbbl18PWk8PG8mNjcxMDg4NjMsdGhpcy53b3Jkc1tuKzFdfD1pPj4+MjYtbyY0MTk0MzAzKSx0aGlzLnN0cmlwKCl9LG8ucHJvdG90eXBlLl9wYXJzZUJhc2U9ZnVuY3Rpb24oZSx0LHIpe3RoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTE7Zm9yKHZhciBuPTAsaT0xO2k8PTY3MTA4ODYzO2kqPXQpbisrO24tLSxpPWkvdHwwO2Zvcih2YXIgbz1lLmxlbmd0aC1yLGE9byVuLHM9TWF0aC5taW4obyxvLWEpK3IsYz0wLGY9cjtmPHM7Zis9biljPXUoZSxmLGYrbix0KSx0aGlzLmltdWxuKGkpLHRoaXMud29yZHNbMF0rYzw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1jOnRoaXMuX2lhZGRuKGMpO2lmKDAhPT1hKXt2YXIgbD0xO2ZvcihjPXUoZSxmLGUubGVuZ3RoLHQpLGY9MDtmPGE7ZisrKWwqPXQ7dGhpcy5pbXVsbihsKSx0aGlzLndvcmRzWzBdK2M8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9Yzp0aGlzLl9pYWRkbihjKX19LG8ucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oZSl7ZS53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgdD0wO3Q8dGhpcy5sZW5ndGg7dCsrKWUud29yZHNbdF09dGhpcy53b3Jkc1t0XTtlLmxlbmd0aD10aGlzLmxlbmd0aCxlLm5lZ2F0aXZlPXRoaXMubmVnYXRpdmUsZS5yZWQ9dGhpcy5yZWR9LG8ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFyIGU9bmV3IG8obnVsbCk7cmV0dXJuIHRoaXMuY29weShlKSxlfSxvLnByb3RvdHlwZS5fZXhwYW5kPWZ1bmN0aW9uKGUpe2Zvcig7dGhpcy5sZW5ndGg8ZTspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO3JldHVybiB0aGlzfSxvLnByb3RvdHlwZS5zdHJpcD1mdW5jdGlvbigpe2Zvcig7dGhpcy5sZW5ndGg+MSYmMD09PXRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV07KXRoaXMubGVuZ3RoLS07cmV0dXJuIHRoaXMuX25vcm1TaWduKCl9LG8ucHJvdG90eXBlLl9ub3JtU2lnbj1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdJiYodGhpcy5uZWdhdGl2ZT0wKSx0aGlzfSxvLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMucmVkPyI8Qk4tUjogIjoiPEJOOiAiKSt0aGlzLnRvU3RyaW5nKDE2KSsiPiJ9O3ZhciBjPVsiIiwiMCIsIjAwIiwiMDAwIiwiMDAwMCIsIjAwMDAwIiwiMDAwMDAwIiwiMDAwMDAwMCIsIjAwMDAwMDAwIiwiMDAwMDAwMDAwIiwiMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCJdLGY9WzAsMCwyNSwxNiwxMiwxMSwxMCw5LDgsOCw3LDcsNyw3LDYsNiw2LDYsNiw2LDYsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNV0sbD1bMCwwLDMzNTU0NDMyLDQzMDQ2NzIxLDE2Nzc3MjE2LDQ4ODI4MTI1LDYwNDY2MTc2LDQwMzUzNjA3LDE2Nzc3MjE2LDQzMDQ2NzIxLDFlNywxOTQ4NzE3MSwzNTgzMTgwOCw2Mjc0ODUxNyw3NTI5NTM2LDExMzkwNjI1LDE2Nzc3MjE2LDI0MTM3NTY5LDM0MDEyMjI0LDQ3MDQ1ODgxLDY0ZTYsNDA4NDEwMSw1MTUzNjMyLDY0MzYzNDMsNzk2MjYyNCw5NzY1NjI1LDExODgxMzc2LDE0MzQ4OTA3LDE3MjEwMzY4LDIwNTExMTQ5LDI0M2U1LDI4NjI5MTUxLDMzNTU0NDMyLDM5MTM1MzkzLDQ1NDM1NDI0LDUyNTIxODc1LDYwNDY2MTc2XTtmdW5jdGlvbiBoKGUsdCxyKXtyLm5lZ2F0aXZlPXQubmVnYXRpdmVeZS5uZWdhdGl2ZTt2YXIgbj1lLmxlbmd0aCt0Lmxlbmd0aHwwO3IubGVuZ3RoPW4sbj1uLTF8MDt2YXIgaT0wfGUud29yZHNbMF0sbz0wfHQud29yZHNbMF0sYT1pKm8scz02NzEwODg2MyZhLHU9YS82NzEwODg2NHwwO3Iud29yZHNbMF09cztmb3IodmFyIGM9MTtjPG47YysrKXtmb3IodmFyIGY9dT4+PjI2LGw9NjcxMDg4NjMmdSxoPU1hdGgubWluKGMsdC5sZW5ndGgtMSkscD1NYXRoLm1heCgwLGMtZS5sZW5ndGgrMSk7cDw9aDtwKyspe3ZhciBkPWMtcHwwO2YrPShhPShpPTB8ZS53b3Jkc1tkXSkqKG89MHx0LndvcmRzW3BdKStsKS82NzEwODg2NHwwLGw9NjcxMDg4NjMmYX1yLndvcmRzW2NdPTB8bCx1PTB8Zn1yZXR1cm4gMCE9PXU/ci53b3Jkc1tjXT0wfHU6ci5sZW5ndGgtLSxyLnN0cmlwKCl9by5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oZSx0KXt2YXIgcjtpZih0PTB8dHx8MSwxNj09PShlPWV8fDEwKXx8ImhleCI9PT1lKXtyPSIiO2Zvcih2YXIgaT0wLG89MCxhPTA7YTx0aGlzLmxlbmd0aDthKyspe3ZhciBzPXRoaXMud29yZHNbYV0sdT0oMTY3NzcyMTUmKHM8PGl8bykpLnRvU3RyaW5nKDE2KTtyPTAhPT0obz1zPj4+MjQtaSYxNjc3NzIxNSl8fGEhPT10aGlzLmxlbmd0aC0xP2NbNi11Lmxlbmd0aF0rdStyOnUrciwoaSs9Mik+PTI2JiYoaS09MjYsYS0tKX1mb3IoMCE9PW8mJihyPW8udG9TdHJpbmcoMTYpK3IpO3IubGVuZ3RoJXQhPT0wOylyPSIwIityO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKHI9Ii0iK3IpLHJ9aWYoZT09PSgwfGUpJiZlPj0yJiZlPD0zNil7dmFyIGg9ZltlXSxwPWxbZV07cj0iIjt2YXIgZD10aGlzLmNsb25lKCk7Zm9yKGQubmVnYXRpdmU9MDshZC5pc1plcm8oKTspe3ZhciB5PWQubW9kbihwKS50b1N0cmluZyhlKTtyPShkPWQuaWRpdm4ocCkpLmlzWmVybygpP3krcjpjW2gteS5sZW5ndGhdK3krcn1mb3IodGhpcy5pc1plcm8oKSYmKHI9IjAiK3IpO3IubGVuZ3RoJXQhPT0wOylyPSIwIityO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKHI9Ii0iK3IpLHJ9bighMSwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNiIpfSxvLnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciBlPXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD9lKz02NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/ZSs9NDUwMzU5OTYyNzM3MDQ5Nis2NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJm4oITEsIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZlPy1lOmV9LG8ucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2KX0sby5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbigidW5kZWZpbmVkIiE9PXR5cGVvZiBhKSx0aGlzLnRvQXJyYXlMaWtlKGEsZSx0KX0sby5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LGUsdCl9LG8ucHJvdG90eXBlLnRvQXJyYXlMaWtlPWZ1bmN0aW9uKGUsdCxyKXt2YXIgaT10aGlzLmJ5dGVMZW5ndGgoKSxvPXJ8fE1hdGgubWF4KDEsaSk7bihpPD1vLCJieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoIiksbihvPjAsIlJlcXVlc3RlZCBhcnJheSBsZW5ndGggPD0gMCIpLHRoaXMuc3RyaXAoKTt2YXIgYSxzLHU9ImxlIj09PXQsYz1uZXcgZShvKSxmPXRoaXMuY2xvbmUoKTtpZih1KXtmb3Iocz0wOyFmLmlzWmVybygpO3MrKylhPWYuYW5kbG4oMjU1KSxmLml1c2hybig4KSxjW3NdPWE7Zm9yKDtzPG87cysrKWNbc109MH1lbHNle2ZvcihzPTA7czxvLWk7cysrKWNbc109MDtmb3Iocz0wOyFmLmlzWmVybygpO3MrKylhPWYuYW5kbG4oMjU1KSxmLml1c2hybig4KSxjW28tcy0xXT1hfXJldHVybiBjfSxNYXRoLmNsejMyP28ucHJvdG90eXBlLl9jb3VudEJpdHM9ZnVuY3Rpb24oZSl7cmV0dXJuIDMyLU1hdGguY2x6MzIoZSl9Om8ucHJvdG90eXBlLl9jb3VudEJpdHM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZSxyPTA7cmV0dXJuIHQ+PTQwOTYmJihyKz0xMyx0Pj4+PTEzKSx0Pj02NCYmKHIrPTcsdD4+Pj03KSx0Pj04JiYocis9NCx0Pj4+PTQpLHQ+PTImJihyKz0yLHQ+Pj49Mikscit0fSxvLnByb3RvdHlwZS5femVyb0JpdHM9ZnVuY3Rpb24oZSl7aWYoMD09PWUpcmV0dXJuIDI2O3ZhciB0PWUscj0wO3JldHVybiAwPT09KDgxOTEmdCkmJihyKz0xMyx0Pj4+PTEzKSwwPT09KDEyNyZ0KSYmKHIrPTcsdD4+Pj03KSwwPT09KDE1JnQpJiYocis9NCx0Pj4+PTQpLDA9PT0oMyZ0KSYmKHIrPTIsdD4+Pj0yKSwwPT09KDEmdCkmJnIrKyxyfSxvLnByb3RvdHlwZS5iaXRMZW5ndGg9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdLHQ9dGhpcy5fY291bnRCaXRzKGUpO3JldHVybiAyNioodGhpcy5sZW5ndGgtMSkrdH0sby5wcm90b3R5cGUuemVyb0JpdHM9ZnVuY3Rpb24oKXtpZih0aGlzLmlzWmVybygpKXJldHVybiAwO2Zvcih2YXIgZT0wLHQ9MDt0PHRoaXMubGVuZ3RoO3QrKyl7dmFyIHI9dGhpcy5femVyb0JpdHModGhpcy53b3Jkc1t0XSk7aWYoZSs9ciwyNiE9PXIpYnJlYWt9cmV0dXJuIGV9LG8ucHJvdG90eXBlLmJ5dGVMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5jZWlsKA=="
}

Changelog:

{
    "2019.12.27 16:44": "base64:d3JpdGU9ZnVuY3Rpb24oZSx0LHIsbil7aWYodm9pZCAwPT09dCluPSJ1dGY4IixyPXRoaXMubGVuZ3RoLHQ9MDtlbHNlIGlmKHZvaWQgMD09PXImJiJzdHJpbmciPT09dHlwZW9mIHQpbj10LHI9dGhpcy5sZW5ndGgsdD0wO2Vsc2V7aWYoIWlzRmluaXRlKHQpKXRocm93IG5ldyBFcnJvcigiQnVmZmVyLndyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldFssIGxlbmd0aF0pIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQiKTt0fD0wLGlzRmluaXRlKHIpPyhyfD0wLHZvaWQgMD09PW4mJihuPSJ1dGY4IikpOihuPXIscj12b2lkIDApfXZhciBpPXRoaXMubGVuZ3RoLXQ7aWYoKHZvaWQgMD09PXJ8fHI+aSkmJihyPWkpLGUubGVuZ3RoPjAmJihyPDB8fHQ8MCl8fHQ+dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkF0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzIik7bnx8KG49InV0ZjgiKTtmb3IodmFyIG89ITE7Oylzd2l0Y2gobil7Y2FzZSJoZXgiOnJldHVybiBtKHRoaXMsZSx0LHIpO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuIGIodGhpcyxlLHQscik7Y2FzZSJhc2NpaSI6cmV0dXJuIF8odGhpcyxlLHQscik7Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gUyh0aGlzLGUsdCxyKTtjYXNlImJhc2U2NCI6cmV0dXJuIEUodGhpcyxlLHQscik7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiB3KHRoaXMsZSx0LHIpO2RlZmF1bHQ6aWYobyl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK24pO249KCIiK24pLnRvTG93ZXJDYXNlKCksbz0hMH19LHUucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJCdWZmZXIiLGRhdGE6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyfHx0aGlzLDApfX07dmFyIEM9NDA5NjtmdW5jdGlvbiB4KGUsdCxyKXt2YXIgbj0iIjtyPU1hdGgubWluKGUubGVuZ3RoLHIpO2Zvcih2YXIgaT10O2k8cjsrK2kpbis9U3RyaW5nLmZyb21DaGFyQ29kZSgxMjcmZVtpXSk7cmV0dXJuIG59ZnVuY3Rpb24gSShlLHQscil7dmFyIG49IiI7cj1NYXRoLm1pbihlLmxlbmd0aCxyKTtmb3IodmFyIGk9dDtpPHI7KytpKW4rPVN0cmluZy5mcm9tQ2hhckNvZGUoZVtpXSk7cmV0dXJuIG59ZnVuY3Rpb24gayhlLHQscil7dmFyIG49ZS5sZW5ndGg7KCF0fHx0PDApJiYodD0wKSwoIXJ8fHI8MHx8cj5uKSYmKHI9bik7Zm9yKHZhciBpPSIiLG89dDtvPHI7KytvKWkrPVUoZVtvXSk7cmV0dXJuIGl9ZnVuY3Rpb24gTyhlLHQscil7Zm9yKHZhciBuPWUuc2xpY2UodCxyKSxpPSIiLG89MDtvPG4ubGVuZ3RoO28rPTIpaSs9U3RyaW5nLmZyb21DaGFyQ29kZShuW29dKzI1NipuW28rMV0pO3JldHVybiBpfWZ1bmN0aW9uIE4oZSx0LHIpe2lmKGUlMSE9PTB8fGU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib2Zmc2V0IGlzIG5vdCB1aW50Iik7aWYoZSt0PnIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgiKX1mdW5jdGlvbiBQKGUsdCxyLG4saSxvKXtpZighdS5pc0J1ZmZlcihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCciYnVmZmVyIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIGluc3RhbmNlJyk7aWYodD5pfHx0PG8pdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpO2lmKHIrbj5lLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gUihlLHQscixuKXt0PDAmJih0PTY1NTM1K3QrMSk7Zm9yKHZhciBpPTAsbz1NYXRoLm1pbihlLmxlbmd0aC1yLDIpO2k8bzsrK2kpZVtyK2ldPSh0JjI1NTw8OCoobj9pOjEtaSkpPj4+OCoobj9pOjEtaSl9ZnVuY3Rpb24gQihlLHQscixuKXt0PDAmJih0PTQyOTQ5NjcyOTUrdCsxKTtmb3IodmFyIGk9MCxvPU1hdGgubWluKGUubGVuZ3RoLXIsNCk7aTxvOysraSllW3IraV09dD4+PjgqKG4/aTozLWkpJjI1NX1mdW5jdGlvbiBNKGUsdCxyLG4saSxvKXtpZihyK24+ZS5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpO2lmKHI8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gTChlLHQscixuLG8pe3JldHVybiBvfHxNKGUsMCxyLDQpLGkud3JpdGUoZSx0LHIsbiwyMyw0KSxyKzR9ZnVuY3Rpb24gRChlLHQscixuLG8pe3JldHVybiBvfHxNKGUsMCxyLDgpLGkud3JpdGUoZSx0LHIsbiw1Miw4KSxyKzh9dS5wcm90b3R5cGUuc2xpY2U9ZnVuY3Rpb24oZSx0KXt2YXIgcixuPXRoaXMubGVuZ3RoO2lmKChlPX5+ZSk8MD8oZSs9bik8MCYmKGU9MCk6ZT5uJiYoZT1uKSwodD12b2lkIDA9PT10P246fn50KTwwPyh0Kz1uKTwwJiYodD0wKTp0Pm4mJih0PW4pLHQ8ZSYmKHQ9ZSksdS5UWVBFRF9BUlJBWV9TVVBQT1JUKShyPXRoaXMuc3ViYXJyYXkoZSx0KSkuX19wcm90b19fPXUucHJvdG90eXBlO2Vsc2V7dmFyIGk9dC1lO3I9bmV3IHUoaSx2b2lkIDApO2Zvcih2YXIgbz0wO288aTsrK28pcltvXT10aGlzW28rZV19cmV0dXJuIHJ9LHUucHJvdG90eXBlLnJlYWRVSW50TEU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHxOKGUsdCx0aGlzLmxlbmd0aCk7Zm9yKHZhciBuPXRoaXNbZV0saT0xLG89MDsrK288dCYmKGkqPTI1Nik7KW4rPXRoaXNbZStvXSppO3JldHVybiBufSx1LnByb3RvdHlwZS5yZWFkVUludEJFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8TihlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW2UrLS10XSxpPTE7dD4wJiYoaSo9MjU2KTspbis9dGhpc1tlKy0tdF0qaTtyZXR1cm4gbn0sdS5wcm90b3R5cGUucmVhZFVJbnQ4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fE4oZSwxLHRoaXMubGVuZ3RoKSx0aGlzW2VdfSx1LnByb3RvdHlwZS5yZWFkVUludDE2TEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8TihlLDIsdGhpcy5sZW5ndGgpLHRoaXNbZV18dGhpc1tlKzFdPDw4fSx1LnByb3RvdHlwZS5yZWFkVUludDE2QkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8TihlLDIsdGhpcy5sZW5ndGgpLHRoaXNbZV08PDh8dGhpc1tlKzFdfSx1LnByb3RvdHlwZS5yZWFkVUludDMyTEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8TihlLDQsdGhpcy5sZW5ndGgpLCh0aGlzW2VdfHRoaXNbZSsxXTw8OHx0aGlzW2UrMl08PDE2KSsxNjc3NzIxNip0aGlzW2UrM119LHUucHJvdG90eXBlLnJlYWRVSW50MzJCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxOKGUsNCx0aGlzLmxlbmd0aCksMTY3NzcyMTYqdGhpc1tlXSsodGhpc1tlKzFdPDwxNnx0aGlzW2UrMl08PDh8dGhpc1tlKzNdKX0sdS5wcm90b3R5cGUucmVhZEludExFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8TihlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW2VdLGk9MSxvPTA7KytvPHQmJihpKj0yNTYpOyluKz10aGlzW2Urb10qaTtyZXR1cm4gbj49KGkqPTEyOCkmJihuLT1NYXRoLnBvdygyLDgqdCkpLG59LHUucHJvdG90eXBlLnJlYWRJbnRCRT1mdW5jdGlvbihlLHQscil7ZXw9MCx0fD0wLHJ8fE4oZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dCxpPTEsbz10aGlzW2UrLS1uXTtuPjAmJihpKj0yNTYpOylvKz10aGlzW2UrLS1uXSppO3JldHVybiBvPj0oaSo9MTI4KSYmKG8tPU1hdGgucG93KDIsOCp0KSksb30sdS5wcm90b3R5cGUucmVhZEludDg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8TihlLDEsdGhpcy5sZW5ndGgpLDEyOCZ0aGlzW2VdPy0xKigyNTUtdGhpc1tlXSsxKTp0aGlzW2VdfSx1LnByb3RvdHlwZS5yZWFkSW50MTZMRT1mdW5jdGlvbihlLHQpe3R8fE4oZSwyLHRoaXMubGVuZ3RoKTt2YXIgcj10aGlzW2VdfHRoaXNbZSsxXTw8ODtyZXR1cm4gMzI3Njgmcj80Mjk0OTAxNzYwfHI6cn0sdS5wcm90b3R5cGUucmVhZEludDE2QkU9ZnVuY3Rpb24oZSx0KXt0fHxOKGUsMix0aGlzLmxlbmd0aCk7dmFyIHI9dGhpc1tlKzFdfHRoaXNbZV08PDg7cmV0dXJuIDMyNzY4JnI/NDI5NDkwMTc2MHxyOnJ9LHUucHJvdG90eXBlLnJlYWRJbnQzMkxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fE4oZSw0LHRoaXMubGVuZ3RoKSx0aGlzW2VdfHRoaXNbZSsxXTw8OHx0aGlzW2UrMl08PDE2fHRoaXNbZSszXTw8MjR9LHUucHJvdG90eXBlLnJlYWRJbnQzMkJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fE4oZSw0LHRoaXMubGVuZ3RoKSx0aGlzW2VdPDwyNHx0aGlzW2UrMV08PDE2fHRoaXNbZSsyXTw8OHx0aGlzW2UrM119LHUucHJvdG90eXBlLnJlYWRGbG9hdExFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fE4oZSw0LHRoaXMubGVuZ3RoKSxpLnJlYWQodGhpcyxlLCEwLDIzLDQpfSx1LnByb3RvdHlwZS5yZWFkRmxvYXRCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxOKGUsNCx0aGlzLmxlbmd0aCksaS5yZWFkKHRoaXMsZSwhMSwyMyw0KX0sdS5wcm90b3R5cGUucmVhZERvdWJsZUxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fE4oZSw4LHRoaXMubGVuZ3RoKSxpLnJlYWQodGhpcyxlLCEwLDUyLDgpfSx1LnByb3RvdHlwZS5yZWFkRG91YmxlQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8TihlLDgsdGhpcy5sZW5ndGgpLGkucmVhZCh0aGlzLGUsITEsNTIsOCl9LHUucHJvdG90eXBlLndyaXRlVUludExFPWZ1bmN0aW9uKGUsdCxyLG4peyhlPStlLHR8PTAscnw9MCxuKXx8UCh0aGlzLGUsdCxyLE1hdGgucG93KDIsOCpyKS0xLDApO3ZhciBpPTEsbz0wO2Zvcih0aGlzW3RdPTI1NSZlOysrbzxyJiYoaSo9MjU2KTspdGhpc1t0K29dPWUvaSYyNTU7cmV0dXJuIHQrcn0sdS5wcm90b3R5cGUud3JpdGVVSW50QkU9ZnVuY3Rpb24oZSx0LHIsbil7KGU9K2UsdHw9MCxyfD0wLG4pfHxQKHRoaXMsZSx0LHIsTWF0aC5wb3coMiw4KnIpLTEsMCk7dmFyIGk9ci0xLG89MTtmb3IodGhpc1t0K2ldPTI1NSZlOy0taT49MCYmKG8qPTI1Nik7KXRoaXNbdCtpXT1lL28mMjU1O3JldHVybiB0K3J9LHUucHJvdG90eXBlLndyaXRlVUludDg9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8UCh0aGlzLGUsdCwxLDI1NSwwKSx1LlRZUEVEX0FSUkFZX1NVUFBPUlR8fChlPU1hdGguZmxvb3IoZSkpLHRoaXNbdF09MjU1JmUsdCsxfSx1LnByb3RvdHlwZS53cml0ZVVJbnQxNkxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fFAodGhpcyxlLHQsMiw2NTUzNSwwKSx1LlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44KTpSKHRoaXMsZSx0LCEwKSx0KzJ9LHUucHJvdG90eXBlLndyaXRlVUludDE2QkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8UCh0aGlzLGUsdCwyLDY1NTM1LDApLHUuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+OCx0aGlzW3QrMV09MjU1JmUpOlIodGhpcyxlLHQsITEpLHQrMn0sdS5wcm90b3R5cGUud3JpdGVVSW50MzJMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxQKHRoaXMsZSx0LDQsNDI5NDk2NzI5NSwwKSx1LlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdCszXT1lPj4+MjQsdGhpc1t0KzJdPWU+Pj4xNix0aGlzW3QrMV09ZT4+PjgsdGhpc1t0XT0yNTUmZSk6Qih0aGlzLGUsdCwhMCksdCs0fSx1LnByb3RvdHlwZS53cml0ZVVJbnQzMkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fFAodGhpcyxlLHQsNCw0Mjk0OTY3Mjk1LDApLHUuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+MjQsdGhpc1t0KzFdPWU+Pj4xNix0aGlzW3QrMl09ZT4+PjgsdGhpc1t0KzNdPTI1NSZlKTpCKHRoaXMsZSx0LCExKSx0KzR9LHUucHJvdG90eXBlLndyaXRlSW50TEU9ZnVuY3Rpb24oZSx0LHIsbil7aWYoZT0rZSx0fD0wLCFuKXt2YXIgaT1NYXRoLnBvdygyLDgqci0xKTtQKHRoaXMsZSx0LHIsaS0xLC1pKX12YXIgbz0wLGE9MSxzPTA7Zm9yKHRoaXNbdF09MjU1JmU7KytvPHImJihhKj0yNTYpOyllPDAmJjA9PT1zJiYwIT09dGhpc1t0K28tMV0mJihzPTEpLHRoaXNbdCtvXT0oZS9hPj4wKS1zJjI1NTtyZXR1cm4gdCtyfSx1LnByb3RvdHlwZS53cml0ZUludEJFPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKGU9K2UsdHw9MCwhbil7dmFyIGk9TWF0aC5wb3coMiw4KnItMSk7UCh0aGlzLGUsdCxyLGktMSwtaSl9dmFyIG89ci0xLGE9MSxzPTA7Zm9yKHRoaXNbdCtvXT0yNTUmZTstLW8+PTAmJihhKj0yNTYpOyllPDAmJjA9PT1zJiYwIT09dGhpc1t0K28rMV0mJihzPTEpLHRoaXNbdCtvXT0oZS9hPj4wKS1zJjI1NTtyZXR1cm4gdCtyfSx1LnByb3RvdHlwZS53cml0ZUludDg9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8UCh0aGlzLGUsdCwxLDEyNywtMTI4KSx1LlRZUEVEX0FSUkFZX1NVUFBPUlR8fChlPU1hdGguZmxvb3IoZSkpLGU8MCYmKGU9MjU1K2UrMSksdGhpc1t0XT0yNTUmZSx0KzF9LHUucHJvdG90eXBlLndyaXRlSW50MTZMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxQKHRoaXMsZSx0LDIsMzI3NjcsLTMyNzY4KSx1LlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44KTpSKHRoaXMsZSx0LCEwKSx0KzJ9LHUucHJvdG90eXBlLndyaXRlSW50MTZCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxQKHRoaXMsZSx0LDIsMzI3NjcsLTMyNzY4KSx1LlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjgsdGhpc1t0KzFdPTI1NSZlKTpSKHRoaXMsZSx0LCExKSx0KzJ9LHUucHJvdG90eXBlLndyaXRlSW50MzJMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxQKHRoaXMsZSx0LDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksdS5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPTI1NSZlLHRoaXNbdCsxXT1lPj4+OCx0aGlzW3QrMl09ZT4+PjE2LHRoaXNbdCszXT1lPj4+MjQpOkIodGhpcyxlLHQsITApLHQrNH0sdS5wcm90b3R5cGUud3JpdGVJbnQzMkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fFAodGhpcyxlLHQsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSxlPDAmJihlPTQyOTQ5NjcyOTUrZSsxKSx1LlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjI0LHRoaXNbdCsxXT1lPj4+MTYsdGhpc1t0KzJdPWU+Pj44LHRoaXNbdCszXT0yNTUmZSk6Qih0aGlzLGUsdCwhMSksdCs0fSx1LnByb3RvdHlwZS53cml0ZUZsb2F0TEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBMKHRoaXMsZSx0LCEwLHIpfSx1LnByb3RvdHlwZS53cml0ZUZsb2F0QkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBMKHRoaXMsZSx0LCExLHIpfSx1LnByb3RvdHlwZS53cml0ZURvdWJsZUxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gRCh0aGlzLGUsdCwhMCxyKX0sdS5wcm90b3R5cGUud3JpdGVEb3VibGVCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIEQodGhpcyxlLHQsITEscil9LHUucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oZSx0LHIsbil7aWYocnx8KHI9MCksbnx8MD09PW58fChuPXRoaXMubGVuZ3RoKSx0Pj1lLmxlbmd0aCYmKHQ9ZS5sZW5ndGgpLHR8fCh0PTApLG4+MCYmbjxyJiYobj1yKSxuPT09cilyZXR1cm4gMDtpZigwPT09ZS5sZW5ndGh8fDA9PT10aGlzLmxlbmd0aClyZXR1cm4gMDtpZih0PDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoInRhcmdldFN0YXJ0IG91dCBvZiBib3VuZHMiKTtpZihyPDB8fHI+PXRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJzb3VyY2VTdGFydCBvdXQgb2YgYm91bmRzIik7aWYobjwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJzb3VyY2VFbmQgb3V0IG9mIGJvdW5kcyIpO24+dGhpcy5sZW5ndGgmJihuPXRoaXMubGVuZ3RoKSxlLmxlbmd0aC10PG4tciYmKG49ZS5sZW5ndGgtdCtyKTt2YXIgaSxvPW4tcjtpZih0aGlzPT09ZSYmcjx0JiZ0PG4pZm9yKGk9by0xO2k+PTA7LS1pKWVbaSt0XT10aGlzW2krcl07ZWxzZSBpZihvPDFlM3x8IXUuVFlQRURfQVJSQVlfU1VQUE9SVClmb3IoaT0wO2k8bzsrK2kpZVtpK3RdPXRoaXNbaStyXTtlbHNlIFVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKGUsdGhpcy5zdWJhcnJheShyLHIrbyksdCk7cmV0dXJuIG99LHUucHJvdG90eXBlLmZpbGw9ZnVuY3Rpb24oZSx0LHIsbil7aWYoInN0cmluZyI9PT10eXBlb2YgZSl7aWYoInN0cmluZyI9PT10eXBlb2YgdD8obj10LHQ9MCxyPXRoaXMubGVuZ3RoKToic3RyaW5nIj09PXR5cGVvZiByJiYobj1yLHI9dGhpcy5sZW5ndGgpLDE9PT1lLmxlbmd0aCl7dmFyIGk9ZS5jaGFyQ29kZUF0KDApO2k8MjU2JiYoZT1pKX1pZih2b2lkIDAhPT1uJiYic3RyaW5nIiE9PXR5cGVvZiBuKXRocm93IG5ldyBUeXBlRXJyb3IoImVuY29kaW5nIG11c3QgYmUgYSBzdHJpbmciKTtpZigic3RyaW5nIj09PXR5cGVvZiBuJiYhdS5pc0VuY29kaW5nKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrbil9ZWxzZSJudW1iZXIiPT09dHlwZW9mIGUmJihlJj0yNTUpO2lmKHQ8MHx8dGhpcy5sZW5ndGg8dHx8dGhpcy5sZW5ndGg8cil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiT3V0IG9mIHJhbmdlIGluZGV4Iik7aWYocjw9dClyZXR1cm4gdGhpczt2YXIgbztpZih0Pj4+PTAscj12b2lkIDA9PT1yP3RoaXMubGVuZ3RoOnI+Pj4wLGV8fChlPTApLCJudW1iZXIiPT09dHlwZW9mIGUpZm9yKG89dDtvPHI7KytvKXRoaXNbb109ZTtlbHNle3ZhciBhPXUuaXNCdWZmZXIoZSk/ZTpGKG5ldyB1KGUsbikudG9TdHJpbmcoKSkscz1hLmxlbmd0aDtmb3Iobz0wO288ci10Oysrbyl0aGlzW28rdF09YVtvJXNdfXJldHVybiB0aGlzfTt2YXIgaj0vW14rXC8wLTlBLVphLXotX10vZztmdW5jdGlvbiBVKGUpe3JldHVybiBlPDE2PyIwIitlLnRvU3RyaW5nKDE2KTplLnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBGKGUsdCl7dmFyIHI7dD10fHwxLzA7Zm9yKHZhciBuPWUubGVuZ3RoLGk9bnVsbCxvPVtdLGE9MDthPG47KythKXtpZigocj1lLmNoYXJDb2RlQXQoYSkpPjU1Mjk1JiZyPDU3MzQ0KXtpZighaSl7aWYocj41NjMxOSl7KHQtPTMpPi0xJiZvLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWlmKGErMT09PW4peyh0LT0zKT4tMSYmby5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1pPXI7Y29udGludWV9aWYocjw1NjMyMCl7KHQtPTMpPi0xJiZvLnB1c2goMjM5LDE5MSwxODkpLGk9cjtjb250aW51ZX1yPTY1NTM2KyhpLTU1Mjk2PDwxMHxyLTU2MzIwKX1lbHNlIGkmJih0LT0zKT4tMSYmby5wdXNoKDIzOSwxOTEsMTg5KTtpZihpPW51bGwscjwxMjgpe2lmKCh0LT0xKTwwKWJyZWFrO28ucHVzaChyKX1lbHNlIGlmKHI8MjA0OCl7aWYoKHQtPTIpPDApYnJlYWs7by5wdXNoKHI+PjZ8MTkyLDYzJnJ8MTI4KX1lbHNlIGlmKHI8NjU1MzYpe2lmKCh0LT0zKTwwKWJyZWFrO28ucHVzaChyPj4xMnwyMjQscj4+NiY2M3wxMjgsNjMmcnwxMjgpfWVsc2V7aWYoIShyPDExMTQxMTIpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2RlIHBvaW50Iik7aWYoKHQtPTQpPDApYnJlYWs7by5wdXNoKHI+PjE4fDI0MCxyPj4xMiY2M3wxMjgscj4+NiY2M3wxMjgsNjMmcnwxMjgpfX1yZXR1cm4gb31mdW5jdGlvbiBWKGUpe3JldHVybiBuLnRvQnl0ZUFycmF5KGZ1bmN0aW9uKGUpe2lmKChlPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRyaW0/ZS50cmltKCk6ZS5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIil9KGUpLnJlcGxhY2UoaiwiIikpLmxlbmd0aDwyKXJldHVybiIiO2Zvcig7ZS5sZW5ndGglNCE9PTA7KWUrPSI9IjtyZXR1cm4gZX0oZSkpfWZ1bmN0aW9uIHEoZSx0LHIsbil7Zm9yKHZhciBpPTA7aTxuJiYhKGkrcj49dC5sZW5ndGh8fGk+PWUubGVuZ3RoKTsrK2kpdFtpK3JdPWVbaV07cmV0dXJuIGl9fSkuY2FsbCh0aGlzLHIoMzQpKX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49cigxMzgpLGk9cigyMzEpLG89cig2NDcpLGE9cig2NDgpO3QuanNvbj1hO3ZhciBzPXIoMTM5KTt0LnNlcmlhbGl6ZVByaW1pdGl2ZXM9czt2YXIgdT1yKDIzMCk7dC5wYXJzZVByaW1pdGl2ZXM9dTt2YXIgYz1yKDEzOCk7dC5zY2hlbWFzPWM7dmFyIGY9e3NlcmlhbGl6ZXJGcm9tU2NoZW1hOmkuc2VyaWFsaXplckZyb21TY2hlbWEsc2VyaWFsaXplVHg6aS5zZXJpYWxpemVUeCxzZXJpYWxpemVPcmRlcjppLnNlcmlhbGl6ZU9yZGVyLHBhcnNlckZyb21TY2hlbWE6by5wYXJzZXJGcm9tU2NoZW1hLHBhcnNlVHg6by5wYXJzZVR4LHBhcnNlT3JkZXI6by5wYXJzZU9yZGVyfTtmdW5jdGlvbiBsKGUsdCxyLG4pe3ZhciBhPWkuc2VyaWFsaXplckZyb21TY2hlbWEodCxuKSxzPW8ucGFyc2VyRnJvbVNjaGVtYSh0LHIpKGEoZSkpLnZhbHVlO3JldHVybiBPYmplY3QuYXNzaWduKHt9LGUscyl9dC5iaW5hcnk9Zix0LmNvbnZlcnRMb25nRmllbGRzPWwsdC5jb252ZXJ0VHhMb25nRmllbGRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1lLnR5cGUsbz1lLnZlcnNpb247cmV0dXJuIGwoZSxuLmdldFRyYW5zYWN0aW9uU2NoZW1hKGksbyksdCxyKX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG47T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpPXIoMzA1KSxvPXIoMzA3KTt0LnNlZWRXb3Jkc0xpc3Q9by5zZWVkV29yZHNMaXN0O3ZhciBhPXIoMzYwKTt0LkNoYWlkSWQ9YS5DaGFpZElkO3ZhciBzPXIoMzU5KTt0LlNlZWQ9cy5TZWVkO3ZhciB1PXIoMjI4KTt0LmlzUHJpdmF0ZUtleT11LmlzUHJpdmF0ZUtleSx0LmlzUHVibGljS2V5PXUuaXNQdWJsaWNLZXk7dmFyIGM9cigzMDUpO3QuY3J5cHRvPWMuY3J5cHRvLGZ1bmN0aW9uKGUpe2Zvcih2YXIgciBpbiBlKXQuaGFzT3duUHJvcGVydHkocil8fCh0W3JdPWVbcl0pfShyKDEzNykpLHQuc2lnbkJ5dGVzPShuPWkuY3J5cHRvKHtvdXRwdXQ6IkJhc2U1OCJ9KSkuc2lnbkJ5dGVzLHQua2V5UGFpcj1uLmtleVBhaXIsdC5wdWJsaWNLZXk9bi5wdWJsaWNLZXksdC5wcml2YXRlS2V5PW4ucHJpdmF0ZUtleSx0LmFkZHJlc3M9bi5hZGRyZXNzLHQuYmxha2UyYj1uLmJsYWtlMmIsdC5rZWNjYWs9bi5rZWNjYWssdC5zaGEyNTY9bi5zaGEyNTYsdC5zaGFyZWRLZXk9bi5zaGFyZWRLZXksdC5zZWVkV2l0aE5vbmNlPW4uc2VlZFdpdGhOb25jZSx0LmJhc2U2NEVuY29kZT1uLmJhc2U2NEVuY29kZSx0LmJhc2U2NERlY29kZT1uLmJhc2U2NERlY29kZSx0LmJhc2U1OEVuY29kZT1uLmJhc2U1OEVuY29kZSx0LmJhc2U1OERlY29kZT1uLmJhc2U1OERlY29kZSx0LmJhc2UxNkVuY29kZT1uLmJhc2UxNkVuY29kZSx0LmJhc2UxNkRlY29kZT1uLmJhc2UxNkRlY29kZSx0LnN0cmluZ1RvQnl0ZXM9bi5zdHJpbmdUb0J5dGVzLHQuYnl0ZXNUb1N0cmluZz1uLmJ5dGVzVG9TdHJpbmcsdC5yYW5kb209bi5yYW5kb20sdC5yYW5kb21TZWVkPW4ucmFuZG9tU2VlZCx0LnJhbmRvbUJ5dGVzPW4ucmFuZG9tQnl0ZXMsdC52ZXJpZnlTaWduYXR1cmU9bi52ZXJpZnlTaWduYXR1cmUsdC52ZXJpZnlQdWJsaWNLZXk9bi52ZXJpZnlQdWJsaWNLZXksdC52ZXJpZnlBZGRyZXNzPW4udmVyaWZ5QWRkcmVzcyx0Lm1lc3NhZ2VEZWNyeXB0PW4ubWVzc2FnZURlY3J5cHQsdC5tZXNzYWdlRW5jcnlwdD1uLm1lc3NhZ2VFbmNyeXB0LHQuZW5jcnlwdFNlZWQ9bi5lbmNyeXB0U2VlZCx0LmRlY3J5cHRTZWVkPW4uZGVjcnlwdFNlZWQsdC5yc2FLZXlQYWlyPW4ucnNhS2V5UGFpcix0LnJzYUtleVBhaXJTeW5jPW4ucnNhS2V5UGFpclN5bmMsdC5yc2FTaWduPW4ucnNhU2lnbix0LnJzYVZlcmlmeT1uLnJzYVZlcmlmeSx0LmFlc0RlY3J5cHQ9bi5hZXNEZWNyeXB0LHQuYWVzRW5jcnlwdD1uLmFlc0VuY3J5cHQsdC5zcGxpdD1uLnNwbGl0LHQuY29uY2F0PW4uY29uY2F0fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNzgpKCJ3a3MiKSxpPXIoOTQpLG89cigxNykuU3ltYm9sLGE9ImZ1bmN0aW9uIj09dHlwZW9mIG87KGUuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbltlXXx8KG5bZV09YSYmb1tlXXx8KGE/bzppKSgiU3ltYm9sLiIrZSkpfSkuc3RvcmU9bn0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNTQyKSxpPXIoNTQzKSxvPXIoNTQ0KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbihlKXx8aShlLHQpfHxvKCl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig2MCksaT1NYXRoLm1pbjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGU+MD9pKG4oZSksOTAwNzE5OTI1NDc0MDk5MSk6MH19LGZ1bmN0aW9uKGUsdCxyKXsoZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0KXtpZighZSl0aHJvdyBuZXcgRXJyb3IodHx8IkFzc2VydGlvbiBmYWlsZWQiKX1mdW5jdGlvbiBpKGUsdCl7ZS5zdXBlcl89dDt2YXIgcj1mdW5jdGlvbigpe307ci5wcm90b3R5cGU9dC5wcm90b3R5cGUsZS5wcm90b3R5cGU9bmV3IHIsZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZX1mdW5jdGlvbiBvKGUsdCxyKXtpZihvLmlzQk4oZSkpcmV0dXJuIGU7dGhpcy5uZWdhdGl2ZT0wLHRoaXMud29yZHM9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMucmVkPW51bGwsbnVsbCE9PWUmJigibGUiIT09dCYmImJlIiE9PXR8fChyPXQsdD0xMCksdGhpcy5faW5pdChlfHwwLHR8fDEwLHJ8fCJiZSIpKX12YXIgYTsib2JqZWN0Ij09PXR5cGVvZiBlP2UuZXhwb3J0cz1vOnQuQk49byxvLkJOPW8sby53b3JkU2l6ZT0yNjt0cnl7YT1yKDU4NSkuQnVmZmVyfWNhdGNoKFQpe31mdW5jdGlvbiBzKGUsdCxyKXtmb3IodmFyIG49MCxpPU1hdGgubWluKGUubGVuZ3RoLHIpLG89dDtvPGk7bysrKXt2YXIgYT1lLmNoYXJDb2RlQXQobyktNDg7bjw8PTQsbnw9YT49NDkmJmE8PTU0P2EtNDkrMTA6YT49MTcmJmE8PTIyP2EtMTcrMTA6MTUmYX1yZXR1cm4gbn1mdW5jdGlvbiB1KGUsdCxyLG4pe2Zvcih2YXIgaT0wLG89TWF0aC5taW4oZS5sZW5ndGgsciksYT10O2E8bzthKyspe3ZhciBzPWUuY2hhckNvZGVBdChhKS00ODtpKj1uLGkrPXM+PTQ5P3MtNDkrMTA6cz49MTc/cy0xNysxMDpzfXJldHVybiBpfW8uaXNCTj1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIG98fG51bGwhPT1lJiYib2JqZWN0Ij09PXR5cGVvZiBlJiZlLmNvbnN0cnVjdG9yLndvcmRTaXplPT09by53b3JkU2l6ZSYmQXJyYXkuaXNBcnJheShlLndvcmRzKX0sby5tYXg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jbXAodCk+MD9lOnR9LG8ubWluPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY21wKHQpPDA/ZTp0fSxvLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbihlLHQscil7aWYoIm51bWJlciI9PT10eXBlb2YgZSlyZXR1cm4gdGhpcy5faW5pdE51bWJlcihlLHQscik7aWYoIm9iamVjdCI9PT10eXBlb2YgZSlyZXR1cm4gdGhpcy5faW5pdEFycmF5KGUsdCxyKTsiaGV4Ij09PXQmJih0PTE2KSxuKHQ9PT0oMHx0KSYmdD49MiYmdDw9MzYpO3ZhciBpPTA7Ii0iPT09KGU9ZS50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCIiKSlbMF0mJmkrKywxNj09PXQ/dGhpcy5fcGFyc2VIZXgoZSxpKTp0aGlzLl9wYXJzZUJhc2UoZSx0LGkpLCItIj09PWVbMF0mJih0aGlzLm5lZ2F0aXZlPTEpLHRoaXMuc3RyaXAoKSwibGUiPT09ciYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLHQscil9LG8ucHJvdG90eXBlLl9pbml0TnVtYmVyPWZ1bmN0aW9uKGUsdCxyKXtlPDAmJih0aGlzLm5lZ2F0aXZlPTEsZT0tZSksZTw2NzEwODg2ND8odGhpcy53b3Jkcz1bNjcxMDg4NjMmZV0sdGhpcy5sZW5ndGg9MSk6ZTw0NTAzNTk5NjI3MzcwNDk2Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZlLGUvNjcxMDg4NjQmNjcxMDg4NjNdLHRoaXMubGVuZ3RoPTIpOihuKGU8OTAwNzE5OTI1NDc0MDk5MiksdGhpcy53b3Jkcz1bNjcxMDg4NjMmZSxlLzY3MTA4ODY0JjY3MTA4ODYzLDFdLHRoaXMubGVuZ3RoPTMpLCJsZSI9PT1yJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksdCxyKX0sby5wcm90b3R5cGUuX2luaXRBcnJheT1mdW5jdGlvbihlLHQscil7aWYobigibnVtYmVyIj09PXR5cGVvZiBlLmxlbmd0aCksZS5sZW5ndGg8PTApcmV0dXJuIHRoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTEsdGhpczt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoZS5sZW5ndGgvMyksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgaT0wO2k8dGhpcy5sZW5ndGg7aSsrKXRoaXMud29yZHNbaV09MDt2YXIgbyxhLHM9MDtpZigiYmUiPT09cilmb3IoaT1lLmxlbmd0aC0xLG89MDtpPj0wO2ktPTMpYT1lW2ldfGVbaS0xXTw8OHxlW2ktMl08PDE2LHRoaXMud29yZHNbb118PWE8PHMmNjcxMDg4NjMsdGhpcy53b3Jkc1tvKzFdPWE+Pj4yNi1zJjY3MTA4ODYzLChzKz0yNCk+PTI2JiYocy09MjYsbysrKTtlbHNlIGlmKCJsZSI9PT1yKWZvcihpPTAsbz0wO2k8ZS5sZW5ndGg7aSs9MylhPWVbaV18ZVtpKzFdPDw4fGVbaSsyXTw8MTYsdGhpcy53b3Jkc1tvXXw9YTw8cyY2NzEwODg2Myx0aGlzLndvcmRzW28rMV09YT4+PjI2LXMmNjcxMDg4NjMsKHMrPTI0KT49MjYmJihzLT0yNixvKyspO3JldHVybiB0aGlzLnN0cmlwKCl9LG8ucHJvdG90eXBlLl9wYXJzZUhleD1mdW5jdGlvbihlLHQpe3RoaXMubGVuZ3RoPU1hdGguY2VpbCgoZS5sZW5ndGgtdCkvNiksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgcj0wO3I8dGhpcy5sZW5ndGg7cisrKXRoaXMud29yZHNbcl09MDt2YXIgbixpLG89MDtmb3Iocj1lLmxlbmd0aC02LG49MDtyPj10O3ItPTYpaT1zKGUscixyKzYpLHRoaXMud29yZHNbbl18PWk8PG8mNjcxMDg4NjMsdGhpcy53b3Jkc1tuKzFdfD1pPj4+MjYtbyY0MTk0MzAzLChvKz0yNCk+PTI2JiYoby09MjYsbisrKTtyKzYhPT10JiYoaT1zKGUsdCxyKzYpLHRoaXMud29yZHNbbl18PWk8PG8mNjcxMDg4NjMsdGhpcy53b3Jkc1tuKzFdfD1pPj4+MjYtbyY0MTk0MzAzKSx0aGlzLnN0cmlwKCl9LG8ucHJvdG90eXBlLl9wYXJzZUJhc2U9ZnVuY3Rpb24oZSx0LHIpe3RoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTE7Zm9yKHZhciBuPTAsaT0xO2k8PTY3MTA4ODYzO2kqPXQpbisrO24tLSxpPWkvdHwwO2Zvcih2YXIgbz1lLmxlbmd0aC1yLGE9byVuLHM9TWF0aC5taW4obyxvLWEpK3IsYz0wLGY9cjtmPHM7Zis9biljPXUoZSxmLGYrbix0KSx0aGlzLmltdWxuKGkpLHRoaXMud29yZHNbMF0rYzw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1jOnRoaXMuX2lhZGRuKGMpO2lmKDAhPT1hKXt2YXIgbD0xO2ZvcihjPXUoZSxmLGUubGVuZ3RoLHQpLGY9MDtmPGE7ZisrKWwqPXQ7dGhpcy5pbXVsbihsKSx0aGlzLndvcmRzWzBdK2M8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9Yzp0aGlzLl9pYWRkbihjKX19LG8ucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oZSl7ZS53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgdD0wO3Q8dGhpcy5sZW5ndGg7dCsrKWUud29yZHNbdF09dGhpcy53b3Jkc1t0XTtlLmxlbmd0aD10aGlzLmxlbmd0aCxlLm5lZ2F0aXZlPXRoaXMubmVnYXRpdmUsZS5yZWQ9dGhpcy5yZWR9LG8ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFyIGU9bmV3IG8obnVsbCk7cmV0dXJuIHRoaXMuY29weShlKSxlfSxvLnByb3RvdHlwZS5fZXhwYW5kPWZ1bmN0aW9uKGUpe2Zvcig7dGhpcy5sZW5ndGg8ZTspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO3JldHVybiB0aGlzfSxvLnByb3RvdHlwZS5zdHJpcD1mdW5jdGlvbigpe2Zvcig7dGhpcy5sZW5ndGg+MSYmMD09PXRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV07KXRoaXMubGVuZ3RoLS07cmV0dXJuIHRoaXMuX25vcm1TaWduKCl9LG8ucHJvdG90eXBlLl9ub3JtU2lnbj1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdJiYodGhpcy5uZWdhdGl2ZT0wKSx0aGlzfSxvLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMucmVkPyI8Qk4tUjogIjoiPEJOOiAiKSt0aGlzLnRvU3RyaW5nKDE2KSsiPiJ9O3ZhciBjPVsiIiwiMCIsIjAwIiwiMDAwIiwiMDAwMCIsIjAwMDAwIiwiMDAwMDAwIiwiMDAwMDAwMCIsIjAwMDAwMDAwIiwiMDAwMDAwMDAwIiwiMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCJdLGY9WzAsMCwyNSwxNiwxMiwxMSwxMCw5LDgsOCw3LDcsNyw3LDYsNiw2LDYsNiw2LDYsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNV0sbD1bMCwwLDMzNTU0NDMyLDQzMDQ2NzIxLDE2Nzc3MjE2LDQ4ODI4MTI1LDYwNDY2MTc2LDQwMzUzNjA3LDE2Nzc3MjE2LDQzMDQ2NzIxLDFlNywxOTQ4NzE3MSwzNTgzMTgwOCw2Mjc0ODUxNyw3NTI5NTM2LDExMzkwNjI1LDE2Nzc3MjE2LDI0MTM3NTY5LDM0MDEyMjI0LDQ3MDQ1ODgxLDY0ZTYsNDA4NDEwMSw1MTUzNjMyLDY0MzYzNDMsNzk2MjYyNCw5NzY1NjI1LDExODgxMzc2LDE0MzQ4OTA3LDE3MjEwMzY4LDIwNTExMTQ5LDI0M2U1LDI4NjI5MTUxLDMzNTU0NDMyLDM5MTM1MzkzLDQ1NDM1NDI0LDUyNTIxODc1LDYwNDY2MTc2XTtmdW5jdGlvbiBoKGUsdCxyKXtyLm5lZ2F0aXZlPXQubmVnYXRpdmVeZS5uZWdhdGl2ZTt2YXIgbj1lLmxlbmd0aCt0Lmxlbmd0aHwwO3IubGVuZ3RoPW4sbj1uLTF8MDt2YXIgaT0wfGUud29yZHNbMF0sbz0wfHQud29yZHNbMF0sYT1pKm8scz02NzEwODg2MyZhLHU9YS82NzEwODg2NHwwO3Iud29yZHNbMF09cztmb3IodmFyIGM9MTtjPG47YysrKXtmb3IodmFyIGY9dT4+PjI2LGw9NjcxMDg4NjMmdSxoPU1hdGgubWluKGMsdC5sZW5ndGgtMSkscD1NYXRoLm1heCgwLGMtZS5sZW5ndGgrMSk7cDw9aDtwKyspe3ZhciBkPWMtcHwwO2YrPShhPShpPTB8ZS53b3Jkc1tkXSkqKG89MHx0LndvcmRzW3BdKStsKS82NzEwODg2NHwwLGw9NjcxMDg4NjMmYX1yLndvcmRzW2NdPTB8bCx1PTB8Zn1yZXR1cm4gMCE9PXU/ci53b3Jkc1tjXT0wfHU6ci5sZW5ndGgtLSxyLnN0cmlwKCl9by5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oZSx0KXt2YXIgcjtpZih0PTB8dHx8MSwxNj09PShlPWV8fDEwKXx8ImhleCI9PT1lKXtyPSIiO2Zvcih2YXIgaT0wLG89MCxhPTA7YTx0aGlzLmxlbmd0aDthKyspe3ZhciBzPXRoaXMud29yZHNbYV0sdT0oMTY3NzcyMTUmKHM8PGl8bykpLnRvU3RyaW5nKDE2KTtyPTAhPT0obz1zPj4+MjQtaSYxNjc3NzIxNSl8fGEhPT10aGlzLmxlbmd0aC0xP2NbNi11Lmxlbmd0aF0rdStyOnUrciwoaSs9Mik+PTI2JiYoaS09MjYsYS0tKX1mb3IoMCE9PW8mJihyPW8udG9TdHJpbmcoMTYpK3IpO3IubGVuZ3RoJXQhPT0wOylyPSIwIityO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKHI9Ii0iK3IpLHJ9aWYoZT09PSgwfGUpJiZlPj0yJiZlPD0zNil7dmFyIGg9ZltlXSxwPWxbZV07cj0iIjt2YXIgZD10aGlzLmNsb25lKCk7Zm9yKGQubmVnYXRpdmU9MDshZC5pc1plcm8oKTspe3ZhciB5PWQubW9kbihwKS50b1N0cmluZyhlKTtyPShkPWQuaWRpdm4ocCkpLmlzWmVybygpP3krcjpjW2gteS5sZW5ndGhdK3krcn1mb3IodGhpcy5pc1plcm8oKSYmKHI9IjAiK3IpO3IubGVuZ3RoJXQhPT0wOylyPSIwIityO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKHI9Ii0iK3IpLHJ9bighMSwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNiIpfSxvLnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciBlPXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD9lKz02NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/ZSs9NDUwMzU5OTYyNzM3MDQ5Nis2NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJm4oITEsIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZlPy1lOmV9LG8ucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2KX0sby5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbigidW5kZWZpbmVkIiE9PXR5cGVvZiBhKSx0aGlzLnRvQXJyYXlMaWtlKGEsZSx0KX0sby5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LGUsdCl9LG8ucHJvdG90eXBlLnRvQXJyYXlMaWtlPWZ1bmN0aW9uKGUsdCxyKXt2YXIgaT10aGlzLmJ5dGVMZW5ndGgoKSxvPXJ8fE1hdGgubWF4KDEsaSk7bihpPD1vLCJieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoIiksbihvPjAsIlJlcXVlc3RlZCBhcnJheSBsZW5ndGggPD0gMCIpLHRoaXMuc3RyaXAoKTt2YXIgYSxzLHU9ImxlIj09PXQsYz1uZXcgZShvKSxmPXRoaXMuY2xvbmUoKTtpZih1KXtmb3Iocz0wOyFmLmlzWmVybygpO3MrKylhPWYuYW5kbG4oMjU1KSxmLml1c2hybig4KSxjW3NdPWE7Zm9yKDtzPG87cysrKWNbc109MH1lbHNle2ZvcihzPTA7czxvLWk7cysrKWNbc109MDtmb3Iocz0wOyFmLmlzWmVybygpO3MrKylhPWYuYW5kbG4oMjU1KSxmLml1c2hybig4KSxjW28tcy0xXT1hfXJldHVybiBjfSxNYXRoLmNsejMyP28ucHJvdG90eXBlLl9jb3VudEJpdHM9ZnVuY3Rpb24oZSl7cmV0dXJuIDMyLU1hdGguY2x6MzIoZSl9Om8ucHJvdG90eXBlLl9jb3VudEJpdHM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZSxyPTA7cmV0dXJuIHQ+PTQwOTYmJihyKz0xMyx0Pj4+PTEzKSx0Pj02NCYmKHIrPTcsdD4+Pj03KSx0Pj04JiYocis9NCx0Pj4+PTQpLHQ+PTImJihyKz0yLHQ+Pj49Mikscit0fSxvLnByb3RvdHlwZS5femVyb0JpdHM9ZnVuY3Rpb24oZSl7aWYoMD09PWUpcmV0dXJuIDI2O3ZhciB0PWUscj0wO3JldHVybiAwPT09KDgxOTEmdCkmJihyKz0xMyx0Pj4+PTEzKSwwPT09KDEyNyZ0KSYmKHIrPTcsdD4+Pj03KSwwPT09KDE1JnQpJiYocis9NCx0Pj4+PTQpLDA9PT0oMyZ0KSYmKHIrPTIsdD4+Pj0yKSwwPT09KDEmdCkmJnIrKyxyfSxvLnByb3RvdHlwZS5iaXRMZW5ndGg9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdLHQ9dGhpcy5fY291bnRCaXRzKGUpO3JldHVybiAyNioodGhpcy5sZW5ndGgtMSkrdH0sby5wcm90b3R5cGUuemVyb0JpdHM9ZnVuY3Rpb24oKXtpZih0aGlzLmlzWmVybygpKXJldHVybiAwO2Zvcih2YXIgZT0wLHQ9MDt0PHRoaXMubGVuZ3RoO3QrKyl7dmFyIHI9dGhpcy5femVyb0JpdHModGhpcy53b3Jkc1t0XSk7aWYoZSs9ciwyNiE9PXIpYnJlYWt9cmV0dXJuIGV9LG8ucHJvdG90eXBlLmJ5dGVMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5jZWlsKA==",
    "2019.12.27 16:43": "base64:d3JpdGU9ZnVuY3Rpb24oZSx0LHIsbil7aWYodm9pZCAwPT09dCluPSJ1dGY4IixyPXRoaXMubGVuZ3RoLHQ9MDtlbHNlIGlmKHZvaWQgMD09PXImJiJzdHJpbmciPT09dHlwZW9mIHQpbj10LHI9dGhpcy5sZW5ndGgsdD0wO2Vsc2V7aWYoIWlzRmluaXRlKHQpKXRocm93IG5ldyBFcnJvcigiQnVmZmVyLndyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldFssIGxlbmd0aF0pIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQiKTt0fD0wLGlzRmluaXRlKHIpPyhyfD0wLHZvaWQgMD09PW4mJihuPSJ1dGY4IikpOihuPXIscj12b2lkIDApfXZhciBpPXRoaXMubGVuZ3RoLXQ7aWYoKHZvaWQgMD09PXJ8fHI+aSkmJihyPWkpLGUubGVuZ3RoPjAmJihyPDB8fHQ8MCl8fHQ+dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkF0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzIik7bnx8KG49InV0ZjgiKTtmb3IodmFyIG89ITE7Oylzd2l0Y2gobil7Y2FzZSJoZXgiOnJldHVybiBtKHRoaXMsZSx0LHIpO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuIGIodGhpcyxlLHQscik7Y2FzZSJhc2NpaSI6cmV0dXJuIF8odGhpcyxlLHQscik7Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gUyh0aGlzLGUsdCxyKTtjYXNlImJhc2U2NCI6cmV0dXJuIEUodGhpcyxlLHQscik7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiB3KHRoaXMsZSx0LHIpO2RlZmF1bHQ6aWYobyl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK24pO249KCIiK24pLnRvTG93ZXJDYXNlKCksbz0hMH19LHUucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJCdWZmZXIiLGRhdGE6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyfHx0aGlzLDApfX07dmFyIEM9NDA5NjtmdW5jdGlvbiB4KGUsdCxyKXt2YXIgbj0iIjtyPU1hdGgubWluKGUubGVuZ3RoLHIpO2Zvcih2YXIgaT10O2k8cjsrK2kpbis9U3RyaW5nLmZyb21DaGFyQ29kZSgxMjcmZVtpXSk7cmV0dXJuIG59ZnVuY3Rpb24gSShlLHQscil7dmFyIG49IiI7cj1NYXRoLm1pbihlLmxlbmd0aCxyKTtmb3IodmFyIGk9dDtpPHI7KytpKW4rPVN0cmluZy5mcm9tQ2hhckNvZGUoZVtpXSk7cmV0dXJuIG59ZnVuY3Rpb24gayhlLHQscil7dmFyIG49ZS5sZW5ndGg7KCF0fHx0PDApJiYodD0wKSwoIXJ8fHI8MHx8cj5uKSYmKHI9bik7Zm9yKHZhciBpPSIiLG89dDtvPHI7KytvKWkrPVUoZVtvXSk7cmV0dXJuIGl9ZnVuY3Rpb24gTyhlLHQscil7Zm9yKHZhciBuPWUuc2xpY2UodCxyKSxpPSIiLG89MDtvPG4ubGVuZ3RoO28rPTIpaSs9U3RyaW5nLmZyb21DaGFyQ29kZShuW29dKzI1NipuW28rMV0pO3JldHVybiBpfWZ1bmN0aW9uIE4oZSx0LHIpe2lmKGUlMSE9PTB8fGU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib2Zmc2V0IGlzIG5vdCB1aW50Iik7aWYoZSt0PnIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgiKX1mdW5jdGlvbiBQKGUsdCxyLG4saSxvKXtpZighdS5pc0J1ZmZlcihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCciYnVmZmVyIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIGluc3RhbmNlJyk7aWYodD5pfHx0PG8pdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpO2lmKHIrbj5lLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gUihlLHQscixuKXt0PDAmJih0PTY1NTM1K3QrMSk7Zm9yKHZhciBpPTAsbz1NYXRoLm1pbihlLmxlbmd0aC1yLDIpO2k8bzsrK2kpZVtyK2ldPSh0JjI1NTw8OCoobj9pOjEtaSkpPj4+OCoobj9pOjEtaSl9ZnVuY3Rpb24gQihlLHQscixuKXt0PDAmJih0PTQyOTQ5NjcyOTUrdCsxKTtmb3IodmFyIGk9MCxvPU1hdGgubWluKGUubGVuZ3RoLXIsNCk7aTxvOysraSllW3IraV09dD4+PjgqKG4/aTozLWkpJjI1NX1mdW5jdGlvbiBNKGUsdCxyLG4saSxvKXtpZihyK24+ZS5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpO2lmKHI8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gTChlLHQscixuLG8pe3JldHVybiBvfHxNKGUsMCxyLDQpLGkud3JpdGUoZSx0LHIsbiwyMyw0KSxyKzR9ZnVuY3Rpb24gRChlLHQscixuLG8pe3JldHVybiBvfHxNKGUsMCxyLDgpLGkud3JpdGUoZSx0LHIsbiw1Miw4KSxyKzh9dS5wcm90b3R5cGUuc2xpY2U9ZnVuY3Rpb24oZSx0KXt2YXIgcixuPXRoaXMubGVuZ3RoO2lmKChlPX5+ZSk8MD8oZSs9bik8MCYmKGU9MCk6ZT5uJiYoZT1uKSwodD12b2lkIDA9PT10P246fn50KTwwPyh0Kz1uKTwwJiYodD0wKTp0Pm4mJih0PW4pLHQ8ZSYmKHQ9ZSksdS5UWVBFRF9BUlJBWV9TVVBQT1JUKShyPXRoaXMuc3ViYXJyYXkoZSx0KSkuX19wcm90b19fPXUucHJvdG90eXBlO2Vsc2V7dmFyIGk9dC1lO3I9bmV3IHUoaSx2b2lkIDApO2Zvcih2YXIgbz0wO288aTsrK28pcltvXT10aGlzW28rZV19cmV0dXJuIHJ9LHUucHJvdG90eXBlLnJlYWRVSW50TEU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHxOKGUsdCx0aGlzLmxlbmd0aCk7Zm9yKHZhciBuPXRoaXNbZV0saT0xLG89MDsrK288dCYmKGkqPTI1Nik7KW4rPXRoaXNbZStvXSppO3JldHVybiBufSx1LnByb3RvdHlwZS5yZWFkVUludEJFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8TihlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW2UrLS10XSxpPTE7dD4wJiYoaSo9MjU2KTspbis9dGhpc1tlKy0tdF0qaTtyZXR1cm4gbn0sdS5wcm90b3R5cGUucmVhZFVJbnQ4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fE4oZSwxLHRoaXMubGVuZ3RoKSx0aGlzW2VdfSx1LnByb3RvdHlwZS5yZWFkVUludDE2TEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8TihlLDIsdGhpcy5sZW5ndGgpLHRoaXNbZV18dGhpc1tlKzFdPDw4fSx1LnByb3RvdHlwZS5yZWFkVUludDE2QkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8TihlLDIsdGhpcy5sZW5ndGgpLHRoaXNbZV08PDh8dGhpc1tlKzFdfSx1LnByb3RvdHlwZS5yZWFkVUludDMyTEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8TihlLDQsdGhpcy5sZW5ndGgpLCh0aGlzW2VdfHRoaXNbZSsxXTw8OHx0aGlzW2UrMl08PDE2KSsxNjc3NzIxNip0aGlzW2UrM119LHUucHJvdG90eXBlLnJlYWRVSW50MzJCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxOKGUsNCx0aGlzLmxlbmd0aCksMTY3NzcyMTYqdGhpc1tlXSsodGhpc1tlKzFdPDwxNnx0aGlzW2UrMl08PDh8dGhpc1tlKzNdKX0sdS5wcm90b3R5cGUucmVhZEludExFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8TihlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW2VdLGk9MSxvPTA7KytvPHQmJihpKj0yNTYpOyluKz10aGlzW2Urb10qaTtyZXR1cm4gbj49KGkqPTEyOCkmJihuLT1NYXRoLnBvdygyLDgqdCkpLG59LHUucHJvdG90eXBlLnJlYWRJbnRCRT1mdW5jdGlvbihlLHQscil7ZXw9MCx0fD0wLHJ8fE4oZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dCxpPTEsbz10aGlzW2UrLS1uXTtuPjAmJihpKj0yNTYpOylvKz10aGlzW2UrLS1uXSppO3JldHVybiBvPj0oaSo9MTI4KSYmKG8tPU1hdGgucG93KDIsOCp0KSksb30sdS5wcm90b3R5cGUucmVhZEludDg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8TihlLDEsdGhpcy5sZW5ndGgpLDEyOCZ0aGlzW2VdPy0xKigyNTUtdGhpc1tlXSsxKTp0aGlzW2VdfSx1LnByb3RvdHlwZS5yZWFkSW50MTZMRT1mdW5jdGlvbihlLHQpe3R8fE4oZSwyLHRoaXMubGVuZ3RoKTt2YXIgcj10aGlzW2VdfHRoaXNbZSsxXTw8ODtyZXR1cm4gMzI3Njgmcj80Mjk0OTAxNzYwfHI6cn0sdS5wcm90b3R5cGUucmVhZEludDE2QkU9ZnVuY3Rpb24oZSx0KXt0fHxOKGUsMix0aGlzLmxlbmd0aCk7dmFyIHI9dGhpc1tlKzFdfHRoaXNbZV08PDg7cmV0dXJuIDMyNzY4JnI/NDI5NDkwMTc2MHxyOnJ9LHUucHJvdG90eXBlLnJlYWRJbnQzMkxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fE4oZSw0LHRoaXMubGVuZ3RoKSx0aGlzW2VdfHRoaXNbZSsxXTw8OHx0aGlzW2UrMl08PDE2fHRoaXNbZSszXTw8MjR9LHUucHJvdG90eXBlLnJlYWRJbnQzMkJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fE4oZSw0LHRoaXMubGVuZ3RoKSx0aGlzW2VdPDwyNHx0aGlzW2UrMV08PDE2fHRoaXNbZSsyXTw8OHx0aGlzW2UrM119LHUucHJvdG90eXBlLnJlYWRGbG9hdExFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fE4oZSw0LHRoaXMubGVuZ3RoKSxpLnJlYWQodGhpcyxlLCEwLDIzLDQpfSx1LnByb3RvdHlwZS5yZWFkRmxvYXRCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxOKGUsNCx0aGlzLmxlbmd0aCksaS5yZWFkKHRoaXMsZSwhMSwyMyw0KX0sdS5wcm90b3R5cGUucmVhZERvdWJsZUxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fE4oZSw4LHRoaXMubGVuZ3RoKSxpLnJlYWQodGhpcyxlLCEwLDUyLDgpfSx1LnByb3RvdHlwZS5yZWFkRG91YmxlQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8TihlLDgsdGhpcy5sZW5ndGgpLGkucmVhZCh0aGlzLGUsITEsNTIsOCl9LHUucHJvdG90eXBlLndyaXRlVUludExFPWZ1bmN0aW9uKGUsdCxyLG4peyhlPStlLHR8PTAscnw9MCxuKXx8UCh0aGlzLGUsdCxyLE1hdGgucG93KDIsOCpyKS0xLDApO3ZhciBpPTEsbz0wO2Zvcih0aGlzW3RdPTI1NSZlOysrbzxyJiYoaSo9MjU2KTspdGhpc1t0K29dPWUvaSYyNTU7cmV0dXJuIHQrcn0sdS5wcm90b3R5cGUud3JpdGVVSW50QkU9ZnVuY3Rpb24oZSx0LHIsbil7KGU9K2UsdHw9MCxyfD0wLG4pfHxQKHRoaXMsZSx0LHIsTWF0aC5wb3coMiw4KnIpLTEsMCk7dmFyIGk9ci0xLG89MTtmb3IodGhpc1t0K2ldPTI1NSZlOy0taT49MCYmKG8qPTI1Nik7KXRoaXNbdCtpXT1lL28mMjU1O3JldHVybiB0K3J9LHUucHJvdG90eXBlLndyaXRlVUludDg9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8UCh0aGlzLGUsdCwxLDI1NSwwKSx1LlRZUEVEX0FSUkFZX1NVUFBPUlR8fChlPU1hdGguZmxvb3IoZSkpLHRoaXNbdF09MjU1JmUsdCsxfSx1LnByb3RvdHlwZS53cml0ZVVJbnQxNkxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fFAodGhpcyxlLHQsMiw2NTUzNSwwKSx1LlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44KTpSKHRoaXMsZSx0LCEwKSx0KzJ9LHUucHJvdG90eXBlLndyaXRlVUludDE2QkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8UCh0aGlzLGUsdCwyLDY1NTM1LDApLHUuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+OCx0aGlzW3QrMV09MjU1JmUpOlIodGhpcyxlLHQsITEpLHQrMn0sdS5wcm90b3R5cGUud3JpdGVVSW50MzJMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxQKHRoaXMsZSx0LDQsNDI5NDk2NzI5NSwwKSx1LlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdCszXT1lPj4+MjQsdGhpc1t0KzJdPWU+Pj4xNix0aGlzW3QrMV09ZT4+PjgsdGhpc1t0XT0yNTUmZSk6Qih0aGlzLGUsdCwhMCksdCs0fSx1LnByb3RvdHlwZS53cml0ZVVJbnQzMkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fFAodGhpcyxlLHQsNCw0Mjk0OTY3Mjk1LDApLHUuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+MjQsdGhpc1t0KzFdPWU+Pj4xNix0aGlzW3QrMl09ZT4+PjgsdGhpc1t0KzNdPTI1NSZlKTpCKHRoaXMsZSx0LCExKSx0KzR9LHUucHJvdG90eXBlLndyaXRlSW50TEU9ZnVuY3Rpb24oZSx0LHIsbil7aWYoZT0rZSx0fD0wLCFuKXt2YXIgaT1NYXRoLnBvdygyLDgqci0xKTtQKHRoaXMsZSx0LHIsaS0xLC1pKX12YXIgbz0wLGE9MSxzPTA7Zm9yKHRoaXNbdF09MjU1JmU7KytvPHImJihhKj0yNTYpOyllPDAmJjA9PT1zJiYwIT09dGhpc1t0K28tMV0mJihzPTEpLHRoaXNbdCtvXT0oZS9hPj4wKS1zJjI1NTtyZXR1cm4gdCtyfSx1LnByb3RvdHlwZS53cml0ZUludEJFPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKGU9K2UsdHw9MCwhbil7dmFyIGk9TWF0aC5wb3coMiw4KnItMSk7UCh0aGlzLGUsdCxyLGktMSwtaSl9dmFyIG89ci0xLGE9MSxzPTA7Zm9yKHRoaXNbdCtvXT0yNTUmZTstLW8+PTAmJihhKj0yNTYpOyllPDAmJjA9PT1zJiYwIT09dGhpc1t0K28rMV0mJihzPTEpLHRoaXNbdCtvXT0oZS9hPj4wKS1zJjI1NTtyZXR1cm4gdCtyfSx1LnByb3RvdHlwZS53cml0ZUludDg9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8UCh0aGlzLGUsdCwxLDEyNywtMTI4KSx1LlRZUEVEX0FSUkFZX1NVUFBPUlR8fChlPU1hdGguZmxvb3IoZSkpLGU8MCYmKGU9MjU1K2UrMSksdGhpc1t0XT0yNTUmZSx0KzF9LHUucHJvdG90eXBlLndyaXRlSW50MTZMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxQKHRoaXMsZSx0LDIsMzI3NjcsLTMyNzY4KSx1LlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44KTpSKHRoaXMsZSx0LCEwKSx0KzJ9LHUucHJvdG90eXBlLndyaXRlSW50MTZCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxQKHRoaXMsZSx0LDIsMzI3NjcsLTMyNzY4KSx1LlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjgsdGhpc1t0KzFdPTI1NSZlKTpSKHRoaXMsZSx0LCExKSx0KzJ9LHUucHJvdG90eXBlLndyaXRlSW50MzJMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxQKHRoaXMsZSx0LDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksdS5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPTI1NSZlLHRoaXNbdCsxXT1lPj4+OCx0aGlzW3QrMl09ZT4+PjE2LHRoaXNbdCszXT1lPj4+MjQpOkIodGhpcyxlLHQsITApLHQrNH0sdS5wcm90b3R5cGUud3JpdGVJbnQzMkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fFAodGhpcyxlLHQsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSxlPDAmJihlPTQyOTQ5NjcyOTUrZSsxKSx1LlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjI0LHRoaXNbdCsxXT1lPj4+MTYsdGhpc1t0KzJdPWU+Pj44LHRoaXNbdCszXT0yNTUmZSk6Qih0aGlzLGUsdCwhMSksdCs0fSx1LnByb3RvdHlwZS53cml0ZUZsb2F0TEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBMKHRoaXMsZSx0LCEwLHIpfSx1LnByb3RvdHlwZS53cml0ZUZsb2F0QkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBMKHRoaXMsZSx0LCExLHIpfSx1LnByb3RvdHlwZS53cml0ZURvdWJsZUxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gRCh0aGlzLGUsdCwhMCxyKX0sdS5wcm90b3R5cGUud3JpdGVEb3VibGVCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIEQodGhpcyxlLHQsITEscil9LHUucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oZSx0LHIsbil7aWYocnx8KHI9MCksbnx8MD09PW58fChuPXRoaXMubGVuZ3RoKSx0Pj1lLmxlbmd0aCYmKHQ9ZS5sZW5ndGgpLHR8fCh0PTApLG4+MCYmbjxyJiYobj1yKSxuPT09cilyZXR1cm4gMDtpZigwPT09ZS5sZW5ndGh8fDA9PT10aGlzLmxlbmd0aClyZXR1cm4gMDtpZih0PDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoInRhcmdldFN0YXJ0IG91dCBvZiBib3VuZHMiKTtpZihyPDB8fHI+PXRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJzb3VyY2VTdGFydCBvdXQgb2YgYm91bmRzIik7aWYobjwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJzb3VyY2VFbmQgb3V0IG9mIGJvdW5kcyIpO24+dGhpcy5sZW5ndGgmJihuPXRoaXMubGVuZ3RoKSxlLmxlbmd0aC10PG4tciYmKG49ZS5sZW5ndGgtdCtyKTt2YXIgaSxvPW4tcjtpZih0aGlzPT09ZSYmcjx0JiZ0PG4pZm9yKGk9by0xO2k+PTA7LS1pKWVbaSt0XT10aGlzW2krcl07ZWxzZSBpZihvPDFlM3x8IXUuVFlQRURfQVJSQVlfU1VQUE9SVClmb3IoaT0wO2k8bzsrK2kpZVtpK3RdPXRoaXNbaStyXTtlbHNlIFVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKGUsdGhpcy5zdWJhcnJheShyLHIrbyksdCk7cmV0dXJuIG99LHUucHJvdG90eXBlLmZpbGw9ZnVuY3Rpb24oZSx0LHIsbil7aWYoInN0cmluZyI9PT10eXBlb2YgZSl7aWYoInN0cmluZyI9PT10eXBlb2YgdD8obj10LHQ9MCxyPXRoaXMubGVuZ3RoKToic3RyaW5nIj09PXR5cGVvZiByJiYobj1yLHI9dGhpcy5sZW5ndGgpLDE9PT1lLmxlbmd0aCl7dmFyIGk9ZS5jaGFyQ29kZUF0KDApO2k8MjU2JiYoZT1pKX1pZih2b2lkIDAhPT1uJiYic3RyaW5nIiE9PXR5cGVvZiBuKXRocm93IG5ldyBUeXBlRXJyb3IoImVuY29kaW5nIG11c3QgYmUgYSBzdHJpbmciKTtpZigic3RyaW5nIj09PXR5cGVvZiBuJiYhdS5pc0VuY29kaW5nKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrbil9ZWxzZSJudW1iZXIiPT09dHlwZW9mIGUmJihlJj0yNTUpO2lmKHQ8MHx8dGhpcy5sZW5ndGg8dHx8dGhpcy5sZW5ndGg8cil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiT3V0IG9mIHJhbmdlIGluZGV4Iik7aWYocjw9dClyZXR1cm4gdGhpczt2YXIgbztpZih0Pj4+PTAscj12b2lkIDA9PT1yP3RoaXMubGVuZ3RoOnI+Pj4wLGV8fChlPTApLCJudW1iZXIiPT09dHlwZW9mIGUpZm9yKG89dDtvPHI7KytvKXRoaXNbb109ZTtlbHNle3ZhciBhPXUuaXNCdWZmZXIoZSk/ZTpGKG5ldyB1KGUsbikudG9TdHJpbmcoKSkscz1hLmxlbmd0aDtmb3Iobz0wO288ci10Oysrbyl0aGlzW28rdF09YVtvJXNdfXJldHVybiB0aGlzfTt2YXIgaj0vW14rXC8wLTlBLVphLXotX10vZztmdW5jdGlvbiBVKGUpe3JldHVybiBlPDE2PyIwIitlLnRvU3RyaW5nKDE2KTplLnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBGKGUsdCl7dmFyIHI7dD10fHwxLzA7Zm9yKHZhciBuPWUubGVuZ3RoLGk9bnVsbCxvPVtdLGE9MDthPG47KythKXtpZigocj1lLmNoYXJDb2RlQXQoYSkpPjU1Mjk1JiZyPDU3MzQ0KXtpZighaSl7aWYocj41NjMxOSl7KHQtPTMpPi0xJiZvLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWlmKGErMT09PW4peyh0LT0zKT4tMSYmby5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1pPXI7Y29udGludWV9aWYocjw1NjMyMCl7KHQtPTMpPi0xJiZvLnB1c2goMjM5LDE5MSwxODkpLGk9cjtjb250aW51ZX1yPTY1NTM2KyhpLTU1Mjk2PDwxMHxyLTU2MzIwKX1lbHNlIGkmJih0LT0zKT4tMSYmby5wdXNoKDIzOSwxOTEsMTg5KTtpZihpPW51bGwscjwxMjgpe2lmKCh0LT0xKTwwKWJyZWFrO28ucHVzaChyKX1lbHNlIGlmKHI8MjA0OCl7aWYoKHQtPTIpPDApYnJlYWs7by5wdXNoKHI+PjZ8MTkyLDYzJnJ8MTI4KX1lbHNlIGlmKHI8NjU1MzYpe2lmKCh0LT0zKTwwKWJyZWFrO28ucHVzaChyPj4xMnwyMjQscj4+NiY2M3wxMjgsNjMmcnwxMjgpfWVsc2V7aWYoIShyPDExMTQxMTIpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2RlIHBvaW50Iik7aWYoKHQtPTQpPDApYnJlYWs7by5wdXNoKHI+PjE4fDI0MCxyPj4xMiY2M3wxMjgscj4+NiY2M3wxMjgsNjMmcnwxMjgpfX1yZXR1cm4gb31mdW5jdGlvbiBWKGUpe3JldHVybiBuLnRvQnl0ZUFycmF5KGZ1bmN0aW9uKGUpe2lmKChlPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRyaW0/ZS50cmltKCk6ZS5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIil9KGUpLnJlcGxhY2UoaiwiIikpLmxlbmd0aDwyKXJldHVybiIiO2Zvcig7ZS5sZW5ndGglNCE9PTA7KWUrPSI9IjtyZXR1cm4gZX0oZSkpfWZ1bmN0aW9uIHEoZSx0LHIsbil7Zm9yKHZhciBpPTA7aTxuJiYhKGkrcj49dC5sZW5ndGh8fGk+PWUubGVuZ3RoKTsrK2kpdFtpK3JdPWVbaV07cmV0dXJuIGl9fSkuY2FsbCh0aGlzLHIoMzQpKX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49cigxMzgpLGk9cigyMzEpLG89cig2NDcpLGE9cig2NDgpO3QuanNvbj1hO3ZhciBzPXIoMTM5KTt0LnNlcmlhbGl6ZVByaW1pdGl2ZXM9czt2YXIgdT1yKDIzMCk7dC5wYXJzZVByaW1pdGl2ZXM9dTt2YXIgYz1yKDEzOCk7dC5zY2hlbWFzPWM7dmFyIGY9e3NlcmlhbGl6ZXJGcm9tU2NoZW1hOmkuc2VyaWFsaXplckZyb21TY2hlbWEsc2VyaWFsaXplVHg6aS5zZXJpYWxpemVUeCxzZXJpYWxpemVPcmRlcjppLnNlcmlhbGl6ZU9yZGVyLHBhcnNlckZyb21TY2hlbWE6by5wYXJzZXJGcm9tU2NoZW1hLHBhcnNlVHg6by5wYXJzZVR4LHBhcnNlT3JkZXI6by5wYXJzZU9yZGVyfTtmdW5jdGlvbiBsKGUsdCxyLG4pe3ZhciBhPWkuc2VyaWFsaXplckZyb21TY2hlbWEodCxuKSxzPW8ucGFyc2VyRnJvbVNjaGVtYSh0LHIpKGEoZSkpLnZhbHVlO3JldHVybiBPYmplY3QuYXNzaWduKHt9LGUscyl9dC5iaW5hcnk9Zix0LmNvbnZlcnRMb25nRmllbGRzPWwsdC5jb252ZXJ0VHhMb25nRmllbGRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1lLnR5cGUsbz1lLnZlcnNpb247cmV0dXJuIGwoZSxuLmdldFRyYW5zYWN0aW9uU2NoZW1hKGksbyksdCxyKX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG47T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpPXIoMzA1KSxvPXIoMzA3KTt0LnNlZWRXb3Jkc0xpc3Q9by5zZWVkV29yZHNMaXN0O3ZhciBhPXIoMzYwKTt0LkNoYWlkSWQ9YS5DaGFpZElkO3ZhciBzPXIoMzU5KTt0LlNlZWQ9cy5TZWVkO3ZhciB1PXIoMjI4KTt0LmlzUHJpdmF0ZUtleT11LmlzUHJpdmF0ZUtleSx0LmlzUHVibGljS2V5PXUuaXNQdWJsaWNLZXk7dmFyIGM9cigzMDUpO3QuY3J5cHRvPWMuY3J5cHRvLGZ1bmN0aW9uKGUpe2Zvcih2YXIgciBpbiBlKXQuaGFzT3duUHJvcGVydHkocil8fCh0W3JdPWVbcl0pfShyKDEzNykpLHQuc2lnbkJ5dGVzPShuPWkuY3J5cHRvKHtvdXRwdXQ6IkJhc2U1OCJ9KSkuc2lnbkJ5dGVzLHQua2V5UGFpcj1uLmtleVBhaXIsdC5wdWJsaWNLZXk9bi5wdWJsaWNLZXksdC5wcml2YXRlS2V5PW4ucHJpdmF0ZUtleSx0LmFkZHJlc3M9bi5hZGRyZXNzLHQuYmxha2UyYj1uLmJsYWtlMmIsdC5rZWNjYWs9bi5rZWNjYWssdC5zaGEyNTY9bi5zaGEyNTYsdC5zaGFyZWRLZXk9bi5zaGFyZWRLZXksdC5zZWVkV2l0aE5vbmNlPW4uc2VlZFdpdGhOb25jZSx0LmJhc2U2NEVuY29kZT1uLmJhc2U2NEVuY29kZSx0LmJhc2U2NERlY29kZT1uLmJhc2U2NERlY29kZSx0LmJhc2U1OEVuY29kZT1uLmJhc2U1OEVuY29kZSx0LmJhc2U1OERlY29kZT1uLmJhc2U1OERlY29kZSx0LmJhc2UxNkVuY29kZT1uLmJhc2UxNkVuY29kZSx0LmJhc2UxNkRlY29kZT1uLmJhc2UxNkRlY29kZSx0LnN0cmluZ1RvQnl0ZXM9bi5zdHJpbmdUb0J5dGVzLHQuYnl0ZXNUb1N0cmluZz1uLmJ5dGVzVG9TdHJpbmcsdC5yYW5kb209bi5yYW5kb20sdC5yYW5kb21TZWVkPW4ucmFuZG9tU2VlZCx0LnJhbmRvbUJ5dGVzPW4ucmFuZG9tQnl0ZXMsdC52ZXJpZnlTaWduYXR1cmU9bi52ZXJpZnlTaWduYXR1cmUsdC52ZXJpZnlQdWJsaWNLZXk9bi52ZXJpZnlQdWJsaWNLZXksdC52ZXJpZnlBZGRyZXNzPW4udmVyaWZ5QWRkcmVzcyx0Lm1lc3NhZ2VEZWNyeXB0PW4ubWVzc2FnZURlY3J5cHQsdC5tZXNzYWdlRW5jcnlwdD1uLm1lc3NhZ2VFbmNyeXB0LHQuZW5jcnlwdFNlZWQ9bi5lbmNyeXB0U2VlZCx0LmRlY3J5cHRTZWVkPW4uZGVjcnlwdFNlZWQsdC5yc2FLZXlQYWlyPW4ucnNhS2V5UGFpcix0LnJzYUtleVBhaXJTeW5jPW4ucnNhS2V5UGFpclN5bmMsdC5yc2FTaWduPW4ucnNhU2lnbix0LnJzYVZlcmlmeT1uLnJzYVZlcmlmeSx0LmFlc0RlY3J5cHQ9bi5hZXNEZWNyeXB0LHQuYWVzRW5jcnlwdD1uLmFlc0VuY3J5cHQsdC5zcGxpdD1uLnNwbGl0LHQuY29uY2F0PW4uY29uY2F0fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNzgpKCJ3a3MiKSxpPXIoOTQpLG89cigxNykuU3ltYm9sLGE9ImZ1bmN0aW9uIj09dHlwZW9mIG87KGUuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbltlXXx8KG5bZV09YSYmb1tlXXx8KGE/bzppKSgiU3ltYm9sLiIrZSkpfSkuc3RvcmU9bn0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNTQyKSxpPXIoNTQzKSxvPXIoNTQ0KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbihlKXx8aShlLHQpfHxvKCl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig2MCksaT1NYXRoLm1pbjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGU+MD9pKG4oZSksOTAwNzE5OTI1NDc0MDk5MSk6MH19LGZ1bmN0aW9uKGUsdCxyKXsoZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0KXtpZighZSl0aHJvdyBuZXcgRXJyb3IodHx8IkFzc2VydGlvbiBmYWlsZWQiKX1mdW5jdGlvbiBpKGUsdCl7ZS5zdXBlcl89dDt2YXIgcj1mdW5jdGlvbigpe307ci5wcm90b3R5cGU9dC5wcm90b3R5cGUsZS5wcm90b3R5cGU9bmV3IHIsZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZX1mdW5jdGlvbiBvKGUsdCxyKXtpZihvLmlzQk4oZSkpcmV0dXJuIGU7dGhpcy5uZWdhdGl2ZT0wLHRoaXMud29yZHM9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMucmVkPW51bGwsbnVsbCE9PWUmJigibGUiIT09dCYmImJlIiE9PXR8fChyPXQsdD0xMCksdGhpcy5faW5pdChlfHwwLHR8fDEwLHJ8fCJiZSIpKX12YXIgYTsib2JqZWN0Ij09PXR5cGVvZiBlP2UuZXhwb3J0cz1vOnQuQk49byxvLkJOPW8sby53b3JkU2l6ZT0yNjt0cnl7YT1yKDU4NSkuQnVmZmVyfWNhdGNoKFQpe31mdW5jdGlvbiBzKGUsdCxyKXtmb3IodmFyIG49MCxpPU1hdGgubWluKGUubGVuZ3RoLHIpLG89dDtvPGk7bysrKXt2YXIgYT1lLmNoYXJDb2RlQXQobyktNDg7bjw8PTQsbnw9YT49NDkmJmE8PTU0P2EtNDkrMTA6YT49MTcmJmE8PTIyP2EtMTcrMTA6MTUmYX1yZXR1cm4gbn1mdW5jdGlvbiB1KGUsdCxyLG4pe2Zvcih2YXIgaT0wLG89TWF0aC5taW4oZS5sZW5ndGgsciksYT10O2E8bzthKyspe3ZhciBzPWUuY2hhckNvZGVBdChhKS00ODtpKj1uLGkrPXM+PTQ5P3MtNDkrMTA6cz49MTc/cy0xNysxMDpzfXJldHVybiBpfW8uaXNCTj1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIG98fG51bGwhPT1lJiYib2JqZWN0Ij09PXR5cGVvZiBlJiZlLmNvbnN0cnVjdG9yLndvcmRTaXplPT09by53b3JkU2l6ZSYmQXJyYXkuaXNBcnJheShlLndvcmRzKX0sby5tYXg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jbXAodCk+MD9lOnR9LG8ubWluPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY21wKHQpPDA/ZTp0fSxvLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbihlLHQscil7aWYoIm51bWJlciI9PT10eXBlb2YgZSlyZXR1cm4gdGhpcy5faW5pdE51bWJlcihlLHQscik7aWYoIm9iamVjdCI9PT10eXBlb2YgZSlyZXR1cm4gdGhpcy5faW5pdEFycmF5KGUsdCxyKTsiaGV4Ij09PXQmJih0PTE2KSxuKHQ9PT0oMHx0KSYmdD49MiYmdDw9MzYpO3ZhciBpPTA7Ii0iPT09KGU9ZS50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCIiKSlbMF0mJmkrKywxNj09PXQ/dGhpcy5fcGFyc2VIZXgoZSxpKTp0aGlzLl9wYXJzZUJhc2UoZSx0LGkpLCItIj09PWVbMF0mJih0aGlzLm5lZ2F0aXZlPTEpLHRoaXMuc3RyaXAoKSwibGUiPT09ciYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLHQscil9LG8ucHJvdG90eXBlLl9pbml0TnVtYmVyPWZ1bmN0aW9uKGUsdCxyKXtlPDAmJih0aGlzLm5lZ2F0aXZlPTEsZT0tZSksZTw2NzEwODg2ND8odGhpcy53b3Jkcz1bNjcxMDg4NjMmZV0sdGhpcy5sZW5ndGg9MSk6ZTw0NTAzNTk5NjI3MzcwNDk2Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZlLGUvNjcxMDg4NjQmNjcxMDg4NjNdLHRoaXMubGVuZ3RoPTIpOihuKGU8OTAwNzE5OTI1NDc0MDk5MiksdGhpcy53b3Jkcz1bNjcxMDg4NjMmZSxlLzY3MTA4ODY0JjY3MTA4ODYzLDFdLHRoaXMubGVuZ3RoPTMpLCJsZSI9PT1yJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksdCxyKX0sby5wcm90b3R5cGUuX2luaXRBcnJheT1mdW5jdGlvbihlLHQscil7aWYobigibnVtYmVyIj09PXR5cGVvZiBlLmxlbmd0aCksZS5sZW5ndGg8PTApcmV0dXJuIHRoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTEsdGhpczt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoZS5sZW5ndGgvMyksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgaT0wO2k8dGhpcy5sZW5ndGg7aSsrKXRoaXMud29yZHNbaV09MDt2YXIgbyxhLHM9MDtpZigiYmUiPT09cilmb3IoaT1lLmxlbmd0aC0xLG89MDtpPj0wO2ktPTMpYT1lW2ldfGVbaS0xXTw8OHxlW2ktMl08PDE2LHRoaXMud29yZHNbb118PWE8PHMmNjcxMDg4NjMsdGhpcy53b3Jkc1tvKzFdPWE+Pj4yNi1zJjY3MTA4ODYzLChzKz0yNCk+PTI2JiYocy09MjYsbysrKTtlbHNlIGlmKCJsZSI9PT1yKWZvcihpPTAsbz0wO2k8ZS5sZW5ndGg7aSs9MylhPWVbaV18ZVtpKzFdPDw4fGVbaSsyXTw8MTYsdGhpcy53b3Jkc1tvXXw9YTw8cyY2NzEwODg2Myx0aGlzLndvcmRzW28rMV09YT4+PjI2LXMmNjcxMDg4NjMsKHMrPTI0KT49MjYmJihzLT0yNixvKyspO3JldHVybiB0aGlzLnN0cmlwKCl9LG8ucHJvdG90eXBlLl9wYXJzZUhleD1mdW5jdGlvbihlLHQpe3RoaXMubGVuZ3RoPU1hdGguY2VpbCgoZS5sZW5ndGgtdCkvNiksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgcj0wO3I8dGhpcy5sZW5ndGg7cisrKXRoaXMud29yZHNbcl09MDt2YXIgbixpLG89MDtmb3Iocj1lLmxlbmd0aC02LG49MDtyPj10O3ItPTYpaT1zKGUscixyKzYpLHRoaXMud29yZHNbbl18PWk8PG8mNjcxMDg4NjMsdGhpcy53b3Jkc1tuKzFdfD1pPj4+MjYtbyY0MTk0MzAzLChvKz0yNCk+PTI2JiYoby09MjYsbisrKTtyKzYhPT10JiYoaT1zKGUsdCxyKzYpLHRoaXMud29yZHNbbl18PWk8PG8mNjcxMDg4NjMsdGhpcy53b3Jkc1tuKzFdfD1pPj4+MjYtbyY0MTk0MzAzKSx0aGlzLnN0cmlwKCl9LG8ucHJvdG90eXBlLl9wYXJzZUJhc2U9ZnVuY3Rpb24oZSx0LHIpe3RoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTE7Zm9yKHZhciBuPTAsaT0xO2k8PTY3MTA4ODYzO2kqPXQpbisrO24tLSxpPWkvdHwwO2Zvcih2YXIgbz1lLmxlbmd0aC1yLGE9byVuLHM9TWF0aC5taW4obyxvLWEpK3IsYz0wLGY9cjtmPHM7Zis9biljPXUoZSxmLGYrbix0KSx0aGlzLmltdWxuKGkpLHRoaXMud29yZHNbMF0rYzw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1jOnRoaXMuX2lhZGRuKGMpO2lmKDAhPT1hKXt2YXIgbD0xO2ZvcihjPXUoZSxmLGUubGVuZ3RoLHQpLGY9MDtmPGE7ZisrKWwqPXQ7dGhpcy5pbXVsbihsKSx0aGlzLndvcmRzWzBdK2M8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9Yzp0aGlzLl9pYWRkbihjKX19LG8ucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oZSl7ZS53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgdD0wO3Q8dGhpcy5sZW5ndGg7dCsrKWUud29yZHNbdF09dGhpcy53b3Jkc1t0XTtlLmxlbmd0aD10aGlzLmxlbmd0aCxlLm5lZ2F0aXZlPXRoaXMubmVnYXRpdmUsZS5yZWQ9dGhpcy5yZWR9LG8ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFyIGU9bmV3IG8obnVsbCk7cmV0dXJuIHRoaXMuY29weShlKSxlfSxvLnByb3RvdHlwZS5fZXhwYW5kPWZ1bmN0aW9uKGUpe2Zvcig7dGhpcy5sZW5ndGg8ZTspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO3JldHVybiB0aGlzfSxvLnByb3RvdHlwZS5zdHJpcD1mdW5jdGlvbigpe2Zvcig7dGhpcy5sZW5ndGg+MSYmMD09PXRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV07KXRoaXMubGVuZ3RoLS07cmV0dXJuIHRoaXMuX25vcm1TaWduKCl9LG8ucHJvdG90eXBlLl9ub3JtU2lnbj1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdJiYodGhpcy5uZWdhdGl2ZT0wKSx0aGlzfSxvLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMucmVkPyI8Qk4tUjogIjoiPEJOOiAiKSt0aGlzLnRvU3RyaW5nKDE2KSsiPiJ9O3ZhciBjPVsiIiwiMCIsIjAwIiwiMDAwIiwiMDAwMCIsIjAwMDAwIiwiMDAwMDAwIiwiMDAwMDAwMCIsIjAwMDAwMDAwIiwiMDAwMDAwMDAwIiwiMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCJdLGY9WzAsMCwyNSwxNiwxMiwxMSwxMCw5LDgsOCw3LDcsNyw3LDYsNiw2LDYsNiw2LDYsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNV0sbD1bMCwwLDMzNTU0NDMyLDQzMDQ2NzIxLDE2Nzc3MjE2LDQ4ODI4MTI1LDYwNDY2MTc2LDQwMzUzNjA3LDE2Nzc3MjE2LDQzMDQ2NzIxLDFlNywxOTQ4NzE3MSwzNTgzMTgwOCw2Mjc0ODUxNyw3NTI5NTM2LDExMzkwNjI1LDE2Nzc3MjE2LDI0MTM3NTY5LDM0MDEyMjI0LDQ3MDQ1ODgxLDY0ZTYsNDA4NDEwMSw1MTUzNjMyLDY0MzYzNDMsNzk2MjYyNCw5NzY1NjI1LDExODgxMzc2LDE0MzQ4OTA3LDE3MjEwMzY4LDIwNTExMTQ5LDI0M2U1LDI4NjI5MTUxLDMzNTU0NDMyLDM5MTM1MzkzLDQ1NDM1NDI0LDUyNTIxODc1LDYwNDY2MTc2XTtmdW5jdGlvbiBoKGUsdCxyKXtyLm5lZ2F0aXZlPXQubmVnYXRpdmVeZS5uZWdhdGl2ZTt2YXIgbj1lLmxlbmd0aCt0Lmxlbmd0aHwwO3IubGVuZ3RoPW4sbj1uLTF8MDt2YXIgaT0wfGUud29yZHNbMF0sbz0wfHQud29yZHNbMF0sYT1pKm8scz02NzEwODg2MyZhLHU9YS82NzEwODg2NHwwO3Iud29yZHNbMF09cztmb3IodmFyIGM9MTtjPG47YysrKXtmb3IodmFyIGY9dT4+PjI2LGw9NjcxMDg4NjMmdSxoPU1hdGgubWluKGMsdC5sZW5ndGgtMSkscD1NYXRoLm1heCgwLGMtZS5sZW5ndGgrMSk7cDw9aDtwKyspe3ZhciBkPWMtcHwwO2YrPShhPShpPTB8ZS53b3Jkc1tkXSkqKG89MHx0LndvcmRzW3BdKStsKS82NzEwODg2NHwwLGw9NjcxMDg4NjMmYX1yLndvcmRzW2NdPTB8bCx1PTB8Zn1yZXR1cm4gMCE9PXU/ci53b3Jkc1tjXT0wfHU6ci5sZW5ndGgtLSxyLnN0cmlwKCl9by5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oZSx0KXt2YXIgcjtpZih0PTB8dHx8MSwxNj09PShlPWV8fDEwKXx8ImhleCI9PT1lKXtyPSIiO2Zvcih2YXIgaT0wLG89MCxhPTA7YTx0aGlzLmxlbmd0aDthKyspe3ZhciBzPXRoaXMud29yZHNbYV0sdT0oMTY3NzcyMTUmKHM8PGl8bykpLnRvU3RyaW5nKDE2KTtyPTAhPT0obz1zPj4+MjQtaSYxNjc3NzIxNSl8fGEhPT10aGlzLmxlbmd0aC0xP2NbNi11Lmxlbmd0aF0rdStyOnUrciwoaSs9Mik+PTI2JiYoaS09MjYsYS0tKX1mb3IoMCE9PW8mJihyPW8udG9TdHJpbmcoMTYpK3IpO3IubGVuZ3RoJXQhPT0wOylyPSIwIityO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKHI9Ii0iK3IpLHJ9aWYoZT09PSgwfGUpJiZlPj0yJiZlPD0zNil7dmFyIGg9ZltlXSxwPWxbZV07cj0iIjt2YXIgZD10aGlzLmNsb25lKCk7Zm9yKGQubmVnYXRpdmU9MDshZC5pc1plcm8oKTspe3ZhciB5PWQubW9kbihwKS50b1N0cmluZyhlKTtyPShkPWQuaWRpdm4ocCkpLmlzWmVybygpP3krcjpjW2gteS5sZW5ndGhdK3krcn1mb3IodGhpcy5pc1plcm8oKSYmKHI9IjAiK3IpO3IubGVuZ3RoJXQhPT0wOylyPSIwIityO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKHI9Ii0iK3IpLHJ9bighMSwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNiIpfSxvLnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciBlPXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD9lKz02NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/ZSs9NDUwMzU5OTYyNzM3MDQ5Nis2NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJm4oITEsIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZlPy1lOmV9LG8ucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2KX0sby5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbigidW5kZWZpbmVkIiE9PXR5cGVvZiBhKSx0aGlzLnRvQXJyYXlMaWtlKGEsZSx0KX0sby5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LGUsdCl9LG8ucHJvdG90eXBlLnRvQXJyYXlMaWtlPWZ1bmN0aW9uKGUsdCxyKXt2YXIgaT10aGlzLmJ5dGVMZW5ndGgoKSxvPXJ8fE1hdGgubWF4KDEsaSk7bihpPD1vLCJieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoIiksbihvPjAsIlJlcXVlc3RlZCBhcnJheSBsZW5ndGggPD0gMCIpLHRoaXMuc3RyaXAoKTt2YXIgYSxzLHU9ImxlIj09PXQsYz1uZXcgZShvKSxmPXRoaXMuY2xvbmUoKTtpZih1KXtmb3Iocz0wOyFmLmlzWmVybygpO3MrKylhPWYuYW5kbG4oMjU1KSxmLml1c2hybig4KSxjW3NdPWE7Zm9yKDtzPG87cysrKWNbc109MH1lbHNle2ZvcihzPTA7czxvLWk7cysrKWNbc109MDtmb3Iocz0wOyFmLmlzWmVybygpO3MrKylhPWYuYW5kbG4oMjU1KSxmLml1c2hybig4KSxjW28tcy0xXT1hfXJldHVybiBjfSxNYXRoLmNsejMyP28ucHJvdG90eXBlLl9jb3VudEJpdHM9ZnVuY3Rpb24oZSl7cmV0dXJuIDMyLU1hdGguY2x6MzIoZSl9Om8ucHJvdG90eXBlLl9jb3VudEJpdHM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZSxyPTA7cmV0dXJuIHQ+PTQwOTYmJihyKz0xMyx0Pj4+PTEzKSx0Pj02NCYmKHIrPTcsdD4+Pj03KSx0Pj04JiYocis9NCx0Pj4+PTQpLHQ+PTImJihyKz0yLHQ+Pj49Mikscit0fSxvLnByb3RvdHlwZS5femVyb0JpdHM9ZnVuY3Rpb24oZSl7aWYoMD09PWUpcmV0dXJuIDI2O3ZhciB0PWUscj0wO3JldHVybiAwPT09KDgxOTEmdCkmJihyKz0xMyx0Pj4+PTEzKSwwPT09KDEyNyZ0KSYmKHIrPTcsdD4+Pj03KSwwPT09KDE1JnQpJiYocis9NCx0Pj4+PTQpLDA9PT0oMyZ0KSYmKHIrPTIsdD4+Pj0yKSwwPT09KDEmdCkmJnIrKyxyfSxvLnByb3RvdHlwZS5iaXRMZW5ndGg9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdLHQ9dGhpcy5fY291bnRCaXRzKGUpO3JldHVybiAyNioodGhpcy5sZW5ndGgtMSkrdH0sby5wcm90b3R5cGUuemVyb0JpdHM9ZnVuY3Rpb24oKXtpZih0aGlzLmlzWmVybygpKXJldHVybiAwO2Zvcih2YXIgZT0wLHQ9MDt0PHRoaXMubGVuZ3RoO3QrKyl7dmFyIHI9dGhpcy5femVyb0JpdHModGhpcy53b3Jkc1t0XSk7aWYoZSs9ciwyNiE9PXIpYnJlYWt9cmV0dXJuIGV9LG8ucHJvdG90eXBlLmJ5dGVMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5jZWlsKA==",
    "2019.12.27 16:40": "base64:d3JpdGU9ZnVuY3Rpb24oZSx0LHIsbil7aWYodm9pZCAwPT09dCluPSJ1dGY4IixyPXRoaXMubGVuZ3RoLHQ9MDtlbHNlIGlmKHZvaWQgMD09PXImJiJzdHJpbmciPT09dHlwZW9mIHQpbj10LHI9dGhpcy5sZW5ndGgsdD0wO2Vsc2V7aWYoIWlzRmluaXRlKHQpKXRocm93IG5ldyBFcnJvcigiQnVmZmVyLndyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldFssIGxlbmd0aF0pIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQiKTt0fD0wLGlzRmluaXRlKHIpPyhyfD0wLHZvaWQgMD09PW4mJihuPSJ1dGY4IikpOihuPXIscj12b2lkIDApfXZhciBpPXRoaXMubGVuZ3RoLXQ7aWYoKHZvaWQgMD09PXJ8fHI+aSkmJihyPWkpLGUubGVuZ3RoPjAmJihyPDB8fHQ8MCl8fHQ+dGhpcy5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkF0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzIik7bnx8KG49InV0ZjgiKTtmb3IodmFyIG89ITE7Oylzd2l0Y2gobil7Y2FzZSJoZXgiOnJldHVybiBtKHRoaXMsZSx0LHIpO2Nhc2UidXRmOCI6Y2FzZSJ1dGYtOCI6cmV0dXJuIGIodGhpcyxlLHQscik7Y2FzZSJhc2NpaSI6cmV0dXJuIF8odGhpcyxlLHQscik7Y2FzZSJsYXRpbjEiOmNhc2UiYmluYXJ5IjpyZXR1cm4gUyh0aGlzLGUsdCxyKTtjYXNlImJhc2U2NCI6cmV0dXJuIEUodGhpcyxlLHQscik7Y2FzZSJ1Y3MyIjpjYXNlInVjcy0yIjpjYXNlInV0ZjE2bGUiOmNhc2UidXRmLTE2bGUiOnJldHVybiB3KHRoaXMsZSx0LHIpO2RlZmF1bHQ6aWYobyl0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGVuY29kaW5nOiAiK24pO249KCIiK24pLnRvTG93ZXJDYXNlKCksbz0hMH19LHUucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnt0eXBlOiJCdWZmZXIiLGRhdGE6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyfHx0aGlzLDApfX07dmFyIEM9NDA5NjtmdW5jdGlvbiB4KGUsdCxyKXt2YXIgbj0iIjtyPU1hdGgubWluKGUubGVuZ3RoLHIpO2Zvcih2YXIgaT10O2k8cjsrK2kpbis9U3RyaW5nLmZyb21DaGFyQ29kZSgxMjcmZVtpXSk7cmV0dXJuIG59ZnVuY3Rpb24gSShlLHQscil7dmFyIG49IiI7cj1NYXRoLm1pbihlLmxlbmd0aCxyKTtmb3IodmFyIGk9dDtpPHI7KytpKW4rPVN0cmluZy5mcm9tQ2hhckNvZGUoZVtpXSk7cmV0dXJuIG59ZnVuY3Rpb24gayhlLHQscil7dmFyIG49ZS5sZW5ndGg7KCF0fHx0PDApJiYodD0wKSwoIXJ8fHI8MHx8cj5uKSYmKHI9bik7Zm9yKHZhciBpPSIiLG89dDtvPHI7KytvKWkrPVUoZVtvXSk7cmV0dXJuIGl9ZnVuY3Rpb24gTyhlLHQscil7Zm9yKHZhciBuPWUuc2xpY2UodCxyKSxpPSIiLG89MDtvPG4ubGVuZ3RoO28rPTIpaSs9U3RyaW5nLmZyb21DaGFyQ29kZShuW29dKzI1NipuW28rMV0pO3JldHVybiBpfWZ1bmN0aW9uIE4oZSx0LHIpe2lmKGUlMSE9PTB8fGU8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigib2Zmc2V0IGlzIG5vdCB1aW50Iik7aWYoZSt0PnIpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgiKX1mdW5jdGlvbiBQKGUsdCxyLG4saSxvKXtpZighdS5pc0J1ZmZlcihlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCciYnVmZmVyIiBhcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyIGluc3RhbmNlJyk7aWYodD5pfHx0PG8pdGhyb3cgbmV3IFJhbmdlRXJyb3IoJyJ2YWx1ZSIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpO2lmKHIrbj5lLmxlbmd0aCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gUihlLHQscixuKXt0PDAmJih0PTY1NTM1K3QrMSk7Zm9yKHZhciBpPTAsbz1NYXRoLm1pbihlLmxlbmd0aC1yLDIpO2k8bzsrK2kpZVtyK2ldPSh0JjI1NTw8OCoobj9pOjEtaSkpPj4+OCoobj9pOjEtaSl9ZnVuY3Rpb24gQihlLHQscixuKXt0PDAmJih0PTQyOTQ5NjcyOTUrdCsxKTtmb3IodmFyIGk9MCxvPU1hdGgubWluKGUubGVuZ3RoLXIsNCk7aTxvOysraSllW3IraV09dD4+PjgqKG4/aTozLWkpJjI1NX1mdW5jdGlvbiBNKGUsdCxyLG4saSxvKXtpZihyK24+ZS5sZW5ndGgpdGhyb3cgbmV3IFJhbmdlRXJyb3IoIkluZGV4IG91dCBvZiByYW5nZSIpO2lmKHI8MCl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiSW5kZXggb3V0IG9mIHJhbmdlIil9ZnVuY3Rpb24gTChlLHQscixuLG8pe3JldHVybiBvfHxNKGUsMCxyLDQpLGkud3JpdGUoZSx0LHIsbiwyMyw0KSxyKzR9ZnVuY3Rpb24gRChlLHQscixuLG8pe3JldHVybiBvfHxNKGUsMCxyLDgpLGkud3JpdGUoZSx0LHIsbiw1Miw4KSxyKzh9dS5wcm90b3R5cGUuc2xpY2U9ZnVuY3Rpb24oZSx0KXt2YXIgcixuPXRoaXMubGVuZ3RoO2lmKChlPX5+ZSk8MD8oZSs9bik8MCYmKGU9MCk6ZT5uJiYoZT1uKSwodD12b2lkIDA9PT10P246fn50KTwwPyh0Kz1uKTwwJiYodD0wKTp0Pm4mJih0PW4pLHQ8ZSYmKHQ9ZSksdS5UWVBFRF9BUlJBWV9TVVBQT1JUKShyPXRoaXMuc3ViYXJyYXkoZSx0KSkuX19wcm90b19fPXUucHJvdG90eXBlO2Vsc2V7dmFyIGk9dC1lO3I9bmV3IHUoaSx2b2lkIDApO2Zvcih2YXIgbz0wO288aTsrK28pcltvXT10aGlzW28rZV19cmV0dXJuIHJ9LHUucHJvdG90eXBlLnJlYWRVSW50TEU9ZnVuY3Rpb24oZSx0LHIpe2V8PTAsdHw9MCxyfHxOKGUsdCx0aGlzLmxlbmd0aCk7Zm9yKHZhciBuPXRoaXNbZV0saT0xLG89MDsrK288dCYmKGkqPTI1Nik7KW4rPXRoaXNbZStvXSppO3JldHVybiBufSx1LnByb3RvdHlwZS5yZWFkVUludEJFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8TihlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW2UrLS10XSxpPTE7dD4wJiYoaSo9MjU2KTspbis9dGhpc1tlKy0tdF0qaTtyZXR1cm4gbn0sdS5wcm90b3R5cGUucmVhZFVJbnQ4PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fE4oZSwxLHRoaXMubGVuZ3RoKSx0aGlzW2VdfSx1LnByb3RvdHlwZS5yZWFkVUludDE2TEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8TihlLDIsdGhpcy5sZW5ndGgpLHRoaXNbZV18dGhpc1tlKzFdPDw4fSx1LnByb3RvdHlwZS5yZWFkVUludDE2QkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8TihlLDIsdGhpcy5sZW5ndGgpLHRoaXNbZV08PDh8dGhpc1tlKzFdfSx1LnByb3RvdHlwZS5yZWFkVUludDMyTEU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8TihlLDQsdGhpcy5sZW5ndGgpLCh0aGlzW2VdfHRoaXNbZSsxXTw8OHx0aGlzW2UrMl08PDE2KSsxNjc3NzIxNip0aGlzW2UrM119LHUucHJvdG90eXBlLnJlYWRVSW50MzJCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxOKGUsNCx0aGlzLmxlbmd0aCksMTY3NzcyMTYqdGhpc1tlXSsodGhpc1tlKzFdPDwxNnx0aGlzW2UrMl08PDh8dGhpc1tlKzNdKX0sdS5wcm90b3R5cGUucmVhZEludExFPWZ1bmN0aW9uKGUsdCxyKXtlfD0wLHR8PTAscnx8TihlLHQsdGhpcy5sZW5ndGgpO2Zvcih2YXIgbj10aGlzW2VdLGk9MSxvPTA7KytvPHQmJihpKj0yNTYpOyluKz10aGlzW2Urb10qaTtyZXR1cm4gbj49KGkqPTEyOCkmJihuLT1NYXRoLnBvdygyLDgqdCkpLG59LHUucHJvdG90eXBlLnJlYWRJbnRCRT1mdW5jdGlvbihlLHQscil7ZXw9MCx0fD0wLHJ8fE4oZSx0LHRoaXMubGVuZ3RoKTtmb3IodmFyIG49dCxpPTEsbz10aGlzW2UrLS1uXTtuPjAmJihpKj0yNTYpOylvKz10aGlzW2UrLS1uXSppO3JldHVybiBvPj0oaSo9MTI4KSYmKG8tPU1hdGgucG93KDIsOCp0KSksb30sdS5wcm90b3R5cGUucmVhZEludDg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8TihlLDEsdGhpcy5sZW5ndGgpLDEyOCZ0aGlzW2VdPy0xKigyNTUtdGhpc1tlXSsxKTp0aGlzW2VdfSx1LnByb3RvdHlwZS5yZWFkSW50MTZMRT1mdW5jdGlvbihlLHQpe3R8fE4oZSwyLHRoaXMubGVuZ3RoKTt2YXIgcj10aGlzW2VdfHRoaXNbZSsxXTw8ODtyZXR1cm4gMzI3Njgmcj80Mjk0OTAxNzYwfHI6cn0sdS5wcm90b3R5cGUucmVhZEludDE2QkU9ZnVuY3Rpb24oZSx0KXt0fHxOKGUsMix0aGlzLmxlbmd0aCk7dmFyIHI9dGhpc1tlKzFdfHRoaXNbZV08PDg7cmV0dXJuIDMyNzY4JnI/NDI5NDkwMTc2MHxyOnJ9LHUucHJvdG90eXBlLnJlYWRJbnQzMkxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fE4oZSw0LHRoaXMubGVuZ3RoKSx0aGlzW2VdfHRoaXNbZSsxXTw8OHx0aGlzW2UrMl08PDE2fHRoaXNbZSszXTw8MjR9LHUucHJvdG90eXBlLnJlYWRJbnQzMkJFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fE4oZSw0LHRoaXMubGVuZ3RoKSx0aGlzW2VdPDwyNHx0aGlzW2UrMV08PDE2fHRoaXNbZSsyXTw8OHx0aGlzW2UrM119LHUucHJvdG90eXBlLnJlYWRGbG9hdExFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fE4oZSw0LHRoaXMubGVuZ3RoKSxpLnJlYWQodGhpcyxlLCEwLDIzLDQpfSx1LnByb3RvdHlwZS5yZWFkRmxvYXRCRT1mdW5jdGlvbihlLHQpe3JldHVybiB0fHxOKGUsNCx0aGlzLmxlbmd0aCksaS5yZWFkKHRoaXMsZSwhMSwyMyw0KX0sdS5wcm90b3R5cGUucmVhZERvdWJsZUxFPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHR8fE4oZSw4LHRoaXMubGVuZ3RoKSxpLnJlYWQodGhpcyxlLCEwLDUyLDgpfSx1LnByb3RvdHlwZS5yZWFkRG91YmxlQkU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdHx8TihlLDgsdGhpcy5sZW5ndGgpLGkucmVhZCh0aGlzLGUsITEsNTIsOCl9LHUucHJvdG90eXBlLndyaXRlVUludExFPWZ1bmN0aW9uKGUsdCxyLG4peyhlPStlLHR8PTAscnw9MCxuKXx8UCh0aGlzLGUsdCxyLE1hdGgucG93KDIsOCpyKS0xLDApO3ZhciBpPTEsbz0wO2Zvcih0aGlzW3RdPTI1NSZlOysrbzxyJiYoaSo9MjU2KTspdGhpc1t0K29dPWUvaSYyNTU7cmV0dXJuIHQrcn0sdS5wcm90b3R5cGUud3JpdGVVSW50QkU9ZnVuY3Rpb24oZSx0LHIsbil7KGU9K2UsdHw9MCxyfD0wLG4pfHxQKHRoaXMsZSx0LHIsTWF0aC5wb3coMiw4KnIpLTEsMCk7dmFyIGk9ci0xLG89MTtmb3IodGhpc1t0K2ldPTI1NSZlOy0taT49MCYmKG8qPTI1Nik7KXRoaXNbdCtpXT1lL28mMjU1O3JldHVybiB0K3J9LHUucHJvdG90eXBlLndyaXRlVUludDg9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8UCh0aGlzLGUsdCwxLDI1NSwwKSx1LlRZUEVEX0FSUkFZX1NVUFBPUlR8fChlPU1hdGguZmxvb3IoZSkpLHRoaXNbdF09MjU1JmUsdCsxfSx1LnByb3RvdHlwZS53cml0ZVVJbnQxNkxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fFAodGhpcyxlLHQsMiw2NTUzNSwwKSx1LlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44KTpSKHRoaXMsZSx0LCEwKSx0KzJ9LHUucHJvdG90eXBlLndyaXRlVUludDE2QkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8UCh0aGlzLGUsdCwyLDY1NTM1LDApLHUuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+OCx0aGlzW3QrMV09MjU1JmUpOlIodGhpcyxlLHQsITEpLHQrMn0sdS5wcm90b3R5cGUud3JpdGVVSW50MzJMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxQKHRoaXMsZSx0LDQsNDI5NDk2NzI5NSwwKSx1LlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdCszXT1lPj4+MjQsdGhpc1t0KzJdPWU+Pj4xNix0aGlzW3QrMV09ZT4+PjgsdGhpc1t0XT0yNTUmZSk6Qih0aGlzLGUsdCwhMCksdCs0fSx1LnByb3RvdHlwZS53cml0ZVVJbnQzMkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fFAodGhpcyxlLHQsNCw0Mjk0OTY3Mjk1LDApLHUuVFlQRURfQVJSQVlfU1VQUE9SVD8odGhpc1t0XT1lPj4+MjQsdGhpc1t0KzFdPWU+Pj4xNix0aGlzW3QrMl09ZT4+PjgsdGhpc1t0KzNdPTI1NSZlKTpCKHRoaXMsZSx0LCExKSx0KzR9LHUucHJvdG90eXBlLndyaXRlSW50TEU9ZnVuY3Rpb24oZSx0LHIsbil7aWYoZT0rZSx0fD0wLCFuKXt2YXIgaT1NYXRoLnBvdygyLDgqci0xKTtQKHRoaXMsZSx0LHIsaS0xLC1pKX12YXIgbz0wLGE9MSxzPTA7Zm9yKHRoaXNbdF09MjU1JmU7KytvPHImJihhKj0yNTYpOyllPDAmJjA9PT1zJiYwIT09dGhpc1t0K28tMV0mJihzPTEpLHRoaXNbdCtvXT0oZS9hPj4wKS1zJjI1NTtyZXR1cm4gdCtyfSx1LnByb3RvdHlwZS53cml0ZUludEJFPWZ1bmN0aW9uKGUsdCxyLG4pe2lmKGU9K2UsdHw9MCwhbil7dmFyIGk9TWF0aC5wb3coMiw4KnItMSk7UCh0aGlzLGUsdCxyLGktMSwtaSl9dmFyIG89ci0xLGE9MSxzPTA7Zm9yKHRoaXNbdCtvXT0yNTUmZTstLW8+PTAmJihhKj0yNTYpOyllPDAmJjA9PT1zJiYwIT09dGhpc1t0K28rMV0mJihzPTEpLHRoaXNbdCtvXT0oZS9hPj4wKS1zJjI1NTtyZXR1cm4gdCtyfSx1LnByb3RvdHlwZS53cml0ZUludDg9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBlPStlLHR8PTAscnx8UCh0aGlzLGUsdCwxLDEyNywtMTI4KSx1LlRZUEVEX0FSUkFZX1NVUFBPUlR8fChlPU1hdGguZmxvb3IoZSkpLGU8MCYmKGU9MjU1K2UrMSksdGhpc1t0XT0yNTUmZSx0KzF9LHUucHJvdG90eXBlLndyaXRlSW50MTZMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxQKHRoaXMsZSx0LDIsMzI3NjcsLTMyNzY4KSx1LlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09MjU1JmUsdGhpc1t0KzFdPWU+Pj44KTpSKHRoaXMsZSx0LCEwKSx0KzJ9LHUucHJvdG90eXBlLndyaXRlSW50MTZCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxQKHRoaXMsZSx0LDIsMzI3NjcsLTMyNzY4KSx1LlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjgsdGhpc1t0KzFdPTI1NSZlKTpSKHRoaXMsZSx0LCExKSx0KzJ9LHUucHJvdG90eXBlLndyaXRlSW50MzJMRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIGU9K2UsdHw9MCxyfHxQKHRoaXMsZSx0LDQsMjE0NzQ4MzY0NywtMjE0NzQ4MzY0OCksdS5UWVBFRF9BUlJBWV9TVVBQT1JUPyh0aGlzW3RdPTI1NSZlLHRoaXNbdCsxXT1lPj4+OCx0aGlzW3QrMl09ZT4+PjE2LHRoaXNbdCszXT1lPj4+MjQpOkIodGhpcyxlLHQsITApLHQrNH0sdS5wcm90b3R5cGUud3JpdGVJbnQzMkJFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gZT0rZSx0fD0wLHJ8fFAodGhpcyxlLHQsNCwyMTQ3NDgzNjQ3LC0yMTQ3NDgzNjQ4KSxlPDAmJihlPTQyOTQ5NjcyOTUrZSsxKSx1LlRZUEVEX0FSUkFZX1NVUFBPUlQ/KHRoaXNbdF09ZT4+PjI0LHRoaXNbdCsxXT1lPj4+MTYsdGhpc1t0KzJdPWU+Pj44LHRoaXNbdCszXT0yNTUmZSk6Qih0aGlzLGUsdCwhMSksdCs0fSx1LnByb3RvdHlwZS53cml0ZUZsb2F0TEU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBMKHRoaXMsZSx0LCEwLHIpfSx1LnByb3RvdHlwZS53cml0ZUZsb2F0QkU9ZnVuY3Rpb24oZSx0LHIpe3JldHVybiBMKHRoaXMsZSx0LCExLHIpfSx1LnByb3RvdHlwZS53cml0ZURvdWJsZUxFPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gRCh0aGlzLGUsdCwhMCxyKX0sdS5wcm90b3R5cGUud3JpdGVEb3VibGVCRT1mdW5jdGlvbihlLHQscil7cmV0dXJuIEQodGhpcyxlLHQsITEscil9LHUucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oZSx0LHIsbil7aWYocnx8KHI9MCksbnx8MD09PW58fChuPXRoaXMubGVuZ3RoKSx0Pj1lLmxlbmd0aCYmKHQ9ZS5sZW5ndGgpLHR8fCh0PTApLG4+MCYmbjxyJiYobj1yKSxuPT09cilyZXR1cm4gMDtpZigwPT09ZS5sZW5ndGh8fDA9PT10aGlzLmxlbmd0aClyZXR1cm4gMDtpZih0PDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoInRhcmdldFN0YXJ0IG91dCBvZiBib3VuZHMiKTtpZihyPDB8fHI+PXRoaXMubGVuZ3RoKXRocm93IG5ldyBSYW5nZUVycm9yKCJzb3VyY2VTdGFydCBvdXQgb2YgYm91bmRzIik7aWYobjwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJzb3VyY2VFbmQgb3V0IG9mIGJvdW5kcyIpO24+dGhpcy5sZW5ndGgmJihuPXRoaXMubGVuZ3RoKSxlLmxlbmd0aC10PG4tciYmKG49ZS5sZW5ndGgtdCtyKTt2YXIgaSxvPW4tcjtpZih0aGlzPT09ZSYmcjx0JiZ0PG4pZm9yKGk9by0xO2k+PTA7LS1pKWVbaSt0XT10aGlzW2krcl07ZWxzZSBpZihvPDFlM3x8IXUuVFlQRURfQVJSQVlfU1VQUE9SVClmb3IoaT0wO2k8bzsrK2kpZVtpK3RdPXRoaXNbaStyXTtlbHNlIFVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKGUsdGhpcy5zdWJhcnJheShyLHIrbyksdCk7cmV0dXJuIG99LHUucHJvdG90eXBlLmZpbGw9ZnVuY3Rpb24oZSx0LHIsbil7aWYoInN0cmluZyI9PT10eXBlb2YgZSl7aWYoInN0cmluZyI9PT10eXBlb2YgdD8obj10LHQ9MCxyPXRoaXMubGVuZ3RoKToic3RyaW5nIj09PXR5cGVvZiByJiYobj1yLHI9dGhpcy5sZW5ndGgpLDE9PT1lLmxlbmd0aCl7dmFyIGk9ZS5jaGFyQ29kZUF0KDApO2k8MjU2JiYoZT1pKX1pZih2b2lkIDAhPT1uJiYic3RyaW5nIiE9PXR5cGVvZiBuKXRocm93IG5ldyBUeXBlRXJyb3IoImVuY29kaW5nIG11c3QgYmUgYSBzdHJpbmciKTtpZigic3RyaW5nIj09PXR5cGVvZiBuJiYhdS5pc0VuY29kaW5nKG4pKXRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gZW5jb2Rpbmc6ICIrbil9ZWxzZSJudW1iZXIiPT09dHlwZW9mIGUmJihlJj0yNTUpO2lmKHQ8MHx8dGhpcy5sZW5ndGg8dHx8dGhpcy5sZW5ndGg8cil0aHJvdyBuZXcgUmFuZ2VFcnJvcigiT3V0IG9mIHJhbmdlIGluZGV4Iik7aWYocjw9dClyZXR1cm4gdGhpczt2YXIgbztpZih0Pj4+PTAscj12b2lkIDA9PT1yP3RoaXMubGVuZ3RoOnI+Pj4wLGV8fChlPTApLCJudW1iZXIiPT09dHlwZW9mIGUpZm9yKG89dDtvPHI7KytvKXRoaXNbb109ZTtlbHNle3ZhciBhPXUuaXNCdWZmZXIoZSk/ZTpGKG5ldyB1KGUsbikudG9TdHJpbmcoKSkscz1hLmxlbmd0aDtmb3Iobz0wO288ci10Oysrbyl0aGlzW28rdF09YVtvJXNdfXJldHVybiB0aGlzfTt2YXIgaj0vW14rXC8wLTlBLVphLXotX10vZztmdW5jdGlvbiBVKGUpe3JldHVybiBlPDE2PyIwIitlLnRvU3RyaW5nKDE2KTplLnRvU3RyaW5nKDE2KX1mdW5jdGlvbiBGKGUsdCl7dmFyIHI7dD10fHwxLzA7Zm9yKHZhciBuPWUubGVuZ3RoLGk9bnVsbCxvPVtdLGE9MDthPG47KythKXtpZigocj1lLmNoYXJDb2RlQXQoYSkpPjU1Mjk1JiZyPDU3MzQ0KXtpZighaSl7aWYocj41NjMxOSl7KHQtPTMpPi0xJiZvLnB1c2goMjM5LDE5MSwxODkpO2NvbnRpbnVlfWlmKGErMT09PW4peyh0LT0zKT4tMSYmby5wdXNoKDIzOSwxOTEsMTg5KTtjb250aW51ZX1pPXI7Y29udGludWV9aWYocjw1NjMyMCl7KHQtPTMpPi0xJiZvLnB1c2goMjM5LDE5MSwxODkpLGk9cjtjb250aW51ZX1yPTY1NTM2KyhpLTU1Mjk2PDwxMHxyLTU2MzIwKX1lbHNlIGkmJih0LT0zKT4tMSYmby5wdXNoKDIzOSwxOTEsMTg5KTtpZihpPW51bGwscjwxMjgpe2lmKCh0LT0xKTwwKWJyZWFrO28ucHVzaChyKX1lbHNlIGlmKHI8MjA0OCl7aWYoKHQtPTIpPDApYnJlYWs7by5wdXNoKHI+PjZ8MTkyLDYzJnJ8MTI4KX1lbHNlIGlmKHI8NjU1MzYpe2lmKCh0LT0zKTwwKWJyZWFrO28ucHVzaChyPj4xMnwyMjQscj4+NiY2M3wxMjgsNjMmcnwxMjgpfWVsc2V7aWYoIShyPDExMTQxMTIpKXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBjb2RlIHBvaW50Iik7aWYoKHQtPTQpPDApYnJlYWs7by5wdXNoKHI+PjE4fDI0MCxyPj4xMiY2M3wxMjgscj4+NiY2M3wxMjgsNjMmcnwxMjgpfX1yZXR1cm4gb31mdW5jdGlvbiBWKGUpe3JldHVybiBuLnRvQnl0ZUFycmF5KGZ1bmN0aW9uKGUpe2lmKChlPWZ1bmN0aW9uKGUpe3JldHVybiBlLnRyaW0/ZS50cmltKCk6ZS5yZXBsYWNlKC9eXHMrfFxzKyQvZywiIil9KGUpLnJlcGxhY2UoaiwiIikpLmxlbmd0aDwyKXJldHVybiIiO2Zvcig7ZS5sZW5ndGglNCE9PTA7KWUrPSI9IjtyZXR1cm4gZX0oZSkpfWZ1bmN0aW9uIHEoZSx0LHIsbil7Zm9yKHZhciBpPTA7aTxuJiYhKGkrcj49dC5sZW5ndGh8fGk+PWUubGVuZ3RoKTsrK2kpdFtpK3JdPWVbaV07cmV0dXJuIGl9fSkuY2FsbCh0aGlzLHIoMzQpKX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG49cigxMzgpLGk9cigyMzEpLG89cig2NDcpLGE9cig2NDgpO3QuanNvbj1hO3ZhciBzPXIoMTM5KTt0LnNlcmlhbGl6ZVByaW1pdGl2ZXM9czt2YXIgdT1yKDIzMCk7dC5wYXJzZVByaW1pdGl2ZXM9dTt2YXIgYz1yKDEzOCk7dC5zY2hlbWFzPWM7dmFyIGY9e3NlcmlhbGl6ZXJGcm9tU2NoZW1hOmkuc2VyaWFsaXplckZyb21TY2hlbWEsc2VyaWFsaXplVHg6aS5zZXJpYWxpemVUeCxzZXJpYWxpemVPcmRlcjppLnNlcmlhbGl6ZU9yZGVyLHBhcnNlckZyb21TY2hlbWE6by5wYXJzZXJGcm9tU2NoZW1hLHBhcnNlVHg6by5wYXJzZVR4LHBhcnNlT3JkZXI6by5wYXJzZU9yZGVyfTtmdW5jdGlvbiBsKGUsdCxyLG4pe3ZhciBhPWkuc2VyaWFsaXplckZyb21TY2hlbWEodCxuKSxzPW8ucGFyc2VyRnJvbVNjaGVtYSh0LHIpKGEoZSkpLnZhbHVlO3JldHVybiBPYmplY3QuYXNzaWduKHt9LGUscyl9dC5iaW5hcnk9Zix0LmNvbnZlcnRMb25nRmllbGRzPWwsdC5jb252ZXJ0VHhMb25nRmllbGRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1lLnR5cGUsbz1lLnZlcnNpb247cmV0dXJuIGwoZSxuLmdldFRyYW5zYWN0aW9uU2NoZW1hKGksbyksdCxyKX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG47T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpPXIoMzA1KSxvPXIoMzA3KTt0LnNlZWRXb3Jkc0xpc3Q9by5zZWVkV29yZHNMaXN0O3ZhciBhPXIoMzYwKTt0LkNoYWlkSWQ9YS5DaGFpZElkO3ZhciBzPXIoMzU5KTt0LlNlZWQ9cy5TZWVkO3ZhciB1PXIoMjI4KTt0LmlzUHJpdmF0ZUtleT11LmlzUHJpdmF0ZUtleSx0LmlzUHVibGljS2V5PXUuaXNQdWJsaWNLZXk7dmFyIGM9cigzMDUpO3QuY3J5cHRvPWMuY3J5cHRvLGZ1bmN0aW9uKGUpe2Zvcih2YXIgciBpbiBlKXQuaGFzT3duUHJvcGVydHkocil8fCh0W3JdPWVbcl0pfShyKDEzNykpLHQuc2lnbkJ5dGVzPShuPWkuY3J5cHRvKHtvdXRwdXQ6IkJhc2U1OCJ9KSkuc2lnbkJ5dGVzLHQua2V5UGFpcj1uLmtleVBhaXIsdC5wdWJsaWNLZXk9bi5wdWJsaWNLZXksdC5wcml2YXRlS2V5PW4ucHJpdmF0ZUtleSx0LmFkZHJlc3M9bi5hZGRyZXNzLHQuYmxha2UyYj1uLmJsYWtlMmIsdC5rZWNjYWs9bi5rZWNjYWssdC5zaGEyNTY9bi5zaGEyNTYsdC5zaGFyZWRLZXk9bi5zaGFyZWRLZXksdC5zZWVkV2l0aE5vbmNlPW4uc2VlZFdpdGhOb25jZSx0LmJhc2U2NEVuY29kZT1uLmJhc2U2NEVuY29kZSx0LmJhc2U2NERlY29kZT1uLmJhc2U2NERlY29kZSx0LmJhc2U1OEVuY29kZT1uLmJhc2U1OEVuY29kZSx0LmJhc2U1OERlY29kZT1uLmJhc2U1OERlY29kZSx0LmJhc2UxNkVuY29kZT1uLmJhc2UxNkVuY29kZSx0LmJhc2UxNkRlY29kZT1uLmJhc2UxNkRlY29kZSx0LnN0cmluZ1RvQnl0ZXM9bi5zdHJpbmdUb0J5dGVzLHQuYnl0ZXNUb1N0cmluZz1uLmJ5dGVzVG9TdHJpbmcsdC5yYW5kb209bi5yYW5kb20sdC5yYW5kb21TZWVkPW4ucmFuZG9tU2VlZCx0LnJhbmRvbUJ5dGVzPW4ucmFuZG9tQnl0ZXMsdC52ZXJpZnlTaWduYXR1cmU9bi52ZXJpZnlTaWduYXR1cmUsdC52ZXJpZnlQdWJsaWNLZXk9bi52ZXJpZnlQdWJsaWNLZXksdC52ZXJpZnlBZGRyZXNzPW4udmVyaWZ5QWRkcmVzcyx0Lm1lc3NhZ2VEZWNyeXB0PW4ubWVzc2FnZURlY3J5cHQsdC5tZXNzYWdlRW5jcnlwdD1uLm1lc3NhZ2VFbmNyeXB0LHQuZW5jcnlwdFNlZWQ9bi5lbmNyeXB0U2VlZCx0LmRlY3J5cHRTZWVkPW4uZGVjcnlwdFNlZWQsdC5yc2FLZXlQYWlyPW4ucnNhS2V5UGFpcix0LnJzYUtleVBhaXJTeW5jPW4ucnNhS2V5UGFpclN5bmMsdC5yc2FTaWduPW4ucnNhU2lnbix0LnJzYVZlcmlmeT1uLnJzYVZlcmlmeSx0LmFlc0RlY3J5cHQ9bi5hZXNEZWNyeXB0LHQuYWVzRW5jcnlwdD1uLmFlc0VuY3J5cHQsdC5zcGxpdD1uLnNwbGl0LHQuY29uY2F0PW4uY29uY2F0fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNzgpKCJ3a3MiKSxpPXIoOTQpLG89cigxNykuU3ltYm9sLGE9ImZ1bmN0aW9uIj09dHlwZW9mIG87KGUuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbltlXXx8KG5bZV09YSYmb1tlXXx8KGE/bzppKSgiU3ltYm9sLiIrZSkpfSkuc3RvcmU9bn0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNTQyKSxpPXIoNTQzKSxvPXIoNTQ0KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbihlKXx8aShlLHQpfHxvKCl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig2MCksaT1NYXRoLm1pbjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGU+MD9pKG4oZSksOTAwNzE5OTI1NDc0MDk5MSk6MH19LGZ1bmN0aW9uKGUsdCxyKXsoZnVuY3Rpb24oZSl7IWZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0KXtpZighZSl0aHJvdyBuZXcgRXJyb3IodHx8IkFzc2VydGlvbiBmYWlsZWQiKX1mdW5jdGlvbiBpKGUsdCl7ZS5zdXBlcl89dDt2YXIgcj1mdW5jdGlvbigpe307ci5wcm90b3R5cGU9dC5wcm90b3R5cGUsZS5wcm90b3R5cGU9bmV3IHIsZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZX1mdW5jdGlvbiBvKGUsdCxyKXtpZihvLmlzQk4oZSkpcmV0dXJuIGU7dGhpcy5uZWdhdGl2ZT0wLHRoaXMud29yZHM9bnVsbCx0aGlzLmxlbmd0aD0wLHRoaXMucmVkPW51bGwsbnVsbCE9PWUmJigibGUiIT09dCYmImJlIiE9PXR8fChyPXQsdD0xMCksdGhpcy5faW5pdChlfHwwLHR8fDEwLHJ8fCJiZSIpKX12YXIgYTsib2JqZWN0Ij09PXR5cGVvZiBlP2UuZXhwb3J0cz1vOnQuQk49byxvLkJOPW8sby53b3JkU2l6ZT0yNjt0cnl7YT1yKDU4NSkuQnVmZmVyfWNhdGNoKFQpe31mdW5jdGlvbiBzKGUsdCxyKXtmb3IodmFyIG49MCxpPU1hdGgubWluKGUubGVuZ3RoLHIpLG89dDtvPGk7bysrKXt2YXIgYT1lLmNoYXJDb2RlQXQobyktNDg7bjw8PTQsbnw9YT49NDkmJmE8PTU0P2EtNDkrMTA6YT49MTcmJmE8PTIyP2EtMTcrMTA6MTUmYX1yZXR1cm4gbn1mdW5jdGlvbiB1KGUsdCxyLG4pe2Zvcih2YXIgaT0wLG89TWF0aC5taW4oZS5sZW5ndGgsciksYT10O2E8bzthKyspe3ZhciBzPWUuY2hhckNvZGVBdChhKS00ODtpKj1uLGkrPXM+PTQ5P3MtNDkrMTA6cz49MTc/cy0xNysxMDpzfXJldHVybiBpfW8uaXNCTj1mdW5jdGlvbihlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIG98fG51bGwhPT1lJiYib2JqZWN0Ij09PXR5cGVvZiBlJiZlLmNvbnN0cnVjdG9yLndvcmRTaXplPT09by53b3JkU2l6ZSYmQXJyYXkuaXNBcnJheShlLndvcmRzKX0sby5tYXg9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5jbXAodCk+MD9lOnR9LG8ubWluPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuY21wKHQpPDA/ZTp0fSxvLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbihlLHQscil7aWYoIm51bWJlciI9PT10eXBlb2YgZSlyZXR1cm4gdGhpcy5faW5pdE51bWJlcihlLHQscik7aWYoIm9iamVjdCI9PT10eXBlb2YgZSlyZXR1cm4gdGhpcy5faW5pdEFycmF5KGUsdCxyKTsiaGV4Ij09PXQmJih0PTE2KSxuKHQ9PT0oMHx0KSYmdD49MiYmdDw9MzYpO3ZhciBpPTA7Ii0iPT09KGU9ZS50b1N0cmluZygpLnJlcGxhY2UoL1xzKy9nLCIiKSlbMF0mJmkrKywxNj09PXQ/dGhpcy5fcGFyc2VIZXgoZSxpKTp0aGlzLl9wYXJzZUJhc2UoZSx0LGkpLCItIj09PWVbMF0mJih0aGlzLm5lZ2F0aXZlPTEpLHRoaXMuc3RyaXAoKSwibGUiPT09ciYmdGhpcy5faW5pdEFycmF5KHRoaXMudG9BcnJheSgpLHQscil9LG8ucHJvdG90eXBlLl9pbml0TnVtYmVyPWZ1bmN0aW9uKGUsdCxyKXtlPDAmJih0aGlzLm5lZ2F0aXZlPTEsZT0tZSksZTw2NzEwODg2ND8odGhpcy53b3Jkcz1bNjcxMDg4NjMmZV0sdGhpcy5sZW5ndGg9MSk6ZTw0NTAzNTk5NjI3MzcwNDk2Pyh0aGlzLndvcmRzPVs2NzEwODg2MyZlLGUvNjcxMDg4NjQmNjcxMDg4NjNdLHRoaXMubGVuZ3RoPTIpOihuKGU8OTAwNzE5OTI1NDc0MDk5MiksdGhpcy53b3Jkcz1bNjcxMDg4NjMmZSxlLzY3MTA4ODY0JjY3MTA4ODYzLDFdLHRoaXMubGVuZ3RoPTMpLCJsZSI9PT1yJiZ0aGlzLl9pbml0QXJyYXkodGhpcy50b0FycmF5KCksdCxyKX0sby5wcm90b3R5cGUuX2luaXRBcnJheT1mdW5jdGlvbihlLHQscil7aWYobigibnVtYmVyIj09PXR5cGVvZiBlLmxlbmd0aCksZS5sZW5ndGg8PTApcmV0dXJuIHRoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTEsdGhpczt0aGlzLmxlbmd0aD1NYXRoLmNlaWwoZS5sZW5ndGgvMyksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgaT0wO2k8dGhpcy5sZW5ndGg7aSsrKXRoaXMud29yZHNbaV09MDt2YXIgbyxhLHM9MDtpZigiYmUiPT09cilmb3IoaT1lLmxlbmd0aC0xLG89MDtpPj0wO2ktPTMpYT1lW2ldfGVbaS0xXTw8OHxlW2ktMl08PDE2LHRoaXMud29yZHNbb118PWE8PHMmNjcxMDg4NjMsdGhpcy53b3Jkc1tvKzFdPWE+Pj4yNi1zJjY3MTA4ODYzLChzKz0yNCk+PTI2JiYocy09MjYsbysrKTtlbHNlIGlmKCJsZSI9PT1yKWZvcihpPTAsbz0wO2k8ZS5sZW5ndGg7aSs9MylhPWVbaV18ZVtpKzFdPDw4fGVbaSsyXTw8MTYsdGhpcy53b3Jkc1tvXXw9YTw8cyY2NzEwODg2Myx0aGlzLndvcmRzW28rMV09YT4+PjI2LXMmNjcxMDg4NjMsKHMrPTI0KT49MjYmJihzLT0yNixvKyspO3JldHVybiB0aGlzLnN0cmlwKCl9LG8ucHJvdG90eXBlLl9wYXJzZUhleD1mdW5jdGlvbihlLHQpe3RoaXMubGVuZ3RoPU1hdGguY2VpbCgoZS5sZW5ndGgtdCkvNiksdGhpcy53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgcj0wO3I8dGhpcy5sZW5ndGg7cisrKXRoaXMud29yZHNbcl09MDt2YXIgbixpLG89MDtmb3Iocj1lLmxlbmd0aC02LG49MDtyPj10O3ItPTYpaT1zKGUscixyKzYpLHRoaXMud29yZHNbbl18PWk8PG8mNjcxMDg4NjMsdGhpcy53b3Jkc1tuKzFdfD1pPj4+MjYtbyY0MTk0MzAzLChvKz0yNCk+PTI2JiYoby09MjYsbisrKTtyKzYhPT10JiYoaT1zKGUsdCxyKzYpLHRoaXMud29yZHNbbl18PWk8PG8mNjcxMDg4NjMsdGhpcy53b3Jkc1tuKzFdfD1pPj4+MjYtbyY0MTk0MzAzKSx0aGlzLnN0cmlwKCl9LG8ucHJvdG90eXBlLl9wYXJzZUJhc2U9ZnVuY3Rpb24oZSx0LHIpe3RoaXMud29yZHM9WzBdLHRoaXMubGVuZ3RoPTE7Zm9yKHZhciBuPTAsaT0xO2k8PTY3MTA4ODYzO2kqPXQpbisrO24tLSxpPWkvdHwwO2Zvcih2YXIgbz1lLmxlbmd0aC1yLGE9byVuLHM9TWF0aC5taW4obyxvLWEpK3IsYz0wLGY9cjtmPHM7Zis9biljPXUoZSxmLGYrbix0KSx0aGlzLmltdWxuKGkpLHRoaXMud29yZHNbMF0rYzw2NzEwODg2ND90aGlzLndvcmRzWzBdKz1jOnRoaXMuX2lhZGRuKGMpO2lmKDAhPT1hKXt2YXIgbD0xO2ZvcihjPXUoZSxmLGUubGVuZ3RoLHQpLGY9MDtmPGE7ZisrKWwqPXQ7dGhpcy5pbXVsbihsKSx0aGlzLndvcmRzWzBdK2M8NjcxMDg4NjQ/dGhpcy53b3Jkc1swXSs9Yzp0aGlzLl9pYWRkbihjKX19LG8ucHJvdG90eXBlLmNvcHk9ZnVuY3Rpb24oZSl7ZS53b3Jkcz1uZXcgQXJyYXkodGhpcy5sZW5ndGgpO2Zvcih2YXIgdD0wO3Q8dGhpcy5sZW5ndGg7dCsrKWUud29yZHNbdF09dGhpcy53b3Jkc1t0XTtlLmxlbmd0aD10aGlzLmxlbmd0aCxlLm5lZ2F0aXZlPXRoaXMubmVnYXRpdmUsZS5yZWQ9dGhpcy5yZWR9LG8ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7dmFyIGU9bmV3IG8obnVsbCk7cmV0dXJuIHRoaXMuY29weShlKSxlfSxvLnByb3RvdHlwZS5fZXhwYW5kPWZ1bmN0aW9uKGUpe2Zvcig7dGhpcy5sZW5ndGg8ZTspdGhpcy53b3Jkc1t0aGlzLmxlbmd0aCsrXT0wO3JldHVybiB0aGlzfSxvLnByb3RvdHlwZS5zdHJpcD1mdW5jdGlvbigpe2Zvcig7dGhpcy5sZW5ndGg+MSYmMD09PXRoaXMud29yZHNbdGhpcy5sZW5ndGgtMV07KXRoaXMubGVuZ3RoLS07cmV0dXJuIHRoaXMuX25vcm1TaWduKCl9LG8ucHJvdG90eXBlLl9ub3JtU2lnbj1mdW5jdGlvbigpe3JldHVybiAxPT09dGhpcy5sZW5ndGgmJjA9PT10aGlzLndvcmRzWzBdJiYodGhpcy5uZWdhdGl2ZT0wKSx0aGlzfSxvLnByb3RvdHlwZS5pbnNwZWN0PWZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMucmVkPyI8Qk4tUjogIjoiPEJOOiAiKSt0aGlzLnRvU3RyaW5nKDE2KSsiPiJ9O3ZhciBjPVsiIiwiMCIsIjAwIiwiMDAwIiwiMDAwMCIsIjAwMDAwIiwiMDAwMDAwIiwiMDAwMDAwMCIsIjAwMDAwMDAwIiwiMDAwMDAwMDAwIiwiMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCJdLGY9WzAsMCwyNSwxNiwxMiwxMSwxMCw5LDgsOCw3LDcsNyw3LDYsNiw2LDYsNiw2LDYsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNSw1LDUsNV0sbD1bMCwwLDMzNTU0NDMyLDQzMDQ2NzIxLDE2Nzc3MjE2LDQ4ODI4MTI1LDYwNDY2MTc2LDQwMzUzNjA3LDE2Nzc3MjE2LDQzMDQ2NzIxLDFlNywxOTQ4NzE3MSwzNTgzMTgwOCw2Mjc0ODUxNyw3NTI5NTM2LDExMzkwNjI1LDE2Nzc3MjE2LDI0MTM3NTY5LDM0MDEyMjI0LDQ3MDQ1ODgxLDY0ZTYsNDA4NDEwMSw1MTUzNjMyLDY0MzYzNDMsNzk2MjYyNCw5NzY1NjI1LDExODgxMzc2LDE0MzQ4OTA3LDE3MjEwMzY4LDIwNTExMTQ5LDI0M2U1LDI4NjI5MTUxLDMzNTU0NDMyLDM5MTM1MzkzLDQ1NDM1NDI0LDUyNTIxODc1LDYwNDY2MTc2XTtmdW5jdGlvbiBoKGUsdCxyKXtyLm5lZ2F0aXZlPXQubmVnYXRpdmVeZS5uZWdhdGl2ZTt2YXIgbj1lLmxlbmd0aCt0Lmxlbmd0aHwwO3IubGVuZ3RoPW4sbj1uLTF8MDt2YXIgaT0wfGUud29yZHNbMF0sbz0wfHQud29yZHNbMF0sYT1pKm8scz02NzEwODg2MyZhLHU9YS82NzEwODg2NHwwO3Iud29yZHNbMF09cztmb3IodmFyIGM9MTtjPG47YysrKXtmb3IodmFyIGY9dT4+PjI2LGw9NjcxMDg4NjMmdSxoPU1hdGgubWluKGMsdC5sZW5ndGgtMSkscD1NYXRoLm1heCgwLGMtZS5sZW5ndGgrMSk7cDw9aDtwKyspe3ZhciBkPWMtcHwwO2YrPShhPShpPTB8ZS53b3Jkc1tkXSkqKG89MHx0LndvcmRzW3BdKStsKS82NzEwODg2NHwwLGw9NjcxMDg4NjMmYX1yLndvcmRzW2NdPTB8bCx1PTB8Zn1yZXR1cm4gMCE9PXU/ci53b3Jkc1tjXT0wfHU6ci5sZW5ndGgtLSxyLnN0cmlwKCl9by5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oZSx0KXt2YXIgcjtpZih0PTB8dHx8MSwxNj09PShlPWV8fDEwKXx8ImhleCI9PT1lKXtyPSIiO2Zvcih2YXIgaT0wLG89MCxhPTA7YTx0aGlzLmxlbmd0aDthKyspe3ZhciBzPXRoaXMud29yZHNbYV0sdT0oMTY3NzcyMTUmKHM8PGl8bykpLnRvU3RyaW5nKDE2KTtyPTAhPT0obz1zPj4+MjQtaSYxNjc3NzIxNSl8fGEhPT10aGlzLmxlbmd0aC0xP2NbNi11Lmxlbmd0aF0rdStyOnUrciwoaSs9Mik+PTI2JiYoaS09MjYsYS0tKX1mb3IoMCE9PW8mJihyPW8udG9TdHJpbmcoMTYpK3IpO3IubGVuZ3RoJXQhPT0wOylyPSIwIityO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKHI9Ii0iK3IpLHJ9aWYoZT09PSgwfGUpJiZlPj0yJiZlPD0zNil7dmFyIGg9ZltlXSxwPWxbZV07cj0iIjt2YXIgZD10aGlzLmNsb25lKCk7Zm9yKGQubmVnYXRpdmU9MDshZC5pc1plcm8oKTspe3ZhciB5PWQubW9kbihwKS50b1N0cmluZyhlKTtyPShkPWQuaWRpdm4ocCkpLmlzWmVybygpP3krcjpjW2gteS5sZW5ndGhdK3krcn1mb3IodGhpcy5pc1plcm8oKSYmKHI9IjAiK3IpO3IubGVuZ3RoJXQhPT0wOylyPSIwIityO3JldHVybiAwIT09dGhpcy5uZWdhdGl2ZSYmKHI9Ii0iK3IpLHJ9bighMSwiQmFzZSBzaG91bGQgYmUgYmV0d2VlbiAyIGFuZCAzNiIpfSxvLnByb3RvdHlwZS50b051bWJlcj1mdW5jdGlvbigpe3ZhciBlPXRoaXMud29yZHNbMF07cmV0dXJuIDI9PT10aGlzLmxlbmd0aD9lKz02NzEwODg2NCp0aGlzLndvcmRzWzFdOjM9PT10aGlzLmxlbmd0aCYmMT09PXRoaXMud29yZHNbMl0/ZSs9NDUwMzU5OTYyNzM3MDQ5Nis2NzEwODg2NCp0aGlzLndvcmRzWzFdOnRoaXMubGVuZ3RoPjImJm4oITEsIk51bWJlciBjYW4gb25seSBzYWZlbHkgc3RvcmUgdXAgdG8gNTMgYml0cyIpLDAhPT10aGlzLm5lZ2F0aXZlPy1lOmV9LG8ucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRvU3RyaW5nKDE2KX0sby5wcm90b3R5cGUudG9CdWZmZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbigidW5kZWZpbmVkIiE9PXR5cGVvZiBhKSx0aGlzLnRvQXJyYXlMaWtlKGEsZSx0KX0sby5wcm90b3R5cGUudG9BcnJheT1mdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLnRvQXJyYXlMaWtlKEFycmF5LGUsdCl9LG8ucHJvdG90eXBlLnRvQXJyYXlMaWtlPWZ1bmN0aW9uKGUsdCxyKXt2YXIgaT10aGlzLmJ5dGVMZW5ndGgoKSxvPXJ8fE1hdGgubWF4KDEsaSk7bihpPD1vLCJieXRlIGFycmF5IGxvbmdlciB0aGFuIGRlc2lyZWQgbGVuZ3RoIiksbihvPjAsIlJlcXVlc3RlZCBhcnJheSBsZW5ndGggPD0gMCIpLHRoaXMuc3RyaXAoKTt2YXIgYSxzLHU9ImxlIj09PXQsYz1uZXcgZShvKSxmPXRoaXMuY2xvbmUoKTtpZih1KXtmb3Iocz0wOyFmLmlzWmVybygpO3MrKylhPWYuYW5kbG4oMjU1KSxmLml1c2hybig4KSxjW3NdPWE7Zm9yKDtzPG87cysrKWNbc109MH1lbHNle2ZvcihzPTA7czxvLWk7cysrKWNbc109MDtmb3Iocz0wOyFmLmlzWmVybygpO3MrKylhPWYuYW5kbG4oMjU1KSxmLml1c2hybig4KSxjW28tcy0xXT1hfXJldHVybiBjfSxNYXRoLmNsejMyP28ucHJvdG90eXBlLl9jb3VudEJpdHM9ZnVuY3Rpb24oZSl7cmV0dXJuIDMyLU1hdGguY2x6MzIoZSl9Om8ucHJvdG90eXBlLl9jb3VudEJpdHM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZSxyPTA7cmV0dXJuIHQ+PTQwOTYmJihyKz0xMyx0Pj4+PTEzKSx0Pj02NCYmKHIrPTcsdD4+Pj03KSx0Pj04JiYocis9NCx0Pj4+PTQpLHQ+PTImJihyKz0yLHQ+Pj49Mikscit0fSxvLnByb3RvdHlwZS5femVyb0JpdHM9ZnVuY3Rpb24oZSl7aWYoMD09PWUpcmV0dXJuIDI2O3ZhciB0PWUscj0wO3JldHVybiAwPT09KDgxOTEmdCkmJihyKz0xMyx0Pj4+PTEzKSwwPT09KDEyNyZ0KSYmKHIrPTcsdD4+Pj03KSwwPT09KDE1JnQpJiYocis9NCx0Pj4+PTQpLDA9PT0oMyZ0KSYmKHIrPTIsdD4+Pj0yKSwwPT09KDEmdCkmJnIrKyxyfSxvLnByb3RvdHlwZS5iaXRMZW5ndGg9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLndvcmRzW3RoaXMubGVuZ3RoLTFdLHQ9dGhpcy5fY291bnRCaXRzKGUpO3JldHVybiAyNioodGhpcy5sZW5ndGgtMSkrdH0sby5wcm90b3R5cGUuemVyb0JpdHM9ZnVuY3Rpb24oKXtpZih0aGlzLmlzWmVybygpKXJldHVybiAwO2Zvcih2YXIgZT0wLHQ9MDt0PHRoaXMubGVuZ3RoO3QrKyl7dmFyIHI9dGhpcy5femVyb0JpdHModGhpcy53b3Jkc1t0XSk7aWYoZSs9ciwyNiE9PXIpYnJlYWt9cmV0dXJuIGV9LG8ucHJvdG90eXBlLmJ5dGVMZW5ndGg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5jZWlsKA=="
}

github/deemru/w8io/c3f4982 
2.78 ms