<?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>159231</bug_id>
          <alias>CVE-2016-4733</alias>
          <creation_ts>2016-06-28 15:05:00 -0700</creation_ts>
          <short_desc>Memory Corruption in TypedArray.copyWithin</short_desc>
          <delta_ts>2017-10-11 10:25:11 -0700</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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>HasReduction, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Natalie Silvanovich">natashenka</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>oliver</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1206194</commentid>
    <comment_count>0</comment_count>
      <attachid>282289</attachid>
    <who name="Natalie Silvanovich">natashenka</who>
    <bug_when>2016-06-28 15:05:00 -0700</bug_when>
    <thetext>Created attachment 282289
Sample file causing issue

There is a bug in TypedArray.copyWithin that can be used to write to an absolute pointer. 

In JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeFunctions.h, the function genericTypedArrayViewProtoFuncCopyWithin contains the following code:

    long length = thisObject-&gt;length();
    long to = argumentClampedIndexFromStartOrEnd(exec, 0, length);
    long from = argumentClampedIndexFromStartOrEnd(exec, 1, length);
    long final = argumentClampedIndexFromStartOrEnd(exec, 2, length, length);

    if (final &lt; from)
        return JSValue::encode(exec-&gt;thisValue());

    long count = std::min(length - std::max(to, from), final - from);

    typename ViewClass::ElementType* array = thisObject-&gt;typedVector();
    memmove(array + to, array + from, count * thisObject-&gt;elementSize);

argumentClampedIndexFromStartOrEnd will call valueOf on a parameter to the copyWithin function, which can contain a function that neuters the this array, causing the variable &quot;array&quot; to be null. However, the &quot;to&quot; and &quot;from&quot; variables can be very large values, up to 0x7fffffff, which could be valid pointers on ARM and 32-bit platforms. This allows an absolute pointer in this range to be written to.

An HTML file demonstrating this issue is attached. This issue affects Safari Technology Preview and WebKit, but has not made it into production Safari yet (TypedArray.copyWithin is not supported).

This bug is subject to a 90 day disclosure deadline. If 90 days elapse
without a broadly available patch, then the bug report will automatically
become visible to the public.

--

