<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>125205</bug_id>
          
          <creation_ts>2013-12-03 18:52:45 -0800</creation_ts>
          <short_desc>Fold constant typed arrays</short_desc>
          <delta_ts>2013-12-04 18:02:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>124630</dependson>
          <blocked>125252</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>956248</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-03 18:52:45 -0800</bug_when>
    <thetext>Patch forthcoming, after https://bugs.webkit.org/show_bug.cgi?id=124630 lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956260</commentid>
    <comment_count>1</comment_count>
      <attachid>218377</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-03 20:09:36 -0800</bug_when>
    <thetext>Created attachment 218377
it begins</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956528</commentid>
    <comment_count>2</comment_count>
      <attachid>218430</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-04 12:43:21 -0800</bug_when>
    <thetext>Created attachment 218430
it does some of the things</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956630</commentid>
    <comment_count>3</comment_count>
      <attachid>218457</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-04 14:48:27 -0800</bug_when>
    <thetext>Created attachment 218457
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956634</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-04 14:51:31 -0800</bug_when>
    <thetext>Attachment 218457 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/js/regress/fixed-typed-array-storage-expected.txt&apos;, u&apos;LayoutTests/js/regress/fixed-typed-array-storage-var-index-expected.txt&apos;, u&apos;LayoutTests/js/regress/fixed-typed-array-storage-var-index.html&apos;, u&apos;LayoutTests/js/regress/fixed-typed-array-storage.html&apos;, u&apos;LayoutTests/js/regress/script-tests/fixed-typed-array-storage-var-index.js&apos;, u&apos;LayoutTests/js/regress/script-tests/fixed-typed-array-storage.js&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/dfg/DFGDesiredWatchpoints.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGDesiredWatchpoints.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGGraph.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGGraph.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGWatchpointCollectionPhase.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/ArrayBuffer.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/ArrayBufferNeuteringWatchpoint.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/ArrayBufferNeuteringWatchpoint.h&apos;, u&apos;Source/JavaScriptCore/runtime/VM.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/VM.h&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/JavaScriptCore/runtime/ArrayBufferNeuteringWatchpoint.cpp:39:  Comma should be at the beggining of the line in a member initialization list.  [whitespace/init] [4]
Total errors found: 1 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956648</commentid>
    <comment_count>5</comment_count>
      <attachid>218457</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-12-04 15:10:45 -0800</bug_when>
    <thetext>Comment on attachment 218457
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=218457&amp;action=review

r=me too

&gt; Source/JavaScriptCore/runtime/ArrayBufferNeuteringWatchpoint.cpp:49
&gt; +ArrayBufferNeuteringWatchpoint::~ArrayBufferNeuteringWatchpoint() { }
&gt; +
&gt; +void ArrayBufferNeuteringWatchpoint::finishCreation(VM&amp; vm)
&gt; +{
&gt; +    Base::finishCreation(vm);
&gt; +}

Not necessary.

&gt; Source/JavaScriptCore/runtime/ArrayBufferNeuteringWatchpoint.h:42
&gt; +    ~ArrayBufferNeuteringWatchpoint();
&gt; +    
&gt; +    void finishCreation(VM&amp;);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>956728</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-04 18:02:58 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/160150</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218377</attachid>
            <date>2013-12-03 20:09:36 -0800</date>
            <delta_ts>2013-12-04 12:43:21 -0800</delta_ts>
            <desc>it begins</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>7235</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hw
b2ludHMuaAkocmV2aXNpb24gMTYwMDY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEZXNpcmVkV2F0Y2hwb2ludHMuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsOSBAQCBz
dHJ1Y3QgV2F0Y2hwb2ludEZvckdlbmVyaWNXYXRjaHBvaW50U2V0CiAgICAgV2F0Y2hwb2ludFNl
dFR5cGUqIG1fc2V0OwogfTsKIAorLy8gRklYTUU6IHRoZSBTZXRUeXBlIHNob3VsZCBiZSBhIHBv
aW50ZXIgdHlwZSwgc28gdGhhdCB3ZSBjb3VsZCBoYXZlIGEgd2F0Y2hwb2ludCBzZXQKKy8vIGFk
YXB0b3IgdGhhdCB3cmFwcyBhbiBBcnJheUJ1ZmZlciBhbmQgbG9va3MgbGlrZSBhIHBvaW50ZXIg
dG8gYSB3YXRjaHBvaW50IHNldC4KKwogdGVtcGxhdGU8dHlwZW5hbWUgV2F0Y2hwb2ludFNldFR5
cGU+CiBjbGFzcyBHZW5lcmljRGVzaXJlZFdhdGNocG9pbnRzIHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShHZW5lcmljRGVzaXJlZFdhdGNocG9pbnRzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAJKHJldmlzaW9uIDE2MDA2NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkFy
cmF5QnVmZmVyLmgiCiAKKyNpbmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQu
aCIKICNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIk9wZXJhdGlvbnMu
aCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC01Miw5ICs1MywxMSBAQCBib29sIEFycmF5
QnVmZmVyOjp0cmFuc2ZlcihBcnJheUJ1ZmZlckNvCiAgICAgfQogCiAgICAgZm9yIChzaXplX3Qg
aSA9IG51bWJlck9mSW5jb21pbmdSZWZlcmVuY2VzKCk7IGktLTspIHsKLSAgICAgICAgSlNBcnJh
eUJ1ZmZlclZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4oaW5j
b21pbmdSZWZlcmVuY2VBdChpKSk7Ci0gICAgICAgIGlmICh2aWV3KQorICAgICAgICBKU0NlbGwq
IGNlbGwgPSBpbmNvbWluZ1JlZmVyZW5jZUF0KGkpOworICAgICAgICBpZiAoSlNBcnJheUJ1ZmZl
clZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4oY2VsbCkpCiAg
ICAgICAgICAgICB2aWV3LT5uZXV0ZXIoKTsKKyAgICAgICAgZWxzZSBpZiAoQXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50KiB3YXRjaHBvaW50ID0ganNEeW5hbWljQ2FzdDxBcnJheUJ1ZmZl
ck5ldXRlcmluZ1dhdGNocG9pbnQqPihjZWxsKSkKKyAgICAgICAgICAgIHdhdGNocG9pbnQtPnNl
dCgpLT5maXJlQWxsKCk7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwogfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
ck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBcnJheUJ1ZmZl
ck5ldXRlcmluZ1dhdGNocG9pbnQuaCIKKworI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNo
cG9pbnQ6OnNfaW5mbyA9IHsKKyAgICAiQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50Iiwg
MCwgMCwgMCwKKyAgICBDUkVBVEVfTUVUSE9EX1RBQkxFKEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0
Y2hwb2ludCkKK307CisKK0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6QXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50KFZNJiB2bSkKKyAgICA6IEJhc2Uodm0sIHZtLmFycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5nZXQoKSkKKyAgICAsIG1fc2V0KGFkb3B0UmVmKG5ldyBX
YXRjaHBvaW50U2V0KElzV2F0Y2hlZCkpKQoreworfQorCitBcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnQ6On5BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQoKSB7IH0KKwordm9pZCBB
cnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQ6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sK
KyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7Cit9CisKK3ZvaWQgQXJyYXlCdWZmZXJOZXV0
ZXJpbmdXYXRjaHBvaW50OjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBzdGF0aWNfY2Fz
dDxBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQqPihjZWxsKS0+QXJyYXlCdWZmZXJOZXV0
ZXJpbmdXYXRjaHBvaW50Ojp+QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50KCk7Cit9CisK
K0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50OjpjcmVhdGUoVk0mIHZtKQoreworICAgIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludCogcmVzdWx0ID0gbmV3CisgICAgICAgIChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8QXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50Pih2bS5oZWFwKSkKKyAgICAgICAgQXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50KHZtKTsKKyAgICByZXN1bHQtPmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitTdHJ1Y3R1cmUqIEFycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSkKK3sKKyAgICByZXR1cm4gU3RydWN0
dXJlOjpjcmVhdGUodm0sIDAsIGpzTnVsbCgpLCBUeXBlSW5mbyhDb21wb3VuZFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2lu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludF9oCisj
ZGVmaW5lIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludF9oCisKKyNpbmNsdWRlICJKU0Nl
bGwuaCIKKyNpbmNsdWRlICJXYXRjaHBvaW50LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQgOiBwdWJsaWMgSlNDZWxsIHsKK3B1Ymxp
YzoKKyAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOworICAgIAorcHJpdmF0ZToKKyAgICBBcnJheUJ1
ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQoVk0mKTsKKyAgICB+QXJyYXlCdWZmZXJOZXV0ZXJpbmdX
YXRjaHBvaW50KCk7CisgICAgCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworICAgIAor
cHVibGljOgorICAgIERFQ0xBUkVfSU5GTzsKKyAgICAKKyAgICBzdGF0aWMgQXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50KiBjcmVhdGUoVk0mKTsKKworICAgIHN0YXRpYyBjb25zdCBib29s
IG5lZWRzRGVzdHJ1Y3Rpb24gPSB0cnVlOworICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0ltbW9y
dGFsU3RydWN0dXJlID0gdHJ1ZTsKKyAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwor
ICAgIAorICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYpOworICAgIAor
ICAgIFdhdGNocG9pbnRTZXQqIHNldCgpIHsgcmV0dXJuIG1fc2V0LmdldCgpOyB9CisKK3ByaXZh
dGU6CisgICAgUmVmUHRyPFdhdGNocG9pbnRTZXQ+IG1fc2V0OworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKKyNlbmRpZiAvLyBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218430</attachid>
            <date>2013-12-04 12:43:21 -0800</date>
            <delta_ts>2013-12-04 14:48:27 -0800</delta_ts>
            <desc>it does some of the things</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>25698</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjAwNjQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNTQxLDYgKzU0MSw4IEBACiAJCTBGRkI5MjFFMTZEMDJG
