From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8614 invoked by alias); 5 Dec 2002 18:16:02 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 8564 invoked by uid 71); 5 Dec 2002 18:16:01 -0000 Resent-Date: 5 Dec 2002 18:16:01 -0000 Resent-Message-ID: <20021205181601.8563.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, aengus.stewart@cacner.org.uk Received: (qmail 4510 invoked by uid 61); 5 Dec 2002 18:06:55 -0000 Message-Id: <20021205180655.4509.qmail@sources.redhat.com> Date: Thu, 05 Dec 2002 10:16:00 -0000 From: aengus.stewart@cacner.org.uk Reply-To: aengus.stewart@cacner.org.uk To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: c++/8824: Internal compiler error X-SW-Source: 2002-12/txt/msg00284.txt.bz2 List-Id: >Number: 8824 >Category: c++ >Synopsis: Internal compiler error >Confidential: no >Severity: critical >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Thu Dec 05 10:16:01 PST 2002 >Closed-Date: >Last-Modified: >Originator: Aengus Stewart >Release: 3.0.4 >Organization: >Environment: SGI O2 MIPS R10000 running Irix 6.5.17m - gcc was prebuilt binary from SGI Freeware site. >Description: Compiling mozilla 1.2.1 got this error nsSoftwareUpdate.cpp: In function `void __static_initialization_and_destruction_0(int, int)': nsSoftwareUpdate.cpp:91: Internal compiler error in emit_move_insn_1, at expr.c :2975 Please submit a full bug report, with preprocessed source if appropriate. See for instructions. >How-To-Repeat: Followed instructions on SGI build page. However the compilation fell over after about 6 1/2 hours and I have no wish to attempt to repeat this :-) >Fix: >Release-Note: >Audit-Trail: >Unformatted: ----gnatsweb-attachment---- Content-Type: application/octet-stream; name="nsSoftwareUpdate.cpp" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="nsSoftwareUpdate.cpp" LyogLSotIE1vZGU6IEMrKzsgdGFiLXdpZHRoOiAyOyBpbmRlbnQtdGFicy1tb2RlOiBuaWw7IGMt YmFzaWMtb2Zmc2V0OiAyIC0qLQogKgogKiBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIGFyZSBz dWJqZWN0IHRvIHRoZSBOZXRzY2FwZSBQdWJsaWMKICogTGljZW5zZSBWZXJzaW9uIDEuMSAodGhl ICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUKICogZXhjZXB0IGluIGNvbXBs aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mCiAqIHRoZSBM aWNlbnNlIGF0IGh0dHA6Ly93d3cubW96aWxsYS5vcmcvTlBMLwogKgogKiBTb2Z0d2FyZSBkaXN0 cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMKICogSVMi IGJhc2lzLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgog KiBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zl cm5pbmcKICogcmlnaHRzIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICoKICog VGhlIE9yaWdpbmFsIENvZGUgaXMgTW96aWxsYSBDb21tdW5pY2F0b3IgY2xpZW50IGNvZGUuCiAq CiAqIFRoZSBJbml0aWFsIERldmVsb3BlciBvZiB0aGUgT3JpZ2luYWwgQ29kZSBpcyBOZXRzY2Fw ZSBDb21tdW5pY2F0aW9ucwogKiBDb3Jwb3JhdGlvbi4gIFBvcnRpb25zIGNyZWF0ZWQgYnkgTmV0 c2NhcGUgYXJlCiAqIENvcHlyaWdodCAoQykgMTk5OCBOZXRzY2FwZSBDb21tdW5pY2F0aW9ucyBD b3Jwb3JhdGlvbi4gQWxsCiAqIFJpZ2h0cyBSZXNlcnZlZC4KICoKICogQ29udHJpYnV0b3Iocyk6 CiAqICAgUGllcnJlIFBoYW5ldWYgPHBwQGx1ZHVzZGVzaWduLmNvbT4KICovCgoKI2luY2x1ZGUg Im5zY29yZS5oIgojaW5jbHVkZSAibnNJR2VuZXJpY0ZhY3RvcnkuaCIKI2luY2x1ZGUgIm5zSUZh Y3RvcnkuaCIKI2luY2x1ZGUgIm5zSVN1cHBvcnRzLmgiCiNpbmNsdWRlICJuc0lDb21wb25lbnRN YW5hZ2VyLmgiCiNpbmNsdWRlICJuc0lDb21wb25lbnRSZWdpc3RyYXIuaCIKI2luY2x1ZGUgIm5z SVNlcnZpY2VNYW5hZ2VyLmgiCiNpbmNsdWRlICJuc0lDYXRlZ29yeU1hbmFnZXIuaCIKI2luY2x1 ZGUgIm5zQ09NUHRyLmgiCiNpbmNsdWRlICJuc0NSVC5oIgojaW5jbHVkZSAibnNJT2JzZXJ2ZXJT ZXJ2aWNlLmgiCgojaW5jbHVkZSAibnNwci5oIgojaW5jbHVkZSAicHJsb2NrLmgiCiNpbmNsdWRl ICJuc1hQSURMU3RyaW5nLmgiCiNpbmNsdWRlICJOU1JlZy5oIgojaW5jbHVkZSAiVmVyUmVnLmgi CiNpbmNsdWRlICJuc0lEaXJlY3RvcnlTZXJ2aWNlLmgiCiNpbmNsdWRlICJuc0RpcmVjdG9yeVNl cnZpY2VEZWZzLmgiCiNpbmNsdWRlICJuc0FwcERpcmVjdG9yeVNlcnZpY2VEZWZzLmgiCgojaW5j bHVkZSAibnNJbnN0YWxsLmgiCiNpbmNsdWRlICJuc1NvZnR3YXJlVXBkYXRlSUlEcy5oIgojaW5j bHVkZSAibnNTb2Z0d2FyZVVwZGF0ZS5oIgojaW5jbHVkZSAibnNTb2Z0d2FyZVVwZGF0ZVJ1bi5o IgojaW5jbHVkZSAibnNJbnN0YWxsVHJpZ2dlci5oIgojaW5jbHVkZSAibnNJbnN0YWxsVmVyc2lv bi5oIgojaW5jbHVkZSAiU2NoZWR1bGVkVGFza3MuaCIKI2luY2x1ZGUgIkluc3RhbGxDbGVhbnVw RGVmaW5lcy5oIgoKI2luY2x1ZGUgIm5zVG9wUHJvZ3Jlc3NOb3RpZmllci5oIgojaW5jbHVkZSAi bnNMb2dnaW5nUHJvZ3Jlc3NOb3RpZmllci5oIgoKI2luY2x1ZGUgIm5zQnVpbGRJRC5oIgojaW5j bHVkZSAibnNTcGVjaWFsU3lzdGVtRGlyZWN0b3J5LmgiCiNpbmNsdWRlICJuc1Byb2Nlc3MuaCIK Ci8qIEZvciBKYXZhc2NyaXB0IE5hbWVzcGFjZSBBY2Nlc3MgKi8KI2luY2x1ZGUgIm5zRE9NQ0lE LmgiCiNpbmNsdWRlICJuc0lTZXJ2aWNlTWFuYWdlci5oIgojaW5jbHVkZSAibnNJTmFtZVNwYWNl TWFuYWdlci5oIgojaW5jbHVkZSAibnNJU2NyaXB0TmFtZVNwYWNlTWFuYWdlci5oIgojaW5jbHVk ZSAibnNJU2NyaXB0RXh0ZXJuYWxOYW1lU2V0LmgiCgojaW5jbHVkZSAibnNJRXZlbnRRdWV1ZVNl cnZpY2UuaCIKI2luY2x1ZGUgIm5zSVByb3h5T2JqZWN0TWFuYWdlci5oIgojaW5jbHVkZSAibnNQ cm94aWVkU2VydmljZS5oIgojaW5jbHVkZSAibnNJQ2hyb21lUmVnaXN0cnkuaCIKCiNpbmNsdWRl ICJuc0NVUklMb2FkZXIuaCIKCmV4dGVybiAiQyIgdm9pZCBSdW5DaHJvbWVJbnN0YWxsT25UaHJl YWQodm9pZCAqZGF0YSk7CgovLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwovLyBHbG9iYWxzCi8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vCnN0YXRpYyBOU19ERUZJTkVfQ0lEKGtDb21wb25lbnRNYW5hZ2Vy Q0lELCBOU19DT01QT05FTlRNQU5BR0VSX0NJRCk7CgpzdGF0aWMgTlNfREVGSU5FX0NJRChrQ1Nj cmlwdE5hbWVTZXRSZWdpc3RyeUNJRCwgTlNfU0NSSVBUX05BTUVTRVRfUkVHSVNUUllfQ0lEKTsK c3RhdGljIE5TX0RFRklORV9DSUQoa0luc3RhbGxUcmlnZ2VyX0NJRCwgTlNfU29mdHdhcmVVcGRh dGVJbnN0YWxsVHJpZ2dlcl9DSUQpOwoKc3RhdGljIE5TX0RFRklORV9DSUQoa0luc3RhbGxWZXJz aW9uX0NJRCwgTlNfU29mdHdhcmVVcGRhdGVJbnN0YWxsVmVyc2lvbl9DSUQpOwoKc3RhdGljIE5T X0RFRklORV9DSUQoa0lQcm9jZXNzQ0lELCBOU19QUk9DRVNTX0NJRCk7Cgpuc1NvZnR3YXJlVXBk YXRlKiBuc1NvZnR3YXJlVXBkYXRlOjptSW5zdGFuY2UgPSBuc251bGw7Cm5zQ09NUHRyPG5zSUZp bGU+IG5zU29mdHdhcmVVcGRhdGU6Om1Qcm9ncmFtRGlyID0gbnNudWxsOwpjaGFyKiAgICAgICAg ICAgICBuc1NvZnR3YXJlVXBkYXRlOjptTG9nTmFtZSA9IG5zbnVsbDsKUFJCb29sICAgICAgICAg ICAgbnNTb2Z0d2FyZVVwZGF0ZTo6bU5lZWRDbGVhbnVwID0gUFJfRkFMU0U7CgoKbnNTb2Z0d2Fy ZVVwZGF0ZSAqCm5zU29mdHdhcmVVcGRhdGU6OkdldEluc3RhbmNlKCkKewogICAgaWYgKG1JbnN0 YW5jZSA9PSBuc251bGwpCiAgICAgICAgbUluc3RhbmNlID0gbmV3IG5zU29mdHdhcmVVcGRhdGUo KTsKCiAgICBOU19JRl9BRERSRUYobUluc3RhbmNlKTsKICAgIHJldHVybiBtSW5zdGFuY2U7Cn0K CgoKbnNTb2Z0d2FyZVVwZGF0ZTo6bnNTb2Z0d2FyZVVwZGF0ZSgpCjogbUluc3RhbGxpbmcoUFJf RkFMU0UpLAogIG1NYXN0ZXJMaXN0ZW5lcigwKSwKICBtUmVnKDApCnsKICAgIE5TX0lOSVRfSVNV UFBPUlRTKCk7CgogICAgbUxvY2sgPSBQUl9OZXdMb2NrKCk7CgogICAgLyoqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KICAgIC8qIFN0YXJ0dXAgdGhlIFZlcnNpb24gUmVn aXN0cnkgICAgICAgICovCiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqLwoKICAgIE5SX1N0YXJ0dXBSZWdpc3RyeSgpOyAgIC8qIHN0YXJ0dXAgdGhlIHJlZ2lzdHJ5 OyBpZiBhbHJlYWR5IHN0YXJ0ZWQsIHRoaXMgd2lsbCBlc3NlbnRpYWxseSBiZSBhIG5vb3AgKi8K CgogICAgbnNyZXN1bHQgcnY7CiAgICBuc0NPTVB0cjxuc0lQcm9wZXJ0aWVzPiBkaXJlY3RvcnlT ZXJ2aWNlID0KICAgICAgICAgICAgIGRvX0dldFNlcnZpY2UoTlNfRElSRUNUT1JZX1NFUlZJQ0Vf Q09OVFJBQ1RJRCwgJnJ2KTsKCiAgICBpZighZGlyZWN0b3J5U2VydmljZSkgcmV0dXJuOwoKICAg IG5zQ09NUHRyPG5zSUxvY2FsRmlsZT4gZGlyOwogICAgZGlyZWN0b3J5U2VydmljZS0+R2V0KE5T X1hQQ09NX0NVUlJFTlRfUFJPQ0VTU19ESVIsIE5TX0dFVF9JSUQobnNJTG9jYWxGaWxlKSwgZ2V0 dGVyX0FkZFJlZnMoZGlyKSk7CiAgICBpZiAoZGlyKQogICAgewogICAgICAgIG5zQ0F1dG9TdHJp bmcgbmF0aXZlUGF0aDsKICAgICAgICBkaXItPkdldE5hdGl2ZVBhdGgobmF0aXZlUGF0aCk7CiAg ICAgICAgLy8gRVZJTCB2ZXJzaW9uIHJlZ2lzdHJ5IGRvZXMgbm90IHRha2UgYSBuc0lGaWxlLjsK ICAgICAgICBWUl9TZXRSZWdEaXJlY3RvcnkoIG5hdGl2ZVBhdGguZ2V0KCkgKTsKCiAgICB9CiAg ICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogICAgLyogQWRkIHRo aXMgYXMgYSBzaHV0ZG93biBvYnNlcnZlciAgICAgKi8KICAgIC8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKiovCiAgICBuc0NPTVB0cjxuc0lPYnNlcnZlclNlcnZpY2U+IG9i c2VydmVyU2VydmljZSA9CiAgICAgICAgICAgICBkb19HZXRTZXJ2aWNlKCJAbW96aWxsYS5vcmcv b2JzZXJ2ZXItc2VydmljZTsxIiwgJnJ2KTsKCiAgICBpZiAoTlNfU1VDQ0VFREVEKHJ2KSkKICAg ICAgICBvYnNlcnZlclNlcnZpY2UtPkFkZE9ic2VydmVyKHRoaXMsIE5TX1hQQ09NX1NIVVRET1dO X09CU0VSVkVSX0lELCBQUl9GQUxTRSk7Cn0KCgpuc1NvZnR3YXJlVXBkYXRlOjp+bnNTb2Z0d2Fy ZVVwZGF0ZSgpCnsKICAgIFBSX0xvY2sobUxvY2spOwoKICAgIG5zSW5zdGFsbEluZm8qIGVsZW1l bnQ7CiAgICBmb3IgKFBSSW50MzIgaT0wOyBpIDwgbUphckluc3RhbGxRdWV1ZS5Db3VudCgpOyBp KyspCiAgICB7CiAgICAgICAgZWxlbWVudCA9IChuc0luc3RhbGxJbmZvKiltSmFySW5zdGFsbFF1 ZXVlLkVsZW1lbnRBdChpKTsKICAgICAgICAvL0ZJWDogIG5lZWQgdG8gYWRkIHRvIHJlZ2lzdHJ5 Li4uLgogICAgICAgIGRlbGV0ZSBlbGVtZW50OwogICAgfQoKICAgIG1KYXJJbnN0YWxsUXVldWUu Q2xlYXIoKTsKCiAgICBQUl9VbmxvY2sobUxvY2spOwogICAgUFJfRGVzdHJveUxvY2sobUxvY2sp OwoKICAgIE5SX1NodXRkb3duUmVnaXN0cnkoKTsKCiAgICBOU19JRl9SRUxFQVNFIChtTWFzdGVy TGlzdGVuZXIpOwogICAgbUluc3RhbmNlID0gbnNudWxsOwoKICAgIFBSX0ZSRUVJRihtTG9nTmFt ZSk7Cn0KCgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyAgbnNJU3VwcG9ydHMgaW1wbGVtZW50YXRpb24K Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KCk5TX0lNUExfVEhSRUFEU0FGRV9JU1VQUE9SVFMzKG5zU29mdHdh cmVVcGRhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVNvZnR3YXJlVXBkYXRl LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc1BJWFBJU3R1Ykhvb2ssCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG5zSU9ic2VydmVyKTsKCnZvaWQKbnNTb2Z0d2FyZVVwZGF0 ZTo6U2h1dGRvd24oKQp7CiAgICBpZiAobU5lZWRDbGVhbnVwKQogICAgewogICAgICAvLyBDcmVh dGUgYSBub24tYmxvY2tpbmcgcHJvY2VzcyB0byBydW4gdGhlIG5hdGl2ZSBwbGF0Zm9ybSBjbGVh bnVwIHV0aWxpdHkKICAgICAgICBuc3Jlc3VsdCBydjsKICAgICAgICBuc0NPTVB0cjxuc0lMb2Nh bEZpbGU+IHBhdGhUb0NsZWFudXBVdGlsaXR5OwogICAgICAgIC8vR2V0IHRoZSBwcm9ncmFtIGRp cmVjdG9yeQogICAgICAgIG5zQ09NUHRyPG5zSVByb3BlcnRpZXM+IGRpcmVjdG9yeVNlcnZpY2Ug PQogICAgICAgICAgICAgICAgIGRvX0dldFNlcnZpY2UoTlNfRElSRUNUT1JZX1NFUlZJQ0VfQ09O VFJBQ1RJRCwgJnJ2KTsKCiAgICAgICAgaWYgKG5zU29mdHdhcmVVcGRhdGU6OkdldFByb2dyYW1E aXJlY3RvcnkoKSkgLy8gSW4gdGhlIHN0dWIgaW5zdGFsbGVyCiAgICAgICAgewogICAgICAgICAg ICBuc0NPTVB0cjxuc0lGaWxlPiB0bXA7CiAgICAgICAgICAgIHJ2ID0gbnNTb2Z0d2FyZVVwZGF0 ZTo6R2V0UHJvZ3JhbURpcmVjdG9yeSgpLT5DbG9uZShnZXR0ZXJfQWRkUmVmcyh0bXApKTsKI2lm IGRlZmluZWQgKFhQX01BQykKICAgICAgICAgICAgdG1wLT5BcHBlbmROYXRpdmUoRVNTRU5USUFM X0ZJTEVTKTsKI2VuZGlmCiAgICAgICAgICAgIHBhdGhUb0NsZWFudXBVdGlsaXR5ID0gZG9fUXVl cnlJbnRlcmZhY2UodG1wKTsKCiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAg ICAgICAgIHJ2ID0gZGlyZWN0b3J5U2VydmljZS0+R2V0KE5TX0FQUF9JTlNUQUxMX0NMRUFOVVBf RElSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TX0dFVF9JSUQobnNJ RmlsZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0dGVyX0FkZFJl ZnMocGF0aFRvQ2xlYW51cFV0aWxpdHkpKTsKICAgICAgICB9CgogICAgICAgIE5TX0FTU0VSVElP TihwYXRoVG9DbGVhbnVwVXRpbGl0eSwiTm8gcGF0aCB0byBjbGVhbnVwIHV0aWxpdHkgaW4gbnNT b2Z0d2FyZVVwZGF0ZTo6U2h1dGRvd24oKSIpOwoKICAgICAgICAvL0NyZWF0ZSB0aGUgUHJvY2Vz cyBmcmFtZXdvcmsKICAgICAgICBwYXRoVG9DbGVhbnVwVXRpbGl0eS0+QXBwZW5kTmF0aXZlKENM RUFOVVBfVVRJTCk7CiAgICAgICAgbnNDT01QdHI8bnNJUHJvY2Vzcz4gY2xlYW51cFByb2Nlc3Mg PSBkb19DcmVhdGVJbnN0YW5jZShrSVByb2Nlc3NDSUQpOwogICAgICAgIHJ2ID0gY2xlYW51cFBy b2Nlc3MtPkluaXQocGF0aFRvQ2xlYW51cFV0aWxpdHkpOwogICAgICAgIGlmIChOU19TVUNDRUVE RUQocnYpKQogICAgICAgIHsKICAgICAgICAgICAgLy9SdW4gdGhlIGNsZWFudXAgdXRpbGl0eSBh cyBhIE5PTi1ibG9ja2luZyBwcm9jZXNzCiAgICAgICAgICAgIHJ2ID0gY2xlYW51cFByb2Nlc3Mt PlJ1bihQUl9GQUxTRSwgbnNudWxsLCAwLCBuc251bGwpOwogICAgICAgIH0KICAgIH0KfQoKTlNf SU1FVEhPRElNUCBuc1NvZnR3YXJlVXBkYXRlOjpPYnNlcnZlKG5zSVN1cHBvcnRzICphU3ViamVj dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmFU b3BpYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBSVW5p Y2hhciAqYURhdGEpCnsKICAgIGlmICghbnNDUlQ6OnN0cmNtcChhVG9waWMsIE5TX1hQQ09NX1NI VVRET1dOX09CU0VSVkVSX0lEKSkKICAgICAgU2h1dGRvd24oKTsKCiAgICByZXR1cm4gTlNfT0s7 Cn0KCk5TX0lNRVRIT0RJTVAKbnNTb2Z0d2FyZVVwZGF0ZTo6UmVnaXN0ZXJMaXN0ZW5lcihuc0lY UElMaXN0ZW5lciAqYUxpc3RlbmVyKQp7CiAgICAvLyBvbmNlIHlvdSByZWdpc3RlciBhIExpc3Rl bmVyLCB5b3UgY2FuIG5vdCByZW1vdmUgaXQuCiAgICAvLyBUaGlzIHNob3VsZCBnZXQgY2hhbmdl ZCBhdCBzb21lIHBvaW50LgoKICAgIGlmICghbU1hc3Rlckxpc3RlbmVyKQogICAgICAgIENyZWF0 ZU1hc3Rlckxpc3RlbmVyKCk7CgogICAgaWYgKCFtTWFzdGVyTGlzdGVuZXIpCiAgICAgICAgcmV0 dXJuIE5TX0VSUk9SX0ZBSUxVUkU7CgogICAgbU1hc3Rlckxpc3RlbmVyLT5SZWdpc3Rlckxpc3Rl bmVyKGFMaXN0ZW5lcik7CiAgICByZXR1cm4gTlNfT0s7Cn0KCk5TX0lNRVRIT0RJTVAKbnNTb2Z0 d2FyZVVwZGF0ZTo6R2V0TWFzdGVyTGlzdGVuZXIobnNJWFBJTGlzdGVuZXIgKiphTGlzdGVuZXIp CnsKICAgIE5TX0FTU0VSVElPTihhTGlzdGVuZXIsICJnZXR0ZXIgaGFzIGludmFsaWQgcmV0dXJu IHBvaW50ZXIiKTsKICAgIGlmICghYUxpc3RlbmVyKQogICAgICAgIHJldHVybiBOU19FUlJPUl9O VUxMX1BPSU5URVI7CgogICAgaWYgKCFtTWFzdGVyTGlzdGVuZXIpCiAgICAgICAgQ3JlYXRlTWFz dGVyTGlzdGVuZXIoKTsKCiAgICBpZiAoIW1NYXN0ZXJMaXN0ZW5lcikKICAgICAgICByZXR1cm4g TlNfRVJST1JfRkFJTFVSRTsKCiAgICBOU19BRERSRUYgKG1NYXN0ZXJMaXN0ZW5lcik7CiAgICAq YUxpc3RlbmVyID0gbU1hc3Rlckxpc3RlbmVyOwogICAgcmV0dXJuIE5TX09LOwp9CgoKTlNfSU1F VEhPRElNUApuc1NvZnR3YXJlVXBkYXRlOjpTZXRBY3RpdmVMaXN0ZW5lcihuc0lYUElMaXN0ZW5l ciAqYUxpc3RlbmVyKQp7CiAgICBpZiAoIW1NYXN0ZXJMaXN0ZW5lcikKICAgICAgICBDcmVhdGVN YXN0ZXJMaXN0ZW5lcigpOwoKICAgIGlmICghbU1hc3Rlckxpc3RlbmVyKQogICAgICAgIHJldHVy biBOU19FUlJPUl9GQUlMVVJFOwoKICAgIG1NYXN0ZXJMaXN0ZW5lci0+U2V0QWN0aXZlTGlzdGVu ZXIgKGFMaXN0ZW5lcik7CiAgICByZXR1cm4gTlNfT0s7Cn0KCnZvaWQgbnNTb2Z0d2FyZVVwZGF0 ZTo6Q3JlYXRlTWFzdGVyTGlzdGVuZXIoKQp7CiAgICBtTWFzdGVyTGlzdGVuZXIgPSBuZXcgbnNU b3BQcm9ncmVzc0xpc3RlbmVyOwogICAgaWYgKG1NYXN0ZXJMaXN0ZW5lcikKICAgIHsKICAgICAg ICBOU19BRERSRUYobU1hc3Rlckxpc3RlbmVyKTsKCiAgICAgICAgbnNMb2dnaW5nUHJvZ3Jlc3NM aXN0ZW5lciAqbG9nZ2VyID0gbmV3IG5zTG9nZ2luZ1Byb2dyZXNzTGlzdGVuZXIoKTsKICAgICAg ICBtTWFzdGVyTGlzdGVuZXItPlJlZ2lzdGVyTGlzdGVuZXIobG9nZ2VyKTsKICAgIH0KfQoKTlNf SU1FVEhPRElNUApuc1NvZnR3YXJlVXBkYXRlOjpJbnN0YWxsSmFyKCAgbnNJRmlsZSogYUxvY2Fs RmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBSVW5pY2hhciogYVVS TCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBSVW5pY2hhciogYUFyZ3Vt ZW50cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSVWludDMyIGZsYWdzLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNJWFBJTGlzdGVuZXIqIGFMaXN0ZW5lcikKewog ICAgaWYgKCAhYUxvY2FsRmlsZSApCiAgICAgICAgcmV0dXJuIE5TX0VSUk9SX05VTExfUE9JTlRF UjsKCiAgICAvLyAtLSBncmFiIGEgcHJveGllZCBDaHJvbWUgUmVnaXN0cnkgbm93IHdoaWxlIHdl IGNhbgogICAgbnNyZXN1bHQgcnY7CiAgICBuc0lYVUxDaHJvbWVSZWdpc3RyeSogY2hyb21lUmVn aXN0cnkgPSBuc251bGw7CiAgICBOU19XSVRIX0FMV0FZU19QUk9YSUVEX1NFUlZJQ0UoIG5zSVhV TENocm9tZVJlZ2lzdHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXBS ZWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TX0NIUk9NRVJFR0lTVFJZ X0NPTlRSQUNUSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TX1VJX1RI UkVBRF9FVkVOVFEsICZydik7CiAgICBpZiAoTlNfU1VDQ0VFREVEKHJ2KSkKICAgICAgICBjaHJv bWVSZWdpc3RyeSA9IHRtcFJlZzsKCiAgICAvLyB3ZSB3YW50IHRvIGNhbGwgdGhpcyB3aXRoIG9y IHdpdGhvdXQgYSBjaHJvbWUgcmVnaXN0cnkKICAgIG5zSW5zdGFsbEluZm8gKmluZm8gPSBuZXcg bnNJbnN0YWxsSW5mbyggMCwgYUxvY2FsRmlsZSwgYVVSTCwgYUFyZ3VtZW50cywKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MsIGFMaXN0ZW5lciwgY2hy b21lUmVnaXN0cnkgKTsKCiAgICBpZiAoIWluZm8pCiAgICAgICAgcmV0dXJuIE5TX0VSUk9SX09V VF9PRl9NRU1PUlk7CgogICAgUFJfTG9jayhtTG9jayk7CiAgICBtSmFySW5zdGFsbFF1ZXVlLkFw cGVuZEVsZW1lbnQoIGluZm8gKTsKICAgIFBSX1VubG9jayhtTG9jayk7CiAgICBSdW5OZXh0SW5z dGFsbCgpOwoKICAgIHJldHVybiBOU19PSzsKfQoKCk5TX0lNRVRIT0RJTVAKbnNTb2Z0d2FyZVVw ZGF0ZTo6SW5zdGFsbENocm9tZSggUFJVaW50MzIgYVR5cGUsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG5zSUZpbGUqIGFGaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBQUlVuaWNoYXIqIFVSTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgUFJVbmljaGFyKiBhTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUFJCb29sIGFTZWxlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zSVhQ SUxpc3RlbmVyKiBhTGlzdGVuZXIpCnsKICAgIG5zcmVzdWx0IHJ2OwogICAgTlNfV0lUSF9BTFdB WVNfUFJPWElFRF9TRVJWSUNFKCBuc0lYVUxDaHJvbWVSZWdpc3RyeSwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY2hyb21lUmVnaXN0cnksCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE5TX0NIUk9NRVJFR0lTVFJZX0NPTlRSQUNUSUQsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE5TX1VJX1RIUkVBRF9FVkVOVFEsICZydik7CiAgICBp ZiAoTlNfRkFJTEVEKHJ2KSkKICAgICAgICByZXR1cm4gcnY7CgogICAgbnNJbnN0YWxsSW5mbyAq aW5mbyA9IG5ldyBuc0luc3RhbGxJbmZvKCBhVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYUZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFVSTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYU5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChQUlVpbnQzMilhU2VsZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhTGlzdGVuZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNocm9tZVJlZ2lzdHJ5KTsKICAgIGlmICghaW5mbykKICAgICAgICByZXR1cm4g TlNfRVJST1JfT1VUX09GX01FTU9SWTsKCiAgICBQUl9DcmVhdGVUaHJlYWQoUFJfVVNFUl9USFJF QUQsCiAgICAgICAgICAgICAgICAgICAgUnVuQ2hyb21lSW5zdGFsbE9uVGhyZWFkLAogICAgICAg ICAgICAgICAgICAgICh2b2lkKilpbmZvLAogICAgICAgICAgICAgICAgICAgIFBSX1BSSU9SSVRZ X05PUk1BTCwKICAgICAgICAgICAgICAgICAgICBQUl9HTE9CQUxfVEhSRUFELAogICAgICAgICAg ICAgICAgICAgIFBSX1VOSk9JTkFCTEVfVEhSRUFELAogICAgICAgICAgICAgICAgICAgIDApOwoK ICAgIHJldHVybiBOU19PSzsKfQoKCk5TX0lNRVRIT0RJTVAKbnNTb2Z0d2FyZVVwZGF0ZTo6SW5z dGFsbEphckNhbGxCYWNrKCkKewogICAgUFJfTG9jayhtTG9jayk7CgogICAgaWYgKG1KYXJJbnN0 YWxsUXVldWUuQ291bnQoKSAhPSAwKSAvLyBwYXJhbm9pYQogICAgewogICAgICAgIG5zSW5zdGFs bEluZm8gKm5leHRJbnN0YWxsID0gKG5zSW5zdGFsbEluZm8qKW1KYXJJbnN0YWxsUXVldWUuRWxl bWVudEF0KDApOwogICAgICAgIGlmIChuZXh0SW5zdGFsbCAhPSBuc251bGwpCiAgICAgICAgICAg IGRlbGV0ZSBuZXh0SW5zdGFsbDsKCiAgICAgICAgbUphckluc3RhbGxRdWV1ZS5SZW1vdmVFbGVt ZW50QXQoMCk7CiAgICB9CiAgICBtSW5zdGFsbGluZyA9IFBSX0ZBTFNFOwoKICAgIFBSX1VubG9j ayhtTG9jayk7CgogICAgcmV0dXJuIFJ1bk5leHRJbnN0YWxsKCk7Cn0KCgpuc3Jlc3VsdApuc1Nv ZnR3YXJlVXBkYXRlOjpSdW5OZXh0SW5zdGFsbCgpCnsKICAgIG5zcmVzdWx0ICAgICAgICBydiA9 IE5TX09LOwogICAgbnNJbnN0YWxsSW5mbyogIGluZm8gPSBuc251bGw7CgogICAgUFJfTG9jayht TG9jayk7CgogICAgLy8gbWFrZSBzdXJlIG1hc3RlciBtYXN0ZXIgbGlzdGVuZXIgZXhpc3RzCiAg ICBpZiAoIW1NYXN0ZXJMaXN0ZW5lcikKICAgICAgICBDcmVhdGVNYXN0ZXJMaXN0ZW5lcigpOwoK ICAgIGlmICghbUluc3RhbGxpbmcpCiAgICB7CiAgICAgICAgaWYgKCBtSmFySW5zdGFsbFF1ZXVl LkNvdW50KCkgPiAwICkKICAgICAgICB7CiAgICAgICAgICAgIGluZm8gPSAobnNJbnN0YWxsSW5m byopbUphckluc3RhbGxRdWV1ZS5FbGVtZW50QXQoMCk7CgogICAgICAgICAgICBpZiAoIGluZm8g KQogICAgICAgICAgICAgICAgbUluc3RhbGxpbmcgPSBQUl9UUlVFOwogICAgICAgICAgICBlbHNl CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIC8vIGJvZ3VzIGVsZW1lbnRzIGdvdCBpbnRv IHRoZSBxdWV1ZQogICAgICAgICAgICAgICAgTlNfRVJST1IoImxlYWtzIHJlbWFpbmluZyBuc0lu c3RhbGxJbmZvcywgcGxlYXNlIGZpbGUgYnVnISIpOwogICAgICAgICAgICAgICAgcnYgPSBOU19F UlJPUl9OVUxMX1BPSU5URVI7CiAgICAgICAgICAgICAgICBWUl9DbG9zZSgpOwogICAgICAgICAg ICB9CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIC8vIG5vdGhp bmcgbW9yZSB0byBkbwogICAgICAgICAgICBWUl9DbG9zZSgpOwogICAgICAgIH0KICAgIH0KICAg IFBSX1VubG9jayhtTG9jayk7CgogICAgLy8gbWFrZSBzdXJlIHRvIFJ1bkluc3RhbGwoKSBvdXRz aWRlIG9mIGxvY2tlZCBzZWN0aW9uIGR1ZSB0byBjYWxsYmFja3MKICAgIGlmIChpbmZvKQogICAg ICAgIFJ1bkluc3RhbGwoIGluZm8gKTsKCiAgICByZXR1cm4gcnY7Cn0KCgpOU19JTUVUSE9ESU1Q Cm5zU29mdHdhcmVVcGRhdGU6OlN0dWJJbml0aWFsaXplKG5zSUZpbGUgKmFEaXIsIGNvbnN0IGNo YXIqIGxvZ05hbWUpCnsKICAgIGlmICggIWFEaXIgKQogICAgICAgIHJldHVybiBOU19FUlJPUl9O VUxMX1BPSU5URVI7CgogICAgLy8gZml4IEdldEZvbGRlciByZXR1cm4gcGF0aAogICAgbnNyZXN1 bHQgcnYgPSBhRGlyLT5DbG9uZShnZXR0ZXJfQWRkUmVmcyhtUHJvZ3JhbURpcikpOwoKICAgIC8v IG1ha2Ugc3VyZSByZWdpc3RyeSB1cGRhdGVzIGdvIHRvIHRoZSByaWdodCBwbGFjZQogICAgbnND QXV0b1N0cmluZyB0ZW1wUGF0aDsKICAgIHJ2ID0gYURpci0+R2V0TmF0aXZlUGF0aCh0ZW1wUGF0 aCk7CiAgICBpZiAoTlNfU1VDQ0VFREVEKHJ2KSkKICAgICAgICBWUl9TZXRSZWdEaXJlY3Rvcnko IHRlbXBQYXRoLmdldCgpICk7CgogICAgLy8gT3B0aW9uYWxseSBzZXQgbG9nZmlsZSBsZWFmbmFt ZQogICAgaWYgKGxvZ05hbWUpCiAgICB7CiAgICAgICAgbUxvZ05hbWUgPSBQTF9zdHJkdXAobG9n TmFtZSk7CiAgICAgICAgaWYgKCFtTG9nTmFtZSkKICAgICAgICAgICAgcmV0dXJuIE5TX0VSUk9S X09VVF9PRl9NRU1PUlk7CiAgICB9CgogICAgcmV0dXJuIHJ2Owp9CgoKLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8KLy8gbnNTb2Z0d2FyZVVwZGF0ZU5hbWVTZXQKLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8KCm5zU29mdHdhcmVVcGRhdGVOYW1lU2V0Ojpuc1NvZnR3YXJlVXBkYXRlTmFtZVNldCgpCnsK ICAgIE5TX0lOSVRfSVNVUFBPUlRTKCk7Cn0KCm5zU29mdHdhcmVVcGRhdGVOYW1lU2V0Ojp+bnNT b2Z0d2FyZVVwZGF0ZU5hbWVTZXQoKQp7Cn0KCk5TX0lNUExfSVNVUFBPUlRTMShuc1NvZnR3YXJl VXBkYXRlTmFtZVNldCwgbnNJU2NyaXB0RXh0ZXJuYWxOYW1lU2V0KQoKCk5TX0lNRVRIT0RJTVAK bnNTb2Z0d2FyZVVwZGF0ZU5hbWVTZXQ6OkluaXRpYWxpemVOYW1lU2V0KG5zSVNjcmlwdENvbnRl eHQqIGFTY3JpcHRDb250ZXh0KQp7CiAgICBuc3Jlc3VsdCByZXN1bHQgPSBOU19PSzsKCiAgICBy ZXN1bHQgPSBOU19Jbml0SW5zdGFsbFZlcnNpb25DbGFzcyhhU2NyaXB0Q29udGV4dCwgbnNudWxs KTsKICAgIGlmIChOU19GQUlMRUQocmVzdWx0KSkgcmV0dXJuIHJlc3VsdDsKCiAgICByZXN1bHQg PSBOU19Jbml0SW5zdGFsbFRyaWdnZXJHbG9iYWxDbGFzcyhhU2NyaXB0Q29udGV4dCwgbnNudWxs KTsKCiAgICByZXR1cm4gcmVzdWx0Owp9CgoKLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovLyBGdW5jdGlvbnMg dXNlZCB0byBjcmVhdGUgbmV3IGluc3RhbmNlcyBvZiBhIGdpdmVuIG9iamVjdCBieSB0aGUKLy8g Z2VuZXJpYyBmYWN0b3J5LgoKTlNfR0VORVJJQ19GQUNUT1JZX1NJTkdMRVRPTl9DT05TVFJVQ1RP Uihuc1NvZnR3YXJlVXBkYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5zU29mdHdhcmVVcGRhdGU6OkdldEluc3RhbmNlKTsKTlNfR0VORVJJQ19GQUNUT1JZX0NP TlNUUlVDVE9SKG5zSW5zdGFsbFRyaWdnZXIpOwpOU19HRU5FUklDX0ZBQ1RPUllfQ09OU1RSVUNU T1IobnNJbnN0YWxsVmVyc2lvbik7Ck5TX0dFTkVSSUNfRkFDVE9SWV9DT05TVFJVQ1RPUihuc1Nv ZnR3YXJlVXBkYXRlTmFtZVNldCk7CgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiNkZWZpbmUgTlNfU09GVFdB UkVVUERBVEVOQU1FU0VUX0NJRCBcCiAgeyAweGNkZTQ4MDEwLCAweDk0OTQsIDB4NGE3MywgXAog IHsgMHg5NiwgMHg5YSwgMHgyNiwgMHgzMywgMHg1MCwgMHgwLCAweDcwLCAweGRlIH19CgojZGVm aW5lIE5TX1NPRlRXQVJFVVBEQVRFTkFNRVNFVF9DT05UUkFDVElEIFwKICAiQG1vemlsbGEub3Jn L3hwaW5zdGFsbC9zb2Z0d2FyZXVwZGF0ZW5hbWVzZXQ7MSIKCnN0YXRpYyBOU19NRVRIT0QKUmVn aXN0ZXJTb2Z0d2FyZVVwZGF0ZSggbnNJQ29tcG9uZW50TWFuYWdlciAqYUNvbXBNZ3IsCiAgICAg ICAgICAgICAgICAgICAgICAgIG5zSUZpbGUgKmFQYXRoLAogICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBjaGFyICpyZWdpc3RyeUxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBjaGFyICpjb21wb25lbnRUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBu c01vZHVsZUNvbXBvbmVudEluZm8gKmluZm8pCnsKICBuc3Jlc3VsdCBydiA9IE5TX09LOwoKICBu c0NPTVB0cjxuc0lDYXRlZ29yeU1hbmFnZXI+IGNhdG1hbiA9CiAgICBkb19HZXRTZXJ2aWNlKE5T X0NBVEVHT1JZTUFOQUdFUl9DT05UUkFDVElELCAmcnYpOwogIE5TX0VOU1VSRV9TVUNDRVNTKHJ2 LCBydik7CgogIG5zWFBJRExDU3RyaW5nIHByZXZpb3VzOwogIHJ2ID0gY2F0bWFuLT5BZGRDYXRl Z29yeUVudHJ5KEpBVkFTQ1JJUFRfR0xPQkFMX0NPTlNUUlVDVE9SX0NBVEVHT1JZLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJJbnN0YWxsVmVyc2lvbiIsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTlNfSU5TVEFMTFZFUlNJT05DT01QT05FTlRfQ09OVFJBQ1RJRCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUl9UUlVFLCBQUl9UUlVFLCBnZXR0ZXJf Q29waWVzKHByZXZpb3VzKSk7CiAgTlNfRU5TVVJFX1NVQ0NFU1MocnYsIHJ2KTsKCiAgcnYgPSBj YXRtYW4tPkFkZENhdGVnb3J5RW50cnkoSkFWQVNDUklQVF9HTE9CQUxfUFJPUEVSVFlfQ0FURUdP UlksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkluc3RhbGxUcmlnZ2VyIiwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOU19JTlNUQUxMVFJJR0dFUkNPTVBPTkVOVF9D T05UUkFDVElELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBSX1RSVUUsIFBSX1RS VUUsIGdldHRlcl9Db3BpZXMocHJldmlvdXMpKTsKICBOU19FTlNVUkVfU1VDQ0VTUyhydiwgcnYp OwoKICByZXR1cm4gTlNfT0s7Cn0KCgovLyBUaGUgbGlzdCBvZiBjb21wb25lbnRzIHdlIHJlZ2lz dGVyCnN0YXRpYyBjb25zdCBuc01vZHVsZUNvbXBvbmVudEluZm8gY29tcG9uZW50c1tdID0Kewog ICAgeyAiU29mdHdhcmVVcGRhdGUgQ29tcG9uZW50IiwKICAgICAgIE5TX1NvZnR3YXJlVXBkYXRl X0NJRCwKICAgICAgIE5TX0lYUElOU1RBTExDT01QT05FTlRfQ09OVFJBQ1RJRCwKICAgICAgIG5z U29mdHdhcmVVcGRhdGVDb25zdHJ1Y3RvciwKICAgICAgIFJlZ2lzdGVyU29mdHdhcmVVcGRhdGUK ICAgIH0sCgogICAgeyAiSW5zdGFsbFRyaWdnZXIgQ29tcG9uZW50IiwKICAgICAgIE5TX1NvZnR3 YXJlVXBkYXRlSW5zdGFsbFRyaWdnZXJfQ0lELAogICAgICAgTlNfSU5TVEFMTFRSSUdHRVJDT01Q T05FTlRfQ09OVFJBQ1RJRCwKICAgICAgIG5zSW5zdGFsbFRyaWdnZXJDb25zdHJ1Y3RvcgogICAg fSwKCiAgICB7ICJJbnN0YWxsVmVyc2lvbiBDb21wb25lbnQiLAogICAgICAgTlNfU29mdHdhcmVV cGRhdGVJbnN0YWxsVmVyc2lvbl9DSUQsCiAgICAgICBOU19JTlNUQUxMVkVSU0lPTkNPTVBPTkVO VF9DT05UUkFDVElELAogICAgICAgbnNJbnN0YWxsVmVyc2lvbkNvbnN0cnVjdG9yCiAgICB9LAoK ICAgIHsgIlhQSW5zdGFsbCBDb250ZW50IEhhbmRsZXIiLAogICAgICBOU19Tb2Z0d2FyZVVwZGF0 ZUluc3RhbGxUcmlnZ2VyX0NJRCwKICAgICAgTlNfQ09OVEVOVF9IQU5ETEVSX0NPTlRSQUNUSURf UFJFRklYImFwcGxpY2F0aW9uL3gteHBpbnN0YWxsIiwKICAgICAgbnNJbnN0YWxsVHJpZ2dlckNv bnN0cnVjdG9yCiAgICB9LAoKICAgIHsgIlNvZnR3YXJlIHVwZGF0ZSBuYW1lc2V0IiwKICAgICAg TlNfU09GVFdBUkVVUERBVEVOQU1FU0VUX0NJRCwKICAgICAgTlNfU09GVFdBUkVVUERBVEVOQU1F U0VUX0NPTlRSQUNUSUQsCiAgICAgIG5zU29mdHdhcmVVcGRhdGVOYW1lU2V0Q29uc3RydWN0b3IK ICAgIH0KfTsKCgoKTlNfSU1QTF9OU0dFVE1PRFVMRShuc1NvZnR3YXJlVXBkYXRlLCBjb21wb25l bnRzKQoK