<?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>193228</bug_id>
          
          <creation_ts>2019-01-07 21:38:24 -0800</creation_ts>
          <short_desc>Web Inspector: Audit: provide a way to query for all nodes with a given computed Accessibility role</short_desc>
          <delta_ts>2019-01-18 15:13:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=193594</see_also>
          <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>
          <dependson>190754</dependson>
    
    <dependson>193149</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>joepeck</cc>
    
    <cc>samuel_white</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1492540</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-01-07 21:38:24 -0800</bug_when>
    <thetext>This would be functionally similar to `node.querySelectorAll(*[aria-role=&quot;...&quot;])`, but would instead compare to the computed role (e.g. not the markup value).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492541</commentid>
    <comment_count>1</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-01-07 21:38:38 -0800</bug_when>
    <thetext>&lt;rdar://problem/46787787&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1492545</commentid>
    <comment_count>2</comment_count>
      <attachid>358572</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-01-07 22:14:55 -0800</bug_when>
    <thetext>Created attachment 358572
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1493530</commentid>
    <comment_count>3</comment_count>
      <attachid>358850</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-01-10 16:48:59 -0800</bug_when>
    <thetext>Created attachment 358850
Patch

Throw an error when called outside of a test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494295</commentid>
    <comment_count>4</comment_count>
      <attachid>358850</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-01-14 14:06:57 -0800</bug_when>
    <thetext>Comment on attachment 358850
Patch

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

r=me