[Our ref: https://bugs.chromium.org/p/project-zero/issues/detail?id=862]

Credit is to Natalie Silvanovich of Google Project Zero</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1206231</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-06-28 17:15:39 -0700</bug_when>
    <thetext>&lt;rdar://problem/27069149&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208310</commentid>
    <comment_count>2</comment_count>
      <attachid>282920</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-07-06 12:02:56 -0700</bug_when>
    <thetext>Created attachment 282920
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1209136</commentid>
    <comment_count>3</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-07-08 09:28:16 -0700</bug_when>
    <thetext>Committed r202982: &lt;http://trac.webkit.org/changeset/202982&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1210558</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-07-13 11:40:15 -0700</bug_when>
    <thetext>*** Bug 159239 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>282289</attachid>
            <date>2016-06-28 15:05:00 -0700</date>
            <delta_ts>2016-06-28 15:05:00 -0700</delta_ts>
            <desc>Sample file causing issue</desc>
            <filename>copyWithin.html</filename>
            <type>text/html</type>
            <size>479</size>
            <attacher name="Natalie Silvanovich">natashenka</attacher>
            
              <data encoding="base64">PGh0bWw+Cjxib2R5Pgo8c2NyaXB0PgoKZnVuY3Rpb24gZigpewogICB0cnl7CiAgIGFsZXJ0KCJ0
Iik7CiAgIHBvc3RNZXNzYWdlKCJ0ZXN0IiwgImh0dHA6Ly8xMjcuMC4wLjEiLCBbcV0pCiAgIGFs
ZXJ0KGEuYnl0ZUxlbmd0aCk7CiAgIGFsZXJ0KHEuYnl0ZUxlbmd0aCk7CiAgfSBjYXRjaChlKXsK
ICAgICBhbGVydChlLm1lc3NhZ2UpOwogICBhbGVydChhLmJ5dGVMZW5ndGgpCiAgIGFsZXJ0KHEu
Ynl0ZUxlbmd0aCk7CiAgfQogICByZXR1cm4gMHgyMjM0NTY3ODsKfQoKYWxlcnQoRGF0ZSk7Cgp2
YXIgcSA9IG5ldyBBcnJheUJ1ZmZlcigweDdmZmZmZmZmKTsKdmFyIG8gPSB7dmFsdWVPZiA6IGZ9
CnZhciBhID0gbmV3IFVpbnQ4QXJyYXkocSk7CgogIC8vIGFsZXJ0KHEuYnl0ZUxlbmd0aCk7CnZh
ciB0ID0gW107CgphLmNvcHlXaXRoaW4oMHgxMjM0NTY3OCwgbywgMHgzMjM0NTY3OCk7CgoKPC9z
Y3JpcHQ+CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282920</attachid>
            <date>2016-07-06 12:02:56 -0700</date>
            <delta_ts>2016-07-06 12:13:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159231-20160706120224.patch</filename>
            <type>text/plain</type>
            <size>37688</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyNjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
NmQ2NTg4Y2ZlNzFhNGQ2MDk2MWI2NzU3M2NkYzEyMjdkYzdkMThmLi4xMWM2M2ZkYjNjNGE5NmRl
N2EwODU5ZTdkMTVjZDAyOGEyMDVjZjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NCBAQAorMjAxNi0wNy0wNiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBNZW1vcnkgQ29ycnVwdGlvbiBpbiBUeXBlZEFycmF5LmNvcHlXaXRo
aW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTIz
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjY29y
ZGluZyB0byB0aGUgRVM2IHNwZWMgaWYgYSB1c2VyIHRyaWVzIHRvIGdldCwgc2V0LCBvciBkZWZp
bmUgYSBwcm9wZXJ0eQorICAgICAgICBvbiBhIG5ldXRlcmVkIFR5cGVkQXJyYXkgd2Ugc2hvdWxk
IHRocm93IGFuIGV4Y2VwdGlvbi4gQ3VycmVudGx5LCBpZiBhIHVzZXIKKyAgICAgICAgdHJpZXMg
dG8gZ2V0IGFuIG91dCBvZiBib3VuZHMgYWNjZXNzIG9uIGEgVHlwZWRBcnJheSB3ZSB3aWxsIGFs
d2F5cyBPU1IuCisgICAgICAgIFRoaXMgbWFrZXMgaGFuZGxpbmcgdGhlIGV4Y2VwdGlvbiBlYXN5
IGFzIGFsbCB3ZSBuZWVkIHRvIGRvIGlzIG1ha2Ugb3V0IG9mCisgICAgICAgIGJvdW5kcyBnZXRz
IGluIFBvbHltb3JwaGljQWNjZXNzIGdvIHRvIHRoZSBzbG93IHBhdGgsIHdoaWNoIHdpbGwgdGhl
biB0aHJvdworICAgICAgICB0aGUgYXBwcm9wcmlhdGUgZXhjZXB0aW9uLiBGb3IgdGhlIGNhc2Ug
b2Ygc2V0LCB3ZSBuZWVkIGVuc3VyZSB3ZSBkb24ndCBPU1IKKyAgICAgICAgb24gZWFjaCBvdXQg
b2YgYm91bmRzIHB1dCBzaW5jZSwgZm9yIHNvbWUgY29uZnVzaW5nIHJlYXNvbiwgcGVvcGxlIGRv
IHRoaXMuCisgICAgICAgIFRodXMsIGZvciBHZXRCeVZhbCBpbiB0aGUgREZHL0ZUTCBpZiB0aGUg
dXNlciBhY2Nlc3NlcyBvdXQgb2YgYm91bmRzIHdlCisgICAgICAgIHRoZW4gbmVlZCB0byBjaGVj
ayBpZiB0aGUgdmlldyBoYXMgYmVlbiBuZXV0ZXJlZC4gSWYgaXQgaXMgbmV1dGVyZWQgdGhlbgor
ICAgICAgICB3ZSB3aWxsIE9TUi4KKworICAgICAgICBBZGRpdGlvbmFsbHksIHRoaXMgcGF0Y2gg
YWRkcyBhIGJ1bmNoIG9mIGlzTmV1dGVyZWQgY2hlY2tzIHRvIHZhcmlvdXMKKyAgICAgICAgcHJv
dG90eXBlIGZ1bmN0aW9ucyBmb3IgVHlwZWRBcnJheSwgd2hpY2ggYXJlIG5lZWRlZCBmb3IgY29y
cmVjdG5lc3MuCisKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheUlzTmV1dGVyZWRJ
Zk91dE9mQm91bmRzKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheSk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVQdXRCeVZhbCk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnNwZWN1bGF0ZVR5cGVkQXJy
YXlJc05vdE5ldXRlcmVkKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRJbnRUeXBlZEFycmF5UHV0QnlWYWwpOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRGbG9hdFR5cGVkQXJyYXlQdXRCeVZhbCk6CisgICAgICAgICogcnVudGlt
ZS9KU0FycmF5QnVmZmVyVmlldy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5oOgor
ICAgICAgICAoSlNDOjplbmNvZGVkSlNVbmRlZmluZWQpOgorICAgICAgICAoSlNDOjplbmNvZGVk
SlNWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg6CisgICAg
ICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0aHJvd05ldXRlcmVk
VHlwZWRBcnJheVR5cGVFcnJvcik6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6cHV0KToKKyAgICAgICAgKEpTQzo6SlNHZW5lcmlj
VHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKEpT
Qzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0ZVByb3BlcnR5KToKKyAg
ICAgICAgKEpTQzo6SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmdldE93blByb3Bl
cnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxB
ZGFwdG9yPjo6cHV0QnlJbmRleCk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3PEFkYXB0b3I+OjpkZWxldGVQcm9wZXJ0eUJ5SW5kZXgpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpT
Qzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jQ29weVdpdGhpbik6CisgICAgICAgIChK
U0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0ZpbGwpOgorICAgICAgICAoSlNDOjpn
ZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmRleE9mKToKKyAgICAgICAgKEpTQzo6Z2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSm9pbik6CisgICAgICAgIChKU0M6OmdlbmVyaWNU
eXBlZEFycmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRleE9mKToKKyAgICAgICAgKEpTQzo6Z2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UpOgorICAgICAgICAoSlNDOjpnZW5lcmljVHlw
ZWRBcnJheVZpZXdQcm90b0Z1bmNTdWJhcnJheSk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Zv
bGQtdHlwZWQtYXJyYXktcHJvcGVydGllcy5qczoKKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvdHlw
ZWRhcnJheS1hY2Nlc3MtbW9ub21vcnBoaWMtbmV1dGVyZWQuanM6IEFkZGVkLgorICAgICAgICAo
Y2hlY2spOgorICAgICAgICAodGVzdCk6CisgICAgICAgICh0ZXN0RlRMKToKKyAgICAgICAgKiB0
ZXN0cy9zdHJlc3MvdHlwZWRhcnJheS1hY2Nlc3MtbmV1dGVyZWQuanM6IEFkZGVkLgorICAgICAg
ICAoY2hlY2spOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogdGVzdHMvc3RyZXNzL3R5cGVk
YXJyYXktZnVuY3Rpb25zLXdpdGgtbmV1dGVyZWQuanM6CisgICAgICAgIChkZWZhdWx0Rm9yQXJn
KToKKyAgICAgICAgKGNhbGxXaXRoQXJncyk6CisgICAgICAgIChjaGVja0FyZ3VtZW50c0ZvclR5
cGUpOgorICAgICAgICAoY2hlY2tBcmd1bWVudHMpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy90
eXBlZGFycmF5LXZpZXctc3RyaW5nLXByb3BlcnRpZXMtbmV1dGVyZWQuanM6IEFkZGVkLgorICAg
ICAgICAoY2FsbCk6CisgICAgICAgICh0ZXN0KToKKwogMjAxNi0wNi0yOSAgSm9zZXBoIFBlY29y
YXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFdyb25n
IGZ1bmN0aW9uIG5hbWUgbmV4dCB0byBzY29wZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBmNzM5MWRjMjgwMzJhZDQyNWVhYzg4MTA4
YjBmNWRlNTViOTExZWRmLi4xMzBjYWVhNjY2NTRjZTFkMmEwZDkyMWZiMTJhMmU0ODA5ZTVmZTFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cApAQCAtMjYxMyw2ICsyNjEzLDMxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRUeXBlZEFy
cmF5Qm91bmRzQ2hlY2soTm9kZSogbm9kZSwgR1BSUmVnIGJhc2VHUFIsIEdQUlJlCiAgICAgc3Bl
Y3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgMCwganVtcCk7CiB9CiAK
K0pJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpqdW1wRm9yVHlwZWRBcnJheUlzTmV1
dGVyZWRJZk91dE9mQm91bmRzKE5vZGUqIG5vZGUsIEdQUlJlZyBiYXNlLCBKSVRDb21waWxlcjo6
SnVtcCBvdXRPZkJvdW5kcykKK3sKKyAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lOworICAgIGlm
IChvdXRPZkJvdW5kcy5pc1NldCgpKSB7CisgICAgICAgIGRvbmUgPSBtX2ppdC5qdW1wKCk7Cisg
ICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzKCkpCisgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlU291cmNlKCksIDAsIG91dE9mQm91
bmRzKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBvdXRPZkJvdW5kcy5saW5rKCZtX2pp
dCk7CisKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdFdhc3RlZnVsID0gbV9qaXQu
YnJhbmNoMzIoCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLAorICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UsIEpTQXJyYXlCdWZmZXJW
aWV3OjpvZmZzZXRPZk1vZGUoKSksCisgICAgICAgICAgICAgICAgVHJ1c3RlZEltbTMyKFdhc3Rl
ZnVsVHlwZWRBcnJheSkpOworCisgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBoYXNOdWxs
VmVjdG9yID0gbV9qaXQuYnJhbmNoVGVzdFB0cigKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6WmVybywKKyAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
LCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZWZWN0b3IoKSkpOworICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVNvdXJjZSgpLCBub2RlLCBoYXNOdWxs
VmVjdG9yKTsKKyAgICAgICAgICAgIG5vdFdhc3RlZnVsLmxpbmsoJm1faml0KTsKKyAgICAgICAg
fQorICAgIH0KKyAgICByZXR1cm4gZG9uZTsKK30KKwogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KE5vZGUqIG5vZGUsIFR5cGVkQXJyYXlUeXBlIHR5
cGUpCiB7CiAgICAgQVNTRVJUKGlzSW50KHR5cGUpKTsKQEAgLTI3OTAsMTEgKzI4MTUsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KEdQUlJl
ZyBiYXNlLCBHUFJSZWcgcHJvcGVydAogICAgIEFTU0VSVF9VTlVTRUQodmFsdWVHUFIsIHZhbHVl
R1BSICE9IHByb3BlcnR5KTsKICAgICBBU1NFUlQodmFsdWVHUFIgIT0gYmFzZSk7CiAgICAgQVNT
RVJUKHZhbHVlR1BSICE9IHN0b3JhZ2VSZWcpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG91
dE9mQm91bmRzID0ganVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBiYXNlLCBwcm9w
ZXJ0eSk7Ci0gICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHMoKSAmJiBvdXRPZkJv
dW5kcy5pc1NldCgpKSB7Ci0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpT
VmFsdWVTb3VyY2UoKSwgMCwgb3V0T2ZCb3VuZHMpOwotICAgICAgICBvdXRPZkJvdW5kcyA9IE1h
Y3JvQXNzZW1ibGVyOjpKdW1wKCk7Ci0gICAgfQorICAgIEpJVENvbXBpbGVyOjpKdW1wIG91dE9m
Qm91bmRzID0ganVtcEZvclR5cGVkQXJyYXlPdXRPZkJvdW5kcyhub2RlLCBiYXNlLCBwcm9wZXJ0
eSk7CiAKICAgICBzd2l0Y2ggKGVsZW1lbnRTaXplKHR5cGUpKSB7CiAgICAgY2FzZSAxOgpAQCAt
MjgwOSw4ICsyODMwLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZv
ckludFR5cGVkQXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgQ1JBU0goKTsKICAgICB9Ci0gICAgaWYgKG91dE9mQm91bmRzLmlzU2V0KCkpCi0g
ICAgICAgIG91dE9mQm91bmRzLmxpbmsoJm1faml0KTsKKworICAgIEpJVENvbXBpbGVyOjpKdW1w
IGRvbmUgPSBqdW1wRm9yVHlwZWRBcnJheUlzTmV1dGVyZWRJZk91dE9mQm91bmRzKG5vZGUsIGJh
c2UsIG91dE9mQm91bmRzKTsKKyAgICBpZiAoZG9uZS5pc1NldCgpKQorICAgICAgICBkb25lLmxp
bmsoJm1faml0KTsKICAgICBub1Jlc3VsdChub2RlKTsKIH0KIApAQCAtMjg2NSwxMCArMjg4OCw2
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJh
eShHUFJSZWcgYmFzZSwgR1BSUmVnIHByb3BlCiAgICAgQVNTRVJUX1VOVVNFRChiYXNlVXNlLCBu
b2RlLT5hcnJheU1vZGUoKS5hbHJlYWR5Q2hlY2tlZChtX2ppdC5ncmFwaCgpLCBub2RlLCBtX3N0
YXRlLmZvck5vZGUoYmFzZVVzZSkpKTsKICAgICAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBv
dXRPZkJvdW5kcyA9IGp1bXBGb3JUeXBlZEFycmF5T3V0T2ZCb3VuZHMobm9kZSwgYmFzZSwgcHJv
cGVydHkpOwotICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzKCkgJiYgb3V0T2ZC
b3VuZHMuaXNTZXQoKSkgewotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBK
U1ZhbHVlU291cmNlKCksIDAsIG91dE9mQm91bmRzKTsKLSAgICAgICAgb3V0T2ZCb3VuZHMgPSBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCgpOwotICAgIH0KICAgICAKICAgICBzd2l0Y2ggKGVsZW1lbnRT
aXplKHR5cGUpKSB7CiAgICAgY2FzZSA0OiB7CkBAIC0yODgzLDggKzI5MDIsMTAgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yRmxvYXRUeXBlZEFycmF5KEdQUlJlZyBi
YXNlLCBHUFJSZWcgcHJvcGUKICAgICBkZWZhdWx0OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgIH0KLSAgICBpZiAob3V0T2ZCb3VuZHMuaXNTZXQoKSkKLSAgICAg
ICAgb3V0T2ZCb3VuZHMubGluaygmbV9qaXQpOworCisgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9u
ZSA9IGp1bXBGb3JUeXBlZEFycmF5SXNOZXV0ZXJlZElmT3V0T2ZCb3VuZHMobm9kZSwgYmFzZSwg
b3V0T2ZCb3VuZHMpOworICAgIGlmIChkb25lLmlzU2V0KCkpCisgICAgICAgIGRvbmUubGluaygm
bV9qaXQpOwogICAgIG5vUmVzdWx0KG5vZGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggYjc3ZWFkNmM4MWQyNTI2YzNmMDQ3YWQw
OGI4Y2ViNTJhMDZjZGM1My4uNmNhNjBiZjdiNzgzYzU3YWIwYmE2Y2ZlOTI4NzAwYWU5ODAxNjEw
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApA
QCAtMjUyMSw2ICsyNTIxLDcgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGlsZUNvbnN0YW50U3Rv
cmFnZVBvaW50ZXIoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZUdldEluZGV4ZWRQcm9wZXJ0eVN0
b3JhZ2UoTm9kZSopOwogICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXBGb3JUeXBlZEFycmF5T3V0
T2ZCb3VuZHMoTm9kZSosIEdQUlJlZyBiYXNlR1BSLCBHUFJSZWcgaW5kZXhHUFIpOworICAgIEpJ
VENvbXBpbGVyOjpKdW1wIGp1bXBGb3JUeXBlZEFycmF5SXNOZXV0ZXJlZElmT3V0T2ZCb3VuZHMo
Tm9kZSosIEdQUlJlZyBiYXNlR1BSLCBKSVRDb21waWxlcjo6SnVtcCBvdXRPZkJvdW5kcyk7CiAg
ICAgdm9pZCBlbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqLCBHUFJSZWcgYmFzZUdQUiwg
R1BSUmVnIGluZGV4R1BSKTsKICAgICB2b2lkIGNvbXBpbGVHZXRUeXBlZEFycmF5Qnl0ZU9mZnNl
dChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbkludFR5cGVkQXJyYXkoTm9kZSos
IFR5cGVkQXJyYXlUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAppbmRleCBjMGEyY2M3YjgzNzBhZDc4YWE5ZDcxN2JjODY0MGQ2NjAwOTIwMzAx
Li4zYWNhYjc1OTI1ODk0MGJmY2NmNmQ4MTZmNWQyZDYyZjI1Mzk3ZjM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0zMzE0LDI3ICszMzE0
LDMyIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBERkdfQ1JBU0gobV9ncmFw
aCwgbV9ub2RlLCAiQmFkIHR5cGVkIGFycmF5IHR5cGUiKTsKICAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgICAg
IGlmIChtX25vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHMoKSB8fCBtX25vZGUtPm9wKCkgPT0g
UHV0QnlWYWxBbGlhcykKICAgICAgICAgICAgICAgICAgICAgbV9vdXQuc3RvcmUodmFsdWVUb1N0
b3JlLCBwb2ludGVyLCBzdG9yZVR5cGUpOwogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgICAgICAgICBMQmFzaWNCbG9jayBpc0luQm91bmRzID0gbV9vdXQubmV3QmxvY2soKTsK
KyAgICAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgaXNPdXRPZkJvdW5kcyA9IG1fb3V0Lm5l
d0Jsb2NrKCk7CiAgICAgICAgICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbiA9
IG1fb3V0Lm5ld0Jsb2NrKCk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
ICAgICBtX291dC5icmFuY2goCiAgICAgICAgICAgICAgICAgICAgICAgICBtX291dC5hYm92ZU9y
RXF1YWwoaW5kZXgsIGxvd0ludDMyKGNoaWxkNSkpLAotICAgICAgICAgICAgICAgICAgICAgICAg
dW5zdXJlKGNvbnRpbnVhdGlvbiksIHVuc3VyZShpc0luQm91bmRzKSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICB1bnN1cmUoaXNPdXRPZkJvdW5kcyksIHVuc3VyZShpc0luQm91bmRzKSk7CiAg
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBMQmFzaWNCbG9jayBsYXN0
TmV4dCA9IG1fb3V0LmFwcGVuZFRvKGlzSW5Cb3VuZHMsIGNvbnRpbnVhdGlvbik7CisgICAgICAg
ICAgICAgICAgICAgIExCYXNpY0Jsb2NrIGxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oaXNJbkJv
dW5kcywgaXNPdXRPZkJvdW5kcyk7CiAgICAgICAgICAgICAgICAgICAgIG1fb3V0LnN0b3JlKHZh
bHVlVG9TdG9yZSwgcG9pbnRlciwgc3RvcmVUeXBlKTsKICAgICAgICAgICAgICAgICAgICAgbV9v
dXQuanVtcChjb250aW51YXRpb24pOworCisgICAgICAgICAgICAgICAgICAgIG1fb3V0LmFwcGVu
ZFRvKGlzT3V0T2ZCb3VuZHMsIGNvbnRpbnVhdGlvbik7CisgICAgICAgICAgICAgICAgICAgIHNw
ZWN1bGF0ZVR5cGVkQXJyYXlJc05vdE5ldXRlcmVkKGJhc2UpOworICAgICAgICAgICAgICAgICAg
ICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCisKICAgICAgICAgICAgIERGR19DUkFTSCht
X2dyYXBoLCBtX25vZGUsICJCYWQgYXJyYXkgdHlwZSIpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KQEAgLTEwNTQ4LDcgKzEwNTUzLDI0IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1
ZSB2YWx1ZSA9IGxvd0pTVmFsdWUoZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKICAg
ICAgICAgdHlwZUNoZWNrKGpzVmFsdWVWYWx1ZSh2YWx1ZSksIGVkZ2UsIFNwZWNNaXNjLCBpc05v
dE1pc2ModmFsdWUpKTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHNwZWN1bGF0ZVR5cGVkQXJy
YXlJc05vdE5ldXRlcmVkKExWYWx1ZSBiYXNlKQorICAgIHsKKyAgICAgICAgTEJhc2ljQmxvY2sg
aXNXYXN0ZWZ1bCA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisgICAgICAgIExCYXNpY0Jsb2NrIGNvbnRp
bnVhdGlvbiA9IG1fb3V0Lm5ld0Jsb2NrKCk7CisKKyAgICAgICAgTFZhbHVlIG1vZGUgPSBtX291
dC5sb2FkMzIoYmFzZSwgbV9oZWFwcy5KU0FycmF5QnVmZmVyVmlld19tb2RlKTsKKyAgICAgICAg
bV9vdXQuYnJhbmNoKG1fb3V0LmVxdWFsKG1vZGUsIG1fb3V0LmNvbnN0SW50MzIoV2FzdGVmdWxU
eXBlZEFycmF5KSksCisgICAgICAgICAgICB1bnN1cmUoaXNXYXN0ZWZ1bCksIHVuc3VyZShjb250
aW51YXRpb24pKTsKKworICAgICAgICBMQmFzaWNCbG9jayBsYXN0TmV4dCA9IG1fb3V0LmFwcGVu
ZFRvKGlzV2FzdGVmdWwsIGNvbnRpbnVhdGlvbik7CisgICAgICAgIExWYWx1ZSB2ZWN0b3IgPSBt
X291dC5sb2FkUHRyKGJhc2UsIG1faGVhcHMuSlNBcnJheUJ1ZmZlclZpZXdfdmVjdG9yKTsKKyAg
ICAgICAgc3BlY3VsYXRlKFVuY291bnRhYmxlLCBqc1ZhbHVlVmFsdWUodmVjdG9yKSwgbV9ub2Rl
LCBtX291dC5ub3RaZXJvNjQodmVjdG9yKSk7CisgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0
aW9uKTsKKworICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0KTsK
KyAgICB9CisKICAgICBib29sIG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGls
bFZhbGlkKCkKICAgICB7CiAgICAgICAgIHJldHVybiBtX2dyYXBoLm1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXgg
NDM4M2ExMzU5Nzk2ZTc1N2VkNWNjNmJkNTVlMDdkOWZkNDk0MWRmMy4uOWQxMzQ0ZTE1Y2NlNjU0
MWRkYzNlNTJhYTk1N2Y2OGEyMTgwNmUxMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTE2NTUsNyArMTY1NSw3IEBAIEpJVDo6SnVt
cExpc3QgSklUOjplbWl0SW50VHlwZWRBcnJheVB1dEJ5VmFsKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24sIFBhCiAgICAgYmFkVHlwZSA9IHBhdGNoYWJsZUJyYW5jaDMyKE5vdEVxdWFs
LCBlYXJseVNjcmF0Y2gsIFRydXN0ZWRJbW0zMih0eXBlRm9yVHlwZWRBcnJheVR5cGUodHlwZSkp
KTsKICAgICBKdW1wIGluQm91bmRzID0gYnJhbmNoMzIoQmVsb3csIHByb3BlcnR5LCBBZGRyZXNz
KGJhc2UsIEpTQXJyYXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSk7CiAgICAgZW1pdEFy
cmF5UHJvZmlsZU91dE9mQm91bmRzU3BlY2lhbENhc2UocHJvZmlsZSk7Ci0gICAgSnVtcCBkb25l
ID0ganVtcCgpOworICAgIHNsb3dDYXNlcy5hcHBlbmQoanVtcCgpKTsKICAgICBpbkJvdW5kcy5s
aW5rKHRoaXMpOwogICAgIAogI2lmIFVTRShKU1ZBTFVFNjQpCkBAIC0xNjk3LDggKzE2OTcsNiBA
QCBKSVQ6Okp1bXBMaXN0IEpJVDo6ZW1pdEludFR5cGVkQXJyYXlQdXRCeVZhbChJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uLCBQYQogICAgICAgICBDUkFTSCgpOwogICAgIH0KICAgICAK
LSAgICBkb25lLmxpbmsodGhpcyk7Ci0gICAgCiAgICAgcmV0dXJuIHNsb3dDYXNlczsKIH0KIApA
QCAtMTcyNyw3ICsxNzI1LDcgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRGbG9hdFR5cGVkQXJy
YXlQdXRCeVZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLAogICAgIGJhZFR5cGUg
PSBwYXRjaGFibGVCcmFuY2gzMihOb3RFcXVhbCwgZWFybHlTY3JhdGNoLCBUcnVzdGVkSW1tMzIo
dHlwZUZvclR5cGVkQXJyYXlUeXBlKHR5cGUpKSk7CiAgICAgSnVtcCBpbkJvdW5kcyA9IGJyYW5j
aDMyKEJlbG93LCBwcm9wZXJ0eSwgQWRkcmVzcyhiYXNlLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zm
c2V0T2ZMZW5ndGgoKSkpOwogICAgIGVtaXRBcnJheVByb2ZpbGVPdXRPZkJvdW5kc1NwZWNpYWxD
YXNlKHByb2ZpbGUpOwotICAgIEp1bXAgZG9uZSA9IGp1bXAoKTsKKyAgICBzbG93Q2FzZXMuYXBw
ZW5kKGp1bXAoKSk7CiAgICAgaW5Cb3VuZHMubGluayh0aGlzKTsKICAgICAKICNpZiBVU0UoSlNW
QUxVRTY0KQpAQCAtMTc2Nyw4ICsxNzY1LDYgQEAgSklUOjpKdW1wTGlzdCBKSVQ6OmVtaXRGbG9h
dFR5cGVkQXJyYXlQdXRCeVZhbChJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uLAogICAg
ICAgICBDUkFTSCgpOwogICAgIH0KICAgICAKLSAgICBkb25lLmxpbmsodGhpcyk7Ci0gICAgCiAg
ICAgcmV0dXJuIHNsb3dDYXNlczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmgKaW5kZXggOTYxMzJjMjgxY2UzZTQ2MGQ1NzBhMmIx
MTI2ZGNjOWQ5ZGYzMTc2Yi4uOGI5YzhiNDYzZDVjNTUxMjNmYmRkOThmZGQ0NDVmNTM4MWI3YzRj
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
clZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
Vmlldy5oCkBAIC01Myw3ICs1Myw3IEBAIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIC8v
IFR5cGVkIGFycmF5IHZpZXdzIGhhdmUgZGlmZmVyZW50IG1vZGVzIGRlcGVuZGluZyBvbiBob3cg
YmlnIHRoZXkgYXJlIGFuZAogLy8gd2hldGhlciB0aGUgdXNlciBoYXMgZG9uZSBhbnl0aGluZyB0
aGF0IHJlcXVpcmVzIGEgc2VwYXJhdGUgYmFja2luZwogLy8gYnVmZmVyIG9yIHRoZSBET00tc3Bl
Y2lmaWVkIG5ldXRlcmluZyBjYXBhYmlsaXRpZXMuCi1lbnVtIFR5cGVkQXJyYXlNb2RlIHsKK2Vu
dW0gVHlwZWRBcnJheU1vZGUgOiB1aW50MzJfdCB7CiAgICAgLy8gU21hbGwgYW5kIGZhc3QgdHlw
ZWQgYXJyYXkuIEIgaXMgdW51c2VkLCBWIHBvaW50cyB0byBhIHZlY3RvcgogICAgIC8vIGFsbG9j
YXRlZCBpbiBjb3BpZWQgc3BhY2UsIGFuZCBNID0gRmFzdFR5cGVkQXJyYXkuIFYncyBsaXZlbmVz
cyBpcwogICAgIC8vIGRldGVybWluZWQgZW50aXJlbHkgYnkgdGhlIHZpZXcncyBsaXZlbmVzcy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuaAppbmRleCAzOGVkODIw
N2QyYTUwNmRlNWE0NDNmY2Y0NjhjOTMyODU5NGFlOTExLi40MGVlN2ZhZjE4NzJkNjU0OGNlMjM0
ODE4NzYwOTE2MDM1YTQ0OTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
SlNWYWx1ZS5oCkBAIC01ODMsNiArNTgzLDE2IEBAIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBqc051
bWJlcih1bnNpZ25lZCBsb25nIGxvbmcgaSkKICAgICByZXR1cm4gSlNWYWx1ZShpKTsKIH0KIAor
QUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkSlNVbmRlZmluZWQoKQoreworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0FMV0FZU19JTkxJ
TkUgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEpTVmFsdWUoKQoreworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNWYWx1ZSgpKTsKK30KKwogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBK
U1ZhbHVlIGEsIGNvbnN0IEpTQ2VsbCogYikgeyByZXR1cm4gYSA9PSBKU1ZhbHVlKGIpOyB9CiBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEpTQ2VsbCogYSwgY29uc3QgSlNWYWx1ZSBiKSB7
IHJldHVybiBKU1ZhbHVlKGEpID09IGI7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3LmgKaW5kZXggNDA3YTcxMmY1
ODhkMGFmODIzMjBiNTk4YTIyOTdmMWRjYjM4OTczOC4uNTg0MWYyNzEyMDMwOTdiODI0NzI5ZTNh
N2M5MmQ3YjRlZDRiNzg3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlldy5oCkBAIC0yNjksMTAgKzI2OSwxMiBAQCBw
dWJsaWM6CiAgICAgQXJyYXlCdWZmZXIqIGV4aXN0aW5nQnVmZmVyKCk7CiAKICAgICBzdGF0aWMg
Y29uc3QgVHlwZWRBcnJheVR5cGUgVHlwZWRBcnJheVN0b3JhZ2VUeXBlID0gQWRhcHRvcjo6dHlw
ZVZhbHVlOwotICAgIAorCiBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5kIHN0cnVjdCBUeXBlZEFycmF5
Q2xhc3NJbmZvczsKIAorICAgIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB0aHJvd05ldXRlcmVkVHlw
ZWRBcnJheVR5cGVFcnJvcihFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1l
KTsKKwogICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNT
dGF0ZSosIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIGJvb2wgcHV0
KEpTQ2VsbCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZSwgSlNWYWx1ZSwgUHV0UHJvcGVydHlT
bG90Jik7CiAgICAgc3RhdGljIGJvb2wgZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBQcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5RGVzY3JpcHRvciYsIGJvb2wgc2hv
dWxkVGhyb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAppbmRleCAwYmUyZDhhNzRjMTMx
MWFjOWRlYWY2NzE1NWQ3N2M4MGY3ZmQxYWQ5Li5kMmU4OTY5NGYwNWIwMTc2MjA1ZTI4NjJmZTQ3
MjM4ZjA1ODc4ZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaApAQCAtMzcsNiArMzcs
OCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorc3RhdGljIGNvbnN0IGNoYXIqIHR5cGVkQXJyYXlC
dWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UgPSAiVW5kZXJseWluZyBBcnJheUJ1ZmZl
ciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3IjsKKwogdGVtcGxhdGU8dHlwZW5hbWUg
QWRhcHRvcj4KIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpKU0dlbmVyaWNUeXBl
ZEFycmF5VmlldygKICAgICBWTSYgdm0sIENvbnN0cnVjdGlvbkNvbnRleHQmIGNvbnRleHQpCkBA
IC0yODgsMTQgKzI5MCwyOCBAQCBBcnJheUJ1ZmZlciogSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8
QWRhcHRvcj46OmV4aXN0aW5nQnVmZmVyKCkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQWRhcHRv
cj4KK0VuY29kZWRKU1ZhbHVlIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojp0aHJv
d05ldXRlcmVkVHlwZWRBcnJheVR5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1Zh
bHVlIG9iamVjdCwgUHJvcGVydHlOYW1lKQoreworICAgIEFTU0VSVF9VTlVTRUQob2JqZWN0LCBq
c0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihKU1ZhbHVlOjpkZWNvZGUob2JqZWN0KSkt
PmlzTmV1dGVyZWQoKSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRB
cnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIEFkYXB0b3I+CiBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpn
ZXRPd25Qcm9wZXJ0eVNsb3QoCiAgICAgSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNHZW5lcmljVHlw
ZWRBcnJheVZpZXcqPihvYmplY3QpOwogCi0gICAgT3B0aW9uYWw8dWludDMyX3Q+IGluZGV4ID0g
cGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpOwotICAgIGlmIChpbmRleCAmJiB0aGlzT2JqZWN0LT5j
YW5HZXRJbmRleFF1aWNrbHkoaW5kZXgudmFsdWUoKSkpIHsKLSAgICAgICAgc2xvdC5zZXRWYWx1
ZSh0aGlzT2JqZWN0LCBEb250RGVsZXRlIHwgUmVhZE9ubHksIHRoaXNPYmplY3QtPmdldEluZGV4
UXVpY2tseShpbmRleC52YWx1ZSgpKSk7CisgICAgaWYgKE9wdGlvbmFsPHVpbnQzMl90PiBpbmRl
eCA9IHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkgeworICAgICAgICBpZiAodGhpc09iamVjdC0+
aXNOZXV0ZXJlZCgpKSB7CisgICAgICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBO
b25lLCB0aHJvd05ldXRlcmVkVHlwZWRBcnJheVR5cGVFcnJvcik7CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzT2JqZWN0LT5jYW5HZXRJbmRl
eFF1aWNrbHkoaW5kZXgudmFsdWUoKSkpCisgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNP
YmplY3QsIERvbnREZWxldGUgfCBSZWFkT25seSwgdGhpc09iamVjdC0+Z2V0SW5kZXhRdWlja2x5
KGluZGV4LnZhbHVlKCkpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2xvdC5zZXRWYWx1
ZSh0aGlzT2JqZWN0LCBEb250RGVsZXRlIHwgUmVhZE9ubHksIGpzVW5kZWZpbmVkKCkpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgCkBAIC0zMDgsNyArMzI0LDEwIEBAIGJvb2wg
SlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnB1dCgKICAgICBQdXRQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7CiAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIHRoaXNPYmplY3QgPSBq
c0Nhc3Q8SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihjZWxsKTsKLSAgICAKKworICAgIGlmICh0
aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCisgICAgICAgIHJldHVybiByZWplY3QoZXhlYywgdHJ1
ZSwgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisKICAgICAv
LyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1pbnRlZ2VyLWluZGV4ZWQtZXhv
dGljLW9iamVjdHMtc2V0LXAtdi1yZWNlaXZlcgogICAgIC8vIElnbm9yZSB0aGUgcmVjZWl2ZXIg
ZXZlbiBpZiB0aGUgcmVjZWl2ZXIgaXMgYWx0ZXJlZCB0byBub24gYmFzZSB2YWx1ZS4KICAgICAv
LyA5LjQuNS41LTItYi1pIFJldHVybiA/IEludGVnZXJJbmRleGVkRWxlbWVudFNldChPLCBudW1l
cmljSW5kZXgsIFYpLgpAQCAtMzI0LDEyICszNDMsMjAgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFy
cmF5VmlldzxBZGFwdG9yPjo6ZGVmaW5lT3duUHJvcGVydHkoCiAgICAgY29uc3QgUHJvcGVydHlE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHNob3VsZFRocm93KQogewogICAgIEpTR2VuZXJp
Y1R5cGVkQXJyYXlWaWV3KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3Kj4ob2JqZWN0KTsKLSAgICAKLSAgICAvLyBUaGlzIGlzIG1hdGNoaW5nIEZpcmVmb3ggYmVo
YXZpb3IuIEluIHBhcnRpY3VsYXIsIGl0IHJlamVjdHMgYWxsIGF0dGVtcHRzIHRvCi0gICAgLy8g
ZGVmaW5lT3duUHJvcGVydHkgZm9yIGluZGV4ZWQgcHJvcGVydGllcyBvbiB0eXBlZCBhcnJheXMs
IGV2ZW4gaWYgdGhleSdyZSBvdXQKLSAgICAvLyBvZiBib3VuZHMuCi0gICAgaWYgKHBhcnNlSW5k
ZXgocHJvcGVydHlOYW1lKSkKLSAgICAgICAgcmV0dXJuIHJlamVjdChleGVjLCBzaG91bGRUaHJv
dywgIkF0dGVtcHRpbmcgdG8gd3JpdGUgdG8gYSByZWFkLW9ubHkgdHlwZWQgYXJyYXkgcHJvcGVy
dHkuIik7CisKKyAgICBpZiAocGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CisgICAgICAgIGlm
IChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkpCisgICAgICAgICAgICByZXR1cm4g
cmVqZWN0KGV4ZWMsIHNob3VsZFRocm93LCAiQXR0ZW1wdGluZyB0byBzdG9yZSBhY2Nlc3NvciBp
bmRleGVkIHByb3BlcnR5IG9uIGEgdHlwZWQgYXJyYXkuIik7CisKKyAgICAgICAgaWYgKGRlc2Ny
aXB0b3IuYXR0cmlidXRlcygpICYgKERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSkK
KyAgICAgICAgICAgIHJldHVybiByZWplY3QoZXhlYywgc2hvdWxkVGhyb3csICJBdHRlbXB0aW5n
IHRvIHN0b3JlIG5vbi1lbnVtZXJhYmxlLCBub24tY29uZmlndXJhYmxlIG9yIG5vbi13cml0YWJs
ZSBpbmRleGVkIHByb3BlcnR5IG9uIGEgdHlwZWQgYXJyYXkuIik7CisKKyAgICAgICAgaWYgKGRl
c2NyaXB0b3IudmFsdWUoKSkgeworICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHVudXNlZChK
U1ZhbHVlKHRoaXNPYmplY3QpLCBzaG91bGRUaHJvdyk7CisgICAgICAgICAgICByZXR1cm4gdGhp
c09iamVjdC0+cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvci52
YWx1ZSgpLCB1bnVzZWQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
ICAgICAKICAgICByZXR1cm4gQmFzZTo6ZGVmaW5lT3duUHJvcGVydHkodGhpc09iamVjdCwgZXhl
YywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdyk7CiB9CkBAIC0zMzksNyAr
MzY2LDEwIEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OmRlbGV0ZVBy
b3BlcnR5KAogICAgIEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQogewogICAgIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3KiB0aGlzT2JqZWN0
ID0ganNDYXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Kj4oY2VsbCk7Ci0gICAgCisKKyAgICBp
ZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQorICAgICAgICByZXR1cm4gcmVqZWN0KGV4ZWMs
IHRydWUsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOworCiAg
ICAgaWYgKHBhcnNlSW5kZXgocHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIApAQCAtMzUxLDcgKzM4MSwxMiBAQCBib29sIEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFk
YXB0b3I+OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KAogICAgIEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7CiAgICAgSlNHZW5lcmljVHlwZWRBcnJheVZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8
SlNHZW5lcmljVHlwZWRBcnJheVZpZXcqPihvYmplY3QpOwotICAgIAorCisgICAgaWYgKHRoaXNP
YmplY3QtPmlzTmV1dGVyZWQoKSkgeworICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0
LCBOb25lLCB0aHJvd05ldXRlcmVkVHlwZWRBcnJheVR5cGVFcnJvcik7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPiBNQVhfQVJSQVlfSU5ERVgp
IHsKICAgICAgICAgcmV0dXJuIHRoaXNPYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldE93blByb3Bl
cnR5U2xvdCgKICAgICAgICAgICAgIHRoaXNPYmplY3QsIGV4ZWMsIElkZW50aWZpZXI6OmZyb20o
ZXhlYywgcHJvcGVydHlOYW1lKSwgc2xvdCk7CkBAIC0zNjksNyArNDA0LDEwIEBAIGJvb2wgSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46OnB1dEJ5SW5kZXgoCiAgICAgSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIHVuc2lnbmVkIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1
ZSwgYm9vbCBzaG91bGRUaHJvdykKIHsKICAgICBKU0dlbmVyaWNUeXBlZEFycmF5VmlldyogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU0dlbmVyaWNUeXBlZEFycmF5Vmlldyo+KGNlbGwpOwotICAgIAor
CisgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKKyAgICAgICAgcmV0dXJuIHJlamVj
dChleGVjLCB0cnVlLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdl
KTsKKwogICAgIGlmIChwcm9wZXJ0eU5hbWUgPiBNQVhfQVJSQVlfSU5ERVgpIHsKICAgICAgICAg
UHV0UHJvcGVydHlTbG90IHNsb3QoSlNWYWx1ZSh0aGlzT2JqZWN0KSwgc2hvdWxkVGhyb3cpOwog
ICAgICAgICByZXR1cm4gdGhpc09iamVjdC0+bWV0aG9kVGFibGUoKS0+cHV0KHRoaXNPYmplY3Qs
IGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVydHlOYW1lKSwgdmFsdWUsIHNsb3Qp
OwpAQCAtMzgyLDEyICs0MjAsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBBZGFwdG9yPgogYm9vbCBK
U0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KAog
ICAgIEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUp
CiB7Ci0gICAgaWYgKHByb3BlcnR5TmFtZSA+IE1BWF9BUlJBWV9JTkRFWCkgewotICAgICAgICBy
ZXR1cm4gY2VsbC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoCi0gICAgICAgICAgICBj
ZWxsLCBleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIHByb3BlcnR5TmFtZSkpOwotICAgIH0K
LSAgICAKLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGNlbGwtPm1ldGhvZFRhYmxlKCkt
PmRlbGV0ZVByb3BlcnR5KGNlbGwsIGV4ZWMsIElkZW50aWZpZXI6OmZyb20oZXhlYywgcHJvcGVy
dHlOYW1lKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEFkYXB0b3I+CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
dHlwZUZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaAppbmRleCAwYjAyM2Q4MmQ5Y2E2NDI2
ZDliN2YwODVmNGQ4MmE4ZTI0YzdjYThmLi4yMGM0MDYwNDM5ODBmNjdiZDM4MDc4ZjUyMDY3OTI4
MmMwMjdkNGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rp
b25zLmgKQEAgLTQyLDggKzQyLDYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0YXRpYyBjb25z
dCBjaGFyKiB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlID0gIlVu
ZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyI7Ci0K
IC8vIFRoaXMgaW1wbGVtZW50cyAyMi4yLjQuNyBUeXBlZEFycmF5U3BlY2llc0NyZWF0ZQogLy8g
Tm90ZSwgdGhhdCB0aGlzIGZ1bmN0aW9uIHRocm93cy4KIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0
b3I+CkBAIC0xNDAsMjAgKzEzOCwyNCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+CiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVu
Y0NvcHlXaXRoaW4oRXhlY1N0YXRlKiBleGVjKQogewogICAgIC8vIDIyLjIuMy41CisgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKICAgICBWaWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmll
d0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRl
cmVkKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlC
dWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCi0gICAgaWYgKGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKSA8IDIpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRl
VHlwZUVycm9yKGV4ZWMsICJFeHBlY3RlZCBhdCBsZWFzdCB0d28gYXJndW1lbnRzIikpOwotCi0g
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwotCiAgICAgbG9uZyBsZW5ndGggPSB0aGlzT2JqZWN0LT5sZW5n
dGgoKTsKICAgICBsb25nIHRvID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChl
eGVjLCAwLCBsZW5ndGgpOworICAgIGlmICh2bS5leGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJu
IGVuY29kZWRKU1ZhbHVlKCk7CiAgICAgbG9uZyBmcm9tID0gYXJndW1lbnRDbGFtcGVkSW5kZXhG
cm9tU3RhcnRPckVuZChleGVjLCAxLCBsZW5ndGgpOworICAgIGlmICh2bS5leGNlcHRpb24oKSkK
KyAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAgICAgbG9uZyBmaW5hbCA9IGFyZ3Vt
ZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoZXhlYywgMiwgbGVuZ3RoLCBsZW5ndGgpOwor
ICAgIGlmICh2bS5leGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7
CisKKyAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQorICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JN
ZXNzYWdlKTsKIAogICAgIGlmIChmaW5hbCA8IGZyb20pCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoZXhlYy0+dGhpc1ZhbHVlKCkpOwpAQCAtMTcwLDYgKzE3Miw3IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIFZpZXdDbGFzcz4KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jRmlsbChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgLy8g
MjIuMi4zLjgKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIFZpZXdDbGFzcyogdGhpc09i
amVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3MqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKHRo
aXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CkBAIC0x
ODAsNyArMTgzLDE0IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jRmlsbChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICB1bnNpZ25lZCBs
ZW5ndGggPSB0aGlzT2JqZWN0LT5sZW5ndGgoKTsKICAgICB1bnNpZ25lZCBiZWdpbiA9IGFyZ3Vt
ZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoZXhlYywgMSwgbGVuZ3RoKTsKKyAgICBpZiAo
dm0uZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAgIHVu
c2lnbmVkIGVuZCA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoZXhlYywgMiwg
bGVuZ3RoLCBsZW5ndGgpOworICAgIGlmICh2bS5leGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJu
IGVuY29kZWRKU1ZhbHVlKCk7CisKKyAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFz
QmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIGlmIChlbmQgPCBiZWdpbikKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT50aGlzVmFsdWUoKSk7CkBAIC0xOTUsNiAr
MjA1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0
ZSogZXhlYykKIHsKICAgICAvLyAyMi4yLjMuMTMKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwog
ICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3MqPihleGVjLT50aGlz
VmFsdWUoKSk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hl
ZEVycm9yTWVzc2FnZSk7CkBAIC0yMDYsNiArMjE3LDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5kZXhPZihFeGVjU3RhdGUq
IGV4CiAKICAgICBKU1ZhbHVlIHZhbHVlVG9GaW5kID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAg
dW5zaWduZWQgaW5kZXggPSBhcmd1bWVudENsYW1wZWRJbmRleEZyb21TdGFydE9yRW5kKGV4ZWMs
IDEsIGxlbmd0aCk7CisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gZW5j
b2RlZEpTVmFsdWUoKTsKKworICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVu
RGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgdHlwZW5hbWUgVmlld0NsYXNzOjpFbGVtZW50
VHlwZSogYXJyYXkgPSB0aGlzT2JqZWN0LT50eXBlZFZlY3RvcigpOwogICAgIHR5cGVuYW1lIFZp
ZXdDbGFzczo6RWxlbWVudFR5cGUgdGFyZ2V0ID0gVmlld0NsYXNzOjp0b0FkYXB0b3JOYXRpdmVG
cm9tVmFsdWUoZXhlYywgdmFsdWVUb0ZpbmQpOwpAQCAtMjUyLDYgKzI2OCw5IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSm9pbihF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNTdHJpbmcqIHNlcGFyYXRvclN0cmluZyA9IHNlcGFyYXRv
clZhbHVlLnRvU3RyaW5nKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIGlmICh0
aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogICAg
IHJldHVybiBqb2luV2l0aFNlcGFyYXRvcihzZXBhcmF0b3JTdHJpbmctPnZpZXcoZXhlYykuZ2V0
KCkpOwogfQogCkBAIC0yODMsNiArMzAyLDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNMYXN0SW5kZXhPZihFeGVjU3RhdGUKICAg
ICAgICAgICAgIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGZyb21Eb3VibGUpOwogICAg
IH0KIAorICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJv
ck1lc3NhZ2UpOworCiAgICAgdHlwZW5hbWUgVmlld0NsYXNzOjpFbGVtZW50VHlwZSogYXJyYXkg
PSB0aGlzT2JqZWN0LT50eXBlZFZlY3RvcigpOwogICAgIHR5cGVuYW1lIFZpZXdDbGFzczo6RWxl
bWVudFR5cGUgdGFyZ2V0ID0gVmlld0NsYXNzOjp0b0FkYXB0b3JOYXRpdmVGcm9tVmFsdWUoZXhl
YywgdmFsdWVUb0ZpbmQpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTM2Myw2
ICszODUsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3Q2xhc3M+CiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKEV4ZWNTdGF0
ZSogZXhlYykKIHsKICAgICAvLyAyMi4yLjMuMjYKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOwog
ICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4oZXhlYy0+Y2FsbGVl
KCkpOwogCiAgICAgVmlld0NsYXNzKiB0aGlzT2JqZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+KGV4
ZWMtPnRoaXNWYWx1ZSgpKTsKQEAgLTM3Miw3ICszOTUsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUq
IGV4ZWMKICAgICB1bnNpZ25lZCB0aGlzTGVuZ3RoID0gdGhpc09iamVjdC0+bGVuZ3RoKCk7CiAK
ICAgICB1bnNpZ25lZCBiZWdpbiA9IGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQo
ZXhlYywgMCwgdGhpc0xlbmd0aCk7CisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICB1bnNpZ25lZCBlbmQgPSBhcmd1bWVudENsYW1w
ZWRJbmRleEZyb21TdGFydE9yRW5kKGV4ZWMsIDEsIHRoaXNMZW5ndGgsIHRoaXNMZW5ndGgpOwor
ICAgIGlmICh2bS5leGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7
CisKKyAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQorICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JN
ZXNzYWdlKTsKIAogICAgIC8vIENsYW1wIGVuZCB0byBiZWdpbi4KICAgICBlbmQgPSBzdGQ6Om1h
eChiZWdpbiwgZW5kKTsKQEAgLTQzNSwyMCArNDY1LDI1IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFZp
ZXdDbGFzcz4KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG9GdW5jU3ViYXJyYXkoRXhlY1N0YXRlKiBleGVjKQogewogICAgIC8vIDIyLjIuMy4y
MworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNGdW5jdGlvbiogY2FsbGVlID0ganND
YXN0PEpTRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSk7CiAKICAgICBWaWV3Q2xhc3MqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICh0
aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCi0g
ICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJn
dW1lbnQiKSk7Ci0KICAgICAvLyBHZXQgdGhlIGxlbmd0aCBoZXJlOyBsYXRlciBhc3NlcnQgdGhh
dCB0aGUgbGVuZ3RoIGRpZG4ndCBjaGFuZ2UuCiAgICAgdW5zaWduZWQgdGhpc0xlbmd0aCA9IHRo
aXNPYmplY3QtPmxlbmd0aCgpOwogCiAgICAgdW5zaWduZWQgYmVnaW4gPSBhcmd1bWVudENsYW1w
ZWRJbmRleEZyb21TdGFydE9yRW5kKGV4ZWMsIDAsIHRoaXNMZW5ndGgpOworICAgIGlmICh2bS5l
eGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAgICAgdW5zaWdu
ZWQgZW5kID0gYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChleGVjLCAxLCB0aGlz
TGVuZ3RoLCB0aGlzTGVuZ3RoKTsKKyAgICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAgIHJl
dHVybiBlbmNvZGVkSlNWYWx1ZSgpOworCisgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQo
KSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZl
ckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICAvLyBDbGFtcCBlbmQgdG8gYmVn
aW4uCiAgICAgZW5kID0gc3RkOjptYXgoYmVnaW4sIGVuZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2ZvbGQtdHlwZWQtYXJyYXktcHJvcGVydGllcy5q
cyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZm9sZC10eXBlZC1hcnJheS1w
cm9wZXJ0aWVzLmpzCmluZGV4IGJlNWI0ODIyNTlhODUyZmFlNjRiYzJkMDBkODUxMDJiNDg5NDUw
ODcuLjJkMTdkNzc4YmMyYTA2ZTIxYmU4N2YwZGY1ODQ3YzllZGQ3YTFkM2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZm9sZC10eXBlZC1hcnJheS1wcm9w
ZXJ0aWVzLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZm9sZC10
eXBlZC1hcnJheS1wcm9wZXJ0aWVzLmpzCkBAIC0zMywxMCArMzMsMyBAQCB0cnkgewogCiBpZiAo
IWRpZFRocm93KQogICAgIHRocm93ICJTaG91bGQgaGF2ZSB0aHJvd24uIjsKLQotaWYgKGEubGVu
Z3RoICE9IDApCi0gICAgdGhyb3cgIkVycm9yOiBiYWQgbGVuZ3RoIChlbmQpOiAiICsgYS5sZW5n
dGg7Ci1pZiAoYS5ieXRlT2Zmc2V0ICE9IDApCi0gICAgdGhyb3cgIkVycm9yOiBiYWQgb2Zmc2V0
IChlbmQpOiAiICsgYS5ieXRlT2Zmc2V0OwotaWYgKGEuYnl0ZUxlbmd0aCAhPSAwKQotICAgIHRo
cm93ICJFcnJvcjogYmFkIGJ5dGUgbGVuZ3RoIChlbmQpOiAiICsgYS5ieXRlTGVuZ3RoOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90eXBlZGFycmF5LWFj
Y2Vzcy1tb25vbW9ycGhpYy1uZXV0ZXJlZC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvdHlwZWRhcnJheS1hY2Nlc3MtbW9ub21vcnBoaWMtbmV1dGVyZWQuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNmM2NjU3MGY4MDU2OTRmZDY3ZjljYTlhNjA1M2Q5YjQ4N2M4MjNkMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdHlwZWRhcnJheS1h
Y2Nlc3MtbW9ub21vcnBoaWMtbmV1dGVyZWQuanMKQEAgLTAsMCArMSw1NCBAQAordHlwZWRBcnJh
eXMgPSBbSW50OEFycmF5LCBVaW50OEFycmF5LCBVaW50OENsYW1wZWRBcnJheSwgSW50MTZBcnJh
eSwgVWludDE2QXJyYXksIEludDMyQXJyYXksIFVpbnQzMkFycmF5LCBGbG9hdDMyQXJyYXksIEZs
b2F0NjRBcnJheV07CisKKworZnVuY3Rpb24gY2hlY2soYXJyYXksIHRodW5rLCBjb3VudCkgewor
ICAgIGxldCBmYWlsZWQgPSB0cnVlOworICAgIHRyeSB7CisgICAgICAgIHRodW5rKGFycmF5LCBj
b3VudCk7CisgICAgfSBjYXRjaChlKSB7CisgICAgICAgIGlmIChlICE9ICJUeXBlRXJyb3I6IFVu
ZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyIpCisg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoW3RodW5rLCBjb3VudCwgZV0pOworICAgICAgICBm
YWlsZWQgPSBmYWxzZTsKKyAgICB9CisgICAgaWYgKGZhaWxlZCkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKFt0aHVuaywgY291bnRdKTsKK30KK25vSW5saW5lKGNoZWNrKTsKKworZnVuY3Rpb24g
dGVzdCh0aHVuaywgYXJyYXkpIHsKKyAgICBsZXQgZm4gPSBGdW5jdGlvbigiYXJyYXkiLCAiaSIs
IHRodW5rKTsKKyAgICBub0lubGluZShmbik7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAw
MDsgaSsrKQorICAgICAgICBjaGVjayhhcnJheSwgZm4sIGkpOworfQorCitmb3IgKGxldCBjb25z
dHJ1Y3RvciBvZiB0eXBlZEFycmF5cykgeworICAgIGxldCBhcnJheSA9IG5ldyBjb25zdHJ1Y3Rv
cigxMCk7CisgICAgdHJhbnNmZXJBcnJheUJ1ZmZlcihhcnJheS5idWZmZXIpOworICAgIHRlc3Qo
ImFycmF5WzBdIiwgYXJyYXkpOworICAgIHRlc3QoImRlbGV0ZSBhcnJheVswXSIsIGFycmF5KTsK
KyAgICB0ZXN0KCJPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGFycmF5LCAwKSIsIGFy
cmF5KTsKKyAgICB0ZXN0KCJPYmplY3QuZGVmaW5lUHJvcGVydHkoYXJyYXksIDAsIHsgdmFsdWU6
IDEsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIGVudW1lcmFibGU6IHRydWUg
fSkiLCBhcnJheSk7CisgICAgdGVzdCgiYXJyYXlbMF0gPSAxIiwgYXJyYXkpOworICAgIHRlc3Qo
ImFycmF5W2ldID0gMSIsIGFycmF5KTsKK30KKworZnVuY3Rpb24gdGVzdEZUTCh0aHVuaywgYXJy
YXksIGZhaWxBcnJheSkgeworICAgIGxldCBmbiA9IEZ1bmN0aW9uKCJhcnJheSIsICJpIiwgdGh1
bmspOworICAgIG5vSW5saW5lKGZuKTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBp
KyspCisgICAgICAgIGZuKGFycmF5LCBpKQorICAgIGNoZWNrKGZhaWxBcnJheSwgZm4sIDEwMDAw
KTsKK30KKworZm9yIChsZXQgY29uc3RydWN0b3Igb2YgdHlwZWRBcnJheXMpIHsKKyAgICBsZXQg
YXJyYXkgPSBuZXcgY29uc3RydWN0b3IoMTApOworICAgIGxldCBmYWlsQXJyYXkgPSBuZXcgY29u
c3RydWN0b3IoMTApOworICAgIHRyYW5zZmVyQXJyYXlCdWZmZXIoZmFpbEFycmF5LmJ1ZmZlcik7
CisgICAgdGVzdEZUTCgiYXJyYXlbMF0iLCBhcnJheSwgZmFpbEFycmF5KTsKKyAgICB0ZXN0RlRM
KCJkZWxldGUgYXJyYXlbMF0iLCBhcnJheSwgZmFpbEFycmF5KTsKKyAgICB0ZXN0RlRMKCJPYmpl
Y3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGFycmF5LCAwKSIsIGFycmF5LCBmYWlsQXJyYXkp
OworICAgIHRlc3RGVEwoIk9iamVjdC5kZWZpbmVQcm9wZXJ0eShhcnJheSwgMCwgeyB2YWx1ZTog
MSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgZW51bWVyYWJsZTogdHJ1ZSB9
KSIsIGFycmF5LCBmYWlsQXJyYXkpOworICAgIHRlc3RGVEwoImFycmF5WzBdID0gMSIsIGFycmF5
LCBmYWlsQXJyYXkpOworICAgIHRlc3RGVEwoImFycmF5W2ldID0gMSIsIGFycmF5LCBmYWlsQXJy
YXkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90
eXBlZGFycmF5LWFjY2Vzcy1uZXV0ZXJlZC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
cy9zdHJlc3MvdHlwZWRhcnJheS1hY2Nlc3MtbmV1dGVyZWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGE4MTRm
NTg2NDE4NDRlMTUwOWMzZDcwM2U2NTU0ZWEzZjk4MTNlMwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdHlwZWRhcnJheS1hY2Nlc3MtbmV1dGVy
ZWQuanMKQEAgLTAsMCArMSwzMCBAQAordHlwZWRBcnJheXMgPSBbSW50OEFycmF5LCBVaW50OEFy
cmF5LCBVaW50OENsYW1wZWRBcnJheSwgSW50MTZBcnJheSwgVWludDE2QXJyYXksIEludDMyQXJy
YXksIFVpbnQzMkFycmF5LCBGbG9hdDMyQXJyYXksIEZsb2F0NjRBcnJheV07CisKKworZnVuY3Rp
b24gY2hlY2sodGh1bmssIGNvdW50KSB7CisgICAgbGV0IGFycmF5ID0gbmV3IGNvbnN0cnVjdG9y
KDEwKTsKKyAgICB0cmFuc2ZlckFycmF5QnVmZmVyKGFycmF5LmJ1ZmZlcik7CisgICAgbGV0IGZh
aWxlZCA9IHRydWU7CisgICAgdHJ5IHsKKyAgICAgICAgdGh1bmsoYXJyYXkpOworICAgIH0gY2F0
Y2goZSkgeworICAgICAgICBpZiAoZSAhPSAiVHlwZUVycm9yOiBVbmRlcmx5aW5nIEFycmF5QnVm
ZmVyIGhhcyBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHZpZXciKQorICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKFt0aHVuaywgY291bnQsIGVdKTsKKyAgICAgICAgZmFpbGVkID0gZmFsc2U7Cisg
ICAgfQorICAgIGlmIChmYWlsZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihbdGh1bmssIGNv
dW50XSk7Cit9CisKK2Z1bmN0aW9uIHRlc3QodGh1bmssIGNvdW50KSB7CisgICAgZm9yIChjb25z
dHJ1Y3RvciBvZiB0eXBlZEFycmF5cykKKyAgICAgICAgY2hlY2sodGh1bmssIGNvdW50KTsKK30K
KworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgdGVzdCgoYXJyYXkpID0+
IGFycmF5WzBdLCBpKTsKKyAgICB0ZXN0KChhcnJheSkgPT4gZGVsZXRlIGFycmF5WzBdLCBpKTsK
KyAgICB0ZXN0KChhcnJheSkgPT4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihhcnJh
eSwgMCksIGkpOworICAgIHRlc3QoKGFycmF5KSA9PiBPYmplY3QuZGVmaW5lUHJvcGVydHkoYXJy
YXksIDAsIHsgdmFsdWU6IDEsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIGVu
dW1lcmFibGU6IHRydWUgfSksIGkpCisgICAgdGVzdCgoYXJyYXkpID0+IGFycmF5WzBdID0gMSwg
aSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3R5
cGVkYXJyYXktZnVuY3Rpb25zLXdpdGgtbmV1dGVyZWQuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdHMvc3RyZXNzL3R5cGVkYXJyYXktZnVuY3Rpb25zLXdpdGgtbmV1dGVyZWQuanMKaW5k
ZXggMDkxMGMwY2FhNWRiMjU1Yjg0NTYzNGM5MWJmNTk3ZmZjN2M0Zjg3Mi4uNmY2OGM0MTg2YzAw
ZGRhMzEzM2NhNDJmZmI4YjgxMzMwNDg0NjdlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy90eXBlZGFycmF5LWZ1bmN0aW9ucy13aXRoLW5ldXRlcmVkLmpz
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdHlwZWRhcnJheS1mdW5j
dGlvbnMtd2l0aC1uZXV0ZXJlZC5qcwpAQCAtNzMsMyArNzMsODggQEAgZnVuY3Rpb24gdGVzdCgp
IHsKIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgaSsrKQogICAgIHRlc3QoKTsKIAorLy8gVGVz
dCB0aGF0IHdlIGhhbmRsZSBuZXV0ZXJpbmcgZm9yIGFueSB0b0ludGVnZXIgbmV1dGVyaW5nIHRo
ZSBhcnJheWJ1ZmZlci4KK3Byb3RvdHlwZUZ1bmN0aW9ucyA9IFsKKyAgICB7IGZ1bmM6cHJvdG8u
Y29weVdpdGhpbiwgYXJnczpbInByaW0iLCAicHJpbSIsICJwcmltIl0gfSwKKyAgICB7IGZ1bmM6
cHJvdG8uZXZlcnksIGFyZ3M6WyJmdW5jIl0gfSwKKyAgICB7IGZ1bmM6cHJvdG8uZmlsbCwgYXJn
czpbImlucyIsICJwcmltIiwgInByaW0iXSB9LAorICAgIHsgZnVuYzpwcm90by5maWx0ZXIsIGFy
Z3M6WyJmdW5jIl0gfSwKKyAgICB7IGZ1bmM6cHJvdG8uZmluZCwgYXJnczpbImZ1bmMiXSB9LAor
ICAgIHsgZnVuYzpwcm90by5maW5kSW5kZXgsIGFyZ3M6WyJmdW5jIl0gfSwKKyAgICB7IGZ1bmM6
cHJvdG8uZm9yRWFjaCwgYXJnczpbImZ1bmMiXSB9LAorICAgIHsgZnVuYzpwcm90by5pbmRleE9m
LCBhcmdzOlsibmEiLCAicHJpbSJdIH0sCisgICAgeyBmdW5jOnByb3RvLmpvaW4sIGFyZ3M6WyJw
cmltIl0gfSwKKyAgICB7IGZ1bmM6cHJvdG8ubGFzdEluZGV4T2YsIGFyZ3M6WyJuYSIsICJwcmlt
Il0gfSwKKyAgICB7IGZ1bmM6cHJvdG8ubWFwLCBhcmdzOlsiZnVuYyJdIH0sCisgICAgeyBmdW5j
OnByb3RvLnJlZHVjZSwgYXJnczpbImZ1bmMiXSB9LAorICAgIHsgZnVuYzpwcm90by5yZWR1Y2VS
aWdodCwgYXJnczpbImZ1bmMiXSB9LAorICAgIHsgZnVuYzpwcm90by5zZXQsIGFyZ3M6WyJhcnJh
eSIsICJwcmltIl0gfSwKKyAgICB7IGZ1bmM6cHJvdG8uc2xpY2UsIGFyZ3M6WyJwcmltIiwgInBy
aW0iXSB9LAorICAgIHsgZnVuYzpwcm90by5zb21lLCBhcmdzOlsiZnVuYyJdIH0sCisgICAgeyBm
dW5jOnByb3RvLnNvcnQsIGFyZ3M6WyJmdW5jIl0gfSwKKyAgICB7IGZ1bmM6cHJvdG8uc3ViYXJy
YXksIGFyZ3M6WyJwcmltIiwgInByaW0iXSB9LAorXTsKKworZnVuY3Rpb24gZGVmYXVsdEZvckFy
ZyhhcmcpCit7CisgICAgaWYgKGFyZyA9PT0gImZ1bmMiKQorICAgICAgICByZXR1cm4gKCkgPT4g
eyByZXR1cm4gMTsgfQorCisgICAgcmV0dXJuIDE7Cit9CisKK2Z1bmN0aW9uIGNhbGxXaXRoQXJn
cyhmdW5jLCBhcnJheSwgYXJncykgeworICAgIGxldCBmYWlsZWQgPSB0cnVlOworICAgIHRyeSB7
CisgICAgICAgIGZ1bmMuY2FsbChhcnJheSwgLi4uYXJncyk7CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICBpZiAoZSAhPSAiVHlwZUVycm9yOiBVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBi
ZWVuIGRldGFjaGVkIGZyb20gdGhlIHZpZXciKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9y
KGUpOworICAgICAgICBmYWlsZWQgPSBmYWxzZTsKKyAgICB9CisgICAgaWYgKGZhaWxlZCkKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKFtmdW5jLCBhcmdzXSk7Cit9CisKKworZnVuY3Rpb24gY2hl
Y2tBcmd1bWVudHNGb3JUeXBlKGZ1bmMsIGFyZ3MsIGNvbnN0cnVjdG9yKSB7CisgICAgbGV0IGRl
ZmF1bHRBcmdzID0gYXJncy5tYXAoZGVmYXVsdEZvckFyZyk7CisKKyAgICBmb3IgKGxldCBhcmdO
dW0gPSAwOyBhcmdOdW0gPCBhcmdzLmxlbmd0aDsgYXJnTnVtKyspIHsKKyAgICAgICAgbGV0IGFy
ZyA9IGFyZ3NbYXJnTnVtXTsKKyAgICAgICAgbGV0IGNhbGxBcmdzID0gZGVmYXVsdEFyZ3Muc2xp
Y2UoKTsKKworICAgICAgICBpZiAoYXJnID09PSAibmEiKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgbGV0IGxlbiA9IDEwOworICAgICAgICBpZiAoYXJnID09PSAiZnVuYyIpIHsK
KyAgICAgICAgICAgIGxldCBhcnJheSA9IG5ldyBjb25zdHJ1Y3RvcihsZW4pOworICAgICAgICAg
ICAgY2FsbEFyZ3NbYXJnTnVtXSA9ICgpID0+IHsKKyAgICAgICAgICAgICAgICB0cmFuc2ZlckFy
cmF5QnVmZmVyKGFycmF5LmJ1ZmZlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmMgPT09
IGFycmF5LmV2ZXJ5ID8gMSA6IDA7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgY2FsbFdp
dGhBcmdzKGZ1bmMsIGFycmF5LCBjYWxsQXJncyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAo
YXJnID09PSAicHJpbSIpIHsKKyAgICAgICAgICAgIGxldCBhcnJheSA9IG5ldyBjb25zdHJ1Y3Rv
cihsZW4pCisgICAgICAgICAgICBjYWxsQXJnc1thcmdOdW1dID0geyBbU3ltYm9sLnRvUHJpbWl0
aXZlXSgpIHsKKyAgICAgICAgICAgICAgICB0cmFuc2ZlckFycmF5QnVmZmVyKGFycmF5LmJ1ZmZl
cik7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICB9IH07CisgICAgICAg
ICAgICBjYWxsV2l0aEFyZ3MoZnVuYywgYXJyYXksIGNhbGxBcmdzKTsKKyAgICAgICAgfQorICAg
IH0KK30KKworZnVuY3Rpb24gY2hlY2tBcmd1bWVudHMoe2Z1bmMsIGFyZ3N9KSB7CisgICAgZm9y
IChjb25zdHJ1Y3RvciBvZiB0eXBlZEFycmF5cykKKyAgICAgICAgY2hlY2tBcmd1bWVudHNGb3JU
eXBlKGZ1bmMsIGFyZ3MsIGNvbnN0cnVjdG9yKQorfQorCitmdW5jdGlvbiB0ZXN0KCkgeworICAg
IHByb3RvdHlwZUZ1bmN0aW9ucy5mb3JFYWNoKGNoZWNrQXJndW1lbnRzKTsKK30KKwordGVzdCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90eXBlZGFy
cmF5LXZpZXctc3RyaW5nLXByb3BlcnRpZXMtbmV1dGVyZWQuanMgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdHMvc3RyZXNzL3R5cGVkYXJyYXktdmlldy1zdHJpbmctcHJvcGVydGllcy1uZXV0
ZXJlZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kYmY2ODE1YjEzMmFkNDdkMzE3NDQ0NTE0ZDM0MDY2Y2VjMjcx
MzRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy90eXBlZGFycmF5LXZpZXctc3RyaW5nLXByb3BlcnRpZXMtbmV1dGVyZWQuanMKQEAgLTAsMCAr
MSw0OSBAQAordHlwZWRBcnJheXMgPSBbSW50OEFycmF5LCBVaW50OEFycmF5LCBVaW50OENsYW1w
ZWRBcnJheSwgSW50MTZBcnJheSwgVWludDE2QXJyYXksIEludDMyQXJyYXksIFVpbnQzMkFycmF5
LCBGbG9hdDMyQXJyYXksIEZsb2F0NjRBcnJheV07CisKKworZnVuY3Rpb24gY2FsbCh0aHVuaykg
eworICAgIHRodW5rKCk7Cit9Citub0lubGluZShjYWxsKTsKKworbGV0IG5hbWUgPSBbIm1hcCIs
ICJyZWR1Y2UiXTsKKy8vIEZpcnN0IHRlc3Qgd2l0aCBldmVyeSBhY2Nlc3MgYmVpbmcgbmV1dGVy
ZWQuCitmdW5jdGlvbiB0ZXN0KGNvbnN0cnVjdG9yKSB7CisgICAgbGV0IGFycmF5ID0gbmV3IGNv
bnN0cnVjdG9yKDEwKTsKKyAgICB0cmFuc2ZlckFycmF5QnVmZmVyKGFycmF5LmJ1ZmZlcik7Cisg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKSB7CisgICAgICAgIGNhbGwoKCkgPT4g
eworICAgICAgICAgICAgaWYgKGFycmF5Lm1hcCAhPT0gY29uc3RydWN0b3IucHJvdG90eXBlLm1h
cCkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKKyAgICAgICAgfSk7CisgICAg
ICAgIGNhbGwoKCkgPT4geworICAgICAgICAgICAgaWYgKGFycmF5W25hbWVbaSAlIDJdXSAhPT0g
Y29uc3RydWN0b3IucHJvdG90eXBlW25hbWVbaSAlIDJdXSkKKyAgICAgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoKTsKKyAgICAgICAgfSk7CisgICAgfQorfQorCitmb3IgKGNvbnN0cnVjdG9y
IG9mIHR5cGVkQXJyYXlzKSB7CisgICAgdGVzdChjb25zdHJ1Y3Rvcik7Cit9CisKKy8vIE5leHQg
dGVzdCB3aXRoIG5ldXRlcmVkIGFmdGVyIHRpZXIgdXAuCitmdW5jdGlvbiB0ZXN0KGNvbnN0cnVj
dG9yKSB7CisgICAgbGV0IGFycmF5ID0gbmV3IGNvbnN0cnVjdG9yKDEwKTsKKyAgICBsZXQgaSA9
IDA7CisgICAgZm5JZCA9ICgpID0+ICB7CisgICAgICAgIGlmIChhcnJheS5tYXAgIT09IGNvbnN0
cnVjdG9yLnByb3RvdHlwZS5tYXApCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoKTsKKyAg
ICB9OworICAgIGZuVmFsID0gKCkgPT4geworICAgICAgICBpZiAoYXJyYXlbbmFtZVtpICUgMl1d
ICE9PSBjb25zdHJ1Y3Rvci5wcm90b3R5cGVbbmFtZVtpICUgMl1dKQorICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCk7CisgICAgfTsKKyAgICBmb3IgKDsgaSA8IDEwMDAwOyBpKyspIHsKKyAg
ICAgICAgY2FsbChmbklkKTsKKyAgICAgICAgY2FsbChmblZhbCk7CisgICAgfQorICAgIHRyYW5z
ZmVyQXJyYXlCdWZmZXIoYXJyYXkuYnVmZmVyKTsKKyAgICBjYWxsKGZuSWQpOworICAgIGNhbGwo
Zm5WYWwpOworfQo=
</data>
<flag name="review"
          id="306672"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>