Received: by 2002:ab2:1689:0:b0:1f7:5705:b850 with SMTP id d9csp648761lqa; Sat, 27 Apr 2024 19:47:34 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCXtbjnvvUePydxPRDP8Ccaesk5bQFsgxgQRx2SyhaddC92CstcyyBwaaqPYCNsenTzCLQFnIg4LXfzjBsFmNIPP76z8stiH1RHq0FEYmw== X-Google-Smtp-Source: AGHT+IE1foaliwKVRTl2aOn87nc359hzTiwbBsrd5KBx+oVWQlnlxlKebzSc/sW52R0XlIUEpKt9 X-Received: by 2002:a05:6512:45c:b0:51c:2c7e:ac92 with SMTP id y28-20020a056512045c00b0051c2c7eac92mr5479788lfk.23.1714272454220; Sat, 27 Apr 2024 19:47:34 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1714272454; cv=pass; d=google.com; s=arc-20160816; b=HYanFrqJz4VNHwMPdXdSlI4r9NI35cDT7RKsPWyzvUcuoYHrN+5QSp9sfFAwd+eecj 3pJvYsnG8xktz+JgNYfpbvNXCP/jtDzneQcILNU/cudIq/2hdXDPaqPietafqSkSSuzJ tMswH+8UgGLYPxSWo3cR3YNrCUbrljWcFVGC1xvmWiONXLbQEeQ8O6SCf3auKp7mEBfB NqhbIUOx+BJlV0HGS8wt1wjBtpeSlvsQFl+rpoEOMN9Nw5AD9hzlGpvH2BwUMCmrN/L8 F0e+8UzEEpzzzGaZtERLRY1heNn4trWD1t71zYh+LjAryWdUAW+W+Em+iowMlaeT51fN haWg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:list-unsubscribe:list-subscribe:list-id:precedence :subject:message-id:reply-to:cc:to:from:date; bh=80u4Tw/NVmlLCKPD3ZMzuSGl5K0GuV5trFXYEJzUstc=; fh=t3PdByrcVDjU6AjvhOYIAXgiLTq9RQ1hDK6ihTNecdM=; b=d5CyDN/CBn3qpj7ajusCwLZ61A+nOUBHFhIYOTMmBKNi31XoaQ0bf0VAot2VNyecg0 93pID7N6D5BYVD/WLVi082p6KrEV22H4flhN8RaKYpzP42rfhO2XzN/N+fxRBT0PaKnJ P09lEqAdb6Ic5VRTy3/0noVEljfpQsrJDoyZ629TRfbp5mUKHOt2Qq/6Pbi7/vzuk49K EEoEeVLO/JZu8DsQT+7vP4naTTEb128K6w4+O/MMDGXtPdd63PWGldluLkWAU2uIUaPV VOTL9U9pwa3hmQ0O13fINRIrSksLJcQs8NPywhL5EQJm2jUgPGM8L1gwKWif2XJnZA1e aAeQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1 spf=pass spfdomain=ubisectech.com); spf=pass (google.com: domain of linux-kernel+bounces-161228-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-161228-linux.lists.archive=gmail.com@vger.kernel.org" Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [147.75.80.249]) by mx.google.com with ESMTPS id b19-20020a1709063f9300b00a4734b06c8csi12805977ejj.630.2024.04.27.19.47.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Apr 2024 19:47:34 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-161228-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) client-ip=147.75.80.249; Authentication-Results: mx.google.com; arc=pass (i=1 spf=pass spfdomain=ubisectech.com); spf=pass (google.com: domain of linux-kernel+bounces-161228-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-161228-linux.lists.archive=gmail.com@vger.kernel.org" Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id C220D1F21AFD for ; Sun, 28 Apr 2024 02:47:33 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 91FEF1877; Sun, 28 Apr 2024 02:47:27 +0000 (UTC) Received: from out198-19.us.a.mail.aliyun.com (out198-19.us.a.mail.aliyun.com [47.90.198.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 137C21388; Sun, 28 Apr 2024 02:47:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=47.90.198.19 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714272445; cv=none; b=qtXh2IAFRha3DqyzcwKCeW+zRMxuc1WpWpi2+VGs3Z6HCgxAP7Yuk3G9qihKF/YUArnNXpxsUAhmR6ZJTfmRrhOXX2jJgvWlpVxMwLpIVqKKJoTTZ4ezHPHxP1KWIgo5FLvsP/bjlcF6m2VGGyipmyARsTbY66OKl2ktLbfCpOA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714272445; c=relaxed/simple; bh=80u4Tw/NVmlLCKPD3ZMzuSGl5K0GuV5trFXYEJzUstc=; h=Date:From:To:Cc:Message-ID:Subject:MIME-Version:Content-Type; b=Mcnl2J4ZxGQi1GPQ7XezZtfoIZRz5SKZY4g+IEY90skiaDraK9j0SjI2ZM3oQaCj3nzS5cm/lXZcjHqxIJ8T29kJvve9hkkNSHZZ4I9JSPwDdN8TDOcEQpc0G9SglEv5TrhTNphQyb1IF+haAaDbkHwTNeZNwsxpHlmZsrZn96A= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ubisectech.com; spf=pass smtp.mailfrom=ubisectech.com; arc=none smtp.client-ip=47.90.198.19 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ubisectech.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ubisectech.com X-Alimail-AntiSpam:AC=CONTINUE;BC=0.1822066|-1;CH=green;DM=|CONTINUE|false|;DS=CONTINUE|ham_system_inform|0.0526675-0.000743803-0.946589;FP=0|0|0|0|0|0|0|0;HT=ay29a033018047190;MF=bugreport@ubisectech.com;NM=1;PH=DW;RN=3;RT=3;SR=0;TI=W4_0.2.3_v5_212D9338_1714272330663_o7001c745; Received: from WS-web (bugreport@ubisectech.com[W4_0.2.3_v5_212D9338_1714272330663_o7001c745]) at Sun, 28 Apr 2024 10:47:02 +0800 Date: Sun, 28 Apr 2024 10:47:02 +0800 From: "Ubisectech Sirius" To: "linux-trace-kernel" , "linux-kernel" Cc: "mic" Reply-To: "Ubisectech Sirius" Message-ID: Subject: =?UTF-8?B?V0FSTklORyBpbiBjdXJyZW50X2NoZWNrX3JlZmVyX3BhdGg=?= X-Mailer: [Alimail-Mailagent][W4_0.2.3][v5][Chrome] Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 x-aliyun-mail-creator: W4_0.2.3_v5_M3LTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzEyMy4wLjAuMCBTYWZhcmkvNTM3LjM2vN Content-Type: multipart/mixed; boundary="----=ALIBOUNDARY_60289_7f560532d700_662db8a6_6bf5ad" This is a multi-part message in MIME format. ------=ALIBOUNDARY_60289_7f560532d700_662db8a6_6bf5ad Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 SGVsbG8uCldlIGFyZSBVYmlzZWN0ZWNoIFNpcml1cyBUZWFtLCB0aGUgdnVsbmVyYWJpbGl0eSBs YWIgb2YgQ2hpbmEgVmFsaWFudFNlYy4gUmVjZW50bHksIG91ciB0ZWFtIGhhcyBkaXNjb3ZlcmVk IGEgaXNzdWUgaW4gTGludXgga2VybmVsIDYuNy4gQXR0YWNoZWQgdG8gdGhlIGVtYWlsIHdlcmUg YSBQb0MgZmlsZSBvZiB0aGUgaXNzdWUuCgpTdGFjayBkdW1wOgoKbG9vcDM6IGRldGVjdGVkIGNh cGFjaXR5IGNoYW5nZSBmcm9tIDAgdG8gMTAyNAotLS0tLS0tLS0tLS1bIGN1dCBoZXJlIF0tLS0t LS0tLS0tLS0KV0FSTklORzogQ1BVOiAwIFBJRDogMzAzNjggYXQgc2VjdXJpdHkvbGFuZGxvY2sv ZnMuYzo1OTggZ2V0X21vZGVfYWNjZXNzIHNlY3VyaXR5L2xhbmRsb2NrL2ZzLmM6NTk4IFtpbmxp bmVdCldBUk5JTkc6IENQVTogMCBQSUQ6IDMwMzY4IGF0IHNlY3VyaXR5L2xhbmRsb2NrL2ZzLmM6 NTk4IGdldF9tb2RlX2FjY2VzcyBzZWN1cml0eS9sYW5kbG9jay9mcy5jOjU3OCBbaW5saW5lXQpX QVJOSU5HOiBDUFU6IDAgUElEOiAzMDM2OCBhdCBzZWN1cml0eS9sYW5kbG9jay9mcy5jOjU5OCBj dXJyZW50X2NoZWNrX3JlZmVyX3BhdGgrMHg5NTUvMHhhNjAgc2VjdXJpdHkvbGFuZGxvY2svZnMu Yzo3NTgKTW9kdWxlcyBsaW5rZWQgaW46CkNQVTogMCBQSUQ6IDMwMzY4IENvbW06IHN5ei1leGVj dXRvci4zIE5vdCB0YWludGVkIDYuNy4wICMyCkhhcmR3YXJlIG5hbWU6IFFFTVUgU3RhbmRhcmQg UEMgKGk0NDBGWCArIFBJSVgsIDE5OTYpLCBCSU9TIDEuMTUuMC0xIDA0LzAxLzIwMTQKUklQOiAw MDEwOmdldF9tb2RlX2FjY2VzcyBzZWN1cml0eS9sYW5kbG9jay9mcy5jOjU5OCBbaW5saW5lXQpS SVA6IDAwMTA6Z2V0X21vZGVfYWNjZXNzIHNlY3VyaXR5L2xhbmRsb2NrL2ZzLmM6NTc4IFtpbmxp bmVdClJJUDogMDAxMDpjdXJyZW50X2NoZWNrX3JlZmVyX3BhdGgrMHg5NTUvMHhhNjAgc2VjdXJp dHkvbGFuZGxvY2svZnMuYzo3NTgKQ29kZTogZTkgNzYgZmIgZmYgZmYgNDEgYmMgZmUgZmYgZmYg ZmYgZTkgNmIgZmIgZmYgZmYgZTggMDAgOTkgNzcgZmQgOTAgMGYgMGIgOTAgNDEgYmMgZjMgZmYg ZmYgZmYgZTkgNTcgZmIgZmYgZmYgZTggZWMgOTggNzcgZmQgOTAgPDBmPiAwYiA5MCAzMSBkYiBl OSA4NiBmOSBmZiBmZiBiYiAwMCAwOCAwMCAwMCBlOSA3YyBmOSBmZiBmZiA0MSBiYQpSU1A6IDAw MTg6ZmZmZmM5MDAwMWZiN2JhMCBFRkxBR1M6IDAwMDEwMjEyClJBWDogMDAwMDAwMDAwMDAwMGJj NSBSQlg6IGZmZmY4ODgwNWZlZWI3YjAgUkNYOiBmZmZmYzkwMDA2ZTE1MDAwClJEWDogMDAwMDAw MDAwMDA0MDAwMCBSU0k6IGZmZmZmZmZmODQxMjVkNjQgUkRJOiAwMDAwMDAwMDAwMDAwMDAzClJC UDogZmZmZjg4ODAxMjNjNTYwOCBSMDg6IDAwMDAwMDAwMDAwMDAwMDMgUjA5OiAwMDAwMDAwMDAw MDBjMDAwClIxMDogMDAwMDAwMDAwMDAwZjAwMCBSMTE6IDAwMDAwMDAwMDAwMDAwMDAgUjEyOiBm ZmZmODg4MDVkMzJmYzAwClIxMzogZmZmZjg4ODAxMjNjNTYwOCBSMTQ6IDAwMDAwMDAwMDAwMDAw MDAgUjE1OiAwMDAwMDAwMDAwMDAwMDAxCkZTOiAgMDAwMDdmZDcwYzRkODY0MCgwMDAwKSBHUzpm ZmZmODg4MDJjNjAwMDAwKDAwMDApIGtubEdTOjAwMDAwMDAwMDAwMDAwMDAKQ1M6ICAwMDEwIERT OiAwMDAwIEVTOiAwMDAwIENSMDogMDAwMDAwMDA4MDA1MDAzMwpDUjI6IDAwMDAwMDFiMmMxMzYw MDAgQ1IzOiAwMDAwMDAwMDViMmEwMDAwIENSNDogMDAwMDAwMDAwMDc1MGVmMApEUjA6IDAwMDAw MDAwMDAwMDAwMDAgRFIxOiAwMDAwMDAwMDAwMDAwMDAwIERSMjogMDAwMDAwMDAwMDAwMDAwMApE UjM6IDAwMDAwMDAwMDAwMDAwMDAgRFI2OiAwMDAwMDAwMGZmZmUwZmYwIERSNzogMDAwMDAwMDAw MDAwMDQwMApQS1JVOiA1NTU1NTU1NApDYWxsIFRyYWNlOgogPFRBU0s+CiBzZWN1cml0eV9wYXRo X3JlbmFtZSsweDEyNC8weDIzMCBzZWN1cml0eS9zZWN1cml0eS5jOjE4MjgKIGRvX3JlbmFtZWF0 MisweDlmNi8weGQzMCBmcy9uYW1laS5jOjQ5ODMKIF9fZG9fc3lzX3JlbmFtZSBmcy9uYW1laS5j OjUwNDIgW2lubGluZV0KIF9fc2Vfc3lzX3JlbmFtZSBmcy9uYW1laS5jOjUwNDAgW2lubGluZV0K IF9feDY0X3N5c19yZW5hbWUrMHg4MS8weGEwIGZzL25hbWVpLmM6NTA0MAogZG9fc3lzY2FsbF94 NjQgYXJjaC94ODYvZW50cnkvY29tbW9uLmM6NTIgW2lubGluZV0KIGRvX3N5c2NhbGxfNjQrMHg0 My8weDEyMCBhcmNoL3g4Ni9lbnRyeS9jb21tb24uYzo4MwogZW50cnlfU1lTQ0FMTF82NF9hZnRl cl9od2ZyYW1lKzB4NmYvMHg3NwpSSVA6IDAwMzM6MHg3ZmQ3MGI2OTAwZWQKQ29kZTogYzMgZTgg OTcgMmIgMDAgMDAgMGYgMWYgODAgMDAgMDAgMDAgMDAgZjMgMGYgMWUgZmEgNDggODkgZjggNDgg ODkgZjcgNDggODkgZDYgNDggODkgY2EgNGQgODkgYzIgNGQgODkgYzggNGMgOGIgNGMgMjQgMDgg MGYgMDUgPDQ4PiAzZCAwMSBmMCBmZiBmZiA3MyAwMSBjMyA0OCBjNyBjMSBiMCBmZiBmZiBmZiBm NyBkOCA2NCA4OSAwMSA0OApSU1A6IDAwMmI6MDAwMDdmZDcwYzRkODAyOCBFRkxBR1M6IDAwMDAw MjQ2IE9SSUdfUkFYOiAwMDAwMDAwMDAwMDAwMDUyClJBWDogZmZmZmZmZmZmZmZmZmZkYSBSQlg6 IDAwMDA3ZmQ3MGI3Y2JmODAgUkNYOiAwMDAwN2ZkNzBiNjkwMGVkClJEWDogMDAwMDAwMDAwMDAw MDAwMCBSU0k6IDAwMDAwMDAwMjAwMDAxNDAgUkRJOiAwMDAwMDAwMDIwMDAwMTAwClJCUDogMDAw MDdmZDcwYjZmMTRhNiBSMDg6IDAwMDAwMDAwMDAwMDAwMDAgUjA5OiAwMDAwMDAwMDAwMDAwMDAw ClIxMDogMDAwMDAwMDAwMDAwMDAwMCBSMTE6IDAwMDAwMDAwMDAwMDAyNDYgUjEyOiAwMDAwMDAw MDAwMDAwMDAwClIxMzogMDAwMDAwMDAwMDAwMDAwYiBSMTQ6IDAwMDA3ZmQ3MGI3Y2JmODAgUjE1 OiAwMDAwN2ZkNzBjNGI4MDAwCiA8L1RBU0s+CgpUaGFuayB5b3UgZm9yIHRha2luZyB0aGUgdGlt ZSB0byByZWFkIHRoaXMgZW1haWwgYW5kIHdlIGxvb2sgZm9yd2FyZCB0byB3b3JraW5nIHdpdGgg eW91IGZ1cnRoZXIuCgoKCgoKCgoKCg== ------=ALIBOUNDARY_60289_7f560532d700_662db8a6_6bf5ad Content-Type: application/octet-stream Content-Disposition: attachment; filename="=?UTF-8?B?cG9jLmM=?=" Content-Transfer-Encoding: base64 Ly8gYXV0b2dlbmVyYXRlZCBieSBzeXprYWxsZXIgKGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUv c3l6a2FsbGVyKQoKI2RlZmluZSBfR05VX1NPVVJDRQoKI2luY2x1ZGUgPGVuZGlhbi5oPgojaW5j bHVkZSA8ZXJybm8uaD4KI2luY2x1ZGUgPGZjbnRsLmg+CiNpbmNsdWRlIDxzZXRqbXAuaD4KI2lu Y2x1ZGUgPHN0ZGJvb2wuaD4KI2luY2x1ZGUgPHN0ZGRlZi5oPgojaW5jbHVkZSA8c3RkaW50Lmg+ CiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxzdHJpbmcu aD4KI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgojaW5jbHVkZSA8c3lzL21tYW4uaD4KI2luY2x1ZGUg PHN5cy9tb3VudC5oPgojaW5jbHVkZSA8c3lzL3N0YXQuaD4KI2luY2x1ZGUgPHN5cy9zeXNjYWxs Lmg+CiNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgoKI2luY2x1ZGUg PGxpbnV4L2xvb3AuaD4KCiNpZm5kZWYgX19OUl9sYW5kbG9ja19jcmVhdGVfcnVsZXNldAojZGVm aW5lIF9fTlJfbGFuZGxvY2tfY3JlYXRlX3J1bGVzZXQgNDQ0CiNlbmRpZgojaWZuZGVmIF9fTlJf bGFuZGxvY2tfcmVzdHJpY3Rfc2VsZgojZGVmaW5lIF9fTlJfbGFuZGxvY2tfcmVzdHJpY3Rfc2Vs ZiA0NDYKI2VuZGlmCiNpZm5kZWYgX19OUl9tZW1mZF9jcmVhdGUKI2RlZmluZSBfX05SX21lbWZk X2NyZWF0ZSAzMTkKI2VuZGlmCgpzdGF0aWMgdW5zaWduZWQgbG9uZyBsb25nIHByb2NpZDsKCi8v JSBUaGlzIGNvZGUgaXMgZGVyaXZlZCBmcm9tIHB1ZmYue2MsaH0sIGZvdW5kIGluIHRoZSB6bGli IGRldmVsb3BtZW50LiBUaGUKLy8lIG9yaWdpbmFsIGZpbGVzIGNvbWUgd2l0aCB0aGUgZm9sbG93 aW5nIGNvcHlyaWdodCBub3RpY2U6CgovLyUgQ29weXJpZ2h0IChDKSAyMDAyLTIwMTMgTWFyayBB ZGxlciwgYWxsIHJpZ2h0cyByZXNlcnZlZAovLyUgdmVyc2lvbiAyLjMsIDIxIEphbiAyMDEzCi8v JSBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mg b3IgaW1wbGllZAovLyUgd2FycmFudHkuICBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3IgYmUg aGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzCi8vJSBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0 aGlzIHNvZnR3YXJlLgovLyUgUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2Ug dGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UsCi8vJSBpbmNsdWRpbmcgY29tbWVyY2lhbCBh cHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0Ci8vJSBmcmVl bHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6Ci8vJSAxLiBUaGUgb3Jp Z2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0 IG5vdAovLyUgICAgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJ ZiB5b3UgdXNlIHRoaXMgc29mdHdhcmUKLy8lICAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVk Z21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZQovLyUgICAgYXBwcmVj aWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC4KLy8lIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25z IG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlCi8vJSAgICBt aXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuCi8vJSAzLiBUaGlz IG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlz dHJpYnV0aW9uLgovLyUgTWFyayBBZGxlciAgICBtYWRsZXJAYWx1bW5pLmNhbHRlY2guZWR1Cgov LyUgQkVHSU4gQ09ERSBERVJJVkVEIEZST00gcHVmZi57YyxofQoKI2RlZmluZSBNQVhCSVRTIDE1 CiNkZWZpbmUgTUFYTENPREVTIDI4NgojZGVmaW5lIE1BWERDT0RFUyAzMAojZGVmaW5lIE1BWENP REVTIChNQVhMQ09ERVMgKyBNQVhEQ09ERVMpCiNkZWZpbmUgRklYTENPREVTIDI4OAoKc3RydWN0 IHB1ZmZfc3RhdGUgewogIHVuc2lnbmVkIGNoYXIqIG91dDsKICB1bnNpZ25lZCBsb25nIG91dGxl bjsKICB1bnNpZ25lZCBsb25nIG91dGNudDsKICBjb25zdCB1bnNpZ25lZCBjaGFyKiBpbjsKICB1 bnNpZ25lZCBsb25nIGlubGVuOwogIHVuc2lnbmVkIGxvbmcgaW5jbnQ7CiAgaW50IGJpdGJ1ZjsK ICBpbnQgYml0Y250OwogIGptcF9idWYgZW52Owp9OwpzdGF0aWMgaW50IHB1ZmZfYml0cyhzdHJ1 Y3QgcHVmZl9zdGF0ZSogcywgaW50IG5lZWQpCnsKICBsb25nIHZhbCA9IHMtPmJpdGJ1ZjsKICB3 aGlsZSAocy0+Yml0Y250IDwgbmVlZCkgewogICAgaWYgKHMtPmluY250ID09IHMtPmlubGVuKQog ICAgICBsb25nam1wKHMtPmVudiwgMSk7CiAgICB2YWwgfD0gKGxvbmcpKHMtPmluW3MtPmluY250 KytdKSA8PCBzLT5iaXRjbnQ7CiAgICBzLT5iaXRjbnQgKz0gODsKICB9CiAgcy0+Yml0YnVmID0g KGludCkodmFsID4+IG5lZWQpOwogIHMtPmJpdGNudCAtPSBuZWVkOwogIHJldHVybiAoaW50KSh2 YWwgJiAoKDFMIDw8IG5lZWQpIC0gMSkpOwp9CnN0YXRpYyBpbnQgcHVmZl9zdG9yZWQoc3RydWN0 IHB1ZmZfc3RhdGUqIHMpCnsKICBzLT5iaXRidWYgPSAwOwogIHMtPmJpdGNudCA9IDA7CiAgaWYg KHMtPmluY250ICsgNCA+IHMtPmlubGVuKQogICAgcmV0dXJuIDI7CiAgdW5zaWduZWQgbGVuID0g cy0+aW5bcy0+aW5jbnQrK107CiAgbGVuIHw9IHMtPmluW3MtPmluY250KytdIDw8IDg7CiAgaWYg KHMtPmluW3MtPmluY250KytdICE9ICh+bGVuICYgMHhmZikgfHwKICAgICAgcy0+aW5bcy0+aW5j bnQrK10gIT0gKCh+bGVuID4+IDgpICYgMHhmZikpCiAgICByZXR1cm4gLTI7CiAgaWYgKHMtPmlu Y250ICsgbGVuID4gcy0+aW5sZW4pCiAgICByZXR1cm4gMjsKICBpZiAocy0+b3V0Y250ICsgbGVu ID4gcy0+b3V0bGVuKQogICAgcmV0dXJuIDE7CiAgZm9yICg7IGxlbi0tOyBzLT5vdXRjbnQrKywg cy0+aW5jbnQrKykgewogICAgaWYgKHMtPmluW3MtPmluY250XSkKICAgICAgcy0+b3V0W3MtPm91 dGNudF0gPSBzLT5pbltzLT5pbmNudF07CiAgfQogIHJldHVybiAwOwp9CnN0cnVjdCBwdWZmX2h1 ZmZtYW4gewogIHNob3J0KiBjb3VudDsKICBzaG9ydCogc3ltYm9sOwp9OwpzdGF0aWMgaW50IHB1 ZmZfZGVjb2RlKHN0cnVjdCBwdWZmX3N0YXRlKiBzLCBjb25zdCBzdHJ1Y3QgcHVmZl9odWZmbWFu KiBoKQp7CiAgaW50IGZpcnN0ID0gMDsKICBpbnQgaW5kZXggPSAwOwogIGludCBiaXRidWYgPSBz LT5iaXRidWY7CiAgaW50IGxlZnQgPSBzLT5iaXRjbnQ7CiAgaW50IGNvZGUgPSBmaXJzdCA9IGlu ZGV4ID0gMDsKICBpbnQgbGVuID0gMTsKICBzaG9ydCogbmV4dCA9IGgtPmNvdW50ICsgMTsKICB3 aGlsZSAoMSkgewogICAgd2hpbGUgKGxlZnQtLSkgewogICAgICBjb2RlIHw9IGJpdGJ1ZiAmIDE7 CiAgICAgIGJpdGJ1ZiA+Pj0gMTsKICAgICAgaW50IGNvdW50ID0gKm5leHQrKzsKICAgICAgaWYg KGNvZGUgLSBjb3VudCA8IGZpcnN0KSB7CiAgICAgICAgcy0+Yml0YnVmID0gYml0YnVmOwogICAg ICAgIHMtPmJpdGNudCA9IChzLT5iaXRjbnQgLSBsZW4pICYgNzsKICAgICAgICByZXR1cm4gaC0+ c3ltYm9sW2luZGV4ICsgKGNvZGUgLSBmaXJzdCldOwogICAgICB9CiAgICAgIGluZGV4ICs9IGNv dW50OwogICAgICBmaXJzdCArPSBjb3VudDsKICAgICAgZmlyc3QgPDw9IDE7CiAgICAgIGNvZGUg PDw9IDE7CiAgICAgIGxlbisrOwogICAgfQogICAgbGVmdCA9IChNQVhCSVRTICsgMSkgLSBsZW47 CiAgICBpZiAobGVmdCA9PSAwKQogICAgICBicmVhazsKICAgIGlmIChzLT5pbmNudCA9PSBzLT5p bmxlbikKICAgICAgbG9uZ2ptcChzLT5lbnYsIDEpOwogICAgYml0YnVmID0gcy0+aW5bcy0+aW5j bnQrK107CiAgICBpZiAobGVmdCA+IDgpCiAgICAgIGxlZnQgPSA4OwogIH0KICByZXR1cm4gLTEw Owp9CnN0YXRpYyBpbnQgcHVmZl9jb25zdHJ1Y3Qoc3RydWN0IHB1ZmZfaHVmZm1hbiogaCwgY29u c3Qgc2hvcnQqIGxlbmd0aCwgaW50IG4pCnsKICBpbnQgbGVuOwogIGZvciAobGVuID0gMDsgbGVu IDw9IE1BWEJJVFM7IGxlbisrKQogICAgaC0+Y291bnRbbGVuXSA9IDA7CiAgaW50IHN5bWJvbDsK ICBmb3IgKHN5bWJvbCA9IDA7IHN5bWJvbCA8IG47IHN5bWJvbCsrKQogICAgKGgtPmNvdW50W2xl bmd0aFtzeW1ib2xdXSkrKzsKICBpZiAoaC0+Y291bnRbMF0gPT0gbikKICAgIHJldHVybiAwOwog IGludCBsZWZ0ID0gMTsKICBmb3IgKGxlbiA9IDE7IGxlbiA8PSBNQVhCSVRTOyBsZW4rKykgewog ICAgbGVmdCA8PD0gMTsKICAgIGxlZnQgLT0gaC0+Y291bnRbbGVuXTsKICAgIGlmIChsZWZ0IDwg MCkKICAgICAgcmV0dXJuIGxlZnQ7CiAgfQogIHNob3J0IG9mZnNbTUFYQklUUyArIDFdOwogIG9m ZnNbMV0gPSAwOwogIGZvciAobGVuID0gMTsgbGVuIDwgTUFYQklUUzsgbGVuKyspCiAgICBvZmZz W2xlbiArIDFdID0gb2Zmc1tsZW5dICsgaC0+Y291bnRbbGVuXTsKICBmb3IgKHN5bWJvbCA9IDA7 IHN5bWJvbCA8IG47IHN5bWJvbCsrKQogICAgaWYgKGxlbmd0aFtzeW1ib2xdICE9IDApCiAgICAg IGgtPnN5bWJvbFtvZmZzW2xlbmd0aFtzeW1ib2xdXSsrXSA9IHN5bWJvbDsKICByZXR1cm4gbGVm dDsKfQpzdGF0aWMgaW50IHB1ZmZfY29kZXMoc3RydWN0IHB1ZmZfc3RhdGUqIHMsIGNvbnN0IHN0 cnVjdCBwdWZmX2h1ZmZtYW4qIGxlbmNvZGUsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz dHJ1Y3QgcHVmZl9odWZmbWFuKiBkaXN0Y29kZSkKewogIHN0YXRpYyBjb25zdCBzaG9ydCBsZW5z WzI5XSA9IHszLCAgNCwgIDUsICA2LCAgIDcsICAgOCwgICA5LCAgIDEwLCAgMTEsIDEzLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNSwgMTcsIDE5LCAyMywgIDI3LCAgMzEsICAz NSwgIDQzLCAgNTEsIDU5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA2NywgODMs IDk5LCAxMTUsIDEzMSwgMTYzLCAxOTUsIDIyNywgMjU4fTsKICBzdGF0aWMgY29uc3Qgc2hvcnQg bGV4dFsyOV0gPSB7MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMSwgMSwgMSwgMiwgMiwgMiwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiwgMywgMywgMywgMywgNCwgNCwgNCwg NCwgNSwgNSwgNSwgNSwgMH07CiAgc3RhdGljIGNvbnN0IHNob3J0IGRpc3RzWzMwXSA9IHsKICAg ICAgMSwgICAgMiwgICAgMywgICAgNCwgICAgNSwgICAgNywgICAgOSwgICAgMTMsICAgIDE3LCAg ICAyNSwKICAgICAgMzMsICAgNDksICAgNjUsICAgOTcsICAgMTI5LCAgMTkzLCAgMjU3LCAgMzg1 LCAgIDUxMywgICA3NjksCiAgICAgIDEwMjUsIDE1MzcsIDIwNDksIDMwNzMsIDQwOTcsIDYxNDUs IDgxOTMsIDEyMjg5LCAxNjM4NSwgMjQ1Nzd9OwogIHN0YXRpYyBjb25zdCBzaG9ydCBkZXh0WzMw XSA9IHswLCAwLCAwLCAgMCwgIDEsICAxLCAgMiwgIDIsICAzLCAgMywKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgNCwgNCwgNSwgIDUsICA2LCAgNiwgIDcsICA3LCAgOCwgIDgsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDksIDksIDEwLCAxMCwgMTEsIDExLCAxMiwg MTIsIDEzLCAxM307CiAgaW50IHN5bWJvbDsKICBkbyB7CiAgICBzeW1ib2wgPSBwdWZmX2RlY29k ZShzLCBsZW5jb2RlKTsKICAgIGlmIChzeW1ib2wgPCAwKQogICAgICByZXR1cm4gc3ltYm9sOwog ICAgaWYgKHN5bWJvbCA8IDI1NikgewogICAgICBpZiAocy0+b3V0Y250ID09IHMtPm91dGxlbikK ICAgICAgICByZXR1cm4gMTsKICAgICAgaWYgKHN5bWJvbCkKICAgICAgICBzLT5vdXRbcy0+b3V0 Y250XSA9IHN5bWJvbDsKICAgICAgcy0+b3V0Y250Kys7CiAgICB9IGVsc2UgaWYgKHN5bWJvbCA+ IDI1NikgewogICAgICBzeW1ib2wgLT0gMjU3OwogICAgICBpZiAoc3ltYm9sID49IDI5KQogICAg ICAgIHJldHVybiAtMTA7CiAgICAgIGludCBsZW4gPSBsZW5zW3N5bWJvbF0gKyBwdWZmX2JpdHMo cywgbGV4dFtzeW1ib2xdKTsKICAgICAgc3ltYm9sID0gcHVmZl9kZWNvZGUocywgZGlzdGNvZGUp OwogICAgICBpZiAoc3ltYm9sIDwgMCkKICAgICAgICByZXR1cm4gc3ltYm9sOwogICAgICB1bnNp Z25lZCBkaXN0ID0gZGlzdHNbc3ltYm9sXSArIHB1ZmZfYml0cyhzLCBkZXh0W3N5bWJvbF0pOwog ICAgICBpZiAoZGlzdCA+IHMtPm91dGNudCkKICAgICAgICByZXR1cm4gLTExOwogICAgICBpZiAo cy0+b3V0Y250ICsgbGVuID4gcy0+b3V0bGVuKQogICAgICAgIHJldHVybiAxOwogICAgICB3aGls ZSAobGVuLS0pIHsKICAgICAgICBpZiAoZGlzdCA8PSBzLT5vdXRjbnQgJiYgcy0+b3V0W3MtPm91 dGNudCAtIGRpc3RdKQogICAgICAgICAgcy0+b3V0W3MtPm91dGNudF0gPSBzLT5vdXRbcy0+b3V0 Y250IC0gZGlzdF07CiAgICAgICAgcy0+b3V0Y250Kys7CiAgICAgIH0KICAgIH0KICB9IHdoaWxl IChzeW1ib2wgIT0gMjU2KTsKICByZXR1cm4gMDsKfQpzdGF0aWMgaW50IHB1ZmZfZml4ZWQoc3Ry dWN0IHB1ZmZfc3RhdGUqIHMpCnsKICBzdGF0aWMgaW50IHZpcmdpbiA9IDE7CiAgc3RhdGljIHNo b3J0IGxlbmNudFtNQVhCSVRTICsgMV0sIGxlbnN5bVtGSVhMQ09ERVNdOwogIHN0YXRpYyBzaG9y dCBkaXN0Y250W01BWEJJVFMgKyAxXSwgZGlzdHN5bVtNQVhEQ09ERVNdOwogIHN0YXRpYyBzdHJ1 Y3QgcHVmZl9odWZmbWFuIGxlbmNvZGUsIGRpc3Rjb2RlOwogIGlmICh2aXJnaW4pIHsKICAgIGxl bmNvZGUuY291bnQgPSBsZW5jbnQ7CiAgICBsZW5jb2RlLnN5bWJvbCA9IGxlbnN5bTsKICAgIGRp c3Rjb2RlLmNvdW50ID0gZGlzdGNudDsKICAgIGRpc3Rjb2RlLnN5bWJvbCA9IGRpc3RzeW07CiAg ICBzaG9ydCBsZW5ndGhzW0ZJWExDT0RFU107CiAgICBpbnQgc3ltYm9sOwogICAgZm9yIChzeW1i b2wgPSAwOyBzeW1ib2wgPCAxNDQ7IHN5bWJvbCsrKQogICAgICBsZW5ndGhzW3N5bWJvbF0gPSA4 OwogICAgZm9yICg7IHN5bWJvbCA8IDI1Njsgc3ltYm9sKyspCiAgICAgIGxlbmd0aHNbc3ltYm9s XSA9IDk7CiAgICBmb3IgKDsgc3ltYm9sIDwgMjgwOyBzeW1ib2wrKykKICAgICAgbGVuZ3Roc1tz eW1ib2xdID0gNzsKICAgIGZvciAoOyBzeW1ib2wgPCBGSVhMQ09ERVM7IHN5bWJvbCsrKQogICAg ICBsZW5ndGhzW3N5bWJvbF0gPSA4OwogICAgcHVmZl9jb25zdHJ1Y3QoJmxlbmNvZGUsIGxlbmd0 aHMsIEZJWExDT0RFUyk7CiAgICBmb3IgKHN5bWJvbCA9IDA7IHN5bWJvbCA8IE1BWERDT0RFUzsg c3ltYm9sKyspCiAgICAgIGxlbmd0aHNbc3ltYm9sXSA9IDU7CiAgICBwdWZmX2NvbnN0cnVjdCgm ZGlzdGNvZGUsIGxlbmd0aHMsIE1BWERDT0RFUyk7CiAgICB2aXJnaW4gPSAwOwogIH0KICByZXR1 cm4gcHVmZl9jb2RlcyhzLCAmbGVuY29kZSwgJmRpc3Rjb2RlKTsKfQpzdGF0aWMgaW50IHB1ZmZf ZHluYW1pYyhzdHJ1Y3QgcHVmZl9zdGF0ZSogcykKewogIHN0YXRpYyBjb25zdCBzaG9ydCBvcmRl clsxOV0gPSB7MTYsIDE3LCAxOCwgMCwgOCwgIDcsIDksICA2LCAxMCwgNSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDExLCA0LCAgMTIsIDMsIDEzLCAyLCAxNCwgMSwgMTV9Owog IGludCBubGVuID0gcHVmZl9iaXRzKHMsIDUpICsgMjU3OwogIGludCBuZGlzdCA9IHB1ZmZfYml0 cyhzLCA1KSArIDE7CiAgaW50IG5jb2RlID0gcHVmZl9iaXRzKHMsIDQpICsgNDsKICBpZiAobmxl biA+IE1BWExDT0RFUyB8fCBuZGlzdCA+IE1BWERDT0RFUykKICAgIHJldHVybiAtMzsKICBzaG9y dCBsZW5ndGhzW01BWENPREVTXTsKICBpbnQgaW5kZXg7CiAgZm9yIChpbmRleCA9IDA7IGluZGV4 IDwgbmNvZGU7IGluZGV4KyspCiAgICBsZW5ndGhzW29yZGVyW2luZGV4XV0gPSBwdWZmX2JpdHMo cywgMyk7CiAgZm9yICg7IGluZGV4IDwgMTk7IGluZGV4KyspCiAgICBsZW5ndGhzW29yZGVyW2lu ZGV4XV0gPSAwOwogIHNob3J0IGxlbmNudFtNQVhCSVRTICsgMV0sIGxlbnN5bVtNQVhMQ09ERVNd OwogIHN0cnVjdCBwdWZmX2h1ZmZtYW4gbGVuY29kZSA9IHtsZW5jbnQsIGxlbnN5bX07CiAgaW50 IGVyciA9IHB1ZmZfY29uc3RydWN0KCZsZW5jb2RlLCBsZW5ndGhzLCAxOSk7CiAgaWYgKGVyciAh PSAwKQogICAgcmV0dXJuIC00OwogIGluZGV4ID0gMDsKICB3aGlsZSAoaW5kZXggPCBubGVuICsg bmRpc3QpIHsKICAgIGludCBzeW1ib2w7CiAgICBpbnQgbGVuOwogICAgc3ltYm9sID0gcHVmZl9k ZWNvZGUocywgJmxlbmNvZGUpOwogICAgaWYgKHN5bWJvbCA8IDApCiAgICAgIHJldHVybiBzeW1i b2w7CiAgICBpZiAoc3ltYm9sIDwgMTYpCiAgICAgIGxlbmd0aHNbaW5kZXgrK10gPSBzeW1ib2w7 CiAgICBlbHNlIHsKICAgICAgbGVuID0gMDsKICAgICAgaWYgKHN5bWJvbCA9PSAxNikgewogICAg ICAgIGlmIChpbmRleCA9PSAwKQogICAgICAgICAgcmV0dXJuIC01OwogICAgICAgIGxlbiA9IGxl bmd0aHNbaW5kZXggLSAxXTsKICAgICAgICBzeW1ib2wgPSAzICsgcHVmZl9iaXRzKHMsIDIpOwog ICAgICB9IGVsc2UgaWYgKHN5bWJvbCA9PSAxNykKICAgICAgICBzeW1ib2wgPSAzICsgcHVmZl9i aXRzKHMsIDMpOwogICAgICBlbHNlCiAgICAgICAgc3ltYm9sID0gMTEgKyBwdWZmX2JpdHMocywg Nyk7CiAgICAgIGlmIChpbmRleCArIHN5bWJvbCA+IG5sZW4gKyBuZGlzdCkKICAgICAgICByZXR1 cm4gLTY7CiAgICAgIHdoaWxlIChzeW1ib2wtLSkKICAgICAgICBsZW5ndGhzW2luZGV4KytdID0g bGVuOwogICAgfQogIH0KICBpZiAobGVuZ3Roc1syNTZdID09IDApCiAgICByZXR1cm4gLTk7CiAg ZXJyID0gcHVmZl9jb25zdHJ1Y3QoJmxlbmNvZGUsIGxlbmd0aHMsIG5sZW4pOwogIGlmIChlcnIg JiYgKGVyciA8IDAgfHwgbmxlbiAhPSBsZW5jb2RlLmNvdW50WzBdICsgbGVuY29kZS5jb3VudFsx XSkpCiAgICByZXR1cm4gLTc7CiAgc2hvcnQgZGlzdGNudFtNQVhCSVRTICsgMV0sIGRpc3RzeW1b TUFYRENPREVTXTsKICBzdHJ1Y3QgcHVmZl9odWZmbWFuIGRpc3Rjb2RlID0ge2Rpc3RjbnQsIGRp c3RzeW19OwogIGVyciA9IHB1ZmZfY29uc3RydWN0KCZkaXN0Y29kZSwgbGVuZ3RocyArIG5sZW4s IG5kaXN0KTsKICBpZiAoZXJyICYmIChlcnIgPCAwIHx8IG5kaXN0ICE9IGRpc3Rjb2RlLmNvdW50 WzBdICsgZGlzdGNvZGUuY291bnRbMV0pKQogICAgcmV0dXJuIC04OwogIHJldHVybiBwdWZmX2Nv ZGVzKHMsICZsZW5jb2RlLCAmZGlzdGNvZGUpOwp9CnN0YXRpYyBpbnQgcHVmZih1bnNpZ25lZCBj aGFyKiBkZXN0LCB1bnNpZ25lZCBsb25nKiBkZXN0bGVuLAogICAgICAgICAgICAgICAgY29uc3Qg dW5zaWduZWQgY2hhciogc291cmNlLCB1bnNpZ25lZCBsb25nIHNvdXJjZWxlbikKewogIHN0cnVj dCBwdWZmX3N0YXRlIHMgPSB7CiAgICAgIC5vdXQgPSBkZXN0LAogICAgICAub3V0bGVuID0gKmRl c3RsZW4sCiAgICAgIC5vdXRjbnQgPSAwLAogICAgICAuaW4gPSBzb3VyY2UsCiAgICAgIC5pbmxl biA9IHNvdXJjZWxlbiwKICAgICAgLmluY250ID0gMCwKICAgICAgLmJpdGJ1ZiA9IDAsCiAgICAg IC5iaXRjbnQgPSAwLAogIH07CiAgaW50IGVycjsKICBpZiAoc2V0am1wKHMuZW52KSAhPSAwKQog ICAgZXJyID0gMjsKICBlbHNlIHsKICAgIGludCBsYXN0OwogICAgZG8gewogICAgICBsYXN0ID0g cHVmZl9iaXRzKCZzLCAxKTsKICAgICAgaW50IHR5cGUgPSBwdWZmX2JpdHMoJnMsIDIpOwogICAg ICBlcnIgPSB0eXBlID09IDAgPyBwdWZmX3N0b3JlZCgmcykKICAgICAgICAgICAgICAgICAgICAg IDogKHR5cGUgPT0gMSA/IHB1ZmZfZml4ZWQoJnMpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOiAodHlwZSA9PSAyID8gcHVmZl9keW5hbWljKCZzKSA6IC0xKSk7CiAgICAgIGlm IChlcnIgIT0gMCkKICAgICAgICBicmVhazsKICAgIH0gd2hpbGUgKCFsYXN0KTsKICB9CiAgKmRl c3RsZW4gPSBzLm91dGNudDsKICByZXR1cm4gZXJyOwp9CgovLyUgRU5EIENPREUgREVSSVZFRCBG Uk9NIHB1ZmYue2MsaH0KCiNkZWZpbmUgWkxJQl9IRUFERVJfV0lEVEggMgoKc3RhdGljIGludCBw dWZmX3psaWJfdG9fZmlsZShjb25zdCB1bnNpZ25lZCBjaGFyKiBzb3VyY2UsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzb3VyY2VsZW4sIGludCBkZXN0X2ZkKQp7 CiAgaWYgKHNvdXJjZWxlbiA8IFpMSUJfSEVBREVSX1dJRFRIKQogICAgcmV0dXJuIDA7CiAgc291 cmNlICs9IFpMSUJfSEVBREVSX1dJRFRIOwogIHNvdXJjZWxlbiAtPSBaTElCX0hFQURFUl9XSURU SDsKICBjb25zdCB1bnNpZ25lZCBsb25nIG1heF9kZXN0bGVuID0gMTMyIDw8IDIwOwogIHZvaWQq IHJldCA9IG1tYXAoMCwgbWF4X2Rlc3RsZW4sIFBST1RfV1JJVEUgfCBQUk9UX1JFQUQsCiAgICAg ICAgICAgICAgICAgICBNQVBfUFJJVkFURSB8IE1BUF9BTk9OLCAtMSwgMCk7CiAgaWYgKHJldCA9 PSBNQVBfRkFJTEVEKQogICAgcmV0dXJuIC0xOwogIHVuc2lnbmVkIGNoYXIqIGRlc3QgPSAodW5z aWduZWQgY2hhciopcmV0OwogIHVuc2lnbmVkIGxvbmcgZGVzdGxlbiA9IG1heF9kZXN0bGVuOwog IGludCBlcnIgPSBwdWZmKGRlc3QsICZkZXN0bGVuLCBzb3VyY2UsIHNvdXJjZWxlbik7CiAgaWYg KGVycikgewogICAgbXVubWFwKGRlc3QsIG1heF9kZXN0bGVuKTsKICAgIGVycm5vID0gLWVycjsK ICAgIHJldHVybiAtMTsKICB9CiAgaWYgKHdyaXRlKGRlc3RfZmQsIGRlc3QsIGRlc3RsZW4pICE9 IChzc2l6ZV90KWRlc3RsZW4pIHsKICAgIG11bm1hcChkZXN0LCBtYXhfZGVzdGxlbik7CiAgICBy ZXR1cm4gLTE7CiAgfQogIHJldHVybiBtdW5tYXAoZGVzdCwgbWF4X2Rlc3RsZW4pOwp9CgpzdGF0 aWMgaW50IHNldHVwX2xvb3BfZGV2aWNlKHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxv bmcgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBsb29wbmFt ZSwgaW50KiBsb29wZmRfcCkKewogIGludCBlcnIgPSAwLCBsb29wZmQgPSAtMTsKICBpbnQgbWVt ZmQgPSBzeXNjYWxsKF9fTlJfbWVtZmRfY3JlYXRlLCAic3l6a2FsbGVyIiwgMCk7CiAgaWYgKG1l bWZkID09IC0xKSB7CiAgICBlcnIgPSBlcnJubzsKICAgIGdvdG8gZXJyb3I7CiAgfQogIGlmIChw dWZmX3psaWJfdG9fZmlsZShkYXRhLCBzaXplLCBtZW1mZCkpIHsKICAgIGVyciA9IGVycm5vOwog ICAgZ290byBlcnJvcl9jbG9zZV9tZW1mZDsKICB9CiAgbG9vcGZkID0gb3Blbihsb29wbmFtZSwg T19SRFdSKTsKICBpZiAobG9vcGZkID09IC0xKSB7CiAgICBlcnIgPSBlcnJubzsKICAgIGdvdG8g ZXJyb3JfY2xvc2VfbWVtZmQ7CiAgfQogIGlmIChpb2N0bChsb29wZmQsIExPT1BfU0VUX0ZELCBt ZW1mZCkpIHsKICAgIGlmIChlcnJubyAhPSBFQlVTWSkgewogICAgICBlcnIgPSBlcnJubzsKICAg ICAgZ290byBlcnJvcl9jbG9zZV9sb29wOwogICAgfQogICAgaW9jdGwobG9vcGZkLCBMT09QX0NM Ul9GRCwgMCk7CiAgICB1c2xlZXAoMTAwMCk7CiAgICBpZiAoaW9jdGwobG9vcGZkLCBMT09QX1NF VF9GRCwgbWVtZmQpKSB7CiAgICAgIGVyciA9IGVycm5vOwogICAgICBnb3RvIGVycm9yX2Nsb3Nl X2xvb3A7CiAgICB9CiAgfQogIGNsb3NlKG1lbWZkKTsKICAqbG9vcGZkX3AgPSBsb29wZmQ7CiAg cmV0dXJuIDA7CgplcnJvcl9jbG9zZV9sb29wOgogIGNsb3NlKGxvb3BmZCk7CmVycm9yX2Nsb3Nl X21lbWZkOgogIGNsb3NlKG1lbWZkKTsKZXJyb3I6CiAgZXJybm8gPSBlcnI7CiAgcmV0dXJuIC0x Owp9CgpzdGF0aWMgdm9pZCByZXNldF9sb29wX2RldmljZShjb25zdCBjaGFyKiBsb29wbmFtZSkK ewogIGludCBsb29wZmQgPSBvcGVuKGxvb3BuYW1lLCBPX1JEV1IpOwogIGlmIChsb29wZmQgPT0g LTEpIHsKICAgIHJldHVybjsKICB9CiAgaWYgKGlvY3RsKGxvb3BmZCwgTE9PUF9DTFJfRkQsIDAp KSB7CiAgfQogIGNsb3NlKGxvb3BmZCk7Cn0KCnN0YXRpYyBsb25nIHN5el9tb3VudF9pbWFnZSh2 b2xhdGlsZSBsb25nIGZzYXJnLCB2b2xhdGlsZSBsb25nIGRpciwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHZvbGF0aWxlIGxvbmcgZmxhZ3MsIHZvbGF0aWxlIGxvbmcgb3B0c2FyZywKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHZvbGF0aWxlIGxvbmcgY2hhbmdlX2RpciwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgc2l6ZSwgdm9sYXRp bGUgbG9uZyBpbWFnZSkKewogIHVuc2lnbmVkIGNoYXIqIGRhdGEgPSAodW5zaWduZWQgY2hhciop aW1hZ2U7CiAgaW50IHJlcyA9IC0xLCBlcnIgPSAwLCBuZWVkX2xvb3BfZGV2aWNlID0gISFzaXpl OwogIGNoYXIqIG1vdW50X29wdHMgPSAoY2hhciopb3B0c2FyZzsKICBjaGFyKiB0YXJnZXQgPSAo Y2hhciopZGlyOwogIGNoYXIqIGZzID0gKGNoYXIqKWZzYXJnOwogIGNoYXIqIHNvdXJjZSA9IE5V TEw7CiAgY2hhciBsb29wbmFtZVs2NF07CiAgaWYgKG5lZWRfbG9vcF9kZXZpY2UpIHsKICAgIGlu dCBsb29wZmQ7CiAgICBtZW1zZXQobG9vcG5hbWUsIDAsIHNpemVvZihsb29wbmFtZSkpOwogICAg c25wcmludGYobG9vcG5hbWUsIHNpemVvZihsb29wbmFtZSksICIvZGV2L2xvb3AlbGx1IiwgcHJv Y2lkKTsKICAgIGlmIChzZXR1cF9sb29wX2RldmljZShkYXRhLCBzaXplLCBsb29wbmFtZSwgJmxv b3BmZCkgPT0gLTEpCiAgICAgIHJldHVybiAtMTsKICAgIGNsb3NlKGxvb3BmZCk7CiAgICBzb3Vy Y2UgPSBsb29wbmFtZTsKICB9CiAgbWtkaXIodGFyZ2V0LCAwNzc3KTsKICBjaGFyIG9wdHNbMjU2 XTsKICBtZW1zZXQob3B0cywgMCwgc2l6ZW9mKG9wdHMpKTsKICBpZiAoc3RybGVuKG1vdW50X29w dHMpID4gKHNpemVvZihvcHRzKSAtIDMyKSkgewogIH0KICBzdHJuY3B5KG9wdHMsIG1vdW50X29w dHMsIHNpemVvZihvcHRzKSAtIDMyKTsKICBpZiAoc3RyY21wKGZzLCAiaXNvOTY2MCIpID09IDAp IHsKICAgIGZsYWdzIHw9IE1TX1JET05MWTsKICB9IGVsc2UgaWYgKHN0cm5jbXAoZnMsICJleHQi LCAzKSA9PSAwKSB7CiAgICBib29sIGhhc19yZW1vdW50X3JvID0gZmFsc2U7CiAgICBjaGFyKiBy ZW1vdW50X3JvX3N0YXJ0ID0gc3Ryc3RyKG9wdHMsICJlcnJvcnM9cmVtb3VudC1ybyIpOwogICAg aWYgKHJlbW91bnRfcm9fc3RhcnQgIT0gTlVMTCkgewogICAgICBjaGFyIGFmdGVyID0gKihyZW1v dW50X3JvX3N0YXJ0ICsgc3RybGVuKCJlcnJvcnM9cmVtb3VudC1ybyIpKTsKICAgICAgY2hhciBi ZWZvcmUgPSByZW1vdW50X3JvX3N0YXJ0ID09IG9wdHMgPyAnXDAnIDogKihyZW1vdW50X3JvX3N0 YXJ0IC0gMSk7CiAgICAgIGhhc19yZW1vdW50X3JvID0gKChiZWZvcmUgPT0gJ1wwJyB8fCBiZWZv cmUgPT0gJywnKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAoYWZ0ZXIgPT0gJ1wwJyB8fCBh ZnRlciA9PSAnLCcpKTsKICAgIH0KICAgIGlmIChzdHJzdHIob3B0cywgImVycm9ycz1wYW5pYyIp IHx8ICFoYXNfcmVtb3VudF9ybykKICAgICAgc3RyY2F0KG9wdHMsICIsZXJyb3JzPWNvbnRpbnVl Iik7CiAgfSBlbHNlIGlmIChzdHJjbXAoZnMsICJ4ZnMiKSA9PSAwKSB7CiAgICBzdHJjYXQob3B0 cywgIixub3V1aWQiKTsKICB9CiAgcmVzID0gbW91bnQoc291cmNlLCB0YXJnZXQsIGZzLCBmbGFn cywgb3B0cyk7CiAgaWYgKHJlcyA9PSAtMSkgewogICAgZXJyID0gZXJybm87CiAgICBnb3RvIGVy cm9yX2NsZWFyX2xvb3A7CiAgfQogIHJlcyA9IG9wZW4odGFyZ2V0LCBPX1JET05MWSB8IE9fRElS RUNUT1JZKTsKICBpZiAocmVzID09IC0xKSB7CiAgICBlcnIgPSBlcnJubzsKICAgIGdvdG8gZXJy b3JfY2xlYXJfbG9vcDsKICB9CiAgaWYgKGNoYW5nZV9kaXIpIHsKICAgIHJlcyA9IGNoZGlyKHRh cmdldCk7CiAgICBpZiAocmVzID09IC0xKSB7CiAgICAgIGVyciA9IGVycm5vOwogICAgfQogIH0K CmVycm9yX2NsZWFyX2xvb3A6CiAgaWYgKG5lZWRfbG9vcF9kZXZpY2UpCiAgICByZXNldF9sb29w X2RldmljZShsb29wbmFtZSk7CiAgZXJybm8gPSBlcnI7CiAgcmV0dXJuIHJlczsKfQoKdWludDY0 X3QgclsxXSA9IHsweGZmZmZmZmZmZmZmZmZmZmZ9OwoKaW50IG1haW4odm9pZCkKewogIHN5c2Nh bGwoX19OUl9tbWFwLCAvKmFkZHI9Ki8weDFmZmZmMDAwdWwsIC8qbGVuPSovMHgxMDAwdWwsIC8q cHJvdD0qLzB1bCwKICAgICAgICAgIC8qZmxhZ3M9TUFQX0ZJWEVEfE1BUF9BTk9OWU1PVVN8TUFQ X1BSSVZBVEUqLyAweDMydWwsIC8qZmQ9Ki8tMSwKICAgICAgICAgIC8qb2Zmc2V0PSovMHVsKTsK ICBzeXNjYWxsKF9fTlJfbW1hcCwgLyphZGRyPSovMHgyMDAwMDAwMHVsLCAvKmxlbj0qLzB4MTAw MDAwMHVsLAogICAgICAgICAgLypwcm90PVBST1RfV1JJVEV8UFJPVF9SRUFEfFBST1RfRVhFQyov IDd1bCwKICAgICAgICAgIC8qZmxhZ3M9TUFQX0ZJWEVEfE1BUF9BTk9OWU1PVVN8TUFQX1BSSVZB VEUqLyAweDMydWwsIC8qZmQ9Ki8tMSwKICAgICAgICAgIC8qb2Zmc2V0PSovMHVsKTsKICBzeXNj YWxsKF9fTlJfbW1hcCwgLyphZGRyPSovMHgyMTAwMDAwMHVsLCAvKmxlbj0qLzB4MTAwMHVsLCAv KnByb3Q9Ki8wdWwsCiAgICAgICAgICAvKmZsYWdzPU1BUF9GSVhFRHxNQVBfQU5PTllNT1VTfE1B UF9QUklWQVRFKi8gMHgzMnVsLCAvKmZkPSovLTEsCiAgICAgICAgICAvKm9mZnNldD0qLzB1bCk7 CiAgaW50cHRyX3QgcmVzID0gMDsKICBtZW1jcHkoKHZvaWQqKTB4MjAwMDAwYzAsICJoZnNwbHVz XDAwMCIsIDgpOwogIG1lbWNweSgodm9pZCopMHgyMDAwMDE4MCwgIi4vZmlsZTJcMDAwIiwgOCk7 CiAgbWVtY3B5KCh2b2lkKikweDIwMDAwMWMwLAogICAgICAgICAiXHg3MFx4NjFceDcyXHg3NFx4 M2RceDMwXHg3OFx4MzBceDMwXHgzMFx4MzBceDMwXHgzMFx4MzBceDMwXHgzMFx4MzAiCiAgICAg ICAgICJceDMwXHgzMFx4MzBceDMxXHgzOVx4NjJceDJjXHg3NVx4NmRceDYxXHg3M1x4NmJceDNk XHgzMFx4MzBceDMwXHgzMCIKICAgICAgICAgIlx4MzBceDMwXHgzMFx4MzBceDMwXHgzMFx4MzBc eDMwXHgzMFx4MzBceDMwXHgzMFx4MzBceDMwXHgzMFx4MzBceDMwIgogICAgICAgICAiXHgzMFx4 MzFceDJjXHg3MFx4NjFceDcyXHg3NFx4M2RceDMwXHg3OFx4MzBceDMwXHgzMFx4MzBceDMwXHgz MFx4MzAiCiAgICAgICAgICJceDMwXHgzMFx4MzBceDMwXHgzMFx4MzFceDMwXHgzMFx4MzFceDJj XHg2ZVx4NmZceDYyXHg2MVx4NzJceDcyXHg2OSIKICAgICAgICAgIlx4NjVceDcyXHgyY1x4NjRc eDY1XHg2M1x4NmZceDZkXHg3MFx4NmZceDczXHg2NVx4MmNceDYzXHg3Mlx4NjVceDYxIgogICAg ICAgICAiXHg3NFx4NmZceDcyXHgzZFx4MWVceGViXHgzOVx4MDdceDJjXHg2N1x4NjlceDY0XHgz ZCIsCiAgICAgICAgIDExNSk7CiAgc3ByaW50ZigoY2hhciopMHgyMDAwMDIzMywgIjB4JTAxNmxs eCIsIChsb25nIGxvbmcpMCk7CiAgbWVtY3B5KCh2b2lkKikweDIwMDAwMjQ1LCAiLGdpZD0iLCA1 KTsKICBzcHJpbnRmKChjaGFyKikweDIwMDAwMjRhLCAiMHglMDE2bGx4IiwgKGxvbmcgbG9uZykw KTsKICBtZW1jcHkoKHZvaWQqKTB4MjAwMDAyNWMsICIsbmxzPWlzbzg4NTktMyx1aWQ9IiwgMTkp OwogIHNwcmludGYoKGNoYXIqKTB4MjAwMDAyNmYsICIweCUwMTZsbHgiLCAobG9uZyBsb25nKTAp OwogIG1lbWNweSgodm9pZCopMHgyMDAwMDI4MSwKICAgICAgICAgIlx4MmNceDYzXHg3Mlx4NjVc eDYxXHg3NFx4NmZceDcyXHgzZFx4YWZceDJhXHhmZVx4MjdceDJjXHg3NVx4NmRceDYxIgogICAg ICAgICAiXHg3M1x4NmJceDNkXHgzMFx4MzBceDMwXHgzMFx4MzBceDMwXHgzMFx4MzBceDMwXHgz MFx4MzBceDMwXHgzNFx4MzAiCiAgICAgICAgICJceDMwXHgzMFx4MzBceDMwXHgzMFx4MzBceDMw XHgzMFx4MzFceDI4XHgwMCIsCiAgICAgICAgIDQ1KTsKICBtZW1jcHkoCiAgICAgICh2b2lkKikw eDIwMDAwZDQwLAogICAgICAiXHg3OFx4OWNceGVjXHhkZFx4Y2JceDZmXHgxY1x4NzdceDFkXHgw MFx4ZjBceGVmXHhjY1x4YWVceGVkXHg1ZFx4MjNceDI1IgogICAgICAiXHg0ZVx4OWJceGI0XHgw NVx4NTVceGMyXHg2YVx4NDRceDQxXHg1OFx4MjRceDdlXHhjOFx4MDVceDczXHg4OVx4NDFceDA4 IgogICAgICAiXHhmOVx4NTBceGExXHgwYVx4MGVceDljXHg1N1x4ODlceGQzXHg1OFx4ZDlceGI4 XHg5NVx4ZWRceDgyXHgxYlx4MjFceDcwIgogICAgICAiXHg3OVx4NWVceDdiXHhlOFx4MWZceDUw XHgwZVx4YmVceDcxXHg0Mlx4ZTJceDFlXHg1NFx4Y2VceDcwXHg0MVx4NzBceGI0IgogICAgICAi XHgzOFx4NTVceDQyXHhmNFx4YzJceGM5XHhlMlx4YjJceDY4XHgxZVx4YmJceGRlXHg3OFx4Nzdc eGVkXHhkZFx4MzhceGYxIgogICAgICAiXHhjNlx4ZjBceGY5XHg0NFx4YjNceGYzXHg5Ylx4Zjlc eGJkXHhiZlx4M2JceDMzXHhiYlx4YjNceDU2XHgzNFx4MDFceGZjIgogICAgICAiXHhkZlx4NWFc eDliXHg4Ylx4ZWFceGEzXHg0OFx4NjJceDZkXHhlZVx4Y2RceGRkXHg2Y1x4ZmJceDYwXHg3Zlx4 YTlceDc5IgogICAgICAiXHhiMFx4YmZceDM0XHg1NVx4NjZceDM3XHgyM1x4MjJceDRiXHhhN1x4 MTFceGQ1XHg2Mlx4MTVceGM5XHg2Nlx4NDRceGYyIgogICAgICAiXHg0OVx4YzRceDZhXHgxNFx4 NGJceDdjXHgzZVx4ZGJceDU5XHg5Nlx4NGZceDA2XHhmNVx4ZjNceGQxXHhjNlx4Y2FceGY3Igog ICAgICAiXHhmZlx4ZjZceGVmXHg4M1x4NGZceDhiXHhhZFx4NmFceGI5XHhlNFx4ZTVceGQzXHhk ZVx4N2FceDNmXHg2Ylx4NDVceGM0IgogICAgICAiXHg5N1x4ODZceDlmXHhjNVx4NWVceGI5XHhj NFx4NmNceDQ0XHg1NFx4Y2FceDc1XHhhZlx4ODlceGRlXHg1ZFx4YjVceGQzIgogICAgICAiXHhk Ylx4YmJceDNkXHhiMFx4YmRceGMyXHg1NFx4NTdceGJhXHhmZlx4ZmNceDkzXHg0ZVx4NGVceDE2 XHhiMFx4ZWJceGVkIgogICAgICAiXHhjMFx4YzFceGI4XHhiNVx4N2FceGVjXHg4ZFx4NTJceDdk XHhlMFx4ZjlceDBlXHg1Y1x4MWNceDQ5XHhmMVx4YjlceGQ5IgogICAgICAiXHg2M1x4MjZceDYy XHhiYVx4ZmNceDk4XHhjY1x4M2ZceGU3XHhjYVx4YWJceDQzXHg3YVx4YmVceGEzXHg3Ylx4ZmFc eDQ2IgogICAgICAiXHhiYVx4Y2FceDAxXHgwMFx4MDBceGMwXHg5OFx4YWRceGZkXHhlYlx4ZGFc eGUyXHgyOFx4ZTVceGViXHhlNVx4ZmFceGYyIgogICAgICAiXHg2MVx4MWNceGM2XHhlZVx4ODVc eGJmXHg4ZFx4MDdceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAg ICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4ODBceDczIgogICAgICAiXHg1NVx4M2VceGZmXHgzZlx4MjlceDk3XHhiNFx4 OWRceDllXHg4ZFx4YTRceGZkXHhmY1x4ZmZceGM5XHg3Mlx4NWZceDk0IgogICAgICAiXHhlOVx4 MGJceGVkXHhkMVx4YjhceDA3XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDNkXHgy Nlx4N2FceGY2IgogICAgICAiXHg0Y1x4YjVceDEzXHhiN1x4ZmFceGQ3XHhmOFx4ZTJceDYxXHgx Y1x4YzZceDZlXHg1Y1x4NmFceDZmXHhiN1x4OTJceGZjIgogICAgICAiXHg2Zlx4ZmVceGFmXHhl NVx4MWJceDU3XHhmM1x4ZDdceGNmXHhjNVx4N2JceGIxXHgxZFx4ZWJceGIxXHgxNVx4MzdceDYy IgogICAgICAiXHgzN1x4MWFceGIxXHgxM1x4M2JceGIxXHgxNVx4MGJceDExXHgzMVx4ZDNceGQ1 XHhkMFx4ZTRceDZlXHg2M1x4NjdceDY3IgogICAgICAiXHg2Ylx4NjFceDg4XHg5YVx4OGJceDdk XHg2Ylx4MmVceDNlXHgzZVx4YWVceGNhXHg3MFx4MTNceGFlXHgwZFx4NTdceDBjIgogICAgICAi XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4ZmVceGU3XHhmZFx4M2NceGQ2XHg4ZVx4ZmVc eGZlXHgwZlx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHhjZlx4 ODNceDI0XHhhMlx4NTJceGFjXHhmMlx4ZTVceDZhIgogICAgICAiXHgzYlx4M2RceDEzXHg2OVx4 MzVceDIyXHg2YVx4MTFceDMxXHg5OVx4OTVceGRiXHg4Ylx4ZjhceDRiXHgzYlx4N2RceDQxIgog ICAgICAiXHgyNFx4ZmRceDc2XHgzZVx4M2FceGZmXHg3MVx4MDBceDAwXHgwMFx4YzBceDk5XHhk NFx4OWVceGEwXHhjZVx4ZTVceGMzIgogICAgICAiXHgzOFx4OGNceGRkXHhiOFx4ZDRceGRlXHg2 ZVx4MjVceGY5XHgzZFx4ZmZceDRiXHhmOVx4ZmRceDcyXHgyZFx4ZGVceDhiIgogICAgICAiXHhj ZFx4ZDhceDg5XHg4ZFx4ZDhceDg5XHg2Nlx4YWNceGM3XHg5ZFx4ZjJceDFlXHgzYVx4YmJceGVi XHg0Zlx4MGZceGY2IgogICAgICAiXHg5N1x4OWFceDA3XHhmYlx4NGJceDBmXHhiMlx4ZTVceGNj XHg0M1x4Y2ZceDViXHg4Y1x4ZTJceGI3XHg4N1x4ZmVceDNkIgogICAgICAiXHhiZlx4OTJceDk3 XHhhOFx4YzdceGRkXHhkOFx4YzhceGY3XHhkY1x4ODhceGRiXHhmOVx4NjBceGVlXHg0NFx4OWFc eGQ3IgogICAgICAiXHhjY1x4ZmNceDIzXHgyMlx4MWVceGI0XHhjN1x4ZDRceDNiXHhhZVx4MGZc eDNlXHhjYlx4ZGFceGJlXHg1NVx4ZjhceGYxIgogICAgICAiXHg5MFx4MjNceGJiXHg1M1x4YWVc eGIzXHhjZVx4M2VceDZjXHhmZlx4OGFceDMwXHg3NVx4ZTZceDA5XHgzZlx4MDVceDMzIgogICAg ICAiXHgxMVx4ZDVceDM0XHgyNlx4M2FceDExXHg5OVx4Y2ZceGM3XHg1Nlx4MWNceDA0XHg1N1x4 YmFceGEzXHhkMFx4MWJceDg5IgogICAgICAiXHg2Zlx4N2RceDM2XHhhOFx4ZDFceGQ1XHg2Mlx4 NTVceDNkXHhkZVx4NTNceDc0XHhmN1x4YjRceDEwXHg2OVx4ZTdceDk3IgogICAgICAiXHg5Zlx4 YWJceDQ1XHgwZlx4NTlceGIyXHg1Zlx4NGZceGZmXHhlOVx4OGVceGY5XHhhZFx4MjFceDY3XHgz Nlx4NWRceGFlIgogICAgICAiXHhiM1x4ZjlceGZjXHg3YVx4ZDBceDJmXHgzN1x4NGZceDViXHhl ZFx4YThceGQzXHhiZFx4ODFceDg1XHgzYVx4OTFceDQ4IgogICAgICAiXHgyM1x4OGZceGM0XHg2 Mlx4ZDdceGQxXHhmN1x4ZDJceGM5XHgzMVx4OGZceGY4XHhmMlx4MWZceDdlXHhmN1x4ZTFceGJk IgogICAgICAiXHhlNlx4ZTZceGZkXHg3Ylx4NzdceGI3XHhlN1x4Y2VceDY1XHg0YVx4NjdceDky XHg5ZVx4OWNceDdkXHhmY1x4OThceDU4IgogICAgICAiXHhlYVx4OGFceGM0XHhjYlx4NDNceDQ0 XHhlMlx4ODdceGNmXHg2ZFx4MjRceGFhXHgyN1x4NjdceGY3XHhjNFx4NjVceDNlIgogICAgICAi XHhkZlx4NzlceGFkXHhiM1x4YmRceDE2XHhkZlx4OGRceDFmXHhjNFx4NWNceGNjXHhjNlx4NWJc eGIxXHgxNVx4MWJceGYxIgogICAgICAiXHhhM1x4NjhceGM0XHg0ZVx4YWNceDQ3XHg1Mlx4Y2Vc eGI0XHg1MVx4MWVceGNmXHhkOVx4ZWJceGNjXHhjOVx4OTFceDVhIgogICAgICAiXHg3ZFx4NmNc eGViXHhhZFx4ZDNceDQ2XHgzZVx4NTlceGJlXHgyZlx4OTVceDcyXHhhMFx4YTdceDhmXHg2OVx4 MzZceGJlIgogICAgICAiXHg5M1x4YTdceDFhXHhmMVx4NWFceDVlXHhmN1x4NTJceDZjXHg0NFx4 MTJceGVmXHhjNFx4OWRceDU4XHg4Zlx4MzdceGYyIgogICAgICAiXHg3Zlx4OGJceGIxXHgxMFx4 NWZceDhmXHhlNVx4NThceDhlXHg5NVx4YWVceDc3XHhmOFx4ZGFceGMwXHg3MVx4ZTdceDczIgog ICAgICAiXHhjYlx4YWZceGI0XHhlOVx4NjhceDY3XHhmZFx4ZjVceGFmXHg5NFx4ODlceDdhXHg0 NFx4ZmNceGE2XHg1Y1x4OGZceDViIgogICAgICAiXHg3MVx4NTFceGM4XHhlMlx4N2FceGE1XHgy Ylx4YWVceGRkXHhkN1x4ZGNceDk5XHgzY1x4YWZceDdiXHhjZlx4NTFceDk0IgogICAgICAiXHg1 ZVx4MzhceGY5XHhkZFx4ZmRceGEwXHhlN1x4ZGFceDc4XHhmYVx4OTRceGFiXHg1Zlx4MjhceDEz XHg1OVx4MWZceGJmIgogICAgICAiXHgzOFx4ZmRceDM0XHgzZFx4NDdceGM3XHgyM1x4YjFceGQw XHgxNVx4ODlceDE3XHg0Zlx4OGVceGM0XHg2Zlx4NWJceGQ5IgogICAgICAiXHhlYlx4NzZceDcz XHhmM1x4ZmVceGQ2XHhiZFx4YzZceGJiXHg3ZFx4M2VceDVkXHg1Ylx4YzlceDQ0XHhiZVx4ZmVc eGViIgogICAgICAiXHhmNVx4ODhceDU2XHhhYlx4ZDhceGY3XHg3YVx4OTlceDk3XHgxZFx4NzFc eGJmXHgzYVx4ZmRceGViXHhjZlx4MWZceGNmIgogICAgICAiXHgzYVx4YmZceDUzXHg3NFx4NWRc eGM3XHhiMlx4ZTNceGU1XHg4NVx4YThceDk1XHg1N1x4OTJceDJiXHgzMVx4NTFceDBjIgogICAg ICAiXHhhZFx4ZDJceGNlXHg3Ylx4YjFceDczXHg5NVx4NzlceDNjXHg1ZVx4OTNceGU1XHg1Zlx4 NWNceDhhXHhiY1x4ZjRceDU4IgogICAgICAiXHg1ZVx4MmRceDNiXHg5Zlx4ZDNceGEyXHhhN1x4 ZTJceDRjXHhmZFx4ZGVceGMwXHgzM1x4NzVceGIyXHhmY1x4MGVceGQ3IgogICAgICAiXHhkYlx4 ZDJceDYyXHg5ZVx4ZjdceDcyXHhkZlx4YmNceGE1XHgzY1x4ZWZceDk1XHhhZVx4YmNceGVlXHhl Zlx4NWJceDExIgogICAgICAiXHhlZlx4NDRceGIzXHhmM1x4N2RceDA4XHg4MFx4ZTdceGQ4XHhm NFx4NTdceGE3XHgyN1x4ZWJceGZmXHhhY1x4ZmZceGI5IgogICAgICAiXHhmZVx4NzFceGZkXHg5 N1x4ZjVceDdiXHhmNVx4MzdceDZiXHhkZlx4OWVceGZhXHhjNlx4ZDRceGFiXHg5M1x4MzFceGYx IgogICAgICAiXHhhN1x4ODlceDZmXHg1Nlx4ZTdceDJiXHhhZlx4YTdceGFmXHgyNlx4YmZceDhm XHg4Zlx4ZTNceGE3XHg0N1x4ZjdceGZmIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAi XHgwMFx4MDBceDAwXHgwMFx4MDBceGMwXHg5M1x4ZGJceDdlXHhmZlx4ZTFceGZkXHg0Nlx4YjNc eGI5XHhiZVx4ZDVceDNmIgogICAgICAiXHg5MVx4NTZceDA2XHg2Nlx4MGRceDQ4XHg0NFx4ZWJc eGUxXHhmZFx4NDZceGZiXHg0OVx4M2VceGMzXHhkNlx4OGFceGVkIgogICAgICAiXHhhNFx4N2Nc eDkyXHhjZVx4NDhceDdkXHg4ZFx4MmJceGQxXHg3OVx4ZTRceGNmXHg3M1x4MzJceDllXHg2N1x4 OTJceDQ4IgogICAgICAiXHg3YVx4ZjZceDY0XHgzM1x4N2VceDNhXHg1ZFx4YjRceDFmXHgyMlx4 MzhceDVhXHhhZFx4ZjlceGRlXHgyM1x4NmFceDc1IgogICAgICAiXHg5Y1x4ODFceGZhXHhmYlx4 YThceGI1XHhhMlx4MzZceGQ0XHg5NFx4YTdceGNiXHg0NFx4ZWJceDcyXHgxMVx4YTVceDkxIgog ICAgICAiXHhiYVx4OThceDM5XHg3ZVx4NjRceDQ2XHgwY1x4MjhceDNjXHg1NVx4MDRceGIzXHgz Mlx4ZTBceDNjXHgyZFx4ZGZceGEyIgogICAgICAiXHgyN1x4NzlceGI4XHgyOFx4NzBceDIxXHhk Y1x4ZGNceDc5XHhmMFx4ZWVceGNkXHhlZFx4ZjdceDFmXHg3ZVx4NmRceGUzIgogICAgICAiXHg0 MVx4ZTNceGVkXHhmNVx4YjdceGQ3XHgzN1x4MjdceDk2XHg5N1x4NTdceGU2XHg1N1x4OTZceGRm XHg1OFx4YmFceDc5IgogICAgICAiXHg3N1x4YTNceGI5XHgzZVx4NWZceGJjXHg4ZVx4N2JceDk0 XHhjMFx4YjNceDcwXHhmNFx4YmRceDFkXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHhiOFx4MjhceGNlXHhlM1x4ZmZceDRiXHg4Y1x4N2JceDhlXHgwMFx4MDBc eDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAg ICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw IgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAi XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4 MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgog ICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgw MFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHgwMFx4MDBceDAw XHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwIgogICAgICAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBc eDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIgogICAgICAiXHhjMFx4YzVceGI2XHgzNlx4MTdc eGQ1XHg0N1x4OTFceGM0XHhjMlx4ZmNceDhkXHhmOVx4NmNceGZiXHg2MFx4N2ZceGE5IgogICAg ICAiXHg5OVx4MmRceGVkXHhmNFx4NTFceGM5XHg2YVx4NDRceGE0XHg2OVx4NDRceGYyXHg5M1x4 ODhceGU0XHg5M1x4ODhceGQ1IgogICAgICAiXHgyOFx4OTZceDk4XHhlOVx4NmFceDJlXHgxOVx4 ZDRceGNmXHg0N1x4MWJceDJiXHg5NVx4ODhceGY4XHhmNFx4YThceGFkIgogICAgICAiXHg2YVx4 YmJceDdjXHg3YVx4NDJceGJkXHhkNlx4ZDRceDUwXHhiM1x4ZDhceDJiXHg5N1x4OThceDhkXHg4 OFx4NGFceGI5IgogICAgICAiXHgzZVx4ODNceGM3XHhkYVx4YmJceDdkXHhlNlx4ZjZceDkyXHhj ZVx4MGNceGIzXHg4MFx4NWRceDZmXHgwN1x4MGVceGM2IgogICAgICAiXHhlZFx4YmZceDAxXHgw MFx4MDBceGZmXHhmZlx4NDJceGI1XHhlZFx4ZTciLAogICAgICAxNzM5KTsKICBzeXpfbW91bnRf aW1hZ2UoLypmcz0qLzB4MjAwMDAwYzAsIC8qZGlyPSovMHgyMDAwMDE4MCwKICAgICAgICAgICAg ICAgICAgLypmbGFncz1NU19QT1NJWEFDTHxNU19SRUN8TVNfU1lOQ0hST05PVVN8TVNfTk9FWEVD Ki8gMHgxNDAxOCwKICAgICAgICAgICAgICAgICAgLypvcHRzPSovMHgyMDAwMDFjMCwgLypjaGRp cj0qLzB4ZGMsIC8qc2l6ZT0qLzB4NmNiLAogICAgICAgICAgICAgICAgICAvKmltZz0qLzB4MjAw MDBkNDApOwogIG1lbWNweSgodm9pZCopMHgyMDAwMDA0MCwgIi4vZmlsZTFcMDAwIiwgOCk7CiAg bWVtY3B5KCh2b2lkKikweDIwMDAwMDgwLCAiLi9maWxlMFwwMDAiLCA4KTsKICBzeXNjYWxsKF9f TlJfcmVuYW1lLCAvKm9sZD0qLzB4MjAwMDAwNDB1bCwgLypuZXc9Ki8weDIwMDAwMDgwdWwpOwog ICoodWludDY0X3QqKTB4MjAwMDAyYzAgPSAxOwogICoodWludDY0X3QqKTB4MjAwMDAyYzggPSAw OwogIHJlcyA9IHN5c2NhbGwoX19OUl9sYW5kbG9ja19jcmVhdGVfcnVsZXNldCwgLyphdHRyPSov MHgyMDAwMDJjMHVsLAogICAgICAgICAgICAgICAgLypzaXplPSovMHgxMHVsLCAvKmZsYWdzPSov MHVsKTsKICBpZiAocmVzICE9IC0xKQogICAgclswXSA9IHJlczsKICBzeXNjYWxsKF9fTlJfbGFu ZGxvY2tfcmVzdHJpY3Rfc2VsZiwgLypydWxlc2V0X2ZkPSovclswXSwgLypmbGFncz0qLzB1bCk7 CiAgc3lzY2FsbChfX05SX2lvY3RsLCAvKmZkPSovLTEsIC8qY21kPSovMHg1NDIzLCAvKmFyZz0q LzB1bCk7CiAgbWVtY3B5KCh2b2lkKikweDIwMDAwMTAwLCAiLi9maWxlMFwwMDAiLCA4KTsKICBt ZW1jcHkoKHZvaWQqKTB4MjAwMDAxNDAsICIuL2ZpbGUwXDAwMCIsIDgpOwogIHN5c2NhbGwoX19O Ul9yZW5hbWUsIC8qb2xkPSovMHgyMDAwMDEwMHVsLCAvKm5ldz0qLzB4MjAwMDAxNDB1bCk7CiAg cmV0dXJuIDA7Cn0K ------=ALIBOUNDARY_60289_7f560532d700_662db8a6_6bf5ad--