Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1aK51J-0007x5-R8 for pgadmin-hackers@arkaria.postgresql.org; Fri, 15 Jan 2016 14:06:30 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84) (envelope-from ) id 1aK51J-0006C3-DP for pgadmin-hackers@arkaria.postgresql.org; Fri, 15 Jan 2016 14:06:29 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84) (envelope-from ) id 1aK51H-00069H-8k for pgadmin-hackers@postgresql.org; Fri, 15 Jan 2016 14:06:27 +0000 Received: from mail-yk0-x22b.google.com ([2607:f8b0:4002:c07::22b]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84) (envelope-from ) id 1aK51D-00039f-4v for pgadmin-hackers@postgresql.org; Fri, 15 Jan 2016 14:06:26 +0000 Received: by mail-yk0-x22b.google.com with SMTP id a85so465537260ykb.1 for ; Fri, 15 Jan 2016 06:06:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:date:message-id:subject:from:to:cc:content-type; bh=fIUt8KzXuZOk9aT2RfKRDNfpsehbNY4QIE3IITrZfhE=; b=DmjtJ9flOoNaNkKnb0vxBn1I+3H4UECqY920MWIxYHfV78YdQSw1VZGpGY5fYleufR 7XU2s7O622ntkW3T98BTVoMgZFgjc3CKohAXcCPAOceGjtOxQw50wB7pRwjfKHApGrJo v1TN1P7HqZLrf2i1I/Bqz846hbfO47l+AUUp344f2/E0xyEyDjjXYHSw1KehtkZEPTr9 YsQhu/STEeszB3OGKLWt+9NkyYWMgLq2Hhky3zAoSbNoDnXtNfagPpMJvGLGNEKPHEOY une9khN+9/3nOFeGBx21EO0/yCP5LYzsQYDuHYnI9UcX2qSwsuRozKUQkprl9YwkLnzV MDJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:date:message-id:subject:from:to:cc :content-type; bh=fIUt8KzXuZOk9aT2RfKRDNfpsehbNY4QIE3IITrZfhE=; b=KU0eTyCrKOoLzaft28F3/mInVx+4sCoBOdKFJaY7pahfIiFooyemcx3WLS5Kqe+0x5 3a4BjeMEXtFzDFrQ6P8X6+SUT13xj/tXYmcQJA4NAiu4B+7yIlrJH/e1vQE5qiWnqj8C /ZIE0XbpWOg8HCo9ZDZQWCP1wrZaAWDylb8u1SPLv67kMxfi4DmLIDJwtlUgiKBvt9qF T+r24zUO+pjSTzaEMy1wbETXms2pxKHea+pYqirF5frPSlj3eFGarTfcFKMhURmi4RT0 A/o3QJkFchoKJ6B5tkdxIbtzcEPBWWteajI774w5Umrkfm5AFeIEXvvTFKwLlvyI820L /ZWQ== X-Gm-Message-State: ALoCoQnCoWG0XnE723o+eQXFTYGwR6Ck/M5LUyctWs81zPdiom0lgLr5f5ZNNwTcKsu0efY5lJmfEPK3hS92YDSfg+Qwys4HlNBfkqrlRQaLnIvReDHF190= MIME-Version: 1.0 X-Received: by 10.37.50.196 with SMTP id y187mr863175yby.7.1452866781327; Fri, 15 Jan 2016 06:06:21 -0800 (PST) Received: by 10.37.202.75 with HTTP; Fri, 15 Jan 2016 06:06:21 -0800 (PST) Date: Fri, 15 Jan 2016 19:36:21 +0530 Message-ID: Subject: [pgAdmin4] - Desktop runtime patch From: Neel Patel To: pgadmin-hackers Cc: pgadmin-support@postgresql.org Content-Type: multipart/mixed; boundary=001a1146de5468bf4505295fe8e0 X-Pg-Spam-Score: -2.6 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgadmin-hackers Precedence: bulk Sender: pgadmin-hackers-owner@postgresql.org --001a1146de5468bf4505295fe8e0 Content-Type: multipart/alternative; boundary=001a1146de5468bf3f05295fe8de --001a1146de5468bf3f05295fe8de Content-Type: text/plain; charset=UTF-8 Hi, Please find the attached patch file for the below fix when pgAdmin 4 run in desktop mode. Added functionality to open different website link and load the website data to different tab. To achieve this, new customized QTabWidget and QWebView are added to render the data to WebView widget. All the widgets (New Tab, WebViewWinodw, and QToolButton) are added dynamically. QToolButton is used to traverse back and forward to web document opened in WebViewWindow. Introduced the New class called WebViewWindow which is derived from QWebView. Each tab of the QTabWidget contains the instance of WebViewWindow class. WebViewWindow class is useful to display the web document. Introduced New class called TabWindow which is derived from QTabWidget. This class is useful to achieve following functionality. - Customize the close button of tabbar so that it can only be visible other then main pgAdmin 4 window. - Enable/Disable the toolbutton added left side of tabbar depending on the web history traversed by the user in WebViewWindow. - Set the tooltip text of the tabbar depending on the title change event of WebViewWindow class. Modified the Qt project file to support the both the version of python 2 and python 3. Qt5 is recommended to test pgAdmin4 in dektop mode. Attached patch is applied and tested on Linux, do let us know for any comments/issues. Thanks, Neel Patel --001a1146de5468bf3f05295fe8de Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

Please find the attached patch file= for the below fix=C2=A0when pgAdmin 4 run in desktop mode.

Added functionality to open different website link and load the website d= ata to different tab.=C2=A0To achieve this,= =C2=A0new customized QTabWidget and= QWebView are added to render the data to WebView widget. All the widgets (= New Tab, WebViewWinodw, and QToolButton) are added dynamically. QToolButton= is used to traverse back and forward to web document opened in WebViewWind= ow.

Introduced=C2=A0the New class called WebViewWindow which = is derived from QWebView. Each tab of the QTabWidget contains the instance = of WebViewWindow class. WebViewWindow class is useful to display the web do= cument.

Introduced New class called TabWindow which is derived from QTabWidget.= =C2=A0This class is useful to achie= ve following functionality.
=C2=A0 - = Customize the close button of tabbar so that it can only be visible=C2=A0other then main pgAdmin 4 window.
= =C2=A0 - Enable/Disable the toolbutton added left side of tabbar =C2=A0depending=C2=A0on the web history=C2=A0traversed=C2=A0by the user in=C2=A0WebV= iewWindow.
=C2=A0 - Set the tooltip= text of the tabbar depending on the title change=C2=A0event of WebVi= ewWindow class.

Modified the Qt project file to support the both the version of=C2=A0python 2 and python 3.

Qt5 is=C2=A0recommended=C2=A0to= test pgAdmin4 in dektop mode.