&gt; LayoutTests/inspector/audit/run-accessibility-expected.txt:22
&gt; +-- Running test case: Audit.run.Accessibility.getElementsByComputedRole.button
&gt; +Audit setup...
&gt; +Audit run `AUDIT.Accessibility.getElementsByComputedRole(&quot;button&quot;)`...
&gt; +Result: [&quot;#button&quot;]
&gt; +Audit teardown...

Lets have a test that returns multiple elements along side this one which just returns one.

&gt; LayoutTests/inspector/audit/run-accessibility.html:29
&gt; +    function evaluateStringForTest(func, target, role) {
&gt; +        if (target) {
&gt; +            if (role)
&gt; +                return `Accessibility.${func}(&quot;${role}&quot;, document.querySelector(&quot;#${target}&quot;))`;
&gt; +            return `Accessibility.${func}(document.querySelector(&quot;#${target}&quot;))`;
&gt; +        }
&gt; +
&gt; +        if (role)
&gt; +            return `Accessibility.${func}(&quot;${role}&quot;)`;
&gt; +    }

Having read a few of these now, I think having `AUDIT.Accessibility` here would be better for searchability as well instead of putting the AUDIT part later. Up to you.

&gt; Source/WebCore/inspector/InspectorAuditAccessibilityUtilities.cpp:42
&gt; +#define ERROR_IF_NO_ACTIVE_AUDIT() if (!m_auditAgent.hasActiveAudit()) return Exception { NotAllowedError, &quot;Unable to run outside of an Inspector Audit&quot;_s };

Style: Make this multiple lines to improve readability.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494574</commentid>
    <comment_count>5</comment_count>
      <attachid>359148</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-01-15 01:41:38 -0800</bug_when>
    <thetext>Created attachment 359148
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494636</commentid>
    <comment_count>6</comment_count>
      <attachid>359148</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-15 08:28:43 -0800</bug_when>
    <thetext>Comment on attachment 359148
Patch

Clearing flags on attachment: 359148

Committed r239986: &lt;https://trac.webkit.org/changeset/239986&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494637</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-01-15 08:28:45 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494765</commentid>
    <comment_count>8</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-01-15 12:45:34 -0800</bug_when>
    <thetext>The new test inspector/audit/run-accessibility.html

added in https://trac.webkit.org/changeset/239986/webkit

is a flakey failure on Mac.

History:
http://webkit-test-results.webkit.org/dashboards/flakiness_dashboard.html#showAllRuns=true&amp;tests=inspector%2Faudit%2Frun-accessibility.html

Diff:
--- /Volumes/Data/slave/mojave-release-tests-wk1/build/layout-test-results/inspector/audit/run-accessibility-expected.txt
+++ /Volumes/Data/slave/mojave-release-tests-wk1/build/layout-test-results/inspector/audit/run-accessibility-actual.txt
@@ -18,7 +18,7 @@
 -- Running test case: Audit.run.Accessibility.getElementsByComputedRole.tree
 Audit setup...
 Audit run `WebInspectorAudit.Accessibility.getElementsByComputedRole(&quot;tree&quot;)`...
-Result: [&quot;#parent&quot;]
+Result: []
 Audit teardown...
 
 -- Running test case: Audit.run.Accessibility.getElementsByComputedRole.tree.parent
@@ -30,7 +30,7 @@
 -- Running test case: Audit.run.Accessibility.getElementsByComputedRole.button
 Audit setup...
 Audit run `WebInspectorAudit.Accessibility.getElementsByComputedRole(&quot;button&quot;)`...
-Result: [&quot;#button&quot;,&quot;#link&quot;]
+Result: []
 Audit teardown...
 
 -- Running test case: Audit.run.Accessibility.getElementsByComputedRole.button.parent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495931</commentid>
    <comment_count>9</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-01-18 11:01:09 -0800</bug_when>
    <thetext>(In reply to Truitt Savell from comment #8)
&gt; The new test inspector/audit/run-accessibility.html
&gt; 
&gt; added in https://trac.webkit.org/changeset/239986/webkit
&gt; 
&gt; is a flakey failure on Mac.
This test only seems to fail on my machine if you run it in concert with other tests (or repeated iterations).  Running it by itself has always passed, but it doesn&apos;t seem to work with more than one run.

$ run-webkit-tests --no-build --no-sample --no-retry-failures --time-out-ms=5000 --force --verbose --iterations=100 --exit-after-n-failures=1 inspector/audit/run-accessibility.html

That seems to consistently fail on the 2nd or 3rd iteration.

Based on what I&apos;ve been able to figure out so far, it seems that we aren&apos;t creating a render tree for the new document, meaning that we early-return for any accessibility related calls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496058</commentid>
    <comment_count>10</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-01-18 15:13:58 -0800</bug_when>
    <thetext>(In reply to Devin Rousso from comment #9)
&gt; (In reply to Truitt Savell from comment #8)
&gt; &gt; The new test inspector/audit/run-accessibility.html
&gt; &gt; 
&gt; &gt; added in https://trac.webkit.org/changeset/239986/webkit
&gt; &gt; 
&gt; &gt; is a flakey failure on Mac.
&gt; This test only seems to fail on my machine if you run it in concert with
&gt; other tests (or repeated iterations).  Running it by itself has always
&gt; passed, but it doesn&apos;t seem to work with more than one run.
&gt; 
&gt; $ run-webkit-tests --no-build --no-sample --no-retry-failures
&gt; --time-out-ms=5000 --force --verbose --iterations=100
&gt; --exit-after-n-failures=1 inspector/audit/run-accessibility.html
&gt; 
&gt; That seems to consistently fail on the 2nd or 3rd iteration.
&gt; 
&gt; Based on what I&apos;ve been able to figure out so far, it seems that we aren&apos;t
&gt; creating a render tree for the new document, meaning that we early-return
&gt; for any accessibility related calls.
It looks like the problem was &quot;higher up&quot; than the Document.  The implementation of `getElementsByComputedRole` used `[CallWith=Document]` so that it could work without hassle inside any environment (rather than relying on the inspected page&apos;s main frame&apos;s document).  The issue was that the backing WebCore `InspectorAuditAccessibilityObject` was being reused across test runs, meaning that even though the page changed, the underlying object didn&apos;t.  My guess is that the reference to the JavaScript value was somehow being cached between these runs, and when we `toJS` the `InspectorAuditAccessibilityObject`, we get the old page&apos;s JavaScript value instead of the new one, which no longer has a render tree, meaning it wouldn&apos;t generate any accessibility objects.

&lt;https://webkit.org/b/193594&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358572</attachid>
            <date>2019-01-07 22:14:55 -0800</date>
            <delta_ts>2019-01-10 16:48:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>193228.diff</filename>
            <type>text/plain</type>
            <size>9400</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1MGE2ZjQ4NDM5Ni4uYjgxZmQ2NGRjYTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxOS0wMS0wNyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAg
V2ViIEluc3BlY3RvcjogQXVkaXQ6IHByb3ZpZGUgYSB3YXkgdG8gcXVlcnkgZm9yIGFsbCBub2Rl
cyB3aXRoIGEgZ2l2ZW4gY29tcHV0ZWQgQWNjZXNzaWJpbGl0eSByb2xlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMyMjgKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzQ2Nzg3Nzg3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogaW5zcGVjdG9yL2F1ZGl0L3J1bi1hY2Nlc3NpYmlsaXR5Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9hdWRpdC9ydW4tYWNjZXNzaWJpbGl0eS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorCiAyMDE5LTAxLTA2ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBBdWRpdDogY3JlYXRlIG5ldyBJREwgdHlw
ZSBmb3IgZXhwb3Npbmcgc3BlY2lhbCBmdW5jdGlvbmFsaXR5IGluIHRlc3QgY29udGV4dApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2F1ZGl0L3J1bi1hY2Nlc3NpYmlsaXR5LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9hdWRpdC9ydW4tYWNjZXNzaWJpbGl0
eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmI3
OWUxYTFlM2Y1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2F1ZGl0
L3J1bi1hY2Nlc3NpYmlsaXR5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI5IEBACitUZXN0cyBm
b3IgdGhlIGluamVjdGVkIEFVRElULkFjY2Vzc2liaWxpdHkgZnVuY3Rpb25zLgorCisKKworPT0g
UnVubmluZyB0ZXN0IHN1aXRlOiBBdWRpdC5ydW4uQWNjZXNzaWJpbGl0eQorLS0gUnVubmluZyB0
ZXN0IGNhc2U6IEF1ZGl0LnJ1bi5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJv
bGUuZmFrZVJvbGUKK0F1ZGl0IHNldHVwLi4uCitBdWRpdCBydW4gYEFVRElULkFjY2Vzc2liaWxp
dHkuZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZSgiZmFrZVJvbGUiKWAuLi4KK1Jlc3VsdDogW10K
K0F1ZGl0IHRlYXJkb3duLi4uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBBdWRpdC5ydW4uQWNj
ZXNzaWJpbGl0eS5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlLmZha2VSb2xlLnBhcmVudAorQXVk
aXQgc2V0dXAuLi4KK0F1ZGl0IHJ1biBgQVVESVQuQWNjZXNzaWJpbGl0eS5nZXRFbGVtZW50c0J5
Q29tcHV0ZWRSb2xlKCJmYWtlUm9sZSIsIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNwYXJlbnQi
KSlgLi4uCitSZXN1bHQ6IFtdCitBdWRpdCB0ZWFyZG93bi4uLgorCistLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogQXVkaXQucnVuLkFjY2Vzc2liaWxpdHkuZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZS5i
dXR0b24KK0F1ZGl0IHNldHVwLi4uCitBdWRpdCBydW4gYEFVRElULkFjY2Vzc2liaWxpdHkuZ2V0
RWxlbWVudHNCeUNvbXB1dGVkUm9sZSgiYnV0dG9uIilgLi4uCitSZXN1bHQ6IFsiI2J1dHRvbiJd
CitBdWRpdCB0ZWFyZG93bi4uLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogQXVkaXQucnVuLkFj
Y2Vzc2liaWxpdHkuZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZS5idXR0b24ucGFyZW50CitBdWRp
dCBzZXR1cC4uLgorQXVkaXQgcnVuIGBBVURJVC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlD
b21wdXRlZFJvbGUoImJ1dHRvbiIsIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNwYXJlbnQiKSlg
Li4uCitSZXN1bHQ6IFtdCitBdWRpdCB0ZWFyZG93bi4uLgorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvYXVkaXQvcnVuLWFjY2Vzc2liaWxpdHkuaHRtbCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9hdWRpdC9ydW4tYWNjZXNzaWJpbGl0eS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43MDU1ZWQ1N2M3NwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9hdWRpdC9ydW4tYWNjZXNzaWJpbGl0eS5odG1sCkBAIC0wLDAg
KzEsNzggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9hdWRpdC11dGlsaXRpZXMuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gc3RyaW5naWZ5KHJlc3VsdCkgeworICAgIGlmIChy
ZXN1bHQgaW5zdGFuY2VvZiBFbGVtZW50KQorICAgICAgICByZXR1cm4gIiMiICsgcmVzdWx0Lmlk
OworICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpCisgICAgICAgIHJldHVybiBKU09OLnN0
cmluZ2lmeShyZXN1bHQubWFwKHN0cmluZ2lmeSkpOworICAgIHJldHVybiBmYWxzZTsKK30KKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgYXN5bmMgZnVuY3Rpb24gYXVkaXRSdW4oZnVuY3Rpb25T
dHJpbmcsIGNoZWNrKSB7CisgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGBBdWRpdCBydW4gIiR7
ZnVuY3Rpb25TdHJpbmd9Ii4uLmApOworCisgICAgICAgIGxldCB7cmVzdWx0LCB3YXNUaHJvd259
ID0gYXdhaXQgQXVkaXRBZ2VudC5ydW4oZnVuY3Rpb25TdHJpbmcpOworICAgICAgICBJbnNwZWN0
b3JUZXN0LmFzc2VydCghd2FzVGhyb3duLCAiU2hvdWxkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24u
Iik7CisgICAgICAgIGlmICghd2FzVGhyb3duKQorICAgICAgICAgICAgY2hlY2socmVzdWx0KTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2cocmVzdWx0LmRlc2Ny
aXB0aW9uKTsKKyAgICB9CisKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LkF1ZGl0LmNy
ZWF0ZVN1aXRlKCJBdWRpdC5ydW4uQWNjZXNzaWJpbGl0eSIpOworCisgICAgY29uc3QgdGVzdHMg
PSBbCisgICAgICAgIHsgZnVuYzogImdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUiLCByb2xlOiAi
ZmFrZVJvbGUiIH0sCisgICAgICAgIHsgZnVuYzogImdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUi
LCByb2xlOiAiZmFrZVJvbGUiLCB0YXJnZXQ6ICJwYXJlbnQiIH0sCisgICAgICAgIHsgZnVuYzog
ImdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUiLCByb2xlOiAiYnV0dG9uIiB9LAorICAgICAgICB7
IGZ1bmM6ICJnZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlIiwgcm9sZTogImJ1dHRvbiIsIHRhcmdl
dDogInBhcmVudCIgfSwKKyAgICBdOworCisgICAgZm9yIChsZXQge2Z1bmMsIHJvbGUsIHRhcmdl
dH0gb2YgdGVzdHMpIHsKKyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAgICAg
bmFtZTogIkF1ZGl0LnJ1bi5BY2Nlc3NpYmlsaXR5LiIgKyBmdW5jICsgKHJvbGUgPyAiLiIgKyBy
b2xlIDogIiIpICsgKHRhcmdldCA/ICIuIiArIHRhcmdldCA6ICIiKSwKKyAgICAgICAgICAgIGFz
eW5jIHRlc3QoKSB7CisgICAgICAgICAgICAgICAgbGV0IGZ1bmN0aW9uU3RyaW5nID0gbnVsbDsK
KyAgICAgICAgICAgICAgICBpZiAodGFyZ2V0KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChy
b2xlKQorICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25TdHJpbmcgPSBgQVVESVQuQWNj
ZXNzaWJpbGl0eS4ke2Z1bmN9KCIke3JvbGV9IiwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiIyR7
dGFyZ2V0fSIpKWA7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uU3RyaW5nID0gYEFVRElULkFjY2Vzc2liaWxpdHkuJHtmdW5jfShkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCIjJHt0YXJnZXR9IikpYDsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKHJvbGUpCisgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uU3RyaW5nID1gQVVESVQu
QWNjZXNzaWJpbGl0eS4ke2Z1bmN9KCIke3JvbGV9IilgOworCisgICAgICAgICAgICAgICAgYXdh
aXQgSW5zcGVjdG9yVGVzdC5BdWRpdC5zZXR1cEF1ZGl0KCk7CisKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZyhgQXVkaXQgcnVuIFxgJHtmdW5jdGlvblN0cmluZ31cYC4uLmApOwor
ICAgICAgICAgICAgICAgIGxldCB7cmVzdWx0LCB3YXNUaHJvd259ID0gYXdhaXQgQXVkaXRBZ2Vu
dC5ydW4oYGZ1bmN0aW9uKCkgeyByZXR1cm4gc3RyaW5naWZ5KCR7ZnVuY3Rpb25TdHJpbmd9KTsg
fWApOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KCF3YXNUaHJvd24sICJT
aG91bGQgbm90IHRocm93IGFuIGV4Y2VwdGlvbi4iKTsKKyAgICAgICAgICAgICAgICBpZiAoIXdh
c1Rocm93bikKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlJlc3VsdDog
IiArIHJlc3VsdC52YWx1ZSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZyhyZXN1bHQuZGVzY3JpcHRpb24pOworCisgICAgICAgICAg
ICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5BdWRpdC50ZWFyZG93bkF1ZGl0KCk7CisgICAgICAg
ICAgICB9LAorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRG
aW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCki
PgorICAgIDxwPlRlc3RzIGZvciB0aGUgaW5qZWN0ZWQgQVVESVQuQWNjZXNzaWJpbGl0eSBmdW5j
dGlvbnMuPC9wPgorICAgIDx1bCBpZD0icGFyZW50IiByb2xlPSJ0cmVlIiBhcmlhLWFjdGl2ZWRl
c2NlbmRhbnQ9ImNoaWxkIiBhcmlhLWNvbnRyb2xzPSJjaGlsZCIgYXJpYS1mbG93dG89ImNoaWxk
IiBhcmlhLW93bnM9ImNoaWxkIiBvbmNsaWNrPSJ2b2lkKDApOyI+CisgICAgICAgIDxsaSBpZD0i
Y2hpbGQiIHJvbGU9InRyZWVpdGVtIiBhcmlhLXNlbGVjdGVkPSJ0cnVlIj48L2xpPgorICAgIDwv
dWw+CisgICAgPGJ1dHRvbiBpZD0iYnV0dG9uIj48L2J1dHRvbj4KKyAgICA8ZGl2IGlkPSJmYWtl
Um9sZSIgcm9sZT0iZmFrZVJvbGUiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDRmZDY3ZGExOGQ5Li4xZTdhMTQ5ZjRjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBA
CisyMDE5LTAxLTA3ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBBdWRpdDogcHJvdmlkZSBhIHdheSB0byBxdWVyeSBmb3IgYWxsIG5v
ZGVzIHdpdGggYSBnaXZlbiBjb21wdXRlZCBBY2Nlc3NpYmlsaXR5IHJvbGUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzIyOAorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNDY3ODc3ODc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGVzdDogaW5zcGVjdG9yL2F1ZGl0L3J1bi1hY2Nlc3NpYmlsaXR5Lmh0
bWwKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlVdGls
aXRpZXMuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxp
dHlVdGlsaXRpZXMuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3Np
YmlsaXR5VXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFjY2Vzc2libGl0eU9iamVj
dEZvck5vZGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckF1ZGl0QWNjZXNz
aWJpbGl0eVV0aWxpdGllczo6Z2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZSk6IEFkZGVkLgorCiAy
MDE5LTAxLTA2ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBBdWRpdDogY3JlYXRlIG5ldyBJREwgdHlwZSBmb3IgZXhwb3Npbmcgc3Bl
Y2lhbCBmdW5jdGlvbmFsaXR5IGluIHRlc3QgY29udGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eVV0aWxpdGllcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5VXRp
bGl0aWVzLmNwcAppbmRleCAwZTRlYmY4NTY5My4uZTdiZDE3NGQ2MmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlVdGlsaXRp
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vz
c2liaWxpdHlVdGlsaXRpZXMuY3BwCkBAIC0yNywxMCArMjcsNDAgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlVdGlsaXRpZXMuaCIK
IAorI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmgiCisjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgorI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CisjaW5jbHVkZSAiRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgorI2luY2x1ZGUgIk5vZGUu
aCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSW5z
cGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5VXRpbGl0aWVzOjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2li
aWxpdHlVdGlsaXRpZXMoKQogewogfQogCitzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNj
ZXNzaWJsaXR5T2JqZWN0Rm9yTm9kZShOb2RlJiBub2RlKQoreworICAgIGlmICghQVhPYmplY3RD
YWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkKKyAgICAgICAgQVhPYmplY3RDYWNoZTo6ZW5h
YmxlQWNjZXNzaWJpbGl0eSgpOworCisgICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2Fj
aGUgPSBub2RlLmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpKQorICAgICAgICByZXR1cm4gYXhP
YmplY3RDYWNoZS0+Z2V0T3JDcmVhdGUoJm5vZGUpOworICAgIHJldHVybiBudWxscHRyOworfQor
CitWZWN0b3I8UmVmPE5vZGU+PiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlVdGlsaXRpZXM6
OmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJp
bmcmIHJvbGUsIE5vZGUqIGNvbnRhaW5lcikKK3sKKyAgICBWZWN0b3I8UmVmPE5vZGU+PiBub2Rl
czsKKyAgICBmb3IgKEVsZW1lbnQmIGVsZW1lbnQgOiBlbGVtZW50RGVzY2VuZGFudHMoaXM8Q29u
dGFpbmVyTm9kZT4oY29udGFpbmVyKSA/IGRvd25jYXN0PENvbnRhaW5lck5vZGU+KCpjb250YWlu
ZXIpIDogZG9jdW1lbnQpKSB7CisgICAgICAgIGlmIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9i
amVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUoZWxlbWVudCkpIHsKKyAgICAgICAgICAg
IGlmIChheE9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCkgPT0gcm9sZSkKKyAgICAgICAgICAg
ICAgICBub2Rlcy5hcHBlbmQoZWxlbWVudCk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJu
IG5vZGVzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5VXRpbGl0aWVzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5VXRp
bGl0aWVzLmgKaW5kZXggYTc3MGE4MDg3YTQuLjk1ZDM5YzEzMmI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5VXRpbGl0aWVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJp
bGl0eVV0aWxpdGllcy5oCkBAIC0yNSwxMSArMjUsMTUgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERvY3VtZW50
OworY2xhc3MgTm9kZTsKKwogY2xhc3MgSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5VXRpbGl0
aWVzIDogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5VXRpbGl0
aWVzPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxp
dHlVdGlsaXRpZXM+IGNyZWF0ZSgpCkBAIC0zNyw2ICs0MSw4IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5VXRpbGl0aWVz
KCkpOwogICAgIH0KIAorICAgIFZlY3RvcjxSZWY8Tm9kZT4+IGdldEVsZW1lbnRzQnlDb21wdXRl
ZFJvbGUoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIHJvbGUsIE5vZGUqIGNvbnRhaW5lcik7CisK
IHByaXZhdGU6CiAgICAgSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5VXRpbGl0aWVzKCk7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNj
ZXNzaWJpbGl0eVV0aWxpdGllcy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQXVkaXRBY2Nlc3NpYmlsaXR5VXRpbGl0aWVzLmlkbAppbmRleCA3Y2NkNzJiYjA5My4uZTRj
ZjJlOGM5ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JB
dWRpdEFjY2Vzc2liaWxpdHlVdGlsaXRpZXMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlVdGlsaXRpZXMuaWRsCkBAIC0yOCw0ICsy
OCw1IEBACiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCiAgICAgTm9JbnRlcmZhY2VPYmplY3Qs
CiBdIGludGVyZmFjZSBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlVdGlsaXRpZXMgeworICAg
IFtDYWxsV2l0aD1Eb2N1bWVudF0gc2VxdWVuY2U8Tm9kZT4gZ2V0RWxlbWVudHNCeUNvbXB1dGVk
Um9sZShET01TdHJpbmcgcm9sZSwgb3B0aW9uYWwgTm9kZT8gY29udGFpbmVyKTsKIH07Cg==
</data>
<flag name="commit-queue"
          id="375394"
          type_id="3"
          status="-"
          setter="hi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>358850</attachid>
            <date>2019-01-10 16:48:59 -0800</date>
            <delta_ts>2019-01-15 01:41:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>193228.diff</filename>
            <type>text/plain</type>
            <size>12880</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwYjAxNWQ4ZmIyMC4uNmU0ZDljNDA1YzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxOS0wMS0xMCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAg
V2ViIEluc3BlY3RvcjogQXVkaXQ6IHByb3ZpZGUgYSB3YXkgdG8gcXVlcnkgZm9yIGFsbCBub2Rl
cyB3aXRoIGEgZ2l2ZW4gY29tcHV0ZWQgQWNjZXNzaWJpbGl0eSByb2xlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTMyMjgKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzQ2Nzg3Nzg3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogaW5zcGVjdG9yL2F1ZGl0L3J1bi1hY2Nlc3NpYmlsaXR5Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9hdWRpdC9ydW4tYWNjZXNzaWJpbGl0eS1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorCiAyMDE5LTAxLTA2ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBBdWRpdDogY3JlYXRlIG5ldyBJREwgdHlw
ZSBmb3IgZXhwb3Npbmcgc3BlY2lhbCBmdW5jdGlvbmFsaXR5IGluIHRlc3QgY29udGV4dApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2F1ZGl0L3J1bi1hY2Nlc3NpYmlsaXR5LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9hdWRpdC9ydW4tYWNjZXNzaWJpbGl0
eS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmQ4
NjQxMDNiYmJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2F1ZGl0
L3J1bi1hY2Nlc3NpYmlsaXR5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM3IEBACitUZXN0cyBm
b3IgdGhlIGluamVjdGVkIEFVRElULkFjY2Vzc2liaWxpdHkgZnVuY3Rpb25zLgorCisKKworPT0g
UnVubmluZyB0ZXN0IHN1aXRlOiBBdWRpdC5ydW4uQWNjZXNzaWJpbGl0eQorLS0gUnVubmluZyB0
ZXN0IGNhc2U6IEF1ZGl0LnJ1bi5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJv
bGUuRmFrZVJvbGUKK0F1ZGl0IHNldHVwLi4uCitBdWRpdCBydW4gYEFVRElULkFjY2Vzc2liaWxp
dHkuZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZSgiRmFrZVJvbGUiKWAuLi4KK1Jlc3VsdDogW10K
K0F1ZGl0IHRlYXJkb3duLi4uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBBdWRpdC5ydW4uQWNj
ZXNzaWJpbGl0eS5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlLkZha2VSb2xlLnBhcmVudAorQXVk
aXQgc2V0dXAuLi4KK0F1ZGl0IHJ1biBgQVVESVQuQWNjZXNzaWJpbGl0eS5nZXRFbGVtZW50c0J5
Q29tcHV0ZWRSb2xlKCJGYWtlUm9sZSIsIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNwYXJlbnQi
KSlgLi4uCitSZXN1bHQ6IFtdCitBdWRpdCB0ZWFyZG93bi4uLgorCistLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogQXVkaXQucnVuLkFjY2Vzc2liaWxpdHkuZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZS5i
dXR0b24KK0F1ZGl0IHNldHVwLi4uCitBdWRpdCBydW4gYEFVRElULkFjY2Vzc2liaWxpdHkuZ2V0
RWxlbWVudHNCeUNvbXB1dGVkUm9sZSgiYnV0dG9uIilgLi4uCitSZXN1bHQ6IFsiI2J1dHRvbiJd
CitBdWRpdCB0ZWFyZG93bi4uLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogQXVkaXQucnVuLkFj
Y2Vzc2liaWxpdHkuZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZS5idXR0b24ucGFyZW50CitBdWRp
dCBzZXR1cC4uLgorQXVkaXQgcnVuIGBBVURJVC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlD
b21wdXRlZFJvbGUoImJ1dHRvbiIsIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNwYXJlbnQiKSlg
Li4uCitSZXN1bHQ6IFtdCitBdWRpdCB0ZWFyZG93bi4uLgorCistLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogQXVkaXQucnVuLkFjY2Vzc2liaWxpdHkuSW52YWxpZENvcGllZEZ1bmN0aW9uQ2FsbAorQXVk
aXQgc2V0dXAuLi4KK0NvcHlpbmcgQVVESVQgdG8gd2luZG93Li4uCitBdWRpdCB0ZWFyZG93bi4u
LgorVGVzdGluZyBjb3BpZWQgZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZS4uLgorUEFTUzogU2hv
dWxkIHByb2R1Y2UgYW4gZXhjZXB0aW9uLgorRXJyb3I6IE5vdEFsbG93ZWRFcnJvcjogVW5hYmxl
IHRvIHJ1biBvdXRzaWRlIG9mIGFuIEluc3BlY3RvciBBdWRpdAorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvYXVkaXQvcnVuLWFjY2Vzc2liaWxpdHkuaHRtbCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9hdWRpdC9ydW4tYWNjZXNzaWJpbGl0eS5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lYzNiNmY2NDk1NAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9hdWRpdC9ydW4tYWNjZXNzaWJpbGl0eS5odG1sCkBAIC0w
LDAgKzEsOTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9hdWRpdC11dGlsaXRpZXMuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gc3RyaW5naWZ5KHJlc3VsdCkgeworICAgIGlm
IChyZXN1bHQgaW5zdGFuY2VvZiBFbGVtZW50KQorICAgICAgICByZXR1cm4gIiMiICsgcmVzdWx0
LmlkOworICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpCisgICAgICAgIHJldHVybiBKU09O
LnN0cmluZ2lmeShyZXN1bHQubWFwKHN0cmluZ2lmeSkpOworICAgIHJldHVybiBmYWxzZTsKK30K
KworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5BdWRp
dC5jcmVhdGVTdWl0ZSgiQXVkaXQucnVuLkFjY2Vzc2liaWxpdHkiKTsKKworICAgIGZ1bmN0aW9u
IGV2YWx1YXRlU3RyaW5nRm9yVGVzdChmdW5jLCB0YXJnZXQsIHJvbGUpIHsKKyAgICAgICAgaWYg
KHRhcmdldCkgeworICAgICAgICAgICAgaWYgKHJvbGUpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGBBY2Nlc3NpYmlsaXR5LiR7ZnVuY30oIiR7cm9sZX0iLCBkb2N1bWVudC5xdWVyeVNlbGVjdG9y
KCIjJHt0YXJnZXR9IikpYDsKKyAgICAgICAgICAgIHJldHVybiBgQWNjZXNzaWJpbGl0eS4ke2Z1
bmN9KGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiMke3RhcmdldH0iKSlgOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKHJvbGUpCisgICAgICAgICAgICByZXR1cm4gYEFjY2Vzc2liaWxpdHkuJHtm
dW5jfSgiJHtyb2xlfSIpYDsKKyAgICB9CisKKyAgICBjb25zdCB0ZXN0cyA9IFsKKyAgICAgICAg
eyBmdW5jOiAiZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZSIsIHJvbGU6ICJGYWtlUm9sZSIgfSwK
KyAgICAgICAgeyBmdW5jOiAiZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZSIsIHJvbGU6ICJGYWtl
Um9sZSIsIHRhcmdldDogInBhcmVudCIgfSwKKyAgICAgICAgeyBmdW5jOiAiZ2V0RWxlbWVudHNC
eUNvbXB1dGVkUm9sZSIsIHJvbGU6ICJidXR0b24iIH0sCisgICAgICAgIHsgZnVuYzogImdldEVs
ZW1lbnRzQnlDb21wdXRlZFJvbGUiLCByb2xlOiAiYnV0dG9uIiwgdGFyZ2V0OiAicGFyZW50IiB9
LAorICAgIF07CisKKyAgICBmb3IgKGxldCB7ZnVuYywgdGFyZ2V0LCByb2xlfSBvZiB0ZXN0cykg
eworICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgICAgICBuYW1lOiAiQXVkaXQu
cnVuLkFjY2Vzc2liaWxpdHkuIiArIGZ1bmMgKyAocm9sZSA/ICIuIiArIHJvbGUgOiAiIikgKyAo
dGFyZ2V0ID8gIi4iICsgdGFyZ2V0IDogIiIpLAorICAgICAgICAgICAgYXN5bmMgdGVzdCgpIHsK
KyAgICAgICAgICAgICAgICBsZXQgZnVuY3Rpb25TdHJpbmcgPSAiQVVESVQuIiArIGV2YWx1YXRl
U3RyaW5nRm9yVGVzdChmdW5jLCB0YXJnZXQsIHJvbGUpOworCisgICAgICAgICAgICAgICAgYXdh
aXQgSW5zcGVjdG9yVGVzdC5BdWRpdC5zZXR1cEF1ZGl0KCk7CisKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZyhgQXVkaXQgcnVuIFxgJHtmdW5jdGlvblN0cmluZ31cYC4uLmApOwor
ICAgICAgICAgICAgICAgIGxldCB7cmVzdWx0LCB3YXNUaHJvd259ID0gYXdhaXQgQXVkaXRBZ2Vu
dC5ydW4oYGZ1bmN0aW9uKCkgeyByZXR1cm4gc3RyaW5naWZ5KCR7ZnVuY3Rpb25TdHJpbmd9KTsg
fWApOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KCF3YXNUaHJvd24sICJT
aG91bGQgbm90IHRocm93IGFuIGV4Y2VwdGlvbi4iKTsKKyAgICAgICAgICAgICAgICBpZiAoIXdh
c1Rocm93bikKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlJlc3VsdDog
IiArIHJlc3VsdC52YWx1ZSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZyhyZXN1bHQuZGVzY3JpcHRpb24pOworCisgICAgICAgICAg
ICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5BdWRpdC50ZWFyZG93bkF1ZGl0KCk7CisgICAgICAg
ICAgICB9LAorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Cisg
ICAgICAgIG5hbWU6ICJBdWRpdC5ydW4uQWNjZXNzaWJpbGl0eS5JbnZhbGlkQ29waWVkRnVuY3Rp
b25DYWxsIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IEFVRElULkFjY2Vzc2li
aWxpdHkgZnVuY3Rpb25zIHRocm93IGFuIGVycm9yIHdoZW4gY2FsbGVkIG91dHNpZGUgb2YgYW4g
YXVkaXQuIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBmdW5jdGlv
bnMgPSBuZXcgTWFwOworICAgICAgICAgICAgZm9yIChsZXQgdGVzdCBvZiB0ZXN0cykKKyAgICAg
ICAgICAgICAgICBmdW5jdGlvbnMuc2V0KHRlc3QuZnVuYywgdGVzdCk7CisKKyAgICAgICAgICAg
IGF3YWl0IEluc3BlY3RvclRlc3QuQXVkaXQuc2V0dXBBdWRpdCgpOworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coYENvcHlpbmcgQVVESVQgdG8gd2luZG93Li4uYCk7CisgICAgICAgICAg
ICBsZXQge3dhc1Rocm93bn0gPSBhd2FpdCBBdWRpdEFnZW50LnJ1bihgZnVuY3Rpb24oKSB7IHdp
bmRvdy5BVURJVENvcHkgPSBBVURJVDsgfWApOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnQoIXdhc1Rocm93biwgIlNob3VsZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uLiIpOworICAg
ICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5BdWRpdC50ZWFyZG93bkF1ZGl0KCk7CisKKyAg
ICAgICAgICAgIGZvciAobGV0IHtmdW5jLCB0YXJnZXQsIHJvbGV9IG9mIGZ1bmN0aW9ucy52YWx1
ZXMoKSkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGBUZXN0aW5nIGNvcGll
ZCAke2Z1bmN9Li4uYCk7CisgICAgICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5leHBl
Y3RFeGNlcHRpb24oYXN5bmMgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIGF3YWl0
IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoIndpbmRvdy5BVURJVENvcHkuIiArIGV2YWx1
YXRlU3RyaW5nRm9yVGVzdChmdW5jLCB0YXJnZXQsIHJvbGUpKTsKKyAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRl
c3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
InJ1blRlc3QoKSI+CisgICAgPHA+VGVzdHMgZm9yIHRoZSBpbmplY3RlZCBBVURJVC5BY2Nlc3Np
YmlsaXR5IGZ1bmN0aW9ucy48L3A+CisgICAgPHVsIGlkPSJwYXJlbnQiIHJvbGU9InRyZWUiIGFy
aWEtYWN0aXZlZGVzY2VuZGFudD0iY2hpbGQiIGFyaWEtY29udHJvbHM9ImNoaWxkIiBhcmlhLWZs
b3d0bz0iY2hpbGQiIGFyaWEtb3ducz0iY2hpbGQiIG9uY2xpY2s9InZvaWQoMCk7Ij4KKyAgICAg
ICAgPGxpIGlkPSJjaGlsZCIgcm9sZT0idHJlZWl0ZW0iIGFyaWEtc2VsZWN0ZWQ9InRydWUiPjwv
bGk+CisgICAgPC91bD4KKyAgICA8YnV0dG9uIGlkPSJidXR0b24iPjwvYnV0dG9uPgorICAgIDxk
aXYgaWQ9ImZha2VSb2xlIiByb2xlPSJmYWtlUm9sZSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggYzA1MDY4ZGMwMDMuLjg1YTQ1NDkxODM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMTktMDEtMTAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEF1ZGl0OiBwcm92aWRlIGEgd2F5IHRvIHF1ZXJ5
IGZvciBhbGwgbm9kZXMgd2l0aCBhIGdpdmVuIGNvbXB1dGVkIEFjY2Vzc2liaWxpdHkgcm9sZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzMjI4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS80Njc4Nzc4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBpbnNwZWN0b3IvYXVkaXQvcnVuLWFjY2Vz
c2liaWxpdHkuaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNz
aWJpbGl0eVV0aWxpdGllcy5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0
QWNjZXNzaWJpbGl0eVV0aWxpdGllcy5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JB
dWRpdEFjY2Vzc2liaWxpdHlVdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWNjZXNz
aWJsaXR5T2JqZWN0Rm9yTm9kZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
QXVkaXRBY2Nlc3NpYmlsaXR5VXRpbGl0aWVzOjpnZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKTog
QWRkZWQuCisKIDIwMTktMDEtMTAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEF1ZGl0OiBjcmVhdGUgbmV3IElETCB0eXBlIGZvciBl
eHBvc2luZyBzcGVjaWFsIGZ1bmN0aW9uYWxpdHkgaW4gdGVzdCBjb250ZXh0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5VXRp
bGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vz
c2liaWxpdHlVdGlsaXRpZXMuY3BwCmluZGV4IDNjODRmYzNiOWNhLi5hMDg3NTdkODU2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJp
bGl0eVV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckF1ZGl0QWNjZXNzaWJpbGl0eVV0aWxpdGllcy5jcHAKQEAgLTI3LDEyICsyNyw0NyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eVV0
aWxpdGllcy5oIgogCisjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgorI2luY2x1ZGUgIkFjY2Vz
c2liaWxpdHlPYmplY3QuaCIKKyNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCisjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCisjaW5j
bHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCi1JbnNwZWN0b3JBdWRpdEFjY2Vz
c2liaWxpdHlVdGlsaXRpZXM6Okluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eVV0aWxpdGllcygp
CisjZGVmaW5lIEVSUk9SX0lGX05PX0FDVElWRV9BVURJVCgpIGlmICghbV9hdWRpdEFnZW50Lmhh
c0FjdGl2ZUF1ZGl0KCkpIHJldHVybiBFeGNlcHRpb24geyBOb3RBbGxvd2VkRXJyb3IsICJVbmFi
bGUgdG8gcnVuIG91dHNpZGUgb2YgYW4gSW5zcGVjdG9yIEF1ZGl0Il9zIH07CisKK0luc3BlY3Rv
ckF1ZGl0QWNjZXNzaWJpbGl0eVV0aWxpdGllczo6SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5
VXRpbGl0aWVzKEluc3BlY3RvckF1ZGl0QWdlbnQmIGF1ZGl0QWdlbnQpCisgICAgOiBtX2F1ZGl0
QWdlbnQoYXVkaXRBZ2VudCkKIHsKIH0KIAorc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFj
Y2Vzc2libGl0eU9iamVjdEZvck5vZGUoTm9kZSYgbm9kZSkKK3sKKyAgICBpZiAoIUFYT2JqZWN0
Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkpCisgICAgICAgIEFYT2JqZWN0Q2FjaGU6OmVu
YWJsZUFjY2Vzc2liaWxpdHkoKTsKKworICAgIGlmIChBWE9iamVjdENhY2hlKiBheE9iamVjdENh
Y2hlID0gbm9kZS5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKSkKKyAgICAgICAgcmV0dXJuIGF4
T2JqZWN0Q2FjaGUtPmdldE9yQ3JlYXRlKCZub2RlKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30K
KworRXhjZXB0aW9uT3I8VmVjdG9yPFJlZjxOb2RlPj4+IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJp
bGl0eVV0aWxpdGllczo6Z2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZShEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFN0cmluZyYgcm9sZSwgTm9kZSogY29udGFpbmVyKQoreworICAgIEVSUk9SX0lG
X05PX0FDVElWRV9BVURJVCgpOworCisgICAgVmVjdG9yPFJlZjxOb2RlPj4gbm9kZXM7CisgICAg
Zm9yIChFbGVtZW50JiBlbGVtZW50IDogZWxlbWVudERlc2NlbmRhbnRzKGlzPENvbnRhaW5lck5v
ZGU+KGNvbnRhaW5lcikgPyBkb3duY2FzdDxDb250YWluZXJOb2RlPigqY29udGFpbmVyKSA6IGRv
Y3VtZW50KSkgeworICAgICAgICBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QgPSBh
Y2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKGVsZW1lbnQpKSB7CisgICAgICAgICAgICBpZiAoYXhP
YmplY3QtPmNvbXB1dGVkUm9sZVN0cmluZygpID09IHJvbGUpCisgICAgICAgICAgICAgICAgbm9k
ZXMuYXBwZW5kKGVsZW1lbnQpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBub2RlczsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eVV0aWxpdGllcy5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eVV0aWxpdGllcy5o
CmluZGV4IDM3YzY3YmIxZjI1Li4yZmM0NWQ2OWY1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eVV0aWxpdGllcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlVdGls
aXRpZXMuaApAQCAtMjUsMjAgKzI1LDMwIEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAi
RXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBdWRpdEFn
ZW50Lmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBEb2N1bWVudDsKK2NsYXNzIE5vZGU7CisKIGNsYXNzIEluc3BlY3RvckF1ZGl0QWNjZXNzaWJp
bGl0eVV0aWxpdGllcyA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvckF1ZGl0QWNjZXNzaWJp
bGl0eVV0aWxpdGllcz4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yQXVkaXRB
Y2Nlc3NpYmlsaXR5VXRpbGl0aWVzPiBjcmVhdGUoKQorICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9y
QXVkaXRBY2Nlc3NpYmlsaXR5VXRpbGl0aWVzPiBjcmVhdGUoSW5zcGVjdG9yOjpJbnNwZWN0b3JB
dWRpdEFnZW50JiBhdWRpdEFnZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5VXRpbGl0aWVzKCkpOworICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlVdGlsaXRpZXMoYXVk
aXRBZ2VudCkpOwogICAgIH0KIAorICAgIEV4Y2VwdGlvbk9yPFZlY3RvcjxSZWY8Tm9kZT4+PiBn
ZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiByb2xlLCBO
b2RlKiBjb250YWluZXIpOworCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IEluc3BlY3RvckF1ZGl0
QWNjZXNzaWJpbGl0eVV0aWxpdGllcygpOworICAgIGV4cGxpY2l0IEluc3BlY3RvckF1ZGl0QWNj
ZXNzaWJpbGl0eVV0aWxpdGllcyhJbnNwZWN0b3I6Okluc3BlY3RvckF1ZGl0QWdlbnQmKTsKKwor
ICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yQXVkaXRBZ2VudCYgbV9hdWRpdEFnZW50OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eVV0aWxpdGllcy5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5VXRpbGl0aWVzLmlkbApp
bmRleCA3Y2NkNzJiYjA5My4uOWE1YjUxZTE3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlVdGlsaXRpZXMuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlVdGls
aXRpZXMuaWRsCkBAIC0yOCw0ICsyOCw1IEBACiAgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCiAg
ICAgTm9JbnRlcmZhY2VPYmplY3QsCiBdIGludGVyZmFjZSBJbnNwZWN0b3JBdWRpdEFjY2Vzc2li
aWxpdHlVdGlsaXRpZXMgeworICAgIFtDYWxsV2l0aD1Eb2N1bWVudCwgTWF5VGhyb3dFeGNlcHRp
b25dIHNlcXVlbmNlPE5vZGU+IGdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUoRE9NU3RyaW5nIHJv
bGUsIG9wdGlvbmFsIE5vZGU/IGNvbnRhaW5lcik7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0RE9NVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRET01VdGlsaXRpZXMuaAppbmRleCAzYTRhZjYz
N2VmZi4uYjFmZWIzYTBiZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBdWRpdERPTVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JBdWRpdERPTVV0aWxpdGllcy5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFn
bWEgb25jZQogCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQXVkaXRBZ2VudC5o
PgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCkBA
IC0zMiw3ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW5zcGVjdG9yQXVk
aXRET01VdGlsaXRpZXMgOiBwdWJsaWMgUmVmQ291bnRlZDxJbnNwZWN0b3JBdWRpdERPTVV0aWxp
dGllcz4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yQXVkaXRET01VdGlsaXRp
ZXM+IGNyZWF0ZSgpCisgICAgc3RhdGljIFJlZjxJbnNwZWN0b3JBdWRpdERPTVV0aWxpdGllcz4g
Y3JlYXRlKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXVkaXRBZ2VudCYpCiAgICAgewogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JBdWRpdERPTVV0aWxpdGllcygpKTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZUF1
ZGl0QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VB
dWRpdEFnZW50LmNwcAppbmRleCBkYmUxZDM2ZjI4Ny4uZTEzYmExNDI1OGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlQXVkaXRBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VBdWRpdEFnZW50
LmNwcApAQCAtODIsNyArODIsNyBAQCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgSlNDOjpKU1Zh
bHVlPj4gUGFnZUF1ZGl0QWdlbnQ6OnJ1bkFyZ3VtZW50cyhjb25zdCBpbnQqCiAKICNkZWZpbmUg
QUREX0FVRElUX1VUSUxJVElFUyhuYW1lKSBcCiAgICAgICAgICAgICAgICAgaWYgKCFtX2F1ZGl0
IyNuYW1lIyNVdGlsaXRpZXMpIFwKLSAgICAgICAgICAgICAgICAgICAgbV9hdWRpdCMjbmFtZSMj
VXRpbGl0aWVzID0gSW5zcGVjdG9yQXVkaXQjI25hbWUjI1V0aWxpdGllczo6Y3JlYXRlKCk7IFwK
KyAgICAgICAgICAgICAgICAgICAgbV9hdWRpdCMjbmFtZSMjVXRpbGl0aWVzID0gSW5zcGVjdG9y
QXVkaXQjI25hbWUjI1V0aWxpdGllczo6Y3JlYXRlKCp0aGlzKTsgXAogICAgICAgICAgICAgICAg
IGlmIChKU0M6OkpTVmFsdWUgaW5zcGVjdG9yQXVkaXQjI25hbWUjI1V0aWxpdGllcyA9IHRvSlMo
ZXhlY1N0YXRlLCBnbG9iYWxPYmplY3QsICptX2F1ZGl0IyNuYW1lIyNVdGlsaXRpZXMpKSBcCiAg
ICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoIiIgI25h
bWUgIiJfcywgV1RGTW92ZShpbnNwZWN0b3JBdWRpdCMjbmFtZSMjVXRpbGl0aWVzKSkpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359148</attachid>
            <date>2019-01-15 01:41:38 -0800</date>
            <delta_ts>2019-01-15 08:28:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193228-20190115014137.patch</filename>
            <type>text/plain</type>
            <size>12394</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3ZGYxNjg4YTBlOWJlYjFkMTA0NTJlYTVhM2UwYzNmNzljMThjOGI4Li42
ZTI0NTVhMmFhZjRlNWRmNTYzM2UxZTA0YWM3MTE2YzU1NWJjNzI4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTkgQEAKKzIwMTktMDEtMTUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEF1ZGl0OiBwcm92aWRlIGEgd2F5IHRvIHF1ZXJ5
IGZvciBhbGwgbm9kZXMgd2l0aCBhIGdpdmVuIGNvbXB1dGVkIEFjY2Vzc2liaWxpdHkgcm9sZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzMjI4Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS80Njc4Nzc4Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBK
b3NlcGggUGVjb3Jhcm8uCisKKyAgICAgICAgVGVzdDogaW5zcGVjdG9yL2F1ZGl0L3J1bi1hY2Nl
c3NpYmlsaXR5Lmh0bWwKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vz
c2liaWxpdHlPYmplY3QuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFj
Y2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRB
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFjY2Vzc2libGl0eU9i
amVjdEZvck5vZGUpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckF1ZGl0QWNj
ZXNzaWJpbGl0eU9iamVjdDo6Z2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZSk6IEFkZGVkLgorCiAy
MDE5LTAxLTExICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAg
U3VwcG9ydCBwYXJzaW5nIG9mIGFkZGl0aW9uYWwgdmFsdWVzIGZvciB0aGUgdG91Y2gtYWN0aW9u
IHByb3BlcnR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IGZjYzU5YjE3MDQyODE5
YWVjNjRiMTU5ODkwNDVmZDA1Y2I3MGVmZTAuLjc4ODJhNzEwOGRlMWM3OTBmMDk1YmE4ZWY1OTUw
MGZjZmVmOGNmNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0yNywxMiArMjcs
NTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JBdWRpdEFjY2Vz
c2liaWxpdHlPYmplY3QuaCIKIAorI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKKyNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCisjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgorI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5o
IgorI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAotSW5zcGVjdG9yQXVk
aXRBY2Nlc3NpYmlsaXR5T2JqZWN0OjpJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Qo
KQorI2RlZmluZSBFUlJPUl9JRl9OT19BQ1RJVkVfQVVESVQoKSBcCisgICAgaWYgKCFtX2F1ZGl0
QWdlbnQuaGFzQWN0aXZlQXVkaXQoKSkgXAorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTm90
QWxsb3dlZEVycm9yLCAiQ2Fubm90IGJlIGNhbGxlZCBvdXRzaWRlIG9mIGEgV2ViIEluc3BlY3Rv
ciBBdWRpdCJfcyB9OworCitJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q6Okluc3Bl
Y3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdChJbnNwZWN0b3JBdWRpdEFnZW50JiBhdWRpdEFn
ZW50KQorICAgIDogbV9hdWRpdEFnZW50KGF1ZGl0QWdlbnQpCiB7CiB9CiAKK3N0YXRpYyBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBhY2Nlc3NpYmxpdHlPYmplY3RGb3JOb2RlKE5vZGUmIG5vZGUpCit7
CisgICAgaWYgKCFBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKQorICAgICAg
ICBBWE9iamVjdENhY2hlOjplbmFibGVBY2Nlc3NpYmlsaXR5KCk7CisKKyAgICBpZiAoQVhPYmpl
Y3RDYWNoZSogYXhPYmplY3RDYWNoZSA9IG5vZGUuZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCkp
CisgICAgICAgIHJldHVybiBheE9iamVjdENhY2hlLT5nZXRPckNyZWF0ZSgmbm9kZSk7CisKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKworRXhjZXB0aW9uT3I8VmVjdG9yPFJlZjxOb2RlPj4+IElu
c3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdDo6Z2V0RWxlbWVudHNCeUNvbXB1dGVkUm9s
ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgcm9sZSwgTm9kZSogY29udGFpbmVy
KQoreworICAgIEVSUk9SX0lGX05PX0FDVElWRV9BVURJVCgpOworCisgICAgVmVjdG9yPFJlZjxO
b2RlPj4gbm9kZXM7CisKKyAgICBmb3IgKEVsZW1lbnQmIGVsZW1lbnQgOiBlbGVtZW50RGVzY2Vu
ZGFudHMoaXM8Q29udGFpbmVyTm9kZT4oY29udGFpbmVyKSA/IGRvd25jYXN0PENvbnRhaW5lck5v
ZGU+KCpjb250YWluZXIpIDogZG9jdW1lbnQpKSB7CisgICAgICAgIGlmIChBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBheE9iamVjdCA9IGFjY2Vzc2libGl0eU9iamVjdEZvck5vZGUoZWxlbWVudCkpIHsK
KyAgICAgICAgICAgIGlmIChheE9iamVjdC0+Y29tcHV0ZWRSb2xlU3RyaW5nKCkgPT0gcm9sZSkK
KyAgICAgICAgICAgICAgICBub2Rlcy5hcHBlbmQoZWxlbWVudCk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICByZXR1cm4gbm9kZXM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxp
dHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vz
c2liaWxpdHlPYmplY3QuaAppbmRleCAxMDM2ZmMwNWIxNjkwOGI1MWMzOWE5ODM5ZGYxMDRmZDlh
ZjdkODVmLi44OGY5NjNhOTUzMWI4ZTZiMmNjODYxOThmOGI4NDljNTM3MjA2ZGNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5
T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNj
ZXNzaWJpbGl0eU9iamVjdC5oCkBAIC0yNSwyMSArMjUsMzAgQEAKIAogI3ByYWdtYSBvbmNlCiAK
KyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3Bl
Y3RvckF1ZGl0QWdlbnQuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKK2NsYXNzIERvY3VtZW50OworY2xhc3MgTm9kZTsKKwogY2xhc3MgSW5zcGVjdG9yQXVk
aXRBY2Nlc3NpYmlsaXR5T2JqZWN0IDogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yQXVkaXRB
Y2Nlc3NpYmlsaXR5T2JqZWN0PiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJbnNwZWN0b3JB
dWRpdEFjY2Vzc2liaWxpdHlPYmplY3Q+IGNyZWF0ZShJbnNwZWN0b3I6Okluc3BlY3RvckF1ZGl0
QWdlbnQmKQorICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0
PiBjcmVhdGUoSW5zcGVjdG9yOjpJbnNwZWN0b3JBdWRpdEFnZW50JiBhdWRpdEFnZW50KQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmls
aXR5T2JqZWN0KCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JBdWRp
dEFjY2Vzc2liaWxpdHlPYmplY3QoYXVkaXRBZ2VudCkpOwogICAgIH0KIAorICAgIEV4Y2VwdGlv
bk9yPFZlY3RvcjxSZWY8Tm9kZT4+PiBnZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKERvY3VtZW50
JiwgY29uc3QgU3RyaW5nJiByb2xlLCBOb2RlKiBjb250YWluZXIpOworCiBwcml2YXRlOgotICAg
IGV4cGxpY2l0IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdCgpOworICAgIGV4cGxp
Y2l0IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdChJbnNwZWN0b3I6Okluc3BlY3Rv
ckF1ZGl0QWdlbnQmKTsKKworICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yQXVkaXRBZ2VudCYgbV9h
dWRpdEFnZW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5
T2JqZWN0LmlkbAppbmRleCAyNGQwMzk4ZmE0YWYxZmFhMGI3MDI3NzQzNzkyY2Q0ZWQ2OTY5Mjg2
Li40NmYxYjUyNjU1ODc2YTljMDI4OWM0MGRmOTYwYjlhNzRhOTE5MzJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3Np
YmlsaXR5T2JqZWN0LmlkbApAQCAtMjgsNCArMjgsNSBAQAogICAgIEpTR2VuZXJhdGVUb0pTT2Jq
ZWN0LAogICAgIE5vSW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgSW5zcGVjdG9yQXVkaXRB
Y2Nlc3NpYmlsaXR5T2JqZWN0IHsKKyAgICBbQ2FsbFdpdGg9RG9jdW1lbnQsIE1heVRocm93RXhj
ZXB0aW9uXSBzZXF1ZW5jZTxOb2RlPiBnZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKERPTVN0cmlu
ZyByb2xlLCBvcHRpb25hbCBOb2RlPyBjb250YWluZXIpOwogfTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkMGQxM2E5Y2Q1
MjgyYzk4NTcxN2NiNzg1N2VmODMwMTRlNTRiNDQzLi43ZjIxMjIxNzZlODBlNjM2YmQ4ZmM2MDk5
MWFiZTcwNDBhZjQzOWYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTktMDEtMTUgIERldmlu
IFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEF1
ZGl0OiBwcm92aWRlIGEgd2F5IHRvIHF1ZXJ5IGZvciBhbGwgbm9kZXMgd2l0aCBhIGdpdmVuIGNv
bXB1dGVkIEFjY2Vzc2liaWxpdHkgcm9sZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTkzMjI4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80Njc4Nzc4
Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvYXVkaXQvcnVuLWFjY2Vzc2liaWxpdHkuaHRtbDogQWRkZWQuCisgICAgICAgICog
aW5zcGVjdG9yL2F1ZGl0L3J1bi1hY2Nlc3NpYmlsaXR5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisK
IDIwMTktMDEtMTUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IEF1ZGl0OiBjcmVhdGUgbmV3IElETCB0eXBlIGZvciBleHBvc2luZyBz
cGVjaWFsIGZ1bmN0aW9uYWxpdHkgaW4gdGVzdCBjb250ZXh0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvYXVkaXQvcnVuLWFjY2Vzc2liaWxpdHktZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2F1ZGl0L3J1bi1hY2Nlc3NpYmlsaXR5LWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43YTY2M2RjOTAwNjUyOWMzZGZiZjYxMDkyMGY2NjMyNTg4ZDI0NzA0Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2F1ZGl0L3J1bi1hY2Nlc3NpYmls
aXR5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQ5IEBACitUZXN0cyBmb3IgdGhlIGluamVjdGVk
IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkgZnVuY3Rpb25zLgorCisKKworPT0gUnVu
bmluZyB0ZXN0IHN1aXRlOiBBdWRpdC5ydW4uQWNjZXNzaWJpbGl0eQorLS0gUnVubmluZyB0ZXN0
IGNhc2U6IEF1ZGl0LnJ1bi5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUu
RmFrZVJvbGUKK0F1ZGl0IHNldHVwLi4uCitBdWRpdCBydW4gYFdlYkluc3BlY3RvckF1ZGl0LkFj
Y2Vzc2liaWxpdHkuZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZSgiRmFrZVJvbGUiKWAuLi4KK1Jl
c3VsdDogW10KK0F1ZGl0IHRlYXJkb3duLi4uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBBdWRp
dC5ydW4uQWNjZXNzaWJpbGl0eS5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlLkZha2VSb2xlLnBh
cmVudAorQXVkaXQgc2V0dXAuLi4KK0F1ZGl0IHJ1biBgV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNz
aWJpbGl0eS5nZXRFbGVtZW50c0J5Q29tcHV0ZWRSb2xlKCJGYWtlUm9sZSIsIGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoIiNwYXJlbnQiKSlgLi4uCitSZXN1bHQ6IFtdCitBdWRpdCB0ZWFyZG93bi4u
LgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogQXVkaXQucnVuLkFjY2Vzc2liaWxpdHkuZ2V0RWxl
bWVudHNCeUNvbXB1dGVkUm9sZS50cmVlCitBdWRpdCBzZXR1cC4uLgorQXVkaXQgcnVuIGBXZWJJ
bnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUoInRy
ZWUiKWAuLi4KK1Jlc3VsdDogWyIjcGFyZW50Il0KK0F1ZGl0IHRlYXJkb3duLi4uCisKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBBdWRpdC5ydW4uQWNjZXNzaWJpbGl0eS5nZXRFbGVtZW50c0J5Q29t
cHV0ZWRSb2xlLnRyZWUucGFyZW50CitBdWRpdCBzZXR1cC4uLgorQXVkaXQgcnVuIGBXZWJJbnNw
ZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUoInRyZWUi
LCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcGFyZW50IikpYC4uLgorUmVzdWx0OiBbXQorQXVk
aXQgdGVhcmRvd24uLi4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IEF1ZGl0LnJ1bi5BY2Nlc3Np
YmlsaXR5LmdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUuYnV0dG9uCitBdWRpdCBzZXR1cC4uLgor
QXVkaXQgcnVuIGBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVsZW1lbnRzQnlD
b21wdXRlZFJvbGUoImJ1dHRvbiIpYC4uLgorUmVzdWx0OiBbIiNidXR0b24iLCIjbGluayJdCitB
dWRpdCB0ZWFyZG93bi4uLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogQXVkaXQucnVuLkFjY2Vz
c2liaWxpdHkuZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZS5idXR0b24ucGFyZW50CitBdWRpdCBz
ZXR1cC4uLgorQXVkaXQgcnVuIGBXZWJJbnNwZWN0b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LmdldEVs
ZW1lbnRzQnlDb21wdXRlZFJvbGUoImJ1dHRvbiIsIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNw
YXJlbnQiKSlgLi4uCitSZXN1bHQ6IFtdCitBdWRpdCB0ZWFyZG93bi4uLgorCistLSBSdW5uaW5n
IHRlc3QgY2FzZTogQXVkaXQucnVuLkFjY2Vzc2liaWxpdHkuSW52YWxpZENvcGllZEZ1bmN0aW9u
Q2FsbAorQXVkaXQgc2V0dXAuLi4KK0NvcHlpbmcgV2ViSW5zcGVjdG9yQXVkaXQgdG8gd2luZG93
Li4uCitBdWRpdCB0ZWFyZG93bi4uLgorVGVzdGluZyBjb3BpZWQgZ2V0RWxlbWVudHNCeUNvbXB1
dGVkUm9sZS4uLgorUEFTUzogU2hvdWxkIHByb2R1Y2UgYW4gZXhjZXB0aW9uLgorRXJyb3I6IE5v
dEFsbG93ZWRFcnJvcjogQ2Fubm90IGJlIGNhbGxlZCBvdXRzaWRlIG9mIGEgV2ViIEluc3BlY3Rv
ciBBdWRpdAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvYXVkaXQvcnVuLWFj
Y2Vzc2liaWxpdHkuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9hdWRpdC9ydW4tYWNjZXNz
aWJpbGl0eS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwNTEzNWYxMzBmOWE0ODRhODUxMDJlYTU4OTNiM2Q5
NGVlNGJiZmMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvYXVkaXQv
cnVuLWFjY2Vzc2liaWxpdHkuaHRtbApAQCAtMCwwICsxLDk3IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
cmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvYXVkaXQtdXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9u
IHN0cmluZ2lmeShyZXN1bHQpIHsKKyAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgRWxlbWVudCkK
KyAgICAgICAgcmV0dXJuICIjIiArIHJlc3VsdC5pZDsKKyAgICBpZiAoQXJyYXkuaXNBcnJheShy
ZXN1bHQpKQorICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkocmVzdWx0Lm1hcChzdHJpbmdp
ZnkpKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxl
dCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuQXVkaXQuY3JlYXRlU3VpdGUoIkF1ZGl0LnJ1bi5BY2Nl
c3NpYmlsaXR5Iik7CisKKyAgICBmdW5jdGlvbiBldmFsdWF0ZVN0cmluZ0ZvclRlc3QoZnVuYywg
dGFyZ2V0LCByb2xlKSB7CisgICAgICAgIGlmICh0YXJnZXQpIHsKKyAgICAgICAgICAgIGlmIChy
b2xlKQorICAgICAgICAgICAgICAgIHJldHVybiBgV2ViSW5zcGVjdG9yQXVkaXQuQWNjZXNzaWJp
bGl0eS4ke2Z1bmN9KCIke3JvbGV9IiwgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiIyR7dGFyZ2V0
fSIpKWA7CisgICAgICAgICAgICByZXR1cm4gYFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxp
dHkuJHtmdW5jfShkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjJHt0YXJnZXR9IikpYDsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChyb2xlKQorICAgICAgICAgICAgcmV0dXJuIGBXZWJJbnNwZWN0
b3JBdWRpdC5BY2Nlc3NpYmlsaXR5LiR7ZnVuY30oIiR7cm9sZX0iKWA7CisgICAgfQorCisgICAg
Y29uc3QgdGVzdHMgPSBbCisgICAgICAgIHsgZnVuYzogImdldEVsZW1lbnRzQnlDb21wdXRlZFJv
bGUiLCByb2xlOiAiRmFrZVJvbGUiIH0sCisgICAgICAgIHsgZnVuYzogImdldEVsZW1lbnRzQnlD
b21wdXRlZFJvbGUiLCByb2xlOiAiRmFrZVJvbGUiLCB0YXJnZXQ6ICJwYXJlbnQiIH0sCisgICAg
ICAgIHsgZnVuYzogImdldEVsZW1lbnRzQnlDb21wdXRlZFJvbGUiLCByb2xlOiAidHJlZSIgfSwK
KyAgICAgICAgeyBmdW5jOiAiZ2V0RWxlbWVudHNCeUNvbXB1dGVkUm9sZSIsIHJvbGU6ICJ0cmVl
IiwgdGFyZ2V0OiAicGFyZW50IiB9LAorICAgICAgICB7IGZ1bmM6ICJnZXRFbGVtZW50c0J5Q29t
cHV0ZWRSb2xlIiwgcm9sZTogImJ1dHRvbiIgfSwKKyAgICAgICAgeyBmdW5jOiAiZ2V0RWxlbWVu
dHNCeUNvbXB1dGVkUm9sZSIsIHJvbGU6ICJidXR0b24iLCB0YXJnZXQ6ICJwYXJlbnQiIH0sCisg
ICAgXTsKKworICAgIGZvciAobGV0IHtmdW5jLCB0YXJnZXQsIHJvbGV9IG9mIHRlc3RzKSB7Cisg
ICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWU6ICJBdWRpdC5ydW4u
QWNjZXNzaWJpbGl0eS4iICsgZnVuYyArIChyb2xlID8gIi4iICsgcm9sZSA6ICIiKSArICh0YXJn
ZXQgPyAiLiIgKyB0YXJnZXQgOiAiIiksCisgICAgICAgICAgICBhc3luYyB0ZXN0KCkgeworICAg
ICAgICAgICAgICAgIGxldCBmdW5jdGlvblN0cmluZyA9IGV2YWx1YXRlU3RyaW5nRm9yVGVzdChm
dW5jLCB0YXJnZXQsIHJvbGUpOworCisgICAgICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVz
dC5BdWRpdC5zZXR1cEF1ZGl0KCk7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZyhgQXVkaXQgcnVuIFxgJHtmdW5jdGlvblN0cmluZ31cYC4uLmApOworICAgICAgICAgICAgICAg
IGxldCB7cmVzdWx0LCB3YXNUaHJvd259ID0gYXdhaXQgQXVkaXRBZ2VudC5ydW4oYGZ1bmN0aW9u
KCkgeyByZXR1cm4gc3RyaW5naWZ5KCR7ZnVuY3Rpb25TdHJpbmd9KTsgfWApOworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KCF3YXNUaHJvd24sICJTaG91bGQgbm90IHRocm93
IGFuIGV4Y2VwdGlvbi4iKTsKKyAgICAgICAgICAgICAgICBpZiAoIXdhc1Rocm93bikKKyAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlJlc3VsdDogIiArIHJlc3VsdC52YWx1
ZSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZyhyZXN1bHQuZGVzY3JpcHRpb24pOworCisgICAgICAgICAgICAgICAgYXdhaXQgSW5z
cGVjdG9yVGVzdC5BdWRpdC50ZWFyZG93bkF1ZGl0KCk7CisgICAgICAgICAgICB9LAorICAgICAg
ICB9KTsKKyAgICB9CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJB
dWRpdC5ydW4uQWNjZXNzaWJpbGl0eS5JbnZhbGlkQ29waWVkRnVuY3Rpb25DYWxsIiwKKyAgICAg
ICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxp
dHkgZnVuY3Rpb25zIHRocm93IGFuIGVycm9yIHdoZW4gY2FsbGVkIG91dHNpZGUgb2YgYW4gYXVk
aXQuIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBmdW5jdGlvbnMg
PSBuZXcgTWFwOworICAgICAgICAgICAgZm9yIChsZXQgdGVzdCBvZiB0ZXN0cykKKyAgICAgICAg
ICAgICAgICBmdW5jdGlvbnMuc2V0KHRlc3QuZnVuYywgdGVzdCk7CisKKyAgICAgICAgICAgIGF3
YWl0IEluc3BlY3RvclRlc3QuQXVkaXQuc2V0dXBBdWRpdCgpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5sb2coYENvcHlpbmcgV2ViSW5zcGVjdG9yQXVkaXQgdG8gd2luZG93Li4uYCk7Cisg
ICAgICAgICAgICBsZXQge3dhc1Rocm93bn0gPSBhd2FpdCBBdWRpdEFnZW50LnJ1bihgZnVuY3Rp
b24oKSB7IHdpbmRvdy5Db3BpZWRXZWJJbnNwZWN0b3JBdWRpdCA9IFdlYkluc3BlY3RvckF1ZGl0
OyB9YCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydCghd2FzVGhyb3duLCAiU2hv
dWxkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24uIik7CisgICAgICAgICAgICBhd2FpdCBJbnNwZWN0
b3JUZXN0LkF1ZGl0LnRlYXJkb3duQXVkaXQoKTsKKworICAgICAgICAgICAgZm9yIChsZXQge2Z1
bmMsIHRhcmdldCwgcm9sZX0gb2YgZnVuY3Rpb25zLnZhbHVlcygpKSB7CisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coYFRlc3RpbmcgY29waWVkICR7ZnVuY30uLi5gKTsKKyAgICAg
ICAgICAgICAgICBhd2FpdCBJbnNwZWN0b3JUZXN0LmV4cGVjdEV4Y2VwdGlvbihhc3luYyBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgYXdhaXQgSW5zcGVjdG9yVGVzdC5ldmFsdWF0
ZUluUGFnZSgid2luZG93LkNvcGllZCIgKyBldmFsdWF0ZVN0cmluZ0ZvclRlc3QoZnVuYywgdGFy
Z2V0LCByb2xlKSk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0sCisgICAgfSk7CisKKyAgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7Cit9Cis8
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgICA8cD5UZXN0
cyBmb3IgdGhlIGluamVjdGVkIFdlYkluc3BlY3RvckF1ZGl0LkFjY2Vzc2liaWxpdHkgZnVuY3Rp
b25zLjwvcD4KKyAgICA8dWwgaWQ9InBhcmVudCIgcm9sZT0idHJlZSIgYXJpYS1hY3RpdmVkZXNj
ZW5kYW50PSJjaGlsZCIgYXJpYS1jb250cm9scz0iY2hpbGQiIGFyaWEtZmxvd3RvPSJjaGlsZCIg
YXJpYS1vd25zPSJjaGlsZCIgb25jbGljaz0idm9pZCgwKTsiPgorICAgICAgICA8bGkgaWQ9ImNo
aWxkIiByb2xlPSJ0cmVlaXRlbSIgYXJpYS1zZWxlY3RlZD0idHJ1ZSI+PC9saT4KKyAgICA8L3Vs
PgorICAgIDxidXR0b24gaWQ9ImJ1dHRvbiI+PC9idXR0b24+CisgICAgPGEgaWQ9ImxpbmsiIHJv
bGU9ImJ1dHRvbiI+PC9hPgorICAgIDxkaXYgaWQ9ImZha2VSb2xlIiByb2xlPSJmYWtlUm9sZSI+
PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>