3NCUbh7cABzRyEMEXAcGCAozSuxvUTf75ms · data · 2.7c767379.chunk.js_50
{
    "2.7c767379.chunk.js_50": "base64:aW9uIGkoZSl7dGhpcy5vcHRpb25zPWUsdGhpcy50eXBlPXRoaXMub3B0aW9ucy50eXBlLHRoaXMuYmxvY2tTaXplPTgsdGhpcy5faW5pdCgpLHRoaXMuYnVmZmVyPW5ldyBBcnJheSh0aGlzLmJsb2NrU2l6ZSksdGhpcy5idWZmZXJPZmY9MH1lLmV4cG9ydHM9aSxpLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbigpe30saS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUpe3JldHVybiAwPT09ZS5sZW5ndGg/W106ImRlY3J5cHQiPT09dGhpcy50eXBlP3RoaXMuX3VwZGF0ZURlY3J5cHQoZSk6dGhpcy5fdXBkYXRlRW5jcnlwdChlKX0saS5wcm90b3R5cGUuX2J1ZmZlcj1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1NYXRoLm1pbih0aGlzLmJ1ZmZlci5sZW5ndGgtdGhpcy5idWZmZXJPZmYsZS5sZW5ndGgtdCksbj0wO248cjtuKyspdGhpcy5idWZmZXJbdGhpcy5idWZmZXJPZmYrbl09ZVt0K25dO3JldHVybiB0aGlzLmJ1ZmZlck9mZis9cixyfSxpLnByb3RvdHlwZS5fZmx1c2hCdWZmZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fdXBkYXRlKHRoaXMuYnVmZmVyLDAsZSx0KSx0aGlzLmJ1ZmZlck9mZj0wLHRoaXMuYmxvY2tTaXplfSxpLnByb3RvdHlwZS5fdXBkYXRlRW5jcnlwdD1mdW5jdGlvbihlKXt2YXIgdD0wLHI9MCxuPSh0aGlzLmJ1ZmZlck9mZitlLmxlbmd0aCkvdGhpcy5ibG9ja1NpemV8MCxpPW5ldyBBcnJheShuKnRoaXMuYmxvY2tTaXplKTswIT09dGhpcy5idWZmZXJPZmYmJih0Kz10aGlzLl9idWZmZXIoZSx0KSx0aGlzLmJ1ZmZlck9mZj09PXRoaXMuYnVmZmVyLmxlbmd0aCYmKHIrPXRoaXMuX2ZsdXNoQnVmZmVyKGkscikpKTtmb3IodmFyIG89ZS5sZW5ndGgtKGUubGVuZ3RoLXQpJXRoaXMuYmxvY2tTaXplO3Q8bzt0Kz10aGlzLmJsb2NrU2l6ZSl0aGlzLl91cGRhdGUoZSx0LGkscikscis9dGhpcy5ibG9ja1NpemU7Zm9yKDt0PGUubGVuZ3RoO3QrKyx0aGlzLmJ1ZmZlck9mZisrKXRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyT2ZmXT1lW3RdO3JldHVybiBpfSxpLnByb3RvdHlwZS5fdXBkYXRlRGVjcnlwdD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxyPTAsbj1NYXRoLmNlaWwoKHRoaXMuYnVmZmVyT2ZmK2UubGVuZ3RoKS90aGlzLmJsb2NrU2l6ZSktMSxpPW5ldyBBcnJheShuKnRoaXMuYmxvY2tTaXplKTtuPjA7bi0tKXQrPXRoaXMuX2J1ZmZlcihlLHQpLHIrPXRoaXMuX2ZsdXNoQnVmZmVyKGkscik7cmV0dXJuIHQrPXRoaXMuX2J1ZmZlcihlLHQpLGl9LGkucHJvdG90eXBlLmZpbmFsPWZ1bmN0aW9uKGUpe3ZhciB0LHI7cmV0dXJuIGUmJih0PXRoaXMudXBkYXRlKGUpKSxyPSJlbmNyeXB0Ij09PXRoaXMudHlwZT90aGlzLl9maW5hbEVuY3J5cHQoKTp0aGlzLl9maW5hbERlY3J5cHQoKSx0P3QuY29uY2F0KHIpOnJ9LGkucHJvdG90eXBlLl9wYWQ9ZnVuY3Rpb24oZSx0KXtpZigwPT09dClyZXR1cm4hMTtmb3IoO3Q8ZS5sZW5ndGg7KWVbdCsrXT0wO3JldHVybiEwfSxpLnByb3RvdHlwZS5fZmluYWxFbmNyeXB0PWZ1bmN0aW9uKCl7aWYoIXRoaXMuX3BhZCh0aGlzLmJ1ZmZlcix0aGlzLmJ1ZmZlck9mZikpcmV0dXJuW107dmFyIGU9bmV3IEFycmF5KHRoaXMuYmxvY2tTaXplKTtyZXR1cm4gdGhpcy5fdXBkYXRlKHRoaXMuYnVmZmVyLDAsZSwwKSxlfSxpLnByb3RvdHlwZS5fdW5wYWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGkucHJvdG90eXBlLl9maW5hbERlY3J5cHQ9ZnVuY3Rpb24oKXtuLmVxdWFsKHRoaXMuYnVmZmVyT2ZmLHRoaXMuYmxvY2tTaXplLCJOb3QgZW5vdWdoIGRhdGEgdG8gZGVjcnlwdCIpO3ZhciBlPW5ldyBBcnJheSh0aGlzLmJsb2NrU2l6ZSk7cmV0dXJuIHRoaXMuX2ZsdXNoQnVmZmVyKGUsMCksdGhpcy5fdW5wYWQoZSl9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoNDcpLGk9cig3KSxvPXIoMjEyKSxhPW8udXRpbHMscz1vLkNpcGhlcjtmdW5jdGlvbiB1KCl7dGhpcy50bXA9bmV3IEFycmF5KDIpLHRoaXMua2V5cz1udWxsfWZ1bmN0aW9uIGMoZSl7cy5jYWxsKHRoaXMsZSk7dmFyIHQ9bmV3IHU7dGhpcy5fZGVzU3RhdGU9dCx0aGlzLmRlcml2ZUtleXModCxlLmtleSl9aShjLHMpLGUuZXhwb3J0cz1jLGMuY3JlYXRlPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgYyhlKX07dmFyIGY9WzEsMSwyLDIsMiwyLDIsMiwxLDIsMiwyLDIsMiwyLDFdO2MucHJvdG90eXBlLmRlcml2ZUtleXM9ZnVuY3Rpb24oZSx0KXtlLmtleXM9bmV3IEFycmF5KDMyKSxuLmVxdWFsKHQubGVuZ3RoLHRoaXMuYmxvY2tTaXplLCJJbnZhbGlkIGtleSBsZW5ndGgiKTt2YXIgcj1hLnJlYWRVSW50MzJCRSh0LDApLGk9YS5yZWFkVUludDMyQkUodCw0KTthLnBjMShyLGksZS50bXAsMCkscj1lLnRtcFswXSxpPWUudG1wWzFdO2Zvcih2YXIgbz0wO288ZS5rZXlzLmxlbmd0aDtvKz0yKXt2YXIgcz1mW28+Pj4xXTtyPWEucjI4c2hsKHIscyksaT1hLnIyOHNobChpLHMpLGEucGMyKHIsaSxlLmtleXMsbyl9fSxjLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKGUsdCxyLG4pe3ZhciBpPXRoaXMuX2Rlc1N0YXRlLG89YS5yZWFkVUludDMyQkUoZSx0KSxzPWEucmVhZFVJbnQzMkJFKGUsdCs0KTthLmlwKG8scyxpLnRtcCwwKSxvPWkudG1wWzBdLHM9aS50bXBbMV0sImVuY3J5cHQiPT09dGhpcy50eXBlP3RoaXMuX2VuY3J5cHQoaSxvLHMsaS50bXAsMCk6dGhpcy5fZGVjcnlwdChpLG8scyxpLnRtcCwwKSxvPWkudG1wWzBdLHM9aS50bXBbMV0sYS53cml0ZVVJbnQzMkJFKHIsbyxuKSxhLndyaXRlVUludDMyQkUocixzLG4rNCl9LGMucHJvdG90eXBlLl9wYWQ9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9ZS5sZW5ndGgtdCxuPXQ7bjxlLmxlbmd0aDtuKyspZVtuXT1yO3JldHVybiEwfSxjLnByb3RvdHlwZS5fdW5wYWQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWVbZS5sZW5ndGgtMV0scj1lLmxlbmd0aC10O3I8ZS5sZW5ndGg7cisrKW4uZXF1YWwoZVtyXSx0KTtyZXR1cm4gZS5zbGljZSgwLGUubGVuZ3RoLXQpfSxjLnByb3RvdHlwZS5fZW5jcnlwdD1mdW5jdGlvbihlLHQscixuLGkpe2Zvcih2YXIgbz10LHM9cix1PTA7dTxlLmtleXMubGVuZ3RoO3UrPTIpe3ZhciBjPWUua2V5c1t1XSxmPWUua2V5c1t1KzFdO2EuZXhwYW5kKHMsZS50bXAsMCksY149ZS50bXBbMF0sZl49ZS50bXBbMV07dmFyIGw9YS5zdWJzdGl0dXRlKGMsZiksaD1zO3M9KG9eYS5wZXJtdXRlKGwpKT4+PjAsbz1ofWEucmlwKHMsbyxuLGkpfSxjLnByb3RvdHlwZS5fZGVjcnlwdD1mdW5jdGlvbihlLHQscixuLGkpe2Zvcih2YXIgbz1yLHM9dCx1PWUua2V5cy5sZW5ndGgtMjt1Pj0wO3UtPTIpe3ZhciBjPWUua2V5c1t1XSxmPWUua2V5c1t1KzFdO2EuZXhwYW5kKG8sZS50bXAsMCksY149ZS50bXBbMF0sZl49ZS50bXBbMV07dmFyIGw9YS5zdWJzdGl0dXRlKGMsZiksaD1vO289KHNeYS5wZXJtdXRlKGwpKT4+PjAscz1ofWEucmlwKG8scyxuLGkpfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDQ3KSxpPXIoNyksbz17fTtmdW5jdGlvbiBhKGUpe24uZXF1YWwoZS5sZW5ndGgsOCwiSW52YWxpZCBJViBsZW5ndGgiKSx0aGlzLml2PW5ldyBBcnJheSg4KTtmb3IodmFyIHQ9MDt0PHRoaXMuaXYubGVuZ3RoO3QrKyl0aGlzLml2W3RdPWVbdF19dC5pbnN0YW50aWF0ZT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQpe2UuY2FsbCh0aGlzLHQpLHRoaXMuX2NiY0luaXQoKX1pKHQsZSk7Zm9yKHZhciByPU9iamVjdC5rZXlzKG8pLG49MDtuPHIubGVuZ3RoO24rKyl7dmFyIGE9cltuXTt0LnByb3RvdHlwZVthXT1vW2FdfXJldHVybiB0LmNyZWF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IHQoZSl9LHR9LG8uX2NiY0luaXQ9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgYSh0aGlzLm9wdGlvbnMuaXYpO3RoaXMuX2NiY1N0YXRlPWV9LG8uX3VwZGF0ZT1mdW5jdGlvbihlLHQscixuKXt2YXIgaT10aGlzLl9jYmNTdGF0ZSxvPXRoaXMuY29uc3RydWN0b3Iuc3VwZXJfLnByb3RvdHlwZSxhPWkuaXY7aWYoImVuY3J5cHQiPT09dGhpcy50eXBlKXtmb3IodmFyIHM9MDtzPHRoaXMuYmxvY2tTaXplO3MrKylhW3NdXj1lW3Qrc107by5fdXBkYXRlLmNhbGwodGhpcyxhLDAscixuKTtmb3Iocz0wO3M8dGhpcy5ibG9ja1NpemU7cysrKWFbc109cltuK3NdfWVsc2V7by5fdXBkYXRlLmNhbGwodGhpcyxlLHQscixuKTtmb3Iocz0wO3M8dGhpcy5ibG9ja1NpemU7cysrKXJbbitzXV49YVtzXTtmb3Iocz0wO3M8dGhpcy5ibG9ja1NpemU7cysrKWFbc109ZVt0K3NdfX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig0NyksaT1yKDcpLG89cigyMTIpLGE9by5DaXBoZXIscz1vLkRFUztmdW5jdGlvbiB1KGUsdCl7bi5lcXVhbCh0Lmxlbmd0aCwyNCwiSW52YWxpZCBrZXkgbGVuZ3RoIik7dmFyIHI9dC5zbGljZSgwLDgpLGk9dC5zbGljZSg4LDE2KSxvPXQuc2xpY2UoMTYsMjQpO3RoaXMuY2lwaGVycz0iZW5jcnlwdCI9PT1lP1tzLmNyZWF0ZSh7dHlwZToiZW5jcnlwdCIsa2V5OnJ9KSxzLmNyZWF0ZSh7dHlwZToiZGVjcnlwdCIsa2V5Oml9KSxzLmNyZWF0ZSh7dHlwZToiZW5jcnlwdCIsa2V5Om99KV06W3MuY3JlYXRlKHt0eXBlOiJkZWNyeXB0IixrZXk6b30pLHMuY3JlYXRlKHt0eXBlOiJlbmNyeXB0IixrZXk6aX0pLHMuY3JlYXRlKHt0eXBlOiJkZWNyeXB0IixrZXk6cn0pXX1mdW5jdGlvbiBjKGUpe2EuY2FsbCh0aGlzLGUpO3ZhciB0PW5ldyB1KHRoaXMudHlwZSx0aGlzLm9wdGlvbnMua2V5KTt0aGlzLl9lZGVTdGF0ZT10fWkoYyxhKSxlLmV4cG9ydHM9YyxjLmNyZWF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IGMoZSl9LGMucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGk9dGhpcy5fZWRlU3RhdGU7aS5jaXBoZXJzWzBdLl91cGRhdGUoZSx0LHIsbiksaS5jaXBoZXJzWzFdLl91cGRhdGUocixuLHIsbiksaS5jaXBoZXJzWzJdLl91cGRhdGUocixuLHIsbil9LGMucHJvdG90eXBlLl9wYWQ9cy5wcm90b3R5cGUuX3BhZCxjLnByb3RvdHlwZS5fdW5wYWQ9cy5wcm90b3R5cGUuX3VucGFkfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyMTQpLGk9cigzMjYpLG89cig4KS5CdWZmZXIsYT1yKDMyNykscz1yKDc4KSx1PXIoMTU4KSxjPXIoMTU5KTtmdW5jdGlvbiBmKGUsdCxyKXtzLmNhbGwodGhpcyksdGhpcy5fY2FjaGU9bmV3IGgsdGhpcy5fY2lwaGVyPW5ldyB1LkFFUyh0KSx0aGlzLl9wcmV2PW8uZnJvbShyKSx0aGlzLl9tb2RlPWUsdGhpcy5fYXV0b3BhZGRpbmc9ITB9cig3KShmLHMpLGYucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oZSl7dmFyIHQscjt0aGlzLl9jYWNoZS5hZGQoZSk7Zm9yKHZhciBuPVtdO3Q9dGhpcy5fY2FjaGUuZ2V0KCk7KXI9dGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsdCksbi5wdXNoKHIpO3JldHVybiBvLmNvbmNhdChuKX07dmFyIGw9by5hbGxvYygxNiwxNik7ZnVuY3Rpb24gaCgpe3RoaXMuY2FjaGU9by5hbGxvY1Vuc2FmZSgwKX1mdW5jdGlvbiBwKGUsdCxyKXt2YXIgcz1uW2UudG9Mb3dlckNhc2UoKV07aWYoIXMpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIik7aWYoInN0cmluZyI9PT10eXBlb2YgdCYmKHQ9by5mcm9tKHQpKSx0Lmxlbmd0aCE9PXMua2V5LzgpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBrZXkgbGVuZ3RoICIrdC5sZW5ndGgpO2lmKCJzdHJpbmciPT09dHlwZW9mIHImJihyPW8uZnJvbShyKSksIkdDTSIhPT1zLm1vZGUmJnIubGVuZ3RoIT09cy5pdil0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIGl2IGxlbmd0aCAiK3IubGVuZ3RoKTtyZXR1cm4ic3RyZWFtIj09PXMudHlwZT9uZXcgYShzLm1vZHVsZSx0LHIpOiJhdXRoIj09PXMudHlwZT9uZXcgaShzLm1vZHVsZSx0LHIpOm5ldyBmKHMubW9kdWxlLHQscil9Zi5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fY2FjaGUuZmx1c2goKTtpZih0aGlzLl9hdXRvcGFkZGluZylyZXR1cm4gZT10aGlzLl9tb2RlLmVuY3J5cHQodGhpcyxlKSx0aGlzLl9jaXBoZXIuc2NydWIoKSxlO2lmKCFlLmVxdWFscyhsKSl0aHJvdyB0aGlzLl9jaXBoZXIuc2NydWIoKSxuZXcgRXJyb3IoImRhdGEgbm90IG11bHRpcGxlIG9mIGJsb2NrIGxlbmd0aCIpfSxmLnByb3RvdHlwZS5zZXRBdXRvUGFkZGluZz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fYXV0b3BhZGRpbmc9ISFlLHRoaXN9LGgucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlKXt0aGlzLmNhY2hlPW8uY29uY2F0KFt0aGlzLmNhY2hlLGVdKX0saC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKCl7aWYodGhpcy5jYWNoZS5sZW5ndGg+MTUpe3ZhciBlPXRoaXMuY2FjaGUuc2xpY2UoMCwxNik7cmV0dXJuIHRoaXMuY2FjaGU9dGhpcy5jYWNoZS5zbGljZSgxNiksZX1yZXR1cm4gbnVsbH0saC5wcm90b3R5cGUuZmx1c2g9ZnVuY3Rpb24oKXtmb3IodmFyIGU9MTYtdGhpcy5jYWNoZS5sZW5ndGgsdD1vLmFsbG9jVW5zYWZlKGUpLHI9LTE7KytyPGU7KXQud3JpdGVVSW50OChlLHIpO3JldHVybiBvLmNvbmNhdChbdGhpcy5jYWNoZSx0XSl9LHQuY3JlYXRlQ2lwaGVyaXY9cCx0LmNyZWF0ZUNpcGhlcj1mdW5jdGlvbihlLHQpe3ZhciByPW5bZS50b0xvd2VyQ2FzZSgpXTtpZighcil0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIHN1aXRlIHR5cGUiKTt2YXIgaT1jKHQsITEsci5rZXksci5pdik7cmV0dXJuIHAoZSxpLmtleSxpLml2KX19LGZ1bmN0aW9uKGUsdCl7dC5lbmNyeXB0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX2NpcGhlci5lbmNyeXB0QmxvY2sodCl9LHQuZGVjcnlwdD1mdW5jdGlvbihlLHQpe3JldHVybiBlLl9jaXBoZXIuZGVjcnlwdEJsb2NrKHQpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTI5KTt0LmVuY3J5cHQ9ZnVuY3Rpb24oZSx0KXt2YXIgcj1uKHQsZS5fcHJldik7cmV0dXJuIGUuX3ByZXY9ZS5fY2lwaGVyLmVuY3J5cHRCbG9jayhyKSxlLl9wcmV2fSx0LmRlY3J5cHQ9ZnVuY3Rpb24oZSx0KXt2YXIgcj1lLl9wcmV2O2UuX3ByZXY9dDt2YXIgaT1lLl9jaXBoZXIuZGVjcnlwdEJsb2NrKHQpO3JldHVybiBuKGkscil9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4KS5CdWZmZXIsaT1yKDEyOSk7ZnVuY3Rpb24gbyhlLHQscil7dmFyIG89dC5sZW5ndGgsYT1pKHQsZS5fY2FjaGUpO3JldHVybiBlLl9jYWNoZT1lLl9jYWNoZS5zbGljZShvKSxlLl9wcmV2PW4uY29uY2F0KFtlLl9wcmV2LHI/dDphXSksYX10LmVuY3J5cHQ9ZnVuY3Rpb24oZSx0LHIpe2Zvcih2YXIgaSxhPW4uYWxsb2NVbnNhZmUoMCk7dC5sZW5ndGg7KXtpZigwPT09ZS5fY2FjaGUubGVuZ3RoJiYoZS5fY2FjaGU9ZS5fY2lwaGVyLmVuY3J5cHRCbG9jayhlLl9wcmV2KSxlLl9wcmV2PW4uYWxsb2NVbnNhZmUoMCkpLCEoZS5fY2FjaGUubGVuZ3RoPD10Lmxlbmd0aCkpe2E9bi5jb25jYXQoW2EsbyhlLHQscildKTticmVha31pPWUuX2NhY2hlLmxlbmd0aCxhPW4uY29uY2F0KFthLG8oZSx0LnNsaWNlKDAsaSkscildKSx0PXQuc2xpY2UoaSl9cmV0dXJuIGF9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4KS5CdWZmZXI7ZnVuY3Rpb24gaShlLHQscil7dmFyIGk9ZS5fY2lwaGVyLmVuY3J5cHRCbG9jayhlLl9wcmV2KVswXV50O3JldHVybiBlLl9wcmV2PW4uY29uY2F0KFtlLl9wcmV2LnNsaWNlKDEpLG4uZnJvbShbcj90OmldKV0pLGl9dC5lbmNyeXB0PWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIG89dC5sZW5ndGgsYT1uLmFsbG9jVW5zYWZlKG8pLHM9LTE7KytzPG87KWFbc109aShlLHRbc10scik7cmV0dXJuIGF9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4KS5CdWZmZXI7ZnVuY3Rpb24gaShlLHQscil7Zm9yKHZhciBuLGksYT0tMSxzPTA7KythPDg7KW49dCYxPDw3LWE/MTI4OjAscys9KDEyOCYoaT1lLl9jaXBoZXIuZW5jcnlwdEJsb2NrKGUuX3ByZXYpWzBdXm4pKT4+YSU4LGUuX3ByZXY9byhlLl9wcmV2LHI/bjppKTtyZXR1cm4gc31mdW5jdGlvbiBvKGUsdCl7dmFyIHI9ZS5sZW5ndGgsaT0tMSxvPW4uYWxsb2NVbnNhZmUoZS5sZW5ndGgpO2ZvcihlPW4uY29uY2F0KFtlLG4uZnJvbShbdF0pXSk7KytpPHI7KW9baV09ZVtpXTw8MXxlW2krMV0+Pjc7cmV0dXJuIG99dC5lbmNyeXB0PWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIG89dC5sZW5ndGgsYT1uLmFsbG9jVW5zYWZlKG8pLHM9LTE7KytzPG87KWFbc109aShlLHRbc10scik7cmV0dXJuIGF9fSxmdW5jdGlvbihlLHQscil7KGZ1bmN0aW9uKGUpe3ZhciBuPXIoMTI5KTtmdW5jdGlvbiBpKGUpe3JldHVybiBlLl9wcmV2PWUuX2NpcGhlci5lbmNyeXB0QmxvY2soZS5fcHJldiksZS5fcHJldn10LmVuY3J5cHQ9ZnVuY3Rpb24odCxyKXtmb3IoO3QuX2NhY2hlLmxlbmd0aDxyLmxlbmd0aDspdC5fY2FjaGU9ZS5jb25jYXQoW3QuX2NhY2hlLGkodCldKTt2YXIgbz10Ll9jYWNoZS5zbGljZSgwLHIubGVuZ3RoKTtyZXR1cm4gdC5fY2FjaGU9dC5fY2FjaGUuc2xpY2Uoci5sZW5ndGgpLG4ocixvKX19KS5jYWxsKHRoaXMscigxOCkuQnVmZmVyKX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoOCkuQnVmZmVyLGk9bi5hbGxvYygxNiwwKTtmdW5jdGlvbiBvKGUpe3ZhciB0PW4uYWxsb2NVbnNhZmUoMTYpO3JldHVybiB0LndyaXRlVUludDMyQkUoZVswXT4+PjAsMCksdC53cml0ZVVJbnQzMkJFKGVbMV0+Pj4wLDQpLHQud3JpdGVVSW50MzJCRShlWzJdPj4+MCw4KSx0LndyaXRlVUludDMyQkUoZVszXT4+PjAsMTIpLHR9ZnVuY3Rpb24gYShlKXt0aGlzLmg9ZSx0aGlzLnN0YXRlPW4uYWxsb2MoMTYsMCksdGhpcy5jYWNoZT1uLmFsbG9jVW5zYWZlKDApfWEucHJvdG90eXBlLmdoYXNoPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0tMTsrK3Q8ZS5sZW5ndGg7KXRoaXMuc3RhdGVbdF1ePWVbdF07dGhpcy5fbXVsdGlwbHkoKX0sYS5wcm90b3R5cGUuX211bHRpcGx5PWZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQscixuPVsoZT10aGlzLmgpLnJlYWRVSW50MzJCRSgwKSxlLnJlYWRVSW50MzJCRSg0KSxlLnJlYWRVSW50MzJCRSg4KSxlLnJlYWRVSW50MzJCRSgxMildLGk9WzAsMCwwLDBdLGE9LTE7KythPDEyODspe2ZvcigwIT09KHRoaXMuc3RhdGVbfn4oYS84KV0mMTw8Ny1hJTgpJiYoaVswXV49blswXSxpWzFdXj1uWzFdLGlbMl1ePW5bMl0saVszXV49blszXSkscj0wIT09KDEmblszXSksdD0zO3Q+MDt0LS0pblt0XT1uW3RdPj4+MXwoMSZuW3QtMV0pPDwzMTtuWzBdPW5bMF0+Pj4xLHImJihuWzBdPW5bMF1eMjI1PDwyNCl9dGhpcy5zdGF0ZT1vKGkpfSxhLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHRoaXMuY2FjaGU9bi5jb25jYXQoW3RoaXMuY2FjaGUsZV0pO3RoaXMuY2FjaGUubGVuZ3RoPj0xNjspdD10aGlzLmNhY2hlLnNsaWNlKDAsMTYpLHRoaXMuY2FjaGU9dGhpcy5jYWNoZS5zbGljZSgxNiksdGhpcy5naGFzaCh0KX0sYS5wcm90b3R5cGUuZmluYWw9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5jYWNoZS5sZW5ndGgmJnRoaXMuZ2hhc2gobi5jb25jYXQoW3RoaXMuY2FjaGUsaV0sMTYpKSx0aGlzLmdoYXNoKG8oWzAsZSwwLHRdKSksdGhpcy5zdGF0ZX0sZS5leHBvcnRzPWF9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDMyNiksaT1yKDgpLkJ1ZmZlcixvPXIoMjE0KSxhPXIoMzI3KSxzPXIoNzgpLHU9cigxNTgpLGM9cigxNTkpO2Z1bmN0aW9uIGYoZSx0LHIpe3MuY2FsbCh0aGlzKSx0aGlzLl9jYWNoZT1uZXcgbCx0aGlzLl9sYXN0PXZvaWQgMCx0aGlzLl9jaXBoZXI9bmV3IHUuQUVTKHQpLHRoaXMuX3ByZXY9aS5mcm9tKHIpLHRoaXMuX21vZGU9ZSx0aGlzLl9hdXRvcGFkZGluZz0hMH1mdW5jdGlvbiBsKCl7dGhpcy5jYWNoZT1pLmFsbG9jVW5zYWZlKDApfWZ1bmN0aW9uIGgoZSx0LHIpe3ZhciBzPW9bZS50b0xvd2VyQ2FzZSgpXTtpZighcyl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIHN1aXRlIHR5cGUiKTtpZigic3RyaW5nIj09PXR5cGVvZiByJiYocj1pLmZyb20ocikpLCJHQ00iIT09cy5tb2RlJiZyLmxlbmd0aCE9PXMuaXYpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBpdiBsZW5ndGggIityLmxlbmd0aCk7aWYoInN0cmluZyI9PT10eXBlb2YgdCYmKHQ9aS5mcm9tKHQpKSx0Lmxlbmd0aCE9PXMua2V5LzgpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBrZXkgbGVuZ3RoICIrdC5sZW5ndGgpO3JldHVybiJzdHJlYW0iPT09cy50eXBlP25ldyBhKHMubW9kdWxlLHQsciwhMCk6ImF1dGgiPT09cy50eXBlP25ldyBuKHMubW9kdWxlLHQsciwhMCk6bmV3IGYocy5tb2R1bGUsdCxyKX1yKDcpKGYscyksZi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihlKXt2YXIgdCxyO3RoaXMuX2NhY2hlLmFkZChlKTtmb3IodmFyIG49W107dD10aGlzLl9jYWNoZS5nZXQodGhpcy5fYXV0b3BhZGRpbmcpOylyPXRoaXMuX21vZGUuZGVjcnlwdCh0aGlzLHQpLG4ucHVzaChyKTtyZXR1cm4gaS5jb25jYXQobil9LGYucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2NhY2hlLmZsdXNoKCk7aWYodGhpcy5fYXV0b3BhZGRpbmcpcmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PWVbMTVdO2lmKHQ8MXx8dD4xNil0aHJvdyBuZXcgRXJyb3IoInVuYWJsZSB0byBkZWNyeXB0IGRhdGEiKTt2YXIgcj0tMTtmb3IoOysrcjx0OylpZihlW3IrKDE2LXQpXSE9PXQpdGhyb3cgbmV3IEVycm9yKCJ1bmFibGUgdG8gZGVjcnlwdCBkYXRhIik7aWYoMTY9PT10KXJldHVybjtyZXR1cm4gZS5zbGljZSgwLDE2LXQpfSh0aGlzLl9tb2RlLmRlY3J5cHQodGhpcyxlKSk7aWYoZSl0aHJvdyBuZXcgRXJyb3IoImRhdGEgbm90IG11bHRpcGxlIG9mIGJsb2NrIGxlbmd0aCIpfSxmLnByb3RvdHlwZS5zZXRBdXRvUGFkZGluZz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fYXV0b3BhZGRpbmc9ISFlLHRoaXN9LGwucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlKXt0aGlzLmNhY2hlPWkuY29uY2F0KFt0aGlzLmNhY2hlLGVdKX0sbC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3ZhciB0O2lmKGUpe2lmKHRoaXMuY2FjaGUubGVuZ3RoPjE2KXJldHVybiB0PXRoaXMuY2FjaGUuc2xpY2UoMCwxNiksdGhpcy5jYWNoZT10aGlzLmNhY2hlLnNsaWNlKDE2KSx0fWVsc2UgaWYodGhpcy5jYWNoZS5sZW5ndGg+PTE2KXJldHVybiB0PXRoaXMuY2FjaGUuc2xpY2UoMCwxNiksdGhpcy5jYWNoZT10aGlzLmNhY2hlLnNsaWNlKDE2KSx0O3JldHVybiBudWxsfSxsLnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbigpe2lmKHRoaXMuY2FjaGUubGVuZ3RoKXJldHVybiB0aGlzLmNhY2hlfSx0LmNyZWF0ZURlY2lwaGVyPWZ1bmN0aW9uKGUsdCl7dmFyIHI9b1tlLnRvTG93ZXJDYXNlKCldO2lmKCFyKXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgc3VpdGUgdHlwZSIpO3ZhciBuPWModCwhMSxyLmtleSxyLml2KTtyZXR1cm4gaChlLG4ua2V5LG4uaXYpfSx0LmNyZWF0ZURlY2lwaGVyaXY9aH0sZnVuY3Rpb24oZSx0KXt0WyJkZXMtZWNiIl09e2tleTo4LGl2OjB9LHRbImRlcy1jYmMiXT10LmRlcz17a2V5OjgsaXY6OH0sdFsiZGVzLWVkZTMtY2JjIl09dC5kZXMzPXtrZXk6MjQsaXY6OH0sdFsiZGVzLWVkZTMiXT17a2V5OjI0LGl2OjB9LHRbImRlcy1lZGUtY2JjIl09e2tleToxNixpdjo4fSx0WyJkZXMtZWRlIl09e2tleToxNixpdjowfX0sZnVuY3Rpb24oZSx0LHIpeyhmdW5jdGlvbihlKXt2YXIgbj1yKDMyOCksaT1yKDU4Nyksbz1yKDU4OCk7dmFyIGE9e2JpbmFyeTohMCxoZXg6ITAsYmFzZTY0OiEwfTt0LkRpZmZpZUhlbGxtYW5Hcm91cD10LmNyZWF0ZURpZmZpZUhlbGxtYW5Hcm91cD10LmdldERpZmZpZUhlbGxtYW49ZnVuY3Rpb24odCl7dmFyIHI9bmV3IGUoaVt0XS5wcmltZSwiaGV4Iiksbj1uZXcgZShpW3RdLmdlbiwiaGV4Iik7cmV0dXJuIG5ldyBvKHIsbil9LHQuY3JlYXRlRGlmZmllSGVsbG1hbj10LkRpZmZpZUhlbGxtYW49ZnVuY3Rpb24gdChyLGkscyx1KXtyZXR1cm4gZS5pc0J1ZmZlcihpKXx8dm9pZCAwPT09YVtpXT90KHIsImJpbmFyeSIsaSxzKTooaT1pfHwiYmluYXJ5Iix1PXV8fCJiaW5hcnkiLHM9c3x8bmV3IGUoWzJdKSxlLmlzQnVmZmVyKHMpfHwocz1uZXcgZShzLHUpKSwibnVtYmVyIj09PXR5cGVvZiByP25ldyBvKG4ocixzKSxzLCEwKTooZS5pc0J1ZmZlcihyKXx8KHI9bmV3IGUocixpKSksbmV3IG8ocixzLCEwKSkpfX0pLmNhbGwodGhpcyxyKDE4KS5CdWZmZXIpfSwsLGZ1bmN0aW9uKGUpe2UuZXhwb3J0cz17bW9kcDE6e2dlbjoiMDIiLHByaW1lOiJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjNhMzYyMGZmZmZmZmZmZmZmZmZmZmYifSxtb2RwMjp7Z2VuOiIwMiIscHJpbWU6ImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U2NTM4MWZmZmZmZmZmZmZmZmZmZmYifSxtb2RwNTp7Z2VuOiIwMiIscHJpbWU6ImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMjM3MzI3ZmZmZmZmZmZmZmZmZmZmZiJ9LG1vZHAxNDp7Z2VuOiIwMiIscHJpbWU6ImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3ODNhMmVjMDdhMjhmYjVjNTVkZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVhOGFhY2FhNjhmZmZmZmZmZmZmZmZmZmZmIn0sbW9kcDE1OntnZW46IjAyIixwcmltZToiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFhYzQyZGFkMzMxNzBkMDQ1MDdhMzNhODU1MjFhYmRmMWNiYTY0ZWNmYjg1MDQ1OGRiZWYwYThhZWE3MTU3NWQwNjBjN2RiMzk3MGY4NWE2ZTFlNGM3YWJmNWFlOGNkYjA5MzNkNzFlOGM5NGUwNGEyNTYxOWRjZWUzZDIyNjFhZDJlZTZiZjEyZmZhMDZkOThhMDg2NGQ4NzYwMjczM2VjODZhNjQ1MjFmMmIxODE3N2IyMDBjYmJlMTE3NTc3YTYxNWQ2Yzc3MDk4OGMwYmFkOTQ2ZTIwOGUyNGZhMDc0ZTVhYjMxNDNkYjViZmNlMGZkMTA4ZTRiODJkMTIwYTkzYWQyY2FmZmZmZmZmZmZmZmZmZmZmIn0sbW9kcDE2OntnZW46IjAyIixwcmltZToiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFhYzQyZGFkMzMxNzBkMDQ1MDdhMzNhODU1MjFhYmRmMWNiYTY0ZWNmYjg1MDQ1OGRiZWYwYThhZWE3MTU3NWQwNjBjN2RiMzk3MGY4NWE2ZTFlNGM3YWJmNWFlOGNkYjA5MzNkNzFlOGM5NGUwNGEyNTYxOWRjZWUzZDIyNjFhZDJlZTZiZjEyZmZhMDZkOThhMDg2NGQ4NzYwMjczM2VjODZhNjQ1MjFmMmIxODE3N2IyMDBjYmJlMTE3NTc3YTYxNWQ2Yzc3MDk4OGMwYmFkOTQ2ZTIwOGUyNGZhMDc0ZTVhYjMxNDNkYjViZmNlMGZkMTA4ZTRiODJkMTIwYTkyMTA4MDExYTcyM2MxMmE3ODdlNmQ3ODg3MTlhMTBiZGJhNWIyNjk5YzMyNzE4NmFmNGUyM2MxYTk0NjgzNGI2MTUwYmRhMjU4M2U5Y2EyYWQ0NGNlOGRiYmJjMmRiMDRkZThlZjkyZThlZmMxNDFmYmVjYWE2Mjg3YzU5NDc0ZTZiYzA1ZDk5YjI5NjRmYTA5MGMzYTIyMzNiYTE4NjUxNWJlN2VkMWY2MTI5NzBjZWUyZDdhZmI4MWJkZDc2MjE3MDQ4MWNkMDA2OTEyN2Q1YjA1YWE5OTNiNGVhOTg4ZDhmZGRjMTg2ZmZiN2RjOTBhNmMwOGY0ZGY0MzVjOTM0MDYzMTk5ZmZmZmZmZmZmZmZmZmZmZiJ9LG1vZHAxNzp7Z2VuOiIwMiIscHJpbWU6ImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3ODNhMmVjMDdhMjhmYjVjNTVkZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVhOGFhYWM0MmRhZDMzMTcwZDA0NTA3YTMzYTg1NTIxYWJkZjFjYmE2NGVjZmI4NTA0NThkYmVmMGE4YWVhNzE1NzVkMDYwYzdkYjM5NzBmODVhNmUxZTRjN2FiZjVhZThjZGIwOTMzZDcxZThjOTRlMDRhMjU2MTlkY2VlM2QyMjYxYWQyZWU2YmYxMmZmYTA2ZDk4YTA4NjRkODc2MDI3MzNlYzg2YTY0NTIxZjJiMTgxNzdiMjAwY2JiZTExNzU3N2E2MTVkNmM3NzA5ODhjMGJhZDk0NmUyMDhlMjRmYTA3NGU1YWIzMTQzZGI1YmZjZTBmZDEwOGU0YjgyZDEyMGE5MjEwODAxMWE3MjNjMTJhNzg3ZTZkNzg4NzE5YTEwYmRiYTViMjY5OWMzMjcxODZhZjRlMjNjMWE5NDY4MzRiNjE1MGJkYTI1ODNlOWNhMmFkNDRjZThkYmJiYzJkYjA0ZGU4ZWY5MmU4ZWZjMTQxZmJlY2FhNjI4N2M1OTQ3NGU2YmMwNWQ5OWIyOTY0ZmEwOTBjM2EyMjMzYmExODY1MTViZTdlZDFmNjEyOTcwY2VlMmQ3YWZiODFiZGQ3NjIxNzA0ODFjZDAwNjkxMjdkNWIwNWFhOTkzYjRlYTk4OGQ4ZmRkYzE4NmZmYjdkYzkwYTZjMDhmNGRmNDM1YzkzNDAyODQ5MjM2YzNmYWI0ZDI3YzcwMjZjMWQ0ZGNiMjYwMjY0NmRlYzk3NTFlNzYzZGJhMzdiZGY4ZmY5NDA2YWQ5ZTUzMGVlNWRiMzgyZjQxMzAwMWFlYjA2YTUzZWQ5MDI3ZDgzMTE3OTcyN2IwODY1YTg5MThkYTNlZGJlYmNmOWIxNGVkNDRjZTZjYmFjZWQ0YmIxYmRiN2YxNDQ3ZTZjYzI1NGIzMzIwNTE1MTJiZDdhZjQyNmZiOGY0MDEzNzhjZDJiZjU5ODNjYTAxYzY0YjkyZWNmMDMyZWExNWQxNzIxZDAzZjQ4MmQ3Y2U2ZTc0ZmVmNmQ1NWU3MDJmNDY5ODBjODJiNWE4NDAzMTkwMGIxYzllNTllN2M5N2ZiZWM3ZThmMzIzYTk3YTdlMzZjYzg4YmUwZjFkNDViN2ZmNTg1YWM1NGJkNDA3YjIyYjQxNTRhYWNjOGY2ZDdlYmY0OGUxZDgxNGNjNWVkMjBmODAzN2UwYTc5NzE1ZWVmMjliZTMyODA2YTFkNThiYjdjNWRhNzZmNTUwYWEzZDhhMWZiZmYwZWIxOWNjYjFhMzEzZDU1Y2RhNTZjOWVjMmVmMjk2MzIzODdmZThkNzZlM2MwNDY4MDQzZThmNjYzZjQ4NjBlZTEyYmYyZDViMGI3NDc0ZDZlNjk0ZjkxZTZkY2M0MDI0ZmZmZmZmZmZmZmZmZmZmZiJ9LG1vZHAxODp7Z2VuOiIwMiIscHJpbWU6ImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3ODNhMmVjMDdhMjhmYjVjNTVkZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVhOGFhYWM0MmRhZDMzMTcwZDA0NTA3YTMzYTg1NTIxYWJkZjFjYmE2NGVjZmI4NTA0NThkYmVmMGE4YWVhNzE1NzVkMDYwYzdkYjM5NzBmODVhNmUxZTRjN2FiZjVhZThjZGIwOTMzZDcxZThjOTRlMDRhMjU2MTlkY2VlM2QyMjYxYWQyZWU2YmYxMmZmYTA2ZDk4YTA4NjRkODc2MDI3MzNlYzg2YTY0NTIxZjJiMTgxNzdiMjAwY2JiZTExNzU3N2E2MTVkNmM3NzA5ODhjMGJhZDk0NmUyMDhlMjRmYTA3NGU1YWIzMTQzZGI1YmZjZTBmZDEwOGU0YjgyZDEyMGE5MjEwODAxMWE3MjNjMTJhNzg3ZTZkNzg4NzE5YTEwYmRiYTViMjY5OWMzMjcxODZhZjRlMjNjMWE5NDY4MzRiNjE1MGJkYTI1ODNlOWNhMmFkNDRjZThkYmJiYzJkYjA0ZGU4ZWY5MmU4ZWZjMTQxZmJlY2FhNjI4N2M1OTQ3NGU2YmMwNWQ5OWIyOTY0ZmEwOTBjM2EyMjMzYmExODY1MTViZTdlZDFmNjEyOTcwY2VlMmQ3YWZiODFiZGQ3NjIxNzA0ODFjZDAwNjkxMjdkNWIwNWFhOTkzYjRlYTk4OGQ4ZmRkYzE4NmZmYjdkYzkwYTZjMDhmNGRmNDM1YzkzNDAyODQ5MjM2YzNmYWI0ZDI3YzcwMjZjMWQ0ZGNiMjYwMjY0NmRlYzk3NTFlNzYzZGJhMzdiZGY4ZmY5NDA2YWQ5ZTUzMGVlNWRiMzgyZjQxMzAwMWFlYjA2YTUzZWQ5MDI3ZDgzMTE3OTcyN2IwODY1YTg5MThkYTNlZGJlYmNmOWIxNGVkNDRjZTZjYmFjZWQ0YmIxYmRiN2YxNDQ3ZTZjYzI1NGIzMzIwNTE1MTJiZDdhZjQyNmZiOGY0MDEzNzhjZDJiZjU5ODNjYTAxYzY0YjkyZWNmMDMyZWExNWQxNzIxZDAzZjQ4MmQ3Y2U2ZTc0ZmVmNmQ1NWU3MDJmNDY5ODBjODJiNWE4NDAzMTkwMGIxYzllNTllN2M5N2ZiZWM3ZThmMzIzYTk3YTdlMzZjYzg4YmUwZjFkNDViN2ZmNTg1YWM1NGJkNDA3YjIyYjQxNTRhYWNjOGY2ZDdlYmY0OGUxZDgxNGNjNWVkMjBmODAzN2UwYTc5NzE1ZWVmMjliZTMyODA2YTFkNThiYjdjNWRhNzZmNTUwYWEzZDhhMWZiZmYwZWIxOWNjYjFhMzEzZDU1Y2RhNTZjOWVjMmVmMjk2MzIzODdmZThkNzZlM2MwNDY4MDQzZThmNjYzZjQ4NjBlZTEyYmYyZDViMGI3NDc0ZDZlNjk0ZjkxZTZkYmUxMTU5NzRhMzkyNmYxMmZlZTVlNDM4Nzc3Y2I2YTkzMmRmOGNkOGJlYzRkMDczYjkzMWJhM2JjODMyYjY4ZDlkZDMwMDc0MWZhN2JmOGFmYzQ3ZWQyNTc2ZjY5MzZiYTQyNDY2M2FhYjYzOWM1YWU0ZjU2ODM0MjNiNDc0MmJmMWM5NzgyMzhmMTZjYmUzOWQ2NTJkZTNmZGI4YmVmYzg0OGFkOTIyMjIyZTA0YTQwMzdjMDcxM2ViNTdhODFhMjNmMGM3MzQ3M2ZjNjQ2Y2VhMzA2YjRiY2JjODg2MmY4Mzg1ZGRmYTlkNGI3ZmEyYzA4N2U4Nzk2ODMzMDNlZDViZGQzYTA2MmIzY2Y1YjNhMjc4YTY2ZDJhMTNmODNmNDRmODJkZGYzMTBlZTA3NGFiNmEzNjQ1OTdlODk5YTAyNTVkYzE2NGYzMWNjNTA4NDY4NTFkZjlhYjQ4MTk1ZGVkN2VhMWIxZDUxMGJkN2VlNzRkNzNmYWYzNmJjMzFlY2ZhMjY4MzU5MDQ2ZjRlYjg3OWY5MjQwMDk0MzhiNDgxYzZjZDc4ODlhMDAyZWQ1ZWUzODJiYzkxOTBkYTZmYzAyNmU0Nzk1NThlNDQ3NTY3N2U5YWE5ZTMwNTBlMjc2NTY5NGRmYzgxZjU2ZTg4MGI5NmU3MTYwYzk4MGRkOThlZGQzZGZmZmZmZmZmZmZmZmZmZmZmIn19fSxmdW5jdGlvbihlLHQscil7KGZ1bmN0aW9uKHQpe3ZhciBuPXIoMjQpLGk9bmV3KHIoMzI5KSksbz1uZXcgbigyNCksYT1uZXcgbigxMSkscz1uZXcgbigxMCksdT1uZXcgbigzKSxjPW5ldyBuKDcpLGY9cigzMjgpLGw9cigxMDQpO2Z1bmN0aW9uIGgoZSxyKXtyZXR1cm4gcj1yfHwidXRmOCIsdC5pc0J1ZmZlcihlKXx8KGU9bmV3IHQoZSxyKSksdGhpcy5fcHViPW5ldyBuKGUpLHRoaXN9ZnVuY3Rpb24gcChlLHIpe3JldHVybiByPXJ8fCJ1dGY4Iix0LmlzQnVmZmVyKGUpfHwoZT1uZXcgdChlLHIpKSx0aGlzLl9wcml2PW5ldyBuKGUpLHRoaXN9ZS5leHBvcnRzPXk7dmFyIGQ9e307ZnVuY3Rpb24geShlLHQscil7dGhpcy5zZXRHZW5lcmF0b3IodCksdGhpcy5fX3ByaW1lPW5ldyBuKGUpLHRoaXMuX3ByaW1lPW4ubW9udCh0aGlzLl9fcHJpbWUpLHRoaXMuX3ByaW1lTGVuPWUubGVuZ3RoLHRoaXMuX3B1Yj12b2lkIDAsdGhpcy5fcHJpdj12b2lkIDAsdGhpcy5fcHJpbWVDb2RlPXZvaWQgMCxyPyh0aGlzLnNldFB1YmxpY0tleT1oLHRoaXMuc2V0UHJpdmF0ZUtleT1wKTp0aGlzLl9wcmltZUNvZGU9OH1mdW5jdGlvbiBnKGUscil7dmFyIG49bmV3IHQoZS50b0FycmF5KCkpO3JldHVybiByP24udG9TdHJpbmcocik6bn1PYmplY3QuZGVmaW5lUHJvcGVydHkoeS5wcm90b3R5cGUsInZlcmlmeUVycm9yIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4ibnVtYmVyIiE9PXR5cGVvZiB0aGlzLl9wcmltZUNvZGUmJih0aGlzLl9wcmltZUNvZGU9ZnVuY3Rpb24oZSx0KXt2YXIgcj10LnRvU3RyaW5nKCJoZXgiKSxuPVtyLGUudG9TdHJpbmcoMTYpXS5qb2luKCJfIik7aWYobiBpbiBkKXJldHVybiBkW25dO3ZhciBsLGg9MDtpZihlLmlzRXZlbigpfHwhZi5zaW1wbGVTaWV2ZXx8IWYuZmVybWF0VGVzdChlKXx8IWkudGVzdChlKSlyZXR1cm4gaCs9MSxoKz0iMDIiPT09cnx8IjA1Ij09PXI/ODo0LGRbbl09aCxoO3N3aXRjaChpLnRlc3QoZS5zaHJuKDEpKXx8KGgrPTIpLHIpe2Nhc2UiMDIiOmUubW9kKG8pLmNtcChhKSYmKGgrPTgpO2JyZWFrO2Nhc2UiMDUiOihsPWUubW9kKHMpKS5jbXAodSkmJmwuY21wKGMpJiYoaCs9OCk7YnJlYWs7ZGVmYXVsdDpoKz00fXJldHVybiBkW25dPWgsaH0odGhpcy5fX3ByaW1lLHRoaXMuX19nZW4pKSx0aGlzLl9wcmltZUNvZGV9fSkseS5wcm90b3R5cGUuZ2VuZXJhdGVLZXlzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ByaXZ8fCh0aGlzLl9wcml2PW5ldyBuKGwodGhpcy5fcHJpbWVMZW4pKSksdGhpcy5fcHViPXRoaXMuX2dlbi50b1JlZCh0aGlzLl9wcmltZSkucmVkUG93KHRoaXMuX3ByaXYpLmZyb21SZWQoKSx0aGlzLmdldFB1YmxpY0tleSgpfSx5LnByb3RvdHlwZS5jb21wdXRlU2VjcmV0PWZ1bmN0aW9uKGUpe3ZhciByPShlPShlPW5ldyBuKGUpKS50b1JlZCh0aGlzLl9wcmltZSkpLnJlZFBvdyh0aGlzLl9wcml2KS5mcm9tUmVkKCksaT1uZXcgdChyLnRvQXJyYXkoKSksbz10aGlzLmdldFByaW1lKCk7aWYoaS5sZW5ndGg8by5sZW5ndGgpe3ZhciBhPW5ldyB0KG8ubGVuZ3RoLWkubGVuZ3RoKTthLmZpbGwoMCksaT10LmNvbmNhdChbYSxpXSl9cmV0dXJuIGl9LHkucHJvdG90eXBlLmdldFB1YmxpY0tleT1mdW5jdGlvbihlKXtyZXR1cm4gZyh0aGlzLl9wdWIsZSl9LHkucHJvdG90eXBlLmdldFByaXZhdGVLZXk9ZnVuY3Rpb24oZSl7cmV0dXJuIGcodGhpcy5fcHJpdixlKX0seS5wcm90b3R5cGUuZ2V0UHJpbWU9ZnVuY3Rpb24oZSl7cmV0dXJuIGcodGhpcy5fX3ByaW1lLGUpfSx5LnByb3RvdHlwZS5nZXRHZW5lcmF0b3I9ZnVuY3Rpb24oZSl7cmV0dXJuIGcodGhpcy5fZ2VuLGUpfSx5LnByb3RvdHlwZS5zZXRHZW5lcmF0b3I9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gcj1yfHwidXRmOCIsdC5pc0J1ZmZlcihlKXx8KGU9bmV3IHQoZSxyKSksdGhpcy5fX2dlbj1lLHRoaXMuX2dlbj1uZXcgbihlKSx0aGlzfX0pLmNhbGwodGhpcyxyKDE4KS5CdWZmZXIpfSxmdW5jdGlvbihlLHQscil7KGZ1bmN0aW9uKHQpe3ZhciBuPXIoMTI3KSxpPXIoMjA2KSxvPXIoNyksYT1yKDU5MCkscz1yKDYyMiksdT1yKDMxOCk7ZnVuY3Rpb24gYyhlKXtpLldyaXRhYmxlLmNhbGwodGhpcyk7dmFyIHQ9dVtlXTtpZighdCl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gbWVzc2FnZSBkaWdlc3QiKTt0aGlzLl9oYXNoVHlwZT10Lmhhc2gsdGhpcy5faGFzaD1uKHQuaGFzaCksdGhpcy5fdGFnPXQuaWQsdGhpcy5fc2lnblR5cGU9dC5zaWdufWZ1bmN0aW9uIGYoZSl7aS5Xcml0YWJsZS5jYWxsKHRoaXMpO3ZhciB0PXVbZV07aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIG1lc3NhZ2UgZGlnZXN0Iik7dGhpcy5faGFzaD1uKHQuaGFzaCksdGhpcy5fdGFnPXQuaWQsdGhpcy5fc2lnblR5cGU9dC5zaWdufWZ1bmN0aW9uIGwoZSl7cmV0dXJuIG5ldyBjKGUpfWZ1bmN0aW9uIGgoZSl7cmV0dXJuIG5ldyBmKGUpfU9iamVjdC5rZXlzKHUpLmZvckVhY2goZnVuY3Rpb24oZSl7dVtlXS5pZD1uZXcgdCh1W2VdLmlkLCJoZXgiKSx1W2UudG9Mb3dlckNhc2UoKV09dVtlXX0pLG8oYyxpLldyaXRhYmxlKSxjLnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24oZSx0LHIpe3RoaXMuX2hhc2gudXBkYXRlKGUpLHIoKX0sYy5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUscil7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgZSYmKGU9bmV3IHQoZSxyKSksdGhpcy5faGFzaC51cGRhdGUoZSksdGhpc30sYy5wcm90b3R5cGUuc2lnbj1mdW5jdGlvbihlLHQpe3RoaXMuZW5kKCk7dmFyIHI9dGhpcy5faGFzaC5kaWdlc3QoKSxuPWEocixlLHRoaXMuX2hhc2hUeXBlLHRoaXMuX3NpZ25UeXBlLHRoaXMuX3RhZyk7cmV0dXJuIHQ/bi50b1N0cmluZyh0KTpufSxvKGYsaS5Xcml0YWJsZSksZi5wcm90b3R5cGUuX3dyaXRlPWZ1bmN0aW9uKGUsdCxyKXt0aGlzLl9oYXNoLnVwZGF0ZShlKSxyKCl9LGYucHJvdG90eQ=="
}

