返回列表 上一筆 下一筆

目前格式:HTML/XML

🧾 資料內容 (HTML/XML)

<!doctype html>
<html xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
	layout:decorate="~{layout/layout}">

<head>
	<meta http-equiv="REFRESH" content="600">
	<style type="text/css" th:nonce="${nonce}">
		.overlay {
			position: fixed;
			width: 100%;
			height: 100%;
			left: 0;
			top: 0;
			background: rgba(51, 51, 51, 0.7);
			z-index: 10;
		}

		.stealthy {
			left: 0;
			margin: 0;
			max-height: 1px;
			max-width: 1px;
			opacity: 0;
			outline: none;
			overflow: hidden;
			pointer-events: none;
			position: absolute;
			top: 0;
			z-index: -1;
		}

		.loginFixInline1 {
			background-color: #FFF;
		}

		.loginFixInline10 {
			border-bottom: 1px #45a19a solid !important;
			border-top: 0px !important;
			border-left: 0px !important;
			border-right: 0px !important;
			font-size: 15px !important;
			width: 220px !important;
		}

		.loginFixInline11 {
			float: right;
			padding-right: 40px;
		}

		.loginFixInline12 {
			float: left;
			padding-right: 10px;
			padding-top: 5px;
		}

		.loginFixInline13 {
			float: left;
			padding-top: -5px;
		}

		.loginFixInline14 {
			float: left;
			font-size: 18px;
			color: #333333;
			font-weight: bold;
			line-height: 60px;
			padding-top: 30px;
		}

		#loginFixInline15 {
			border-bottom: 1px #45a19a solid;
			border-top: 0px;
			border-left: 0px;
			border-right: 0px;
			font-size: 15px;
			width: 218px;
		}

		.loginFixInline16 {
			width: 100%;
			padding-top: 180px;
			font-size: 15px;
			color: #FF0000;
			padding-left: 0px;
		}

		.loginFixInline17 {
			color: red
		}

		.loginFixInline18 {
			width: 50%;
			padding-top: 20px;
		}

		.loginFixInline19 {
			float: left;
			padding-top: 10px;
			width: 150px;
		}

		.loginFixInline2 {
			background-image: url('/images/AgentPorta_indexb00.jpg');
			margin-bottom: -16px;
		}

		.loginFixInline20 {
			line-height: 40px;
		}

		.loginFixInline21 {
			width: 40%;
			padding-top: 10px;
			float: left;
		}

		.loginFixInline22 {
			text-align: left;
			line-height: 24px;
			font-size: 14px;
			color: #666666;
			font-weight: bold;
		}

		.loginFixInline23 {
			text-align: left;
			line-height: 26px;
			font-size: 14px;
			color: #666666;
			font-weight: bold;
			list-style-type: decimal;
			padding-left: 18px;
		}

		.loginFixInline24 {
			padding-right: 10px;
			padding-left: 0px
		}

		.loginFixInline3 {
			background-color: #ececec;
		}

		.loginFixInline4 {
			height: auto;
			max-width: 100%;
			max-height: 100%;
		}

		.loginFixInline5 {
			width: 93%;
			padding-top: 35px;
		}

		.loginFixInline6 {
			float: left;
			width: 450px;
			padding-bottom: 0px;
			background-color: #ececec;
			height: 300px;
		}

		.loginFixInline7 {
			float: left;
			font-size: 18px;
			color: #333333;
			font-weight: bold;
			line-height: 60px;
		}

		.loginFixInline8 {
			float: right;
			border: 0px #007d7d solid;
			width: 380px;
			height: 65px;
			border-radius: 50px;
			padding-left: 35px;
			background-color: #FFFFFF;
		}

		.loginFixInline9 {
			float: left;
		}

		.toggle-visibility {
			position: absolute;
			right: 10px;
			top: 50%;
			transform: translateY(-50%);
			cursor: pointer;
			user-select: none;
		}

		/* 1140301608-00 業務e平台登入頁新增密碼顯示&隱藏功能與各系統timeout時間長度調整。 */
		/* 讓按鈕能絕對定位在容器內 */
		.pw-wrap { position: relative; }

		/* 給真正的密碼框右側留空,避免文字蓋到眼睛 */
		#loginFixInline15 { padding-right: 3rem; } /* 視你的按鈕寬度可調 2.4~3.2rem */

		/* 眼睛按鈕:覆蓋在輸入框裡面右側、垂直置中 */
		.pw-toggle{
		  position:absolute;
		  right: .8rem;                 /* 調這裡可微調與右邊距離 */
		  top: 50%;
		  transform: translateY(-50%);  /* 垂直置中 */
		  width: 28px;                  /* 按鈕寬高可依你輸入框高度調 */
		  height: 28px;
		  border: none;
		  background: transparent;
		  cursor: pointer;
		  padding: 0;
		  line-height: 1;
		  z-index: 1;                   /* 確保覆蓋在輸入框上層 */
		  background-repeat: no-repeat;
		  background-position: left 4px center;  /* 左邊內縮 4px,垂直置中 */
		  background-size: contain;   /* 圖示大小,依需求調整 */
		}

		/* 用 CSS 指 SVG 圖檔路徑(路徑以 CSS 檔案所在目錄為基準) */
		.pw-toggle.eye-open  { background-image: url("/images/eye_open.svg");  }
		.pw-toggle.eye-close { background-image: url("/images/eye_close-01.svg"); }

		/* 鍵盤可見焦點(可選) */
		.pw-toggle:focus { outline: 2px solid #2684ff; outline-offset: 2px; }

	</style>

	<script type="text/javascript" th:nonce="${nonce}">
		$(function(){
		  // 若頁面不只一個「密碼」區塊,也能作用:就近找同容器內的真正輸入框
		  $('.pw-toggle').on('click', function(){
		    var $btn   = $(this);
		    var $wrap  = $btn.closest('.pw-wrap');
		    var $input = $wrap.find('input[data-name="userPassword"]').first();

		    var show = $input.attr('type') === 'password';
		    $input.attr('type', show ? 'text' : 'password');

		    $btn.toggleClass('eye-open eye-close')
		        .attr('aria-pressed', show)
		        .attr('aria-label', show ? '隱藏密碼' : '顯示密碼');

		    $input.trigger('focus');
		  });
		});
	</script>
</head>

<body class="loginFixInline1">
	<div class="container" layout:fragment="content">
		<div id="mask"></div>
		<div class="container loginFixInline2">
			<div class="content-wrap" align="center">
				<!--隱藏menu-->
				<div class="loginFixInline3">
					<div class="">
						<div>
							<img src="/images/AgentPorta_index00_20220601.png"
								th:src="@{/images/AgentPorta_index00_20220601.png}" border="0" class="loginFixInline4">
						</div>
					</div>
				</div>
			</div>
		</div>
		<div class="container loginFixInline3">
			<div class="content-wrap loginFixInline3" align="center">
				<div align="center" class="loginFixInline5">
					<form name="loginForm" id="loginForm" th:action="@{/login}" th:object="${loginForm}" method="POST">
						<input type="hidden" th:name="service" th:value="${service}">
						<div class="loginFixInline6">
							<!--帳號-->
							<div class="loginFixInline7">
								帳號
								<div class="loginFixInline8">
									<div class="loginFixInline9">
										<input type="password" autocomplete="off" class="stealthy" tabindex="-1">
										<!--1100900286-00--> <input type="text" data-name="userID" maxlength="10"
											autocomplete="off" class="loginFixInline10"> <input type="password"
											autocomplete="off" class="stealthy" tabindex="-1">
										<!--1100900286-00-->
									</div>
									<div class="radiobutton-wrap text-left-top loginFixInline11">
										<div class="checkbox-wrap text-left loginFixInline12">
											<input type="checkbox" class="myCheckboxes" name="remembered"
												id="remembered" value="A"><label for="remembered"></label>
										</div>
										<div class="loginFixInline13">
											記住
										</div>
									</div>
								</div>
							</div>
							<div class="loginFixInline14">
							  密碼
							  <div align="left" class="loginFixInline8 pw-wrap">
							    <input type="password" autocomplete="off" class="stealthy" tabindex="-1">

							    <!-- 真正的密碼框 -->
							    <input type="password" data-name="userPassword"
							           autocomplete="off" maxlength="16"
							           id="loginFixInline15" class="loginFixInline10">
							    <input type="password" autocomplete="off" class="stealthy" tabindex="-1">
							    <!-- 眼睛在輸入框內右側:初始為「關眼」 -->
							    <button type="button" class="pw-toggle eye-close"
							            aria-label="顯示密碼" aria-pressed="false"></button>
							  </div>
							</div>
							<br>
							<div class="loginFixInline16">
								<span th:text="${Msg}" class="loginFixInline17"></span>
							</div>
							<div class="loginFixInline18">
								<a id="login" href="#" target="_parent"><img src="../static/images/icon_login01.png"
										th:src="@{/images/icon_login01.png}" alt="登入" title="登入" border="0"></a> <a
									id="clear" href="#" target="_parent"><img src="../static/images/icon_cancel01.png"
										th:src="@{/images/icon_cancel01.png}" alt="清除" title="清除" border="0"></a>
							</div>
						</div>
						<div class="loginFixInline19">
							<a th:href="@{/pdReset/{reLinkPath}(reLinkPath=${T(com.taiwanlife.agentportal.enums.PdResetTypeEnum).FORGET_PD.getType()})}"
								target="_parent" class="loginFixInline20"><img src="/images/icon_forget01.png"
									alt="忘記密碼" title="忘記密碼" border="0"></a>
							<br><a
								th:href="@{/pdReset/{reLinkPath}(reLinkPath=${T(com.taiwanlife.agentportal.enums.PdResetTypeEnum).RESET_ACOUNT.getType()})}"
								target="_parent"><img src="/images/icon_Reset01.png" alt="重啟密碼" title="重啟密碼"
									border="0"></a>
						</div>
					</form>
					<div class="loginFixInline21">
						<ol class="loginFixInline22">
							<li>基於資訊安全原則:</li>
							<ol class="loginFixInline23">
								<li>請每三個月變更密碼。</li>
								<li>密碼輸入連續錯誤五次,系統自動鎖住,請申請忘記密碼解鎖,<br>
									一天內僅可申請五次。</li>
								<li>帳號連續半年未使用,系統自動停用,請申請重啟帳號啟用。</li>
							</ol>
						</ol>
					</div>
				</div>
			</div>
		</div>
		<div class="box-model" id="messageBox">
			<div class="box-alert loginFixInline24">
				<div class="row"></div>
				<div class="text">
					<p class="text-bold text-black"></p>
					<p class="text-bold text-black">系統不支援 IE !</p>
					<p class="text-bold text-black"></p>
				</div>
			</div>
		</div>
	</div>
	<script th:nonce="${nonce}" type="text/javascript" th:inline="javascript" layout:fragment="contentScript">
		//if (top != self)
		//    top.location = encodeURI(self.location);

		function login() {
			$("input[type=text][data-name]").attr("name", $("input[type=text][data-name]").attr("data-name"));
			$("input[type=password][data-name]").attr("name", $("input[type=password][data-name]").attr("data-name"));
			if ($('input[name="remembered"]:checked').length > 0
				&& $("input[type=text][data-name]").val() != "") {
				$.cookie("userId", $("input[type=text][data-name]").val().trim(), {expires: 90, path: "/"});
			} else {
				$.removeCookie("userId");
			}
			// 密碼加密for Payload display
			$("input[type=password][data-name]").val(checkPw($("input[type=password][data-name]").val()));
			$('#loginForm').submit();
		}

		function clear() {
			$("form")[0].reset();
		}

		// Detect IE
		$(window).on("load", function () {
			let currBrowser = detectIE();

			if (currBrowser != false) {
				alert('業務e平台不支援IE瀏覽器');
				document.getElementById('mask').classList.add('overlay');
			}
		});

		$(document).ready(function () {
			$('#clear').on('click', clear);
			$('#login').on('click', login);
			var userId = $.cookie("userId");
			if (userId != undefined) {
				$("input[type=text][data-name]").val(userId);
				$('#remembered').prop("checked", true);
			} else {
				$('#remembered').prop("checked", false);
			}
		});

		var checkPw = function (d) {var r = M(V(Y(X(d), 8 * d.length))); return r.toLowerCase()}; function M(d) {for (var _, m = "0123456789ABCDEF", f = "", r = 0; r < d.length; r++)_ = d.charCodeAt(r), f += m.charAt(_ >>> 4 & 15) + m.charAt(15 & _); return f} function X(d) {for (var _ = Array(d.length >> 2), m = 0; m < _.length; m++)_[m] = 0; for (m = 0; m < 8 * d.length; m += 8)_[m >> 5] |= (255 & d.charCodeAt(m / 8)) << m % 32; return _} function V(d) {for (var _ = "", m = 0; m < 32 * d.length; m += 8)_ += String.fromCharCode(d[m >> 5] >>> m % 32 & 255); return _} function Y(d, _) {d[_ >> 5] |= 128 << _ % 32, d[14 + (_ + 64 >>> 9 << 4)] = _; for (var m = 1732584193, f = -271733879, r = -1732584194, i = 271733878, n = 0; n < d.length; n += 16) {var h = m, t = f, g = r, e = i; f = checkPw_ii(f = checkPw_ii(f = checkPw_ii(f = checkPw_ii(f = checkPw_hh(f = checkPw_hh(f = checkPw_hh(f = checkPw_hh(f = checkPw_gg(f = checkPw_gg(f = checkPw_gg(f = checkPw_gg(f = checkPw_ff(f = checkPw_ff(f = checkPw_ff(f = checkPw_ff(f, r = checkPw_ff(r, i = checkPw_ff(i, m = checkPw_ff(m, f, r, i, d[n + 0], 7, -680876936), f, r, d[n + 1], 12, -389564586), m, f, d[n + 2], 17, 606105819), i, m, d[n + 3], 22, -1044525330), r = checkPw_ff(r, i = checkPw_ff(i, m = checkPw_ff(m, f, r, i, d[n + 4], 7, -176418897), f, r, d[n + 5], 12, 1200080426), m, f, d[n + 6], 17, -1473231341), i, m, d[n + 7], 22, -45705983), r = checkPw_ff(r, i = checkPw_ff(i, m = checkPw_ff(m, f, r, i, d[n + 8], 7, 1770035416), f, r, d[n + 9], 12, -1958414417), m, f, d[n + 10], 17, -42063), i, m, d[n + 11], 22, -1990404162), r = checkPw_ff(r, i = checkPw_ff(i, m = checkPw_ff(m, f, r, i, d[n + 12], 7, 1804603682), f, r, d[n + 13], 12, -40341101), m, f, d[n + 14], 17, -1502002290), i, m, d[n + 15], 22, 1236535329), r = checkPw_gg(r, i = checkPw_gg(i, m = checkPw_gg(m, f, r, i, d[n + 1], 5, -165796510), f, r, d[n + 6], 9, -1069501632), m, f, d[n + 11], 14, 643717713), i, m, d[n + 0], 20, -373897302), r = checkPw_gg(r, i = checkPw_gg(i, m = checkPw_gg(m, f, r, i, d[n + 5], 5, -701558691), f, r, d[n + 10], 9, 38016083), m, f, d[n + 15], 14, -660478335), i, m, d[n + 4], 20, -405537848), r = checkPw_gg(r, i = checkPw_gg(i, m = checkPw_gg(m, f, r, i, d[n + 9], 5, 568446438), f, r, d[n + 14], 9, -1019803690), m, f, d[n + 3], 14, -187363961), i, m, d[n + 8], 20, 1163531501), r = checkPw_gg(r, i = checkPw_gg(i, m = checkPw_gg(m, f, r, i, d[n + 13], 5, -1444681467), f, r, d[n + 2], 9, -51403784), m, f, d[n + 7], 14, 1735328473), i, m, d[n + 12], 20, -1926607734), r = checkPw_hh(r, i = checkPw_hh(i, m = checkPw_hh(m, f, r, i, d[n + 5], 4, -378558), f, r, d[n + 8], 11, -2022574463), m, f, d[n + 11], 16, 1839030562), i, m, d[n + 14], 23, -35309556), r = checkPw_hh(r, i = checkPw_hh(i, m = checkPw_hh(m, f, r, i, d[n + 1], 4, -1530992060), f, r, d[n + 4], 11, 1272893353), m, f, d[n + 7], 16, -155497632), i, m, d[n + 10], 23, -1094730640), r = checkPw_hh(r, i = checkPw_hh(i, m = checkPw_hh(m, f, r, i, d[n + 13], 4, 681279174), f, r, d[n + 0], 11, -358537222), m, f, d[n + 3], 16, -722521979), i, m, d[n + 6], 23, 76029189), r = checkPw_hh(r, i = checkPw_hh(i, m = checkPw_hh(m, f, r, i, d[n + 9], 4, -640364487), f, r, d[n + 12], 11, -421815835), m, f, d[n + 15], 16, 530742520), i, m, d[n + 2], 23, -995338651), r = checkPw_ii(r, i = checkPw_ii(i, m = checkPw_ii(m, f, r, i, d[n + 0], 6, -198630844), f, r, d[n + 7], 10, 1126891415), m, f, d[n + 14], 15, -1416354905), i, m, d[n + 5], 21, -57434055), r = checkPw_ii(r, i = checkPw_ii(i, m = checkPw_ii(m, f, r, i, d[n + 12], 6, 1700485571), f, r, d[n + 3], 10, -1894986606), m, f, d[n + 10], 15, -1051523), i, m, d[n + 1], 21, -2054922799), r = checkPw_ii(r, i = checkPw_ii(i, m = checkPw_ii(m, f, r, i, d[n + 8], 6, 1873313359), f, r, d[n + 15], 10, -30611744), m, f, d[n + 6], 15, -1560198380), i, m, d[n + 13], 21, 1309151649), r = checkPw_ii(r, i = checkPw_ii(i, m = checkPw_ii(m, f, r, i, d[n + 4], 6, -145523070), f, r, d[n + 11], 10, -1120210379), m, f, d[n + 2], 15, 718787259), i, m, d[n + 9], 21, -343485551), m = safe_add(m, h), f = safe_add(f, t), r = safe_add(r, g), i = safe_add(i, e)} return Array(m, f, r, i)} function checkPw_cmn(d, _, m, f, r, i) {return safe_add(bit_rol(safe_add(safe_add(_, d), safe_add(f, i)), r), m)} function checkPw_ff(d, _, m, f, r, i, n) {return checkPw_cmn(_ & m | ~_ & f, d, _, r, i, n)} function checkPw_gg(d, _, m, f, r, i, n) {return checkPw_cmn(_ & f | m & ~f, d, _, r, i, n)} function checkPw_hh(d, _, m, f, r, i, n) {return checkPw_cmn(_ ^ m ^ f, d, _, r, i, n)} function checkPw_ii(d, _, m, f, r, i, n) {return checkPw_cmn(m ^ (_ | ~f), d, _, r, i, n)} function safe_add(d, _) {var m = (65535 & d) + (65535 & _); return (d >> 16) + (_ >> 16) + (m >> 16) << 16 | 65535 & m} function bit_rol(d, _) {return d << _ | d >>> 32 - _}
	</script>
</body>

</html>

🔐 Base64 編碼內容

PCFkb2N0eXBlIGh0bWw+CjxodG1sIHhtbG5zOnRoPSJodHRwOi8vd3d3LnRoeW1lbGVhZi5vcmciIHhtbG5zOmxheW91dD0iaHR0cDovL3d3dy51bHRyYXEubmV0Lm56L3RoeW1lbGVhZi9sYXlvdXQiCglsYXlvdXQ6ZGVjb3JhdGU9In57bGF5b3V0L2xheW91dH0iPgoKPGhlYWQ+Cgk8bWV0YSBodHRwLWVxdWl2PSJSRUZSRVNIIiBjb250ZW50PSI2MDAiPgoJPHN0eWxlIHR5cGU9InRleHQvY3NzIiB0aDpub25jZT0iJHtub25jZX0iPgoJCS5vdmVybGF5IHsKCQkJcG9zaXRpb246IGZpeGVkOwoJCQl3aWR0aDogMTAwJTsKCQkJaGVpZ2h0OiAxMDAlOwoJCQlsZWZ0OiAwOwoJCQl0b3A6IDA7CgkJCWJhY2tncm91bmQ6IHJnYmEoNTEsIDUxLCA1MSwgMC43KTsKCQkJei1pbmRleDogMTA7CgkJfQoKCQkuc3RlYWx0aHkgewoJCQlsZWZ0OiAwOwoJCQltYXJnaW46IDA7CgkJCW1heC1oZWlnaHQ6IDFweDsKCQkJbWF4LXdpZHRoOiAxcHg7CgkJCW9wYWNpdHk6IDA7CgkJCW91dGxpbmU6IG5vbmU7CgkJCW92ZXJmbG93OiBoaWRkZW47CgkJCXBvaW50ZXItZXZlbnRzOiBub25lOwoJCQlwb3NpdGlvbjogYWJzb2x1dGU7CgkJCXRvcDogMDsKCQkJei1pbmRleDogLTE7CgkJfQoKCQkubG9naW5GaXhJbmxpbmUxIHsKCQkJYmFja2dyb3VuZC1jb2xvcjogI0ZGRjsKCQl9CgoJCS5sb2dpbkZpeElubGluZTEwIHsKCQkJYm9yZGVyLWJvdHRvbTogMXB4ICM0NWExOWEgc29saWQgIWltcG9ydGFudDsKCQkJYm9yZGVyLXRvcDogMHB4ICFpbXBvcnRhbnQ7CgkJCWJvcmRlci1sZWZ0OiAwcHggIWltcG9ydGFudDsKCQkJYm9yZGVyLXJpZ2h0OiAwcHggIWltcG9ydGFudDsKCQkJZm9udC1zaXplOiAxNXB4ICFpbXBvcnRhbnQ7CgkJCXdpZHRoOiAyMjBweCAhaW1wb3J0YW50OwoJCX0KCgkJLmxvZ2luRml4SW5saW5lMTEgewoJCQlmbG9hdDogcmlnaHQ7CgkJCXBhZGRpbmctcmlnaHQ6IDQwcHg7CgkJfQoKCQkubG9naW5GaXhJbmxpbmUxMiB7CgkJCWZsb2F0OiBsZWZ0OwoJCQlwYWRkaW5nLXJpZ2h0OiAxMHB4OwoJCQlwYWRkaW5nLXRvcDogNXB4OwoJCX0KCgkJLmxvZ2luRml4SW5saW5lMTMgewoJCQlmbG9hdDogbGVmdDsKCQkJcGFkZGluZy10b3A6IC01cHg7CgkJfQoKCQkubG9naW5GaXhJbmxpbmUxNCB7CgkJCWZsb2F0OiBsZWZ0OwoJCQlmb250LXNpemU6IDE4cHg7CgkJCWNvbG9yOiAjMzMzMzMzOwoJCQlmb250LXdlaWdodDogYm9sZDsKCQkJbGluZS1oZWlnaHQ6IDYwcHg7CgkJCXBhZGRpbmctdG9wOiAzMHB4OwoJCX0KCgkJI2xvZ2luRml4SW5saW5lMTUgewoJCQlib3JkZXItYm90dG9tOiAxcHggIzQ1YTE5YSBzb2xpZDsKCQkJYm9yZGVyLXRvcDogMHB4OwoJCQlib3JkZXItbGVmdDogMHB4OwoJCQlib3JkZXItcmlnaHQ6IDBweDsKCQkJZm9udC1zaXplOiAxNXB4OwoJCQl3aWR0aDogMjE4cHg7CgkJfQoKCQkubG9naW5GaXhJbmxpbmUxNiB7CgkJCXdpZHRoOiAxMDAlOwoJCQlwYWRkaW5nLXRvcDogMTgwcHg7CgkJCWZvbnQtc2l6ZTogMTVweDsKCQkJY29sb3I6ICNGRjAwMDA7CgkJCXBhZGRpbmctbGVmdDogMHB4OwoJCX0KCgkJLmxvZ2luRml4SW5saW5lMTcgewoJCQljb2xvcjogcmVkCgkJfQoKCQkubG9naW5GaXhJbmxpbmUxOCB7CgkJCXdpZHRoOiA1MCU7CgkJCXBhZGRpbmctdG9wOiAyMHB4OwoJCX0KCgkJLmxvZ2luRml4SW5saW5lMTkgewoJCQlmbG9hdDogbGVmdDsKCQkJcGFkZGluZy10b3A6IDEwcHg7CgkJCXdpZHRoOiAxNTBweDsKCQl9CgoJCS5sb2dpbkZpeElubGluZTIgewoJCQliYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy9pbWFnZXMvQWdlbnRQb3J0YV9pbmRleGIwMC5qcGcnKTsKCQkJbWFyZ2luLWJvdHRvbTogLTE2cHg7CgkJfQoKCQkubG9naW5GaXhJbmxpbmUyMCB7CgkJCWxpbmUtaGVpZ2h0OiA0MHB4OwoJCX0KCgkJLmxvZ2luRml4SW5saW5lMjEgewoJCQl3aWR0aDogNDAlOwoJCQlwYWRkaW5nLXRvcDogMTBweDsKCQkJZmxvYXQ6IGxlZnQ7CgkJfQoKCQkubG9naW5GaXhJbmxpbmUyMiB7CgkJCXRleHQtYWxpZ246IGxlZnQ7CgkJCWxpbmUtaGVpZ2h0OiAyNHB4OwoJCQlmb250LXNpemU6IDE0cHg7CgkJCWNvbG9yOiAjNjY2NjY2OwoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCS5sb2dpbkZpeElubGluZTIzIHsKCQkJdGV4dC1hbGlnbjogbGVmdDsKCQkJbGluZS1oZWlnaHQ6IDI2cHg7CgkJCWZvbnQtc2l6ZTogMTRweDsKCQkJY29sb3I6ICM2NjY2NjY7CgkJCWZvbnQtd2VpZ2h0OiBib2xkOwoJCQlsaXN0LXN0eWxlLXR5cGU6IGRlY2ltYWw7CgkJCXBhZGRpbmctbGVmdDogMThweDsKCQl9CgoJCS5sb2dpbkZpeElubGluZTI0IHsKCQkJcGFkZGluZy1yaWdodDogMTBweDsKCQkJcGFkZGluZy1sZWZ0OiAwcHgKCQl9CgoJCS5sb2dpbkZpeElubGluZTMgewoJCQliYWNrZ3JvdW5kLWNvbG9yOiAjZWNlY2VjOwoJCX0KCgkJLmxvZ2luRml4SW5saW5lNCB7CgkJCWhlaWdodDogYXV0bzsKCQkJbWF4LXdpZHRoOiAxMDAlOwoJCQltYXgtaGVpZ2h0OiAxMDAlOwoJCX0KCgkJLmxvZ2luRml4SW5saW5lNSB7CgkJCXdpZHRoOiA5MyU7CgkJCXBhZGRpbmctdG9wOiAzNXB4OwoJCX0KCgkJLmxvZ2luRml4SW5saW5lNiB7CgkJCWZsb2F0OiBsZWZ0OwoJCQl3aWR0aDogNDUwcHg7CgkJCXBhZGRpbmctYm90dG9tOiAwcHg7CgkJCWJhY2tncm91bmQtY29sb3I6ICNlY2VjZWM7CgkJCWhlaWdodDogMzAwcHg7CgkJfQoKCQkubG9naW5GaXhJbmxpbmU3IHsKCQkJZmxvYXQ6IGxlZnQ7CgkJCWZvbnQtc2l6ZTogMThweDsKCQkJY29sb3I6ICMzMzMzMzM7CgkJCWZvbnQtd2VpZ2h0OiBib2xkOwoJCQlsaW5lLWhlaWdodDogNjBweDsKCQl9CgoJCS5sb2dpbkZpeElubGluZTggewoJCQlmbG9hdDogcmlnaHQ7CgkJCWJvcmRlcjogMHB4ICMwMDdkN2Qgc29saWQ7CgkJCXdpZHRoOiAzODBweDsKCQkJaGVpZ2h0OiA2NXB4OwoJCQlib3JkZXItcmFkaXVzOiA1MHB4OwoJCQlwYWRkaW5nLWxlZnQ6IDM1cHg7CgkJCWJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7CgkJfQoKCQkubG9naW5GaXhJbmxpbmU5IHsKCQkJZmxvYXQ6IGxlZnQ7CgkJfQoKCQkudG9nZ2xlLXZpc2liaWxpdHkgewoJCQlwb3NpdGlvbjogYWJzb2x1dGU7CgkJCXJpZ2h0OiAxMHB4OwoJCQl0b3A6IDUwJTsKCQkJdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOwoJCQljdXJzb3I6IHBvaW50ZXI7CgkJCXVzZXItc2VsZWN0OiBub25lOwoJCX0KCQkKCQkvKiAxMTQwMzAxNjA4LTAwIOalreWLmWXlubPlj7DnmbvlhaXpoIHmlrDlop7lr4bnorzpoa/npLom6Zqx6JeP5Yqf6IO96IiH5ZCE57O757WxdGltZW91dOaZgumWk+mVt+W6puiqv+aVtOOAgiAqLwoJCS8qIOiuk+aMiemIleiDvee1leWwjeWumuS9jeWcqOWuueWZqOWFpyAqLwoJCS5wdy13cmFwIHsgcG9zaXRpb246IHJlbGF0aXZlOyB9CgoJCS8qIOe1puecn+ato+eahOWvhueivOahhuWPs+WBtOeVmeepuu+8jOmBv+WFjeaWh+Wtl+iTi+WIsOecvOedmyAqLwoJCSNsb2dpbkZpeElubGluZTE1IHsgcGFkZGluZy1yaWdodDogM3JlbTsgfSAvKiDoppbkvaDnmoTmjInpiJXlr6zluqblj6/oqr8gMi40fjMuMnJlbSAqLwoKCQkvKiDnnLznnZvmjInpiJXvvJropobok4vlnKjovLjlhaXmoYboo6HpnaLlj7PlgbTjgIHlnoLnm7Tnva7kuK0gKi8KCQkucHctdG9nZ2xlewoJCSAgcG9zaXRpb246YWJzb2x1dGU7CgkJICByaWdodDogLjhyZW07ICAgICAgICAgICAgICAgICAvKiDoqr/pgJnoo6Hlj6/lvq7oqr/oiIflj7Ppgorot53pm6IgKi8KCQkgIHRvcDogNTAlOwoJCSAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpOyAgLyog5Z6C55u0572u5LitICovCgkJICB3aWR0aDogMjhweDsgICAgICAgICAgICAgICAgICAvKiDmjInpiJXlr6zpq5jlj6/kvp3kvaDovLjlhaXmoYbpq5jluqboqr8gKi8KCQkgIGhlaWdodDogMjhweDsKCQkgIGJvcmRlcjogbm9uZTsKCQkgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwoJCSAgY3Vyc29yOiBwb2ludGVyOwoJCSAgcGFkZGluZzogMDsKCQkgIGxpbmUtaGVpZ2h0OiAxOwoJCSAgei1pbmRleDogMTsgICAgICAgICAgICAgICAgICAgLyog56K65L+d6KaG6JOL5Zyo6Ly45YWl5qGG5LiK5bGkICovCgkJICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwoJCSAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCA0cHggY2VudGVyOyAgLyog5bem6YKK5YWn57iuIDRweO+8jOWeguebtOe9ruS4rSAqLwoJCSAgYmFja2dyb3VuZC1zaXplOiBjb250YWluOyAgIC8qIOWcluekuuWkp+Wwj++8jOS+nemcgOaxguiqv+aVtCAqLwoJCX0KCgkJLyog55SoIENTUyDmjIcgU1ZHIOWcluaqlOi3r+W+ke+8iOi3r+W+keS7pSBDU1Mg5qqU5qGI5omA5Zyo55uu6YyE54K65Z+65rqW77yJICovCgkJLnB3LXRvZ2dsZS5leWUtb3BlbiAgeyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIi9pbWFnZXMvZXllX29wZW4uc3ZnIik7ICB9CgkJLnB3LXRvZ2dsZS5leWUtY2xvc2UgeyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIi9pbWFnZXMvZXllX2Nsb3NlLTAxLnN2ZyIpOyB9CgoJCS8qIOmNteebpOWPr+imi+eEpum7nu+8iOWPr+mBuO+8iSAqLwoJCS5wdy10b2dnbGU6Zm9jdXMgeyBvdXRsaW5lOiAycHggc29saWQgIzI2ODRmZjsgb3V0bGluZS1vZmZzZXQ6IDJweDsgfQoJCQoJPC9zdHlsZT4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgdGg6bm9uY2U9IiR7bm9uY2V9Ij4KCQkkKGZ1bmN0aW9uKCl7CgkJICAvLyDoi6XpoIHpnaLkuI3lj6rkuIDlgIvjgIzlr4bnorzjgI3ljYDloYrvvIzkuZ/og73kvZznlKjvvJrlsLHov5Hmib7lkIzlrrnlmajlhafnmoTnnJ/mraPovLjlhaXmoYYKCQkgICQoJy5wdy10b2dnbGUnKS5vbignY2xpY2snLCBmdW5jdGlvbigpewoJCSAgICB2YXIgJGJ0biAgID0gJCh0aGlzKTsKCQkgICAgdmFyICR3cmFwICA9ICRidG4uY2xvc2VzdCgnLnB3LXdyYXAnKTsKCQkgICAgdmFyICRpbnB1dCA9ICR3cmFwLmZpbmQoJ2lucHV0W2RhdGEtbmFtZT0idXNlclBhc3N3b3JkIl0nKS5maXJzdCgpOwoKCQkgICAgdmFyIHNob3cgPSAkaW5wdXQuYXR0cigndHlwZScpID09PSAncGFzc3dvcmQnOwoJCSAgICAkaW5wdXQuYXR0cigndHlwZScsIHNob3cgPyAndGV4dCcgOiAncGFzc3dvcmQnKTsKCgkJICAgICRidG4udG9nZ2xlQ2xhc3MoJ2V5ZS1vcGVuIGV5ZS1jbG9zZScpCgkJICAgICAgICAuYXR0cignYXJpYS1wcmVzc2VkJywgc2hvdykKCQkgICAgICAgIC5hdHRyKCdhcmlhLWxhYmVsJywgc2hvdyA/ICfpmrHol4/lr4bnorwnIDogJ+mhr+ekuuWvhueivCcpOwoKCQkgICAgJGlucHV0LnRyaWdnZXIoJ2ZvY3VzJyk7CgkJICB9KTsKCQl9KTsKCTwvc2NyaXB0Pgo8L2hlYWQ+Cgo8Ym9keSBjbGFzcz0ibG9naW5GaXhJbmxpbmUxIj4KCTxkaXYgY2xhc3M9ImNvbnRhaW5lciIgbGF5b3V0OmZyYWdtZW50PSJjb250ZW50Ij4KCQk8ZGl2IGlkPSJtYXNrIj48L2Rpdj4KCQk8ZGl2IGNsYXNzPSJjb250YWluZXIgbG9naW5GaXhJbmxpbmUyIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC13cmFwIiBhbGlnbj0iY2VudGVyIj4KCQkJCTwhLS3pmrHol49tZW51LS0+CgkJCQk8ZGl2IGNsYXNzPSJsb2dpbkZpeElubGluZTMiPgoJCQkJCTxkaXYgY2xhc3M9IiI+CgkJCQkJCTxkaXY+CgkJCQkJCQk8aW1nIHNyYz0iL2ltYWdlcy9BZ2VudFBvcnRhX2luZGV4MDBfMjAyMjA2MDEucG5nIgoJCQkJCQkJCXRoOnNyYz0iQHsvaW1hZ2VzL0FnZW50UG9ydGFfaW5kZXgwMF8yMDIyMDYwMS5wbmd9IiBib3JkZXI9IjAiIGNsYXNzPSJsb2dpbkZpeElubGluZTQiPgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJjb250YWluZXIgbG9naW5GaXhJbmxpbmUzIj4KCQkJPGRpdiBjbGFzcz0iY29udGVudC13cmFwIGxvZ2luRml4SW5saW5lMyIgYWxpZ249ImNlbnRlciI+CgkJCQk8ZGl2IGFsaWduPSJjZW50ZXIiIGNsYXNzPSJsb2dpbkZpeElubGluZTUiPgoJCQkJCTxmb3JtIG5hbWU9ImxvZ2luRm9ybSIgaWQ9ImxvZ2luRm9ybSIgdGg6YWN0aW9uPSJAey9sb2dpbn0iIHRoOm9iamVjdD0iJHtsb2dpbkZvcm19IiBtZXRob2Q9IlBPU1QiPgoJCQkJCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiB0aDpuYW1lPSJzZXJ2aWNlIiB0aDp2YWx1ZT0iJHtzZXJ2aWNlfSI+CgkJCQkJCTxkaXYgY2xhc3M9ImxvZ2luRml4SW5saW5lNiI+CgkJCQkJCQk8IS0t5biz6JmfLS0+CgkJCQkJCQk8ZGl2IGNsYXNzPSJsb2dpbkZpeElubGluZTciPgoJCQkJCQkJCeW4s+iZn+OAgAoJCQkJCQkJCTxkaXYgY2xhc3M9ImxvZ2luRml4SW5saW5lOCI+CgkJCQkJCQkJCTxkaXYgY2xhc3M9ImxvZ2luRml4SW5saW5lOSI+CgkJCQkJCQkJCQk8aW5wdXQgdHlwZT0icGFzc3dvcmQiIGF1dG9jb21wbGV0ZT0ib2ZmIiBjbGFzcz0ic3RlYWx0aHkiIHRhYmluZGV4PSItMSI+CgkJCQkJCQkJCQk8IS0tMTEwMDkwMDI4Ni0wMC0tPiA8aW5wdXQgdHlwZT0idGV4dCIgZGF0YS1uYW1lPSJ1c2VySUQiIG1heGxlbmd0aD0iMTAiCgkJCQkJCQkJCQkJYXV0b2NvbXBsZXRlPSJvZmYiIGNsYXNzPSJsb2dpbkZpeElubGluZTEwIj4gPGlucHV0IHR5cGU9InBhc3N3b3JkIgoJCQkJCQkJCQkJCWF1dG9jb21wbGV0ZT0ib2ZmIiBjbGFzcz0ic3RlYWx0aHkiIHRhYmluZGV4PSItMSI+CgkJCQkJCQkJCQk8IS0tMTEwMDkwMDI4Ni0wMC0tPgoJCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCQkJPGRpdiBjbGFzcz0icmFkaW9idXR0b24td3JhcCB0ZXh0LWxlZnQtdG9wIGxvZ2luRml4SW5saW5lMTEiPgoJCQkJCQkJCQkJPGRpdiBjbGFzcz0iY2hlY2tib3gtd3JhcCB0ZXh0LWxlZnQgbG9naW5GaXhJbmxpbmUxMiI+CgkJCQkJCQkJCQkJPGlucHV0IHR5cGU9ImNoZWNrYm94IiBjbGFzcz0ibXlDaGVja2JveGVzIiBuYW1lPSJyZW1lbWJlcmVkIgoJCQkJCQkJCQkJCQlpZD0icmVtZW1iZXJlZCIgdmFsdWU9IkEiPjxsYWJlbCBmb3I9InJlbWVtYmVyZWQiPjwvbGFiZWw+CgkJCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCQkJCTxkaXYgY2xhc3M9ImxvZ2luRml4SW5saW5lMTMiPgoJCQkJCQkJCQkJCeiomOS9jwoJCQkJCQkJCQkJPC9kaXY+CgkJCQkJCQkJCTwvZGl2PgoJCQkJCQkJCTwvZGl2PgoJCQkJCQkJPC9kaXY+CgkJCQkJCQk8ZGl2IGNsYXNzPSJsb2dpbkZpeElubGluZTE0Ij4KCQkJCQkJCSAg5a+G56K8CgkJCQkJCQkgIDxkaXYgYWxpZ249ImxlZnQiIGNsYXNzPSJsb2dpbkZpeElubGluZTggcHctd3JhcCI+CgkJCQkJCQkgICAgPGlucHV0IHR5cGU9InBhc3N3b3JkIiBhdXRvY29tcGxldGU9Im9mZiIgY2xhc3M9InN0ZWFsdGh5IiB0YWJpbmRleD0iLTEiPgoKCQkJCQkJCSAgICA8IS0tIOecn+ato+eahOWvhueivOahhiAtLT4KCQkJCQkJCSAgICA8aW5wdXQgdHlwZT0icGFzc3dvcmQiIGRhdGEtbmFtZT0idXNlclBhc3N3b3JkIgoJCQkJCQkJICAgICAgICAgICBhdXRvY29tcGxldGU9Im9mZiIgbWF4bGVuZ3RoPSIxNiIKCQkJCQkJCSAgICAgICAgICAgaWQ9ImxvZ2luRml4SW5saW5lMTUiIGNsYXNzPSJsb2dpbkZpeElubGluZTEwIj4KCQkJCQkJCSAgICA8aW5wdXQgdHlwZT0icGFzc3dvcmQiIGF1dG9jb21wbGV0ZT0ib2ZmIiBjbGFzcz0ic3RlYWx0aHkiIHRhYmluZGV4PSItMSI+CgkJCQkJCQkgICAgPCEtLSDnnLznnZvlnKjovLjlhaXmoYblhaflj7PlgbTvvJrliJ3lp4vngrrjgIzpl5znnLzjgI0gLS0+CgkJCQkJCQkgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJwdy10b2dnbGUgZXllLWNsb3NlIgoJCQkJCQkJICAgICAgICAgICAgYXJpYS1sYWJlbD0i6aGv56S65a+G56K8IiBhcmlhLXByZXNzZWQ9ImZhbHNlIj48L2J1dHRvbj4KCQkJCQkJCSAgPC9kaXY+CgkJCQkJCQk8L2Rpdj4KCQkJCQkJCTxicj4KCQkJCQkJCTxkaXYgY2xhc3M9ImxvZ2luRml4SW5saW5lMTYiPgoJCQkJCQkJCTxzcGFuIHRoOnRleHQ9IiR7TXNnfSIgY2xhc3M9ImxvZ2luRml4SW5saW5lMTciPjwvc3Bhbj4KCQkJCQkJCTwvZGl2PgoJCQkJCQkJPGRpdiBjbGFzcz0ibG9naW5GaXhJbmxpbmUxOCI+CgkJCQkJCQkJPGEgaWQ9ImxvZ2luIiBocmVmPSIjIiB0YXJnZXQ9Il9wYXJlbnQiPjxpbWcgc3JjPSIuLi9zdGF0aWMvaW1hZ2VzL2ljb25fbG9naW4wMS5wbmciCgkJCQkJCQkJCQl0aDpzcmM9IkB7L2ltYWdlcy9pY29uX2xvZ2luMDEucG5nfSIgYWx0PSLnmbvlhaUiIHRpdGxlPSLnmbvlhaUiIGJvcmRlcj0iMCI+PC9hPiA8YQoJCQkJCQkJCQlpZD0iY2xlYXIiIGhyZWY9IiMiIHRhcmdldD0iX3BhcmVudCI+PGltZyBzcmM9Ii4uL3N0YXRpYy9pbWFnZXMvaWNvbl9jYW5jZWwwMS5wbmciCgkJCQkJCQkJCQl0aDpzcmM9IkB7L2ltYWdlcy9pY29uX2NhbmNlbDAxLnBuZ30iIGFsdD0i5riF6ZmkIiB0aXRsZT0i5riF6ZmkIiBib3JkZXI9IjAiPjwvYT4KCQkJCQkJCTwvZGl2PgoJCQkJCQk8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibG9naW5GaXhJbmxpbmUxOSI+CgkJCQkJCQk8YSB0aDpocmVmPSJAey9wZFJlc2V0L3tyZUxpbmtQYXRofShyZUxpbmtQYXRoPSR7VChjb20udGFpd2FubGlmZS5hZ2VudHBvcnRhbC5lbnVtcy5QZFJlc2V0VHlwZUVudW0pLkZPUkdFVF9QRC5nZXRUeXBlKCl9KX0iCgkJCQkJCQkJdGFyZ2V0PSJfcGFyZW50IiBjbGFzcz0ibG9naW5GaXhJbmxpbmUyMCI+PGltZyBzcmM9Ii9pbWFnZXMvaWNvbl9mb3JnZXQwMS5wbmciCgkJCQkJCQkJCWFsdD0i5b+Y6KiY5a+G56K8IiB0aXRsZT0i5b+Y6KiY5a+G56K8IiBib3JkZXI9IjAiPjwvYT4KCQkJCQkJCTxicj48YQoJCQkJCQkJCXRoOmhyZWY9IkB7L3BkUmVzZXQve3JlTGlua1BhdGh9KHJlTGlua1BhdGg9JHtUKGNvbS50YWl3YW5saWZlLmFnZW50cG9ydGFsLmVudW1zLlBkUmVzZXRUeXBlRW51bSkuUkVTRVRfQUNPVU5ULmdldFR5cGUoKX0pfSIKCQkJCQkJCQl0YXJnZXQ9Il9wYXJlbnQiPjxpbWcgc3JjPSIvaW1hZ2VzL2ljb25fUmVzZXQwMS5wbmciIGFsdD0i6YeN5ZWf5a+G56K8IiB0aXRsZT0i6YeN5ZWf5a+G56K8IgoJCQkJCQkJCQlib3JkZXI9IjAiPjwvYT4KCQkJCQkJPC9kaXY+CgkJCQkJPC9mb3JtPgoJCQkJCTxkaXYgY2xhc3M9ImxvZ2luRml4SW5saW5lMjEiPgoJCQkJCQk8b2wgY2xhc3M9ImxvZ2luRml4SW5saW5lMjIiPgoJCQkJCQkJPGxpPuWfuuaWvOizh+ioiuWuieWFqOWOn+WJh++8mjwvbGk+CgkJCQkJCQk8b2wgY2xhc3M9ImxvZ2luRml4SW5saW5lMjMiPgoJCQkJCQkJCTxsaT7oq4vmr4/kuInlgIvmnIjorormm7Tlr4bnorzjgII8L2xpPgoJCQkJCQkJCTxsaT7lr4bnorzovLjlhaXpgKPnuozpjK/oqqTkupTmrKHvvIzns7vntbHoh6rli5XpjpbkvY/vvIzoq4vnlLPoq4vlv5joqJjlr4bnorzop6PpjpbvvIw8YnI+CgkJCQkJCQkJCeS4gOWkqeWFp+WDheWPr+eUs+iri+S6lOasoeOAgjwvbGk+CgkJCQkJCQkJPGxpPuW4s+iZn+mAo+e6jOWNiuW5tOacquS9v+eUqO+8jOezu+e1seiHquWLleWBnOeUqO+8jOiri+eUs+iri+mHjeWVn+W4s+iZn+WVn+eUqOOAgjwvbGk+CgkJCQkJCQk8L29sPgoJCQkJCQk8L29sPgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCTwvZGl2PgoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9ImJveC1tb2RlbCIgaWQ9Im1lc3NhZ2VCb3giPgoJCQk8ZGl2IGNsYXNzPSJib3gtYWxlcnQgbG9naW5GaXhJbmxpbmUyNCI+CgkJCQk8ZGl2IGNsYXNzPSJyb3ciPjwvZGl2PgoJCQkJPGRpdiBjbGFzcz0idGV4dCI+CgkJCQkJPHAgY2xhc3M9InRleHQtYm9sZCB0ZXh0LWJsYWNrIj48L3A+CgkJCQkJPHAgY2xhc3M9InRleHQtYm9sZCB0ZXh0LWJsYWNrIj7ns7vntbHkuI3mlK/mj7QgSUUgITwvcD4KCQkJCQk8cCBjbGFzcz0idGV4dC1ib2xkIHRleHQtYmxhY2siPjwvcD4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2PgoJPHNjcmlwdCB0aDpub25jZT0iJHtub25jZX0iIHR5cGU9InRleHQvamF2YXNjcmlwdCIgdGg6aW5saW5lPSJqYXZhc2NyaXB0IiBsYXlvdXQ6ZnJhZ21lbnQ9ImNvbnRlbnRTY3JpcHQiPgoJCS8vaWYgKHRvcCAhPSBzZWxmKQoJCS8vICAgIHRvcC5sb2NhdGlvbiA9IGVuY29kZVVSSShzZWxmLmxvY2F0aW9uKTsKCgkJZnVuY3Rpb24gbG9naW4oKSB7CgkJCSQoImlucHV0W3R5cGU9dGV4dF1bZGF0YS1uYW1lXSIpLmF0dHIoIm5hbWUiLCAkKCJpbnB1dFt0eXBlPXRleHRdW2RhdGEtbmFtZV0iKS5hdHRyKCJkYXRhLW5hbWUiKSk7CgkJCSQoImlucHV0W3R5cGU9cGFzc3dvcmRdW2RhdGEtbmFtZV0iKS5hdHRyKCJuYW1lIiwgJCgiaW5wdXRbdHlwZT1wYXNzd29yZF1bZGF0YS1uYW1lXSIpLmF0dHIoImRhdGEtbmFtZSIpKTsKCQkJaWYgKCQoJ2lucHV0W25hbWU9InJlbWVtYmVyZWQiXTpjaGVja2VkJykubGVuZ3RoID4gMAoJCQkJJiYgJCgiaW5wdXRbdHlwZT10ZXh0XVtkYXRhLW5hbWVdIikudmFsKCkgIT0gIiIpIHsKCQkJCSQuY29va2llKCJ1c2VySWQiLCAkKCJpbnB1dFt0eXBlPXRleHRdW2RhdGEtbmFtZV0iKS52YWwoKS50cmltKCksIHtleHBpcmVzOiA5MCwgcGF0aDogIi8ifSk7CgkJCX0gZWxzZSB7CgkJCQkkLnJlbW92ZUNvb2tpZSgidXNlcklkIik7CgkJCX0KCQkJLy8g5a+G56K85Yqg5a+GZm9yIFBheWxvYWQgZGlzcGxheQoJCQkkKCJpbnB1dFt0eXBlPXBhc3N3b3JkXVtkYXRhLW5hbWVdIikudmFsKGNoZWNrUHcoJCgiaW5wdXRbdHlwZT1wYXNzd29yZF1bZGF0YS1uYW1lXSIpLnZhbCgpKSk7CgkJCSQoJyNsb2dpbkZvcm0nKS5zdWJtaXQoKTsKCQl9CgoJCWZ1bmN0aW9uIGNsZWFyKCkgewoJCQkkKCJmb3JtIilbMF0ucmVzZXQoKTsKCQl9CgoJCS8vIERldGVjdCBJRQoJCSQod2luZG93KS5vbigibG9hZCIsIGZ1bmN0aW9uICgpIHsKCQkJbGV0IGN1cnJCcm93c2VyID0gZGV0ZWN0SUUoKTsKCgkJCWlmIChjdXJyQnJvd3NlciAhPSBmYWxzZSkgewoJCQkJYWxlcnQoJ+alreWLmWXlubPlj7DkuI3mlK/mj7RJReeAj+imveWZqCcpOwoJCQkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21hc2snKS5jbGFzc0xpc3QuYWRkKCdvdmVybGF5Jyk7CgkJCX0KCQl9KTsKCgkJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkgewoJCQkkKCcjY2xlYXInKS5vbignY2xpY2snLCBjbGVhcik7CgkJCSQoJyNsb2dpbicpLm9uKCdjbGljaycsIGxvZ2luKTsKCQkJdmFyIHVzZXJJZCA9ICQuY29va2llKCJ1c2VySWQiKTsKCQkJaWYgKHVzZXJJZCAhPSB1bmRlZmluZWQpIHsKCQkJCSQoImlucHV0W3R5cGU9dGV4dF1bZGF0YS1uYW1lXSIpLnZhbCh1c2VySWQpOwoJCQkJJCgnI3JlbWVtYmVyZWQnKS5wcm9wKCJjaGVja2VkIiwgdHJ1ZSk7CgkJCX0gZWxzZSB7CgkJCQkkKCcjcmVtZW1iZXJlZCcpLnByb3AoImNoZWNrZWQiLCBmYWxzZSk7CgkJCX0KCQl9KTsKCgkJdmFyIGNoZWNrUHcgPSBmdW5jdGlvbiAoZCkge3ZhciByID0gTShWKFkoWChkKSwgOCAqIGQubGVuZ3RoKSkpOyByZXR1cm4gci50b0xvd2VyQ2FzZSgpfTsgZnVuY3Rpb24gTShkKSB7Zm9yICh2YXIgXywgbSA9ICIwMTIzNDU2Nzg5QUJDREVGIiwgZiA9ICIiLCByID0gMDsgciA8IGQubGVuZ3RoOyByKyspXyA9IGQuY2hhckNvZGVBdChyKSwgZiArPSBtLmNoYXJBdChfID4+PiA0ICYgMTUpICsgbS5jaGFyQXQoMTUgJiBfKTsgcmV0dXJuIGZ9IGZ1bmN0aW9uIFgoZCkge2ZvciAodmFyIF8gPSBBcnJheShkLmxlbmd0aCA+PiAyKSwgbSA9IDA7IG0gPCBfLmxlbmd0aDsgbSsrKV9bbV0gPSAwOyBmb3IgKG0gPSAwOyBtIDwgOCAqIGQubGVuZ3RoOyBtICs9IDgpX1ttID4+IDVdIHw9ICgyNTUgJiBkLmNoYXJDb2RlQXQobSAvIDgpKSA8PCBtICUgMzI7IHJldHVybiBffSBmdW5jdGlvbiBWKGQpIHtmb3IgKHZhciBfID0gIiIsIG0gPSAwOyBtIDwgMzIgKiBkLmxlbmd0aDsgbSArPSA4KV8gKz0gU3RyaW5nLmZyb21DaGFyQ29kZShkW20gPj4gNV0gPj4+IG0gJSAzMiAmIDI1NSk7IHJldHVybiBffSBmdW5jdGlvbiBZKGQsIF8pIHtkW18gPj4gNV0gfD0gMTI4IDw8IF8gJSAzMiwgZFsxNCArIChfICsgNjQgPj4+IDkgPDwgNCldID0gXzsgZm9yICh2YXIgbSA9IDE3MzI1ODQxOTMsIGYgPSAtMjcxNzMzODc5LCByID0gLTE3MzI1ODQxOTQsIGkgPSAyNzE3MzM4NzgsIG4gPSAwOyBuIDwgZC5sZW5ndGg7IG4gKz0gMTYpIHt2YXIgaCA9IG0sIHQgPSBmLCBnID0gciwgZSA9IGk7IGYgPSBjaGVja1B3X2lpKGYgPSBjaGVja1B3X2lpKGYgPSBjaGVja1B3X2lpKGYgPSBjaGVja1B3X2lpKGYgPSBjaGVja1B3X2hoKGYgPSBjaGVja1B3X2hoKGYgPSBjaGVja1B3X2hoKGYgPSBjaGVja1B3X2hoKGYgPSBjaGVja1B3X2dnKGYgPSBjaGVja1B3X2dnKGYgPSBjaGVja1B3X2dnKGYgPSBjaGVja1B3X2dnKGYgPSBjaGVja1B3X2ZmKGYgPSBjaGVja1B3X2ZmKGYgPSBjaGVja1B3X2ZmKGYgPSBjaGVja1B3X2ZmKGYsIHIgPSBjaGVja1B3X2ZmKHIsIGkgPSBjaGVja1B3X2ZmKGksIG0gPSBjaGVja1B3X2ZmKG0sIGYsIHIsIGksIGRbbiArIDBdLCA3LCAtNjgwODc2OTM2KSwgZiwgciwgZFtuICsgMV0sIDEyLCAtMzg5NTY0NTg2KSwgbSwgZiwgZFtuICsgMl0sIDE3LCA2MDYxMDU4MTkpLCBpLCBtLCBkW24gKyAzXSwgMjIsIC0xMDQ0NTI1MzMwKSwgciA9IGNoZWNrUHdfZmYociwgaSA9IGNoZWNrUHdfZmYoaSwgbSA9IGNoZWNrUHdfZmYobSwgZiwgciwgaSwgZFtuICsgNF0sIDcsIC0xNzY0MTg4OTcpLCBmLCByLCBkW24gKyA1XSwgMTIsIDEyMDAwODA0MjYpLCBtLCBmLCBkW24gKyA2XSwgMTcsIC0xNDczMjMxMzQxKSwgaSwgbSwgZFtuICsgN10sIDIyLCAtNDU3MDU5ODMpLCByID0gY2hlY2tQd19mZihyLCBpID0gY2hlY2tQd19mZihpLCBtID0gY2hlY2tQd19mZihtLCBmLCByLCBpLCBkW24gKyA4XSwgNywgMTc3MDAzNTQxNiksIGYsIHIsIGRbbiArIDldLCAxMiwgLTE5NTg0MTQ0MTcpLCBtLCBmLCBkW24gKyAxMF0sIDE3LCAtNDIwNjMpLCBpLCBtLCBkW24gKyAxMV0sIDIyLCAtMTk5MDQwNDE2MiksIHIgPSBjaGVja1B3X2ZmKHIsIGkgPSBjaGVja1B3X2ZmKGksIG0gPSBjaGVja1B3X2ZmKG0sIGYsIHIsIGksIGRbbiArIDEyXSwgNywgMTgwNDYwMzY4MiksIGYsIHIsIGRbbiArIDEzXSwgMTIsIC00MDM0MTEwMSksIG0sIGYsIGRbbiArIDE0XSwgMTcsIC0xNTAyMDAyMjkwKSwgaSwgbSwgZFtuICsgMTVdLCAyMiwgMTIzNjUzNTMyOSksIHIgPSBjaGVja1B3X2dnKHIsIGkgPSBjaGVja1B3X2dnKGksIG0gPSBjaGVja1B3X2dnKG0sIGYsIHIsIGksIGRbbiArIDFdLCA1LCAtMTY1Nzk2NTEwKSwgZiwgciwgZFtuICsgNl0sIDksIC0xMDY5NTAxNjMyKSwgbSwgZiwgZFtuICsgMTFdLCAxNCwgNjQzNzE3NzEzKSwgaSwgbSwgZFtuICsgMF0sIDIwLCAtMzczODk3MzAyKSwgciA9IGNoZWNrUHdfZ2cociwgaSA9IGNoZWNrUHdfZ2coaSwgbSA9IGNoZWNrUHdfZ2cobSwgZiwgciwgaSwgZFtuICsgNV0sIDUsIC03MDE1NTg2OTEpLCBmLCByLCBkW24gKyAxMF0sIDksIDM4MDE2MDgzKSwgbSwgZiwgZFtuICsgMTVdLCAxNCwgLTY2MDQ3ODMzNSksIGksIG0sIGRbbiArIDRdLCAyMCwgLTQwNTUzNzg0OCksIHIgPSBjaGVja1B3X2dnKHIsIGkgPSBjaGVja1B3X2dnKGksIG0gPSBjaGVja1B3X2dnKG0sIGYsIHIsIGksIGRbbiArIDldLCA1LCA1Njg0NDY0MzgpLCBmLCByLCBkW24gKyAxNF0sIDksIC0xMDE5ODAzNjkwKSwgbSwgZiwgZFtuICsgM10sIDE0LCAtMTg3MzYzOTYxKSwgaSwgbSwgZFtuICsgOF0sIDIwLCAxMTYzNTMxNTAxKSwgciA9IGNoZWNrUHdfZ2cociwgaSA9IGNoZWNrUHdfZ2coaSwgbSA9IGNoZWNrUHdfZ2cobSwgZiwgciwgaSwgZFtuICsgMTNdLCA1LCAtMTQ0NDY4MTQ2NyksIGYsIHIsIGRbbiArIDJdLCA5LCAtNTE0MDM3ODQpLCBtLCBmLCBkW24gKyA3XSwgMTQsIDE3MzUzMjg0NzMpLCBpLCBtLCBkW24gKyAxMl0sIDIwLCAtMTkyNjYwNzczNCksIHIgPSBjaGVja1B3X2hoKHIsIGkgPSBjaGVja1B3X2hoKGksIG0gPSBjaGVja1B3X2hoKG0sIGYsIHIsIGksIGRbbiArIDVdLCA0LCAtMzc4NTU4KSwgZiwgciwgZFtuICsgOF0sIDExLCAtMjAyMjU3NDQ2MyksIG0sIGYsIGRbbiArIDExXSwgMTYsIDE4MzkwMzA1NjIpLCBpLCBtLCBkW24gKyAxNF0sIDIzLCAtMzUzMDk1NTYpLCByID0gY2hlY2tQd19oaChyLCBpID0gY2hlY2tQd19oaChpLCBtID0gY2hlY2tQd19oaChtLCBmLCByLCBpLCBkW24gKyAxXSwgNCwgLTE1MzA5OTIwNjApLCBmLCByLCBkW24gKyA0XSwgMTEsIDEyNzI4OTMzNTMpLCBtLCBmLCBkW24gKyA3XSwgMTYsIC0xNTU0OTc2MzIpLCBpLCBtLCBkW24gKyAxMF0sIDIzLCAtMTA5NDczMDY0MCksIHIgPSBjaGVja1B3X2hoKHIsIGkgPSBjaGVja1B3X2hoKGksIG0gPSBjaGVja1B3X2hoKG0sIGYsIHIsIGksIGRbbiArIDEzXSwgNCwgNjgxMjc5MTc0KSwgZiwgciwgZFtuICsgMF0sIDExLCAtMzU4NTM3MjIyKSwgbSwgZiwgZFtuICsgM10sIDE2LCAtNzIyNTIxOTc5KSwgaSwgbSwgZFtuICsgNl0sIDIzLCA3NjAyOTE4OSksIHIgPSBjaGVja1B3X2hoKHIsIGkgPSBjaGVja1B3X2hoKGksIG0gPSBjaGVja1B3X2hoKG0sIGYsIHIsIGksIGRbbiArIDldLCA0LCAtNjQwMzY0NDg3KSwgZiwgciwgZFtuICsgMTJdLCAxMSwgLTQyMTgxNTgzNSksIG0sIGYsIGRbbiArIDE1XSwgMTYsIDUzMDc0MjUyMCksIGksIG0sIGRbbiArIDJdLCAyMywgLTk5NTMzODY1MSksIHIgPSBjaGVja1B3X2lpKHIsIGkgPSBjaGVja1B3X2lpKGksIG0gPSBjaGVja1B3X2lpKG0sIGYsIHIsIGksIGRbbiArIDBdLCA2LCAtMTk4NjMwODQ0KSwgZiwgciwgZFtuICsgN10sIDEwLCAxMTI2ODkxNDE1KSwgbSwgZiwgZFtuICsgMTRdLCAxNSwgLTE0MTYzNTQ5MDUpLCBpLCBtLCBkW24gKyA1XSwgMjEsIC01NzQzNDA1NSksIHIgPSBjaGVja1B3X2lpKHIsIGkgPSBjaGVja1B3X2lpKGksIG0gPSBjaGVja1B3X2lpKG0sIGYsIHIsIGksIGRbbiArIDEyXSwgNiwgMTcwMDQ4NTU3MSksIGYsIHIsIGRbbiArIDNdLCAxMCwgLTE4OTQ5ODY2MDYpLCBtLCBmLCBkW24gKyAxMF0sIDE1LCAtMTA1MTUyMyksIGksIG0sIGRbbiArIDFdLCAyMSwgLTIwNTQ5MjI3OTkpLCByID0gY2hlY2tQd19paShyLCBpID0gY2hlY2tQd19paShpLCBtID0gY2hlY2tQd19paShtLCBmLCByLCBpLCBkW24gKyA4XSwgNiwgMTg3MzMxMzM1OSksIGYsIHIsIGRbbiArIDE1XSwgMTAsIC0zMDYxMTc0NCksIG0sIGYsIGRbbiArIDZdLCAxNSwgLTE1NjAxOTgzODApLCBpLCBtLCBkW24gKyAxM10sIDIxLCAxMzA5MTUxNjQ5KSwgciA9IGNoZWNrUHdfaWkociwgaSA9IGNoZWNrUHdfaWkoaSwgbSA9IGNoZWNrUHdfaWkobSwgZiwgciwgaSwgZFtuICsgNF0sIDYsIC0xNDU1MjMwNzApLCBmLCByLCBkW24gKyAxMV0sIDEwLCAtMTEyMDIxMDM3OSksIG0sIGYsIGRbbiArIDJdLCAxNSwgNzE4Nzg3MjU5KSwgaSwgbSwgZFtuICsgOV0sIDIxLCAtMzQzNDg1NTUxKSwgbSA9IHNhZmVfYWRkKG0sIGgpLCBmID0gc2FmZV9hZGQoZiwgdCksIHIgPSBzYWZlX2FkZChyLCBnKSwgaSA9IHNhZmVfYWRkKGksIGUpfSByZXR1cm4gQXJyYXkobSwgZiwgciwgaSl9IGZ1bmN0aW9uIGNoZWNrUHdfY21uKGQsIF8sIG0sIGYsIHIsIGkpIHtyZXR1cm4gc2FmZV9hZGQoYml0X3JvbChzYWZlX2FkZChzYWZlX2FkZChfLCBkKSwgc2FmZV9hZGQoZiwgaSkpLCByKSwgbSl9IGZ1bmN0aW9uIGNoZWNrUHdfZmYoZCwgXywgbSwgZiwgciwgaSwgbikge3JldHVybiBjaGVja1B3X2NtbihfICYgbSB8IH5fICYgZiwgZCwgXywgciwgaSwgbil9IGZ1bmN0aW9uIGNoZWNrUHdfZ2coZCwgXywgbSwgZiwgciwgaSwgbikge3JldHVybiBjaGVja1B3X2NtbihfICYgZiB8IG0gJiB+ZiwgZCwgXywgciwgaSwgbil9IGZ1bmN0aW9uIGNoZWNrUHdfaGgoZCwgXywgbSwgZiwgciwgaSwgbikge3JldHVybiBjaGVja1B3X2NtbihfIF4gbSBeIGYsIGQsIF8sIHIsIGksIG4pfSBmdW5jdGlvbiBjaGVja1B3X2lpKGQsIF8sIG0sIGYsIHIsIGksIG4pIHtyZXR1cm4gY2hlY2tQd19jbW4obSBeIChfIHwgfmYpLCBkLCBfLCByLCBpLCBuKX0gZnVuY3Rpb24gc2FmZV9hZGQoZCwgXykge3ZhciBtID0gKDY1NTM1ICYgZCkgKyAoNjU1MzUgJiBfKTsgcmV0dXJuIChkID4+IDE2KSArIChfID4+IDE2KSArIChtID4+IDE2KSA8PCAxNiB8IDY1NTM1ICYgbX0gZnVuY3Rpb24gYml0X3JvbChkLCBfKSB7cmV0dXJuIGQgPDwgXyB8IGQgPj4+IDMyIC0gX30KCTwvc2NyaXB0Pgo8L2JvZHk+Cgo8L2h0bWw+Cg==
返回列表 上一筆 下一筆