NDcwMDU1QTVEQiAvKiBERkdWYXJpYWRpY0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg1QTMxRTE2QUI3NkFFMDA3NzU3MUUgLyogREZH
VmFyaWFkaWNGdW5jdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGRkI5MjFGMTZEMDMzMDUwMDU1QTVEQiAvKiAobnVsbCkgaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEZGQjkyMjAxNkQwMzNCNzAwNTVBNURCIC8qIE5vZGVDb25zdHJ1
Y3RvcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
MERBRDAzMEZCMUVCMUEwMDgyRDIwNSAvKiBOb2RlQ29uc3RydWN0b3JzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZGQzk5RDQxODRFRTMxODAw
OUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZDOTlEMjE4NEVFMzE4MDA5QzEw
QUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNwcCAqLzsgfTsKKwkJMEZGQzk5
RDUxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGQzk5RDMxODRF
RTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRkZDOTU3MTRFRjkw
QTAwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk0QjE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhh
c2UuY3BwICovOyB9OwogCQkwRkZGQzk1ODE0RUY5MEEyMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2Uu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRkZDOTRD
MTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRkZDOTU5MTRFRjkwQTYwMEM3MjUzMiAvKiBE
RkdDU0VQaGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkZGQzk0RDE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuY3BwICovOyB9OwpA
QCAtMTgzMiw2ICsxODM0LDggQEAKIAkJMEZGNzI5QTExNjZBRDM0NzAwMEY1QkEzIC8qIFByb2Zp
bGVyT3JpZ2luU3RhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
UHJvZmlsZXJPcmlnaW5TdGFjay5jcHA7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlck9yaWdpblN0
YWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGNzI5QTIxNjZBRDM0NzAw
MEY1QkEzIC8qIFByb2ZpbGVyT3JpZ2luU3RhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gUHJvZmlsZXJPcmlnaW5TdGFjay5oOyBwYXRoID0gcHJvZmlsZXIvUHJvZmlsZXJP
cmlnaW5TdGFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY5MjJDRjE0RjQ2
QjEzMDA0MUEyNEUgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFi
bGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7
IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTBGRkM5OUQyMTg0RUUzMTgw
MDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGQzk5RDMxODRFRTMxODAwOUMx
MEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGRkM5NEIxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NG
QVBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NGQVBo
YXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdDRkFQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGRkZDOTRDMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDRkFQaGFzZS5oOyBwYXRoID0gZGZnL0RG
R0NGQVBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRkZDOTREMTRFRjkw
OTUwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBERkdDU0VQaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHQ1NFUGhhc2UuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzMzNCw2ICszMzM4LDggQEAKIAkJCQlBNzYx
NDBDQTE4Mjk4MkNCMDA3NTA2MjQgLyogQXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuaCAqLywK
IAkJCQlBN0E4QUYyNTE3QURCNUYyMDA1QUIxNzQgLyogQXJyYXlCdWZmZXIuY3BwICovLAogCQkJ
CUE3QThBRjI2MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5oICovLAorCQkJCTBGRkM5
OUQyMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3Bw
ICovLAorCQkJCTBGRkM5OUQzMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmlu
Z1dhdGNocG9pbnQuaCAqLywKIAkJCQlBN0E4QUYyNzE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlC
dWZmZXJWaWV3LmNwcCAqLywKIAkJCQlBN0E4QUYyODE3QURCNUYzMDA1QUIxNzQgLyogQXJyYXlC
dWZmZXJWaWV3LmggKi8sCiAJCQkJQkM3OTUyMDYwRTE1RThBODAwQTg5OEFCIC8qIEFycmF5Q29u
c3RydWN0b3IuY3BwICovLApAQCAtNDQxNCw2ICs0NDIwLDcgQEAKIAkJCQlBN0E4QUYzODE3QURC
NUYzMDA1QUIxNzQgLyogRmxvYXQzMkFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBN0E4QUYz
OTE3QURCNUYzMDA1QUIxNzQgLyogRmxvYXQ2NEFycmF5LmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjI0RTU0MzE3RUE5RjU5MDBBQkIyMTcgLyogRlBSSW5mby5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEZGQzk5RDUxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2lu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZEQjJDQzkxNzNEQTUyMDAwN0IzQzFCIC8qIEZUTEFi
YnJldmlhdGVkVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTA4MTcwNTEzREIwMEJC
NzIyQyAvKiBGVExBYmJyZXZpYXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkVBMEExRDE3
MDhCMDA3MDBCQjcyMkMgLyogRlRMQWJzdHJhY3RIZWFwLmggaW4gSGVhZGVycyAqLywKQEAgLTU1
NzEsNiArNTU3OCw3IEBACiAJCQkJMTQyODA4M0ExMDdFQzA3NTAwMTNFN0IyIC8qIEpTU3RhY2su
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ3RjM5RDUxMDdFQzM3NjAwNDI3QTQ4IC8qIEpTU3Ry
aW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2MDBCNUE2MTUyQkFBQTcwMDkxRUU1RiAvKiBK
U1N0cmluZ0pvaW5lci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkZDOTlENDE4NEVFMzE4MDA5
QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTE0ODJCNzRFMEE0MzAzMjgwMDUxN0NGQyAvKiBKU1N0cmluZ1JlZi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxNDZBQUIzODBCNjZBOTQ0MDBFNTVGMTYgLyogSlNTdHJpbmdSZWZDRi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjkxOUQwQzE1N0VFMDlGMDA0QTRFN0QgLyogSlNTeW1i
b2xUYWJsZU9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5jcHAJKHJldmlzaW9uIDE2
MDA2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsMjIgQEAKIAogI2lmIEVOQUJMRShERkdf
SklUKQogCisjaW5jbHVkZSAiQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgiCisjaW5j
bHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorCiBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKK3ZvaWQgQXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2ludEFk
YXB0b3I6OmFkZCgKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNBcnJheUJ1ZmZlclZpZXcq
IHZpZXcsIFdhdGNocG9pbnQqIHdhdGNocG9pbnQpCit7CisgICAgQXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50KiBuZXV0ZXJpbmdXYXRjaHBvaW50ID0KKyAgICAgICAgQXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50OjpjcmVhdGUoKmNvZGVCbG9jay0+dm0oKSk7CisgICAgbmV1dGVy
aW5nV2F0Y2hwb2ludC0+c2V0KCktPmFkZCh3YXRjaHBvaW50KTsKKyAgICBjb2RlQmxvY2stPmFk
ZENvbnN0YW50KG5ldXRlcmluZ1dhdGNocG9pbnQpOworICAgIGNvZGVCbG9jay0+dm0oKS0+aGVh
cC5hZGRSZWZlcmVuY2UobmV1dGVyaW5nV2F0Y2hwb2ludCwgdmlldy0+YnVmZmVyKCkpOworfQor
CiBEZXNpcmVkV2F0Y2hwb2ludHM6OkRlc2lyZWRXYXRjaHBvaW50cygpIHsgfQogRGVzaXJlZFdh
dGNocG9pbnRzOjp+RGVzaXJlZFdhdGNocG9pbnRzKCkgeyB9CiAKQEAgLTQzLDYgKzU3LDExIEBA
IHZvaWQgRGVzaXJlZFdhdGNocG9pbnRzOjphZGRMYXppbHkoSW5saW4KICAgICBtX2lubGluZVNl
dHMuYWRkTGF6aWx5KCZzZXQpOwogfQogCit2b2lkIERlc2lyZWRXYXRjaHBvaW50czo6YWRkTGF6
aWx5KEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3KQoreworICAgIG1fYnVmZmVyVmlld3MuYWRkTGF6
aWx5KHZpZXcpOworfQorCiB2b2lkIERlc2lyZWRXYXRjaHBvaW50czo6YWRkTGF6aWx5KENvZGVP
cmlnaW4gY29kZU9yaWdpbiwgRXhpdEtpbmQgZXhpdEtpbmQsIFdhdGNocG9pbnRTZXQqIHNldCkK
IHsKICAgICBtX3NldHMuYWRkTGF6aWx5KGNvZGVPcmlnaW4sIGV4aXRLaW5kLCBzZXQpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50
cy5oCShyZXZpc2lvbiAxNjAwNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rl
c2lyZWRXYXRjaHBvaW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKICNp
bmNsdWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVkZSAiREZHQ29tbW9uRGF0YS5oIgorI2luY2x1
ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTYxLDcgKzYy
LDI0IEBAIHN0cnVjdCBXYXRjaHBvaW50Rm9yR2VuZXJpY1dhdGNocG9pbnRTZXQKICAgICBXYXRj
aHBvaW50U2V0VHlwZSogbV9zZXQ7CiB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBXYXRjaHBvaW50
U2V0VHlwZT4KK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgR2VuZXJpY1NldEFkYXB0b3Ig
eworICAgIHN0YXRpYyB2b2lkIGFkZChDb2RlQmxvY2sqLCBUKiBzZXQsIFdhdGNocG9pbnQqIHdh
dGNocG9pbnQpCisgICAgeworICAgICAgICByZXR1cm4gc2V0LT5hZGQod2F0Y2hwb2ludCk7Cisg
ICAgfQorICAgIHN0YXRpYyBib29sIGhhc0JlZW5JbnZhbGlkYXRlZChUKiBzZXQpIHsgcmV0dXJu
IHNldC0+aGFzQmVlbkludmFsaWRhdGVkKCk7IH0KK307CisKK3N0cnVjdCBBcnJheUJ1ZmZlclZp
ZXdXYXRjaHBvaW50QWRhcHRvciB7CisgICAgc3RhdGljIHZvaWQgYWRkKENvZGVCbG9jayosIEpT
QXJyYXlCdWZmZXJWaWV3KiwgV2F0Y2hwb2ludCopOworICAgIHN0YXRpYyBib29sIGhhc0JlZW5J
bnZhbGlkYXRlZChKU0FycmF5QnVmZmVyVmlldyogdmlldykKKyAgICB7CisgICAgICAgIHJldHVy
biAhIXZpZXctPmxlbmd0aCgpOworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFdhdGNo
cG9pbnRTZXRUeXBlLCB0eXBlbmFtZSBBZGFwdG9yID0gR2VuZXJpY1NldEFkYXB0b3I8V2F0Y2hw
b2ludFNldFR5cGU+PgogY2xhc3MgR2VuZXJpY0Rlc2lyZWRXYXRjaHBvaW50cyB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoR2VuZXJpY0Rlc2lyZWRXYXRjaHBvaW50cyk7CiAjaWYgIUFTU0VS
VF9ESVNBQkxFRApAQCAtOTIsNyArMTEwLDcgQEAgcHVibGljOgogICAgICAgICB0eXBlbmFtZSBI
YXNoU2V0PFdhdGNocG9pbnRTZXRUeXBlKj46Oml0ZXJhdG9yIGVuZCA9IG1fc2V0cy5lbmQoKTsK
ICAgICAgICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKICAgICAgICAgICAgIGNvbW1v
bi53YXRjaHBvaW50cy5hcHBlbmQoQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50KGNvZGVC
bG9jaykpOwotICAgICAgICAgICAgKCppdGVyKS0+YWRkKCZjb21tb24ud2F0Y2hwb2ludHMubGFz
dCgpKTsKKyAgICAgICAgICAgIEFkYXB0b3I6OmFkZChjb2RlQmxvY2ssICppdGVyLCAmY29tbW9u
LndhdGNocG9pbnRzLmxhc3QoKSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IG1fcHJvZmlsZWRXYXRjaHBvaW50cy5zaXplKCk7IGktLTspIHsKQEAgLTEw
MCw3ICsxMTgsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbV9wcm9maWxlZFdhdGNocG9p
bnRzW2ldOwogICAgICAgICAgICAgY29tbW9uLnByb2ZpbGVkV2F0Y2hwb2ludHMuYXBwZW5kKAog
ICAgICAgICAgICAgICAgIFByb2ZpbGVkQ29kZUJsb2NrSmV0dGlzb25pbmdXYXRjaHBvaW50KHdh
dGNocG9pbnQubV9jb2RlT3JpZ2luLCB3YXRjaHBvaW50Lm1fZXhpdEtpbmQsIGNvZGVCbG9jaykp
OwotICAgICAgICAgICAgd2F0Y2hwb2ludC5tX3NldC0+YWRkKCZjb21tb24ucHJvZmlsZWRXYXRj
aHBvaW50cy5sYXN0KCkpOworICAgICAgICAgICAgQWRhcHRvcjo6YWRkKGNvZGVCbG9jaywgd2F0
Y2hwb2ludC5tX3NldCwgJmNvbW1vbi5wcm9maWxlZFdhdGNocG9pbnRzLmxhc3QoKSk7CiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIG1fcmVhbGx5QWRkZWQgPSB0cnVlOwpAQCAtMTExLDEy
ICsxMjksMTIgQEAgcHVibGljOgogICAgICAgICB0eXBlbmFtZSBIYXNoU2V0PFdhdGNocG9pbnRT
ZXRUeXBlKj46Oml0ZXJhdG9yIGl0ZXIgPSBtX3NldHMuYmVnaW4oKTsKICAgICAgICAgdHlwZW5h
bWUgSGFzaFNldDxXYXRjaHBvaW50U2V0VHlwZSo+OjppdGVyYXRvciBlbmQgPSBtX3NldHMuZW5k
KCk7CiAgICAgICAgIGZvciAoOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7Ci0gICAgICAgICAgICBp
ZiAoKCppdGVyKS0+aGFzQmVlbkludmFsaWRhdGVkKCkpCisgICAgICAgICAgICBpZiAoQWRhcHRv
cjo6aGFzQmVlbkludmFsaWRhdGVkKCppdGVyKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fcHJv
ZmlsZWRXYXRjaHBvaW50cy5zaXplKCk7IGktLTspIHsKLSAgICAgICAgICAgIGlmIChtX3Byb2Zp
bGVkV2F0Y2hwb2ludHNbaV0ubV9zZXQtPmhhc0JlZW5JbnZhbGlkYXRlZCgpKQorICAgICAgICAg
ICAgaWYgKEFkYXB0b3I6Omhhc0JlZW5JbnZhbGlkYXRlZChtX3Byb2ZpbGVkV2F0Y2hwb2ludHNb
aV0ubV9zZXQpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAg
ICAgICAKQEAgLTEyNiw3ICsxNDQsNyBAQCBwdWJsaWM6CiAjaWYgQVNTRVJUX0RJU0FCTEVECiAg
ICAgYm9vbCBpc1N0aWxsVmFsaWQoV2F0Y2hwb2ludFNldFR5cGUqIHNldCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBzZXQtPmlzU3RpbGxWYWxpZCgpOworICAgICAgICByZXR1cm4gIUFkYXB0b3I6
Omhhc0JlZW5JbnZhbGlkYXRlZChzZXQpOwogICAgIH0KICAgICAKICAgICBib29sIHNob3VsZEFz
c3VtZU1peGVkU3RhdGUoV2F0Y2hwb2ludFNldFR5cGUqKQpAQCAtMTM2LDcgKzE1NCw3IEBAIHB1
YmxpYzoKICNlbHNlCiAgICAgYm9vbCBpc1N0aWxsVmFsaWQoV2F0Y2hwb2ludFNldFR5cGUqIHNl
dCkKICAgICB7Ci0gICAgICAgIGJvb2wgcmVzdWx0ID0gc2V0LT5pc1N0aWxsVmFsaWQoKTsKKyAg
ICAgICAgYm9vbCByZXN1bHQgPSAhQWRhcHRvcjo6aGFzQmVlbkludmFsaWRhdGVkKHNldCk7CiAg
ICAgICAgIG1fZmlyc3RLbm93blN0YXRlLmFkZChzZXQsIHJlc3VsdCk7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQpAQCAtMTQ3LDcgKzE2NSw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYg
KGl0ZXIgPT0gbV9maXJzdEtub3duU3RhdGUuZW5kKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIAotICAgICAgICByZXR1cm4gaXRlci0+dmFsdWUgIT0gc2V0LT5pc1N0aWxs
VmFsaWQoKTsKKyAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlICE9ICFBZGFwdG9yOjpoYXNCZWVu
SW52YWxpZGF0ZWQoc2V0KTsKICAgICB9CiAjZW5kaWYKICAgICAKQEAgLTE3Miw2ICsxOTAsNyBA
QCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBhZGRMYXppbHkoV2F0Y2hwb2ludFNldCopOwogICAg
IHZvaWQgYWRkTGF6aWx5KElubGluZVdhdGNocG9pbnRTZXQmKTsKKyAgICB2b2lkIGFkZExhemls
eShKU0FycmF5QnVmZmVyVmlldyopOwogICAgIHZvaWQgYWRkTGF6aWx5KENvZGVPcmlnaW4sIEV4
aXRLaW5kLCBXYXRjaHBvaW50U2V0Kik7CiAgICAgdm9pZCBhZGRMYXppbHkoQ29kZU9yaWdpbiwg
RXhpdEtpbmQsIElubGluZVdhdGNocG9pbnRTZXQmKTsKICAgICAKQEAgLTE4Nyw2ICsyMDYsMTAg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1faW5saW5lU2V0cy5pc1N0aWxsVmFs
aWQoJnNldCk7CiAgICAgfQorICAgIGJvb2wgaXNTdGlsbFZhbGlkKEpTQXJyYXlCdWZmZXJWaWV3
KiB2aWV3KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYnVmZmVyVmlld3MuaXNTdGlsbFZhbGlk
KHZpZXcpOworICAgIH0KICAgICBib29sIHNob3VsZEFzc3VtZU1peGVkU3RhdGUoV2F0Y2hwb2lu
dFNldCogc2V0KQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fc2V0cy5zaG91bGRBc3N1bWVNaXhl
ZFN0YXRlKHNldCk7CkBAIC0xOTUsNiArMjE4LDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IHJldHVybiBtX2lubGluZVNldHMuc2hvdWxkQXNzdW1lTWl4ZWRTdGF0ZSgmc2V0KTsKICAgICB9
CisgICAgYm9vbCBzaG91bGRBc3N1bWVNaXhlZFN0YXRlKEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fYnVmZmVyVmlld3Muc2hvdWxkQXNzdW1lTWl4ZWRT
dGF0ZSh2aWV3KTsKKyAgICB9CiAgICAgYm9vbCBpc1ZhbGlkT3JNaXhlZChXYXRjaHBvaW50U2V0
KiBzZXQpCiAgICAgewogICAgICAgICByZXR1cm4gbV9zZXRzLmlzVmFsaWRPck1peGVkKHNldCk7
CkBAIC0yMDMsMTAgKzIzMCwxNSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV9p
bmxpbmVTZXRzLmlzVmFsaWRPck1peGVkKCZzZXQpOwogICAgIH0KKyAgICBib29sIGlzVmFsaWRP
ck1peGVkKEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
YnVmZmVyVmlld3MuaXNWYWxpZE9yTWl4ZWQodmlldyk7CisgICAgfQogICAgIAogcHJpdmF0ZToK
ICAgICBHZW5lcmljRGVzaXJlZFdhdGNocG9pbnRzPFdhdGNocG9pbnRTZXQ+IG1fc2V0czsKICAg
ICBHZW5lcmljRGVzaXJlZFdhdGNocG9pbnRzPElubGluZVdhdGNocG9pbnRTZXQ+IG1faW5saW5l
U2V0czsKKyAgICBHZW5lcmljRGVzaXJlZFdhdGNocG9pbnRzPEpTQXJyYXlCdWZmZXJWaWV3LCBB
cnJheUJ1ZmZlclZpZXdXYXRjaHBvaW50QWRhcHRvcj4gbV9idWZmZXJWaWV3czsKIH07CiAKIH0g
fSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguY3BwCShyZXZpc2lvbiAxNjAwNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzM1LDYgKzczNSwyMCBAQCBXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+KiBHcmFwaDo6dHJ5R2V0CiAgICAgcmV0dXJuIGFjdGl2YXRpb24t
PnJlZ2lzdGVycygpOwogfQogCitKU0FycmF5QnVmZmVyVmlldyogR3JhcGg6OnRyeUdldEZvbGRh
YmxlVmlldyhOb2RlKiBub2RlLCBBcnJheU1vZGUgYXJyYXlNb2RlKQoreworICAgIGlmIChhcnJh
eU1vZGUudHlwZWRBcnJheVR5cGUoKSA9PSBOb3RUeXBlZEFycmF5KQorICAgICAgICByZXR1cm4g
MDsKKyAgICBpZiAoIW5vZGUtPmhhc0NvbnN0YW50KCkpCisgICAgICAgIHJldHVybiAwOworICAg
IEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyVmll
dyo+KHZhbHVlT2ZKU0NvbnN0YW50KG5vZGUpKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJl
dHVybiAwOworICAgIGlmICghdmlldy0+bGVuZ3RoKCkpCisgICAgICAgIHJldHVybiAwOworICAg
IHJldHVybiB2aWV3OworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKICNlbmRpZgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMTYwMDY0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBA
IC03OTMsNiArNzkzLDggQEAgcHVibGljOgogICAgIAogICAgIFdyaXRlQmFycmllckJhc2U8VW5r
bm93bj4qIHRyeUdldFJlZ2lzdGVycyhOb2RlKik7CiAgICAgCisgICAgSlNBcnJheUJ1ZmZlclZp
ZXcqIHRyeUdldEZvbGRhYmxlVmlldyhOb2RlKiwgQXJyYXlNb2RlKTsKKyAgICAKICAgICBWTSYg
bV92bTsKICAgICBQbGFuJiBtX3BsYW47CiAgICAgQ29kZUJsb2NrKiBtX2NvZGVCbG9jazsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CShyZXZpc2lvbiAxNjAwNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAzNSw4ICs0MDM1LDI3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpbmdaZXJvTGUKICNlbmRpZgogfQogCitib29sIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlQ29uc3RhbnRJbmRleGVkUHJvcGVydHlTdG9yYWdlKE5vZGUq
IG5vZGUpCit7CisgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2ppdC5ncmFwaCgpLnRy
eUdldEZvbGRhYmxlVmlldygKKyAgICAgICAgbm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBub2RlLT5h
cnJheU1vZGUoKSk7CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKHZpZXctPm1vZGUoKSA9PSBGYXN0VHlwZWRBcnJheSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIAorICAgIEdQUlRlbXBvcmFyeSBzdG9yYWdlKHRoaXMpOworICAgIEdQUlJlZyBzdG9y
YWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKKyAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIodmll
dy0+dmVjdG9yKCkpLCBzdG9yYWdlR1BSKTsKKyAgICBzdG9yYWdlUmVzdWx0KHN0b3JhZ2VHUFIs
IG5vZGUpOworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZShOb2RlKiBub2RlKQogeworICAgIGlmIChjb21w
aWxlQ29uc3RhbnRJbmRleGVkUHJvcGVydHlTdG9yYWdlKG5vZGUpKQorICAgICAgICByZXR1cm47
CisgICAgCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CiAgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigpOwogICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTYw
MDY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDI3LDYgKzIwMjcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21w
aWxlQXJpdGhJTXVsKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVBcml0aERpdihOb2RlKik7CiAg
ICAgdm9pZCBjb21waWxlQXJpdGhNb2QoTm9kZSopOworICAgIGJvb2wgY29tcGlsZUNvbnN0YW50
SW5kZXhlZFByb3BlcnR5U3RvcmFnZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0SW5kZXhl
ZFByb3BlcnR5U3RvcmFnZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0VHlwZWRBcnJheUJ5
dGVPZmZzZXQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5
KE5vZGUqLCBUeXBlZEFycmF5VHlwZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1dhdGNocG9pbnRDb2xsZWN0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENvbGxlY3Rpb25QaGFzZS5jcHAJKHJldmlz
aW9uIDE2MDA2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENv
bGxlY3Rpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw2ICsxMzAsMTggQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIGFkZExhemlseShtX25vZGUtPnN5bWJvbFRhYmxlKCktPm1fZnVu
Y3Rpb25FbnRlcmVkT25jZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2U6CisgICAgICAgICAgICBpZiAoSlNB
cnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdldEZvbGRhYmxlVmlldyhtX25vZGUt
PmNoaWxkMSgpLm5vZGUoKSwgbV9ub2RlLT5hcnJheU1vZGUoKSkpIHsKKyAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogSXQgd291bGQgYmUgYXdlc29tZSB0byBiZSBhYmxlIHRvIGZvbGQgdGhlIHBy
b3BlcnR5IHN0b3JhZ2UgZm9yCisgICAgICAgICAgICAgICAgLy8gdGhlc2UgR0MtYWxsb2NhdGVk
IHR5cGVkIGFycmF5cy4gRm9yIG5vdyBpdCBkb2Vzbid0IG1hdHRlciBiZWNhdXNlIHRoZQorICAg
ICAgICAgICAgICAgIC8vIG1vc3QgY29tbW9uIHVzZS1jYXNlcyBmb3IgY29uc3RhbnQgdHlwZWQg
YXJyYXlzIGludm9sdmUgbGFyZ2UgYXJyYXlzIHdpdGgKKyAgICAgICAgICAgICAgICAvLyBhbGlh
c2VkIGJ1ZmZlciB2aWV3cy4KKyAgICAgICAgICAgICAgICBpZiAodmlldy0+bW9kZSgpID09IEZh
c3RUeXBlZEFycmF5KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICBhZGRMYXppbHkodmlldyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KQEAgLTE3OSw2ICsxOTEsMTAgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIG1fZ3JhcGgu
d2F0Y2hwb2ludHMoKS5hZGRMYXppbHkoc2V0KTsKICAgICB9CisgICAgdm9pZCBhZGRMYXppbHko
SlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcpCisgICAgeworICAgICAgICBtX2dyYXBoLndhdGNocG9p
bnRzKCkuYWRkTGF6aWx5KHZpZXcpOworICAgIH0KICAgICAKICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUJ1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXIuY3BwCShyZXZpc2lvbiAxNjAwNjQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYg
KzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJBcnJheUJ1ZmZlci5oIgog
CisjaW5jbHVkZSAiQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSAi
SlNBcnJheUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJPcGVyYXRpb25zLmgiCiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgpAQCAtNTIsOSArNTMsMTEgQEAgYm9vbCBBcnJheUJ1ZmZlcjo6dHJhbnNm
ZXIoQXJyYXlCdWZmZXJDbwogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGkgPSBudW1iZXJPZklu
Y29taW5nUmVmZXJlbmNlcygpOyBpLS07KSB7Ci0gICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB2
aWV3ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KGluY29taW5nUmVmZXJlbmNl
QXQoaSkpOwotICAgICAgICBpZiAodmlldykKKyAgICAgICAgSlNDZWxsKiBjZWxsID0gaW5jb21p
bmdSZWZlcmVuY2VBdChpKTsKKyAgICAgICAgaWYgKEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0g
anNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KGNlbGwpKQogICAgICAgICAgICAgdmll
dy0+bmV1dGVyKCk7CisgICAgICAgIGVsc2UgaWYgKEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludCogd2F0Y2hwb2ludCA9IGpzRHluYW1pY0Nhc3Q8QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50Kj4oY2VsbCkpCisgICAgICAgICAgICB3YXRjaHBvaW50LT5zZXQoKS0+ZmlyZUFsbCgp
OwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRj
aHBvaW50LmgiCisKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
Citjb25zdCBDbGFzc0luZm8gQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpzX2luZm8g
PSB7CisgICAgIkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCIsIDAsIDAsIDAsCisgICAg
Q1JFQVRFX01FVEhPRF9UQUJMRShBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQpCit9Owor
CitBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQ6OkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0
Y2hwb2ludChWTSYgdm0pCisgICAgOiBCYXNlKHZtLCB2bS5hcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnRTdHJ1Y3R1cmUuZ2V0KCkpCisgICAgLCBtX3NldChhZG9wdFJlZihuZXcgV2F0Y2hw
b2ludFNldChJc1dhdGNoZWQpKSkKK3sKK30KKworQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBv
aW50Ojp+QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50KCkgeyB9CisKK3ZvaWQgQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworfQorCit2b2lkIEFycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludDo6ZGVzdHJveShKU0NlbGwqIGNlbGwpCit7CisgICAgc3RhdGljX2Nhc3Q8QXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50Kj4oY2VsbCktPkFycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludDo6fkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCgpOworfQorCitBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQqIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2lu
dDo6Y3JlYXRlKFZNJiB2bSkKK3sKKyAgICBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQq
IHJlc3VsdCA9IG5ldworICAgICAgICAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEFycmF5QnVmZmVy
TmV1dGVyaW5nV2F0Y2hwb2ludD4odm0uaGVhcCkpCisgICAgICAgIEFycmF5QnVmZmVyTmV1dGVy
aW5nV2F0Y2hwb2ludCh2bSk7CisgICAgcmVzdWx0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworU3RydWN0dXJlKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNo
cG9pbnQ6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0pCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCAwLCBqc051bGwoKSwgVHlwZUluZm8oQ29tcG91bmRUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRfaAorI2RlZmlu
ZSBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnRfaAorCisjaW5jbHVkZSAiSlNDZWxsLmgi
CisjaW5jbHVkZSAiV2F0Y2hwb2ludC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgQXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50IDogcHVibGljIEpTQ2VsbCB7CitwdWJsaWM6Cisg
ICAgdHlwZWRlZiBKU0NlbGwgQmFzZTsKKyAgICAKK3ByaXZhdGU6CisgICAgQXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50KFZNJik7CisgICAgfkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludCgpOworICAgIAorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKyAgICAKK3B1Ymxp
YzoKKyAgICBERUNMQVJFX0lORk87CisgICAgCisgICAgc3RhdGljIEFycmF5QnVmZmVyTmV1dGVy
aW5nV2F0Y2hwb2ludCogY3JlYXRlKFZNJik7CisKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBuZWVk
c0Rlc3RydWN0aW9uID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNJbW1vcnRhbFN0
cnVjdHVyZSA9IHRydWU7CisgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKKyAgICAK
KyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mKTsKKyAgICAKKyAgICBX
YXRjaHBvaW50U2V0KiBzZXQoKSB7IHJldHVybiBtX3NldC5nZXQoKTsgfQorCitwcml2YXRlOgor
ICAgIFJlZlB0cjxXYXRjaHBvaW50U2V0PiBtX3NldDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCisjZW5kaWYgLy8gQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50X2gKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDE2MDA2NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgIlZNLmgiCiAKICNpbmNsdWRlICJBcmdMaXN0LmgiCisjaW5jbHVk
ZSAiQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1l
SW5saW5lcy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvZGVDYWNoZS5o
IgpAQCAtMjQ4LDYgKzI0OSw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFw
VHlwZSkKICAgICBzeW1ib2xUYWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFN5bWJvbFRhYmxlOjpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgc3RydWN0dXJlQ2hhaW5T
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBTdHJ1Y3R1cmVDaGFpbjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlz
LCAwLCBqc051bGwoKSkpOwogICAgIHNwYXJzZUFycmF5VmFsdWVNYXBTdHJ1Y3R1cmUuc2V0KCp0
aGlzLCBTcGFyc2VBcnJheVZhbHVlTWFwOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVs
bCgpKSk7CisgICAgYXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U3RydWN0dXJlLnNldCgq
dGhpcywgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMpKTsKICAgICB3aXRoU2NvcGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1dpdGhTY29wZTo6Y3Jl
YXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwogICAgIHVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICB1bmxpbmtlZFByb2dy
YW1Db2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s6
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24gMTYwMDY0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBjb3B5KQpAQCAtMjY3LDYgKzI2Nyw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBzeW1ib2xUYWJsZVN0cnVjdHVy
ZTsKICAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gc3RydWN0dXJlQ2hhaW5TdHJ1Y3R1cmU7CiAg
ICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHNwYXJzZUFycmF5VmFsdWVNYXBTdHJ1Y3R1cmU7Cisg
ICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludFN0
cnVjdHVyZTsKICAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gd2l0aFNjb3BlU3RydWN0dXJlOwog
ICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVj
dHVyZTsKICAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gdW5saW5rZWRQcm9ncmFtQ29kZUJsb2Nr
U3RydWN0dXJlOwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9maXhlZC10eXBlZC1hcnJh
eS1zdG9yYWdlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL2ZpeGVkLXR5cGVkLWFycmF5LXN0b3JhZ2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9maXhlZC10eXBlZC1hcnJheS1zdG9yYWdlLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitKU1JlZ3Jlc3MvZml4ZWQt
dHlwZWQtYXJyYXktc3RvcmFnZQorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFT
UyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9maXhlZC10eXBl
ZC1hcnJheS1zdG9yYWdlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVz
cy9maXhlZC10eXBlZC1hcnJheS1zdG9yYWdlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL2ZpeGVkLXR5cGVkLWFycmF5LXN0b3JhZ2UuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlw
dC10ZXN0cy9maXhlZC10eXBlZC1hcnJheS1zdG9yYWdlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2ZpeGVkLXR5cGVk
LWFycmF5LXN0b3JhZ2UuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9z
Y3JpcHQtdGVzdHMvZml4ZWQtdHlwZWQtYXJyYXktc3RvcmFnZS5qcwkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2ZpeGVkLXR5cGVkLWFycmF5LXN0
b3JhZ2UuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAordmFyIGFycmF5ID0gbmV3
IEludDhBcnJheShuZXcgQXJyYXlCdWZmZXIoMTAwKSk7CisKK2Z1bmN0aW9uIGZvbygpIHsKKyAg
ICByZXR1cm4gYXJyYXlbMF07Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwOyArK2kpIHsK
KyAgICBpZiAoZm9vKCkgIT0gMCkKKyAgICAgICAgdGhyb3cgIkVycm9yIjsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218457</attachid>
            <date>2013-12-04 14:48:27 -0800</date>
            <delta_ts>2013-12-04 15:10:44 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>42978</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYwMTI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBA
CisyMDEzLTEyLTA0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Rm9sZCBjb25zdGFudCB0eXBlZCBhcnJheXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNTIwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICAKKyAgICAgICAgSWYgYnkgc29tZSBvdGhlciBtZWNoYW5pc20gd2Ug
aGF2ZSBhIHR5cGVkIGFycmF5IGFjY2VzcyBvbiBhIGNvbXBpbGUtdGltZSBjb25zdGFudAorICAg
ICAgICB0eXBlZCBhcnJheSBwb2ludGVyLCB0aGVuIGZvbGQ6CisgICAgICAgIAorICAgICAgICAt
IEFycmF5IGJvdW5kcyBjaGVja3MuIFNwZWNpZmljYWxseSwgZm9sZCB0aGUgbG9hZCBvZiBsZW5n
dGguCisgICAgICAgIAorICAgICAgICAtIExvYWRpbmcgdGhlIHZlY3Rvci4KKyAgICAgICAgCisg
ICAgICAgIFRoaXMgbmVlZHMgdG8gaW5zdGFsbCBhIHdhdGNocG9pbnQgb24gdGhlIGFycmF5IGl0
c2VsZiBiZWNhdXNlIG9mIHRoZSBwb3NzaWJpbGl0eSBvZgorICAgICAgICBuZXV0ZXJpbmcuIE5l
dXRlcmluZyBpcyByaWRpY3Vsb3VzLiBXZSBkbyB0aGlzIHdpdGhvdXQgYmxvYXRpbmcgdGhlIHNp
emUgb2YKKyAgICAgICAgQXJyYXlCdWZmZXIgb3IgSlNBcnJheUJ1ZmZlclZpZXcgaW4gdGhlIGNv
bW1vbiBjYXNlIChpLmUuIHRoZSBjYXNlIHdoZXJlIHlvdQorICAgICAgICBhbGxvY2F0ZWQgYW4g
YXJyYXkgdGhhdCBkaWRuJ3QgZW5kIHVwIGJlY29taW5nIGEgY29tcGlsZS10aW1lIGNvbnN0YW50
KS4gVG8gaW5zdGFsbAorICAgICAgICB0aGUgd2F0Y2hwb2ludCwgd2Ugc2xvd0Rvd25BbmRXYXN0
ZU1lbW9yeSBhbmQgdGhlbiBjcmVhdGUgYW4gaW5jb21pbmcgcmVmZXJlbmNlIHRvCisgICAgICAg
IHRoZSBBcnJheUJ1ZmZlciwgd2hlcmUgdGhhdCBpbmNvbWluZyByZWZlcmVuY2UgaXMgZnJvbSBh
IHdhdGNocG9pbnQgb2JqZWN0LiBUaGUKKyAgICAgICAgQXJyYXlCdWZmZXIgYWxyZWFkeSBrbm93
cyBhYm91dCBzdWNoIGluY29taW5nIHJlZmVyZW5jZXMgYW5kIGNhbiBmaXJlIHRoZQorICAgICAg
ICB3YXRjaHBvaW50cyB0aGF0IHdheS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZGZnL0RGR0Rlc2lyZWRXYXRjaHBv
aW50cy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlCdWZmZXJWaWV3V2F0Y2hwb2ludEFk
YXB0b3I6OmFkZCk6CisgICAgICAgIChKU0M6OkRGRzo6RGVzaXJlZFdhdGNocG9pbnRzOjphZGRM
YXppbHkpOgorICAgICAgICAqIGRmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpHZW5lcmljU2V0QWRhcHRvcjo6YWRkKToKKyAgICAgICAgKEpTQzo6REZHOjpH
ZW5lcmljU2V0QWRhcHRvcjo6aGFzQmVlbkludmFsaWRhdGVkKToKKyAgICAgICAgKEpTQzo6REZH
OjpBcnJheUJ1ZmZlclZpZXdXYXRjaHBvaW50QWRhcHRvcjo6aGFzQmVlbkludmFsaWRhdGVkKToK
KyAgICAgICAgKEpTQzo6REZHOjpHZW5lcmljRGVzaXJlZFdhdGNocG9pbnRzOjpyZWFsbHlBZGQp
OgorICAgICAgICAoSlNDOjpERkc6OkdlbmVyaWNEZXNpcmVkV2F0Y2hwb2ludHM6OmFyZVN0aWxs
VmFsaWQpOgorICAgICAgICAoSlNDOjpERkc6OkdlbmVyaWNEZXNpcmVkV2F0Y2hwb2ludHM6Omlz
U3RpbGxWYWxpZCk6CisgICAgICAgIChKU0M6OkRGRzo6R2VuZXJpY0Rlc2lyZWRXYXRjaHBvaW50
czo6c2hvdWxkQXNzdW1lTWl4ZWRTdGF0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6RGVzaXJlZFdh
dGNocG9pbnRzOjppc1N0aWxsVmFsaWQpOgorICAgICAgICAoSlNDOjpERkc6OkRlc2lyZWRXYXRj
aHBvaW50czo6c2hvdWxkQXNzdW1lTWl4ZWRTdGF0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6RGVz
aXJlZFdhdGNocG9pbnRzOjppc1ZhbGlkT3JNaXhlZCk6CisgICAgICAgICogZGZnL0RGR0dyYXBo
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6dHJ5R2V0Rm9sZGFibGVWaWV3KToKKyAg
ICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJh
eU91dE9mQm91bmRzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdFR5
cGVkQXJyYXlCb3VuZHNDaGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRCeVZhbE9uSW50VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJh
eSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZv
ckZsb2F0VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVDb25zdGFudEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZSk6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1dhdGNocG9p
bnRDb2xsZWN0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OldhdGNocG9pbnRDb2xs
ZWN0aW9uUGhhc2U6OmhhbmRsZSk6CisgICAgICAgIChKU0M6OkRGRzo6V2F0Y2hwb2ludENvbGxl
Y3Rpb25QaGFzZTo6YWRkTGF6aWx5KToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0xMVk0u
Y3BwOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlR2V0SW5kZXhl
ZFByb3BlcnR5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNv
bXBpbGVHZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBp
bGVQdXRCeVZhbCk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OnR5cGVkQXJy
YXlMZW5ndGgpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZmZXIuY3BwOgorICAgICAgICAo
SlNDOjpBcnJheUJ1ZmZlcjo6dHJhbnNmZXIpOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkFycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50KToK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50Ojp+QXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVy
TmV1dGVyaW5nV2F0Y2hwb2ludDo6ZGVzdHJveSk6CisgICAgICAgIChKU0M6OkFycmF5QnVmZmVy
TmV1dGVyaW5nV2F0Y2hwb2ludDo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUv
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50Lmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpB
cnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQ6OnNldCk6CisgICAgICAgICogcnVudGltZS9W
TS5jcHA6CisgICAgICAgIChKU0M6OlZNOjpWTSk6CisgICAgICAgICogcnVudGltZS9WTS5oOgor
CiAyMDEzLTEyLTA0ICBwZWF2b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgogCiAg
ICAgICAgIFVzZSBUaHJlYWRpbmdPbmNlIGNsYXNzIHRvIGVuY2Fwc3VsYXRlIHB0aHJlYWRfb25j
ZSBmdW5jdGlvbmFsaXR5LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAko
cmV2aXNpb24gMTYwMTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0yODEsNiArMjgxLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1NP
VVJDRVMKICAgICBydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yQ29uc3RydWN0b3IuY3BwCiAgICAg
cnVudGltZS9Bcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL0FycmF5
QnVmZmVyLmNwcAorICAgIHJ1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNw
cAogICAgIHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3LmNwcAogICAgIHJ1bnRpbWUvQXJyYXlDb25z
dHJ1Y3Rvci5jcHAKICAgICBydW50aW1lL0FycmF5SXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAx
NjAxMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29y
a2luZyBjb3B5KQpAQCAtNzgyLDYgKzc4Miw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0g
XAogICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50c0l0ZXJhdG9yUHJv
dG90eXBlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNw
cCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBcCisJU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50
LmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVm
ZmVyVmlldy5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVy
Vmlldy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9y
LmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHJldmlz
aW9uIDE2MDEyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTUyNCw2ICs1MjQs
NyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxBcmd1bWVudHNJdGVyYXRv
ckNvbnN0cnVjdG9yLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
QXJndW1lbnRzSXRlcmF0b3JQcm90b3R5cGUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxBcnJheUJ1ZmZlci5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEFycmF5QnVmZmVyVmlldy5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEFycmF5Q29uc3RydWN0b3IuY3BwIiAv
PgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxBcnJheUl0ZXJhdG9yQ29uc3Ry
dWN0b3IuY3BwIiAvPgpAQCAtMTA5MCw2ICsxMDkxLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHJ1bnRpbWVcQXJnTGlzdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cnVudGltZVxBcmd1bWVudHMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcQXJyYXlCdWZmZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
QXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxydW50aW1lXEFycmF5QnVmZmVyVmlldy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccnVudGltZVxBcnJheUNvbnN0cnVjdG9yLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXEFycmF5Q29udmVudGlvbnMuaCIgLz4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxNjAxMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtNTQxLDYgKzU0MSw4IEBACiAJCTBGRkI5MjFFMTZEMDJGNDcwMDU1QTVEQiAvKiBE
RkdWYXJpYWRpY0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjg1QTMxRTE2QUI3NkFFMDA3NzU3MUUgLyogREZHVmFyaWFkaWNGdW5jdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
RkI5MjFGMTZEMDMzMDUwMDU1QTVEQiAvKiAobnVsbCkgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEZGQjkyMjAxNkQwMzNCNzAwNTVBNURCIC8qIE5vZGVDb25zdHJ1Y3RvcnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMERBRDAzMEZCMUVCMUEw
MDgyRDIwNSAvKiBOb2RlQ29uc3RydWN0b3JzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEZGQzk5RDQxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5
QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZDOTlEMjE4NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZm
ZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNwcCAqLzsgfTsKKwkJMEZGQzk5RDUxODRFRTMxODAwOUMx
MEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGQzk5RDMxODRFRTMxODAwOUMxMEFCIC8q
IEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGRkM5OUQxMTg0RUM4QUQwMDlDMTBBQiAvKiBD
b25zdGFudE1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRkM5OUQwMTg0RUM4QUQwMDlDMTBBQiAvKiBDb25zdGFudE1vZGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkZGQzk1NzE0RUY5MEEw
MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZGRkM5NEIxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNl
LmNwcCAqLzsgfTsKIAkJMEZGRkM5NTgxNEVGOTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk0QzE0
RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTg0Niw2ICsxODQ4LDggQEAKIAkJMEZGNzI5QTEx
NjZBRDM0NzAwMEY1QkEzIC8qIFByb2ZpbGVyT3JpZ2luU3RhY2suY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUHJvZmlsZXJPcmlnaW5TdGFjay5jcHA7IHBhdGggPSBw
cm9maWxlci9Qcm9maWxlck9yaWdpblN0YWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEZGNzI5QTIxNjZBRDM0NzAwMEY1QkEzIC8qIFByb2ZpbGVyT3JpZ2luU3RhY2suaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUHJvZmlsZXJPcmlnaW5TdGFjay5oOyBw
YXRoID0gcHJvZmlsZXIvUHJvZmlsZXJPcmlnaW5TdGFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRkY5MjJDRjE0RjQ2QjEzMDA0MUEyNEUgLyogSlNDTExJbnRPZmZzZXRzRXh0
cmFjdG9yICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAi
Y29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBK
U0NMTEludE9mZnNldHNFeHRyYWN0b3I7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7
IH07CisJCTBGRkM5OUQyMTg0RUUzMTgwMDlDMTBBQiAvKiBBcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEZGQzk5RDMxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcnJheUJ1ZmZlck5ldXRl
cmluZ1dhdGNocG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGQzk5RDAx
ODRFQzhBRDAwOUMxMEFCIC8qIENvbnN0YW50TW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDb25zdGFudE1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEZGRkM5NEIxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NGQVBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdD
RkFQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRkZDOTRDMTRFRjkw
OTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBERkdDRkFQaGFzZS5oOyBwYXRoID0gZGZnL0RGR0NGQVBoYXNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0zMzY2LDYgKzMzNzAsOCBAQAogCQkJCUE3NjE0MENBMTgyOTgy
Q0IwMDc1MDYyNCAvKiBBcmd1bWVudHNJdGVyYXRvclByb3RvdHlwZS5oICovLAogCQkJCUE3QThB
RjI1MTdBREI1RjIwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlci5jcHAgKi8sCiAJCQkJQTdBOEFGMjYx
N0FEQjVGMzAwNUFCMTc0IC8qIEFycmF5QnVmZmVyLmggKi8sCisJCQkJMEZGQzk5RDIxODRFRTMx
ODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHAgKi8sCisJCQkJ
MEZGQzk5RDMxODRFRTMxODAwOUMxMEFCIC8qIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2lu
dC5oICovLAogCQkJCUE3QThBRjI3MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZpZXcu
Y3BwICovLAogCQkJCUE3QThBRjI4MTdBREI1RjMwMDVBQjE3NCAvKiBBcnJheUJ1ZmZlclZpZXcu
aCAqLywKIAkJCQlCQzc5NTIwNjBFMTVFOEE4MDBBODk4QUIgLyogQXJyYXlDb25zdHJ1Y3Rvci5j
cHAgKi8sCkBAIC00NDc4LDYgKzQ0ODQsNyBAQAogCQkJCUE3QThBRjM4MTdBREI1RjMwMDVBQjE3
NCAvKiBGbG9hdDMyQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3QThBRjM5MTdBREI1RjMw
MDVBQjE3NCAvKiBGbG9hdDY0QXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjRFNTQzMTdF
QTlGNTkwMEFCQjIxNyAvKiBGUFJJbmZvLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkZDOTlENTE4
NEVFMzE4MDA5QzEwQUIgLyogQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkRCMkNDOTE3M0RBNTIwMDA3QjNDMUIgLyogRlRMQWJicmV2aWF0ZWRU
eXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTBBMDgxNzA1MTNEQjAwQkI3MjJDIC8qIEZU
TEFiYnJldmlhdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTFEMTcwOEIwMDcwMEJC
NzIyQyAvKiBGVExBYnN0cmFjdEhlYXAuaCBpbiBIZWFkZXJzICovLApAQCAtNTY0MSw2ICs1NjQ4
LDcgQEAKIAkJCQkxNDI4MDgzQTEwN0VDMDc1MDAxM0U3QjIgLyogSlNTdGFjay5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxNDdGMzlENTEwN0VDMzc2MDA0MjdBNDggLyogSlNTdHJpbmcuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMjYwMEI1QTYxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3RyaW5nSm9p
bmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGRkM5OUQ0MTg0RUUzMTgwMDlDMTBBQiAvKiBB
cnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQ4
MkI3NEUwQTQzMDMyODAwNTE3Q0ZDIC8qIEpTU3RyaW5nUmVmLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTE0NkFBQjM4MEI2NkE5NDQwMEU1NUYxNiAvKiBKU1N0cmluZ1JlZkNGLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGOTE5RDBDMTU3RUUwOUYwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2Jq
ZWN0LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmNwcAkocmV2aXNpb24gMTYwMTI3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEZXNpcmVkV2F0Y2hwb2ludHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw4ICsyOCwyMiBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKKyNp
bmNsdWRlICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuaCIKKyNpbmNsdWRlICJDb2Rl
QmxvY2suaCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisKIG5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKIAordm9pZCBBcnJheUJ1ZmZlclZpZXdXYXRjaHBvaW50QWRhcHRvcjo6YWRk
KAorICAgIENvZGVCbG9jayogY29kZUJsb2NrLCBKU0FycmF5QnVmZmVyVmlldyogdmlldywgV2F0
Y2hwb2ludCogd2F0Y2hwb2ludCkKK3sKKyAgICBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9p
bnQqIG5ldXRlcmluZ1dhdGNocG9pbnQgPQorICAgICAgICBBcnJheUJ1ZmZlck5ldXRlcmluZ1dh
dGNocG9pbnQ6OmNyZWF0ZSgqY29kZUJsb2NrLT52bSgpKTsKKyAgICBuZXV0ZXJpbmdXYXRjaHBv
aW50LT5zZXQoKS0+YWRkKHdhdGNocG9pbnQpOworICAgIGNvZGVCbG9jay0+YWRkQ29uc3RhbnQo
bmV1dGVyaW5nV2F0Y2hwb2ludCk7CisgICAgY29kZUJsb2NrLT52bSgpLT5oZWFwLmFkZFJlZmVy
ZW5jZShuZXV0ZXJpbmdXYXRjaHBvaW50LCB2aWV3LT5idWZmZXIoKSk7Cit9CisKIERlc2lyZWRX
YXRjaHBvaW50czo6RGVzaXJlZFdhdGNocG9pbnRzKCkgeyB9CiBEZXNpcmVkV2F0Y2hwb2ludHM6
On5EZXNpcmVkV2F0Y2hwb2ludHMoKSB7IH0KIApAQCAtNDMsNiArNTcsMTEgQEAgdm9pZCBEZXNp
cmVkV2F0Y2hwb2ludHM6OmFkZExhemlseShJbmxpbgogICAgIG1faW5saW5lU2V0cy5hZGRMYXpp
bHkoJnNldCk7CiB9CiAKK3ZvaWQgRGVzaXJlZFdhdGNocG9pbnRzOjphZGRMYXppbHkoSlNBcnJh
eUJ1ZmZlclZpZXcqIHZpZXcpCit7CisgICAgbV9idWZmZXJWaWV3cy5hZGRMYXppbHkodmlldyk7
Cit9CisKIHZvaWQgRGVzaXJlZFdhdGNocG9pbnRzOjphZGRMYXppbHkoQ29kZU9yaWdpbiBjb2Rl
T3JpZ2luLCBFeGl0S2luZCBleGl0S2luZCwgV2F0Y2hwb2ludFNldCogc2V0KQogewogICAgIG1f
c2V0cy5hZGRMYXppbHkoY29kZU9yaWdpbiwgZXhpdEtpbmQsIHNldCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rlc2lyZWRXYXRjaHBvaW50cy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNocG9pbnRzLmgJKHJldmlz
aW9uIDE2MDEyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGVzaXJlZFdhdGNo
cG9pbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkNv
ZGVPcmlnaW4uaCIKICNpbmNsdWRlICJERkdDb21tb25EYXRhLmgiCisjaW5jbHVkZSAiSlNBcnJh
eUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJXYXRjaHBvaW50LmgiCiAjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtNjEsNyArNjIsMjQgQEAgc3Ry
dWN0IFdhdGNocG9pbnRGb3JHZW5lcmljV2F0Y2hwb2ludFNldAogICAgIFdhdGNocG9pbnRTZXRU
eXBlKiBtX3NldDsKIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFdhdGNocG9pbnRTZXRUeXBlPgor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBHZW5lcmljU2V0QWRhcHRvciB7CisgICAgc3Rh
dGljIHZvaWQgYWRkKENvZGVCbG9jayosIFQqIHNldCwgV2F0Y2hwb2ludCogd2F0Y2hwb2ludCkK
KyAgICB7CisgICAgICAgIHJldHVybiBzZXQtPmFkZCh3YXRjaHBvaW50KTsKKyAgICB9CisgICAg
c3RhdGljIGJvb2wgaGFzQmVlbkludmFsaWRhdGVkKFQqIHNldCkgeyByZXR1cm4gc2V0LT5oYXNC
ZWVuSW52YWxpZGF0ZWQoKTsgfQorfTsKKworc3RydWN0IEFycmF5QnVmZmVyVmlld1dhdGNocG9p
bnRBZGFwdG9yIHsKKyAgICBzdGF0aWMgdm9pZCBhZGQoQ29kZUJsb2NrKiwgSlNBcnJheUJ1ZmZl
clZpZXcqLCBXYXRjaHBvaW50Kik7CisgICAgc3RhdGljIGJvb2wgaGFzQmVlbkludmFsaWRhdGVk
KEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3KQorICAgIHsKKyAgICAgICAgcmV0dXJuICEhdmlldy0+
bGVuZ3RoKCk7CisgICAgfQorfTsKKwordGVtcGxhdGU8dHlwZW5hbWUgV2F0Y2hwb2ludFNldFR5
cGUsIHR5cGVuYW1lIEFkYXB0b3IgPSBHZW5lcmljU2V0QWRhcHRvcjxXYXRjaHBvaW50U2V0VHlw
ZT4+CiBjbGFzcyBHZW5lcmljRGVzaXJlZFdhdGNocG9pbnRzIHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShHZW5lcmljRGVzaXJlZFdhdGNocG9pbnRzKTsKICNpZiAhQVNTRVJUX0RJU0FCTEVE
CkBAIC05Miw3ICsxMTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHR5cGVuYW1lIEhhc2hTZXQ8V2F0
Y2hwb2ludFNldFR5cGUqPjo6aXRlcmF0b3IgZW5kID0gbV9zZXRzLmVuZCgpOwogICAgICAgICBm
b3IgKDsgaXRlciAhPSBlbmQ7ICsraXRlcikgewogICAgICAgICAgICAgY29tbW9uLndhdGNocG9p
bnRzLmFwcGVuZChDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQoY29kZUJsb2NrKSk7Ci0g
ICAgICAgICAgICAoKml0ZXIpLT5hZGQoJmNvbW1vbi53YXRjaHBvaW50cy5sYXN0KCkpOworICAg
ICAgICAgICAgQWRhcHRvcjo6YWRkKGNvZGVCbG9jaywgKml0ZXIsICZjb21tb24ud2F0Y2hwb2lu
dHMubGFzdCgpKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gbV9wcm9maWxlZFdhdGNocG9pbnRzLnNpemUoKTsgaS0tOykgewpAQCAtMTAwLDcgKzExOCw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBtX3Byb2ZpbGVkV2F0Y2hwb2ludHNbaV07CiAg
ICAgICAgICAgICBjb21tb24ucHJvZmlsZWRXYXRjaHBvaW50cy5hcHBlbmQoCiAgICAgICAgICAg
ICAgICAgUHJvZmlsZWRDb2RlQmxvY2tKZXR0aXNvbmluZ1dhdGNocG9pbnQod2F0Y2hwb2ludC5t
X2NvZGVPcmlnaW4sIHdhdGNocG9pbnQubV9leGl0S2luZCwgY29kZUJsb2NrKSk7Ci0gICAgICAg
ICAgICB3YXRjaHBvaW50Lm1fc2V0LT5hZGQoJmNvbW1vbi5wcm9maWxlZFdhdGNocG9pbnRzLmxh
c3QoKSk7CisgICAgICAgICAgICBBZGFwdG9yOjphZGQoY29kZUJsb2NrLCB3YXRjaHBvaW50Lm1f
c2V0LCAmY29tbW9uLnByb2ZpbGVkV2F0Y2hwb2ludHMubGFzdCgpKTsKICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgbV9yZWFsbHlBZGRlZCA9IHRydWU7CkBAIC0xMTEsMTIgKzEyOSwxMiBA
QCBwdWJsaWM6CiAgICAgICAgIHR5cGVuYW1lIEhhc2hTZXQ8V2F0Y2hwb2ludFNldFR5cGUqPjo6
aXRlcmF0b3IgaXRlciA9IG1fc2V0cy5iZWdpbigpOwogICAgICAgICB0eXBlbmFtZSBIYXNoU2V0
PFdhdGNocG9pbnRTZXRUeXBlKj46Oml0ZXJhdG9yIGVuZCA9IG1fc2V0cy5lbmQoKTsKICAgICAg
ICAgZm9yICg7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAgICAgICAgIGlmICgoKml0ZXIp
LT5oYXNCZWVuSW52YWxpZGF0ZWQoKSkKKyAgICAgICAgICAgIGlmIChBZGFwdG9yOjpoYXNCZWVu
SW52YWxpZGF0ZWQoKml0ZXIpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wcm9maWxlZFdhdGNo
cG9pbnRzLnNpemUoKTsgaS0tOykgewotICAgICAgICAgICAgaWYgKG1fcHJvZmlsZWRXYXRjaHBv
aW50c1tpXS5tX3NldC0+aGFzQmVlbkludmFsaWRhdGVkKCkpCisgICAgICAgICAgICBpZiAoQWRh
cHRvcjo6aGFzQmVlbkludmFsaWRhdGVkKG1fcHJvZmlsZWRXYXRjaHBvaW50c1tpXS5tX3NldCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIApAQCAt
MTI2LDcgKzE0NCw3IEBAIHB1YmxpYzoKICNpZiBBU1NFUlRfRElTQUJMRUQKICAgICBib29sIGlz
U3RpbGxWYWxpZChXYXRjaHBvaW50U2V0VHlwZSogc2V0KQogICAgIHsKLSAgICAgICAgcmV0dXJu
IHNldC0+aXNTdGlsbFZhbGlkKCk7CisgICAgICAgIHJldHVybiAhQWRhcHRvcjo6aGFzQmVlbklu
dmFsaWRhdGVkKHNldCk7CiAgICAgfQogICAgIAogICAgIGJvb2wgc2hvdWxkQXNzdW1lTWl4ZWRT
dGF0ZShXYXRjaHBvaW50U2V0VHlwZSopCkBAIC0xMzYsNyArMTU0LDcgQEAgcHVibGljOgogI2Vs
c2UKICAgICBib29sIGlzU3RpbGxWYWxpZChXYXRjaHBvaW50U2V0VHlwZSogc2V0KQogICAgIHsK
LSAgICAgICAgYm9vbCByZXN1bHQgPSBzZXQtPmlzU3RpbGxWYWxpZCgpOworICAgICAgICBib29s
IHJlc3VsdCA9ICFBZGFwdG9yOjpoYXNCZWVuSW52YWxpZGF0ZWQoc2V0KTsKICAgICAgICAgbV9m
aXJzdEtub3duU3RhdGUuYWRkKHNldCwgcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CkBAIC0xNDcsNyArMTY1LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoaXRlciA9PSBt
X2ZpcnN0S25vd25TdGF0ZS5lbmQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgCi0gICAgICAgIHJldHVybiBpdGVyLT52YWx1ZSAhPSBzZXQtPmlzU3RpbGxWYWxpZCgpOwor
ICAgICAgICByZXR1cm4gaXRlci0+dmFsdWUgIT0gIUFkYXB0b3I6Omhhc0JlZW5JbnZhbGlkYXRl
ZChzZXQpOwogICAgIH0KICNlbmRpZgogICAgIApAQCAtMTcyLDYgKzE5MCw3IEBAIHB1YmxpYzoK
ICAgICAKICAgICB2b2lkIGFkZExhemlseShXYXRjaHBvaW50U2V0Kik7CiAgICAgdm9pZCBhZGRM
YXppbHkoSW5saW5lV2F0Y2hwb2ludFNldCYpOworICAgIHZvaWQgYWRkTGF6aWx5KEpTQXJyYXlC
dWZmZXJWaWV3Kik7CiAgICAgdm9pZCBhZGRMYXppbHkoQ29kZU9yaWdpbiwgRXhpdEtpbmQsIFdh
dGNocG9pbnRTZXQqKTsKICAgICB2b2lkIGFkZExhemlseShDb2RlT3JpZ2luLCBFeGl0S2luZCwg
SW5saW5lV2F0Y2hwb2ludFNldCYpOwogICAgIApAQCAtMTg3LDYgKzIwNiwxMCBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICByZXR1cm4gbV9pbmxpbmVTZXRzLmlzU3RpbGxWYWxpZCgmc2V0KTsK
ICAgICB9CisgICAgYm9vbCBpc1N0aWxsVmFsaWQoSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcpCisg
ICAgeworICAgICAgICByZXR1cm4gbV9idWZmZXJWaWV3cy5pc1N0aWxsVmFsaWQodmlldyk7Cisg
ICAgfQogICAgIGJvb2wgc2hvdWxkQXNzdW1lTWl4ZWRTdGF0ZShXYXRjaHBvaW50U2V0KiBzZXQp
CiAgICAgewogICAgICAgICByZXR1cm4gbV9zZXRzLnNob3VsZEFzc3VtZU1peGVkU3RhdGUoc2V0
KTsKQEAgLTE5NSw2ICsyMTgsMTAgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1f
aW5saW5lU2V0cy5zaG91bGRBc3N1bWVNaXhlZFN0YXRlKCZzZXQpOwogICAgIH0KKyAgICBib29s
IHNob3VsZEFzc3VtZU1peGVkU3RhdGUoSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcpCisgICAgewor
ICAgICAgICByZXR1cm4gbV9idWZmZXJWaWV3cy5zaG91bGRBc3N1bWVNaXhlZFN0YXRlKHZpZXcp
OworICAgIH0KICAgICBib29sIGlzVmFsaWRPck1peGVkKFdhdGNocG9pbnRTZXQqIHNldCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBtX3NldHMuaXNWYWxpZE9yTWl4ZWQoc2V0KTsKQEAgLTIwMywx
MCArMjMwLDE1IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBtX2lubGluZVNldHMu
aXNWYWxpZE9yTWl4ZWQoJnNldCk7CiAgICAgfQorICAgIGJvb2wgaXNWYWxpZE9yTWl4ZWQoSlNB
cnJheUJ1ZmZlclZpZXcqIHZpZXcpCisgICAgeworICAgICAgICByZXR1cm4gbV9idWZmZXJWaWV3
cy5pc1ZhbGlkT3JNaXhlZCh2aWV3KTsKKyAgICB9CiAgICAgCiBwcml2YXRlOgogICAgIEdlbmVy
aWNEZXNpcmVkV2F0Y2hwb2ludHM8V2F0Y2hwb2ludFNldD4gbV9zZXRzOwogICAgIEdlbmVyaWNE
ZXNpcmVkV2F0Y2hwb2ludHM8SW5saW5lV2F0Y2hwb2ludFNldD4gbV9pbmxpbmVTZXRzOworICAg
IEdlbmVyaWNEZXNpcmVkV2F0Y2hwb2ludHM8SlNBcnJheUJ1ZmZlclZpZXcsIEFycmF5QnVmZmVy
Vmlld1dhdGNocG9pbnRBZGFwdG9yPiBtX2J1ZmZlclZpZXdzOwogfTsKIAogfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJ
KHJldmlzaW9uIDE2MDEyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NDAsNiArNzQwLDIwIEBAIFdyaXRlQmFycmllckJhc2U8
VW5rbm93bj4qIEdyYXBoOjp0cnlHZXQKICAgICByZXR1cm4gYWN0aXZhdGlvbi0+cmVnaXN0ZXJz
KCk7CiB9CiAKK0pTQXJyYXlCdWZmZXJWaWV3KiBHcmFwaDo6dHJ5R2V0Rm9sZGFibGVWaWV3KE5v
ZGUqIG5vZGUsIEFycmF5TW9kZSBhcnJheU1vZGUpCit7CisgICAgaWYgKGFycmF5TW9kZS50eXBl
ZEFycmF5VHlwZSgpID09IE5vdFR5cGVkQXJyYXkpCisgICAgICAgIHJldHVybiAwOworICAgIGlm
ICghbm9kZS0+aGFzQ29uc3RhbnQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgSlNBcnJheUJ1
ZmZlclZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4odmFsdWVP
ZkpTQ29uc3RhbnQobm9kZSkpOworICAgIGlmICghdmlldykKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgaWYgKCF2aWV3LT5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHZp
ZXc7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKIAogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCShyZXZpc2lvbiAxNjAxMjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5NCw2ICs3
OTQsOCBAQCBwdWJsaWM6CiAgICAgSlNBY3RpdmF0aW9uKiB0cnlHZXRBY3RpdmF0aW9uKE5vZGUq
KTsKICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiB0cnlHZXRSZWdpc3RlcnMoTm9kZSop
OwogICAgIAorICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB0cnlHZXRGb2xkYWJsZVZpZXcoTm9kZSos
IEFycmF5TW9kZSk7CisgICAgCiAgICAgVk0mIG1fdm07CiAgICAgUGxhbiYgbV9wbGFuOwogICAg
IENvZGVCbG9jayogbV9jb2RlQmxvY2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTYwMTI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIzMjUsNiArMjMyNSwzMSBAQCBzdGF0aWMgdm9pZCBjb21waWxlQ2xhbXBEb3VibGVUb0J5
dGUoSklUCiAKIH0KIAorSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6Omp1bXBGb3JU
eXBlZEFycmF5T3V0T2ZCb3VuZHMoTm9kZSogbm9kZSwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBp
bmRleEdQUikKK3sKKyAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbEFsaWFzKQorICAgICAg
ICByZXR1cm4gSklUQ29tcGlsZXI6Okp1bXAoKTsKKyAgICBpZiAoSlNBcnJheUJ1ZmZlclZpZXcq
IHZpZXcgPSBtX2ppdC5ncmFwaCgpLnRyeUdldEZvbGRhYmxlVmlldyhtX2ppdC5ncmFwaCgpLmNo
aWxkKG5vZGUsIDApLm5vZGUoKSwgbm9kZS0+YXJyYXlNb2RlKCkpKSB7CisgICAgICAgIHVpbnQz
Ml90IGxlbmd0aCA9IHZpZXctPmxlbmd0aCgpOworICAgICAgICBOb2RlKiBpbmRleE5vZGUgPSBt
X2ppdC5ncmFwaCgpLmNoaWxkKG5vZGUsIDEpLm5vZGUoKTsKKyAgICAgICAgaWYgKG1faml0Lmdy
YXBoKCkuaXNJbnQzMkNvbnN0YW50KGluZGV4Tm9kZSkgJiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KG1faml0LmdyYXBoKCkudmFsdWVPZkludDMyQ29uc3RhbnQoaW5kZXhOb2RlKSkgPCBsZW5ndGgp
CisgICAgICAgICAgICByZXR1cm4gSklUQ29tcGlsZXI6Okp1bXAoKTsKKyAgICAgICAgcmV0dXJu
IG1faml0LmJyYW5jaDMyKAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVh
bCwgaW5kZXhHUFIsIE1hY3JvQXNzZW1ibGVyOjpJbW0zMihsZW5ndGgpKTsKKyAgICB9CisgICAg
cmV0dXJuIG1faml0LmJyYW5jaDMyKAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVx
dWFsLCBpbmRleEdQUiwKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwg
SlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpKTsKK30KKwordm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdFR5cGVkQXJyYXlCb3VuZHNDaGVjayhOb2RlKiBub2RlLCBHUFJSZWcgYmFz
ZUdQUiwgR1BSUmVnIGluZGV4R1BSKQoreworICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXAgPSBq
dW1wRm9yVHlwZWRBcnJheU91dE9mQm91bmRzKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSKTsKKyAg
ICBpZiAoIWp1bXAuaXNTZXQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIHNwZWN1bGF0aW9uQ2hl
Y2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIDAsIGp1bXApOworfQorCiB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkoTm9kZSogbm9kZSwgVHlw
ZWRBcnJheVR5cGUgdHlwZSkKIHsKICAgICBBU1NFUlQoaXNJbnQodHlwZSkpOwpAQCAtMjM0Miwx
MSArMjM2Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uSW4KIAog
ICAgIEFTU0VSVChub2RlLT5hcnJheU1vZGUoKS5hbHJlYWR5Q2hlY2tlZChtX2ppdC5ncmFwaCgp
LCBub2RlLCBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpKSk7CiAKLSAgICBzcGVjdWxh
dGlvbkNoZWNrKAotICAgICAgICBVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCwKLSAgICAg
ICAgbV9qaXQuYnJhbmNoMzIoCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVx
dWFsLCBwcm9wZXJ0eVJlZywKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VSZWcsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSkpOworICAgIGVtaXRU
eXBlZEFycmF5Qm91bmRzQ2hlY2sobm9kZSwgYmFzZVJlZywgcHJvcGVydHlSZWcpOwogICAgIHN3
aXRjaCAoZWxlbWVudFNpemUodHlwZSkpIHsKICAgICBjYXNlIDE6CiAgICAgICAgIGlmIChpc1Np
Z25lZCh0eXBlKSkKQEAgLTI1MDksOSArMjUzMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVQdXRCeVZhbEZvckkKICAgICBBU1NFUlRfVU5VU0VEKHZhbHVlR1BSLCB2YWx1ZUdQUiAh
PSBwcm9wZXJ0eSk7CiAgICAgQVNTRVJUKHZhbHVlR1BSICE9IGJhc2UpOwogICAgIEFTU0VSVCh2
YWx1ZUdQUiAhPSBzdG9yYWdlUmVnKTsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvdXRPZkJv
dW5kczsKLSAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRCeVZhbCkKLSAgICAgICAgb3V0T2ZCb3Vu
ZHMgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0
eSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZSwgSlNBcnJheUJ1ZmZlclZpZXc6Om9mZnNl
dE9mTGVuZ3RoKCkpKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvdXRPZkJvdW5kcyA9IGp1
bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFzZSwgcHJvcGVydHkpOwogCiAgICAg
c3dpdGNoIChlbGVtZW50U2l6ZSh0eXBlKSkgewogICAgIGNhc2UgMToKQEAgLTI1MjYsNyArMjU0
NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckkKICAgICBkZWZh
dWx0OgogICAgICAgICBDUkFTSCgpOwogICAgIH0KLSAgICBpZiAobm9kZS0+b3AoKSA9PSBQdXRC
eVZhbCkKKyAgICBpZiAob3V0T2ZCb3VuZHMuaXNTZXQoKSkKICAgICAgICAgb3V0T2ZCb3VuZHMu
bGluaygmbV9qaXQpOwogICAgIG5vUmVzdWx0KG5vZGUpOwogfQpAQCAtMjU0NywxMSArMjU2Niw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uRmwKIAogICAgIEZQUlRl
bXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgRlBSUmVnIHJlc3VsdFJlZyA9IHJlc3VsdC5mcHIo
KTsKLSAgICBzcGVjdWxhdGlvbkNoZWNrKAotICAgICAgICBVbmNvdW50YWJsZSwgSlNWYWx1ZVJl
Z3MoKSwgMCwKLSAgICAgICAgbV9qaXQuYnJhbmNoMzIoCi0gICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywKLSAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgp
KSkpOworICAgIGVtaXRUeXBlZEFycmF5Qm91bmRzQ2hlY2sobm9kZSwgYmFzZVJlZywgcHJvcGVy
dHlSZWcpOwogICAgIHN3aXRjaCAoZWxlbWVudFNpemUodHlwZSkpIHsKICAgICBjYXNlIDQ6CiAg
ICAgICAgIG1faml0LmxvYWRGbG9hdChNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VS
ZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNGb3VyKSwgcmVzdWx0UmVnKTsK
QEAgLTI1OTAsMTIgKzI2MDUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlW
YWxGb3JGCiAKICAgICBBU1NFUlRfVU5VU0VEKGJhc2VVc2UsIG5vZGUtPmFycmF5TW9kZSgpLmFs
cmVhZHlDaGVja2VkKG1faml0LmdyYXBoKCksIG5vZGUsIG1fc3RhdGUuZm9yTm9kZShiYXNlVXNl
KSkpOwogICAgIAotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG91dE9mQm91bmRzOwotICAgIGlm
IChub2RlLT5vcCgpID09IFB1dEJ5VmFsKSB7Ci0gICAgICAgIG91dE9mQm91bmRzID0gbV9qaXQu
YnJhbmNoMzIoCi0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9w
ZXJ0eSwKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UsIEpTQXJyYXlC
dWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSk7Ci0gICAgfQorICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIG91dE9mQm91bmRzID0ganVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBi
YXNlLCBwcm9wZXJ0eSk7CiAgICAgCiAgICAgc3dpdGNoIChlbGVtZW50U2l6ZSh0eXBlKSkgewog
ICAgIGNhc2UgNDogewpAQCAtMjYxMCw3ICsyNjIwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVB1dEJ5VmFsRm9yRgogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgfQotICAgIGlmIChub2RlLT5vcCgpID09IFB1dEJ5VmFsKQor
ICAgIGlmIChvdXRPZkJvdW5kcy5pc1NldCgpKQogICAgICAgICBvdXRPZkJvdW5kcy5saW5rKCZt
X2ppdCk7CiAgICAgbm9SZXN1bHQobm9kZSk7CiB9CkBAIC00MDM1LDggKzQwNDUsMjcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ1plcm9MZQogI2VuZGlmCiB9CiAKK2Jvb2wg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDb25zdGFudEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UoTm9k
ZSogbm9kZSkKK3sKKyAgICBKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1faml0LmdyYXBoKCku
dHJ5R2V0Rm9sZGFibGVWaWV3KAorICAgICAgICBub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUt
PmFycmF5TW9kZSgpKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBpZiAodmlldy0+bW9kZSgpID09IEZhc3RUeXBlZEFycmF5KQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgCisgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhpcyk7CisgICAgR1BSUmVnIHN0
b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cih2
aWV3LT52ZWN0b3IoKSksIHN0b3JhZ2VHUFIpOworICAgIHN0b3JhZ2VSZXN1bHQoc3RvcmFnZUdQ
Uiwgbm9kZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlKE5vZGUqIG5vZGUpCiB7CisgICAgaWYgKGNv
bXBpbGVDb25zdGFudEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2Uobm9kZSkpCisgICAgICAgIHJldHVy
bjsKKyAgICAKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxk
MSgpKTsKICAgICBHUFJSZWcgYmFzZVJlZyA9IGJhc2UuZ3ByKCk7CiAgICAgCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAx
NjAxMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIwMjcsNyArMjAyNywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
b21waWxlQXJpdGhJTXVsKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVBcml0aERpdihOb2RlKik7
CiAgICAgdm9pZCBjb21waWxlQXJpdGhNb2QoTm9kZSopOworICAgIGJvb2wgY29tcGlsZUNvbnN0
YW50SW5kZXhlZFByb3BlcnR5U3RvcmFnZShOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0SW5k
ZXhlZFByb3BlcnR5U3RvcmFnZShOb2RlKik7CisgICAgSklUQ29tcGlsZXI6Okp1bXAganVtcEZv
clR5cGVkQXJyYXlPdXRPZkJvdW5kcyhOb2RlKiwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlZyBpbmRl
eEdQUik7CisgICAgdm9pZCBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqLCBHUFJSZWcg
YmFzZUdQUiwgR1BSUmVnIGluZGV4R1BSKTsKICAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5
Qnl0ZU9mZnNldChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJy
YXkoTm9kZSosIFR5cGVkQXJyYXlUeXBlKTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvcklu
dFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSosIFR5cGVkQXJy
YXlUeXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV2F0Y2hwb2ludENv
bGxlY3Rpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTYwMTI3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXYXRjaHBvaW50Q29sbGVjdGlvblBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTQsNiArOTQsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IAogICAgICAgICAgICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpID09IEFycmF5OjpT
dHJpbmcpCiAgICAgICAgICAgICAgICAgaGFuZGxlU3RyaW5nR2V0QnlWYWwoKTsKKworICAgICAg
ICAgICAgaWYgKEpTQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJs
ZVZpZXcobV9ub2RlLT5jaGlsZDEoKS5ub2RlKCksIG1fbm9kZS0+YXJyYXlNb2RlKCkpKQorICAg
ICAgICAgICAgICAgIGFkZExhemlseSh2aWV3KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgCisgICAgICAgIGNhc2UgUHV0QnlWYWw6CisgICAgICAgICAgICBpZiAoSlNBcnJheUJ1
ZmZlclZpZXcqIHZpZXcgPSBtX2dyYXBoLnRyeUdldEZvbGRhYmxlVmlldyhtX2dyYXBoLnZhckFy
Z0NoaWxkKG1fbm9kZSwgMCkubm9kZSgpLCBtX25vZGUtPmFycmF5TW9kZSgpKSkKKyAgICAgICAg
ICAgICAgICBhZGRMYXppbHkodmlldyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IAorICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOgorICAgICAgICAgICAgaWYgKEpTQXJyYXlC
dWZmZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcobV9ub2RlLT5jaGls
ZDEoKS5ub2RlKCksIG1fbm9kZS0+YXJyYXlNb2RlKCkpKQorICAgICAgICAgICAgICAgIGFkZExh
emlseSh2aWV3KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGNh
c2UgU3RyaW5nQ2hhckF0OgpAQCAtMTMwLDYgKzE0MywxOCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgYWRkTGF6aWx5KG1fbm9kZS0+c3ltYm9sVGFibGUoKS0+bV9mdW5jdGlvbkVudGVyZWRPbmNl
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCisgICAgICAgIGNhc2UgR2V0SW5k
ZXhlZFByb3BlcnR5U3RvcmFnZToKKyAgICAgICAgICAgIGlmIChKU0FycmF5QnVmZmVyVmlldyog
dmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFibGVWaWV3KG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgp
LCBtX25vZGUtPmFycmF5TW9kZSgpKSkgeworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJdCB3
b3VsZCBiZSBhd2Vzb21lIHRvIGJlIGFibGUgdG8gZm9sZCB0aGUgcHJvcGVydHkgc3RvcmFnZSBm
b3IKKyAgICAgICAgICAgICAgICAvLyB0aGVzZSBHQy1hbGxvY2F0ZWQgdHlwZWQgYXJyYXlzLiBG
b3Igbm93IGl0IGRvZXNuJ3QgbWF0dGVyIGJlY2F1c2UgdGhlCisgICAgICAgICAgICAgICAgLy8g
bW9zdCBjb21tb24gdXNlLWNhc2VzIGZvciBjb25zdGFudCB0eXBlZCBhcnJheXMgaW52b2x2ZSBs
YXJnZSBhcnJheXMgd2l0aAorICAgICAgICAgICAgICAgIC8vIGFsaWFzZWQgYnVmZmVyIHZpZXdz
LgorICAgICAgICAgICAgICAgIGlmICh2aWV3LT5tb2RlKCkgPT0gRmFzdFR5cGVkQXJyYXkpCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGFkZExhemlseSh2aWV3
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTc5LDYgKzIw
NCwxMCBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgbV9ncmFwaC53YXRjaHBvaW50cygpLmFk
ZExhemlseShzZXQpOwogICAgIH0KKyAgICB2b2lkIGFkZExhemlseShKU0FycmF5QnVmZmVyVmll
dyogdmlldykKKyAgICB7CisgICAgICAgIG1fZ3JhcGgud2F0Y2hwb2ludHMoKS5hZGRMYXppbHko
dmlldyk7CisgICAgfQogICAgIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKQog
ICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0xMVk0uY3BwCShyZXZpc2lvbiAxNjAxMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMzNSw2ICsxMzM1LDEx
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCisg
ICAgICAgIGlmIChKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IG1fZ3JhcGgudHJ5R2V0Rm9sZGFi
bGVWaWV3KG1fbm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBtX25vZGUtPmFycmF5TW9kZSgpKSkgewor
ICAgICAgICAgICAgc2V0U3RvcmFnZShtX291dC5jb25zdEludFB0cih2aWV3LT52ZWN0b3IoKSkp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBzZXRT
dG9yYWdlKG1fb3V0LmxvYWRQdHIoY2VsbCwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld192ZWN0
b3IpKTsKICAgICB9CiAgICAgCkBAIC0xNDUxLDEyICsxNDU2LDEwIEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gbV9ub2RlLT5hcnJheU1vZGUoKS50eXBlZEFy
cmF5VHlwZSgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoaXNUeXBlZFZpZXcodHlw
ZSkpIHsKLSAgICAgICAgICAgICAgICBMVmFsdWUgYXJyYXkgPSBsb3dDZWxsKG1fbm9kZS0+Y2hp
bGQxKCkpOwotICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHNwZWN1bGF0ZSgKICAg
ICAgICAgICAgICAgICAgICAgT3V0T2ZCb3VuZHMsIG5vVmFsdWUoKSwgMCwKICAgICAgICAgICAg
ICAgICAgICAgbV9vdXQuYWJvdmVPckVxdWFsKAotICAgICAgICAgICAgICAgICAgICAgICAgaW5k
ZXgsIG1fb3V0LmxvYWQzMihhcnJheSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19sZW5ndGgp
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCwgdHlwZWRBcnJheUxlbmd0aChtX25v
ZGUtPmNoaWxkMSgpLCBtX25vZGUtPmFycmF5TW9kZSgpKSkpOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIFR5cGVkUG9pbnRlciBwb2ludGVyID0gVHlwZWRQb2ludGVyKAogICAg
ICAgICAgICAgICAgICAgICBtX2hlYXBzLnR5cGVkQXJyYXlQcm9wZXJ0aWVzLApAQCAtMTYyNCw3
ICsxNjI3LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXRlKAogICAg
ICAgICAgICAgICAgICAgICAgICAgT3V0T2ZCb3VuZHMsIG5vVmFsdWUoKSwgMCwKICAgICAgICAg
ICAgICAgICAgICAgICAgIG1fb3V0LmFib3ZlT3JFcXVhbCgKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbmRleCwgbV9vdXQubG9hZDMyKGJhc2UsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZp
ZXdfbGVuZ3RoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHR5cGVkQXJyYXlMZW5ndGgoY2hpbGQxLm5vZGUoKSwgbV9u
b2RlLT5hcnJheU1vZGUoKSwgYmFzZSkpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgVHlwZWRQb2ludGVyIHBvaW50ZXIgPSBUeXBlZFBvaW50
ZXIoCkBAIC0yNzY1LDYgKzI3NjksMTggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIG1fb3V0LnBo
aShtX291dC5pbnRQdHIsIGZhc3RCdXR0ZXJmbHksIHNsb3dCdXR0ZXJmbHkpKTsKICAgICB9CiAg
ICAgCisgICAgTFZhbHVlIHR5cGVkQXJyYXlMZW5ndGgoTm9kZSogYmFzZU5vZGUsIEFycmF5TW9k
ZSBhcnJheU1vZGUsIExWYWx1ZSBiYXNlKQorICAgIHsKKyAgICAgICAgaWYgKEpTQXJyYXlCdWZm
ZXJWaWV3KiB2aWV3ID0gbV9ncmFwaC50cnlHZXRGb2xkYWJsZVZpZXcoYmFzZU5vZGUsIGFycmF5
TW9kZSkpCisgICAgICAgICAgICByZXR1cm4gbV9vdXQuY29uc3RJbnQzMih2aWV3LT5sZW5ndGgo
KSk7CisgICAgICAgIHJldHVybiBtX291dC5sb2FkMzIoYmFzZSwgbV9oZWFwcy5KU0FycmF5QnVm
ZmVyVmlld19sZW5ndGgpOworICAgIH0KKyAgICAKKyAgICBMVmFsdWUgdHlwZWRBcnJheUxlbmd0
aChFZGdlIGJhc2VFZGdlLCBBcnJheU1vZGUgYXJyYXlNb2RlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHR5cGVkQXJyYXlMZW5ndGgoYmFzZUVkZ2Uubm9kZSgpLCBhcnJheU1vZGUsIGxvd0NlbGwo
YmFzZUVkZ2UpKTsKKyAgICB9CisgICAgCiAgICAgTFZhbHVlIGJvb2xpZnkoRWRnZSBlZGdlKQog
ICAgIHsKICAgICAgICAgc3dpdGNoIChlZGdlLnVzZUtpbmQoKSkgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcAkocmV2aXNpb24gMTYwMTI3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiQXJyYXlCdWZmZXIuaCIKIAorI2luY2x1ZGUgIkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludC5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCiAjaW5jbHVkZSAiT3BlcmF0
aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTUyLDkgKzUzLDExIEBAIGJvb2wg
QXJyYXlCdWZmZXI6OnRyYW5zZmVyKEFycmF5QnVmZmVyQ28KICAgICB9CiAKICAgICBmb3IgKHNp
emVfdCBpID0gbnVtYmVyT2ZJbmNvbWluZ1JlZmVyZW5jZXMoKTsgaS0tOykgewotICAgICAgICBK
U0FycmF5QnVmZmVyVmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcq
PihpbmNvbWluZ1JlZmVyZW5jZUF0KGkpKTsKLSAgICAgICAgaWYgKHZpZXcpCisgICAgICAgIEpT
Q2VsbCogY2VsbCA9IGluY29taW5nUmVmZXJlbmNlQXQoaSk7CisgICAgICAgIGlmIChKU0FycmF5
QnVmZmVyVmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcqPihjZWxs
KSkKICAgICAgICAgICAgIHZpZXctPm5ldXRlcigpOworICAgICAgICBlbHNlIGlmIChBcnJheUJ1
ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQqIHdhdGNocG9pbnQgPSBqc0R5bmFtaWNDYXN0PEFycmF5
QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCo+KGNlbGwpKQorICAgICAgICAgICAgd2F0Y2hwb2lu
dC0+c2V0KCktPmZpcmVBbGwoKTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9p
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFycmF5
QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5oIgorCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEFycmF5QnVmZmVyTmV1dGVyaW5n
V2F0Y2hwb2ludDo6c19pbmZvID0geworICAgICJBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9p
bnQiLCAwLCAwLCAwLAorICAgIENSRUFURV9NRVRIT0RfVEFCTEUoQXJyYXlCdWZmZXJOZXV0ZXJp
bmdXYXRjaHBvaW50KQorfTsKKworQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpBcnJh
eUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQoVk0mIHZtKQorICAgIDogQmFzZSh2bSwgdm0uYXJy
YXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50U3RydWN0dXJlLmdldCgpKQorICAgICwgbV9zZXQo
YWRvcHRSZWYobmV3IFdhdGNocG9pbnRTZXQoSXNXYXRjaGVkKSkpCit7Cit9CisKK0FycmF5QnVm
ZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6fkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCgp
IHsgfQorCit2b2lkIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6ZmluaXNoQ3JlYXRp
b24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKK30KKwordm9pZCBB
cnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQ6OmRlc3Ryb3koSlNDZWxsKiBjZWxsKQorewor
ICAgIHN0YXRpY19jYXN0PEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCo+KGNlbGwpLT5B
cnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQ6On5BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNo
cG9pbnQoKTsKK30KKworQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50KiBBcnJheUJ1ZmZl
ck5ldXRlcmluZ1dhdGNocG9pbnQ6OmNyZWF0ZShWTSYgdm0pCit7CisgICAgQXJyYXlCdWZmZXJO
ZXV0ZXJpbmdXYXRjaHBvaW50KiByZXN1bHQgPSBuZXcKKyAgICAgICAgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQ+KHZtLmhlYXApKQorICAgICAg
ICBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQodm0pOworICAgIHJlc3VsdC0+ZmluaXNo
Q3JlYXRpb24odm0pOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1N0cnVjdHVyZSogQXJyYXlC
dWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50OjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtKQoreworICAg
IHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgMCwganNOdWxsKCksIFR5cGVJbmZvKENvbXBv
dW5kVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJOZXV0
ZXJpbmdXYXRjaHBvaW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50LmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9p
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQXJyYXlCdWZmZXJOZXV0ZXJpbmdX
YXRjaHBvaW50X2gKKyNkZWZpbmUgQXJyYXlCdWZmZXJOZXV0ZXJpbmdXYXRjaHBvaW50X2gKKwor
I2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIldhdGNocG9pbnQuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludCA6IHB1YmxpYyBK
U0NlbGwgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNDZWxsIEJhc2U7CisgICAgCitwcml2YXRl
OgorICAgIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludChWTSYpOworICAgIH5BcnJheUJ1
ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQoKTsKKyAgICAKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJik7CisgICAgCitwdWJsaWM6CisgICAgREVDTEFSRV9JTkZPOworICAgIAorICAgIHN0YXRp
YyBBcnJheUJ1ZmZlck5ldXRlcmluZ1dhdGNocG9pbnQqIGNyZWF0ZShWTSYpOworCisgICAgc3Rh
dGljIGNvbnN0IGJvb2wgbmVlZHNEZXN0cnVjdGlvbiA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0
IGJvb2wgaGFzSW1tb3J0YWxTdHJ1Y3R1cmUgPSB0cnVlOworICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDZWxsKik7CisgICAgCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KFZNJik7CisgICAgCisgICAgV2F0Y2hwb2ludFNldCogc2V0KCkgeyByZXR1cm4gbV9zZXQuZ2V0
KCk7IH0KKworcHJpdmF0ZToKKyAgICBSZWZQdHI8V2F0Y2hwb2ludFNldD4gbV9zZXQ7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0
Y2hwb2ludF9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCShyZXZpc2lv
biAxNjAxMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJWTS5oIgogCiAjaW5jbHVkZSAi
QXJnTGlzdC5oIgorI2luY2x1ZGUgIkFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludC5oIgog
I2luY2x1ZGUgIkNhbGxGcmFtZUlubGluZXMuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNp
bmNsdWRlICJDb2RlQ2FjaGUuaCIKQEAgLTI0OCw2ICsyNDksNyBAQCBWTTo6Vk0oVk1UeXBlIHZt
VHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgc3ltYm9sVGFibGVTdHJ1Y3R1cmUuc2V0KCp0
aGlzLCBTeW1ib2xUYWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwog
ICAgIHN0cnVjdHVyZUNoYWluU3RydWN0dXJlLnNldCgqdGhpcywgU3RydWN0dXJlQ2hhaW46OmNy
ZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAgICBzcGFyc2VBcnJheVZhbHVl
TWFwU3RydWN0dXJlLnNldCgqdGhpcywgU3BhcnNlQXJyYXlWYWx1ZU1hcDo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOworICAgIGFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hw
b2ludFN0cnVjdHVyZS5zZXQoKnRoaXMsIEFycmF5QnVmZmVyTmV1dGVyaW5nV2F0Y2hwb2ludDo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzKSk7CiAgICAgd2l0aFNjb3BlU3RydWN0dXJlLnNldCgqdGhp
cywgSlNXaXRoU2NvcGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKICAg
ICB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFVubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7
CiAgICAgdW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywgVW5saW5r
ZWRQcm9ncmFtQ29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDE2MDEyNykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2
Nyw2ICsyNjcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4g
c3ltYm9sVGFibGVTdHJ1Y3R1cmU7CiAgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN0cnVjdHVy
ZUNoYWluU3RydWN0dXJlOwogICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBzcGFyc2VBcnJheVZh
bHVlTWFwU3RydWN0dXJlOworICAgICAgICBTdHJvbmc8U3RydWN0dXJlPiBhcnJheUJ1ZmZlck5l
dXRlcmluZ1dhdGNocG9pbnRTdHJ1Y3R1cmU7CiAgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHdp
dGhTY29wZVN0cnVjdHVyZTsKICAgICAgICAgU3Ryb25nPFN0cnVjdHVyZT4gdW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmU7CiAgICAgICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHVubGlu
a2VkUHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MDEyOCkK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBA
CisyMDEzLTEyLTA0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Rm9sZCBjb25zdGFudCB0eXBlZCBhcnJheXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyNTIwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICoganMvcmVncmVzcy9maXhlZC10eXBlZC1hcnJheS1zdG9yYWdl
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9maXhlZC10eXBlZC1h
cnJheS1zdG9yYWdlLXZhci1pbmRleC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpz
L3JlZ3Jlc3MvZml4ZWQtdHlwZWQtYXJyYXktc3RvcmFnZS12YXItaW5kZXguaHRtbDogQWRkZWQu
CisgICAgICAgICoganMvcmVncmVzcy9maXhlZC10eXBlZC1hcnJheS1zdG9yYWdlLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2ZpeGVkLXR5cGVkLWFycmF5
LXN0b3JhZ2UtdmFyLWluZGV4LmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICog
anMvcmVncmVzcy9zY3JpcHQtdGVzdHMvZml4ZWQtdHlwZWQtYXJyYXktc3RvcmFnZS5qczogQWRk
ZWQuCisgICAgICAgIChmb28pOgorCiAyMDEzLTEyLTA0ICBCZWFyIFRyYXZpcyAgPGJldHJhdmlz
QGFkb2JlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbQ1NTIFNoYXBlc10gU3VwcG9y
dCByYXN0ZXIgc2hhcGUgdmlzdWFsaXphdGlvbnMKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jl
c3MvZml4ZWQtdHlwZWQtYXJyYXktc3RvcmFnZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvanMvcmVncmVzcy9maXhlZC10eXBlZC1hcnJheS1zdG9yYWdlLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvZml4ZWQtdHlwZWQt
YXJyYXktc3RvcmFnZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBA
QAorSlNSZWdyZXNzL2ZpeGVkLXR5cGVkLWFycmF5LXN0b3JhZ2UKKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2pz
L3JlZ3Jlc3MvZml4ZWQtdHlwZWQtYXJyYXktc3RvcmFnZS12YXItaW5kZXgtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvZml4ZWQtdHlwZWQtYXJyYXkt
c3RvcmFnZS12YXItaW5kZXgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9maXhlZC10eXBlZC1hcnJheS1zdG9yYWdlLXZhci1pbmRleC1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL2ZpeGVkLXR5
cGVkLWFycmF5LXN0b3JhZ2UtdmFyLWluZGV4CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
KworCitQQVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL2Zp
eGVkLXR5cGVkLWFycmF5LXN0b3JhZ2UtdmFyLWluZGV4Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9maXhlZC10eXBlZC1hcnJheS1zdG9yYWdlLXZhci1pbmRleC5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9maXhlZC10eXBlZC1h
cnJheS1zdG9yYWdlLXZhci1pbmRleC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIg
QEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNz
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL2ZpeGVkLXR5cGVk
LWFycmF5LXN0b3JhZ2UtdmFyLWluZGV4LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvcmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvZml4ZWQtdHlwZWQtYXJyYXktc3RvcmFnZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvZml4ZWQtdHlwZWQtYXJyYXktc3Rv
cmFnZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9maXhlZC10
eXBlZC1hcnJheS1zdG9yYWdlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAor
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlZ3Jlc3MtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvZml4ZWQtdHlwZWQtYXJy
YXktc3RvcmFnZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlZ3Jlc3Mt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9q
cy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9maXhlZC10eXBlZC1hcnJheS1zdG9yYWdlLXZhci1pbmRl
eC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9m
aXhlZC10eXBlZC1hcnJheS1zdG9yYWdlLXZhci1pbmRleC5qcwkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2ZpeGVkLXR5cGVkLWFycmF5LXN0b3Jh
Z2UtdmFyLWluZGV4LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK3ZhciBhcnJh
eSA9IG5ldyBJbnQ4QXJyYXkobmV3IEFycmF5QnVmZmVyKDEwMCkpOworCitmdW5jdGlvbiBmb28o
aSkgeworICAgIHJldHVybiBhcnJheVtpXTsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAw
MDA7ICsraSkgeworICAgIGlmIChmb28oaSAlIDEwMCkgIT0gMCkKKyAgICAgICAgdGhyb3cgIkVy
cm9yIjsKK30KSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2ZpeGVk
LXR5cGVkLWFycmF5LXN0b3JhZ2UuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVn
cmVzcy9zY3JpcHQtdGVzdHMvZml4ZWQtdHlwZWQtYXJyYXktc3RvcmFnZS5qcwkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL2ZpeGVkLXR5cGVkLWFy
cmF5LXN0b3JhZ2UuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAordmFyIGFycmF5
ID0gbmV3IEludDhBcnJheShuZXcgQXJyYXlCdWZmZXIoMTAwKSk7CisKK2Z1bmN0aW9uIGZvbygp
IHsKKyAgICByZXR1cm4gYXJyYXlbMF07Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAw
OyArK2kpIHsKKyAgICBpZiAoZm9vKCkgIT0gMCkKKyAgICAgICAgdGhyb3cgIkVycm9yIjsKK30K
</data>
<flag name="review"
          id="241882"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>