<?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>164200</bug_id>
          
          <creation_ts>2016-10-30 00:17:45 -0700</creation_ts>
          <short_desc>ClonedArguments need to also support haveABadTime mode.</short_desc>
          <delta_ts>2016-11-03 23:22:12 -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 Local 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1246171</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-30 00:17:45 -0700</bug_when>
    <thetext>Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246172</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-30 00:19:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/27211336&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246180</commentid>
    <comment_count>2</comment_count>
      <attachid>293338</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-30 02:00:33 -0700</bug_when>
    <thetext>Created attachment 293338
proposed patch.

Let&apos;s try this on the EWS bots.  I still need to make sure the DFG and FTL are not making assumptions about the structure of ClonedArguments never mutating (as was hinted by the assertion I changed in the patch).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246184</commentid>
    <comment_count>3</comment_count>
      <attachid>293338</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-30 02:21:21 -0700</bug_when>
    <thetext>Comment on attachment 293338
proposed patch.

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

&gt; JSTests/stress/have-a-bad-time-with-direct-arguments-after-warmpup-in-baseline.js:4
&gt; +// If all goes well, this test module will terminate silently. If not, it will crash.
&gt; +// See binary-op-test.js for debugging options if needed.

These are cut-and-paste-o&apos;s.  Will fix.

&gt; Source/JavaScriptCore/runtime/ClonedArguments.cpp:126
&gt; -    ASSERT(myFrame-&gt;lexicalGlobalObject()-&gt;clonedArgumentsStructure() == result-&gt;structure());
&gt; +    ASSERT(result-&gt;structure(vm)-&gt;transitivelyTransitionedFrom(myFrame-&gt;lexicalGlobalObject()-&gt;clonedArgumentsStructure()));