Changelog:

{
    "2020.04.17 15:39": "base64:aW9uIGkoZSl7dGhpcy5vcHRpb25zPWUsdGhpcy50eXBlPXRoaXMub3B0aW9ucy50eXBlLHRoaXMuYmxvY2tTaXplPTgsdGhpcy5faW5pdCgpLHRoaXMuYnVmZmVyPW5ldyBBcnJheSh0aGlzLmJsb2NrU2l6ZSksdGhpcy5idWZmZXJPZmY9MH1lLmV4cG9ydHM9aSxpLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbigpe30saS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUpe3JldHVybiAwPT09ZS5sZW5ndGg/W106ImRlY3J5cHQiPT09dGhpcy50eXBlP3RoaXMuX3VwZGF0ZURlY3J5cHQoZSk6dGhpcy5fdXBkYXRlRW5jcnlwdChlKX0saS5wcm90b3R5cGUuX2J1ZmZlcj1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj1NYXRoLm1pbih0aGlzLmJ1ZmZlci5sZW5ndGgtdGhpcy5idWZmZXJPZmYsZS5sZW5ndGgtdCksbj0wO248cjtuKyspdGhpcy5idWZmZXJbdGhpcy5idWZmZXJPZmYrbl09ZVt0K25dO3JldHVybiB0aGlzLmJ1ZmZlck9mZis9cixyfSxpLnByb3RvdHlwZS5fZmx1c2hCdWZmZXI9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5fdXBkYXRlKHRoaXMuYnVmZmVyLDAsZSx0KSx0aGlzLmJ1ZmZlck9mZj0wLHRoaXMuYmxvY2tTaXplfSxpLnByb3RvdHlwZS5fdXBkYXRlRW5jcnlwdD1mdW5jdGlvbihlKXt2YXIgdD0wLHI9MCxuPSh0aGlzLmJ1ZmZlck9mZitlLmxlbmd0aCkvdGhpcy5ibG9ja1NpemV8MCxpPW5ldyBBcnJheShuKnRoaXMuYmxvY2tTaXplKTswIT09dGhpcy5idWZmZXJPZmYmJih0Kz10aGlzLl9idWZmZXIoZSx0KSx0aGlzLmJ1ZmZlck9mZj09PXRoaXMuYnVmZmVyLmxlbmd0aCYmKHIrPXRoaXMuX2ZsdXNoQnVmZmVyKGkscikpKTtmb3IodmFyIG89ZS5sZW5ndGgtKGUubGVuZ3RoLXQpJXRoaXMuYmxvY2tTaXplO3Q8bzt0Kz10aGlzLmJsb2NrU2l6ZSl0aGlzLl91cGRhdGUoZSx0LGkscikscis9dGhpcy5ibG9ja1NpemU7Zm9yKDt0PGUubGVuZ3RoO3QrKyx0aGlzLmJ1ZmZlck9mZisrKXRoaXMuYnVmZmVyW3RoaXMuYnVmZmVyT2ZmXT1lW3RdO3JldHVybiBpfSxpLnByb3RvdHlwZS5fdXBkYXRlRGVjcnlwdD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxyPTAsbj1NYXRoLmNlaWwoKHRoaXMuYnVmZmVyT2ZmK2UubGVuZ3RoKS90aGlzLmJsb2NrU2l6ZSktMSxpPW5ldyBBcnJheShuKnRoaXMuYmxvY2tTaXplKTtuPjA7bi0tKXQrPXRoaXMuX2J1ZmZlcihlLHQpLHIrPXRoaXMuX2ZsdXNoQnVmZmVyKGkscik7cmV0dXJuIHQrPXRoaXMuX2J1ZmZlcihlLHQpLGl9LGkucHJvdG90eXBlLmZpbmFsPWZ1bmN0aW9uKGUpe3ZhciB0LHI7cmV0dXJuIGUmJih0PXRoaXMudXBkYXRlKGUpKSxyPSJlbmNyeXB0Ij09PXRoaXMudHlwZT90aGlzLl9maW5hbEVuY3J5cHQoKTp0aGlzLl9maW5hbERlY3J5cHQoKSx0P3QuY29uY2F0KHIpOnJ9LGkucHJvdG90eXBlLl9wYWQ9ZnVuY3Rpb24oZSx0KXtpZigwPT09dClyZXR1cm4hMTtmb3IoO3Q8ZS5sZW5ndGg7KWVbdCsrXT0wO3JldHVybiEwfSxpLnByb3RvdHlwZS5fZmluYWxFbmNyeXB0PWZ1bmN0aW9uKCl7aWYoIXRoaXMuX3BhZCh0aGlzLmJ1ZmZlcix0aGlzLmJ1ZmZlck9mZikpcmV0dXJuW107dmFyIGU9bmV3IEFycmF5KHRoaXMuYmxvY2tTaXplKTtyZXR1cm4gdGhpcy5fdXBkYXRlKHRoaXMuYnVmZmVyLDAsZSwwKSxlfSxpLnByb3RvdHlwZS5fdW5wYWQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGkucHJvdG90eXBlLl9maW5hbERlY3J5cHQ9ZnVuY3Rpb24oKXtuLmVxdWFsKHRoaXMuYnVmZmVyT2ZmLHRoaXMuYmxvY2tTaXplLCJOb3QgZW5vdWdoIGRhdGEgdG8gZGVjcnlwdCIpO3ZhciBlPW5ldyBBcnJheSh0aGlzLmJsb2NrU2l6ZSk7cmV0dXJuIHRoaXMuX2ZsdXNoQnVmZmVyKGUsMCksdGhpcy5fdW5wYWQoZSl9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoNDcpLGk9cig3KSxvPXIoMjEyKSxhPW8udXRpbHMscz1vLkNpcGhlcjtmdW5jdGlvbiB1KCl7dGhpcy50bXA9bmV3IEFycmF5KDIpLHRoaXMua2V5cz1udWxsfWZ1bmN0aW9uIGMoZSl7cy5jYWxsKHRoaXMsZSk7dmFyIHQ9bmV3IHU7dGhpcy5fZGVzU3RhdGU9dCx0aGlzLmRlcml2ZUtleXModCxlLmtleSl9aShjLHMpLGUuZXhwb3J0cz1jLGMuY3JlYXRlPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgYyhlKX07dmFyIGY9WzEsMSwyLDIsMiwyLDIsMiwxLDIsMiwyLDIsMiwyLDFdO2MucHJvdG90eXBlLmRlcml2ZUtleXM9ZnVuY3Rpb24oZSx0KXtlLmtleXM9bmV3IEFycmF5KDMyKSxuLmVxdWFsKHQubGVuZ3RoLHRoaXMuYmxvY2tTaXplLCJJbnZhbGlkIGtleSBsZW5ndGgiKTt2YXIgcj1hLnJlYWRVSW50MzJCRSh0LDApLGk9YS5yZWFkVUludDMyQkUodCw0KTthLnBjMShyLGksZS50bXAsMCkscj1lLnRtcFswXSxpPWUudG1wWzFdO2Zvcih2YXIgbz0wO288ZS5rZXlzLmxlbmd0aDtvKz0yKXt2YXIgcz1mW28+Pj4xXTtyPWEucjI4c2hsKHIscyksaT1hLnIyOHNobChpLHMpLGEucGMyKHIsaSxlLmtleXMsbyl9fSxjLnByb3RvdHlwZS5fdXBkYXRlPWZ1bmN0aW9uKGUsdCxyLG4pe3ZhciBpPXRoaXMuX2Rlc1N0YXRlLG89YS5yZWFkVUludDMyQkUoZSx0KSxzPWEucmVhZFVJbnQzMkJFKGUsdCs0KTthLmlwKG8scyxpLnRtcCwwKSxvPWkudG1wWzBdLHM9aS50bXBbMV0sImVuY3J5cHQiPT09dGhpcy50eXBlP3RoaXMuX2VuY3J5cHQoaSxvLHMsaS50bXAsMCk6dGhpcy5fZGVjcnlwdChpLG8scyxpLnRtcCwwKSxvPWkudG1wWzBdLHM9aS50bXBbMV0sYS53cml0ZVVJbnQzMkJFKHIsbyxuKSxhLndyaXRlVUludDMyQkUocixzLG4rNCl9LGMucHJvdG90eXBlLl9wYWQ9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHI9ZS5sZW5ndGgtdCxuPXQ7bjxlLmxlbmd0aDtuKyspZVtuXT1yO3JldHVybiEwfSxjLnByb3RvdHlwZS5fdW5wYWQ9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWVbZS5sZW5ndGgtMV0scj1lLmxlbmd0aC10O3I8ZS5sZW5ndGg7cisrKW4uZXF1YWwoZVtyXSx0KTtyZXR1cm4gZS5zbGljZSgwLGUubGVuZ3RoLXQpfSxjLnByb3RvdHlwZS5fZW5jcnlwdD1mdW5jdGlvbihlLHQscixuLGkpe2Zvcih2YXIgbz10LHM9cix1PTA7dTxlLmtleXMubGVuZ3RoO3UrPTIpe3ZhciBjPWUua2V5c1t1XSxmPWUua2V5c1t1KzFdO2EuZXhwYW5kKHMsZS50bXAsMCksY149ZS50bXBbMF0sZl49ZS50bXBbMV07dmFyIGw9YS5zdWJzdGl0dXRlKGMsZiksaD1zO3M9KG9eYS5wZXJtdXRlKGwpKT4+PjAsbz1ofWEucmlwKHMsbyxuLGkpfSxjLnByb3RvdHlwZS5fZGVjcnlwdD1mdW5jdGlvbihlLHQscixuLGkpe2Zvcih2YXIgbz1yLHM9dCx1PWUua2V5cy5sZW5ndGgtMjt1Pj0wO3UtPTIpe3ZhciBjPWUua2V5c1t1XSxmPWUua2V5c1t1KzFdO2EuZXhwYW5kKG8sZS50bXAsMCksY149ZS50bXBbMF0sZl49ZS50bXBbMV07dmFyIGw9YS5zdWJzdGl0dXRlKGMsZiksaD1vO289KHNeYS5wZXJtdXRlKGwpKT4+PjAscz1ofWEucmlwKG8scyxuLGkpfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDQ3KSxpPXIoNyksbz17fTtmdW5jdGlvbiBhKGUpe24uZXF1YWwoZS5sZW5ndGgsOCwiSW52YWxpZCBJViBsZW5ndGgiKSx0aGlzLml2PW5ldyBBcnJheSg4KTtmb3IodmFyIHQ9MDt0PHRoaXMuaXYubGVuZ3RoO3QrKyl0aGlzLml2W3RdPWVbdF19dC5pbnN0YW50aWF0ZT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KHQpe2UuY2FsbCh0aGlzLHQpLHRoaXMuX2NiY0luaXQoKX1pKHQsZSk7Zm9yKHZhciByPU9iamVjdC5rZXlzKG8pLG49MDtuPHIubGVuZ3RoO24rKyl7dmFyIGE9cltuXTt0LnByb3RvdHlwZVthXT1vW2FdfXJldHVybiB0LmNyZWF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IHQoZSl9LHR9LG8uX2NiY0luaXQ9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgYSh0aGlzLm9wdGlvbnMuaXYpO3RoaXMuX2NiY1N0YXRlPWV9LG8uX3VwZGF0ZT1mdW5jdGlvbihlLHQscixuKXt2YXIgaT10aGlzLl9jYmNTdGF0ZSxvPXRoaXMuY29uc3RydWN0b3Iuc3VwZXJfLnByb3RvdHlwZSxhPWkuaXY7aWYoImVuY3J5cHQiPT09dGhpcy50eXBlKXtmb3IodmFyIHM9MDtzPHRoaXMuYmxvY2tTaXplO3MrKylhW3NdXj1lW3Qrc107by5fdXBkYXRlLmNhbGwodGhpcyxhLDAscixuKTtmb3Iocz0wO3M8dGhpcy5ibG9ja1NpemU7cysrKWFbc109cltuK3NdfWVsc2V7by5fdXBkYXRlLmNhbGwodGhpcyxlLHQscixuKTtmb3Iocz0wO3M8dGhpcy5ibG9ja1NpemU7cysrKXJbbitzXV49YVtzXTtmb3Iocz0wO3M8dGhpcy5ibG9ja1NpemU7cysrKWFbc109ZVt0K3NdfX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7dmFyIG49cig0NyksaT1yKDcpLG89cigyMTIpLGE9by5DaXBoZXIscz1vLkRFUztmdW5jdGlvbiB1KGUsdCl7bi5lcXVhbCh0Lmxlbmd0aCwyNCwiSW52YWxpZCBrZXkgbGVuZ3RoIik7dmFyIHI9dC5zbGljZSgwLDgpLGk9dC5zbGljZSg4LDE2KSxvPXQuc2xpY2UoMTYsMjQpO3RoaXMuY2lwaGVycz0iZW5jcnlwdCI9PT1lP1tzLmNyZWF0ZSh7dHlwZToiZW5jcnlwdCIsa2V5OnJ9KSxzLmNyZWF0ZSh7dHlwZToiZGVjcnlwdCIsa2V5Oml9KSxzLmNyZWF0ZSh7dHlwZToiZW5jcnlwdCIsa2V5Om99KV06W3MuY3JlYXRlKHt0eXBlOiJkZWNyeXB0IixrZXk6b30pLHMuY3JlYXRlKHt0eXBlOiJlbmNyeXB0IixrZXk6aX0pLHMuY3JlYXRlKHt0eXBlOiJkZWNyeXB0IixrZXk6cn0pXX1mdW5jdGlvbiBjKGUpe2EuY2FsbCh0aGlzLGUpO3ZhciB0PW5ldyB1KHRoaXMudHlwZSx0aGlzLm9wdGlvbnMua2V5KTt0aGlzLl9lZGVTdGF0ZT10fWkoYyxhKSxlLmV4cG9ydHM9YyxjLmNyZWF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IGMoZSl9LGMucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oZSx0LHIsbil7dmFyIGk9dGhpcy5fZWRlU3RhdGU7aS5jaXBoZXJzWzBdLl91cGRhdGUoZSx0LHIsbiksaS5jaXBoZXJzWzFdLl91cGRhdGUocixuLHIsbiksaS5jaXBoZXJzWzJdLl91cGRhdGUocixuLHIsbil9LGMucHJvdG90eXBlLl9wYWQ9cy5wcm90b3R5cGUuX3BhZCxjLnByb3RvdHlwZS5fdW5wYWQ9cy5wcm90b3R5cGUuX3VucGFkfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyMTQpLGk9cigzMjYpLG89cig4KS5CdWZmZXIsYT1yKDMyNykscz1yKDc4KSx1PXIoMTU4KSxjPXIoMTU5KTtmdW5jdGlvbiBmKGUsdCxyKXtzLmNhbGwodGhpcyksdGhpcy5fY2FjaGU9bmV3IGgsdGhpcy5fY2lwaGVyPW5ldyB1LkFFUyh0KSx0aGlzLl9wcmV2PW8uZnJvbShyKSx0aGlzLl9tb2RlPWUsdGhpcy5fYXV0b3BhZGRpbmc9ITB9cig3KShmLHMpLGYucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oZSl7dmFyIHQscjt0aGlzLl9jYWNoZS5hZGQoZSk7Zm9yKHZhciBuPVtdO3Q9dGhpcy5fY2FjaGUuZ2V0KCk7KXI9dGhpcy5fbW9kZS5lbmNyeXB0KHRoaXMsdCksbi5wdXNoKHIpO3JldHVybiBvLmNvbmNhdChuKX07dmFyIGw9by5hbGxvYygxNiwxNik7ZnVuY3Rpb24gaCgpe3RoaXMuY2FjaGU9by5hbGxvY1Vuc2FmZSgwKX1mdW5jdGlvbiBwKGUsdCxyKXt2YXIgcz1uW2UudG9Mb3dlckNhc2UoKV07aWYoIXMpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBzdWl0ZSB0eXBlIik7aWYoInN0cmluZyI9PT10eXBlb2YgdCYmKHQ9by5mcm9tKHQpKSx0Lmxlbmd0aCE9PXMua2V5LzgpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBrZXkgbGVuZ3RoICIrdC5sZW5ndGgpO2lmKCJzdHJpbmciPT09dHlwZW9mIHImJihyPW8uZnJvbShyKSksIkdDTSIhPT1zLm1vZGUmJnIubGVuZ3RoIT09cy5pdil0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIGl2IGxlbmd0aCAiK3IubGVuZ3RoKTtyZXR1cm4ic3RyZWFtIj09PXMudHlwZT9uZXcgYShzLm1vZHVsZSx0LHIpOiJhdXRoIj09PXMudHlwZT9uZXcgaShzLm1vZHVsZSx0LHIpOm5ldyBmKHMubW9kdWxlLHQscil9Zi5wcm90b3R5cGUuX2ZpbmFsPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fY2FjaGUuZmx1c2goKTtpZih0aGlzLl9hdXRvcGFkZGluZylyZXR1cm4gZT10aGlzLl9tb2RlLmVuY3J5cHQodGhpcyxlKSx0aGlzLl9jaXBoZXIuc2NydWIoKSxlO2lmKCFlLmVxdWFscyhsKSl0aHJvdyB0aGlzLl9jaXBoZXIuc2NydWIoKSxuZXcgRXJyb3IoImRhdGEgbm90IG11bHRpcGxlIG9mIGJsb2NrIGxlbmd0aCIpfSxmLnByb3RvdHlwZS5zZXRBdXRvUGFkZGluZz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fYXV0b3BhZGRpbmc9ISFlLHRoaXN9LGgucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlKXt0aGlzLmNhY2hlPW8uY29uY2F0KFt0aGlzLmNhY2hlLGVdKX0saC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKCl7aWYodGhpcy5jYWNoZS5sZW5ndGg+MTUpe3ZhciBlPXRoaXMuY2FjaGUuc2xpY2UoMCwxNik7cmV0dXJuIHRoaXMuY2FjaGU9dGhpcy5jYWNoZS5zbGljZSgxNiksZX1yZXR1cm4gbnVsbH0saC5wcm90b3R5cGUuZmx1c2g9ZnVuY3Rpb24oKXtmb3IodmFyIGU9MTYtdGhpcy5jYWNoZS5sZW5ndGgsdD1vLmFsbG9jVW5zYWZlKGUpLHI9LTE7KytyPGU7KXQud3JpdGVVSW50OChlLHIpO3JldHVybiBvLmNvbmNhdChbdGhpcy5jYWNoZSx0XSl9LHQuY3JlYXRlQ2lwaGVyaXY9cCx0LmNyZWF0ZUNpcGhlcj1mdW5jdGlvbihlLHQpe3ZhciByPW5bZS50b0xvd2VyQ2FzZSgpXTtpZighcil0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIHN1aXRlIHR5cGUiKTt2YXIgaT1jKHQsITEsci5rZXksci5pdik7cmV0dXJuIHAoZSxpLmtleSxpLml2KX19LGZ1bmN0aW9uKGUsdCl7dC5lbmNyeXB0PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuX2NpcGhlci5lbmNyeXB0QmxvY2sodCl9LHQuZGVjcnlwdD1mdW5jdGlvbihlLHQpe3JldHVybiBlLl9jaXBoZXIuZGVjcnlwdEJsb2NrKHQpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTI5KTt0LmVuY3J5cHQ9ZnVuY3Rpb24oZSx0KXt2YXIgcj1uKHQsZS5fcHJldik7cmV0dXJuIGUuX3ByZXY9ZS5fY2lwaGVyLmVuY3J5cHRCbG9jayhyKSxlLl9wcmV2fSx0LmRlY3J5cHQ9ZnVuY3Rpb24oZSx0KXt2YXIgcj1lLl9wcmV2O2UuX3ByZXY9dDt2YXIgaT1lLl9jaXBoZXIuZGVjcnlwdEJsb2NrKHQpO3JldHVybiBuKGkscil9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4KS5CdWZmZXIsaT1yKDEyOSk7ZnVuY3Rpb24gbyhlLHQscil7dmFyIG89dC5sZW5ndGgsYT1pKHQsZS5fY2FjaGUpO3JldHVybiBlLl9jYWNoZT1lLl9jYWNoZS5zbGljZShvKSxlLl9wcmV2PW4uY29uY2F0KFtlLl9wcmV2LHI/dDphXSksYX10LmVuY3J5cHQ9ZnVuY3Rpb24oZSx0LHIpe2Zvcih2YXIgaSxhPW4uYWxsb2NVbnNhZmUoMCk7dC5sZW5ndGg7KXtpZigwPT09ZS5fY2FjaGUubGVuZ3RoJiYoZS5fY2FjaGU9ZS5fY2lwaGVyLmVuY3J5cHRCbG9jayhlLl9wcmV2KSxlLl9wcmV2PW4uYWxsb2NVbnNhZmUoMCkpLCEoZS5fY2FjaGUubGVuZ3RoPD10Lmxlbmd0aCkpe2E9bi5jb25jYXQoW2EsbyhlLHQscildKTticmVha31pPWUuX2NhY2hlLmxlbmd0aCxhPW4uY29uY2F0KFthLG8oZSx0LnNsaWNlKDAsaSkscildKSx0PXQuc2xpY2UoaSl9cmV0dXJuIGF9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4KS5CdWZmZXI7ZnVuY3Rpb24gaShlLHQscil7dmFyIGk9ZS5fY2lwaGVyLmVuY3J5cHRCbG9jayhlLl9wcmV2KVswXV50O3JldHVybiBlLl9wcmV2PW4uY29uY2F0KFtlLl9wcmV2LnNsaWNlKDEpLG4uZnJvbShbcj90OmldKV0pLGl9dC5lbmNyeXB0PWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIG89dC5sZW5ndGgsYT1uLmFsbG9jVW5zYWZlKG8pLHM9LTE7KytzPG87KWFbc109aShlLHRbc10scik7cmV0dXJuIGF9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4KS5CdWZmZXI7ZnVuY3Rpb24gaShlLHQscil7Zm9yKHZhciBuLGksYT0tMSxzPTA7KythPDg7KW49dCYxPDw3LWE/MTI4OjAscys9KDEyOCYoaT1lLl9jaXBoZXIuZW5jcnlwdEJsb2NrKGUuX3ByZXYpWzBdXm4pKT4+YSU4LGUuX3ByZXY9byhlLl9wcmV2LHI/bjppKTtyZXR1cm4gc31mdW5jdGlvbiBvKGUsdCl7dmFyIHI9ZS5sZW5ndGgsaT0tMSxvPW4uYWxsb2NVbnNhZmUoZS5sZW5ndGgpO2ZvcihlPW4uY29uY2F0KFtlLG4uZnJvbShbdF0pXSk7KytpPHI7KW9baV09ZVtpXTw8MXxlW2krMV0+Pjc7cmV0dXJuIG99dC5lbmNyeXB0PWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIG89dC5sZW5ndGgsYT1uLmFsbG9jVW5zYWZlKG8pLHM9LTE7KytzPG87KWFbc109aShlLHRbc10scik7cmV0dXJuIGF9fSxmdW5jdGlvbihlLHQscil7KGZ1bmN0aW9uKGUpe3ZhciBuPXIoMTI5KTtmdW5jdGlvbiBpKGUpe3JldHVybiBlLl9wcmV2PWUuX2NpcGhlci5lbmNyeXB0QmxvY2soZS5fcHJldiksZS5fcHJldn10LmVuY3J5cHQ9ZnVuY3Rpb24odCxyKXtmb3IoO3QuX2NhY2hlLmxlbmd0aDxyLmxlbmd0aDspdC5fY2FjaGU9ZS5jb25jYXQoW3QuX2NhY2hlLGkodCldKTt2YXIgbz10Ll9jYWNoZS5zbGljZSgwLHIubGVuZ3RoKTtyZXR1cm4gdC5fY2FjaGU9dC5fY2FjaGUuc2xpY2Uoci5sZW5ndGgpLG4ocixvKX19KS5jYWxsKHRoaXMscigxOCkuQnVmZmVyKX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoOCkuQnVmZmVyLGk9bi5hbGxvYygxNiwwKTtmdW5jdGlvbiBvKGUpe3ZhciB0PW4uYWxsb2NVbnNhZmUoMTYpO3JldHVybiB0LndyaXRlVUludDMyQkUoZVswXT4+PjAsMCksdC53cml0ZVVJbnQzMkJFKGVbMV0+Pj4wLDQpLHQud3JpdGVVSW50MzJCRShlWzJdPj4+MCw4KSx0LndyaXRlVUludDMyQkUoZVszXT4+PjAsMTIpLHR9ZnVuY3Rpb24gYShlKXt0aGlzLmg9ZSx0aGlzLnN0YXRlPW4uYWxsb2MoMTYsMCksdGhpcy5jYWNoZT1uLmFsbG9jVW5zYWZlKDApfWEucHJvdG90eXBlLmdoYXNoPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0tMTsrK3Q8ZS5sZW5ndGg7KXRoaXMuc3RhdGVbdF1ePWVbdF07dGhpcy5fbXVsdGlwbHkoKX0sYS5wcm90b3R5cGUuX211bHRpcGx5PWZ1bmN0aW9uKCl7Zm9yKHZhciBlLHQscixuPVsoZT10aGlzLmgpLnJlYWRVSW50MzJCRSgwKSxlLnJlYWRVSW50MzJCRSg0KSxlLnJlYWRVSW50MzJCRSg4KSxlLnJlYWRVSW50MzJCRSgxMildLGk9WzAsMCwwLDBdLGE9LTE7KythPDEyODspe2ZvcigwIT09KHRoaXMuc3RhdGVbfn4oYS84KV0mMTw8Ny1hJTgpJiYoaVswXV49blswXSxpWzFdXj1uWzFdLGlbMl1ePW5bMl0saVszXV49blszXSkscj0wIT09KDEmblszXSksdD0zO3Q+MDt0LS0pblt0XT1uW3RdPj4+MXwoMSZuW3QtMV0pPDwzMTtuWzBdPW5bMF0+Pj4xLHImJihuWzBdPW5bMF1eMjI1PDwyNCl9dGhpcy5zdGF0ZT1vKGkpfSxhLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHRoaXMuY2FjaGU9bi5jb25jYXQoW3RoaXMuY2FjaGUsZV0pO3RoaXMuY2FjaGUubGVuZ3RoPj0xNjspdD10aGlzLmNhY2hlLnNsaWNlKDAsMTYpLHRoaXMuY2FjaGU9dGhpcy5jYWNoZS5zbGljZSgxNiksdGhpcy5naGFzaCh0KX0sYS5wcm90b3R5cGUuZmluYWw9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdGhpcy5jYWNoZS5sZW5ndGgmJnRoaXMuZ2hhc2gobi5jb25jYXQoW3RoaXMuY2FjaGUsaV0sMTYpKSx0aGlzLmdoYXNoKG8oWzAsZSwwLHRdKSksdGhpcy5zdGF0ZX0sZS5leHBvcnRzPWF9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDMyNiksaT1yKDgpLkJ1ZmZlcixvPXIoMjE0KSxhPXIoMzI3KSxzPXIoNzgpLHU9cigxNTgpLGM9cigxNTkpO2Z1bmN0aW9uIGYoZSx0LHIpe3MuY2FsbCh0aGlzKSx0aGlzLl9jYWNoZT1uZXcgbCx0aGlzLl9sYXN0PXZvaWQgMCx0aGlzLl9jaXBoZXI9bmV3IHUuQUVTKHQpLHRoaXMuX3ByZXY9aS5mcm9tKHIpLHRoaXMuX21vZGU9ZSx0aGlzLl9hdXRvcGFkZGluZz0hMH1mdW5jdGlvbiBsKCl7dGhpcy5jYWNoZT1pLmFsbG9jVW5zYWZlKDApfWZ1bmN0aW9uIGgoZSx0LHIpe3ZhciBzPW9bZS50b0xvd2VyQ2FzZSgpXTtpZighcyl0aHJvdyBuZXcgVHlwZUVycm9yKCJpbnZhbGlkIHN1aXRlIHR5cGUiKTtpZigic3RyaW5nIj09PXR5cGVvZiByJiYocj1pLmZyb20ocikpLCJHQ00iIT09cy5tb2RlJiZyLmxlbmd0aCE9PXMuaXYpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBpdiBsZW5ndGggIityLmxlbmd0aCk7aWYoInN0cmluZyI9PT10eXBlb2YgdCYmKHQ9aS5mcm9tKHQpKSx0Lmxlbmd0aCE9PXMua2V5LzgpdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBrZXkgbGVuZ3RoICIrdC5sZW5ndGgpO3JldHVybiJzdHJlYW0iPT09cy50eXBlP25ldyBhKHMubW9kdWxlLHQsciwhMCk6ImF1dGgiPT09cy50eXBlP25ldyBuKHMubW9kdWxlLHQsciwhMCk6bmV3IGYocy5tb2R1bGUsdCxyKX1yKDcpKGYscyksZi5wcm90b3R5cGUuX3VwZGF0ZT1mdW5jdGlvbihlKXt2YXIgdCxyO3RoaXMuX2NhY2hlLmFkZChlKTtmb3IodmFyIG49W107dD10aGlzLl9jYWNoZS5nZXQodGhpcy5fYXV0b3BhZGRpbmcpOylyPXRoaXMuX21vZGUuZGVjcnlwdCh0aGlzLHQpLG4ucHVzaChyKTtyZXR1cm4gaS5jb25jYXQobil9LGYucHJvdG90eXBlLl9maW5hbD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2NhY2hlLmZsdXNoKCk7aWYodGhpcy5fYXV0b3BhZGRpbmcpcmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciB0PWVbMTVdO2lmKHQ8MXx8dD4xNil0aHJvdyBuZXcgRXJyb3IoInVuYWJsZSB0byBkZWNyeXB0IGRhdGEiKTt2YXIgcj0tMTtmb3IoOysrcjx0OylpZihlW3IrKDE2LXQpXSE9PXQpdGhyb3cgbmV3IEVycm9yKCJ1bmFibGUgdG8gZGVjcnlwdCBkYXRhIik7aWYoMTY9PT10KXJldHVybjtyZXR1cm4gZS5zbGljZSgwLDE2LXQpfSh0aGlzLl9tb2RlLmRlY3J5cHQodGhpcyxlKSk7aWYoZSl0aHJvdyBuZXcgRXJyb3IoImRhdGEgbm90IG11bHRpcGxlIG9mIGJsb2NrIGxlbmd0aCIpfSxmLnByb3RvdHlwZS5zZXRBdXRvUGFkZGluZz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5fYXV0b3BhZGRpbmc9ISFlLHRoaXN9LGwucHJvdG90eXBlLmFkZD1mdW5jdGlvbihlKXt0aGlzLmNhY2hlPWkuY29uY2F0KFt0aGlzLmNhY2hlLGVdKX0sbC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3ZhciB0O2lmKGUpe2lmKHRoaXMuY2FjaGUubGVuZ3RoPjE2KXJldHVybiB0PXRoaXMuY2FjaGUuc2xpY2UoMCwxNiksdGhpcy5jYWNoZT10aGlzLmNhY2hlLnNsaWNlKDE2KSx0fWVsc2UgaWYodGhpcy5jYWNoZS5sZW5ndGg+PTE2KXJldHVybiB0PXRoaXMuY2FjaGUuc2xpY2UoMCwxNiksdGhpcy5jYWNoZT10aGlzLmNhY2hlLnNsaWNlKDE2KSx0O3JldHVybiBudWxsfSxsLnByb3RvdHlwZS5mbHVzaD1mdW5jdGlvbigpe2lmKHRoaXMuY2FjaGUubGVuZ3RoKXJldHVybiB0aGlzLmNhY2hlfSx0LmNyZWF0ZURlY2lwaGVyPWZ1bmN0aW9uKGUsdCl7dmFyIHI9b1tlLnRvTG93ZXJDYXNlKCldO2lmKCFyKXRocm93IG5ldyBUeXBlRXJyb3IoImludmFsaWQgc3VpdGUgdHlwZSIpO3ZhciBuPWModCwhMSxyLmtleSxyLml2KTtyZXR1cm4gaChlLG4ua2V5LG4uaXYpfSx0LmNyZWF0ZURlY2lwaGVyaXY9aH0sZnVuY3Rpb24oZSx0KXt0WyJkZXMtZWNiIl09e2tleTo4LGl2OjB9LHRbImRlcy1jYmMiXT10LmRlcz17a2V5OjgsaXY6OH0sdFsiZGVzLWVkZTMtY2JjIl09dC5kZXMzPXtrZXk6MjQsaXY6OH0sdFsiZGVzLWVkZTMiXT17a2V5OjI0LGl2OjB9LHRbImRlcy1lZGUtY2JjIl09e2tleToxNixpdjo4fSx0WyJkZXMtZWRlIl09e2tleToxNixpdjowfX0sZnVuY3Rpb24oZSx0LHIpeyhmdW5jdGlvbihlKXt2YXIgbj1yKDMyOCksaT1yKDU4Nyksbz1yKDU4OCk7dmFyIGE9e2JpbmFyeTohMCxoZXg6ITAsYmFzZTY0OiEwfTt0LkRpZmZpZUhlbGxtYW5Hcm91cD10LmNyZWF0ZURpZmZpZUhlbGxtYW5Hcm91cD10LmdldERpZmZpZUhlbGxtYW49ZnVuY3Rpb24odCl7dmFyIHI9bmV3IGUoaVt0XS5wcmltZSwiaGV4Iiksbj1uZXcgZShpW3RdLmdlbiwiaGV4Iik7cmV0dXJuIG5ldyBvKHIsbil9LHQuY3JlYXRlRGlmZmllSGVsbG1hbj10LkRpZmZpZUhlbGxtYW49ZnVuY3Rpb24gdChyLGkscyx1KXtyZXR1cm4gZS5pc0J1ZmZlcihpKXx8dm9pZCAwPT09YVtpXT90KHIsImJpbmFyeSIsaSxzKTooaT1pfHwiYmluYXJ5Iix1PXV8fCJiaW5hcnkiLHM9c3x8bmV3IGUoWzJdKSxlLmlzQnVmZmVyKHMpfHwocz1uZXcgZShzLHUpKSwibnVtYmVyIj09PXR5cGVvZiByP25ldyBvKG4ocixzKSxzLCEwKTooZS5pc0J1ZmZlcihyKXx8KHI9bmV3IGUocixpKSksbmV3IG8ocixzLCEwKSkpfX0pLmNhbGwodGhpcyxyKDE4KS5CdWZmZXIpfSwsLGZ1bmN0aW9uKGUpe2UuZXhwb3J0cz17bW9kcDE6e2dlbjoiMDIiLHByaW1lOiJmZmZmZmZmZmZmZmZmZmZmYzkwZmRhYTIyMTY4YzIzNGM0YzY2MjhiODBkYzFjZDEyOTAyNGUwODhhNjdjYzc0MDIwYmJlYTYzYjEzOWIyMjUxNGEwODc5OGUzNDA0ZGRlZjk1MTliM2NkM2E0MzFiMzAyYjBhNmRmMjVmMTQzNzRmZTEzNTZkNmQ1MWMyNDVlNDg1YjU3NjYyNWU3ZWM2ZjQ0YzQyZTlhNjNhMzYyMGZmZmZmZmZmZmZmZmZmZmYifSxtb2RwMjp7Z2VuOiIwMiIscHJpbWU6ImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U2NTM4MWZmZmZmZmZmZmZmZmZmZmYifSxtb2RwNTp7Z2VuOiIwMiIscHJpbWU6ImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMjM3MzI3ZmZmZmZmZmZmZmZmZmZmZiJ9LG1vZHAxNDp7Z2VuOiIwMiIscHJpbWU6ImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3ODNhMmVjMDdhMjhmYjVjNTVkZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVhOGFhY2FhNjhmZmZmZmZmZmZmZmZmZmZmIn0sbW9kcDE1OntnZW46IjAyIixwcmltZToiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFhYzQyZGFkMzMxNzBkMDQ1MDdhMzNhODU1MjFhYmRmMWNiYTY0ZWNmYjg1MDQ1OGRiZWYwYThhZWE3MTU3NWQwNjBjN2RiMzk3MGY4NWE2ZTFlNGM3YWJmNWFlOGNkYjA5MzNkNzFlOGM5NGUwNGEyNTYxOWRjZWUzZDIyNjFhZDJlZTZiZjEyZmZhMDZkOThhMDg2NGQ4NzYwMjczM2VjODZhNjQ1MjFmMmIxODE3N2IyMDBjYmJlMTE3NTc3YTYxNWQ2Yzc3MDk4OGMwYmFkOTQ2ZTIwOGUyNGZhMDc0ZTVhYjMxNDNkYjViZmNlMGZkMTA4ZTRiODJkMTIwYTkzYWQyY2FmZmZmZmZmZmZmZmZmZmZmIn0sbW9kcDE2OntnZW46IjAyIixwcmltZToiZmZmZmZmZmZmZmZmZmZmZmM5MGZkYWEyMjE2OGMyMzRjNGM2NjI4YjgwZGMxY2QxMjkwMjRlMDg4YTY3Y2M3NDAyMGJiZWE2M2IxMzliMjI1MTRhMDg3OThlMzQwNGRkZWY5NTE5YjNjZDNhNDMxYjMwMmIwYTZkZjI1ZjE0Mzc0ZmUxMzU2ZDZkNTFjMjQ1ZTQ4NWI1NzY2MjVlN2VjNmY0NGM0MmU5YTYzN2VkNmIwYmZmNWNiNmY0MDZiN2VkZWUzODZiZmI1YTg5OWZhNWFlOWYyNDExN2M0YjFmZTY0OTI4NjY1MWVjZTQ1YjNkYzIwMDdjYjhhMTYzYmYwNTk4ZGE0ODM2MWM1NWQzOWE2OTE2M2ZhOGZkMjRjZjVmODM2NTVkMjNkY2EzYWQ5NjFjNjJmMzU2MjA4NTUyYmI5ZWQ1MjkwNzcwOTY5NjZkNjcwYzM1NGU0YWJjOTgwNGYxNzQ2YzA4Y2ExODIxN2MzMjkwNWU0NjJlMzZjZTNiZTM5ZTc3MmMxODBlODYwMzliMjc4M2EyZWMwN2EyOGZiNWM1NWRmMDZmNGM1MmM5ZGUyYmNiZjY5NTU4MTcxODM5OTU0OTdjZWE5NTZhZTUxNWQyMjYxODk4ZmEwNTEwMTU3MjhlNWE4YWFhYzQyZGFkMzMxNzBkMDQ1MDdhMzNhODU1MjFhYmRmMWNiYTY0ZWNmYjg1MDQ1OGRiZWYwYThhZWE3MTU3NWQwNjBjN2RiMzk3MGY4NWE2ZTFlNGM3YWJmNWFlOGNkYjA5MzNkNzFlOGM5NGUwNGEyNTYxOWRjZWUzZDIyNjFhZDJlZTZiZjEyZmZhMDZkOThhMDg2NGQ4NzYwMjczM2VjODZhNjQ1MjFmMmIxODE3N2IyMDBjYmJlMTE3NTc3YTYxNWQ2Yzc3MDk4OGMwYmFkOTQ2ZTIwOGUyNGZhMDc0ZTVhYjMxNDNkYjViZmNlMGZkMTA4ZTRiODJkMTIwYTkyMTA4MDExYTcyM2MxMmE3ODdlNmQ3ODg3MTlhMTBiZGJhNWIyNjk5YzMyNzE4NmFmNGUyM2MxYTk0NjgzNGI2MTUwYmRhMjU4M2U5Y2EyYWQ0NGNlOGRiYmJjMmRiMDRkZThlZjkyZThlZmMxNDFmYmVjYWE2Mjg3YzU5NDc0ZTZiYzA1ZDk5YjI5NjRmYTA5MGMzYTIyMzNiYTE4NjUxNWJlN2VkMWY2MTI5NzBjZWUyZDdhZmI4MWJkZDc2MjE3MDQ4MWNkMDA2OTEyN2Q1YjA1YWE5OTNiNGVhOTg4ZDhmZGRjMTg2ZmZiN2RjOTBhNmMwOGY0ZGY0MzVjOTM0MDYzMTk5ZmZmZmZmZmZmZmZmZmZmZiJ9LG1vZHAxNzp7Z2VuOiIwMiIscHJpbWU6ImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3ODNhMmVjMDdhMjhmYjVjNTVkZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVhOGFhYWM0MmRhZDMzMTcwZDA0NTA3YTMzYTg1NTIxYWJkZjFjYmE2NGVjZmI4NTA0NThkYmVmMGE4YWVhNzE1NzVkMDYwYzdkYjM5NzBmODVhNmUxZTRjN2FiZjVhZThjZGIwOTMzZDcxZThjOTRlMDRhMjU2MTlkY2VlM2QyMjYxYWQyZWU2YmYxMmZmYTA2ZDk4YTA4NjRkODc2MDI3MzNlYzg2YTY0NTIxZjJiMTgxNzdiMjAwY2JiZTExNzU3N2E2MTVkNmM3NzA5ODhjMGJhZDk0NmUyMDhlMjRmYTA3NGU1YWIzMTQzZGI1YmZjZTBmZDEwOGU0YjgyZDEyMGE5MjEwODAxMWE3MjNjMTJhNzg3ZTZkNzg4NzE5YTEwYmRiYTViMjY5OWMzMjcxODZhZjRlMjNjMWE5NDY4MzRiNjE1MGJkYTI1ODNlOWNhMmFkNDRjZThkYmJiYzJkYjA0ZGU4ZWY5MmU4ZWZjMTQxZmJlY2FhNjI4N2M1OTQ3NGU2YmMwNWQ5OWIyOTY0ZmEwOTBjM2EyMjMzYmExODY1MTViZTdlZDFmNjEyOTcwY2VlMmQ3YWZiODFiZGQ3NjIxNzA0ODFjZDAwNjkxMjdkNWIwNWFhOTkzYjRlYTk4OGQ4ZmRkYzE4NmZmYjdkYzkwYTZjMDhmNGRmNDM1YzkzNDAyODQ5MjM2YzNmYWI0ZDI3YzcwMjZjMWQ0ZGNiMjYwMjY0NmRlYzk3NTFlNzYzZGJhMzdiZGY4ZmY5NDA2YWQ5ZTUzMGVlNWRiMzgyZjQxMzAwMWFlYjA2YTUzZWQ5MDI3ZDgzMTE3OTcyN2IwODY1YTg5MThkYTNlZGJlYmNmOWIxNGVkNDRjZTZjYmFjZWQ0YmIxYmRiN2YxNDQ3ZTZjYzI1NGIzMzIwNTE1MTJiZDdhZjQyNmZiOGY0MDEzNzhjZDJiZjU5ODNjYTAxYzY0YjkyZWNmMDMyZWExNWQxNzIxZDAzZjQ4MmQ3Y2U2ZTc0ZmVmNmQ1NWU3MDJmNDY5ODBjODJiNWE4NDAzMTkwMGIxYzllNTllN2M5N2ZiZWM3ZThmMzIzYTk3YTdlMzZjYzg4YmUwZjFkNDViN2ZmNTg1YWM1NGJkNDA3YjIyYjQxNTRhYWNjOGY2ZDdlYmY0OGUxZDgxNGNjNWVkMjBmODAzN2UwYTc5NzE1ZWVmMjliZTMyODA2YTFkNThiYjdjNWRhNzZmNTUwYWEzZDhhMWZiZmYwZWIxOWNjYjFhMzEzZDU1Y2RhNTZjOWVjMmVmMjk2MzIzODdmZThkNzZlM2MwNDY4MDQzZThmNjYzZjQ4NjBlZTEyYmYyZDViMGI3NDc0ZDZlNjk0ZjkxZTZkY2M0MDI0ZmZmZmZmZmZmZmZmZmZmZiJ9LG1vZHAxODp7Z2VuOiIwMiIscHJpbWU6ImZmZmZmZmZmZmZmZmZmZmZjOTBmZGFhMjIxNjhjMjM0YzRjNjYyOGI4MGRjMWNkMTI5MDI0ZTA4OGE2N2NjNzQwMjBiYmVhNjNiMTM5YjIyNTE0YTA4Nzk4ZTM0MDRkZGVmOTUxOWIzY2QzYTQzMWIzMDJiMGE2ZGYyNWYxNDM3NGZlMTM1NmQ2ZDUxYzI0NWU0ODViNTc2NjI1ZTdlYzZmNDRjNDJlOWE2MzdlZDZiMGJmZjVjYjZmNDA2YjdlZGVlMzg2YmZiNWE4OTlmYTVhZTlmMjQxMTdjNGIxZmU2NDkyODY2NTFlY2U0NWIzZGMyMDA3Y2I4YTE2M2JmMDU5OGRhNDgzNjFjNTVkMzlhNjkxNjNmYThmZDI0Y2Y1ZjgzNjU1ZDIzZGNhM2FkOTYxYzYyZjM1NjIwODU1MmJiOWVkNTI5MDc3MDk2OTY2ZDY3MGMzNTRlNGFiYzk4MDRmMTc0NmMwOGNhMTgyMTdjMzI5MDVlNDYyZTM2Y2UzYmUzOWU3NzJjMTgwZTg2MDM5YjI3ODNhMmVjMDdhMjhmYjVjNTVkZjA2ZjRjNTJjOWRlMmJjYmY2OTU1ODE3MTgzOTk1NDk3Y2VhOTU2YWU1MTVkMjI2MTg5OGZhMDUxMDE1NzI4ZTVhOGFhYWM0MmRhZDMzMTcwZDA0NTA3YTMzYTg1NTIxYWJkZjFjYmE2NGVjZmI4NTA0NThkYmVmMGE4YWVhNzE1NzVkMDYwYzdkYjM5NzBmODVhNmUxZTRjN2FiZjVhZThjZGIwOTMzZDcxZThjOTRlMDRhMjU2MTlkY2VlM2QyMjYxYWQyZWU2YmYxMmZmYTA2ZDk4YTA4NjRkODc2MDI3MzNlYzg2YTY0NTIxZjJiMTgxNzdiMjAwY2JiZTExNzU3N2E2MTVkNmM3NzA5ODhjMGJhZDk0NmUyMDhlMjRmYTA3NGU1YWIzMTQzZGI1YmZjZTBmZDEwOGU0YjgyZDEyMGE5MjEwODAxMWE3MjNjMTJhNzg3ZTZkNzg4NzE5YTEwYmRiYTViMjY5OWMzMjcxODZhZjRlMjNjMWE5NDY4MzRiNjE1MGJkYTI1ODNlOWNhMmFkNDRjZThkYmJiYzJkYjA0ZGU4ZWY5MmU4ZWZjMTQxZmJlY2FhNjI4N2M1OTQ3NGU2YmMwNWQ5OWIyOTY0ZmEwOTBjM2EyMjMzYmExODY1MTViZTdlZDFmNjEyOTcwY2VlMmQ3YWZiODFiZGQ3NjIxNzA0ODFjZDAwNjkxMjdkNWIwNWFhOTkzYjRlYTk4OGQ4ZmRkYzE4NmZmYjdkYzkwYTZjMDhmNGRmNDM1YzkzNDAyODQ5MjM2YzNmYWI0ZDI3YzcwMjZjMWQ0ZGNiMjYwMjY0NmRlYzk3NTFlNzYzZGJhMzdiZGY4ZmY5NDA2YWQ5ZTUzMGVlNWRiMzgyZjQxMzAwMWFlYjA2YTUzZWQ5MDI3ZDgzMTE3OTcyN2IwODY1YTg5MThkYTNlZGJlYmNmOWIxNGVkNDRjZTZjYmFjZWQ0YmIxYmRiN2YxNDQ3ZTZjYzI1NGIzMzIwNTE1MTJiZDdhZjQyNmZiOGY0MDEzNzhjZDJiZjU5ODNjYTAxYzY0YjkyZWNmMDMyZWExNWQxNzIxZDAzZjQ4MmQ3Y2U2ZTc0ZmVmNmQ1NWU3MDJmNDY5ODBjODJiNWE4NDAzMTkwMGIxYzllNTllN2M5N2ZiZWM3ZThmMzIzYTk3YTdlMzZjYzg4YmUwZjFkNDViN2ZmNTg1YWM1NGJkNDA3YjIyYjQxNTRhYWNjOGY2ZDdlYmY0OGUxZDgxNGNjNWVkMjBmODAzN2UwYTc5NzE1ZWVmMjliZTMyODA2YTFkNThiYjdjNWRhNzZmNTUwYWEzZDhhMWZiZmYwZWIxOWNjYjFhMzEzZDU1Y2RhNTZjOWVjMmVmMjk2MzIzODdmZThkNzZlM2MwNDY4MDQzZThmNjYzZjQ4NjBlZTEyYmYyZDViMGI3NDc0ZDZlNjk0ZjkxZTZkYmUxMTU5NzRhMzkyNmYxMmZlZTVlNDM4Nzc3Y2I2YTkzMmRmOGNkOGJlYzRkMDczYjkzMWJhM2JjODMyYjY4ZDlkZDMwMDc0MWZhN2JmOGFmYzQ3ZWQyNTc2ZjY5MzZiYTQyNDY2M2FhYjYzOWM1YWU0ZjU2ODM0MjNiNDc0MmJmMWM5NzgyMzhmMTZjYmUzOWQ2NTJkZTNmZGI4YmVmYzg0OGFkOTIyMjIyZTA0YTQwMzdjMDcxM2ViNTdhODFhMjNmMGM3MzQ3M2ZjNjQ2Y2VhMzA2YjRiY2JjODg2MmY4Mzg1ZGRmYTlkNGI3ZmEyYzA4N2U4Nzk2ODMzMDNlZDViZGQzYTA2MmIzY2Y1YjNhMjc4YTY2ZDJhMTNmODNmNDRmODJkZGYzMTBlZTA3NGFiNmEzNjQ1OTdlODk5YTAyNTVkYzE2NGYzMWNjNTA4NDY4NTFkZjlhYjQ4MTk1ZGVkN2VhMWIxZDUxMGJkN2VlNzRkNzNmYWYzNmJjMzFlY2ZhMjY4MzU5MDQ2ZjRlYjg3OWY5MjQwMDk0MzhiNDgxYzZjZDc4ODlhMDAyZWQ1ZWUzODJiYzkxOTBkYTZmYzAyNmU0Nzk1NThlNDQ3NTY3N2U5YWE5ZTMwNTBlMjc2NTY5NGRmYzgxZjU2ZTg4MGI5NmU3MTYwYzk4MGRkOThlZGQzZGZmZmZmZmZmZmZmZmZmZmZmIn19fSxmdW5jdGlvbihlLHQscil7KGZ1bmN0aW9uKHQpe3ZhciBuPXIoMjQpLGk9bmV3KHIoMzI5KSksbz1uZXcgbigyNCksYT1uZXcgbigxMSkscz1uZXcgbigxMCksdT1uZXcgbigzKSxjPW5ldyBuKDcpLGY9cigzMjgpLGw9cigxMDQpO2Z1bmN0aW9uIGgoZSxyKXtyZXR1cm4gcj1yfHwidXRmOCIsdC5pc0J1ZmZlcihlKXx8KGU9bmV3IHQoZSxyKSksdGhpcy5fcHViPW5ldyBuKGUpLHRoaXN9ZnVuY3Rpb24gcChlLHIpe3JldHVybiByPXJ8fCJ1dGY4Iix0LmlzQnVmZmVyKGUpfHwoZT1uZXcgdChlLHIpKSx0aGlzLl9wcml2PW5ldyBuKGUpLHRoaXN9ZS5leHBvcnRzPXk7dmFyIGQ9e307ZnVuY3Rpb24geShlLHQscil7dGhpcy5zZXRHZW5lcmF0b3IodCksdGhpcy5fX3ByaW1lPW5ldyBuKGUpLHRoaXMuX3ByaW1lPW4ubW9udCh0aGlzLl9fcHJpbWUpLHRoaXMuX3ByaW1lTGVuPWUubGVuZ3RoLHRoaXMuX3B1Yj12b2lkIDAsdGhpcy5fcHJpdj12b2lkIDAsdGhpcy5fcHJpbWVDb2RlPXZvaWQgMCxyPyh0aGlzLnNldFB1YmxpY0tleT1oLHRoaXMuc2V0UHJpdmF0ZUtleT1wKTp0aGlzLl9wcmltZUNvZGU9OH1mdW5jdGlvbiBnKGUscil7dmFyIG49bmV3IHQoZS50b0FycmF5KCkpO3JldHVybiByP24udG9TdHJpbmcocik6bn1PYmplY3QuZGVmaW5lUHJvcGVydHkoeS5wcm90b3R5cGUsInZlcmlmeUVycm9yIix7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4ibnVtYmVyIiE9PXR5cGVvZiB0aGlzLl9wcmltZUNvZGUmJih0aGlzLl9wcmltZUNvZGU9ZnVuY3Rpb24oZSx0KXt2YXIgcj10LnRvU3RyaW5nKCJoZXgiKSxuPVtyLGUudG9TdHJpbmcoMTYpXS5qb2luKCJfIik7aWYobiBpbiBkKXJldHVybiBkW25dO3ZhciBsLGg9MDtpZihlLmlzRXZlbigpfHwhZi5zaW1wbGVTaWV2ZXx8IWYuZmVybWF0VGVzdChlKXx8IWkudGVzdChlKSlyZXR1cm4gaCs9MSxoKz0iMDIiPT09cnx8IjA1Ij09PXI/ODo0LGRbbl09aCxoO3N3aXRjaChpLnRlc3QoZS5zaHJuKDEpKXx8KGgrPTIpLHIpe2Nhc2UiMDIiOmUubW9kKG8pLmNtcChhKSYmKGgrPTgpO2JyZWFrO2Nhc2UiMDUiOihsPWUubW9kKHMpKS5jbXAodSkmJmwuY21wKGMpJiYoaCs9OCk7YnJlYWs7ZGVmYXVsdDpoKz00fXJldHVybiBkW25dPWgsaH0odGhpcy5fX3ByaW1lLHRoaXMuX19nZW4pKSx0aGlzLl9wcmltZUNvZGV9fSkseS5wcm90b3R5cGUuZ2VuZXJhdGVLZXlzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3ByaXZ8fCh0aGlzLl9wcml2PW5ldyBuKGwodGhpcy5fcHJpbWVMZW4pKSksdGhpcy5fcHViPXRoaXMuX2dlbi50b1JlZCh0aGlzLl9wcmltZSkucmVkUG93KHRoaXMuX3ByaXYpLmZyb21SZWQoKSx0aGlzLmdldFB1YmxpY0tleSgpfSx5LnByb3RvdHlwZS5jb21wdXRlU2VjcmV0PWZ1bmN0aW9uKGUpe3ZhciByPShlPShlPW5ldyBuKGUpKS50b1JlZCh0aGlzLl9wcmltZSkpLnJlZFBvdyh0aGlzLl9wcml2KS5mcm9tUmVkKCksaT1uZXcgdChyLnRvQXJyYXkoKSksbz10aGlzLmdldFByaW1lKCk7aWYoaS5sZW5ndGg8by5sZW5ndGgpe3ZhciBhPW5ldyB0KG8ubGVuZ3RoLWkubGVuZ3RoKTthLmZpbGwoMCksaT10LmNvbmNhdChbYSxpXSl9cmV0dXJuIGl9LHkucHJvdG90eXBlLmdldFB1YmxpY0tleT1mdW5jdGlvbihlKXtyZXR1cm4gZyh0aGlzLl9wdWIsZSl9LHkucHJvdG90eXBlLmdldFByaXZhdGVLZXk9ZnVuY3Rpb24oZSl7cmV0dXJuIGcodGhpcy5fcHJpdixlKX0seS5wcm90b3R5cGUuZ2V0UHJpbWU9ZnVuY3Rpb24oZSl7cmV0dXJuIGcodGhpcy5fX3ByaW1lLGUpfSx5LnByb3RvdHlwZS5nZXRHZW5lcmF0b3I9ZnVuY3Rpb24oZSl7cmV0dXJuIGcodGhpcy5fZ2VuLGUpfSx5LnByb3RvdHlwZS5zZXRHZW5lcmF0b3I9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gcj1yfHwidXRmOCIsdC5pc0J1ZmZlcihlKXx8KGU9bmV3IHQoZSxyKSksdGhpcy5fX2dlbj1lLHRoaXMuX2dlbj1uZXcgbihlKSx0aGlzfX0pLmNhbGwodGhpcyxyKDE4KS5CdWZmZXIpfSxmdW5jdGlvbihlLHQscil7KGZ1bmN0aW9uKHQpe3ZhciBuPXIoMTI3KSxpPXIoMjA2KSxvPXIoNyksYT1yKDU5MCkscz1yKDYyMiksdT1yKDMxOCk7ZnVuY3Rpb24gYyhlKXtpLldyaXRhYmxlLmNhbGwodGhpcyk7dmFyIHQ9dVtlXTtpZighdCl0aHJvdyBuZXcgRXJyb3IoIlVua25vd24gbWVzc2FnZSBkaWdlc3QiKTt0aGlzLl9oYXNoVHlwZT10Lmhhc2gsdGhpcy5faGFzaD1uKHQuaGFzaCksdGhpcy5fdGFnPXQuaWQsdGhpcy5fc2lnblR5cGU9dC5zaWdufWZ1bmN0aW9uIGYoZSl7aS5Xcml0YWJsZS5jYWxsKHRoaXMpO3ZhciB0PXVbZV07aWYoIXQpdGhyb3cgbmV3IEVycm9yKCJVbmtub3duIG1lc3NhZ2UgZGlnZXN0Iik7dGhpcy5faGFzaD1uKHQuaGFzaCksdGhpcy5fdGFnPXQuaWQsdGhpcy5fc2lnblR5cGU9dC5zaWdufWZ1bmN0aW9uIGwoZSl7cmV0dXJuIG5ldyBjKGUpfWZ1bmN0aW9uIGgoZSl7cmV0dXJuIG5ldyBmKGUpfU9iamVjdC5rZXlzKHUpLmZvckVhY2goZnVuY3Rpb24oZSl7dVtlXS5pZD1uZXcgdCh1W2VdLmlkLCJoZXgiKSx1W2UudG9Mb3dlckNhc2UoKV09dVtlXX0pLG8oYyxpLldyaXRhYmxlKSxjLnByb3RvdHlwZS5fd3JpdGU9ZnVuY3Rpb24oZSx0LHIpe3RoaXMuX2hhc2gudXBkYXRlKGUpLHIoKX0sYy5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKGUscil7cmV0dXJuInN0cmluZyI9PT10eXBlb2YgZSYmKGU9bmV3IHQoZSxyKSksdGhpcy5faGFzaC51cGRhdGUoZSksdGhpc30sYy5wcm90b3R5cGUuc2lnbj1mdW5jdGlvbihlLHQpe3RoaXMuZW5kKCk7dmFyIHI9dGhpcy5faGFzaC5kaWdlc3QoKSxuPWEocixlLHRoaXMuX2hhc2hUeXBlLHRoaXMuX3NpZ25UeXBlLHRoaXMuX3RhZyk7cmV0dXJuIHQ/bi50b1N0cmluZyh0KTpufSxvKGYsaS5Xcml0YWJsZSksZi5wcm90b3R5cGUuX3dyaXRlPWZ1bmN0aW9uKGUsdCxyKXt0aGlzLl9oYXNoLnVwZGF0ZShlKSxyKCl9LGYucHJvdG90eQ=="
}

github/deemru/w8io/169f3d6 
2.06 ms