<?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>193487</bug_id>
          
          <creation_ts>2019-01-16 02:42:07 -0800</creation_ts>
          <short_desc>[WHLSL] Add the statement behavior checker</short_desc>
          <delta_ts>2019-01-20 21:41:28 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>dino</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jonlee</cc>
    
    <cc>justin_fan</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1495040</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-16 02:42:07 -0800</bug_when>
    <thetext>[WHLSL] Add the statement behavior checker</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495041</commentid>
    <comment_count>1</comment_count>
      <attachid>359262</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-16 02:44:11 -0800</bug_when>
    <thetext>Created attachment 359262
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495043</commentid>
    <comment_count>2</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-16 02:44:50 -0800</bug_when>
    <thetext>*** Bug 193437 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495117</commentid>
    <comment_count>3</comment_count>
      <attachid>359262</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-01-16 10:50:43 -0800</bug_when>
    <thetext>Comment on attachment 359262
Patch

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

&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp:96
&gt; +        // FIXME: The spec says to add &quot;Nothing&quot; here, but I think the spec is wrong.

Consider the following case:
```
do {
  break;
} while (true);
```

This code would clearly have the behavior {Nothing} (meaning that control-flow can flow to the next statement), but the loop body only has the behavior {Break}.

&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp:103
&gt; +        auto initialization = WTF::visit(WTF::makeVisitor([&amp;](AST::VariableDeclarationsStatement&amp; variableDeclarationsStatement) -&gt; Optional&lt;OptionSet&lt;Behavior&gt;&gt; {

I am not sure I completely understand this code. Does it work correctly for loops like for(;;) { ... if(foo) break; } ?
In which case is the if(!initialization) case hit?

&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp:136
&gt; +    void visit(AST::SwitchCase&amp; switchCase) override

What is the point of this override?

&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp:162
&gt; +        // FIXME: The spec says to add &quot;Nothing&quot; here, but I think the spec is wrong.

Same comment as for loops above: the following code must have a behavior of {Nothing}:
```
switch(x) {
default:
break;
}
```

&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp:232
&gt; +            continue;

I disagree, even void functions must have the behaviors of their bodies checked.
In particular, we must verify that there is no break/continue/fallthrough that are outside of a loop/switch in their bodies.
I would unconditionally run the statementBehaviorChecker, just later tolerate Nothing in the set of behaviors for the function body if the function has a return type of void.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495365</commentid>
    <comment_count>4</comment_count>
      <attachid>359262</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-16 18:49:47 -0800</bug_when>
    <thetext>Comment on attachment 359262
Patch

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

&gt;&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp:96
&gt;&gt; +        // FIXME: The spec says to add &quot;Nothing&quot; here, but I think the spec is wrong.
&gt; 
&gt; Consider the following case:
&gt; ```
&gt; do {
&gt;   break;
&gt; } while (true);
&gt; ```
&gt; 
&gt; This code would clearly have the behavior {Nothing} (meaning that control-flow can flow to the next statement), but the loop body only has the behavior {Break}.

On the other hand,
```
int foo() {
  do {
    return 42;
  } while (true);
}
```
should be correct, but the current analysis would say this program is incorrect.

It should probably add Nothing only conditionally, perhaps if the result after removing Break and Continue is the empty set.

&gt;&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp:103
&gt;&gt; +        auto initialization = WTF::visit(WTF::makeVisitor([&amp;](AST::VariableDeclarationsStatement&amp; variableDeclarationsStatement) -&gt; Optional&lt;OptionSet&lt;Behavior&gt;&gt; {
&gt; 
&gt; I am not sure I completely understand this code. Does it work correctly for loops like for(;;) { ... if(foo) break; } ?
&gt; In which case is the if(!initialization) case hit?

The grammar says:
forStmt: FOR &apos;(&apos; (variableDecls | effectfulExpr) &apos;;&apos; expr? &apos;;&apos; expr? &apos;)&apos; stmt ;
I believe that, given that grammar, &quot;for(;;)&quot; would fail to parse.

variableDecls maps to { Nothing } and effectfulExpr maps to { Nothing } as well, which I think is fine because for loops may execute 0 times (unless we want to try to go down the rabbit hole of interrogating the condition to determine if the loop will execute or not)

This visitor is just determining whether the initialization is a variableDecls or an effectfulExpr. Expressions are not statements, so it doesn&apos;t recurse in that case, but a VariableDeclarationsStatement is a statement, so it recurses in that case. If the recusion causes error(), this visitor returns nullopt, so we can take an early out below.

&gt;&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp:136
&gt;&gt; +    void visit(AST::SwitchCase&amp; switchCase) override
&gt; 
&gt; What is the point of this override?

Just clarity. I wanted to be explicit that I didn&apos;t just forget to write the function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495367</commentid>
    <comment_count>5</comment_count>
      <attachid>359342</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-16 18:59:22 -0800</bug_when>
    <thetext>Created attachment 359342
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1495525</commentid>
    <comment_count>6</comment_count>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-01-17 10:22:48 -0800</bug_when>
    <thetext>(In reply to Myles C. Maxfield from comment #4)
&gt; Comment on attachment 359262 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=359262&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp:96
&gt; &gt;&gt; +        // FIXME: The spec says to add &quot;Nothing&quot; here, but I think the spec is wrong.
&gt; &gt; 
&gt; &gt; Consider the following case:
&gt; &gt; ```
&gt; &gt; do {
&gt; &gt;   break;
&gt; &gt; } while (true);
&gt; &gt; ```
&gt; &gt; 
&gt; &gt; This code would clearly have the behavior {Nothing} (meaning that control-flow can flow to the next statement), but the loop body only has the behavior {Break}.
&gt; 
&gt; On the other hand,
&gt; ```
&gt; int foo() {
&gt;   do {
&gt;     return 42;
&gt;   } while (true);
&gt; }
&gt; ```
&gt; should be correct, but the current analysis would say this program is
&gt; incorrect.
&gt; 
&gt; It should probably add Nothing only conditionally, perhaps if the result
&gt; after removing Break and Continue is the empty set.

That would indeed be more precise, I am just not sure it is required to reach that level of precision right now (as long as we err in the safe direction of rejected too many programs).

&gt; 
&gt; &gt;&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp:103
&gt; &gt;&gt; +        auto initialization = WTF::visit(WTF::makeVisitor([&amp;](AST::VariableDeclarationsStatement&amp; variableDeclarationsStatement) -&gt; Optional&lt;OptionSet&lt;Behavior&gt;&gt; {
&gt; &gt; 
&gt; &gt; I am not sure I completely understand this code. Does it work correctly for loops like for(;;) { ... if(foo) break; } ?
&gt; &gt; In which case is the if(!initialization) case hit?
&gt; 
&gt; The grammar says:
&gt; forStmt: FOR &apos;(&apos; (variableDecls | effectfulExpr) &apos;;&apos; expr? &apos;;&apos; expr? &apos;)&apos;
&gt; stmt ;
&gt; I believe that, given that grammar, &quot;for(;;)&quot; would fail to parse.
&gt; 
&gt; variableDecls maps to { Nothing } and effectfulExpr maps to { Nothing } as
&gt; well, which I think is fine because for loops may execute 0 times (unless we
&gt; want to try to go down the rabbit hole of interrogating the condition to
&gt; determine if the loop will execute or not)
&gt; 
&gt; This visitor is just determining whether the initialization is a
&gt; variableDecls or an effectfulExpr. Expressions are not statements, so it
&gt; doesn&apos;t recurse in that case, but a VariableDeclarationsStatement is a
&gt; statement, so it recurses in that case. If the recusion causes error(), this
&gt; visitor returns nullopt, so we can take an early out below.

Variable declarations are a very special kind of statement. In particular, this checker will never do anything but return {Nothing} on them. In particular I don&apos;t expect it to
ever error. So I would just not recurse on it and skip this check.

&gt; 
&gt; &gt;&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp:136
&gt; &gt;&gt; +    void visit(AST::SwitchCase&amp; switchCase) override
&gt; &gt; 
&gt; &gt; What is the point of this override?
&gt; 
&gt; Just clarity. I wanted to be explicit that I didn&apos;t just forget to write the
&gt; function.

Ok, I personally found it more confusing than if there was nothing, but it is your choice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496120</commentid>
    <comment_count>7</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-18 17:30:21 -0800</bug_when>
    <thetext>(In reply to Robin Morisset from comment #6)
&gt; (In reply to Myles C. Maxfield from comment #4)
&gt; &gt; Comment on attachment 359262 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=359262&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp:96
&gt; &gt; &gt;&gt; +        // FIXME: The spec says to add &quot;Nothing&quot; here, but I think the spec is wrong.
&gt; &gt; &gt; 
&gt; &gt; &gt; Consider the following case:
&gt; &gt; &gt; ```
&gt; &gt; &gt; do {
&gt; &gt; &gt;   break;
&gt; &gt; &gt; } while (true);
&gt; &gt; &gt; ```
&gt; &gt; &gt; 
&gt; &gt; &gt; This code would clearly have the behavior {Nothing} (meaning that control-flow can flow to the next statement), but the loop body only has the behavior {Break}.
&gt; &gt; 
&gt; &gt; On the other hand,
&gt; &gt; ```
&gt; &gt; int foo() {
&gt; &gt;   do {
&gt; &gt;     return 42;
&gt; &gt;   } while (true);
&gt; &gt; }
&gt; &gt; ```
&gt; &gt; should be correct, but the current analysis would say this program is
&gt; &gt; incorrect.
&gt; &gt; 
&gt; &gt; It should probably add Nothing only conditionally, perhaps if the result
&gt; &gt; after removing Break and Continue is the empty set.
&gt; 
&gt; That would indeed be more precise, I am just not sure it is required to
&gt; reach that level of precision right now (as long as we err in the safe
&gt; direction of rejected too many programs).

https://github.com/gpuweb/WHLSL/issues/314</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496123</commentid>
    <comment_count>8</comment_count>
      <attachid>359564</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-18 17:42:20 -0800</bug_when>
    <thetext>Created attachment 359564
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496131</commentid>
    <comment_count>9</comment_count>
      <attachid>359564</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-18 18:08:34 -0800</bug_when>
    <thetext>Comment on attachment 359564
Patch

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

&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp:112
&gt; +        m_stack.append(OptionSet&lt;Behavior&gt;::fromRaw(initialization-&gt;toRaw() | b.toRaw()));

Whoops, this should be m_stack.append(b);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496365</commentid>
    <comment_count>10</comment_count>
      <attachid>359645</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-20 13:12:26 -0800</bug_when>
    <thetext>Created attachment 359645
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496437</commentid>
    <comment_count>11</comment_count>
      <attachid>359645</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2019-01-20 16:23:42 -0800</bug_when>
    <thetext>Comment on attachment 359645
Patch

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

&gt; Source/WebCore/ChangeLog:19
&gt; +        * Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp: Added.
&gt; +        (WebCore::WHLSL::StatementBehaviorChecker::takeFunctionBehavior):
&gt; +        (WebCore::WHLSL::checkStatementBehavior):
&gt; +        * Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.h: Added.
&gt; +        * Sources.txt:
&gt; +        * WebCore.xcodeproj/project.pbxproj:

Why doesn&apos;t this mention WHLSLLoopChecker&apos;s removal?

&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp:145
&gt; +            reduction = OptionSet&lt;Behavior&gt;::fromRaw(reduction.toRaw() | b.toRaw());

I believe you can do reduction |= b;
constexpr friend OptionSet operator|(OptionSet lhs, OptionSet rhs)

&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp:171
&gt; +        m_stack.append(OptionSet&lt;Behavior&gt;::fromRaw(b.toRaw() | bPrime.toRaw()));

Ditto.

&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp:201
&gt; +            reduction = OptionSet&lt;Behavior&gt;::fromRaw(reduction.toRaw() | b.toRaw());

Ditto.

&gt; Source/WebCore/Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp:207
&gt; +        m_stack.append(OptionSet&lt;Behavior&gt;::fromRaw(reduction.toRaw() | b.toRaw()));

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496516</commentid>
    <comment_count>12</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2019-01-20 21:40:26 -0800</bug_when>
    <thetext>Committed r240227: &lt;https://trac.webkit.org/changeset/240227&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1496517</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-20 21:41:28 -0800</bug_when>
    <thetext>&lt;rdar://problem/47420528&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359262</attachid>
            <date>2019-01-16 02:44:11 -0800</date>
            <delta_ts>2019-01-16 18:59:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193487-20190116024410.patch</filename>
            <type>text/plain</type>
            <size>22652</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMDMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDZhZGNlOWZiZjc1YTQx
YjJmNjJiNjVmM2EyOTNjOTE2ZWM4MmNiYi4uNDg4N2JjNDJhYmY3ZDIwNzA2MWZmYjk0M2YzZTMz
NjZkMGQxZjFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTAxLTE2ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dITFNMXSBB
ZGQgdGhlIHN0YXRlbWVudCBiZWhhdmlvciBjaGVja2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM0ODcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGEgdHJhbnNsYXRpb24gb2YgaHR0cHM6
Ly9naXRodWIuY29tL2dwdXdlYi9XSExTTC9ibG9iL21hc3Rlci9TcGVjL3NvdXJjZS9pbmRleC5y
c3QjdHlwaW5nLXN0YXRlbWVudHMKKyAgICAgICAgaW50byBDKysuIEl0IGlzIG1lYW50IHRvIHJl
cGxhY2UgdGhlIFJldHVybkNoZWNrZXIgYW5kIFVucmVhY2hhYmxlQ29kZUNoZWNrZXIgaW4gdGhl
IHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVz
ZSBpdCBpc24ndCBob29rZWQgdXAgeWV0LiBOb3QgZW5vdWdoIG9mIHRoZSBjb21waWxlciBleGlz
dHMgdG8gaGF2ZSBhbnkgbWVhbmluZ2Z1bCBzb3J0CisgICAgICAgIG9mIHRlc3QuIFdoZW4gZW5v
dWdoIG9mIHRoZSBjb21waWxlciBpcyBwcmVzZW50LCBJJ2xsIHBvcnQgdGhlIHJlZmVyZW5jZSBp
bXBsZW1lbnRhdGlvbidzIHRlc3Qgc3VpdGUuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OlN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlcjo6dGFrZUZ1bmN0aW9uQmVo
YXZpb3IpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OmNoZWNrU3RhdGVtZW50QmVoYXZpb3Ip
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhdGVtZW50QmVoYXZpb3JD
aGVja2VyLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wMS0xNSAgRnVqaWkgSGlyb25v
cmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIFdpbkNh
aXJvIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1
L1dITFNML1dITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zNmJlNTdhNzEyZWJlM2U3ODUzZTIyOGU2MGNlOTY1MjQ1OGEzZjQyCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xT
dGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuY3BwCkBAIC0wLDAgKzEsMjQ3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldITFNMU3RhdGVtZW50QmVoYXZpb3JD
aGVja2VyLmgiCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCisjaW5jbHVkZSAiV0hMU0xEb1doaWxl
TG9vcC5oIgorI2luY2x1ZGUgIldITFNMRm9yTG9vcC5oIgorI2luY2x1ZGUgIldITFNMSWZTdGF0
ZW1lbnQuaCIKKyNpbmNsdWRlICJXSExTTEluZmVyVHlwZXMuaCIKKyNpbmNsdWRlICJXSExTTFBy
b2dyYW0uaCIKKyNpbmNsdWRlICJXSExTTFN3aXRjaFN0YXRlbWVudC5oIgorI2luY2x1ZGUgIldI
TFNMV2hpbGVMb29wLmgiCisjaW5jbHVkZSA8Y3N0ZGludD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9u
U2V0Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K25hbWVzcGFjZSBXSExTTCB7CisKK2NsYXNzIFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlciA6IHB1
YmxpYyBWaXNpdG9yIHsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIEJlaGF2aW9yIDogdWludDhf
dCB7CisgICAgICAgIFJldHVybiA9IDEgPDwgMCwKKyAgICAgICAgQnJlYWsgPSAxIDw8IDEsCisg
ICAgICAgIENvbnRpbnVlID0gMSA8PCAyLAorICAgICAgICBGYWxsdGhyb3VnaCA9IDEgPDwgMywK
KyAgICAgICAgTm90aGluZyA9IDEgPDwgNAorICAgIH07CisKKyAgICBPcHRpb25TZXQ8QmVoYXZp
b3I+IHRha2VGdW5jdGlvbkJlaGF2aW9yKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3N0YWNr
LnNpemUoKSA9PSAxKTsKKyAgICAgICAgcmV0dXJuIG1fc3RhY2sudGFrZUxhc3QoKTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgdm9pZCB2aXNpdChBU1Q6OkJyZWFrJikgb3ZlcnJpZGUKKyAgICB7
CisgICAgICAgIG1fc3RhY2suYXBwZW5kKHsgQmVoYXZpb3I6OkJyZWFrIH0pOworICAgIH0KKwor
ICAgIHZvaWQgdmlzaXQoQVNUOjpGYWxsdGhyb3VnaCYpIG92ZXJyaWRlCisgICAgeworICAgICAg
ICBtX3N0YWNrLmFwcGVuZCh7IEJlaGF2aW9yOjpGYWxsdGhyb3VnaCB9KTsKKyAgICB9CisKKyAg
ICB2b2lkIHZpc2l0KEFTVDo6Q29udGludWUmKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgbV9z
dGFjay5hcHBlbmQoeyBCZWhhdmlvcjo6Q29udGludWUgfSk7CisgICAgfQorCisgICAgdm9pZCB2
aXNpdChBU1Q6OlJldHVybiYpIG92ZXJyaWRlCisgICAgeworICAgICAgICBtX3N0YWNrLmFwcGVu
ZCh7IEJlaGF2aW9yOjpSZXR1cm4gfSk7CisgICAgfQorCisgICAgdm9pZCB2aXNpdChBU1Q6OlRy
YXAmKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgbV9zdGFjay5hcHBlbmQoeyBCZWhhdmlvcjo6
UmV0dXJuIH0pOworICAgIH0KKworICAgIHZvaWQgdmlzaXQoQVNUOjpEb1doaWxlTG9vcCYgZG9X
aGlsZUxvb3ApIG92ZXJyaWRlCisgICAgeworICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG9X
aGlsZUxvb3AuYm9keSgpKTsKKyAgICAgICAgaWYgKGVycm9yKCkpCisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIGF1dG8gYiA9IG1fc3RhY2sudGFrZUxhc3QoKTsKKyAgICAgICAgYi5yZW1v
dmUoQmVoYXZpb3I6OkJyZWFrKTsKKyAgICAgICAgYi5yZW1vdmUoQmVoYXZpb3I6OkNvbnRpbnVl
KTsKKyAgICAgICAgLy8gRklYTUU6IFRoZSBzcGVjIHNheXMgdG8gYWRkICJOb3RoaW5nIiBoZXJl
LCBidXQgSSB0aGluayB0aGUgc3BlYyBpcyB3cm9uZy4KKyAgICAgICAgYi5hZGQoQmVoYXZpb3I6
Ok5vdGhpbmcpOworICAgICAgICBtX3N0YWNrLmFwcGVuZChiKTsKKyAgICB9CisKKyAgICB2b2lk
IHZpc2l0KEFTVDo6Rm9yTG9vcCYgZm9yTG9vcCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGF1
dG8gaW5pdGlhbGl6YXRpb24gPSBXVEY6OnZpc2l0KFdURjo6bWFrZVZpc2l0b3IoWyZdKEFTVDo6
VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQmIHZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVt
ZW50KSAtPiBPcHRpb25hbDxPcHRpb25TZXQ8QmVoYXZpb3I+PiB7CisgICAgICAgICAgICBjaGVj
a0Vycm9yQW5kVmlzaXQodmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQpOworICAgICAgICAg
ICAgaWYgKGVycm9yKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBtX3N0YWNrLnRha2VMYXN0KCk7CisgICAgICAgIH0sIFsmXShVbmlx
dWVSZWY8QVNUOjpFeHByZXNzaW9uPiYpIC0+IE9wdGlvbmFsPE9wdGlvblNldDxCZWhhdmlvcj4+
IHsKKyAgICAgICAgICAgIHJldHVybiB7IEJlaGF2aW9yOjpOb3RoaW5nIH07CisgICAgICAgIH0p
LCBmb3JMb29wLmluaXRpYWxpemF0aW9uKCkpOworICAgICAgICBpZiAoIWluaXRpYWxpemF0aW9u
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmb3JM
b29wLmJvZHkoKSk7CisgICAgICAgIGlmIChlcnJvcigpKQorICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBhdXRvIGIgPSBtX3N0YWNrLnRha2VMYXN0KCk7CisgICAgICAgIGIucmVtb3ZlKEJl
aGF2aW9yOjpCcmVhayk7CisgICAgICAgIGIucmVtb3ZlKEJlaGF2aW9yOjpDb250aW51ZSk7Cisg
ICAgICAgIGIuYWRkKEJlaGF2aW9yOjpOb3RoaW5nKTsKKyAgICAgICAgbV9zdGFjay5hcHBlbmQo
T3B0aW9uU2V0PEJlaGF2aW9yPjo6ZnJvbVJhdyhpbml0aWFsaXphdGlvbi0+dG9SYXcoKSB8IGIu
dG9SYXcoKSkpOworICAgIH0KKworICAgIHZvaWQgdmlzaXQoQVNUOjpXaGlsZUxvb3AmIHdoaWxl
TG9vcCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh3aGlsZUxv
b3AuYm9keSgpKTsKKyAgICAgICAgaWYgKGVycm9yKCkpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIGF1dG8gYiA9IG1fc3RhY2sudGFrZUxhc3QoKTsKKyAgICAgICAgYi5yZW1vdmUoQmVo
YXZpb3I6OkJyZWFrKTsKKyAgICAgICAgYi5yZW1vdmUoQmVoYXZpb3I6OkNvbnRpbnVlKTsKKyAg
ICAgICAgYi5hZGQoQmVoYXZpb3I6Ok5vdGhpbmcpOworICAgICAgICBtX3N0YWNrLmFwcGVuZChi
KTsKKyAgICB9CisKKyAgICB2b2lkIHZpc2l0KEFTVDo6U3dpdGNoQ2FzZSYgc3dpdGNoQ2FzZSkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFZpc2l0b3I6OnZpc2l0KHN3aXRjaENhc2UpOworICAg
IH0KKworICAgIHZvaWQgdmlzaXQoQVNUOjpTd2l0Y2hTdGF0ZW1lbnQmIHN3aXRjaFN0YXRlbWVu
dCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmIChzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2Fz
ZXMoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIG1fc3RhY2suYXBwZW5kKHsgQmVoYXZpb3I6
Ok5vdGhpbmcgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBP
cHRpb25TZXQ8QmVoYXZpb3I+IHJlZHVjdGlvbiA9IHsgfTsKKyAgICAgICAgZm9yIChhdXRvJiBz
d2l0Y2hDYXNlIDogc3dpdGNoU3RhdGVtZW50LnN3aXRjaENhc2VzKCkpIHsKKyAgICAgICAgICAg
IGNoZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hDYXNlKTsKKyAgICAgICAgICAgIGlmIChlcnJvcigp
KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGF1dG8gYiA9IG1fc3RhY2su
dGFrZUxhc3QoKTsKKyAgICAgICAgICAgIHJlZHVjdGlvbiA9IE9wdGlvblNldDxCZWhhdmlvcj46
OmZyb21SYXcocmVkdWN0aW9uLnRvUmF3KCkgfCBiLnRvUmF3KCkpOworICAgICAgICB9CisgICAg
ICAgIGlmIChyZWR1Y3Rpb24uY29udGFpbnMoQmVoYXZpb3I6Ok5vdGhpbmcpKSB7CisgICAgICAg
ICAgICBzZXRFcnJvcigpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IHJlZHVjdGlvbi5yZW1vdmUoQmVoYXZpb3I6OkJyZWFrKTsKKyAgICAgICAgcmVkdWN0aW9uLnJl
bW92ZShCZWhhdmlvcjo6RmFsbHRocm91Z2gpOworICAgICAgICAvLyBGSVhNRTogVGhlIHNwZWMg
c2F5cyB0byBhZGQgIk5vdGhpbmciIGhlcmUsIGJ1dCBJIHRoaW5rIHRoZSBzcGVjIGlzIHdyb25n
LgorICAgICAgICByZWR1Y3Rpb24uYWRkKEJlaGF2aW9yOjpOb3RoaW5nKTsKKyAgICAgICAgbV9z
dGFjay5hcHBlbmQocmVkdWN0aW9uKTsKKyAgICB9CisgICAgdm9pZCB2aXNpdChBU1Q6OklmU3Rh
dGVtZW50JiBpZlN0YXRlbWVudCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGNoZWNrRXJyb3JB
bmRWaXNpdChpZlN0YXRlbWVudC5ib2R5KCkpOworICAgICAgICBpZiAoZXJyb3IoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgYXV0byBiID0gbV9zdGFjay50YWtlTGFzdCgpOworICAg
ICAgICBPcHRpb25TZXQ8QmVoYXZpb3I+IGJQcmltZTsKKyAgICAgICAgaWYgKGlmU3RhdGVtZW50
LmVsc2VCb2R5KCkpIHsKKyAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqaWZTdGF0ZW1l
bnQuZWxzZUJvZHkoKSk7CisgICAgICAgICAgICBpZiAoZXJyb3IoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICBiUHJpbWUgPSBtX3N0YWNrLnRha2VMYXN0KCk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgYlByaW1lID0geyBCZWhhdmlvcjo6Tm90aGluZyB9Owor
ICAgICAgICBtX3N0YWNrLmFwcGVuZChPcHRpb25TZXQ8QmVoYXZpb3I+Ojpmcm9tUmF3KGIudG9S
YXcoKSB8IGJQcmltZS50b1JhdygpKSk7CisgICAgfQorCisgICAgdm9pZCB2aXNpdChBU1Q6OkVm
ZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQmKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgbV9z
dGFjay5hcHBlbmQoeyBCZWhhdmlvcjo6Tm90aGluZyB9KTsKKyAgICB9CisKKyAgICB2b2lkIHZp
c2l0KEFTVDo6QmxvY2smIGJsb2NrKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgaWYgKGJsb2Nr
LnN0YXRlbWVudHMoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIG1fc3RhY2suYXBwZW5kKHsg
QmVoYXZpb3I6Ok5vdGhpbmcgfSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBPcHRpb25TZXQ8QmVoYXZpb3I+IHJlZHVjdGlvbiA9IHsgfTsKKyAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBibG9jay5zdGF0ZW1lbnRzKCkuc2l6ZSgpIC0gMTsgKytpKSB7
CisgICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoYmxvY2suc3RhdGVtZW50cygpW2ldKTsK
KyAgICAgICAgICAgIGlmIChlcnJvcigpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIGF1dG8gYiA9IG1fc3RhY2sudGFrZUxhc3QoKTsKKyAgICAgICAgICAgIGlmICghYi5j
b250YWlucyhCZWhhdmlvcjo6Tm90aGluZykpIHsKKyAgICAgICAgICAgICAgICBzZXRFcnJvcigp
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGIu
cmVtb3ZlKEJlaGF2aW9yOjpOb3RoaW5nKTsKKyAgICAgICAgICAgIGlmIChiLmNvbnRhaW5zKEJl
aGF2aW9yOjpGYWxsdGhyb3VnaCkpIHsKKyAgICAgICAgICAgICAgICBzZXRFcnJvcigpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlZHVjdGlv
biA9IE9wdGlvblNldDxCZWhhdmlvcj46OmZyb21SYXcocmVkdWN0aW9uLnRvUmF3KCkgfCBiLnRv
UmF3KCkpOworICAgICAgICB9CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChibG9jay5zdGF0
ZW1lbnRzKClbYmxvY2suc3RhdGVtZW50cygpLnNpemUoKSAtIDFdKTsKKyAgICAgICAgaWYgKGVy
cm9yKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGF1dG8gYiA9IG1fc3RhY2sudGFr
ZUxhc3QoKTsKKyAgICAgICAgbV9zdGFjay5hcHBlbmQoT3B0aW9uU2V0PEJlaGF2aW9yPjo6ZnJv
bVJhdyhyZWR1Y3Rpb24udG9SYXcoKSB8IGIudG9SYXcoKSkpOworICAgIH0KKworICAgIHZvaWQg
dmlzaXQoQVNUOjpWYXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCYpIG92ZXJyaWRlCisgICAg
eworICAgICAgICBtX3N0YWNrLmFwcGVuZCh7IEJlaGF2aW9yOjpOb3RoaW5nIH0pOworICAgIH0K
KworICAgIFZlY3RvcjxPcHRpb25TZXQ8QmVoYXZpb3I+PiBtX3N0YWNrOworfTsKKworYm9vbCBj
aGVja1N0YXRlbWVudEJlaGF2aW9yKFByb2dyYW0mIHByb2dyYW0pCit7CisgICAgU3RhdGVtZW50
QmVoYXZpb3JDaGVja2VyIHN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlcjsKKyAgICBmb3IgKGF1dG8m
IGZ1bmN0aW9uRGVmaW5pdGlvbiA6IHByb2dyYW0uZnVuY3Rpb25EZWZpbml0aW9ucygpKSB7Cisg
ICAgICAgIGlmIChtYXRjaGVzKGZ1bmN0aW9uRGVmaW5pdGlvbi0+dHlwZSgpLCBwcm9ncmFtLmlu
dHJpbnNpY3MoKS52b2lkVHlwZSgpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBz
dGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuVmlzaXRvcjo6dmlzaXQoZnVuY3Rpb25EZWZpbml0aW9u
KTsKKyAgICAgICAgaWYgKHN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5lcnJvcigpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhdXRvIGJlaGF2aW9yID0gc3RhdGVtZW50QmVo
YXZpb3JDaGVja2VyLnRha2VGdW5jdGlvbkJlaGF2aW9yKCk7CisgICAgICAgIGlmIChiZWhhdmlv
ciAhPSBPcHRpb25TZXQ8U3RhdGVtZW50QmVoYXZpb3JDaGVja2VyOjpCZWhhdmlvcj4oU3RhdGVt
ZW50QmVoYXZpb3JDaGVja2VyOjpCZWhhdmlvcjo6UmV0dXJuKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdI
TFNMCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0
YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZWNkZmU2
MWZhODAyYTJiNDQ1NDNhMDE2YjFkMDRlMjZlNzRiM2VjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNo
ZWNrZXIuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoV0VCR1BVKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK25hbWVzcGFjZSBXSExT
TCB7CisKK2NsYXNzIFByb2dyYW07CisKK2Jvb2wgY2hlY2tTdGF0ZW1lbnRCZWhhdmlvcihQcm9n
cmFtJik7CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNDQ2YTgwNmE4Nzhh
NTFhYjk4N2JiN2QxYzM3MzI4Y2Q4ZWU5N2MxNC4uNTQ0NDM3NTFlOTNhZDNlMjc3M2YyNzhjMmQ2
NjZjNTFjYmJiMTRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTMxOCw2ICszMTgsNyBAQCBNb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMuY3BwCiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0aW9ucy5jcHAKIE1vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZVN0cnVjdHVyZUFjY2Vzc29ycy5jcHAKIE1v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW50cmluc2ljcy5jcHAKK01vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmNwcAogTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xOYW1lQ29udGV4dC5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFtZVJl
c29sdmVyLmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBs
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IGI5NmZhMmRlYzQxZTQ5ZTMxNDE0MmQwYjY0NTIyYmEzYzc5MjRjNmEuLmJkMGQ1
YTQzZDVlZGMxMWNmMTc1NjgyZDMyY2Q4ZDExYzkxM2UwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI1ODUsOSArMjU4NSw5
IEBACiAJCTkxMjc4RDVFMjFERURBRDYwMEI1NzE4NCAvKiBQYWdlQXVkaXRBZ2VudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTEyNzhENUMyMURFREFE
NTAwQjU3MTg0IC8qIFBhZ2VBdWRpdEFnZW50LmggKi87IH07CiAJCTkxMjc4RDYyMjFERURBRjAw
MEI1NzE4NCAvKiBXb3JrZXJBdWRpdEFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MTI3OEQ2MDIxREVEQUYwMDBCNTcxODQgLyogV29ya2VyQXVk
aXRBZ2VudC5oICovOyB9OwogCQk5MTc1Q0U1QzIxRTI4MUVEMDBERjJDMjcgLyogSW5zcGVjdG9y
QXVkaXRET01PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkxNzVDRTU4MjFFMjgxRUMwMERGMkMyNyAvKiBJbnNwZWN0b3JBdWRpdERPTU9iamVj
dC5oICovOyB9OwotCQk5MTc1Q0U1QzIxRTI4MUVEMDBERjJDMjggLyogSlNJbnNwZWN0b3JBdWRp
dERPTU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTE3NUNFNTgyMUUyODFFQzAwREYyQzI4IC8qIEluc3BlY3RvckF1ZGl0RE9NT2JqZWN0Lmgg
Ki87IH07CisJCTkxNzVDRTVDMjFFMjgxRUQwMERGMkMyOCAvKiBJbnNwZWN0b3JBdWRpdERPTU9i
amVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTE3
NUNFNTgyMUUyODFFQzAwREYyQzI4IC8qIEluc3BlY3RvckF1ZGl0RE9NT2JqZWN0LmggKi87IH07
CiAJCTkxNzVDRTVFMjFFMjgxRUQwMERGMkMyNyAvKiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxp
dHlPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkxNzVDRTVBMjFFMjgxRUQwMERGMkMyNyAvKiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlP
YmplY3QuaCAqLzsgfTsKLQkJOTE3NUNFNUUyMUUyODFFRDAwREYyQzI4IC8qIEpTSW5zcGVjdG9y
QXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5MTc1Q0U1QTIxRTI4MUVEMDBERjJDMjggLyogSW5zcGVjdG9yQXVk
aXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmggKi87IH07CisJCTkxNzVDRTVFMjFFMjgxRUQwMERGMkMy
OCAvKiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkxNzVDRTVBMjFFMjgxRUQwMERGMkMyOCAv
KiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuaCAqLzsgfTsKIAkJOTFCOEYwQjUy
MTk1M0Q2NTAwMEMyQjAwIC8qIENlcnRpZmljYXRlSW5mb0Jhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkxQjhGMEIzMjE5NTNENjUwMDBDMkIwMCAv
KiBDZXJ0aWZpY2F0ZUluZm9CYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJOTFCOTUyMjQxRjU4QTU4RjAwOTMxREMyIC8qIFJlY29yZGluZ1N3
aXp6bGVUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTFCOTUyMjIxRjU4QTU4MDAwOTMxREMyIC8qIFJlY29yZGluZ1N3aXp6bGVUeXBlcy5oICov
OyB9OwogCQk5MUM5RjJGOTFBRTNCRUIwMDA5NUI2MUMgLyogQVhUZXh0U3RhdGVDaGFuZ2VJbnRl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkxQzlG
MkY4MUFFM0JFMjQwMDk1QjYxQyAvKiBBWFRleHRTdGF0ZUNoYW5nZUludGVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDM5NCwxMyArMTAz
OTQsMTMgQEAKIAkJOTEyNzhENUYyMURFREFFRjAwQjU3MTg0IC8qIFdvcmtlckF1ZGl0QWdlbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV29ya2VyQXVkaXRBZ2Vu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkxMjc4RDYwMjFERURBRjAwMEI1
NzE4NCAvKiBXb3JrZXJBdWRpdEFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdvcmtlckF1ZGl0QWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTE3
NUNFNTcyMUUyODFFQjAwREYyQzI3IC8qIEluc3BlY3RvckF1ZGl0RE9NT2JqZWN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckF1ZGl0RE9NT2JqZWN0
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTE3NUNFNTcyMUUyODFFQjAwREYy
QzI4IC8qIEpTSW5zcGVjdG9yQXVkaXRET01PYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQXVkaXRET01PYmplY3QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk5MTc1Q0U1NzIxRTI4MUVCMDBERjJDMjggLyogSW5zcGVjdG9y
QXVkaXRET01PYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SW5zcGVjdG9yQXVkaXRET01PYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5MTc1Q0U1ODIxRTI4MUVDMDBERjJDMjcgLyogSW5zcGVjdG9yQXVkaXRET01PYmplY3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQXVkaXRET01PYmplY3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTE3NUNFNTgyMUUyODFFQzAwREYyQzI4
IC8qIEpTSW5zcGVjdG9yQXVkaXRET01PYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5zcGVjdG9yQXVkaXRET01PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTE3NUNFNTgyMUUyODFFQzAwREYyQzI4IC8qIEluc3BlY3RvckF1ZGl0RE9NT2Jq
ZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckF1ZGl0RE9N
T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkxNzVDRTU5MjFFMjgxRUMw
MERGMkMyNyAvKiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTE3NUNFNTkyMUUyODFF
QzAwREYyQzI4IC8qIEpTSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJp
bGl0eU9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkxNzVDRTU5MjFF
MjgxRUMwMERGMkMyOCAvKiBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQXVkaXRBY2Nlc3Np
YmlsaXR5T2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTE3NUNFNUEy
MUUyODFFRDAwREYyQzI3IC8qIEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxp
dHlPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTE3NUNFNUEyMUUyODFF
RDAwREYyQzI4IC8qIEpTSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9i
amVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MTc1Q0U1QTIxRTI4MUVEMDBE
RjJDMjggLyogSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MUI4RjBCMzIxOTUzRDY1MDAwQzJCMDAg
LyogQ2VydGlmaWNhdGVJbmZvQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDZXJ0aWZpY2F0ZUluZm9CYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkx
Qjk1MjIyMUY1OEE1ODAwMDkzMURDMiAvKiBSZWNvcmRpbmdTd2l6emxlVHlwZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUmVjb3JkaW5nU3dpenpsZVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTkxQzlGMkY4MUFFM0JFMjQwMDk1QjYxQyAvKiBBWFRleHRTdGF0ZUNoYW5nZUludGVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBWFRleHRTdGF0ZUNoYW5nZUludGVudC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTMzNzUsNiArMTMzNzUsOCBAQAogCQlDMjM0QTlCNTIxRTky
QzIzMDAzQzk4NEQgLyogV0hMU0xTeW50aGVzaXplU3RydWN0dXJlQWNjZXNzb3JzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdITFNMU3ludGhlc2l6ZVN0cnVjdHVyZUFjY2Vzc29ycy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMjM0QTlCNjIxRTkyQ0MwMDAzQzk4NEQgLyogV0hMU0xJbnRy
aW5zaWNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMSW50cmluc2ljcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDMjM0QTlCNzIxRTkyQ0MxMDAzQzk4NEQgLyogV0hMU0xJbnRyaW5z
aWNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMSW50cmluc2ljcy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyMzRBOUM5MjFFRjJDNzcwMDNDOTg0RCAvKiBXSExTTFN0
YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFN0YXRl
bWVudEJlaGF2aW9yQ2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMy
MzRBOUNBMjFFRjJDNzcwMDNDOTg0RCAvKiBXSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDMjQ1OEU2MTFGRTg5NzlFMDA1OTQ3NTkgLyogRm9udENh
Y2hlQ29yZVRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9udENhY2hlQ29yZVRleHQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI2MDE3QTExQzcyREM5OTAwRjc0QTE2IC8qIENTU0Zv
bnRGYWNlU2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU0Zv
bnRGYWNlU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzI2MDE3QTIxQzcy
REM5OTAwRjc0QTE2IC8qIENTU0ZvbnRGYWNlU2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENTU0ZvbnRGYWNlU2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNjkzNywxMiArMTY5MzksMTIgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCiAJCQkJQTU4NEZFMjUxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxl
U291cmNlLmggKi8sCisJCQkJOTE3NUNFNTkyMUUyODFFQzAwREYyQzI4IC8qIEluc3BlY3RvckF1
ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgKi8sCisJCQkJOTE3NUNFNUEyMUUyODFFRDAwREYy
QzI4IC8qIEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5oICovLAorCQkJCTkxNzVD
RTU3MjFFMjgxRUIwMERGMkMyOCAvKiBJbnNwZWN0b3JBdWRpdERPTU9iamVjdC5jcHAgKi8sCisJ
CQkJOTE3NUNFNTgyMUUyODFFQzAwREYyQzI4IC8qIEluc3BlY3RvckF1ZGl0RE9NT2JqZWN0Lmgg
Ki8sCiAJCQkJQTU4NEZFMzkxODY0RTJEODAwODQzQjEwIC8qIEpTQ29tbWFuZExpbmVBUElIb3N0
LmNwcCAqLywKIAkJCQlBNTg0RkUzQTE4NjRFMkQ4MDA4NDNCMTAgLyogSlNDb21tYW5kTGluZUFQ
SUhvc3QuaCAqLywKLQkJCQk5MTc1Q0U1OTIxRTI4MUVDMDBERjJDMjggLyogSlNJbnNwZWN0b3JB
dWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuY3BwICovLAotCQkJCTkxNzVDRTVBMjFFMjgxRUQwMERG
MkMyOCAvKiBKU0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5oICovLAotCQkJCTkx
NzVDRTU3MjFFMjgxRUIwMERGMkMyOCAvKiBKU0luc3BlY3RvckF1ZGl0RE9NT2JqZWN0LmNwcCAq
LywKLQkJCQk5MTc1Q0U1ODIxRTI4MUVDMDBERjJDMjggLyogSlNJbnNwZWN0b3JBdWRpdERPTU9i
amVjdC5oICovLAogCQkJCTdBMEU3NzFDMTBDMDBEQjEwMEEwMjc2RSAvKiBKU0luc3BlY3RvckZy
b250ZW5kSG9zdC5jcHAgKi8sCiAJCQkJN0EwRTc3MUQxMEMwMERCMTAwQTAyNzZFIC8qIEpTSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmggKi8sCiAJCQkpOwpAQCAtMjU0NzcsNiArMjU0NzksOCBAQAog
CQkJCUMyMzRBOTk3MjFFOTBGMjgwMDNDOTg0RCAvKiBXSExTTFJlc29sdmVPdmVybG9hZEltcGwu
aCAqLywKIAkJCQlDMjM0QTk5RDIxRTkxMEJEMDAzQzk4NEQgLyogV0hMU0xSZXNvbHZpbmdUeXBl
LmggKi8sCiAJCQkJQzIxQkY3NDUyMUNEOTY5ODAwMjI3OTc5IC8qIFdITFNMU3RhbmRhcmRMaWJy
YXJ5LnR4dCAqLywKKwkJCQlDMjM0QTlDOTIxRUYyQzc3MDAzQzk4NEQgLyogV0hMU0xTdGF0ZW1l
bnRCZWhhdmlvckNoZWNrZXIuY3BwICovLAorCQkJCUMyMzRBOUNBMjFFRjJDNzcwMDNDOTg0RCAv
KiBXSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5oICovLAogCQkJCUMyMzRBOUE5MjFFOTJD
MTcwMDNDOTg0RCAvKiBXSExTTFN5bnRoZXNpemVBcnJheU9wZXJhdG9yTGVuZ3RoLmNwcCAqLywK
IAkJCQlDMjM0QTlBRjIxRTkyQzFCMDAzQzk4NEQgLyogV0hMU0xTeW50aGVzaXplQXJyYXlPcGVy
YXRvckxlbmd0aC5oICovLAogCQkJCUMyMzRBOUIwMjFFOTJDMUMwMDNDOTg0RCAvKiBXSExTTFN5
bnRoZXNpemVDb25zdHJ1Y3RvcnMuY3BwICovLApAQCAtMjk1NTIsNyArMjk1NTYsOSBAQAogCQkJ
CTkzMzA5REYyMDk5RTY0OTIwMDU2RTU4MSAvKiBJbnNlcnRUZXh0Q29tbWFuZC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTVCODFDQTcxRkFBNDQ2MjAwMzdEMUU2IC8qIEluc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTE3NUNFNUUyMUUyODFFRDAwREYy
QzI3IC8qIEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJOTE3NUNFNUUyMUUyODFFRDAwREYyQzI4IC8qIEluc3BlY3RvckF1ZGl0QWNjZXNzaWJp
bGl0eU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTE3NUNFNUMyMUUyODFFRDAwREYyQzI3
IC8qIEluc3BlY3RvckF1ZGl0RE9NT2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk5MTc1Q0U1
QzIxRTI4MUVEMDBERjJDMjggLyogSW5zcGVjdG9yQXVkaXRET01PYmplY3QuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTZBMjJFODcwMUYxMDQxODYwMEY1NDZDMyAvKiBJbnNwZWN0b3JDYW52YXMuaCBp
biBIZWFkZXJzICovLAogCQkJCUE1QjgxQ0E4MUZBQTQ0NjIwMDM3RDFFNiAvKiBJbnNwZWN0b3JD
YW52YXNBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4MUI5NUMwRTk3MzMwODAwMjY2RTA3
IC8qIEluc3BlY3RvckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTk4NSw4ICsyOTk5MSw2
IEBACiAJCQkJQTc3OTc5MjkwRDZCOUU2NDAwMzg1MUI5IC8qIEpTSW1hZ2VEYXRhLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3QzE5M0MwMTFGNUUxMTA1MDA4OEYzRTYgLyogSlNJbWFnZVNtb290aGlu
Z1F1YWxpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NjYyOUQzMDlEQTJCNDgwMDk2MzNBNiAv
KiBKU0lucHV0RXZlbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTkxNzVDRTVFMjFFMjgxRUQwMERG
MkMyOCAvKiBKU0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJOTE3NUNFNUMyMUUyODFFRDAwREYyQzI4IC8qIEpTSW5zcGVjdG9yQXVkaXRET01P
YmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBMEU3NzFGMTBDMDBEQjEwMEEwMjc2RSAvKiBK
U0luc3BlY3RvckZyb250ZW5kSG9zdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NzEwRTYxREI3
MDBDNzAwMkRDRUMzIC8qIEpTSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGOEI0NTc2MURDNDFEQkEwMDQ0M0MzRiAvKiBKU0ludGVyc2VjdGlvbk9ic2VydmVyQ2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359342</attachid>
            <date>2019-01-16 18:59:22 -0800</date>
            <delta_ts>2019-01-18 17:42:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193487-20190116185921.patch</filename>
            <type>text/plain</type>
            <size>38049</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMDk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQ2YmIxM2E0MGIxY2I5
ODg2MjMzMjMzZDc1YTY3Nzg4NmVkYzdkZC4uNmQzNmZjYTc5MTU0YmYwYWI2ZWQ1OTUxZGM0NmI2
MzE0ZGM3YmNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTAxLTE2ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dITFNMXSBB
ZGQgdGhlIHN0YXRlbWVudCBiZWhhdmlvciBjaGVja2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM0ODcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGEgdHJhbnNsYXRpb24gb2YgaHR0cHM6
Ly9naXRodWIuY29tL2dwdXdlYi9XSExTTC9ibG9iL21hc3Rlci9TcGVjL3NvdXJjZS9pbmRleC5y
c3QjdHlwaW5nLXN0YXRlbWVudHMKKyAgICAgICAgaW50byBDKysuIEl0IGlzIG1lYW50IHRvIHJl
cGxhY2UgdGhlIFJldHVybkNoZWNrZXIgYW5kIFVucmVhY2hhYmxlQ29kZUNoZWNrZXIgaW4gdGhl
IHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVz
ZSBpdCBpc24ndCBob29rZWQgdXAgeWV0LiBOb3QgZW5vdWdoIG9mIHRoZSBjb21waWxlciBleGlz
dHMgdG8gaGF2ZSBhbnkgbWVhbmluZ2Z1bCBzb3J0CisgICAgICAgIG9mIHRlc3QuIFdoZW4gZW5v
dWdoIG9mIHRoZSBjb21waWxlciBpcyBwcmVzZW50LCBJJ2xsIHBvcnQgdGhlIHJlZmVyZW5jZSBp
bXBsZW1lbnRhdGlvbidzIHRlc3Qgc3VpdGUuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OlN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlcjo6dGFrZUZ1bmN0aW9uQmVo
YXZpb3IpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OmNoZWNrU3RhdGVtZW50QmVoYXZpb3Ip
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhdGVtZW50QmVoYXZpb3JD
aGVja2VyLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wMS0xNiAgTXlsZXMgQy4gTWF4
ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSExTTF0gQWRkIHRoZSBm
dW5jdGlvbiBzdGFnZSBjaGVja2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTExvb3BDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZ3B1L1dITFNML1dITFNMTG9vcENoZWNrZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBhZTY4NTBiOWIyMjk3ZjU5YTU2NjkxMjMwNmNjODc3OTUxYzMyYTg2Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTG9vcENoZWNrZXIuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMTQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiV0hMU0xMb29wQ2hlY2tlci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLQotI2luY2x1
ZGUgIldITFNMQnJlYWsuaCIKLSNpbmNsdWRlICJXSExTTENvbnRpbnVlLmgiCi0jaW5jbHVkZSAi
V0hMU0xEb1doaWxlTG9vcC5oIgotI2luY2x1ZGUgIldITFNMRmFsbHRocm91Z2guaCIKLSNpbmNs
dWRlICJXSExTTEZvckxvb3AuaCIKLSNpbmNsdWRlICJXSExTTFN3aXRjaFN0YXRlbWVudC5oIgot
I2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotI2luY2x1ZGUgIldITFNMV2hpbGVMb29wLmgiCi0j
aW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFt
ZXNwYWNlIFdITFNMIHsKLQotLy8gVGhpcyBtYWtlcyBzdXJlIHRoYXQgZXZlcnkgb2NjdXJhbmNl
IG9mICJjb250aW51ZSwiICJicmVhaywiIGFuZCAiZmFsbHRocm91Z2giIGFwcGVhciB3aXRoaW4g
dGhlIHJlbGV2YW50IGNvbnRyb2wgZmxvdyBzdHJ1Y3R1cmUuCi1jbGFzcyBMb29wQ2hlY2tlciA6
IHB1YmxpYyBWaXNpdG9yIHsKLXB1YmxpYzoKLSAgICBMb29wQ2hlY2tlcigpID0gZGVmYXVsdDsK
LQotICAgIHZpcnR1YWwgfkxvb3BDaGVja2VyKCkgPSBkZWZhdWx0OwotCi1wcml2YXRlOgotICAg
IHZvaWQgdmlzaXQoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9uRGVmaW5pdGlvbikg
b3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9sb29wRGVwdGgpOwotICAgICAgICBB
U1NFUlQoIW1fc3dpdGNoRGVwdGgpOwotICAgICAgICBWaXNpdG9yOjp2aXNpdChmdW5jdGlvbkRl
ZmluaXRpb24pOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpXaGlsZUxvb3AmIHdoaWxl
TG9vcCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCh3aGlsZUxv
b3AuY29uZGl0aW9uYWwoKSk7Ci0KLSAgICAgICAgU2V0Rm9yU2NvcGU8dW5zaWduZWQ+IGNoYW5n
ZShtX2xvb3BEZXB0aCwgbV9sb29wRGVwdGggKyAxKTsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZp
c2l0KHdoaWxlTG9vcC5ib2R5KCkpOwotICAgICAgICBBU1NFUlQobV9sb29wRGVwdGgpOwotICAg
IH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpEb1doaWxlTG9vcCYgZG9XaGlsZUxvb3ApIG92ZXJy
aWRlCi0gICAgewotICAgICAgICB7Ci0gICAgICAgICAgICBTZXRGb3JTY29wZTx1bnNpZ25lZD4g
Y2hhbmdlKG1fbG9vcERlcHRoLCBtX2xvb3BEZXB0aCArIDEpOwotICAgICAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KGRvV2hpbGVMb29wLmJvZHkoKSk7Ci0gICAgICAgICAgICBBU1NFUlQobV9s
b29wRGVwdGgpOwotICAgICAgICB9Ci0KLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvV2hp
bGVMb29wLmNvbmRpdGlvbmFsKCkpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpGb3JM
b29wJiBmb3JMb29wKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgV1RGOjp2aXNpdChXVEY6Om1h
a2VWaXNpdG9yKFsmXShBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50JiB2YXJpYWJs
ZURlY2xhcmF0aW9uc1N0YXRlbWVudCkgewotICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KHZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KTsKLSAgICAgICAgfSwgWyZdKFVuaXF1ZVJl
ZjxBU1Q6OkV4cHJlc3Npb24+JiBleHByZXNzaW9uKSB7Ci0gICAgICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoZXhwcmVzc2lvbik7Ci0gICAgICAgIH0pLCBmb3JMb29wLmluaXRpYWxpemF0aW9u
KCkpOwotICAgICAgICBpZiAoZm9yTG9vcC5jb25kaXRpb24oKSkKLSAgICAgICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdCgqZm9yTG9vcC5jb25kaXRpb24oKSk7Ci0gICAgICAgIGlmIChmb3JMb29w
LmluY3JlbWVudCgpKQotICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCpmb3JMb29wLmlu
Y3JlbWVudCgpKTsKLQotICAgICAgICBTZXRGb3JTY29wZTx1bnNpZ25lZD4gY2hhbmdlKG1fbG9v
cERlcHRoLCBtX2xvb3BEZXB0aCArIDEpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZm9y
TG9vcC5ib2R5KCkpOwotICAgICAgICBBU1NFUlQobV9sb29wRGVwdGgpOwotICAgIH0KLQotICAg
IHZvaWQgdmlzaXQoQVNUOjpTd2l0Y2hTdGF0ZW1lbnQmIHN3aXRjaFN0YXRlbWVudCkgb3ZlcnJp
ZGUKLSAgICB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hTdGF0ZW1lbnQudmFs
dWUoKSk7Ci0KLSAgICAgICAgU2V0Rm9yU2NvcGU8dW5zaWduZWQ+IGNoYW5nZShtX3N3aXRjaERl
cHRoLCBtX3N3aXRjaERlcHRoICsgMSk7Ci0gICAgICAgIGZvciAoYXV0byYgc3dpdGNoQ2FzZSA6
IHN3aXRjaFN0YXRlbWVudC5zd2l0Y2hDYXNlcygpKQotICAgICAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KHN3aXRjaENhc2UpOwotICAgICAgICBBU1NFUlQobV9zd2l0Y2hEZXB0aCk7Ci0gICAg
fQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkJyZWFrJiBicmVha1N0YXRlbWVudCkgb3ZlcnJpZGUK
LSAgICB7Ci0gICAgICAgIGlmICghbV9sb29wRGVwdGggJiYgIW1fc3dpdGNoRGVwdGgpIHsKLSAg
ICAgICAgICAgIHNldEVycm9yKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAg
ICAgICAgVmlzaXRvcjo6dmlzaXQoYnJlYWtTdGF0ZW1lbnQpOwotICAgIH0KLQotICAgIHZvaWQg
dmlzaXQoQVNUOjpDb250aW51ZSYgY29udGludWVTdGF0ZW1lbnQpIG92ZXJyaWRlCi0gICAgewot
ICAgICAgICBpZiAoIW1fbG9vcERlcHRoKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcigpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KGNvbnRp
bnVlU3RhdGVtZW50KTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6RmFsbHRocm91Z2gm
IGZhbGx0aHJvdWdoU3RhdGVtZW50KSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKCFtX3N3
aXRjaERlcHRoKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcigpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KGZhbGx0aHJvdWdoU3RhdGVtZW50
KTsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBtX2xvb3BEZXB0aCB7IDAgfTsKLSAgICB1bnNpZ25l
ZCBtX3N3aXRjaERlcHRoIHsgMCB9OwotfTsKLQotYm9vbCBjaGVja0xvb3BzKFByb2dyYW0mIHBy
b2dyYW0pCi17Ci0gICAgTG9vcENoZWNrZXIgbG9vcENoZWNrZXI7Ci0gICAgbG9vcENoZWNrZXIu
VmlzaXRvcjo6dmlzaXQocHJvZ3JhbSk7Ci0gICAgcmV0dXJuICFsb29wQ2hlY2tlci5lcnJvcigp
OwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0K
LSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMb29wQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMb29wQ2hlY2tlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAxZmNhYzY3ZWI5Njk3MDA1NTRkMGExZTcwMzNlYWUyOTY2ZTEyZjk2Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTG9vcENoZWNrZXIuaAorKysgL2Rldi9udWxsCkBA
IC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShX
RUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotY2xh
c3MgUHJvZ3JhbTsKLQotYm9vbCBjaGVja0xvb3BzKFByb2dyYW0mKTsKLQotfQotCi19Ci0KLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hM
U0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjhhMjFiOTZmOGY3Y2QyMjIxNGY1NWRlNjU4MDdjZmZhNDgwMWUzYzEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0YXRlbWVudEJl
aGF2aW9yQ2hlY2tlci5jcHAKQEAgLTAsMCArMSwyNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuaCIK
KworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTERvV2hpbGVMb29wLmgiCisj
aW5jbHVkZSAiV0hMU0xGb3JMb29wLmgiCisjaW5jbHVkZSAiV0hMU0xJZlN0YXRlbWVudC5oIgor
I2luY2x1ZGUgIldITFNMSW5mZXJUeXBlcy5oIgorI2luY2x1ZGUgIldITFNMUHJvZ3JhbS5oIgor
I2luY2x1ZGUgIldITFNMU3dpdGNoU3RhdGVtZW50LmgiCisjaW5jbHVkZSAiV0hMU0xXaGlsZUxv
b3AuaCIKKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworbmFtZXNwYWNl
IFdITFNMIHsKKworY2xhc3MgU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyIDogcHVibGljIFZpc2l0
b3IgeworcHVibGljOgorICAgIGVudW0gY2xhc3MgQmVoYXZpb3IgOiB1aW50OF90IHsKKyAgICAg
ICAgUmV0dXJuID0gMSA8PCAwLAorICAgICAgICBCcmVhayA9IDEgPDwgMSwKKyAgICAgICAgQ29u
dGludWUgPSAxIDw8IDIsCisgICAgICAgIEZhbGx0aHJvdWdoID0gMSA8PCAzLAorICAgICAgICBO
b3RoaW5nID0gMSA8PCA0CisgICAgfTsKKworICAgIE9wdGlvblNldDxCZWhhdmlvcj4gdGFrZUZ1
bmN0aW9uQmVoYXZpb3IoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc3RhY2suc2l6ZSgpID09
IDEpOworICAgICAgICByZXR1cm4gbV9zdGFjay50YWtlTGFzdCgpOworICAgIH0KKworcHJpdmF0
ZToKKyAgICB2b2lkIHZpc2l0KEFTVDo6QnJlYWsmKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAg
bV9zdGFjay5hcHBlbmQoeyBCZWhhdmlvcjo6QnJlYWsgfSk7CisgICAgfQorCisgICAgdm9pZCB2
aXNpdChBU1Q6OkZhbGx0aHJvdWdoJikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIG1fc3RhY2su
YXBwZW5kKHsgQmVoYXZpb3I6OkZhbGx0aHJvdWdoIH0pOworICAgIH0KKworICAgIHZvaWQgdmlz
aXQoQVNUOjpDb250aW51ZSYpIG92ZXJyaWRlCisgICAgeworICAgICAgICBtX3N0YWNrLmFwcGVu
ZCh7IEJlaGF2aW9yOjpDb250aW51ZSB9KTsKKyAgICB9CisKKyAgICB2b2lkIHZpc2l0KEFTVDo6
UmV0dXJuJikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIG1fc3RhY2suYXBwZW5kKHsgQmVoYXZp
b3I6OlJldHVybiB9KTsKKyAgICB9CisKKyAgICB2b2lkIHZpc2l0KEFTVDo6VHJhcCYpIG92ZXJy
aWRlCisgICAgeworICAgICAgICBtX3N0YWNrLmFwcGVuZCh7IEJlaGF2aW9yOjpSZXR1cm4gfSk7
CisgICAgfQorCisgICAgdm9pZCB2aXNpdChBU1Q6OkRvV2hpbGVMb29wJiBkb1doaWxlTG9vcCkg
b3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChkb1doaWxlTG9vcC5i
b2R5KCkpOworICAgICAgICBpZiAoZXJyb3IoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgYXV0byBiID0gbV9zdGFjay50YWtlTGFzdCgpOworICAgICAgICBiLnJlbW92ZShCZWhhdmlv
cjo6QnJlYWspOworICAgICAgICBiLnJlbW92ZShCZWhhdmlvcjo6Q29udGludWUpOworICAgICAg
ICAvLyBGSVhNRTogVGhlIHNwZWMgc2F5cyB0byBhZGQgIk5vdGhpbmciIGhlcmUsIGJ1dCBJIHRo
aW5rIHRoZSBzcGVjIGlzIHdyb25nLgorICAgICAgICBiLmFkZChCZWhhdmlvcjo6Tm90aGluZyk7
CisgICAgICAgIG1fc3RhY2suYXBwZW5kKGIpOworICAgIH0KKworICAgIHZvaWQgdmlzaXQoQVNU
OjpGb3JMb29wJiBmb3JMb29wKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgYXV0byBpbml0aWFs
aXphdGlvbiA9IFdURjo6dmlzaXQoV1RGOjptYWtlVmlzaXRvcihbJl0oQVNUOjpWYXJpYWJsZURl
Y2xhcmF0aW9uc1N0YXRlbWVudCYgdmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQpIC0+IE9w
dGlvbmFsPE9wdGlvblNldDxCZWhhdmlvcj4+IHsKKyAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdCh2YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCk7CisgICAgICAgICAgICBpZiAoZXJy
b3IoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgICAgICAgICAg
cmV0dXJuIG1fc3RhY2sudGFrZUxhc3QoKTsKKyAgICAgICAgfSwgWyZdKFVuaXF1ZVJlZjxBU1Q6
OkV4cHJlc3Npb24+JikgLT4gT3B0aW9uYWw8T3B0aW9uU2V0PEJlaGF2aW9yPj4geworICAgICAg
ICAgICAgcmV0dXJuIHsgQmVoYXZpb3I6Ok5vdGhpbmcgfTsKKyAgICAgICAgfSksIGZvckxvb3Au
aW5pdGlhbGl6YXRpb24oKSk7CisgICAgICAgIGlmICghaW5pdGlhbGl6YXRpb24pCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGZvckxvb3AuYm9keSgp
KTsKKyAgICAgICAgaWYgKGVycm9yKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGF1
dG8gYiA9IG1fc3RhY2sudGFrZUxhc3QoKTsKKyAgICAgICAgYi5yZW1vdmUoQmVoYXZpb3I6OkJy
ZWFrKTsKKyAgICAgICAgYi5yZW1vdmUoQmVoYXZpb3I6OkNvbnRpbnVlKTsKKyAgICAgICAgYi5h
ZGQoQmVoYXZpb3I6Ok5vdGhpbmcpOworICAgICAgICBtX3N0YWNrLmFwcGVuZChPcHRpb25TZXQ8
QmVoYXZpb3I+Ojpmcm9tUmF3KGluaXRpYWxpemF0aW9uLT50b1JhdygpIHwgYi50b1JhdygpKSk7
CisgICAgfQorCisgICAgdm9pZCB2aXNpdChBU1Q6OldoaWxlTG9vcCYgd2hpbGVMb29wKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHdoaWxlTG9vcC5ib2R5KCkp
OworICAgICAgICBpZiAoZXJyb3IoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgYXV0
byBiID0gbV9zdGFjay50YWtlTGFzdCgpOworICAgICAgICBiLnJlbW92ZShCZWhhdmlvcjo6QnJl
YWspOworICAgICAgICBiLnJlbW92ZShCZWhhdmlvcjo6Q29udGludWUpOworICAgICAgICBiLmFk
ZChCZWhhdmlvcjo6Tm90aGluZyk7CisgICAgICAgIG1fc3RhY2suYXBwZW5kKGIpOworICAgIH0K
KworICAgIHZvaWQgdmlzaXQoQVNUOjpTd2l0Y2hDYXNlJiBzd2l0Y2hDYXNlKSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgVmlzaXRvcjo6dmlzaXQoc3dpdGNoQ2FzZSk7CisgICAgfQorCisgICAg
dm9pZCB2aXNpdChBU1Q6OlN3aXRjaFN0YXRlbWVudCYgc3dpdGNoU3RhdGVtZW50KSBvdmVycmlk
ZQorICAgIHsKKyAgICAgICAgaWYgKHN3aXRjaFN0YXRlbWVudC5zd2l0Y2hDYXNlcygpLmlzRW1w
dHkoKSkgeworICAgICAgICAgICAgbV9zdGFjay5hcHBlbmQoeyBCZWhhdmlvcjo6Tm90aGluZyB9
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIE9wdGlvblNldDxC
ZWhhdmlvcj4gcmVkdWN0aW9uID0geyB9OworICAgICAgICBmb3IgKGF1dG8mIHN3aXRjaENhc2Ug
OiBzd2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKSkgeworICAgICAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KHN3aXRjaENhc2UpOworICAgICAgICAgICAgaWYgKGVycm9yKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYXV0byBiID0gbV9zdGFjay50YWtlTGFzdCgp
OworICAgICAgICAgICAgcmVkdWN0aW9uID0gT3B0aW9uU2V0PEJlaGF2aW9yPjo6ZnJvbVJhdyhy
ZWR1Y3Rpb24udG9SYXcoKSB8IGIudG9SYXcoKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJl
ZHVjdGlvbi5jb250YWlucyhCZWhhdmlvcjo6Tm90aGluZykpIHsKKyAgICAgICAgICAgIHNldEVy
cm9yKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcmVkdWN0aW9u
LnJlbW92ZShCZWhhdmlvcjo6QnJlYWspOworICAgICAgICByZWR1Y3Rpb24ucmVtb3ZlKEJlaGF2
aW9yOjpGYWxsdGhyb3VnaCk7CisgICAgICAgIC8vIEZJWE1FOiBUaGUgc3BlYyBzYXlzIHRvIGFk
ZCAiTm90aGluZyIgaGVyZSwgYnV0IEkgdGhpbmsgdGhlIHNwZWMgaXMgd3JvbmcuCisgICAgICAg
IHJlZHVjdGlvbi5hZGQoQmVoYXZpb3I6Ok5vdGhpbmcpOworICAgICAgICBtX3N0YWNrLmFwcGVu
ZChyZWR1Y3Rpb24pOworICAgIH0KKyAgICB2b2lkIHZpc2l0KEFTVDo6SWZTdGF0ZW1lbnQmIGlm
U3RhdGVtZW50KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGlm
U3RhdGVtZW50LmJvZHkoKSk7CisgICAgICAgIGlmIChlcnJvcigpKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBhdXRvIGIgPSBtX3N0YWNrLnRha2VMYXN0KCk7CisgICAgICAgIE9wdGlv
blNldDxCZWhhdmlvcj4gYlByaW1lOworICAgICAgICBpZiAoaWZTdGF0ZW1lbnQuZWxzZUJvZHko
KSkgeworICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCppZlN0YXRlbWVudC5lbHNlQm9k
eSgpKTsKKyAgICAgICAgICAgIGlmIChlcnJvcigpKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIGJQcmltZSA9IG1fc3RhY2sudGFrZUxhc3QoKTsKKyAgICAgICAgfSBlbHNl
CisgICAgICAgICAgICBiUHJpbWUgPSB7IEJlaGF2aW9yOjpOb3RoaW5nIH07CisgICAgICAgIG1f
c3RhY2suYXBwZW5kKE9wdGlvblNldDxCZWhhdmlvcj46OmZyb21SYXcoYi50b1JhdygpIHwgYlBy
aW1lLnRvUmF3KCkpKTsKKyAgICB9CisKKyAgICB2b2lkIHZpc2l0KEFTVDo6RWZmZWN0ZnVsRXhw
cmVzc2lvblN0YXRlbWVudCYpIG92ZXJyaWRlCisgICAgeworICAgICAgICBtX3N0YWNrLmFwcGVu
ZCh7IEJlaGF2aW9yOjpOb3RoaW5nIH0pOworICAgIH0KKworICAgIHZvaWQgdmlzaXQoQVNUOjpC
bG9jayYgYmxvY2spIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoYmxvY2suc3RhdGVtZW50
cygpLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgbV9zdGFjay5hcHBlbmQoeyBCZWhhdmlvcjo6
Tm90aGluZyB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIE9w
dGlvblNldDxCZWhhdmlvcj4gcmVkdWN0aW9uID0geyB9OworICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGJsb2NrLnN0YXRlbWVudHMoKS5zaXplKCkgLSAxOyArK2kpIHsKKyAgICAgICAg
ICAgIGNoZWNrRXJyb3JBbmRWaXNpdChibG9jay5zdGF0ZW1lbnRzKClbaV0pOworICAgICAgICAg
ICAgaWYgKGVycm9yKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYXV0
byBiID0gbV9zdGFjay50YWtlTGFzdCgpOworICAgICAgICAgICAgaWYgKCFiLmNvbnRhaW5zKEJl
aGF2aW9yOjpOb3RoaW5nKSkgeworICAgICAgICAgICAgICAgIHNldEVycm9yKCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYi5yZW1vdmUoQmVo
YXZpb3I6Ok5vdGhpbmcpOworICAgICAgICAgICAgaWYgKGIuY29udGFpbnMoQmVoYXZpb3I6OkZh
bGx0aHJvdWdoKSkgeworICAgICAgICAgICAgICAgIHNldEVycm9yKCk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVkdWN0aW9uID0gT3B0aW9u
U2V0PEJlaGF2aW9yPjo6ZnJvbVJhdyhyZWR1Y3Rpb24udG9SYXcoKSB8IGIudG9SYXcoKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGJsb2NrLnN0YXRlbWVudHMoKVti
bG9jay5zdGF0ZW1lbnRzKCkuc2l6ZSgpIC0gMV0pOworICAgICAgICBpZiAoZXJyb3IoKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgYXV0byBiID0gbV9zdGFjay50YWtlTGFzdCgpOwor
ICAgICAgICBtX3N0YWNrLmFwcGVuZChPcHRpb25TZXQ8QmVoYXZpb3I+Ojpmcm9tUmF3KHJlZHVj
dGlvbi50b1JhdygpIHwgYi50b1JhdygpKSk7CisgICAgfQorCisgICAgdm9pZCB2aXNpdChBU1Q6
OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50Jikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAg
IG1fc3RhY2suYXBwZW5kKHsgQmVoYXZpb3I6Ok5vdGhpbmcgfSk7CisgICAgfQorCisgICAgVmVj
dG9yPE9wdGlvblNldDxCZWhhdmlvcj4+IG1fc3RhY2s7Cit9OworCitib29sIGNoZWNrU3RhdGVt
ZW50QmVoYXZpb3IoUHJvZ3JhbSYgcHJvZ3JhbSkKK3sKKyAgICBTdGF0ZW1lbnRCZWhhdmlvckNo
ZWNrZXIgc3RhdGVtZW50QmVoYXZpb3JDaGVja2VyOworICAgIGZvciAoYXV0byYgZnVuY3Rpb25E
ZWZpbml0aW9uIDogcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkpIHsKKyAgICAgICAgc3Rh
dGVtZW50QmVoYXZpb3JDaGVja2VyLlZpc2l0b3I6OnZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlvbik7
CisgICAgICAgIGlmIChzdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuZXJyb3IoKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYXV0byBiZWhhdmlvciA9IHN0YXRlbWVudEJlaGF2
aW9yQ2hlY2tlci50YWtlRnVuY3Rpb25CZWhhdmlvcigpOworICAgICAgICBpZiAobWF0Y2hlcyhm
dW5jdGlvbkRlZmluaXRpb24tPnR5cGUoKSwgcHJvZ3JhbS5pbnRyaW5zaWNzKCkudm9pZFR5cGUo
KSkpIHsKKyAgICAgICAgICAgIGJlaGF2aW9yLnJlbW92ZShTdGF0ZW1lbnRCZWhhdmlvckNoZWNr
ZXI6OkJlaGF2aW9yOjpSZXR1cm4pOworICAgICAgICAgICAgYmVoYXZpb3IucmVtb3ZlKFN0YXRl
bWVudEJlaGF2aW9yQ2hlY2tlcjo6QmVoYXZpb3I6Ok5vdGhpbmcpOworICAgICAgICAgICAgaWYg
KGJlaGF2aW9yICE9IE9wdGlvblNldDxTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXI6OkJlaGF2aW9y
PigpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIGlmIChiZWhhdmlvciAhPSBTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXI6OkJlaGF2
aW9yOjpSZXR1cm4pCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9Cisg
ICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXSExTTAorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGF0ZW1lbnRCZWhh
dmlvckNoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
U3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWVjZGZlNjFmYTgwMmEyYjQ0
NTQzYTAxNmIxZDA0ZTI2ZTc0YjNlYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmgKQEAg
LTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFdF
QkdQVSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCitjbGFz
cyBQcm9ncmFtOworCitib29sIGNoZWNrU3RhdGVtZW50QmVoYXZpb3IoUHJvZ3JhbSYpOworCit9
CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGI2MTI0MTkyY2U5NDQ1MmY2ZDFmZTRi
YmYzMDlmY2RhYzQxYjQ3MmEuLmRjMmU0YmYwZGQ3NzZlMmRjMmFlOWNhMWFjMDA5MDU3YjFiNzIz
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0zMTgsNiArMzE4LDcgQEAgTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wv
V0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMuY3BwCiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFN5bnRoZXNpemVTdHJ1Y3R1cmVBY2Nlc3NvcnMuY3BwCiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTEludHJpbnNpY3MuY3BwCitNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0
YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTmFt
ZUNvbnRleHQuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5jcHAK
IE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVzb2x2ZU92ZXJsb2FkSW1wbC5jcHAKQEAgLTMy
NSw3ICszMjYsNiBAQCBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2lvbkNoZWNrZXIu
Y3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZpc2l0b3IuY3BwCiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTExpdGVyYWxUeXBlQ2hlY2tlci5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dITFNM
L1dITFNMSGlnaFpvbWJpZUZpbmRlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTG9v
cENoZWNrZXIuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEZ1bmN0aW9uU3RhZ2VDaGVj
a2VyLmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZUFyZ3VtZW50LmNwcAog
TW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM0
OThmYThhMmJmZWZkNWM3OTAzMTE1YmYyMzcwODk2NmY5MjQxMTUuLmJlZDg0OGJiNzNlZWY2OGFl
MzlmMWRiZDE3N2UzNzFkZGRhMDk0N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY0MjcsMTcgKzY0MjcsMTQgQEAKIAkJMUM4
NDBCOUEyMUVDNDAwOTAwRDA1MDBEIC8qIFdITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMR2F0aGVyRW50cnlQb2ludEl0ZW1zLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFDODQwQjlCMjFFQzQwMDkwMEQwNTAwRCAvKiBXSExTTENoZWNrZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUM5MDRERjkwQkE5RDJDODAwODFFOUQwIC8qIFZlcnNpb24ueGNjb25m
aWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gVmVyc2lvbi54Y2NvbmZpZzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUNBMEMyRTQyMUVFRDEyQTAwQTExODYwIC8qIFdI
TFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xGdW5j
dGlvblN0YWdlQ2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQTBD
MkU1MjFFRUQxMkEwMEExMTg2MCAvKiBXSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMUM5QUU1Q0EyMUVEOURGNTAwNjlENUYyIC8qIFdITFNMSGlnaFpvbWJpZUZp
bmRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTEhpZ2hab21iaWVGaW5kZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQzlBRTVDQjIxRUQ5REY1MDA2OUQ1RjIgLyog
V0hMU0xIaWdoWm9tYmllRmluZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMSGlnaFpvbWJpZUZp
bmRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0EwQzJERTIxRUVCNUY0MDBB
MTE4NjAgLyogV0hMU0xSZWN1cnNpb25DaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMUmVj
dXJzaW9uQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0EwQzJFMDIx
RUVCNUY1MDBBMTE4NjAgLyogV0hMU0xSZWN1cnNpb25DaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdITFNMUmVjdXJzaW9uQ2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFDQTBDMkU0MjFFRUQxMkEwMEExMTg2MCAvKiBXSExTTEZ1bmN0aW9uU3RhZ2VDaGVj
a2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0EwQzJFNTIxRUVEMTJBMDBBMTE4NjAg
LyogV0hMU0xGdW5jdGlvblN0YWdlQ2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTEZ1bmN0
aW9uU3RhZ2VDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQTBDMkVB
MjFFRUQ2RjUwMEExMTg2MCAvKiBXSExTTExpdGVyYWxUeXBlQ2hlY2tlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTExpdGVyYWxUeXBlQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkxQ0EwQzJFQzIxRUVENkY2MDBBMTE4NjAgLyogV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQzlBRTVDQTIxRUQ5REY1MDA2OUQ1RjIgLyogV0hM
U0xIaWdoWm9tYmllRmluZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMSGlnaFpvbWJp
ZUZpbmRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDOUFFNUNCMjFFRDlE
RjUwMDY5RDVGMiAvKiBXSExTTEhpZ2hab21iaWVGaW5kZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hM
U0xIaWdoWm9tYmllRmluZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQTBD
MkY0MjFFRURBRDAwMEExMTg2MCAvKiBXSExTTExvb3BDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdITFNMTG9vcENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQkxQ0EwQzJGNTIxRUVEQUQxMDBBMTE4NjAgLyogV0hMU0xMb29wQ2hlY2tlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXSExTTExvb3BDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTFDQTBDMkY2MjFFRURBRDIwMEExMTg2MCAvKiBBU1QgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmb2xkZXI7IHBhdGggPSBBU1Q7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDQTE5RTAzMERDMjU1OTUwMDY1QTk5NCAvKiBFdmVudExvb3BN
YWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBFdmVudExvb3BN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQTE5RTE1MERDMjU1Q0EwMDY1
QTk5NCAvKiBFdmVudExvb3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZl
bnRMb29wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQUYzNDdFMEE2QzQwNTIw
MEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViU2NyaXB0T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MzM4NCw2ICsxMzM4MSw4IEBACiAJCUMyMzRBOUI1MjFFOTJDMjMwMDNDOTg0RCAvKiBXSExTTFN5
bnRoZXNpemVTdHJ1Y3R1cmVBY2Nlc3NvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTeW50aGVz
aXplU3RydWN0dXJlQWNjZXNzb3JzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMy
MzRBOUI2MjFFOTJDQzAwMDNDOTg0RCAvKiBXSExTTEludHJpbnNpY3MuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0hMU0xJbnRyaW5zaWNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyMzRB
OUI3MjFFOTJDQzEwMDNDOTg0RCAvKiBXSExTTEludHJpbnNpY3MuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV0hMU0xJbnRyaW5zaWNzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QzIzNEE5QzkyMUVGMkM3NzAwM0M5ODREIC8qIFdITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzIzNEE5Q0EyMUVGMkM3NzAwM0M5ODRE
IC8qIFdITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNM
U3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUMyNDU4RTYxMUZFODk3OUUwMDU5NDc1OSAvKiBGb250Q2FjaGVDb3JlVGV4dC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBGb250Q2FjaGVDb3JlVGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDMjYwMTdBMTFDNzJEQzk5MDBGNzRBMTYgLyogQ1NTRm9udEZhY2VTZXQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTRm9udEZhY2VTZXQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDMjYwMTdBMjFDNzJEQzk5MDBGNzRBMTYgLyogQ1NTRm9u
dEZhY2VTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTRm9udEZhY2VT
ZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MDMyLDYgKzE3MDMxLDEwMCBA
QAogCQkJdGFiV2lkdGggPSA4OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQkxQ0EwQzJGNjIx
RUVEQUQyMDBBMTE4NjAgLyogQVNUICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQkxQzg0MEI5MDIxRUMzMEY5MDBEMDUwMEQgLyogV0hMU0xBZGRyZXNzU3Bh
Y2UuaCAqLywKKwkJCQlDMjFCRjcyNTIxQ0Q4OUUyMDAyMjc5NzkgLyogV0hMU0xBcnJheVJlZmVy
ZW5jZVR5cGUuaCAqLywKKwkJCQlDMjFCRjcwOTIxQ0Q4OUNBMDAyMjc5NzkgLyogV0hMU0xBcnJh
eVR5cGUuaCAqLywKKwkJCQlDMjFCRjczMDIxQ0Q4OUVEMDAyMjc5NzkgLyogV0hMU0xBc3NpZ25t
ZW50RXhwcmVzc2lvbi5oICovLAorCQkJCUMyMUJGNzBBMjFDRDg5Q0IwMDIyNzk3OSAvKiBXSExT
TEJhc2VGdW5jdGlvbkF0dHJpYnV0ZS5oICovLAorCQkJCUMyMUJGNkZBMjFDRDg5QkUwMDIyNzk3
OSAvKiBXSExTTEJhc2VTZW1hbnRpYy5oICovLAorCQkJCUMyMUJGNzFFMjFDRDg5REMwMDIyNzk3
OSAvKiBXSExTTEJsb2NrLmggKi8sCisJCQkJQzIxQkY2RjYyMUNEODlCNzAwMjI3OTc5IC8qIFdI
TFNMQm9vbGVhbkxpdGVyYWwuaCAqLywKKwkJCQlDMjFCRjcxQTIxQ0Q4OUQ4MDAyMjc5NzkgLyog
V0hMU0xCcmVhay5oICovLAorCQkJCUMyMTM4QTEzMjFEREVDRDMwMEY1MTZCQSAvKiBXSExTTEJ1
aWx0SW5TZW1hbnRpYy5jcHAgKi8sCisJCQkJQzIxQkY3MjIyMUNEODlERjAwMjI3OTc5IC8qIFdI
TFNMQnVpbHRJblNlbWFudGljLmggKi8sCisJCQkJQzIxQkY3MTYyMUNEODlENTAwMjI3OTc5IC8q
IFdITFNMQ2FsbEV4cHJlc3Npb24uaCAqLywKKwkJCQlDMjFCRjcwNjIxQ0Q4OUM3MDAyMjc5Nzkg
LyogV0hMU0xDb21tYUV4cHJlc3Npb24uaCAqLywKKwkJCQlDMjFCRjczMzIxQ0Q4OUYwMDAyMjc5
NzkgLyogV0hMU0xDb25zdGFudEV4cHJlc3Npb24uaCAqLywKKwkJCQlDMjFCRjZGNTIxQ0Q4OUI1
MDAyMjc5NzkgLyogV0hMU0xDb250aW51ZS5oICovLAorCQkJCUMyMUJGNzAxMjFDRDg5QzQwMDIy
Nzk3OSAvKiBXSExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oICovLAorCQkJCUMyMUJGNzE4MjFD
RDg5RDcwMDIyNzk3OSAvKiBXSExTTERvdEV4cHJlc3Npb24uaCAqLywKKwkJCQlDMjFCRjZGQjIx
Q0Q4OUJFMDAyMjc5NzkgLyogV0hMU0xEb1doaWxlTG9vcC5oICovLAorCQkJCUMyMUJGNzI4MjFD
RDg5RTUwMDIyNzk3OSAvKiBXSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaCAqLywK
KwkJCQkxQzg0MEI3RDIxRUJFMEI4MDBEMDUwMEQgLyogV0hMU0xFbnRyeVBvaW50VHlwZS5oICov
LAorCQkJCUMyMUJGNzIwMjFDRDg5REQwMDIyNzk3OSAvKiBXSExTTEVudW1lcmF0aW9uRGVmaW5p
dGlvbi5oICovLAorCQkJCUMyMUJGNzI2MjFDRDg5RTMwMDIyNzk3OSAvKiBXSExTTEVudW1lcmF0
aW9uTWVtYmVyLmggKi8sCisJCQkJQzIxQkY3MDIyMUNEODlDNDAwMjI3OTc5IC8qIFdITFNMRW51
bWVyYXRpb25NZW1iZXJMaXRlcmFsLmggKi8sCisJCQkJQzIxQkY3MEMyMUNEODlDQzAwMjI3OTc5
IC8qIFdITFNMRXhwcmVzc2lvbi5oICovLAorCQkJCUMyMUJGNzAwMjFDRDg5QzIwMDIyNzk3OSAv
KiBXSExTTEZhbGx0aHJvdWdoLmggKi8sCisJCQkJQzIxQkY3MzUyMUNEODlGMjAwMjI3OTc5IC8q
IFdITFNMRmxvYXRMaXRlcmFsLmggKi8sCisJCQkJMUNCNjlCMzgyMURGMDNFMTAwNkU4NDZBIC8q
IFdITFNMRmxvYXRMaXRlcmFsVHlwZS5jcHAgKi8sCisJCQkJMUNCNjlCMzQyMURFRDYzQTAwNkU4
NDZBIC8qIFdITFNMRmxvYXRMaXRlcmFsVHlwZS5oICovLAorCQkJCUMyMUJGNzM0MjFDRDg5RjEw
MDIyNzk3OSAvKiBXSExTTEZvckxvb3AuaCAqLywKKwkJCQlDMjFCRjcwNTIxQ0Q4OUM3MDAyMjc5
NzkgLyogV0hMU0xGdW5jdGlvbkF0dHJpYnV0ZS5oICovLAorCQkJCUMyMUJGNkZEMjFDRDg5QzAw
MDIyNzk3OSAvKiBXSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaCAqLywKKwkJCQlDMjFCRjZGNDIx
Q0Q4OUIzMDAyMjc5NzkgLyogV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCAqLywKKwkJCQlDMjFC
RjZGRjIxQ0Q4OUMyMDAyMjc5NzkgLyogV0hMU0xJZlN0YXRlbWVudC5oICovLAorCQkJCUMyMUJG
NkY3MjFDRDg5QjkwMDIyNzk3OSAvKiBXSExTTEluZGV4RXhwcmVzc2lvbi5oICovLAorCQkJCUMy
MEY0RjY2MjFERkYyMzYwMDcwQzQ1QSAvKiBXSExTTEludGVnZXJMaXRlcmFsLmNwcCAqLywKKwkJ
CQlDMjFCRjZGODIxQ0Q4OUJCMDAyMjc5NzkgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oICovLAor
CQkJCTFDQjY5QjM5MjFERjAzRjMwMDZFODQ2QSAvKiBXSExTTEludGVnZXJMaXRlcmFsVHlwZS5j
cHAgKi8sCisJCQkJMUNCNjlCMzUyMURFRDY0OTAwNkU4NDZBIC8qIFdITFNMSW50ZWdlckxpdGVy
YWxUeXBlLmggKi8sCisJCQkJQzIxQkY3MzIyMUNEODlFRjAwMjI3OTc5IC8qIFdITFNMTG9naWNh
bEV4cHJlc3Npb24uaCAqLywKKwkJCQlDMjFCRjcxNTIxQ0Q4OUQ0MDAyMjc5NzkgLyogV0hMU0xM
b2dpY2FsTm90RXhwcmVzc2lvbi5oICovLAorCQkJCUMyMUJGNzJEMjFDRDg5RTkwMDIyNzk3OSAv
KiBXSExTTE1ha2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uaCAqLywKKwkJCQlDMjFCRjcyQzIx
Q0Q4OUU5MDAyMjc5NzkgLyogV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaCAqLywKKwkJCQkx
QzMzMjc3MTIxQ0YwQkUxMDAwREM5RjIgLyogV0hMU0xOYW1lZFR5cGUuaCAqLywKKwkJCQlDMjFC
RjcyMzIxQ0Q4OUUxMDAyMjc5NzkgLyogV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmgg
Ki8sCisJCQkJQzIxQkY3MkEyMUNEODlFNzAwMjI3OTc5IC8qIFdITFNMTmF0aXZlVHlwZURlY2xh
cmF0aW9uLmggKi8sCisJCQkJQzIxQkY3MjQyMUNEODlFMTAwMjI3OTc5IC8qIFdITFNMTm9kZS5o
ICovLAorCQkJCUMyMUJGNzA3MjFDRDg5QzgwMDIyNzk3OSAvKiBXSExTTE51bGxMaXRlcmFsLmgg
Ki8sCisJCQkJMUNCNjlCM0EyMURGMDQwMzAwNkU4NDZBIC8qIFdITFNMTnVsbExpdGVyYWxUeXBl
LmNwcCAqLywKKwkJCQkxQ0I2OUIzNjIxREVENjU3MDA2RTg0NkEgLyogV0hMU0xOdWxsTGl0ZXJh
bFR5cGUuaCAqLywKKwkJCQlDMjFCRjcyMTIxQ0Q4OURFMDAyMjc5NzkgLyogV0hMU0xOdW1UaHJl
YWRzRnVuY3Rpb25BdHRyaWJ1dGUuaCAqLywKKwkJCQlDMjFCRjcyRjIxQ0Q4OUVDMDAyMjc5Nzkg
LyogV0hMU0xQb2ludGVyVHlwZS5oICovLAorCQkJCUMyMUJGNzJFMjFDRDg5RUEwMDIyNzk3OSAv
KiBXSExTTFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oICovLAorCQkJCUMyMUJGNzBCMjFDRDg5
Q0MwMDIyNzk3OSAvKiBXSExTTFF1YWxpZmllci5oICovLAorCQkJCUMyMUJGNzFCMjFDRDg5RDkw
MDIyNzk3OSAvKiBXSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaCAqLywKKwkJCQlDMjFC
RjcwRDIxQ0Q4OUNEMDAyMjc5NzkgLyogV0hMU0xSZWZlcmVuY2VUeXBlLmggKi8sCisJCQkJMUNC
NjlCMzIyMURFRDQwQjAwNkU4NDZBIC8qIFdITFNMUmVzb2x2YWJsZVR5cGUuaCAqLywKKwkJCQlD
MjEzOEExNTIxRERFQ0U5MDBGNTE2QkEgLyogV0hMU0xSZXNvdXJjZVNlbWFudGljLmNwcCAqLywK
KwkJCQlDMjFCRjcwODIxQ0Q4OUM5MDAyMjc5NzkgLyogV0hMU0xSZXNvdXJjZVNlbWFudGljLmgg
Ki8sCisJCQkJQzIxQkY3MDMyMUNEODlDNTAwMjI3OTc5IC8qIFdITFNMUmV0dXJuLmggKi8sCisJ
CQkJQzIxQkY2RjkyMUNEODlCRDAwMjI3OTc5IC8qIFdITFNMU2VtYW50aWMuaCAqLywKKwkJCQlD
MjEzOEExNjIxRERFQ0ZCMDBGNTE2QkEgLyogV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2Vt
YW50aWMuY3BwICovLAorCQkJCUMyMUJGNzM2MjFDRDg5RjMwMDIyNzk3OSAvKiBXSExTTFNwZWNp
YWxpemF0aW9uQ29uc3RhbnRTZW1hbnRpYy5oICovLAorCQkJCUMyMTM4QTE3MjFEREVEMEQwMEY1
MTZCQSAvKiBXSExTTFN0YWdlSW5PdXRTZW1hbnRpYy5jcHAgKi8sCisJCQkJQzIxQkY3MEUyMUNE
ODlDRTAwMjI3OTc5IC8qIFdITFNMU3RhZ2VJbk91dFNlbWFudGljLmggKi8sCisJCQkJQzIxQkY3
MTIyMUNEODlEMTAwMjI3OTc5IC8qIFdITFNMU3RhdGVtZW50LmggKi8sCisJCQkJQzIxQkY3Mjcy
MUNEODlFNDAwMjI3OTc5IC8qIFdITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oICovLAorCQkJCUMy
MUJGNkZFMjFDRDg5QzEwMDIyNzk3OSAvKiBXSExTTFN0cnVjdHVyZUVsZW1lbnQuaCAqLywKKwkJ
CQlDMjFCRjcxOTIxQ0Q4OUQ3MDAyMjc5NzkgLyogV0hMU0xTd2l0Y2hDYXNlLmggKi8sCisJCQkJ
QzIxQkY3MzEyMUNEODlFRTAwMjI3OTc5IC8qIFdITFNMU3dpdGNoU3RhdGVtZW50LmggKi8sCisJ
CQkJQzIxQkY3MUMyMUNEODlEQTAwMjI3OTc5IC8qIFdITFNMVGVybmFyeUV4cHJlc3Npb24uaCAq
LywKKwkJCQlDMjFCRjZGMzIxQ0Q4OUFEMDAyMjc5NzkgLyogV0hMU0xUcmFwLmggKi8sCisJCQkJ
QzIxQkY3MUQyMUNEODlEQjAwMjI3OTc5IC8qIFdITFNMVHlwZS5oICovLAorCQkJCUMyODhDNzJE
MjFDOTkxREEwMDJERjVDQSAvKiBXSExTTFR5cGVBcmd1bWVudC5jcHAgKi8sCisJCQkJQzIxQkY3
MTEyMUNEODlEMTAwMjI3OTc5IC8qIFdITFNMVHlwZUFyZ3VtZW50LmggKi8sCisJCQkJQzIxQkY3
MjkyMUNEODlFNjAwMjI3OTc5IC8qIFdITFNMVHlwZURlZmluaXRpb24uaCAqLywKKwkJCQlDMjBG
NEY2NDIxREZCRTVDMDA3MEM0NUEgLyogV0hMU0xUeXBlUmVmZXJlbmNlLmNwcCAqLywKKwkJCQlD
MjFCRjcxRjIxQ0Q4OURDMDAyMjc5NzkgLyogV0hMU0xUeXBlUmVmZXJlbmNlLmggKi8sCisJCQkJ
MUMzMzI3NzIyMUNGMEQyRTAwMERDOUYyIC8qIFdITFNMVW5uYW1lZFR5cGUuaCAqLywKKwkJCQlD
MjBGNEY2NzIxREZGM0E3MDA3MEM0NUEgLyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmNw
cCAqLywKKwkJCQlDMjFCRjcyQjIxQ0Q4OUU4MDAyMjc5NzkgLyogV0hMU0xVbnNpZ25lZEludGVn
ZXJMaXRlcmFsLmggKi8sCisJCQkJMUNCNjlCM0IyMURGMDQxRTAwNkU4NDZBIC8qIFdITFNMVW5z
aWduZWRJbnRlZ2VyTGl0ZXJhbFR5cGUuY3BwICovLAorCQkJCTFDQjY5QjM3MjFERUQ2NkIwMDZF
ODQ2QSAvKiBXSExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmggKi8sCisJCQkJQzIxQkY2
RkMyMUNEODlCRjAwMjI3OTc5IC8qIFdITFNMVmFsdWUuaCAqLywKKwkJCQlDMjFCRjcxMDIxQ0Q4
OUQwMDAyMjc5NzkgLyogV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmggKi8sCisJCQkJQzIxQkY3
MTQyMUNEODlEMzAwMjI3OTc5IC8qIFdITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQu
aCAqLywKKwkJCQlDMjFCRjcxMzIxQ0Q4OUQyMDAyMjc5NzkgLyogV0hMU0xWYXJpYWJsZVJlZmVy
ZW5jZS5oICovLAorCQkJCUMyMUJGNzA0MjFDRDg5QzYwMDIyNzk3OSAvKiBXSExTTFdoaWxlTG9v
cC5oICovLAorCQkJKTsKKwkJCXBhdGggPSBBU1Q7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OworCQl9OwogCQkxQ0RENDQ2NjBCQTlDODAwMDBGOTAxNDcgLyogQ29uZmlndXJhdGlvbnMgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMjU0NzcsOCArMjU1
NzAsNiBAQAogCQkJCUMyMTBFOTEyMjFCNEJEMTAwMEI3RjgzRCAvKiBXSExTTExleGVyLmggKi8s
CiAJCQkJMUNBMEMyRUMyMUVFRDZGNjAwQTExODYwIC8qIFdITFNMTGl0ZXJhbFR5cGVDaGVja2Vy
LmNwcCAqLywKIAkJCQkxQ0EwQzJFQTIxRUVENkY1MDBBMTE4NjAgLyogV0hMU0xMaXRlcmFsVHlw
ZUNoZWNrZXIuaCAqLywKLQkJCQkxQ0EwQzJGNDIxRUVEQUQwMDBBMTE4NjAgLyogV0hMU0xMb29w
Q2hlY2tlci5jcHAgKi8sCi0JCQkJMUNBMEMyRjUyMUVFREFEMTAwQTExODYwIC8qIFdITFNMTG9v
cENoZWNrZXIuaCAqLywKIAkJCQlDMjM0QTk4RDIxRTg4ODg0MDAzQzk4NEQgLyogV0hMU0xOYW1l
Q29udGV4dC5jcHAgKi8sCiAJCQkJQzIzNEE5OEUyMUU4ODg4NTAwM0M5ODREIC8qIFdITFNMTmFt
ZUNvbnRleHQuaCAqLywKIAkJCQlDMjM0QTk4QTIxRTg4ODNFMDAzQzk4NEQgLyogV0hMU0xOYW1l
UmVzb2x2ZXIuY3BwICovLApAQCAtMjU0OTQsNiArMjU1ODUsOCBAQAogCQkJCUMyMzRBOTk3MjFF
OTBGMjgwMDNDOTg0RCAvKiBXSExTTFJlc29sdmVPdmVybG9hZEltcGwuaCAqLywKIAkJCQlDMjM0
QTk5RDIxRTkxMEJEMDAzQzk4NEQgLyogV0hMU0xSZXNvbHZpbmdUeXBlLmggKi8sCiAJCQkJQzIx
QkY3NDUyMUNEOTY5ODAwMjI3OTc5IC8qIFdITFNMU3RhbmRhcmRMaWJyYXJ5LnR4dCAqLywKKwkJ
CQlDMjM0QTlDOTIxRUYyQzc3MDAzQzk4NEQgLyogV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNr
ZXIuY3BwICovLAorCQkJCUMyMzRBOUNBMjFFRjJDNzcwMDNDOTg0RCAvKiBXSExTTFN0YXRlbWVu
dEJlaGF2aW9yQ2hlY2tlci5oICovLAogCQkJCUMyMzRBOUE5MjFFOTJDMTcwMDNDOTg0RCAvKiBX
SExTTFN5bnRoZXNpemVBcnJheU9wZXJhdG9yTGVuZ3RoLmNwcCAqLywKIAkJCQlDMjM0QTlBRjIx
RTkyQzFCMDAzQzk4NEQgLyogV0hMU0xTeW50aGVzaXplQXJyYXlPcGVyYXRvckxlbmd0aC5oICov
LAogCQkJCUMyMzRBOUIwMjFFOTJDMUMwMDNDOTg0RCAvKiBXSExTTFN5bnRoZXNpemVDb25zdHJ1
Y3RvcnMuY3BwICovLApAQCAtMjU1MDgsMTAwICsyNTYwMSw2IEBACiAJCQlwYXRoID0gV0hMU0w7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQkxQ0EwQzJGNjIxRUVEQUQyMDBB
MTE4NjAgLyogQVNUICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgK
LQkJCQkxQzg0MEI5MDIxRUMzMEY5MDBEMDUwMEQgLyogV0hMU0xBZGRyZXNzU3BhY2UuaCAqLywK
LQkJCQlDMjFCRjcyNTIxQ0Q4OUUyMDAyMjc5NzkgLyogV0hMU0xBcnJheVJlZmVyZW5jZVR5cGUu
aCAqLywKLQkJCQlDMjFCRjcwOTIxQ0Q4OUNBMDAyMjc5NzkgLyogV0hMU0xBcnJheVR5cGUuaCAq
LywKLQkJCQlDMjFCRjczMDIxQ0Q4OUVEMDAyMjc5NzkgLyogV0hMU0xBc3NpZ25tZW50RXhwcmVz
c2lvbi5oICovLAotCQkJCUMyMUJGNzBBMjFDRDg5Q0IwMDIyNzk3OSAvKiBXSExTTEJhc2VGdW5j
dGlvbkF0dHJpYnV0ZS5oICovLAotCQkJCUMyMUJGNkZBMjFDRDg5QkUwMDIyNzk3OSAvKiBXSExT
TEJhc2VTZW1hbnRpYy5oICovLAotCQkJCUMyMUJGNzFFMjFDRDg5REMwMDIyNzk3OSAvKiBXSExT
TEJsb2NrLmggKi8sCi0JCQkJQzIxQkY2RjYyMUNEODlCNzAwMjI3OTc5IC8qIFdITFNMQm9vbGVh
bkxpdGVyYWwuaCAqLywKLQkJCQlDMjFCRjcxQTIxQ0Q4OUQ4MDAyMjc5NzkgLyogV0hMU0xCcmVh
ay5oICovLAotCQkJCUMyMTM4QTEzMjFEREVDRDMwMEY1MTZCQSAvKiBXSExTTEJ1aWx0SW5TZW1h
bnRpYy5jcHAgKi8sCi0JCQkJQzIxQkY3MjIyMUNEODlERjAwMjI3OTc5IC8qIFdITFNMQnVpbHRJ
blNlbWFudGljLmggKi8sCi0JCQkJQzIxQkY3MTYyMUNEODlENTAwMjI3OTc5IC8qIFdITFNMQ2Fs
bEV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjcwNjIxQ0Q4OUM3MDAyMjc5NzkgLyogV0hMU0xD
b21tYUV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjczMzIxQ0Q4OUYwMDAyMjc5NzkgLyogV0hM
U0xDb25zdGFudEV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjZGNTIxQ0Q4OUI1MDAyMjc5Nzkg
LyogV0hMU0xDb250aW51ZS5oICovLAotCQkJCUMyMUJGNzAxMjFDRDg5QzQwMDIyNzk3OSAvKiBX
SExTTERlcmVmZXJlbmNlRXhwcmVzc2lvbi5oICovLAotCQkJCUMyMUJGNzE4MjFDRDg5RDcwMDIy
Nzk3OSAvKiBXSExTTERvdEV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjZGQjIxQ0Q4OUJFMDAy
Mjc5NzkgLyogV0hMU0xEb1doaWxlTG9vcC5oICovLAotCQkJCUMyMUJGNzI4MjFDRDg5RTUwMDIy
Nzk3OSAvKiBXSExTTEVmZmVjdGZ1bEV4cHJlc3Npb25TdGF0ZW1lbnQuaCAqLywKLQkJCQkxQzg0
MEI3RDIxRUJFMEI4MDBEMDUwMEQgLyogV0hMU0xFbnRyeVBvaW50VHlwZS5oICovLAotCQkJCUMy
MUJGNzIwMjFDRDg5REQwMDIyNzk3OSAvKiBXSExTTEVudW1lcmF0aW9uRGVmaW5pdGlvbi5oICov
LAotCQkJCUMyMUJGNzI2MjFDRDg5RTMwMDIyNzk3OSAvKiBXSExTTEVudW1lcmF0aW9uTWVtYmVy
LmggKi8sCi0JCQkJQzIxQkY3MDIyMUNEODlDNDAwMjI3OTc5IC8qIFdITFNMRW51bWVyYXRpb25N
ZW1iZXJMaXRlcmFsLmggKi8sCi0JCQkJQzIxQkY3MEMyMUNEODlDQzAwMjI3OTc5IC8qIFdITFNM
RXhwcmVzc2lvbi5oICovLAotCQkJCUMyMUJGNzAwMjFDRDg5QzIwMDIyNzk3OSAvKiBXSExTTEZh
bGx0aHJvdWdoLmggKi8sCi0JCQkJQzIxQkY3MzUyMUNEODlGMjAwMjI3OTc5IC8qIFdITFNMRmxv
YXRMaXRlcmFsLmggKi8sCi0JCQkJMUNCNjlCMzgyMURGMDNFMTAwNkU4NDZBIC8qIFdITFNMRmxv
YXRMaXRlcmFsVHlwZS5jcHAgKi8sCi0JCQkJMUNCNjlCMzQyMURFRDYzQTAwNkU4NDZBIC8qIFdI
TFNMRmxvYXRMaXRlcmFsVHlwZS5oICovLAotCQkJCUMyMUJGNzM0MjFDRDg5RjEwMDIyNzk3OSAv
KiBXSExTTEZvckxvb3AuaCAqLywKLQkJCQlDMjFCRjcwNTIxQ0Q4OUM3MDAyMjc5NzkgLyogV0hM
U0xGdW5jdGlvbkF0dHJpYnV0ZS5oICovLAotCQkJCUMyMUJGNkZEMjFDRDg5QzAwMDIyNzk3OSAv
KiBXSExTTEZ1bmN0aW9uRGVjbGFyYXRpb24uaCAqLywKLQkJCQlDMjFCRjZGNDIxQ0Q4OUIzMDAy
Mjc5NzkgLyogV0hMU0xGdW5jdGlvbkRlZmluaXRpb24uaCAqLywKLQkJCQlDMjFCRjZGRjIxQ0Q4
OUMyMDAyMjc5NzkgLyogV0hMU0xJZlN0YXRlbWVudC5oICovLAotCQkJCUMyMUJGNkY3MjFDRDg5
QjkwMDIyNzk3OSAvKiBXSExTTEluZGV4RXhwcmVzc2lvbi5oICovLAotCQkJCUMyMEY0RjY2MjFE
RkYyMzYwMDcwQzQ1QSAvKiBXSExTTEludGVnZXJMaXRlcmFsLmNwcCAqLywKLQkJCQlDMjFCRjZG
ODIxQ0Q4OUJCMDAyMjc5NzkgLyogV0hMU0xJbnRlZ2VyTGl0ZXJhbC5oICovLAotCQkJCTFDQjY5
QjM5MjFERjAzRjMwMDZFODQ2QSAvKiBXSExTTEludGVnZXJMaXRlcmFsVHlwZS5jcHAgKi8sCi0J
CQkJMUNCNjlCMzUyMURFRDY0OTAwNkU4NDZBIC8qIFdITFNMSW50ZWdlckxpdGVyYWxUeXBlLmgg
Ki8sCi0JCQkJQzIxQkY3MzIyMUNEODlFRjAwMjI3OTc5IC8qIFdITFNMTG9naWNhbEV4cHJlc3Np
b24uaCAqLywKLQkJCQlDMjFCRjcxNTIxQ0Q4OUQ0MDAyMjc5NzkgLyogV0hMU0xMb2dpY2FsTm90
RXhwcmVzc2lvbi5oICovLAotCQkJCUMyMUJGNzJEMjFDRDg5RTkwMDIyNzk3OSAvKiBXSExTTE1h
a2VBcnJheVJlZmVyZW5jZUV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjcyQzIxQ0Q4OUU5MDAy
Mjc5NzkgLyogV0hMU0xNYWtlUG9pbnRlckV4cHJlc3Npb24uaCAqLywKLQkJCQkxQzMzMjc3MTIx
Q0YwQkUxMDAwREM5RjIgLyogV0hMU0xOYW1lZFR5cGUuaCAqLywKLQkJCQlDMjFCRjcyMzIxQ0Q4
OUUxMDAyMjc5NzkgLyogV0hMU0xOYXRpdmVGdW5jdGlvbkRlY2xhcmF0aW9uLmggKi8sCi0JCQkJ
QzIxQkY3MkEyMUNEODlFNzAwMjI3OTc5IC8qIFdITFNMTmF0aXZlVHlwZURlY2xhcmF0aW9uLmgg
Ki8sCi0JCQkJQzIxQkY3MjQyMUNEODlFMTAwMjI3OTc5IC8qIFdITFNMTm9kZS5oICovLAotCQkJ
CUMyMUJGNzA3MjFDRDg5QzgwMDIyNzk3OSAvKiBXSExTTE51bGxMaXRlcmFsLmggKi8sCi0JCQkJ
MUNCNjlCM0EyMURGMDQwMzAwNkU4NDZBIC8qIFdITFNMTnVsbExpdGVyYWxUeXBlLmNwcCAqLywK
LQkJCQkxQ0I2OUIzNjIxREVENjU3MDA2RTg0NkEgLyogV0hMU0xOdWxsTGl0ZXJhbFR5cGUuaCAq
LywKLQkJCQlDMjFCRjcyMTIxQ0Q4OURFMDAyMjc5NzkgLyogV0hMU0xOdW1UaHJlYWRzRnVuY3Rp
b25BdHRyaWJ1dGUuaCAqLywKLQkJCQlDMjFCRjcyRjIxQ0Q4OUVDMDAyMjc5NzkgLyogV0hMU0xQ
b2ludGVyVHlwZS5oICovLAotCQkJCUMyMUJGNzJFMjFDRDg5RUEwMDIyNzk3OSAvKiBXSExTTFBy
b3BlcnR5QWNjZXNzRXhwcmVzc2lvbi5oICovLAotCQkJCUMyMUJGNzBCMjFDRDg5Q0MwMDIyNzk3
OSAvKiBXSExTTFF1YWxpZmllci5oICovLAotCQkJCUMyMUJGNzFCMjFDRDg5RDkwMDIyNzk3OSAv
KiBXSExTTFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24uaCAqLywKLQkJCQlDMjFCRjcwRDIxQ0Q4
OUNEMDAyMjc5NzkgLyogV0hMU0xSZWZlcmVuY2VUeXBlLmggKi8sCi0JCQkJMUNCNjlCMzIyMURF
RDQwQjAwNkU4NDZBIC8qIFdITFNMUmVzb2x2YWJsZVR5cGUuaCAqLywKLQkJCQlDMjEzOEExNTIx
RERFQ0U5MDBGNTE2QkEgLyogV0hMU0xSZXNvdXJjZVNlbWFudGljLmNwcCAqLywKLQkJCQlDMjFC
RjcwODIxQ0Q4OUM5MDAyMjc5NzkgLyogV0hMU0xSZXNvdXJjZVNlbWFudGljLmggKi8sCi0JCQkJ
QzIxQkY3MDMyMUNEODlDNTAwMjI3OTc5IC8qIFdITFNMUmV0dXJuLmggKi8sCi0JCQkJQzIxQkY2
RjkyMUNEODlCRDAwMjI3OTc5IC8qIFdITFNMU2VtYW50aWMuaCAqLywKLQkJCQlDMjEzOEExNjIx
RERFQ0ZCMDBGNTE2QkEgLyogV0hMU0xTcGVjaWFsaXphdGlvbkNvbnN0YW50U2VtYW50aWMuY3Bw
ICovLAotCQkJCUMyMUJGNzM2MjFDRDg5RjMwMDIyNzk3OSAvKiBXSExTTFNwZWNpYWxpemF0aW9u
Q29uc3RhbnRTZW1hbnRpYy5oICovLAotCQkJCUMyMTM4QTE3MjFEREVEMEQwMEY1MTZCQSAvKiBX
SExTTFN0YWdlSW5PdXRTZW1hbnRpYy5jcHAgKi8sCi0JCQkJQzIxQkY3MEUyMUNEODlDRTAwMjI3
OTc5IC8qIFdITFNMU3RhZ2VJbk91dFNlbWFudGljLmggKi8sCi0JCQkJQzIxQkY3MTIyMUNEODlE
MTAwMjI3OTc5IC8qIFdITFNMU3RhdGVtZW50LmggKi8sCi0JCQkJQzIxQkY3MjcyMUNEODlFNDAw
MjI3OTc5IC8qIFdITFNMU3RydWN0dXJlRGVmaW5pdGlvbi5oICovLAotCQkJCUMyMUJGNkZFMjFD
RDg5QzEwMDIyNzk3OSAvKiBXSExTTFN0cnVjdHVyZUVsZW1lbnQuaCAqLywKLQkJCQlDMjFCRjcx
OTIxQ0Q4OUQ3MDAyMjc5NzkgLyogV0hMU0xTd2l0Y2hDYXNlLmggKi8sCi0JCQkJQzIxQkY3MzEy
MUNEODlFRTAwMjI3OTc5IC8qIFdITFNMU3dpdGNoU3RhdGVtZW50LmggKi8sCi0JCQkJQzIxQkY3
MUMyMUNEODlEQTAwMjI3OTc5IC8qIFdITFNMVGVybmFyeUV4cHJlc3Npb24uaCAqLywKLQkJCQlD
MjFCRjZGMzIxQ0Q4OUFEMDAyMjc5NzkgLyogV0hMU0xUcmFwLmggKi8sCi0JCQkJQzIxQkY3MUQy
MUNEODlEQjAwMjI3OTc5IC8qIFdITFNMVHlwZS5oICovLAotCQkJCUMyODhDNzJEMjFDOTkxREEw
MDJERjVDQSAvKiBXSExTTFR5cGVBcmd1bWVudC5jcHAgKi8sCi0JCQkJQzIxQkY3MTEyMUNEODlE
MTAwMjI3OTc5IC8qIFdITFNMVHlwZUFyZ3VtZW50LmggKi8sCi0JCQkJQzIxQkY3MjkyMUNEODlF
NjAwMjI3OTc5IC8qIFdITFNMVHlwZURlZmluaXRpb24uaCAqLywKLQkJCQlDMjBGNEY2NDIxREZC
RTVDMDA3MEM0NUEgLyogV0hMU0xUeXBlUmVmZXJlbmNlLmNwcCAqLywKLQkJCQlDMjFCRjcxRjIx
Q0Q4OURDMDAyMjc5NzkgLyogV0hMU0xUeXBlUmVmZXJlbmNlLmggKi8sCi0JCQkJMUMzMzI3NzIy
MUNGMEQyRTAwMERDOUYyIC8qIFdITFNMVW5uYW1lZFR5cGUuaCAqLywKLQkJCQlDMjBGNEY2NzIx
REZGM0E3MDA3MEM0NUEgLyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFsLmNwcCAqLywKLQkJ
CQlDMjFCRjcyQjIxQ0Q4OUU4MDAyMjc5NzkgLyogV0hMU0xVbnNpZ25lZEludGVnZXJMaXRlcmFs
LmggKi8sCi0JCQkJMUNCNjlCM0IyMURGMDQxRTAwNkU4NDZBIC8qIFdITFNMVW5zaWduZWRJbnRl
Z2VyTGl0ZXJhbFR5cGUuY3BwICovLAotCQkJCTFDQjY5QjM3MjFERUQ2NkIwMDZFODQ2QSAvKiBX
SExTTFVuc2lnbmVkSW50ZWdlckxpdGVyYWxUeXBlLmggKi8sCi0JCQkJQzIxQkY2RkMyMUNEODlC
RjAwMjI3OTc5IC8qIFdITFNMVmFsdWUuaCAqLywKLQkJCQlDMjFCRjcxMDIxQ0Q4OUQwMDAyMjc5
NzkgLyogV0hMU0xWYXJpYWJsZURlY2xhcmF0aW9uLmggKi8sCi0JCQkJQzIxQkY3MTQyMUNEODlE
MzAwMjI3OTc5IC8qIFdITFNMVmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQuaCAqLywKLQkJ
CQlDMjFCRjcxMzIxQ0Q4OUQyMDAyMjc5NzkgLyogV0hMU0xWYXJpYWJsZVJlZmVyZW5jZS5oICov
LAotCQkJCUMyMUJGNzA0MjFDRDg5QzYwMDIyNzk3OSAvKiBXSExTTFdoaWxlTG9vcC5oICovLAot
CQkJKTsKLQkJCXBhdGggPSBBU1Q7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9Owog
CQlDOTZGNUVCRjFCNTg3MjI2MDA5MUVBOUQgLyogbWVkaWFzZXNzaW9uICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359564</attachid>
            <date>2019-01-18 17:42:20 -0800</date>
            <delta_ts>2019-01-20 13:12:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193487-20190118174219.patch</filename>
            <type>text/plain</type>
            <size>23952</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzA0MWRjMmQxNjQ1ZjQ0
OTc0ZjBiZDQ5YjQ0NTczYzBiNjM3NjNkNi4uOTA0YjY5ZjMwY2Y1NWQwZTgzODlhZDIzMTZlNDRi
YmJhMmNiZWYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTAxLTE4ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dITFNMXSBB
ZGQgdGhlIHN0YXRlbWVudCBiZWhhdmlvciBjaGVja2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM0ODcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGEgdHJhbnNsYXRpb24gb2YgaHR0cHM6
Ly9naXRodWIuY29tL2dwdXdlYi9XSExTTC9ibG9iL21hc3Rlci9TcGVjL3NvdXJjZS9pbmRleC5y
c3QjdHlwaW5nLXN0YXRlbWVudHMKKyAgICAgICAgaW50byBDKysuIEl0IGlzIG1lYW50IHRvIHJl
cGxhY2UgdGhlIFJldHVybkNoZWNrZXIgYW5kIFVucmVhY2hhYmxlQ29kZUNoZWNrZXIgaW4gdGhl
IHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVz
ZSBpdCBpc24ndCBob29rZWQgdXAgeWV0LiBOb3QgZW5vdWdoIG9mIHRoZSBjb21waWxlciBleGlz
dHMgdG8gaGF2ZSBhbnkgbWVhbmluZ2Z1bCBzb3J0CisgICAgICAgIG9mIHRlc3QuIFdoZW4gZW5v
dWdoIG9mIHRoZSBjb21waWxlciBpcyBwcmVzZW50LCBJJ2xsIHBvcnQgdGhlIHJlZmVyZW5jZSBp
bXBsZW1lbnRhdGlvbidzIHRlc3Qgc3VpdGUuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OlN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlcjo6dGFrZUZ1bmN0aW9uQmVo
YXZpb3IpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OmNoZWNrU3RhdGVtZW50QmVoYXZpb3Ip
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhdGVtZW50QmVoYXZpb3JD
aGVja2VyLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wMS0xOCAgRXJpYyBDYXJsc29u
ICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZlcnQgcjIzODgxNSwgaXQg
YnJva2UgV0sxIHZpZGVvIGZ1bGxzY3JlZW4gb24gTWFjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTExvb3BDaGVja2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTG9vcENoZWNrZXIuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTY4NTBiOWIyMjk3ZjU5YTU2NjkxMjMwNmNjODc3OTUx
YzMyYTg2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTG9vcENoZWNrZXIuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsMTQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiV0hMU0xMb29wQ2hlY2tlci5oIgotCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLQotI2luY2x1ZGUgIldITFNMQnJlYWsuaCIKLSNpbmNsdWRlICJXSExTTENvbnRpbnVlLmgi
Ci0jaW5jbHVkZSAiV0hMU0xEb1doaWxlTG9vcC5oIgotI2luY2x1ZGUgIldITFNMRmFsbHRocm91
Z2guaCIKLSNpbmNsdWRlICJXSExTTEZvckxvb3AuaCIKLSNpbmNsdWRlICJXSExTTFN3aXRjaFN0
YXRlbWVudC5oIgotI2luY2x1ZGUgIldITFNMVmlzaXRvci5oIgotI2luY2x1ZGUgIldITFNMV2hp
bGVMb29wLmgiCi0jaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotbmFtZXNwYWNlIFdITFNMIHsKLQotLy8gVGhpcyBtYWtlcyBzdXJlIHRoYXQgZXZl
cnkgb2NjdXJhbmNlIG9mICJjb250aW51ZSwiICJicmVhaywiIGFuZCAiZmFsbHRocm91Z2giIGFw
cGVhciB3aXRoaW4gdGhlIHJlbGV2YW50IGNvbnRyb2wgZmxvdyBzdHJ1Y3R1cmUuCi1jbGFzcyBM
b29wQ2hlY2tlciA6IHB1YmxpYyBWaXNpdG9yIHsKLXB1YmxpYzoKLSAgICBMb29wQ2hlY2tlcigp
ID0gZGVmYXVsdDsKLQotICAgIHZpcnR1YWwgfkxvb3BDaGVja2VyKCkgPSBkZWZhdWx0OwotCi1w
cml2YXRlOgotICAgIHZvaWQgdmlzaXQoQVNUOjpGdW5jdGlvbkRlZmluaXRpb24mIGZ1bmN0aW9u
RGVmaW5pdGlvbikgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIEFTU0VSVCghbV9sb29wRGVwdGgp
OwotICAgICAgICBBU1NFUlQoIW1fc3dpdGNoRGVwdGgpOwotICAgICAgICBWaXNpdG9yOjp2aXNp
dChmdW5jdGlvbkRlZmluaXRpb24pOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpXaGls
ZUxvb3AmIHdoaWxlTG9vcCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdCh3aGlsZUxvb3AuY29uZGl0aW9uYWwoKSk7Ci0KLSAgICAgICAgU2V0Rm9yU2NvcGU8dW5z
aWduZWQ+IGNoYW5nZShtX2xvb3BEZXB0aCwgbV9sb29wRGVwdGggKyAxKTsKLSAgICAgICAgY2hl
Y2tFcnJvckFuZFZpc2l0KHdoaWxlTG9vcC5ib2R5KCkpOwotICAgICAgICBBU1NFUlQobV9sb29w
RGVwdGgpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpEb1doaWxlTG9vcCYgZG9XaGls
ZUxvb3ApIG92ZXJyaWRlCi0gICAgewotICAgICAgICB7Ci0gICAgICAgICAgICBTZXRGb3JTY29w
ZTx1bnNpZ25lZD4gY2hhbmdlKG1fbG9vcERlcHRoLCBtX2xvb3BEZXB0aCArIDEpOwotICAgICAg
ICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvV2hpbGVMb29wLmJvZHkoKSk7Ci0gICAgICAgICAg
ICBBU1NFUlQobV9sb29wRGVwdGgpOwotICAgICAgICB9Ci0KLSAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KGRvV2hpbGVMb29wLmNvbmRpdGlvbmFsKCkpOwotICAgIH0KLQotICAgIHZvaWQgdmlz
aXQoQVNUOjpGb3JMb29wJiBmb3JMb29wKSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgV1RGOjp2
aXNpdChXVEY6Om1ha2VWaXNpdG9yKFsmXShBU1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVt
ZW50JiB2YXJpYWJsZURlY2xhcmF0aW9uc1N0YXRlbWVudCkgewotICAgICAgICAgICAgY2hlY2tF
cnJvckFuZFZpc2l0KHZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50KTsKLSAgICAgICAgfSwg
WyZdKFVuaXF1ZVJlZjxBU1Q6OkV4cHJlc3Npb24+JiBleHByZXNzaW9uKSB7Ci0gICAgICAgICAg
ICBjaGVja0Vycm9yQW5kVmlzaXQoZXhwcmVzc2lvbik7Ci0gICAgICAgIH0pLCBmb3JMb29wLmlu
aXRpYWxpemF0aW9uKCkpOwotICAgICAgICBpZiAoZm9yTG9vcC5jb25kaXRpb24oKSkKLSAgICAg
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdCgqZm9yTG9vcC5jb25kaXRpb24oKSk7Ci0gICAgICAg
IGlmIChmb3JMb29wLmluY3JlbWVudCgpKQotICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KCpmb3JMb29wLmluY3JlbWVudCgpKTsKLQotICAgICAgICBTZXRGb3JTY29wZTx1bnNpZ25lZD4g
Y2hhbmdlKG1fbG9vcERlcHRoLCBtX2xvb3BEZXB0aCArIDEpOwotICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoZm9yTG9vcC5ib2R5KCkpOwotICAgICAgICBBU1NFUlQobV9sb29wRGVwdGgpOwot
ICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpTd2l0Y2hTdGF0ZW1lbnQmIHN3aXRjaFN0YXRl
bWVudCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hT
dGF0ZW1lbnQudmFsdWUoKSk7Ci0KLSAgICAgICAgU2V0Rm9yU2NvcGU8dW5zaWduZWQ+IGNoYW5n
ZShtX3N3aXRjaERlcHRoLCBtX3N3aXRjaERlcHRoICsgMSk7Ci0gICAgICAgIGZvciAoYXV0byYg
c3dpdGNoQ2FzZSA6IHN3aXRjaFN0YXRlbWVudC5zd2l0Y2hDYXNlcygpKQotICAgICAgICAgICAg
Y2hlY2tFcnJvckFuZFZpc2l0KHN3aXRjaENhc2UpOwotICAgICAgICBBU1NFUlQobV9zd2l0Y2hE
ZXB0aCk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkJyZWFrJiBicmVha1N0YXRlbWVu
dCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAgICAgIGlmICghbV9sb29wRGVwdGggJiYgIW1fc3dpdGNo
RGVwdGgpIHsKLSAgICAgICAgICAgIHNldEVycm9yKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICAgICAgVmlzaXRvcjo6dmlzaXQoYnJlYWtTdGF0ZW1lbnQpOwotICAgIH0K
LQotICAgIHZvaWQgdmlzaXQoQVNUOjpDb250aW51ZSYgY29udGludWVTdGF0ZW1lbnQpIG92ZXJy
aWRlCi0gICAgewotICAgICAgICBpZiAoIW1fbG9vcERlcHRoKSB7Ci0gICAgICAgICAgICBzZXRF
cnJvcigpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIFZpc2l0b3I6
OnZpc2l0KGNvbnRpbnVlU3RhdGVtZW50KTsKLSAgICB9Ci0KLSAgICB2b2lkIHZpc2l0KEFTVDo6
RmFsbHRocm91Z2gmIGZhbGx0aHJvdWdoU3RhdGVtZW50KSBvdmVycmlkZQotICAgIHsKLSAgICAg
ICAgaWYgKCFtX3N3aXRjaERlcHRoKSB7Ci0gICAgICAgICAgICBzZXRFcnJvcigpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KGZhbGx0aHJv
dWdoU3RhdGVtZW50KTsKLSAgICB9Ci0KLSAgICB1bnNpZ25lZCBtX2xvb3BEZXB0aCB7IDAgfTsK
LSAgICB1bnNpZ25lZCBtX3N3aXRjaERlcHRoIHsgMCB9OwotfTsKLQotYm9vbCBjaGVja0xvb3Bz
KFByb2dyYW0mIHByb2dyYW0pCi17Ci0gICAgTG9vcENoZWNrZXIgbG9vcENoZWNrZXI7Ci0gICAg
bG9vcENoZWNrZXIuVmlzaXRvcjo6dmlzaXQocHJvZ3JhbSk7Ci0gICAgcmV0dXJuICFsb29wQ2hl
Y2tlci5lcnJvcigpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXSExTTAotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMb29wQ2hlY2tlci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMb29wQ2hlY2tlci5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZmNhYzY3ZWI5Njk3MDA1NTRkMGExZTcwMzNlYWUyOTY2
ZTEyZjk2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTG9vcENoZWNrZXIuaAorKysg
L2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2lmIEVOQUJMRShXRUJHUFUpCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotbmFtZXNwYWNlIFdI
TFNMIHsKLQotY2xhc3MgUHJvZ3JhbTsKLQotYm9vbCBjaGVja0xvb3BzKFByb2dyYW0mKTsKLQot
fQotCi19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJn
cHUvV0hMU0wvV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmRiYTdjMjFlNWQ5ZTUwNDY0MDNhMWY5OTNhN2YwOThkN2VlNjVkNTAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5jcHAKQEAgLTAsMCArMSwyNDMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0hMU0xTdGF0ZW1lbnRCZWhhdmlv
ckNoZWNrZXIuaCIKKworI2lmIEVOQUJMRShXRUJHUFUpCisKKyNpbmNsdWRlICJXSExTTERvV2hp
bGVMb29wLmgiCisjaW5jbHVkZSAiV0hMU0xGb3JMb29wLmgiCisjaW5jbHVkZSAiV0hMU0xJZlN0
YXRlbWVudC5oIgorI2luY2x1ZGUgIldITFNMSW5mZXJUeXBlcy5oIgorI2luY2x1ZGUgIldITFNM
UHJvZ3JhbS5oIgorI2luY2x1ZGUgIldITFNMU3dpdGNoU3RhdGVtZW50LmgiCisjaW5jbHVkZSAi
V0hMU0xXaGlsZUxvb3AuaCIKKyNpbmNsdWRlIDxjc3RkaW50PgorI2luY2x1ZGUgPHd0Zi9PcHRp
b25TZXQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworbmFtZXNwYWNlIFdITFNMIHsKKworY2xhc3MgU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyIDog
cHVibGljIFZpc2l0b3IgeworcHVibGljOgorICAgIGVudW0gY2xhc3MgQmVoYXZpb3IgOiB1aW50
OF90IHsKKyAgICAgICAgUmV0dXJuID0gMSA8PCAwLAorICAgICAgICBCcmVhayA9IDEgPDwgMSwK
KyAgICAgICAgQ29udGludWUgPSAxIDw8IDIsCisgICAgICAgIEZhbGx0aHJvdWdoID0gMSA8PCAz
LAorICAgICAgICBOb3RoaW5nID0gMSA8PCA0CisgICAgfTsKKworICAgIE9wdGlvblNldDxCZWhh
dmlvcj4gdGFrZUZ1bmN0aW9uQmVoYXZpb3IoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fc3Rh
Y2suc2l6ZSgpID09IDEpOworICAgICAgICByZXR1cm4gbV9zdGFjay50YWtlTGFzdCgpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIHZpc2l0KEFTVDo6QnJlYWsmKSBvdmVycmlkZQorICAg
IHsKKyAgICAgICAgbV9zdGFjay5hcHBlbmQoeyBCZWhhdmlvcjo6QnJlYWsgfSk7CisgICAgfQor
CisgICAgdm9pZCB2aXNpdChBU1Q6OkZhbGx0aHJvdWdoJikgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIG1fc3RhY2suYXBwZW5kKHsgQmVoYXZpb3I6OkZhbGx0aHJvdWdoIH0pOworICAgIH0KKwor
ICAgIHZvaWQgdmlzaXQoQVNUOjpDb250aW51ZSYpIG92ZXJyaWRlCisgICAgeworICAgICAgICBt
X3N0YWNrLmFwcGVuZCh7IEJlaGF2aW9yOjpDb250aW51ZSB9KTsKKyAgICB9CisKKyAgICB2b2lk
IHZpc2l0KEFTVDo6UmV0dXJuJikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIG1fc3RhY2suYXBw
ZW5kKHsgQmVoYXZpb3I6OlJldHVybiB9KTsKKyAgICB9CisKKyAgICB2b2lkIHZpc2l0KEFTVDo6
VHJhcCYpIG92ZXJyaWRlCisgICAgeworICAgICAgICBtX3N0YWNrLmFwcGVuZCh7IEJlaGF2aW9y
OjpSZXR1cm4gfSk7CisgICAgfQorCisgICAgdm9pZCB2aXNpdChBU1Q6OkRvV2hpbGVMb29wJiBk
b1doaWxlTG9vcCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChk
b1doaWxlTG9vcC5ib2R5KCkpOworICAgICAgICBpZiAoZXJyb3IoKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgYXV0byBiID0gbV9zdGFjay50YWtlTGFzdCgpOworICAgICAgICBiLnJl
bW92ZShCZWhhdmlvcjo6QnJlYWspOworICAgICAgICBiLnJlbW92ZShCZWhhdmlvcjo6Q29udGlu
dWUpOworICAgICAgICBiLmFkZChCZWhhdmlvcjo6Tm90aGluZyk7CisgICAgICAgIG1fc3RhY2su
YXBwZW5kKGIpOworICAgIH0KKworICAgIHZvaWQgdmlzaXQoQVNUOjpGb3JMb29wJiBmb3JMb29w
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgLy8gVGhlIGluaXRpYWxpemF0aW9uIGFsd2F5cyBo
YXMgYSBiZWhhdmlvciBvZiBOb3RoaW5nLCB3aGljaCB3ZSBhbHJlYWR5IGFkZCB1bmNvbmRpdGlv
bmFsbHkgYmVsb3csCisgICAgICAgIC8vIHNvIHdlIGNhbiBqdXN0IGlnbm9yZSB0aGUgaW5pdGlh
bGl6YXRpb24uCisKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGZvckxvb3AuYm9keSgpKTsK
KyAgICAgICAgaWYgKGVycm9yKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGF1dG8g
YiA9IG1fc3RhY2sudGFrZUxhc3QoKTsKKyAgICAgICAgYi5yZW1vdmUoQmVoYXZpb3I6OkJyZWFr
KTsKKyAgICAgICAgYi5yZW1vdmUoQmVoYXZpb3I6OkNvbnRpbnVlKTsKKyAgICAgICAgYi5hZGQo
QmVoYXZpb3I6Ok5vdGhpbmcpOworICAgICAgICBtX3N0YWNrLmFwcGVuZChPcHRpb25TZXQ8QmVo
YXZpb3I+Ojpmcm9tUmF3KGluaXRpYWxpemF0aW9uLT50b1JhdygpIHwgYi50b1JhdygpKSk7Cisg
ICAgfQorCisgICAgdm9pZCB2aXNpdChBU1Q6OldoaWxlTG9vcCYgd2hpbGVMb29wKSBvdmVycmlk
ZQorICAgIHsKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHdoaWxlTG9vcC5ib2R5KCkpOwor
ICAgICAgICBpZiAoZXJyb3IoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgYXV0byBi
ID0gbV9zdGFjay50YWtlTGFzdCgpOworICAgICAgICBiLnJlbW92ZShCZWhhdmlvcjo6QnJlYWsp
OworICAgICAgICBiLnJlbW92ZShCZWhhdmlvcjo6Q29udGludWUpOworICAgICAgICBiLmFkZChC
ZWhhdmlvcjo6Tm90aGluZyk7CisgICAgICAgIG1fc3RhY2suYXBwZW5kKGIpOworICAgIH0KKwor
ICAgIHZvaWQgdmlzaXQoQVNUOjpTd2l0Y2hDYXNlJiBzd2l0Y2hDYXNlKSBvdmVycmlkZQorICAg
IHsKKyAgICAgICAgVmlzaXRvcjo6dmlzaXQoc3dpdGNoQ2FzZSk7CisgICAgfQorCisgICAgdm9p
ZCB2aXNpdChBU1Q6OlN3aXRjaFN0YXRlbWVudCYgc3dpdGNoU3RhdGVtZW50KSBvdmVycmlkZQor
ICAgIHsKKyAgICAgICAgaWYgKHN3aXRjaFN0YXRlbWVudC5zd2l0Y2hDYXNlcygpLmlzRW1wdHko
KSkgeworICAgICAgICAgICAgbV9zdGFjay5hcHBlbmQoeyBCZWhhdmlvcjo6Tm90aGluZyB9KTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIE9wdGlvblNldDxCZWhh
dmlvcj4gcmVkdWN0aW9uID0geyB9OworICAgICAgICBmb3IgKGF1dG8mIHN3aXRjaENhc2UgOiBz
d2l0Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKSkgeworICAgICAgICAgICAgY2hlY2tFcnJvckFu
ZFZpc2l0KHN3aXRjaENhc2UpOworICAgICAgICAgICAgaWYgKGVycm9yKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgYXV0byBiID0gbV9zdGFjay50YWtlTGFzdCgpOwor
ICAgICAgICAgICAgcmVkdWN0aW9uID0gT3B0aW9uU2V0PEJlaGF2aW9yPjo6ZnJvbVJhdyhyZWR1
Y3Rpb24udG9SYXcoKSB8IGIudG9SYXcoKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJlZHVj
dGlvbi5jb250YWlucyhCZWhhdmlvcjo6Tm90aGluZykpIHsKKyAgICAgICAgICAgIHNldEVycm9y
KCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcmVkdWN0aW9uLnJl
bW92ZShCZWhhdmlvcjo6QnJlYWspOworICAgICAgICByZWR1Y3Rpb24ucmVtb3ZlKEJlaGF2aW9y
OjpGYWxsdGhyb3VnaCk7CisgICAgICAgIHJlZHVjdGlvbi5hZGQoQmVoYXZpb3I6Ok5vdGhpbmcp
OworICAgICAgICBtX3N0YWNrLmFwcGVuZChyZWR1Y3Rpb24pOworICAgIH0KKworICAgIHZvaWQg
dmlzaXQoQVNUOjpJZlN0YXRlbWVudCYgaWZTdGF0ZW1lbnQpIG92ZXJyaWRlCisgICAgeworICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoaWZTdGF0ZW1lbnQuYm9keSgpKTsKKyAgICAgICAgaWYg
KGVycm9yKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGF1dG8gYiA9IG1fc3RhY2su
dGFrZUxhc3QoKTsKKyAgICAgICAgT3B0aW9uU2V0PEJlaGF2aW9yPiBiUHJpbWU7CisgICAgICAg
IGlmIChpZlN0YXRlbWVudC5lbHNlQm9keSgpKSB7CisgICAgICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoKmlmU3RhdGVtZW50LmVsc2VCb2R5KCkpOworICAgICAgICAgICAgaWYgKGVycm9yKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYlByaW1lID0gbV9zdGFjay50
YWtlTGFzdCgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGJQcmltZSA9IHsgQmVoYXZp
b3I6Ok5vdGhpbmcgfTsKKyAgICAgICAgbV9zdGFjay5hcHBlbmQoT3B0aW9uU2V0PEJlaGF2aW9y
Pjo6ZnJvbVJhdyhiLnRvUmF3KCkgfCBiUHJpbWUudG9SYXcoKSkpOworICAgIH0KKworICAgIHZv
aWQgdmlzaXQoQVNUOjpFZmZlY3RmdWxFeHByZXNzaW9uU3RhdGVtZW50Jikgb3ZlcnJpZGUKKyAg
ICB7CisgICAgICAgIG1fc3RhY2suYXBwZW5kKHsgQmVoYXZpb3I6Ok5vdGhpbmcgfSk7CisgICAg
fQorCisgICAgdm9pZCB2aXNpdChBU1Q6OkJsb2NrJiBibG9jaykgb3ZlcnJpZGUKKyAgICB7Cisg
ICAgICAgIGlmIChibG9jay5zdGF0ZW1lbnRzKCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBt
X3N0YWNrLmFwcGVuZCh7IEJlaGF2aW9yOjpOb3RoaW5nIH0pOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgT3B0aW9uU2V0PEJlaGF2aW9yPiByZWR1Y3Rpb24gPSB7
IH07CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYmxvY2suc3RhdGVtZW50cygpLnNp
emUoKSAtIDE7ICsraSkgeworICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGJsb2NrLnN0
YXRlbWVudHMoKVtpXSk7CisgICAgICAgICAgICBpZiAoZXJyb3IoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICBhdXRvIGIgPSBtX3N0YWNrLnRha2VMYXN0KCk7CisgICAg
ICAgICAgICBpZiAoIWIuY29udGFpbnMoQmVoYXZpb3I6Ok5vdGhpbmcpKSB7CisgICAgICAgICAg
ICAgICAgc2V0RXJyb3IoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBiLnJlbW92ZShCZWhhdmlvcjo6Tm90aGluZyk7CisgICAgICAgICAgICBp
ZiAoYi5jb250YWlucyhCZWhhdmlvcjo6RmFsbHRocm91Z2gpKSB7CisgICAgICAgICAgICAgICAg
c2V0RXJyb3IoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICByZWR1Y3Rpb24gPSBPcHRpb25TZXQ8QmVoYXZpb3I+Ojpmcm9tUmF3KHJlZHVjdGlv
bi50b1JhdygpIHwgYi50b1JhdygpKTsKKyAgICAgICAgfQorICAgICAgICBjaGVja0Vycm9yQW5k
VmlzaXQoYmxvY2suc3RhdGVtZW50cygpW2Jsb2NrLnN0YXRlbWVudHMoKS5zaXplKCkgLSAxXSk7
CisgICAgICAgIGlmIChlcnJvcigpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBhdXRv
IGIgPSBtX3N0YWNrLnRha2VMYXN0KCk7CisgICAgICAgIG1fc3RhY2suYXBwZW5kKE9wdGlvblNl
dDxCZWhhdmlvcj46OmZyb21SYXcocmVkdWN0aW9uLnRvUmF3KCkgfCBiLnRvUmF3KCkpKTsKKyAg
ICB9CisKKyAgICB2b2lkIHZpc2l0KEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQm
KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgbV9zdGFjay5hcHBlbmQoeyBCZWhhdmlvcjo6Tm90
aGluZyB9KTsKKyAgICB9CisKKyAgICBWZWN0b3I8T3B0aW9uU2V0PEJlaGF2aW9yPj4gbV9zdGFj
azsKK307CisKK2Jvb2wgY2hlY2tTdGF0ZW1lbnRCZWhhdmlvcihQcm9ncmFtJiBwcm9ncmFtKQor
eworICAgIFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlciBzdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXI7
CisgICAgZm9yIChhdXRvJiBmdW5jdGlvbkRlZmluaXRpb24gOiBwcm9ncmFtLmZ1bmN0aW9uRGVm
aW5pdGlvbnMoKSkgeworICAgICAgICBzdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuVmlzaXRvcjo6
dmlzaXQoZnVuY3Rpb25EZWZpbml0aW9uKTsKKyAgICAgICAgaWYgKHN0YXRlbWVudEJlaGF2aW9y
Q2hlY2tlci5lcnJvcigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBhdXRv
IGJlaGF2aW9yID0gc3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLnRha2VGdW5jdGlvbkJlaGF2aW9y
KCk7CisgICAgICAgIGlmIChtYXRjaGVzKGZ1bmN0aW9uRGVmaW5pdGlvbi0+dHlwZSgpLCBwcm9n
cmFtLmludHJpbnNpY3MoKS52b2lkVHlwZSgpKSkgeworICAgICAgICAgICAgYmVoYXZpb3IucmVt
b3ZlKFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlcjo6QmVoYXZpb3I6OlJldHVybik7CisgICAgICAg
ICAgICBiZWhhdmlvci5yZW1vdmUoU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyOjpCZWhhdmlvcjo6
Tm90aGluZyk7CisgICAgICAgICAgICBpZiAoYmVoYXZpb3IgIT0gT3B0aW9uU2V0PFN0YXRlbWVu
dEJlaGF2aW9yQ2hlY2tlcjo6QmVoYXZpb3I+KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGJlaGF2aW9yICE9IFN0YXRl
bWVudEJlaGF2aW9yQ2hlY2tlcjo6QmVoYXZpb3I6OlJldHVybikKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdITFNMCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hZWNkZmU2MWZhODAyYTJiNDQ1NDNhMDE2YjFkMDRlMjZlNzRiM2VjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGF0
ZW1lbnRCZWhhdmlvckNoZWNrZXIuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCR1BVKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K25hbWVzcGFjZSBXSExTTCB7CisKK2NsYXNzIFByb2dyYW07CisKK2Jvb2wgY2hlY2tTdGF0ZW1l
bnRCZWhhdmlvcihQcm9ncmFtJik7CisKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5k
ZXggYjYxMjQxOTJjZTk0NDUyZjZkMWZlNGJiZjMwOWZjZGFjNDFiNDcyYS4uZGMyZTRiZjBkZDc3
NmUyZGMyYWU5Y2ExYWMwMDkwNTdiMWI3MjMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTMxOCw2ICsz
MTgsNyBAQCBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVDb25zdHJ1Y3RvcnMu
Y3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN5bnRoZXNpemVFbnVtZXJhdGlvbkZ1bmN0
aW9ucy5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3ludGhlc2l6ZVN0cnVjdHVyZUFj
Y2Vzc29ycy5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMSW50cmluc2ljcy5jcHAKK01v
ZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmNwcAogTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xOYW1lQ29udGV4dC5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMTmFtZVJlc29sdmVyLmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xSZXNv
bHZlT3ZlcmxvYWRJbXBsLmNwcApAQCAtMzI1LDcgKzMyNiw2IEBAIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMUmVjdXJzaW9uQ2hlY2tlci5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
VmlzaXRvci5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMTGl0ZXJhbFR5cGVDaGVja2Vy
LmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xIaWdoWm9tYmllRmluZGVyLmNwcAotTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMb29wQ2hlY2tlci5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9B
U1QvV0hMU0xUeXBlQXJndW1lbnQuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9BU1QvV0hMU0xC
dWlsdEluU2VtYW50aWMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmZlZGMyMjI0ZjhiMTVmMjVkMDEzMzg3MTBhMDY5NjFm
NjM1NjRkOC4uNWM5YWIwNTYwYmY5MTEyZWVmMWEyNTI0YmEyNWIyM2VjZDE4YjUxMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NjQzNyw4ICs2NDM3LDYgQEAKIAkJMUNBMEMyRTUyMUVFRDEyQTAwQTExODYwIC8qIFdITFNMRnVu
Y3Rpb25TdGFnZUNoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xGdW5jdGlvblN0YWdlQ2hl
Y2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0EwQzJFQTIxRUVENkY1MDBB
MTE4NjAgLyogV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xM
aXRlcmFsVHlwZUNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBMEMy
RUMyMUVFRDZGNjAwQTExODYwIC8qIFdITFNMTGl0ZXJhbFR5cGVDaGVja2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdITFNMTGl0ZXJhbFR5cGVDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMUNBMEMyRjQyMUVFREFEMDAwQTExODYwIC8qIFdITFNMTG9vcENoZWNr
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xMb29wQ2hlY2tlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQTBDMkY1MjFFRURBRDEwMEExMTg2MCAvKiBXSExTTExv
b3BDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMTG9vcENoZWNrZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBMTlFMDMwREMyNTU5NTAwNjVBOTk0IC8qIEV2ZW50TG9v
cE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEV2ZW50TG9v
cE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBMTlFMTUwREMyNTVDQTAw
NjVBOTk0IC8qIEV2ZW50TG9vcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBF
dmVudExvb3AuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBRjM0N0UwQTZDNDA1
MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJTY3JpcHRPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTY0NjAsNiArNjQ1OCw4IEBACiAJCTFDREQ0NUU0MEJBOUM4NDYwMEY5MDE0NyAvKiBEZWJ1Z1Jl
bGVhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRGVidWdSZWxl
YXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0RENDVFNTBCQTlD
ODQ2MDBGOTAxNDcgLyogV2ViQ29yZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7
IHBhdGggPSBXZWJDb3JlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
Q0RENDVFNjBCQTlDODQ2MDBGOTAxNDcgLyogQmFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQu
eGNjb25maWc7IHBhdGggPSBCYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQ0VDQjNBODIxRjJCNjczMDBGNDQ1NDIgLyogV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNo
ZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNFQ0IzQTkyMUYyQjY3MzAwRjQ0NTQyIC8q
IFdITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdI
TFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUNGQUUzMjIwQTZENkEzRjAwMzI1OTNEIC8qIGxpYm9iamMuZHlsaWIgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1v
LmR5bGliIjsgbmFtZSA9IGxpYm9iamMuZHlsaWI7IHBhdGggPSAvdXNyL2xpYi9saWJvYmpjLmR5
bGliOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQkxREM1NTNGRDIxMUJBMTJBMDA0
Qjc4MEUgLyogTmF2aWdhdG9yU2hhcmUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5hdmln
YXRvclNoYXJlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMURDNTUzRkYyMTFC
QTg0MTAwNEI3ODBFIC8qIFNoYXJlRGF0YS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU2hh
cmVEYXRhLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI1NTgwLDggKzI1NTgw
LDYgQEAKIAkJCQlDMjEwRTkxMjIxQjRCRDEwMDBCN0Y4M0QgLyogV0hMU0xMZXhlci5oICovLAog
CQkJCTFDQTBDMkVDMjFFRUQ2RjYwMEExMTg2MCAvKiBXSExTTExpdGVyYWxUeXBlQ2hlY2tlci5j
cHAgKi8sCiAJCQkJMUNBMEMyRUEyMUVFRDZGNTAwQTExODYwIC8qIFdITFNMTGl0ZXJhbFR5cGVD
aGVja2VyLmggKi8sCi0JCQkJMUNBMEMyRjQyMUVFREFEMDAwQTExODYwIC8qIFdITFNMTG9vcENo
ZWNrZXIuY3BwICovLAotCQkJCTFDQTBDMkY1MjFFRURBRDEwMEExMTg2MCAvKiBXSExTTExvb3BD
aGVja2VyLmggKi8sCiAJCQkJQzIzNEE5OEQyMUU4ODg4NDAwM0M5ODREIC8qIFdITFNMTmFtZUNv
bnRleHQuY3BwICovLAogCQkJCUMyMzRBOThFMjFFODg4ODUwMDNDOTg0RCAvKiBXSExTTE5hbWVD
b250ZXh0LmggKi8sCiAJCQkJQzIzNEE5OEEyMUU4ODgzRTAwM0M5ODREIC8qIFdITFNMTmFtZVJl
c29sdmVyLmNwcCAqLywKQEAgLTI1NTk3LDYgKzI1NTk1LDggQEAKIAkJCQlDMjM0QTk5NzIxRTkw
RjI4MDAzQzk4NEQgLyogV0hMU0xSZXNvbHZlT3ZlcmxvYWRJbXBsLmggKi8sCiAJCQkJQzIzNEE5
OUQyMUU5MTBCRDAwM0M5ODREIC8qIFdITFNMUmVzb2x2aW5nVHlwZS5oICovLAogCQkJCUMyMUJG
NzQ1MjFDRDk2OTgwMDIyNzk3OSAvKiBXSExTTFN0YW5kYXJkTGlicmFyeS50eHQgKi8sCisJCQkJ
MUNFQ0IzQTkyMUYyQjY3MzAwRjQ0NTQyIC8qIFdITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2Vy
LmNwcCAqLywKKwkJCQkxQ0VDQjNBODIxRjJCNjczMDBGNDQ1NDIgLyogV0hMU0xTdGF0ZW1lbnRC
ZWhhdmlvckNoZWNrZXIuaCAqLywKIAkJCQlDMjM0QTlBOTIxRTkyQzE3MDAzQzk4NEQgLyogV0hM
U0xTeW50aGVzaXplQXJyYXlPcGVyYXRvckxlbmd0aC5jcHAgKi8sCiAJCQkJQzIzNEE5QUYyMUU5
MkMxQjAwM0M5ODREIC8qIFdITFNMU3ludGhlc2l6ZUFycmF5T3BlcmF0b3JMZW5ndGguaCAqLywK
IAkJCQlDMjM0QTlCMDIxRTkyQzFDMDAzQzk4NEQgLyogV0hMU0xTeW50aGVzaXplQ29uc3RydWN0
b3JzLmNwcCAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359645</attachid>
            <date>2019-01-20 13:12:26 -0800</date>
            <delta_ts>2019-01-20 16:23:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193487-20190120131225.patch</filename>
            <type>text/plain</type>
            <size>23872</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQwMjE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmU0OTFmNmQ3MGQ3MmE1
YjQzOTJmZGFkNWJjMWY2ZjYzMTQ4NjNiMS4uMDNkNjY5MzRiYzA4ZjA2ZGY2MjMxMDM3MjJjOTYy
MGVhNTY2MzdlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTAxLTIwICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dITFNMXSBB
ZGQgdGhlIHN0YXRlbWVudCBiZWhhdmlvciBjaGVja2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM0ODcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGEgdHJhbnNsYXRpb24gb2YgaHR0cHM6
Ly9naXRodWIuY29tL2dwdXdlYi9XSExTTC9ibG9iL21hc3Rlci9TcGVjL3NvdXJjZS9pbmRleC5y
c3QjdHlwaW5nLXN0YXRlbWVudHMKKyAgICAgICAgaW50byBDKysuIEl0IGlzIG1lYW50IHRvIHJl
cGxhY2UgdGhlIFJldHVybkNoZWNrZXIgYW5kIFVucmVhY2hhYmxlQ29kZUNoZWNrZXIgaW4gdGhl
IHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbi4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVz
ZSBpdCBpc24ndCBob29rZWQgdXAgeWV0LiBOb3QgZW5vdWdoIG9mIHRoZSBjb21waWxlciBleGlz
dHMgdG8gaGF2ZSBhbnkgbWVhbmluZ2Z1bCBzb3J0CisgICAgICAgIG9mIHRlc3QuIFdoZW4gZW5v
dWdoIG9mIHRoZSBjb21waWxlciBpcyBwcmVzZW50LCBJJ2xsIHBvcnQgdGhlIHJlZmVyZW5jZSBp
bXBsZW1lbnRhdGlvbidzIHRlc3Qgc3VpdGUuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmdwdS9X
SExTTC9XSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6V0hMU0w6OlN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlcjo6dGFrZUZ1bmN0aW9uQmVo
YXZpb3IpOgorICAgICAgICAoV2ViQ29yZTo6V0hMU0w6OmNoZWNrU3RhdGVtZW50QmVoYXZpb3Ip
OgorICAgICAgICAqIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhdGVtZW50QmVoYXZpb3JD
aGVja2VyLmg6IEFkZGVkLgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wMS0yMCAgTWljaGFlbCBDYXRh
bnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjIzODI3NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
Z3B1L1dITFNML1dITFNMTG9vcENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJncHUvV0hMU0wvV0hMU0xMb29wQ2hlY2tlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGFlNjg1MGI5YjIyOTdmNTlhNTY2OTEyMzA2Y2M4Nzc5NTFjMzJhODYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMb29wQ2hlY2tlci5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSwxNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRl
ICJXSExTTExvb3BDaGVja2VyLmgiCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotCi0jaW5jbHVkZSAi
V0hMU0xCcmVhay5oIgotI2luY2x1ZGUgIldITFNMQ29udGludWUuaCIKLSNpbmNsdWRlICJXSExT
TERvV2hpbGVMb29wLmgiCi0jaW5jbHVkZSAiV0hMU0xGYWxsdGhyb3VnaC5oIgotI2luY2x1ZGUg
IldITFNMRm9yTG9vcC5oIgotI2luY2x1ZGUgIldITFNMU3dpdGNoU3RhdGVtZW50LmgiCi0jaW5j
bHVkZSAiV0hMU0xWaXNpdG9yLmgiCi0jaW5jbHVkZSAiV0hMU0xXaGlsZUxvb3AuaCIKLSNpbmNs
dWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3Bh
Y2UgV0hMU0wgewotCi0vLyBUaGlzIG1ha2VzIHN1cmUgdGhhdCBldmVyeSBvY2N1cmFuY2Ugb2Yg
ImNvbnRpbnVlLCIgImJyZWFrLCIgYW5kICJmYWxsdGhyb3VnaCIgYXBwZWFyIHdpdGhpbiB0aGUg
cmVsZXZhbnQgY29udHJvbCBmbG93IHN0cnVjdHVyZS4KLWNsYXNzIExvb3BDaGVja2VyIDogcHVi
bGljIFZpc2l0b3IgewotcHVibGljOgotICAgIExvb3BDaGVja2VyKCkgPSBkZWZhdWx0OwotCi0g
ICAgdmlydHVhbCB+TG9vcENoZWNrZXIoKSA9IGRlZmF1bHQ7Ci0KLXByaXZhdGU6Ci0gICAgdm9p
ZCB2aXNpdChBU1Q6OkZ1bmN0aW9uRGVmaW5pdGlvbiYgZnVuY3Rpb25EZWZpbml0aW9uKSBvdmVy
cmlkZQotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2xvb3BEZXB0aCk7Ci0gICAgICAgIEFTU0VS
VCghbV9zd2l0Y2hEZXB0aCk7Ci0gICAgICAgIFZpc2l0b3I6OnZpc2l0KGZ1bmN0aW9uRGVmaW5p
dGlvbik7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OldoaWxlTG9vcCYgd2hpbGVMb29w
KSBvdmVycmlkZQotICAgIHsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHdoaWxlTG9vcC5j
b25kaXRpb25hbCgpKTsKLQotICAgICAgICBTZXRGb3JTY29wZTx1bnNpZ25lZD4gY2hhbmdlKG1f
bG9vcERlcHRoLCBtX2xvb3BEZXB0aCArIDEpOwotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQo
d2hpbGVMb29wLmJvZHkoKSk7Ci0gICAgICAgIEFTU0VSVChtX2xvb3BEZXB0aCk7Ci0gICAgfQot
Ci0gICAgdm9pZCB2aXNpdChBU1Q6OkRvV2hpbGVMb29wJiBkb1doaWxlTG9vcCkgb3ZlcnJpZGUK
LSAgICB7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIFNldEZvclNjb3BlPHVuc2lnbmVkPiBjaGFu
Z2UobV9sb29wRGVwdGgsIG1fbG9vcERlcHRoICsgMSk7Ci0gICAgICAgICAgICBjaGVja0Vycm9y
QW5kVmlzaXQoZG9XaGlsZUxvb3AuYm9keSgpKTsKLSAgICAgICAgICAgIEFTU0VSVChtX2xvb3BE
ZXB0aCk7Ci0gICAgICAgIH0KLQotICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZG9XaGlsZUxv
b3AuY29uZGl0aW9uYWwoKSk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNpdChBU1Q6OkZvckxvb3Am
IGZvckxvb3ApIG92ZXJyaWRlCi0gICAgewotICAgICAgICBXVEY6OnZpc2l0KFdURjo6bWFrZVZp
c2l0b3IoWyZdKEFTVDo6VmFyaWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQmIHZhcmlhYmxlRGVj
bGFyYXRpb25zU3RhdGVtZW50KSB7Ci0gICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQodmFy
aWFibGVEZWNsYXJhdGlvbnNTdGF0ZW1lbnQpOwotICAgICAgICB9LCBbJl0oVW5pcXVlUmVmPEFT
VDo6RXhwcmVzc2lvbj4mIGV4cHJlc3Npb24pIHsKLSAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRW
aXNpdChleHByZXNzaW9uKTsKLSAgICAgICAgfSksIGZvckxvb3AuaW5pdGlhbGl6YXRpb24oKSk7
Ci0gICAgICAgIGlmIChmb3JMb29wLmNvbmRpdGlvbigpKQotICAgICAgICAgICAgY2hlY2tFcnJv
ckFuZFZpc2l0KCpmb3JMb29wLmNvbmRpdGlvbigpKTsKLSAgICAgICAgaWYgKGZvckxvb3AuaW5j
cmVtZW50KCkpCi0gICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlzaXQoKmZvckxvb3AuaW5jcmVt
ZW50KCkpOwotCi0gICAgICAgIFNldEZvclNjb3BlPHVuc2lnbmVkPiBjaGFuZ2UobV9sb29wRGVw
dGgsIG1fbG9vcERlcHRoICsgMSk7Ci0gICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChmb3JMb29w
LmJvZHkoKSk7Ci0gICAgICAgIEFTU0VSVChtX2xvb3BEZXB0aCk7Ci0gICAgfQotCi0gICAgdm9p
ZCB2aXNpdChBU1Q6OlN3aXRjaFN0YXRlbWVudCYgc3dpdGNoU3RhdGVtZW50KSBvdmVycmlkZQot
ICAgIHsKLSAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KHN3aXRjaFN0YXRlbWVudC52YWx1ZSgp
KTsKLQotICAgICAgICBTZXRGb3JTY29wZTx1bnNpZ25lZD4gY2hhbmdlKG1fc3dpdGNoRGVwdGgs
IG1fc3dpdGNoRGVwdGggKyAxKTsKLSAgICAgICAgZm9yIChhdXRvJiBzd2l0Y2hDYXNlIDogc3dp
dGNoU3RhdGVtZW50LnN3aXRjaENhc2VzKCkpCi0gICAgICAgICAgICBjaGVja0Vycm9yQW5kVmlz
aXQoc3dpdGNoQ2FzZSk7Ci0gICAgICAgIEFTU0VSVChtX3N3aXRjaERlcHRoKTsKLSAgICB9Ci0K
LSAgICB2b2lkIHZpc2l0KEFTVDo6QnJlYWsmIGJyZWFrU3RhdGVtZW50KSBvdmVycmlkZQotICAg
IHsKLSAgICAgICAgaWYgKCFtX2xvb3BEZXB0aCAmJiAhbV9zd2l0Y2hEZXB0aCkgewotICAgICAg
ICAgICAgc2V0RXJyb3IoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAg
ICBWaXNpdG9yOjp2aXNpdChicmVha1N0YXRlbWVudCk7Ci0gICAgfQotCi0gICAgdm9pZCB2aXNp
dChBU1Q6OkNvbnRpbnVlJiBjb250aW51ZVN0YXRlbWVudCkgb3ZlcnJpZGUKLSAgICB7Ci0gICAg
ICAgIGlmICghbV9sb29wRGVwdGgpIHsKLSAgICAgICAgICAgIHNldEVycm9yKCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgVmlzaXRvcjo6dmlzaXQoY29udGludWVT
dGF0ZW1lbnQpOwotICAgIH0KLQotICAgIHZvaWQgdmlzaXQoQVNUOjpGYWxsdGhyb3VnaCYgZmFs
bHRocm91Z2hTdGF0ZW1lbnQpIG92ZXJyaWRlCi0gICAgewotICAgICAgICBpZiAoIW1fc3dpdGNo
RGVwdGgpIHsKLSAgICAgICAgICAgIHNldEVycm9yKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICAgICAgVmlzaXRvcjo6dmlzaXQoZmFsbHRocm91Z2hTdGF0ZW1lbnQpOwot
ICAgIH0KLQotICAgIHVuc2lnbmVkIG1fbG9vcERlcHRoIHsgMCB9OwotICAgIHVuc2lnbmVkIG1f
c3dpdGNoRGVwdGggeyAwIH07Ci19OwotCi1ib29sIGNoZWNrTG9vcHMoUHJvZ3JhbSYgcHJvZ3Jh
bSkKLXsKLSAgICBMb29wQ2hlY2tlciBsb29wQ2hlY2tlcjsKLSAgICBsb29wQ2hlY2tlci5WaXNp
dG9yOjp2aXNpdChwcm9ncmFtKTsKLSAgICByZXR1cm4gIWxvb3BDaGVja2VyLmVycm9yKCk7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdITFNMCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTExvb3BDaGVja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmdwdS9XSExTTC9XSExTTExvb3BDaGVja2VyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDFmY2FjNjdlYjk2OTcwMDU1NGQwYTFlNzAzM2VhZTI5NjZlMTJmOTYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJncHUvV0hMU0wvV0hMU0xMb29wQ2hlY2tlci5oCisrKyAvZGV2L251bGwKQEAgLTEs
NDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1uYW1lc3BhY2UgV0hMU0wgewotCi1jbGFzcyBQ
cm9ncmFtOwotCi1ib29sIGNoZWNrTG9vcHMoUHJvZ3JhbSYpOwotCi19Ci0KLX0KLQotI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFN0
YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODY0
MTQzMDEyYmU1ODg4YzhjZjU1ODAxMjMwMWVkNWNlNmMxOTU5OAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhdGVtZW50QmVoYXZp
b3JDaGVja2VyLmNwcApAQCAtMCwwICsxLDI0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5oIgorCisj
aWYgRU5BQkxFKFdFQkdQVSkKKworI2luY2x1ZGUgIldITFNMRG9XaGlsZUxvb3AuaCIKKyNpbmNs
dWRlICJXSExTTEZvckxvb3AuaCIKKyNpbmNsdWRlICJXSExTTElmU3RhdGVtZW50LmgiCisjaW5j
bHVkZSAiV0hMU0xJbmZlclR5cGVzLmgiCisjaW5jbHVkZSAiV0hMU0xQcm9ncmFtLmgiCisjaW5j
bHVkZSAiV0hMU0xTd2l0Y2hTdGF0ZW1lbnQuaCIKKyNpbmNsdWRlICJXSExTTFdoaWxlTG9vcC5o
IgorI2luY2x1ZGUgPGNzdGRpbnQ+CisjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hM
U0wgeworCitjbGFzcyBTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIgOiBwdWJsaWMgVmlzaXRvciB7
CitwdWJsaWM6CisgICAgZW51bSBjbGFzcyBCZWhhdmlvciA6IHVpbnQ4X3QgeworICAgICAgICBS
ZXR1cm4gPSAxIDw8IDAsCisgICAgICAgIEJyZWFrID0gMSA8PCAxLAorICAgICAgICBDb250aW51
ZSA9IDEgPDwgMiwKKyAgICAgICAgRmFsbHRocm91Z2ggPSAxIDw8IDMsCisgICAgICAgIE5vdGhp
bmcgPSAxIDw8IDQKKyAgICB9OworCisgICAgT3B0aW9uU2V0PEJlaGF2aW9yPiB0YWtlRnVuY3Rp
b25CZWhhdmlvcigpCisgICAgeworICAgICAgICBBU1NFUlQobV9zdGFjay5zaXplKCkgPT0gMSk7
CisgICAgICAgIHJldHVybiBtX3N0YWNrLnRha2VMYXN0KCk7CisgICAgfQorCitwcml2YXRlOgor
ICAgIHZvaWQgdmlzaXQoQVNUOjpCcmVhayYpIG92ZXJyaWRlCisgICAgeworICAgICAgICBtX3N0
YWNrLmFwcGVuZCh7IEJlaGF2aW9yOjpCcmVhayB9KTsKKyAgICB9CisKKyAgICB2b2lkIHZpc2l0
KEFTVDo6RmFsbHRocm91Z2gmKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgbV9zdGFjay5hcHBl
bmQoeyBCZWhhdmlvcjo6RmFsbHRocm91Z2ggfSk7CisgICAgfQorCisgICAgdm9pZCB2aXNpdChB
U1Q6OkNvbnRpbnVlJikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIG1fc3RhY2suYXBwZW5kKHsg
QmVoYXZpb3I6OkNvbnRpbnVlIH0pOworICAgIH0KKworICAgIHZvaWQgdmlzaXQoQVNUOjpSZXR1
cm4mKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgbV9zdGFjay5hcHBlbmQoeyBCZWhhdmlvcjo6
UmV0dXJuIH0pOworICAgIH0KKworICAgIHZvaWQgdmlzaXQoQVNUOjpUcmFwJikgb3ZlcnJpZGUK
KyAgICB7CisgICAgICAgIG1fc3RhY2suYXBwZW5kKHsgQmVoYXZpb3I6OlJldHVybiB9KTsKKyAg
ICB9CisKKyAgICB2b2lkIHZpc2l0KEFTVDo6RG9XaGlsZUxvb3AmIGRvV2hpbGVMb29wKSBvdmVy
cmlkZQorICAgIHsKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGRvV2hpbGVMb29wLmJvZHko
KSk7CisgICAgICAgIGlmIChlcnJvcigpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBh
dXRvIGIgPSBtX3N0YWNrLnRha2VMYXN0KCk7CisgICAgICAgIGIucmVtb3ZlKEJlaGF2aW9yOjpC
cmVhayk7CisgICAgICAgIGIucmVtb3ZlKEJlaGF2aW9yOjpDb250aW51ZSk7CisgICAgICAgIGIu
YWRkKEJlaGF2aW9yOjpOb3RoaW5nKTsKKyAgICAgICAgbV9zdGFjay5hcHBlbmQoYik7CisgICAg
fQorCisgICAgdm9pZCB2aXNpdChBU1Q6OkZvckxvb3AmIGZvckxvb3ApIG92ZXJyaWRlCisgICAg
eworICAgICAgICAvLyBUaGUgaW5pdGlhbGl6YXRpb24gYWx3YXlzIGhhcyBhIGJlaGF2aW9yIG9m
IE5vdGhpbmcsIHdoaWNoIHdlIGFscmVhZHkgYWRkIHVuY29uZGl0aW9uYWxseSBiZWxvdywKKyAg
ICAgICAgLy8gc28gd2UgY2FuIGp1c3QgaWdub3JlIHRoZSBpbml0aWFsaXphdGlvbi4KKworICAg
ICAgICBjaGVja0Vycm9yQW5kVmlzaXQoZm9yTG9vcC5ib2R5KCkpOworICAgICAgICBpZiAoZXJy
b3IoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgYXV0byBiID0gbV9zdGFjay50YWtl
TGFzdCgpOworICAgICAgICBiLnJlbW92ZShCZWhhdmlvcjo6QnJlYWspOworICAgICAgICBiLnJl
bW92ZShCZWhhdmlvcjo6Q29udGludWUpOworICAgICAgICBiLmFkZChCZWhhdmlvcjo6Tm90aGlu
Zyk7CisgICAgICAgIG1fc3RhY2suYXBwZW5kKGIpOworICAgIH0KKworICAgIHZvaWQgdmlzaXQo
QVNUOjpXaGlsZUxvb3AmIHdoaWxlTG9vcCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGNoZWNr
RXJyb3JBbmRWaXNpdCh3aGlsZUxvb3AuYm9keSgpKTsKKyAgICAgICAgaWYgKGVycm9yKCkpCisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGF1dG8gYiA9IG1fc3RhY2sudGFrZUxhc3QoKTsK
KyAgICAgICAgYi5yZW1vdmUoQmVoYXZpb3I6OkJyZWFrKTsKKyAgICAgICAgYi5yZW1vdmUoQmVo
YXZpb3I6OkNvbnRpbnVlKTsKKyAgICAgICAgYi5hZGQoQmVoYXZpb3I6Ok5vdGhpbmcpOworICAg
ICAgICBtX3N0YWNrLmFwcGVuZChiKTsKKyAgICB9CisKKyAgICB2b2lkIHZpc2l0KEFTVDo6U3dp
dGNoQ2FzZSYgc3dpdGNoQ2FzZSkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIFZpc2l0b3I6OnZp
c2l0KHN3aXRjaENhc2UpOworICAgIH0KKworICAgIHZvaWQgdmlzaXQoQVNUOjpTd2l0Y2hTdGF0
ZW1lbnQmIHN3aXRjaFN0YXRlbWVudCkgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIGlmIChzd2l0
Y2hTdGF0ZW1lbnQuc3dpdGNoQ2FzZXMoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIG1fc3Rh
Y2suYXBwZW5kKHsgQmVoYXZpb3I6Ok5vdGhpbmcgfSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBPcHRpb25TZXQ8QmVoYXZpb3I+IHJlZHVjdGlvbiA9IHsgfTsK
KyAgICAgICAgZm9yIChhdXRvJiBzd2l0Y2hDYXNlIDogc3dpdGNoU3RhdGVtZW50LnN3aXRjaENh
c2VzKCkpIHsKKyAgICAgICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChzd2l0Y2hDYXNlKTsKKyAg
ICAgICAgICAgIGlmIChlcnJvcigpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIGF1dG8gYiA9IG1fc3RhY2sudGFrZUxhc3QoKTsKKyAgICAgICAgICAgIHJlZHVjdGlvbiA9
IE9wdGlvblNldDxCZWhhdmlvcj46OmZyb21SYXcocmVkdWN0aW9uLnRvUmF3KCkgfCBiLnRvUmF3
KCkpOworICAgICAgICB9CisgICAgICAgIGlmIChyZWR1Y3Rpb24uY29udGFpbnMoQmVoYXZpb3I6
Ok5vdGhpbmcpKSB7CisgICAgICAgICAgICBzZXRFcnJvcigpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIHJlZHVjdGlvbi5yZW1vdmUoQmVoYXZpb3I6OkJyZWFrKTsK
KyAgICAgICAgcmVkdWN0aW9uLnJlbW92ZShCZWhhdmlvcjo6RmFsbHRocm91Z2gpOworICAgICAg
ICByZWR1Y3Rpb24uYWRkKEJlaGF2aW9yOjpOb3RoaW5nKTsKKyAgICAgICAgbV9zdGFjay5hcHBl
bmQocmVkdWN0aW9uKTsKKyAgICB9CisKKyAgICB2b2lkIHZpc2l0KEFTVDo6SWZTdGF0ZW1lbnQm
IGlmU3RhdGVtZW50KSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0
KGlmU3RhdGVtZW50LmJvZHkoKSk7CisgICAgICAgIGlmIChlcnJvcigpKQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBhdXRvIGIgPSBtX3N0YWNrLnRha2VMYXN0KCk7CisgICAgICAgIE9w
dGlvblNldDxCZWhhdmlvcj4gYlByaW1lOworICAgICAgICBpZiAoaWZTdGF0ZW1lbnQuZWxzZUJv
ZHkoKSkgeworICAgICAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KCppZlN0YXRlbWVudC5lbHNl
Qm9keSgpKTsKKyAgICAgICAgICAgIGlmIChlcnJvcigpKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIGJQcmltZSA9IG1fc3RhY2sudGFrZUxhc3QoKTsKKyAgICAgICAgfSBl
bHNlCisgICAgICAgICAgICBiUHJpbWUgPSB7IEJlaGF2aW9yOjpOb3RoaW5nIH07CisgICAgICAg
IG1fc3RhY2suYXBwZW5kKE9wdGlvblNldDxCZWhhdmlvcj46OmZyb21SYXcoYi50b1JhdygpIHwg
YlByaW1lLnRvUmF3KCkpKTsKKyAgICB9CisKKyAgICB2b2lkIHZpc2l0KEFTVDo6RWZmZWN0ZnVs
RXhwcmVzc2lvblN0YXRlbWVudCYpIG92ZXJyaWRlCisgICAgeworICAgICAgICBtX3N0YWNrLmFw
cGVuZCh7IEJlaGF2aW9yOjpOb3RoaW5nIH0pOworICAgIH0KKworICAgIHZvaWQgdmlzaXQoQVNU
OjpCbG9jayYgYmxvY2spIG92ZXJyaWRlCisgICAgeworICAgICAgICBpZiAoYmxvY2suc3RhdGVt
ZW50cygpLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgbV9zdGFjay5hcHBlbmQoeyBCZWhhdmlv
cjo6Tm90aGluZyB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IE9wdGlvblNldDxCZWhhdmlvcj4gcmVkdWN0aW9uID0geyB9OworICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGJsb2NrLnN0YXRlbWVudHMoKS5zaXplKCkgLSAxOyArK2kpIHsKKyAgICAg
ICAgICAgIGNoZWNrRXJyb3JBbmRWaXNpdChibG9jay5zdGF0ZW1lbnRzKClbaV0pOworICAgICAg
ICAgICAgaWYgKGVycm9yKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
YXV0byBiID0gbV9zdGFjay50YWtlTGFzdCgpOworICAgICAgICAgICAgaWYgKCFiLmNvbnRhaW5z
KEJlaGF2aW9yOjpOb3RoaW5nKSkgeworICAgICAgICAgICAgICAgIHNldEVycm9yKCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYi5yZW1vdmUo
QmVoYXZpb3I6Ok5vdGhpbmcpOworICAgICAgICAgICAgaWYgKGIuY29udGFpbnMoQmVoYXZpb3I6
OkZhbGx0aHJvdWdoKSkgeworICAgICAgICAgICAgICAgIHNldEVycm9yKCk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVkdWN0aW9uID0gT3B0
aW9uU2V0PEJlaGF2aW9yPjo6ZnJvbVJhdyhyZWR1Y3Rpb24udG9SYXcoKSB8IGIudG9SYXcoKSk7
CisgICAgICAgIH0KKyAgICAgICAgY2hlY2tFcnJvckFuZFZpc2l0KGJsb2NrLnN0YXRlbWVudHMo
KVtibG9jay5zdGF0ZW1lbnRzKCkuc2l6ZSgpIC0gMV0pOworICAgICAgICBpZiAoZXJyb3IoKSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgYXV0byBiID0gbV9zdGFjay50YWtlTGFzdCgp
OworICAgICAgICBtX3N0YWNrLmFwcGVuZChPcHRpb25TZXQ8QmVoYXZpb3I+Ojpmcm9tUmF3KHJl
ZHVjdGlvbi50b1JhdygpIHwgYi50b1JhdygpKSk7CisgICAgfQorCisgICAgdm9pZCB2aXNpdChB
U1Q6OlZhcmlhYmxlRGVjbGFyYXRpb25zU3RhdGVtZW50Jikgb3ZlcnJpZGUKKyAgICB7CisgICAg
ICAgIG1fc3RhY2suYXBwZW5kKHsgQmVoYXZpb3I6Ok5vdGhpbmcgfSk7CisgICAgfQorCisgICAg
VmVjdG9yPE9wdGlvblNldDxCZWhhdmlvcj4+IG1fc3RhY2s7Cit9OworCitib29sIGNoZWNrU3Rh
dGVtZW50QmVoYXZpb3IoUHJvZ3JhbSYgcHJvZ3JhbSkKK3sKKyAgICBTdGF0ZW1lbnRCZWhhdmlv
ckNoZWNrZXIgc3RhdGVtZW50QmVoYXZpb3JDaGVja2VyOworICAgIGZvciAoYXV0byYgZnVuY3Rp
b25EZWZpbml0aW9uIDogcHJvZ3JhbS5mdW5jdGlvbkRlZmluaXRpb25zKCkpIHsKKyAgICAgICAg
c3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLlZpc2l0b3I6OnZpc2l0KGZ1bmN0aW9uRGVmaW5pdGlv
bik7CisgICAgICAgIGlmIChzdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuZXJyb3IoKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYXV0byBiZWhhdmlvciA9IHN0YXRlbWVudEJl
aGF2aW9yQ2hlY2tlci50YWtlRnVuY3Rpb25CZWhhdmlvcigpOworICAgICAgICBpZiAobWF0Y2hl
cyhmdW5jdGlvbkRlZmluaXRpb24tPnR5cGUoKSwgcHJvZ3JhbS5pbnRyaW5zaWNzKCkudm9pZFR5
cGUoKSkpIHsKKyAgICAgICAgICAgIGJlaGF2aW9yLnJlbW92ZShTdGF0ZW1lbnRCZWhhdmlvckNo
ZWNrZXI6OkJlaGF2aW9yOjpSZXR1cm4pOworICAgICAgICAgICAgYmVoYXZpb3IucmVtb3ZlKFN0
YXRlbWVudEJlaGF2aW9yQ2hlY2tlcjo6QmVoYXZpb3I6Ok5vdGhpbmcpOworICAgICAgICAgICAg
aWYgKGJlaGF2aW9yICE9IE9wdGlvblNldDxTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXI6OkJlaGF2
aW9yPigpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIGlmIChiZWhhdmlvciAhPSBTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXI6OkJl
aGF2aW9yOjpSZXR1cm4pCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXSExTTAorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJncHUvV0hMU0wvV0hMU0xTdGF0ZW1lbnRC
ZWhhdmlvckNoZWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dI
TFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWVjZGZlNjFmYTgwMmEy
YjQ0NTQzYTAxNmIxZDA0ZTI2ZTc0YjNlYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmgK
QEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxF
KFdFQkdQVSkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCituYW1lc3BhY2UgV0hMU0wgeworCitj
bGFzcyBQcm9ncmFtOworCitib29sIGNoZWNrU3RhdGVtZW50QmVoYXZpb3IoUHJvZ3JhbSYpOwor
Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGI2MTI0MTkyY2U5NDQ1MmY2ZDFm
ZTRiYmYzMDlmY2RhYzQxYjQ3MmEuLmRjMmU0YmYwZGQ3NzZlMmRjMmFlOWNhMWFjMDA5MDU3YjFi
NzIzMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0zMTgsNiArMzE4LDcgQEAgTW9kdWxlcy93ZWJncHUv
V0hMU0wvV0hMU0xTeW50aGVzaXplQ29uc3RydWN0b3JzLmNwcAogTW9kdWxlcy93ZWJncHUvV0hM
U0wvV0hMU0xTeW50aGVzaXplRW51bWVyYXRpb25GdW5jdGlvbnMuY3BwCiBNb2R1bGVzL3dlYmdw
dS9XSExTTC9XSExTTFN5bnRoZXNpemVTdHJ1Y3R1cmVBY2Nlc3NvcnMuY3BwCiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTEludHJpbnNpY3MuY3BwCitNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExT
TFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
TmFtZUNvbnRleHQuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTE5hbWVSZXNvbHZlci5j
cHAKIE1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNMUmVzb2x2ZU92ZXJsb2FkSW1wbC5jcHAKQEAg
LTMyNSw3ICszMjYsNiBAQCBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFJlY3Vyc2lvbkNoZWNr
ZXIuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTFZpc2l0b3IuY3BwCiBNb2R1bGVzL3dl
YmdwdS9XSExTTC9XSExTTExpdGVyYWxUeXBlQ2hlY2tlci5jcHAKIE1vZHVsZXMvd2ViZ3B1L1dI
TFNML1dITFNMSGlnaFpvbWJpZUZpbmRlci5jcHAKLU1vZHVsZXMvd2ViZ3B1L1dITFNML1dITFNM
TG9vcENoZWNrZXIuY3BwCiBNb2R1bGVzL3dlYmdwdS9XSExTTC9XSExTTEZ1bmN0aW9uU3RhZ2VD
aGVja2VyLmNwcAogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMVHlwZUFyZ3VtZW50LmNw
cAogTW9kdWxlcy93ZWJncHUvV0hMU0wvQVNUL1dITFNMQnVpbHRJblNlbWFudGljLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDZmZWRjMjIyNGY4YjE1ZjI1ZDAxMzM4NzEwYTA2OTYxZjYzNTY0ZDguLjVjOWFiMDU2MGJmOTEx
MmVlZjFhMjUyNGJhMjViMjNlY2QxOGI1MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY0MzcsOCArNjQzNyw2IEBACiAJCTFD
QTBDMkU1MjFFRUQxMkEwMEExMTg2MCAvKiBXSExTTEZ1bmN0aW9uU3RhZ2VDaGVja2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdITFNMRnVuY3Rpb25TdGFnZUNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMUNBMEMyRUEyMUVFRDZGNTAwQTExODYwIC8qIFdITFNMTGl0ZXJhbFR5
cGVDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMTGl0ZXJhbFR5cGVDaGVja2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQTBDMkVDMjFFRUQ2RjYwMEExMTg2MCAvKiBX
SExTTExpdGVyYWxUeXBlQ2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTExpdGVy
YWxUeXBlQ2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDQTBDMkY0
MjFFRURBRDAwMEExMTg2MCAvKiBXSExTTExvb3BDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdITFNMTG9vcENoZWNrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkx
Q0EwQzJGNTIxRUVEQUQxMDBBMTE4NjAgLyogV0hMU0xMb29wQ2hlY2tlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXSExTTExvb3BDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFD
QTE5RTAzMERDMjU1OTUwMDY1QTk5NCAvKiBFdmVudExvb3BNYWMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBFdmVudExvb3BNYWMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFDQTE5RTE1MERDMjU1Q0EwMDY1QTk5NCAvKiBFdmVudExvb3AuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXZlbnRMb29wLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFDQUYzNDdFMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRP
YmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU2NyaXB0T2JqZWN0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDYwLDYgKzY0NTgsOCBAQAogCQkx
Q0RENDVFNDBCQTlDODQ2MDBGOTAxNDcgLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IERlYnVnUmVsZWFzZS54Y2NvbmZpZzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNERDQ1RTUwQkE5Qzg0NjAwRjkwMTQ3IC8qIFdlYkNvcmUu
eGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gV2ViQ29yZS54Y2NvbmZp
Zzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNERDQ1RTYwQkE5Qzg0NjAwRjkwMTQ3
IC8qIEJhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZS54
Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNFQ0IzQTgyMUYyQjY3MzAw
RjQ0NTQyIC8qIFdITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFDRUNCM0E5MjFGMkI2NzMwMEY0NDU0MiAvKiBXSExTTFN0YXRlbWVudEJlaGF2aW9y
Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hl
Y2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRkFFMzIyMEE2RDZBM0Yw
MDMyNTkzRCAvKiBsaWJvYmpjLmR5bGliICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxpYiI7IG5hbWUgPSBsaWJvYmpj
LmR5bGliOyBwYXRoID0gL3Vzci9saWIvbGlib2JqYy5keWxpYjsgc291cmNlVHJlZSA9ICI8YWJz
b2x1dGU+IjsgfTsKIAkJMURDNTUzRkQyMTFCQTEyQTAwNEI3ODBFIC8qIE5hdmlnYXRvclNoYXJl
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBOYXZpZ2F0b3JTaGFyZS5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFEQzU1M0ZGMjExQkE4NDEwMDRCNzgwRSAvKiBTaGFyZURh
dGEuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFNoYXJlRGF0YS5pZGw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yNTU4MCw4ICsyNTU4MCw2IEBACiAJCQkJQzIxMEU5MTIyMUI0
QkQxMDAwQjdGODNEIC8qIFdITFNMTGV4ZXIuaCAqLywKIAkJCQkxQ0EwQzJFQzIxRUVENkY2MDBB
MTE4NjAgLyogV0hMU0xMaXRlcmFsVHlwZUNoZWNrZXIuY3BwICovLAogCQkJCTFDQTBDMkVBMjFF
RUQ2RjUwMEExMTg2MCAvKiBXSExTTExpdGVyYWxUeXBlQ2hlY2tlci5oICovLAotCQkJCTFDQTBD
MkY0MjFFRURBRDAwMEExMTg2MCAvKiBXSExTTExvb3BDaGVja2VyLmNwcCAqLywKLQkJCQkxQ0Ew
QzJGNTIxRUVEQUQxMDBBMTE4NjAgLyogV0hMU0xMb29wQ2hlY2tlci5oICovLAogCQkJCUMyMzRB
OThEMjFFODg4ODQwMDNDOTg0RCAvKiBXSExTTE5hbWVDb250ZXh0LmNwcCAqLywKIAkJCQlDMjM0
QTk4RTIxRTg4ODg1MDAzQzk4NEQgLyogV0hMU0xOYW1lQ29udGV4dC5oICovLAogCQkJCUMyMzRB
OThBMjFFODg4M0UwMDNDOTg0RCAvKiBXSExTTE5hbWVSZXNvbHZlci5jcHAgKi8sCkBAIC0yNTU5
Nyw2ICsyNTU5NSw4IEBACiAJCQkJQzIzNEE5OTcyMUU5MEYyODAwM0M5ODREIC8qIFdITFNMUmVz
b2x2ZU92ZXJsb2FkSW1wbC5oICovLAogCQkJCUMyMzRBOTlEMjFFOTEwQkQwMDNDOTg0RCAvKiBX
SExTTFJlc29sdmluZ1R5cGUuaCAqLywKIAkJCQlDMjFCRjc0NTIxQ0Q5Njk4MDAyMjc5NzkgLyog
V0hMU0xTdGFuZGFyZExpYnJhcnkudHh0ICovLAorCQkJCTFDRUNCM0E5MjFGMkI2NzMwMEY0NDU0
MiAvKiBXSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5jcHAgKi8sCisJCQkJMUNFQ0IzQTgy
MUYyQjY3MzAwRjQ0NTQyIC8qIFdITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmggKi8sCiAJ
CQkJQzIzNEE5QTkyMUU5MkMxNzAwM0M5ODREIC8qIFdITFNMU3ludGhlc2l6ZUFycmF5T3BlcmF0
b3JMZW5ndGguY3BwICovLAogCQkJCUMyMzRBOUFGMjFFOTJDMUIwMDNDOTg0RCAvKiBXSExTTFN5
bnRoZXNpemVBcnJheU9wZXJhdG9yTGVuZ3RoLmggKi8sCiAJCQkJQzIzNEE5QjAyMUU5MkMxQzAw
M0M5ODREIC8qIFdITFNMU3ludGhlc2l6ZUNvbnN0cnVjdG9ycy5jcHAgKi8sCg==
</data>
<flag name="review"
          id="376388"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>