Attached patch is applied= and tested on Linux, do let us know for any comments/issues.
<= div style=3D"font-size:12.8px">
T= hanks,
Neel Patel
--001a1146de5468bf3f05295fe8de-- --001a1146de5468bf4505295fe8e0 Content-Type: application/octet-stream; name="pgAdmin4_runtime_new.patch" Content-Disposition: attachment; filename="pgAdmin4_runtime_new.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ijfqdcf50 ZGlmZiAtLWdpdCBhL3J1bnRpbWUvQnJvd3NlcldpbmRvdy5jcHAgYi9ydW50 aW1lL0Jyb3dzZXJXaW5kb3cuY3BwCmluZGV4IDAyM2EyNjQuLjg5ZDk2M2Mg MTAwNjQ0Ci0tLSBhL3J1bnRpbWUvQnJvd3NlcldpbmRvdy5jcHAKKysrIGIv cnVudGltZS9Ccm93c2VyV2luZG93LmNwcApAQCAtMiw3ICsyLDcgQEAKIC8v CiAvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCiAvLwotLy8gQ29w eXJpZ2h0IChDKSAyMDEzLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFt CisvLyBDb3B5cmlnaHQgKEMpIDIwMTYsIFRoZSBwZ0FkbWluIERldmVsb3Bt ZW50IFRlYW0KIC8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIg dGhlIFBvc3RncmVTUUwgTGljZW5jZQogLy8KIC8vIEJyb3dzZXJXaW5kb3cu Y3BwIC0gSW1wbGVtZW50YXRpb24gb2YgdGhlIG1haW4gd2luZG93IGNsYXNz CkBAIC0xMSw5ICsxMSw2IEBACiAKICNpbmNsdWRlICJwZ0FkbWluNC5oIgog Ci0vLyBRVCBoZWFkZXJzCi0jaW5jbHVkZSA8UXRHbG9iYWw+Ci0KICNpZiBR VF9WRVJTSU9OID49IDB4MDUwMDAwCiAjaW5jbHVkZSA8UXRXaWRnZXRzPgog I2luY2x1ZGUgPFF0V2ViS2l0V2lkZ2V0cz4KQEAgLTMwLDIwICsyNyw1NCBA QAogLy8gQXBwIGhlYWRlcnMKICNpbmNsdWRlICJCcm93c2VyV2luZG93Lmgi CiAKLQogLy8gQ29uc3RydWN0b3IKIEJyb3dzZXJXaW5kb3c6OkJyb3dzZXJX aW5kb3coUVN0cmluZyB1cmwpCiB7CisgICAgbV90YWJHcmlkTGF5b3V0ID0g TlVMTDsKKyAgICBtX21haW5HcmlkTGF5b3V0ID0gTlVMTDs7CisgICAgbV90 YWJXaWRnZXQgPSBOVUxMOworICAgIG1fcGdBZG1pbk1haW5UYWIgPSBOVUxM OworICAgIG1fYWRkTmV3VGFiID0gTlVMTDsKKyAgICBtX2FkZE5ld0dyaWRM YXlvdXQgPSBOVUxMOworICAgIG1fYWRkTmV3V2ViVmlldyA9IE5VTEw7Cisg ICAgbV9ob3Jpem9udGFsTGF5b3V0ID0gTlVMTDsKKyAgICBtX3dpZGdldCA9 IE5VTEw7CisgICAgbV90b29sQnRuQmFjayA9IE5VTEw7CisgICAgbV90b29s QnRuRm9yd2FyZCA9IE5VTEw7CisKICAgICBtX2FwcFNlcnZlclVybCA9IHVy bDsKIAogICAgIC8vIFNldHVwIHRoZSBVSQogICAgIGNyZWF0ZUFjdGlvbnMo KTsKICAgICBjcmVhdGVNZW51cygpOwogCi0gICAgLy8gQ3JlYXRlIHRoZSBX ZWJLaXQgY29udHJvbAotICAgIHdlYlZpZXcgPSBuZXcgUVdlYlZpZXcodGhp cyk7Ci0gICAgc2V0Q2VudHJhbFdpZGdldCh3ZWJWaWV3KTsKLSAgICBjb25u ZWN0KHdlYlZpZXcsIFNJR05BTChsb2FkRmluaXNoZWQoYm9vbCkpLCBTTE9U KGZpbmlzaExvYWRpbmcoYm9vbCkpKTsKKyAgICBtX3RhYldpZGdldCA9IG5l dyBUYWJXaW5kb3codGhpcyk7CisgICAgbV9tYWluR3JpZExheW91dCA9IG5l dyBRR3JpZExheW91dChtX3RhYldpZGdldCk7CisgICAgbV9tYWluR3JpZExh eW91dC0+c2V0Q29udGVudHNNYXJnaW5zKDAsIDAsIDAsIDApOworICAgIG1f cGdBZG1pbk1haW5UYWIgPSBuZXcgUVdpZGdldChtX3RhYldpZGdldCk7Cisg ICAgbV90YWJHcmlkTGF5b3V0ID0gbmV3IFFHcmlkTGF5b3V0KG1fcGdBZG1p bk1haW5UYWIpOworICAgIG1fdGFiR3JpZExheW91dC0+c2V0Q29udGVudHNN YXJnaW5zKDAsIDAsIDAsIDApOworICAgIG1fbWFpbldlYlZpZXcgPSBuZXcg V2ViVmlld1dpbmRvdyhtX3BnQWRtaW5NYWluVGFiKTsKKworICAgIG1fdGFi R3JpZExheW91dC0+YWRkV2lkZ2V0KG1fbWFpbldlYlZpZXcsIDAsIDAsIDEs IDEpOworICAgIG1fdGFiV2lkZ2V0LT5hZGRUYWIobV9wZ0FkbWluTWFpblRh YiwgUVN0cmluZygpKTsKKyAgICBtX3RhYldpZGdldC0+c2V0Q3VycmVudElu ZGV4KDApOworICAgIG1fdGFiV2lkZ2V0LT5zZXRUYWJUZXh0KDAsICJwZ0Fk bWluNCIpOworICAgIG1fdGFiV2lkZ2V0LT5zZXRUYWJUb29sVGlwVGV4dCgw LCBRU3RyaW5nKCJwZ0FkbWluNCIpKTsKKworI2lmbmRlZiBfX0FQUExFX18K KyAgICBtX3RhYldpZGdldC0+c2V0U3R5bGVTaGVldCgiUVRhYkJhcjo6dGFi e21heC1oZWlnaHQ6MzJweDttYXgtd2lkdGg6MjUwcHg7fSIpOworI2VuZGlm CisKKyAgICBzZXRDZW50cmFsV2lkZ2V0KG1fdGFiV2lkZ2V0KTsKKworICAg IGNvbm5lY3QobV9tYWluV2ViVmlldywgU0lHTkFMKGxvYWRGaW5pc2hlZChi b29sKSksIFNMT1QoZmluaXNoTG9hZGluZyhib29sKSkpOworICAgIC8vUmVn aXN0ZXIgdGhlIHNsb3Qgd2hlbiBjbGljayBvbiB0aGUgVVJMIGxpbmsgZm9y bSBtYWluIHBnQW1kaW4gbWVudSBiYXIKKyAgICBjb25uZWN0KG1fbWFpbldl YlZpZXcsU0lHTkFMKGxpbmtDbGlja2VkKGNvbnN0IFFVcmwgJikpLFNMT1Qo dXJsTGlua0NsaWNrZWQoY29uc3QgUVVybCAmKSkpOworICAgIC8vUmVnaXN0 ZXIgdGhlIHNsb3Qgb24gdGFiIGluZGV4IGNoYW5nZQorICAgIGNvbm5lY3Qo bV90YWJXaWRnZXQsU0lHTkFMKGN1cnJlbnRDaGFuZ2VkKGludCApKSx0aGlz LFNMT1QodGFiSW5kZXhDaGFuZ2VkKGludCApKSk7CisKKyAgICBtX21haW5X ZWJWaWV3LT5wYWdlKCktPnNldExpbmtEZWxlZ2F0aW9uUG9saWN5KFFXZWJQ YWdlOjpEZWxlZ2F0ZUFsbExpbmtzKTsKIAogICAgIC8vIFJlc3RvcmUgdGhl IGdlb21ldHJ5CiAgICAgUVNldHRpbmdzIHNldHRpbmdzOwpAQCAtNTMsMTAg Kzg0LDkgQEAgQnJvd3NlcldpbmRvdzo6QnJvd3NlcldpbmRvdyhRU3RyaW5n IHVybCkKICAgICAvLyBEaXNwbGF5IHRoZSBhcHAKICAgICBtX2luaXRpYWxM b2FkID0gdHJ1ZTsKICAgICBtX2xvYWRBdHRlbXB0ID0gMTsKLSAgICB3ZWJW aWV3LT5zZXRVcmwobV9hcHBTZXJ2ZXJVcmwpOworICAgIG1fbWFpbldlYlZp ZXctPnNldFVybChtX2FwcFNlcnZlclVybCk7CiB9CiAKLQogLy8gU2F2ZSB0 aGUgd2luZG93IGdlb21ldHJ5IG9uIGNsb3NlCiB2b2lkIEJyb3dzZXJXaW5k b3c6OmNsb3NlRXZlbnQoUUNsb3NlRXZlbnQgKmV2ZW50KQogewpAQCAtMTI1 LDE2ICsxNTUsMTYgQEAgdm9pZCBCcm93c2VyV2luZG93OjpmaW5pc2hMb2Fk aW5nKGJvb2wgb2spCiAgICAgICAgICAgICBpZiAobV9sb2FkQXR0ZW1wdCA+ IDEpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgcURlYnVnKCkg PDwgIkluaXRpYWwgY29ubmVjdGlvbiBmYWlsZWQuIFJldHJ5aW5nIGluIiA8 PCBtX2xvYWRBdHRlbXB0IDw8ICJzZWNvbmRzLiI7Ci0gICAgICAgICAgICAg ICAgd2ViVmlldy0+c2V0SHRtbChRU3RyaW5nKHRyKCI8cD5GYWlsZWQgdG8g Y29ubmVjdCB0byB0aGUgcGdBZG1pbiBhcHBsaWNhdGlvbiBzZXJ2ZXIuIFJl dHJ5aW5nIGluICUxIHNlY29uZHMsICIpICsKKyAgICAgICAgICAgICAgICBt X21haW5XZWJWaWV3LT5zZXRIdG1sKFFTdHJpbmcodHIoIjxwPkZhaWxlZCB0 byBjb25uZWN0IHRvIHRoZSBwZ0FkbWluIGFwcGxpY2F0aW9uIHNlcnZlci4g UmV0cnlpbmcgaW4gJTEgc2Vjb25kcywgIikgKwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0cigib3IgY2xpY2sgPGEgaHJl Zj1cIiUyXCI+aGVyZTwvYT4gdG8gdHJ5IGFnYWluIG5vdy48L3A+IikpLmFy ZyhtX2xvYWRBdHRlbXB0KS5hcmcobV9hcHBTZXJ2ZXJVcmwpKTsKICAgICAg ICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLSAg ICAgICAgICAgICAgIHdlYlZpZXctPnNldEh0bWwoUVN0cmluZyh0cigiPHA+ Q29ubmVjdGluZyB0byB0aGUgYXBwbGljYXRpb24gc2VydmVyLi4uPC9wPiIp KSk7CisgICAgICAgICAgICAgICBtX21haW5XZWJWaWV3LT5zZXRIdG1sKFFT dHJpbmcodHIoIjxwPkNvbm5lY3RpbmcgdG8gdGhlIGFwcGxpY2F0aW9uIHNl cnZlci4uLjwvcD4iKSkpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg ICBwYXVzZShtX2xvYWRBdHRlbXB0KTsKLSAgICAgICAgICAgIHdlYlZpZXct PnNldFVybChtX2FwcFNlcnZlclVybCk7CisgICAgICAgICAgICBtX21haW5X ZWJWaWV3LT5zZXRVcmwobV9hcHBTZXJ2ZXJVcmwpOwogICAgICAgICAgICAg bV9sb2FkQXR0ZW1wdCsrOwogCiAgICAgICAgICAgICByZXR1cm47CkBAIC0x NDIsNyArMTcyLDcgQEAgdm9pZCBCcm93c2VyV2luZG93OjpmaW5pc2hMb2Fk aW5nKGJvb2wgb2spCiAgICAgICAgIGVsc2UKICAgICAgICAgewogICAgICAg ICAgICAgcURlYnVnKCkgPDwgIkluaXRpYWwgY29ubmVjdGlvbiBmYWlsZWQg YWZ0ZXIgbXVsdGlwbGUgYXR0ZW1wdHMuIEFib3J0aW5nLiI7Ci0gICAgICAg ICAgICB3ZWJWaWV3LT5zZXRIdG1sKFFTdHJpbmcodHIoIjxwPkZhaWxlZCB0 byBjb25uZWN0IHRvIHRoZSBwZ0FkbWluIGFwcGxpY2F0aW9uIHNlcnZlci4g IikgKworICAgICAgICAgICAgbV9tYWluV2ViVmlldy0+c2V0SHRtbChRU3Ry aW5nKHRyKCI8cD5GYWlsZWQgdG8gY29ubmVjdCB0byB0aGUgcGdBZG1pbiBh cHBsaWNhdGlvbiBzZXJ2ZXIuICIpICsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB0cigiQ2xpY2sgPGEgaHJlZj1cIiUxXCI+aGVy ZTwvYT4gdG8gdHJ5IGFnYWluLjwvcD4iKSkuYXJnKG1fYXBwU2VydmVyVXJs KSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNTAsNiArMTgwLDIyOCBAQCB2 b2lkIEJyb3dzZXJXaW5kb3c6OmZpbmlzaExvYWRpbmcoYm9vbCBvaykKICAg ICBtX2luaXRpYWxMb2FkID0gZmFsc2U7CiB9CiAKKy8vIENoZWNrIGlmIFRh YiBpcyBhbHJlYWR5IG9wZW4gd2l0aCBnaXZlbiBVUkwgbmFtZQoraW50IEJy b3dzZXJXaW5kb3c6OmZpbmRVUkxUYWIoY29uc3QgUVVybCAmbmFtZSkKK3sK KyAgICBpbnQgdGFiQ291bnQgPSAwOworICAgIFdlYlZpZXdXaW5kb3cgKndl YnZpZXdQdHIgPSBOVUxMOworCisgICAgZm9yICh0YWJDb3VudCA9IDE7dGFi Q291bnQgPCBtX3RhYldpZGdldC0+Y291bnQoKTt0YWJDb3VudCsrKQorICAg IHsKKyAgICAgICAgUVdpZGdldCAqdGFiID0gbV90YWJXaWRnZXQtPndpZGdl dCh0YWJDb3VudCk7CisgICAgICAgIGlmICh0YWIgIT0gTlVMTCkKKyAgICAg ICAgeworICAgICAgICAgICAgUUxpc3Q8UVdpZGdldCo+IHdpZGdldExpc3Qg PSB0YWItPmZpbmRDaGlsZHJlbjxRV2lkZ2V0Kj4oKTsKKyAgICAgICAgICAg IGZvcmVhY2goIFFXaWRnZXQqIHdpZGdldFB0ciwgd2lkZ2V0TGlzdCApCisg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKHdpZGdldFB0ciAh PSBOVUxMKQorICAgICAgICAgICAgICAgIHsKKwkgICAgICAgICAgICB3ZWJ2 aWV3UHRyID0gZHluYW1pY19jYXN0PFdlYlZpZXdXaW5kb3cqPih3aWRnZXRQ dHIpOworCisJICAgICAgICAgICAgaWYgKHdlYnZpZXdQdHIgIT0gTlVMTCAm JiAhUVN0cmluZzo6Y29tcGFyZSh3ZWJ2aWV3UHRyLT5nZXRGaXJzdExvYWRV UkwoKSxuYW1lLnVybCgpLCBRdDo6Q2FzZUluc2Vuc2l0aXZlKSkKKwkgICAg ICAgICAgICB7CisJCSAgICAgICAgbV90YWJXaWRnZXQtPnNldEN1cnJlbnRJ bmRleCh0YWJDb3VudCk7CisJCSAgICAgICAgcmV0dXJuIDE7CisgICAgICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKwor Ly8gU2xvdDogV2hlbiB0aGUgdGFiIGluZGV4IGNoYW5nZSwgaGlkZS9zaG93 IHRoZSB0b29sYnV0dG9uIGRpc3BsYXllZCBvbiB0YWIKK3ZvaWQgQnJvd3Nl cldpbmRvdzo6dGFiSW5kZXhDaGFuZ2VkKGludCBpbmRleCkKK3sKKyAgICBp bnQgdGFiQ291bnQgPSAxOworICAgIGZvciAodGFiQ291bnQgPSAxO3RhYkNv dW50IDwgbV90YWJXaWRnZXQtPmNvdW50KCk7dGFiQ291bnQrKykKKyAgICB7 CisgICAgICAgIGlmICh0YWJDb3VudCAhPSBpbmRleCkKKwkgICAgbV90YWJX aWRnZXQtPnNob3dIaWRlVG9vbEJ1dHRvbih0YWJDb3VudCwwKTsKKyAgICAg ICAgZWxzZQorCSAgICBtX3RhYldpZGdldC0+c2hvd0hpZGVUb29sQnV0dG9u KHRhYkNvdW50LDEpOworICAgIH0KK30KKworLy8gY2xvc2UgdGhlIHRhYiBh bmQgcmVtb3ZlIHRoZSBtZW1vcnkgb2YgdGhlIGdpdmVuIGluZGV4IHRhYgor dm9pZCBCcm93c2VyV2luZG93OjpjbG9zZXRhYnMoKQoreworICAgIGludCBs b29wQ291bnQgPSAwOworICAgIGludCBpbmRleCA9IDA7CisgICAgUVB1c2hC dXR0b24gKmJ0biA9IE5VTEw7CisgICAgaW50IHRvdGFsVGFicyA9IG1fdGFi V2lkZ2V0LT5jb3VudCgpOworCisgICAgUU9iamVjdCAqc2VuZGVyUHRyID0g UU9iamVjdDo6c2VuZGVyKCk7CisgICAgaWYgKHNlbmRlclB0ciAhPSBOVUxM KQorICAgIHsKKyAgICAgICAgYnRuID0gZHluYW1pY19jYXN0PFFQdXNoQnV0 dG9uKj4oc2VuZGVyUHRyKTsKKyAgICAgICAgaW5kZXggPSBtX3RhYldpZGdl dC0+Z2V0QnV0dG9uSW5kZXgoYnRuKTsKKyAgICB9CisKKyAgICBpZiAoaW5k ZXggIT0gMCkKKyAgICB7CisgICAgICAgIFFXaWRnZXQgKnRhYiA9IG1fdGFi V2lkZ2V0LT53aWRnZXQoaW5kZXgpOworICAgICAgICBXZWJWaWV3V2luZG93 ICp3ZWJ2aWV3UHRyID0gTlVMTDsKKyAgICAgICAgbG9vcENvdW50ID0gMDsK KworICAgICAgICAvLyBmcmVlIHRoZSBhbGxvY2F0ZWQgbWVtb3J5IHdoZW4g dGhlIHRhYiBpcyBjbG9zZWQKKyAgICAgICAgaWYgKHRhYiAhPSBOVUxMKQor ICAgICAgICAgICAgZGVsZXRlIHRhYjsKKworICAgICAgICAvLyBBZGp1c3Qg dGhlIHRhYiBpbmRleCB2YWx1ZSBpZiB0aGUgdGFiIGlzIGNsb3NlZCBpbiBi ZXR3ZWVuCisgICAgICAgIGZvciAobG9vcENvdW50ID0gMTtsb29wQ291bnQg PCB0b3RhbFRhYnM7bG9vcENvdW50KyspCisgICAgICAgIHsKKyAgICAgICAg ICAgIGlmIChpbmRleCA+IGxvb3BDb3VudCkKKyAgICAgICAgICAgICAgICBj b250aW51ZTsKKworICAgICAgICAgICAgUVdpZGdldCAqdGFiID0gbV90YWJX aWRnZXQtPndpZGdldChsb29wQ291bnQpOworICAgICAgICAgICAgaWYgKHRh YiAhPSBOVUxMKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIFFM aXN0PFFXaWRnZXQqPiB3aWRnZXRMaXN0ID0gdGFiLT5maW5kQ2hpbGRyZW48 UVdpZGdldCo+KCk7CisgICAgICAgICAgICAgICAgZm9yZWFjaCggUVdpZGdl dCogd2lkZ2V0UHRyLCB3aWRnZXRMaXN0ICkKKyAgICAgICAgICAgICAgICB7 CisgICAgICAgICAgICAgICAgICAgIGlmICh3aWRnZXRQdHIgIT0gTlVMTCkK KyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAg ICAgd2Vidmlld1B0ciA9IGR5bmFtaWNfY2FzdDxXZWJWaWV3V2luZG93Kj4o d2lkZ2V0UHRyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3ZWJ2 aWV3UHRyICE9IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg d2Vidmlld1B0ci0+c2V0VGFiSW5kZXgoKHdlYnZpZXdQdHItPmdldFRhYklu ZGV4KCkgLSAxKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9 CisKKy8vU2xvdDogZ28gYmFjayB0byBwYWdlIGFuZCBlbmFibGUvZGlzYWJs ZSB0b29sYnV0dG9uCit2b2lkIEJyb3dzZXJXaW5kb3c6OmdvQmFja1BhZ2Uo KQoreworICAgIFdlYlZpZXdXaW5kb3cgKndlYnZpZXdQdHIgPSBOVUxMOwor CisgICAgUVdpZGdldCAqdGFiID0gbV90YWJXaWRnZXQtPndpZGdldChtX3Rh YldpZGdldC0+Y3VycmVudEluZGV4KCkpOworICAgIGlmICh0YWIgIT0gTlVM TCkKKyAgICB7CisgICAgICAgIFFMaXN0PFFXaWRnZXQqPiB3aWRnZXRMaXN0 ID0gdGFiLT5maW5kQ2hpbGRyZW48UVdpZGdldCo+KCk7CisgICAgICAgIGZv cmVhY2goIFFXaWRnZXQqIHdpZGdldFB0ciwgd2lkZ2V0TGlzdCApCisgICAg ICAgIHsKKyAgICAgICAgICAgIGlmICh3aWRnZXRQdHIgIT0gTlVMTCkKKyAg ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB3ZWJ2aWV3UHRyID0gZHlu YW1pY19jYXN0PFdlYlZpZXdXaW5kb3cqPih3aWRnZXRQdHIpOworICAgICAg ICAgICAgICAgIGlmICh3ZWJ2aWV3UHRyICE9IE5VTEwpCisgICAgICAgICAg ICAgICAgeworICAgICAgICAgICAgICAgICAgICB3ZWJ2aWV3UHRyLT5iYWNr KCk7CisgICAgICAgICAgICAgICAgICAgIG1fdGFiV2lkZ2V0LT5lbmFibGVE aXNhYmxlVG9vbEJ1dHRvbihtX3RhYldpZGdldC0+Y3VycmVudEluZGV4KCkp OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg fQorICAgIH0KK30KKworLy9TbG90OiBnbyBmb3J3YXJkIHRvIHBhZ2UgYW5k IGVuYWJsZS9kaXNhYmxlIHRvb2xidXR0b24KK3ZvaWQgQnJvd3NlcldpbmRv dzo6Z29Gb3J3YXJkUGFnZSgpCit7CisgICAgV2ViVmlld1dpbmRvdyAqd2Vi dmlld1B0ciA9IE5VTEw7CisKKyAgICBRV2lkZ2V0ICp0YWIgPSBtX3RhYldp ZGdldC0+d2lkZ2V0KG1fdGFiV2lkZ2V0LT5jdXJyZW50SW5kZXgoKSk7Cisg ICAgaWYgKHRhYiAhPSBOVUxMKQorICAgIHsKKyAgICAgICAgUUxpc3Q8UVdp ZGdldCo+IHdpZGdldExpc3QgPSB0YWItPmZpbmRDaGlsZHJlbjxRV2lkZ2V0 Kj4oKTsKKyAgICAgICAgZm9yZWFjaCggUVdpZGdldCogd2lkZ2V0UHRyLCB3 aWRnZXRMaXN0ICkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpZGdl dFB0ciAhPSBOVUxMKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg IHdlYnZpZXdQdHIgPSBkeW5hbWljX2Nhc3Q8V2ViVmlld1dpbmRvdyo+KHdp ZGdldFB0cik7CisgICAgICAgICAgICAgICAgaWYgKHdlYnZpZXdQdHIgIT0g TlVMTCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAg IHdlYnZpZXdQdHItPmZvcndhcmQoKTsKKyAgICAgICAgICAgICAgICAgICAg bV90YWJXaWRnZXQtPmVuYWJsZURpc2FibGVUb29sQnV0dG9uKG1fdGFiV2lk Z2V0LT5jdXJyZW50SW5kZXgoKSk7CisgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCisvLyBTbG90OiBz ZXQgdGhlIHRpdGxlIG9mIHRhYiB3aGVuIHRoZSBuZXcgdGFiIGNyZWF0ZWQg b3IgZXhpc3RpbmcgdGFiIGNvbnRlbnRzIGNoYW5nZWQKK3ZvaWQgQnJvd3Nl cldpbmRvdzo6dGFiVGl0bGVDaGFuZ2VkKGNvbnN0IFFTdHJpbmcgJnN0cikK K3sKKyAgICBpZiAoIXN0ci5pc0VtcHR5KCkpCisgICAgeworICAgICAgICBR T2JqZWN0ICpzZW5kZXJQdHIgPSBRT2JqZWN0OjpzZW5kZXIoKTsKKyAgICAg ICAgV2ViVmlld1dpbmRvdyAqd2ViVmlld1B0ciA9IE5VTEw7CisgICAgICAg IGlmIChzZW5kZXJQdHIgIT0gTlVMTCkKKyAgICAgICAgeworICAgICAgICAg ICAgd2ViVmlld1B0ciA9IGR5bmFtaWNfY2FzdDxXZWJWaWV3V2luZG93Kj4o c2VuZGVyUHRyKTsKKyAgICAgICAgICAgIGlmICh3ZWJWaWV3UHRyICE9IE5V TEwpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbV90YWJXaWRn ZXQtPnNldFRhYlRleHQod2ViVmlld1B0ci0+Z2V0VGFiSW5kZXgoKSwgc3Ry KTsKKyAgICAgICAgICAgICAgICBtX3RhYldpZGdldC0+c2V0VGFiVG9vbFRp cFRleHQod2ViVmlld1B0ci0+Z2V0VGFiSW5kZXgoKSwgc3RyKTsKKyAgICAg ICAgICAgICAgICBtX3RhYldpZGdldC0+ZW5hYmxlRGlzYWJsZVRvb2xCdXR0 b24od2ViVmlld1B0ci0+Z2V0VGFiSW5kZXgoKSk7CisgICAgICAgICAgICB9 CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAg ICAgICBtX3RhYldpZGdldC0+c2V0VGFiVGV4dChtX3RhYldpZGdldC0+Y3Vy cmVudEluZGV4KCksIHN0cik7CisgICAgICAgICAgICBtX3RhYldpZGdldC0+ c2V0VGFiVG9vbFRpcFRleHQobV90YWJXaWRnZXQtPmN1cnJlbnRJbmRleCgp LCBzdHIpOworICAgICAgICB9CisgICAgfQorfQorCisvLyBTbG90OiBMaW5r IGlzIG9wZW4gZnJvbSBwZ0FkbWluIG1haW53aW5kb3cKK3ZvaWQgQnJvd3Nl cldpbmRvdzo6dXJsTGlua0NsaWNrZWQoY29uc3QgUVVybCAmbmFtZSkKK3sK KyAgICAvLyBGaXJzdCBjaGVjayBpcyB0aGVyZSBhbnkgdGFiIG9wZW5lZCB3 aXRoIHNhbWUgVVJMIHRoZW4gb3BlbiBpdCBhZ2Fpbi4KKyAgICBpbnQgdGFi Rm91bmQgPSBmaW5kVVJMVGFiKG5hbWUpOworCisgICAgaWYgKCF0YWJGb3Vu ZCkKKyAgICB7CisgICAgICAgIG1fYWRkTmV3VGFiID0gbmV3IFFXaWRnZXQo bV90YWJXaWRnZXQpOworICAgICAgICBtX2FkZE5ld0dyaWRMYXlvdXQgPSBu ZXcgUUdyaWRMYXlvdXQobV9hZGROZXdUYWIpOworICAgICAgICBtX2FkZE5l d0dyaWRMYXlvdXQtPnNldENvbnRlbnRzTWFyZ2lucygwLCAwLCAwLCAwKTsK KyAgICAgICAgbV9hZGROZXdXZWJWaWV3ID0gbmV3IFdlYlZpZXdXaW5kb3co bV9hZGROZXdUYWIpOworCisgICAgICAgIG1fd2lkZ2V0ID0gbmV3IFFXaWRn ZXQobV9hZGROZXdUYWIpOworICAgICAgICBtX3Rvb2xCdG5CYWNrID0gbmV3 IFFUb29sQnV0dG9uKG1fd2lkZ2V0KTsKKyAgICAgICAgbV90b29sQnRuQmFj ay0+c2V0Rml4ZWRIZWlnaHQoMjApOworICAgICAgICBtX3Rvb2xCdG5CYWNr LT5zZXRGaXhlZFdpZHRoKDIwKTsKKyAgICAgICAgbV90b29sQnRuQmFjay0+ c2V0VGV4dCgiPCIpOworICAgICAgICBtX3Rvb2xCdG5Gb3J3YXJkID0gbmV3 IFFUb29sQnV0dG9uKG1fd2lkZ2V0KTsKKyAgICAgICAgbV90b29sQnRuRm9y d2FyZC0+c2V0Rml4ZWRIZWlnaHQoMjApOworICAgICAgICBtX3Rvb2xCdG5G b3J3YXJkLT5zZXRGaXhlZFdpZHRoKDIwKTsKKyAgICAgICAgbV90b29sQnRu Rm9yd2FyZC0+c2V0VGV4dCgiPiIpOworICAgICAgICBtX3Rvb2xCdG5CYWNr LT5zZXREaXNhYmxlZCh0cnVlKTsKKyAgICAgICAgbV90b29sQnRuRm9yd2Fy ZC0+c2V0RGlzYWJsZWQodHJ1ZSk7CisKKyAgICAgICAgUVB1c2hCdXR0b24g Km1fcHVzaEJ0biA9IG5ldyBRUHVzaEJ1dHRvbihtX3dpZGdldCk7CisgICAg ICAgIG1fcHVzaEJ0bi0+c2V0VGV4dChRU3RyaW5nKCJ4IikpOworICAgICAg ICBtX3B1c2hCdG4tPnNldEZpeGVkSGVpZ2h0KDIwKTsKKyAgICAgICAgbV9w dXNoQnRuLT5zZXRGaXhlZFdpZHRoKDIwKTsKKworICAgICAgICBtX2hvcml6 b250YWxMYXlvdXQgPSBuZXcgUUhCb3hMYXlvdXQobV93aWRnZXQpOworICAg ICAgICBtX2hvcml6b250YWxMYXlvdXQtPnNldFNpemVDb25zdHJhaW50KFFM YXlvdXQ6OlNldE1pbkFuZE1heFNpemUpOworICAgICAgICBtX2hvcml6b250 YWxMYXlvdXQtPmFkZFdpZGdldChtX3Rvb2xCdG5CYWNrKTsKKyAgICAgICAg bV9ob3Jpem9udGFsTGF5b3V0LT5hZGRXaWRnZXQobV90b29sQnRuRm9yd2Fy ZCk7CisKKyAgICAgICAgLy9SZWdpc3RlciB0aGUgc2xvdCBvbiB0aXRsZUNo YW5nZSBzbyBzZXQgdGhlIHRhYiB0ZXh0IGFjY29yZGluZ2x5CisgICAgICAg IGNvbm5lY3QobV9hZGROZXdXZWJWaWV3LFNJR05BTCh0aXRsZUNoYW5nZWQo Y29uc3QgUVN0cmluZyAmKSksU0xPVCh0YWJUaXRsZUNoYW5nZWQoY29uc3Qg UVN0cmluZyAmKSkpOworICAgICAgICAvL1JlZ2lzdGVyIHRoZSBzbG90IG9u IHRvb2xidXR0b24gdG8gc2hvdyB0aGUgcHJldmlvdXMgaGlzdG9yeSBvZiB3 ZWIKKyAgICAgICAgY29ubmVjdChtX3Rvb2xCdG5CYWNrLFNJR05BTChjbGlj a2VkKCkpLHRoaXMsU0xPVChnb0JhY2tQYWdlKCkpKTsKKyAgICAgICAgLy9S ZWdpc3RlciB0aGUgc2xvdCBvbiB0b29sYnV0dG9uIHRvIHNob3cgdGhlIG5l eHQgaGlzdG9yeSBvZiB3ZWIKKyAgICAgICAgY29ubmVjdChtX3Rvb2xCdG5G b3J3YXJkLFNJR05BTChjbGlja2VkKCkpLHRoaXMsU0xPVChnb0ZvcndhcmRQ YWdlKCkpKTsKKyAgICAgICAgLy9SZWdpc3RlciB0aGUgc2xvdCBvbiBjbG9z ZSBidXR0b24gLCBhZGRlZCBtYW51YWxseQorICAgICAgICBjb25uZWN0KG1f cHVzaEJ0bixTSUdOQUwoY2xpY2tlZCgpKSxTTE9UKGNsb3NldGFicygpKSk7 CisKKyAgICAgICAgbV9hZGROZXdHcmlkTGF5b3V0LT5hZGRXaWRnZXQobV9h ZGROZXdXZWJWaWV3LCAwLCAwLCAxLCAxKTsKKyAgICAgICAgbV90YWJXaWRn ZXQtPmFkZFRhYihtX2FkZE5ld1RhYiwgUVN0cmluZygpKTsKKyAgICAgICAg bV90YWJXaWRnZXQtPnNldEN1cnJlbnRJbmRleCgobV90YWJXaWRnZXQtPmNv dW50KCkgLSAxKSk7CisgICAgICAgIC8vIFNldCB0aGUgYmFjayBhbmQgZm9y d2FyZCBidXR0b24gb24gdGFiCisgICAgICAgIG1fdGFiV2lkZ2V0LT50YWJC YXIoKS0+c2V0VGFiQnV0dG9uKChtX3RhYldpZGdldC0+Y291bnQoKSAtIDEp LCBRVGFiQmFyOjpMZWZ0U2lkZSwgbV93aWRnZXQpOworICAgICAgICBtX3Rh YldpZGdldC0+dGFiQmFyKCktPnNldFRhYkJ1dHRvbigobV90YWJXaWRnZXQt PmNvdW50KCkgLSAxKSwgUVRhYkJhcjo6UmlnaHRTaWRlLCBtX3B1c2hCdG4p OworCisgICAgICAgIG1fYWRkTmV3V2ViVmlldy0+c2V0Rmlyc3RMb2FkVVJM KG5hbWUudXJsKCkpOworICAgICAgICBtX2FkZE5ld1dlYlZpZXctPnNldFRh YkluZGV4KChtX3RhYldpZGdldC0+Y291bnQoKSAtIDEpKTsKKyAgICAgICAg bV9hZGROZXdXZWJWaWV3LT5zZXRVcmwobmFtZSk7CisgICAgfQorfQogCiAv LyBQYXVzZSBmb3IgbiBzZWNvbmRzLCB3aXRob3V0IGZyZWV6aW5nIHRoZSBV SS4KIHZvaWQgQnJvd3NlcldpbmRvdzo6cGF1c2UoaW50IHNlY29uZHMpCkBA IC0xNjAsMTQgKzQxMiwxMiBAQCB2b2lkIEJyb3dzZXJXaW5kb3c6OnBhdXNl KGludCBzZWNvbmRzKQogICAgICAgICBRQ29yZUFwcGxpY2F0aW9uOjpwcm9j ZXNzRXZlbnRzKFFFdmVudExvb3A6OkFsbEV2ZW50cywgMTAwKTsgICAgCiB9 CiAKLQogLy8gRGlzcGxheSB0aGUgYWJvdXQgYm94CiB2b2lkIEJyb3dzZXJX aW5kb3c6OmFib3V0KCkKIHsKICAgICBRTWVzc2FnZUJveDo6YWJvdXQodGhp cywgdHIoIkFib3V0IHBnQWRtaW4gNCIpLCB0cigicGdBZG1pbiA0IC0gUG9z dGdyZVNRTCBUb29scyIpKTsKIH0KIAotCiAvLyBPcGVuIGFuIGFyYml0cmFy eSBVUkwKIHZvaWQgQnJvd3NlcldpbmRvdzo6b3BlblVybCgpCiB7CkBAIC0x NzUsNyArNDI1LDcgQEAgdm9pZCBCcm93c2VyV2luZG93OjpvcGVuVXJsKCkK ICAgICBRU3RyaW5nIHVybCA9IFFJbnB1dERpYWxvZzo6Z2V0VGV4dCh0aGlz LCB0cigiT3BlbiBVUkwiKSwgdHIoIkVudGVyIGEgVVJMIiksIFFMaW5lRWRp dDo6Tm9ybWFsLCAiaHR0cDovLyIsICZvayk7CiAKICAgICBpZiAob2sgJiYg IXVybC5pc0VtcHR5KCkpCi0gICAgICAgIHdlYlZpZXctPnNldFVybCh1cmwp OworICAgICAgICBtX21haW5XZWJWaWV3LT5zZXRVcmwodXJsKTsKIH0KIAog Ly8gT3BlbiBhbiBhcmJpdHJhcnkgVVJMCmRpZmYgLS1naXQgYS9ydW50aW1l L0Jyb3dzZXJXaW5kb3cuaCBiL3J1bnRpbWUvQnJvd3NlcldpbmRvdy5oCmlu ZGV4IGU1ODBkOGIuLmZjNDUxNzMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvQnJv d3NlcldpbmRvdy5oCisrKyBiL3J1bnRpbWUvQnJvd3NlcldpbmRvdy5oCkBA IC0yLDcgKzIsNyBAQAogLy8KIC8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwg VG9vbHMKIC8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMTMsIFRoZSBwZ0FkbWlu IERldmVsb3BtZW50IFRlYW0KKy8vIENvcHlyaWdodCAoQykgMjAxNiwgVGhl IHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQogLy8gVGhpcyBzb2Z0d2FyZSBp cyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCiAvLwog Ly8gQnJvd3NlcldpbmRvdy5oIC0gRGVjbGFyYXRpb24gb2YgdGhlIG1haW4g d2luZG93IGNsYXNzCkBAIC0xMyw4ICsxMyw4IEBACiAjZGVmaW5lIEJST1dT RVJXSU5ET1dfSAogCiAjaW5jbHVkZSAicGdBZG1pbjQuaCIKLQotI2luY2x1 ZGUgPFF0R2xvYmFsPgorI2luY2x1ZGUgIlRhYldpbmRvdy5oIgorI2luY2x1 ZGUgIldlYlZpZXdXaW5kb3cuaCIKIAogI2lmIFFUX1ZFUlNJT04gPj0gMHgw NTAwMDAKICNpbmNsdWRlIDxRdFdpZGdldHM+CkBAIC00MSwxNSArNDEsMjMg QEAgcHJvdGVjdGVkOgogCiBwcm90ZWN0ZWQgc2xvdHM6CiAgICAgdm9pZCBm aW5pc2hMb2FkaW5nKGJvb2wpOworICAgIHZvaWQgdXJsTGlua0NsaWNrZWQo Y29uc3QgUVVybCAmKTsKKyAgICB2b2lkIGNsb3NldGFicygpOworICAgIHZv aWQgdGFiVGl0bGVDaGFuZ2VkKGNvbnN0IFFTdHJpbmcgJik7CiAKIHByaXZh dGUgc2xvdHM6CiAgICAgdm9pZCBvcGVuVXJsKCk7CiAgICAgdm9pZCBweXRo b25QYXRoKCk7CiAgICAgdm9pZCBhYm91dCgpOwogCitwdWJsaWMgc2xvdHM6 CisgICAgdm9pZCB0YWJJbmRleENoYW5nZWQoaW50IGluZGV4KTsKKyAgICB2 b2lkIGdvQmFja1BhZ2UoKTsKKyAgICB2b2lkIGdvRm9yd2FyZFBhZ2UoKTsK KwogcHJpdmF0ZToKICAgICBRU3RyaW5nIG1fYXBwU2VydmVyVXJsOwotICAg IFFXZWJWaWV3ICp3ZWJWaWV3OworICAgIFdlYlZpZXdXaW5kb3cgKm1fbWFp bldlYlZpZXc7CiAgICAgUU1lbnUgKmZpbGVNZW51OwogICAgIFFNZW51ICpo ZWxwTWVudTsKICAgICBRQWN0aW9uICpvcGVuVXJsQWN0aW9uOwpAQCAtNTcs MTIgKzY1LDI2IEBAIHByaXZhdGU6CiAgICAgUUFjdGlvbiAqZXhpdEFjdGlv bjsKICAgICBRQWN0aW9uICphYm91dEFjdGlvbjsKIAorICAgIFFHcmlkTGF5 b3V0ICAqbV90YWJHcmlkTGF5b3V0OworICAgIFFHcmlkTGF5b3V0ICAqbV9t YWluR3JpZExheW91dDsKKyAgICBUYWJXaW5kb3cgICAgKm1fdGFiV2lkZ2V0 OworICAgIFFXaWRnZXQgICAgICAqbV9wZ0FkbWluTWFpblRhYjsKKworICAg IFFXaWRnZXQgICAgICAgICAgICptX2FkZE5ld1RhYjsKKyAgICBRR3JpZExh eW91dCAgICAgICAqbV9hZGROZXdHcmlkTGF5b3V0OworICAgIFdlYlZpZXdX aW5kb3cgICAgICptX2FkZE5ld1dlYlZpZXc7CisgICAgUUhCb3hMYXlvdXQg ICAgICAgKm1faG9yaXpvbnRhbExheW91dDsKKyAgICBRV2lkZ2V0ICAgICAg ICAgICAqbV93aWRnZXQ7CisgICAgUVRvb2xCdXR0b24gICAgICAgKm1fdG9v bEJ0bkJhY2s7CisgICAgUVRvb2xCdXR0b24gICAgICAgKm1fdG9vbEJ0bkZv cndhcmQ7CisKICAgICBib29sIG1faW5pdGlhbExvYWQ7CiAgICAgaW50IG1f bG9hZEF0dGVtcHQ7CiAKICAgICB2b2lkIGNyZWF0ZUFjdGlvbnMoKTsKICAg ICB2b2lkIGNyZWF0ZU1lbnVzKCk7CiAgICAgdm9pZCBwYXVzZShpbnQgc2Vj b25kcyA9IDEpOworICAgIGludCAgZmluZFVSTFRhYihjb25zdCBRVXJsICZu YW1lKTsKIH07CiAKICNlbmRpZiAvLyBCUk9XU0VSV0lORE9XX0gKZGlmZiAt LWdpdCBhL3J1bnRpbWUvU2VydmVyLmNwcCBiL3J1bnRpbWUvU2VydmVyLmNw cAppbmRleCBiNDdlY2UzLi40MmI2MzZkIDEwMDY0NAotLS0gYS9ydW50aW1l L1NlcnZlci5jcHAKKysrIGIvcnVudGltZS9TZXJ2ZXIuY3BwCkBAIC0yLDcg KzIsNyBAQAogLy8KIC8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMK IC8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMTMsIFRoZSBwZ0FkbWluIERldmVs b3BtZW50IFRlYW0KKy8vIENvcHlyaWdodCAoQykgMjAxNiwgVGhlIHBnQWRt aW4gRGV2ZWxvcG1lbnQgVGVhbQogLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxl YXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCiAvLwogLy8gU2Vy dmVyLmNwcCAtIFRocmVhZCBpbiB3aGljaCB0aGUgd2ViIHNlcnZlciB3aWxs IHJ1bi4KQEAgLTI2LDkgKzI2LDIxIEBAIFNlcnZlcjo6U2VydmVyKHF1aW50 MTYgcG9ydCkKIHsgICAgCiAgICAgLy8gQXBwc2VydmVyIHBvcnQKICAgICBt X3BvcnQgPSBwb3J0OworICAgIG1fd2NBcHBOYW1lID0gTlVMTDsKIAogICAg IC8vIEluaXRpYWxpc2UgUHl0aG9uCisgICAgLy8gQXMgUHl0aG9uMyByZXF1 aXJlIHRvIGNvbnZlcnQgY2hhciAgKiB0byB3Y2hhcl90ICogdHlwZSBzbyBi ZWxvdyBjb25kaXRpb24gaXMgcmVxdWlyZWQgZm9yCisgICAgLy8gUHl0aG9u MiBhbmQgUHl0aG9uMworI2lmZGVmIFBZVEhPTjIKICAgICBQeV9TZXRQcm9n cmFtTmFtZShQR0FfQVBQX05BTUUudG9VdGY4KCkuZGF0YSgpKTsKKyNlbHNl CisgICAgY2hhciAqYXBwTmFtZSA9IFBHQV9BUFBfTkFNRS50b1V0ZjgoKS5k YXRhKCk7CisgICAgY29uc3Qgc2l6ZV90IGNTaXplID0gc3RybGVuKGFwcE5h bWUpKzE7CisgICAgbV93Y0FwcE5hbWUgPSBuZXcgd2NoYXJfdFtjU2l6ZV07 CisgICAgbWJzdG93Y3MgKG1fd2NBcHBOYW1lLCBhcHBOYW1lLCBjU2l6ZSk7 CisgICAgUHlfU2V0UHJvZ3JhbU5hbWUobV93Y0FwcE5hbWUpOworI2VuZGlm CisKICAgICBQeV9Jbml0aWFsaXplKCk7CiAKICAgICAvLyBTZXR1cCB0aGUg c2VhcmNoIHBhdGgKQEAgLTQ1LDEyICs1NywyMSBAQCBTZXJ2ZXI6OlNlcnZl cihxdWludDE2IHBvcnQpCiAKICAgICAgICAgLy8gQWRkIG5ldyBhZGRpdGlv bmFsIHBhdGggZWxlbWVudHMKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg PCBwYXRoX2xpc3Quc2l6ZSgpOyArK2kpCisgICAgICAgIHsKKyAgICAgICAg ICAgICNpZmRlZiBQWVRIT04yCiAgICAgICAgICAgICBQeUxpc3RfQXBwZW5k KHN5c1BhdGgsIFB5U3RyaW5nX0Zyb21TdHJpbmcocGF0aF9saXN0LmF0KGkp LnRvVXRmOCgpLmRhdGEoKSkpOworICAgICAgICAgICAgI2Vsc2UKKyAgICAg ICAgICAgIFB5TGlzdF9BcHBlbmQoc3lzUGF0aCwgUHlCeXRlc19Gcm9tU3Ry aW5nKHBhdGhfbGlzdC5hdChpKS50b1V0ZjgoKS5kYXRhKCkpKTsKKyAgICAg ICAgICAgICNlbmRpZgorICAgICAgICB9CiAgICAgfQogfQogCiBTZXJ2ZXI6 On5TZXJ2ZXIoKQogeworICAgIGlmIChtX3djQXBwTmFtZSkKKyAgICAgICAg ZGVsZXRlIG1fd2NBcHBOYW1lOworCiAgICAgLy8gU2h1dGRvd24gUHl0aG9u CiAgICAgUHlfRmluYWxpemUoKTsKIH0KZGlmZiAtLWdpdCBhL3J1bnRpbWUv U2VydmVyLmggYi9ydW50aW1lL1NlcnZlci5oCmluZGV4IDczYzA2YjcuLjFj YzJmY2IgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvU2VydmVyLmgKKysrIGIvcnVu dGltZS9TZXJ2ZXIuaApAQCAtMiw3ICsyLDcgQEAKIC8vCiAvLyBwZ0FkbWlu IDQgLSBQb3N0Z3JlU1FMIFRvb2xzCiAvLwotLy8gQ29weXJpZ2h0IChDKSAy MDEzLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBDb3B5cmln aHQgKEMpIDIwMTYsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KIC8v IFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVT UUwgTGljZW5jZQogLy8KIC8vIFNlcnZlci5oIC0gVGhyZWFkIGluIHdoaWNo IHRoZSB3ZWIgc2VydmVyIHdpbGwgcnVuLgpAQCAtMzgsNyArMzgsOCBAQCBw cml2YXRlOgogICAgIFFTdHJpbmcgbV9hcHBmaWxlOwogICAgIFFTdHJpbmcg bV9lcnJvcjsKIAotICAgIHF1aW50MTYgbV9wb3J0OworICAgIHF1aW50MTYg IG1fcG9ydDsKKyAgICB3Y2hhcl90ICptX3djQXBwTmFtZTsKIH07CiAKICNl bmRpZiAvLyBTRVJWRVJfSApkaWZmIC0tZ2l0IGEvcnVudGltZS9UYWJXaW5k b3cuY3BwIGIvcnVudGltZS9UYWJXaW5kb3cuY3BwCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlOTY3MGMKLS0tIC9kZXYvbnVsbAor KysgYi9ydW50aW1lL1RhYldpbmRvdy5jcHAKQEAgLTAsMCArMSwxMzQgQEAK Ky8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1p biA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykg MjAxNiwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBz b2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNl bmNlCisvLworLy8gVGFiV2luZG93LmNwcCAtIEltcGxlbWVudGF0aW9uIG9m IHRoZSBjdXN0b20gdGFiIHdpZGdldAorLy8KKy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vCisKKyNpbmNsdWRlICJwZ0FkbWluNC5oIgorCisvLyBB cHAgaGVhZGVycworI2luY2x1ZGUgIlRhYldpbmRvdy5oIgorCisKK1RhYldp bmRvdzo6VGFiV2luZG93KFFXaWRnZXQgKnBhcmVudCkgOgorICAgIFFUYWJX aWRnZXQocGFyZW50KQoreworICAgIHNldFBhcmVudChwYXJlbnQpOworICAg IHNldFRhYnNDbG9zYWJsZShmYWxzZSk7CisgICAgc2V0RWxpZGVNb2RlKFF0 OjpFbGlkZVJpZ2h0KTsKKyNpZmRlZiBfX0FQUExFX18KKyAgICBtX3Rlc3RU YWJCYXIgPSBuZXcgVGFiQmFyKCk7CisgICAgc2V0VGFiQmFyKG1fdGVzdFRh YkJhcik7CisjZW5kaWYKKworfQorCisvLyBoaWRlIHRoZSBjbG9zZSBidXR0 b24gb2YgZ2l2ZW4gaW5kZXggZGlzcGxheWVkIG9uIHJpZ2h0IHNpZGUgb2Yg dGFiCit2b2lkIFRhYldpbmRvdzo6ZW5hYmxlRGlzYWJsZVRvb2xCdXR0b24o Y29uc3QgaW50ICZpbmRleCkKK3sKKyAgICBRVG9vbEJ1dHRvbiAqdG9vbEJ0 blB0ciA9IE5VTEw7CisgICAgV2ViVmlld1dpbmRvdyAqd2Vidmlld1B0ciA9 IE5VTEw7CisKKyAgICAvLyBDb2RlIHRvIGVuYWJsZS9kaXNhYmxlIHRoZSB0 b29sYnV0dG9uIGJhc2VkIG9uIHRoZSBoaXN0b3J5CisgICAgUVdpZGdldCAq dGFiMSA9IHRoaXMtPndpZGdldChpbmRleCk7CisgICAgaWYgKHRhYjEgIT0g TlVMTCkKKyAgICB7CisgICAgICAgIFFMaXN0PFFXaWRnZXQqPiB3aWRnZXRM aXN0ID0gdGFiMS0+ZmluZENoaWxkcmVuPFFXaWRnZXQqPigpOworICAgICAg ICBmb3JlYWNoKCBRV2lkZ2V0KiB3aWRnZXRQdHIsIHdpZGdldExpc3QgKQor ICAgICAgICB7CisgICAgICAgICAgICBpZiAod2lkZ2V0UHRyICE9IE5VTEwp CisgICAgICAgICAgICAgICAgd2Vidmlld1B0ciA9IGR5bmFtaWNfY2FzdDxX ZWJWaWV3V2luZG93Kj4od2lkZ2V0UHRyKTsKKyAgICAgICAgfQorICAgIH0K KworICAgIFFXaWRnZXQgKnRhYiA9IHRhYkJhcigpLT50YWJCdXR0b24oaW5k ZXgsIFFUYWJCYXI6OkxlZnRTaWRlKTsKKyAgICBpZiAodGFiICE9IE5VTEwp CisgICAgeworICAgICAgICBRTGlzdDxRV2lkZ2V0Kj4gd2lkZ2V0TGlzdCA9 IHRhYi0+ZmluZENoaWxkcmVuPFFXaWRnZXQqPigpOworICAgICAgICBmb3Jl YWNoKCBRV2lkZ2V0KiB3aWRnZXRQdHIsIHdpZGdldExpc3QgKQorICAgICAg ICB7CisgICAgICAgICAgICBpZiAod2lkZ2V0UHRyICE9IE5VTEwpCisgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICAgdG9vbEJ0blB0ciA9IGR5bmFt aWNfY2FzdDxRVG9vbEJ1dHRvbio+KHdpZGdldFB0cik7CisgICAgICAgICAg ICAgICAgaWYgKHdlYnZpZXdQdHIgIT0gTlVMTCAmJiB0b29sQnRuUHRyICE9 IE5VTEwpCisgICAgICAgICAgICAgICAgeworCQkgICAgaWYgKCFRU3RyaW5n Ojpjb21wYXJlKHRvb2xCdG5QdHItPnRleHQoKSxRU3RyaW5nKCI8IiksIFF0 OjpDYXNlSW5zZW5zaXRpdmUpKQorICAgICAgICAgICAgICAgICAgICB7CisJ CQlpZiAod2Vidmlld1B0ci0+cGFnZSgpLT5oaXN0b3J5KCktPmNhbkdvQmFj aygpKQorCQkJICAgIHRvb2xCdG5QdHItPnNldERpc2FibGVkKGZhbHNlKTsK KwkJICAgICAgICBlbHNlCisJCQkgICAgdG9vbEJ0blB0ci0+c2V0RGlzYWJs ZWQodHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKworCQkgICAgaWYg KCFRU3RyaW5nOjpjb21wYXJlKHRvb2xCdG5QdHItPnRleHQoKSxRU3RyaW5n KCI+IiksIFF0OjpDYXNlSW5zZW5zaXRpdmUpKQorICAgICAgICAgICAgICAg ICAgICB7CisJCQlpZiAod2Vidmlld1B0ci0+cGFnZSgpLT5oaXN0b3J5KCkt PmNhbkdvRm9yd2FyZCgpKQorCQkJICAgIHRvb2xCdG5QdHItPnNldERpc2Fi bGVkKGZhbHNlKTsKKwkJICAgICAgICBlbHNlCisJCQkgICAgdG9vbEJ0blB0 ci0+c2V0RGlzYWJsZWQodHJ1ZSk7CisJCSAgICB9CisJCX0KKyAgICAgICAg ICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworLy8gZ2V0IHRoZSBpbmRl eCBvZiB0aGUgcHVzaGJ1dHRvbiB3aGljaCBpcyByZXF1ZXN0ZWQgYnkgdXNl ciB0byBjbG9zZSB0aGUgdGFiCitpbnQgVGFiV2luZG93OjpnZXRCdXR0b25J bmRleChRUHVzaEJ1dHRvbiAqYnRuKQoreworICAgIFFQdXNoQnV0dG9uICpu ZXh0QnRuUHRyID0gTlVMTDsKKyAgICBpbnQgbG9vcENvdW50ID0gMDsKKyAg ICBpbnQgdG90YWxUYWJzID0gdGhpcy0+Y291bnQoKTsKKworICAgIGZvciAo bG9vcENvdW50ID0gMTtsb29wQ291bnQgPCB0b3RhbFRhYnM7bG9vcENvdW50 KyspCisgICAgeworICAgICAgICBRV2lkZ2V0ICp0YWIgPSB0YWJCYXIoKS0+ dGFiQnV0dG9uKGxvb3BDb3VudCwgUVRhYkJhcjo6UmlnaHRTaWRlKTsKKyAg ICAgICAgaWYgKHRhYiAhPSBOVUxMKQorICAgICAgICB7CisgICAgICAgICAg ICBuZXh0QnRuUHRyID0gZHluYW1pY19jYXN0PFFQdXNoQnV0dG9uKj4odGFi KTsKKyAgICAgICAgICAgIGlmIChuZXh0QnRuUHRyICE9IE5VTEwgJiYgYnRu ICE9IE5VTEwgJiYgbmV4dEJ0blB0ciA9PSBidG4pCisgICAgICAgICAgICAg ICAgcmV0dXJuIGxvb3BDb3VudDsKKyAgICAgICAgfQorICAgIH0KKworICAg IHJldHVybiAwOworfQorCisvLyBTaG93IGFuZCBIaWRlIHRoZSB0b29sYnV0 dG9uIG9uY2UgdGhlIHRhYiBpcyBkZXNlbGVjdGVkIGRlcGVuZGluZyBvbiB0 aGUgb3B0aW9uCisvLyBvcHRpb24gMDogSGlkZSB0aGUgdG9vbEJ1dHRvbgor Ly8gb3B0aW9uIDE6IFNob3cgdGhlIHRvb2xCdXR0b24KK3ZvaWQgVGFiV2lu ZG93OjpzaG93SGlkZVRvb2xCdXR0b24oY29uc3QgaW50ICZpbmRleCwgY29u c3QgaW50ICZvcHRpb24pCit7CisgICAgUVRvb2xCdXR0b24gKnRvb2xCdG5Q dHIgPSBOVUxMOworCisgICAgUVdpZGdldCAqdGFiID0gdGFiQmFyKCktPnRh YkJ1dHRvbihpbmRleCwgUVRhYkJhcjo6TGVmdFNpZGUpOworICAgIGlmICh0 YWIgIT0gTlVMTCkKKyAgICB7CisgICAgICAgIFFMaXN0PFFXaWRnZXQqPiB3 aWRnZXRMaXN0ID0gdGFiLT5maW5kQ2hpbGRyZW48UVdpZGdldCo+KCk7Cisg ICAgICAgIGZvcmVhY2goIFFXaWRnZXQqIHdpZGdldFB0ciwgd2lkZ2V0TGlz dCApCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICh3aWRnZXRQdHIgIT0g TlVMTCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0b29sQnRu UHRyID0gZHluYW1pY19jYXN0PFFUb29sQnV0dG9uKj4od2lkZ2V0UHRyKTsK KyAgICAgICAgICAgICAgICBpZiAodG9vbEJ0blB0ciAhPSBOVUxMKQorCQl7 CisJCSAgICBpZiAoIW9wdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAg IHRvb2xCdG5QdHItPmhpZGUoKTsKKwkJICAgIGVsc2UKKyAgICAgICAgICAg ICAgICAgICAgICAgIHRvb2xCdG5QdHItPnNob3coKTsKKwkJfQorICAgICAg ICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCisvLyBTZXQgdGhlIHRh YiB0b29sIHRpcCB0ZXh0Cit2b2lkIFRhYldpbmRvdzo6c2V0VGFiVG9vbFRp cFRleHQoY29uc3QgaW50ICZpbmRleCwgY29uc3QgUVN0cmluZyAmdG9vbFRp cFN0cmluZykKK3sKKyAgICB0YWJCYXIoKS0+c2V0VGFiVG9vbFRpcChpbmRl eCwgdG9vbFRpcFN0cmluZyk7Cit9CmRpZmYgLS1naXQgYS9ydW50aW1lL1Rh YldpbmRvdy5oIGIvcnVudGltZS9UYWJXaW5kb3cuaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi42N2U1OWFkCi0tLSAvZGV2L251bGwK KysrIGIvcnVudGltZS9UYWJXaW5kb3cuaApAQCAtMCwwICsxLDUyIEBACisv Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4g NCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIw MTYsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29m dHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5j ZQorLy8KKy8vIFRhYldpbmRvdy5oIC0gRGVjbGFyYXRpb24gb2YgdGhlIGN1 c3RvbSB0YWIgd2lkZ2V0CisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8KKworI2lmbmRlZiBUQUJXSU5ET1dfSAorI2RlZmluZSBUQUJXSU5E T1dfSAorCisjaW5jbHVkZSAicGdBZG1pbjQuaCIKKyNpbmNsdWRlICJXZWJW aWV3V2luZG93LmgiCisKK2NsYXNzIFRhYkJhciA6IHB1YmxpYyBRVGFiQmFy Cit7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBUYWJCYXIoUVdpZGdl dCogcGFyZW50PTApIDogUVRhYkJhcihwYXJlbnQpCisgICAgeworICAgIH0K KworcHJvdGVjdGVkOgorICAgIFFTaXplIHRhYlNpemVIaW50KGludCkgY29u c3QKKyAgICB7CisgICAgICAgIHJldHVybiBRU2l6ZSgyNTAsIDMyKTsKKyAg ICB9Cit9OworCitjbGFzcyBUYWJXaW5kb3cgOiBwdWJsaWMgUVRhYldpZGdl dAoreworICAgIFFfT0JKRUNUCitwdWJsaWM6CisgICAgVGFiV2luZG93KFFX aWRnZXQgKnBhcmVudCA9IDApOworCisgICAgaW50IGdldEJ1dHRvbkluZGV4 KFFQdXNoQnV0dG9uICpidG4pOworICAgIHZvaWQgc2hvd0hpZGVUb29sQnV0 dG9uKGNvbnN0IGludCAmaW5kZXgsY29uc3QgaW50ICZvcHRpb24pOworICAg IHZvaWQgZW5hYmxlRGlzYWJsZVRvb2xCdXR0b24oY29uc3QgaW50ICZpbmRl eCk7CisgICAgdm9pZCBzZXRUYWJUb29sVGlwVGV4dChjb25zdCBpbnQgJmlu ZGV4LCBjb25zdCBRU3RyaW5nICZ0b29sVGlwU3RyaW5nKTsKKyAgICBRVGFi QmFyICp0YWJCYXIoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIFFU YWJXaWRnZXQ6OnRhYkJhcigpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBU YWJCYXIgKm1fdGVzdFRhYkJhcjsKK307CisKKyNlbmRpZiAvLyBUQUJXSU5E T1dfSApkaWZmIC0tZ2l0IGEvcnVudGltZS9XZWJWaWV3V2luZG93LmNwcCBi L3J1bnRpbWUvV2ViVmlld1dpbmRvdy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uMGU2ZTczOAotLS0gL2Rldi9udWxsCisrKyBi L3J1bnRpbWUvV2ViVmlld1dpbmRvdy5jcHAKQEAgLTAsMCArMSw0MiBAQAor Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWlu IDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAy MDE2LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNv ZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2Vu Y2UKKy8vCisvLyBXZWJWaWV3V2luZG93LmNwcCAtIEltcGxlbWVudGF0aW9u IG9mIHRoZSBjdXN0b20gd2ViIHZpZXcgd2lkZ2V0CisvLworLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8KKworI2luY2x1ZGUgInBnQWRtaW40Lmgi CisKKy8vIEFwcCBoZWFkZXJzCisjaW5jbHVkZSAiV2ViVmlld1dpbmRvdy5o IgorCitXZWJWaWV3V2luZG93OjpXZWJWaWV3V2luZG93KFFXaWRnZXQgKnBh cmVudCkgOgorICAgIFFXZWJWaWV3KHBhcmVudCkKK3sKKyAgICBtX3VybCA9 IFFTdHJpbmcoIiIpOworICAgIG1fdGFiSW5kZXggPSAwOworfQorCit2b2lk IFdlYlZpZXdXaW5kb3c6OnNldEZpcnN0TG9hZFVSTChjb25zdCBRU3RyaW5n ICZ1cmwpCit7CisgICAgbV91cmwgPSB1cmw7Cit9CisKK1FTdHJpbmcgV2Vi Vmlld1dpbmRvdzo6Z2V0Rmlyc3RMb2FkVVJMKCkgY29uc3QKK3sKKyAgICBy ZXR1cm4gbV91cmw7Cit9CisKK3ZvaWQgV2ViVmlld1dpbmRvdzo6c2V0VGFi SW5kZXgoY29uc3QgaW50ICZ0YWJJbmRleCkKK3sKKyAgICBtX3RhYkluZGV4 ID0gdGFiSW5kZXg7Cit9CisKK2ludCBXZWJWaWV3V2luZG93OjpnZXRUYWJJ bmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdGFiSW5kZXg7Cit9CmRp ZmYgLS1naXQgYS9ydW50aW1lL1dlYlZpZXdXaW5kb3cuaCBiL3J1bnRpbWUv V2ViVmlld1dpbmRvdy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmI5ODhlNDgKLS0tIC9kZXYvbnVsbAorKysgYi9ydW50aW1lL1dl YlZpZXdXaW5kb3cuaApAQCAtMCwwICsxLDM1IEBACisvLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVT UUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTYsIFRoZSBwZ0Fk bWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVs ZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vIFdl YlZpZXdXaW5kb3cuaCAtIERlY2xhcmF0aW9uIG9mIHRoZSBjdXN0b20gd2Vi IHZpZXcgd2lkZ2V0CisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8KKworI2lmbmRlZiBXRUJWSUVXV0lORE9XX0gKKyNkZWZpbmUgV0VCVklF V1dJTkRPV19ICisKKyNpbmNsdWRlICJwZ0FkbWluNC5oIgorCisjaW5jbHVk ZSA8UXRXZWJLaXRXaWRnZXRzPgorCitjbGFzcyBXZWJWaWV3V2luZG93IDog cHVibGljIFFXZWJWaWV3Cit7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAg IFdlYlZpZXdXaW5kb3coUVdpZGdldCAqcGFyZW50ID0gTlVMTCk7CisgICB2 b2lkIHNldEZpcnN0TG9hZFVSTChjb25zdCBRU3RyaW5nICZ1cmwpOworICAg UVN0cmluZyBnZXRGaXJzdExvYWRVUkwoKSBjb25zdDsKKyAgIHZvaWQgc2V0 VGFiSW5kZXgoY29uc3QgaW50ICZ0YWJJbmRleCk7CisgICBpbnQgZ2V0VGFi SW5kZXgoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBRU3RyaW5nIG1fdXJs OworICAgIGludCBtX3RhYkluZGV4OworCit9OworCisjZW5kaWYgLy9XRUJW SUVXV0lORE9XX0gKZGlmZiAtLWdpdCBhL3J1bnRpbWUvcGdBZG1pbjQuY3Bw IGIvcnVudGltZS9wZ0FkbWluNC5jcHAKaW5kZXggNjU0NmViMi4uMWRiZmI3 MyAxMDA2NDQKLS0tIGEvcnVudGltZS9wZ0FkbWluNC5jcHAKKysrIGIvcnVu dGltZS9wZ0FkbWluNC5jcHAKQEAgLTIsNyArMiw3IEBACiAvLwogLy8gcGdB ZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scwogLy8KLS8vIENvcHlyaWdodCAo QykgMjAxMywgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gQ29w eXJpZ2h0IChDKSAyMDE2LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFt CiAvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0 Z3JlU1FMIExpY2VuY2UKIC8vCiAvLyBwZ0FkbWluNC5jcHAgLSBNYWluIGFw cGxpY2F0aW9uIGVudHJ5IHBvaW50CkBAIC0xNCwxNCArMTQsMTQgQEAKIC8v IE11c3QgYmUgYmVmb3JlIFFUCiAjaW5jbHVkZSA8UHl0aG9uLmg+CiAKLS8v IFFUIGhlYWRlcnMKLSNpbmNsdWRlIDxRdEdsb2JhbD4KLQogI2lmIFFUX1ZF UlNJT04gPj0gMHgwNTAwMDAKICNpbmNsdWRlIDxRdFdpZGdldHM+CiAjZWxz ZQogI2luY2x1ZGUgPFFBcHBsaWNhdGlvbj4KICNpbmNsdWRlIDxRRGVidWc+ CisjaW5jbHVkZSA8UXROZXR3b3JrPgorI2luY2x1ZGUgPFFMaW5lRWRpdD4K KyNpbmNsdWRlIDxRSW5wdXREaWFsb2c+CiAjZW5kaWYKIAogLy8gQXBwIGhl YWRlcnMKQEAgLTM4LDExICszOCwxOCBAQCBpbnQgbWFpbihpbnQgYXJnYywg Y2hhciAqIGFyZ3ZbXSkKICAgICBRQ29yZUFwcGxpY2F0aW9uOjpzZXRPcmdh bml6YXRpb25Eb21haW4oInBnYWRtaW4ub3JnIik7CiAgICAgUUNvcmVBcHBs aWNhdGlvbjo6c2V0QXBwbGljYXRpb25OYW1lKFBHQV9BUFBfTkFNRSk7CiAK KyAgICBxdWludDE2IHBvcnQgPSAwTDsKKwogICAgIC8vIEZpbmQgYW4gdW51 c2VkIHBvcnQgbnVtYmVyLiBFc3NlbnRpYWxseSwgd2UncmUganVzdCByZXNl cnZpbmcgb25lCiAgICAgLy8gaGVyZSB0aGF0IEZsYXNrIHdpbGwgdXNlIHdo ZW4gd2Ugc3RhcnQgdXAgdGhlIHNlcnZlci4KLSAgICBRVGNwU29ja2V0IHNv Y2tldDsKLSAgICBzb2NrZXQuYmluZCgwLCBRQWJzdHJhY3RTb2NrZXQ6OkRv bnRTaGFyZUFkZHJlc3MpOwotICAgIHF1aW50MTYgcG9ydCA9IHNvY2tldC5s b2NhbFBvcnQoKTsKKyAgICAvLyBJbiBvcmRlciB0byB1c2UgdGhlIHNvY2tl dCwgd2UgbmVlZCB0byBmcmVlIHRoaXMgc29ja2V0IEFTQVAuCisgICAgLy8g SGVuY2UgLSBwdXR0aW5nIHRoaXMgY29kZSBpbiBhIGNvZGUgYmxvY2ssIHNv IHRoYXQgLSB0aGUgc2NvcGUgb2Ygc29ja2V0CisgICAgLy8gdmFyaWFibGUg Z29lcyBvdXQgb2Ygc2NvcGUgdG8gbWFrZSB0aGF0IHNvY2tldCBhdmFpbGFi bGUuCisgICAgeworICAgICAgICBRVGNwU29ja2V0IHNvY2tldDsKKyAgICAg ICAgc29ja2V0LmJpbmQoMCwgUUFic3RyYWN0U29ja2V0OjpEb250U2hhcmVB ZGRyZXNzKTsKKyAgICAgICAgcG9ydCA9IHNvY2tldC5sb2NhbFBvcnQoKTsK KyAgICB9CiAKICAgICAvLyBGaXJlIHVwIHRoZSB3ZWJzZXJ2ZXIKICAgICBT ZXJ2ZXIgKnNlcnZlciA9IG5ldyBTZXJ2ZXIocG9ydCk7CmRpZmYgLS1naXQg YS9ydW50aW1lL3BnQWRtaW40LmggYi9ydW50aW1lL3BnQWRtaW40LmgKaW5k ZXggYTZiMjUxZi4uMGY3ZGQyNCAxMDA2NDQKLS0tIGEvcnVudGltZS9wZ0Fk bWluNC5oCisrKyBiL3J1bnRpbWUvcGdBZG1pbjQuaApAQCAtMiw3ICsyLDcg QEAKIC8vCiAvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCiAvLwot Ly8gQ29weXJpZ2h0IChDKSAyMDEzLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVu dCBUZWFtCisvLyBDb3B5cmlnaHQgKEMpIDIwMTYsIFRoZSBwZ0FkbWluIERl dmVsb3BtZW50IFRlYW0KIC8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQg dW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQogLy8KIC8vIHBnQWRtaW40 LmggLSBNYWluIGFwcGxpY2F0aW9uIGhlYWRlcgpAQCAtMjMsNiArMjMsNyBA QAogI2luY2x1ZGUgPFF0V2lkZ2V0cz4KICNlbHNlCiAjaW5jbHVkZSA8UUFw cGxpY2F0aW9uPgorI2luY2x1ZGUgPFF0L3F1cmwuaD4KICNlbmRpZgogCiAv LyBBcHBsaWNhdGlvbiBuYW1lCmRpZmYgLS1naXQgYS9ydW50aW1lL3BnQWRt aW40LnBybyBiL3J1bnRpbWUvcGdBZG1pbjQucHJvCmluZGV4IGM5ZGQ4YzIu LmQ3NWI5MmUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvcGdBZG1pbjQucHJvCisr KyBiL3J1bnRpbWUvcGdBZG1pbjQucHJvCkBAIC03LDIwICs3LDMyIEBAIGdy ZWF0ZXJUaGFuKFFUX01BSk9SX1ZFUlNJT04sIDQpIHsKICAgICBRVCArPSB3 ZWJraXQgbmV0d29yayAKIH0KIAorUFlUSE9OX0NPTkZJRz1weXRob24zLWNv bmZpZworCiAjIEZpbmQgYW5kIGNvbmZpZ3VyZSBQeXRob24KLSFzeXN0ZW0o d2hpY2ggcHl0aG9uLWNvbmZpZyA+IC9kZXYvbnVsbCAyPiYxKSB7Ci0gICAg ZXJyb3IoVGhlIHB5dGhvbi1jb25maWcgZXhlY3V0YWJsZSBjb3VsZCBub3Qg YmUgZm91bmQuIEVuc3VyZSBQeXRob24gaXMgaW5zdGFsbGVkIGFuZCBpbiB0 aGUgc3lzdGVtIHBhdGguKQorIXN5c3RlbSh3aGljaCBweXRob24zLWNvbmZp ZyA+IC9kZXYvbnVsbCAyPiYxKSB7CisgICAgIXN5c3RlbSh3aGljaCBweXRo b24tY29uZmlnID4gL2Rldi9udWxsIDI+JjEpIHsKKyAgICAgICAgZXJyb3Io VGhlIHB5dGhvbi1jb25maWcgZXhlY3V0YWJsZSBjb3VsZCBub3QgYmUgZm91 bmQuIEVuc3VyZSBQeXRob24gaXMgaW5zdGFsbGVkIGFuZCBpbiB0aGUgc3lz dGVtIHBhdGguKQorICAgIH0gZWxzZSB7CisJUFlUSE9OX0NPTkZJRz1weXRo b24tY29uZmlnCisJREVGSU5FUyArPSBQWVRIT04yCisgICAgfQogfQotUU1B S0VfQ1hYRkxBR1MgKz0gJCRzeXN0ZW0ocHl0aG9uLWNvbmZpZyAtLWluY2x1 ZGVzKQotUU1BS0VfTEZMQUdTICs9ICQkc3lzdGVtKHB5dGhvbi1jb25maWcg LS1sZGZsYWdzKQorCitRTUFLRV9DWFhGTEFHUyArPSAkJHN5c3RlbSgkJFBZ VEhPTl9DT05GSUcgLS1pbmNsdWRlcykKK1FNQUtFX0xGTEFHUyArPSAkJHN5 c3RlbSgkJFBZVEhPTl9DT05GSUcgLS1sZGZsYWdzKQogCiAjIFNvdXJjZSBj b2RlCiBIRUFERVJTICAgICA9ICAgQnJvd3NlcldpbmRvdy5oIFwKICAgICAg ICAgICAgICAgICBTZXJ2ZXIuaCBcCi0gICAgICAgICAgICAgICAgcGdBZG1p bjQuaAorICAgICAgICAgICAgICAgIHBnQWRtaW40LmggXAorICAgICAgICAg ICAgICAgIFRhYldpbmRvdy5oIFwKKyAgICAgICAgICAgICAgICBXZWJWaWV3 V2luZG93LmgKIFNPVVJDRVMgICAgID0gICBwZ0FkbWluNC5jcHAgXAogICAg ICAgICAgICAgICAgIEJyb3dzZXJXaW5kb3cuY3BwIFwKLSAgICAgICAgICAg ICAgICBTZXJ2ZXIuY3BwCisgICAgICAgICAgICAgICAgU2VydmVyLmNwcCBc CisgICAgICAgICAgICAgICAgVGFiV2luZG93LmNwcCBcCisgICAgICAgICAg ICAgICAgV2ViVmlld1dpbmRvdy5jcHAKIEZPUk1TICAgICAgID0gICBCcm93 c2VyV2luZG93LnVpCiBJQ09OICAgICAgICA9ICAgcGdBZG1pbjQuaWNucwog UU1BS0VfSU5GT19QTElTVCA9IEluZm8ucGxpc3QK --001a1146de5468bf4505295fe8e0 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers --001a1146de5468bf4505295fe8e0--