Hmmm, it does look like the DFG has expectations about the structure of ClonedArguments (see https://trac.webkit.org/changeset/198154).  Intuitively, I would think it is safe to transition structures on the ClonedArguments object.  This is because any JS code should be able to do this, and haveABadTime() does this to the object anyway.  I dig deeper into the DFG code that works with ClonedArguments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247517</commentid>
    <comment_count>4</comment_count>
      <attachid>293338</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-02 15:28:05 -0700</bug_when>
    <thetext>Comment on attachment 293338
proposed patch.

The fix requires more work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247844</commentid>
    <comment_count>5</comment_count>
      <attachid>293800</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-03 14:00:03 -0700</bug_when>
    <thetext>Created attachment 293800
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247862</commentid>
    <comment_count>6</comment_count>
      <attachid>293802</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-03 14:28:26 -0700</bug_when>
    <thetext>Created attachment 293802
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247869</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-11-03 14:39:38 -0700</bug_when>
    <thetext>
r=me

&gt; Source/JavaScriptCore/ChangeLog:12
&gt; +        trivially do indexed property accesses without consulting the Object.prototype.
&gt; +        This defeats many JIT optimizations, and hence, makes the VM &quot;have a bad time&quot;.

It&apos;s indexed property initialization only that suffers from this problem -- not indexed property loads nor indexed property modification.

&gt; Source/JavaScriptCore/runtime/ClonedArguments.cpp:67
&gt; +        void* temp = vm.heap.tryAllocateAuxiliary(nullptr, Butterfly::totalSize(0, structure-&gt;outOfLineCapacity(), true, ArrayStorage::sizeFor(vectorLength)));
&gt; +        if (!temp)
&gt; +            return 0;
&gt; +
&gt; +        butterfly = Butterfly::fromBase(temp, 0, structure-&gt;outOfLineCapacity());
&gt; +        ArrayStorage* newStorage = butterfly-&gt;arrayStorage();
&gt; +        newStorage-&gt;setVectorLength(vectorLength);
&gt; +        newStorage-&gt;setLength(length);
&gt; +        newStorage-&gt;m_sparseMap.clear();
&gt; +        newStorage-&gt;m_indexBias = 0;
&gt; +        newStorage-&gt;m_numValuesInVector = vectorLength;
&gt; +
&gt; +        for (unsigned i = 0; i &lt; vectorLength; i++)
&gt; +            newStorage-&gt;m_vector[i].clear();
&gt; +

Can we use a helper function here, like JSObject::createArrayStorage?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247886</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-03 15:26:07 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; r=me
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:12
&gt; &gt; +        trivially do indexed property accesses without consulting the Object.prototype.
&gt; &gt; +        This defeats many JIT optimizations, and hence, makes the VM &quot;have a bad time&quot;.
&gt; 
&gt; It&apos;s indexed property initialization only that suffers from this problem --
&gt; not indexed property loads nor indexed property modification.

Is this true?  We&apos;ll have a bad time if we do any of the following:
   Object.defineProperty(Object.prototype, 0, { get() { return 20 }})
   Object.defineProperty(Object.prototype, 0, { set(x) {} })
   Object.defineProperty(Object.prototype, 0, { })
   Object.defineProperty(Object.prototype, 0, { value: 5 })

Is it not true that HaveABadTime also makes indexed gets slower because every get must now go down the slow path?

&gt; &gt; Source/JavaScriptCore/runtime/ClonedArguments.cpp:67
&gt; &gt; +        void* temp = vm.heap.tryAllocateAuxiliary(nullptr, Butterfly::totalSize(0, structure-&gt;outOfLineCapacity(), true, ArrayStorage::sizeFor(vectorLength)));
&gt; &gt; +        if (!temp)
&gt; &gt; +            return 0;
&gt; &gt; +
&gt; &gt; +        butterfly = Butterfly::fromBase(temp, 0, structure-&gt;outOfLineCapacity());
&gt; &gt; +        ArrayStorage* newStorage = butterfly-&gt;arrayStorage();
&gt; &gt; +        newStorage-&gt;setVectorLength(vectorLength);
&gt; &gt; +        newStorage-&gt;setLength(length);
&gt; &gt; +        newStorage-&gt;m_sparseMap.clear();
&gt; &gt; +        newStorage-&gt;m_indexBias = 0;
&gt; &gt; +        newStorage-&gt;m_numValuesInVector = vectorLength;
&gt; &gt; +
&gt; &gt; +        for (unsigned i = 0; i &lt; vectorLength; i++)
&gt; &gt; +            newStorage-&gt;m_vector[i].clear();
&gt; &gt; +
&gt; 
&gt; Can we use a helper function here, like JSObject::createArrayStorage?

Good point.  I considered this last night, and opted to write the code locally because the pre-existing code for contiguous storage was using a vm.heap.tryAllocateAuxiliary() whereas the JSObject helper functions use vm.heap.allocateAuxiliary().  But looking a little more, I see that the ClonedArguments code has no mode that expects the allocation to ever fail.  I&apos;ll look into using the JSObject helpers instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248042</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-03 22:07:54 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; r=me
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/ChangeLog:12
&gt; &gt; &gt; +        trivially do indexed property accesses without consulting the Object.prototype.
&gt; &gt; &gt; +        This defeats many JIT optimizations, and hence, makes the VM &quot;have a bad time&quot;.
&gt; &gt; 
&gt; &gt; It&apos;s indexed property initialization only that suffers from this problem --
&gt; &gt; not indexed property loads nor indexed property modification.
&gt; 
&gt; Is this true?  We&apos;ll have a bad time if we do any of the following:
&gt;    Object.defineProperty(Object.prototype, 0, { get() { return 20 }})
&gt;    Object.defineProperty(Object.prototype, 0, { set(x) {} })
&gt;    Object.defineProperty(Object.prototype, 0, { })
&gt;    Object.defineProperty(Object.prototype, 0, { value: 5 })
&gt; 
&gt; Is it not true that HaveABadTime also makes indexed gets slower because
&gt; every get must now go down the slow path?

I spoke with Geoff offline.  haveABadTime only defeats indexed put optimizations.  I will fix the ChangeLog to say this.


&gt; &gt; &gt; Source/JavaScriptCore/runtime/ClonedArguments.cpp:67
&gt; &gt; &gt; +        void* temp = vm.heap.tryAllocateAuxiliary(nullptr, Butterfly::totalSize(0, structure-&gt;outOfLineCapacity(), true, ArrayStorage::sizeFor(vectorLength)));
&gt; &gt; &gt; +        if (!temp)
&gt; &gt; &gt; +            return 0;
&gt; &gt; &gt; +
&gt; &gt; &gt; +        butterfly = Butterfly::fromBase(temp, 0, structure-&gt;outOfLineCapacity());
&gt; &gt; &gt; +        ArrayStorage* newStorage = butterfly-&gt;arrayStorage();
&gt; &gt; &gt; +        newStorage-&gt;setVectorLength(vectorLength);
&gt; &gt; &gt; +        newStorage-&gt;setLength(length);
&gt; &gt; &gt; +        newStorage-&gt;m_sparseMap.clear();
&gt; &gt; &gt; +        newStorage-&gt;m_indexBias = 0;
&gt; &gt; &gt; +        newStorage-&gt;m_numValuesInVector = vectorLength;
&gt; &gt; &gt; +
&gt; &gt; &gt; +        for (unsigned i = 0; i &lt; vectorLength; i++)
&gt; &gt; &gt; +            newStorage-&gt;m_vector[i].clear();
&gt; &gt; &gt; +
&gt; &gt; 
&gt; &gt; Can we use a helper function here, like JSObject::createArrayStorage?
&gt; 
&gt; Good point.  I considered this last night, and opted to write the code
&gt; locally because the pre-existing code for contiguous storage was using a
&gt; vm.heap.tryAllocateAuxiliary() whereas the JSObject helper functions use
&gt; vm.heap.allocateAuxiliary().  But looking a little more, I see that the
&gt; ClonedArguments code has no mode that expects the allocation to ever fail. 
&gt; I&apos;ll look into using the JSObject helpers instead.

I&apos;ll factor a JSObject::createArrayStorageButterfly() out of JSObject::createArrayStorage(), and use that here instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248046</commentid>
    <comment_count>10</comment_count>
      <attachid>293863</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-03 22:15:29 -0700</bug_when>
    <thetext>Created attachment 293863
patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248047</commentid>
    <comment_count>11</comment_count>
      <attachid>293864</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-03 22:16:23 -0700</bug_when>
    <thetext>Created attachment 293864
diff between previous patch and the patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1248061</commentid>
    <comment_count>12</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-03 23:22:12 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r208377: &lt;http://trac.webkit.org/r208377&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293338</attachid>
            <date>2016-10-30 02:00:33 -0700</date>
            <delta_ts>2016-11-02 15:28:05 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-164200.patch</filename>
            <type>text/plain</type>
            <size>21254</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDgxMjEpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI5IEBACisyMDE2LTEwLTMwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBDbG9uZWRBcmd1bWVudHMgbmVlZCB0byBhbHNvIHN1cHBvcnQgaGF2ZUFC
YWRUaW1lIG1vZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjQyMDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI3MjExMzM2PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2hhdmUtYS1i
YWQtdGltZS13aXRoLWRpcmVjdC1hcmd1bWVudHMtYWZ0ZXItd2FybXB1cC1pbi1iYXNlbGluZS5q
czogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2hhdmUtYS1iYWQtdGltZS13aXRoLWRpcmVjdC1h
cmd1bWVudHMtYWZ0ZXItd2FybXB1cC1pbi1kZmcuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVz
cy9oYXZlLWEtYmFkLXRpbWUtd2l0aC1kaXJlY3QtYXJndW1lbnRzLWFmdGVyLXdhcm1wdXAtaW4t
ZnRsLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvaGF2ZS1hLWJhZC10aW1lLXdpdGgtZGly
ZWN0LWFyZ3VtZW50cy1hZnRlci13YXJtcHVwLWluLWxsaW50LmpzOiBBZGRlZC4KKyAgICAgICAg
KiBzdHJlc3MvaGF2ZS1hLWJhZC10aW1lLXdpdGgtZGlyZWN0LWFyZ3VtZW50cy1iZWZvcmUtd2Fy
bXB1cC1pbi1iYXNlbGluZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2hhdmUtYS1iYWQt
dGltZS13aXRoLWRpcmVjdC1hcmd1bWVudHMtYmVmb3JlLXdhcm1wdXAtaW4tZGZnLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBzdHJlc3MvaGF2ZS1hLWJhZC10aW1lLXdpdGgtZGlyZWN0LWFyZ3VtZW50
cy1iZWZvcmUtd2FybXB1cC1pbi1mdGwuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9oYXZl
LWEtYmFkLXRpbWUtd2l0aC1kaXJlY3QtYXJndW1lbnRzLWJlZm9yZS13YXJtcHVwLWluLWxsaW50
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvaGF2ZS1hLWJhZC10aW1lLXdpdGgtc2NvcGVk
LWFyZ3VtZW50cy1hZnRlci13YXJtcHVwLWluLWJhc2VsaW5lLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBzdHJlc3MvaGF2ZS1hLWJhZC10aW1lLXdpdGgtc2NvcGVkLWFyZ3VtZW50cy1hZnRlci13YXJt
cHVwLWluLWRmZy5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2hhdmUtYS1iYWQtdGltZS13
aXRoLXNjb3BlZC1hcmd1bWVudHMtYWZ0ZXItd2FybXB1cC1pbi1mdGwuanM6IEFkZGVkLgorICAg
ICAgICAqIHN0cmVzcy9oYXZlLWEtYmFkLXRpbWUtd2l0aC1zY29wZWQtYXJndW1lbnRzLWFmdGVy
LXdhcm1wdXAtaW4tbGxpbnQuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9oYXZlLWEtYmFk
LXRpbWUtd2l0aC1zY29wZWQtYXJndW1lbnRzLWJlZm9yZS13YXJtcHVwLWluLWJhc2VsaW5lLmpz
OiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvaGF2ZS1hLWJhZC10aW1lLXdpdGgtc2NvcGVkLWFy
Z3VtZW50cy1iZWZvcmUtd2FybXB1cC1pbi1kZmcuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVz
cy9oYXZlLWEtYmFkLXRpbWUtd2l0aC1zY29wZWQtYXJndW1lbnRzLWJlZm9yZS13YXJtcHVwLWlu
LWZ0bC5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL2hhdmUtYS1iYWQtdGltZS13aXRoLXNj
b3BlZC1hcmd1bWVudHMtYmVmb3JlLXdhcm1wdXAtaW4tbGxpbnQuanM6IEFkZGVkLgorICAgICAg
ICAqIHN0cmVzcy9yZXNvdXJjZXMvaGF2ZS1hLWJhZC10aW1lLWFyZ3VtZW50cy10ZXN0LmpzOiBB
ZGRlZC4KKwogMjAxNi0xMC0yOSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBXZSBzaG91bGQgaGF2ZSBhIHdheSBvZiBwcm9maWxpbmcgd2hlbiBhIGdldF9ieV9p
ZCBpcyBwdXJlIGFuZCB0byBlbWl0IGEgUHVyZUdldEJ5SWQgaW4gdGhlIERGRy9GVEwKSW5kZXg6
IEpTVGVzdHMvc3RyZXNzL2hhdmUtYS1iYWQtdGltZS13aXRoLWRpcmVjdC1hcmd1bWVudHMtYWZ0
ZXItd2FybXB1cC1pbi1iYXNlbGluZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9o
YXZlLWEtYmFkLXRpbWUtd2l0aC1kaXJlY3QtYXJndW1lbnRzLWFmdGVyLXdhcm1wdXAtaW4tYmFz
ZWxpbmUuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvaGF2ZS1hLWJhZC10aW1l
LXdpdGgtZGlyZWN0LWFyZ3VtZW50cy1hZnRlci13YXJtcHVwLWluLWJhc2VsaW5lLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKy8vQCBydW5GVExOb0NKSVQKKworLy8gSWYgYWxs
IGdvZXMgd2VsbCwgdGhpcyB0ZXN0IG1vZHVsZSB3aWxsIHRlcm1pbmF0ZSBzaWxlbnRseS4gSWYg
bm90LCBpdCB3aWxsIGNyYXNoLgorLy8gU2VlIGJpbmFyeS1vcC10ZXN0LmpzIGZvciBkZWJ1Z2dp
bmcgb3B0aW9ucyBpZiBuZWVkZWQuCisKKy8vIFRlc3QgY29uZmlndXJhdGlvbi4KK29wdGltaXph
dGlvbkxldmVsID0gImJhc2VsaW5lIjsKK3doZW5Ub0hhdmVBQmFkVGltZSA9ICJhZnRlciB3YXJt
dXAiOworYXJndW1lbnRzVHlwZVRvVGVzdCA9ICJEaXJlY3RBcmd1bWVudHMiOworCisvLyBHbyBy
dW4gdGhlIHRlc3QuCitsb2FkKCIuL3Jlc291cmNlcy9oYXZlLWEtYmFkLXRpbWUtYXJndW1lbnRz
LXRlc3QuanMiKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBKU1Rlc3RzL3N0
cmVzcy9oYXZlLWEtYmFkLXRpbWUtd2l0aC1kaXJlY3QtYXJndW1lbnRzLWFmdGVyLXdhcm1wdXAt
aW4tZGZnLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2hhdmUtYS1iYWQtdGltZS13
aXRoLWRpcmVjdC1hcmd1bWVudHMtYWZ0ZXItd2FybXB1cC1pbi1kZmcuanMJKG5vbmV4aXN0ZW50
KQorKysgSlNUZXN0cy9zdHJlc3MvaGF2ZS1hLWJhZC10aW1lLXdpdGgtZGlyZWN0LWFyZ3VtZW50
cy1hZnRlci13YXJtcHVwLWluLWRmZy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBA
CisvL0AgcnVuRlRMTm9DSklUCisKKy8vIElmIGFsbCBnb2VzIHdlbGwsIHRoaXMgdGVzdCBtb2R1
bGUgd2lsbCB0ZXJtaW5hdGUgc2lsZW50bHkuIElmIG5vdCwgaXQgd2lsbCBjcmFzaC4KKy8vIFNl
ZSBiaW5hcnktb3AtdGVzdC5qcyBmb3IgZGVidWdnaW5nIG9wdGlvbnMgaWYgbmVlZGVkLgorCisv
LyBUZXN0IGNvbmZpZ3VyYXRpb24uCitvcHRpbWl6YXRpb25MZXZlbCA9ICJkZmciOword2hlblRv
SGF2ZUFCYWRUaW1lID0gImFmdGVyIHdhcm11cCI7Cithcmd1bWVudHNUeXBlVG9UZXN0ID0gIkRp
cmVjdEFyZ3VtZW50cyI7CisKKy8vIEdvIHJ1biB0aGUgdGVzdC4KK2xvYWQoIi4vcmVzb3VyY2Vz
L2hhdmUtYS1iYWQtdGltZS1hcmd1bWVudHMtdGVzdC5qcyIpOwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2hhdmUtYS1iYWQtdGltZS13aXRoLWRpcmVj
dC1hcmd1bWVudHMtYWZ0ZXItd2FybXB1cC1pbi1mdGwuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0
cy9zdHJlc3MvaGF2ZS1hLWJhZC10aW1lLXdpdGgtZGlyZWN0LWFyZ3VtZW50cy1hZnRlci13YXJt
cHVwLWluLWZ0bC5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9oYXZlLWEtYmFk
LXRpbWUtd2l0aC1kaXJlY3QtYXJndW1lbnRzLWFmdGVyLXdhcm1wdXAtaW4tZnRsLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKy8vQCBydW5GVExOb0NKSVQKKworLy8gSWYgYWxs
IGdvZXMgd2VsbCwgdGhpcyB0ZXN0IG1vZHVsZSB3aWxsIHRlcm1pbmF0ZSBzaWxlbnRseS4gSWYg
bm90LCBpdCB3aWxsIGNyYXNoLgorLy8gU2VlIGJpbmFyeS1vcC10ZXN0LmpzIGZvciBkZWJ1Z2dp
bmcgb3B0aW9ucyBpZiBuZWVkZWQuCisKKy8vIFRlc3QgY29uZmlndXJhdGlvbi4KK29wdGltaXph
dGlvbkxldmVsID0gImZ0bCI7Cit3aGVuVG9IYXZlQUJhZFRpbWUgPSAiYWZ0ZXIgd2FybXVwIjsK
K2FyZ3VtZW50c1R5cGVUb1Rlc3QgPSAiRGlyZWN0QXJndW1lbnRzIjsKKworLy8gR28gcnVuIHRo
ZSB0ZXN0LgorbG9hZCgiLi9yZXNvdXJjZXMvaGF2ZS1hLWJhZC10aW1lLWFyZ3VtZW50cy10ZXN0
LmpzIik7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogSlNUZXN0cy9zdHJlc3Mv
aGF2ZS1hLWJhZC10aW1lLXdpdGgtZGlyZWN0LWFyZ3VtZW50cy1hZnRlci13YXJtcHVwLWluLWxs
aW50LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2hhdmUtYS1iYWQtdGltZS13aXRo
LWRpcmVjdC1hcmd1bWVudHMtYWZ0ZXItd2FybXB1cC1pbi1sbGludC5qcwkobm9uZXhpc3RlbnQp
CisrKyBKU1Rlc3RzL3N0cmVzcy9oYXZlLWEtYmFkLXRpbWUtd2l0aC1kaXJlY3QtYXJndW1lbnRz
LWFmdGVyLXdhcm1wdXAtaW4tbGxpbnQuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBA
QAorLy9AIHJ1bkZUTE5vQ0pJVAorCisvLyBJZiBhbGwgZ29lcyB3ZWxsLCB0aGlzIHRlc3QgbW9k
dWxlIHdpbGwgdGVybWluYXRlIHNpbGVudGx5LiBJZiBub3QsIGl0IHdpbGwgY3Jhc2guCisvLyBT
ZWUgYmluYXJ5LW9wLXRlc3QuanMgZm9yIGRlYnVnZ2luZyBvcHRpb25zIGlmIG5lZWRlZC4KKwor
Ly8gVGVzdCBjb25maWd1cmF0aW9uLgorb3B0aW1pemF0aW9uTGV2ZWwgPSAibGxpbnQiOword2hl
blRvSGF2ZUFCYWRUaW1lID0gImFmdGVyIHdhcm11cCI7Cithcmd1bWVudHNUeXBlVG9UZXN0ID0g
IkRpcmVjdEFyZ3VtZW50cyI7CisKKy8vIEdvIHJ1biB0aGUgdGVzdC4KK2xvYWQoIi4vcmVzb3Vy
Y2VzL2hhdmUtYS1iYWQtdGltZS1hcmd1bWVudHMtdGVzdC5qcyIpOwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2hhdmUtYS1iYWQtdGltZS13aXRoLWRp
cmVjdC1hcmd1bWVudHMtYmVmb3JlLXdhcm1wdXAtaW4tYmFzZWxpbmUuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSlNUZXN0cy9zdHJlc3MvaGF2ZS1hLWJhZC10aW1lLXdpdGgtZGlyZWN0LWFyZ3VtZW50cy1i
ZWZvcmUtd2FybXB1cC1pbi1iYXNlbGluZS5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0
cmVzcy9oYXZlLWEtYmFkLXRpbWUtd2l0aC1kaXJlY3QtYXJndW1lbnRzLWJlZm9yZS13YXJtcHVw
LWluLWJhc2VsaW5lLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKy8vQCBydW5G
VExOb0NKSVQKKworLy8gSWYgYWxsIGdvZXMgd2VsbCwgdGhpcyB0ZXN0IG1vZHVsZSB3aWxsIHRl
cm1pbmF0ZSBzaWxlbnRseS4gSWYgbm90LCBpdCB3aWxsIGNyYXNoLgorLy8gU2VlIGJpbmFyeS1v
cC10ZXN0LmpzIGZvciBkZWJ1Z2dpbmcgb3B0aW9ucyBpZiBuZWVkZWQuCisKKy8vIFRlc3QgY29u
ZmlndXJhdGlvbi4KK29wdGltaXphdGlvbkxldmVsID0gImJhc2VsaW5lIjsKK3doZW5Ub0hhdmVB
QmFkVGltZSA9ICJiZWZvcmUgd2FybXVwIjsKK2FyZ3VtZW50c1R5cGVUb1Rlc3QgPSAiRGlyZWN0
QXJndW1lbnRzIjsKKworLy8gR28gcnVuIHRoZSB0ZXN0LgorbG9hZCgiLi9yZXNvdXJjZXMvaGF2
ZS1hLWJhZC10aW1lLWFyZ3VtZW50cy10ZXN0LmpzIik7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpJbmRleDogSlNUZXN0cy9zdHJlc3MvaGF2ZS1hLWJhZC10aW1lLXdpdGgtZGlyZWN0LWFy
Z3VtZW50cy1iZWZvcmUtd2FybXB1cC1pbi1kZmcuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9z
dHJlc3MvaGF2ZS1hLWJhZC10aW1lLXdpdGgtZGlyZWN0LWFyZ3VtZW50cy1iZWZvcmUtd2FybXB1
cC1pbi1kZmcuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvaGF2ZS1hLWJhZC10
aW1lLXdpdGgtZGlyZWN0LWFyZ3VtZW50cy1iZWZvcmUtd2FybXB1cC1pbi1kZmcuanMJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorLy9AIHJ1bkZUTE5vQ0pJVAorCisvLyBJZiBhbGwg
Z29lcyB3ZWxsLCB0aGlzIHRlc3QgbW9kdWxlIHdpbGwgdGVybWluYXRlIHNpbGVudGx5LiBJZiBu
b3QsIGl0IHdpbGwgY3Jhc2guCisvLyBTZWUgYmluYXJ5LW9wLXRlc3QuanMgZm9yIGRlYnVnZ2lu
ZyBvcHRpb25zIGlmIG5lZWRlZC4KKworLy8gVGVzdCBjb25maWd1cmF0aW9uLgorb3B0aW1pemF0
aW9uTGV2ZWwgPSAiZGZnIjsKK3doZW5Ub0hhdmVBQmFkVGltZSA9ICJiZWZvcmUgd2FybXVwIjsK
K2FyZ3VtZW50c1R5cGVUb1Rlc3QgPSAiRGlyZWN0QXJndW1lbnRzIjsKKworLy8gR28gcnVuIHRo
ZSB0ZXN0LgorbG9hZCgiLi9yZXNvdXJjZXMvaGF2ZS1hLWJhZC10aW1lLWFyZ3VtZW50cy10ZXN0
LmpzIik7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogSlNUZXN0cy9zdHJlc3Mv
aGF2ZS1hLWJhZC10aW1lLXdpdGgtZGlyZWN0LWFyZ3VtZW50cy1iZWZvcmUtd2FybXB1cC1pbi1m
dGwuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvaGF2ZS1hLWJhZC10aW1lLXdpdGgt
ZGlyZWN0LWFyZ3VtZW50cy1iZWZvcmUtd2FybXB1cC1pbi1mdGwuanMJKG5vbmV4aXN0ZW50KQor
KysgSlNUZXN0cy9zdHJlc3MvaGF2ZS1hLWJhZC10aW1lLXdpdGgtZGlyZWN0LWFyZ3VtZW50cy1i
ZWZvcmUtd2FybXB1cC1pbi1mdGwuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAor
Ly9AIHJ1bkZUTE5vQ0pJVAorCisvLyBJZiBhbGwgZ29lcyB3ZWxsLCB0aGlzIHRlc3QgbW9kdWxl
IHdpbGwgdGVybWluYXRlIHNpbGVudGx5LiBJZiBub3QsIGl0IHdpbGwgY3Jhc2guCisvLyBTZWUg
YmluYXJ5LW9wLXRlc3QuanMgZm9yIGRlYnVnZ2luZyBvcHRpb25zIGlmIG5lZWRlZC4KKworLy8g
VGVzdCBjb25maWd1cmF0aW9uLgorb3B0aW1pemF0aW9uTGV2ZWwgPSAiZnRsIjsKK3doZW5Ub0hh
dmVBQmFkVGltZSA9ICJiZWZvcmUgd2FybXVwIjsKK2FyZ3VtZW50c1R5cGVUb1Rlc3QgPSAiRGly
ZWN0QXJndW1lbnRzIjsKKworLy8gR28gcnVuIHRoZSB0ZXN0LgorbG9hZCgiLi9yZXNvdXJjZXMv
aGF2ZS1hLWJhZC10aW1lLWFyZ3VtZW50cy10ZXN0LmpzIik7ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpJbmRleDogSlNUZXN0cy9zdHJlc3MvaGF2ZS1hLWJhZC10aW1lLXdpdGgtZGlyZWN0
LWFyZ3VtZW50cy1iZWZvcmUtd2FybXB1cC1pbi1sbGludC5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rl
c3RzL3N0cmVzcy9oYXZlLWEtYmFkLXRpbWUtd2l0aC1kaXJlY3QtYXJndW1lbnRzLWJlZm9yZS13
YXJtcHVwLWluLWxsaW50LmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL2hhdmUt
YS1iYWQtdGltZS13aXRoLWRpcmVjdC1hcmd1bWVudHMtYmVmb3JlLXdhcm1wdXAtaW4tbGxpbnQu
anMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorLy9AIHJ1bkZUTE5vQ0pJVAorCisv
LyBJZiBhbGwgZ29lcyB3ZWxsLCB0aGlzIHRlc3QgbW9kdWxlIHdpbGwgdGVybWluYXRlIHNpbGVu
dGx5LiBJZiBub3QsIGl0IHdpbGwgY3Jhc2guCisvLyBTZWUgYmluYXJ5LW9wLXRlc3QuanMgZm9y
IGRlYnVnZ2luZyBvcHRpb25zIGlmIG5lZWRlZC4KKworLy8gVGVzdCBjb25maWd1cmF0aW9uLgor
b3B0aW1pemF0aW9uTGV2ZWwgPSAibGxpbnQiOword2hlblRvSGF2ZUFCYWRUaW1lID0gImJlZm9y
ZSB3YXJtdXAiOworYXJndW1lbnRzVHlwZVRvVGVzdCA9ICJEaXJlY3RBcmd1bWVudHMiOworCisv
LyBHbyBydW4gdGhlIHRlc3QuCitsb2FkKCIuL3Jlc291cmNlcy9oYXZlLWEtYmFkLXRpbWUtYXJn
dW1lbnRzLXRlc3QuanMiKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBKU1Rl
c3RzL3N0cmVzcy9oYXZlLWEtYmFkLXRpbWUtd2l0aC1zY29wZWQtYXJndW1lbnRzLWFmdGVyLXdh
cm1wdXAtaW4tYmFzZWxpbmUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvaGF2ZS1h
LWJhZC10aW1lLXdpdGgtc2NvcGVkLWFyZ3VtZW50cy1hZnRlci13YXJtcHVwLWluLWJhc2VsaW5l
LmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL2hhdmUtYS1iYWQtdGltZS13aXRo
LXNjb3BlZC1hcmd1bWVudHMtYWZ0ZXItd2FybXB1cC1pbi1iYXNlbGluZS5qcwkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEyIEBACisvL0AgcnVuRlRMTm9DSklUCisKKy8vIElmIGFsbCBnb2Vz
IHdlbGwsIHRoaXMgdGVzdCBtb2R1bGUgd2lsbCB0ZXJtaW5hdGUgc2lsZW50bHkuIElmIG5vdCwg
aXQgd2lsbCBjcmFzaC4KKy8vIFNlZSBiaW5hcnktb3AtdGVzdC5qcyBmb3IgZGVidWdnaW5nIG9w
dGlvbnMgaWYgbmVlZGVkLgorCisvLyBUZXN0IGNvbmZpZ3VyYXRpb24uCitvcHRpbWl6YXRpb25M
ZXZlbCA9ICJiYXNlbGluZSI7Cit3aGVuVG9IYXZlQUJhZFRpbWUgPSAiYWZ0ZXIgd2FybXVwIjsK
K2FyZ3VtZW50c1R5cGVUb1Rlc3QgPSAiU2NvcGVkQXJndW1lbnRzIjsKKworLy8gR28gcnVuIHRo
ZSB0ZXN0LgorbG9hZCgiLi9yZXNvdXJjZXMvaGF2ZS1hLWJhZC10aW1lLWFyZ3VtZW50cy10ZXN0
LmpzIik7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogSlNUZXN0cy9zdHJlc3Mv
aGF2ZS1hLWJhZC10aW1lLXdpdGgtc2NvcGVkLWFyZ3VtZW50cy1hZnRlci13YXJtcHVwLWluLWRm
Zy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9oYXZlLWEtYmFkLXRpbWUtd2l0aC1z
Y29wZWQtYXJndW1lbnRzLWFmdGVyLXdhcm1wdXAtaW4tZGZnLmpzCShub25leGlzdGVudCkKKysr
IEpTVGVzdHMvc3RyZXNzL2hhdmUtYS1iYWQtdGltZS13aXRoLXNjb3BlZC1hcmd1bWVudHMtYWZ0
ZXItd2FybXB1cC1pbi1kZmcuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorLy9A
IHJ1bkZUTE5vQ0pJVAorCisvLyBJZiBhbGwgZ29lcyB3ZWxsLCB0aGlzIHRlc3QgbW9kdWxlIHdp
bGwgdGVybWluYXRlIHNpbGVudGx5LiBJZiBub3QsIGl0IHdpbGwgY3Jhc2guCisvLyBTZWUgYmlu
YXJ5LW9wLXRlc3QuanMgZm9yIGRlYnVnZ2luZyBvcHRpb25zIGlmIG5lZWRlZC4KKworLy8gVGVz
dCBjb25maWd1cmF0aW9uLgorb3B0aW1pemF0aW9uTGV2ZWwgPSAiZGZnIjsKK3doZW5Ub0hhdmVB
QmFkVGltZSA9ICJhZnRlciB3YXJtdXAiOworYXJndW1lbnRzVHlwZVRvVGVzdCA9ICJTY29wZWRB
cmd1bWVudHMiOworCisvLyBHbyBydW4gdGhlIHRlc3QuCitsb2FkKCIuL3Jlc291cmNlcy9oYXZl
LWEtYmFkLXRpbWUtYXJndW1lbnRzLXRlc3QuanMiKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9oYXZlLWEtYmFkLXRpbWUtd2l0aC1zY29wZWQtYXJn
dW1lbnRzLWFmdGVyLXdhcm1wdXAtaW4tZnRsLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3Ry
ZXNzL2hhdmUtYS1iYWQtdGltZS13aXRoLXNjb3BlZC1hcmd1bWVudHMtYWZ0ZXItd2FybXB1cC1p
bi1mdGwuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvaGF2ZS1hLWJhZC10aW1l
LXdpdGgtc2NvcGVkLWFyZ3VtZW50cy1hZnRlci13YXJtcHVwLWluLWZ0bC5qcwkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEyIEBACisvL0AgcnVuRlRMTm9DSklUCisKKy8vIElmIGFsbCBnb2Vz
IHdlbGwsIHRoaXMgdGVzdCBtb2R1bGUgd2lsbCB0ZXJtaW5hdGUgc2lsZW50bHkuIElmIG5vdCwg
aXQgd2lsbCBjcmFzaC4KKy8vIFNlZSBiaW5hcnktb3AtdGVzdC5qcyBmb3IgZGVidWdnaW5nIG9w
dGlvbnMgaWYgbmVlZGVkLgorCisvLyBUZXN0IGNvbmZpZ3VyYXRpb24uCitvcHRpbWl6YXRpb25M
ZXZlbCA9ICJmdGwiOword2hlblRvSGF2ZUFCYWRUaW1lID0gImFmdGVyIHdhcm11cCI7Cithcmd1
bWVudHNUeXBlVG9UZXN0ID0gIlNjb3BlZEFyZ3VtZW50cyI7CisKKy8vIEdvIHJ1biB0aGUgdGVz
dC4KK2xvYWQoIi4vcmVzb3VyY2VzL2hhdmUtYS1iYWQtdGltZS1hcmd1bWVudHMtdGVzdC5qcyIp
OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2hhdmUt
YS1iYWQtdGltZS13aXRoLXNjb3BlZC1hcmd1bWVudHMtYWZ0ZXItd2FybXB1cC1pbi1sbGludC5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9oYXZlLWEtYmFkLXRpbWUtd2l0aC1zY29w
ZWQtYXJndW1lbnRzLWFmdGVyLXdhcm1wdXAtaW4tbGxpbnQuanMJKG5vbmV4aXN0ZW50KQorKysg
SlNUZXN0cy9zdHJlc3MvaGF2ZS1hLWJhZC10aW1lLXdpdGgtc2NvcGVkLWFyZ3VtZW50cy1hZnRl
ci13YXJtcHVwLWluLWxsaW50LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKy8v
QCBydW5GVExOb0NKSVQKKworLy8gSWYgYWxsIGdvZXMgd2VsbCwgdGhpcyB0ZXN0IG1vZHVsZSB3
aWxsIHRlcm1pbmF0ZSBzaWxlbnRseS4gSWYgbm90LCBpdCB3aWxsIGNyYXNoLgorLy8gU2VlIGJp
bmFyeS1vcC10ZXN0LmpzIGZvciBkZWJ1Z2dpbmcgb3B0aW9ucyBpZiBuZWVkZWQuCisKKy8vIFRl
c3QgY29uZmlndXJhdGlvbi4KK29wdGltaXphdGlvbkxldmVsID0gImxsaW50IjsKK3doZW5Ub0hh
dmVBQmFkVGltZSA9ICJhZnRlciB3YXJtdXAiOworYXJndW1lbnRzVHlwZVRvVGVzdCA9ICJTY29w
ZWRBcmd1bWVudHMiOworCisvLyBHbyBydW4gdGhlIHRlc3QuCitsb2FkKCIuL3Jlc291cmNlcy9o
YXZlLWEtYmFkLXRpbWUtYXJndW1lbnRzLXRlc3QuanMiKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9oYXZlLWEtYmFkLXRpbWUtd2l0aC1zY29wZWQt
YXJndW1lbnRzLWJlZm9yZS13YXJtcHVwLWluLWJhc2VsaW5lLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpT
VGVzdHMvc3RyZXNzL2hhdmUtYS1iYWQtdGltZS13aXRoLXNjb3BlZC1hcmd1bWVudHMtYmVmb3Jl
LXdhcm1wdXAtaW4tYmFzZWxpbmUuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3Mv
aGF2ZS1hLWJhZC10aW1lLXdpdGgtc2NvcGVkLWFyZ3VtZW50cy1iZWZvcmUtd2FybXB1cC1pbi1i
YXNlbGluZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACisvL0AgcnVuRlRMTm9D
SklUCisKKy8vIElmIGFsbCBnb2VzIHdlbGwsIHRoaXMgdGVzdCBtb2R1bGUgd2lsbCB0ZXJtaW5h
dGUgc2lsZW50bHkuIElmIG5vdCwgaXQgd2lsbCBjcmFzaC4KKy8vIFNlZSBiaW5hcnktb3AtdGVz
dC5qcyBmb3IgZGVidWdnaW5nIG9wdGlvbnMgaWYgbmVlZGVkLgorCisvLyBUZXN0IGNvbmZpZ3Vy
YXRpb24uCitvcHRpbWl6YXRpb25MZXZlbCA9ICJiYXNlbGluZSI7Cit3aGVuVG9IYXZlQUJhZFRp
bWUgPSAiYmVmb3JlIHdhcm11cCI7Cithcmd1bWVudHNUeXBlVG9UZXN0ID0gIlNjb3BlZEFyZ3Vt
ZW50cyI7CisKKy8vIEdvIHJ1biB0aGUgdGVzdC4KK2xvYWQoIi4vcmVzb3VyY2VzL2hhdmUtYS1i
YWQtdGltZS1hcmd1bWVudHMtdGVzdC5qcyIpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
SW5kZXg6IEpTVGVzdHMvc3RyZXNzL2hhdmUtYS1iYWQtdGltZS13aXRoLXNjb3BlZC1hcmd1bWVu
dHMtYmVmb3JlLXdhcm1wdXAtaW4tZGZnLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNz
L2hhdmUtYS1iYWQtdGltZS13aXRoLXNjb3BlZC1hcmd1bWVudHMtYmVmb3JlLXdhcm1wdXAtaW4t
ZGZnLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL2hhdmUtYS1iYWQtdGltZS13
aXRoLXNjb3BlZC1hcmd1bWVudHMtYmVmb3JlLXdhcm1wdXAtaW4tZGZnLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTIgQEAKKy8vQCBydW5GVExOb0NKSVQKKworLy8gSWYgYWxsIGdvZXMg
d2VsbCwgdGhpcyB0ZXN0IG1vZHVsZSB3aWxsIHRlcm1pbmF0ZSBzaWxlbnRseS4gSWYgbm90LCBp
dCB3aWxsIGNyYXNoLgorLy8gU2VlIGJpbmFyeS1vcC10ZXN0LmpzIGZvciBkZWJ1Z2dpbmcgb3B0
aW9ucyBpZiBuZWVkZWQuCisKKy8vIFRlc3QgY29uZmlndXJhdGlvbi4KK29wdGltaXphdGlvbkxl
dmVsID0gImRmZyI7Cit3aGVuVG9IYXZlQUJhZFRpbWUgPSAiYmVmb3JlIHdhcm11cCI7Cithcmd1
bWVudHNUeXBlVG9UZXN0ID0gIlNjb3BlZEFyZ3VtZW50cyI7CisKKy8vIEdvIHJ1biB0aGUgdGVz
dC4KK2xvYWQoIi4vcmVzb3VyY2VzL2hhdmUtYS1iYWQtdGltZS1hcmd1bWVudHMtdGVzdC5qcyIp
OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2hhdmUt
YS1iYWQtdGltZS13aXRoLXNjb3BlZC1hcmd1bWVudHMtYmVmb3JlLXdhcm1wdXAtaW4tZnRsLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2hhdmUtYS1iYWQtdGltZS13aXRoLXNjb3Bl
ZC1hcmd1bWVudHMtYmVmb3JlLXdhcm1wdXAtaW4tZnRsLmpzCShub25leGlzdGVudCkKKysrIEpT
VGVzdHMvc3RyZXNzL2hhdmUtYS1iYWQtdGltZS13aXRoLXNjb3BlZC1hcmd1bWVudHMtYmVmb3Jl
LXdhcm1wdXAtaW4tZnRsLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKy8vQCBy
dW5GVExOb0NKSVQKKworLy8gSWYgYWxsIGdvZXMgd2VsbCwgdGhpcyB0ZXN0IG1vZHVsZSB3aWxs
IHRlcm1pbmF0ZSBzaWxlbnRseS4gSWYgbm90LCBpdCB3aWxsIGNyYXNoLgorLy8gU2VlIGJpbmFy
eS1vcC10ZXN0LmpzIGZvciBkZWJ1Z2dpbmcgb3B0aW9ucyBpZiBuZWVkZWQuCisKKy8vIFRlc3Qg
Y29uZmlndXJhdGlvbi4KK29wdGltaXphdGlvbkxldmVsID0gImZ0bCI7Cit3aGVuVG9IYXZlQUJh
ZFRpbWUgPSAiYmVmb3JlIHdhcm11cCI7Cithcmd1bWVudHNUeXBlVG9UZXN0ID0gIlNjb3BlZEFy
Z3VtZW50cyI7CisKKy8vIEdvIHJ1biB0aGUgdGVzdC4KK2xvYWQoIi4vcmVzb3VyY2VzL2hhdmUt
YS1iYWQtdGltZS1hcmd1bWVudHMtdGVzdC5qcyIpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL2hhdmUtYS1iYWQtdGltZS13aXRoLXNjb3BlZC1hcmd1
bWVudHMtYmVmb3JlLXdhcm1wdXAtaW4tbGxpbnQuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9z
dHJlc3MvaGF2ZS1hLWJhZC10aW1lLXdpdGgtc2NvcGVkLWFyZ3VtZW50cy1iZWZvcmUtd2FybXB1
cC1pbi1sbGludC5qcwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9oYXZlLWEtYmFk
LXRpbWUtd2l0aC1zY29wZWQtYXJndW1lbnRzLWJlZm9yZS13YXJtcHVwLWluLWxsaW50LmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKKy8vQCBydW5GVExOb0NKSVQKKworLy8gSWYg
YWxsIGdvZXMgd2VsbCwgdGhpcyB0ZXN0IG1vZHVsZSB3aWxsIHRlcm1pbmF0ZSBzaWxlbnRseS4g
SWYgbm90LCBpdCB3aWxsIGNyYXNoLgorLy8gU2VlIGJpbmFyeS1vcC10ZXN0LmpzIGZvciBkZWJ1
Z2dpbmcgb3B0aW9ucyBpZiBuZWVkZWQuCisKKy8vIFRlc3QgY29uZmlndXJhdGlvbi4KK29wdGlt
aXphdGlvbkxldmVsID0gImxsaW50IjsKK3doZW5Ub0hhdmVBQmFkVGltZSA9ICJiZWZvcmUgd2Fy
bXVwIjsKK2FyZ3VtZW50c1R5cGVUb1Rlc3QgPSAiU2NvcGVkQXJndW1lbnRzIjsKKworLy8gR28g
cnVuIHRoZSB0ZXN0LgorbG9hZCgiLi9yZXNvdXJjZXMvaGF2ZS1hLWJhZC10aW1lLWFyZ3VtZW50
cy10ZXN0LmpzIik7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogSlNUZXN0cy9z
dHJlc3MvcmVzb3VyY2VzL2hhdmUtYS1iYWQtdGltZS1hcmd1bWVudHMtdGVzdC5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9yZXNvdXJjZXMvaGF2ZS1hLWJhZC10aW1lLWFyZ3VtZW50
cy10ZXN0LmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL3Jlc291cmNlcy9oYXZl
LWEtYmFkLXRpbWUtYXJndW1lbnRzLXRlc3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1
MSBAQAorLy8gVGVzdCBjb25maWd1cmF0aW9uIG9wdGlvbnM6CisvLworLy8gb3B0aW1pemF0aW9u
TGV2ZWwgY2FuIGJlICJsbGludCIsIG9yICJiYXNlbGluZSIgb3IgImRmZyIgb3IgImZ0bCIuCisv
LyB3aGVuVG9IYXZlQUJhZFRpbWUgY2FuIGJlICJhZnRlciB3YXJtdXAiIG9yICJiZWZvcmUgd2Fy
bXVwIi4KKy8vIGFyZ3VtZW50c1R5cGVUb1Rlc3QgY2FuIGJlICJEaXJlY3RBcmd1bWVudHMiIG9y
ICJTY29wZWRBcmd1bWVudHMiLgorCitmdW5jdGlvbiBsZXRzSGF2ZUFCYWRUaW1lKCkgeworICAg
IGgwID0ge307CisgICAgT2JqZWN0LmNyZWF0ZShoMCk7CisgICAgT2JqZWN0LmRlZmluZVByb3Bl
cnR5KGgwLCAiMCIsIHt9KTsKK30KKworZnVuY3Rpb24gdGVzdERpcmVjdEFyZ3VtZW50cygpIHsK
KyAgICB2YXIgYTAgPSBhcmd1bWVudHMuY2FsbGVlLmFyZ3VtZW50czsKKyAgICBPYmplY3QucHJl
dmVudEV4dGVuc2lvbnMoYTApOworfQorCitmdW5jdGlvbiB0ZXN0U2NvcGVBcmd1bWVudHMoeCkg
eworICAgIHZhciBhMCA9IGFyZ3VtZW50cy5jYWxsZWUuYXJndW1lbnRzOworICAgIE9iamVjdC5w
cmV2ZW50RXh0ZW5zaW9ucyhhMCk7CisgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICBy
ZXR1cm4geDsKKyAgICB9Cit9CisKK2lmIChhcmd1bWVudHNUeXBlVG9UZXN0ID09PSAiRGlyZWN0
QXJndW1lbnRzIikKKyAgICB0ZXN0ID0gdGVzdERpcmVjdEFyZ3VtZW50czsKK2Vsc2UKKyAgICB0
ZXN0ID0gdGVzdFNjb3BlQXJndW1lbnRzOworCitmdW5jdGlvbiBkb1dhcm11cChvcHRpbWl6YXRp
b25MZXZlbCkgeworICAgIGxldCB3YXJtdXBDb3VudCA9IHsKKyAgICAgICAgbGxpbnQ6IDEsCisg
ICAgICAgIGJhc2VsaW5lOiA1MCwKKyAgICAgICAgZGZnOiAxMDAwLAorICAgICAgICBmdGw6IDEw
MDAwCisgICAgfTsKKyAgICB2YXIgY291bnQgPSB3YXJtdXBDb3VudFtvcHRpbWl6YXRpb25MZXZl
bF07CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgIHRlc3Qo
MSwgMiwgMyk7CisKKyAgICBpZiAod2hlblRvSGF2ZUFCYWRUaW1lID09PSAiYWZ0ZXIgd2FybXVw
IikKKyAgICAgICAgbGV0c0hhdmVBQmFkVGltZSgpOworfQorCitpZiAod2hlblRvSGF2ZUFCYWRU
aW1lID09PSAiYmVmb3JlIHdhcm11cCIpCisgICAgbGV0c0hhdmVBQmFkVGltZSgpOworCitkb1dh
cm11cChvcHRpbWl6YXRpb25MZXZlbCk7Cit0ZXN0KDEsIDIsIDMpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDgxMjEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTYtMTAtMzAgIE1h
cmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIENsb25lZEFyZ3VtZW50cyBu
ZWVkIHRvIGFsc28gc3VwcG9ydCBoYXZlQUJhZFRpbWUgbW9kZS4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDIwMAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMjcyMTEzMzY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgT25jZSB0aGUgc3lzdGVtIGVudGVycyBoYXZlQUJhZFRpbWUgbW9kZSwgYWxsIG9i
amVjdHMgYXJlIGNvbnZlcnRlZCB0byBzbG93IHB1dAorICAgICAgICBzdG9yYWdlLiAgVGhlcmVh
ZnRlciwgbmV3IG9iamVjdHMgZ2V0IGNyZWF0ZWQgd2l0aCBhIGJsYW5rIGluZGV4aW5nIHR5cGUu
ICBXaGVuCisgICAgICAgIGEgbmV3IGluZGV4ZWQgcHJvcGVydHkgaXMgcHV0IGludG8gdGhlIG9i
amVjdCwgaXRzIGluZGV4aW5nIHR5cGUgd2lsbCBiZQorICAgICAgICBjb252ZXJ0ZWQgdG8gdGhl
IHNsb3cgcHV0IGFycmF5IGluZGV4aW5nIHR5cGUuCisKKyAgICAgICAgSG93ZXZlciwgQ2xvbmVk
QXJndW1lbnRzIGlzIGFuIG9iamVjdCB3aGljaCBpcyBjcmVhdGVkIGFzIGEgY29udGlndW91cyB0
eXBlCisgICAgICAgICh3aXRoIGl0cyBvd24gYnV0dGVyZmx5IGFsbG9jYXRlZCBhdCBpbnN0YW50
aWF0aW9uIHRpbWUpLiAgQXJndW1lbnQgdmFsdWVzIGFyZQorICAgICAgICBpbnNlcnRlZCBpbnRv
IHRoZSBDbG9uZWRBcmd1bWVudHMgdXNpbmcgSlNPYmplY3Q6OmluaXRpYWxpemVJbmRleCgpIHdo
aWNoIGluc2VydHMKKyAgICAgICAgdGhlIHZhbHVlcyBkaXJlY3RseSBpbnRvIHRoZSBidXR0ZXJm
bHkgd2l0aG91dCBnb2luZyB0aHJ1IHRoZSBKU09iamVjdCBwdXQKKyAgICAgICAgbWFjaGluZXJ5
LiAgQXMgYSByZXN1bHQsIHRoZSBDbG9uZWRBcmd1bWVudHMgb2JqZWN0IHdpbGwgbm90IGdldCBj
b252ZXJ0ZWQgdG8KKyAgICAgICAgYSBzbG93IHB1dCBhcnJheSBpbmRleGluZyB0eXBlLgorCisg
ICAgICAgIFRoZSBmaXggaXMgc2ltcGx5IHRvIGNoZWNrIGlmIHRoZSBvYmplY3QgbmVlZHNTbG93
UHV0SW5kZXhpbmcoKSwgYW5kIGludm9rZQorICAgICAgICBzd2l0Y2hUb1Nsb3dQdXRBcnJheVN0
b3JhZ2UoKSBvbiBpdCBpZiBuZWVkZWQgcmlnaHQgaXQgaGFzIGJlZW4gY3JlYXRlZC4KKworICAg
ICAgICBBbHNvIGFkZGVkIHNvbWUgYXNzZXJ0aW9ucyBpbiBDbG9uZWRBcmd1bWVudHMnIGZhY3Rv
cnkgbWV0aG9kcyB0byBlbnN1cmUgdGhhdAorICAgICAgICB0aGUgY3JlYXRlZCBvYmplY3QgaGFz
IHRoZSBzbG93IHB1dCBpbmRleGluZyB0eXBlIHdoZW4gaXQgbmVlZHNTbG93UHV0SW5kZXhpbmco
KS4KKworICAgICAgICBGaXhlZCBvbmUgYXNzZXJ0aW9uIGluIENsb25lZEFyZ3VtZW50czo6Y3Jl
YXRlV2l0aElubGluZUZyYW1lKCkgdGhhdCB3cm9uZ2x5CisgICAgICAgIGFzc3VtZXMgdGhhdCB0
aGUgQ2xvbmVkQXJndW1lbnRzJyBzdHJ1Y3R1cmUgaGFzIG5vdCB0cmFuc2l0aW9uZWQgZnJvbSBp
dHMgaW5pdGlhbAorICAgICAgICBvbmUuICBXaGVuIHdlIHN3aXRjaCBpdCB0byBhIHNsb3cgcHV0
IGluZGV4aW5nIHR5cGUsIGl0IHdpbGwgaW5jdXIgYSBzdHJ1Y3R1cmUKKyAgICAgICAgdHJhbnNp
dGlvbi4KKworICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcDoKKyAgICAgICAg
KEpTQzo6Q2xvbmVkQXJndW1lbnRzOjpjcmVhdGVFbXB0eSk6CisgICAgICAgIChKU0M6OkNsb25l
ZEFyZ3VtZW50czo6Y3JlYXRlV2l0aElubGluZUZyYW1lKToKKyAgICAgICAgKEpTQzo6Q2xvbmVk
QXJndW1lbnRzOjpjcmVhdGVXaXRoTWFjaGluZUZyYW1lKToKKyAgICAgICAgKEpTQzo6Q2xvbmVk
QXJndW1lbnRzOjpjcmVhdGVCeUNvcHlpbmdGcm9tKToKKyAgICAgICAgKiB0b29scy9KU0RvbGxh
clZNUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6ZnVuY3Rpb25Db2RlQmxvY2tGb3JGcmFt
ZSk6CisgICAgICAgIChKU0M6OmNvZGVCbG9ja0Zyb21BcmcpOgorICAgICAgICAoSlNDOjpmdW5j
dGlvbkNvZGVCbG9ja0Zvcik6CisgICAgICAgIChKU0M6OkpTRG9sbGFyVk1Qcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKToKKwogMjAxNi0xMC0yOSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZSBzaG91bGQgaGF2ZSBhIHdheSBvZiBwcm9maWxpbmcgd2hlbiBh
IGdldF9ieV9pZCBpcyBwdXJlIGFuZCB0byBlbWl0IGEgUHVyZUdldEJ5SWQgaW4gdGhlIERGRy9G
VEwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJn
dW1lbnRzLmNwcAkocmV2aXNpb24gMjA4MTIxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsMTQgKzY1LDIx
IEBAIENsb25lZEFyZ3VtZW50cyogQ2xvbmVkQXJndW1lbnRzOjpjcmVhdGUKIAogICAgIHJlc3Vs
dC0+bV9jYWxsZWUuc2V0KHZtLCByZXN1bHQsIGNhbGxlZSk7CiAgICAgcmVzdWx0LT5wdXREaXJl
Y3Qodm0sIGNsb25lZEFyZ3VtZW50c0xlbmd0aFByb3BlcnR5T2Zmc2V0LCBqc051bWJlcihsZW5n
dGgpKTsKKworICAgIGlmIChzdHJ1Y3R1cmUtPm5lZWRzU2xvd1B1dEluZGV4aW5nKCkpCisgICAg
ICAgIHJlc3VsdC0+c3dpdGNoVG9TbG93UHV0QXJyYXlTdG9yYWdlKHZtKTsKKwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKIENsb25lZEFyZ3VtZW50cyogQ2xvbmVkQXJndW1lbnRzOjpjcmVhdGVF
bXB0eShFeGVjU3RhdGUqIGV4ZWMsIEpTRnVuY3Rpb24qIGNhbGxlZSwgdW5zaWduZWQgbGVuZ3Ro
KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgLy8gTkIuIFNvbWUgY2xpZW50cyBt
aWdodCBleHBlY3QgdGhhdCB0aGUgZ2xvYmFsIG9iamVjdCBvZiBvZiB0aGlzIG9iamVjdCBpcyB0
aGUgZ2xvYmFsIG9iamVjdAogICAgIC8vIG9mIHRoZSBjYWxsZWUuIFdlIGRvbid0IGRvIHRoaXMg
Zm9yIG5vdywgYnV0IG1heWJlIHdlIHNob3VsZC4KLSAgICByZXR1cm4gY3JlYXRlRW1wdHkoZXhl
Yy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jbG9uZWRBcmd1bWVudHNTdHJ1
Y3R1cmUoKSwgY2FsbGVlLCBsZW5ndGgpOworICAgIENsb25lZEFyZ3VtZW50cyogcmVzdWx0ID0g
Y3JlYXRlRW1wdHkodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y2xvbmVkQXJndW1l
bnRzU3RydWN0dXJlKCksIGNhbGxlZSwgbGVuZ3RoKTsKKyAgICBBU1NFUlQoIXJlc3VsdC0+c3Ry
dWN0dXJlKHZtKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSB8fCBzaG91bGRVc2VTbG93UHV0KHJl
c3VsdC0+c3RydWN0dXJlKHZtKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICByZXR1cm4gcmVzdWx0
OwogfQogCiBDbG9uZWRBcmd1bWVudHMqIENsb25lZEFyZ3VtZW50czo6Y3JlYXRlV2l0aElubGlu
ZUZyYW1lKEV4ZWNTdGF0ZSogbXlGcmFtZSwgRXhlY1N0YXRlKiB0YXJnZXRGcmFtZSwgSW5saW5l
Q2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUsIEFyZ3VtZW50c01vZGUgbW9kZSkKQEAgLTExNiwx
MyArMTIzLDE2IEBAIENsb25lZEFyZ3VtZW50cyogQ2xvbmVkQXJndW1lbnRzOjpjcmVhdGUKICAg
ICAgICAgYnJlYWs7CiAgICAgfSB9CiAKLSAgICBBU1NFUlQobXlGcmFtZS0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT5jbG9uZWRBcmd1bWVudHNTdHJ1Y3R1cmUoKSA9PSByZXN1bHQtPnN0cnVjdHVy
ZSgpKTsKKyAgICBBU1NFUlQocmVzdWx0LT5zdHJ1Y3R1cmUodm0pLT50cmFuc2l0aXZlbHlUcmFu
c2l0aW9uZWRGcm9tKG15RnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y2xvbmVkQXJndW1l
bnRzU3RydWN0dXJlKCkpKTsKKyAgICBBU1NFUlQoIXJlc3VsdC0+c3RydWN0dXJlKHZtKS0+bmVl
ZHNTbG93UHV0SW5kZXhpbmcoKSB8fCBzaG91bGRVc2VTbG93UHV0KHJlc3VsdC0+c3RydWN0dXJl
KHZtKS0+aW5kZXhpbmdUeXBlKCkpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCiBDbG9uZWRB
cmd1bWVudHMqIENsb25lZEFyZ3VtZW50czo6Y3JlYXRlV2l0aE1hY2hpbmVGcmFtZShFeGVjU3Rh
dGUqIG15RnJhbWUsIEV4ZWNTdGF0ZSogdGFyZ2V0RnJhbWUsIEFyZ3VtZW50c01vZGUgbW9kZSkK
IHsKLSAgICByZXR1cm4gY3JlYXRlV2l0aElubGluZUZyYW1lKG15RnJhbWUsIHRhcmdldEZyYW1l
LCBudWxscHRyLCBtb2RlKTsKKyAgICBDbG9uZWRBcmd1bWVudHMqIHJlc3VsdCA9IGNyZWF0ZVdp
dGhJbmxpbmVGcmFtZShteUZyYW1lLCB0YXJnZXRGcmFtZSwgbnVsbHB0ciwgbW9kZSk7CisgICAg
QVNTRVJUKCFyZXN1bHQtPnN0cnVjdHVyZSgpLT5uZWVkc1Nsb3dQdXRJbmRleGluZygpIHx8IHNo
b3VsZFVzZVNsb3dQdXQocmVzdWx0LT5zdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAg
ICByZXR1cm4gcmVzdWx0OwogfQogCiBDbG9uZWRBcmd1bWVudHMqIENsb25lZEFyZ3VtZW50czo6
Y3JlYXRlQnlDb3B5aW5nRnJvbSgKQEAgLTEzNSw2ICsxNDUsNyBAQCBDbG9uZWRBcmd1bWVudHMq
IENsb25lZEFyZ3VtZW50czo6Y3JlYXRlCiAgICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBp
LS07KQogICAgICAgICByZXN1bHQtPmluaXRpYWxpemVJbmRleCh2bSwgaSwgYXJndW1lbnRTdGFy
dFtpXS5qc1ZhbHVlKCkpOwogCisgICAgQVNTRVJUKCFyZXN1bHQtPnN0cnVjdHVyZSh2bSktPm5l
ZWRzU2xvd1B1dEluZGV4aW5nKCkgfHwgc2hvdWxkVXNlU2xvd1B1dChyZXN1bHQtPnN0cnVjdHVy
ZSh2bSktPmluZGV4aW5nVHlwZSgpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAo=
</data>
<flag name="review"
          id="316548"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293800</attachid>
            <date>2016-11-03 14:00:03 -0700</date>
            <delta_ts>2016-11-03 14:28:26 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-164200.patch</filename>
            <type>text/plain</type>
            <size>23925</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDgzNDMpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE2LTExLTAzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBDbG9uZWRBcmd1bWVudHMgbmVlZCB0byBhbHNvIHN1cHBvcnQgaGF2ZUFC
YWRUaW1lIG1vZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjQyMDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI3MjExMzM2PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2hhdmUtYS1i
YWQtdGltZS13aXRoLWFyZ3VtZW50cy5qczogQWRkZWQuCisKIDIwMTYtMTEtMDMgIFNhYW0gQmFy
YXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQXNraW5nIGZvciBhIHZhbHVlIHBy
b2ZpbGUgcHJlZGljdGlvbiBzaG91bGQgYmUgZGVmZW5zaXZlIGFnYWluc3Qgbm90IGZpbmRpbmcg
YSB2YWx1ZSBwcm9maWxlCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9oYXZlLWEtYmFkLXRpbWUtd2l0
aC1hcmd1bWVudHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvaGF2ZS1hLWJhZC10
aW1lLXdpdGgtYXJndW1lbnRzLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL2hh
dmUtYS1iYWQtdGltZS13aXRoLWFyZ3VtZW50cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDE0MCBAQAorLy9AIHJ1bkZUTE5vQ0pJVAorCisvLyBUZXN0cyBhY2Nlc3NpbmcgYW4gZWxlbWVu
dCBpbiBhcmd1bWVudHMgYmVmb3JlIGFuZCBhZnRlciBoYXZpbmcgYSBiYWQgdGltZS4KKy8vIFRo
aXMgdGVzdCBzaG91bGQgbm90IGNyYXNoLgorCitsZXQgdmVyYm9zZSA9IGZhbHNlOworCit2YXIg
dXRpbGl0aWVzID0gICAgICAgICAgICAgICAgICdmdW5jdGlvbiBzaG91bGRFcXVhbCh0ZXN0SWQs
IGFjdHVhbCwgZXhwZWN0ZWQpIHsnICsgJ1xuJyArCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcgICAgaWYgKGFjdHVhbCAhPSBleHBlY3RlZCknICsgJ1xuJyArCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIHRocm93IHRlc3RJZCArICI6IEVSUk9SOiBl
eHBlY3QgIiArIGV4cGVjdGVkICsgIiwgYWN0dWFsICIgKyBhY3R1YWw7JyArICdcbicgKworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnfScgKyAnXG4nOworCit2YXIgaGF2ZUFCYWRU
aW1lID0gICAgICAgICAgICAgICdPYmplY3QuZGVmaW5lUHJvcGVydHkoT2JqZWN0LnByb3RvdHlw
ZSwgMjAsIHsgZ2V0KCkgeyByZXR1cm4gMjA7IH0gfSk7JyArICdcbic7CisKK3ZhciBkaXJlY3RB
cmd1bWVudHNEZWNsID0gICAgICAgJyAgICB2YXIgYXJncyA9IGFyZ3VtZW50czsnICsgJ1xuJzsK
KwordmFyIHNjb3BlZEFyZ3VtZW50c0RlY2wgPSAgICAgICAnICAgIHZhciBhcmdzID0gYXJndW1l
bnRzOycgKyAnXG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBmdW5j
dGlvbiBjbG9zdXJlKCkgeyByZXR1cm4gYXJnczsgfScgKyAnXG4nOworCit2YXIgY2xvbmVkQXJn
dW1lbnRzRGVjbCA9ICAgICAgICcgICAgInVzZSBzdHJpY3QiOycgKyAnXG4nICsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJyAgICB2YXIgYXJncyA9IGFyZ3VtZW50czsnICsgJ1xu
JzsKKworZnVuY3Rpb24gdGVzdEZ1bmN0aW9uKGFyZ3NEZWNsLCBpbnNlcnRFbGVtZW50QWN0aW9u
LCBpbmRleFRvUmV0dXJuKSB7CisgICAgdmFyIHNjcmlwdCA9ICAgICAgICAgICAgICAgICdmdW5j
dGlvbiB0ZXN0KCkgeycgKyAnXG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhcmdzRGVjbCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5z
ZXJ0RWxlbWVudEFjdGlvbiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAg
cmV0dXJuIGFyZ3NbJyArIGluZGV4VG9SZXR1cm4gKyAnXTsnICsgJ1xuJyArCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICd9JyArICdcbicgKworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnbm9JbmxpbmUodGVzdCk7JyArICdcbic7CisgICAgcmV0dXJuIHNjcmlwdDsK
K30KKworZnVuY3Rpb24gd2FybXVwRnVuY3Rpb24odGllcldhcm11cENvdW50LCB0ZXN0QXJncykg
eworICAgIHZhciBzY3JpcHQgPSAgICAgICAgICAgICAgICAnZnVuY3Rpb24gd2FybXVwKCkgeycg
KyAnXG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8ICcgKyB0aWVyV2FybXVwQ291bnQgKyAnOyBpKyspIHsnICsgJ1xuJyArCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIHRlc3QoJyArIHRlc3RBcmdzICsg
Jyk7JyArICdcbicgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIH0nICsg
J1xuJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd9JyArICdcbic7CisgICAg
cmV0dXJuIHNjcmlwdDsKK30KKworbGV0IGFyZ3VtZW50c0RlY2xzID0geworICAgIGRpcmVjdDog
ZGlyZWN0QXJndW1lbnRzRGVjbCwKKyAgICBzY29wZWQ6IHNjb3BlZEFyZ3VtZW50c0RlY2wsCisg
ICAgY2xvbmVkOiBjbG9uZWRBcmd1bWVudHNEZWNsCit9OworCitsZXQgaW5kaWNlc1RvUmV0dXJu
ID0geworICAgIGluQm91bmRzOiAwLAorICAgIG91dE9mQm91bmRzSW5zZXJ0ZWRFbGVtZW50OiAx
MCwKKyAgICBvdXRPZkJvdW5kc0luUHJvdG90eXBlOiAyMAorfTsKKworbGV0IHRpZXJXYXJtdXBD
b3VudHMgPSB7CisgICAgbGxpbnQ6IDEsCisgICAgYmFzZWxpbmU6IDUwLAorICAgIGRmZzogMTAw
MCwKKyAgICBmdGw6IDEwMDAwCit9OworCitsZXQgdGVzdEFyZ3NMaXN0ID0geworICAgIG5vQXJn
czogICB7CisgICAgICAgIGFyZ3M6ICcnLAorICAgICAgICByZXN1bHQ6IHsKKyAgICAgICAgICAg
IGluQm91bmRzOiB7IGJlZm9yZUJhZFRpbWU6ICd1bmRlZmluZWQnLCBhZnRlckJhZFRpbWU6ICd1
bmRlZmluZWQnLCB9LAorICAgICAgICAgICAgb3V0T2ZCb3VuZHNJbnNlcnRlZEVsZW1lbnQ6IHsg
YmVmb3JlQmFkVGltZTogJzEwJywgYWZ0ZXJCYWRUaW1lOiAnMTAnLCB9LAorICAgICAgICAgICAg
b3V0T2ZCb3VuZHNJblByb3RvdHlwZTogeyBiZWZvcmVCYWRUaW1lOiAndW5kZWZpbmVkJywgYWZ0
ZXJCYWRUaW1lOiAnMjAnLCB9LAorICAgICAgICB9CisgICAgfSwKKyAgICBzb21lQXJnczogewor
ICAgICAgICBhcmdzOiAnMSwgMiwgMycsCisgICAgICAgIHJlc3VsdDogeworICAgICAgICAgICAg
aW5Cb3VuZHM6IHsgYmVmb3JlQmFkVGltZTogJzEnLCBhZnRlckJhZFRpbWU6ICcxJywgfSwKKyAg
ICAgICAgICAgIG91dE9mQm91bmRzSW5zZXJ0ZWRFbGVtZW50OiB7IGJlZm9yZUJhZFRpbWU6ICcx
MCcsIGFmdGVyQmFkVGltZTogJzEwJywgfSwKKyAgICAgICAgICAgIG91dE9mQm91bmRzSW5Qcm90
b3R5cGU6IHsgYmVmb3JlQmFkVGltZTogJ3VuZGVmaW5lZCcsIGFmdGVyQmFkVGltZTogJzIwJywg
fSwKKyAgICAgICAgfQorICAgIH0KK307CisKK2xldCBpbnNlcnRFbGVtZW50QWN0aW9ucyA9IHsK
KyAgICBpbnNlcnRFbGVtZW50OiAgICAgICcgICAgYXJnc1sxMF0gPSAxMDsnICsgJ1xuJywKKyAg
ICBkb250SW5zZXJ0RWxlbWVudDogICcnCit9OworCitmb3IgKGxldCBhcmdzRGVjbEluZGV4IGlu
IGFyZ3VtZW50c0RlY2xzKSB7CisgICAgbGV0IGFyZ3NEZWNsID0gYXJndW1lbnRzRGVjbHNbYXJn
c0RlY2xJbmRleF07CisKKyAgICBmb3IgKGxldCBpbmRleFRvUmV0dXJuSW5kZXggaW4gaW5kaWNl
c1RvUmV0dXJuKSB7CisgICAgICAgIGxldCBpbmRleFRvUmV0dXJuID0gaW5kaWNlc1RvUmV0dXJu
W2luZGV4VG9SZXR1cm5JbmRleF07CisKKyAgICAgICAgZm9yIChsZXQgaW5zZXJ0RWxlbWVudEFj
dGlvbkluZGV4IGluIGluc2VydEVsZW1lbnRBY3Rpb25zKSB7CisgICAgICAgICAgICBsZXQgaW5z
ZXJ0RWxlbWVudEFjdGlvbiA9IGluc2VydEVsZW1lbnRBY3Rpb25zW2luc2VydEVsZW1lbnRBY3Rp
b25JbmRleF07CisKKyAgICAgICAgICAgIGZvciAobGV0IHRpZXJXYXJtdXBDb3VudEluZGV4IGlu
IHRpZXJXYXJtdXBDb3VudHMpIHsKKyAgICAgICAgICAgICAgICBsZXQgdGllcldhcm11cENvdW50
ID0gdGllcldhcm11cENvdW50c1t0aWVyV2FybXVwQ291bnRJbmRleF07CisKKyAgICAgICAgICAg
ICAgICBmb3IgKGxldCB0ZXN0QXJnc0luZGV4IGluIHRlc3RBcmdzTGlzdCkgeworICAgICAgICAg
ICAgICAgICAgICBsZXQgdGVzdEFyZ3MgPSB0ZXN0QXJnc0xpc3RbdGVzdEFyZ3NJbmRleF0uYXJn
czsKKyAgICAgICAgICAgICAgICAgICAgbGV0IGV4cGVjdGVkUmVzdWx0ID0gdGVzdEFyZ3NMaXN0
W3Rlc3RBcmdzSW5kZXhdLnJlc3VsdFtpbmRleFRvUmV0dXJuSW5kZXhdOworCisgICAgICAgICAg
ICAgICAgICAgIGlmIChpbmRleFRvUmV0dXJuSW5kZXggPT0gJ291dE9mQm91bmRzSW5zZXJ0ZWRF
bGVtZW50JworICAgICAgICAgICAgICAgICAgICAgICAgJiYgaW5zZXJ0RWxlbWVudEFjdGlvbklu
ZGV4ID09ICdkb250SW5zZXJ0RWxlbWVudCcpCisgICAgICAgICAgICAgICAgICAgICAgICBleHBl
Y3RlZFJlc3VsdCA9ICd1bmRlZmluZWQnOworCisgICAgICAgICAgICAgICAgICAgIGxldCB0ZXN0
TmFtZSA9CisgICAgICAgICAgICAgICAgICAgICAgICBhcmdzRGVjbEluZGV4ICsgJy0nICsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGluZGV4VG9SZXR1cm5JbmRleCArICctJyArCisgICAgICAg
ICAgICAgICAgICAgICAgICBpbnNlcnRFbGVtZW50QWN0aW9uSW5kZXggKyAnLScgKworICAgICAg
ICAgICAgICAgICAgICAgICAgdGllcldhcm11cENvdW50SW5kZXggKyAnLScgKworICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdEFyZ3NJbmRleDsKKworCisgICAgICAgICAgICAgICAgICAgIGxl
dCBzY3JpcHQgPSB1dGlsaXRpZXMgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dGVzdEZ1bmN0aW9uKGFyZ3NEZWNsLCBpbnNlcnRFbGVtZW50QWN0aW9uLCBpbmRleFRvUmV0dXJu
KSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJtdXBGdW5jdGlvbih0aWVy
V2FybXVwQ291bnQsIHRlc3RBcmdzKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnd2FybXVwKCknICsgJ1xuJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
c2hvdWxkRXF1YWwoMTAwMDAsIHRlc3QoJyArIHRlc3RBcmdzICsgJyksICcgKyBleHBlY3RlZFJl
c3VsdFsnYmVmb3JlQmFkVGltZSddICsgJyk7JyArICdcbic7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBoYXZlQUJhZFRpbWUgKworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3Nob3VsZEVxdWFsKDIwMDAwLCB0ZXN0KCcgKyB0ZXN0QXJncyArICcpLCAnICsgZXhw
ZWN0ZWRSZXN1bHRbJ2FmdGVyQmFkVGltZSddICsgJyk7JyArICdcbic7CisKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHZlcmJvc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdS
dW5uaW5nIHRlc3QgY29uZmlndXJhdGlvbjogJyArIHRlc3ROYW1lKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHByaW50KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUZXN0IHNjcmlw
dDogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxu
JyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0ICsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnPT09IEVORCBzY3JpcHQgPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0nKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICBydW5TdHJpbmco
c2NyaXB0KTsKKyAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgcHJpbnQoJ0ZBSUxFRCB0ZXN0IGNvbmZpZ3VyYXRpb246ICcgKyB0ZXN0TmFt
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnRkFJTEVEIHRlc3Qgc2NyaXB0Olxu
JyArIHNjcmlwdCk7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDgzNDMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsODIgQEAKKzIwMTYtMTEtMDMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgor
CisgICAgICAgIENsb25lZEFyZ3VtZW50cyBuZWVkIHRvIGFsc28gc3VwcG9ydCBoYXZlQUJhZFRp
bWUgbW9kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NDIwMAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjcyMTEzMzY+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRm9yIHRob3NlIHdobyBhcmUgbm90
IGZhbWlsaWFyIHdpdGggdGhlIHBhcmxhbmNlLCAiaGF2ZSBhIGJhZCB0aW1lIiBpbiB0aGUgVk0K
KyAgICAgICAgbWVhbnMgdGhhdCBPYmplY3QucHJvdG90eXBlIGhhcyBiZWVuIG1vZGlmaWVkIGlu
IHN1Y2ggYSB3YXkgdGhhdCB3ZSBjYW4gbm8gbG9uZ2VyCisgICAgICAgIHRyaXZpYWxseSBkbyBp
bmRleGVkIHByb3BlcnR5IGFjY2Vzc2VzIHdpdGhvdXQgY29uc3VsdGluZyB0aGUgT2JqZWN0LnBy
b3RvdHlwZS4KKyAgICAgICAgVGhpcyBkZWZlYXRzIG1hbnkgSklUIG9wdGltaXphdGlvbnMsIGFu
ZCBoZW5jZSwgbWFrZXMgdGhlIFZNICJoYXZlIGEgYmFkIHRpbWUiLgorCisgICAgICAgIE9uY2Ug
dGhlIFZNIGVudGVycyBoYXZlQUJhZFRpbWUgbW9kZSwgYWxsIGV4aXN0aW5nIG9iamVjdHMgYXJl
IGNvbnZlcnRlZCB0byB1c2UKKyAgICAgICAgc2xvdyBwdXQgc3RvcmFnZS4gIFRoZXJlYWZ0ZXIs
IEpTQXJyYXlzIGFyZSBhbHdheXMgY3JlYXRlZCB3aXRoIHNsb3cgcHV0IHN0b3JhZ2UuCisgICAg
ICAgIEpTT2JqZWN0cyBhcmUgYWx3YXlzIGNyZWF0ZWQgd2l0aCBhIGJsYW5rIGluZGV4aW5nIHR5
cGUuICBXaGVuIGEgbmV3IGluZGV4ZWQKKyAgICAgICAgcHJvcGVydHkgaXMgcHV0IGludG8gdGhl
IG5ldyBvYmplY3QsIGl0cyBpbmRleGluZyB0eXBlIHdpbGwgYmUgY29udmVydGVkIHRvIHRoZQor
ICAgICAgICBzbG93IHB1dCBhcnJheSBpbmRleGluZyB0eXBlIGp1c3QgYmVmb3JlIHdlIHBlcmZv
cm0gdGhlIHB1dCBvcGVyYXRpb24uICBUaGlzIGlzCisgICAgICAgIGhvdyB3ZSBlbnN1cmUgdGhh
dCB0aGUgb2JqZWN0cyB3aWxsIGFsc28gdXNlIHNsb3cgcHV0IHN0b3JhZ2UuCisKKyAgICAgICAg
SG93ZXZlciwgQ2xvbmVkQXJndW1lbnRzIGlzIGFuIG9iamVjdCB3aGljaCB3YXMgcHJldmlvdXNs
eSBjcmVhdGVkIHVuY29uZGl0aW9uYWxseQorICAgICAgICB0byB1c2UgY29udGlndW91cyBzdG9y
YWdlLiAgU3Vic2VxdWVudGx5LCBpZiB3ZSB0cnkgdG8gY2FsbCBPYmplY3QucHJldmVudEV4dGVu
c2lvbnMoKQorICAgICAgICBvbiB0aGF0IENsb25lZEFyZ3VtZW50cyBvYmplY3QsIE9iamVjdC5w
cmV2ZW50RXh0ZW5zaW9ucygpIHdpbGw6CisgICAgICAgIDEuIG1ha2UgdGhlIENsb25lZEFyZ3Vt
ZW50cyBlbnRlciBkaWN0aW9uYXJ5IGluZGV4aW5nIG1vZGUsIHdoaWNoIG1lYW5zIGl0IHdpbGwK
KyAgICAgICAgMi4gZmlyc3QgZW5zdXJlIHRoYXQgdGhlIENsb25lZEFyZ3VtZW50cyBpcyB1c2lu
ZyBzbG93IHB1dCBhcnJheSBzdG9yYWdlIHZpYQorICAgICAgICAgICBKU09iamVjdDo6ZW5zdXJl
QXJyYXlTdG9yYWdlU2xvdygpLgorCisgICAgICAgIEhvd2V2ZXIsIEpTT2JqZWN0OjplbnN1cmVB
cnJheVN0b3JhZ2VTbG93KCkgZXhwZWN0cyB0aGF0IHdlIG5ldmVyIHNlZSBhbiBvYmplY3QKKyAg
ICAgICAgd2l0aCBjb250aWd1b3VzIHN0b3JhZ2Ugb25jZSB3ZSdyZSBpbiBoYXZlQUJhZFRpbWUg
bW9kZS4gIE91ciBDbG9uZWRBcmd1bWVudHMKKyAgICAgICAgb2JqZWN0IGRpZCBub3Qgb2JleSB0
aGlzIGludmFyaWFudC4KKworICAgICAgICBUaGUgZml4IGlzIHRvIG1ha2UgdGhlIENsb25lZEFy
Z3VtZW50cyBmYWN0b3JpZXMgY3JlYXRlIG9iamVjdHMgdGhhdCB1c2Ugc2xvdyBwdXQKKyAgICAg
ICAgYXJyYXkgc3RvcmFnZSB3aGVuIGluIGhhdmVBQmFkVGltZSBtb2RlLiAgVGhpcyBtZWFuczoK
KworICAgICAgICAxLiBKU0dsb2JhbE9iamVjdDo6aGF2ZUFCYWRUaW1lKCkgbm93IGNoYW5nZXMg
bV9jbG9uZWRBcmd1bWVudHNTdHJ1Y3R1cmUgdG8gdXNlCisgICAgICAgICAgIGl0cyBzbG93IHB1
dCB2ZXJzaW9uLgorCisgICAgICAgICAgIEFsc28gdGhlIGNhY2hpbmcgb2YgdGhlIHNsb3cgcHV0
IHZlcnNpb24gb2YgbV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmUsCisgICAgICAgICAgIGJl
Y2F1c2Ugd2Ugb25seSBuZWVkIHRvIGNyZWF0ZSBpdCB3aGVuIHdlIGFyZSBoYXZpbmcgYSBiYWQg
dGltZS4gCisKKyAgICAgICAgMi4gVGhlIENsb25lZEFyZ3VtZW50cyBmYWN0b3JpZXMgbm93IGFs
bG9jYXRlcyBhIGJ1dHRlcmZseSB3aXRoIHNsb3cgcHV0IGFycmF5CisgICAgICAgICAgIHN0b3Jh
Z2UgaWYgd2UncmUgaW4gaGF2ZUFCYWRUaW1lIG1vZGUuCisKKyAgICAgICAgICAgQWxzbyBhZGRl
ZCBzb21lIGFzc2VydGlvbnMgaW4gQ2xvbmVkQXJndW1lbnRzJyBmYWN0b3J5IG1ldGhvZHMgdG8g
ZW5zdXJlIHRoYXQKKyAgICAgICAgICAgdGhlIGNyZWF0ZWQgb2JqZWN0IGhhcyB0aGUgc2xvdyBw
dXQgaW5kZXhpbmcgdHlwZSB3aGVuIGl0IG5lZWRzU2xvd1B1dEluZGV4aW5nKCkuCisKKyAgICAg
ICAgMy4gREZHRml4dXBQaGFzZSBub3cgd2F0Y2hlcyB0aGUgaGF2aW5nQUJhZFRpbWVXYXRjaHBv
aW50IGJlY2F1c2UgQ2xvbmVkQXJndW1lbnRzJworICAgICAgICAgICBzdHJ1Y3R1cmUgd2lsbCBj
aGFuZ2Ugd2hlbiBoYXZpbmcgYSBiYWQgdGltZS4KKworICAgICAgICA0LiBERkdBcmd1bWVudEVs
aW1pbmF0aW9uUGhhc2UgYW5kIERGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UgbmVlZCBub3QgYmUg
Y2hhbmdlZAorICAgICAgICAgICBiZWNhdXNlIGl0IGlzIHN0aWxsIHZhbGlkIHRvIGVsaW1pbmF0
ZSB0aGUgY3JlYXRpb24gb2YgdGhlIGFyZ3VtZW50cyBvYmplY3QKKyAgICAgICAgICAgZXZlbiBo
YXZpbmcgYSBiYWQgdGltZSwgYXMgbG9uZyBhcyB0aGUgYXJndW1lbnRzIG9iamVjdCBkb2VzIG5v
dCBlc2NhcGUuCisKKyAgICAgICAgNS4gVGhlIERGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
IG5vdyBjaGVja3MgZm9yIGhhdmVBQmFkVGltZSwgYW5kIHNldHMgdGhlCisgICAgICAgICAgIHBy
ZWRpY3RlZCB0eXBlIHRvIGJlIFNwZWNPYmplY3QuCisKKyAgICAgICAgTm90ZTogdGhpcyBpc3N1
ZSBkb2VzIG5vdCBhcHBseSB0byBEaXJlY3RBcmd1bWVudHMgYW5kIFNjb3BlZEFyZ3VtZW50cyBi
ZWNhdXNlCisgICAgICAgIHRoZXkgdXNlIGEgYmxhbmsgaW5kZXhpbmcgdHlwZSAoanVzdCBsaWtl
IEpTT2JqZWN0KS4KKworICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0
ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0FycmF5TW9kZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2RlOjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZH
Rml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2Rl
KToKKyAgICAgICAgKiBydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6
OkNsb25lZEFyZ3VtZW50czo6Y3JlYXRlRW1wdHkpOgorICAgICAgICAoSlNDOjpDbG9uZWRBcmd1
bWVudHM6OmNyZWF0ZVdpdGhJbmxpbmVGcmFtZSk6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3Vt
ZW50czo6Y3JlYXRlV2l0aE1hY2hpbmVGcmFtZSk6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3Vt
ZW50czo6Y3JlYXRlQnlDb3B5aW5nRnJvbSk6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50
czo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6Q2xvbmVkQXJndW1lbnRzOjpjcmVh
dGVTbG93UHV0U3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpoYXZl
QUJhZFRpbWUpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbik6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorCiAyMDE2LTExLTAzICBLZWl0
aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IGNoYW5nZWxvZyBmaXggZHVlIHRvIGZhaWxlZCBnaXQgcmViYXNlLi4KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgJKHJldmlzaW9uIDIwODM0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTk4MSw2
ICsxOTgxLDEwIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOgor
ICAgICAgICBpZiAoIW1fZ3JhcGguaXNXYXRjaGluZ0hhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludChu
b2RlKSkgeworICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXRUeXBlKG1fZ3JhcGgsIFNwZWNP
YmplY3QpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgZm9yTm9kZShu
b2RlKS5zZXQobV9ncmFwaCwgbV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmln
aW4uc2VtYW50aWMpLT5jbG9uZWRBcmd1bWVudHNTdHJ1Y3R1cmUoKSk7CiAgICAgICAgIGJyZWFr
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCShy
ZXZpc2lvbiAyMDgzNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9k
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczNCw3ICs3MzQsNyBAQCBib29sIEFycmF5TW9kZTo6
cGVybWl0c0JvdW5kc0NoZWNrTG93ZXJpCiAKIHZvaWQgQXJyYXlNb2RlOjpkdW1wKFByaW50U3Ry
ZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnByaW50KHR5cGUoKSwgYXJyYXlDbGFzcygpLCBz
cGVjdWxhdGlvbigpLCBjb252ZXJzaW9uKCkpOworICAgIG91dC5wcmludCh0eXBlKCksICIrIiwg
YXJyYXlDbGFzcygpLCAiKyIsIHNwZWN1bGF0aW9uKCksICIrIiwgY29udmVyc2lvbigpKTsKIH0K
IAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyMDgzNDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUw
LDYgKzE1NTAsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAK
KyAgICAgICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6IHsKKyAgICAgICAgICAgIHdhdGNo
SGF2aW5nQUJhZFRpbWUobm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCiAg
ICAgICAgIGNhc2UgQ3JlYXRlU2NvcGVkQXJndW1lbnRzOgogICAgICAgICBjYXNlIENyZWF0ZUFj
dGl2YXRpb246CiAgICAgICAgIGNhc2UgTmV3RnVuY3Rpb246CkBAIC0xNzc2LDcgKzE3ODEsNiBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIElzT2JqZWN0T3JOdWxsOgogICAgICAgICBjYXNlIElz
RnVuY3Rpb246CiAgICAgICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgotICAgICAgICBj
YXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBKdW1wOgogICAgICAgICBj
YXNlIFJldHVybjoKICAgICAgICAgY2FzZSBUYWlsQ2FsbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMjA4
MzQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNiBAQAogCiAjaW5jbHVkZSAiQmF0Y2hlZFRy
YW5zaXRpb25PcHRpbWl6ZXIuaCIKICNpbmNsdWRlICJDYWxsRnJhbWVDbG9zdXJlLmgiCi0jaW5j
bHVkZSAiQ2xvbmVkQXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVk
ZSAiRGlyZWN0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCShyZXZpc2lv
biAyMDgzNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVu
dHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxNiArNDgsMzUgQEAgQ2xvbmVkQXJndW1lbnRz
KiBDbG9uZWRBcmd1bWVudHM6OmNyZWF0ZQogICAgIGlmICh2ZWN0b3JMZW5ndGggPiBNQVhfU1RP
UkFHRV9WRUNUT1JfTEVOR1RIKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHZvaWQqIHRlbXAg
PSB2bS5oZWFwLnRyeUFsbG9jYXRlQXV4aWxpYXJ5KG51bGxwdHIsIEJ1dHRlcmZseTo6dG90YWxT
aXplKDAsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1ZSwgdmVjdG9yTGVuZ3Ro
ICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpOwotICAgIGlmICghdGVtcCkKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBCdXR0ZXJmbHk6OmZyb21CYXNlKHRl
bXAsIDAsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7Ci0gICAgYnV0dGVyZmx5LT5z
ZXRWZWN0b3JMZW5ndGgodmVjdG9yTGVuZ3RoKTsKLSAgICBidXR0ZXJmbHktPnNldFB1YmxpY0xl
bmd0aChsZW5ndGgpOworICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5OworICAgIGlmIChVTkxJS0VM
WShzdHJ1Y3R1cmUtPm5lZWRzU2xvd1B1dEluZGV4aW5nKCkpKSB7CisgICAgICAgIHZvaWQqIHRl
bXAgPSB2bS5oZWFwLnRyeUFsbG9jYXRlQXV4aWxpYXJ5KG51bGxwdHIsIEJ1dHRlcmZseTo6dG90
YWxTaXplKDAsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1ZSwgQXJyYXlTdG9y
YWdlOjpzaXplRm9yKHZlY3Rvckxlbmd0aCkpKTsKKyAgICAgICAgaWYgKCF0ZW1wKQorICAgICAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgYnV0dGVyZmx5ID0gQnV0dGVyZmx5Ojpmcm9tQmFz
ZSh0ZW1wLCAwLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOworICAgICAgICBBcnJh
eVN0b3JhZ2UqIG5ld1N0b3JhZ2UgPSBidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpOworICAgICAg
ICBuZXdTdG9yYWdlLT5zZXRWZWN0b3JMZW5ndGgodmVjdG9yTGVuZ3RoKTsKKyAgICAgICAgbmV3
U3RvcmFnZS0+c2V0TGVuZ3RoKGxlbmd0aCk7CisgICAgICAgIG5ld1N0b3JhZ2UtPm1fc3BhcnNl
TWFwLmNsZWFyKCk7CisgICAgICAgIG5ld1N0b3JhZ2UtPm1faW5kZXhCaWFzID0gMDsKKyAgICAg
ICAgbmV3U3RvcmFnZS0+bV9udW1WYWx1ZXNJblZlY3RvciA9IHZlY3Rvckxlbmd0aDsKKworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmVjdG9yTGVuZ3RoOyBpKyspCisgICAgICAg
ICAgICBuZXdTdG9yYWdlLT5tX3ZlY3RvcltpXS5jbGVhcigpOworCisgICAgfSBlbHNlIHsKKyAg
ICAgICAgdm9pZCogdGVtcCA9IHZtLmhlYXAudHJ5QWxsb2NhdGVBdXhpbGlhcnkobnVsbHB0ciwg
QnV0dGVyZmx5Ojp0b3RhbFNpemUoMCwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCB0
cnVlLCB2ZWN0b3JMZW5ndGggKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7CisgICAgICAgIGlm
ICghdGVtcCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBidXR0ZXJmbHkgPSBCdXR0
ZXJmbHk6OmZyb21CYXNlKHRlbXAsIDAsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7
CisgICAgICAgIGJ1dHRlcmZseS0+c2V0VmVjdG9yTGVuZ3RoKHZlY3Rvckxlbmd0aCk7CisgICAg
ICAgIGJ1dHRlcmZseS0+c2V0UHVibGljTGVuZ3RoKGxlbmd0aCk7CisgICAgICAgIAorICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGkgPCB2ZWN0b3JMZW5ndGg7ICsraSkKKyAgICAg
ICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91cygpW2ldLmNsZWFyKCk7CisgICAgfQogICAgIAot
ICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaSA8IHZlY3Rvckxlbmd0aDsgKytpKQotICAg
ICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtpXS5jbGVhcigpOwotCiAgICAgQ2xvbmVkQXJn
dW1lbnRzKiByZXN1bHQgPQogICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxDbG9u
ZWRBcmd1bWVudHM+KHZtLmhlYXApKQogICAgICAgICBDbG9uZWRBcmd1bWVudHModm0sIHN0cnVj
dHVyZSwgYnV0dGVyZmx5KTsKQEAgLTcwLDkgKzg5LDEyIEBAIENsb25lZEFyZ3VtZW50cyogQ2xv
bmVkQXJndW1lbnRzOjpjcmVhdGUKIAogQ2xvbmVkQXJndW1lbnRzKiBDbG9uZWRBcmd1bWVudHM6
OmNyZWF0ZUVtcHR5KEV4ZWNTdGF0ZSogZXhlYywgSlNGdW5jdGlvbiogY2FsbGVlLCB1bnNpZ25l
ZCBsZW5ndGgpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAvLyBOQi4gU29tZSBj
bGllbnRzIG1pZ2h0IGV4cGVjdCB0aGF0IHRoZSBnbG9iYWwgb2JqZWN0IG9mIG9mIHRoaXMgb2Jq
ZWN0IGlzIHRoZSBnbG9iYWwgb2JqZWN0CiAgICAgLy8gb2YgdGhlIGNhbGxlZS4gV2UgZG9uJ3Qg
ZG8gdGhpcyBmb3Igbm93LCBidXQgbWF5YmUgd2Ugc2hvdWxkLgotICAgIHJldHVybiBjcmVhdGVF
bXB0eShleGVjLT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNsb25lZEFyZ3Vt
ZW50c1N0cnVjdHVyZSgpLCBjYWxsZWUsIGxlbmd0aCk7CisgICAgQ2xvbmVkQXJndW1lbnRzKiBy
ZXN1bHQgPSBjcmVhdGVFbXB0eSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jbG9u
ZWRBcmd1bWVudHNTdHJ1Y3R1cmUoKSwgY2FsbGVlLCBsZW5ndGgpOworICAgIEFTU0VSVCghcmVz
dWx0LT5zdHJ1Y3R1cmUodm0pLT5uZWVkc1Nsb3dQdXRJbmRleGluZygpIHx8IHNob3VsZFVzZVNs
b3dQdXQocmVzdWx0LT5zdHJ1Y3R1cmUodm0pLT5pbmRleGluZ1R5cGUoKSkpOworICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKIENsb25lZEFyZ3VtZW50cyogQ2xvbmVkQXJndW1lbnRzOjpjcmVhdGVX
aXRoSW5saW5lRnJhbWUoRXhlY1N0YXRlKiBteUZyYW1lLCBFeGVjU3RhdGUqIHRhcmdldEZyYW1l
LCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgQXJndW1lbnRzTW9kZSBtb2RlKQpA
QCAtMTE3LDEyICsxMzksMTUgQEAgQ2xvbmVkQXJndW1lbnRzKiBDbG9uZWRBcmd1bWVudHM6OmNy
ZWF0ZQogICAgIH0gfQogCiAgICAgQVNTRVJUKG15RnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+Y2xvbmVkQXJndW1lbnRzU3RydWN0dXJlKCkgPT0gcmVzdWx0LT5zdHJ1Y3R1cmUoKSk7Cisg
ICAgQVNTRVJUKCFyZXN1bHQtPnN0cnVjdHVyZSh2bSktPm5lZWRzU2xvd1B1dEluZGV4aW5nKCkg
fHwgc2hvdWxkVXNlU2xvd1B1dChyZXN1bHQtPnN0cnVjdHVyZSh2bSktPmluZGV4aW5nVHlwZSgp
KSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogQ2xvbmVkQXJndW1lbnRzKiBDbG9uZWRBcmd1
bWVudHM6OmNyZWF0ZVdpdGhNYWNoaW5lRnJhbWUoRXhlY1N0YXRlKiBteUZyYW1lLCBFeGVjU3Rh
dGUqIHRhcmdldEZyYW1lLCBBcmd1bWVudHNNb2RlIG1vZGUpCiB7Ci0gICAgcmV0dXJuIGNyZWF0
ZVdpdGhJbmxpbmVGcmFtZShteUZyYW1lLCB0YXJnZXRGcmFtZSwgbnVsbHB0ciwgbW9kZSk7Cisg
ICAgQ2xvbmVkQXJndW1lbnRzKiByZXN1bHQgPSBjcmVhdGVXaXRoSW5saW5lRnJhbWUobXlGcmFt
ZSwgdGFyZ2V0RnJhbWUsIG51bGxwdHIsIG1vZGUpOworICAgIEFTU0VSVCghcmVzdWx0LT5zdHJ1
Y3R1cmUoKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSB8fCBzaG91bGRVc2VTbG93UHV0KHJlc3Vs
dC0+c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAogQ2xvbmVkQXJndW1lbnRzKiBDbG9uZWRBcmd1bWVudHM6OmNyZWF0ZUJ5Q29weWluZ0Zyb20o
CkBAIC0xMzQsMjEgKzE1OSwzMCBAQCBDbG9uZWRBcmd1bWVudHMqIENsb25lZEFyZ3VtZW50czo6
Y3JlYXRlCiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KQogICAgICAg
ICByZXN1bHQtPmluaXRpYWxpemVJbmRleCh2bSwgaSwgYXJndW1lbnRTdGFydFtpXS5qc1ZhbHVl
KCkpOwotCisgICAgQVNTRVJUKCFyZXN1bHQtPnN0cnVjdHVyZSh2bSktPm5lZWRzU2xvd1B1dElu
ZGV4aW5nKCkgfHwgc2hvdWxkVXNlU2xvd1B1dChyZXN1bHQtPnN0cnVjdHVyZSh2bSktPmluZGV4
aW5nVHlwZSgpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotU3RydWN0dXJlKiBDbG9uZWRB
cmd1bWVudHM6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorU3RydWN0dXJlKiBDbG9uZWRBcmd1bWVudHM6OmNy
ZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgcHJvdG90eXBlLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKQogewotICAgIC8vIFdlIHVz
ZSBjb250aWd1b3VzIHN0b3JhZ2UgYmVjYXVzZSBvcHRpbWl6YXRpb25zIGluIHRoZSBGVEwgYXNz
dW1lIHRoYXQgY2xvbmVkIGFyZ3VtZW50cyBjcmVhdGlvbiBhbHdheXMgcHJvZHVjZXMgdGhlIHNh
bWUgaW5pdGlhbCBzdHJ1Y3R1cmUuCi0KLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IFN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIE5vbkFycmF5V2l0aENvbnRpZ3VvdXMpOwor
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSwgaW5kZXhpbmdUeXBlKTsKICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7CiAgICAgc3Ry
dWN0dXJlID0gc3RydWN0dXJlLT5hZGRQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwg
dm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBEb250RW51bSwgb2Zmc2V0KTsKICAgICBBU1NFUlQo
b2Zmc2V0ID09IGNsb25lZEFyZ3VtZW50c0xlbmd0aFByb3BlcnR5T2Zmc2V0KTsKICAgICByZXR1
cm4gc3RydWN0dXJlOwogfQogCitTdHJ1Y3R1cmUqIENsb25lZEFyZ3VtZW50czo6Y3JlYXRlU3Ry
dWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
b3R5cGUpCit7CisgICAgLy8gV2UgdXNlIGNvbnRpZ3VvdXMgc3RvcmFnZSBiZWNhdXNlIG9wdGlt
aXphdGlvbnMgaW4gdGhlIEZUTCBhc3N1bWUgdGhhdCBjbG9uZWQgYXJndW1lbnRzIGNyZWF0aW9u
IGFsd2F5cyBwcm9kdWNlcyB0aGUgc2FtZSBpbml0aWFsIHN0cnVjdHVyZS4KKyAgICByZXR1cm4g
Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgTm9uQXJyYXlXaXRo
Q29udGlndW91cyk7Cit9CisKK1N0cnVjdHVyZSogQ2xvbmVkQXJndW1lbnRzOjpjcmVhdGVTbG93
UHV0U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIGNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOworfQorCiBi
b29sIENsb25lZEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIGlkZW50LCBQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgQ2xvbmVkQXJndW1lbnRzKiB0aGlzT2JqZWN0ID0ganNDYXN0PENsb25lZEFyZ3Vt
ZW50cyo+KG9iamVjdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9u
ZWRBcmd1bWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9DbG9uZWRBcmd1bWVudHMuaAkocmV2aXNpb24gMjA4MzQzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTMsMTIgKzUz
LDE1IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ2xvbmVkQXJndW1lbnRzKiBjcmVhdGVCeUNvcHlp
bmdGcm9tKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIFJlZ2lzdGVyKiBhcmd1bWVudHNTdGFydCwg
dW5zaWduZWQgbGVuZ3RoLCBKU0Z1bmN0aW9uKiBjYWxsZWUpOwogICAgIAogICAgIHN0YXRpYyBT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBw
cm90b3R5cGUpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVNsb3dQdXRTdHJ1Y3R1cmUo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKIAogICAgIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIERFQ0xBUkVf
SU5GTzsKIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlLCBJbmRleGluZ1R5cGUpOwor
CiAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Q
cm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBF
bnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNp
b24gMjA4MzQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzcsNyArNTM3LDYgQEAgdm9pZCBKU0dsb2JhbE9i
amVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9yZWdFeHBQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBS
ZWdFeHBQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgUmVnRXhwUHJvdG90eXBlOjpjcmVhdGVT
dHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOwogICAgIG1fcmVn
RXhwU3RydWN0dXJlLnNldCh2bSwgdGhpcywgUmVnRXhwT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIHRoaXMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9yZWdFeHBNYXRjaGVz
QXJyYXlTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTdHJ1
Y3R1cmUodm0sIHRoaXMpKTsKLSAgICBtX3JlZ0V4cE1hdGNoZXNBcnJheVNsb3dQdXRTdHJ1Y3R1
cmUuc2V0KHZtLCB0aGlzLCBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTbG93UHV0U3RydWN0dXJl
KHZtLCB0aGlzKSk7CiAKICAgICBtX21vZHVsZVJlY29yZFN0cnVjdHVyZS5zZXQodm0sIHRoaXMs
IEpTTW9kdWxlUmVjb3JkOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90
eXBlLmdldCgpKSk7CiAgICAgbV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUuc2V0KHZt
LCB0aGlzLCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBqc051bGwoKSkpOwpAQCAtMTA1Miw4ICsxMDUxLDEyIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6
OmhhdmVBQmFkVGltZShWTSYgdm0KICAgICAgICAgbV9hcnJheVN0cnVjdHVyZUZvckluZGV4aW5n
U2hhcGVEdXJpbmdBbGxvY2F0aW9uW2ldLnNldCh2bSwgdGhpcywgb3JpZ2luYWxBcnJheVN0cnVj
dHVyZUZvckluZGV4aW5nVHlwZShBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKSk7CiAKICAg
ICAvLyBTYW1lIGZvciBhbnkgc3BlY2lhbCBhcnJheSBzdHJ1Y3R1cmVzLgotICAgIG1fcmVnRXhw
TWF0Y2hlc0FycmF5U3RydWN0dXJlLnNldCh2bSwgdGhpcywgbV9yZWdFeHBNYXRjaGVzQXJyYXlT
bG93UHV0U3RydWN0dXJlLmdldCgpKTsKLSAgICAKKyAgICBTdHJ1Y3R1cmUqIHNsb3dQdXRTdHJ1
Y3R1cmU7CisgICAgc2xvd1B1dFN0cnVjdHVyZSA9IGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVNs
b3dQdXRTdHJ1Y3R1cmUodm0sIHRoaXMpOworICAgIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0
dXJlLnNldCh2bSwgdGhpcywgc2xvd1B1dFN0cnVjdHVyZSk7CisgICAgc2xvd1B1dFN0cnVjdHVy
ZSA9IENsb25lZEFyZ3VtZW50czo6Y3JlYXRlU2xvd1B1dFN0cnVjdHVyZSh2bSwgdGhpcywgbV9v
YmplY3RQcm90b3R5cGUuZ2V0KCkpOworICAgIG1fY2xvbmVkQXJndW1lbnRzU3RydWN0dXJlLnNl
dCh2bSwgdGhpcywgc2xvd1B1dFN0cnVjdHVyZSk7CisKICAgICAvLyBNYWtlIHN1cmUgdGhhdCBh
bGwgb2JqZWN0cyB0aGF0IGhhdmUgaW5kZXhlZCBzdG9yYWdlIHN3aXRjaCB0byB0aGUgc2xvdyBr
aW5kIG9mCiAgICAgLy8gaW5kZXhlZCBzdG9yYWdlLgogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVy
IGZvdW5kT2JqZWN0czsgLy8gVXNlIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGJlY2F1c2Ugc3dpdGNo
VG9TbG93UHV0QXJyYXlTdG9yYWdlKCkgbWF5IEdDLgpAQCAtMTE5MSw3ICsxMTk0LDYgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbAogICAgIHZpc2l0b3IuYXBwZW5k
KCZ0aGlzT2JqZWN0LT5tX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9y
LmFwcGVuZCgmdGhpc09iamVjdC0+bV9pdGVyYXRvclJlc3VsdE9iamVjdFN0cnVjdHVyZSk7CiAg
ICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0
dXJlKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJy
YXlTbG93UHV0U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9t
b2R1bGVSZWNvcmRTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5t
X21vZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRo
aXNPYmplY3QtPm1fZG9sbGFyVk1TdHJ1Y3R1cmUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAyMDgzNDMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMjAsNyArMzIwLDYgQEAgcHVibGljOgogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fZG9sbGFyVk1TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9p
dGVyYXRvclJlc3VsdE9iamVjdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsKLSAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX3JlZ0V4cE1hdGNoZXNBcnJheVNsb3dQdXRTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmU7CiAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9wcm94eU9iamVjdFN0cnVjdHVyZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293802</attachid>
            <date>2016-11-03 14:28:26 -0700</date>
            <delta_ts>2016-11-03 22:15:29 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-164200.patch</filename>
            <type>text/plain</type>
            <size>23923</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDgzNDMpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE2LTExLTAzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBDbG9uZWRBcmd1bWVudHMgbmVlZCB0byBhbHNvIHN1cHBvcnQgaGF2ZUFC
YWRUaW1lIG1vZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjQyMDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI3MjExMzM2PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2hhdmUtYS1i
YWQtdGltZS13aXRoLWFyZ3VtZW50cy5qczogQWRkZWQuCisKIDIwMTYtMTEtMDMgIFNhYW0gQmFy
YXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgQXNraW5nIGZvciBhIHZhbHVlIHBy
b2ZpbGUgcHJlZGljdGlvbiBzaG91bGQgYmUgZGVmZW5zaXZlIGFnYWluc3Qgbm90IGZpbmRpbmcg
YSB2YWx1ZSBwcm9maWxlCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9oYXZlLWEtYmFkLXRpbWUtd2l0
aC1hcmd1bWVudHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvaGF2ZS1hLWJhZC10
aW1lLXdpdGgtYXJndW1lbnRzLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL2hh
dmUtYS1iYWQtdGltZS13aXRoLWFyZ3VtZW50cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDE0MCBAQAorLy9AIHJ1bkZUTE5vQ0pJVAorCisvLyBUZXN0cyBhY2Nlc3NpbmcgYW4gZWxlbWVu
dCBpbiBhcmd1bWVudHMgYmVmb3JlIGFuZCBhZnRlciBoYXZpbmcgYSBiYWQgdGltZS4KKy8vIFRo
aXMgdGVzdCBzaG91bGQgbm90IGNyYXNoLgorCitsZXQgdmVyYm9zZSA9IGZhbHNlOworCit2YXIg
dXRpbGl0aWVzID0gICAgICAgICAgICAgICAgICdmdW5jdGlvbiBzaG91bGRFcXVhbCh0ZXN0SWQs
IGFjdHVhbCwgZXhwZWN0ZWQpIHsnICsgJ1xuJyArCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcgICAgaWYgKGFjdHVhbCAhPSBleHBlY3RlZCknICsgJ1xuJyArCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIHRocm93IHRlc3RJZCArICI6IEVSUk9SOiBl
eHBlY3QgIiArIGV4cGVjdGVkICsgIiwgYWN0dWFsICIgKyBhY3R1YWw7JyArICdcbicgKworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnfScgKyAnXG4nOworCit2YXIgaGF2ZUFCYWRU
aW1lID0gICAgICAgICAgICAgICdPYmplY3QuZGVmaW5lUHJvcGVydHkoT2JqZWN0LnByb3RvdHlw
ZSwgMjAsIHsgZ2V0KCkgeyByZXR1cm4gMjA7IH0gfSk7JyArICdcbic7CisKK3ZhciBkaXJlY3RB
cmd1bWVudHNEZWNsID0gICAgICAgJyAgICB2YXIgYXJncyA9IGFyZ3VtZW50czsnICsgJ1xuJzsK
KwordmFyIHNjb3BlZEFyZ3VtZW50c0RlY2wgPSAgICAgICAnICAgIHZhciBhcmdzID0gYXJndW1l
bnRzOycgKyAnXG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBmdW5j
dGlvbiBjbG9zdXJlKCkgeyByZXR1cm4geDsgfScgKyAnXG4nOworCit2YXIgY2xvbmVkQXJndW1l
bnRzRGVjbCA9ICAgICAgICcgICAgInVzZSBzdHJpY3QiOycgKyAnXG4nICsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJyAgICB2YXIgYXJncyA9IGFyZ3VtZW50czsnICsgJ1xuJzsK
KworZnVuY3Rpb24gdGVzdEZ1bmN0aW9uKGFyZ3NEZWNsLCBpbnNlcnRFbGVtZW50QWN0aW9uLCBp
bmRleFRvUmV0dXJuKSB7CisgICAgdmFyIHNjcmlwdCA9ICAgICAgICAgICAgICAgICdmdW5jdGlv
biB0ZXN0KHgpIHsnICsgJ1xuJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXJnc0RlY2wgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2Vy
dEVsZW1lbnRBY3Rpb24gKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgIHJl
dHVybiBhcmdzWycgKyBpbmRleFRvUmV0dXJuICsgJ107JyArICdcbicgKworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnfScgKyAnXG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ25vSW5saW5lKHRlc3QpOycgKyAnXG4nOworICAgIHJldHVybiBzY3JpcHQ7Cit9
CisKK2Z1bmN0aW9uIHdhcm11cEZ1bmN0aW9uKHRpZXJXYXJtdXBDb3VudCwgdGVzdEFyZ3MpIHsK
KyAgICB2YXIgc2NyaXB0ID0gICAgICAgICAgICAgICAgJ2Z1bmN0aW9uIHdhcm11cCgpIHsnICsg
J1xuJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCAnICsgdGllcldhcm11cENvdW50ICsgJzsgaSsrKSB7JyArICdcbicgKworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICB0ZXN0KCcgKyB0ZXN0QXJncyArICcp
OycgKyAnXG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICB9JyArICdc
bicgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnfScgKyAnXG4nOworICAgIHJl
dHVybiBzY3JpcHQ7Cit9CisKK2xldCBhcmd1bWVudHNEZWNscyA9IHsKKyAgICBkaXJlY3Q6IGRp
cmVjdEFyZ3VtZW50c0RlY2wsCisgICAgc2NvcGVkOiBzY29wZWRBcmd1bWVudHNEZWNsLAorICAg
IGNsb25lZDogY2xvbmVkQXJndW1lbnRzRGVjbAorfTsKKworbGV0IGluZGljZXNUb1JldHVybiA9
IHsKKyAgICBpbkJvdW5kczogMCwKKyAgICBvdXRPZkJvdW5kc0luc2VydGVkRWxlbWVudDogMTAs
CisgICAgb3V0T2ZCb3VuZHNJblByb3RvdHlwZTogMjAKK307CisKK2xldCB0aWVyV2FybXVwQ291
bnRzID0geworICAgIGxsaW50OiAxLAorICAgIGJhc2VsaW5lOiA1MCwKKyAgICBkZmc6IDEwMDAs
CisgICAgZnRsOiAxMDAwMAorfTsKKworbGV0IHRlc3RBcmdzTGlzdCA9IHsKKyAgICBub0FyZ3M6
ICAgeworICAgICAgICBhcmdzOiAnJywKKyAgICAgICAgcmVzdWx0OiB7CisgICAgICAgICAgICBp
bkJvdW5kczogeyBiZWZvcmVCYWRUaW1lOiAndW5kZWZpbmVkJywgYWZ0ZXJCYWRUaW1lOiAndW5k
ZWZpbmVkJywgfSwKKyAgICAgICAgICAgIG91dE9mQm91bmRzSW5zZXJ0ZWRFbGVtZW50OiB7IGJl
Zm9yZUJhZFRpbWU6ICcxMCcsIGFmdGVyQmFkVGltZTogJzEwJywgfSwKKyAgICAgICAgICAgIG91
dE9mQm91bmRzSW5Qcm90b3R5cGU6IHsgYmVmb3JlQmFkVGltZTogJ3VuZGVmaW5lZCcsIGFmdGVy
QmFkVGltZTogJzIwJywgfSwKKyAgICAgICAgfQorICAgIH0sCisgICAgc29tZUFyZ3M6IHsKKyAg
ICAgICAgYXJnczogJzEsIDIsIDMnLAorICAgICAgICByZXN1bHQ6IHsKKyAgICAgICAgICAgIGlu
Qm91bmRzOiB7IGJlZm9yZUJhZFRpbWU6ICcxJywgYWZ0ZXJCYWRUaW1lOiAnMScsIH0sCisgICAg
ICAgICAgICBvdXRPZkJvdW5kc0luc2VydGVkRWxlbWVudDogeyBiZWZvcmVCYWRUaW1lOiAnMTAn
LCBhZnRlckJhZFRpbWU6ICcxMCcsIH0sCisgICAgICAgICAgICBvdXRPZkJvdW5kc0luUHJvdG90
eXBlOiB7IGJlZm9yZUJhZFRpbWU6ICd1bmRlZmluZWQnLCBhZnRlckJhZFRpbWU6ICcyMCcsIH0s
CisgICAgICAgIH0KKyAgICB9Cit9OworCitsZXQgaW5zZXJ0RWxlbWVudEFjdGlvbnMgPSB7Cisg
ICAgaW5zZXJ0RWxlbWVudDogICAgICAnICAgIGFyZ3NbMTBdID0gMTA7JyArICdcbicsCisgICAg
ZG9udEluc2VydEVsZW1lbnQ6ICAnJworfTsKKworZm9yIChsZXQgYXJnc0RlY2xJbmRleCBpbiBh
cmd1bWVudHNEZWNscykgeworICAgIGxldCBhcmdzRGVjbCA9IGFyZ3VtZW50c0RlY2xzW2FyZ3NE
ZWNsSW5kZXhdOworCisgICAgZm9yIChsZXQgaW5kZXhUb1JldHVybkluZGV4IGluIGluZGljZXNU
b1JldHVybikgeworICAgICAgICBsZXQgaW5kZXhUb1JldHVybiA9IGluZGljZXNUb1JldHVybltp
bmRleFRvUmV0dXJuSW5kZXhdOworCisgICAgICAgIGZvciAobGV0IGluc2VydEVsZW1lbnRBY3Rp
b25JbmRleCBpbiBpbnNlcnRFbGVtZW50QWN0aW9ucykgeworICAgICAgICAgICAgbGV0IGluc2Vy
dEVsZW1lbnRBY3Rpb24gPSBpbnNlcnRFbGVtZW50QWN0aW9uc1tpbnNlcnRFbGVtZW50QWN0aW9u
SW5kZXhdOworCisgICAgICAgICAgICBmb3IgKGxldCB0aWVyV2FybXVwQ291bnRJbmRleCBpbiB0
aWVyV2FybXVwQ291bnRzKSB7CisgICAgICAgICAgICAgICAgbGV0IHRpZXJXYXJtdXBDb3VudCA9
IHRpZXJXYXJtdXBDb3VudHNbdGllcldhcm11cENvdW50SW5kZXhdOworCisgICAgICAgICAgICAg
ICAgZm9yIChsZXQgdGVzdEFyZ3NJbmRleCBpbiB0ZXN0QXJnc0xpc3QpIHsKKyAgICAgICAgICAg
ICAgICAgICAgbGV0IHRlc3RBcmdzID0gdGVzdEFyZ3NMaXN0W3Rlc3RBcmdzSW5kZXhdLmFyZ3M7
CisgICAgICAgICAgICAgICAgICAgIGxldCBleHBlY3RlZFJlc3VsdCA9IHRlc3RBcmdzTGlzdFt0
ZXN0QXJnc0luZGV4XS5yZXN1bHRbaW5kZXhUb1JldHVybkluZGV4XTsKKworICAgICAgICAgICAg
ICAgICAgICBpZiAoaW5kZXhUb1JldHVybkluZGV4ID09ICdvdXRPZkJvdW5kc0luc2VydGVkRWxl
bWVudCcKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIGluc2VydEVsZW1lbnRBY3Rpb25JbmRl
eCA9PSAnZG9udEluc2VydEVsZW1lbnQnKQorICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0
ZWRSZXN1bHQgPSAndW5kZWZpbmVkJzsKKworICAgICAgICAgICAgICAgICAgICBsZXQgdGVzdE5h
bWUgPQorICAgICAgICAgICAgICAgICAgICAgICAgYXJnc0RlY2xJbmRleCArICctJyArCisgICAg
ICAgICAgICAgICAgICAgICAgICBpbmRleFRvUmV0dXJuSW5kZXggKyAnLScgKworICAgICAgICAg
ICAgICAgICAgICAgICAgaW5zZXJ0RWxlbWVudEFjdGlvbkluZGV4ICsgJy0nICsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRpZXJXYXJtdXBDb3VudEluZGV4ICsgJy0nICsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRlc3RBcmdzSW5kZXg7CisKKworICAgICAgICAgICAgICAgICAgICBsZXQg
c2NyaXB0ID0gdXRpbGl0aWVzICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3RGdW5jdGlvbihhcmdzRGVjbCwgaW5zZXJ0RWxlbWVudEFjdGlvbiwgaW5kZXhUb1JldHVybikg
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybXVwRnVuY3Rpb24odGllcldh
cm11cENvdW50LCB0ZXN0QXJncykgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3dhcm11cCgpJyArICdcbicgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3No
b3VsZEVxdWFsKDEwMDAwLCB0ZXN0KCcgKyB0ZXN0QXJncyArICcpLCAnICsgZXhwZWN0ZWRSZXN1
bHRbJ2JlZm9yZUJhZFRpbWUnXSArICcpOycgKyAnXG4nOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaGF2ZUFCYWRUaW1lICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdzaG91bGRFcXVhbCgyMDAwMCwgdGVzdCgnICsgdGVzdEFyZ3MgKyAnKSwgJyArIGV4cGVj
dGVkUmVzdWx0WydhZnRlckJhZFRpbWUnXSArICcpOycgKyAnXG4nOworCisgICAgICAgICAgICAg
ICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnUnVu
bmluZyB0ZXN0IGNvbmZpZ3VyYXRpb246ICcgKyB0ZXN0TmFtZSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBwcmludCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGVzdCBzY3JpcHQ6
ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicg
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdCArCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJz09PSBFTkQgc2NyaXB0ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Jyk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgcnVuU3RyaW5nKHNj
cmlwdCk7CisgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHByaW50KCdGQUlMRUQgdGVzdCBjb25maWd1cmF0aW9uOiAnICsgdGVzdE5hbWUp
OworICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ0ZBSUxFRCB0ZXN0IHNjcmlwdDpcbicg
KyBzY3JpcHQpOworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA4MzQzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDgyIEBACisyMDE2LTExLTAzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKwor
ICAgICAgICBDbG9uZWRBcmd1bWVudHMgbmVlZCB0byBhbHNvIHN1cHBvcnQgaGF2ZUFCYWRUaW1l
IG1vZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjQyMDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI3MjExMzM2PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvciB0aG9zZSB3aG8gYXJlIG5vdCBm
YW1pbGlhciB3aXRoIHRoZSBwYXJsYW5jZSwgImhhdmUgYSBiYWQgdGltZSIgaW4gdGhlIFZNCisg
ICAgICAgIG1lYW5zIHRoYXQgT2JqZWN0LnByb3RvdHlwZSBoYXMgYmVlbiBtb2RpZmllZCBpbiBz
dWNoIGEgd2F5IHRoYXQgd2UgY2FuIG5vIGxvbmdlcgorICAgICAgICB0cml2aWFsbHkgZG8gaW5k
ZXhlZCBwcm9wZXJ0eSBhY2Nlc3NlcyB3aXRob3V0IGNvbnN1bHRpbmcgdGhlIE9iamVjdC5wcm90
b3R5cGUuCisgICAgICAgIFRoaXMgZGVmZWF0cyBtYW55IEpJVCBvcHRpbWl6YXRpb25zLCBhbmQg
aGVuY2UsIG1ha2VzIHRoZSBWTSAiaGF2ZSBhIGJhZCB0aW1lIi4KKworICAgICAgICBPbmNlIHRo
ZSBWTSBlbnRlcnMgaGF2ZUFCYWRUaW1lIG1vZGUsIGFsbCBleGlzdGluZyBvYmplY3RzIGFyZSBj
b252ZXJ0ZWQgdG8gdXNlCisgICAgICAgIHNsb3cgcHV0IHN0b3JhZ2UuICBUaGVyZWFmdGVyLCBK
U0FycmF5cyBhcmUgYWx3YXlzIGNyZWF0ZWQgd2l0aCBzbG93IHB1dCBzdG9yYWdlLgorICAgICAg
ICBKU09iamVjdHMgYXJlIGFsd2F5cyBjcmVhdGVkIHdpdGggYSBibGFuayBpbmRleGluZyB0eXBl
LiAgV2hlbiBhIG5ldyBpbmRleGVkCisgICAgICAgIHByb3BlcnR5IGlzIHB1dCBpbnRvIHRoZSBu
ZXcgb2JqZWN0LCBpdHMgaW5kZXhpbmcgdHlwZSB3aWxsIGJlIGNvbnZlcnRlZCB0byB0aGUKKyAg
ICAgICAgc2xvdyBwdXQgYXJyYXkgaW5kZXhpbmcgdHlwZSBqdXN0IGJlZm9yZSB3ZSBwZXJmb3Jt
IHRoZSBwdXQgb3BlcmF0aW9uLiAgVGhpcyBpcworICAgICAgICBob3cgd2UgZW5zdXJlIHRoYXQg
dGhlIG9iamVjdHMgd2lsbCBhbHNvIHVzZSBzbG93IHB1dCBzdG9yYWdlLgorCisgICAgICAgIEhv
d2V2ZXIsIENsb25lZEFyZ3VtZW50cyBpcyBhbiBvYmplY3Qgd2hpY2ggd2FzIHByZXZpb3VzbHkg
Y3JlYXRlZCB1bmNvbmRpdGlvbmFsbHkKKyAgICAgICAgdG8gdXNlIGNvbnRpZ3VvdXMgc3RvcmFn
ZS4gIFN1YnNlcXVlbnRseSwgaWYgd2UgdHJ5IHRvIGNhbGwgT2JqZWN0LnByZXZlbnRFeHRlbnNp
b25zKCkKKyAgICAgICAgb24gdGhhdCBDbG9uZWRBcmd1bWVudHMgb2JqZWN0LCBPYmplY3QucHJl
dmVudEV4dGVuc2lvbnMoKSB3aWxsOgorICAgICAgICAxLiBtYWtlIHRoZSBDbG9uZWRBcmd1bWVu
dHMgZW50ZXIgZGljdGlvbmFyeSBpbmRleGluZyBtb2RlLCB3aGljaCBtZWFucyBpdCB3aWxsCisg
ICAgICAgIDIuIGZpcnN0IGVuc3VyZSB0aGF0IHRoZSBDbG9uZWRBcmd1bWVudHMgaXMgdXNpbmcg
c2xvdyBwdXQgYXJyYXkgc3RvcmFnZSB2aWEKKyAgICAgICAgICAgSlNPYmplY3Q6OmVuc3VyZUFy
cmF5U3RvcmFnZVNsb3coKS4KKworICAgICAgICBIb3dldmVyLCBKU09iamVjdDo6ZW5zdXJlQXJy
YXlTdG9yYWdlU2xvdygpIGV4cGVjdHMgdGhhdCB3ZSBuZXZlciBzZWUgYW4gb2JqZWN0CisgICAg
ICAgIHdpdGggY29udGlndW91cyBzdG9yYWdlIG9uY2Ugd2UncmUgaW4gaGF2ZUFCYWRUaW1lIG1v
ZGUuICBPdXIgQ2xvbmVkQXJndW1lbnRzCisgICAgICAgIG9iamVjdCBkaWQgbm90IG9iZXkgdGhp
cyBpbnZhcmlhbnQuCisKKyAgICAgICAgVGhlIGZpeCBpcyB0byBtYWtlIHRoZSBDbG9uZWRBcmd1
bWVudHMgZmFjdG9yaWVzIGNyZWF0ZSBvYmplY3RzIHRoYXQgdXNlIHNsb3cgcHV0CisgICAgICAg
IGFycmF5IHN0b3JhZ2Ugd2hlbiBpbiBoYXZlQUJhZFRpbWUgbW9kZS4gIFRoaXMgbWVhbnM6CisK
KyAgICAgICAgMS4gSlNHbG9iYWxPYmplY3Q6OmhhdmVBQmFkVGltZSgpIG5vdyBjaGFuZ2VzIG1f
Y2xvbmVkQXJndW1lbnRzU3RydWN0dXJlIHRvIHVzZQorICAgICAgICAgICBpdHMgc2xvdyBwdXQg
dmVyc2lvbi4KKworICAgICAgICAgICBBbHNvIHRoZSBjYWNoaW5nIG9mIHRoZSBzbG93IHB1dCB2
ZXJzaW9uIG9mIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJlLAorICAgICAgICAgICBiZWNh
dXNlIHdlIG9ubHkgbmVlZCB0byBjcmVhdGUgaXQgd2hlbiB3ZSBhcmUgaGF2aW5nIGEgYmFkIHRp
bWUuIAorCisgICAgICAgIDIuIFRoZSBDbG9uZWRBcmd1bWVudHMgZmFjdG9yaWVzIG5vdyBhbGxv
Y2F0ZXMgYSBidXR0ZXJmbHkgd2l0aCBzbG93IHB1dCBhcnJheQorICAgICAgICAgICBzdG9yYWdl
IGlmIHdlJ3JlIGluIGhhdmVBQmFkVGltZSBtb2RlLgorCisgICAgICAgICAgIEFsc28gYWRkZWQg
c29tZSBhc3NlcnRpb25zIGluIENsb25lZEFyZ3VtZW50cycgZmFjdG9yeSBtZXRob2RzIHRvIGVu
c3VyZSB0aGF0CisgICAgICAgICAgIHRoZSBjcmVhdGVkIG9iamVjdCBoYXMgdGhlIHNsb3cgcHV0
IGluZGV4aW5nIHR5cGUgd2hlbiBpdCBuZWVkc1Nsb3dQdXRJbmRleGluZygpLgorCisgICAgICAg
IDMuIERGR0ZpeHVwUGhhc2Ugbm93IHdhdGNoZXMgdGhlIGhhdmluZ0FCYWRUaW1lV2F0Y2hwb2lu
dCBiZWNhdXNlIENsb25lZEFyZ3VtZW50cycKKyAgICAgICAgICAgc3RydWN0dXJlIHdpbGwgY2hh
bmdlIHdoZW4gaGF2aW5nIGEgYmFkIHRpbWUuCisKKyAgICAgICAgNC4gREZHQXJndW1lbnRFbGlt
aW5hdGlvblBoYXNlIGFuZCBERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlIG5lZWQgbm90IGJlIGNo
YW5nZWQKKyAgICAgICAgICAgYmVjYXVzZSBpdCBpcyBzdGlsbCB2YWxpZCB0byBlbGltaW5hdGUg
dGhlIGNyZWF0aW9uIG9mIHRoZSBhcmd1bWVudHMgb2JqZWN0CisgICAgICAgICAgIGV2ZW4gaGF2
aW5nIGEgYmFkIHRpbWUsIGFzIGxvbmcgYXMgdGhlIGFyZ3VtZW50cyBvYmplY3QgZG9lcyBub3Qg
ZXNjYXBlLgorCisgICAgICAgIDUuIFRoZSBERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcyBu
b3cgY2hlY2tzIGZvciBoYXZlQUJhZFRpbWUsIGFuZCBzZXRzIHRoZQorICAgICAgICAgICBwcmVk
aWN0ZWQgdHlwZSB0byBiZSBTcGVjT2JqZWN0LgorCisgICAgICAgIE5vdGU6IHRoaXMgaXNzdWUg
ZG9lcyBub3QgYXBwbHkgdG8gRGlyZWN0QXJndW1lbnRzIGFuZCBTY29wZWRBcmd1bWVudHMgYmVj
YXVzZQorICAgICAgICB0aGV5IHVzZSBhIGJsYW5rIGluZGV4aW5nIHR5cGUgKGp1c3QgbGlrZSBK
U09iamVjdCkuCisKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVU
eXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuY3BwOgor
ICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6ZHVtcCk6CisgICAgICAgICogZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6
CisgICAgICAgICogcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwOgorICAgICAgICAoSlNDOjpD
bG9uZWRBcmd1bWVudHM6OmNyZWF0ZUVtcHR5KToKKyAgICAgICAgKEpTQzo6Q2xvbmVkQXJndW1l
bnRzOjpjcmVhdGVXaXRoSW5saW5lRnJhbWUpOgorICAgICAgICAoSlNDOjpDbG9uZWRBcmd1bWVu
dHM6OmNyZWF0ZVdpdGhNYWNoaW5lRnJhbWUpOgorICAgICAgICAoSlNDOjpDbG9uZWRBcmd1bWVu
dHM6OmNyZWF0ZUJ5Q29weWluZ0Zyb20pOgorICAgICAgICAoSlNDOjpDbG9uZWRBcmd1bWVudHM6
OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkNsb25lZEFyZ3VtZW50czo6Y3JlYXRl
U2xvd1B1dFN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9DbG9uZWRBcmd1bWVudHMuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aGF2ZUFC
YWRUaW1lKToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKwogMjAxNi0xMS0wMyAgS2VpdGgg
TWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBj
aGFuZ2Vsb2cgZml4IGR1ZSB0byBmYWlsZWQgZ2l0IHJlYmFzZS4uCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCShyZXZpc2lvbiAyMDgzNDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5ODEsNiAr
MTk4MSwxMCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAg
ICAgIGJyZWFrOwogICAgICAgICAKICAgICBjYXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKKyAg
ICAgICAgaWYgKCFtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQobm9k
ZSkpIHsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjT2Jq
ZWN0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0KG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+Y2xvbmVkQXJndW1lbnRzU3RydWN0dXJlKCkpOwogICAgICAgICBicmVhazsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAkocmV2
aXNpb24gMjA4MzQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MzQsNyArNzM0LDcgQEAgYm9vbCBBcnJheU1vZGU6OnBl
cm1pdHNCb3VuZHNDaGVja0xvd2VyaQogCiB2b2lkIEFycmF5TW9kZTo6ZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAogewotICAgIG91dC5wcmludCh0eXBlKCksIGFycmF5Q2xhc3MoKSwgc3Bl
Y3VsYXRpb24oKSwgY29udmVyc2lvbigpKTsKKyAgICBvdXQucHJpbnQodHlwZSgpLCAiKyIsIGFy
cmF5Q2xhc3MoKSwgIisiLCBzcGVjdWxhdGlvbigpLCAiKyIsIGNvbnZlcnNpb24oKSk7CiB9CiAK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjA4MzQzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1MCw2
ICsxNTUwLDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisg
ICAgICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOiB7CisgICAgICAgICAgICB3YXRjaEhh
dmluZ0FCYWRUaW1lKG5vZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAg
ICAgICBjYXNlIENyZWF0ZVNjb3BlZEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBDcmVhdGVBY3Rp
dmF0aW9uOgogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgpAQCAtMTc3Niw3ICsxNzgxLDYgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBJc09iamVjdE9yTnVsbDoKICAgICAgICAgY2FzZSBJc0Z1
bmN0aW9uOgogICAgICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKLSAgICAgICAgY2Fz
ZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgSnVtcDoKICAgICAgICAgY2Fz
ZSBSZXR1cm46CiAgICAgICAgIGNhc2UgVGFpbENhbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDIwODM0
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKIAogI2luY2x1ZGUgIkJhdGNoZWRUcmFu
c2l0aW9uT3B0aW1pemVyLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lQ2xvc3VyZS5oIgotI2luY2x1
ZGUgIkNsb25lZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUg
IkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkhlYXAuaCIKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcAkocmV2aXNpb24g
MjA4MzQzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTYgKzQ4LDM1IEBAIENsb25lZEFyZ3VtZW50cyog
Q2xvbmVkQXJndW1lbnRzOjpjcmVhdGUKICAgICBpZiAodmVjdG9yTGVuZ3RoID4gTUFYX1NUT1JB
R0VfVkVDVE9SX0xFTkdUSCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICB2b2lkKiB0ZW1wID0g
dm0uaGVhcC50cnlBbGxvY2F0ZUF1eGlsaWFyeShudWxscHRyLCBCdXR0ZXJmbHk6OnRvdGFsU2l6
ZSgwLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIHRydWUsIHZlY3Rvckxlbmd0aCAq
IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKTsKLSAgICBpZiAoIXRlbXApCi0gICAgICAgIHJldHVy
biAwOwotICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gQnV0dGVyZmx5Ojpmcm9tQmFzZSh0ZW1w
LCAwLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOwotICAgIGJ1dHRlcmZseS0+c2V0
VmVjdG9yTGVuZ3RoKHZlY3Rvckxlbmd0aCk7Ci0gICAgYnV0dGVyZmx5LT5zZXRQdWJsaWNMZW5n
dGgobGVuZ3RoKTsKKyAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseTsKKyAgICBpZiAoVU5MSUtFTFko
c3RydWN0dXJlLT5uZWVkc1Nsb3dQdXRJbmRleGluZygpKSkgeworICAgICAgICB2b2lkKiB0ZW1w
ID0gdm0uaGVhcC50cnlBbGxvY2F0ZUF1eGlsaWFyeShudWxscHRyLCBCdXR0ZXJmbHk6OnRvdGFs
U2l6ZSgwLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIHRydWUsIEFycmF5U3RvcmFn
ZTo6c2l6ZUZvcih2ZWN0b3JMZW5ndGgpKSk7CisgICAgICAgIGlmICghdGVtcCkKKyAgICAgICAg
ICAgIHJldHVybiAwOworCisgICAgICAgIGJ1dHRlcmZseSA9IEJ1dHRlcmZseTo6ZnJvbUJhc2Uo
dGVtcCwgMCwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKKyAgICAgICAgQXJyYXlT
dG9yYWdlKiBuZXdTdG9yYWdlID0gYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKTsKKyAgICAgICAg
bmV3U3RvcmFnZS0+c2V0VmVjdG9yTGVuZ3RoKHZlY3Rvckxlbmd0aCk7CisgICAgICAgIG5ld1N0
b3JhZ2UtPnNldExlbmd0aChsZW5ndGgpOworICAgICAgICBuZXdTdG9yYWdlLT5tX3NwYXJzZU1h
cC5jbGVhcigpOworICAgICAgICBuZXdTdG9yYWdlLT5tX2luZGV4QmlhcyA9IDA7CisgICAgICAg
IG5ld1N0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IgPSB2ZWN0b3JMZW5ndGg7CisKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHZlY3Rvckxlbmd0aDsgaSsrKQorICAgICAgICAg
ICAgbmV3U3RvcmFnZS0+bV92ZWN0b3JbaV0uY2xlYXIoKTsKKworICAgIH0gZWxzZSB7CisgICAg
ICAgIHZvaWQqIHRlbXAgPSB2bS5oZWFwLnRyeUFsbG9jYXRlQXV4aWxpYXJ5KG51bGxwdHIsIEJ1
dHRlcmZseTo6dG90YWxTaXplKDAsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSwgdHJ1
ZSwgdmVjdG9yTGVuZ3RoICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSkpOworICAgICAgICBpZiAo
IXRlbXApCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgYnV0dGVyZmx5ID0gQnV0dGVy
Zmx5Ojpmcm9tQmFzZSh0ZW1wLCAwLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOwor
ICAgICAgICBidXR0ZXJmbHktPnNldFZlY3Rvckxlbmd0aCh2ZWN0b3JMZW5ndGgpOworICAgICAg
ICBidXR0ZXJmbHktPnNldFB1YmxpY0xlbmd0aChsZW5ndGgpOworICAgICAgICAKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpIDwgdmVjdG9yTGVuZ3RoOyArK2kpCisgICAgICAg
ICAgICBidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtpXS5jbGVhcigpOworICAgIH0KICAgICAKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGkgPCB2ZWN0b3JMZW5ndGg7ICsraSkKLSAgICAg
ICAgYnV0dGVyZmx5LT5jb250aWd1b3VzKClbaV0uY2xlYXIoKTsKLQogICAgIENsb25lZEFyZ3Vt
ZW50cyogcmVzdWx0ID0KICAgICAgICAgbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8Q2xvbmVk
QXJndW1lbnRzPih2bS5oZWFwKSkKICAgICAgICAgQ2xvbmVkQXJndW1lbnRzKHZtLCBzdHJ1Y3R1
cmUsIGJ1dHRlcmZseSk7CkBAIC03MCw5ICs4OSwxMiBAQCBDbG9uZWRBcmd1bWVudHMqIENsb25l
ZEFyZ3VtZW50czo6Y3JlYXRlCiAKIENsb25lZEFyZ3VtZW50cyogQ2xvbmVkQXJndW1lbnRzOjpj
cmVhdGVFbXB0eShFeGVjU3RhdGUqIGV4ZWMsIEpTRnVuY3Rpb24qIGNhbGxlZSwgdW5zaWduZWQg
bGVuZ3RoKQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgLy8gTkIuIFNvbWUgY2xp
ZW50cyBtaWdodCBleHBlY3QgdGhhdCB0aGUgZ2xvYmFsIG9iamVjdCBvZiBvZiB0aGlzIG9iamVj
dCBpcyB0aGUgZ2xvYmFsIG9iamVjdAogICAgIC8vIG9mIHRoZSBjYWxsZWUuIFdlIGRvbid0IGRv
IHRoaXMgZm9yIG5vdywgYnV0IG1heWJlIHdlIHNob3VsZC4KLSAgICByZXR1cm4gY3JlYXRlRW1w
dHkoZXhlYy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jbG9uZWRBcmd1bWVu
dHNTdHJ1Y3R1cmUoKSwgY2FsbGVlLCBsZW5ndGgpOworICAgIENsb25lZEFyZ3VtZW50cyogcmVz
dWx0ID0gY3JlYXRlRW1wdHkodm0sIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+Y2xvbmVk
QXJndW1lbnRzU3RydWN0dXJlKCksIGNhbGxlZSwgbGVuZ3RoKTsKKyAgICBBU1NFUlQoIXJlc3Vs
dC0+c3RydWN0dXJlKHZtKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSB8fCBzaG91bGRVc2VTbG93
UHV0KHJlc3VsdC0+c3RydWN0dXJlKHZtKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICByZXR1cm4g
cmVzdWx0OwogfQogCiBDbG9uZWRBcmd1bWVudHMqIENsb25lZEFyZ3VtZW50czo6Y3JlYXRlV2l0
aElubGluZUZyYW1lKEV4ZWNTdGF0ZSogbXlGcmFtZSwgRXhlY1N0YXRlKiB0YXJnZXRGcmFtZSwg
SW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUsIEFyZ3VtZW50c01vZGUgbW9kZSkKQEAg
LTExNywxMiArMTM5LDE1IEBAIENsb25lZEFyZ3VtZW50cyogQ2xvbmVkQXJndW1lbnRzOjpjcmVh
dGUKICAgICB9IH0KIAogICAgIEFTU0VSVChteUZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkt
PmNsb25lZEFyZ3VtZW50c1N0cnVjdHVyZSgpID09IHJlc3VsdC0+c3RydWN0dXJlKCkpOworICAg
IEFTU0VSVCghcmVzdWx0LT5zdHJ1Y3R1cmUodm0pLT5uZWVkc1Nsb3dQdXRJbmRleGluZygpIHx8
IHNob3VsZFVzZVNsb3dQdXQocmVzdWx0LT5zdHJ1Y3R1cmUodm0pLT5pbmRleGluZ1R5cGUoKSkp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIENsb25lZEFyZ3VtZW50cyogQ2xvbmVkQXJndW1l
bnRzOjpjcmVhdGVXaXRoTWFjaGluZUZyYW1lKEV4ZWNTdGF0ZSogbXlGcmFtZSwgRXhlY1N0YXRl
KiB0YXJnZXRGcmFtZSwgQXJndW1lbnRzTW9kZSBtb2RlKQogewotICAgIHJldHVybiBjcmVhdGVX
aXRoSW5saW5lRnJhbWUobXlGcmFtZSwgdGFyZ2V0RnJhbWUsIG51bGxwdHIsIG1vZGUpOworICAg
IENsb25lZEFyZ3VtZW50cyogcmVzdWx0ID0gY3JlYXRlV2l0aElubGluZUZyYW1lKG15RnJhbWUs
IHRhcmdldEZyYW1lLCBudWxscHRyLCBtb2RlKTsKKyAgICBBU1NFUlQoIXJlc3VsdC0+c3RydWN0
dXJlKCktPm5lZWRzU2xvd1B1dEluZGV4aW5nKCkgfHwgc2hvdWxkVXNlU2xvd1B1dChyZXN1bHQt
PnN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
IENsb25lZEFyZ3VtZW50cyogQ2xvbmVkQXJndW1lbnRzOjpjcmVhdGVCeUNvcHlpbmdGcm9tKApA
QCAtMTM0LDIxICsxNTksMzAgQEAgQ2xvbmVkQXJndW1lbnRzKiBDbG9uZWRBcmd1bWVudHM6OmNy
ZWF0ZQogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaS0tOykKICAgICAgICAg
cmVzdWx0LT5pbml0aWFsaXplSW5kZXgodm0sIGksIGFyZ3VtZW50U3RhcnRbaV0uanNWYWx1ZSgp
KTsKLQorICAgIEFTU0VSVCghcmVzdWx0LT5zdHJ1Y3R1cmUodm0pLT5uZWVkc1Nsb3dQdXRJbmRl
eGluZygpIHx8IHNob3VsZFVzZVNsb3dQdXQocmVzdWx0LT5zdHJ1Y3R1cmUodm0pLT5pbmRleGlu
Z1R5cGUoKSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVN0cnVjdHVyZSogQ2xvbmVkQXJn
dW1lbnRzOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK1N0cnVjdHVyZSogQ2xvbmVkQXJndW1lbnRzOjpjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSwgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSkKIHsKLSAgICAvLyBXZSB1c2Ug
Y29udGlndW91cyBzdG9yYWdlIGJlY2F1c2Ugb3B0aW1pemF0aW9ucyBpbiB0aGUgRlRMIGFzc3Vt
ZSB0aGF0IGNsb25lZCBhcmd1bWVudHMgY3JlYXRpb24gYWx3YXlzIHByb2R1Y2VzIHRoZSBzYW1l
IGluaXRpYWwgc3RydWN0dXJlLgotCi0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpLCBOb25BcnJheVdpdGhDb250aWd1b3VzKTsKKyAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCksIGluZGV4aW5nVHlwZSk7CiAgICAgUHJvcGVydHlPZmZzZXQgb2Zmc2V0OwogICAgIHN0cnVj
dHVyZSA9IHN0cnVjdHVyZS0+YWRkUHJvcGVydHlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUsIHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCwgRG9udEVudW0sIG9mZnNldCk7CiAgICAgQVNTRVJUKG9m
ZnNldCA9PSBjbG9uZWRBcmd1bWVudHNMZW5ndGhQcm9wZXJ0eU9mZnNldCk7CiAgICAgcmV0dXJu
IHN0cnVjdHVyZTsKIH0KIAorU3RydWN0dXJlKiBDbG9uZWRBcmd1bWVudHM6OmNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90
eXBlKQoreworICAgIC8vIFdlIHVzZSBjb250aWd1b3VzIHN0b3JhZ2UgYmVjYXVzZSBvcHRpbWl6
YXRpb25zIGluIHRoZSBGVEwgYXNzdW1lIHRoYXQgY2xvbmVkIGFyZ3VtZW50cyBjcmVhdGlvbiBh
bHdheXMgcHJvZHVjZXMgdGhlIHNhbWUgaW5pdGlhbCBzdHJ1Y3R1cmUuCisgICAgcmV0dXJuIGNy
ZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIE5vbkFycmF5V2l0aENv
bnRpZ3VvdXMpOworfQorCitTdHJ1Y3R1cmUqIENsb25lZEFyZ3VtZW50czo6Y3JlYXRlU2xvd1B1
dFN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlKQoreworICAgIHJldHVybiBjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKTsKK30KKwogYm9v
bCBDbG9uZWRBcmd1bWVudHM6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBpZGVudCwgUHJvcGVydHlTbG90JiBzbG90KQog
ewogICAgIENsb25lZEFyZ3VtZW50cyogdGhpc09iamVjdCA9IGpzQ2FzdDxDbG9uZWRBcmd1bWVu
dHMqPihvYmplY3QpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVk
QXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2xvbmVkQXJndW1lbnRzLmgJKHJldmlzaW9uIDIwODM0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUzLDEyICs1Mywx
NSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIENsb25lZEFyZ3VtZW50cyogY3JlYXRlQnlDb3B5aW5n
RnJvbShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmUqLCBSZWdpc3RlciogYXJndW1lbnRzU3RhcnQsIHVu
c2lnbmVkIGxlbmd0aCwgSlNGdW5jdGlvbiogY2FsbGVlKTsKICAgICAKICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJv
dG90eXBlKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTbG93UHV0U3RydWN0dXJlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CiAKICAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBERUNMQVJFX0lO
Rk87CiAKIHByaXZhdGU6CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgSW5kZXhpbmdUeXBlKTsKKwog
ICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSos
IFByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90Jik7CiAgICAgc3RhdGljIHZvaWQgZ2V0T3duUHJv
cGVydHlOYW1lcyhKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5JiwgRW51
bWVyYXRpb25Nb2RlKTsKICAgICBzdGF0aWMgYm9vbCBwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBKU1ZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9u
IDIwODM0MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTM3LDcgKzUzNyw2IEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OmluaXQoVk0mIHZtKQogICAgIG1fcmVnRXhwUHJvdG90eXBlLnNldCh2bSwgdGhpcywgUmVn
RXhwUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIFJlZ0V4cFByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsKICAgICBtX3JlZ0V4
cFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIFJlZ0V4cE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZt
LCB0aGlzLCBtX3JlZ0V4cFByb3RvdHlwZS5nZXQoKSkpOwogICAgIG1fcmVnRXhwTWF0Y2hlc0Fy
cmF5U3RydWN0dXJlLnNldCh2bSwgdGhpcywgY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0
dXJlKHZtLCB0aGlzKSk7Ci0gICAgbV9yZWdFeHBNYXRjaGVzQXJyYXlTbG93UHV0U3RydWN0dXJl
LnNldCh2bSwgdGhpcywgY3JlYXRlUmVnRXhwTWF0Y2hlc0FycmF5U2xvd1B1dFN0cnVjdHVyZSh2
bSwgdGhpcykpOwogCiAgICAgbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBK
U01vZHVsZVJlY29yZDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlw
ZS5nZXQoKSkpOwogICAgIG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlLnNldCh2bSwg
dGhpcywgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywg
anNOdWxsKCkpKTsKQEAgLTEwNTIsOCArMTA1MSwxMiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojpo
YXZlQUJhZFRpbWUoVk0mIHZtCiAgICAgICAgIG1fYXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1No
YXBlRHVyaW5nQWxsb2NhdGlvbltpXS5zZXQodm0sIHRoaXMsIG9yaWdpbmFsQXJyYXlTdHJ1Y3R1
cmVGb3JJbmRleGluZ1R5cGUoQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSkpOwogCiAgICAg
Ly8gU2FtZSBmb3IgYW55IHNwZWNpYWwgYXJyYXkgc3RydWN0dXJlcy4KLSAgICBtX3JlZ0V4cE1h
dGNoZXNBcnJheVN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIG1fcmVnRXhwTWF0Y2hlc0FycmF5U2xv
d1B1dFN0cnVjdHVyZS5nZXQoKSk7Ci0gICAgCisgICAgU3RydWN0dXJlKiBzbG93UHV0U3RydWN0
dXJlOworICAgIHNsb3dQdXRTdHJ1Y3R1cmUgPSBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTbG93
UHV0U3RydWN0dXJlKHZtLCB0aGlzKTsKKyAgICBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVy
ZS5zZXQodm0sIHRoaXMsIHNsb3dQdXRTdHJ1Y3R1cmUpOworICAgIHNsb3dQdXRTdHJ1Y3R1cmUg
PSBDbG9uZWRBcmd1bWVudHM6OmNyZWF0ZVNsb3dQdXRTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2Jq
ZWN0UHJvdG90eXBlLmdldCgpKTsKKyAgICBtX2Nsb25lZEFyZ3VtZW50c1N0cnVjdHVyZS5zZXQo
dm0sIHRoaXMsIHNsb3dQdXRTdHJ1Y3R1cmUpOworCiAgICAgLy8gTWFrZSBzdXJlIHRoYXQgYWxs
IG9iamVjdHMgdGhhdCBoYXZlIGluZGV4ZWQgc3RvcmFnZSBzd2l0Y2ggdG8gdGhlIHNsb3cga2lu
ZCBvZgogICAgIC8vIGluZGV4ZWQgc3RvcmFnZS4KICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBm
b3VuZE9iamVjdHM7IC8vIFVzZSBNYXJrZWRBcmd1bWVudEJ1ZmZlciBiZWNhdXNlIHN3aXRjaFRv
U2xvd1B1dEFycmF5U3RvcmFnZSgpIG1heSBHQy4KQEAgLTExOTEsNyArMTE5NCw2IEBAIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4oSlNDZWwKICAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9nZW5lcmF0b3JGdW5jdGlvblN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5h
cHBlbmQoJnRoaXNPYmplY3QtPm1faXRlcmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmUpOwogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVy
ZSk7Ci0gICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5
U2xvd1B1dFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fbW9k
dWxlUmVjb3JkU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9t
b2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlz
T2JqZWN0LT5tX2RvbGxhclZNU3RydWN0dXJlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMjA4MzQzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMzIwLDcgKzMyMCw2IEBAIHB1YmxpYzoKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX2RvbGxhclZNU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1faXRl
cmF0b3JSZXN1bHRPYmplY3RTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4g
bV9yZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1cmU7Ci0gICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gbV9yZWdFeHBNYXRjaGVzQXJyYXlTbG93UHV0U3RydWN0dXJlOwogICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fbW9kdWxlUmVjb3JkU3RydWN0dXJlOwogICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fbW9kdWxlTmFtZXNwYWNlT2JqZWN0U3RydWN0dXJlOwogICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fcHJveHlPYmplY3RTdHJ1Y3R1cmU7Cg==
</data>
<flag name="review"
          id="316636"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293863</attachid>
            <date>2016-11-03 22:15:29 -0700</date>
            <delta_ts>2016-11-03 22:15:29 -0700</delta_ts>
            <desc>patch for landing.</desc>
            <filename>bug-164200b.patch</filename>
            <type>text/plain</type>
            <size>26097</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDgzNjkpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE2LTExLTAzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBDbG9uZWRBcmd1bWVudHMgbmVlZCB0byBhbHNvIHN1cHBvcnQgaGF2ZUFC
YWRUaW1lIG1vZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjQyMDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI3MjExMzM2PgorCisgICAgICAg
IFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgICogc3RyZXNzL2hhdmUtYS1i
YWQtdGltZS13aXRoLWFyZ3VtZW50cy5qczogQWRkZWQuCisKIDIwMTYtMTEtMDMgIENvbW1pdCBR
dWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIyMDgzNjQuCkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9oYXZlLWEtYmFkLXRpbWUt
d2l0aC1hcmd1bWVudHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvaGF2ZS1hLWJh
ZC10aW1lLXdpdGgtYXJndW1lbnRzLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvc3RyZXNz
L2hhdmUtYS1iYWQtdGltZS13aXRoLWFyZ3VtZW50cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDE0MCBAQAorLy9AIHJ1bkZUTE5vQ0pJVAorCisvLyBUZXN0cyBhY2Nlc3NpbmcgYW4gZWxl
bWVudCBpbiBhcmd1bWVudHMgYmVmb3JlIGFuZCBhZnRlciBoYXZpbmcgYSBiYWQgdGltZS4KKy8v
IFRoaXMgdGVzdCBzaG91bGQgbm90IGNyYXNoLgorCitsZXQgdmVyYm9zZSA9IGZhbHNlOworCit2
YXIgdXRpbGl0aWVzID0gICAgICAgICAgICAgICAgICdmdW5jdGlvbiBzaG91bGRFcXVhbCh0ZXN0
SWQsIGFjdHVhbCwgZXhwZWN0ZWQpIHsnICsgJ1xuJyArCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICcgICAgaWYgKGFjdHVhbCAhPSBleHBlY3RlZCknICsgJ1xuJyArCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgIHRocm93IHRlc3RJZCArICI6IEVSUk9S
OiBleHBlY3QgIiArIGV4cGVjdGVkICsgIiwgYWN0dWFsICIgKyBhY3R1YWw7JyArICdcbicgKwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnfScgKyAnXG4nOworCit2YXIgaGF2ZUFC
YWRUaW1lID0gICAgICAgICAgICAgICdPYmplY3QuZGVmaW5lUHJvcGVydHkoT2JqZWN0LnByb3Rv
dHlwZSwgMjAsIHsgZ2V0KCkgeyByZXR1cm4gMjA7IH0gfSk7JyArICdcbic7CisKK3ZhciBkaXJl
Y3RBcmd1bWVudHNEZWNsID0gICAgICAgJyAgICB2YXIgYXJncyA9IGFyZ3VtZW50czsnICsgJ1xu
JzsKKwordmFyIHNjb3BlZEFyZ3VtZW50c0RlY2wgPSAgICAgICAnICAgIHZhciBhcmdzID0gYXJn
dW1lbnRzOycgKyAnXG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICBm
dW5jdGlvbiBjbG9zdXJlKCkgeyByZXR1cm4geDsgfScgKyAnXG4nOworCit2YXIgY2xvbmVkQXJn
dW1lbnRzRGVjbCA9ICAgICAgICcgICAgInVzZSBzdHJpY3QiOycgKyAnXG4nICsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJyAgICB2YXIgYXJncyA9IGFyZ3VtZW50czsnICsgJ1xu
JzsKKworZnVuY3Rpb24gdGVzdEZ1bmN0aW9uKGFyZ3NEZWNsLCBpbnNlcnRFbGVtZW50QWN0aW9u
LCBpbmRleFRvUmV0dXJuKSB7CisgICAgdmFyIHNjcmlwdCA9ICAgICAgICAgICAgICAgICdmdW5j
dGlvbiB0ZXN0KHgpIHsnICsgJ1xuJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXJnc0RlY2wgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
c2VydEVsZW1lbnRBY3Rpb24gKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICAg
IHJldHVybiBhcmdzWycgKyBpbmRleFRvUmV0dXJuICsgJ107JyArICdcbicgKworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnfScgKyAnXG4nICsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ25vSW5saW5lKHRlc3QpOycgKyAnXG4nOworICAgIHJldHVybiBzY3JpcHQ7
Cit9CisKK2Z1bmN0aW9uIHdhcm11cEZ1bmN0aW9uKHRpZXJXYXJtdXBDb3VudCwgdGVzdEFyZ3Mp
IHsKKyAgICB2YXIgc2NyaXB0ID0gICAgICAgICAgICAgICAgJ2Z1bmN0aW9uIHdhcm11cCgpIHsn
ICsgJ1xuJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCAnICsgdGllcldhcm11cENvdW50ICsgJzsgaSsrKSB7JyArICdcbicgKworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgICB0ZXN0KCcgKyB0ZXN0QXJncyAr
ICcpOycgKyAnXG4nICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICB9JyAr
ICdcbicgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnfScgKyAnXG4nOworICAg
IHJldHVybiBzY3JpcHQ7Cit9CisKK2xldCBhcmd1bWVudHNEZWNscyA9IHsKKyAgICBkaXJlY3Q6
IGRpcmVjdEFyZ3VtZW50c0RlY2wsCisgICAgc2NvcGVkOiBzY29wZWRBcmd1bWVudHNEZWNsLAor
ICAgIGNsb25lZDogY2xvbmVkQXJndW1lbnRzRGVjbAorfTsKKworbGV0IGluZGljZXNUb1JldHVy
biA9IHsKKyAgICBpbkJvdW5kczogMCwKKyAgICBvdXRPZkJvdW5kc0luc2VydGVkRWxlbWVudDog
MTAsCisgICAgb3V0T2ZCb3VuZHNJblByb3RvdHlwZTogMjAKK307CisKK2xldCB0aWVyV2FybXVw
Q291bnRzID0geworICAgIGxsaW50OiAxLAorICAgIGJhc2VsaW5lOiA1MCwKKyAgICBkZmc6IDEw
MDAsCisgICAgZnRsOiAxMDAwMAorfTsKKworbGV0IHRlc3RBcmdzTGlzdCA9IHsKKyAgICBub0Fy
Z3M6ICAgeworICAgICAgICBhcmdzOiAnJywKKyAgICAgICAgcmVzdWx0OiB7CisgICAgICAgICAg
ICBpbkJvdW5kczogeyBiZWZvcmVCYWRUaW1lOiAndW5kZWZpbmVkJywgYWZ0ZXJCYWRUaW1lOiAn
dW5kZWZpbmVkJywgfSwKKyAgICAgICAgICAgIG91dE9mQm91bmRzSW5zZXJ0ZWRFbGVtZW50OiB7
IGJlZm9yZUJhZFRpbWU6ICcxMCcsIGFmdGVyQmFkVGltZTogJzEwJywgfSwKKyAgICAgICAgICAg
IG91dE9mQm91bmRzSW5Qcm90b3R5cGU6IHsgYmVmb3JlQmFkVGltZTogJ3VuZGVmaW5lZCcsIGFm
dGVyQmFkVGltZTogJzIwJywgfSwKKyAgICAgICAgfQorICAgIH0sCisgICAgc29tZUFyZ3M6IHsK
KyAgICAgICAgYXJnczogJzEsIDIsIDMnLAorICAgICAgICByZXN1bHQ6IHsKKyAgICAgICAgICAg
IGluQm91bmRzOiB7IGJlZm9yZUJhZFRpbWU6ICcxJywgYWZ0ZXJCYWRUaW1lOiAnMScsIH0sCisg
ICAgICAgICAgICBvdXRPZkJvdW5kc0luc2VydGVkRWxlbWVudDogeyBiZWZvcmVCYWRUaW1lOiAn
MTAnLCBhZnRlckJhZFRpbWU6ICcxMCcsIH0sCisgICAgICAgICAgICBvdXRPZkJvdW5kc0luUHJv
dG90eXBlOiB7IGJlZm9yZUJhZFRpbWU6ICd1bmRlZmluZWQnLCBhZnRlckJhZFRpbWU6ICcyMCcs
IH0sCisgICAgICAgIH0KKyAgICB9Cit9OworCitsZXQgaW5zZXJ0RWxlbWVudEFjdGlvbnMgPSB7
CisgICAgaW5zZXJ0RWxlbWVudDogICAgICAnICAgIGFyZ3NbMTBdID0gMTA7JyArICdcbicsCisg
ICAgZG9udEluc2VydEVsZW1lbnQ6ICAnJworfTsKKworZm9yIChsZXQgYXJnc0RlY2xJbmRleCBp
biBhcmd1bWVudHNEZWNscykgeworICAgIGxldCBhcmdzRGVjbCA9IGFyZ3VtZW50c0RlY2xzW2Fy
Z3NEZWNsSW5kZXhdOworCisgICAgZm9yIChsZXQgaW5kZXhUb1JldHVybkluZGV4IGluIGluZGlj
ZXNUb1JldHVybikgeworICAgICAgICBsZXQgaW5kZXhUb1JldHVybiA9IGluZGljZXNUb1JldHVy
bltpbmRleFRvUmV0dXJuSW5kZXhdOworCisgICAgICAgIGZvciAobGV0IGluc2VydEVsZW1lbnRB
Y3Rpb25JbmRleCBpbiBpbnNlcnRFbGVtZW50QWN0aW9ucykgeworICAgICAgICAgICAgbGV0IGlu
c2VydEVsZW1lbnRBY3Rpb24gPSBpbnNlcnRFbGVtZW50QWN0aW9uc1tpbnNlcnRFbGVtZW50QWN0
aW9uSW5kZXhdOworCisgICAgICAgICAgICBmb3IgKGxldCB0aWVyV2FybXVwQ291bnRJbmRleCBp
biB0aWVyV2FybXVwQ291bnRzKSB7CisgICAgICAgICAgICAgICAgbGV0IHRpZXJXYXJtdXBDb3Vu
dCA9IHRpZXJXYXJtdXBDb3VudHNbdGllcldhcm11cENvdW50SW5kZXhdOworCisgICAgICAgICAg
ICAgICAgZm9yIChsZXQgdGVzdEFyZ3NJbmRleCBpbiB0ZXN0QXJnc0xpc3QpIHsKKyAgICAgICAg
ICAgICAgICAgICAgbGV0IHRlc3RBcmdzID0gdGVzdEFyZ3NMaXN0W3Rlc3RBcmdzSW5kZXhdLmFy
Z3M7CisgICAgICAgICAgICAgICAgICAgIGxldCBleHBlY3RlZFJlc3VsdCA9IHRlc3RBcmdzTGlz
dFt0ZXN0QXJnc0luZGV4XS5yZXN1bHRbaW5kZXhUb1JldHVybkluZGV4XTsKKworICAgICAgICAg
ICAgICAgICAgICBpZiAoaW5kZXhUb1JldHVybkluZGV4ID09ICdvdXRPZkJvdW5kc0luc2VydGVk
RWxlbWVudCcKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIGluc2VydEVsZW1lbnRBY3Rpb25J
bmRleCA9PSAnZG9udEluc2VydEVsZW1lbnQnKQorICAgICAgICAgICAgICAgICAgICAgICAgZXhw
ZWN0ZWRSZXN1bHQgPSAndW5kZWZpbmVkJzsKKworICAgICAgICAgICAgICAgICAgICBsZXQgdGVz
dE5hbWUgPQorICAgICAgICAgICAgICAgICAgICAgICAgYXJnc0RlY2xJbmRleCArICctJyArCisg
ICAgICAgICAgICAgICAgICAgICAgICBpbmRleFRvUmV0dXJuSW5kZXggKyAnLScgKworICAgICAg
ICAgICAgICAgICAgICAgICAgaW5zZXJ0RWxlbWVudEFjdGlvbkluZGV4ICsgJy0nICsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRpZXJXYXJtdXBDb3VudEluZGV4ICsgJy0nICsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRlc3RBcmdzSW5kZXg7CisKKworICAgICAgICAgICAgICAgICAgICBs
ZXQgc2NyaXB0ID0gdXRpbGl0aWVzICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3RGdW5jdGlvbihhcmdzRGVjbCwgaW5zZXJ0RWxlbWVudEFjdGlvbiwgaW5kZXhUb1JldHVy
bikgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybXVwRnVuY3Rpb24odGll
cldhcm11cENvdW50LCB0ZXN0QXJncykgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3dhcm11cCgpJyArICdcbicgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3Nob3VsZEVxdWFsKDEwMDAwLCB0ZXN0KCcgKyB0ZXN0QXJncyArICcpLCAnICsgZXhwZWN0ZWRS
ZXN1bHRbJ2JlZm9yZUJhZFRpbWUnXSArICcpOycgKyAnXG4nOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaGF2ZUFCYWRUaW1lICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdzaG91bGRFcXVhbCgyMDAwMCwgdGVzdCgnICsgdGVzdEFyZ3MgKyAnKSwgJyArIGV4
cGVjdGVkUmVzdWx0WydhZnRlckJhZFRpbWUnXSArICcpOycgKyAnXG4nOworCisgICAgICAgICAg
ICAgICAgICAgIGlmICh2ZXJib3NlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgn
UnVubmluZyB0ZXN0IGNvbmZpZ3VyYXRpb246ICcgKyB0ZXN0TmFtZSk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBwcmludCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGVzdCBzY3Jp
cHQ6ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1c
bicgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdCArCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJz09PSBFTkQgc2NyaXB0ID09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Jyk7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgcnVuU3RyaW5n
KHNjcmlwdCk7CisgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHByaW50KCdGQUlMRUQgdGVzdCBjb25maWd1cmF0aW9uOiAnICsgdGVzdE5h
bWUpOworICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ0ZBSUxFRCB0ZXN0IHNjcmlwdDpc
bicgKyBzY3JpcHQpOworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA4MzY5
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDgzIEBACisyMDE2LTExLTAzICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4K
KworICAgICAgICBDbG9uZWRBcmd1bWVudHMgbmVlZCB0byBhbHNvIHN1cHBvcnQgaGF2ZUFCYWRU
aW1lIG1vZGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjQyMDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI3MjExMzM2PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgIEZvciB0aG9zZSB3aG8gYXJlIG5v
dCBmYW1pbGlhciB3aXRoIHRoZSBwYXJsYW5jZSwgImhhdmUgYSBiYWQgdGltZSIgaW4gdGhlIFZN
CisgICAgICAgIG1lYW5zIHRoYXQgT2JqZWN0LnByb3RvdHlwZSBoYXMgYmVlbiBtb2RpZmllZCBp
biBzdWNoIGEgd2F5IHRoYXQgd2UgY2FuIG5vIGxvbmdlcgorICAgICAgICB0cml2aWFsbHkgZG8g
aW5kZXhlZCBwcm9wZXJ0eSBhY2Nlc3NlcyB3aXRob3V0IGNvbnN1bHRpbmcgdGhlIE9iamVjdC5w
cm90b3R5cGUuCisgICAgICAgIFRoaXMgZGVmZWF0cyBKSVQgaW5kZXhlZCBwdXQgb3B0aW1pemF0
aW9ucywgYW5kIGhlbmNlLCBtYWtlcyB0aGUgVk0gImhhdmUgYQorICAgICAgICBiYWQgdGltZSIu
CisKKyAgICAgICAgT25jZSB0aGUgVk0gZW50ZXJzIGhhdmVBQmFkVGltZSBtb2RlLCBhbGwgZXhp
c3Rpbmcgb2JqZWN0cyBhcmUgY29udmVydGVkIHRvIHVzZQorICAgICAgICBzbG93IHB1dCBzdG9y
YWdlLiAgVGhlcmVhZnRlciwgSlNBcnJheXMgYXJlIGFsd2F5cyBjcmVhdGVkIHdpdGggc2xvdyBw
dXQgc3RvcmFnZS4KKyAgICAgICAgSlNPYmplY3RzIGFyZSBhbHdheXMgY3JlYXRlZCB3aXRoIGEg
YmxhbmsgaW5kZXhpbmcgdHlwZS4gIFdoZW4gYSBuZXcgaW5kZXhlZAorICAgICAgICBwcm9wZXJ0
eSBpcyBwdXQgaW50byB0aGUgbmV3IG9iamVjdCwgaXRzIGluZGV4aW5nIHR5cGUgd2lsbCBiZSBj
b252ZXJ0ZWQgdG8gdGhlCisgICAgICAgIHNsb3cgcHV0IGFycmF5IGluZGV4aW5nIHR5cGUganVz
dCBiZWZvcmUgd2UgcGVyZm9ybSB0aGUgcHV0IG9wZXJhdGlvbi4gIFRoaXMgaXMKKyAgICAgICAg
aG93IHdlIGVuc3VyZSB0aGF0IHRoZSBvYmplY3RzIHdpbGwgYWxzbyB1c2Ugc2xvdyBwdXQgc3Rv
cmFnZS4KKworICAgICAgICBIb3dldmVyLCBDbG9uZWRBcmd1bWVudHMgaXMgYW4gb2JqZWN0IHdo
aWNoIHdhcyBwcmV2aW91c2x5IGNyZWF0ZWQgdW5jb25kaXRpb25hbGx5CisgICAgICAgIHRvIHVz
ZSBjb250aWd1b3VzIHN0b3JhZ2UuICBTdWJzZXF1ZW50bHksIGlmIHdlIHRyeSB0byBjYWxsIE9i
amVjdC5wcmV2ZW50RXh0ZW5zaW9ucygpCisgICAgICAgIG9uIHRoYXQgQ2xvbmVkQXJndW1lbnRz
IG9iamVjdCwgT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKCkgd2lsbDoKKyAgICAgICAgMS4gbWFr
ZSB0aGUgQ2xvbmVkQXJndW1lbnRzIGVudGVyIGRpY3Rpb25hcnkgaW5kZXhpbmcgbW9kZSwgd2hp
Y2ggbWVhbnMgaXQgd2lsbAorICAgICAgICAyLiBmaXJzdCBlbnN1cmUgdGhhdCB0aGUgQ2xvbmVk
QXJndW1lbnRzIGlzIHVzaW5nIHNsb3cgcHV0IGFycmF5IHN0b3JhZ2UgdmlhCisgICAgICAgICAg
IEpTT2JqZWN0OjplbnN1cmVBcnJheVN0b3JhZ2VTbG93KCkuCisKKyAgICAgICAgSG93ZXZlciwg
SlNPYmplY3Q6OmVuc3VyZUFycmF5U3RvcmFnZVNsb3coKSBleHBlY3RzIHRoYXQgd2UgbmV2ZXIg
c2VlIGFuIG9iamVjdAorICAgICAgICB3aXRoIGNvbnRpZ3VvdXMgc3RvcmFnZSBvbmNlIHdlJ3Jl
IGluIGhhdmVBQmFkVGltZSBtb2RlLiAgT3VyIENsb25lZEFyZ3VtZW50cworICAgICAgICBvYmpl
Y3QgZGlkIG5vdCBvYmV5IHRoaXMgaW52YXJpYW50LgorCisgICAgICAgIFRoZSBmaXggaXMgdG8g
bWFrZSB0aGUgQ2xvbmVkQXJndW1lbnRzIGZhY3RvcmllcyBjcmVhdGUgb2JqZWN0cyB0aGF0IHVz
ZSBzbG93IHB1dAorICAgICAgICBhcnJheSBzdG9yYWdlIHdoZW4gaW4gaGF2ZUFCYWRUaW1lIG1v
ZGUuICBUaGlzIG1lYW5zOgorCisgICAgICAgIDEuIEpTR2xvYmFsT2JqZWN0OjpoYXZlQUJhZFRp
bWUoKSBub3cgY2hhbmdlcyBtX2Nsb25lZEFyZ3VtZW50c1N0cnVjdHVyZSB0byB1c2UKKyAgICAg
ICAgICAgaXRzIHNsb3cgcHV0IHZlcnNpb24uCisKKyAgICAgICAgICAgQWxzbyB0aGUgY2FjaGlu
ZyBvZiB0aGUgc2xvdyBwdXQgdmVyc2lvbiBvZiBtX3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVy
ZSwKKyAgICAgICAgICAgYmVjYXVzZSB3ZSBvbmx5IG5lZWQgdG8gY3JlYXRlIGl0IHdoZW4gd2Ug
YXJlIGhhdmluZyBhIGJhZCB0aW1lLiAKKworICAgICAgICAyLiBUaGUgQ2xvbmVkQXJndW1lbnRz
IGZhY3RvcmllcyBub3cgYWxsb2NhdGVzIGEgYnV0dGVyZmx5IHdpdGggc2xvdyBwdXQgYXJyYXkK
KyAgICAgICAgICAgc3RvcmFnZSBpZiB3ZSdyZSBpbiBoYXZlQUJhZFRpbWUgbW9kZS4KKworICAg
ICAgICAgICBBbHNvIGFkZGVkIHNvbWUgYXNzZXJ0aW9ucyBpbiBDbG9uZWRBcmd1bWVudHMnIGZh
Y3RvcnkgbWV0aG9kcyB0byBlbnN1cmUgdGhhdAorICAgICAgICAgICB0aGUgY3JlYXRlZCBvYmpl
Y3QgaGFzIHRoZSBzbG93IHB1dCBpbmRleGluZyB0eXBlIHdoZW4gaXQgbmVlZHNTbG93UHV0SW5k
ZXhpbmcoKS4KKworICAgICAgICAzLiBERkdGaXh1cFBoYXNlIG5vdyB3YXRjaGVzIHRoZSBoYXZp
bmdBQmFkVGltZVdhdGNocG9pbnQgYmVjYXVzZSBDbG9uZWRBcmd1bWVudHMnCisgICAgICAgICAg
IHN0cnVjdHVyZSB3aWxsIGNoYW5nZSB3aGVuIGhhdmluZyBhIGJhZCB0aW1lLgorCisgICAgICAg
IDQuIERGR0FyZ3VtZW50RWxpbWluYXRpb25QaGFzZSBhbmQgREZHVmFyYXJnc0ZvcndhcmRpbmdQ
aGFzZSBuZWVkIG5vdCBiZSBjaGFuZ2VkCisgICAgICAgICAgIGJlY2F1c2UgaXQgaXMgc3RpbGwg
dmFsaWQgdG8gZWxpbWluYXRlIHRoZSBjcmVhdGlvbiBvZiB0aGUgYXJndW1lbnRzIG9iamVjdAor
ICAgICAgICAgICBldmVuIGhhdmluZyBhIGJhZCB0aW1lLCBhcyBsb25nIGFzIHRoZSBhcmd1bWVu
dHMgb2JqZWN0IGRvZXMgbm90IGVzY2FwZS4KKworICAgICAgICA1LiBUaGUgREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMgbm93IGNoZWNrcyBmb3IgaGF2ZUFCYWRUaW1lLCBhbmQgc2V0cyB0
aGUKKyAgICAgICAgICAgcHJlZGljdGVkIHR5cGUgdG8gYmUgU3BlY09iamVjdC4KKworICAgICAg
ICBOb3RlOiB0aGlzIGlzc3VlIGRvZXMgbm90IGFwcGx5IHRvIERpcmVjdEFyZ3VtZW50cyBhbmQg
U2NvcGVkQXJndW1lbnRzIGJlY2F1c2UKKyAgICAgICAgdGhleSB1c2UgYSBibGFuayBpbmRleGlu
ZyB0eXBlIChqdXN0IGxpa2UgSlNPYmplY3QpLgorCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcv
REZHQXJyYXlNb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6OmR1bXApOgor
ICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1
cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIHJ1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNw
cDoKKyAgICAgICAgKEpTQzo6Q2xvbmVkQXJndW1lbnRzOjpjcmVhdGVFbXB0eSk6CisgICAgICAg
IChKU0M6OkNsb25lZEFyZ3VtZW50czo6Y3JlYXRlV2l0aElubGluZUZyYW1lKToKKyAgICAgICAg
KEpTQzo6Q2xvbmVkQXJndW1lbnRzOjpjcmVhdGVXaXRoTWFjaGluZUZyYW1lKToKKyAgICAgICAg
KEpTQzo6Q2xvbmVkQXJndW1lbnRzOjpjcmVhdGVCeUNvcHlpbmdGcm9tKToKKyAgICAgICAgKEpT
Qzo6Q2xvbmVkQXJndW1lbnRzOjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpDbG9u
ZWRBcmd1bWVudHM6OmNyZWF0ZVNsb3dQdXRTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUv
Q2xvbmVkQXJndW1lbnRzLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OmhhdmVBQmFkVGltZSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisK
IDIwMTYtMTEtMDMgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMDgzNjQuCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCShyZXZpc2lvbiAyMDgzNjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5ODEsNiAr
MTk4MSwxMCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAg
ICAgIGJyZWFrOwogICAgICAgICAKICAgICBjYXNlIENyZWF0ZUNsb25lZEFyZ3VtZW50czoKKyAg
ICAgICAgaWYgKCFtX2dyYXBoLmlzV2F0Y2hpbmdIYXZpbmdBQmFkVGltZVdhdGNocG9pbnQobm9k
ZSkpIHsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCBTcGVjT2Jq
ZWN0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0KG1fZ3JhcGgsIG1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+Y2xvbmVkQXJndW1lbnRzU3RydWN0dXJlKCkpOwogICAgICAgICBicmVhazsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAkocmV2
aXNpb24gMjA4MzY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MzQsNyArNzM0LDcgQEAgYm9vbCBBcnJheU1vZGU6OnBl
cm1pdHNCb3VuZHNDaGVja0xvd2VyaQogCiB2b2lkIEFycmF5TW9kZTo6ZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAogewotICAgIG91dC5wcmludCh0eXBlKCksIGFycmF5Q2xhc3MoKSwgc3Bl
Y3VsYXRpb24oKSwgY29udmVyc2lvbigpKTsKKyAgICBvdXQucHJpbnQodHlwZSgpLCAiKyIsIGFy
cmF5Q2xhc3MoKSwgIisiLCBzcGVjdWxhdGlvbigpLCAiKyIsIGNvbnZlcnNpb24oKSk7CiB9CiAK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjA4MzY5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1MCw2
ICsxNTUwLDExIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisg
ICAgICAgIGNhc2UgQ3JlYXRlQ2xvbmVkQXJndW1lbnRzOiB7CisgICAgICAgICAgICB3YXRjaEhh
dmluZ0FCYWRUaW1lKG5vZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAg
ICAgICBjYXNlIENyZWF0ZVNjb3BlZEFyZ3VtZW50czoKICAgICAgICAgY2FzZSBDcmVhdGVBY3Rp
dmF0aW9uOgogICAgICAgICBjYXNlIE5ld0Z1bmN0aW9uOgpAQCAtMTc3Niw3ICsxNzgxLDYgQEAg
cHJpdmF0ZToKICAgICAgICAgY2FzZSBJc09iamVjdE9yTnVsbDoKICAgICAgICAgY2FzZSBJc0Z1
bmN0aW9uOgogICAgICAgICBjYXNlIENyZWF0ZURpcmVjdEFyZ3VtZW50czoKLSAgICAgICAgY2Fz
ZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6CiAgICAgICAgIGNhc2UgSnVtcDoKICAgICAgICAgY2Fz
ZSBSZXR1cm46CiAgICAgICAgIGNhc2UgVGFpbENhbGw6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDIwODM2
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAKIAogI2luY2x1ZGUgIkJhdGNoZWRUcmFu
c2l0aW9uT3B0aW1pemVyLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lQ2xvc3VyZS5oIgotI2luY2x1
ZGUgIkNsb25lZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUg
IkRpcmVjdEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkhlYXAuaCIKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcAkocmV2aXNpb24g
MjA4MzY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTYgKzQ4LDIzIEBAIENsb25lZEFyZ3VtZW50cyog
Q2xvbmVkQXJndW1lbnRzOjpjcmVhdGUKICAgICBpZiAodmVjdG9yTGVuZ3RoID4gTUFYX1NUT1JB
R0VfVkVDVE9SX0xFTkdUSCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICB2b2lkKiB0ZW1wID0g
dm0uaGVhcC50cnlBbGxvY2F0ZUF1eGlsaWFyeShudWxscHRyLCBCdXR0ZXJmbHk6OnRvdGFsU2l6
ZSgwLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIHRydWUsIHZlY3Rvckxlbmd0aCAq
IHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpKTsKLSAgICBpZiAoIXRlbXApCi0gICAgICAgIHJldHVy
biAwOwotICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gQnV0dGVyZmx5Ojpmcm9tQmFzZSh0ZW1w
LCAwLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCkpOwotICAgIGJ1dHRlcmZseS0+c2V0
VmVjdG9yTGVuZ3RoKHZlY3Rvckxlbmd0aCk7Ci0gICAgYnV0dGVyZmx5LT5zZXRQdWJsaWNMZW5n
dGgobGVuZ3RoKTsKKyAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseTsKKyAgICBpZiAoVU5MSUtFTFko
c3RydWN0dXJlLT5uZWVkc1Nsb3dQdXRJbmRleGluZygpKSkgeworICAgICAgICBidXR0ZXJmbHkg
PSBjcmVhdGVBcnJheVN0b3JhZ2VCdXR0ZXJmbHkodm0sIG51bGxwdHIsIHN0cnVjdHVyZSwgbGVu
Z3RoLCB2ZWN0b3JMZW5ndGgpOworICAgICAgICBidXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpLT5t
X251bVZhbHVlc0luVmVjdG9yID0gdmVjdG9yTGVuZ3RoOworCisgICAgfSBlbHNlIHsKKyAgICAg
ICAgdm9pZCogdGVtcCA9IHZtLmhlYXAudHJ5QWxsb2NhdGVBdXhpbGlhcnkobnVsbHB0ciwgQnV0
dGVyZmx5Ojp0b3RhbFNpemUoMCwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCB0cnVl
LCB2ZWN0b3JMZW5ndGggKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7CisgICAgICAgIGlmICgh
dGVtcCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBidXR0ZXJmbHkgPSBCdXR0ZXJm
bHk6OmZyb21CYXNlKHRlbXAsIDAsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7Cisg
ICAgICAgIGJ1dHRlcmZseS0+c2V0VmVjdG9yTGVuZ3RoKHZlY3Rvckxlbmd0aCk7CisgICAgICAg
IGJ1dHRlcmZseS0+c2V0UHVibGljTGVuZ3RoKGxlbmd0aCk7CisgICAgICAgIAorICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGkgPCB2ZWN0b3JMZW5ndGg7ICsraSkKKyAgICAgICAg
ICAgIGJ1dHRlcmZseS0+Y29udGlndW91cygpW2ldLmNsZWFyKCk7CisgICAgfQogICAgIAotICAg
IGZvciAodW5zaWduZWQgaSA9IGxlbmd0aDsgaSA8IHZlY3Rvckxlbmd0aDsgKytpKQotICAgICAg
ICBidXR0ZXJmbHktPmNvbnRpZ3VvdXMoKVtpXS5jbGVhcigpOwotCiAgICAgQ2xvbmVkQXJndW1l
bnRzKiByZXN1bHQgPQogICAgICAgICBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxDbG9uZWRB
cmd1bWVudHM+KHZtLmhlYXApKQogICAgICAgICBDbG9uZWRBcmd1bWVudHModm0sIHN0cnVjdHVy
ZSwgYnV0dGVyZmx5KTsKQEAgLTcwLDkgKzc3LDEyIEBAIENsb25lZEFyZ3VtZW50cyogQ2xvbmVk
QXJndW1lbnRzOjpjcmVhdGUKIAogQ2xvbmVkQXJndW1lbnRzKiBDbG9uZWRBcmd1bWVudHM6OmNy
ZWF0ZUVtcHR5KEV4ZWNTdGF0ZSogZXhlYywgSlNGdW5jdGlvbiogY2FsbGVlLCB1bnNpZ25lZCBs
ZW5ndGgpCiB7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICAvLyBOQi4gU29tZSBjbGll
bnRzIG1pZ2h0IGV4cGVjdCB0aGF0IHRoZSBnbG9iYWwgb2JqZWN0IG9mIG9mIHRoaXMgb2JqZWN0
IGlzIHRoZSBnbG9iYWwgb2JqZWN0CiAgICAgLy8gb2YgdGhlIGNhbGxlZS4gV2UgZG9uJ3QgZG8g
dGhpcyBmb3Igbm93LCBidXQgbWF5YmUgd2Ugc2hvdWxkLgotICAgIHJldHVybiBjcmVhdGVFbXB0
eShleGVjLT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNsb25lZEFyZ3VtZW50
c1N0cnVjdHVyZSgpLCBjYWxsZWUsIGxlbmd0aCk7CisgICAgQ2xvbmVkQXJndW1lbnRzKiByZXN1
bHQgPSBjcmVhdGVFbXB0eSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5jbG9uZWRB
cmd1bWVudHNTdHJ1Y3R1cmUoKSwgY2FsbGVlLCBsZW5ndGgpOworICAgIEFTU0VSVCghcmVzdWx0
LT5zdHJ1Y3R1cmUodm0pLT5uZWVkc1Nsb3dQdXRJbmRleGluZygpIHx8IHNob3VsZFVzZVNsb3dQ
dXQocmVzdWx0LT5zdHJ1Y3R1cmUodm0pLT5pbmRleGluZ1R5cGUoKSkpOworICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKIENsb25lZEFyZ3VtZW50cyogQ2xvbmVkQXJndW1lbnRzOjpjcmVhdGVXaXRo
SW5saW5lRnJhbWUoRXhlY1N0YXRlKiBteUZyYW1lLCBFeGVjU3RhdGUqIHRhcmdldEZyYW1lLCBJ
bmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgQXJndW1lbnRzTW9kZSBtb2RlKQpAQCAt
MTE3LDEyICsxMjcsMTUgQEAgQ2xvbmVkQXJndW1lbnRzKiBDbG9uZWRBcmd1bWVudHM6OmNyZWF0
ZQogICAgIH0gfQogCiAgICAgQVNTRVJUKG15RnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+
Y2xvbmVkQXJndW1lbnRzU3RydWN0dXJlKCkgPT0gcmVzdWx0LT5zdHJ1Y3R1cmUoKSk7CisgICAg
QVNTRVJUKCFyZXN1bHQtPnN0cnVjdHVyZSh2bSktPm5lZWRzU2xvd1B1dEluZGV4aW5nKCkgfHwg
c2hvdWxkVXNlU2xvd1B1dChyZXN1bHQtPnN0cnVjdHVyZSh2bSktPmluZGV4aW5nVHlwZSgpKSk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogQ2xvbmVkQXJndW1lbnRzKiBDbG9uZWRBcmd1bWVu
dHM6OmNyZWF0ZVdpdGhNYWNoaW5lRnJhbWUoRXhlY1N0YXRlKiBteUZyYW1lLCBFeGVjU3RhdGUq
IHRhcmdldEZyYW1lLCBBcmd1bWVudHNNb2RlIG1vZGUpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVdp
dGhJbmxpbmVGcmFtZShteUZyYW1lLCB0YXJnZXRGcmFtZSwgbnVsbHB0ciwgbW9kZSk7CisgICAg
Q2xvbmVkQXJndW1lbnRzKiByZXN1bHQgPSBjcmVhdGVXaXRoSW5saW5lRnJhbWUobXlGcmFtZSwg
dGFyZ2V0RnJhbWUsIG51bGxwdHIsIG1vZGUpOworICAgIEFTU0VSVCghcmVzdWx0LT5zdHJ1Y3R1
cmUoKS0+bmVlZHNTbG93UHV0SW5kZXhpbmcoKSB8fCBzaG91bGRVc2VTbG93UHV0KHJlc3VsdC0+
c3RydWN0dXJlKCktPmluZGV4aW5nVHlwZSgpKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAog
Q2xvbmVkQXJndW1lbnRzKiBDbG9uZWRBcmd1bWVudHM6OmNyZWF0ZUJ5Q29weWluZ0Zyb20oCkBA
IC0xMzQsMjEgKzE0NywzMCBAQCBDbG9uZWRBcmd1bWVudHMqIENsb25lZEFyZ3VtZW50czo6Y3Jl
YXRlCiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gbGVuZ3RoOyBpLS07KQogICAgICAgICBy
ZXN1bHQtPmluaXRpYWxpemVJbmRleCh2bSwgaSwgYXJndW1lbnRTdGFydFtpXS5qc1ZhbHVlKCkp
OwotCisgICAgQVNTRVJUKCFyZXN1bHQtPnN0cnVjdHVyZSh2bSktPm5lZWRzU2xvd1B1dEluZGV4
aW5nKCkgfHwgc2hvdWxkVXNlU2xvd1B1dChyZXN1bHQtPnN0cnVjdHVyZSh2bSktPmluZGV4aW5n
VHlwZSgpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotU3RydWN0dXJlKiBDbG9uZWRBcmd1
bWVudHM6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG90eXBlKQorU3RydWN0dXJlKiBDbG9uZWRBcmd1bWVudHM6OmNyZWF0
ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
cHJvdG90eXBlLCBJbmRleGluZ1R5cGUgaW5kZXhpbmdUeXBlKQogewotICAgIC8vIFdlIHVzZSBj
b250aWd1b3VzIHN0b3JhZ2UgYmVjYXVzZSBvcHRpbWl6YXRpb25zIGluIHRoZSBGVEwgYXNzdW1l
IHRoYXQgY2xvbmVkIGFyZ3VtZW50cyBjcmVhdGlvbiBhbHdheXMgcHJvZHVjZXMgdGhlIHNhbWUg
aW5pdGlhbCBzdHJ1Y3R1cmUuCi0KLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IFN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCksIE5vbkFycmF5V2l0aENvbnRpZ3VvdXMpOworICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSwgaW5kZXhpbmdUeXBlKTsKICAgICBQcm9wZXJ0eU9mZnNldCBvZmZzZXQ7CiAgICAgc3RydWN0
dXJlID0gc3RydWN0dXJlLT5hZGRQcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0cnVjdHVyZSwgdm0u
cHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBEb250RW51bSwgb2Zmc2V0KTsKICAgICBBU1NFUlQob2Zm
c2V0ID09IGNsb25lZEFyZ3VtZW50c0xlbmd0aFByb3BlcnR5T2Zmc2V0KTsKICAgICByZXR1cm4g
c3RydWN0dXJlOwogfQogCitTdHJ1Y3R1cmUqIENsb25lZEFyZ3VtZW50czo6Y3JlYXRlU3RydWN0
dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5
cGUpCit7CisgICAgLy8gV2UgdXNlIGNvbnRpZ3VvdXMgc3RvcmFnZSBiZWNhdXNlIG9wdGltaXph
dGlvbnMgaW4gdGhlIEZUTCBhc3N1bWUgdGhhdCBjbG9uZWQgYXJndW1lbnRzIGNyZWF0aW9uIGFs
d2F5cyBwcm9kdWNlcyB0aGUgc2FtZSBpbml0aWFsIHN0cnVjdHVyZS4KKyAgICByZXR1cm4gY3Jl
YXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgTm9uQXJyYXlXaXRoQ29u
dGlndW91cyk7Cit9CisKK1N0cnVjdHVyZSogQ2xvbmVkQXJndW1lbnRzOjpjcmVhdGVTbG93UHV0
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90b3R5cGUpCit7CisgICAgcmV0dXJuIGNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpOworfQorCiBib29s
IENsb25lZEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIGlkZW50LCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CiAgICAgQ2xvbmVkQXJndW1lbnRzKiB0aGlzT2JqZWN0ID0ganNDYXN0PENsb25lZEFyZ3VtZW50
cyo+KG9iamVjdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRB
cmd1bWVudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
bG9uZWRBcmd1bWVudHMuaAkocmV2aXNpb24gMjA4MzY5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTMsMTIgKzUzLDE1
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ2xvbmVkQXJndW1lbnRzKiBjcmVhdGVCeUNvcHlpbmdG
cm9tKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZSosIFJlZ2lzdGVyKiBhcmd1bWVudHNTdGFydCwgdW5z
aWduZWQgbGVuZ3RoLCBKU0Z1bmN0aW9uKiBjYWxsZWUpOwogICAgIAogICAgIHN0YXRpYyBTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90
b3R5cGUpOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVNsb3dQdXRTdHJ1Y3R1cmUoVk0m
LCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlKTsKIAogICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIERFQ0xBUkVfSU5G
TzsKIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0m
LCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlLCBJbmRleGluZ1R5cGUpOworCiAg
ICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
UHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgdm9pZCBnZXRPd25Qcm9w
ZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVt
ZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBib29sIHB1dChKU0NlbGwqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAkocmV2aXNpb24g
MjA4MzY5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzcsNyArNTM3LDYgQEAgdm9pZCBKU0dsb2JhbE9iamVj
dDo6aW5pdChWTSYgdm0pCiAgICAgbV9yZWdFeHBQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBSZWdF
eHBQcm90b3R5cGU6OmNyZWF0ZSh2bSwgdGhpcywgUmVnRXhwUHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOwogICAgIG1fcmVnRXhw
U3RydWN0dXJlLnNldCh2bSwgdGhpcywgUmVnRXhwT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0s
IHRoaXMsIG1fcmVnRXhwUHJvdG90eXBlLmdldCgpKSk7CiAgICAgbV9yZWdFeHBNYXRjaGVzQXJy
YXlTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlzLCBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTdHJ1Y3R1
cmUodm0sIHRoaXMpKTsKLSAgICBtX3JlZ0V4cE1hdGNoZXNBcnJheVNsb3dQdXRTdHJ1Y3R1cmUu
c2V0KHZtLCB0aGlzLCBjcmVhdGVSZWdFeHBNYXRjaGVzQXJyYXlTbG93UHV0U3RydWN0dXJlKHZt
LCB0aGlzKSk7CiAKICAgICBtX21vZHVsZVJlY29yZFN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpT
TW9kdWxlUmVjb3JkOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIHRoaXMsIG1fb2JqZWN0UHJvdG90eXBl
LmdldCgpKSk7CiAgICAgbV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmUuc2V0KHZtLCB0
aGlzLCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBq
c051bGwoKSkpOwpAQCAtMTA1Miw4ICsxMDUxLDEyIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6Omhh
dmVBQmFkVGltZShWTSYgdm0KICAgICAgICAgbV9hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nU2hh
cGVEdXJpbmdBbGxvY2F0aW9uW2ldLnNldCh2bSwgdGhpcywgb3JpZ2luYWxBcnJheVN0cnVjdHVy
ZUZvckluZGV4aW5nVHlwZShBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKSk7CiAKICAgICAv
LyBTYW1lIGZvciBhbnkgc3BlY2lhbCBhcnJheSBzdHJ1Y3R1cmVzLgotICAgIG1fcmVnRXhwTWF0
Y2hlc0FycmF5U3RydWN0dXJlLnNldCh2bSwgdGhpcywgbV9yZWdFeHBNYXRjaGVzQXJyYXlTbG93
UHV0U3RydWN0dXJlLmdldCgpKTsKLSAgICAKKyAgICBTdHJ1Y3R1cmUqIHNsb3dQdXRTdHJ1Y3R1
cmU7CisgICAgc2xvd1B1dFN0cnVjdHVyZSA9IGNyZWF0ZVJlZ0V4cE1hdGNoZXNBcnJheVNsb3dQ
dXRTdHJ1Y3R1cmUodm0sIHRoaXMpOworICAgIG1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJl
LnNldCh2bSwgdGhpcywgc2xvd1B1dFN0cnVjdHVyZSk7CisgICAgc2xvd1B1dFN0cnVjdHVyZSA9
IENsb25lZEFyZ3VtZW50czo6Y3JlYXRlU2xvd1B1dFN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmpl
Y3RQcm90b3R5cGUuZ2V0KCkpOworICAgIG1fY2xvbmVkQXJndW1lbnRzU3RydWN0dXJlLnNldCh2
bSwgdGhpcywgc2xvd1B1dFN0cnVjdHVyZSk7CisKICAgICAvLyBNYWtlIHN1cmUgdGhhdCBhbGwg
b2JqZWN0cyB0aGF0IGhhdmUgaW5kZXhlZCBzdG9yYWdlIHN3aXRjaCB0byB0aGUgc2xvdyBraW5k
IG9mCiAgICAgLy8gaW5kZXhlZCBzdG9yYWdlLgogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGZv
dW5kT2JqZWN0czsgLy8gVXNlIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGJlY2F1c2Ugc3dpdGNoVG9T
bG93UHV0QXJyYXlTdG9yYWdlKCkgbWF5IEdDLgpAQCAtMTE5MSw3ICsxMTk0LDYgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbAogICAgIHZpc2l0b3IuYXBwZW5kKCZ0
aGlzT2JqZWN0LT5tX2dlbmVyYXRvckZ1bmN0aW9uU3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9pdGVyYXRvclJlc3VsdE9iamVjdFN0cnVjdHVyZSk7CiAgICAg
dmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1fcmVnRXhwTWF0Y2hlc0FycmF5U3RydWN0dXJl
KTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9yZWdFeHBNYXRjaGVzQXJyYXlT
bG93UHV0U3RydWN0dXJlKTsKICAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9tb2R1
bGVSZWNvcmRTdHJ1Y3R1cmUpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21v
ZHVsZU5hbWVzcGFjZU9iamVjdFN0cnVjdHVyZSk7CiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNP
YmplY3QtPm1fZG9sbGFyVk1TdHJ1Y3R1cmUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAyMDgzNjkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMjAsNyArMzIwLDYgQEAgcHVibGljOgogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fZG9sbGFyVk1TdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9pdGVy
YXRvclJlc3VsdE9iamVjdFN0cnVjdHVyZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X3JlZ0V4cE1hdGNoZXNBcnJheVN0cnVjdHVyZTsKLSAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX3JlZ0V4cE1hdGNoZXNBcnJheVNsb3dQdXRTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9tb2R1bGVSZWNvcmRTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9tb2R1bGVOYW1lc3BhY2VPYmplY3RTdHJ1Y3R1cmU7CiAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9wcm94eU9iamVjdFN0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDIwODM2OSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzY4LDE0ICs3NjgsMTAgQEAgQ29udGlndW91c0pTVmFsdWVzIEpTT2JqZWN0OjpjcmVhdGVJ
bml0aQogICAgIHJldHVybiBuZXdCdXR0ZXJmbHktPmNvbnRpZ3VvdXMoKTsKIH0KIAotQXJyYXlT
dG9yYWdlKiBKU09iamVjdDo6Y3JlYXRlQXJyYXlTdG9yYWdlKFZNJiB2bSwgdW5zaWduZWQgbGVu
Z3RoLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCitCdXR0ZXJmbHkqIEpTT2JqZWN0OjpjcmVhdGVB
cnJheVN0b3JhZ2VCdXR0ZXJmbHkoVk0mIHZtLCBKU0NlbGwqIGludGVuZGVkT3duZXIsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCwg
QnV0dGVyZmx5KiBvbGRCdXR0ZXJmbHkpCiB7Ci0gICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXAp
OwotICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKLSAgICBJ
bmRleGluZ1R5cGUgb2xkVHlwZSA9IGluZGV4aW5nVHlwZSgpOwotICAgIEFTU0VSVF9VTlVTRUQo
b2xkVHlwZSwgIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKG9sZFR5cGUpKTsKICAgICBCdXR0ZXJmbHkq
IG5ld0J1dHRlcmZseSA9IEJ1dHRlcmZseTo6Y3JlYXRlT3JHcm93QXJyYXlSaWdodCgKLSAgICAg
ICAgbV9idXR0ZXJmbHkuZ2V0KCksIHZtLCB0aGlzLCBzdHJ1Y3R1cmUsIHN0cnVjdHVyZS0+b3V0
T2ZMaW5lQ2FwYWNpdHkoKSwgZmFsc2UsIDAsCisgICAgICAgIG9sZEJ1dHRlcmZseSwgdm0sIGlu
dGVuZGVkT3duZXIsIHN0cnVjdHVyZSwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBm
YWxzZSwgMCwKICAgICAgICAgQXJyYXlTdG9yYWdlOjpzaXplRm9yKHZlY3Rvckxlbmd0aCkpOwog
ICAgIFJFTEVBU0VfQVNTRVJUKG5ld0J1dHRlcmZseSk7CiAKQEAgLTc4Nyw2ICs3ODMsMTkgQEAg
QXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y3JlYXRlQXJyYXlTdG9yYQogICAgIHJlc3VsdC0+bV9p
bmRleEJpYXMgPSAwOwogICAgIGZvciAoc2l6ZV90IGkgPSB2ZWN0b3JMZW5ndGg7IGktLTspCiAg
ICAgICAgIHJlc3VsdC0+bV92ZWN0b3JbaV0uc2V0V2l0aG91dFdyaXRlQmFycmllcihKU1ZhbHVl
KCkpOworCisgICAgcmV0dXJuIG5ld0J1dHRlcmZseTsKK30KKworQXJyYXlTdG9yYWdlKiBKU09i
amVjdDo6Y3JlYXRlQXJyYXlTdG9yYWdlKFZNJiB2bSwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25l
ZCB2ZWN0b3JMZW5ndGgpCit7CisgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOworICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKKyAgICBJbmRleGluZ1R5
cGUgb2xkVHlwZSA9IGluZGV4aW5nVHlwZSgpOworICAgIEFTU0VSVF9VTlVTRUQob2xkVHlwZSwg
IWhhc0luZGV4ZWRQcm9wZXJ0aWVzKG9sZFR5cGUpKTsKKworICAgIEJ1dHRlcmZseSogbmV3QnV0
dGVyZmx5ID0gY3JlYXRlQXJyYXlTdG9yYWdlQnV0dGVyZmx5KHZtLCB0aGlzLCBzdHJ1Y3R1cmUs
IGxlbmd0aCwgdmVjdG9yTGVuZ3RoLCBtX2J1dHRlcmZseS5nZXQoKSk7CisgICAgQXJyYXlTdG9y
YWdlKiByZXN1bHQgPSBuZXdCdXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpOwogICAgIFN0cnVjdHVy
ZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRpb24odm0sIHN0
cnVjdHVyZSwgc3RydWN0dXJlLT5zdWdnZXN0ZWRBcnJheVN0b3JhZ2VUcmFuc2l0aW9uKCkpOwog
ICAgIHNldFN0cnVjdHVyZUFuZEJ1dHRlcmZseSh2bSwgbmV3U3RydWN0dXJlLCBuZXdCdXR0ZXJm
bHkpOwogICAgIHJldHVybiByZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDIwODM2OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTkwMiw2ICs5MDIsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgdm9pZCBjcmVhdGVJbml0aWFsRm9yVmFsdWVBbmRTZXQoVk0mLCB1bnNp
Z25lZCBpbmRleCwgSlNWYWx1ZSk7CiAgICAgdm9pZCBjb252ZXJ0SW50MzJGb3JWYWx1ZShWTSYs
IEpTVmFsdWUpOwogICAgICAgICAKKyAgICBzdGF0aWMgQnV0dGVyZmx5KiBjcmVhdGVBcnJheVN0
b3JhZ2VCdXR0ZXJmbHkoVk0mLCBKU0NlbGwqIGludGVuZGVkT3duZXIsIFN0cnVjdHVyZSosIHVu
c2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgdmVjdG9yTGVuZ3RoLCBCdXR0ZXJmbHkqIG9sZEJ1dHRl
cmZseSA9IG51bGxwdHIpOwogICAgIEFycmF5U3RvcmFnZSogY3JlYXRlQXJyYXlTdG9yYWdlKFZN
JiwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpOwogICAgIEFycmF5U3Rv
cmFnZSogY3JlYXRlSW5pdGlhbEFycmF5U3RvcmFnZShWTSYpOwogICAgICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293864</attachid>
            <date>2016-11-03 22:16:23 -0700</date>
            <delta_ts>2016-11-03 22:16:48 -0700</delta_ts>
            <desc>diff between previous patch and the patch for landing.</desc>
            <filename>patch-diff.patch</filename>
            <type>text/plain</type>
            <size>6754</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">M2MzCjwgLS0tIEpTVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDgzNDMpCi0tLQo+IC0tLSBK
U1Rlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjA4MzY5KQoxMmMxMgo8ICsgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgotLS0KPiArICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJl
eSBHYXJlbi4KMTZjMTYKPCAgMjAxNi0xMS0wMyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxl
LmNvbT4KLS0tCj4gIDIwMTYtMTEtMDMgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJr
aXQub3JnPgoxOGMxOAo8ICAgICAgICAgIEFza2luZyBmb3IgYSB2YWx1ZSBwcm9maWxlIHByZWRp
Y3Rpb24gc2hvdWxkIGJlIGRlZmVuc2l2ZSBhZ2FpbnN0IG5vdCBmaW5kaW5nIGEgdmFsdWUgcHJv
ZmlsZQotLS0KPiAgICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjA4MzY0LgoxNjZj
MTY2CjwgLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODM0
MykKLS0tCj4gLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIw
ODM2OSkKMTY4YzE2OAo8IEBAIC0xLDMgKzEsODIgQEAKLS0tCj4gQEAgLTEsMyArMSw4MyBAQAox
NzVjMTc1CjwgKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCi0tLQo+ICsgICAg
ICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgoxODBjMTgwLDE4MQo8ICsgICAgICAgIFRo
aXMgZGVmZWF0cyBtYW55IEpJVCBvcHRpbWl6YXRpb25zLCBhbmQgaGVuY2UsIG1ha2VzIHRoZSBW
TSAiaGF2ZSBhIGJhZCB0aW1lIi4KLS0tCj4gKyAgICAgICAgVGhpcyBkZWZlYXRzIEpJVCBpbmRl
eGVkIHB1dCBvcHRpbWl6YXRpb25zLCBhbmQgaGVuY2UsIG1ha2VzIHRoZSBWTSAiaGF2ZSBhCj4g
KyAgICAgICAgYmFkIHRpbWUiLgoyNDhjMjQ5CjwgIDIwMTYtMTEtMDMgIEtlaXRoIE1pbGxlciAg
PGtlaXRoX21pbGxlckBhcHBsZS5jb20+Ci0tLQo+ICAyMDE2LTExLTAzICBDb21taXQgUXVldWUg
IDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KMjUwYzI1MQo8ICAgICAgICAgIFVucmV2aWV3ZWQs
IGNoYW5nZWxvZyBmaXggZHVlIHRvIGZhaWxlZCBnaXQgcmViYXNlLi4KLS0tCj4gICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIwODM2NC4KMjUzYzI1NAo8IC0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9u
IDIwODM0MykKLS0tCj4gLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJ
bnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjA4MzY5KQoyNjhjMjY5CjwgLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAkocmV2aXNpb24gMjA4MzQzKQot
LS0KPiAtLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCShyZXZp
c2lvbiAyMDgzNjkpCjI4MWMyODIKPCAtLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjA4MzQzKQotLS0KPiAtLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMjA4MzY5KQozMDVjMzA2Cjwg
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJl
dmlzaW9uIDIwODM0MykKLS0tCj4gLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDIwODM2OSkKMzE3YzMxOAo8IC0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3BwCShyZXZpc2lvbiAyMDgz
NDMpCi0tLQo+IC0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVu
dHMuY3BwCShyZXZpc2lvbiAyMDgzNjkpCjMxOWMzMjAKPCBAQCAtNDgsMTYgKzQ4LDM1IEBAIENs
b25lZEFyZ3VtZW50cyogQ2xvbmVkQXJndW1lbnRzOjpjcmVhdGUKLS0tCj4gQEAgLTQ4LDE2ICs0
OCwyMyBAQCBDbG9uZWRBcmd1bWVudHMqIENsb25lZEFyZ3VtZW50czo6Y3JlYXRlCjMzMSwzNDRj
MzMyLDMzMwo8ICsgICAgICAgIHZvaWQqIHRlbXAgPSB2bS5oZWFwLnRyeUFsbG9jYXRlQXV4aWxp
YXJ5KG51bGxwdHIsIEJ1dHRlcmZseTo6dG90YWxTaXplKDAsIHN0cnVjdHVyZS0+b3V0T2ZMaW5l
Q2FwYWNpdHkoKSwgdHJ1ZSwgQXJyYXlTdG9yYWdlOjpzaXplRm9yKHZlY3Rvckxlbmd0aCkpKTsK
PCArICAgICAgICBpZiAoIXRlbXApCjwgKyAgICAgICAgICAgIHJldHVybiAwOwo8ICsKPCArICAg
ICAgICBidXR0ZXJmbHkgPSBCdXR0ZXJmbHk6OmZyb21CYXNlKHRlbXAsIDAsIHN0cnVjdHVyZS0+
b3V0T2ZMaW5lQ2FwYWNpdHkoKSk7CjwgKyAgICAgICAgQXJyYXlTdG9yYWdlKiBuZXdTdG9yYWdl
ID0gYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKTsKPCArICAgICAgICBuZXdTdG9yYWdlLT5zZXRW
ZWN0b3JMZW5ndGgodmVjdG9yTGVuZ3RoKTsKPCArICAgICAgICBuZXdTdG9yYWdlLT5zZXRMZW5n
dGgobGVuZ3RoKTsKPCArICAgICAgICBuZXdTdG9yYWdlLT5tX3NwYXJzZU1hcC5jbGVhcigpOwo8
ICsgICAgICAgIG5ld1N0b3JhZ2UtPm1faW5kZXhCaWFzID0gMDsKPCArICAgICAgICBuZXdTdG9y
YWdlLT5tX251bVZhbHVlc0luVmVjdG9yID0gdmVjdG9yTGVuZ3RoOwo8ICsKPCArICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmVjdG9yTGVuZ3RoOyBpKyspCjwgKyAgICAgICAgICAg
IG5ld1N0b3JhZ2UtPm1fdmVjdG9yW2ldLmNsZWFyKCk7Ci0tLQo+ICsgICAgICAgIGJ1dHRlcmZs
eSA9IGNyZWF0ZUFycmF5U3RvcmFnZUJ1dHRlcmZseSh2bSwgbnVsbHB0ciwgc3RydWN0dXJlLCBs
ZW5ndGgsIHZlY3Rvckxlbmd0aCk7Cj4gKyAgICAgICAgYnV0dGVyZmx5LT5hcnJheVN0b3JhZ2Uo
KS0+bV9udW1WYWx1ZXNJblZlY3RvciA9IHZlY3Rvckxlbmd0aDsKMzY0YzM1Mwo8IEBAIC03MCw5
ICs4OSwxMiBAQCBDbG9uZWRBcmd1bWVudHMqIENsb25lZEFyZ3VtZW50czo6Y3JlYXRlCi0tLQo+
IEBAIC03MCw5ICs3NywxMiBAQCBDbG9uZWRBcmd1bWVudHMqIENsb25lZEFyZ3VtZW50czo6Y3Jl
YXRlCjM3OGMzNjcKPCBAQCAtMTE3LDEyICsxMzksMTUgQEAgQ2xvbmVkQXJndW1lbnRzKiBDbG9u
ZWRBcmd1bWVudHM6OmNyZWF0ZQotLS0KPiBAQCAtMTE3LDEyICsxMjcsMTUgQEAgQ2xvbmVkQXJn
dW1lbnRzKiBDbG9uZWRBcmd1bWVudHM6OmNyZWF0ZQozOTVjMzg0CjwgQEAgLTEzNCwyMSArMTU5
LDMwIEBAIENsb25lZEFyZ3VtZW50cyogQ2xvbmVkQXJndW1lbnRzOjpjcmVhdGUKLS0tCj4gQEAg
LTEzNCwyMSArMTQ3LDMwIEBAIENsb25lZEFyZ3VtZW50cyogQ2xvbmVkQXJndW1lbnRzOjpjcmVh
dGUKNDMzYzQyMgo8IC0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1
bWVudHMuaAkocmV2aXNpb24gMjA4MzQzKQotLS0KPiAtLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmgJKHJldmlzaW9uIDIwODM2OSkKNDYwYzQ0OQo8IC0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHJldmlz
aW9uIDIwODM0MykKLS0tCj4gLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAkocmV2aXNpb24gMjA4MzY5KQo0OTVjNDg0CjwgLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDIwODM0MykKLS0t
Cj4gLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJl
dmlzaW9uIDIwODM2OSkKNTA0YTQ5NCw1NDYKPiBJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuY3BwCj4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+IC0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDIwODM2OSkKPiArKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCj4gQEAg
LTc2OCwxNCArNzY4LDEwIEBAIENvbnRpZ3VvdXNKU1ZhbHVlcyBKU09iamVjdDo6Y3JlYXRlSW5p
dGkKPiAgICAgIHJldHVybiBuZXdCdXR0ZXJmbHktPmNvbnRpZ3VvdXMoKTsKPiAgfQo+ICAKPiAt
QXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y3JlYXRlQXJyYXlTdG9yYWdlKFZNJiB2bSwgdW5zaWdu
ZWQgbGVuZ3RoLCB1bnNpZ25lZCB2ZWN0b3JMZW5ndGgpCj4gK0J1dHRlcmZseSogSlNPYmplY3Q6
OmNyZWF0ZUFycmF5U3RvcmFnZUJ1dHRlcmZseShWTSYgdm0sIEpTQ2VsbCogaW50ZW5kZWRPd25l
ciwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgdmVjdG9y
TGVuZ3RoLCBCdXR0ZXJmbHkqIG9sZEJ1dHRlcmZseSkKPiAgewo+IC0gICAgRGVmZXJHQyBkZWZl
ckdDKHZtLmhlYXApOwo+IC0gICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSB0aGlzLT5zdHJ1Y3R1
cmUodm0pOwo+IC0gICAgSW5kZXhpbmdUeXBlIG9sZFR5cGUgPSBpbmRleGluZ1R5cGUoKTsKPiAt
ICAgIEFTU0VSVF9VTlVTRUQob2xkVHlwZSwgIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKG9sZFR5cGUp
KTsKPiAgICAgIEJ1dHRlcmZseSogbmV3QnV0dGVyZmx5ID0gQnV0dGVyZmx5OjpjcmVhdGVPckdy
b3dBcnJheVJpZ2h0KAo+IC0gICAgICAgIG1fYnV0dGVyZmx5LmdldCgpLCB2bSwgdGhpcywgc3Ry
dWN0dXJlLCBzdHJ1Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIGZhbHNlLCAwLAo+ICsgICAg
ICAgIG9sZEJ1dHRlcmZseSwgdm0sIGludGVuZGVkT3duZXIsIHN0cnVjdHVyZSwgc3RydWN0dXJl
LT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBmYWxzZSwgMCwKPiAgICAgICAgICBBcnJheVN0b3JhZ2U6
OnNpemVGb3IodmVjdG9yTGVuZ3RoKSk7Cj4gICAgICBSRUxFQVNFX0FTU0VSVChuZXdCdXR0ZXJm
bHkpOwo+ICAKPiBAQCAtNzg3LDYgKzc4MywxOSBAQCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0Ojpj
cmVhdGVBcnJheVN0b3JhCj4gICAgICByZXN1bHQtPm1faW5kZXhCaWFzID0gMDsKPiAgICAgIGZv
ciAoc2l6ZV90IGkgPSB2ZWN0b3JMZW5ndGg7IGktLTspCj4gICAgICAgICAgcmVzdWx0LT5tX3Zl
Y3RvcltpXS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKEpTVmFsdWUoKSk7Cj4gKwo+ICsgICAgcmV0
dXJuIG5ld0J1dHRlcmZseTsKPiArfQo+ICsKPiArQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6Y3Jl
YXRlQXJyYXlTdG9yYWdlKFZNJiB2bSwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCB2ZWN0b3JM
ZW5ndGgpCj4gK3sKPiArICAgIERlZmVyR0MgZGVmZXJHQyh2bS5oZWFwKTsKPiArICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gdGhpcy0+c3RydWN0dXJlKHZtKTsKPiArICAgIEluZGV4aW5nVHlw
ZSBvbGRUeXBlID0gaW5kZXhpbmdUeXBlKCk7Cj4gKyAgICBBU1NFUlRfVU5VU0VEKG9sZFR5cGUs
ICFoYXNJbmRleGVkUHJvcGVydGllcyhvbGRUeXBlKSk7Cj4gKwo+ICsgICAgQnV0dGVyZmx5KiBu
ZXdCdXR0ZXJmbHkgPSBjcmVhdGVBcnJheVN0b3JhZ2VCdXR0ZXJmbHkodm0sIHRoaXMsIHN0cnVj
dHVyZSwgbGVuZ3RoLCB2ZWN0b3JMZW5ndGgsIG1fYnV0dGVyZmx5LmdldCgpKTsKPiArICAgIEFy
cmF5U3RvcmFnZSogcmVzdWx0ID0gbmV3QnV0dGVyZmx5LT5hcnJheVN0b3JhZ2UoKTsKPiAgICAg
IFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpub25Qcm9wZXJ0eVRyYW5zaXRp
b24odm0sIHN0cnVjdHVyZSwgc3RydWN0dXJlLT5zdWdnZXN0ZWRBcnJheVN0b3JhZ2VUcmFuc2l0
aW9uKCkpOwo+ICAgICAgc2V0U3RydWN0dXJlQW5kQnV0dGVyZmx5KHZtLCBuZXdTdHJ1Y3R1cmUs
IG5ld0J1dHRlcmZseSk7Cj4gICAgICByZXR1cm4gcmVzdWx0Owo+IEluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj4gPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo+IC0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAyMDgzNjkpCj4gKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
PiBAQCAtOTAyLDYgKzkwMiw3IEBAIHByb3RlY3RlZDoKPiAgICAgIHZvaWQgY3JlYXRlSW5pdGlh
bEZvclZhbHVlQW5kU2V0KFZNJiwgdW5zaWduZWQgaW5kZXgsIEpTVmFsdWUpOwo+ICAgICAgdm9p
ZCBjb252ZXJ0SW50MzJGb3JWYWx1ZShWTSYsIEpTVmFsdWUpOwo+ICAgICAgICAgIAo+ICsgICAg
c3RhdGljIEJ1dHRlcmZseSogY3JlYXRlQXJyYXlTdG9yYWdlQnV0dGVyZmx5KFZNJiwgSlNDZWxs
KiBpbnRlbmRlZE93bmVyLCBTdHJ1Y3R1cmUqLCB1bnNpZ25lZCBsZW5ndGgsIHVuc2lnbmVkIHZl
Y3Rvckxlbmd0aCwgQnV0dGVyZmx5KiBvbGRCdXR0ZXJmbHkgPSBudWxscHRyKTsKPiAgICAgIEFy
cmF5U3RvcmFnZSogY3JlYXRlQXJyYXlTdG9yYWdlKFZNJiwgdW5zaWduZWQgbGVuZ3RoLCB1bnNp
Z25lZCB2ZWN0b3JMZW5ndGgpOwo+ICAgICAgQXJyYXlTdG9yYWdlKiBjcmVhdGVJbml0aWFsQXJy
YXlTdG9yYWdlKFZNJik7Cj4gICAgICAgICAgCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>