<?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>147353</bug_id>
          
          <creation_ts>2015-07-27 22:20:41 -0700</creation_ts>
          <short_desc>[ES6] Add ES6 Modules preparsing phase to collect the dependencies</short_desc>
          <delta_ts>2019-05-02 16:18:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>147422</dependson>
          <blocked>147340</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ashwinkumare994</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1112671</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-27 22:20:41 -0700</bug_when>
    <thetext>Before executing the body of the modules, we need to collect the dependencies. (import / export)
This issue involves modules parsing change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112798</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-28 12:08:52 -0700</bug_when>
    <thetext>My plan is,

1. adding some option to JSC shell (maybe, leveraging the existing --xxx=yyy system is preferable)
2. with this option, parse the module syntax
3. just parsing it currently and ensure the parsing correctness by the test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1112799</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-28 12:10:22 -0700</bug_when>
    <thetext>After collecting the information from the module,

1. introducing the sort of loader into JSC shell (jsc.cpp), it&apos;s synchronous loader
2. test modules semantics under it

And after that, we&apos;ll implement asynchronous loader in the WebCore side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113149</commentid>
    <comment_count>3</comment_count>
      <attachid>257764</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-29 13:08:04 -0700</bug_when>
    <thetext>Created attachment 257764
Patch

WIP, parsing module related syntax</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113190</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-07-29 14:56:47 -0700</bug_when>
    <thetext>Before landing the preparing system (I&apos;m planning to create the new builder that inherits SyntaxChecker), just creating the patch to add parsing functionality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116425</commentid>
    <comment_count>5</comment_count>
      <attachid>258679</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-10 18:06:52 -0700</bug_when>
    <thetext>Created attachment 258679
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116468</commentid>
    <comment_count>6</comment_count>
      <attachid>258696</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-10 20:55:45 -0700</bug_when>
    <thetext>Created attachment 258696
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116469</commentid>
    <comment_count>7</comment_count>
      <attachid>258696</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-10 20:58:57 -0700</bug_when>
    <thetext>Comment on attachment 258696
Patch

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

The patch is ready.

&gt; Source/JavaScriptCore/runtime/Completion.cpp:78
&gt; +    return true;

Since this patch just implements analyzing part, we don&apos;t have tests for this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116470</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-10 20:59:28 -0700</bug_when>
    <thetext>Attachment 258696 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/NodesAnalyzeModule.cpp:27:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/parser/NodesAnalyzeModule.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/parser/Parser.h:839:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/parser/ModuleRecord.h:122:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 4 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116472</commentid>
    <comment_count>9</comment_count>
      <attachid>258697</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-10 21:06:42 -0700</bug_when>
    <thetext>Created attachment 258697
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116473</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-10 21:08:31 -0700</bug_when>
    <thetext>Attachment 258697 did not pass style-queue:


ERROR: Source/JavaScriptCore/parser/NodesAnalyzeModule.cpp:27:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/parser/NodesAnalyzeModule.cpp:29:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/parser/Parser.h:839:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/JavaScriptCore/parser/ModuleRecord.h:122:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 4 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116641</commentid>
    <comment_count>11</comment_count>
      <attachid>258697</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-11 12:27:33 -0700</bug_when>
    <thetext>Comment on attachment 258697
Patch

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

Added comments for the ease of reviewing.

&gt; Source/JavaScriptCore/parser/ModuleAnalyzer.cpp:142
&gt; +    //     export * from &quot;mod&quot;

These information is required for

1. requesting dependent modules.
2. constructing the module environment before executing the module body.

For (2), we collect the exported/imported binding informations; Exported variable should be allocated in the module&apos;s environment (as a heap variable). And imported bindings should be handled in the module&apos;s environment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117034</commentid>
    <comment_count>12</comment_count>
      <attachid>258697</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-08-12 13:18:13 -0700</bug_when>
    <thetext>Comment on attachment 258697
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117044</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-12 13:35:24 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Comment on attachment 258697 [details]
&gt; Patch
&gt; 
&gt; r=me

Thank you. In the meantime, I&apos;ll land this patch.
But, Saam is also reviewing this, so please feel free to comment it, I&apos;ll reflect your comments at any time :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117047</commentid>
    <comment_count>14</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-12 13:39:05 -0700</bug_when>
    <thetext>Committed r188355: &lt;http://trac.webkit.org/changeset/188355&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117206</commentid>
    <comment_count>15</comment_count>
      <attachid>258697</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-13 01:23:43 -0700</bug_when>
    <thetext>Comment on attachment 258697
Patch

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

Nice work. Some comments below.

&gt; Source/JavaScriptCore/builtins/BuiltinNames.h:34
&gt; +#define INITIALISE_BUILTIN_NAMES(name) , m_##name(Identifier::fromString(vm, #name)), m_##name##PrivateName(Identifier::fromUid(PrivateName(PrivateName::Description, ASCIILiteral(&quot;PrivateSymbol.&quot; #name))))

What is this doing?
Should this be in this patch?

&gt; Source/JavaScriptCore/parser/ModuleAnalyzer.cpp:38
&gt; +    , m_declaredVariables(declaredVariables)

I like the use of VariableEnvironment here. I&apos;m glad this is being used as the way to speak about variables in the parser.

&gt; Source/JavaScriptCore/parser/ModuleAnalyzer.cpp:100
&gt; +Ref&lt;ModuleRecord&gt; ModuleAnalyzer::analyze(ModuleProgramNode&amp; moduleProgramNode)

The comments in this function are really helpful.

&gt; Source/JavaScriptCore/parser/ModuleAnalyzer.cpp:103
&gt; +    // 1. Import entries

super Nit: This isn&apos;t an ordered list, these could just be bullet points using &quot;-&quot; or &quot;*&quot; instead of &quot;1/2/3/4&quot;

&gt; Source/JavaScriptCore/parser/NodesAnalyzeModule.cpp:43
&gt; +    for (StatementNode* statement = m_head; statement; statement = statement-&gt;next())

I know we ensure the Analyze phase only collects ModuleDeclarationNodes, but it would be nice to have an assert verifying this.
We could have StatementNode have a virtual function &quot;isModuleDeclarationNode&quot; and assert against that.

&gt; Source/JavaScriptCore/parser/NodesAnalyzeModule.cpp:51
&gt; +        analyzer.moduleRecord().addImportEntry({

I think having the name of the struct before &quot;{&quot; is useful here.

&gt; Source/JavaScriptCore/parser/NodesAnalyzeModule.cpp:80
&gt; +        if (m_moduleSpecifier) {

Nit: I know in an earlier patch I said it&apos;s good to use the names the spec uses, but I think I was maybe wrong.
I&apos;m not in love with the name m_moduleSpecifier. That name doesn&apos;t really mean anything to me.
Maybe we can give this a better name, like m_moduleFileName (even though it&apos;s not just files) or m_moduleName or something similar.

&gt; Source/JavaScriptCore/parser/Parser.cpp:238
&gt; +String Parser&lt;LexerType&gt;::parseInner(const Identifier&amp; calleeName, FunctionParseMode parseMode, ModuleParseMode moduleParseMode)

Can we just join FunctionParseMode and ModuleParseMode into one thing and give it a different name? Maybe SourceParseMode or another name?
Or even better, we can also unify this with JSParserCodeType. Or get rid of JSParserCodeType if needed.
Maybe we should open a separate bug to unify all of these into one type in another patch.

&gt; Source/JavaScriptCore/parser/Parser.cpp:2475
&gt; +            // const *default* = expr;

*default* is not visible to the actual JS code, right?
I think we should make that explicit in this comment.

&gt; Source/JavaScriptCore/parser/Parser.cpp:2484
&gt; +                internalFailWithMessage(false, &quot;Cannot export &apos;default&apos; name twice: &apos;&quot;);

nit: should be: &quot;Only one &apos;default&apos; export is allowed&quot;

&gt; Source/JavaScriptCore/parser/Parser.cpp:2494
&gt; +        semanticFailIfFalse(exportName(m_vm-&gt;propertyNames-&gt;defaultKeyword), &quot;Cannot export &apos;default&apos; name twice.&quot;);

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117285</commentid>
    <comment_count>16</comment_count>
      <attachid>258697</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-13 11:13:31 -0700</bug_when>
    <thetext>Comment on attachment 258697
Patch

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

Thank you for your review, Saam. Your comments are so helpful.
I&apos;ll upload the follow-up patch to this issue. You can review it :)

&gt;&gt; Source/JavaScriptCore/builtins/BuiltinNames.h:34
&gt;&gt; +#define INITIALISE_BUILTIN_NAMES(name) , m_##name(Identifier::fromString(vm, #name)), m_##name##PrivateName(Identifier::fromUid(PrivateName(PrivateName::Description, ASCIILiteral(&quot;PrivateSymbol.&quot; #name))))
&gt; 
&gt; What is this doing?
&gt; Should this be in this patch?

It adds the [[Description]] string into the private symbol to make the debug functionality of the ModuleRecord (dumping the Symbol names in ModuleRecord::dump) useful.

&gt;&gt; Source/JavaScriptCore/parser/ModuleAnalyzer.cpp:103
&gt;&gt; +    // 1. Import entries
&gt; 
&gt; super Nit: This isn&apos;t an ordered list, these could just be bullet points using &quot;-&quot; or &quot;*&quot; instead of &quot;1/2/3/4&quot;

Thanks. I&apos;ll fix it :)

&gt;&gt; Source/JavaScriptCore/parser/NodesAnalyzeModule.cpp:43
&gt;&gt; +    for (StatementNode* statement = m_head; statement; statement = statement-&gt;next())
&gt; 
&gt; I know we ensure the Analyze phase only collects ModuleDeclarationNodes, but it would be nice to have an assert verifying this.
&gt; We could have StatementNode have a virtual function &quot;isModuleDeclarationNode&quot; and assert against that.

Sounds nice! I&apos;ll fix it.

&gt;&gt; Source/JavaScriptCore/parser/NodesAnalyzeModule.cpp:51
&gt;&gt; +        analyzer.moduleRecord().addImportEntry({
&gt; 
&gt; I think having the name of the struct before &quot;{&quot; is useful here.

Reasonable. I&apos;ll add the type name, ImportEntry.

&gt;&gt; Source/JavaScriptCore/parser/NodesAnalyzeModule.cpp:80
&gt;&gt; +        if (m_moduleSpecifier) {
&gt; 
&gt; Nit: I know in an earlier patch I said it&apos;s good to use the names the spec uses, but I think I was maybe wrong.
&gt; I&apos;m not in love with the name m_moduleSpecifier. That name doesn&apos;t really mean anything to me.
&gt; Maybe we can give this a better name, like m_moduleFileName (even though it&apos;s not just files) or m_moduleName or something similar.

Make sense.
m_moduleName looks nice because the module&apos;s name will be resolved by the loader and it might not be the file name.
I&apos;ll rename them.

&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:2475
&gt;&gt; +            // const *default* = expr;
&gt; 
&gt; *default* is not visible to the actual JS code, right?
&gt; I think we should make that explicit in this comment.

Yes. I&apos;ll add the comment.

&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:2484
&gt;&gt; +                internalFailWithMessage(false, &quot;Cannot export &apos;default&apos; name twice: &apos;&quot;);
&gt; 
&gt; nit: should be: &quot;Only one &apos;default&apos; export is allowed&quot;

Looks nice to me. I&apos;ll fix it.

&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:2494
&gt;&gt; +        semanticFailIfFalse(exportName(m_vm-&gt;propertyNames-&gt;defaultKeyword), &quot;Cannot export &apos;default&apos; name twice.&quot;);
&gt; 
&gt; ditto.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117289</commentid>
    <comment_count>17</comment_count>
      <attachid>258697</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-13 11:18:44 -0700</bug_when>
    <thetext>Comment on attachment 258697
Patch

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

&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:238
&gt;&gt; +String Parser&lt;LexerType&gt;::parseInner(const Identifier&amp; calleeName, FunctionParseMode parseMode, ModuleParseMode moduleParseMode)
&gt; 
&gt; Can we just join FunctionParseMode and ModuleParseMode into one thing and give it a different name? Maybe SourceParseMode or another name?
&gt; Or even better, we can also unify this with JSParserCodeType. Or get rid of JSParserCodeType if needed.
&gt; Maybe we should open a separate bug to unify all of these into one type in another patch.

I&apos;ll try it. Maybe, we can.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117333</commentid>
    <comment_count>18</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-13 12:59:39 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117334</commentid>
    <comment_count>19</comment_count>
      <attachid>258918</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-13 12:59:40 -0700</bug_when>
    <thetext>Created attachment 258918
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117335</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-13 13:00:53 -0700</bug_when>
    <thetext>Attachment 258918 did not pass style-queue:


ERROR: Source/JavaScriptCore/ChangeLog:11:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/JavaScriptCore/ChangeLog:12:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/JavaScriptCore/ChangeLog:13:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
ERROR: Source/JavaScriptCore/ChangeLog:14:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 4 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117336</commentid>
    <comment_count>21</comment_count>
      <attachid>258918</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-13 13:03:28 -0700</bug_when>
    <thetext>Comment on attachment 258918
Patch

The follow-up patch comes here now!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117368</commentid>
    <comment_count>22</comment_count>
      <attachid>258928</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-13 13:53:48 -0700</bug_when>
    <thetext>Created attachment 258928
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117369</commentid>
    <comment_count>23</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-13 13:54:01 -0700</bug_when>
    <thetext>Just tweak the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117464</commentid>
    <comment_count>24</comment_count>
      <attachid>258928</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-08-13 16:40:42 -0700</bug_when>
    <thetext>Comment on attachment 258928
Patch

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

r=me

&gt; Source/JavaScriptCore/parser/ParserModes.h:58
&gt; +inline bool isFunctionParseMode(SourceParseMode parseMode)

nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117470</commentid>
    <comment_count>25</comment_count>
      <attachid>258928</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-13 16:53:00 -0700</bug_when>
    <thetext>Comment on attachment 258928
Patch

Thank you for your review :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117471</commentid>
    <comment_count>26</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-13 16:55:57 -0700</bug_when>
    <thetext>Committed r188417: &lt;http://trac.webkit.org/changeset/188417&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257764</attachid>
            <date>2015-07-29 13:08:04 -0700</date>
            <delta_ts>2015-08-10 18:06:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147353-20150729130641.patch</filename>
            <type>text/plain</type>
            <size>43136</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3NTMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
NWE3MTY0ZjVhY2ZlY2ZiMzk5ZmMxYWRjOTlmODUyMzRiMzVmZDZkLi43ZGQzZjAyYmQ1MTVmYTU4
NjIxZDNmYzI3MGEzMmUyNWQyZjdjZWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MSBAQAorMjAxNS0wNy0yOSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBBZGQgRVM2IE1vZHVsZXMgcHJlcGFyc2luZyBwaGFzZSB0
byBjb2xsZWN0IHRoZSBkZXBlbmRlbmNpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0NzM1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAg
ICAgIChKU0M6OkltcG9ydERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAg
KEpTQzo6RXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpFeHBvcnRMb2NhbERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAg
ICAgKEpTQzo6RXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3Jl
YXRlTW9kdWxlU3BlY2lmaWVyKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlSW1w
b3J0U3BlY2lmaWVyKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlSW1wb3J0U3Bl
Y2lmaWVyTGlzdCk6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUltcG9ydERlY2xh
cmF0aW9uKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRXhwb3J0QWxsRGVjbGFy
YXRpb24pOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVFeHBvcnREZWZhdWx0RGVj
bGFyYXRpb24pOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVFeHBvcnRMb2NhbERl
Y2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRXhwb3J0TmFtZWRE
ZWNsYXJhdGlvbik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUV4cG9ydFNwZWNp
Zmllcik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUV4cG9ydFNwZWNpZmllckxp
c3QpOgorICAgICAgICAqIHBhcnNlci9LZXl3b3Jkcy50YWJsZToKKyAgICAgICAgKiBwYXJzZXIv
Tm9kZUNvbnN0cnVjdG9ycy5oOgorICAgICAgICAoSlNDOjpNb2R1bGVTcGVjaWZpZXJOb2RlOjpN
b2R1bGVTcGVjaWZpZXJOb2RlKToKKyAgICAgICAgKEpTQzo6SW1wb3J0U3BlY2lmaWVyTm9kZTo6
SW1wb3J0U3BlY2lmaWVyTm9kZSk6CisgICAgICAgIChKU0M6OkltcG9ydFNwZWNpZmllckxpc3RO
b2RlOjpJbXBvcnRTcGVjaWZpZXJMaXN0Tm9kZSk6CisgICAgICAgIChKU0M6OkltcG9ydERlY2xh
cmF0aW9uTm9kZTo6SW1wb3J0RGVjbGFyYXRpb25Ob2RlKToKKyAgICAgICAgKEpTQzo6RXhwb3J0
QWxsRGVjbGFyYXRpb25Ob2RlOjpFeHBvcnRBbGxEZWNsYXJhdGlvbk5vZGUpOgorICAgICAgICAo
SlNDOjpFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25Ob2RlOjpFeHBvcnREZWZhdWx0RGVjbGFyYXRp
b25Ob2RlKToKKyAgICAgICAgKEpTQzo6RXhwb3J0TG9jYWxEZWNsYXJhdGlvbk5vZGU6OkV4cG9y
dExvY2FsRGVjbGFyYXRpb25Ob2RlKToKKyAgICAgICAgKEpTQzo6RXhwb3J0TmFtZWREZWNsYXJh
dGlvbk5vZGU6OkV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlKToKKyAgICAgICAgKEpTQzo6RXhw
b3J0U3BlY2lmaWVyTm9kZTo6RXhwb3J0U3BlY2lmaWVyTm9kZSk6CisgICAgICAgIChKU0M6OkV4
cG9ydFNwZWNpZmllckxpc3ROb2RlOjpFeHBvcnRTcGVjaWZpZXJMaXN0Tm9kZSk6CisgICAgICAg
ICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6Ok1vZHVsZU5vZGU6OnN0YXJ0Q29sdW1u
KToKKyAgICAgICAgKEpTQzo6TW9kdWxlTm9kZTo6ZW5kQ29sdW1uKToKKyAgICAgICAgKEpTQzo6
TW9kdWxlU3BlY2lmaWVyTm9kZTo6bW9kdWxlTmFtZSk6CisgICAgICAgIChKU0M6OkltcG9ydFNw
ZWNpZmllck5vZGU6OmltcG9ydGVkTmFtZSk6CisgICAgICAgIChKU0M6OkltcG9ydFNwZWNpZmll
ck5vZGU6OmxvY2FsTmFtZSk6CisgICAgICAgIChKU0M6OkltcG9ydFNwZWNpZmllckxpc3ROb2Rl
Ojp2YWx1ZSk6CisgICAgICAgIChKU0M6OkltcG9ydFNwZWNpZmllckxpc3ROb2RlOjpuZXh0KToK
KyAgICAgICAgKEpTQzo6SW1wb3J0RGVjbGFyYXRpb25Ob2RlOjpzcGVjaWZpZXJMaXN0KToKKyAg
ICAgICAgKEpTQzo6SW1wb3J0RGVjbGFyYXRpb25Ob2RlOjptb2R1bGVTcGVjaWZpZXIpOgorICAg
ICAgICAoSlNDOjpFeHBvcnRBbGxEZWNsYXJhdGlvbk5vZGU6Om1vZHVsZVNwZWNpZmllcik6Cisg
ICAgICAgIChKU0M6OkV4cG9ydERlZmF1bHREZWNsYXJhdGlvbk5vZGU6OmRlY2xhcmF0aW9uKToK
KyAgICAgICAgKEpTQzo6RXhwb3J0TG9jYWxEZWNsYXJhdGlvbk5vZGU6OmRlY2xhcmF0aW9uKToK
KyAgICAgICAgKEpTQzo6RXhwb3J0U3BlY2lmaWVyTm9kZTo6ZXhwb3J0ZWROYW1lKToKKyAgICAg
ICAgKEpTQzo6RXhwb3J0U3BlY2lmaWVyTm9kZTo6bG9jYWxOYW1lKToKKyAgICAgICAgKEpTQzo6
RXhwb3J0U3BlY2lmaWVyTGlzdE5vZGU6OnZhbHVlKToKKyAgICAgICAgKEpTQzo6RXhwb3J0U3Bl
Y2lmaWVyTGlzdE5vZGU6Om5leHQpOgorICAgICAgICAoSlNDOjpFeHBvcnROYW1lZERlY2xhcmF0
aW9uTm9kZTo6c3BlY2lmaWVyTGlzdCk6CisgICAgICAgIChKU0M6OkV4cG9ydE5hbWVkRGVjbGFy
YXRpb25Ob2RlOjptb2R1bGVTcGVjaWZpZXIpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3Bw
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpT
Qzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VNb2R1bGVTb3VyY2VFbGVtZW50cyk6CisgICAgICAgIChKU0M6OlBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZU1vZHVsZVNwZWNpZmllcik6CisgICAgICAgIChKU0M6OlBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUltcG9ydE5hbWVkU3BlY2lmaWVyKToKKyAgICAgICAgKEpT
Qzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW1wb3J0TmFtZXNwYWNlU3BlY2lmaWVyKToKKyAg
ICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW1wb3J0RGVjbGFyYXRpb24pOgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnRTcGVjaWZpZXIpOgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnREZWNsYXJhdGlvbik6
CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpQYXJzZXI6Om1hdGNo
Q29udGV4dHVhbEtleXdvcmQpOgorICAgICAgICAoSlNDOjpQYXJzZXI6Omlzb2ZUb2tlbik6IERl
bGV0ZWQuCisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgICogcGFyc2Vy
L1BhcnNlclRva2Vucy5oOgorICAgICAgICAqIHBhcnNlci9TeW50YXhDaGVja2VyLmg6CisgICAg
ICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZU1vZHVsZVNwZWNpZmllcik6CisgICAgICAg
IChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUltcG9ydFNwZWNpZmllcik6CisgICAgICAgIChK
U0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUltcG9ydFNwZWNpZmllckxpc3QpOgorICAgICAgICAo
SlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVJbXBvcnREZWNsYXJhdGlvbik6CisgICAgICAgIChK
U0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUV4cG9ydEFsbERlY2xhcmF0aW9uKToKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uKToKKyAg
ICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRXhwb3J0TG9jYWxEZWNsYXJhdGlvbik6
CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUV4cG9ydE5hbWVkRGVjbGFyYXRp
b24pOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVFeHBvcnRTcGVjaWZpZXIp
OgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVFeHBvcnRTcGVjaWZpZXJMaXN0
KToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcDoKKyAgICAgICAgKEpT
Qzo6Q29tbW9uSWRlbnRpZmllcnM6OkNvbW1vbklkZW50aWZpZXJzKToKKyAgICAgICAgKiBydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9Db21wbGV0aW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6Y2hlY2tTeW50YXhGb3JNb2R1bGUpOgorICAgICAgICAqIHJ1bnRp
bWUvQ29tcGxldGlvbi5oOgorCiAyMDE1LTA3LTI4ICBTdWtvbHNhayBTYWtzaHV3b25nICA8c3Vr
b2xzYWtAZ21haWwuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBXZWJBc3NlbWJseSBtb2R1bGUg
cGFyc2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAKaW5kZXggOWQ1MWZlOTkxYTJjZDZmOWRjNWFmM2RiNWNjYWVjZGRiMmFmODdi
Ny4uMGYwZTU1NzA1NjA5MjIzMjExOTNjZGRlMjMxZDM0NWE5Yjk1ZjQzZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAt
MzAzOCw3ICszMDM4LDMxIEBAIFJlZ2lzdGVySUQqIENsYXNzRXhwck5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklECiAgICAgcmV0dXJuIGdl
bmVyYXRvci5tb3ZlVG9EZXN0aW5hdGlvbklmTmVlZGVkKGRzdCwgY29uc3RydWN0b3IuZ2V0KCkp
OwogfQogI2VuZGlmCi0gICAgCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBJ
bXBvcnRFbXB0eURlY2xhcmF0aW9uTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorCit2b2lkIEltcG9ydERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCopCit7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSBFeHBvcnRBbGxEZWNsYXJhdGlvbk5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKwordm9pZCBFeHBvcnRBbGxEZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKQoreworfQorCit2b2lkIEV4cG9y
dERlZmF1bHREZWNsYXJhdGlvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqKQoreworfQorCit2b2lkIEV4cG9ydExvY2FsRGVjbGFyYXRpb25Ob2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKikKK3sKK30KKwordm9p
ZCBFeHBvcnROYW1lZERlY2xhcmF0aW9uTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCopCit7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBEZXN0cnVjdHVyaW5nQXNzaWdubWVudE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0KIFJlZ2lz
dGVySUQqIERlc3RydWN0dXJpbmdBc3NpZ25tZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggMzYyMTZkNDU0MzQwNWZkNDM1YzU3ZWNk
ODY2ZGY3MmM4MjgwMjBmMC4uYWVmYzM5ZDQxZWM4MGRhYzBlNDIyNTJlNmJiNGEwZWE2ZjY1Nzcy
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTExMyw2
ICsxMTMsMTEgQEAgY2xhc3MgQVNUQnVpbGRlciB7CiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5U
QVgpCiAgICAgdHlwZWRlZiBDbGFzc0V4cHJOb2RlKiBDbGFzc0V4cHJlc3Npb247CiAjZW5kaWYK
KyAgICB0eXBlZGVmIE1vZHVsZVNwZWNpZmllck5vZGUqIE1vZHVsZVNwZWNpZmllcjsKKyAgICB0
eXBlZGVmIEltcG9ydFNwZWNpZmllck5vZGUqIEltcG9ydFNwZWNpZmllcjsKKyAgICB0eXBlZGVm
IEltcG9ydFNwZWNpZmllckxpc3ROb2RlKiBJbXBvcnRTcGVjaWZpZXJMaXN0OworICAgIHR5cGVk
ZWYgRXhwb3J0U3BlY2lmaWVyTm9kZSogRXhwb3J0U3BlY2lmaWVyOworICAgIHR5cGVkZWYgRXhw
b3J0U3BlY2lmaWVyTGlzdE5vZGUqIEV4cG9ydFNwZWNpZmllckxpc3Q7CiAgICAgdHlwZWRlZiBT
dGF0ZW1lbnROb2RlKiBTdGF0ZW1lbnQ7CiAgICAgdHlwZWRlZiBDbGF1c2VMaXN0Tm9kZSogQ2xh
dXNlTGlzdDsKICAgICB0eXBlZGVmIENhc2VDbGF1c2VOb2RlKiBDbGF1c2U7CkBAIC02MTUsNyAr
NjIwLDY5IEBAIGNsYXNzIEFTVEJ1aWxkZXIgewogICAgICAgICByZXN1bHQtPnNldExvYyhzdGFy
dExpbmUsIGVuZExpbmUsIGxvY2F0aW9uLnN0YXJ0T2Zmc2V0LCBsb2NhdGlvbi5saW5lU3RhcnRP
ZmZzZXQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLSAgICAKKworICAgIE1vZHVs
ZVNwZWNpZmllck5vZGUqIGNyZWF0ZU1vZHVsZVNwZWNpZmllcihjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgTW9kdWxlU3BlY2lmaWVyTm9kZShsb2NhdGlv
biwgbW9kdWxlTmFtZSk7CisgICAgfQorCisgICAgSW1wb3J0U3BlY2lmaWVyTm9kZSogY3JlYXRl
SW1wb3J0U3BlY2lmaWVyKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElk
ZW50aWZpZXImIGltcG9ydGVkTmFtZSwgY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgSW1wb3J0U3BlY2lmaWVyTm9k
ZShsb2NhdGlvbiwgaW1wb3J0ZWROYW1lLCBsb2NhbE5hbWUpOworICAgIH0KKworICAgIEltcG9y
dFNwZWNpZmllckxpc3ROb2RlKiBjcmVhdGVJbXBvcnRTcGVjaWZpZXJMaXN0KEltcG9ydFNwZWNp
Zmllck5vZGUqIGltcG9ydFNwZWNpZmllcikKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgKG1f
cGFyc2VyQXJlbmEpIEltcG9ydFNwZWNpZmllckxpc3ROb2RlKGltcG9ydFNwZWNpZmllcik7Cisg
ICAgfQorCisgICAgSW1wb3J0U3BlY2lmaWVyTGlzdE5vZGUqIGNyZWF0ZUltcG9ydFNwZWNpZmll
ckxpc3QoSW1wb3J0U3BlY2lmaWVyTGlzdE5vZGUqIGltcG9ydFNwZWNpZmllckxpc3QsIEltcG9y
dFNwZWNpZmllck5vZGUqIGltcG9ydFNwZWNpZmllcikKKyAgICB7CisgICAgICAgIGlmICghaW1w
b3J0U3BlY2lmaWVyTGlzdCkKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVJbXBvcnRTcGVjaWZp
ZXJMaXN0KGltcG9ydFNwZWNpZmllcik7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJl
bmEpIEltcG9ydFNwZWNpZmllckxpc3ROb2RlKGltcG9ydFNwZWNpZmllckxpc3QsIGltcG9ydFNw
ZWNpZmllcik7CisgICAgfQorCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlSW1wb3J0RGVjbGFy
YXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgSW1wb3J0U3BlY2lmaWVyTGlz
dE5vZGUqIGltcG9ydFNwZWNpZmllckxpc3QsIE1vZHVsZVNwZWNpZmllck5vZGUqIG1vZHVsZVNw
ZWNpZmllcikKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEltcG9y
dERlY2xhcmF0aW9uTm9kZShsb2NhdGlvbiwgaW1wb3J0U3BlY2lmaWVyTGlzdCwgbW9kdWxlU3Bl
Y2lmaWVyKTsKKyAgICB9CisKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVFeHBvcnRBbGxEZWNs
YXJhdGlvbihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBNb2R1bGVTcGVjaWZpZXJO
b2RlKiBtb2R1bGVTcGVjaWZpZXIpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNl
ckFyZW5hKSBFeHBvcnRBbGxEZWNsYXJhdGlvbk5vZGUobG9jYXRpb24sIG1vZHVsZVNwZWNpZmll
cik7CisgICAgfQorCisgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRXhwb3J0RGVmYXVsdERlY2xh
cmF0aW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFN0YXRlbWVudE5vZGUqIGRl
Y2xhcmF0aW9uKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgRXhw
b3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZShsb2NhdGlvbiwgZGVjbGFyYXRpb24pOworICAgIH0K
KworICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUV4cG9ydExvY2FsRGVjbGFyYXRpb24oY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgU3RhdGVtZW50Tm9kZSogZGVjbGFyYXRpb24pCisg
ICAgeworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBFeHBvcnRMb2NhbERlY2xh
cmF0aW9uTm9kZShsb2NhdGlvbiwgZGVjbGFyYXRpb24pOworICAgIH0KKworICAgIFN0YXRlbWVu
dE5vZGUqIGNyZWF0ZUV4cG9ydE5hbWVkRGVjbGFyYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgRXhwb3J0U3BlY2lmaWVyTGlzdE5vZGUqIGV4cG9ydFNwZWNpZmllckxpc3Qs
IE1vZHVsZVNwZWNpZmllck5vZGUqIG1vZHVsZVNwZWNpZmllcikKKyAgICB7CisgICAgICAgIHJl
dHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlKGxvY2F0
aW9uLCBleHBvcnRTcGVjaWZpZXJMaXN0LCBtb2R1bGVTcGVjaWZpZXIpOworICAgIH0KKworICAg
IEV4cG9ydFNwZWNpZmllck5vZGUqIGNyZWF0ZUV4cG9ydFNwZWNpZmllcihjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUsIGNvbnN0IElk
ZW50aWZpZXImIGV4cG9ydGVkTmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFy
c2VyQXJlbmEpIEV4cG9ydFNwZWNpZmllck5vZGUobG9jYXRpb24sIGxvY2FsTmFtZSwgZXhwb3J0
ZWROYW1lKTsKKyAgICB9CisKKyAgICBFeHBvcnRTcGVjaWZpZXJMaXN0Tm9kZSogY3JlYXRlRXhw
b3J0U3BlY2lmaWVyTGlzdChFeHBvcnRTcGVjaWZpZXJOb2RlKiBleHBvcnRTcGVjaWZpZXIpCisg
ICAgeworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBFeHBvcnRTcGVjaWZpZXJM
aXN0Tm9kZShleHBvcnRTcGVjaWZpZXIpOworICAgIH0KKworICAgIEV4cG9ydFNwZWNpZmllckxp
c3ROb2RlKiBjcmVhdGVFeHBvcnRTcGVjaWZpZXJMaXN0KEV4cG9ydFNwZWNpZmllckxpc3ROb2Rl
KiBleHBvcnRTcGVjaWZpZXJMaXN0LCBFeHBvcnRTcGVjaWZpZXJOb2RlKiBleHBvcnRTcGVjaWZp
ZXIpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBFeHBvcnRTcGVj
aWZpZXJMaXN0Tm9kZShleHBvcnRTcGVjaWZpZXJMaXN0LCBleHBvcnRTcGVjaWZpZXIpOworICAg
IH0KKwogICAgIHZvaWQgYXBwZW5kU3RhdGVtZW50KEpTQzo6U291cmNlRWxlbWVudHMqIGVsZW1l
bnRzLCBKU0M6OlN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCkKICAgICB7CiAgICAgICAgIGVsZW1l
bnRzLT5hcHBlbmQoc3RhdGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvS2V5d29yZHMudGFibGUgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0tl
eXdvcmRzLnRhYmxlCmluZGV4IDI5Y2ZkMTQzM2ZlYjYwMmUyNWVjNTllZmVmYmRlMTRkYmM0NDll
MzcuLmUyYmE1MjhhNDllNjkzOWEwYzBlOTJhNjI4MGVjODQ1MzBkMjRmYjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvS2V5d29yZHMudGFibGUKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9LZXl3b3Jkcy50YWJsZQpAQCAtNDEsOCArNDEsOCBAQCBk
ZWJ1Z2dlcglERUJVR0dFUgogCiAjIFJlc2VydmVkIGZvciBmdXR1cmUgdXNlLgogZW51bSAgICAg
ICAgICAgIFJFU0VSVkVECi1leHBvcnQgICAgICAgICAgUkVTRVJWRUQKLWltcG9ydCAgICAgICAg
ICBSRVNFUlZFRAorZXhwb3J0ICAgICAgICAgIEVYUE9SVAoraW1wb3J0ICAgICAgICAgIElNUE9S
VAogCiAjIFJlc2VydmVkIGZvciBmdXR1cmUgdXNlIGluIHN0cmljdCBjb2RlLgogaW1wbGVtZW50
cyAgICAgIFJFU0VSVkVEX0lGX1NUUklDVApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVDb25zdHJ1Y3RvcnMuaAppbmRleCBkZDIwYjhmOWQ5YTBiZTkyOGZjZTgwMzk0N2My
NTllZDk3NGY1MTMzLi5mYThmNDk3ZTQ5YWY3ZTFiY2JhZDdhNjMzOWMxODlmYzg4YmM1MWIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaApA
QCAtNzMzLDYgKzczMyw4MCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCisgICAg
aW5saW5lIE1vZHVsZVNwZWNpZmllck5vZGU6Ok1vZHVsZVNwZWNpZmllck5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkKKyAg
ICAgICAgOiBOb2RlKGxvY2F0aW9uKQorICAgICAgICAsIG1fbW9kdWxlTmFtZShtb2R1bGVOYW1l
KQorICAgIHsKKyAgICB9CisKKyAgICBpbmxpbmUgSW1wb3J0U3BlY2lmaWVyTm9kZTo6SW1wb3J0
U3BlY2lmaWVyTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVu
dGlmaWVyJiBpbXBvcnRlZE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSkKKyAgICAg
ICAgOiBOb2RlKGxvY2F0aW9uKQorICAgICAgICAsIG1faW1wb3J0ZWROYW1lKGltcG9ydGVkTmFt
ZSkKKyAgICAgICAgLCBtX2xvY2FsTmFtZShsb2NhbE5hbWUpCisgICAgeworICAgIH0KKworICAg
IGlubGluZSBJbXBvcnRTcGVjaWZpZXJMaXN0Tm9kZTo6SW1wb3J0U3BlY2lmaWVyTGlzdE5vZGUo
SW1wb3J0U3BlY2lmaWVyTm9kZSogbm9kZSkKKyAgICAgICAgOiBtX25vZGUobm9kZSkKKyAgICB7
CisgICAgfQorCisgICAgaW5saW5lIEltcG9ydFNwZWNpZmllckxpc3ROb2RlOjpJbXBvcnRTcGVj
aWZpZXJMaXN0Tm9kZShJbXBvcnRTcGVjaWZpZXJMaXN0Tm9kZSogcHJldmlvdXMsIEltcG9ydFNw
ZWNpZmllck5vZGUqIG5vZGUpCisgICAgICAgIDogbV9ub2RlKG5vZGUpCisgICAgeworICAgICAg
ICBwcmV2aW91cy0+bV9uZXh0ID0gdGhpczsKKyAgICB9CisKKyAgICBpbmxpbmUgSW1wb3J0RGVj
bGFyYXRpb25Ob2RlOjpJbXBvcnREZWNsYXJhdGlvbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbiwgSW1wb3J0U3BlY2lmaWVyTGlzdE5vZGUqIGltcG9ydFNwZWNpZmllckxpc3Qs
IE1vZHVsZVNwZWNpZmllck5vZGUqIG1vZHVsZVNwZWNpZmllcikKKyAgICAgICAgOiBTdGF0ZW1l
bnROb2RlKGxvY2F0aW9uKQorICAgICAgICAsIG1fc3BlY2lmaWVyTGlzdChpbXBvcnRTcGVjaWZp
ZXJMaXN0KQorICAgICAgICAsIG1fbW9kdWxlU3BlY2lmaWVyKG1vZHVsZVNwZWNpZmllcikKKyAg
ICB7CisgICAgfQorCisgICAgaW5saW5lIEV4cG9ydEFsbERlY2xhcmF0aW9uTm9kZTo6RXhwb3J0
QWxsRGVjbGFyYXRpb25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIE1vZHVs
ZVNwZWNpZmllck5vZGUqIG1vZHVsZVNwZWNpZmllcikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2Rl
KGxvY2F0aW9uKQorICAgICAgICAsIG1fbW9kdWxlU3BlY2lmaWVyKG1vZHVsZVNwZWNpZmllcikK
KyAgICB7CisgICAgfQorCisgICAgaW5saW5lIEV4cG9ydERlZmF1bHREZWNsYXJhdGlvbk5vZGU6
OkV4cG9ydERlZmF1bHREZWNsYXJhdGlvbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgU3RhdGVtZW50Tm9kZSogZGVjbGFyYXRpb24pCisgICAgICAgIDogU3RhdGVtZW50Tm9k
ZShsb2NhdGlvbikKKyAgICAgICAgLCBtX2RlY2xhcmF0aW9uKGRlY2xhcmF0aW9uKQorICAgIHsK
KyAgICB9CisKKyAgICBpbmxpbmUgRXhwb3J0TG9jYWxEZWNsYXJhdGlvbk5vZGU6OkV4cG9ydExv
Y2FsRGVjbGFyYXRpb25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFN0YXRl
bWVudE5vZGUqIGRlY2xhcmF0aW9uKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24p
CisgICAgICAgICwgbV9kZWNsYXJhdGlvbihkZWNsYXJhdGlvbikKKyAgICB7CisgICAgfQorCisg
ICAgaW5saW5lIEV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlOjpFeHBvcnROYW1lZERlY2xhcmF0
aW9uTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHBvcnRTcGVjaWZpZXJM
aXN0Tm9kZSogZXhwb3J0U3BlY2lmaWVyTGlzdCwgTW9kdWxlU3BlY2lmaWVyTm9kZSogbW9kdWxl
U3BlY2lmaWVyKQorICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCisgICAgICAgICwg
bV9zcGVjaWZpZXJMaXN0KGV4cG9ydFNwZWNpZmllckxpc3QpCisgICAgICAgICwgbV9tb2R1bGVT
cGVjaWZpZXIobW9kdWxlU3BlY2lmaWVyKQorICAgIHsKKyAgICB9CisKKyAgICBpbmxpbmUgRXhw
b3J0U3BlY2lmaWVyTm9kZTo6RXhwb3J0U3BlY2lmaWVyTm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUsIGNvbnN0IElkZW50aWZp
ZXImIGV4cG9ydGVkTmFtZSkKKyAgICAgICAgOiBOb2RlKGxvY2F0aW9uKQorICAgICAgICAsIG1f
bG9jYWxOYW1lKGxvY2FsTmFtZSkKKyAgICAgICAgLCBtX2V4cG9ydGVkTmFtZShleHBvcnRlZE5h
bWUpCisgICAgeworICAgIH0KKworICAgIGlubGluZSBFeHBvcnRTcGVjaWZpZXJMaXN0Tm9kZTo6
RXhwb3J0U3BlY2lmaWVyTGlzdE5vZGUoRXhwb3J0U3BlY2lmaWVyTm9kZSogbm9kZSkKKyAgICAg
ICAgOiBtX25vZGUobm9kZSkKKyAgICB7CisgICAgfQorCisgICAgaW5saW5lIEV4cG9ydFNwZWNp
Zmllckxpc3ROb2RlOjpFeHBvcnRTcGVjaWZpZXJMaXN0Tm9kZShFeHBvcnRTcGVjaWZpZXJMaXN0
Tm9kZSogcHJldmlvdXMsIEV4cG9ydFNwZWNpZmllck5vZGUqIG5vZGUpCisgICAgICAgIDogbV9u
b2RlKG5vZGUpCisgICAgeworICAgICAgICBwcmV2aW91cy0+bV9uZXh0ID0gdGhpczsKKyAgICB9
CisKICAgICBpbmxpbmUgRW1wdHlWYXJFeHByZXNzaW9uOjpFbXB0eVZhckV4cHJlc3Npb24oY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiAg
ICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9pZGVudChpZGVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCAwMDBkODYwNTdiMDIyZmVk
ODk4OWE3NzVhNGMyYjFmOThhZmIzMjIyLi5kNzU4MTFiZjBkYWUwOTk5Njk4ODYxZDc2ZjYyMjY2
MzdmMTcxY2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC0xNjIyLDYg
KzE2MjIsMTQxIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX2VuZENvbHVt
bjsKICAgICB9OwogCisgICAgY2xhc3MgTW9kdWxlTm9kZSA6IHB1YmxpYyBTY29wZU5vZGUgewor
ICAgIHB1YmxpYzoKKyAgICAgICAgTW9kdWxlTm9kZShQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCB1bnNpZ25lZCBz
dGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uLCBTb3VyY2VFbGVtZW50cyosIFZhcmlhYmxl
RW52aXJvbm1lbnQmLCBGdW5jdGlvblN0YWNrJiwgVmFyaWFibGVFbnZpcm9ubWVudCYsIEZ1bmN0
aW9uUGFyYW1ldGVycyosIGNvbnN0IFNvdXJjZUNvZGUmLCBDb2RlRmVhdHVyZXMsIGludCBudW1D
b25zdGFudHMpOworCisgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uKCkgY29uc3QgeyByZXR1
cm4gbV9zdGFydENvbHVtbjsgfQorICAgICAgICB1bnNpZ25lZCBlbmRDb2x1bW4oKSBjb25zdCB7
IHJldHVybiBtX2VuZENvbHVtbjsgfQorCisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNjb3Bl
SXNGdW5jdGlvbiA9IGZhbHNlOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgdmlydHVhbCB2b2lk
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJp
ZGU7CisgICAgICAgIHVuc2lnbmVkIG1fc3RhcnRDb2x1bW47CisgICAgICAgIHVuc2lnbmVkIG1f
ZW5kQ29sdW1uOworICAgIH07CisKKyAgICBjbGFzcyBNb2R1bGVTcGVjaWZpZXJOb2RlIDogcHVi
bGljIE5vZGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgTW9kdWxlU3BlY2lmaWVyTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKTsKKworICAg
ICAgICBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKCkgeyByZXR1cm4gbV9tb2R1bGVOYW1l
OyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX21vZHVsZU5h
bWU7CisgICAgfTsKKworICAgIGNsYXNzIEltcG9ydFNwZWNpZmllck5vZGUgOiBwdWJsaWMgTm9k
ZSB7CisgICAgcHVibGljOgorICAgICAgICBJbXBvcnRTcGVjaWZpZXJOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImIGltcG9ydGVkTmFtZSwgY29uc3QgSWRlbnRp
ZmllciYgbG9jYWxOYW1lKTsKKworICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpbXBvcnRlZE5h
bWUoKSB7IHJldHVybiBtX2ltcG9ydGVkTmFtZTsgfQorICAgICAgICBjb25zdCBJZGVudGlmaWVy
JiBsb2NhbE5hbWUoKSB7IHJldHVybiBtX2xvY2FsTmFtZTsgfQorCisgICAgcHJpdmF0ZToKKyAg
ICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pbXBvcnRlZE5hbWU7CisgICAgICAgIGNvbnN0IElk
ZW50aWZpZXImIG1fbG9jYWxOYW1lOworICAgIH07CisKKyAgICBjbGFzcyBJbXBvcnRTcGVjaWZp
ZXJMaXN0Tm9kZSA6IHB1YmxpYyBQYXJzZXJBcmVuYUZyZWVhYmxlIHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIEltcG9ydFNwZWNpZmllckxpc3ROb2RlKEltcG9ydFNwZWNpZmllck5vZGUqKTsKKyAg
ICAgICAgSW1wb3J0U3BlY2lmaWVyTGlzdE5vZGUoSW1wb3J0U3BlY2lmaWVyTGlzdE5vZGUqLCBJ
bXBvcnRTcGVjaWZpZXJOb2RlKik7CisKKyAgICAgICAgSW1wb3J0U3BlY2lmaWVyTm9kZSogdmFs
dWUoKSB7IHJldHVybiBtX25vZGU7IH0KKyAgICAgICAgSW1wb3J0U3BlY2lmaWVyTGlzdE5vZGUq
IG5leHQoKSB7IHJldHVybiBtX25leHQ7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIEltcG9y
dFNwZWNpZmllckxpc3ROb2RlKiBtX25leHQgeyBudWxscHRyIH07CisgICAgICAgIEltcG9ydFNw
ZWNpZmllck5vZGUqIG1fbm9kZSB7IG51bGxwdHIgfTsKKyAgICB9OworCisgICAgY2xhc3MgSW1w
b3J0RGVjbGFyYXRpb25Ob2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgeworICAgIHB1YmxpYzoK
KyAgICAgICAgSW1wb3J0RGVjbGFyYXRpb25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIElt
cG9ydFNwZWNpZmllckxpc3ROb2RlKiwgTW9kdWxlU3BlY2lmaWVyTm9kZSopOworCisgICAgICAg
IEltcG9ydFNwZWNpZmllckxpc3ROb2RlKiBzcGVjaWZpZXJMaXN0KCkgY29uc3QgeyByZXR1cm4g
bV9zcGVjaWZpZXJMaXN0OyB9CisgICAgICAgIE1vZHVsZVNwZWNpZmllck5vZGUqIG1vZHVsZVNw
ZWNpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlU3BlY2lmaWVyOyB9CisKKyAgICBwcml2
YXRlOgorICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKworICAgICAgICBJbXBvcnRTcGVjaWZpZXJM
aXN0Tm9kZSogbV9zcGVjaWZpZXJMaXN0IHsgbnVsbHB0ciB9OworICAgICAgICBNb2R1bGVTcGVj
aWZpZXJOb2RlKiBtX21vZHVsZVNwZWNpZmllcjsKKyAgICB9OworCisgICAgY2xhc3MgRXhwb3J0
QWxsRGVjbGFyYXRpb25Ob2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgeworICAgIHB1YmxpYzoK
KyAgICAgICAgRXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IE1vZHVsZVNwZWNpZmllck5vZGUqKTsKKworICAgICAgICBNb2R1bGVTcGVjaWZpZXJOb2RlKiBt
b2R1bGVTcGVjaWZpZXIoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZVNwZWNpZmllcjsgfQorCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIE1vZHVsZVNwZWNp
Zmllck5vZGUqIG1fbW9kdWxlU3BlY2lmaWVyOworICAgIH07CisKKyAgICBjbGFzcyBFeHBvcnRE
ZWZhdWx0RGVjbGFyYXRpb25Ob2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBTdGF0ZW1lbnROb2RlKik7CisKKyAgICAgICAgY29uc3QgU3RhdGVtZW50Tm9kZSYg
ZGVjbGFyYXRpb24oKSBjb25zdCB7IHJldHVybiAqbV9kZWNsYXJhdGlvbjsgfQorCisgICAgcHJp
dmF0ZToKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIFN0YXRlbWVudE5vZGUqIG1f
ZGVjbGFyYXRpb247CisgICAgfTsKKworICAgIGNsYXNzIEV4cG9ydExvY2FsRGVjbGFyYXRpb25O
b2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgRXhwb3J0
TG9jYWxEZWNsYXJhdGlvbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgU3RhdGVtZW50Tm9k
ZSopOworCisgICAgICAgIGNvbnN0IFN0YXRlbWVudE5vZGUmIGRlY2xhcmF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gKm1fZGVjbGFyYXRpb247IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIHZpcnR1
YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
IG92ZXJyaWRlOworICAgICAgICBTdGF0ZW1lbnROb2RlKiBtX2RlY2xhcmF0aW9uOworICAgIH07
CisKKyAgICBjbGFzcyBFeHBvcnRTcGVjaWZpZXJOb2RlIDogcHVibGljIE5vZGUgeworICAgIHB1
YmxpYzoKKyAgICAgICAgRXhwb3J0U3BlY2lmaWVyTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGV4cG9ydGVk
TmFtZSk7CisKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciYgZXhwb3J0ZWROYW1lKCkgeyByZXR1
cm4gbV9leHBvcnRlZE5hbWU7IH0KKyAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1l
KCkgeyByZXR1cm4gbV9sb2NhbE5hbWU7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIGNvbnN0
IElkZW50aWZpZXImIG1fbG9jYWxOYW1lOworICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2V4
cG9ydGVkTmFtZTsKKyAgICB9OworCisgICAgY2xhc3MgRXhwb3J0U3BlY2lmaWVyTGlzdE5vZGUg
OiBwdWJsaWMgUGFyc2VyQXJlbmFGcmVlYWJsZSB7CisgICAgcHVibGljOgorICAgICAgICBFeHBv
cnRTcGVjaWZpZXJMaXN0Tm9kZShFeHBvcnRTcGVjaWZpZXJOb2RlKik7CisgICAgICAgIEV4cG9y
dFNwZWNpZmllckxpc3ROb2RlKEV4cG9ydFNwZWNpZmllckxpc3ROb2RlKiwgRXhwb3J0U3BlY2lm
aWVyTm9kZSopOworCisgICAgICAgIEV4cG9ydFNwZWNpZmllck5vZGUqIHZhbHVlKCkgeyByZXR1
cm4gbV9ub2RlOyB9CisgICAgICAgIEV4cG9ydFNwZWNpZmllckxpc3ROb2RlKiBuZXh0KCkgeyBy
ZXR1cm4gbV9uZXh0OyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBFeHBvcnRTcGVjaWZpZXJM
aXN0Tm9kZSogbV9uZXh0IHsgbnVsbHB0ciB9OworICAgICAgICBFeHBvcnRTcGVjaWZpZXJOb2Rl
KiBtX25vZGUgeyBudWxscHRyIH07CisgICAgfTsKKworICAgIGNsYXNzIEV4cG9ydE5hbWVkRGVj
bGFyYXRpb25Ob2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgRXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
b3J0U3BlY2lmaWVyTGlzdE5vZGUqLCBNb2R1bGVTcGVjaWZpZXJOb2RlKik7CisKKyAgICAgICAg
RXhwb3J0U3BlY2lmaWVyTGlzdE5vZGUqIHNwZWNpZmllckxpc3QoKSBjb25zdCB7IHJldHVybiBt
X3NwZWNpZmllckxpc3Q7IH0KKyAgICAgICAgTW9kdWxlU3BlY2lmaWVyTm9kZSogbW9kdWxlU3Bl
Y2lmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVTcGVjaWZpZXI7IH0KKworICAgIHByaXZh
dGU6CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBFeHBvcnRTcGVjaWZpZXJMaXN0
Tm9kZSogbV9zcGVjaWZpZXJMaXN0IHsgbnVsbHB0ciB9OworICAgICAgICBNb2R1bGVTcGVjaWZp
ZXJOb2RlKiBtX21vZHVsZVNwZWNpZmllciB7IG51bGxwdHIgfTsKKyAgICB9OworCiAgICAgY2xh
c3MgRnVuY3Rpb25QYXJhbWV0ZXJzIDogcHVibGljIFBhcnNlckFyZW5hRGVsZXRhYmxlIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIEZ1bmN0aW9uUGFyYW1ldGVycygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IDI4OWYzOGVlMzg2YWUxMGU1M2Y0OWU4MjM3Nzg0
ZjgxNmRjNDE5NzguLjg5NTNhNTNhMzU3ZGNiYjhmZGNjY2UxOTJjMTkyODhhNmE2MjRhZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTIwOSw2ICsyMDksNyBA
QCBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKAogICAgICwgbV9wYXJzaW5nQnVpbHRpbihidWls
dGluTW9kZSA9PSBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluKQogICAgICwgbV9kZWZhdWx0
Q29uc3RydWN0b3JLaW5kKGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQpCiAgICAgLCBtX3RoaXNURFpN
b2RlKHRoaXNURFpNb2RlKQorICAgICwgbV9jb2RlVHlwZShjb2RlVHlwZSkKIHsKICAgICBtX2xl
eGVyID0gc3RkOjptYWtlX3VuaXF1ZTxMZXhlclR5cGU+KHZtLCBidWlsdGluTW9kZSk7CiAgICAg
bV9sZXhlci0+c2V0Q29kZShzb3VyY2UsICZtX3BhcnNlckFyZW5hKTsKQEAgLTI2Nyw2ICsyNjgs
OCBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmll
ciYgY2FsbGVlTmFtZSwgRnVuY3Rpb25QYXJzZQogICAgIGlmICghaGFzRXJyb3IoKSkgewogICAg
ICAgICBpZiAoaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24pCiAgICAgICAgICAgICBzb3Vy
Y2VFbGVtZW50cyA9IHBhcnNlQXJyb3dGdW5jdGlvblNpbmdsZUV4cHJlc3Npb25Cb2R5U291cmNl
RWxlbWVudHMoY29udGV4dCk7CisgICAgICAgIGVsc2UgaWYgKG1fY29kZVR5cGUgPT0gSlNQYXJz
ZXJDb2RlVHlwZTo6TW9kdWxlKQorICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZU1v
ZHVsZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBz
b3VyY2VFbGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4dCwgQ2hlY2tGb3JTdHJp
Y3RNb2RlKTsKICAgICB9CkBAIC00MDMsNiArNDA2LDMyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVNvdXJj
ZUVsCiAgICAgcHJvcGFnYXRlRXJyb3IoKTsKICAgICByZXR1cm4gc291cmNlRWxlbWVudHM7CiB9
CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Cit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNb2R1bGVT
b3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYgY29udGV4dCkKK3sKKyAgICBUcmVlU291cmNlRWxl
bWVudHMgc291cmNlRWxlbWVudHMgPSBjb250ZXh0LmNyZWF0ZVNvdXJjZUVsZW1lbnRzKCk7Cisg
ICAgY29uc3QgSWRlbnRpZmllciogZGlyZWN0aXZlID0gMDsKKyAgICB1bnNpZ25lZCBkaXJlY3Rp
dmVMaXRlcmFsTGVuZ3RoID0gMDsKKworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIFRyZWVT
dGF0ZW1lbnQgc3RhdGVtZW50ID0gMDsKKyAgICAgICAgaWYgKG1hdGNoKElNUE9SVCkpCisgICAg
ICAgICAgICBzdGF0ZW1lbnQgPSBwYXJzZUltcG9ydERlY2xhcmF0aW9uKGNvbnRleHQpOworICAg
ICAgICBlbHNlIGlmIChtYXRjaChFWFBPUlQpKQorICAgICAgICAgICAgc3RhdGVtZW50ID0gcGFy
c2VFeHBvcnREZWNsYXJhdGlvbihjb250ZXh0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
c3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnRMaXN0SXRlbShjb250ZXh0LCBkaXJlY3RpdmUsICZk
aXJlY3RpdmVMaXRlcmFsTGVuZ3RoKTsKKyAgICAgICAgaWYgKCFzdGF0ZW1lbnQpCisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBjb250ZXh0LmFwcGVuZFN0YXRlbWVudChzb3VyY2VFbGVt
ZW50cywgc3RhdGVtZW50KTsKKyAgICB9CisKKyAgICBwcm9wYWdhdGVFcnJvcigpOworICAgIHJl
dHVybiBzb3VyY2VFbGVtZW50czsKK30KKwogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4K
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJU
eXBlPjo6cGFyc2VTdGF0ZW1lbnRMaXN0SXRlbShUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3Qg
SWRlbnRpZmllciomIGRpcmVjdGl2ZSwgdW5zaWduZWQqIGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGgp
CiB7CkBAIC0yMTQ3LDYgKzIxNzYsMjc4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJZlN0YXRlbWVudChUCiB9CiAK
IHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Cit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpNb2R1bGVTcGVjaWZpZXIgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlTW9kdWxlU3BlY2lmaWVyKFRyZWVCdWlsZGVyJiBjb250ZXh0KQoreworICAgIEpT
VG9rZW5Mb2NhdGlvbiBzcGVjaWZpZXJMb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOworICAgIGlm
ICghbWF0Y2goU1RSSU5HKSkKKyAgICAgICAgZmFpbER1ZVRvVW5leHBlY3RlZFRva2VuKCk7Cisg
ICAgY29uc3QgSWRlbnRpZmllciogbW9kdWxlTmFtZSA9IG1fdG9rZW4ubV9kYXRhLmlkZW50Owor
ICAgIG5leHQoKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVNb2R1bGVTcGVjaWZpZXIoc3Bl
Y2lmaWVyTG9jYXRpb24sICptb2R1bGVOYW1lKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIExl
eGVyVHlwZT4KK3RlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxk
ZXI6OkltcG9ydFNwZWNpZmllciBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbXBvcnROYW1lZFNw
ZWNpZmllcihUcmVlQnVpbGRlciYgY29udGV4dCkKK3sKKyAgICBBU1NFUlQobWF0Y2goSURFTlQp
KTsKKyAgICBKU1Rva2VuTG9jYXRpb24gc3BlY2lmaWVyTG9jYXRpb24odG9rZW5Mb2NhdGlvbigp
KTsKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpbXBvcnRlZE5hbWUgPSBtX3Rva2VuLm1fZGF0YS5p
ZGVudDsKKyAgICBuZXh0KCk7CisKKyAgICBpZiAoIW1hdGNoQ29udGV4dHVhbEtleXdvcmQobV92
bS0+cHJvcGVydHlOYW1lcy0+YXMpKQorICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVJbXBv
cnRTcGVjaWZpZXIoc3BlY2lmaWVyTG9jYXRpb24sICppbXBvcnRlZE5hbWUsICppbXBvcnRlZE5h
bWUpOworCisgICAgbmV4dCgpOworICAgIG1hdGNoT3JGYWlsKElERU5ULCAiRXhwZWN0ZWQgYSBs
b2NhbCBuYW1lIGZvciBhIHRhcmdldGVkIGltcG9ydCBkZWNsYXJhdGlvbiIpOworICAgIGNvbnN0
IElkZW50aWZpZXIqIGxvY2FsTmFtZSA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OworICAgIG5leHQo
KTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVJbXBvcnRTcGVjaWZpZXIoc3BlY2lmaWVyTG9j
YXRpb24sICppbXBvcnRlZE5hbWUsICpsb2NhbE5hbWUpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGV4ZXJUeXBlPgordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVl
QnVpbGRlcjo6SW1wb3J0U3BlY2lmaWVyIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUltcG9ydE5h
bWVzcGFjZVNwZWNpZmllcihUcmVlQnVpbGRlciYgY29udGV4dCkKK3sKKyAgICBBU1NFUlQobWF0
Y2goVElNRVMpKTsKKyAgICBKU1Rva2VuTG9jYXRpb24gc3BlY2lmaWVyTG9jYXRpb24odG9rZW5M
b2NhdGlvbigpKTsKKyAgICBuZXh0KCk7CisKKyAgICBpZiAoIW1hdGNoQ29udGV4dHVhbEtleXdv
cmQobV92bS0+cHJvcGVydHlOYW1lcy0+YXMpKQorICAgICAgICBmYWlsRHVlVG9VbmV4cGVjdGVk
VG9rZW4oKTsKKyAgICBuZXh0KCk7CisKKyAgICBtYXRjaE9yRmFpbChJREVOVCwgIkV4cGVjdGVk
IGEgbG9jYWwgbmFtZSBmb3IgYSB0YXJnZXRlZCBpbXBvcnQgZGVjbGFyYXRpb24iKTsKKyAgICBj
b25zdCBJZGVudGlmaWVyKiBsb2NhbE5hbWUgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKKyAgICBu
ZXh0KCk7CisKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVJbXBvcnRTcGVjaWZpZXIoc3BlY2lm
aWVyTG9jYXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPnRpbWVzSWRlbnRpZmllciwgKmxvY2Fs
TmFtZSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Cit0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW1w
b3J0RGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImIGNvbnRleHQpCit7CisgICAgQVNTRVJUKG1hdGNo
KElNUE9SVCkpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBpbXBvcnRMb2NhdGlvbih0b2tlbkxvY2F0
aW9uKCkpOworICAgIG5leHQoKTsgLy8gSU1QT1JUCisKKyAgICB0eXBlbmFtZSBUcmVlQnVpbGRl
cjo6SW1wb3J0U3BlY2lmaWVyTGlzdCBzcGVjaWZpZXJMaXN0ID0gMDsKKworICAgIGlmIChtYXRj
aChTVFJJTkcpKSB7CisgICAgICAgIC8vIGltcG9ydCBNb2R1bGVTcGVjaWZpZXIgOworICAgICAg
ICBhdXRvIG1vZHVsZVNwZWNpZmllciA9IHBhcnNlTW9kdWxlU3BlY2lmaWVyKGNvbnRleHQpOwor
ICAgICAgICBmYWlsSWZGYWxzZShtb2R1bGVTcGVjaWZpZXIsICJDYW5ub3QgcGFyc2UgdGhlIG1v
ZHVsZSBzcGVjaWZpZXIiKTsKKyAgICAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpLCAi
RXhwZWN0ZWQgYSAnOycgZm9sbG93aW5nIGEgdGFyZ2V0ZWQgaW1wb3J0IGRlY2xhcmF0aW9uIik7
CisgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUltcG9ydERlY2xhcmF0aW9uKGltcG9ydExv
Y2F0aW9uLCBzcGVjaWZpZXJMaXN0LCBtb2R1bGVTcGVjaWZpZXIpOworICAgIH0KKworICAgIGJv
b2wgaGFzRGVmYXVsdFNwZWNpZmllciA9IGZhbHNlOworICAgIGlmIChtYXRjaChJREVOVCkpIHsK
KyAgICAgICAgSlNUb2tlbkxvY2F0aW9uIGRlZmF1bHRTcGVjaWZpZXJMb2NhdGlvbih0b2tlbkxv
Y2F0aW9uKCkpOworICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBsb2NhbE5hbWUgPSBtX3Rva2Vu
Lm1fZGF0YS5pZGVudDsKKyAgICAgICAgbmV4dCgpOworICAgICAgICBhdXRvIGRlZmF1bHRTcGVj
aWZpZXIgPSBjb250ZXh0LmNyZWF0ZUltcG9ydFNwZWNpZmllcihkZWZhdWx0U3BlY2lmaWVyTG9j
YXRpb24sIG1fdm0tPnByb3BlcnR5TmFtZXMtPmRlZmF1bHRLZXl3b3JkLCAqbG9jYWxOYW1lKTsK
KyAgICAgICAgc3BlY2lmaWVyTGlzdCA9IGNvbnRleHQuY3JlYXRlSW1wb3J0U3BlY2lmaWVyTGlz
dChzcGVjaWZpZXJMaXN0LCBkZWZhdWx0U3BlY2lmaWVyKTsKKyAgICAgICAgaGFzRGVmYXVsdFNw
ZWNpZmllciA9IHRydWU7CisgICAgfQorCisgICAgaWYgKCFoYXNEZWZhdWx0U3BlY2lmaWVyIHx8
IG1hdGNoKENPTU1BKSkgeworICAgICAgICBpZiAoaGFzRGVmYXVsdFNwZWNpZmllcikKKyAgICAg
ICAgICAgIG5leHQoKTsgLy8gQ09NTUEKKworICAgICAgICBpZiAobWF0Y2goVElNRVMpKSB7Cisg
ICAgICAgICAgICAvLyBpbXBvcnQgTmFtZVNwYWNlSW1wb3J0IEZyb21DbGF1c2UgOworICAgICAg
ICAgICAgYXV0byBzcGVjaWZpZXIgPSBwYXJzZUltcG9ydE5hbWVzcGFjZVNwZWNpZmllcihjb250
ZXh0KTsKKyAgICAgICAgICAgIGZhaWxJZkZhbHNlKHNwZWNpZmllciwgIkNhbm5vdCBwYXJzZSB0
aGUgaW1wb3J0IHNwZWNpZmllciIpOworICAgICAgICAgICAgc3BlY2lmaWVyTGlzdCA9IGNvbnRl
eHQuY3JlYXRlSW1wb3J0U3BlY2lmaWVyTGlzdChzcGVjaWZpZXJMaXN0LCBzcGVjaWZpZXIpOwor
ICAgICAgICB9IGVsc2UgaWYgKG1hdGNoKE9QRU5CUkFDRSkpIHsKKyAgICAgICAgICAgIG5leHQo
KTsKKworICAgICAgICAgICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKQorICAgICAgICAgICAgICAg
IG5leHQoKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIG1hdGNoT3JGYWls
KElERU5ULCAiRXhwZWN0ZWQgYSBsb2NhbCBuYW1lIGZvciBhIHRhcmdldGVkIGltcG9ydCBkZWNs
YXJhdGlvbiIpOworICAgICAgICAgICAgICAgIGF1dG8gc3BlY2lmaWVyID0gcGFyc2VJbXBvcnRO
YW1lZFNwZWNpZmllcihjb250ZXh0KTsKKyAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZShzcGVj
aWZpZXIsICJDYW5ub3QgcGFyc2UgdGhlIGltcG9ydCBzcGVjaWZpZXIiKTsKKyAgICAgICAgICAg
ICAgICBzcGVjaWZpZXJMaXN0ID0gY29udGV4dC5jcmVhdGVJbXBvcnRTcGVjaWZpZXJMaXN0KHNw
ZWNpZmllckxpc3QsIHNwZWNpZmllcik7CisKKyAgICAgICAgICAgICAgICB3aGlsZSAobWF0Y2go
Q09NTUEpKSB7CisgICAgICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKG1hdGNoKENMT1NFQlJBQ0UpKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hPckZhaWwoSURFTlQsICJFeHBlY3RlZCBhIGxv
Y2FsIG5hbWUgZm9yIGEgdGFyZ2V0ZWQgaW1wb3J0IGRlY2xhcmF0aW9uIik7CisgICAgICAgICAg
ICAgICAgICAgIGF1dG8gc3BlY2lmaWVyID0gcGFyc2VJbXBvcnROYW1lZFNwZWNpZmllcihjb250
ZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgZmFpbElmRmFsc2Uoc3BlY2lmaWVyLCAiQ2Fubm90
IHBhcnNlIHRoZSBpbXBvcnQgc3BlY2lmaWVyIik7CisgICAgICAgICAgICAgICAgICAgIHNwZWNp
Zmllckxpc3QgPSBjb250ZXh0LmNyZWF0ZUltcG9ydFNwZWNpZmllckxpc3Qoc3BlY2lmaWVyTGlz
dCwgc3BlY2lmaWVyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaGFuZGxl
UHJvZHVjdGlvbk9yRmFpbChDTE9TRUJSQUNFLCAifSIsICJlbmQiLCAiaW1wb3J0IHNwZWNpZmll
cnMiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBmYWlsRHVl
VG9VbmV4cGVjdGVkVG9rZW4oKTsKKyAgICB9CisKKyAgICBpZiAoIW1hdGNoQ29udGV4dHVhbEtl
eXdvcmQobV92bS0+cHJvcGVydHlOYW1lcy0+ZnJvbSkpCisgICAgICAgIGZhaWxEdWVUb1VuZXhw
ZWN0ZWRUb2tlbigpOworICAgIG5leHQoKTsKKworICAgIGF1dG8gbW9kdWxlU3BlY2lmaWVyID0g
cGFyc2VNb2R1bGVTcGVjaWZpZXIoY29udGV4dCk7CisgICAgZmFpbElmRmFsc2UobW9kdWxlU3Bl
Y2lmaWVyLCAiQ2Fubm90IHBhcnNlIHRoZSBtb2R1bGUgc3BlY2lmaWVyIik7CisgICAgZmFpbElm
RmFsc2UoYXV0b1NlbWlDb2xvbigpLCAiRXhwZWN0ZWQgYSAnOycgZm9sbG93aW5nIGEgdGFyZ2V0
ZWQgaW1wb3J0IGRlY2xhcmF0aW9uIik7CisKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVJbXBv
cnREZWNsYXJhdGlvbihpbXBvcnRMb2NhdGlvbiwgc3BlY2lmaWVyTGlzdCwgbW9kdWxlU3BlY2lm
aWVyKTsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KK3RlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkV4cG9ydFNwZWNpZmllciBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnRTcGVjaWZpZXIoVHJlZUJ1aWxkZXImIGNvbnRleHQp
Cit7CisgICAgQVNTRVJUKG1hdGNoKElERU5UKSk7CisgICAgSlNUb2tlbkxvY2F0aW9uIHNwZWNp
ZmllckxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CisgICAgY29uc3QgSWRlbnRpZmllciogbG9j
YWxOYW1lID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CisgICAgbmV4dCgpOworCisgICAgaWYgKCFt
YXRjaENvbnRleHR1YWxLZXl3b3JkKG1fdm0tPnByb3BlcnR5TmFtZXMtPmFzKSkKKyAgICAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlRXhwb3J0U3BlY2lmaWVyKHNwZWNpZmllckxvY2F0aW9uLCAq
bG9jYWxOYW1lLCAqbG9jYWxOYW1lKTsKKworICAgIG5leHQoKTsKKyAgICBtYXRjaE9yRmFpbChJ
REVOVCwgIkV4cGVjdGVkIGFuIGV4cG9ydGVkIG5hbWUgZm9yIGEgdGFyZ2V0ZWQgZXhwb3J0IGRl
Y2xhcmF0aW9uIik7CisgICAgY29uc3QgSWRlbnRpZmllciogZXhwb3J0ZWROYW1lID0gbV90b2tl
bi5tX2RhdGEuaWRlbnQ7CisgICAgbmV4dCgpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUV4
cG9ydFNwZWNpZmllcihzcGVjaWZpZXJMb2NhdGlvbiwgKmxvY2FsTmFtZSwgKmV4cG9ydGVkTmFt
ZSk7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Cit0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwb3J0
RGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImIGNvbnRleHQpCit7CisgICAgQVNTRVJUKG1hdGNoKEVY
UE9SVCkpOworICAgIEpTVG9rZW5Mb2NhdGlvbiBleHBvcnRMb2NhdGlvbih0b2tlbkxvY2F0aW9u
KCkpOworICAgIG5leHQoKTsgLy8gRVhQT1JUCisKKyAgICBzd2l0Y2ggKG1fdG9rZW4ubV90eXBl
KSB7CisgICAgY2FzZSBUSU1FUzogeworICAgICAgICAvLyBleHBvcnQgKiBGcm9tQ2xhdXNlIDsK
KyAgICAgICAgbmV4dCgpOyAvLyBUSU1FUworCisgICAgICAgIGlmICghbWF0Y2hDb250ZXh0dWFs
S2V5d29yZChtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5mcm9tKSkKKyAgICAgICAgICAgIGZhaWxEdWVU
b1VuZXhwZWN0ZWRUb2tlbigpOworICAgICAgICBuZXh0KCk7CisgICAgICAgIGF1dG8gbW9kdWxl
U3BlY2lmaWVyID0gcGFyc2VNb2R1bGVTcGVjaWZpZXIoY29udGV4dCk7CisgICAgICAgIGZhaWxJ
ZkZhbHNlKG1vZHVsZVNwZWNpZmllciwgIkNhbm5vdCBwYXJzZSB0aGUgJ2Zyb20nIGNsYXVzZSIp
OworICAgICAgICBmYWlsSWZGYWxzZShhdXRvU2VtaUNvbG9uKCksICJFeHBlY3RlZCBhICc7JyBm
b2xsb3dpbmcgYSB0YXJnZXRlZCBleHBvcnQgZGVjbGFyYXRpb24iKTsKKyAgICAgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlRXhwb3J0QWxsRGVjbGFyYXRpb24oZXhwb3J0TG9jYXRpb24sIG1vZHVs
ZVNwZWNpZmllcik7CisgICAgfQorICAgIGJyZWFrOworCisgICAgY2FzZSBERUZBVUxUOiB7Cisg
ICAgICAgIC8vIGV4cG9ydCBkZWZhdWx0IEhvaXN0YWJsZURlY2xhcmF0aW9uW0RlZmF1bHRdCisg
ICAgICAgIC8vIGV4cG9ydCBkZWZhdWx0IENsYXNzRGVjbGFyYXRpb25bRGVmYXVsdF0KKyAgICAg
ICAgLy8gZXhwb3J0IGRlZmF1bHQgW2xvb2thaGVhZCDiiIkge2Z1bmN0aW9uLCBjbGFzc31dIEFz
c2lnbm1lbnRFeHByZXNzaW9uW0luXSA7CisKKyAgICAgICAgbmV4dCgpOyAvLyBERUZBVUxUCisK
KyAgICAgICAgVHJlZVN0YXRlbWVudCByZXN1bHQgPSAwOworICAgICAgICBpZiAobWF0Y2goRlVO
Q1RJT04pKQorICAgICAgICAgICAgcmVzdWx0ID0gcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKGNv
bnRleHQpOworICAgICAgICBlbHNlIGlmIChtYXRjaChDTEFTU1RPS0VOKSkKKyAgICAgICAgICAg
IHJlc3VsdCA9IHBhcnNlQ2xhc3NEZWNsYXJhdGlvbihjb250ZXh0KTsKKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsK
KyAgICAgICAgICAgIEpTVGV4dFBvc2l0aW9uIHN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7
CisgICAgICAgICAgICBUcmVlRXhwcmVzc2lvbiBleHByZXNzaW9uID0gcGFyc2VBc3NpZ25tZW50
RXhwcmVzc2lvbihjb250ZXh0KTsKKyAgICAgICAgICAgIGZhaWxJZkZhbHNlKGV4cHJlc3Npb24s
ICJDYW5ub3QgcGFyc2UgZXhwcmVzc2lvbiIpOworICAgICAgICAgICAgcmVzdWx0ID0gY29udGV4
dC5jcmVhdGVFeHByU3RhdGVtZW50KGxvY2F0aW9uLCBleHByZXNzaW9uLCBzdGFydCwgdG9rZW5F
bmRQb3NpdGlvbigpKTsKKyAgICAgICAgICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSwg
IkV4cGVjdGVkIGEgJzsnIGZvbGxvd2luZyBhIHRhcmdldGVkIGV4cG9ydCBkZWNsYXJhdGlvbiIp
OworICAgICAgICB9CisgICAgICAgIGZhaWxJZkZhbHNlKHJlc3VsdCwgIkNhbm5vdCBwYXJzZSB0
aGUgZGVjbGFyYXRpb24iKTsKKworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVFeHBvcnRE
ZWZhdWx0RGVjbGFyYXRpb24oZXhwb3J0TG9jYXRpb24sIHJlc3VsdCk7CisgICAgfQorICAgIGJy
ZWFrOworCisgICAgY2FzZSBPUEVOQlJBQ0U6IHsKKyAgICAgICAgLy8gZXhwb3J0IEV4cG9ydENs
YXVzZSBGcm9tQ2xhdXNlIDsKKyAgICAgICAgLy8gZXhwb3J0IEV4cG9ydENsYXVzZSA7CisgICAg
ICAgIC8vCisgICAgICAgIC8vIEV4cG9ydENsYXVzZSA6CisgICAgICAgIC8vIHsgfQorICAgICAg
ICAvLyB7IEV4cG9ydHNMaXN0IH0KKyAgICAgICAgLy8geyBFeHBvcnRzTGlzdCAsIH0KKworICAg
ICAgICBuZXh0KCk7CisKKyAgICAgICAgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkV4cG9ydFNwZWNp
Zmllckxpc3QgZXhwb3J0U3BlY2lmaWVyTGlzdCA9IDA7CisKKyAgICAgICAgaWYgKG1hdGNoKENM
T1NFQlJBQ0UpKQorICAgICAgICAgICAgbmV4dCgpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIG1hdGNoT3JGYWlsKElERU5ULCAiRXhwZWN0ZWQgYSBsb2NhbCBuYW1lIGZvciBhIHRhcmdl
dGVkIGV4cG9ydCBkZWNsYXJhdGlvbiIpOworICAgICAgICAgICAgYXV0byBzcGVjaWZpZXIgPSBw
YXJzZUV4cG9ydFNwZWNpZmllcihjb250ZXh0KTsKKyAgICAgICAgICAgIGZhaWxJZkZhbHNlKHNw
ZWNpZmllciwgIkNhbm5vdCBwYXJzZSB0aGUgZXhwb3J0IHNwZWNpZmllciIpOworICAgICAgICAg
ICAgZXhwb3J0U3BlY2lmaWVyTGlzdCA9IGNvbnRleHQuY3JlYXRlRXhwb3J0U3BlY2lmaWVyTGlz
dChzcGVjaWZpZXIpOworCisgICAgICAgICAgICB3aGlsZSAobWF0Y2goQ09NTUEpKSB7CisgICAg
ICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgICAgIGlmIChtYXRjaChDTE9TRUJSQUNF
KSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBtYXRjaE9y
RmFpbChJREVOVCwgIkV4cGVjdGVkIGEgbG9jYWwgbmFtZSBmb3IgYSB0YXJnZXRlZCBleHBvcnQg
ZGVjbGFyYXRpb24iKTsKKyAgICAgICAgICAgICAgICBhdXRvIHNwZWNpZmllciA9IHBhcnNlRXhw
b3J0U3BlY2lmaWVyKGNvbnRleHQpOworICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHNwZWNp
ZmllciwgIkNhbm5vdCBwYXJzZSB0aGUgZXhwb3J0IHNwZWNpZmllciIpOworICAgICAgICAgICAg
ICAgIGV4cG9ydFNwZWNpZmllckxpc3QgPSBjb250ZXh0LmNyZWF0ZUV4cG9ydFNwZWNpZmllckxp
c3QoZXhwb3J0U3BlY2lmaWVyTGlzdCwgc3BlY2lmaWVyKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGhhbmRsZVByb2R1Y3Rpb25PckZhaWwoQ0xPU0VCUkFDRSwgIn0iLCAiZW5kIiwgImV4
cG9ydCBzcGVjaWZpZXJzIik7CisgICAgICAgIH0KKworICAgICAgICB0eXBlbmFtZSBUcmVlQnVp
bGRlcjo6TW9kdWxlU3BlY2lmaWVyIG1vZHVsZVNwZWNpZmllciA9IDA7CisgICAgICAgIGlmICht
YXRjaENvbnRleHR1YWxLZXl3b3JkKG1fdm0tPnByb3BlcnR5TmFtZXMtPmZyb20pKSB7CisgICAg
ICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICBtb2R1bGVTcGVjaWZpZXIgPSBwYXJzZU1vZHVs
ZVNwZWNpZmllcihjb250ZXh0KTsKKyAgICAgICAgICAgIGZhaWxJZkZhbHNlKG1vZHVsZVNwZWNp
ZmllciwgIkNhbm5vdCBwYXJzZSB0aGUgJ2Zyb20nIGNsYXVzZSIpOworICAgICAgICB9CisgICAg
ICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSwgIkV4cGVjdGVkIGEgJzsnIGZvbGxvd2lu
ZyBhIHRhcmdldGVkIGV4cG9ydCBkZWNsYXJhdGlvbiIpOworCisgICAgICAgIHJldHVybiBjb250
ZXh0LmNyZWF0ZUV4cG9ydE5hbWVkRGVjbGFyYXRpb24oZXhwb3J0TG9jYXRpb24sIGV4cG9ydFNw
ZWNpZmllckxpc3QsIG1vZHVsZVNwZWNpZmllcik7CisgICAgfQorICAgIGJyZWFrOworCisgICAg
ZGVmYXVsdDogeworICAgICAgICAvLyBleHBvcnQgVmFyaWFibGVTdGF0ZW1lbnQKKyAgICAgICAg
Ly8gZXhwb3J0IERlY2xhcmF0aW9uCisgICAgICAgIFRyZWVTdGF0ZW1lbnQgcmVzdWx0ID0gMDsK
KyAgICAgICAgc3dpdGNoIChtX3Rva2VuLm1fdHlwZSkgeworICAgICAgICBjYXNlIFZBUjoKKyAg
ICAgICAgICAgIHJlc3VsdCA9IHBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbihjb250ZXh0LCBEZWNs
YXJhdGlvblR5cGU6OlZhckRlY2xhcmF0aW9uKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2UgQ09OU1RUT0tFTjoKKyAgICAgICAgICAgIHJlc3VsdCA9IHBhcnNlVmFyaWFibGVE
ZWNsYXJhdGlvbihjb250ZXh0LCBEZWNsYXJhdGlvblR5cGU6OkNvbnN0RGVjbGFyYXRpb24pOwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBMRVQ6CisgICAgICAgICAgICByZXN1
bHQgPSBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb24oY29udGV4dCwgRGVjbGFyYXRpb25UeXBlOjpM
ZXREZWNsYXJhdGlvbik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEZVTkNU
SU9OOgorICAgICAgICAgICAgcmVzdWx0ID0gcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKGNvbnRl
eHQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDTEFTU1RPS0VOOgorICAg
ICAgICAgICAgcmVzdWx0ID0gcGFyc2VDbGFzc0RlY2xhcmF0aW9uKGNvbnRleHQpOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGZhaWxEdWVUb1Vu
ZXhwZWN0ZWRUb2tlbigpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
ZmFpbElmRmFsc2UocmVzdWx0LCAiQ2Fubm90IHBhcnNlIHRoZSBkZWNsYXJhdGlvbiIpOworICAg
ICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVFeHBvcnRMb2NhbERlY2xhcmF0aW9uKGV4cG9ydExv
Y2F0aW9uLCByZXN1bHQpOworICAgIH0KKyAgICBicmVhazsKKyAgICB9CisKKyAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCit0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVz
c2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHByZXNzaW9uKFRyZWVCdWlsZGVyJiBjb250
ZXh0KQogewogICAgIGZhaWxJZlN0YWNrT3ZlcmZsb3coKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5oCmluZGV4IDAxOTQxZmMwYTBiYmU4NTU4N2MwMDFhNjg2ZjY1ZjdlMzg0MGU5
MzguLmU1NmZkNDg2NTFjNGU4MDI0OWY4NTJmNzI2YmNhMjQ0ZmFlODYyZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtODQ3LDkgKzg0Nyw5IEBAIGNsYXNzIFBhcnNl
ciB7CiAgICAgICAgIHJldHVybiBtX3Rva2VuLm1fdHlwZSA9PSBleHBlY3RlZDsKICAgICB9CiAg
ICAgCi0gICAgQUxXQVlTX0lOTElORSBib29sIGlzb2ZUb2tlbigpCisgICAgQUxXQVlTX0lOTElO
RSBib29sIG1hdGNoQ29udGV4dHVhbEtleXdvcmQoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmll
cikKICAgICB7Ci0gICAgICAgIHJldHVybiBtX3Rva2VuLm1fdHlwZSA9PSBJREVOVCAmJiAqbV90
b2tlbi5tX2RhdGEuaWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+b2Y7CisgICAgICAgIHJl
dHVybiBtX3Rva2VuLm1fdHlwZSA9PSBJREVOVCAmJiAqbV90b2tlbi5tX2RhdGEuaWRlbnQgPT0g
aWRlbnRpZmllcjsKICAgICB9CiAgICAgCiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzRW5kT2ZB
cnJvd0Z1bmN0aW9uKCkKQEAgLTEwNTQsNiArMTA1NCwxMyBAQCBjbGFzcyBQYXJzZXIgewogICAg
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVEZXN0cnVjdHVy
aW5nUGF0dGVybiBwYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuKFRyZWVCdWlsZGVyJiwgRGVzdHJ1
Y3R1cmluZ0tpbmQsIGNvbnN0IElkZW50aWZpZXIqKiBkdXBsaWNhdGVJZGVudGlmaWVyID0gbnVs
bHB0ciwgYm9vbCogaGFzRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gPSBudWxscHRyLCBBc3NpZ25tZW50
Q29udGV4dCA9IEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCwgaW50IGRl
cHRoID0gMCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUg
VHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIHRyeVBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm5FeHBy
ZXNzaW9uKFRyZWVCdWlsZGVyJiwgQXNzaWdubWVudENvbnRleHQpOwogICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVFeHByZXNzaW9uIHBhcnNlRGVmYXVs
dFZhbHVlRm9yRGVzdHJ1Y3R1cmluZ1BhdHRlcm4oVHJlZUJ1aWxkZXImKTsKKyAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZU1vZHVsZVNvdXJj
ZUVsZW1lbnRzKFRyZWVCdWlsZGVyJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6SW1wb3J0U3BlY2lmaWVyIHBhcnNlSW1wb3J0TmFtZWRT
cGVjaWZpZXIoVHJlZUJ1aWxkZXImKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpJbXBvcnRTcGVjaWZpZXIgcGFyc2VJbXBvcnROYW1lc3Bh
Y2VTcGVjaWZpZXIoVHJlZUJ1aWxkZXImKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpNb2R1bGVTcGVjaWZpZXIgcGFyc2VNb2R1bGVTcGVj
aWZpZXIoVHJlZUJ1aWxkZXImKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTdGF0ZW1lbnQgcGFyc2VJbXBvcnREZWNsYXJhdGlvbihUcmVlQnVpbGRlciYpOworICAgIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkV4cG9ydFNw
ZWNpZmllciBwYXJzZUV4cG9ydFNwZWNpZmllcihUcmVlQnVpbGRlciYpOworICAgIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZUV4cG9ydERlY2xhcmF0aW9u
KFRyZWVCdWlsZGVyJik7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVS
X0lOTElORSBib29sIHBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25SZXF1
aXJlbWVudHMsIEZ1bmN0aW9uUGFyc2VNb2RlLCBib29sIG5hbWVJc0luQ29udGFpbmluZ1Njb3Bl
LCBDb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZywgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0
LCBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+JiwgRnVuY3Rpb25QYXJzZVR5cGUpOwog
ICAgIApAQCAtMTE4MSw2ICsxMTg4LDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICBWZWN0b3I8UmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4gbV9jbG9zZWRWYXJpYWJsZXM7CiAgICAgQ29kZUZlYXR1
cmVzIG1fZmVhdHVyZXM7CiAgICAgaW50IG1fbnVtQ29uc3RhbnRzOworICAgIEpTUGFyc2VyQ29k
ZVR5cGUgbV9jb2RlVHlwZTsKICAgICAKICAgICBzdHJ1Y3QgRGVwdGhNYW5hZ2VyIHsKICAgICAg
ICAgRGVwdGhNYW5hZ2VyKGludCogZGVwdGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlck1vZGVzLmgKaW5kZXggYjEyNDA1NDA4MDY3NjkyN2I4MDY2NjE0NGM3NzNkOTJjZTAw
ZTgwYy4uYzRkNjE2N2VjODJkYzk2Nzc5MDQ5OTZiMWNlNjM2YWI3OWQ5OWQ4MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaApAQCAtMzMsNyArMzMsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogZW51bSBjbGFzcyBKU1BhcnNlclN0cmljdE1vZGUgeyBOb3RTdHJp
Y3QsIFN0cmljdCB9OwogZW51bSBjbGFzcyBKU1BhcnNlckJ1aWx0aW5Nb2RlIHsgTm90QnVpbHRp
biwgQnVpbHRpbiB9OwotZW51bSBjbGFzcyBKU1BhcnNlckNvZGVUeXBlIHsgUHJvZ3JhbSwgRnVu
Y3Rpb24gfTsKK2VudW0gY2xhc3MgSlNQYXJzZXJDb2RlVHlwZSB7IFByb2dyYW0sIEZ1bmN0aW9u
LCBNb2R1bGUgfTsKIAogZW51bSBjbGFzcyBDb25zdHJ1Y3RvcktpbmQgeyBOb25lLCBCYXNlLCBE
ZXJpdmVkIH07CiBlbnVtIGNsYXNzIFN1cGVyQmluZGluZyB7IE5lZWRlZCwgTm90TmVlZGVkIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlclRva2Vucy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJUb2tlbnMuaAppbmRleCA5M2I4
OGFhMTNmZDczODNjZWIxOTY0MGI0OWNmMTA5NDdkNGEzMWJhLi5kNzY1MzYzZjllMWNjNDRkOWYy
NzU3ZGJhOTNkOTY0MDYzZTcwMmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlclRva2Vucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyVG9rZW5zLmgKQEAgLTg4LDYgKzg4LDggQEAgZW51bSBKU1Rva2VuVHlwZSB7CiAgICAg
RVhURU5EUyA9IFJFU0VSVkVELAogICAgIFNVUEVSID0gUkVTRVJWRUQsCiAjZW5kaWYKKyAgICBJ
TVBPUlQsCisgICAgRVhQT1JULAogICAgIE9QRU5CUkFDRSA9IDAsCiAgICAgQ0xPU0VCUkFDRSwK
ICAgICBPUEVOUEFSRU4sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hl
Y2tlci5oCmluZGV4IDc4NmNhOGNkNTI1ZGI0NTI0YWRlYjhlZDA1ZGExNGI3MjVhNzk5N2YuLjQy
ZDhmZGM5NzQxYTBhZWUzZTU0ODA0YWM3YTJhZjM1ZDEzMWI5ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC04Myw3ICs4MywxMCBAQCBjbGFz
cyBTeW50YXhDaGVja2VyIHsKICAgICAgICAgQ2xhdXNlTGlzdFJlc3VsdCwgQ29tbWFFeHByLCBE
ZXN0cnVjdHVyaW5nQXNzaWdubWVudCwKICAgICAgICAgVGVtcGxhdGVTdHJpbmdSZXN1bHQsIFRl
bXBsYXRlU3RyaW5nTGlzdFJlc3VsdCwKICAgICAgICAgVGVtcGxhdGVFeHByZXNzaW9uTGlzdFJl
c3VsdCwgVGVtcGxhdGVFeHByLAotICAgICAgICBUYWdnZWRUZW1wbGF0ZUV4cHIKKyAgICAgICAg
VGFnZ2VkVGVtcGxhdGVFeHByLAorICAgICAgICBNb2R1bGVTcGVjaWZpZXJSZXN1bHQsCisgICAg
ICAgIEltcG9ydFNwZWNpZmllclJlc3VsdCwgSW1wb3J0U3BlY2lmaWVyTGlzdFJlc3VsdCwKKyAg
ICAgICAgRXhwb3J0U3BlY2lmaWVyUmVzdWx0LCBFeHBvcnRTcGVjaWZpZXJMaXN0UmVzdWx0CiAg
ICAgfTsKICAgICB0eXBlZGVmIGludCBFeHByZXNzaW9uVHlwZTsKIApAQCAtMTI0LDYgKzEyNywx
MSBAQCBjbGFzcyBTeW50YXhDaGVja2VyIHsKICNpZiBFTkFCTEUoRVM2X0NMQVNTX1NZTlRBWCkK
ICAgICB0eXBlZGVmIGludCBDbGFzc0V4cHJlc3Npb247CiAjZW5kaWYKKyAgICB0eXBlZGVmIGlu
dCBNb2R1bGVTcGVjaWZpZXI7CisgICAgdHlwZWRlZiBpbnQgSW1wb3J0U3BlY2lmaWVyOworICAg
IHR5cGVkZWYgaW50IEltcG9ydFNwZWNpZmllckxpc3Q7CisgICAgdHlwZWRlZiBpbnQgRXhwb3J0
U3BlY2lmaWVyOworICAgIHR5cGVkZWYgaW50IEV4cG9ydFNwZWNpZmllckxpc3Q7CiAgICAgdHlw
ZWRlZiBpbnQgU3RhdGVtZW50OwogICAgIHR5cGVkZWYgaW50IENsYXVzZUxpc3Q7CiAgICAgdHlw
ZWRlZiBpbnQgQ2xhdXNlOwpAQCAtMjUxLDYgKzI1OSwxOSBAQCBjbGFzcyBTeW50YXhDaGVja2Vy
IHsKICAgICBpbnQgY3JlYXRlVGhyb3dTdGF0ZW1lbnQoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
aW50LCBpbnQsIGludCkgeyByZXR1cm4gU3RhdGVtZW50UmVzdWx0OyB9CiAgICAgaW50IGNyZWF0
ZURlYnVnZ2VyKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50KSB7IHJldHVybiBTdGF0
ZW1lbnRSZXN1bHQ7IH0KICAgICBpbnQgY3JlYXRlQ29uc3RTdGF0ZW1lbnQoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgaW50LCBpbnQsIGludCkgeyByZXR1cm4gU3RhdGVtZW50UmVzdWx0OyB9Cisg
ICAgaW50IGNyZWF0ZU1vZHVsZVNwZWNpZmllcihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25z
dCBJZGVudGlmaWVyJikgeyByZXR1cm4gTW9kdWxlU3BlY2lmaWVyUmVzdWx0OyB9CisgICAgSW1w
b3J0U3BlY2lmaWVyIGNyZWF0ZUltcG9ydFNwZWNpZmllcihjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgSWRlbnRpZmllciYpIHsgcmV0dXJuIEltcG9ydFNw
ZWNpZmllclJlc3VsdDsgfQorICAgIEltcG9ydFNwZWNpZmllckxpc3QgY3JlYXRlSW1wb3J0U3Bl
Y2lmaWVyTGlzdChJbXBvcnRTcGVjaWZpZXIpIHsgcmV0dXJuIEltcG9ydFNwZWNpZmllckxpc3RS
ZXN1bHQ7IH0KKyAgICBJbXBvcnRTcGVjaWZpZXJMaXN0IGNyZWF0ZUltcG9ydFNwZWNpZmllckxp
c3QoSW1wb3J0U3BlY2lmaWVyTGlzdCwgSW1wb3J0U3BlY2lmaWVyKSB7IHJldHVybiBJbXBvcnRT
cGVjaWZpZXJMaXN0UmVzdWx0OyB9CisgICAgaW50IGNyZWF0ZUltcG9ydERlY2xhcmF0aW9uKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEltcG9ydFNwZWNpZmllckxpc3QsIE1vZHVsZVNwZWNpZmll
cikgeyByZXR1cm4gU3RhdGVtZW50UmVzdWx0OyB9CisgICAgaW50IGNyZWF0ZUV4cG9ydEFsbERl
Y2xhcmF0aW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIE1vZHVsZVNwZWNpZmllcikgeyByZXR1
cm4gU3RhdGVtZW50UmVzdWx0OyB9CisgICAgaW50IGNyZWF0ZUV4cG9ydERlZmF1bHREZWNsYXJh
dGlvbihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQpIHsgcmV0dXJuIFN0YXRlbWVudFJlc3Vs
dDsgfQorICAgIGludCBjcmVhdGVFeHBvcnRMb2NhbERlY2xhcmF0aW9uKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGludCkgeyByZXR1cm4gU3RhdGVtZW50UmVzdWx0OyB9CisgICAgaW50IGNyZWF0
ZUV4cG9ydE5hbWVkRGVjbGFyYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwb3J0U3Bl
Y2lmaWVyTGlzdCwgTW9kdWxlU3BlY2lmaWVyKSB7IHJldHVybiBTdGF0ZW1lbnRSZXN1bHQ7IH0K
KyAgICBFeHBvcnRTcGVjaWZpZXIgY3JlYXRlRXhwb3J0U3BlY2lmaWVyKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBJZGVudGlmaWVyJikgeyByZXR1cm4g
RXhwb3J0U3BlY2lmaWVyUmVzdWx0OyB9CisgICAgRXhwb3J0U3BlY2lmaWVyTGlzdCBjcmVhdGVF
eHBvcnRTcGVjaWZpZXJMaXN0KEV4cG9ydFNwZWNpZmllcikgeyByZXR1cm4gRXhwb3J0U3BlY2lm
aWVyTGlzdFJlc3VsdDsgfQorICAgIEV4cG9ydFNwZWNpZmllckxpc3QgY3JlYXRlRXhwb3J0U3Bl
Y2lmaWVyTGlzdChFeHBvcnRTcGVjaWZpZXJMaXN0LCBFeHBvcnRTcGVjaWZpZXIpIHsgcmV0dXJu
IEV4cG9ydFNwZWNpZmllckxpc3RSZXN1bHQ7IH0KKwogICAgIGludCBhcHBlbmRDb25zdERlY2wo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBjb25zdCBJZGVudGlmaWVyKiwgaW50KSB7IHJl
dHVybiBTdGF0ZW1lbnRSZXN1bHQ7IH0KICAgICBQcm9wZXJ0eSBjcmVhdGVHZXR0ZXJPclNldHRl
clByb3BlcnR5KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBl
LCBib29sIHN0cmljdCwgY29uc3QgSWRlbnRpZmllciogbmFtZSwgY29uc3QgUGFyc2VyRnVuY3Rp
b25JbmZvPFN5bnRheENoZWNrZXI+JiwgU3VwZXJCaW5kaW5nKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcAppbmRleCAy
MWJjNGM3Y2VmZGU4NjdkOGFiNTFjNTcyYmUxNTk3OWJlODEyMGYwLi5mYzZlNjJjYTA0NWUzNjI5
Y2YyYWQzYjZiZmNiNzNkNWRkZmYwY2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwCkBAIC0zOSw2ICszOSw3IEBAIENvbW1v
bklkZW50aWZpZXJzOjpDb21tb25JZGVudGlmaWVycyhWTSogdm0pCiAgICAgLCB1bmRlcnNjb3Jl
UHJvdG8oSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgIl9fcHJvdG9fXyIpKQogICAgICwgdGhp
c0lkZW50aWZpZXIoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRoaXMiKSkKICAgICAsIHVz
ZVN0cmljdElkZW50aWZpZXIoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInVzZSBzdHJpY3Qi
KSkKKyAgICAsIHRpbWVzSWRlbnRpZmllcihJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiKiIp
KQogICAgICwgbV9idWlsdGluTmFtZXMobmV3IEJ1aWx0aW5OYW1lcyh2bSwgdGhpcykpCiAgICAg
SlNDX0NPTU1PTl9JREVOVElGSUVSU19FQUNIX0tFWVdPUkQoSU5JVElBTElaRV9LRVlXT1JEKQog
ICAgIEpTQ19DT01NT05fSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKElOSVRJQUxJWkVf
UFJPUEVSVFlfTkFNRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5oCmluZGV4IDQzMmZiNmMxYjE2ZmNmMmYyMjcxMTNkMjc2ZWMwODI1ZmM1
MjliZDQuLjUyMTk4YjkyMjYxMTM1ZmIzZDVmMTI3YjQzOTkxY2MwYWE0NGJhOGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAt
NjksNiArNjksNyBAQAogICAgIG1hY3JvKGFkZGl0aW9uYWxKZXR0aXNvblJlYXNvbikgXAogICAg
IG1hY3JvKGFub255bW91cykgXAogICAgIG1hY3JvKGFyZ3VtZW50cykgXAorICAgIG1hY3JvKGFz
KSBcCiAgICAgbWFjcm8oYXNzaWduKSBcCiAgICAgbWFjcm8oYmFjaykgXAogICAgIG1hY3JvKGJp
bmQpIFwKQEAgLTEwOSw2ICsxMTAsNyBAQAogICAgIG1hY3JvKGZvY3VzKSBcCiAgICAgbWFjcm8o
Zm9yRWFjaCkgXAogICAgIG1hY3JvKGZvcndhcmQpIFwKKyAgICBtYWNybyhmcm9tKSBcCiAgICAg
bWFjcm8oZnJvbUNoYXJDb2RlKSBcCiAgICAgbWFjcm8oZ2V0KSBcCiAgICAgbWFjcm8oZ2xvYmFs
KSBcCkBAIC0zMTYsNiArMzE4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IElk
ZW50aWZpZXIgdW5kZXJzY29yZVByb3RvOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyIHRoaXNJ
ZGVudGlmaWVyOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyIHVzZVN0cmljdElkZW50aWZpZXI7
CisgICAgICAgIGNvbnN0IElkZW50aWZpZXIgdGltZXNJZGVudGlmaWVyOwogICAgIHByaXZhdGU6
CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCdWlsdGluTmFtZXM+IG1fYnVpbHRpbk5hbWVzOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCmluZGV4IGQz
NjE1Mzc5ZDQzMDFjODBkMmE4YWE0ZDA5MDlkZmM4OTE1ZTA1ZGYuLjc0NWY4OTlmNjdmOWY5ZDky
ZTI2YmEyOWMyMDA1ZTI1ZGQ1OWE1MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbXBsZXRpb24uY3BwCkBAIC02MSw2ICs2MSwxNSBAQCBib29sIGNoZWNrU3ludGF4KFZN
JiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiAgICAg
ICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBKU1BhcnNlckNvZGVUeXBlOjpQcm9n
cmFtLCBlcnJvcik7CiB9CiAKK2Jvb2wgY2hlY2tTeW50YXhGb3JNb2R1bGUoVk0mIHZtLCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikKK3sKKyAgICBKU0xvY2tI
b2xkZXIgbG9jayh2bSk7CisgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUo
KSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CisgICAgcmV0dXJuICEh
cGFyc2U8UHJvZ3JhbU5vZGU+KAorICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBK
U1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAorICAgICAgICBKU1BhcnNlclN0cmljdE1v
ZGU6OlN0cmljdCwgSlNQYXJzZXJDb2RlVHlwZTo6TW9kdWxlLCBlcnJvcik7Cit9CisKIEpTVmFs
dWUgZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpT
VmFsdWUgdGhpc1ZhbHVlLCBOYWtlZFB0cjxFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbikK
IHsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhleGVjKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbXBsZXRpb24uaAppbmRleCAwODk5MTFlMGZkNzhlYjVkMWY5OGEwZTIzYTNlZWYx
OWE1MzNhZDdkLi43Mjc3YTBhN2Y4NTg3NTI5MTdjN2FjNDZjYzZiNzQ5OWE3ZDljOTZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCkBAIC0zNyw2ICszNyw3
IEBAIGNsYXNzIFZNOwogCiBKU19FWFBPUlRfUFJJVkFURSBib29sIGNoZWNrU3ludGF4KFZNJiwg
Y29uc3QgU291cmNlQ29kZSYsIFBhcnNlckVycm9yJik7CiBKU19FWFBPUlRfUFJJVkFURSBib29s
IGNoZWNrU3ludGF4KEV4ZWNTdGF0ZSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1ZhbHVlKiBleGNl
cHRpb24gPSAwKTsKK0pTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2hlY2tTeW50YXhGb3JNb2R1bGUo
Vk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgUGFyc2VyRXJyb3ImKTsKIEpTX0VYUE9SVF9QUklWQVRF
IEpTVmFsdWUgZXZhbHVhdGUoRXhlY1N0YXRlKiwgY29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUg
dGhpc1ZhbHVlLCBOYWtlZFB0cjxFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbik7CiBpbmxp
bmUgSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNv
dXJjZUNvZGUsIEpTVmFsdWUgdGhpc1ZhbHVlID0gSlNWYWx1ZSgpKQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258679</attachid>
            <date>2015-08-10 18:06:52 -0700</date>
            <delta_ts>2015-08-10 20:55:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147353-20150810180639.patch</filename>
            <type>text/plain</type>
            <size>70244</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NjRhMDM3NTUyYzIwNWNhYjUyZmJjYmJiZTMyODc4NWRmNzA5OTdhLi5mZTI3YmU1YzM4ZWNiYmFi
YjFhZDNmZmNiNzcyOGQ3MDNiM2I5NTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MCBAQAorMjAxNS0wOC0xMCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBBZGQgRVM2IE1vZHVsZXMgcHJlcGFyc2luZyBwaGFzZSB0
byBjb2xsZWN0IHRoZSBkZXBlbmRlbmNpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0NzM1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGFy
c2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRXhwb3J0
RGVmYXVsdERlY2xhcmF0aW9uKToKKyAgICAgICAgKiBwYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxlQW5hbHl6ZXI6Ok1vZHVsZUFuYWx5emVyKToK
KyAgICAgICAgKEpTQzo6TW9kdWxlQW5hbHl6ZXI6OmV4cG9ydGVkQmluZGluZyk6CisgICAgICAg
IChKU0M6Ok1vZHVsZUFuYWx5emVyOjpkZWNsYXJlRXhwb3J0QWxpYXMpOgorICAgICAgICAoSlND
OjpNb2R1bGVBbmFseXplcjo6ZXhwb3J0VmFyaWFibGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVB
bmFseXplcjo6YW5hbHl6ZSk6CisgICAgICAgICogcGFyc2VyL01vZHVsZUFuYWx5emVyLmg6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpNb2R1bGVBbmFseXplcjo6dm0pOgorICAgICAgICAoSlNDOjpN
b2R1bGVBbmFseXplcjo6bW9kdWxlUmVjb3JkKToKKyAgICAgICAgKiBwYXJzZXIvTW9kdWxlUmVj
b3JkLmNwcDogQWRkZWQuCisgICAgICAgICogcGFyc2VyL01vZHVsZVJlY29yZC5oOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6TW9kdWxlUmVjb3JkOjpJbXBvcnRFbnRyeTo6aXNOYW1lc3BhY2UpOgor
ICAgICAgICAoSlNDOjpNb2R1bGVSZWNvcmQ6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1vZHVs
ZVJlY29yZDo6YXBwZW5kUmVxdWVzdGVkTW9kdWxlKToKKyAgICAgICAgKEpTQzo6TW9kdWxlUmVj
b3JkOjphZGRJbXBvcnRFbnRyeSk6CisgICAgICAgIChKU0M6Ok1vZHVsZVJlY29yZDo6YWRkRXhw
b3J0RW50cnkpOgorICAgICAgICAoSlNDOjpNb2R1bGVSZWNvcmQ6OmFkZFN0YXJFeHBvcnRFbnRy
eSk6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAgICAgICAgKEpTQzo6
TW9kdWxlRGVjbGFyYXRpb25Ob2RlOjpNb2R1bGVEZWNsYXJhdGlvbk5vZGUpOgorICAgICAgICAo
SlNDOjpJbXBvcnREZWNsYXJhdGlvbk5vZGU6OkltcG9ydERlY2xhcmF0aW9uTm9kZSk6CisgICAg
ICAgIChKU0M6OkV4cG9ydEFsbERlY2xhcmF0aW9uTm9kZTo6RXhwb3J0QWxsRGVjbGFyYXRpb25O
b2RlKToKKyAgICAgICAgKEpTQzo6RXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZTo6RXhwb3J0
RGVmYXVsdERlY2xhcmF0aW9uTm9kZSk6CisgICAgICAgIChKU0M6OkV4cG9ydExvY2FsRGVjbGFy
YXRpb25Ob2RlOjpFeHBvcnRMb2NhbERlY2xhcmF0aW9uTm9kZSk6CisgICAgICAgIChKU0M6OkV4
cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlOjpFeHBvcnROYW1lZERlY2xhcmF0aW9uTm9kZSk6Cisg
ICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OkV4cG9ydERlZmF1bHREZWNs
YXJhdGlvbk5vZGU6OmxvY2FsTmFtZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzQW5hbHl6ZU1v
ZHVsZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpTY29wZU5vZGU6OmFuYWx5emVNb2R1bGUp
OgorICAgICAgICAoSlNDOjpTb3VyY2VFbGVtZW50czo6YW5hbHl6ZU1vZHVsZSk6CisgICAgICAg
IChKU0M6OkltcG9ydERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZSk6CisgICAgICAgIChK
U0M6OkV4cG9ydEFsbERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZSk6CisgICAgICAgIChK
U0M6OkV4cG9ydERlZmF1bHREZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUpOgorICAgICAg
ICAoSlNDOjpFeHBvcnRMb2NhbERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZSk6CisgICAg
ICAgIChKU0M6OkV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKToKKyAg
ICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VN
b2R1bGVTb3VyY2VFbGVtZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVy
VHlwZT46OmNyZWF0ZUJpbmRpbmdQYXR0ZXJuKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVy
VHlwZT46OnBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUNsYXNzRGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VJbXBvcnRDbGF1c2VJdGVtKToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlRXhwb3J0U3BlY2lmaWVyKToKKyAgICAgICAgKEpTQzo6UGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlRXhwb3J0RGVjbGFyYXRpb24pOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXIuaDoKKyAgICAgICAgKEpTQzo6U2NvcGU6OmxleGljYWxWYXJpYWJsZXMpOgorICAgICAg
ICAoSlNDOjpTY29wZTo6ZGVjbGFyZUxleGljYWxWYXJpYWJsZSk6CisgICAgICAgIChKU0M6OlBh
cnNlcjo6ZGVjbGFyZVZhcmlhYmxlKToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpleHBvcnROYW1l
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlKToKKyAgICAgICAgKEpT
Qzo6cGFyc2UpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXJNb2Rlcy5oOgorICAgICAgICAqIHBh
cnNlci9TeW50YXhDaGVja2VyLmg6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0
ZUV4cG9ydERlZmF1bHREZWNsYXJhdGlvbik6CisgICAgICAgICogcGFyc2VyL1ZhcmlhYmxlRW52
aXJvbm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjptYXJrVmFy
aWFibGVBc0ltcG9ydGVkKToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6bWFy
a1ZhcmlhYmxlQXNFeHBvcnRlZCk6CisgICAgICAgICogcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1l
bnQuaDoKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5Ojppc0V4cG9ydGVk
KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5Ojppc0ltcG9ydGVkKToK
KyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5OjpzZXRJc0V4cG9ydGVkKToK
KyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5OjpzZXRJc0ltcG9ydGVkKToK
KyAgICAgICAgKiBydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmg6CisKIDIwMTUtMDgtMTAgIE1h
cmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJlZmFjdG9yIExpdmVPYmpl
Y3RMaXN0IGFuZCBMaXZlT2JqZWN0RGF0YSBpbnRvIHRoZWlyIG93biBmaWxlcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAwMDJkMDNiOWMxOWI2ZTA1MDYwZTJiNzdhMDhi
MWY5ZWM3ZGVkNjA0Li45ZTExNDE3YjdmMmIyNzM5NmY3MDM0ZGZiODY2NzM1YTUyYTc4OTM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0zODQsNyArMzg0LDEwIEBAIHNl
dChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKIAog
ICAgIHBhcnNlci9MZXhlci5jcHAKKyAgICBwYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCisgICAg
cGFyc2VyL01vZHVsZVJlY29yZC5jcHAKICAgICBwYXJzZXIvTm9kZXMuY3BwCisgICAgcGFyc2Vy
L05vZGVzQW5hbHl6ZU1vZHVsZS5jcHAKICAgICBwYXJzZXIvUGFyc2VyLmNwcAogICAgIHBhcnNl
ci9QYXJzZXJBcmVuYS5jcHAKICAgICBwYXJzZXIvU291cmNlQ29kZS5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJv
ai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDVjNTcyOGI2MWEzYWQzYzUxMzhkZTFhZDEx
ZDhmNDVhZDMxNGIyYWMuLjUxZmNhNGI0YzhjODJjYTlhYzRlN2ViYWMzMmQ0NTZjMzFjOGQzMTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9q
L0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNjU4LDcgKzY1OCwx
MCBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cbGx2bVxJbml0aWFsaXplTExWTVdpbi5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxsbHZtXExMVk1BUEkuY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFyc2VyXExleGVyLmNwcCIgLz4KKyAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHBhcnNlclxNb2R1bGVBbmFseXplci5jcHAiIC8+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwYXJzZXJcTW9kdWxlUmVjb3JkLmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHBhcnNlclxOb2Rlcy5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxwYXJzZXJcTm9kZXNBbmFseXplTW9kdWxlLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHBhcnNlclxQYXJzZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGFyc2VyXFBhcnNlckFyZW5hLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXHBhcnNlclxTb3VyY2VDb2RlLmNwcCIgLz4KQEAgLTE0NDcsNiArMTQ1MCw4IEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxsbHZtXExMVk1IZWFkZXJzLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcQVNUQnVpbGRlci5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXExleGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxwYXJzZXJcTW9kdWxlQW5hbHl6ZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXHBhcnNlclxNb2R1bGVSZWNvcmQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XHBhcnNlclxOb2RlQ29uc3RydWN0b3JzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxwYXJzZXJcTm9kZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxQ
YXJzZXIuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ou
ZmlsdGVycwppbmRleCA4NjdkMzMxYjljN2U4NTFiNTNiNjYzODk4OWM4ZDFhMTBmM2Y5ZjJkLi5h
ZGQyODllNTNiMmRiYjIxYzFhNDFhYTE0MTMwMzMyNjc1NTE0ODQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC00NTMsOSArNDUzLDE4
IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYXJzZXJcTGV4ZXIuY3BwIj4KICAgICAg
IDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxwYXJzZXJcTW9kdWxlQW5hbHl6ZXIuY3BwIj4KKyAgICAgIDxGaWx0ZXI+
cGFyc2VyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxwYXJzZXJcTW9kdWxlUmVjb3JkLmNwcCI+CisgICAgICA8RmlsdGVyPnBhcnNlcjwvRmls
dGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFyc2Vy
XE5vZGVzLmNwcCI+CiAgICAgICA8RmlsdGVyPnBhcnNlcjwvRmlsdGVyPgogICAgIDwvQ2xDb21w
aWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFyc2VyXE5vZGVzQW5hbHl6ZU1vZHVs
ZS5jcHAiPgorICAgICAgPEZpbHRlcj5wYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhcnNlclxQYXJzZXIuY3BwIj4KICAgICAgIDxG
aWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0yNDgwLDYgKzI0ODks
MTIgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxMZXhlci5oIj4KICAgICAg
IDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxwYXJzZXJcTW9kdWxlQW5hbHl6ZXIuaCI+CisgICAgICA8RmlsdGVyPnBh
cnNlcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccGFyc2VyXE1vZHVsZVJlY29yZC5oIj4KKyAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+
CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcTm9k
ZUNvbnN0cnVjdG9ycy5oIj4KICAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAgICAgPC9D
bEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZkMTVmYTY4OGM5Njgw
YTMyZGFlOTdkOWZhNzc4ZjRhZWU0MWY2ZTIuLmQxZDNhMGIxNmY1Zjk2ZTIyNjljMjcwN2MzY2Ux
N2U2MmEyNjNkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNjkwLDYgKzE2
OTAsMTEgQEAKIAkJRTMzNjM3QTUxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3QTMx
QjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwICovOyB9OwogCQlFMzM2MzdBNjFC
NjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3QTQxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxl
Y3RPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlFMzU0NjIyQjFCNjA2NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NDYyMkExQjYwNjVE
MTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFiaWxpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzc5NEU3NTFCNzdFQjk3MDA1NTQzQUUgLyogTW9k
dWxlQW5hbHl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLzsg
fTsKKwkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFCNzdFQjk3
MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlFMzk2M0NFRDFCNzNGNzUwMDBFQjRDRTUgLyogTW9kdWxl
UmVjb3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
Mzk2M0NFQjFCNzNGNzUwMDBFQjRDRTUgLyogTW9kdWxlUmVjb3JkLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NjNDRUUxQjczRjc1MDAwRUI0
Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyogTm9kZXNBbmFs
eXplTW9kdWxlLmNwcCAqLzsgfTsKKwkJRTNDMDlGNTUxQjc5NjkyQTAwRUUzNkEyIC8qIE1vZHVs
ZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFM0MwOUY1NDFCNzk2OTJBMDBFRTM2QTIgLyogTW9kdWxlUmVjb3JkLmNwcCAqLzsgfTsKIAkJ
RTNFRjg4NzQxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNFRjg4NzIxQjY2
REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwICovOyB9OwogCQlFM0VG
ODg3NTFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNFRjg4NzMxQjY2REYyMzAw
M0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDlEQzE2QjEyRUYyOTNFMDAxODRBMUYgLyog
U291cmNlUHJvdmlkZXJDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNDlEQzE1NTEyRUYyNzcyMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJD
YWNoZS5jcHAgKi87IH07CkBAIC0zNTEyLDYgKzM1MTcsMTEgQEAKIAkJRTMzNjM3QTMxQjYzMjIw
MjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVmbGVjdE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUUzMzYzN0E0MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZmxlY3RPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFiaWxp
dHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc3RydWN0QWJpbGl0eS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzc5NEU3MzFCNzdFQjk3MDA1NTQzQUUg
LyogTW9kdWxlQW5hbHl6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTW9kdWxlQW5hbHl6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzc5
NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlQW5hbHl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRTM5NjNDRUIxQjczRjc1MDAwRUI0Q0U1IC8qIE1vZHVsZVJlY29yZC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVSZWNvcmQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6
ZU1vZHVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOb2Rlc0Fu
YWx5emVNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0MwOUY1NDFC
Nzk2OTJBMDBFRTM2QTIgLyogTW9kdWxlUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1vZHVsZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUUzRUY4ODcyMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvcGVydHlOYW1l
SXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3MzFCNjZE
RjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUU0OURDMTQ5MTJFRjI2MUEwMDE4NEExRiAvKiBTb3VyY2VQcm92aWRl
ckNhY2hlSXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3VyY2VQcm92
aWRlckNhY2hlSXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQyMiw5ICs0
NDMyLDE0IEBACiAJCQkJOTNGMTk4MUEwODI0NUFBRTAwMUU5QUJDIC8qIEtleXdvcmRzLnRhYmxl
ICovLAogCQkJCUY2OTJBODY1MDI1NTU5N0QwMUZGNjBGNyAvKiBMZXhlci5jcHAgKi8sCiAJCQkJ
RjY5MkE4NjYwMjU1NTk3RDAxRkY2MEY3IC8qIExleGVyLmggKi8sCisJCQkJRTM3OTRFNzMxQjc3
RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLywKKwkJCQlFMzc5NEU3NDFCNzdF
Qjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLywKKwkJCQlFM0MwOUY1NDFCNzk2OTJB
MDBFRTM2QTIgLyogTW9kdWxlUmVjb3JkLmNwcCAqLywKKwkJCQlFMzk2M0NFQjFCNzNGNzUwMDBF
QjRDRTUgLyogTW9kdWxlUmVjb3JkLmggKi8sCiAJCQkJOTMwREFEMDMwRkIxRUIxQTAwODJEMjA1
IC8qIE5vZGVDb25zdHJ1Y3RvcnMuaCAqLywKIAkJCQlGNjkyQTg2RDAyNTU1OTdEMDFGRjYwRjcg
LyogTm9kZXMuY3BwICovLAogCQkJCUY2OTJBODZFMDI1NTU5N0QwMUZGNjBGNyAvKiBOb2Rlcy5o
ICovLAorCQkJCUUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVNb2R1bGUu
Y3BwICovLAogCQkJCTkzRjBCM0E5MDlCQjREQzAwMDY4RkNFMyAvKiBQYXJzZXIuY3BwICovLAog
CQkJCTkzRjBCM0FBMDlCQjREQzAwMDY4RkNFMyAvKiBQYXJzZXIuaCAqLywKIAkJCQk5MzA1MkMz
MjBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovLApAQCAtNjE1MywxMCArNjE2
OCwxMiBAQAogCQkJCTBGRUEwQTExMTcwNTEzREIwMEJCNzIyQyAvKiBGVExPdXRwdXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTlFNzI5NDBCMTkwRjA1MTQwMDFBOTFCNSAvKiBCdW5kbGVQYXRoLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyQTE4N0RGREVDMDA4M0I2ODcgLyogRlRMUmVjb3Zl
cnlPcGNvZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNzk0RTc2MUI3N0VCOTcwMDU1NDNBRSAv
KiBNb2R1bGVBbmFseXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2QjFDQzQxODYyQzQ3ODAw
ODQ1RDk3IC8qIEZUTFJlZ2lzdGVyQXRPZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQ0VG
QUFDMTgwNEMxM0UwMDQ3MkNFNCAvKiBGVExTYXZlUmVzdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYyNUYxQjIxODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2FsbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTM1NDYyMkIxQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFiaWxpdHku
aCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTYzQ0VEMUI3M0Y3NTAwMEVCNENFNSAvKiBNb2R1bGVS
ZWNvcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjVGMUI0MTgxNjM1RjMwMDUyMkYzOSAvKiBG
VExTbG93UGF0aENhbGxLZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOUQzMzlCMTgwM0FEQjcw
MDczQzJCQyAvKiBGVExTdGFja01hcHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEwQTEyMTcw
NTEzREIwMEJCNzIyQyAvKiBGVExTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03MjEyLDYgKzcy
MjksNyBAQAogCQkJCTBGNTVGMEY0MTREMTA2MzkwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE0N0YzOUJEMTA3RUMzNzYwMDQyN0E0OCAvKiBBcmdMaXN0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNkIxQ0M5MTg2NDFERjgwMDg0NUQ5NyAvKiBBcml0eUNo
ZWNrRmFpbFJldHVyblRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzc5NEU3NTFCNzdF
Qjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3
NDNCQUExNkI4ODI0OTAwOUY5Mjc3IC8qIEFSTTY0RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTg2RDNCMkMzMTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNjVDMDI4NTAxNzE3OTVFMjAwMzUxRTM1IC8qIEFSTXY3RGlzYXNz
ZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzU3Niw2ICs3NTk0LDcgQEAKIAkJCQkwRjJC
NjZFRDE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjJENERFODE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUZFMzg0RUU1MUFEREI3QUQwMDU1REUyQyAvKiBKU0RvbGxhclZN
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzQzA5RjU1MUI3OTY5MkEwMEVFMzZBMiAvKiBNb2R1
bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc4ODAxNDAxNDcxQUQ5MjAwNDFCMDE2
IC8qIEpTRGF0ZU1hdGguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFMDUwMTcxQUE5MDkxMTAw
RDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDA1NjZE
NjEwN0VDMjcxMDA1REJDOEQgLyogSlNGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTc4
NDMsNiArNzg2Miw3IEBACiAJCQkJODY3MDRCODQxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJJbnRl
cnByZXRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI4NjEyREJBMzM3MDBBOUZFN0Ig
LyogWWFyckpJVC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI4OTEyREJBMzM3MDBBOUZF
N0IgLyogWWFyclBhdHRlcm4uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NjNDRUUxQjczRjc1
MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
NjcwNEI0MjEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCmluZGV4IGI4ZGZhOTJl
YWIzMTBiNjlhYjViYzQ3NjFmYTk3NmZiNWZhNmMyNjIuLmMxMTk1OTgwYTIwZDM4MDNkNTNhMTdh
MjVlZjU0NWJhZTEwZWU1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVp
bGRlci5oCkBAIC05Myw3ICs5Myw2IEBAIGNsYXNzIEFTVEJ1aWxkZXIgewogICAgICAgICBVbmFy
eUV4cHJDb250ZXh0KEFTVEJ1aWxkZXImKSB7fQogICAgIH07CiAKLQogICAgIHR5cGVkZWYgRXhw
cmVzc2lvbk5vZGUqIEV4cHJlc3Npb247CiAgICAgdHlwZWRlZiBKU0M6OlNvdXJjZUVsZW1lbnRz
KiBTb3VyY2VFbGVtZW50czsKICAgICB0eXBlZGVmIEFyZ3VtZW50c05vZGUqIEFyZ3VtZW50czsK
QEAgLTY1MCw5ICs2NDksOSBAQCBjbGFzcyBBU1RCdWlsZGVyIHsKICAgICAgICAgcmV0dXJuIG5l
dyAobV9wYXJzZXJBcmVuYSkgRXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlKGxvY2F0aW9uLCBtb2R1
bGVTcGVjaWZpZXIpOwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUV4cG9ydERl
ZmF1bHREZWNsYXJhdGlvbihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBTdGF0ZW1l
bnROb2RlKiBkZWNsYXJhdGlvbikKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVFeHBvcnREZWZh
dWx0RGVjbGFyYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgU3RhdGVtZW50
Tm9kZSogZGVjbGFyYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSkKICAgICB7Ci0g
ICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEV4cG9ydERlZmF1bHREZWNsYXJhdGlv
bk5vZGUobG9jYXRpb24sIGRlY2xhcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJz
ZXJBcmVuYSkgRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZShsb2NhdGlvbiwgZGVjbGFyYXRp
b24sIGxvY2FsTmFtZSk7CiAgICAgfQogCiAgICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRXhwb3J0
TG9jYWxEZWNsYXJhdGlvbihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBTdGF0ZW1l
bnROb2RlKiBkZWNsYXJhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9N
b2R1bGVBbmFseXplci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDZkNmJkMjhhZWFjMGY3ZTFhZWU5ZTk0MDc0
OWM0ZjcwYjBkYTRjOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCkBAIC0wLDAgKzEsMTUwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIk1vZHVsZUFuYWx5emVyLmgiCisKKyNpbmNsdWRlICJNb2R1bGVSZWNvcmQuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKKworTW9kdWxlQW5hbHl6ZXI6Ok1vZHVsZUFuYWx5emVyKFZNJiB2
bSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZGVjbGFyZWRWYXJpYWJsZXMsIGNvbnN0IFZh
cmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMpCisgICAgOiBtX3ZtKCZ2bSkKKyAg
ICAsIG1fbW9kdWxlUmVjb3JkKE1vZHVsZVJlY29yZDo6Y3JlYXRlKCkpCisgICAgLCBtX2RlY2xh
cmVkVmFyaWFibGVzKGRlY2xhcmVkVmFyaWFibGVzKQorICAgICwgbV9sZXhpY2FsVmFyaWFibGVz
KGxleGljYWxWYXJpYWJsZXMpCit7Cit9CisKK0lkZW50aWZpZXIgTW9kdWxlQW5hbHl6ZXI6OmV4
cG9ydGVkQmluZGluZyhjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudCkKK3sK
KyAgICBjb25zdCBhdXRvIGl0ZXJhdG9yID0gbV9hbGlhc01hcC5maW5kKGlkZW50KTsKKyAgICBp
ZiAoaXRlcmF0b3IgIT0gbV9hbGlhc01hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGl0ZXJhdG9y
LT52YWx1ZTsKKyAgICByZXR1cm4gSWRlbnRpZmllcjo6ZnJvbVVpZCgmdm0oKSwgaWRlbnQuZ2V0
KCkpOworfQorCit2b2lkIE1vZHVsZUFuYWx5emVyOjpkZWNsYXJlRXhwb3J0QWxpYXMoY29uc3Qg
SWRlbnRpZmllciYgbG9jYWxOYW1lLCBjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lKQorewor
ICAgIG1fYWxpYXNNYXAuYWRkKGxvY2FsTmFtZS5pbXBsKCksIGV4cG9ydE5hbWUpOworfQorCit2
b2lkIE1vZHVsZUFuYWx5emVyOjpleHBvcnRWYXJpYWJsZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0
cmluZ0ltcGw+JiBsb2NhbE5hbWUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSYgdmFy
aWFibGUpCit7CisgICAgLy8gSW4gdGhlIHBhcnNlciwgd2UgYWxyZWFkeSBtYXJrZWQgdGhlIHZh
cmlhYmxlcyBhcyBFeHBvcnRlZCBhbmQgSW1wb3J0ZWQuCisgICAgLy8gQnkgbGV2ZXJhZ2luZyB0
aGlzIGluZm9ybWF0aW9uLCB3ZSBjb2xsZWN0IHRoZSBpbmZvcm1hdGlvbiB0aGF0IGlzIG5lZWRl
ZAorICAgIC8vIHRvIGNvbnN0cnVjdCB0aGUgbW9kdWxlIGVudmlyb25tZW50LgorICAgIC8vCisg
ICAgLy8gSSBFCisgICAgLy8gICAqID0gZXhwb3J0ZWQgbW9kdWxlIGxvY2FsIHZhcmlhYmxlCisg
ICAgLy8gKiAgID0gaW1wb3J0ZWQgYmluZGluZworICAgIC8vICAgICA9IG5vbi1leHBvcnRlZCBt
b2R1bGUgbG9jYWwgdmFyaWFibGUKKyAgICAvLyAqICogPSBpbmRpcmVjdCBleHBvcnRlZCBiaW5k
aW5nCisgICAgLy8KKyAgICAvLyBPbmUgZXhjZXB0aW9uIGlzIG5hbWVzcGFjZSBiaW5kaW5nIChs
aWtlIGltcG9ydCAqIGFzIG5zIGZyb20gIm1vZCIpLgorICAgIC8vIFRoaXMgaXMgYW5ub3RhdGVk
IGFzIGFuIGltcG9ydGVkLCBidXQgdGhlIGFjdHVhbCBiaW5kaW5nIGlzIGxvY2F0ZSBpbiB0aGUK
KyAgICAvLyBjdXJyZW50IG1vZHVsZS4KKworICAgIGlmICghdmFyaWFibGUuaXNFeHBvcnRlZCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBJZGVudGlmaWVyIGV4cG9ydE5hbWUgPSBl
eHBvcnRlZEJpbmRpbmcobG9jYWxOYW1lKTsKKworICAgIC8vIGV4cG9ydGVkIG1vZHVsZSBsb2Nh
bCB2YXJpYWJsZQorICAgIGlmICghdmFyaWFibGUuaXNJbXBvcnRlZCgpKSB7CisgICAgICAgIG1v
ZHVsZVJlY29yZCgpLmFkZEV4cG9ydEVudHJ5KE1vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNy
ZWF0ZUxvY2FsKGV4cG9ydE5hbWUsIElkZW50aWZpZXI6OmZyb21VaWQobV92bSwgbG9jYWxOYW1l
LmdldCgpKSwgdmFyaWFibGUpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIGlu
ZGlyZWN0IGV4cG9ydGVkIGJpbmRpbmcKKyAgICBjb25zdCBhdXRvJiBpbXBvcnRFbnRyeSA9IG1v
ZHVsZVJlY29yZCgpLmxvb2tVcEltcG9ydEVudHJ5KGxvY2FsTmFtZSk7CisgICAgaWYgKGltcG9y
dEVudHJ5LmlzTmFtZXNwYWNlKHZtKCkpKSB7CisgICAgICAgIC8vIGltcG9ydCAqIGFzIG5hbWVz
cGFjZSBmcm9tICJtb2QiCisgICAgICAgIC8vIGV4cG9ydCB7IG5hbWVzcGFjZSB9CisgICAgICAg
IG1vZHVsZVJlY29yZCgpLmFkZEV4cG9ydEVudHJ5KE1vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6
OmNyZWF0ZU5hbWVzcGFjZShleHBvcnROYW1lLCBpbXBvcnRFbnRyeS5tb2R1bGVSZXF1ZXN0KSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBpbXBvcnQgYSBmcm9tICJtb2QiCisg
ICAgLy8gZXhwb3J0IHsgYSB9CisgICAgbW9kdWxlUmVjb3JkKCkuYWRkRXhwb3J0RW50cnkoTW9k
dWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlSW5kaXJlY3QoZXhwb3J0TmFtZSwgaW1wb3J0
RW50cnkuaW1wb3J0TmFtZSwgaW1wb3J0RW50cnkubW9kdWxlUmVxdWVzdCkpOworfQorCisKKwor
UmVmPE1vZHVsZVJlY29yZD4gTW9kdWxlQW5hbHl6ZXI6OmFuYWx5emUoTW9kdWxlUHJvZ3JhbU5v
ZGUmIG1vZHVsZVByb2dyYW1Ob2RlKQoreworICAgIC8vIFRyYXZlcnNlIHRoZSBtb2R1bGUgQVNU
IGFuZCBjb2xsZWN0CisgICAgLy8gMS4gSW1wb3J0IGVudHJpZXMKKyAgICAvLyAyLiBFeHBvcnQg
ZW50cmllcyB0aGF0IGhhdmUgRnJvbUNsYXVzZSAoZS5nLiBleHBvcnQgeyBhIH0gZnJvbSAibW9k
IikKKyAgICAvLyAzLiBFeHBvcnQgZW50cmllcyB0aGF0IGhhdmUgc3RhciAoZS5nLiBleHBvcnQg
KiBmcm9tICJtb2QiKQorICAgIC8vIDQuIEFsaWFzZWQgZXhwb3J0IG5hbWVzIChlLmcuIGV4cG9y
dCB7IGEgYXMgYiB9KQorICAgIG1vZHVsZVByb2dyYW1Ob2RlLmFuYWx5emVNb2R1bGUoKnRoaXMp
OworCisgICAgLy8gQmFzZWQgb24gdGhlIGNvbGxlY3RlZCBpbmZvcm1hdGlvbiwgY2F0ZWdvcml6
ZSBleHBvcnQgZW50cmllcyBpbnRvIDMgdHlwZXMuCisgICAgLy8gMS4gTG9jYWwgZXhwb3J0IGVu
dHJpZXMKKyAgICAvLyAgICAgVGhpcyByZWZlcmVuY2VzIHRoZSBsb2NhbCB2YXJpYWJsZSBpbiB0
aGUgY3VycmVudCBtb2R1bGUuCisgICAgLy8gICAgIFRoaXMgdmFyaWFibGUgc2hvdWxkIGJlIGFs
bG9jYXRlZCBpbiB0aGUgY3VycmVudCBtb2R1bGUgZW52aXJvbm1lbnQgYXMgYSBoZWFwIHZhcmlh
YmxlLgorICAgIC8vCisgICAgLy8gICAgIGNvbnN0IHZhcmlhYmxlID0gMjAKKyAgICAvLyAgICAg
ZXhwb3J0IHsgdmFyaWFibGUgfQorICAgIC8vCisgICAgLy8gMi4gTmFtZXNwYWNlIGV4cG9ydCBl
bnRyaWVzCisgICAgLy8gICAgIFRoaXMgcmVmZXJlbmNlcyB0aGUgbmFtZXNwYWNlIG9iamVjdCBp
bXBvcnRlZCBieSBzb21lIGltcG9ydCBlbnRyaWVzLgorICAgIC8vICAgICBUaGlzIHZhcmlhYmxl
IGl0c2VsZiBzaG91bGQgYmUgYWxsb2NhdGVkIGluIHRoZSBjdXJyZW50IG1vZHVsZSBlbnZpcm9u
bWVudCBhcyBhIGhlYXAgdmFyaWFibGUuCisgICAgLy8gICAgIEJ1dCB3aGVuIHRoZSBvdGhlciBt
b2R1bGVzIGF0dGVtcHQgdG8gcmVzb2x2ZSB0aGlzIGV4cG9ydCBuYW1lIGluIHRoaXMgbW9kdWxl
LCB0aGlzIG1vZHVsZQorICAgIC8vICAgICBzaG91bGQgdGVsbCB0aGUgbGluayB0byB0aGUgb3Jp
Z2luYWwgbW9kdWxlLgorICAgIC8vCisgICAgLy8gICAgIGltcG9ydCAqIGFzIG5hbWVzcGFjZSBm
cm9tICJtb2QiCisgICAgLy8gICAgIGV4cG9ydCB7IG5hbWVzcGFjZSBhcyBtb2QgfQorICAgIC8v
CisgICAgLy8gMy4gSW5kaXJlY3QgZXhwb3J0IGVudHJpZXMKKyAgICAvLyAgICAgVGhpcyByZWZl
cmVuY2VzIHRoZSBpbXBvcnRlZCBiaW5kaW5nIG5hbWUgZnJvbSB0aGUgb3RoZXIgbW9kdWxlLgor
ICAgIC8vICAgICBUaGlzIG1vZHVsZSBlbnZpcm9ubWVudCBpdHNlbGYgc2hvdWxkIGhvbGQgdGhl
IHBvaW50ZXIgdG8gKDEpIHRoZSBvcmlnaW5hbCBtb2R1bGUgYW5kCisgICAgLy8gICAgICgyKSB0
aGUgYmluZGluZyBpbiB0aGUgb3JpZ2luYWwgbW9kdWxlLiBUaGUgdmFyaWFibGUgaXRzZWxmIGlz
IGFsbG9jYXRlZCBpbiB0aGUgb3JpZ2luYWwKKyAgICAvLyAgICAgbW9kdWxlLiBUaGlzIGluZGly
ZWN0IGJpbmRpbmcgaXMgcmVzb2x2ZWQgd2hlbiB0aGUgQ29kZUJsb2NrIHJlc29sdmVzIHRoZSBy
ZWZlcmVuY2VzLgorICAgIC8vCisgICAgLy8gICAgIGltcG9ydCBtb2QgZnJvbSAibW9kIgorICAg
IC8vICAgICBleHBvcnQgeyBtb2QgfQorICAgIC8vCisgICAgLy8gICAgIGV4cG9ydCB7IGEgfSBm
cm9tICJtb2QiCisgICAgLy8KKyAgICAvLyBBbmQgc2VwYXJldGVkIGZyb20gdGhlIGFib3ZlIDMg
dHlwZXMsIHdlIGFsc28gY29sbGVjdCB0aGUgc3RhciBleHBvcnQgZW50cmllcy4KKyAgICAvLwor
ICAgIC8vIDQuIFN0YXIgZXhwb3J0IGVudHJpZXMKKyAgICAvLyAgICAgVGhpcyBleHBvcnRzIGFs
bCB0aGUgbmFtZXMgZnJvbSB0aGUgc3BlY2lmaWVkIGV4dGVybmFsIG1vZHVsZSBhcyB0aGUgY3Vy
cmVudCBtb2R1bGUncyBuYW1lLgorICAgIC8vCisgICAgLy8gICAgIGV4cG9ydCAqIGZyb20gIm1v
ZCIKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBtX2RlY2xhcmVkVmFyaWFibGVzKQorICAg
ICAgICBleHBvcnRWYXJpYWJsZShwYWlyLmtleSwgcGFpci52YWx1ZSk7CisKKyAgICBmb3IgKGNv
bnN0IGF1dG8mIHBhaXIgOiBtX2xleGljYWxWYXJpYWJsZXMpCisgICAgICAgIGV4cG9ydFZhcmlh
YmxlKHBhaXIua2V5LCBwYWlyLnZhbHVlKTsKKworICAgIHJldHVybiBXVEY6Om1vdmUobV9tb2R1
bGVSZWNvcmQpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZDYwZjAzOGY0NjIyODBj
OWE1MmY1MjYzOThlM2JiODZjZWY0MDRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1vZHVsZUFu
YWx5emVyX2gKKyNkZWZpbmUgTW9kdWxlQW5hbHl6ZXJfaAorCisjaW5jbHVkZSAiTW9kdWxlUmVj
b3JkLmgiCisjaW5jbHVkZSAiTm9kZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIE1v
ZHVsZUFuYWx5emVyIDogcHVibGljIFJlZkNvdW50ZWQ8TW9kdWxlQW5hbHl6ZXI+IHsKK3B1Ymxp
YzoKKyAgICBNb2R1bGVBbmFseXplcihWTSYsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGRl
Y2xhcmVkVmFyaWFibGVzLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFi
bGVzKTsKKworICAgIFJlZjxNb2R1bGVSZWNvcmQ+IGFuYWx5emUoTW9kdWxlUHJvZ3JhbU5vZGUm
KTsKKworICAgIFZNJiB2bSgpIHsgcmV0dXJuICptX3ZtOyB9CisKKyAgICBNb2R1bGVSZWNvcmQm
IG1vZHVsZVJlY29yZCgpIHsgcmV0dXJuIG1fbW9kdWxlUmVjb3JkOyB9CisKKyAgICB2b2lkIGRl
Y2xhcmVFeHBvcnRBbGlhcyhjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUsIGNvbnN0IElkZW50
aWZpZXImIGV4cG9ydE5hbWUpOworCitwcml2YXRlOgorICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyLCBJZGVudGlmaWVyUmVwSGFzaCwgSGFz
aFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+Pj4gSWRlbnRpZmllckFsaWFzTWFwOwor
CisgICAgdm9pZCBleHBvcnRWYXJpYWJsZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
JiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5Jik7CisKKyAgICBJZGVudGlmaWVyIGV4
cG9ydGVkQmluZGluZyhjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudCk7CisK
KyAgICBWTSogbV92bTsKKyAgICBSZWY8TW9kdWxlUmVjb3JkPiBtX21vZHVsZVJlY29yZDsKKyAg
ICBWYXJpYWJsZUVudmlyb25tZW50IG1fZGVjbGFyZWRWYXJpYWJsZXM7CisgICAgVmFyaWFibGVF
bnZpcm9ubWVudCBtX2xleGljYWxWYXJpYWJsZXM7CisgICAgSWRlbnRpZmllckFsaWFzTWFwIG1f
YWxpYXNNYXA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIE1vZHVsZUFu
YWx5emVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxl
UmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlUmVjb3JkLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yODNlMjU0M2Q3OGM2Y2I0YzVjYmIxNDM5NmMzNTVkYTI1NTNiMTI2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVSZWNv
cmQuY3BwCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vZHVsZVJlY29y
ZC5oIgorCisjaW5jbHVkZSAiSWRlbnRpZmllcklubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKKworYXV0byBNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVMb2NhbChjb25zdCBJ
ZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUsIGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSYgdmFyaWFibGUpIC0+IEV4cG9ydEVudHJ5Cit7Cisg
ICAgcmV0dXJuIEV4cG9ydEVudHJ5IHsgVHlwZTo6TG9jYWwsIGV4cG9ydE5hbWUsIElkZW50aWZp
ZXIoKSwgSWRlbnRpZmllcigpLCBsb2NhbE5hbWUsIHZhcmlhYmxlIH07Cit9CisKK2F1dG8gTW9k
dWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlTmFtZXNwYWNlKGNvbnN0IElkZW50aWZpZXIm
IGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpIC0+IEV4cG9ydEVudHJ5
Cit7CisgICAgcmV0dXJuIEV4cG9ydEVudHJ5IHsgVHlwZTo6TmFtZXNwYWNlLCBleHBvcnROYW1l
LCBtb2R1bGVOYW1lLCBJZGVudGlmaWVyKCksIElkZW50aWZpZXIoKSwgVmFyaWFibGVFbnZpcm9u
bWVudEVudHJ5KCkgfTsKK30KKworYXV0byBNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVh
dGVJbmRpcmVjdChjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVy
JiBpbXBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKSAtPiBFeHBvcnRFbnRy
eQoreworICAgIHJldHVybiBFeHBvcnRFbnRyeSB7IFR5cGU6OkluZGlyZWN0LCBleHBvcnROYW1l
LCBtb2R1bGVOYW1lLCBpbXBvcnROYW1lLCBJZGVudGlmaWVyKCksIFZhcmlhYmxlRW52aXJvbm1l
bnRFbnRyeSgpIH07Cit9CisKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZVJlY29yZC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Nb2R1bGVSZWNvcmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNTM1Njk3NTI2ZGExNzg2
YTJmYTNiNTc2OGM1MzY3NzY3NzE1MTNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVSZWNvcmQuaApAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgTW9kdWxlUmVj
b3JkX2gKKyNkZWZpbmUgTW9kdWxlUmVjb3JkX2gKKworI2luY2x1ZGUgIk5vZGVzLmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKworbmFt
ZXNwYWNlIEpTQyB7CisKKy8vIEJhc2VkIG9uIHRoZSBTb3VyY2UgVGV4dCBNb2R1bGUgUmVjb3Jk
CisvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMt
c291cmNlLXRleHQtbW9kdWxlLXJlY29yZHMKK2NsYXNzIE1vZHVsZVJlY29yZCA6IHB1YmxpYyBS
ZWZDb3VudGVkPE1vZHVsZVJlY29yZD4geworcHVibGljOgorICAgIHN0cnVjdCBFeHBvcnRFbnRy
eSB7CisgICAgICAgIGVudW0gY2xhc3MgVHlwZSB7CisgICAgICAgICAgICBMb2NhbCwKKyAgICAg
ICAgICAgIE5hbWVzcGFjZSwKKyAgICAgICAgICAgIEluZGlyZWN0CisgICAgICAgIH07CisKKyAg
ICAgICAgc3RhdGljIEV4cG9ydEVudHJ5IGNyZWF0ZUxvY2FsKGNvbnN0IElkZW50aWZpZXImIGV4
cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSwgY29uc3QgVmFyaWFibGVFbnZp
cm9ubWVudEVudHJ5Jik7CisgICAgICAgIHN0YXRpYyBFeHBvcnRFbnRyeSBjcmVhdGVOYW1lc3Bh
Y2UoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxl
TmFtZSk7CisgICAgICAgIHN0YXRpYyBFeHBvcnRFbnRyeSBjcmVhdGVJbmRpcmVjdChjb25zdCBJ
ZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBpbXBvcnROYW1lLCBjb25z
dCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKTsKKworICAgICAgICBUeXBlIHR5cGU7CisgICAgICAg
IElkZW50aWZpZXIgZXhwb3J0TmFtZTsKKyAgICAgICAgSWRlbnRpZmllciBtb2R1bGVOYW1lOwor
ICAgICAgICBJZGVudGlmaWVyIGltcG9ydE5hbWU7CisgICAgICAgIElkZW50aWZpZXIgbG9jYWxO
YW1lOworICAgICAgICBWYXJpYWJsZUVudmlyb25tZW50RW50cnkgdmFyaWFibGU7CisgICAgfTsK
KworICAgIHN0cnVjdCBJbXBvcnRFbnRyeSB7CisgICAgICAgIElkZW50aWZpZXIgbW9kdWxlUmVx
dWVzdDsKKyAgICAgICAgSWRlbnRpZmllciBpbXBvcnROYW1lOworICAgICAgICBJZGVudGlmaWVy
IGxvY2FsTmFtZTsKKworICAgICAgICBib29sIGlzTmFtZXNwYWNlKFZNJiB2bSkgY29uc3QKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGltcG9ydE5hbWUgPT0gdm0ucHJvcGVydHlOYW1l
cy0+dGltZXNJZGVudGlmaWVyOworICAgICAgICB9CisgICAgfTsKKworICAgIHR5cGVkZWYgV1RG
OjpMaXN0SGFzaFNldDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBJZGVudGlmaWVyUmVwSGFz
aD4gT3JkZXJlZElkZW50aWZpZXJTZXQ7CisgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVbmlx
dWVkU3RyaW5nSW1wbD4sIEltcG9ydEVudHJ5LCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0
czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+Pj4gSW1wb3J0TWFwOworICAgIHR5cGVkZWYgSGFz
aE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBFeHBvcnRFbnRyeSwgSWRlbnRpZmllclJl
cEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4+IEV4cG9ydE1hcDsK
KworICAgIHN0YXRpYyBSZWY8TW9kdWxlUmVjb3JkPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9kdWxlUmVjb3JkKTsKKyAgICB9CisKKyAgICB2b2lkIGFw
cGVuZFJlcXVlc3RlZE1vZHVsZShjb25zdCBJZGVudGlmaWVyJik7CisgICAgdm9pZCBhZGRTdGFy
RXhwb3J0RW50cnkoY29uc3QgSWRlbnRpZmllciYpOworICAgIHZvaWQgYWRkSW1wb3J0RW50cnko
Y29uc3QgSW1wb3J0RW50cnkmKTsKKyAgICB2b2lkIGFkZEV4cG9ydEVudHJ5KGNvbnN0IEV4cG9y
dEVudHJ5Jik7CisKKyAgICBjb25zdCBJbXBvcnRFbnRyeSYgbG9va1VwSW1wb3J0RW50cnkoY29u
c3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1lKTsKKworcHJpdmF0ZToKKyAg
ICAvLyBNYXAgbG9jYWxOYW1lIC0+IEltcG9ydEVudHJ5LgorICAgIEltcG9ydE1hcCBtX2ltcG9y
dEVudHJpZXM7CisKKyAgICAvLyBNYXAgZXhwb3J0TmFtZSAtPiBFeHBvcnRFbnRyeS4KKyAgICBF
eHBvcnRNYXAgbV9leHBvcnRFbnRyaWVzOworCisgICAgT3JkZXJlZElkZW50aWZpZXJTZXQgbV9z
dGFyRXhwb3J0RW50cmllczsKKyAgICBPcmRlcmVkSWRlbnRpZmllclNldCBtX3JlcXVlc3RlZE1v
ZHVsZXM7Cit9OworCitpbmxpbmUgdm9pZCBNb2R1bGVSZWNvcmQ6OmFwcGVuZFJlcXVlc3RlZE1v
ZHVsZShjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQoreworICAgIG1fcmVxdWVzdGVkTW9k
dWxlcy5hZGQobW9kdWxlTmFtZS5pbXBsKCkpOworfQorCitpbmxpbmUgdm9pZCBNb2R1bGVSZWNv
cmQ6OmFkZEltcG9ydEVudHJ5KGNvbnN0IEltcG9ydEVudHJ5JiBlbnRyeSkKK3sKKyAgICBtX2lt
cG9ydEVudHJpZXMuYWRkKGVudHJ5LmxvY2FsTmFtZS5pbXBsKCksIGVudHJ5KTsKK30KKworaW5s
aW5lIHZvaWQgTW9kdWxlUmVjb3JkOjphZGRFeHBvcnRFbnRyeShjb25zdCBFeHBvcnRFbnRyeSYg
ZW50cnkpCit7CisgICAgbV9leHBvcnRFbnRyaWVzLmFkZChlbnRyeS5leHBvcnROYW1lLmltcGwo
KSwgZW50cnkpOworfQorCitpbmxpbmUgdm9pZCBNb2R1bGVSZWNvcmQ6OmFkZFN0YXJFeHBvcnRF
bnRyeShjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQoreworICAgIG1fc3RhckV4cG9ydEVu
dHJpZXMuYWRkKG1vZHVsZU5hbWUuaW1wbCgpKTsKK30KKworaW5saW5lIGF1dG8gTW9kdWxlUmVj
b3JkOjpsb29rVXBJbXBvcnRFbnRyeShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBs
b2NhbE5hbWUpIC0+IGNvbnN0IEltcG9ydEVudHJ5JgoreworICAgIHJldHVybiAoKm1faW1wb3J0
RW50cmllcy5maW5kKGxvY2FsTmFtZSkpLnZhbHVlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MK
KworI2VuZGlmIC8vIE1vZHVsZVJlY29yZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCmluZGV4IGIxOGMzNDM2ODZjOGM1YWZiODI1ZGM1MTM1
ZjM0NjZkNjUxOTcyMzAuLjA0NTEwYmU1OTczZGQ5NDBiOWNkNjdjZWNhYjNiMzdjYjI0NmJlNmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9y
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5o
CkBAIC03MzMsNiArNzMzLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKKyAg
ICBpbmxpbmUgTW9kdWxlRGVjbGFyYXRpb25Ob2RlOjpNb2R1bGVEZWNsYXJhdGlvbk5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxv
Y2F0aW9uKQorICAgIHsKKyAgICB9CisKICAgICBpbmxpbmUgTW9kdWxlU3BlY2lmaWVyTm9kZTo6
TW9kdWxlU3BlY2lmaWVyTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25z
dCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQogICAgICAgICA6IE5vZGUobG9jYXRpb24pCiAgICAg
ICAgICwgbV9tb2R1bGVOYW1lKG1vZHVsZU5hbWUpCkBAIC03NDcsMzIgKzc1MiwzMyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICB9CiAKICAgICBpbmxpbmUgSW1wb3J0RGVjbGFyYXRpb25Ob2RlOjpJ
bXBvcnREZWNsYXJhdGlvbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgSW1w
b3J0U3BlY2lmaWVyTGlzdE5vZGUqIGltcG9ydFNwZWNpZmllckxpc3QsIE1vZHVsZVNwZWNpZmll
ck5vZGUqIG1vZHVsZVNwZWNpZmllcikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9u
KQorICAgICAgICA6IE1vZHVsZURlY2xhcmF0aW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBt
X3NwZWNpZmllckxpc3QoaW1wb3J0U3BlY2lmaWVyTGlzdCkKICAgICAgICAgLCBtX21vZHVsZVNw
ZWNpZmllcihtb2R1bGVTcGVjaWZpZXIpCiAgICAgewogICAgIH0KIAogICAgIGlubGluZSBFeHBv
cnRBbGxEZWNsYXJhdGlvbk5vZGU6OkV4cG9ydEFsbERlY2xhcmF0aW9uTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBNb2R1bGVTcGVjaWZpZXJOb2RlKiBtb2R1bGVTcGVjaWZp
ZXIpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikKKyAgICAgICAgOiBNb2R1bGVE
ZWNsYXJhdGlvbk5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9tb2R1bGVTcGVjaWZpZXIobW9k
dWxlU3BlY2lmaWVyKQogICAgIHsKICAgICB9CiAKLSAgICBpbmxpbmUgRXhwb3J0RGVmYXVsdERl
Y2xhcmF0aW9uTm9kZTo6RXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mIGxvY2F0aW9uLCBTdGF0ZW1lbnROb2RlKiBkZWNsYXJhdGlvbikKLSAgICAgICAg
OiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQorICAgIGlubGluZSBFeHBvcnREZWZhdWx0RGVjbGFy
YXRpb25Ob2RlOjpFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIFN0YXRlbWVudE5vZGUqIGRlY2xhcmF0aW9uLCBjb25zdCBJZGVudGlm
aWVyJiBsb2NhbE5hbWUpCisgICAgICAgIDogTW9kdWxlRGVjbGFyYXRpb25Ob2RlKGxvY2F0aW9u
KQogICAgICAgICAsIG1fZGVjbGFyYXRpb24oZGVjbGFyYXRpb24pCisgICAgICAgICwgbV9sb2Nh
bE5hbWUobG9jYWxOYW1lKQogICAgIHsKICAgICB9CiAKICAgICBpbmxpbmUgRXhwb3J0TG9jYWxE
ZWNsYXJhdGlvbk5vZGU6OkV4cG9ydExvY2FsRGVjbGFyYXRpb25Ob2RlKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIFN0YXRlbWVudE5vZGUqIGRlY2xhcmF0aW9uKQotICAgICAgICA6
IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCisgICAgICAgIDogTW9kdWxlRGVjbGFyYXRpb25Ob2Rl
KGxvY2F0aW9uKQogICAgICAgICAsIG1fZGVjbGFyYXRpb24oZGVjbGFyYXRpb24pCiAgICAgewog
ICAgIH0KIAogICAgIGlubGluZSBFeHBvcnROYW1lZERlY2xhcmF0aW9uTm9kZTo6RXhwb3J0TmFt
ZWREZWNsYXJhdGlvbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwb3J0
U3BlY2lmaWVyTGlzdE5vZGUqIGV4cG9ydFNwZWNpZmllckxpc3QsIE1vZHVsZVNwZWNpZmllck5v
ZGUqIG1vZHVsZVNwZWNpZmllcikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQor
ICAgICAgICA6IE1vZHVsZURlY2xhcmF0aW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX3Nw
ZWNpZmllckxpc3QoZXhwb3J0U3BlY2lmaWVyTGlzdCkKICAgICAgICAgLCBtX21vZHVsZVNwZWNp
Zmllcihtb2R1bGVTcGVjaWZpZXIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oCmluZGV4IDUyODRjOWE3YjJkNTQ3Y2JjY2Q2NjI4MDVjNmU5ZGVmNjU5NzkwY2IuLjA0NzRm
MjIwMjc1NmY1ZGU5YTk4ZWY0NjhlNmVmOTYxMzIzMzc0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmgKQEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xh
c3MgUmVnaXN0ZXJJRDsKICAgICBjbGFzcyBKU1Njb3BlOwogICAgIGNsYXNzIFNjb3BlTm9kZTsK
KyAgICBjbGFzcyBNb2R1bGVBbmFseXplcjsKIAogICAgIGVudW0gT3BlcmF0b3IgewogICAgICAg
ICBPcEVxdWFsLApAQCAtMTI3Niw2ICsxMjc3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IFN0YXRlbWVudE5vZGUqIGxhc3RTdGF0ZW1lbnQoKSBjb25zdDsKIAogICAgICAgICB2b2lkIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9uKTsK
KyAgICAgICAgdm9pZCBhbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJik7CiAKICAgICBwcml2
YXRlOgogICAgICAgICBTdGF0ZW1lbnROb2RlKiBtX2hlYWQ7CkBAIC0xNTc0LDYgKzE1NzYsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIHZvaWQgc2V0Q2xvc2VkVmFyaWFi
bGVzKFZlY3RvcjxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiYmKSB7IH0KIAorICAgICAgICB2
b2lkIGFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImKTsKKwogICAgIHByb3RlY3RlZDoKICAg
ICAgICAgaW50IG1fc3RhcnRMaW5lTnVtYmVyOwogICAgICAgICB1bnNpZ25lZCBtX3N0YXJ0U3Rh
cnRPZmZzZXQ7CkBAIC0xNjczLDcgKzE2NzcsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IFNwZWNpZmllcnMgbV9zcGVjaWZpZXJzOwogICAgIH07CiAKLSAgICBjbGFzcyBJbXBvcnREZWNs
YXJhdGlvbk5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CisgICAgY2xhc3MgTW9kdWxlRGVj
bGFyYXRpb25Ob2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImKSA9IDA7CisKKyAg
ICBwcm90ZWN0ZWQ6CisgICAgICAgIE1vZHVsZURlY2xhcmF0aW9uTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mKTsKKyAgICB9OworCisgICAgY2xhc3MgSW1wb3J0RGVjbGFyYXRpb25Ob2RlIDog
cHVibGljIE1vZHVsZURlY2xhcmF0aW9uTm9kZSB7CiAgICAgcHVibGljOgogICAgICAgICBJbXBv
cnREZWNsYXJhdGlvbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgSW1wb3J0U3BlY2lmaWVy
TGlzdE5vZGUqLCBNb2R1bGVTcGVjaWZpZXJOb2RlKik7CiAKQEAgLTE2ODIsMTIgKzE2OTQsMTMg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlk
ZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImKSBv
dmVycmlkZTsKIAogICAgICAgICBJbXBvcnRTcGVjaWZpZXJMaXN0Tm9kZSogbV9zcGVjaWZpZXJM
aXN0OwogICAgICAgICBNb2R1bGVTcGVjaWZpZXJOb2RlKiBtX21vZHVsZVNwZWNpZmllcjsKICAg
ICB9OwogCi0gICAgY2xhc3MgRXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlIDogcHVibGljIFN0YXRl
bWVudE5vZGUgeworICAgIGNsYXNzIEV4cG9ydEFsbERlY2xhcmF0aW9uTm9kZSA6IHB1YmxpYyBN
b2R1bGVEZWNsYXJhdGlvbk5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgRXhwb3J0QWxsRGVj
bGFyYXRpb25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIE1vZHVsZVNwZWNpZmllck5vZGUq
KTsKIApAQCAtMTY5NSwyMSArMTcwOCwyNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgYW5hbHl6
ZU1vZHVsZShNb2R1bGVBbmFseXplciYpIG92ZXJyaWRlOworCiAgICAgICAgIE1vZHVsZVNwZWNp
Zmllck5vZGUqIG1fbW9kdWxlU3BlY2lmaWVyOwogICAgIH07CiAKLSAgICBjbGFzcyBFeHBvcnRE
ZWZhdWx0RGVjbGFyYXRpb25Ob2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgeworICAgIGNsYXNz
IEV4cG9ydERlZmF1bHREZWNsYXJhdGlvbk5vZGUgOiBwdWJsaWMgTW9kdWxlRGVjbGFyYXRpb25O
b2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIEV4cG9ydERlZmF1bHREZWNsYXJhdGlvbk5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgU3RhdGVtZW50Tm9kZSopOworICAgICAgICBFeHBvcnRE
ZWZhdWx0RGVjbGFyYXRpb25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFN0YXRlbWVudE5v
ZGUqLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUpOwogCiAgICAgICAgIGNvbnN0IFN0YXRl
bWVudE5vZGUmIGRlY2xhcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gKm1fZGVjbGFyYXRpb247IH0K
KyAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9s
b2NhbE5hbWU7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgYW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYpIG92ZXJyaWRl
OwogICAgICAgICBTdGF0ZW1lbnROb2RlKiBtX2RlY2xhcmF0aW9uOworICAgICAgICBjb25zdCBJ
ZGVudGlmaWVyJiBtX2xvY2FsTmFtZTsKICAgICB9OwogCi0gICAgY2xhc3MgRXhwb3J0TG9jYWxE
ZWNsYXJhdGlvbk5vZGUgOiBwdWJsaWMgU3RhdGVtZW50Tm9kZSB7CisgICAgY2xhc3MgRXhwb3J0
TG9jYWxEZWNsYXJhdGlvbk5vZGUgOiBwdWJsaWMgTW9kdWxlRGVjbGFyYXRpb25Ob2RlIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIEV4cG9ydExvY2FsRGVjbGFyYXRpb25Ob2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIFN0YXRlbWVudE5vZGUqKTsKIApAQCAtMTcxNyw2ICsxNzM1LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImKSBvdmVycmlk
ZTsKICAgICAgICAgU3RhdGVtZW50Tm9kZSogbV9kZWNsYXJhdGlvbjsKICAgICB9OwogCkBAIC0x
NzQ2LDcgKzE3NjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3BlY2lmaWVycyBtX3Nw
ZWNpZmllcnM7CiAgICAgfTsKIAotICAgIGNsYXNzIEV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2Rl
IDogcHVibGljIFN0YXRlbWVudE5vZGUgeworICAgIGNsYXNzIEV4cG9ydE5hbWVkRGVjbGFyYXRp
b25Ob2RlIDogcHVibGljIE1vZHVsZURlY2xhcmF0aW9uTm9kZSB7CiAgICAgcHVibGljOgogICAg
ICAgICBFeHBvcnROYW1lZERlY2xhcmF0aW9uTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHBvcnRTcGVjaWZpZXJMaXN0Tm9kZSosIE1vZHVsZVNwZWNpZmllck5vZGUqKTsKIApAQCAtMTc1
NSw2ICsxNzc0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2
aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFuYWx5emVNb2R1bGUoTW9kdWxl
QW5hbHl6ZXImKSBvdmVycmlkZTsKICAgICAgICAgRXhwb3J0U3BlY2lmaWVyTGlzdE5vZGUqIG1f
c3BlY2lmaWVyTGlzdDsKICAgICAgICAgTW9kdWxlU3BlY2lmaWVyTm9kZSogbV9tb2R1bGVTcGVj
aWZpZXIgeyBudWxscHRyIH07CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTk3NzU4OWVhM2Ez
MGIxYWI1NWYyNmE3ZDRkODdkNWJkNDZiYTE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlc0FuYWx5emVNb2R1bGUuY3BwCkBAIC0wLDAgKzEsMTMx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5vZGVzLmgiCisjaW5jbHVkZSAiTm9kZUNvbnN0cnVj
dG9ycy5oIgorCisjaW5jbHVkZSAiTW9kdWxlQW5hbHl6ZXIuaCIKKyNpbmNsdWRlICJNb2R1bGVS
ZWNvcmQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgU2NvcGVOb2RlOjphbmFseXplTW9k
dWxlKE1vZHVsZUFuYWx5emVyJiBhbmFseXplcikKK3sKKyAgICBtX3N0YXRlbWVudHMtPmFuYWx5
emVNb2R1bGUoYW5hbHl6ZXIpOworfQorCit2b2lkIFNvdXJjZUVsZW1lbnRzOjphbmFseXplTW9k
dWxlKE1vZHVsZUFuYWx5emVyJiBhbmFseXplcikKK3sKKyAgICAvLyBJbiB0aGUgbW9kdWxlIGFu
YWx5emVyIHBoYXNlLCBvbmx5IG1vZHVsZSBkZWNsYXJhdGlvbnMgYXJlIGluY2x1ZGVkIGluIHRo
ZSB0b3AtbGV2ZWwgU291cmNlRWxlbWVudHMuCisgICAgZm9yIChTdGF0ZW1lbnROb2RlKiBzdGF0
ZW1lbnQgPSBtX2hlYWQ7IHN0YXRlbWVudDsgc3RhdGVtZW50ID0gc3RhdGVtZW50LT5uZXh0KCkp
CisgICAgICAgIHN0YXRpY19jYXN0PE1vZHVsZURlY2xhcmF0aW9uTm9kZSo+KHN0YXRlbWVudCkt
PmFuYWx5emVNb2R1bGUoYW5hbHl6ZXIpOworfQorCit2b2lkIEltcG9ydERlY2xhcmF0aW9uTm9k
ZTo6YW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYgYW5hbHl6ZXIpCit7CisgICAgYW5hbHl6
ZXIubW9kdWxlUmVjb3JkKCkuYXBwZW5kUmVxdWVzdGVkTW9kdWxlKG1fbW9kdWxlU3BlY2lmaWVy
LT5tb2R1bGVOYW1lKCkpOworICAgIGZvciAoYXV0byogc3BlY2lmaWVyIDogbV9zcGVjaWZpZXJM
aXN0LT5zcGVjaWZpZXJzKCkpIHsKKyAgICAgICAgYW5hbHl6ZXIubW9kdWxlUmVjb3JkKCkuYWRk
SW1wb3J0RW50cnkoeworICAgICAgICAgICAgbV9tb2R1bGVTcGVjaWZpZXItPm1vZHVsZU5hbWUo
KSwKKyAgICAgICAgICAgIHNwZWNpZmllci0+aW1wb3J0ZWROYW1lKCksCisgICAgICAgICAgICBz
cGVjaWZpZXItPmxvY2FsTmFtZSgpCisgICAgICAgIH0pOworICAgIH0KK30KKwordm9pZCBFeHBv
cnRBbGxEZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImIGFuYWx5
emVyKQoreworICAgIC8vIEV4cG9ydEFsbERlY2xhcmF0aW9uIG5ldmVyIGV4cG9ydHMgdGhlIGlt
cG9ydGVkIGJpbmRpbmcgaW5kaXJlY3RseS4KKyAgICAvLyBBbmQgaXQgZG9lcyBub3QgaGF2ZSBh
biBlZmZlY3Qgb24gdGhlIG1vZHVsZSdzIGxvY2FsIG5hbWVzLgorICAgIC8vIEZvciBleGFtcGxl
LAorICAgIC8vCisgICAgLy8gZXhwb3J0ICogZnJvbSAibW9kIgorICAgIC8vCisgICAgLy8gSXQg
anVzdCBpbmRpcmVjdGx5IGV4cG9ydHMgIm1vZCI7IGFkZCB0aGUgYWxsIG5hbWVzIGluICJtb2Qi
IGludG8KKyAgICAvLyB0aGUgZXhwb3J0ZWQgbmFtZXMgb2YgdGhlIGN1cnJlbnQgbW9kdWxlIGFu
ZCB0aGUgY3VycmVudCBtb2R1bGUgaW5kaXJlY3RseQorICAgIC8vIGV4cG9ydHMgdGhlIGJpbmRp
bmcuCisgICAgYW5hbHl6ZXIubW9kdWxlUmVjb3JkKCkuYXBwZW5kUmVxdWVzdGVkTW9kdWxlKG1f
bW9kdWxlU3BlY2lmaWVyLT5tb2R1bGVOYW1lKCkpOworICAgIGFuYWx5emVyLm1vZHVsZVJlY29y
ZCgpLmFkZFN0YXJFeHBvcnRFbnRyeShtX21vZHVsZVNwZWNpZmllci0+bW9kdWxlTmFtZSgpKTsK
K30KKwordm9pZCBFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKE1v
ZHVsZUFuYWx5emVyJiBhbmFseXplcikKK3sKKyAgICAvLyBFeHBvcnREZWZhdWx0RGVjbGFyYXRp
b24gbmV2ZXIgZXhwb3J0cyB0aGUgaW1wb3J0ZWQgYmluZGluZyBpbmRpcmVjdGx5LgorICAgIC8v
IEZvciBleGFtcGxlLAorICAgIC8vCisgICAgLy8gaW1wb3J0IHYgZnJvbSAibW9kIgorICAgIC8v
IGV4cG9ydCBkZWZhdWx0IHY7CisgICAgLy8KKyAgICAvLyBJbiB0aGlzIGNhc2UsIGRvbid0IGV4
cG9ydCB0aGUgaW1wb3J0ZWQgYmluZGluZyBpbmRpcmVjdGx5CisgICAgLy8gYmVjYXVzZSB0aGUg
YWJvdmUgY29kZSBpcyBzZW1hbnRpY2FsbHkgdGhlIHNhbWUgdG8gdGhlIGZvbGxvd2luZyBjb2Rl
LgorICAgIC8vCisgICAgLy8gaW1wb3J0IHYgZnJvbSAibW9kIgorICAgIC8vIGNvbnN0ICpkZWZh
dWx0KiA9IHYKKyAgICAvLyBleHBvcnQgeyAqZGVmYXVsdCogYXMgZGVmYXVsdCB9CisgICAgYW5h
bHl6ZXIuZGVjbGFyZUV4cG9ydEFsaWFzKG1fbG9jYWxOYW1lLCBhbmFseXplci52bSgpLnByb3Bl
cnR5TmFtZXMtPmRlZmF1bHRLZXl3b3JkKTsKK30KKwordm9pZCBFeHBvcnRMb2NhbERlY2xhcmF0
aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYpCit7CisgICAgLy8gRXhwb3J0
TG9jYWxEZWNsYXJhdGlvbiBuZXZlciBleHBvcnRzIHRoZSBpbXBvcnRlZCBiaW5kaW5nIGluZGly
ZWN0bHkuCisgICAgLy8gRm9yIGV4YW1wbGUsIGlmIHlvdSB3cml0ZSB0aGUgZm9sbG93aW5nIGNv
ZGUsCisgICAgLy8KKyAgICAvLyBpbXBvcnQgdiBmcm9tICJtb2QiCisgICAgLy8gZXhwb3J0IHZh
ciB2OworICAgIC8vCisgICAgLy8gU2luY2UgInYiIGJlY29tZXMgYSBkdXBsaWNhdGUgbmFtZSwg
dGhlIHBhcnNlciBzaG91bGQgdGhyb3cgYSBzeW50YXggZXJyb3IuCit9CisKK3ZvaWQgRXhwb3J0
TmFtZWREZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImIGFuYWx5
emVyKQoreworICAgIGlmIChtX21vZHVsZVNwZWNpZmllcikKKyAgICAgICAgYW5hbHl6ZXIubW9k
dWxlUmVjb3JkKCkuYXBwZW5kUmVxdWVzdGVkTW9kdWxlKG1fbW9kdWxlU3BlY2lmaWVyLT5tb2R1
bGVOYW1lKCkpOworCisgICAgZm9yIChhdXRvKiBzcGVjaWZpZXIgOiBtX3NwZWNpZmllckxpc3Qt
PnNwZWNpZmllcnMoKSkgeworICAgICAgICBpZiAobV9tb2R1bGVTcGVjaWZpZXIpIHsKKyAgICAg
ICAgICAgIC8vIGV4cG9ydCB7IHYgfSBmcm9tICJtb2QiCisgICAgICAgICAgICAvLworICAgICAg
ICAgICAgLy8gSW4gdGhpcyBjYXNlLCBubyBsb2NhbCB2YXJpYWJsZSBuYW1lcyBhcmUgaW1wb3J0
ZWQgaW50byB0aGUgY3VycmVudCBtb2R1bGUuCisgICAgICAgICAgICAvLyAidiIgaW5kaXJlY3Rs
eSBwb2ludHMgdGhlIGJpbmRpbmcgaW4gIm1vZCIuCisgICAgICAgICAgICBhbmFseXplci5tb2R1
bGVSZWNvcmQoKS5hZGRFeHBvcnRFbnRyeShNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVh
dGVJbmRpcmVjdChzcGVjaWZpZXItPmV4cG9ydGVkTmFtZSgpLCBzcGVjaWZpZXItPmxvY2FsTmFt
ZSgpLCBtX21vZHVsZVNwZWNpZmllci0+bW9kdWxlTmFtZSgpKSk7CisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2Rl
IGNhbiBleHBvcnQgdGhlIGltcG9ydGVkIGJpbmRpbmcgbmFtZXMgaW5kaXJlY3RseS4KKyAgICAg
ICAgLy8gRm9yIGV4YW1wbGUsCisgICAgICAgIC8vCisgICAgICAgIC8vIGltcG9ydCB2IGZyb20g
Im1vZCIKKyAgICAgICAgLy8gZXhwb3J0IHsgdiB9CisgICAgICAgIC8vCisgICAgICAgIC8vIFRo
ZSBleGFtcGxlIGluZGlyZWN0bHkgZXhwb3J0cyB0aGUgaW1wb3J0ZWQgbmFtZSBhcyB0aGUgY3Vy
cmVudCBtb2R1bGUncyBleHBvcnRlZCBuYW1lLgorICAgICAgICAvLyBXaGVuIGxpbmtpbmcgdGhl
IGltcG9ydGVkIGJpbmRpbmcsIHRoZSBvcmlnaW5hbCBtb2R1bGUncyBiaW5kaW5nIGlzIGltcG9y
dGVkCisgICAgICAgIC8vIGJ5IHRoZSBtb2R1bGUgcmVxdWVzdGluZyB0aGUgaW1wb3J0IHJlc29s
dXRpb24uCisgICAgICAgIGlmIChzcGVjaWZpZXItPmxvY2FsTmFtZSgpICE9IHNwZWNpZmllci0+
ZXhwb3J0ZWROYW1lKCkpCisgICAgICAgICAgICBhbmFseXplci5kZWNsYXJlRXhwb3J0QWxpYXMo
c3BlY2lmaWVyLT5sb2NhbE5hbWUoKSwgc3BlY2lmaWVyLT5leHBvcnRlZE5hbWUoKSk7CisgICAg
fQorfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcAppbmRleCBlODFmM2ViMjdlZDA1ZmVlODFlMTcyNTc2NjlhMzk0M2E4ODYzZDA0Li5h
YThlYjgwNDc0MzY1OWJmNmUyYmZiNTFlZTU3NWNjZGEyOTNjMzlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yMzUsOCArMjM1LDEwIEBAIFBhcnNlcjxMZXhl
clR5cGU+Ojp+UGFyc2VyKCkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLVN0
cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcihjb25zdCBJZGVudGlmaWVyJiBjYWxs
ZWVOYW1lLCBGdW5jdGlvblBhcnNlTW9kZSBwYXJzZU1vZGUpCitTdHJpbmcgUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgRnVuY3Rpb25Q
YXJzZU1vZGUgcGFyc2VNb2RlLCBNb2R1bGVQYXJzZU1vZGUgbW9kdWxlUGFyc2VNb2RlKQogewor
ICAgIFVOVVNFRF9QQVJBTShtb2R1bGVQYXJzZU1vZGUpOworCiAgICAgU3RyaW5nIHBhcnNlRXJy
b3IgPSBTdHJpbmcoKTsKICAgICAKICAgICBBU1RCdWlsZGVyIGNvbnRleHQoY29uc3RfY2FzdDxW
TSo+KG1fdm0pLCBtX3BhcnNlckFyZW5hLCBjb25zdF9jYXN0PFNvdXJjZUNvZGUqPihtX3NvdXJj
ZSkpOwpAQCAtMjcyLDcgKzI3NCw3IEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJ
bm5lcihjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBGdW5jdGlvblBhcnNlCiAgICAgICAg
ICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlQXJyb3dGdW5jdGlvblNpbmdsZUV4cHJlc3Npb25C
b2R5U291cmNlRWxlbWVudHMoY29udGV4dCk7CiAjaWYgRU5BQkxFKEVTNl9NT0RVTEVTKQogICAg
ICAgICBlbHNlIGlmIChtX2NvZGVUeXBlID09IEpTUGFyc2VyQ29kZVR5cGU6Ok1vZHVsZSkKLSAg
ICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VNb2R1bGVTb3VyY2VFbGVtZW50cyhjb250
ZXh0KTsKKyAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VNb2R1bGVTb3VyY2VFbGVt
ZW50cyhjb250ZXh0LCBtb2R1bGVQYXJzZU1vZGUpOwogI2VuZGlmCiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0LCBD
aGVja0ZvclN0cmljdE1vZGUpOwpAQCAtNDEyLDM5ICs0MTQsNDggQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
U291cmNlRWwKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZU1vZHVsZVNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiBjb250ZXh0KQordGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlTW9kdWxlU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIE1vZHVsZVBh
cnNlTW9kZSBtb2R1bGVQYXJzZU1vZGUpCiB7CiAgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHNvdXJj
ZUVsZW1lbnRzID0gY29udGV4dC5jcmVhdGVTb3VyY2VFbGVtZW50cygpOwotCi0gICAgLy8gRklY
TUU6IFdoZW4gc29tZSBzb3J0IG9mIE1vZHVsZUFuYWx5emVyIFRyZWVCdWlsZGVyIGlzIGxhbmRl
ZCwKLSAgICAvLyB0aGlzIFN5bnRheENoZWNrZXIgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHR5cGVk
ZWYgdW5kZXIgdGhlIFRyZWVCdWlsZGVyLAotICAgIC8vIGxpa2UgVHJlZUJ1aWxkZXI6Ok1vZHVs
ZVN0YXRlbWVudEl0ZW1CdWlsZGVyLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDczNTMKLSAgICBTeW50YXhDaGVja2VyIG1vZHVsZVN0YXRlbWVudEl0
ZW1CdWlsZGVyKGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7CisgICAgU3lu
dGF4Q2hlY2tlciBzeW50YXhDaGVja2VyKGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9sZXhlci5n
ZXQoKSk7CiAKICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBpZiAobWF0Y2goSU1QT1JUKSB8
fCBtYXRjaChFWFBPUlQpKSB7Ci0gICAgICAgICAgICBUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9
IDA7Ci0gICAgICAgICAgICBpZiAobWF0Y2goSU1QT1JUKSkKLSAgICAgICAgICAgICAgICBzdGF0
ZW1lbnQgPSBwYXJzZUltcG9ydERlY2xhcmF0aW9uKGNvbnRleHQpOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIHN0YXRlbWVudCA9IHBhcnNlRXhwb3J0RGVjbGFyYXRpb24oY29u
dGV4dCk7Ci0KLSAgICAgICAgICAgIGlmICghc3RhdGVtZW50KQotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgY29udGV4dC5hcHBlbmRTdGF0ZW1lbnQoc291cmNlRWxlbWVudHMs
IHN0YXRlbWVudCk7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIFRyZWVTdGF0ZW1lbnQgc3Rh
dGVtZW50ID0gMDsKKyAgICAgICAgaWYgKG1hdGNoKElNUE9SVCkpCisgICAgICAgICAgICBzdGF0
ZW1lbnQgPSBwYXJzZUltcG9ydERlY2xhcmF0aW9uKGNvbnRleHQpOworICAgICAgICBlbHNlIGlm
IChtYXRjaChFWFBPUlQpKQorICAgICAgICAgICAgc3RhdGVtZW50ID0gcGFyc2VFeHBvcnREZWNs
YXJhdGlvbihjb250ZXh0KTsKKyAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjb25zdCBJZGVu
dGlmaWVyKiBkaXJlY3RpdmUgPSAwOwogICAgICAgICAgICAgdW5zaWduZWQgZGlyZWN0aXZlTGl0
ZXJhbExlbmd0aCA9IDA7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlU3RhdGVtZW50TGlzdEl0ZW0o
bW9kdWxlU3RhdGVtZW50SXRlbUJ1aWxkZXIsIGRpcmVjdGl2ZSwgJmRpcmVjdGl2ZUxpdGVyYWxM
ZW5ndGgpKQotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKG1vZHVsZVBh
cnNlTW9kZSA9PSBNb2R1bGVQYXJzZU1vZGU6OkFuYWx5emUpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIXBhcnNlU3RhdGVtZW50TGlzdEl0ZW0oc3ludGF4Q2hlY2tlciwgZGlyZWN0aXZlLCAmZGly
ZWN0aXZlTGl0ZXJhbExlbmd0aCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhdGVtZW50
ID0gcGFyc2VTdGF0ZW1lbnRMaXN0SXRlbShjb250ZXh0LCBkaXJlY3RpdmUsICZkaXJlY3RpdmVM
aXRlcmFsTGVuZ3RoKTsKICAgICAgICAgfQorCisgICAgICAgIGlmICghc3RhdGVtZW50KQorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNvbnRleHQuYXBwZW5kU3RhdGVtZW50KHNvdXJjZUVs
ZW1lbnRzLCBzdGF0ZW1lbnQpOwogICAgIH0KIAogICAgIHByb3BhZ2F0ZUVycm9yKCk7CiAKLSAg
ICBmb3IgKGNvbnN0IGF1dG8mIHVpZCA6IGN1cnJlbnRTY29wZSgpLT5tb2R1bGVTY29wZURhdGEo
KS5leHBvcnRlZEJpbmRpbmdzKCkpCi0gICAgICAgIHNlbWFudGljRmFpbElmRmFsc2UoY3VycmVu
dFNjb3BlKCktPmhhc0RlY2xhcmVkVmFyaWFibGUodWlkKSB8fCBjdXJyZW50U2NvcGUoKS0+aGFz
TGV4aWNhbGx5RGVjbGFyZWRWYXJpYWJsZSh1aWQpLCAiRXhwb3J0ZWQgYmluZGluZyAnIiwgdWlk
LmdldCgpLCAiJyBuZWVkcyB0byByZWZlciB0byBhIHRvcC1sZXZlbCBkZWNsYXJlZCB2YXJpYWJs
ZSIpOworICAgIGZvciAoY29uc3QgYXV0byYgdWlkIDogY3VycmVudFNjb3BlKCktPm1vZHVsZVNj
b3BlRGF0YSgpLmV4cG9ydGVkQmluZGluZ3MoKSkgeworICAgICAgICBpZiAoY3VycmVudFNjb3Bl
KCktPmhhc0RlY2xhcmVkVmFyaWFibGUodWlkKSkgeworICAgICAgICAgICAgY3VycmVudFNjb3Bl
KCktPmRlY2xhcmVkVmFyaWFibGVzKCkubWFya1ZhcmlhYmxlQXNFeHBvcnRlZCh1aWQpOworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY3VycmVudFNjb3Bl
KCktPmhhc0xleGljYWxseURlY2xhcmVkVmFyaWFibGUodWlkKSkgeworICAgICAgICAgICAgY3Vy
cmVudFNjb3BlKCktPmxleGljYWxWYXJpYWJsZXMoKS5tYXJrVmFyaWFibGVBc0V4cG9ydGVkKHVp
ZCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIHNlbWFudGlj
RmFpbCgiRXhwb3J0ZWQgYmluZGluZyAnIiwgdWlkLmdldCgpLCAiJyBuZWVkcyB0byByZWZlciB0
byBhIHRvcC1sZXZlbCBkZWNsYXJlZCB2YXJpYWJsZSIpOworICAgIH0KIAogICAgIHJldHVybiBz
b3VyY2VFbGVtZW50czsKIH0KQEAgLTYwMSw3ICs2MTIsMTAgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VWYXJpYWJs
ZURlY2wKICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzZW1hbnRpY0Zh
aWxJZlRydWUoZXhwb3J0VHlwZSA9PSBFeHBvcnRUeXBlOjpFeHBvcnRlZCAmJiAhY3VycmVudFNj
b3BlKCktPm1vZHVsZVNjb3BlRGF0YSgpLmV4cG9ydE5hbWUoKm5hbWUpLCAiQ2Fubm90IGV4cG9y
dCBhIGR1cGxpY2F0ZSBuYW1lICciLCBuYW1lLT5pbXBsKCksICInIik7CisgICAgICAgICAgICBp
ZiAoZXhwb3J0VHlwZSA9PSBFeHBvcnRUeXBlOjpFeHBvcnRlZCkgeworICAgICAgICAgICAgICAg
IHNlbWFudGljRmFpbElmRmFsc2UoZXhwb3J0TmFtZSgqbmFtZSksICJDYW5ub3QgZXhwb3J0IGEg
ZHVwbGljYXRlIG5hbWUgJyIsIG5hbWUtPmltcGwoKSwgIiciKTsKKyAgICAgICAgICAgICAgICBj
dXJyZW50U2NvcGUoKS0+bW9kdWxlU2NvcGVEYXRhKCkuZXhwb3J0QmluZGluZygqbmFtZSk7Cisg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChoYXNJbml0aWFsaXplcikgewogICAgICAg
ICAgICAgICAgIEpTVGV4dFBvc2l0aW9uIHZhckRpdm90ID0gdG9rZW5TdGFydFBvc2l0aW9uKCkg
KyAxOwpAQCAtNzA1LDcgKzcxOSwxMCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVEZXN0cnVjdHVyaW5nUGF0dGVybiBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlQgogICAgICAg
ICB9CiAgICAgfQogCi0gICAgc2VtYW50aWNGYWlsSWZUcnVlKGV4cG9ydFR5cGUgPT0gRXhwb3J0
VHlwZTo6RXhwb3J0ZWQgJiYgIWN1cnJlbnRTY29wZSgpLT5tb2R1bGVTY29wZURhdGEoKS5leHBv
cnROYW1lKG5hbWUpLCAiQ2Fubm90IGV4cG9ydCBhIGR1cGxpY2F0ZSBuYW1lICciLCBuYW1lLmlt
cGwoKSwgIiciKTsKKyAgICBpZiAoZXhwb3J0VHlwZSA9PSBFeHBvcnRUeXBlOjpFeHBvcnRlZCkg
eworICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKGV4cG9ydE5hbWUobmFtZSksICJDYW5ub3Qg
ZXhwb3J0IGEgZHVwbGljYXRlIG5hbWUgJyIsIG5hbWUuaW1wbCgpLCAiJyIpOworICAgICAgICBj
dXJyZW50U2NvcGUoKS0+bW9kdWxlU2NvcGVEYXRhKCkuZXhwb3J0QmluZGluZyhuYW1lKTsKKyAg
ICB9CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKHRva2VuLm1fbG9j
YXRpb24sIG5hbWUsIHRva2VuLm1fc3RhcnRQb3NpdGlvbiwgdG9rZW4ubV9lbmRQb3NpdGlvbiwg
YmluZGluZ0NvbnRleHQpOwogfQogCkBAIC0xODU2LDcgKzE4NzMsMTAgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1
bmN0aW9uRGVjbGEKICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uSW5mbywg
U3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZSkpLCAiQ2Fubm90IHBhcnNlIHRoaXMgZnVuY3Rpb24i
KTsKICAgICBmYWlsSWZGYWxzZShmdW5jdGlvbkluZm8ubmFtZSwgIkZ1bmN0aW9uIHN0YXRlbWVu
dHMgbXVzdCBoYXZlIGEgbmFtZSIpOwogICAgIGZhaWxJZlRydWVJZlN0cmljdChkZWNsYXJlVmFy
aWFibGUoZnVuY3Rpb25JbmZvLm5hbWUpICYgRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWRTdHJp
Y3RNb2RlLCAiQ2Fubm90IGRlY2xhcmUgYSBmdW5jdGlvbiBuYW1lZCAnIiwgZnVuY3Rpb25JbmZv
Lm5hbWUtPmltcGwoKSwgIicgaW4gc3RyaWN0IG1vZGUiKTsKLSAgICBzZW1hbnRpY0ZhaWxJZlRy
dWUoZXhwb3J0VHlwZSA9PSBFeHBvcnRUeXBlOjpFeHBvcnRlZCAmJiAhY3VycmVudFNjb3BlKCkt
Pm1vZHVsZVNjb3BlRGF0YSgpLmV4cG9ydE5hbWUoKmZ1bmN0aW9uSW5mby5uYW1lKSwgIkNhbm5v
dCBleHBvcnQgYSBkdXBsaWNhdGUgZnVuY3Rpb24gbmFtZTogJyIsIGZ1bmN0aW9uSW5mby5uYW1l
LT5pbXBsKCksICInIik7CisgICAgaWYgKGV4cG9ydFR5cGUgPT0gRXhwb3J0VHlwZTo6RXhwb3J0
ZWQpIHsKKyAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShleHBvcnROYW1lKCpmdW5jdGlvbklu
Zm8ubmFtZSksICJDYW5ub3QgZXhwb3J0IGEgZHVwbGljYXRlIGZ1bmN0aW9uIG5hbWU6ICciLCBm
dW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyIpOworICAgICAgICBjdXJyZW50U2NvcGUoKS0+
bW9kdWxlU2NvcGVEYXRhKCkuZXhwb3J0QmluZGluZygqZnVuY3Rpb25JbmZvLm5hbWUpOworICAg
IH0KICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jRGVjbFN0YXRlbWVudChsb2NhdGlvbiwg
ZnVuY3Rpb25JbmZvKTsKIH0KIApAQCAtMTg3Niw3ICsxODk2LDEwIEBAIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFz
c0RlY2xhcmF0CiAgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmF0aW9uUmVzdWx0ID0g
ZGVjbGFyZVZhcmlhYmxlKGluZm8uY2xhc3NOYW1lLCBEZWNsYXJhdGlvblR5cGU6OkxldERlY2xh
cmF0aW9uKTsKICAgICBpZiAoZGVjbGFyYXRpb25SZXN1bHQgJiBEZWNsYXJhdGlvblJlc3VsdDo6
SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uKQogICAgICAgICBpbnRlcm5hbEZhaWxXaXRoTWVz
c2FnZShmYWxzZSwgIkNhbm5vdCBkZWNsYXJlIGEgY2xhc3MgdHdpY2U6ICciLCBpbmZvLmNsYXNz
TmFtZS0+aW1wbCgpLCAiJyIpOwotICAgIHNlbWFudGljRmFpbElmVHJ1ZShleHBvcnRUeXBlID09
IEV4cG9ydFR5cGU6OkV4cG9ydGVkICYmICFjdXJyZW50U2NvcGUoKS0+bW9kdWxlU2NvcGVEYXRh
KCkuZXhwb3J0TmFtZSgqaW5mby5jbGFzc05hbWUpLCAiQ2Fubm90IGV4cG9ydCBhIGR1cGxpY2F0
ZSBjbGFzcyBuYW1lOiAnIiwgaW5mby5jbGFzc05hbWUtPmltcGwoKSwgIiciKTsKKyAgICBpZiAo
ZXhwb3J0VHlwZSA9PSBFeHBvcnRUeXBlOjpFeHBvcnRlZCkgeworICAgICAgICBzZW1hbnRpY0Zh
aWxJZkZhbHNlKGV4cG9ydE5hbWUoKmluZm8uY2xhc3NOYW1lKSwgIkNhbm5vdCBleHBvcnQgYSBk
dXBsaWNhdGUgY2xhc3MgbmFtZTogJyIsIGluZm8uY2xhc3NOYW1lLT5pbXBsKCksICInIik7Cisg
ICAgICAgIGN1cnJlbnRTY29wZSgpLT5tb2R1bGVTY29wZURhdGEoKS5leHBvcnRCaW5kaW5nKCpp
bmZvLmNsYXNzTmFtZSk7CisgICAgfQogCiAgICAgSlNUZXh0UG9zaXRpb24gY2xhc3NFbmQgPSBs
YXN0VG9rZW5FbmRQb3NpdGlvbigpOwogICAgIHVuc2lnbmVkIGNsYXNzRW5kTGluZSA9IHRva2Vu
TGluZSgpOwpAQCAtMjI4Miw3ICsyMzA1LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6SW1wb3J0U3BlY2lmaWVyIFBhcnNlcjxMZXhlclQKICAg
ICB9CiAKICAgICBzZW1hbnRpY0ZhaWxJZlRydWUobG9jYWxOYW1lVG9rZW4ubV90eXBlICYgS2V5
d29yZFRva2VuRmxhZywgIkNhbm5vdCB1c2Uga2V5d29yZCBhcyBpbXBvcnRlZCBiaW5kaW5nIG5h
bWUiKTsKLSAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyYXRpb25SZXN1bHQgPSBkZWNs
YXJlVmFyaWFibGUobG9jYWxOYW1lLCBEZWNsYXJhdGlvblR5cGU6OkNvbnN0RGVjbGFyYXRpb24p
OworICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJhdGlvblJlc3VsdCA9IGRlY2xhcmVW
YXJpYWJsZShsb2NhbE5hbWUsIERlY2xhcmF0aW9uVHlwZTo6Q29uc3REZWNsYXJhdGlvbiwgRGVj
bGFyYXRpb25JbXBvcnRUeXBlOjpJbXBvcnRlZCk7CiAgICAgaWYgKGRlY2xhcmF0aW9uUmVzdWx0
ICE9IERlY2xhcmF0aW9uUmVzdWx0OjpWYWxpZCkgewogICAgICAgICBmYWlsSWZUcnVlSWZTdHJp
Y3QoZGVjbGFyYXRpb25SZXN1bHQgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZFN0cmljdE1v
ZGUsICJDYW5ub3QgZGVjbGFyZSBhbiBpbXBvcnRlZCBiaW5kaW5nIG5hbWVkICIsIGxvY2FsTmFt
ZS0+aW1wbCgpLCAiIGluIHN0cmljdCBtb2RlIik7CiAgICAgICAgIGlmIChkZWNsYXJhdGlvblJl
c3VsdCAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24pCkBA
IC0yMzg0LDcgKzI0MDcsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1l
IFRyZWVCdWlsZGVyOjpFeHBvcnRTcGVjaWZpZXIgUGFyc2VyPExleGVyVAogICAgICAgICBuZXh0
KCk7CiAgICAgfQogCi0gICAgc2VtYW50aWNGYWlsSWZGYWxzZShjdXJyZW50U2NvcGUoKS0+bW9k
dWxlU2NvcGVEYXRhKCkuZXhwb3J0TmFtZSgqZXhwb3J0ZWROYW1lKSwgIkNhbm5vdCBleHBvcnQg
YSBkdXBsaWNhdGUgbmFtZSAnIiwgZXhwb3J0ZWROYW1lLT5pbXBsKCksICInIik7CisgICAgc2Vt
YW50aWNGYWlsSWZGYWxzZShleHBvcnROYW1lKCpleHBvcnRlZE5hbWUpLCAiQ2Fubm90IGV4cG9y
dCBhIGR1cGxpY2F0ZSBuYW1lICciLCBleHBvcnRlZE5hbWUtPmltcGwoKSwgIiciKTsKICAgICBt
YXliZUxvY2FsTmFtZXMuYXBwZW5kKGxvY2FsTmFtZSk7CiAgICAgcmV0dXJuIGNvbnRleHQuY3Jl
YXRlRXhwb3J0U3BlY2lmaWVyKHNwZWNpZmllckxvY2F0aW9uLCAqbG9jYWxOYW1lLCAqZXhwb3J0
ZWROYW1lKTsKIH0KQEAgLTI0MTgsOCArMjQ0MSw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnREZWNsYXJh
CiAgICAgICAgIG5leHQoKTsKIAogICAgICAgICBUcmVlU3RhdGVtZW50IHJlc3VsdCA9IDA7Ci0g
ICAgICAgIGJvb2wgaGFzTmFtZSA9IGZhbHNlOwogICAgICAgICBib29sIGlzRnVuY3Rpb25PckNs
YXNzRGVjbGFyYXRpb24gPSBmYWxzZTsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciogbG9jYWxO
YW1lID0gbnVsbHB0cjsKICAgICAgICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQ
b2ludCgpOwogICAgICAgICBpZiAobWF0Y2goRlVOQ1RJT04pCiAjaWYgRU5BQkxFKEVTNl9DTEFT
U19TWU5UQVgpCkBAIC0yNDI5LDExICsyNDUyLDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnREZWNsYXJh
CiAgICAgICAgICAgICBpc0Z1bmN0aW9uT3JDbGFzc0RlY2xhcmF0aW9uID0gdHJ1ZTsKICAgICAg
ICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBXaGVuIGxhbmRpbmcgRVM2IGdl
bmVyYXRvcnMsIHdlIG5lZWQgdG8gdGFrZSBjYXJlIG9mIHRoYXQgJyonIGNvbWVzLgotICAgICAg
ICAgICAgaGFzTmFtZSA9IG1hdGNoKElERU5UKTsKKyAgICAgICAgICAgIGlmIChtYXRjaChJREVO
VCkpCisgICAgICAgICAgICAgICAgbG9jYWxOYW1lID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAg
ICAgICAgICAgICByZXN0b3JlU2F2ZVBvaW50KHNhdmVQb2ludCk7CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAoaGFzTmFtZSkgeworICAgICAgICBpZiAobG9jYWxOYW1lKSB7CiAgICAgICAgICAg
ICBpZiAobWF0Y2goRlVOQ1RJT04pKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHBhcnNlRnVu
Y3Rpb25EZWNsYXJhdGlvbihjb250ZXh0KTsKICNpZiBFTkFCTEUoRVM2X0NMQVNTX1NZTlRBWCkK
QEAgLTI0NDMsMTggKzI0NjcsMzIgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
U3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydERlY2xhcmEKICAgICAgICAg
ICAgIH0KICNlbmRpZgogICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gZXhwb3J0IGRl
ZmF1bHQgZXhwcjsKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBJdCBzaG91bGQgYmUg
dHJlYXRlZCBhcyB0aGUgc2FtZSB0byB0aGUgZm9sbG93aW5nLgorICAgICAgICAgICAgLy8KKyAg
ICAgICAgICAgIC8vIGNvbnN0ICpkZWZhdWx0KiA9IGV4cHI7CisgICAgICAgICAgICAvLyBleHBv
cnQgeyAqZGVmYXVsdCogYXMgZGVmYXVsdCB9CiAgICAgICAgICAgICBKU1Rva2VuTG9jYXRpb24g
bG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgICAgIEpTVGV4dFBvc2l0aW9uIHN0
YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgICAgICAgICBUcmVlRXhwcmVzc2lvbiBl
eHByZXNzaW9uID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAg
ICAgIGZhaWxJZkZhbHNlKGV4cHJlc3Npb24sICJDYW5ub3QgcGFyc2UgZXhwcmVzc2lvbiIpOwot
ICAgICAgICAgICAgcmVzdWx0ID0gY29udGV4dC5jcmVhdGVFeHByU3RhdGVtZW50KGxvY2F0aW9u
LCBleHByZXNzaW9uLCBzdGFydCwgdG9rZW5FbmRQb3NpdGlvbigpKTsKKworICAgICAgICAgICAg
RGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmF0aW9uUmVzdWx0ID0gZGVjbGFyZVZhcmlhYmxl
KCZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5zdGFyRGVmYXVsdFByaXZhdGVOYW1lLCBEZWNsYXJhdGlv
blR5cGU6OkNvbnN0RGVjbGFyYXRpb24pOworICAgICAgICAgICAgaWYgKGRlY2xhcmF0aW9uUmVz
dWx0ICYgRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbikKKyAg
ICAgICAgICAgICAgICBpbnRlcm5hbEZhaWxXaXRoTWVzc2FnZShmYWxzZSwgIkNhbm5vdCBleHBv
cnQgJ2RlZmF1bHQnIG5hbWUgdHdpY2U6ICciKTsKKworICAgICAgICAgICAgVHJlZUV4cHJlc3Np
b24gYXNzaWdubWVudCA9IGNvbnRleHQuY3JlYXRlQXNzaWduUmVzb2x2ZShsb2NhdGlvbiwgbV92
bS0+cHJvcGVydHlOYW1lcy0+c3RhckRlZmF1bHRQcml2YXRlTmFtZSwgZXhwcmVzc2lvbiwgc3Rh
cnQsIHN0YXJ0LCB0b2tlbkVuZFBvc2l0aW9uKCksIEFzc2lnbm1lbnRDb250ZXh0OjpDb25zdERl
Y2xhcmF0aW9uU3RhdGVtZW50KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGNvbnRleHQuY3JlYXRl
RXhwclN0YXRlbWVudChsb2NhdGlvbiwgYXNzaWdubWVudCwgc3RhcnQsIHRva2VuRW5kUG9zaXRp
b24oKSk7CiAgICAgICAgICAgICBpZiAoIWlzRnVuY3Rpb25PckNsYXNzRGVjbGFyYXRpb24pCiAg
ICAgICAgICAgICAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpLCAiRXhwZWN0ZWQgYSAn
OycgZm9sbG93aW5nIGEgdGFyZ2V0ZWQgZXhwb3J0IGRlY2xhcmF0aW9uIik7CisgICAgICAgICAg
ICBsb2NhbE5hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+c3RhckRlZmF1bHRQcml2YXRlTmFt
ZTsKICAgICAgICAgfQogICAgICAgICBmYWlsSWZGYWxzZShyZXN1bHQsICJDYW5ub3QgcGFyc2Ug
dGhlIGRlY2xhcmF0aW9uIik7Ci0gICAgICAgIHNlbWFudGljRmFpbElmRmFsc2UoY3VycmVudFNj
b3BlKCktPm1vZHVsZVNjb3BlRGF0YSgpLmV4cG9ydE5hbWUobV92bS0+cHJvcGVydHlOYW1lcy0+
ZGVmYXVsdEtleXdvcmQpLCAiQ2Fubm90IGV4cG9ydCAnZGVmYXVsdCcgbmFtZSB0d2ljZS4iKTsK
KyAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShleHBvcnROYW1lKG1fdm0tPnByb3BlcnR5TmFt
ZXMtPmRlZmF1bHRLZXl3b3JkKSwgIkNhbm5vdCBleHBvcnQgJ2RlZmF1bHQnIG5hbWUgdHdpY2Uu
Iik7CisgICAgICAgIGN1cnJlbnRTY29wZSgpLT5tb2R1bGVTY29wZURhdGEoKS5leHBvcnRCaW5k
aW5nKCpsb2NhbE5hbWUpOwogCi0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUV4cG9ydERl
ZmF1bHREZWNsYXJhdGlvbihleHBvcnRMb2NhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgcmV0dXJu
IGNvbnRleHQuY3JlYXRlRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uKGV4cG9ydExvY2F0aW9uLCBy
ZXN1bHQsICpsb2NhbE5hbWUpOwogICAgIH0KIAogICAgIGNhc2UgT1BFTkJSQUNFOiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCBiZDdiNTA0OGNlMDAwYzRlMWI2ZGQ3
ZjU5OWU2ZDFjNTM4ODE5N2FhLi42YmYyMjI0NTBiNzg2NTlhM2NiMDQyMTg2MTRkNTZkZTQ0ZWQ2
M2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTk4LDYgKzk4LDEx
IEBAIGVudW0gY2xhc3MgRGVjbGFyYXRpb25UeXBlIHsKICAgICBDb25zdERlY2xhcmF0aW9uCiB9
OwogCitlbnVtIGNsYXNzIERlY2xhcmF0aW9uSW1wb3J0VHlwZSB7CisgICAgSW1wb3J0ZWQsCisg
ICAgTm90SW1wb3J0ZWQKK307CisKIGVudW0gRGVjbGFyYXRpb25SZXN1bHQgewogICAgIFZhbGlk
ID0gMCwKICAgICBJbnZhbGlkU3RyaWN0TW9kZSA9IDEgPDwgMCwKQEAgLTI1Nyw2ICsyNjIsNyBA
QCBzdHJ1Y3QgU2NvcGUgewogICAgIGJvb2wgaXNMZXhpY2FsU2NvcGUoKSB7IHJldHVybiBtX2lz
TGV4aWNhbFNjb3BlOyB9CiAKICAgICBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlh
YmxlcygpIHsgcmV0dXJuIG1fZGVjbGFyZWRWYXJpYWJsZXM7IH0KKyAgICBWYXJpYWJsZUVudmly
b25tZW50JiBsZXhpY2FsVmFyaWFibGVzKCkgeyByZXR1cm4gbV9sZXhpY2FsVmFyaWFibGVzOyB9
CiAgICAgVmFyaWFibGVFbnZpcm9ubWVudCYgZmluYWxpemVMZXhpY2FsRW52aXJvbm1lbnQoKSAK
ICAgICB7IAogICAgICAgICBpZiAobV91c2VzRXZhbCB8fCBtX25lZWRzRnVsbEFjdGl2YXRpb24p
CkBAIC0zMTUsNyArMzIxLDcgQEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAKLSAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyZUxleGljYWxWYXJp
YWJsZShjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgYm9vbCBpc0NvbnN0YW50KQorICAgIERlY2xh
cmF0aW9uUmVzdWx0TWFzayBkZWNsYXJlTGV4aWNhbFZhcmlhYmxlKGNvbnN0IElkZW50aWZpZXIq
IGlkZW50LCBib29sIGlzQ29uc3RhbnQsIERlY2xhcmF0aW9uSW1wb3J0VHlwZSBpbXBvcnRUeXBl
ID0gRGVjbGFyYXRpb25JbXBvcnRUeXBlOjpOb3RJbXBvcnRlZCkKICAgICB7CiAgICAgICAgIEFT
U0VSVChtX2FsbG93c0xleGljYWxEZWNsYXJhdGlvbnMpOwogICAgICAgICBEZWNsYXJhdGlvblJl
c3VsdE1hc2sgcmVzdWx0ID0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkOwpAQCAtMzI3LDYgKzMz
Myw5IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGFkZFJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUuc2V0SXNMZXQoKTsKIAorICAgICAgICBpZiAoaW1wb3J0VHlwZSA9
PSBEZWNsYXJhdGlvbkltcG9ydFR5cGU6OkltcG9ydGVkKQorICAgICAgICAgICAgYWRkUmVzdWx0
Lml0ZXJhdG9yLT52YWx1ZS5zZXRJc0ltcG9ydGVkKCk7CisKICAgICAgICAgaWYgKCFhZGRSZXN1
bHQuaXNOZXdFbnRyeSkKICAgICAgICAgICAgIHJlc3VsdCB8PSBEZWNsYXJhdGlvblJlc3VsdDo6
SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uOwogICAgICAgICBpZiAoIWlzVmFsaWRTdHJpY3RN
b2RlKQpAQCAtNjExLDcgKzYyMCw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgflBhcnNlcigpOwog
CiAgICAgdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBh
cnNlZE5vZGU+IHBhcnNlKFBhcnNlckVycm9yJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9u
UGFyc2VNb2RlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2Vy
RXJyb3ImLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25QYXJzZU1vZGUsIE1vZHVsZVBhcnNl
TW9kZSk7CiAKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCkg
Y29uc3QgeyByZXR1cm4gbV9sZXhlci0+cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOyB9CiAg
ICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uQmVmb3JlTGFzdFRva2VuKCkgY29uc3QgeyByZXR1
cm4gbV9sZXhlci0+bGFzdFRva2VuTG9jYXRpb24oKTsgfQpAQCAtNzY5LDcgKzc3OCw3IEBAIGNs
YXNzIFBhcnNlciB7CiAgICAgICAgIHBvcFNjb3BlSW50ZXJuYWwoc2NvcGUsIHNob3VsZFRyYWNr
Q2xvc2VkVmFyaWFibGVzKTsKICAgICB9CiAgICAgCi0gICAgRGVjbGFyYXRpb25SZXN1bHRNYXNr
IGRlY2xhcmVWYXJpYWJsZShjb25zdCBJZGVudGlmaWVyKiBpZGVudCwgRGVjbGFyYXRpb25UeXBl
IHR5cGUgPSBEZWNsYXJhdGlvblR5cGU6OlZhckRlY2xhcmF0aW9uKQorICAgIERlY2xhcmF0aW9u
UmVzdWx0TWFzayBkZWNsYXJlVmFyaWFibGUoY29uc3QgSWRlbnRpZmllciogaWRlbnQsIERlY2xh
cmF0aW9uVHlwZSB0eXBlID0gRGVjbGFyYXRpb25UeXBlOjpWYXJEZWNsYXJhdGlvbiwgRGVjbGFy
YXRpb25JbXBvcnRUeXBlIGltcG9ydFR5cGUgPSBEZWNsYXJhdGlvbkltcG9ydFR5cGU6Ok5vdElt
cG9ydGVkKQogICAgIHsKICAgICAgICAgdW5zaWduZWQgaSA9IG1fc2NvcGVTdGFjay5zaXplKCkg
LSAxOwogICAgICAgICBBU1NFUlQoaSA8IG1fc2NvcGVTdGFjay5zaXplKCkpOwpAQCAtNzk0LDcg
KzgwMyw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgICAgICAgICBBU1NFUlQoaSA8IG1fc2NvcGVT
dGFjay5zaXplKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIG1fc2NvcGVTdGFja1tp
XS5kZWNsYXJlTGV4aWNhbFZhcmlhYmxlKGlkZW50LCB0eXBlID09IERlY2xhcmF0aW9uVHlwZTo6
Q29uc3REZWNsYXJhdGlvbik7CisgICAgICAgIHJldHVybiBtX3Njb3BlU3RhY2tbaV0uZGVjbGFy
ZUxleGljYWxWYXJpYWJsZShpZGVudCwgdHlwZSA9PSBEZWNsYXJhdGlvblR5cGU6OkNvbnN0RGVj
bGFyYXRpb24sIGltcG9ydFR5cGUpOwogICAgIH0KICAgICAKICAgICBORVZFUl9JTkxJTkUgYm9v
bCBoYXNEZWNsYXJlZFZhcmlhYmxlKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQpAQCAtODI1LDYg
KzgzNCwxMiBAQCBjbGFzcyBQYXJzZXIgewogICAgICAgICAgICAgbV9zY29wZVN0YWNrLmxhc3Qo
KS5kZWNsYXJlV3JpdGUoaWRlbnQpOwogICAgIH0KIAorICAgIGJvb2wgZXhwb3J0TmFtZShjb25z
dCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICB7CisgICAgICAgIEFTU0VSVChjdXJyZW50U2NvcGUo
KS5pbmRleCgpID09IDApOworICAgICAgICByZXR1cm4gY3VycmVudFNjb3BlKCktPm1vZHVsZVNj
b3BlRGF0YSgpLmV4cG9ydE5hbWUoaWRlbnQpOworICAgIH0KKwogICAgIFNjb3BlU3RhY2sgbV9z
Y29wZVN0YWNrOwogICAgIAogICAgIGNvbnN0IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtKiBmaW5k
Q2FjaGVkRnVuY3Rpb25JbmZvKGludCBvcGVuQnJhY2VQb3MpIApAQCAtODMzLDcgKzg0OCw3IEBA
IGNsYXNzIFBhcnNlciB7CiAgICAgfQogCiAgICAgUGFyc2VyKCk7Ci0gICAgU3RyaW5nIHBhcnNl
SW5uZXIoY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uUGFyc2VNb2RlKTsKKyAgICBTdHJpbmcg
cGFyc2VJbm5lcihjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25QYXJzZU1vZGUsIE1vZHVsZVBh
cnNlTW9kZSk7CiAKICAgICB2b2lkIGRpZEZpbmlzaFBhcnNpbmcoU291cmNlRWxlbWVudHMqLCBE
ZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjayYsIFZhcmlhYmxlRW52aXJvbm1lbnQmLCBD
b2RlRmVhdHVyZXMsIGludCwgY29uc3QgVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+
JiYpOwogCkBAIC0xMDk4LDcgKzExMTMsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVy
biBwYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuKFRyZWVCdWlsZGVyJiwgRGVzdHJ1Y3R1cmluZ0tp
bmQsIEV4cG9ydFR5cGUsIGNvbnN0IElkZW50aWZpZXIqKiBkdXBsaWNhdGVJZGVudGlmaWVyID0g
bnVsbHB0ciwgYm9vbCogaGFzRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gPSBudWxscHRyLCBBc3NpZ25t
ZW50Q29udGV4dCA9IEFzc2lnbm1lbnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCwgaW50
IGRlcHRoID0gMCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJ
TkUgVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIHRyeVBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm5F
eHByZXNzaW9uKFRyZWVCdWlsZGVyJiwgQXNzaWdubWVudENvbnRleHQpOwogICAgIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVFeHByZXNzaW9uIHBhcnNlRGVm
YXVsdFZhbHVlRm9yRGVzdHJ1Y3R1cmluZ1BhdHRlcm4oVHJlZUJ1aWxkZXImKTsKLSAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZU1vZHVsZVNv
dXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VNb2R1bGVTb3VyY2VFbGVtZW50cyhUcmVlQnVp
bGRlciYsIE1vZHVsZVBhcnNlTW9kZSk7CiAgICAgZW51bSBjbGFzcyBJbXBvcnRTcGVjaWZpZXJU
eXBlIHsgTmFtZXNwYWNlSW1wb3J0LCBOYW1lZEltcG9ydCwgRGVmYXVsdEltcG9ydCB9OwogICAg
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkltcG9y
dFNwZWNpZmllciBwYXJzZUltcG9ydENsYXVzZUl0ZW0oVHJlZUJ1aWxkZXImLCBJbXBvcnRTcGVj
aWZpZXJUeXBlKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRy
ZWVCdWlsZGVyOjpNb2R1bGVTcGVjaWZpZXIgcGFyc2VNb2R1bGVTcGVjaWZpZXIoVHJlZUJ1aWxk
ZXImKTsKQEAgLTEyNTUsNyArMTI3MCw3IEBAIGNsYXNzIFBhcnNlciB7CiAKIHRlbXBsYXRlIDx0
eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KLXN0ZDo6dW5p
cXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3Im
IGVycm9yLCBjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBGdW5jdGlvblBhcnNlTW9kZSBw
YXJzZU1vZGUpCitzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlKFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwg
RnVuY3Rpb25QYXJzZU1vZGUgcGFyc2VNb2RlLCBNb2R1bGVQYXJzZU1vZGUgbW9kdWxlUGFyc2VN
b2RlKQogewogICAgIGludCBlcnJMaW5lOwogICAgIFN0cmluZyBlcnJNc2c7CkBAIC0xMjcyLDcg
KzEyODcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlKFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSQogICAgIEFTU0VSVChtX3NvdXJjZS0+
c3RhcnRDb2x1bW4oKSA+IDApOwogICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gbV9zb3VyY2Ut
PnN0YXJ0Q29sdW1uKCkgLSAxOwogCi0gICAgU3RyaW5nIHBhcnNlRXJyb3IgPSBwYXJzZUlubmVy
KGNhbGxlZU5hbWUsIHBhcnNlTW9kZSk7CisgICAgU3RyaW5nIHBhcnNlRXJyb3IgPSBwYXJzZUlu
bmVyKGNhbGxlZU5hbWUsIHBhcnNlTW9kZSwgbW9kdWxlUGFyc2VNb2RlKTsKIAogICAgIGludCBs
aW5lTnVtYmVyID0gbV9sZXhlci0+bGluZU51bWJlcigpOwogICAgIGJvb2wgbGV4RXJyb3IgPSBt
X2xleGVyLT5zYXdFcnJvcigpOwpAQCAtMTM0MCwxNSArMTM1NSwxNiBAQCBzdGQ6OnVuaXF1ZV9w
dHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgSlNQYXJz
ZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSwKICAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0
TW9kZSwgSlNQYXJzZXJDb2RlVHlwZSBjb2RlVHlwZSwKICAgICBQYXJzZXJFcnJvciYgZXJyb3Is
IEpTVGV4dFBvc2l0aW9uKiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gbnVsbHB0ciwKLSAg
ICBGdW5jdGlvblBhcnNlTW9kZSBwYXJzZU1vZGUgPSBOb3RBRnVuY3Rpb25Nb2RlLCBDb25zdHJ1
Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwg
Ci0gICAgVGhpc1REWk1vZGUgdGhpc1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRl
ZCkKKyAgICBGdW5jdGlvblBhcnNlTW9kZSBwYXJzZU1vZGUgPSBOb3RBRnVuY3Rpb25Nb2RlLCBD
b25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6
Tm9uZSwKKyAgICBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpDaGVja0lm
TmVlZGVkLAorICAgIE1vZHVsZVBhcnNlTW9kZSBtb2R1bGVQYXJzZU1vZGUgPSBNb2R1bGVQYXJz
ZU1vZGU6OkFuYWx5emUpCiB7CiAgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIlBh
cnNpbmciKTsKIAogICAgIEFTU0VSVCghc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzTnVs
bCgpKTsKICAgICBpZiAoc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzOEJpdCgpKSB7CiAg
ICAgICAgIFBhcnNlcjxMZXhlcjxMQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9k
ZSwgc3RyaWN0TW9kZSwgY29kZVR5cGUsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpN
b2RlKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNl
ci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlKTsKKyAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2Rl
PihlcnJvciwgbmFtZSwgcGFyc2VNb2RlLCBtb2R1bGVQYXJzZU1vZGUpOwogICAgICAgICBpZiAo
cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxh
c3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKICAgICAgICAg
aWYgKGJ1aWx0aW5Nb2RlID09IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4pIHsKQEAgLTEz
NjEsNyArMTM3Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICB9
CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShkZWZhdWx0Q29uc3RydWN0b3JLaW5kID09IENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgIkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0
cnVjdG9yIHNob3VsZCBhbHdheXMgdXNlIGEgOC1iaXQgc3RyaW5nIik7CiAgICAgUGFyc2VyPExl
eGVyPFVDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBj
b2RlVHlwZSwgZGVmYXVsdENvbnN0cnVjdG9yS2luZCwgdGhpc1REWk1vZGUpOwotICAgIHN0ZDo6
dW5pcXVlX3B0cjxQYXJzZWROb2RlPiByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4o
ZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+
IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2Rl
LCBtb2R1bGVQYXJzZU1vZGUpOwogICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQog
ICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9y
ZUxhc3ROZXdsaW5lKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAppbmRleCBjNGQ2MTY3ZWM4MmRjOTY3NzkwNDk5NmIxY2U2
MzZhYjc5ZDk5ZDgyLi40MjA0MzZlYTMwNmMxODQ5MDljMTg4NDQ5ZTg2ODU1NDlkMjY0YjBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCkBAIC0zOCw2ICsz
OCw3IEBAIGVudW0gY2xhc3MgSlNQYXJzZXJDb2RlVHlwZSB7IFByb2dyYW0sIEZ1bmN0aW9uLCBN
b2R1bGUgfTsKIGVudW0gY2xhc3MgQ29uc3RydWN0b3JLaW5kIHsgTm9uZSwgQmFzZSwgRGVyaXZl
ZCB9OwogZW51bSBjbGFzcyBTdXBlckJpbmRpbmcgeyBOZWVkZWQsIE5vdE5lZWRlZCB9OwogZW51
bSBjbGFzcyBUaGlzVERaTW9kZSB7IEFsd2F5c0NoZWNrLCBDaGVja0lmTmVlZGVkIH07CitlbnVt
IGNsYXNzIE1vZHVsZVBhcnNlTW9kZSB7IEFuYWx5emUsIEV2YWx1YXRlIH07CiAKIGVudW0gUHJv
ZmlsZXJNb2RlIHsgUHJvZmlsZXJPZmYsIFByb2ZpbGVyT24gfTsKIGVudW0gRGVidWdnZXJNb2Rl
IHsgRGVidWdnZXJPZmYsIERlYnVnZ2VyT24gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggNzUwMzQ1YTNhOTk4YzIxYWNiY2Y5ZWRkY2ZiMDZl
NzAzNWI5NWVjOC4uZGQyNjgwMjc3ZjAyMmI4NjU4NDFlNGEzY2QyMDhjZmJkMjIwYzkwMiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTI2NSw3
ICsyNjUsNyBAQCBjbGFzcyBTeW50YXhDaGVja2VyIHsKICAgICB2b2lkIGFwcGVuZEltcG9ydFNw
ZWNpZmllcihJbXBvcnRTcGVjaWZpZXJMaXN0LCBJbXBvcnRTcGVjaWZpZXIpIHsgfQogICAgIGlu
dCBjcmVhdGVJbXBvcnREZWNsYXJhdGlvbihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBJbXBvcnRT
cGVjaWZpZXJMaXN0LCBNb2R1bGVTcGVjaWZpZXIpIHsgcmV0dXJuIFN0YXRlbWVudFJlc3VsdDsg
fQogICAgIGludCBjcmVhdGVFeHBvcnRBbGxEZWNsYXJhdGlvbihjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBNb2R1bGVTcGVjaWZpZXIpIHsgcmV0dXJuIFN0YXRlbWVudFJlc3VsdDsgfQotICAgIGlu
dCBjcmVhdGVFeHBvcnREZWZhdWx0RGVjbGFyYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
aW50KSB7IHJldHVybiBTdGF0ZW1lbnRSZXN1bHQ7IH0KKyAgICBpbnQgY3JlYXRlRXhwb3J0RGVm
YXVsdERlY2xhcmF0aW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgY29uc3QgSWRlbnRp
ZmllciYpIHsgcmV0dXJuIFN0YXRlbWVudFJlc3VsdDsgfQogICAgIGludCBjcmVhdGVFeHBvcnRM
b2NhbERlY2xhcmF0aW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCkgeyByZXR1cm4gU3Rh
dGVtZW50UmVzdWx0OyB9CiAgICAgaW50IGNyZWF0ZUV4cG9ydE5hbWVkRGVjbGFyYXRpb24oY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwb3J0U3BlY2lmaWVyTGlzdCwgTW9kdWxlU3BlY2lmaWVy
KSB7IHJldHVybiBTdGF0ZW1lbnRSZXN1bHQ7IH0KICAgICBFeHBvcnRTcGVjaWZpZXIgY3JlYXRl
RXhwb3J0U3BlY2lmaWVyKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXIm
LCBjb25zdCBJZGVudGlmaWVyJikgeyByZXR1cm4gRXhwb3J0U3BlY2lmaWVyUmVzdWx0OyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1l
bnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50
LmNwcAppbmRleCA5Y2NlM2Y4ZDI4MGZmYTUwOTk4ZTIwMWVlYjAzMjJiZGU3NWYzNjQ3Li5lZDA1
NWY5OGE5NDljYTNhYzBhYzgxNzZiNDViZThkNDRjMzJjYTMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAKQEAgLTgxLDQg
KzgxLDE4IEBAIHZvaWQgVmFyaWFibGVFbnZpcm9ubWVudDo6c3dhcChWYXJpYWJsZUVudmlyb25t
ZW50JiBvdGhlcikKICAgICBtX2lzRXZlcnl0aGluZ0NhcHR1cmVkID0gb3RoZXIubV9pc0V2ZXJ5
dGhpbmdDYXB0dXJlZDsKIH0KIAordm9pZCBWYXJpYWJsZUVudmlyb25tZW50OjptYXJrVmFyaWFi
bGVBc0ltcG9ydGVkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIp
Cit7CisgICAgYXV0byBmaW5kUmVzdWx0ID0gbV9tYXAuZmluZChpZGVudGlmaWVyKTsKKyAgICBS
RUxFQVNFX0FTU0VSVChmaW5kUmVzdWx0ICE9IG1fbWFwLmVuZCgpKTsKKyAgICBmaW5kUmVzdWx0
LT52YWx1ZS5zZXRJc0ltcG9ydGVkKCk7Cit9CisKK3ZvaWQgVmFyaWFibGVFbnZpcm9ubWVudDo6
bWFya1ZhcmlhYmxlQXNFeHBvcnRlZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBp
ZGVudGlmaWVyKQoreworICAgIGF1dG8gZmluZFJlc3VsdCA9IG1fbWFwLmZpbmQoaWRlbnRpZmll
cik7CisgICAgUkVMRUFTRV9BU1NFUlQoZmluZFJlc3VsdCAhPSBtX21hcC5lbmQoKSk7CisgICAg
ZmluZFJlc3VsdC0+dmFsdWUuc2V0SXNFeHBvcnRlZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZp
cm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25t
ZW50LmgKaW5kZXggNzM4ZTY1MTljMWUyMGFhZDRkZjQ1Nzc2MDcwMGI2YzFlNmE0OTNjNy4uNWVk
MmE2YmRhOTI4MzhlMjk2NDgyZjY2YzA3ODVhMzYxMWFlNjE1YyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKQEAgLTM4LDExICsz
OCwxNSBAQCBzdHJ1Y3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5IHsKICAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgaXNDb25zdCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzQ29uc3Q7IH0KICAg
ICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNWYXIoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1Zh
cjsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0xldCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0
cyAmIElzTGV0OyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzRXhwb3J0ZWQoKSBjb25zdCB7
IHJldHVybiBtX2JpdHMgJiBJc0V4cG9ydGVkOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlz
SW1wb3J0ZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc0ltcG9ydGVkOyB9CiAKICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNDYXB0dXJlZCgpIHsgbV9iaXRzIHw9IElzQ2FwdHVyZWQ7
IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNDb25zdCgpIHsgbV9iaXRzIHw9IElzQ29u
c3Q7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNWYXIoKSB7IG1fYml0cyB8PSBJc1Zh
cjsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0xldCgpIHsgbV9iaXRzIHw9IElzTGV0
OyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzRXhwb3J0ZWQoKSB7IG1fYml0cyB8PSBJ
c0V4cG9ydGVkOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzSW1wb3J0ZWQoKSB7IG1f
Yml0cyB8PSBJc0ltcG9ydGVkOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY2xlYXJJc1Zh
cigpIHsgbV9iaXRzICY9IH5Jc1ZhcjsgfQogCkBAIC01MSw3ICs1NSw5IEBAIHN0cnVjdCBWYXJp
YWJsZUVudmlyb25tZW50RW50cnkgewogICAgICAgICBJc0NhcHR1cmVkID0gMSA8PCAwLAogICAg
ICAgICBJc0NvbnN0ID0gMSA8PCAxLAogICAgICAgICBJc1ZhciA9IDEgPDwgMiwKLSAgICAgICAg
SXNMZXQgPSAxIDw8IDMKKyAgICAgICAgSXNMZXQgPSAxIDw8IDMsCisgICAgICAgIElzRXhwb3J0
ZWQgPSAxIDw8IDQsCisgICAgICAgIElzSW1wb3J0ZWQgPSAxIDw8IDUKICAgICB9OwogICAgIHVp
bnQ4X3QgbV9iaXRzIHsgMCB9OwogfTsKQEAgLTc5LDYgKzg1LDggQEAgY2xhc3MgVmFyaWFibGVF
bnZpcm9ubWVudCB7CiAgICAgdm9pZCBtYXJrQWxsVmFyaWFibGVzQXNDYXB0dXJlZCgpOwogICAg
IGJvb2wgaGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSBjb25zdDsKICAgICBib29sIGNhcHR1cmVzKFVu
aXF1ZWRTdHJpbmdJbXBsKiBpZGVudGlmaWVyKSBjb25zdDsKKyAgICB2b2lkIG1hcmtWYXJpYWJs
ZUFzSW1wb3J0ZWQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcik7
CisgICAgdm9pZCBtYXJrVmFyaWFibGVBc0V4cG9ydGVkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4mIGlkZW50aWZpZXIpOwogCiBwcml2YXRlOgogICAgIE1hcCBtX21hcDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4
IDY0NTFmZjM0NDkwZmJiNjZiZDJhZjIxZGI3NjBmYTVlN2QyYjViMTQuLmQ3YWUwNzc5NWFmOWU2
OTNjOWUzODRmYmYzZjUxZjM2YzFhYTU2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMzAxLDYgKzMwMSw3IEBACiAgICAg
bWFjcm8ocHJvbWlzZVJlamVjdFJlYWN0aW9ucykgXAogICAgIG1hY3JvKHByb21pc2VSZXN1bHQp
IFwKICAgICBtYWNybyhjYXBhYmlsaXRpZXMpIFwKKyAgICBtYWNybyhzdGFyRGVmYXVsdCkgXAog
CiAKIG5hbWVzcGFjZSBKU0Mgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258696</attachid>
            <date>2015-08-10 20:55:45 -0700</date>
            <delta_ts>2015-08-10 21:06:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147353-20150810205532.patch</filename>
            <type>text/plain</type>
            <size>75670</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NjRhMDM3NTUyYzIwNWNhYjUyZmJjYmJiZTMyODc4NWRmNzA5OTdhLi5lNTFhNDU1NjA1NGQ4YWRh
YjMyNzUyNzhhMTg2MjZiOTg3NmU3NGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDcgQEAKKzIwMTUtMDgtMTAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gQWRkIEVTNiBNb2R1bGVzIHByZXBhcnNpbmcgcGhhc2Ug
dG8gY29sbGVjdCB0aGUgZGVwZW5kZW5jaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDczNTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgTW9kdWxlUmVjb3JkIGFu
ZCBNb2R1bGVBbmFseXplci4KKyAgICAgICAgTW9kdWxlQW5hbHl6ZXIgYW5hbHl6ZXMgdGhlIHBy
b2R1Y2VkIEFTVCBmcm9tIHRoZSBwYXJzZXIuCisgICAgICAgIEJ5IGNvbGxhYm9yYXRpbmcgd2l0
aCB0aGUgcGFyc2VyLCBNb2R1bGVBbmFseXplciBjb2xsZWN0cyB0aGUgaW5mb3JtYXRpb24KKyAg
ICAgICAgdGhhdCBpcyBuZWNlc3NhcnkgdG8gcmVxdWVzdCB0aGUgbG9hZGluZyBmb3IgdGhlIGRl
cGVuZGVudCBtb2R1bGVzIGFuZAorICAgICAgICBjb25zdHJ1Y3QgbW9kdWxlJ3MgZW52aXJvbm1l
bnQgYW5kIG5hbWVzcGFjZSBvYmplY3QgYmVmb3JlIGV4ZWN1dGluZyB0aGUgYWN0dWFsCisgICAg
ICAgIG1vZHVsZSBib2R5LgorCisgICAgICAgIEluIHRoZSBwYXJzZXIsIHdlIGFubm90YXRlIHdo
aWNoIHZhcmlhYmxlIGlzIGltcG9ydGVkIGJpbmRpbmcgYW5kIHdoaWNoIHZhcmlhYmxlCisgICAg
ICAgIGlzIGV4cG9ydGVkIGZyb20gdGhlIGN1cnJlbnQgbW9kdWxlLiBUaGlzIGluZm9ybWF0aW9u
IGlzIGxldmVyYWdlZCBpbiB0aGUgTW9kdWxlQW5hbHl6ZXIKKyAgICAgICAgdG8gY2F0ZWdvcml6
ZSB0aGUgZXhwb3J0IGVudHJpZXMuCisKKyAgICAgICAgVG8gcHJlcGFyc2UgdGhlIG1vZHVsZXMg
aW4gdGhlIHBhcnNlciwgd2UganVzdCBhZGQgdGhlIG5ldyBmbGFnIGBNb2R1bGVQYXJzZU1vZGVg
CisgICAgICAgIGluc3RlYWQgb2YgaW50cm9kdWNpbmcgYSBuZXcgVHJlZUNvbnRleHQgdHlwZS4g
VGhpcyBpcyBiZWNhdXNlIG9ubHkgMiB1c2VycyB1c2UgdGhlCisgICAgICAgIHBhcnNlTW9kdWxl
U291cmNlRWxlbWVudHM7IHByZXBhcnNlciBhbmQgYWN0dWFsIGNvbXBpbGVyLiBBZGRpbmcgdGhl
IGZsYWcgaXMgc2ltcGxlCisgICAgICAgIGVub3VnaCB0byBzd2l0Y2ggdGhlIGNvbnRleHQgdG8g
dGhlIFN5bnRheENoZWNrZXIgd2hlbiBwYXJzaW5nIHRoZSBub24tbW9kdWxlIHJlbGF0ZWQKKyAg
ICAgICAgc3RhdGVtZW50IGluIHRoZSBwcmVwYXJzaW5nIHBoYXNlLgorCisgICAgICAgIFRvIGRl
bW9uc3RyYXRlIHRoZSBtb2R1bGUgYW5hbHl6ZXIsIHdlIGFkZGVkIHRoZSBuZXcgb3B0aW9uIGR1
bXBNb2R1bGVSZWNvcmQgb3B0aW9uCisgICAgICAgIGludG8gdGhlIEpTQyBzaGVsbC4gQnkgc3Bl
Y2lmeWluZyB0aGlzLCB0aGUgcmVzdWx0IG9mIGFuYWx5c2lzIGlzIGR1bXBlZCB3aGVuIHRoZSBt
b2R1bGUKKyAgICAgICAgaXMgcGFyc2VkIGFuZCBhbmFseXplZC4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAg
ICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNy
ZWF0ZUV4cG9ydERlZmF1bHREZWNsYXJhdGlvbik6CisgICAgICAgICogcGFyc2VyL01vZHVsZUFu
YWx5emVyLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6Ok1vZHVsZUFuYWx5emVyOjpNb2R1bGVB
bmFseXplcik6CisgICAgICAgIChKU0M6Ok1vZHVsZUFuYWx5emVyOjpleHBvcnRlZEJpbmRpbmcp
OgorICAgICAgICAoSlNDOjpNb2R1bGVBbmFseXplcjo6ZGVjbGFyZUV4cG9ydEFsaWFzKToKKyAg
ICAgICAgKEpTQzo6TW9kdWxlQW5hbHl6ZXI6OmV4cG9ydFZhcmlhYmxlKToKKyAgICAgICAgKEpT
Qzo6TW9kdWxlQW5hbHl6ZXI6OmFuYWx5emUpOgorICAgICAgICAqIHBhcnNlci9Nb2R1bGVBbmFs
eXplci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxlQW5hbHl6ZXI6OnZtKToKKyAgICAg
ICAgKEpTQzo6TW9kdWxlQW5hbHl6ZXI6Om1vZHVsZVJlY29yZCk6CisgICAgICAgICogcGFyc2Vy
L01vZHVsZVJlY29yZC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpwcmludGFibGVOYW1lKToK
KyAgICAgICAgKEpTQzo6TW9kdWxlUmVjb3JkOjpkdW1wKToKKyAgICAgICAgKiBwYXJzZXIvTW9k
dWxlUmVjb3JkLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpNb2R1bGVSZWNvcmQ6OkltcG9ydEVu
dHJ5Ojppc05hbWVzcGFjZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZVJlY29yZDo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6TW9kdWxlUmVjb3JkOjphcHBlbmRSZXF1ZXN0ZWRNb2R1bGUpOgorICAg
ICAgICAoSlNDOjpNb2R1bGVSZWNvcmQ6OmFkZEltcG9ydEVudHJ5KToKKyAgICAgICAgKEpTQzo6
TW9kdWxlUmVjb3JkOjphZGRFeHBvcnRFbnRyeSk6CisgICAgICAgIChKU0M6Ok1vZHVsZVJlY29y
ZDo6YWRkU3RhckV4cG9ydEVudHJ5KToKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVjdG9y
cy5oOgorICAgICAgICAoSlNDOjpNb2R1bGVEZWNsYXJhdGlvbk5vZGU6Ok1vZHVsZURlY2xhcmF0
aW9uTm9kZSk6CisgICAgICAgIChKU0M6OkltcG9ydERlY2xhcmF0aW9uTm9kZTo6SW1wb3J0RGVj
bGFyYXRpb25Ob2RlKToKKyAgICAgICAgKEpTQzo6RXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlOjpF
eHBvcnRBbGxEZWNsYXJhdGlvbk5vZGUpOgorICAgICAgICAoSlNDOjpFeHBvcnREZWZhdWx0RGVj
bGFyYXRpb25Ob2RlOjpFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25Ob2RlKToKKyAgICAgICAgKEpT
Qzo6RXhwb3J0TG9jYWxEZWNsYXJhdGlvbk5vZGU6OkV4cG9ydExvY2FsRGVjbGFyYXRpb25Ob2Rl
KToKKyAgICAgICAgKEpTQzo6RXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGU6OkV4cG9ydE5hbWVk
RGVjbGFyYXRpb25Ob2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKEpT
Qzo6RXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZTo6bG9jYWxOYW1lKToKKyAgICAgICAgKiBw
YXJzZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlNjb3Bl
Tm9kZTo6YW5hbHl6ZU1vZHVsZSk6CisgICAgICAgIChKU0M6OlNvdXJjZUVsZW1lbnRzOjphbmFs
eXplTW9kdWxlKToKKyAgICAgICAgKEpTQzo6SW1wb3J0RGVjbGFyYXRpb25Ob2RlOjphbmFseXpl
TW9kdWxlKToKKyAgICAgICAgKEpTQzo6RXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlOjphbmFseXpl
TW9kdWxlKToKKyAgICAgICAgKEpTQzo6RXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZTo6YW5h
bHl6ZU1vZHVsZSk6CisgICAgICAgIChKU0M6OkV4cG9ydExvY2FsRGVjbGFyYXRpb25Ob2RlOjph
bmFseXplTW9kdWxlKToKKyAgICAgICAgKEpTQzo6RXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGU6
OmFuYWx5emVNb2R1bGUpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZU1vZHVsZVNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QpOgorICAgICAg
ICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlQmluZGluZ1BhdHRlcm4pOgorICAgICAg
ICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAg
ICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3NEZWNsYXJhdGlvbik6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUltcG9ydENsYXVzZUl0ZW0pOgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnRTcGVjaWZpZXIpOgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnREZWNsYXJhdGlvbik6
CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpTY29wZTo6bGV4aWNh
bFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlTGV4aWNhbFZhcmlhYmxl
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpkZWNsYXJlVmFyaWFibGUpOgorICAgICAgICAoSlND
OjpQYXJzZXI6OmV4cG9ydE5hbWUpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2UpOgorICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlck1v
ZGVzLmg6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uKToKKyAgICAgICAg
KiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OlZhcmlhYmxl
RW52aXJvbm1lbnQ6Om1hcmtWYXJpYWJsZUFzSW1wb3J0ZWQpOgorICAgICAgICAoSlNDOjpWYXJp
YWJsZUVudmlyb25tZW50OjptYXJrVmFyaWFibGVBc0V4cG9ydGVkKToKKyAgICAgICAgKiBwYXJz
ZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25t
ZW50RW50cnk6OmlzRXhwb3J0ZWQpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50
RW50cnk6OmlzSW1wb3J0ZWQpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50
cnk6OnNldElzRXhwb3J0ZWQpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50
cnk6OnNldElzSW1wb3J0ZWQpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aDoKKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjpjaGVj
a01vZHVsZVN5bnRheCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6CisKIDIwMTUtMDgt
MTAgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJlZmFjdG9yIExp
dmVPYmplY3RMaXN0IGFuZCBMaXZlT2JqZWN0RGF0YSBpbnRvIHRoZWlyIG93biBmaWxlcy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAwMDJkMDNiOWMxOWI2ZTA1MDYwZTJi
NzdhMDhiMWY5ZWM3ZGVkNjA0Li45ZTExNDE3YjdmMmIyNzM5NmY3MDM0ZGZiODY2NzM1YTUyYTc4
OTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0zODQsNyArMzg0LDEw
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgaml0L1RodW5rR2VuZXJhdG9ycy5j
cHAKIAogICAgIHBhcnNlci9MZXhlci5jcHAKKyAgICBwYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3Bw
CisgICAgcGFyc2VyL01vZHVsZVJlY29yZC5jcHAKICAgICBwYXJzZXIvTm9kZXMuY3BwCisgICAg
cGFyc2VyL05vZGVzQW5hbHl6ZU1vZHVsZS5jcHAKICAgICBwYXJzZXIvUGFyc2VyLmNwcAogICAg
IHBhcnNlci9QYXJzZXJBcmVuYS5jcHAKICAgICBwYXJzZXIvU291cmNlQ29kZS5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDVjNTcyOGI2MWEzYWQzYzUxMzhk
ZTFhZDExZDhmNDVhZDMxNGIyYWMuLjUxZmNhNGI0YzhjODJjYTlhYzRlN2ViYWMzMmQ0NTZjMzFj
OGQzMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNjU4LDcg
KzY1OCwxMCBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cbGx2bVxJbml0aWFsaXplTExW
TVdpbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxsbHZtXExMVk1BUEkuY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFyc2VyXExleGVyLmNwcCIgLz4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhcnNlclxNb2R1bGVBbmFseXplci5jcHAiIC8+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYXJzZXJcTW9kdWxlUmVjb3JkLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhcnNlclxOb2Rlcy5jcHAiIC8+CisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxwYXJzZXJcTm9kZXNBbmFseXplTW9kdWxlLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhcnNlclxQYXJzZXIuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGFyc2VyXFBhcnNlckFyZW5hLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHBhcnNlclxTb3VyY2VDb2RlLmNwcCIgLz4KQEAgLTE0NDcsNiArMTQ1MCw4
IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxsbHZtXExMVk1IZWFkZXJzLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcQVNUQnVpbGRlci5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXExleGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxwYXJzZXJcTW9kdWxlQW5hbHl6ZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBhcnNlclxNb2R1bGVSZWNvcmQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHBhcnNlclxOb2RlQ29uc3RydWN0b3JzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxwYXJzZXJcTm9kZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBh
cnNlclxQYXJzZXIuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ouZmlsdGVycwppbmRleCA4NjdkMzMxYjljN2U4NTFiNTNiNjYzODk4OWM4ZDFhMTBmM2Y5
ZjJkLi5hZGQyODllNTNiMmRiYjIxYzFhNDFhYTE0MTMwMzMyNjc1NTE0ODQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC00NTMsOSAr
NDUzLDE4IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYXJzZXJcTGV4ZXIuY3BwIj4K
ICAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwYXJzZXJcTW9kdWxlQW5hbHl6ZXIuY3BwIj4KKyAgICAgIDxG
aWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxwYXJzZXJcTW9kdWxlUmVjb3JkLmNwcCI+CisgICAgICA8RmlsdGVyPnBhcnNl
cjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cGFyc2VyXE5vZGVzLmNwcCI+CiAgICAgICA8RmlsdGVyPnBhcnNlcjwvRmlsdGVyPgogICAgIDwv
Q2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFyc2VyXE5vZGVzQW5hbHl6
ZU1vZHVsZS5jcHAiPgorICAgICAgPEZpbHRlcj5wYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0NsQ29t
cGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhcnNlclxQYXJzZXIuY3BwIj4KICAg
ICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0yNDgwLDYg
KzI0ODksMTIgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxMZXhlci5oIj4K
ICAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcTW9kdWxlQW5hbHl6ZXIuaCI+CisgICAgICA8Rmls
dGVyPnBhcnNlcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccGFyc2VyXE1vZHVsZVJlY29yZC5oIj4KKyAgICAgIDxGaWx0ZXI+cGFyc2VyPC9G
aWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJz
ZXJcTm9kZUNvbnN0cnVjdG9ycy5oIj4KICAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZkMTVmYTY4
OGM5NjgwYTMyZGFlOTdkOWZhNzc4ZjRhZWU0MWY2ZTIuLmQxZDNhMGIxNmY1Zjk2ZTIyNjljMjcw
N2MzY2UxN2U2MmEyNjNkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNjkw
LDYgKzE2OTAsMTEgQEAKIAkJRTMzNjM3QTUxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmpl
Y3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMz
NjM3QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwICovOyB9OwogCQlFMzM2
MzdBNjFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3QTQxQjYzMjIwMjAwRUUwODQwIC8q
IFJlZmxlY3RPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlFMzU0NjIyQjFCNjA2NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NDYyMkEx
QjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFiaWxpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzc5NEU3NTFCNzdFQjk3MDA1NTQzQUUg
LyogTW9kdWxlQW5hbHl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNw
cCAqLzsgfTsKKwkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFC
NzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzk2M0NFRDFCNzNGNzUwMDBFQjRDRTUgLyog
TW9kdWxlUmVjb3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzk2M0NFQjFCNzNGNzUwMDBFQjRDRTUgLyogTW9kdWxlUmVjb3JkLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NjNDRUUxQjczRjc1
MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyogTm9k
ZXNBbmFseXplTW9kdWxlLmNwcCAqLzsgfTsKKwkJRTNDMDlGNTUxQjc5NjkyQTAwRUUzNkEyIC8q
IE1vZHVsZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFM0MwOUY1NDFCNzk2OTJBMDBFRTM2QTIgLyogTW9kdWxlUmVjb3JkLmNwcCAqLzsg
fTsKIAkJRTNFRjg4NzQxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNFRjg4
NzIxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwICovOyB9Owog
CQlFM0VGODg3NTFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNFRjg4NzMxQjY2
REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDlEQzE2QjEyRUYyOTNFMDAxODRB
MUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlEQzE1NTEyRUYyNzcyMDAxODRBMUYgLyogU291cmNlUHJv
dmlkZXJDYWNoZS5jcHAgKi87IH07CkBAIC0zNTEyLDYgKzM1MTcsMTEgQEAKIAkJRTMzNjM3QTMx
QjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVmbGVjdE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzMzYzN0E0MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZmxlY3RPYmplY3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVj
dEFiaWxpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc3RydWN0QWJp
bGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzc5NEU3MzFCNzdFQjk3MDA1
NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTW9kdWxlQW5hbHl6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlQW5hbHl6ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTM5NjNDRUIxQjczRjc1MDAwRUI0Q0U1IC8qIE1vZHVsZVJlY29yZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVSZWNvcmQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVz
QW5hbHl6ZU1vZHVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBO
b2Rlc0FuYWx5emVNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0Mw
OUY1NDFCNzk2OTJBMDBFRTM2QTIgLyogTW9kdWxlUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzRUY4ODcyMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3
MzFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0OURDMTQ5MTJFRjI2MUEwMDE4NEExRiAvKiBTb3VyY2VQ
cm92aWRlckNhY2hlSXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3Vy
Y2VQcm92aWRlckNhY2hlSXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQy
Miw5ICs0NDMyLDE0IEBACiAJCQkJOTNGMTk4MUEwODI0NUFBRTAwMUU5QUJDIC8qIEtleXdvcmRz
LnRhYmxlICovLAogCQkJCUY2OTJBODY1MDI1NTU5N0QwMUZGNjBGNyAvKiBMZXhlci5jcHAgKi8s
CiAJCQkJRjY5MkE4NjYwMjU1NTk3RDAxRkY2MEY3IC8qIExleGVyLmggKi8sCisJCQkJRTM3OTRF
NzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLywKKwkJCQlFMzc5NEU3
NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLywKKwkJCQlFM0MwOUY1NDFC
Nzk2OTJBMDBFRTM2QTIgLyogTW9kdWxlUmVjb3JkLmNwcCAqLywKKwkJCQlFMzk2M0NFQjFCNzNG
NzUwMDBFQjRDRTUgLyogTW9kdWxlUmVjb3JkLmggKi8sCiAJCQkJOTMwREFEMDMwRkIxRUIxQTAw
ODJEMjA1IC8qIE5vZGVDb25zdHJ1Y3RvcnMuaCAqLywKIAkJCQlGNjkyQTg2RDAyNTU1OTdEMDFG
RjYwRjcgLyogTm9kZXMuY3BwICovLAogCQkJCUY2OTJBODZFMDI1NTU5N0QwMUZGNjBGNyAvKiBO
b2Rlcy5oICovLAorCQkJCUUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVN
b2R1bGUuY3BwICovLAogCQkJCTkzRjBCM0E5MDlCQjREQzAwMDY4RkNFMyAvKiBQYXJzZXIuY3Bw
ICovLAogCQkJCTkzRjBCM0FBMDlCQjREQzAwMDY4RkNFMyAvKiBQYXJzZXIuaCAqLywKIAkJCQk5
MzA1MkMzMjBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovLApAQCAtNjE1Mywx
MCArNjE2OCwxMiBAQAogCQkJCTBGRUEwQTExMTcwNTEzREIwMEJCNzIyQyAvKiBGVExPdXRwdXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTlFNzI5NDBCMTkwRjA1MTQwMDFBOTFCNSAvKiBCdW5kbGVQ
YXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyQTE4N0RGREVDMDA4M0I2ODcgLyogRlRM
UmVjb3ZlcnlPcGNvZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNzk0RTc2MUI3N0VCOTcwMDU1
NDNBRSAvKiBNb2R1bGVBbmFseXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2QjFDQzQxODYy
QzQ3ODAwODQ1RDk3IC8qIEZUTFJlZ2lzdGVyQXRPZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGQ0VGQUFDMTgwNEMxM0UwMDQ3MkNFNCAvKiBGVExTYXZlUmVzdG9yZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYyNUYxQjIxODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2FsbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTM1NDYyMkIxQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFi
aWxpdHkuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTYzQ0VEMUI3M0Y3NTAwMEVCNENFNSAvKiBN
b2R1bGVSZWNvcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjVGMUI0MTgxNjM1RjMwMDUyMkYz
OSAvKiBGVExTbG93UGF0aENhbGxLZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOUQzMzlCMTgw
M0FEQjcwMDczQzJCQyAvKiBGVExTdGFja01hcHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEw
QTEyMTcwNTEzREIwMEJCNzIyQyAvKiBGVExTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03MjEy
LDYgKzcyMjksNyBAQAogCQkJCTBGNTVGMEY0MTREMTA2MzkwMEFDNzY0OSAvKiBBYnN0cmFjdFBD
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUJEMTA3RUMzNzYwMDQyN0E0OCAvKiBBcmdM
aXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNkIxQ0M5MTg2NDFERjgwMDg0NUQ5NyAvKiBB
cml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzc5NEU3
NTFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEY3NDNCQUExNkI4ODI0OTAwOUY5Mjc3IC8qIEFSTTY0RGlzYXNzZW1ibGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTg2RDNCMkMzMTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVDMDI4NTAxNzE3OTVFMjAwMzUxRTM1IC8qIEFSTXY3
RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzU3Niw2ICs3NTk0LDcgQEAKIAkJ
CQkwRjJCNjZFRDE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjJENERFODE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFMzg0RUU1MUFEREI3QUQwMDU1REUyQyAvKiBKU0Rv
bGxhclZNLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzQzA5RjU1MUI3OTY5MkEwMEVFMzZBMiAv
KiBNb2R1bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc4ODAxNDAxNDcxQUQ5MjAw
NDFCMDE2IC8qIEpTRGF0ZU1hdGguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFMDUwMTcxQUE5
MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
NDA1NjZENjEwN0VDMjcxMDA1REJDOEQgLyogSlNGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTc4NDMsNiArNzg2Miw3IEBACiAJCQkJODY3MDRCODQxMkRCQTMzNzAwQTlGRTdCIC8qIFlh
cnJJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI4NjEyREJBMzM3MDBB
OUZFN0IgLyogWWFyckpJVC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI4OTEyREJBMzM3
MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NjNDRUUx
QjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4NjcwNEI0MjEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgK
aW5kZXggNWRjNzE2Y2ZjYmFiMWY0ZDg1MTIzNjNkMTFjZjVkMGRmZjI3NmQ4YS4uY2UwNDQ0Nzlm
NzMwMmYxOWIxZDgxMTY4Zjk5ZWM0ODM1YjQwMjIwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAKLSNkZWZpbmUgSU5JVElBTElTRV9CVUlMVElOX05BTUVTKG5hbWUpICwg
bV8jI25hbWUoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgI25hbWUpKSwgbV8jI25hbWUjI1By
aXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb21VaWQoUHJpdmF0ZU5hbWUoKSkpCisjZGVmaW5lIElO
SVRJQUxJU0VfQlVJTFRJTl9OQU1FUyhuYW1lKSAsIG1fIyNuYW1lKElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICNuYW1lKSksIG1fIyNuYW1lIyNQcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9t
VWlkKFByaXZhdGVOYW1lKFByaXZhdGVOYW1lOjpEZXNjcmlwdGlvbiwgQVNDSUlMaXRlcmFsKCJQ
cml2YXRlU3ltYm9sLiIgI25hbWUpKSkpCiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9OQU1FUyhu
YW1lKSBjb25zdCBJZGVudGlmaWVyIG1fIyNuYW1lOyBjb25zdCBJZGVudGlmaWVyIG1fIyNuYW1l
IyNQcml2YXRlTmFtZTsKICNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNT
T1IobmFtZSkgXAogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUjI1B1YmxpY05hbWUoKSBjb25z
dCB7IHJldHVybiBtXyMjbmFtZTsgfSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNU
QnVpbGRlci5oCmluZGV4IGI4ZGZhOTJlYWIzMTBiNjlhYjViYzQ3NjFmYTk3NmZiNWZhNmMyNjIu
LmMxMTk1OTgwYTIwZDM4MDNkNTNhMTdhMjVlZjU0NWJhZTEwZWU1MTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC05Myw3ICs5Myw2IEBAIGNsYXNzIEFT
VEJ1aWxkZXIgewogICAgICAgICBVbmFyeUV4cHJDb250ZXh0KEFTVEJ1aWxkZXImKSB7fQogICAg
IH07CiAKLQogICAgIHR5cGVkZWYgRXhwcmVzc2lvbk5vZGUqIEV4cHJlc3Npb247CiAgICAgdHlw
ZWRlZiBKU0M6OlNvdXJjZUVsZW1lbnRzKiBTb3VyY2VFbGVtZW50czsKICAgICB0eXBlZGVmIEFy
Z3VtZW50c05vZGUqIEFyZ3VtZW50czsKQEAgLTY1MCw5ICs2NDksOSBAQCBjbGFzcyBBU1RCdWls
ZGVyIHsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgRXhwb3J0QWxsRGVjbGFy
YXRpb25Ob2RlKGxvY2F0aW9uLCBtb2R1bGVTcGVjaWZpZXIpOwogICAgIH0KIAotICAgIFN0YXRl
bWVudE5vZGUqIGNyZWF0ZUV4cG9ydERlZmF1bHREZWNsYXJhdGlvbihjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBTdGF0ZW1lbnROb2RlKiBkZWNsYXJhdGlvbikKKyAgICBTdGF0ZW1l
bnROb2RlKiBjcmVhdGVFeHBvcnREZWZhdWx0RGVjbGFyYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgU3RhdGVtZW50Tm9kZSogZGVjbGFyYXRpb24sIGNvbnN0IElkZW50aWZp
ZXImIGxvY2FsTmFtZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEp
IEV4cG9ydERlZmF1bHREZWNsYXJhdGlvbk5vZGUobG9jYXRpb24sIGRlY2xhcmF0aW9uKTsKKyAg
ICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9u
Tm9kZShsb2NhdGlvbiwgZGVjbGFyYXRpb24sIGxvY2FsTmFtZSk7CiAgICAgfQogCiAgICAgU3Rh
dGVtZW50Tm9kZSogY3JlYXRlRXhwb3J0TG9jYWxEZWNsYXJhdGlvbihjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBTdGF0ZW1lbnROb2RlKiBkZWNsYXJhdGlvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDA4
ZjhlMzljZTVmMzEzMGFmNGFhOTBlZmE4MjhkMTMyMGIzZmEyNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCkBAIC0wLDAg
KzEsMTU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vZHVsZUFuYWx5emVyLmgiCisKKyNpbmNs
dWRlICJNb2R1bGVSZWNvcmQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKKworTW9kdWxlQW5hbHl6
ZXI6Ok1vZHVsZUFuYWx5emVyKFZNJiB2bSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZGVj
bGFyZWRWYXJpYWJsZXMsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJs
ZXMpCisgICAgOiBtX3ZtKCZ2bSkKKyAgICAsIG1fbW9kdWxlUmVjb3JkKE1vZHVsZVJlY29yZDo6
Y3JlYXRlKCkpCisgICAgLCBtX2RlY2xhcmVkVmFyaWFibGVzKGRlY2xhcmVkVmFyaWFibGVzKQor
ICAgICwgbV9sZXhpY2FsVmFyaWFibGVzKGxleGljYWxWYXJpYWJsZXMpCit7Cit9CisKK0lkZW50
aWZpZXIgTW9kdWxlQW5hbHl6ZXI6OmV4cG9ydGVkQmluZGluZyhjb25zdCBSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+JiBpZGVudCkKK3sKKyAgICBjb25zdCBhdXRvIGl0ZXJhdG9yID0gbV9hbGlh
c01hcC5maW5kKGlkZW50KTsKKyAgICBpZiAoaXRlcmF0b3IgIT0gbV9hbGlhc01hcC5lbmQoKSkK
KyAgICAgICAgcmV0dXJuIGl0ZXJhdG9yLT52YWx1ZTsKKyAgICByZXR1cm4gSWRlbnRpZmllcjo6
ZnJvbVVpZCgmdm0oKSwgaWRlbnQuZ2V0KCkpOworfQorCit2b2lkIE1vZHVsZUFuYWx5emVyOjpk
ZWNsYXJlRXhwb3J0QWxpYXMoY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lLCBjb25zdCBJZGVu
dGlmaWVyJiBleHBvcnROYW1lKQoreworICAgIG1fYWxpYXNNYXAuYWRkKGxvY2FsTmFtZS5pbXBs
KCksIGV4cG9ydE5hbWUpOworfQorCit2b2lkIE1vZHVsZUFuYWx5emVyOjpleHBvcnRWYXJpYWJs
ZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBsb2NhbE5hbWUsIGNvbnN0IFZhcmlh
YmxlRW52aXJvbm1lbnRFbnRyeSYgdmFyaWFibGUpCit7CisgICAgLy8gSW4gdGhlIHBhcnNlciwg
d2UgYWxyZWFkeSBtYXJrZWQgdGhlIHZhcmlhYmxlcyBhcyBFeHBvcnRlZCBhbmQgSW1wb3J0ZWQu
CisgICAgLy8gQnkgbGV2ZXJhZ2luZyB0aGlzIGluZm9ybWF0aW9uLCB3ZSBjb2xsZWN0IHRoZSBp
bmZvcm1hdGlvbiB0aGF0IGlzIG5lZWRlZAorICAgIC8vIHRvIGNvbnN0cnVjdCB0aGUgbW9kdWxl
IGVudmlyb25tZW50LgorICAgIC8vCisgICAgLy8gSSBFCisgICAgLy8gICAqID0gZXhwb3J0ZWQg
bW9kdWxlIGxvY2FsIHZhcmlhYmxlCisgICAgLy8gKiAgID0gaW1wb3J0ZWQgYmluZGluZworICAg
IC8vICAgICA9IG5vbi1leHBvcnRlZCBtb2R1bGUgbG9jYWwgdmFyaWFibGUKKyAgICAvLyAqICog
PSBpbmRpcmVjdCBleHBvcnRlZCBiaW5kaW5nCisgICAgLy8KKyAgICAvLyBPbmUgZXhjZXB0aW9u
IGlzIG5hbWVzcGFjZSBiaW5kaW5nIChsaWtlIGltcG9ydCAqIGFzIG5zIGZyb20gIm1vZCIpLgor
ICAgIC8vIFRoaXMgaXMgYW5ub3RhdGVkIGFzIGFuIGltcG9ydGVkLCBidXQgdGhlIGFjdHVhbCBi
aW5kaW5nIGlzIGxvY2F0ZSBpbiB0aGUKKyAgICAvLyBjdXJyZW50IG1vZHVsZS4KKworICAgIGlm
ICghdmFyaWFibGUuaXNFeHBvcnRlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBjb25zdCBJ
ZGVudGlmaWVyIGV4cG9ydE5hbWUgPSBleHBvcnRlZEJpbmRpbmcobG9jYWxOYW1lKTsKKworICAg
IC8vIEV4cG9ydGVkIG1vZHVsZSBsb2NhbCB2YXJpYWJsZS4KKyAgICBpZiAoIXZhcmlhYmxlLmlz
SW1wb3J0ZWQoKSkgeworICAgICAgICBtb2R1bGVSZWNvcmQoKS5hZGRFeHBvcnRFbnRyeShNb2R1
bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVMb2NhbChleHBvcnROYW1lLCBJZGVudGlmaWVy
Ojpmcm9tVWlkKG1fdm0sIGxvY2FsTmFtZS5nZXQoKSksIHZhcmlhYmxlKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBjb25zdCBhdXRvJiBpbXBvcnRFbnRyeSA9IG1vZHVsZVJlY29y
ZCgpLmxvb2tVcEltcG9ydEVudHJ5KGxvY2FsTmFtZSk7CisgICAgaWYgKGltcG9ydEVudHJ5Lmlz
TmFtZXNwYWNlKHZtKCkpKSB7CisgICAgICAgIC8vIEV4cG9ydGVkIG5hbWVzcGFjZSBiaW5kaW5n
LgorICAgICAgICAvLyBpbXBvcnQgKiBhcyBuYW1lc3BhY2UgZnJvbSAibW9kIgorICAgICAgICAv
LyBleHBvcnQgeyBuYW1lc3BhY2UgfQorICAgICAgICBtb2R1bGVSZWNvcmQoKS5hZGRFeHBvcnRF
bnRyeShNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVOYW1lc3BhY2UoZXhwb3J0TmFt
ZSwgaW1wb3J0RW50cnkubW9kdWxlUmVxdWVzdCkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgLy8gSW5kaXJlY3RseSBleHBvcnRlZCBiaW5kaW5nLgorICAgIC8vIGltcG9ydCBhIGZy
b20gIm1vZCIKKyAgICAvLyBleHBvcnQgeyBhIH0KKyAgICBtb2R1bGVSZWNvcmQoKS5hZGRFeHBv
cnRFbnRyeShNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVJbmRpcmVjdChleHBvcnRO
YW1lLCBpbXBvcnRFbnRyeS5pbXBvcnROYW1lLCBpbXBvcnRFbnRyeS5tb2R1bGVSZXF1ZXN0KSk7
Cit9CisKKworCitSZWY8TW9kdWxlUmVjb3JkPiBNb2R1bGVBbmFseXplcjo6YW5hbHl6ZShNb2R1
bGVQcm9ncmFtTm9kZSYgbW9kdWxlUHJvZ3JhbU5vZGUpCit7CisgICAgLy8gVHJhdmVyc2UgdGhl
IG1vZHVsZSBBU1QgYW5kIGNvbGxlY3QKKyAgICAvLyAxLiBJbXBvcnQgZW50cmllcworICAgIC8v
IDIuIEV4cG9ydCBlbnRyaWVzIHRoYXQgaGF2ZSBGcm9tQ2xhdXNlIChlLmcuIGV4cG9ydCB7IGEg
fSBmcm9tICJtb2QiKQorICAgIC8vIDMuIEV4cG9ydCBlbnRyaWVzIHRoYXQgaGF2ZSBzdGFyIChl
LmcuIGV4cG9ydCAqIGZyb20gIm1vZCIpCisgICAgLy8gNC4gQWxpYXNlZCBleHBvcnQgbmFtZXMg
KGUuZy4gZXhwb3J0IHsgYSBhcyBiIH0pCisgICAgbW9kdWxlUHJvZ3JhbU5vZGUuYW5hbHl6ZU1v
ZHVsZSgqdGhpcyk7CisKKyAgICAvLyBCYXNlZCBvbiB0aGUgY29sbGVjdGVkIGluZm9ybWF0aW9u
LCBjYXRlZ29yaXplIGV4cG9ydCBlbnRyaWVzIGludG8gMyB0eXBlcy4KKyAgICAvLyAxLiBMb2Nh
bCBleHBvcnQgZW50cmllcworICAgIC8vICAgICBUaGlzIHJlZmVyZW5jZXMgdGhlIGxvY2FsIHZh
cmlhYmxlIGluIHRoZSBjdXJyZW50IG1vZHVsZS4KKyAgICAvLyAgICAgVGhpcyB2YXJpYWJsZSBz
aG91bGQgYmUgYWxsb2NhdGVkIGluIHRoZSBjdXJyZW50IG1vZHVsZSBlbnZpcm9ubWVudCBhcyBh
IGhlYXAgdmFyaWFibGUuCisgICAgLy8KKyAgICAvLyAgICAgY29uc3QgdmFyaWFibGUgPSAyMAor
ICAgIC8vICAgICBleHBvcnQgeyB2YXJpYWJsZSB9CisgICAgLy8KKyAgICAvLyAyLiBOYW1lc3Bh
Y2UgZXhwb3J0IGVudHJpZXMKKyAgICAvLyAgICAgVGhpcyByZWZlcmVuY2VzIHRoZSBuYW1lc3Bh
Y2Ugb2JqZWN0IGltcG9ydGVkIGJ5IHNvbWUgaW1wb3J0IGVudHJpZXMuCisgICAgLy8gICAgIFRo
aXMgdmFyaWFibGUgaXRzZWxmIHNob3VsZCBiZSBhbGxvY2F0ZWQgaW4gdGhlIGN1cnJlbnQgbW9k
dWxlIGVudmlyb25tZW50IGFzIGEgaGVhcCB2YXJpYWJsZS4KKyAgICAvLyAgICAgQnV0IHdoZW4g
dGhlIG90aGVyIG1vZHVsZXMgYXR0ZW1wdCB0byByZXNvbHZlIHRoaXMgZXhwb3J0IG5hbWUgaW4g
dGhpcyBtb2R1bGUsIHRoaXMgbW9kdWxlCisgICAgLy8gICAgIHNob3VsZCB0ZWxsIHRoZSBsaW5r
IHRvIHRoZSBvcmlnaW5hbCBtb2R1bGUuCisgICAgLy8KKyAgICAvLyAgICAgaW1wb3J0ICogYXMg
bmFtZXNwYWNlIGZyb20gIm1vZCIKKyAgICAvLyAgICAgZXhwb3J0IHsgbmFtZXNwYWNlIGFzIG1v
ZCB9CisgICAgLy8KKyAgICAvLyAzLiBJbmRpcmVjdCBleHBvcnQgZW50cmllcworICAgIC8vICAg
ICBUaGlzIHJlZmVyZW5jZXMgdGhlIGltcG9ydGVkIGJpbmRpbmcgbmFtZSBmcm9tIHRoZSBvdGhl
ciBtb2R1bGUuCisgICAgLy8gICAgIFRoaXMgbW9kdWxlIGVudmlyb25tZW50IGl0c2VsZiBzaG91
bGQgaG9sZCB0aGUgcG9pbnRlciB0byAoMSkgdGhlIG9yaWdpbmFsIG1vZHVsZSBhbmQKKyAgICAv
LyAgICAgKDIpIHRoZSBiaW5kaW5nIGluIHRoZSBvcmlnaW5hbCBtb2R1bGUuIFRoZSB2YXJpYWJs
ZSBpdHNlbGYgaXMgYWxsb2NhdGVkIGluIHRoZSBvcmlnaW5hbAorICAgIC8vICAgICBtb2R1bGUu
IFRoaXMgaW5kaXJlY3QgYmluZGluZyBpcyByZXNvbHZlZCB3aGVuIHRoZSBDb2RlQmxvY2sgcmVz
b2x2ZXMgdGhlIHJlZmVyZW5jZXMuCisgICAgLy8KKyAgICAvLyAgICAgaW1wb3J0IG1vZCBmcm9t
ICJtb2QiCisgICAgLy8gICAgIGV4cG9ydCB7IG1vZCB9CisgICAgLy8KKyAgICAvLyAgICAgZXhw
b3J0IHsgYSB9IGZyb20gIm1vZCIKKyAgICAvLworICAgIC8vIEFuZCBzZXBhcmV0ZWQgZnJvbSB0
aGUgYWJvdmUgMyB0eXBlcywgd2UgYWxzbyBjb2xsZWN0IHRoZSBzdGFyIGV4cG9ydCBlbnRyaWVz
LgorICAgIC8vCisgICAgLy8gNC4gU3RhciBleHBvcnQgZW50cmllcworICAgIC8vICAgICBUaGlz
IGV4cG9ydHMgYWxsIHRoZSBuYW1lcyBmcm9tIHRoZSBzcGVjaWZpZWQgZXh0ZXJuYWwgbW9kdWxl
IGFzIHRoZSBjdXJyZW50IG1vZHVsZSdzIG5hbWUuCisgICAgLy8KKyAgICAvLyAgICAgZXhwb3J0
ICogZnJvbSAibW9kIgorICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1fZGVjbGFyZWRWYXJp
YWJsZXMpCisgICAgICAgIGV4cG9ydFZhcmlhYmxlKHBhaXIua2V5LCBwYWlyLnZhbHVlKTsKKwor
ICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1fbGV4aWNhbFZhcmlhYmxlcykKKyAgICAgICAg
ZXhwb3J0VmFyaWFibGUocGFpci5rZXksIHBhaXIudmFsdWUpOworCisgICAgaWYgKE9wdGlvbnM6
OmR1bXBNb2R1bGVSZWNvcmQoKSkKKyAgICAgICAgbV9tb2R1bGVSZWNvcmQtPmR1bXAoKTsKKwor
ICAgIHJldHVybiAqbV9tb2R1bGVSZWNvcmQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjAyNzY0ODQ3NjUwYjMwMjRmZDJhOGMzNzIyZTczYTc0N2I5NjNjYjYKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmgKQEAgLTAs
MCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgTW9kdWxlQW5hbHl6ZXJfaAorI2RlZmluZSBNb2R1bGVBbmFseXplcl9oCisKKyNp
bmNsdWRlICJNb2R1bGVSZWNvcmQuaCIKKyNpbmNsdWRlICJOb2Rlcy5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgTW9kdWxlQW5hbHl6ZXIgeworcHVibGljOgorICAgIE1vZHVsZUFuYWx5
emVyKFZNJiwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZGVjbGFyZWRWYXJpYWJsZXMsIGNv
bnN0IFZhcmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMpOworCisgICAgUmVmPE1v
ZHVsZVJlY29yZD4gYW5hbHl6ZShNb2R1bGVQcm9ncmFtTm9kZSYpOworCisgICAgVk0mIHZtKCkg
eyByZXR1cm4gKm1fdm07IH0KKworICAgIE1vZHVsZVJlY29yZCYgbW9kdWxlUmVjb3JkKCkgeyBy
ZXR1cm4gKm1fbW9kdWxlUmVjb3JkOyB9CisKKyAgICB2b2lkIGRlY2xhcmVFeHBvcnRBbGlhcyhj
b25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUp
OworCitwcml2YXRlOgorICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0lt
cGw+LCBJZGVudGlmaWVyLCBJZGVudGlmaWVyUmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+Pj4gSWRlbnRpZmllckFsaWFzTWFwOworCisgICAgdm9pZCBleHBvcnRW
YXJpYWJsZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiwgY29uc3QgVmFyaWFibGVF
bnZpcm9ubWVudEVudHJ5Jik7CisKKyAgICBJZGVudGlmaWVyIGV4cG9ydGVkQmluZGluZyhjb25z
dCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudCk7CisKKyAgICBWTSogbV92bTsKKyAg
ICBSZWZQdHI8TW9kdWxlUmVjb3JkPiBtX21vZHVsZVJlY29yZDsKKyAgICBWYXJpYWJsZUVudmly
b25tZW50IG1fZGVjbGFyZWRWYXJpYWJsZXM7CisgICAgVmFyaWFibGVFbnZpcm9ubWVudCBtX2xl
eGljYWxWYXJpYWJsZXM7CisgICAgSWRlbnRpZmllckFsaWFzTWFwIG1fYWxpYXNNYXA7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIE1vZHVsZUFuYWx5emVyX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlUmVjb3JkLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlUmVjb3JkLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
Yzk3MzU2OGJlYzhhMGIxNTMzMzJmNDg3NWY5ZWZlMTM3ODJlYzhhCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVSZWNvcmQuY3BwCkBAIC0wLDAg
KzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vZHVsZVJlY29yZC5oIgorCisjaW5jbHVk
ZSAiSWRlbnRpZmllcklubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKKworYXV0byBNb2R1
bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVMb2NhbChjb25zdCBJZGVudGlmaWVyJiBleHBv
cnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUsIGNvbnN0IFZhcmlhYmxlRW52aXJv
bm1lbnRFbnRyeSYgdmFyaWFibGUpIC0+IEV4cG9ydEVudHJ5Cit7CisgICAgcmV0dXJuIEV4cG9y
dEVudHJ5IHsgVHlwZTo6TG9jYWwsIGV4cG9ydE5hbWUsIElkZW50aWZpZXIoKSwgSWRlbnRpZmll
cigpLCBsb2NhbE5hbWUsIHZhcmlhYmxlIH07Cit9CisKK2F1dG8gTW9kdWxlUmVjb3JkOjpFeHBv
cnRFbnRyeTo6Y3JlYXRlTmFtZXNwYWNlKGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNv
bnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpIC0+IEV4cG9ydEVudHJ5Cit7CisgICAgcmV0dXJu
IEV4cG9ydEVudHJ5IHsgVHlwZTo6TmFtZXNwYWNlLCBleHBvcnROYW1lLCBtb2R1bGVOYW1lLCBJ
ZGVudGlmaWVyKCksIElkZW50aWZpZXIoKSwgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCkgfTsK
K30KKworYXV0byBNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVJbmRpcmVjdChjb25z
dCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBpbXBvcnROYW1lLCBj
b25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKSAtPiBFeHBvcnRFbnRyeQoreworICAgIHJldHVy
biBFeHBvcnRFbnRyeSB7IFR5cGU6OkluZGlyZWN0LCBleHBvcnROYW1lLCBtb2R1bGVOYW1lLCBp
bXBvcnROYW1lLCBJZGVudGlmaWVyKCksIFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpIH07Cit9
CisKK3N0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+JiB1aWQpCit7CisgICAgaWYgKHVpZC0+aXNTeW1ib2woKSkKKyAgICAgICAgcmV0dXJu
IHVpZC5nZXQoKTsKKyAgICByZXR1cm4gV1RGOjptYWtlU3RyaW5nKCInIiwgU3RyaW5nKHVpZC5n
ZXQoKSksICInIik7Cit9CisKK3N0YXRpYyBTdHJpbmcgcHJpbnRhYmxlTmFtZShjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCkKK3sKKyAgICByZXR1cm4gcHJpbnRhYmxlTmFtZShpZGVudC5pbXBsKCkp
OworfQorCisKK3ZvaWQgTW9kdWxlUmVjb3JkOjpkdW1wKCkKK3sKKyAgICBkYXRhTG9nKCJcbkFu
YWx5emluZyBNb2R1bGVSZWNvcmRcbiIpOworCisgICAgZGF0YUxvZygiICAgIERlcGVuZGVuY2ll
czogIiwgbV9yZXF1ZXN0ZWRNb2R1bGVzLnNpemUoKSwgIiBtb2R1bGVzXG4iKTsKKyAgICBmb3Ig
KGNvbnN0IGF1dG8mIG1vZHVsZU5hbWUgOiBtX3JlcXVlc3RlZE1vZHVsZXMpCisgICAgICAgIGRh
dGFMb2coIiAgICAgIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKG1vZHVsZU5hbWUpLCAiKVxuIik7
CisKKyAgICBkYXRhTG9nKCIgICAgSW1wb3J0OiAiLCBtX2ltcG9ydEVudHJpZXMuc2l6ZSgpLCAi
IGVudHJpZXNcbiIpOworICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1faW1wb3J0RW50cmll
cykKKyAgICAgICAgZGF0YUxvZygiICAgICAgaW1wb3J0KCIsIHByaW50YWJsZU5hbWUocGFpci52
YWx1ZS5pbXBvcnROYW1lKSwgIiksIGxvY2FsKCIsIHByaW50YWJsZU5hbWUocGFpci52YWx1ZS5s
b2NhbE5hbWUpLCAiKSwgbW9kdWxlKCIsIHByaW50YWJsZU5hbWUocGFpci52YWx1ZS5tb2R1bGVS
ZXF1ZXN0KSwgIilcbiIpOworCisgICAgZGF0YUxvZygiICAgIEV4cG9ydDogIiwgbV9leHBvcnRF
bnRyaWVzLnNpemUoKSwgIiBlbnRyaWVzXG4iKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIg
OiBtX2V4cG9ydEVudHJpZXMpIHsKKyAgICAgICAgY29uc3QgRXhwb3J0RW50cnkmIGVudHJ5ID0g
cGFpci52YWx1ZTsKKyAgICAgICAgc3dpdGNoIChlbnRyeS50eXBlKSB7CisgICAgICAgIGNhc2Ug
RXhwb3J0RW50cnk6OlR5cGU6OkxvY2FsOgorICAgICAgICAgICAgZGF0YUxvZygiICAgICAgW0xv
Y2FsXSAiLCAiZXhwb3J0KCIsIHByaW50YWJsZU5hbWUoZW50cnkuZXhwb3J0TmFtZSksICIpLCBs
b2NhbCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmxvY2FsTmFtZSksICIpXG4iKTsKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRXhwb3J0RW50cnk6OlR5cGU6Ok5hbWVzcGFjZToK
KyAgICAgICAgICAgIGRhdGFMb2coIiAgICAgIFtOYW1lc3BhY2VdICIsICJleHBvcnQoIiwgcHJp
bnRhYmxlTmFtZShlbnRyeS5leHBvcnROYW1lKSwgIiksIG1vZHVsZSgiLCBwcmludGFibGVOYW1l
KGVudHJ5Lm1vZHVsZU5hbWUpLCAiKVxuIik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBjYXNlIEV4cG9ydEVudHJ5OjpUeXBlOjpJbmRpcmVjdDoKKyAgICAgICAgICAgIGRhdGFMb2co
IiAgICAgIFtJbmRpcmVjdF0gIiwgImV4cG9ydCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmV4cG9y
dE5hbWUpLCAiKSwgaW1wb3J0KCIsIHByaW50YWJsZU5hbWUoZW50cnkuaW1wb3J0TmFtZSksICIp
LCBtb2R1bGUoIiwgcHJpbnRhYmxlTmFtZShlbnRyeS5tb2R1bGVOYW1lKSwgIilcbiIpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgZm9yIChjb25zdCBhdXRvJiBt
b2R1bGVOYW1lIDogbV9zdGFyRXhwb3J0RW50cmllcykKKyAgICAgICAgZGF0YUxvZygiICAgICAg
W1N0YXJdIG1vZHVsZSgiLCBwcmludGFibGVOYW1lKG1vZHVsZU5hbWUuZ2V0KCkpLCAiKVxuIik7
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Nb2R1bGVSZWNvcmQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
TW9kdWxlUmVjb3JkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWYwODFjMDNiMGE1YmRlNmYxNTU2MjlkZjNmNTA2
Y2FmM2NiMTcxNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTW9kdWxlUmVjb3JkLmgKQEAgLTAsMCArMSwxMjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1vZHVsZVJlY29yZF9oCisjZGVmaW5l
IE1vZHVsZVJlY29yZF9oCisKKyNpbmNsdWRlICJOb2Rlcy5oIgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisKK25hbWVzcGFjZSBKU0Mgewor
CisvLyBCYXNlZCBvbiB0aGUgU291cmNlIFRleHQgTW9kdWxlIFJlY29yZAorLy8gaHR0cDovL3d3
dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLXNvdXJjZS10ZXh0LW1v
ZHVsZS1yZWNvcmRzCitjbGFzcyBNb2R1bGVSZWNvcmQgOiBwdWJsaWMgUmVmQ291bnRlZDxNb2R1
bGVSZWNvcmQ+IHsKK3B1YmxpYzoKKyAgICBzdHJ1Y3QgRXhwb3J0RW50cnkgeworICAgICAgICBl
bnVtIGNsYXNzIFR5cGUgeworICAgICAgICAgICAgTG9jYWwsCisgICAgICAgICAgICBOYW1lc3Bh
Y2UsCisgICAgICAgICAgICBJbmRpcmVjdAorICAgICAgICB9OworCisgICAgICAgIHN0YXRpYyBF
eHBvcnRFbnRyeSBjcmVhdGVMb2NhbChjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25z
dCBJZGVudGlmaWVyJiBsb2NhbE5hbWUsIGNvbnN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSYp
OworICAgICAgICBzdGF0aWMgRXhwb3J0RW50cnkgY3JlYXRlTmFtZXNwYWNlKGNvbnN0IElkZW50
aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpOworICAgICAg
ICBzdGF0aWMgRXhwb3J0RW50cnkgY3JlYXRlSW5kaXJlY3QoY29uc3QgSWRlbnRpZmllciYgZXhw
b3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgaW1wb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYg
bW9kdWxlTmFtZSk7CisKKyAgICAgICAgVHlwZSB0eXBlOworICAgICAgICBJZGVudGlmaWVyIGV4
cG9ydE5hbWU7CisgICAgICAgIElkZW50aWZpZXIgbW9kdWxlTmFtZTsKKyAgICAgICAgSWRlbnRp
ZmllciBpbXBvcnROYW1lOworICAgICAgICBJZGVudGlmaWVyIGxvY2FsTmFtZTsKKyAgICAgICAg
VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5IHZhcmlhYmxlOworICAgIH07CisKKyAgICBzdHJ1Y3Qg
SW1wb3J0RW50cnkgeworICAgICAgICBJZGVudGlmaWVyIG1vZHVsZVJlcXVlc3Q7CisgICAgICAg
IElkZW50aWZpZXIgaW1wb3J0TmFtZTsKKyAgICAgICAgSWRlbnRpZmllciBsb2NhbE5hbWU7CisK
KyAgICAgICAgYm9vbCBpc05hbWVzcGFjZShWTSYgdm0pIGNvbnN0CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBpbXBvcnROYW1lID09IHZtLnByb3BlcnR5TmFtZXMtPnRpbWVzSWRlbnRp
ZmllcjsKKyAgICAgICAgfQorICAgIH07CisKKyAgICB0eXBlZGVmIFdURjo6TGlzdEhhc2hTZXQ8
UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiwgSWRlbnRpZmllclJlcEhhc2g+IE9yZGVyZWRJZGVu
dGlmaWVyU2V0OworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
LCBJbXBvcnRFbnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPj4+IEltcG9ydE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVu
aXF1ZWRTdHJpbmdJbXBsPiwgRXhwb3J0RW50cnksIElkZW50aWZpZXJSZXBIYXNoLCBIYXNoVHJh
aXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+PiBFeHBvcnRNYXA7CisKKyAgICBzdGF0aWMg
UmVmPE1vZHVsZVJlY29yZD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IE1vZHVsZVJlY29yZCk7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRSZXF1ZXN0ZWRN
b2R1bGUoY29uc3QgSWRlbnRpZmllciYpOworICAgIHZvaWQgYWRkU3RhckV4cG9ydEVudHJ5KGNv
bnN0IElkZW50aWZpZXImKTsKKyAgICB2b2lkIGFkZEltcG9ydEVudHJ5KGNvbnN0IEltcG9ydEVu
dHJ5Jik7CisgICAgdm9pZCBhZGRFeHBvcnRFbnRyeShjb25zdCBFeHBvcnRFbnRyeSYpOworCisg
ICAgY29uc3QgSW1wb3J0RW50cnkmIGxvb2tVcEltcG9ydEVudHJ5KGNvbnN0IFJlZlB0cjxVbmlx
dWVkU3RyaW5nSW1wbD4mIGxvY2FsTmFtZSk7CisKKyAgICB2b2lkIGR1bXAoKTsKKworcHJpdmF0
ZToKKyAgICAvLyBNYXAgbG9jYWxOYW1lIC0+IEltcG9ydEVudHJ5LgorICAgIEltcG9ydE1hcCBt
X2ltcG9ydEVudHJpZXM7CisKKyAgICAvLyBNYXAgZXhwb3J0TmFtZSAtPiBFeHBvcnRFbnRyeS4K
KyAgICBFeHBvcnRNYXAgbV9leHBvcnRFbnRyaWVzOworCisgICAgSWRlbnRpZmllclNldCBtX3N0
YXJFeHBvcnRFbnRyaWVzOworCisgICAgLy8gU2F2ZSB0aGUgb2NjdXJyZW5jZSBvcmRlciBzaW5j
ZSB0aGUgbW9kdWxlIGxvYWRlciBsb2FkcyBhbmQgcnVucyB0aGUgbW9kdWxlcyBpbiB0aGlzIG9y
ZGVyLgorICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82
LjAvI3NlYy1tb2R1bGVldmFsdWF0aW9uCisgICAgT3JkZXJlZElkZW50aWZpZXJTZXQgbV9yZXF1
ZXN0ZWRNb2R1bGVzOworfTsKKworaW5saW5lIHZvaWQgTW9kdWxlUmVjb3JkOjphcHBlbmRSZXF1
ZXN0ZWRNb2R1bGUoY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkKK3sKKyAgICBtX3JlcXVl
c3RlZE1vZHVsZXMuYWRkKG1vZHVsZU5hbWUuaW1wbCgpKTsKK30KKworaW5saW5lIHZvaWQgTW9k
dWxlUmVjb3JkOjphZGRJbXBvcnRFbnRyeShjb25zdCBJbXBvcnRFbnRyeSYgZW50cnkpCit7Cisg
ICAgbV9pbXBvcnRFbnRyaWVzLmFkZChlbnRyeS5sb2NhbE5hbWUuaW1wbCgpLCBlbnRyeSk7Cit9
CisKK2lubGluZSB2b2lkIE1vZHVsZVJlY29yZDo6YWRkRXhwb3J0RW50cnkoY29uc3QgRXhwb3J0
RW50cnkmIGVudHJ5KQoreworICAgIG1fZXhwb3J0RW50cmllcy5hZGQoZW50cnkuZXhwb3J0TmFt
ZS5pbXBsKCksIGVudHJ5KTsKK30KKworaW5saW5lIHZvaWQgTW9kdWxlUmVjb3JkOjphZGRTdGFy
RXhwb3J0RW50cnkoY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkKK3sKKyAgICBtX3N0YXJF
eHBvcnRFbnRyaWVzLmFkZChtb2R1bGVOYW1lLmltcGwoKSk7Cit9CisKK2lubGluZSBhdXRvIE1v
ZHVsZVJlY29yZDo6bG9va1VwSW1wb3J0RW50cnkoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJ
bXBsPiYgbG9jYWxOYW1lKSAtPiBjb25zdCBJbXBvcnRFbnRyeSYKK3sKKyAgICByZXR1cm4gKCpt
X2ltcG9ydEVudHJpZXMuZmluZChsb2NhbE5hbWUpKS52YWx1ZTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKKyNlbmRpZiAvLyBNb2R1bGVSZWNvcmRfaApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAppbmRleCBiMThjMzQzNjg2YzhjNWFmYjgy
NWRjNTEzNWYzNDY2ZDY1MTk3MjMwLi4wNDUxMGJlNTk3M2RkOTQwYjljZDY3Y2VjYWIzYjM3Y2Iy
NDZiZTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25z
dHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1
Y3RvcnMuaApAQCAtNzMzLDYgKzczMywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAg
fQogCisgICAgaW5saW5lIE1vZHVsZURlY2xhcmF0aW9uTm9kZTo6TW9kdWxlRGVjbGFyYXRpb25O
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24pCisgICAgICAgIDogU3RhdGVtZW50
Tm9kZShsb2NhdGlvbikKKyAgICB7CisgICAgfQorCiAgICAgaW5saW5lIE1vZHVsZVNwZWNpZmll
ck5vZGU6Ok1vZHVsZVNwZWNpZmllck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkKICAgICAgICAgOiBOb2RlKGxvY2F0aW9u
KQogICAgICAgICAsIG1fbW9kdWxlTmFtZShtb2R1bGVOYW1lKQpAQCAtNzQ3LDMyICs3NTIsMzMg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfQogCiAgICAgaW5saW5lIEltcG9ydERlY2xhcmF0aW9u
Tm9kZTo6SW1wb3J0RGVjbGFyYXRpb25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIEltcG9ydFNwZWNpZmllckxpc3ROb2RlKiBpbXBvcnRTcGVjaWZpZXJMaXN0LCBNb2R1bGVT
cGVjaWZpZXJOb2RlKiBtb2R1bGVTcGVjaWZpZXIpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShs
b2NhdGlvbikKKyAgICAgICAgOiBNb2R1bGVEZWNsYXJhdGlvbk5vZGUobG9jYXRpb24pCiAgICAg
ICAgICwgbV9zcGVjaWZpZXJMaXN0KGltcG9ydFNwZWNpZmllckxpc3QpCiAgICAgICAgICwgbV9t
b2R1bGVTcGVjaWZpZXIobW9kdWxlU3BlY2lmaWVyKQogICAgIHsKICAgICB9CiAKICAgICBpbmxp
bmUgRXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlOjpFeHBvcnRBbGxEZWNsYXJhdGlvbk5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgTW9kdWxlU3BlY2lmaWVyTm9kZSogbW9kdWxl
U3BlY2lmaWVyKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9jYXRpb24pCisgICAgICAgIDog
TW9kdWxlRGVjbGFyYXRpb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fbW9kdWxlU3BlY2lm
aWVyKG1vZHVsZVNwZWNpZmllcikKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEV4cG9ydERl
ZmF1bHREZWNsYXJhdGlvbk5vZGU6OkV4cG9ydERlZmF1bHREZWNsYXJhdGlvbk5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgU3RhdGVtZW50Tm9kZSogZGVjbGFyYXRpb24pCi0g
ICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2NhdGlvbikKKyAgICBpbmxpbmUgRXhwb3J0RGVmYXVs
dERlY2xhcmF0aW9uTm9kZTo6RXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBTdGF0ZW1lbnROb2RlKiBkZWNsYXJhdGlvbiwgY29uc3Qg
SWRlbnRpZmllciYgbG9jYWxOYW1lKQorICAgICAgICA6IE1vZHVsZURlY2xhcmF0aW9uTm9kZShs
b2NhdGlvbikKICAgICAgICAgLCBtX2RlY2xhcmF0aW9uKGRlY2xhcmF0aW9uKQorICAgICAgICAs
IG1fbG9jYWxOYW1lKGxvY2FsTmFtZSkKICAgICB7CiAgICAgfQogCiAgICAgaW5saW5lIEV4cG9y
dExvY2FsRGVjbGFyYXRpb25Ob2RlOjpFeHBvcnRMb2NhbERlY2xhcmF0aW9uTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBTdGF0ZW1lbnROb2RlKiBkZWNsYXJhdGlvbikKLSAg
ICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQorICAgICAgICA6IE1vZHVsZURlY2xhcmF0
aW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2RlY2xhcmF0aW9uKGRlY2xhcmF0aW9uKQog
ICAgIHsKICAgICB9CiAKICAgICBpbmxpbmUgRXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGU6OkV4
cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IEV4cG9ydFNwZWNpZmllckxpc3ROb2RlKiBleHBvcnRTcGVjaWZpZXJMaXN0LCBNb2R1bGVTcGVj
aWZpZXJOb2RlKiBtb2R1bGVTcGVjaWZpZXIpCi0gICAgICAgIDogU3RhdGVtZW50Tm9kZShsb2Nh
dGlvbikKKyAgICAgICAgOiBNb2R1bGVEZWNsYXJhdGlvbk5vZGUobG9jYXRpb24pCiAgICAgICAg
ICwgbV9zcGVjaWZpZXJMaXN0KGV4cG9ydFNwZWNpZmllckxpc3QpCiAgICAgICAgICwgbV9tb2R1
bGVTcGVjaWZpZXIobW9kdWxlU3BlY2lmaWVyKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaAppbmRleCA1Mjg0YzlhN2IyZDU0N2NiY2NkNjYyODA1YzZlOWRlZjY1OTc5MGNi
Li4wNDc0ZjIyMDI3NTZmNWRlOWE5OGVmNDY4ZTZlZjk2MTMyMzM3NGNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIGNsYXNzIFJlZ2lzdGVySUQ7CiAgICAgY2xhc3MgSlNTY29wZTsKICAgICBjbGFzcyBTY29w
ZU5vZGU7CisgICAgY2xhc3MgTW9kdWxlQW5hbHl6ZXI7CiAKICAgICBlbnVtIE9wZXJhdG9yIHsK
ICAgICAgICAgT3BFcXVhbCwKQEAgLTEyNzYsNiArMTI3Nyw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBTdGF0ZW1lbnROb2RlKiBsYXN0U3RhdGVtZW50KCkgY29uc3Q7CiAKICAgICAgICAg
dm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkZXN0aW5h
dGlvbik7CisgICAgICAgIHZvaWQgYW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYpOwogCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgU3RhdGVtZW50Tm9kZSogbV9oZWFkOwpAQCAtMTU3NCw2ICsx
NTc2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICB2b2lkIHNldENsb3Nl
ZFZhcmlhYmxlcyhWZWN0b3I8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4mJikgeyB9CiAKKyAg
ICAgICAgdm9pZCBhbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJik7CisKICAgICBwcm90ZWN0
ZWQ6CiAgICAgICAgIGludCBtX3N0YXJ0TGluZU51bWJlcjsKICAgICAgICAgdW5zaWduZWQgbV9z
dGFydFN0YXJ0T2Zmc2V0OwpAQCAtMTY3Myw3ICsxNjc3LDE1IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBTcGVjaWZpZXJzIG1fc3BlY2lmaWVyczsKICAgICB9OwogCi0gICAgY2xhc3MgSW1w
b3J0RGVjbGFyYXRpb25Ob2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgeworICAgIGNsYXNzIE1v
ZHVsZURlY2xhcmF0aW9uTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIHZpcnR1YWwgdm9pZCBhbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJikgPSAw
OworCisgICAgcHJvdGVjdGVkOgorICAgICAgICBNb2R1bGVEZWNsYXJhdGlvbk5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJik7CisgICAgfTsKKworICAgIGNsYXNzIEltcG9ydERlY2xhcmF0aW9u
Tm9kZSA6IHB1YmxpYyBNb2R1bGVEZWNsYXJhdGlvbk5vZGUgewogICAgIHB1YmxpYzoKICAgICAg
ICAgSW1wb3J0RGVjbGFyYXRpb25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEltcG9ydFNw
ZWNpZmllckxpc3ROb2RlKiwgTW9kdWxlU3BlY2lmaWVyTm9kZSopOwogCkBAIC0xNjgyLDEyICsx
Njk0LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVh
bCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkg
b3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5
emVyJikgb3ZlcnJpZGU7CiAKICAgICAgICAgSW1wb3J0U3BlY2lmaWVyTGlzdE5vZGUqIG1fc3Bl
Y2lmaWVyTGlzdDsKICAgICAgICAgTW9kdWxlU3BlY2lmaWVyTm9kZSogbV9tb2R1bGVTcGVjaWZp
ZXI7CiAgICAgfTsKIAotICAgIGNsYXNzIEV4cG9ydEFsbERlY2xhcmF0aW9uTm9kZSA6IHB1Ymxp
YyBTdGF0ZW1lbnROb2RlIHsKKyAgICBjbGFzcyBFeHBvcnRBbGxEZWNsYXJhdGlvbk5vZGUgOiBw
dWJsaWMgTW9kdWxlRGVjbGFyYXRpb25Ob2RlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIEV4cG9y
dEFsbERlY2xhcmF0aW9uTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBNb2R1bGVTcGVjaWZp
ZXJOb2RlKik7CiAKQEAgLTE2OTUsMjEgKzE3MDgsMjYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImKSBvdmVycmlkZTsKKwogICAgICAgICBNb2R1
bGVTcGVjaWZpZXJOb2RlKiBtX21vZHVsZVNwZWNpZmllcjsKICAgICB9OwogCi0gICAgY2xhc3Mg
RXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKKyAg
ICBjbGFzcyBFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25Ob2RlIDogcHVibGljIE1vZHVsZURlY2xh
cmF0aW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBFeHBvcnREZWZhdWx0RGVjbGFyYXRp
b25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFN0YXRlbWVudE5vZGUqKTsKKyAgICAgICAg
RXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBTdGF0
ZW1lbnROb2RlKiwgY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lKTsKIAogICAgICAgICBjb25z
dCBTdGF0ZW1lbnROb2RlJiBkZWNsYXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuICptX2RlY2xhcmF0
aW9uOyB9CisgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbG9jYWxOYW1lOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlk
ZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImKSBv
dmVycmlkZTsKICAgICAgICAgU3RhdGVtZW50Tm9kZSogbV9kZWNsYXJhdGlvbjsKKyAgICAgICAg
Y29uc3QgSWRlbnRpZmllciYgbV9sb2NhbE5hbWU7CiAgICAgfTsKIAotICAgIGNsYXNzIEV4cG9y
dExvY2FsRGVjbGFyYXRpb25Ob2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgeworICAgIGNsYXNz
IEV4cG9ydExvY2FsRGVjbGFyYXRpb25Ob2RlIDogcHVibGljIE1vZHVsZURlY2xhcmF0aW9uTm9k
ZSB7CiAgICAgcHVibGljOgogICAgICAgICBFeHBvcnRMb2NhbERlY2xhcmF0aW9uTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBTdGF0ZW1lbnROb2RlKik7CiAKQEAgLTE3MTcsNiArMTczNSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCB2b2lk
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJp
ZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJikg
b3ZlcnJpZGU7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIG1fZGVjbGFyYXRpb247CiAgICAgfTsK
IApAQCAtMTc0Niw3ICsxNzY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFNwZWNpZmll
cnMgbV9zcGVjaWZpZXJzOwogICAgIH07CiAKLSAgICBjbGFzcyBFeHBvcnROYW1lZERlY2xhcmF0
aW9uTm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKKyAgICBjbGFzcyBFeHBvcnROYW1lZERl
Y2xhcmF0aW9uTm9kZSA6IHB1YmxpYyBNb2R1bGVEZWNsYXJhdGlvbk5vZGUgewogICAgIHB1Ymxp
YzoKICAgICAgICAgRXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgRXhwb3J0U3BlY2lmaWVyTGlzdE5vZGUqLCBNb2R1bGVTcGVjaWZpZXJOb2RlKik7CiAK
QEAgLTE3NTUsNiArMTc3NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBhbmFseXplTW9kdWxl
KE1vZHVsZUFuYWx5emVyJikgb3ZlcnJpZGU7CiAgICAgICAgIEV4cG9ydFNwZWNpZmllckxpc3RO
b2RlKiBtX3NwZWNpZmllckxpc3Q7CiAgICAgICAgIE1vZHVsZVNwZWNpZmllck5vZGUqIG1fbW9k
dWxlU3BlY2lmaWVyIHsgbnVsbHB0ciB9OwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzQW5hbHl6ZU1vZHVsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTk3M2Zi
NGMyNTg5ZDY1ZTYzZWJmM2QxYzBmZWVkMDE4NDQ5ZDFiMAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcApAQCAtMCww
ICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk5vZGVzLmgiCisjaW5jbHVkZSAiTm9kZUNv
bnN0cnVjdG9ycy5oIgorCisjaW5jbHVkZSAiTW9kdWxlQW5hbHl6ZXIuaCIKKyNpbmNsdWRlICJN
b2R1bGVSZWNvcmQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgU2NvcGVOb2RlOjphbmFs
eXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJiBhbmFseXplcikKK3sKKyAgICBtX3N0YXRlbWVudHMt
PmFuYWx5emVNb2R1bGUoYW5hbHl6ZXIpOworfQorCit2b2lkIFNvdXJjZUVsZW1lbnRzOjphbmFs
eXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJiBhbmFseXplcikKK3sKKyAgICAvLyBJbiB0aGUgbW9k
dWxlIGFuYWx5emVyIHBoYXNlLCBvbmx5IG1vZHVsZSBkZWNsYXJhdGlvbnMgYXJlIGluY2x1ZGVk
IGluIHRoZSB0b3AtbGV2ZWwgU291cmNlRWxlbWVudHMuCisgICAgZm9yIChTdGF0ZW1lbnROb2Rl
KiBzdGF0ZW1lbnQgPSBtX2hlYWQ7IHN0YXRlbWVudDsgc3RhdGVtZW50ID0gc3RhdGVtZW50LT5u
ZXh0KCkpCisgICAgICAgIHN0YXRpY19jYXN0PE1vZHVsZURlY2xhcmF0aW9uTm9kZSo+KHN0YXRl
bWVudCktPmFuYWx5emVNb2R1bGUoYW5hbHl6ZXIpOworfQorCit2b2lkIEltcG9ydERlY2xhcmF0
aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYgYW5hbHl6ZXIpCit7CisgICAg
YW5hbHl6ZXIubW9kdWxlUmVjb3JkKCkuYXBwZW5kUmVxdWVzdGVkTW9kdWxlKG1fbW9kdWxlU3Bl
Y2lmaWVyLT5tb2R1bGVOYW1lKCkpOworICAgIGZvciAoYXV0byogc3BlY2lmaWVyIDogbV9zcGVj
aWZpZXJMaXN0LT5zcGVjaWZpZXJzKCkpIHsKKyAgICAgICAgYW5hbHl6ZXIubW9kdWxlUmVjb3Jk
KCkuYWRkSW1wb3J0RW50cnkoeworICAgICAgICAgICAgbV9tb2R1bGVTcGVjaWZpZXItPm1vZHVs
ZU5hbWUoKSwKKyAgICAgICAgICAgIHNwZWNpZmllci0+aW1wb3J0ZWROYW1lKCksCisgICAgICAg
ICAgICBzcGVjaWZpZXItPmxvY2FsTmFtZSgpCisgICAgICAgIH0pOworICAgIH0KK30KKwordm9p
ZCBFeHBvcnRBbGxEZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXIm
IGFuYWx5emVyKQoreworICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLmFwcGVuZFJlcXVlc3Rl
ZE1vZHVsZShtX21vZHVsZVNwZWNpZmllci0+bW9kdWxlTmFtZSgpKTsKKyAgICBhbmFseXplci5t
b2R1bGVSZWNvcmQoKS5hZGRTdGFyRXhwb3J0RW50cnkobV9tb2R1bGVTcGVjaWZpZXItPm1vZHVs
ZU5hbWUoKSk7Cit9CisKK3ZvaWQgRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6
ZU1vZHVsZShNb2R1bGVBbmFseXplciYgYW5hbHl6ZXIpCit7CisgICAgYW5hbHl6ZXIuZGVjbGFy
ZUV4cG9ydEFsaWFzKG1fbG9jYWxOYW1lLCBhbmFseXplci52bSgpLnByb3BlcnR5TmFtZXMtPmRl
ZmF1bHRLZXl3b3JkKTsKK30KKwordm9pZCBFeHBvcnRMb2NhbERlY2xhcmF0aW9uTm9kZTo6YW5h
bHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYpCit7Cit9CisKK3ZvaWQgRXhwb3J0TmFtZWREZWNs
YXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImIGFuYWx5emVyKQorewor
ICAgIGlmIChtX21vZHVsZVNwZWNpZmllcikKKyAgICAgICAgYW5hbHl6ZXIubW9kdWxlUmVjb3Jk
KCkuYXBwZW5kUmVxdWVzdGVkTW9kdWxlKG1fbW9kdWxlU3BlY2lmaWVyLT5tb2R1bGVOYW1lKCkp
OworCisgICAgZm9yIChhdXRvKiBzcGVjaWZpZXIgOiBtX3NwZWNpZmllckxpc3QtPnNwZWNpZmll
cnMoKSkgeworICAgICAgICBpZiAobV9tb2R1bGVTcGVjaWZpZXIpIHsKKyAgICAgICAgICAgIC8v
IGV4cG9ydCB7IHYgfSBmcm9tICJtb2QiCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8g
SW4gdGhpcyBjYXNlLCBubyBsb2NhbCB2YXJpYWJsZSBuYW1lcyBhcmUgaW1wb3J0ZWQgaW50byB0
aGUgY3VycmVudCBtb2R1bGUuCisgICAgICAgICAgICAvLyAidiIgaW5kaXJlY3RseSBwb2ludHMg
dGhlIGJpbmRpbmcgaW4gIm1vZCIuCisgICAgICAgICAgICBhbmFseXplci5tb2R1bGVSZWNvcmQo
KS5hZGRFeHBvcnRFbnRyeShNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVJbmRpcmVj
dChzcGVjaWZpZXItPmV4cG9ydGVkTmFtZSgpLCBzcGVjaWZpZXItPmxvY2FsTmFtZSgpLCBtX21v
ZHVsZVNwZWNpZmllci0+bW9kdWxlTmFtZSgpKSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChzcGVjaWZpZXItPmxvY2FsTmFtZSgpICE9IHNwZWNpZmll
ci0+ZXhwb3J0ZWROYW1lKCkpCisgICAgICAgICAgICBhbmFseXplci5kZWNsYXJlRXhwb3J0QWxp
YXMoc3BlY2lmaWVyLT5sb2NhbE5hbWUoKSwgc3BlY2lmaWVyLT5leHBvcnRlZE5hbWUoKSk7Cisg
ICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcAppbmRleCBlODFmM2ViMjdlZDA1ZmVlODFlMTcyNTc2NjlhMzk0M2E4ODYzZDA0
Li40NTlmN2IzMWI3MTcyOTFjY2I1YjkyN2FjYTNjZjM4ZmVhNjE5YzE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yMzUsOCArMjM1LDEwIEBAIFBhcnNlcjxM
ZXhlclR5cGU+Ojp+UGFyc2VyKCkKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4K
LVN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcihjb25zdCBJZGVudGlmaWVyJiBj
YWxsZWVOYW1lLCBGdW5jdGlvblBhcnNlTW9kZSBwYXJzZU1vZGUpCitTdHJpbmcgUGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgRnVuY3Rp
b25QYXJzZU1vZGUgcGFyc2VNb2RlLCBNb2R1bGVQYXJzZU1vZGUgbW9kdWxlUGFyc2VNb2RlKQog
eworICAgIFVOVVNFRF9QQVJBTShtb2R1bGVQYXJzZU1vZGUpOworCiAgICAgU3RyaW5nIHBhcnNl
RXJyb3IgPSBTdHJpbmcoKTsKICAgICAKICAgICBBU1RCdWlsZGVyIGNvbnRleHQoY29uc3RfY2Fz
dDxWTSo+KG1fdm0pLCBtX3BhcnNlckFyZW5hLCBjb25zdF9jYXN0PFNvdXJjZUNvZGUqPihtX3Nv
dXJjZSkpOwpAQCAtMjcyLDcgKzI3NCw3IEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VJbm5lcihjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBGdW5jdGlvblBhcnNlCiAgICAg
ICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlQXJyb3dGdW5jdGlvblNpbmdsZUV4cHJlc3Np
b25Cb2R5U291cmNlRWxlbWVudHMoY29udGV4dCk7CiAjaWYgRU5BQkxFKEVTNl9NT0RVTEVTKQog
ICAgICAgICBlbHNlIGlmIChtX2NvZGVUeXBlID09IEpTUGFyc2VyQ29kZVR5cGU6Ok1vZHVsZSkK
LSAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VNb2R1bGVTb3VyY2VFbGVtZW50cyhj
b250ZXh0KTsKKyAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VNb2R1bGVTb3VyY2VF
bGVtZW50cyhjb250ZXh0LCBtb2R1bGVQYXJzZU1vZGUpOwogI2VuZGlmCiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VTb3VyY2VFbGVtZW50cyhjb250ZXh0
LCBDaGVja0ZvclN0cmljdE1vZGUpOwpAQCAtNDEyLDM5ICs0MTQsNDggQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlU291cmNlRWwKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZU1vZHVsZVNvdXJjZUVsZW1lbnRzKFRyZWVCdWlsZGVyJiBjb250ZXh0KQordGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlTW9kdWxlU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIE1vZHVs
ZVBhcnNlTW9kZSBtb2R1bGVQYXJzZU1vZGUpCiB7CiAgICAgVHJlZVNvdXJjZUVsZW1lbnRzIHNv
dXJjZUVsZW1lbnRzID0gY29udGV4dC5jcmVhdGVTb3VyY2VFbGVtZW50cygpOwotCi0gICAgLy8g
RklYTUU6IFdoZW4gc29tZSBzb3J0IG9mIE1vZHVsZUFuYWx5emVyIFRyZWVCdWlsZGVyIGlzIGxh
bmRlZCwKLSAgICAvLyB0aGlzIFN5bnRheENoZWNrZXIgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHR5
cGVkZWYgdW5kZXIgdGhlIFRyZWVCdWlsZGVyLAotICAgIC8vIGxpa2UgVHJlZUJ1aWxkZXI6Ok1v
ZHVsZVN0YXRlbWVudEl0ZW1CdWlsZGVyLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNDczNTMKLSAgICBTeW50YXhDaGVja2VyIG1vZHVsZVN0YXRlbWVu
dEl0ZW1CdWlsZGVyKGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7CisgICAg
U3ludGF4Q2hlY2tlciBzeW50YXhDaGVja2VyKGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9sZXhl
ci5nZXQoKSk7CiAKICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBpZiAobWF0Y2goSU1QT1JU
KSB8fCBtYXRjaChFWFBPUlQpKSB7Ci0gICAgICAgICAgICBUcmVlU3RhdGVtZW50IHN0YXRlbWVu
dCA9IDA7Ci0gICAgICAgICAgICBpZiAobWF0Y2goSU1QT1JUKSkKLSAgICAgICAgICAgICAgICBz
dGF0ZW1lbnQgPSBwYXJzZUltcG9ydERlY2xhcmF0aW9uKGNvbnRleHQpOwotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIHN0YXRlbWVudCA9IHBhcnNlRXhwb3J0RGVjbGFyYXRpb24o
Y29udGV4dCk7Ci0KLSAgICAgICAgICAgIGlmICghc3RhdGVtZW50KQotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY29udGV4dC5hcHBlbmRTdGF0ZW1lbnQoc291cmNlRWxlbWVu
dHMsIHN0YXRlbWVudCk7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgIFRyZWVTdGF0ZW1lbnQg
c3RhdGVtZW50ID0gMDsKKyAgICAgICAgaWYgKG1hdGNoKElNUE9SVCkpCisgICAgICAgICAgICBz
dGF0ZW1lbnQgPSBwYXJzZUltcG9ydERlY2xhcmF0aW9uKGNvbnRleHQpOworICAgICAgICBlbHNl
IGlmIChtYXRjaChFWFBPUlQpKQorICAgICAgICAgICAgc3RhdGVtZW50ID0gcGFyc2VFeHBvcnRE
ZWNsYXJhdGlvbihjb250ZXh0KTsKKyAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjb25zdCBJ
ZGVudGlmaWVyKiBkaXJlY3RpdmUgPSAwOwogICAgICAgICAgICAgdW5zaWduZWQgZGlyZWN0aXZl
TGl0ZXJhbExlbmd0aCA9IDA7Ci0gICAgICAgICAgICBpZiAoIXBhcnNlU3RhdGVtZW50TGlzdEl0
ZW0obW9kdWxlU3RhdGVtZW50SXRlbUJ1aWxkZXIsIGRpcmVjdGl2ZSwgJmRpcmVjdGl2ZUxpdGVy
YWxMZW5ndGgpKQotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKG1vZHVs
ZVBhcnNlTW9kZSA9PSBNb2R1bGVQYXJzZU1vZGU6OkFuYWx5emUpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoIXBhcnNlU3RhdGVtZW50TGlzdEl0ZW0oc3ludGF4Q2hlY2tlciwgZGlyZWN0aXZlLCAm
ZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhdGVt
ZW50ID0gcGFyc2VTdGF0ZW1lbnRMaXN0SXRlbShjb250ZXh0LCBkaXJlY3RpdmUsICZkaXJlY3Rp
dmVMaXRlcmFsTGVuZ3RoKTsKICAgICAgICAgfQorCisgICAgICAgIGlmICghc3RhdGVtZW50KQor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNvbnRleHQuYXBwZW5kU3RhdGVtZW50KHNvdXJj
ZUVsZW1lbnRzLCBzdGF0ZW1lbnQpOwogICAgIH0KIAogICAgIHByb3BhZ2F0ZUVycm9yKCk7CiAK
LSAgICBmb3IgKGNvbnN0IGF1dG8mIHVpZCA6IGN1cnJlbnRTY29wZSgpLT5tb2R1bGVTY29wZURh
dGEoKS5leHBvcnRlZEJpbmRpbmdzKCkpCi0gICAgICAgIHNlbWFudGljRmFpbElmRmFsc2UoY3Vy
cmVudFNjb3BlKCktPmhhc0RlY2xhcmVkVmFyaWFibGUodWlkKSB8fCBjdXJyZW50U2NvcGUoKS0+
aGFzTGV4aWNhbGx5RGVjbGFyZWRWYXJpYWJsZSh1aWQpLCAiRXhwb3J0ZWQgYmluZGluZyAnIiwg
dWlkLmdldCgpLCAiJyBuZWVkcyB0byByZWZlciB0byBhIHRvcC1sZXZlbCBkZWNsYXJlZCB2YXJp
YWJsZSIpOworICAgIGZvciAoY29uc3QgYXV0byYgdWlkIDogY3VycmVudFNjb3BlKCktPm1vZHVs
ZVNjb3BlRGF0YSgpLmV4cG9ydGVkQmluZGluZ3MoKSkgeworICAgICAgICBpZiAoY3VycmVudFNj
b3BlKCktPmhhc0RlY2xhcmVkVmFyaWFibGUodWlkKSkgeworICAgICAgICAgICAgY3VycmVudFNj
b3BlKCktPmRlY2xhcmVkVmFyaWFibGVzKCkubWFya1ZhcmlhYmxlQXNFeHBvcnRlZCh1aWQpOwor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY3VycmVudFNj
b3BlKCktPmhhc0xleGljYWxseURlY2xhcmVkVmFyaWFibGUodWlkKSkgeworICAgICAgICAgICAg
Y3VycmVudFNjb3BlKCktPmxleGljYWxWYXJpYWJsZXMoKS5tYXJrVmFyaWFibGVBc0V4cG9ydGVk
KHVpZCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIHNlbWFu
dGljRmFpbCgiRXhwb3J0ZWQgYmluZGluZyAnIiwgdWlkLmdldCgpLCAiJyBuZWVkcyB0byByZWZl
ciB0byBhIHRvcC1sZXZlbCBkZWNsYXJlZCB2YXJpYWJsZSIpOworICAgIH0KIAogICAgIHJldHVy
biBzb3VyY2VFbGVtZW50czsKIH0KQEAgLTYwMSw3ICs2MTIsMTAgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VWYXJp
YWJsZURlY2wKICAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzZW1hbnRp
Y0ZhaWxJZlRydWUoZXhwb3J0VHlwZSA9PSBFeHBvcnRUeXBlOjpFeHBvcnRlZCAmJiAhY3VycmVu
dFNjb3BlKCktPm1vZHVsZVNjb3BlRGF0YSgpLmV4cG9ydE5hbWUoKm5hbWUpLCAiQ2Fubm90IGV4
cG9ydCBhIGR1cGxpY2F0ZSBuYW1lICciLCBuYW1lLT5pbXBsKCksICInIik7CisgICAgICAgICAg
ICBpZiAoZXhwb3J0VHlwZSA9PSBFeHBvcnRUeXBlOjpFeHBvcnRlZCkgeworICAgICAgICAgICAg
ICAgIHNlbWFudGljRmFpbElmRmFsc2UoZXhwb3J0TmFtZSgqbmFtZSksICJDYW5ub3QgZXhwb3J0
IGEgZHVwbGljYXRlIG5hbWUgJyIsIG5hbWUtPmltcGwoKSwgIiciKTsKKyAgICAgICAgICAgICAg
ICBjdXJyZW50U2NvcGUoKS0+bW9kdWxlU2NvcGVEYXRhKCkuZXhwb3J0QmluZGluZygqbmFtZSk7
CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChoYXNJbml0aWFsaXplcikgewogICAg
ICAgICAgICAgICAgIEpTVGV4dFBvc2l0aW9uIHZhckRpdm90ID0gdG9rZW5TdGFydFBvc2l0aW9u
KCkgKyAxOwpAQCAtNzA1LDcgKzcxOSwxMCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiBQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlQgogICAg
ICAgICB9CiAgICAgfQogCi0gICAgc2VtYW50aWNGYWlsSWZUcnVlKGV4cG9ydFR5cGUgPT0gRXhw
b3J0VHlwZTo6RXhwb3J0ZWQgJiYgIWN1cnJlbnRTY29wZSgpLT5tb2R1bGVTY29wZURhdGEoKS5l
eHBvcnROYW1lKG5hbWUpLCAiQ2Fubm90IGV4cG9ydCBhIGR1cGxpY2F0ZSBuYW1lICciLCBuYW1l
LmltcGwoKSwgIiciKTsKKyAgICBpZiAoZXhwb3J0VHlwZSA9PSBFeHBvcnRUeXBlOjpFeHBvcnRl
ZCkgeworICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKGV4cG9ydE5hbWUobmFtZSksICJDYW5u
b3QgZXhwb3J0IGEgZHVwbGljYXRlIG5hbWUgJyIsIG5hbWUuaW1wbCgpLCAiJyIpOworICAgICAg
ICBjdXJyZW50U2NvcGUoKS0+bW9kdWxlU2NvcGVEYXRhKCkuZXhwb3J0QmluZGluZyhuYW1lKTsK
KyAgICB9CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQmluZGluZ0xvY2F0aW9uKHRva2VuLm1f
bG9jYXRpb24sIG5hbWUsIHRva2VuLm1fc3RhcnRQb3NpdGlvbiwgdG9rZW4ubV9lbmRQb3NpdGlv
biwgYmluZGluZ0NvbnRleHQpOwogfQogCkBAIC0xODU2LDcgKzE4NzMsMTAgQEAgdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUZ1bmN0aW9uRGVjbGEKICAgICAgICAgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGZ1bmN0aW9uSW5m
bywgU3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZSkpLCAiQ2Fubm90IHBhcnNlIHRoaXMgZnVuY3Rp
b24iKTsKICAgICBmYWlsSWZGYWxzZShmdW5jdGlvbkluZm8ubmFtZSwgIkZ1bmN0aW9uIHN0YXRl
bWVudHMgbXVzdCBoYXZlIGEgbmFtZSIpOwogICAgIGZhaWxJZlRydWVJZlN0cmljdChkZWNsYXJl
VmFyaWFibGUoZnVuY3Rpb25JbmZvLm5hbWUpICYgRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWRT
dHJpY3RNb2RlLCAiQ2Fubm90IGRlY2xhcmUgYSBmdW5jdGlvbiBuYW1lZCAnIiwgZnVuY3Rpb25J
bmZvLm5hbWUtPmltcGwoKSwgIicgaW4gc3RyaWN0IG1vZGUiKTsKLSAgICBzZW1hbnRpY0ZhaWxJ
ZlRydWUoZXhwb3J0VHlwZSA9PSBFeHBvcnRUeXBlOjpFeHBvcnRlZCAmJiAhY3VycmVudFNjb3Bl
KCktPm1vZHVsZVNjb3BlRGF0YSgpLmV4cG9ydE5hbWUoKmZ1bmN0aW9uSW5mby5uYW1lKSwgIkNh
bm5vdCBleHBvcnQgYSBkdXBsaWNhdGUgZnVuY3Rpb24gbmFtZTogJyIsIGZ1bmN0aW9uSW5mby5u
YW1lLT5pbXBsKCksICInIik7CisgICAgaWYgKGV4cG9ydFR5cGUgPT0gRXhwb3J0VHlwZTo6RXhw
b3J0ZWQpIHsKKyAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShleHBvcnROYW1lKCpmdW5jdGlv
bkluZm8ubmFtZSksICJDYW5ub3QgZXhwb3J0IGEgZHVwbGljYXRlIGZ1bmN0aW9uIG5hbWU6ICci
LCBmdW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyIpOworICAgICAgICBjdXJyZW50U2NvcGUo
KS0+bW9kdWxlU2NvcGVEYXRhKCkuZXhwb3J0QmluZGluZygqZnVuY3Rpb25JbmZvLm5hbWUpOwor
ICAgIH0KICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVGdW5jRGVjbFN0YXRlbWVudChsb2NhdGlv
biwgZnVuY3Rpb25JbmZvKTsKIH0KIApAQCAtMTg3Niw3ICsxODk2LDEwIEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VD
bGFzc0RlY2xhcmF0CiAgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmF0aW9uUmVzdWx0
ID0gZGVjbGFyZVZhcmlhYmxlKGluZm8uY2xhc3NOYW1lLCBEZWNsYXJhdGlvblR5cGU6OkxldERl
Y2xhcmF0aW9uKTsKICAgICBpZiAoZGVjbGFyYXRpb25SZXN1bHQgJiBEZWNsYXJhdGlvblJlc3Vs
dDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uKQogICAgICAgICBpbnRlcm5hbEZhaWxXaXRo
TWVzc2FnZShmYWxzZSwgIkNhbm5vdCBkZWNsYXJlIGEgY2xhc3MgdHdpY2U6ICciLCBpbmZvLmNs
YXNzTmFtZS0+aW1wbCgpLCAiJyIpOwotICAgIHNlbWFudGljRmFpbElmVHJ1ZShleHBvcnRUeXBl
ID09IEV4cG9ydFR5cGU6OkV4cG9ydGVkICYmICFjdXJyZW50U2NvcGUoKS0+bW9kdWxlU2NvcGVE
YXRhKCkuZXhwb3J0TmFtZSgqaW5mby5jbGFzc05hbWUpLCAiQ2Fubm90IGV4cG9ydCBhIGR1cGxp
Y2F0ZSBjbGFzcyBuYW1lOiAnIiwgaW5mby5jbGFzc05hbWUtPmltcGwoKSwgIiciKTsKKyAgICBp
ZiAoZXhwb3J0VHlwZSA9PSBFeHBvcnRUeXBlOjpFeHBvcnRlZCkgeworICAgICAgICBzZW1hbnRp
Y0ZhaWxJZkZhbHNlKGV4cG9ydE5hbWUoKmluZm8uY2xhc3NOYW1lKSwgIkNhbm5vdCBleHBvcnQg
YSBkdXBsaWNhdGUgY2xhc3MgbmFtZTogJyIsIGluZm8uY2xhc3NOYW1lLT5pbXBsKCksICInIik7
CisgICAgICAgIGN1cnJlbnRTY29wZSgpLT5tb2R1bGVTY29wZURhdGEoKS5leHBvcnRCaW5kaW5n
KCppbmZvLmNsYXNzTmFtZSk7CisgICAgfQogCiAgICAgSlNUZXh0UG9zaXRpb24gY2xhc3NFbmQg
PSBsYXN0VG9rZW5FbmRQb3NpdGlvbigpOwogICAgIHVuc2lnbmVkIGNsYXNzRW5kTGluZSA9IHRv
a2VuTGluZSgpOwpAQCAtMjI4Miw3ICsyMzA1LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6SW1wb3J0U3BlY2lmaWVyIFBhcnNlcjxMZXhlclQK
ICAgICB9CiAKICAgICBzZW1hbnRpY0ZhaWxJZlRydWUobG9jYWxOYW1lVG9rZW4ubV90eXBlICYg
S2V5d29yZFRva2VuRmxhZywgIkNhbm5vdCB1c2Uga2V5d29yZCBhcyBpbXBvcnRlZCBiaW5kaW5n
IG5hbWUiKTsKLSAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyYXRpb25SZXN1bHQgPSBk
ZWNsYXJlVmFyaWFibGUobG9jYWxOYW1lLCBEZWNsYXJhdGlvblR5cGU6OkNvbnN0RGVjbGFyYXRp
b24pOworICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJhdGlvblJlc3VsdCA9IGRlY2xh
cmVWYXJpYWJsZShsb2NhbE5hbWUsIERlY2xhcmF0aW9uVHlwZTo6Q29uc3REZWNsYXJhdGlvbiwg
RGVjbGFyYXRpb25JbXBvcnRUeXBlOjpJbXBvcnRlZCk7CiAgICAgaWYgKGRlY2xhcmF0aW9uUmVz
dWx0ICE9IERlY2xhcmF0aW9uUmVzdWx0OjpWYWxpZCkgewogICAgICAgICBmYWlsSWZUcnVlSWZT
dHJpY3QoZGVjbGFyYXRpb25SZXN1bHQgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZFN0cmlj
dE1vZGUsICJDYW5ub3QgZGVjbGFyZSBhbiBpbXBvcnRlZCBiaW5kaW5nIG5hbWVkICIsIGxvY2Fs
TmFtZS0+aW1wbCgpLCAiIGluIHN0cmljdCBtb2RlIik7CiAgICAgICAgIGlmIChkZWNsYXJhdGlv
blJlc3VsdCAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24p
CkBAIC0yMzg0LDcgKzI0MDcsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVu
YW1lIFRyZWVCdWlsZGVyOjpFeHBvcnRTcGVjaWZpZXIgUGFyc2VyPExleGVyVAogICAgICAgICBu
ZXh0KCk7CiAgICAgfQogCi0gICAgc2VtYW50aWNGYWlsSWZGYWxzZShjdXJyZW50U2NvcGUoKS0+
bW9kdWxlU2NvcGVEYXRhKCkuZXhwb3J0TmFtZSgqZXhwb3J0ZWROYW1lKSwgIkNhbm5vdCBleHBv
cnQgYSBkdXBsaWNhdGUgbmFtZSAnIiwgZXhwb3J0ZWROYW1lLT5pbXBsKCksICInIik7CisgICAg
c2VtYW50aWNGYWlsSWZGYWxzZShleHBvcnROYW1lKCpleHBvcnRlZE5hbWUpLCAiQ2Fubm90IGV4
cG9ydCBhIGR1cGxpY2F0ZSBuYW1lICciLCBleHBvcnRlZE5hbWUtPmltcGwoKSwgIiciKTsKICAg
ICBtYXliZUxvY2FsTmFtZXMuYXBwZW5kKGxvY2FsTmFtZSk7CiAgICAgcmV0dXJuIGNvbnRleHQu
Y3JlYXRlRXhwb3J0U3BlY2lmaWVyKHNwZWNpZmllckxvY2F0aW9uLCAqbG9jYWxOYW1lLCAqZXhw
b3J0ZWROYW1lKTsKIH0KQEAgLTI0MDcsNiArMjQzMCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnREZWNs
YXJhCiAgICAgICAgIGF1dG8gbW9kdWxlU3BlY2lmaWVyID0gcGFyc2VNb2R1bGVTcGVjaWZpZXIo
Y29udGV4dCk7CiAgICAgICAgIGZhaWxJZkZhbHNlKG1vZHVsZVNwZWNpZmllciwgIkNhbm5vdCBw
YXJzZSB0aGUgJ2Zyb20nIGNsYXVzZSIpOwogICAgICAgICBmYWlsSWZGYWxzZShhdXRvU2VtaUNv
bG9uKCksICJFeHBlY3RlZCBhICc7JyBmb2xsb3dpbmcgYSB0YXJnZXRlZCBleHBvcnQgZGVjbGFy
YXRpb24iKTsKKwogICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVFeHBvcnRBbGxEZWNsYXJh
dGlvbihleHBvcnRMb2NhdGlvbiwgbW9kdWxlU3BlY2lmaWVyKTsKICAgICB9CiAKQEAgLTI0MTgs
OCArMjQ0Miw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnREZWNsYXJhCiAgICAgICAgIG5leHQoKTsKIAog
ICAgICAgICBUcmVlU3RhdGVtZW50IHJlc3VsdCA9IDA7Ci0gICAgICAgIGJvb2wgaGFzTmFtZSA9
IGZhbHNlOwogICAgICAgICBib29sIGlzRnVuY3Rpb25PckNsYXNzRGVjbGFyYXRpb24gPSBmYWxz
ZTsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciogbG9jYWxOYW1lID0gbnVsbHB0cjsKICAgICAg
ICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludCgpOwogICAgICAgICBpZiAo
bWF0Y2goRlVOQ1RJT04pCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5UQVgpCkBAIC0yNDI5LDEx
ICsyNDUzLDEyIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnREZWNsYXJhCiAgICAgICAgICAgICBpc0Z1bmN0
aW9uT3JDbGFzc0RlY2xhcmF0aW9uID0gdHJ1ZTsKICAgICAgICAgICAgIG5leHQoKTsKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBXaGVuIGxhbmRpbmcgRVM2IGdlbmVyYXRvcnMsIHdlIG5lZWQgdG8g
dGFrZSBjYXJlIG9mIHRoYXQgJyonIGNvbWVzLgotICAgICAgICAgICAgaGFzTmFtZSA9IG1hdGNo
KElERU5UKTsKKyAgICAgICAgICAgIGlmIChtYXRjaChJREVOVCkpCisgICAgICAgICAgICAgICAg
bG9jYWxOYW1lID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgICAgICByZXN0b3JlU2F2
ZVBvaW50KHNhdmVQb2ludCk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoaGFzTmFtZSkgewor
ICAgICAgICBpZiAobG9jYWxOYW1lKSB7CiAgICAgICAgICAgICBpZiAobWF0Y2goRlVOQ1RJT04p
KQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbihjb250
ZXh0KTsKICNpZiBFTkFCTEUoRVM2X0NMQVNTX1NZTlRBWCkKQEAgLTI0NDMsMTggKzI0NjgsMzIg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUV4cG9ydERlY2xhcmEKICAgICAgICAgICAgIH0KICNlbmRpZgogICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgLy8gZXhwb3J0IGRlZmF1bHQgZXhwcjsKKyAgICAgICAg
ICAgIC8vCisgICAgICAgICAgICAvLyBJdCBzaG91bGQgYmUgdHJlYXRlZCBhcyB0aGUgc2FtZSB0
byB0aGUgZm9sbG93aW5nLgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIGNvbnN0ICpk
ZWZhdWx0KiA9IGV4cHI7CisgICAgICAgICAgICAvLyBleHBvcnQgeyAqZGVmYXVsdCogYXMgZGVm
YXVsdCB9CiAgICAgICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlv
bigpKTsKICAgICAgICAgICAgIEpTVGV4dFBvc2l0aW9uIHN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0
aW9uKCk7CiAgICAgICAgICAgICBUcmVlRXhwcmVzc2lvbiBleHByZXNzaW9uID0gcGFyc2VBc3Np
Z25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGV4cHJl
c3Npb24sICJDYW5ub3QgcGFyc2UgZXhwcmVzc2lvbiIpOwotICAgICAgICAgICAgcmVzdWx0ID0g
Y29udGV4dC5jcmVhdGVFeHByU3RhdGVtZW50KGxvY2F0aW9uLCBleHByZXNzaW9uLCBzdGFydCwg
dG9rZW5FbmRQb3NpdGlvbigpKTsKKworICAgICAgICAgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNr
IGRlY2xhcmF0aW9uUmVzdWx0ID0gZGVjbGFyZVZhcmlhYmxlKCZtX3ZtLT5wcm9wZXJ0eU5hbWVz
LT5zdGFyRGVmYXVsdFByaXZhdGVOYW1lLCBEZWNsYXJhdGlvblR5cGU6OkNvbnN0RGVjbGFyYXRp
b24pOworICAgICAgICAgICAgaWYgKGRlY2xhcmF0aW9uUmVzdWx0ICYgRGVjbGFyYXRpb25SZXN1
bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbikKKyAgICAgICAgICAgICAgICBpbnRlcm5h
bEZhaWxXaXRoTWVzc2FnZShmYWxzZSwgIkNhbm5vdCBleHBvcnQgJ2RlZmF1bHQnIG5hbWUgdHdp
Y2U6ICciKTsKKworICAgICAgICAgICAgVHJlZUV4cHJlc3Npb24gYXNzaWdubWVudCA9IGNvbnRl
eHQuY3JlYXRlQXNzaWduUmVzb2x2ZShsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+c3Rh
ckRlZmF1bHRQcml2YXRlTmFtZSwgZXhwcmVzc2lvbiwgc3RhcnQsIHN0YXJ0LCB0b2tlbkVuZFBv
c2l0aW9uKCksIEFzc2lnbm1lbnRDb250ZXh0OjpDb25zdERlY2xhcmF0aW9uU3RhdGVtZW50KTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IGNvbnRleHQuY3JlYXRlRXhwclN0YXRlbWVudChsb2NhdGlv
biwgYXNzaWdubWVudCwgc3RhcnQsIHRva2VuRW5kUG9zaXRpb24oKSk7CiAgICAgICAgICAgICBp
ZiAoIWlzRnVuY3Rpb25PckNsYXNzRGVjbGFyYXRpb24pCiAgICAgICAgICAgICAgICAgZmFpbElm
RmFsc2UoYXV0b1NlbWlDb2xvbigpLCAiRXhwZWN0ZWQgYSAnOycgZm9sbG93aW5nIGEgdGFyZ2V0
ZWQgZXhwb3J0IGRlY2xhcmF0aW9uIik7CisgICAgICAgICAgICBsb2NhbE5hbWUgPSAmbV92bS0+
cHJvcGVydHlOYW1lcy0+c3RhckRlZmF1bHRQcml2YXRlTmFtZTsKICAgICAgICAgfQogICAgICAg
ICBmYWlsSWZGYWxzZShyZXN1bHQsICJDYW5ub3QgcGFyc2UgdGhlIGRlY2xhcmF0aW9uIik7Ci0g
ICAgICAgIHNlbWFudGljRmFpbElmRmFsc2UoY3VycmVudFNjb3BlKCktPm1vZHVsZVNjb3BlRGF0
YSgpLmV4cG9ydE5hbWUobV92bS0+cHJvcGVydHlOYW1lcy0+ZGVmYXVsdEtleXdvcmQpLCAiQ2Fu
bm90IGV4cG9ydCAnZGVmYXVsdCcgbmFtZSB0d2ljZS4iKTsKIAotICAgICAgICByZXR1cm4gY29u
dGV4dC5jcmVhdGVFeHBvcnREZWZhdWx0RGVjbGFyYXRpb24oZXhwb3J0TG9jYXRpb24sIHJlc3Vs
dCk7CisgICAgICAgIHNlbWFudGljRmFpbElmRmFsc2UoZXhwb3J0TmFtZShtX3ZtLT5wcm9wZXJ0
eU5hbWVzLT5kZWZhdWx0S2V5d29yZCksICJDYW5ub3QgZXhwb3J0ICdkZWZhdWx0JyBuYW1lIHR3
aWNlLiIpOworICAgICAgICBjdXJyZW50U2NvcGUoKS0+bW9kdWxlU2NvcGVEYXRhKCkuZXhwb3J0
QmluZGluZygqbG9jYWxOYW1lKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRXhwb3J0
RGVmYXVsdERlY2xhcmF0aW9uKGV4cG9ydExvY2F0aW9uLCByZXN1bHQsICpsb2NhbE5hbWUpOwog
ICAgIH0KIAogICAgIGNhc2UgT1BFTkJSQUNFOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaAppbmRleCBiZDdiNTA0OGNlMDAwYzRlMWI2ZGQ3ZjU5OWU2ZDFjNTM4ODE5N2FhLi42
YmYyMjI0NTBiNzg2NTlhM2NiMDQyMTg2MTRkNTZkZTQ0ZWQ2M2M0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTk4LDYgKzk4LDExIEBAIGVudW0gY2xhc3MgRGVjbGFy
YXRpb25UeXBlIHsKICAgICBDb25zdERlY2xhcmF0aW9uCiB9OwogCitlbnVtIGNsYXNzIERlY2xh
cmF0aW9uSW1wb3J0VHlwZSB7CisgICAgSW1wb3J0ZWQsCisgICAgTm90SW1wb3J0ZWQKK307CisK
IGVudW0gRGVjbGFyYXRpb25SZXN1bHQgewogICAgIFZhbGlkID0gMCwKICAgICBJbnZhbGlkU3Ry
aWN0TW9kZSA9IDEgPDwgMCwKQEAgLTI1Nyw2ICsyNjIsNyBAQCBzdHJ1Y3QgU2NvcGUgewogICAg
IGJvb2wgaXNMZXhpY2FsU2NvcGUoKSB7IHJldHVybiBtX2lzTGV4aWNhbFNjb3BlOyB9CiAKICAg
ICBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcygpIHsgcmV0dXJuIG1fZGVj
bGFyZWRWYXJpYWJsZXM7IH0KKyAgICBWYXJpYWJsZUVudmlyb25tZW50JiBsZXhpY2FsVmFyaWFi
bGVzKCkgeyByZXR1cm4gbV9sZXhpY2FsVmFyaWFibGVzOyB9CiAgICAgVmFyaWFibGVFbnZpcm9u
bWVudCYgZmluYWxpemVMZXhpY2FsRW52aXJvbm1lbnQoKSAKICAgICB7IAogICAgICAgICBpZiAo
bV91c2VzRXZhbCB8fCBtX25lZWRzRnVsbEFjdGl2YXRpb24pCkBAIC0zMTUsNyArMzIxLDcgQEAg
c3RydWN0IFNjb3BlIHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBEZWNs
YXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyZUxleGljYWxWYXJpYWJsZShjb25zdCBJZGVudGlmaWVy
KiBpZGVudCwgYm9vbCBpc0NvbnN0YW50KQorICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNs
YXJlTGV4aWNhbFZhcmlhYmxlKGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBib29sIGlzQ29uc3Rh
bnQsIERlY2xhcmF0aW9uSW1wb3J0VHlwZSBpbXBvcnRUeXBlID0gRGVjbGFyYXRpb25JbXBvcnRU
eXBlOjpOb3RJbXBvcnRlZCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2FsbG93c0xleGljYWxE
ZWNsYXJhdGlvbnMpOwogICAgICAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgcmVzdWx0ID0gRGVj
bGFyYXRpb25SZXN1bHQ6OlZhbGlkOwpAQCAtMzI3LDYgKzMzMyw5IEBAIHN0cnVjdCBTY29wZSB7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuc2V0
SXNMZXQoKTsKIAorICAgICAgICBpZiAoaW1wb3J0VHlwZSA9PSBEZWNsYXJhdGlvbkltcG9ydFR5
cGU6OkltcG9ydGVkKQorICAgICAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5zZXRJ
c0ltcG9ydGVkKCk7CisKICAgICAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKICAgICAg
ICAgICAgIHJlc3VsdCB8PSBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xh
cmF0aW9uOwogICAgICAgICBpZiAoIWlzVmFsaWRTdHJpY3RNb2RlKQpAQCAtNjExLDcgKzYyMCw3
IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgflBhcnNlcigpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNz
IFBhcnNlZE5vZGU+Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNl
ckVycm9yJiwgY29uc3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uUGFyc2VNb2RlKTsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImLCBjb25zdCBJZGVudGlm
aWVyJiwgRnVuY3Rpb25QYXJzZU1vZGUsIE1vZHVsZVBhcnNlTW9kZSk7CiAKICAgICBKU1RleHRQ
b3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCkgY29uc3QgeyByZXR1cm4gbV9sZXhl
ci0+cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOyB9CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxv
Y2F0aW9uQmVmb3JlTGFzdFRva2VuKCkgY29uc3QgeyByZXR1cm4gbV9sZXhlci0+bGFzdFRva2Vu
TG9jYXRpb24oKTsgfQpAQCAtNzY5LDcgKzc3OCw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgICAg
IHBvcFNjb3BlSW50ZXJuYWwoc2NvcGUsIHNob3VsZFRyYWNrQ2xvc2VkVmFyaWFibGVzKTsKICAg
ICB9CiAgICAgCi0gICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmVWYXJpYWJsZShjb25z
dCBJZGVudGlmaWVyKiBpZGVudCwgRGVjbGFyYXRpb25UeXBlIHR5cGUgPSBEZWNsYXJhdGlvblR5
cGU6OlZhckRlY2xhcmF0aW9uKQorICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJlVmFy
aWFibGUoY29uc3QgSWRlbnRpZmllciogaWRlbnQsIERlY2xhcmF0aW9uVHlwZSB0eXBlID0gRGVj
bGFyYXRpb25UeXBlOjpWYXJEZWNsYXJhdGlvbiwgRGVjbGFyYXRpb25JbXBvcnRUeXBlIGltcG9y
dFR5cGUgPSBEZWNsYXJhdGlvbkltcG9ydFR5cGU6Ok5vdEltcG9ydGVkKQogICAgIHsKICAgICAg
ICAgdW5zaWduZWQgaSA9IG1fc2NvcGVTdGFjay5zaXplKCkgLSAxOwogICAgICAgICBBU1NFUlQo
aSA8IG1fc2NvcGVTdGFjay5zaXplKCkpOwpAQCAtNzk0LDcgKzgwMyw3IEBAIGNsYXNzIFBhcnNl
ciB7CiAgICAgICAgICAgICBBU1NFUlQoaSA8IG1fc2NvcGVTdGFjay5zaXplKCkpOwogICAgICAg
ICB9CiAKLSAgICAgICAgcmV0dXJuIG1fc2NvcGVTdGFja1tpXS5kZWNsYXJlTGV4aWNhbFZhcmlh
YmxlKGlkZW50LCB0eXBlID09IERlY2xhcmF0aW9uVHlwZTo6Q29uc3REZWNsYXJhdGlvbik7Cisg
ICAgICAgIHJldHVybiBtX3Njb3BlU3RhY2tbaV0uZGVjbGFyZUxleGljYWxWYXJpYWJsZShpZGVu
dCwgdHlwZSA9PSBEZWNsYXJhdGlvblR5cGU6OkNvbnN0RGVjbGFyYXRpb24sIGltcG9ydFR5cGUp
OwogICAgIH0KICAgICAKICAgICBORVZFUl9JTkxJTkUgYm9vbCBoYXNEZWNsYXJlZFZhcmlhYmxl
KGNvbnN0IElkZW50aWZpZXImIGlkZW50KQpAQCAtODI1LDYgKzgzNCwxMiBAQCBjbGFzcyBQYXJz
ZXIgewogICAgICAgICAgICAgbV9zY29wZVN0YWNrLmxhc3QoKS5kZWNsYXJlV3JpdGUoaWRlbnQp
OwogICAgIH0KIAorICAgIGJvb2wgZXhwb3J0TmFtZShjb25zdCBJZGVudGlmaWVyJiBpZGVudCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChjdXJyZW50U2NvcGUoKS5pbmRleCgpID09IDApOworICAg
ICAgICByZXR1cm4gY3VycmVudFNjb3BlKCktPm1vZHVsZVNjb3BlRGF0YSgpLmV4cG9ydE5hbWUo
aWRlbnQpOworICAgIH0KKwogICAgIFNjb3BlU3RhY2sgbV9zY29wZVN0YWNrOwogICAgIAogICAg
IGNvbnN0IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtKiBmaW5kQ2FjaGVkRnVuY3Rpb25JbmZvKGlu
dCBvcGVuQnJhY2VQb3MpIApAQCAtODMzLDcgKzg0OCw3IEBAIGNsYXNzIFBhcnNlciB7CiAgICAg
fQogCiAgICAgUGFyc2VyKCk7Ci0gICAgU3RyaW5nIHBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmll
ciYsIEZ1bmN0aW9uUGFyc2VNb2RlKTsKKyAgICBTdHJpbmcgcGFyc2VJbm5lcihjb25zdCBJZGVu
dGlmaWVyJiwgRnVuY3Rpb25QYXJzZU1vZGUsIE1vZHVsZVBhcnNlTW9kZSk7CiAKICAgICB2b2lk
IGRpZEZpbmlzaFBhcnNpbmcoU291cmNlRWxlbWVudHMqLCBEZWNsYXJhdGlvblN0YWNrczo6RnVu
Y3Rpb25TdGFjayYsIFZhcmlhYmxlRW52aXJvbm1lbnQmLCBDb2RlRmVhdHVyZXMsIGludCwgY29u
c3QgVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+JiYpOwogCkBAIC0xMDk4LDcgKzEx
MTMsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
TkVWRVJfSU5MSU5FIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiBwYXJzZURlc3RydWN0dXJpbmdQ
YXR0ZXJuKFRyZWVCdWlsZGVyJiwgRGVzdHJ1Y3R1cmluZ0tpbmQsIEV4cG9ydFR5cGUsIGNvbnN0
IElkZW50aWZpZXIqKiBkdXBsaWNhdGVJZGVudGlmaWVyID0gbnVsbHB0ciwgYm9vbCogaGFzRGVz
dHJ1Y3R1cmluZ1BhdHRlcm4gPSBudWxscHRyLCBBc3NpZ25tZW50Q29udGV4dCA9IEFzc2lnbm1l
bnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCwgaW50IGRlcHRoID0gMCk7CiAgICAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZURlc3RydWN0dXJpbmdQ
YXR0ZXJuIHRyeVBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm5FeHByZXNzaW9uKFRyZWVCdWlsZGVy
JiwgQXNzaWdubWVudENvbnRleHQpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
TkVWRVJfSU5MSU5FIFRyZWVFeHByZXNzaW9uIHBhcnNlRGVmYXVsdFZhbHVlRm9yRGVzdHJ1Y3R1
cmluZ1BhdHRlcm4oVHJlZUJ1aWxkZXImKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZU1vZHVsZVNvdXJjZUVsZW1lbnRzKFRyZWVCdWls
ZGVyJik7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVu
dHMgcGFyc2VNb2R1bGVTb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIE1vZHVsZVBhcnNlTW9k
ZSk7CiAgICAgZW51bSBjbGFzcyBJbXBvcnRTcGVjaWZpZXJUeXBlIHsgTmFtZXNwYWNlSW1wb3J0
LCBOYW1lZEltcG9ydCwgRGVmYXVsdEltcG9ydCB9OwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkltcG9ydFNwZWNpZmllciBwYXJzZUltcG9y
dENsYXVzZUl0ZW0oVHJlZUJ1aWxkZXImLCBJbXBvcnRTcGVjaWZpZXJUeXBlKTsKICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpNb2R1bGVTcGVj
aWZpZXIgcGFyc2VNb2R1bGVTcGVjaWZpZXIoVHJlZUJ1aWxkZXImKTsKQEAgLTEyNTUsNyArMTI3
MCw3IEBAIGNsYXNzIFBhcnNlciB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0
ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KLXN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJZGVudGlm
aWVyJiBjYWxsZWVOYW1lLCBGdW5jdGlvblBhcnNlTW9kZSBwYXJzZU1vZGUpCitzdGQ6OnVuaXF1
ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlKFBhcnNlckVycm9yJiBl
cnJvciwgY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgRnVuY3Rpb25QYXJzZU1vZGUgcGFy
c2VNb2RlLCBNb2R1bGVQYXJzZU1vZGUgbW9kdWxlUGFyc2VNb2RlKQogewogICAgIGludCBlcnJM
aW5lOwogICAgIFN0cmluZyBlcnJNc2c7CkBAIC0xMjcyLDcgKzEyODcsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlKFBhcnNlckVycm9yJiBl
cnJvciwgY29uc3QgSQogICAgIEFTU0VSVChtX3NvdXJjZS0+c3RhcnRDb2x1bW4oKSA+IDApOwog
ICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gbV9zb3VyY2UtPnN0YXJ0Q29sdW1uKCkgLSAxOwog
Ci0gICAgU3RyaW5nIHBhcnNlRXJyb3IgPSBwYXJzZUlubmVyKGNhbGxlZU5hbWUsIHBhcnNlTW9k
ZSk7CisgICAgU3RyaW5nIHBhcnNlRXJyb3IgPSBwYXJzZUlubmVyKGNhbGxlZU5hbWUsIHBhcnNl
TW9kZSwgbW9kdWxlUGFyc2VNb2RlKTsKIAogICAgIGludCBsaW5lTnVtYmVyID0gbV9sZXhlci0+
bGluZU51bWJlcigpOwogICAgIGJvb2wgbGV4RXJyb3IgPSBtX2xleGVyLT5zYXdFcnJvcigpOwpA
QCAtMTM0MCwxNSArMTM1NSwxNiBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2Uo
CiAgICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGlu
TW9kZSwKICAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJDb2RlVHlw
ZSBjb2RlVHlwZSwKICAgICBQYXJzZXJFcnJvciYgZXJyb3IsIEpTVGV4dFBvc2l0aW9uKiBwb3Np
dGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gbnVsbHB0ciwKLSAgICBGdW5jdGlvblBhcnNlTW9kZSBw
YXJzZU1vZGUgPSBOb3RBRnVuY3Rpb25Nb2RlLCBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0
cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgCi0gICAgVGhpc1REWk1vZGUgdGhp
c1REWk1vZGUgPSBUaGlzVERaTW9kZTo6Q2hlY2tJZk5lZWRlZCkKKyAgICBGdW5jdGlvblBhcnNl
TW9kZSBwYXJzZU1vZGUgPSBOb3RBRnVuY3Rpb25Nb2RlLCBDb25zdHJ1Y3RvcktpbmQgZGVmYXVs
dENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwKKyAgICBUaGlzVERaTW9k
ZSB0aGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkLAorICAgIE1vZHVsZVBh
cnNlTW9kZSBtb2R1bGVQYXJzZU1vZGUgPSBNb2R1bGVQYXJzZU1vZGU6OkFuYWx5emUpCiB7CiAg
ICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIlBhcnNpbmciKTsKIAogICAgIEFTU0VS
VCghc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzTnVsbCgpKTsKICAgICBpZiAoc291cmNl
LnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzOEJpdCgpKSB7CiAgICAgICAgIFBhcnNlcjxMZXhlcjxM
Q2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgY29kZVR5
cGUsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKLSAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihl
cnJvciwgbmFtZSwgcGFyc2VNb2RlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5v
ZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VN
b2RlLCBtb2R1bGVQYXJzZU1vZGUpOwogICAgICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZSkKICAgICAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBv
c2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKICAgICAgICAgaWYgKGJ1aWx0aW5Nb2RlID09IEpT
UGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4pIHsKQEAgLTEzNjEsNyArMTM3Nyw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICB9CiAgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRShkZWZhdWx0Q29uc3RydWN0b3JLaW5kID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgIkJ1
aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRGVmYXVsdENvbnN0cnVjdG9yIHNob3VsZCBhbHdheXMg
dXNlIGEgOC1iaXQgc3RyaW5nIik7CiAgICAgUGFyc2VyPExleGVyPFVDaGFyPj4gcGFyc2VyKHZt
LCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBjb2RlVHlwZSwgZGVmYXVsdENvbnN0
cnVjdG9yS2luZCwgdGhpc1REWk1vZGUpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2Rl
PiByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9k
ZSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJz
ZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlLCBtb2R1bGVQYXJzZU1vZGUpOwog
ICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAgICAqcG9zaXRpb25CZWZv
cmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyTW9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMu
aAppbmRleCBjNGQ2MTY3ZWM4MmRjOTY3NzkwNDk5NmIxY2U2MzZhYjc5ZDk5ZDgyLi40MjA0MzZl
YTMwNmMxODQ5MDljMTg4NDQ5ZTg2ODU1NDlkMjY0YjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCkBAIC0zOCw2ICszOCw3IEBAIGVudW0gY2xhc3MgSlNQ
YXJzZXJDb2RlVHlwZSB7IFByb2dyYW0sIEZ1bmN0aW9uLCBNb2R1bGUgfTsKIGVudW0gY2xhc3Mg
Q29uc3RydWN0b3JLaW5kIHsgTm9uZSwgQmFzZSwgRGVyaXZlZCB9OwogZW51bSBjbGFzcyBTdXBl
ckJpbmRpbmcgeyBOZWVkZWQsIE5vdE5lZWRlZCB9OwogZW51bSBjbGFzcyBUaGlzVERaTW9kZSB7
IEFsd2F5c0NoZWNrLCBDaGVja0lmTmVlZGVkIH07CitlbnVtIGNsYXNzIE1vZHVsZVBhcnNlTW9k
ZSB7IEFuYWx5emUsIEV2YWx1YXRlIH07CiAKIGVudW0gUHJvZmlsZXJNb2RlIHsgUHJvZmlsZXJP
ZmYsIFByb2ZpbGVyT24gfTsKIGVudW0gRGVidWdnZXJNb2RlIHsgRGVidWdnZXJPZmYsIERlYnVn
Z2VyT24gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4
Q2hlY2tlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgK
aW5kZXggNzUwMzQ1YTNhOTk4YzIxYWNiY2Y5ZWRkY2ZiMDZlNzAzNWI5NWVjOC4uZGQyNjgwMjc3
ZjAyMmI4NjU4NDFlNGEzY2QyMDhjZmJkMjIwYzkwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKQEAgLTI2NSw3ICsyNjUsNyBAQCBjbGFzcyBTeW50
YXhDaGVja2VyIHsKICAgICB2b2lkIGFwcGVuZEltcG9ydFNwZWNpZmllcihJbXBvcnRTcGVjaWZp
ZXJMaXN0LCBJbXBvcnRTcGVjaWZpZXIpIHsgfQogICAgIGludCBjcmVhdGVJbXBvcnREZWNsYXJh
dGlvbihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBJbXBvcnRTcGVjaWZpZXJMaXN0LCBNb2R1bGVT
cGVjaWZpZXIpIHsgcmV0dXJuIFN0YXRlbWVudFJlc3VsdDsgfQogICAgIGludCBjcmVhdGVFeHBv
cnRBbGxEZWNsYXJhdGlvbihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBNb2R1bGVTcGVjaWZpZXIp
IHsgcmV0dXJuIFN0YXRlbWVudFJlc3VsdDsgfQotICAgIGludCBjcmVhdGVFeHBvcnREZWZhdWx0
RGVjbGFyYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50KSB7IHJldHVybiBTdGF0ZW1l
bnRSZXN1bHQ7IH0KKyAgICBpbnQgY3JlYXRlRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgY29uc3QgSWRlbnRpZmllciYpIHsgcmV0dXJuIFN0YXRl
bWVudFJlc3VsdDsgfQogICAgIGludCBjcmVhdGVFeHBvcnRMb2NhbERlY2xhcmF0aW9uKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGludCkgeyByZXR1cm4gU3RhdGVtZW50UmVzdWx0OyB9CiAgICAg
aW50IGNyZWF0ZUV4cG9ydE5hbWVkRGVjbGFyYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwb3J0U3BlY2lmaWVyTGlzdCwgTW9kdWxlU3BlY2lmaWVyKSB7IHJldHVybiBTdGF0ZW1lbnRS
ZXN1bHQ7IH0KICAgICBFeHBvcnRTcGVjaWZpZXIgY3JlYXRlRXhwb3J0U3BlY2lmaWVyKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBJZGVudGlmaWVyJikg
eyByZXR1cm4gRXhwb3J0U3BlY2lmaWVyUmVzdWx0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcAppbmRleCA5Y2NlM2Y4ZDI4
MGZmYTUwOTk4ZTIwMWVlYjAzMjJiZGU3NWYzNjQ3Li5lZDA1NWY5OGE5NDljYTNhYzBhYzgxNzZi
NDViZThkNDRjMzJjYTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAKQEAgLTgxLDQgKzgxLDE4IEBAIHZvaWQgVmFyaWFi
bGVFbnZpcm9ubWVudDo6c3dhcChWYXJpYWJsZUVudmlyb25tZW50JiBvdGhlcikKICAgICBtX2lz
RXZlcnl0aGluZ0NhcHR1cmVkID0gb3RoZXIubV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZDsKIH0KIAor
dm9pZCBWYXJpYWJsZUVudmlyb25tZW50OjptYXJrVmFyaWFibGVBc0ltcG9ydGVkKGNvbnN0IFJl
ZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBmaW5kUmVz
dWx0ID0gbV9tYXAuZmluZChpZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0FTU0VSVChmaW5kUmVz
dWx0ICE9IG1fbWFwLmVuZCgpKTsKKyAgICBmaW5kUmVzdWx0LT52YWx1ZS5zZXRJc0ltcG9ydGVk
KCk7Cit9CisKK3ZvaWQgVmFyaWFibGVFbnZpcm9ubWVudDo6bWFya1ZhcmlhYmxlQXNFeHBvcnRl
ZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQoreworICAgIGF1
dG8gZmluZFJlc3VsdCA9IG1fbWFwLmZpbmQoaWRlbnRpZmllcik7CisgICAgUkVMRUFTRV9BU1NF
UlQoZmluZFJlc3VsdCAhPSBtX21hcC5lbmQoKSk7CisgICAgZmluZFJlc3VsdC0+dmFsdWUuc2V0
SXNFeHBvcnRlZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKaW5kZXggNzM4ZTY1MTlj
MWUyMGFhZDRkZjQ1Nzc2MDcwMGI2YzFlNmE0OTNjNy4uNWVkMmE2YmRhOTI4MzhlMjk2NDgyZjY2
YzA3ODVhMzYxMWFlNjE1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9WYXJpYWJsZUVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9WYXJpYWJsZUVudmlyb25tZW50LmgKQEAgLTM4LDExICszOCwxNSBAQCBzdHJ1Y3QgVmFyaWFi
bGVFbnZpcm9ubWVudEVudHJ5IHsKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNDb25zdCgpIGNv
bnN0IHsgcmV0dXJuIG1fYml0cyAmIElzQ29uc3Q7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wg
aXNWYXIoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1ZhcjsgfQogICAgIEFMV0FZU19JTkxJ
TkUgYm9vbCBpc0xldCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzTGV0OyB9CisgICAgQUxX
QVlTX0lOTElORSBib29sIGlzRXhwb3J0ZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc0V4
cG9ydGVkOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzSW1wb3J0ZWQoKSBjb25zdCB7IHJl
dHVybiBtX2JpdHMgJiBJc0ltcG9ydGVkOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
SXNDYXB0dXJlZCgpIHsgbV9iaXRzIHw9IElzQ2FwdHVyZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0SXNDb25zdCgpIHsgbV9iaXRzIHw9IElzQ29uc3Q7IH0KICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0SXNWYXIoKSB7IG1fYml0cyB8PSBJc1ZhcjsgfQogICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXRJc0xldCgpIHsgbV9iaXRzIHw9IElzTGV0OyB9CisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldElzRXhwb3J0ZWQoKSB7IG1fYml0cyB8PSBJc0V4cG9ydGVkOyB9CisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldElzSW1wb3J0ZWQoKSB7IG1fYml0cyB8PSBJc0ltcG9ydGVkOyB9
CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY2xlYXJJc1ZhcigpIHsgbV9iaXRzICY9IH5Jc1Zh
cjsgfQogCkBAIC01MSw3ICs1NSw5IEBAIHN0cnVjdCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkg
ewogICAgICAgICBJc0NhcHR1cmVkID0gMSA8PCAwLAogICAgICAgICBJc0NvbnN0ID0gMSA8PCAx
LAogICAgICAgICBJc1ZhciA9IDEgPDwgMiwKLSAgICAgICAgSXNMZXQgPSAxIDw8IDMKKyAgICAg
ICAgSXNMZXQgPSAxIDw8IDMsCisgICAgICAgIElzRXhwb3J0ZWQgPSAxIDw8IDQsCisgICAgICAg
IElzSW1wb3J0ZWQgPSAxIDw8IDUKICAgICB9OwogICAgIHVpbnQ4X3QgbV9iaXRzIHsgMCB9Owog
fTsKQEAgLTc5LDYgKzg1LDggQEAgY2xhc3MgVmFyaWFibGVFbnZpcm9ubWVudCB7CiAgICAgdm9p
ZCBtYXJrQWxsVmFyaWFibGVzQXNDYXB0dXJlZCgpOwogICAgIGJvb2wgaGFzQ2FwdHVyZWRWYXJp
YWJsZXMoKSBjb25zdDsKICAgICBib29sIGNhcHR1cmVzKFVuaXF1ZWRTdHJpbmdJbXBsKiBpZGVu
dGlmaWVyKSBjb25zdDsKKyAgICB2b2lkIG1hcmtWYXJpYWJsZUFzSW1wb3J0ZWQoY29uc3QgUmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcik7CisgICAgdm9pZCBtYXJrVmFyaWFi
bGVBc0V4cG9ydGVkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIp
OwogCiBwcml2YXRlOgogICAgIE1hcCBtX21hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDY0NTFmZjM0NDkwZmJiNjZiZDJh
ZjIxZGI3NjBmYTVlN2QyYjViMTQuLmQ3YWUwNzc5NWFmOWU2OTNjOWUzODRmYmYzZjUxZjM2YzFh
YTU2MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaApAQCAtMzAxLDYgKzMwMSw3IEBACiAgICAgbWFjcm8ocHJvbWlzZVJlamVjdFJl
YWN0aW9ucykgXAogICAgIG1hY3JvKHByb21pc2VSZXN1bHQpIFwKICAgICBtYWNybyhjYXBhYmls
aXRpZXMpIFwKKyAgICBtYWNybyhzdGFyRGVmYXVsdCkgXAogCiAKIG5hbWVzcGFjZSBKU0Mgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcAppbmRleCBhYmFm
ZjdlY2I5Y2RiMjlkZWY4NzJiYjU2ZWMwY2E3YzYxYzRlOTFiLi5mMmE3ZjllZDZmMGVjN2VjZjli
YTM3ZmIyY2M2NzEwZmYxNWZjZDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21wbGV0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21wbGV0aW9uLmNwcApAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2lu
Y2x1ZGUgIk1vZHVsZUFuYWx5emVyLmgiCisjaW5jbHVkZSAiTW9kdWxlUmVjb3JkLmgiCiAjaW5j
bHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSA8d3RmL1dURlRocmVhZERhdGEuaD4KIApAQCAtNjUs
OSArNjcsMTUgQEAgYm9vbCBjaGVja01vZHVsZVN5bnRheChWTSYgdm0sIGNvbnN0IFNvdXJjZUNv
ZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogewogICAgIEpTTG9ja0hvbGRlciBsb2Nr
KHZtKTsKICAgICBSRUxFQVNFX0FTU0VSVCh2bS5hdG9taWNTdHJpbmdUYWJsZSgpID09IHd0ZlRo
cmVhZERhdGEoKS5hdG9taWNTdHJpbmdUYWJsZSgpKTsKLSAgICByZXR1cm4gISFwYXJzZTxNb2R1
bGVQcm9ncmFtTm9kZT4oCisgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1Ob2RlPiBt
b2R1bGVQcm9ncmFtTm9kZSA9IHBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKICAgICAgICAgJnZt
LCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwK
ICAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QsIEpTUGFyc2VyQ29kZVR5cGU6Ok1v
ZHVsZSwgZXJyb3IpOworICAgIGlmICghbW9kdWxlUHJvZ3JhbU5vZGUpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIE1vZHVsZUFuYWx5emVyIG1vZHVsZUFuYWx5emVyKHZtLCBtb2R1bGVQ
cm9ncmFtTm9kZS0+dmFyRGVjbGFyYXRpb25zKCksIG1vZHVsZVByb2dyYW1Ob2RlLT5sZXhpY2Fs
VmFyaWFibGVzKCkpOworICAgIG1vZHVsZUFuYWx5emVyLmFuYWx5emUoKm1vZHVsZVByb2dyYW1O
b2RlKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogSlNWYWx1ZSBldmFsdWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIE5ha2Vk
UHRyPEV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9ucy5oCmluZGV4IGM2MGRhOWQxMDQ3OGMyOWY3MWNjM2UzNzFmOGJiMmFhZWU5
ZDE0NzEuLmNlMGMwN2JkMTY3NDM4MjdlZDJjZmYyOWY3NjY5YjQzNTI4OGFhMzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKQEAgLTMyMCw2ICszMjAsOCBAQCB0eXBl
ZGVmIGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICBcCiAgICAgdihib29sLCBlbmFibGVE
b2xsYXJWTSwgZmFsc2UsICJpbnN0YWxscyB0aGUgJHZtIGRlYnVnZ2luZyB0b29sIGluIGdsb2Jh
bCBvYmplY3RzIikgXAogICAgIHYob3B0aW9uU3RyaW5nLCBmdW5jdGlvbk92ZXJyaWRlcywgbnVs
bHB0ciwgImZpbGUgd2l0aCBkZWJ1Z2dpbmcgb3ZlcnJpZGVzIGZvciBmdW5jdGlvbiBib2RpZXMi
KSBcCisgICAgXAorICAgIHYoYm9vbCwgZHVtcE1vZHVsZVJlY29yZCwgZmFsc2UsIG51bGxwdHIp
IFwKIAogY2xhc3MgT3B0aW9ucyB7CiBwdWJsaWM6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258697</attachid>
            <date>2015-08-10 21:06:42 -0700</date>
            <delta_ts>2015-08-13 12:59:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147353-20150810210629.patch</filename>
            <type>text/plain</type>
            <size>75702</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
NjRhMDM3NTUyYzIwNWNhYjUyZmJjYmJiZTMyODc4NWRmNzA5OTdhLi5lNTFhNDU1NjA1NGQ4YWRh
YjMyNzUyNzhhMTg2MjZiOTg3NmU3NGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDcgQEAKKzIwMTUtMDgtMTAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW0VTNl0gQWRkIEVTNiBNb2R1bGVzIHByZXBhcnNpbmcgcGhhc2Ug
dG8gY29sbGVjdCB0aGUgZGVwZW5kZW5jaWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDczNTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgTW9kdWxlUmVjb3JkIGFu
ZCBNb2R1bGVBbmFseXplci4KKyAgICAgICAgTW9kdWxlQW5hbHl6ZXIgYW5hbHl6ZXMgdGhlIHBy
b2R1Y2VkIEFTVCBmcm9tIHRoZSBwYXJzZXIuCisgICAgICAgIEJ5IGNvbGxhYm9yYXRpbmcgd2l0
aCB0aGUgcGFyc2VyLCBNb2R1bGVBbmFseXplciBjb2xsZWN0cyB0aGUgaW5mb3JtYXRpb24KKyAg
ICAgICAgdGhhdCBpcyBuZWNlc3NhcnkgdG8gcmVxdWVzdCB0aGUgbG9hZGluZyBmb3IgdGhlIGRl
cGVuZGVudCBtb2R1bGVzIGFuZAorICAgICAgICBjb25zdHJ1Y3QgbW9kdWxlJ3MgZW52aXJvbm1l
bnQgYW5kIG5hbWVzcGFjZSBvYmplY3QgYmVmb3JlIGV4ZWN1dGluZyB0aGUgYWN0dWFsCisgICAg
ICAgIG1vZHVsZSBib2R5LgorCisgICAgICAgIEluIHRoZSBwYXJzZXIsIHdlIGFubm90YXRlIHdo
aWNoIHZhcmlhYmxlIGlzIGltcG9ydGVkIGJpbmRpbmcgYW5kIHdoaWNoIHZhcmlhYmxlCisgICAg
ICAgIGlzIGV4cG9ydGVkIGZyb20gdGhlIGN1cnJlbnQgbW9kdWxlLiBUaGlzIGluZm9ybWF0aW9u
IGlzIGxldmVyYWdlZCBpbiB0aGUgTW9kdWxlQW5hbHl6ZXIKKyAgICAgICAgdG8gY2F0ZWdvcml6
ZSB0aGUgZXhwb3J0IGVudHJpZXMuCisKKyAgICAgICAgVG8gcHJlcGFyc2UgdGhlIG1vZHVsZXMg
aW4gdGhlIHBhcnNlciwgd2UganVzdCBhZGQgdGhlIG5ldyBmbGFnIGBNb2R1bGVQYXJzZU1vZGVg
CisgICAgICAgIGluc3RlYWQgb2YgaW50cm9kdWNpbmcgYSBuZXcgVHJlZUNvbnRleHQgdHlwZS4g
VGhpcyBpcyBiZWNhdXNlIG9ubHkgMiB1c2VycyB1c2UgdGhlCisgICAgICAgIHBhcnNlTW9kdWxl
U291cmNlRWxlbWVudHM7IHByZXBhcnNlciBhbmQgYWN0dWFsIGNvbXBpbGVyLiBBZGRpbmcgdGhl
IGZsYWcgaXMgc2ltcGxlCisgICAgICAgIGVub3VnaCB0byBzd2l0Y2ggdGhlIGNvbnRleHQgdG8g
dGhlIFN5bnRheENoZWNrZXIgd2hlbiBwYXJzaW5nIHRoZSBub24tbW9kdWxlIHJlbGF0ZWQKKyAg
ICAgICAgc3RhdGVtZW50IGluIHRoZSBwcmVwYXJzaW5nIHBoYXNlLgorCisgICAgICAgIFRvIGRl
bW9uc3RyYXRlIHRoZSBtb2R1bGUgYW5hbHl6ZXIsIHdlIGFkZGVkIHRoZSBuZXcgb3B0aW9uIGR1
bXBNb2R1bGVSZWNvcmQgb3B0aW9uCisgICAgICAgIGludG8gdGhlIEpTQyBzaGVsbC4gQnkgc3Bl
Y2lmeWluZyB0aGlzLCB0aGUgcmVzdWx0IG9mIGFuYWx5c2lzIGlzIGR1bXBlZCB3aGVuIHRoZSBt
b2R1bGUKKyAgICAgICAgaXMgcGFyc2VkIGFuZCBhbmFseXplZC4KKworICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oOgorICAg
ICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNy
ZWF0ZUV4cG9ydERlZmF1bHREZWNsYXJhdGlvbik6CisgICAgICAgICogcGFyc2VyL01vZHVsZUFu
YWx5emVyLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6Ok1vZHVsZUFuYWx5emVyOjpNb2R1bGVB
bmFseXplcik6CisgICAgICAgIChKU0M6Ok1vZHVsZUFuYWx5emVyOjpleHBvcnRlZEJpbmRpbmcp
OgorICAgICAgICAoSlNDOjpNb2R1bGVBbmFseXplcjo6ZGVjbGFyZUV4cG9ydEFsaWFzKToKKyAg
ICAgICAgKEpTQzo6TW9kdWxlQW5hbHl6ZXI6OmV4cG9ydFZhcmlhYmxlKToKKyAgICAgICAgKEpT
Qzo6TW9kdWxlQW5hbHl6ZXI6OmFuYWx5emUpOgorICAgICAgICAqIHBhcnNlci9Nb2R1bGVBbmFs
eXplci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TW9kdWxlQW5hbHl6ZXI6OnZtKToKKyAgICAg
ICAgKEpTQzo6TW9kdWxlQW5hbHl6ZXI6Om1vZHVsZVJlY29yZCk6CisgICAgICAgICogcGFyc2Vy
L01vZHVsZVJlY29yZC5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpwcmludGFibGVOYW1lKToK
KyAgICAgICAgKEpTQzo6TW9kdWxlUmVjb3JkOjpkdW1wKToKKyAgICAgICAgKiBwYXJzZXIvTW9k
dWxlUmVjb3JkLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpNb2R1bGVSZWNvcmQ6OkltcG9ydEVu
dHJ5Ojppc05hbWVzcGFjZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZVJlY29yZDo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6TW9kdWxlUmVjb3JkOjphcHBlbmRSZXF1ZXN0ZWRNb2R1bGUpOgorICAg
ICAgICAoSlNDOjpNb2R1bGVSZWNvcmQ6OmFkZEltcG9ydEVudHJ5KToKKyAgICAgICAgKEpTQzo6
TW9kdWxlUmVjb3JkOjphZGRFeHBvcnRFbnRyeSk6CisgICAgICAgIChKU0M6Ok1vZHVsZVJlY29y
ZDo6YWRkU3RhckV4cG9ydEVudHJ5KToKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVjdG9y
cy5oOgorICAgICAgICAoSlNDOjpNb2R1bGVEZWNsYXJhdGlvbk5vZGU6Ok1vZHVsZURlY2xhcmF0
aW9uTm9kZSk6CisgICAgICAgIChKU0M6OkltcG9ydERlY2xhcmF0aW9uTm9kZTo6SW1wb3J0RGVj
bGFyYXRpb25Ob2RlKToKKyAgICAgICAgKEpTQzo6RXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlOjpF
eHBvcnRBbGxEZWNsYXJhdGlvbk5vZGUpOgorICAgICAgICAoSlNDOjpFeHBvcnREZWZhdWx0RGVj
bGFyYXRpb25Ob2RlOjpFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25Ob2RlKToKKyAgICAgICAgKEpT
Qzo6RXhwb3J0TG9jYWxEZWNsYXJhdGlvbk5vZGU6OkV4cG9ydExvY2FsRGVjbGFyYXRpb25Ob2Rl
KToKKyAgICAgICAgKEpTQzo6RXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGU6OkV4cG9ydE5hbWVk
RGVjbGFyYXRpb25Ob2RlKToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAgICAgKEpT
Qzo6RXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZTo6bG9jYWxOYW1lKToKKyAgICAgICAgKiBw
YXJzZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlNjb3Bl
Tm9kZTo6YW5hbHl6ZU1vZHVsZSk6CisgICAgICAgIChKU0M6OlNvdXJjZUVsZW1lbnRzOjphbmFs
eXplTW9kdWxlKToKKyAgICAgICAgKEpTQzo6SW1wb3J0RGVjbGFyYXRpb25Ob2RlOjphbmFseXpl
TW9kdWxlKToKKyAgICAgICAgKEpTQzo6RXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlOjphbmFseXpl
TW9kdWxlKToKKyAgICAgICAgKEpTQzo6RXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZTo6YW5h
bHl6ZU1vZHVsZSk6CisgICAgICAgIChKU0M6OkV4cG9ydExvY2FsRGVjbGFyYXRpb25Ob2RlOjph
bmFseXplTW9kdWxlKToKKyAgICAgICAgKEpTQzo6RXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGU6
OmFuYWx5emVNb2R1bGUpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcik6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZU1vZHVsZVNvdXJjZUVsZW1lbnRzKToKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFyaWFibGVEZWNsYXJhdGlvbkxpc3QpOgorICAgICAg
ICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6Y3JlYXRlQmluZGluZ1BhdHRlcm4pOgorICAgICAg
ICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAg
ICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3NEZWNsYXJhdGlvbik6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUltcG9ydENsYXVzZUl0ZW0pOgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnRTcGVjaWZpZXIpOgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnREZWNsYXJhdGlvbik6
CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpTY29wZTo6bGV4aWNh
bFZhcmlhYmxlcyk6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlTGV4aWNhbFZhcmlhYmxl
KToKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpkZWNsYXJlVmFyaWFibGUpOgorICAgICAgICAoSlND
OjpQYXJzZXI6OmV4cG9ydE5hbWUpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2UpOgorICAgICAgICAoSlNDOjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlck1v
ZGVzLmg6CisgICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6
U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uKToKKyAgICAgICAg
KiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChKU0M6OlZhcmlhYmxl
RW52aXJvbm1lbnQ6Om1hcmtWYXJpYWJsZUFzSW1wb3J0ZWQpOgorICAgICAgICAoSlNDOjpWYXJp
YWJsZUVudmlyb25tZW50OjptYXJrVmFyaWFibGVBc0V4cG9ydGVkKToKKyAgICAgICAgKiBwYXJz
ZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25t
ZW50RW50cnk6OmlzRXhwb3J0ZWQpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50
RW50cnk6OmlzSW1wb3J0ZWQpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50
cnk6OnNldElzRXhwb3J0ZWQpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50
cnk6OnNldElzSW1wb3J0ZWQpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aDoKKyAgICAgICAgKiBydW50aW1lL0NvbXBsZXRpb24uY3BwOgorICAgICAgICAoSlNDOjpjaGVj
a01vZHVsZVN5bnRheCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6CisKIDIwMTUtMDgt
MTAgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFJlZmFjdG9yIExp
dmVPYmplY3RMaXN0IGFuZCBMaXZlT2JqZWN0RGF0YSBpbnRvIHRoZWlyIG93biBmaWxlcy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAwMDJkMDNiOWMxOWI2ZTA1MDYwZTJi
NzdhMDhiMWY5ZWM3ZGVkNjA0Li45ZTExNDE3YjdmMmIyNzM5NmY3MDM0ZGZiODY2NzM1YTUyYTc4
OTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0zODQsNyArMzg0LDEw
IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgaml0L1RodW5rR2VuZXJhdG9ycy5j
cHAKIAogICAgIHBhcnNlci9MZXhlci5jcHAKKyAgICBwYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3Bw
CisgICAgcGFyc2VyL01vZHVsZVJlY29yZC5jcHAKICAgICBwYXJzZXIvTm9kZXMuY3BwCisgICAg
cGFyc2VyL05vZGVzQW5hbHl6ZU1vZHVsZS5jcHAKICAgICBwYXJzZXIvUGFyc2VyLmNwcAogICAg
IHBhcnNlci9QYXJzZXJBcmVuYS5jcHAKICAgICBwYXJzZXIvU291cmNlQ29kZS5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFT
Y3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDVjNTcyOGI2MWEzYWQzYzUxMzhk
ZTFhZDExZDhmNDVhZDMxNGIyYWMuLjUxZmNhNGI0YzhjODJjYTlhYzRlN2ViYWMzMmQ0NTZjMzFj
OGQzMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNjU4LDcg
KzY1OCwxMCBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cbGx2bVxJbml0aWFsaXplTExW
TVdpbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxsbHZtXExMVk1BUEkuY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFyc2VyXExleGVyLmNwcCIgLz4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhcnNlclxNb2R1bGVBbmFseXplci5jcHAiIC8+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYXJzZXJcTW9kdWxlUmVjb3JkLmNwcCIgLz4KICAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhcnNlclxOb2Rlcy5jcHAiIC8+CisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxwYXJzZXJcTm9kZXNBbmFseXplTW9kdWxlLmNwcCIgLz4KICAgICA8
Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhcnNlclxQYXJzZXIuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccGFyc2VyXFBhcnNlckFyZW5hLmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHBhcnNlclxTb3VyY2VDb2RlLmNwcCIgLz4KQEAgLTE0NDcsNiArMTQ1MCw4
IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxsbHZtXExMVk1IZWFkZXJzLmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcQVNUQnVpbGRlci5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccGFyc2VyXExleGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxwYXJzZXJcTW9kdWxlQW5hbHl6ZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHBhcnNlclxNb2R1bGVSZWNvcmQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXHBhcnNlclxOb2RlQ29uc3RydWN0b3JzLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxwYXJzZXJcTm9kZXMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBh
cnNlclxQYXJzZXIuaCIgLz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZj
eHByb2ouZmlsdGVycwppbmRleCA4NjdkMzMxYjljN2U4NTFiNTNiNjYzODk4OWM4ZDFhMTBmM2Y5
ZjJkLi5hZGQyODllNTNiMmRiYjIxYzFhNDFhYTE0MTMwMzMyNjc1NTE0ODQ5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC00NTMsOSAr
NDUzLDE4IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwYXJzZXJcTGV4ZXIuY3BwIj4K
ICAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxwYXJzZXJcTW9kdWxlQW5hbHl6ZXIuY3BwIj4KKyAgICAgIDxG
aWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxwYXJzZXJcTW9kdWxlUmVjb3JkLmNwcCI+CisgICAgICA8RmlsdGVyPnBhcnNl
cjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
cGFyc2VyXE5vZGVzLmNwcCI+CiAgICAgICA8RmlsdGVyPnBhcnNlcjwvRmlsdGVyPgogICAgIDwv
Q2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGFyc2VyXE5vZGVzQW5hbHl6
ZU1vZHVsZS5jcHAiPgorICAgICAgPEZpbHRlcj5wYXJzZXI8L0ZpbHRlcj4KKyAgICA8L0NsQ29t
cGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBhcnNlclxQYXJzZXIuY3BwIj4KICAg
ICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0yNDgwLDYg
KzI0ODksMTIgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBhcnNlclxMZXhlci5oIj4K
ICAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJzZXJcTW9kdWxlQW5hbHl6ZXIuaCI+CisgICAgICA8Rmls
dGVyPnBhcnNlcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccGFyc2VyXE1vZHVsZVJlY29yZC5oIj4KKyAgICAgIDxGaWx0ZXI+cGFyc2VyPC9G
aWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwYXJz
ZXJcTm9kZUNvbnN0cnVjdG9ycy5oIj4KICAgICAgIDxGaWx0ZXI+cGFyc2VyPC9GaWx0ZXI+CiAg
ICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDZkMTVmYTY4
OGM5NjgwYTMyZGFlOTdkOWZhNzc4ZjRhZWU0MWY2ZTIuLmQxZDNhMGIxNmY1Zjk2ZTIyNjljMjcw
N2MzY2UxN2U2MmEyNjNkMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNjkw
LDYgKzE2OTAsMTEgQEAKIAkJRTMzNjM3QTUxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmpl
Y3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMz
NjM3QTMxQjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwICovOyB9OwogCQlFMzM2
MzdBNjFCNjMyMjAyMDBFRTA4NDAgLyogUmVmbGVjdE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTMzNjM3QTQxQjYzMjIwMjAwRUUwODQwIC8q
IFJlZmxlY3RPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlFMzU0NjIyQjFCNjA2NUQxMDA1NDUzODYgLyogQ29uc3RydWN0QWJpbGl0eS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTM1NDYyMkEx
QjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFiaWxpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzc5NEU3NTFCNzdFQjk3MDA1NTQzQUUg
LyogTW9kdWxlQW5hbHl6ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTM3OTRFNzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNw
cCAqLzsgfTsKKwkJRTM3OTRFNzYxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzc5NEU3NDFC
NzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlFMzk2M0NFRDFCNzNGNzUwMDBFQjRDRTUgLyog
TW9kdWxlUmVjb3JkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMzk2M0NFQjFCNzNGNzUwMDBFQjRDRTUgLyogTW9kdWxlUmVjb3JkLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTM5NjNDRUUxQjczRjc1
MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMzk2M0NFQzFCNzNGNzUwMDBFQjRDRTUgLyogTm9k
ZXNBbmFseXplTW9kdWxlLmNwcCAqLzsgfTsKKwkJRTNDMDlGNTUxQjc5NjkyQTAwRUUzNkEyIC8q
IE1vZHVsZVJlY29yZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFM0MwOUY1NDFCNzk2OTJBMDBFRTM2QTIgLyogTW9kdWxlUmVjb3JkLmNwcCAqLzsg
fTsKIAkJRTNFRjg4NzQxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNFRjg4
NzIxQjY2REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwICovOyB9Owog
CQlFM0VGODg3NTFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNFRjg4NzMxQjY2
REYyMzAwM0YyNkNCIC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFNDlEQzE2QjEyRUYyOTNFMDAxODRB
MUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNDlEQzE1NTEyRUYyNzcyMDAxODRBMUYgLyogU291cmNlUHJv
dmlkZXJDYWNoZS5jcHAgKi87IH07CkBAIC0zNTEyLDYgKzM1MTcsMTEgQEAKIAkJRTMzNjM3QTMx
QjYzMjIwMjAwRUUwODQwIC8qIFJlZmxlY3RPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmVmbGVjdE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUzMzYzN0E0MUI2MzIyMDIwMEVFMDg0MCAvKiBSZWZsZWN0T2JqZWN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlZmxlY3RPYmplY3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTM1NDYyMkExQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVj
dEFiaWxpdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29uc3RydWN0QWJp
bGl0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMzc5NEU3MzFCNzdFQjk3MDA1
NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gTW9kdWxlQW5hbHl6ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFMzc5NEU3NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kdWxlQW5hbHl6ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRTM5NjNDRUIxQjczRjc1MDAwRUI0Q0U1IC8qIE1vZHVsZVJlY29yZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2R1bGVSZWNvcmQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRTM5NjNDRUMxQjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVz
QW5hbHl6ZU1vZHVsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBO
b2Rlc0FuYWx5emVNb2R1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFM0Mw
OUY1NDFCNzk2OTJBMDBFRTM2QTIgLyogTW9kdWxlUmVjb3JkLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZHVsZVJlY29yZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUzRUY4ODcyMUI2NkRGMjMwMDNGMjZDQiAvKiBKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFM0VGODg3
MzFCNjZERjIzMDAzRjI2Q0IgLyogSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0OURDMTQ5MTJFRjI2MUEwMDE4NEExRiAvKiBTb3VyY2VQ
cm92aWRlckNhY2hlSXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTb3Vy
Y2VQcm92aWRlckNhY2hlSXRlbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQy
Miw5ICs0NDMyLDE0IEBACiAJCQkJOTNGMTk4MUEwODI0NUFBRTAwMUU5QUJDIC8qIEtleXdvcmRz
LnRhYmxlICovLAogCQkJCUY2OTJBODY1MDI1NTU5N0QwMUZGNjBGNyAvKiBMZXhlci5jcHAgKi8s
CiAJCQkJRjY5MkE4NjYwMjU1NTk3RDAxRkY2MEY3IC8qIExleGVyLmggKi8sCisJCQkJRTM3OTRF
NzMxQjc3RUI5NzAwNTU0M0FFIC8qIE1vZHVsZUFuYWx5emVyLmNwcCAqLywKKwkJCQlFMzc5NEU3
NDFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuaCAqLywKKwkJCQlFM0MwOUY1NDFC
Nzk2OTJBMDBFRTM2QTIgLyogTW9kdWxlUmVjb3JkLmNwcCAqLywKKwkJCQlFMzk2M0NFQjFCNzNG
NzUwMDBFQjRDRTUgLyogTW9kdWxlUmVjb3JkLmggKi8sCiAJCQkJOTMwREFEMDMwRkIxRUIxQTAw
ODJEMjA1IC8qIE5vZGVDb25zdHJ1Y3RvcnMuaCAqLywKIAkJCQlGNjkyQTg2RDAyNTU1OTdEMDFG
RjYwRjcgLyogTm9kZXMuY3BwICovLAogCQkJCUY2OTJBODZFMDI1NTU5N0QwMUZGNjBGNyAvKiBO
b2Rlcy5oICovLAorCQkJCUUzOTYzQ0VDMUI3M0Y3NTAwMEVCNENFNSAvKiBOb2Rlc0FuYWx5emVN
b2R1bGUuY3BwICovLAogCQkJCTkzRjBCM0E5MDlCQjREQzAwMDY4RkNFMyAvKiBQYXJzZXIuY3Bw
ICovLAogCQkJCTkzRjBCM0FBMDlCQjREQzAwMDY4RkNFMyAvKiBQYXJzZXIuaCAqLywKIAkJCQk5
MzA1MkMzMjBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovLApAQCAtNjE1Mywx
MCArNjE2OCwxMiBAQAogCQkJCTBGRUEwQTExMTcwNTEzREIwMEJCNzIyQyAvKiBGVExPdXRwdXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTlFNzI5NDBCMTkwRjA1MTQwMDFBOTFCNSAvKiBCdW5kbGVQ
YXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ4NTMyQTE4N0RGREVDMDA4M0I2ODcgLyogRlRM
UmVjb3ZlcnlPcGNvZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzNzk0RTc2MUI3N0VCOTcwMDU1
NDNBRSAvKiBNb2R1bGVBbmFseXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2QjFDQzQxODYy
QzQ3ODAwODQ1RDk3IC8qIEZUTFJlZ2lzdGVyQXRPZmZzZXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGQ0VGQUFDMTgwNEMxM0UwMDQ3MkNFNCAvKiBGVExTYXZlUmVzdG9yZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYyNUYxQjIxODE2MzVGMzAwNTIyRjM5IC8qIEZUTFNsb3dQYXRoQ2FsbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTM1NDYyMkIxQjYwNjVEMTAwNTQ1Mzg2IC8qIENvbnN0cnVjdEFi
aWxpdHkuaCBpbiBIZWFkZXJzICovLAorCQkJCUUzOTYzQ0VEMUI3M0Y3NTAwMEVCNENFNSAvKiBN
b2R1bGVSZWNvcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjVGMUI0MTgxNjM1RjMwMDUyMkYz
OSAvKiBGVExTbG93UGF0aENhbGxLZXkuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOUQzMzlCMTgw
M0FEQjcwMDczQzJCQyAvKiBGVExTdGFja01hcHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEw
QTEyMTcwNTEzREIwMEJCNzIyQyAvKiBGVExTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC03MjEy
LDYgKzcyMjksNyBAQAogCQkJCTBGNTVGMEY0MTREMTA2MzkwMEFDNzY0OSAvKiBBYnN0cmFjdFBD
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0N0YzOUJEMTA3RUMzNzYwMDQyN0E0OCAvKiBBcmdM
aXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNkIxQ0M5MTg2NDFERjgwMDg0NUQ5NyAvKiBB
cml0eUNoZWNrRmFpbFJldHVyblRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFMzc5NEU3
NTFCNzdFQjk3MDA1NTQzQUUgLyogTW9kdWxlQW5hbHl6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEY3NDNCQUExNkI4ODI0OTAwOUY5Mjc3IC8qIEFSTTY0RGlzYXNzZW1ibGVyLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTg2RDNCMkMzMTAxNTZCREUwMDI4NjVFNyAvKiBBUk1Bc3NlbWJsZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVDMDI4NTAxNzE3OTVFMjAwMzUxRTM1IC8qIEFSTXY3
RGlzYXNzZW1ibGVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtNzU3Niw2ICs3NTk0LDcgQEAKIAkJ
CQkwRjJCNjZFRDE3QjZCNUFCMDBBN0FFM0YgLyogSlNEYXRhVmlld1Byb3RvdHlwZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjJENERFODE5ODMyREFDMDA3RDRCMTkgLyogVG9UaGlzU3RhdHVz
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZFMzg0RUU1MUFEREI3QUQwMDU1REUyQyAvKiBKU0Rv
bGxhclZNLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUUzQzA5RjU1MUI3OTY5MkEwMEVFMzZBMiAv
KiBNb2R1bGVSZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTc4ODAxNDAxNDcxQUQ5MjAw
NDFCMDE2IC8qIEpTRGF0ZU1hdGguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFMDUwMTcxQUE5
MDkxMTAwRDMzQjMzIC8qIERpcmVjdEFyZ3VtZW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
NDA1NjZENjEwN0VDMjcxMDA1REJDOEQgLyogSlNGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTc4NDMsNiArNzg2Miw3IEBACiAJCQkJODY3MDRCODQxMkRCQTMzNzAwQTlGRTdCIC8qIFlh
cnJJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI4NjEyREJBMzM3MDBB
OUZFN0IgLyogWWFyckpJVC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI4OTEyREJBMzM3
MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTM5NjNDRUUx
QjczRjc1MDAwRUI0Q0U1IC8qIE5vZGVzQW5hbHl6ZU1vZHVsZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4NjcwNEI0MjEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRp
bk5hbWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgK
aW5kZXggNWRjNzE2Y2ZjYmFiMWY0ZDg1MTIzNjNkMTFjZjVkMGRmZjI3NmQ4YS4uY2UwNDQ0Nzlm
NzMwMmYxOWIxZDgxMTY4Zjk5ZWM0ODM1YjQwMjIwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5OYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9CdWlsdGluTmFtZXMuaApAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAKLSNkZWZpbmUgSU5JVElBTElTRV9CVUlMVElOX05BTUVTKG5hbWUpICwg
bV8jI25hbWUoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgI25hbWUpKSwgbV8jI25hbWUjI1By
aXZhdGVOYW1lKElkZW50aWZpZXI6OmZyb21VaWQoUHJpdmF0ZU5hbWUoKSkpCisjZGVmaW5lIElO
SVRJQUxJU0VfQlVJTFRJTl9OQU1FUyhuYW1lKSAsIG1fIyNuYW1lKElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICNuYW1lKSksIG1fIyNuYW1lIyNQcml2YXRlTmFtZShJZGVudGlmaWVyOjpmcm9t
VWlkKFByaXZhdGVOYW1lKFByaXZhdGVOYW1lOjpEZXNjcmlwdGlvbiwgQVNDSUlMaXRlcmFsKCJQ
cml2YXRlU3ltYm9sLiIgI25hbWUpKSkpCiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9OQU1FUyhu
YW1lKSBjb25zdCBJZGVudGlmaWVyIG1fIyNuYW1lOyBjb25zdCBJZGVudGlmaWVyIG1fIyNuYW1l
IyNQcml2YXRlTmFtZTsKICNkZWZpbmUgREVDTEFSRV9CVUlMVElOX0lERU5USUZJRVJfQUNDRVNT
T1IobmFtZSkgXAogICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUjI1B1YmxpY05hbWUoKSBjb25z
dCB7IHJldHVybiBtXyMjbmFtZTsgfSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNU
QnVpbGRlci5oCmluZGV4IGI4ZGZhOTJlYWIzMTBiNjlhYjViYzQ3NjFmYTk3NmZiNWZhNmMyNjIu
LmMxMTk1OTgwYTIwZDM4MDNkNTNhMTdhMjVlZjU0NWJhZTEwZWU1MTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oCkBAIC05Myw3ICs5Myw2IEBAIGNsYXNzIEFT
VEJ1aWxkZXIgewogICAgICAgICBVbmFyeUV4cHJDb250ZXh0KEFTVEJ1aWxkZXImKSB7fQogICAg
IH07CiAKLQogICAgIHR5cGVkZWYgRXhwcmVzc2lvbk5vZGUqIEV4cHJlc3Npb247CiAgICAgdHlw
ZWRlZiBKU0M6OlNvdXJjZUVsZW1lbnRzKiBTb3VyY2VFbGVtZW50czsKICAgICB0eXBlZGVmIEFy
Z3VtZW50c05vZGUqIEFyZ3VtZW50czsKQEAgLTY1MCw5ICs2NDksOSBAQCBjbGFzcyBBU1RCdWls
ZGVyIHsKICAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgRXhwb3J0QWxsRGVjbGFy
YXRpb25Ob2RlKGxvY2F0aW9uLCBtb2R1bGVTcGVjaWZpZXIpOwogICAgIH0KIAotICAgIFN0YXRl
bWVudE5vZGUqIGNyZWF0ZUV4cG9ydERlZmF1bHREZWNsYXJhdGlvbihjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBTdGF0ZW1lbnROb2RlKiBkZWNsYXJhdGlvbikKKyAgICBTdGF0ZW1l
bnROb2RlKiBjcmVhdGVFeHBvcnREZWZhdWx0RGVjbGFyYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgU3RhdGVtZW50Tm9kZSogZGVjbGFyYXRpb24sIGNvbnN0IElkZW50aWZp
ZXImIGxvY2FsTmFtZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEp
IEV4cG9ydERlZmF1bHREZWNsYXJhdGlvbk5vZGUobG9jYXRpb24sIGRlY2xhcmF0aW9uKTsKKyAg
ICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9u
Tm9kZShsb2NhdGlvbiwgZGVjbGFyYXRpb24sIGxvY2FsTmFtZSk7CiAgICAgfQogCiAgICAgU3Rh
dGVtZW50Tm9kZSogY3JlYXRlRXhwb3J0TG9jYWxEZWNsYXJhdGlvbihjb25zdCBKU1Rva2VuTG9j
YXRpb24mIGxvY2F0aW9uLCBTdGF0ZW1lbnROb2RlKiBkZWNsYXJhdGlvbikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTk4
NDI3NWM2MDI1NTY2ZTU1NjA2OTUxN2QwZTAxMTllNjk4ZDU0ZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwCkBAIC0wLDAg
KzEsMTU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1vZHVsZUFuYWx5emVyLmgiCisKKyNpbmNs
dWRlICJJZGVudGlmaWVySW5saW5lcy5oIgorI2luY2x1ZGUgIk1vZHVsZVJlY29yZC5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworCitNb2R1bGVBbmFseXplcjo6TW9kdWxlQW5hbHl6ZXIoVk0mIHZt
LCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcywgY29uc3QgVmFy
aWFibGVFbnZpcm9ubWVudCYgbGV4aWNhbFZhcmlhYmxlcykKKyAgICA6IG1fdm0oJnZtKQorICAg
ICwgbV9tb2R1bGVSZWNvcmQoTW9kdWxlUmVjb3JkOjpjcmVhdGUoKSkKKyAgICAsIG1fZGVjbGFy
ZWRWYXJpYWJsZXMoZGVjbGFyZWRWYXJpYWJsZXMpCisgICAgLCBtX2xleGljYWxWYXJpYWJsZXMo
bGV4aWNhbFZhcmlhYmxlcykKK3sKK30KKworSWRlbnRpZmllciBNb2R1bGVBbmFseXplcjo6ZXhw
b3J0ZWRCaW5kaW5nKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50KQorewor
ICAgIGNvbnN0IGF1dG8gaXRlcmF0b3IgPSBtX2FsaWFzTWFwLmZpbmQoaWRlbnQpOworICAgIGlm
IChpdGVyYXRvciAhPSBtX2FsaWFzTWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gaXRlcmF0b3It
PnZhbHVlOworICAgIHJldHVybiBJZGVudGlmaWVyOjpmcm9tVWlkKCZ2bSgpLCBpZGVudC5nZXQo
KSk7Cit9CisKK3ZvaWQgTW9kdWxlQW5hbHl6ZXI6OmRlY2xhcmVFeHBvcnRBbGlhcyhjb25zdCBJ
ZGVudGlmaWVyJiBsb2NhbE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUpCit7Cisg
ICAgbV9hbGlhc01hcC5hZGQobG9jYWxOYW1lLmltcGwoKSwgZXhwb3J0TmFtZSk7Cit9CisKK3Zv
aWQgTW9kdWxlQW5hbHl6ZXI6OmV4cG9ydFZhcmlhYmxlKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4mIGxvY2FsTmFtZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5JiB2YXJp
YWJsZSkKK3sKKyAgICAvLyBJbiB0aGUgcGFyc2VyLCB3ZSBhbHJlYWR5IG1hcmtlZCB0aGUgdmFy
aWFibGVzIGFzIEV4cG9ydGVkIGFuZCBJbXBvcnRlZC4KKyAgICAvLyBCeSBsZXZlcmFnaW5nIHRo
aXMgaW5mb3JtYXRpb24sIHdlIGNvbGxlY3QgdGhlIGluZm9ybWF0aW9uIHRoYXQgaXMgbmVlZGVk
CisgICAgLy8gdG8gY29uc3RydWN0IHRoZSBtb2R1bGUgZW52aXJvbm1lbnQuCisgICAgLy8KKyAg
ICAvLyBJIEUKKyAgICAvLyAgICogPSBleHBvcnRlZCBtb2R1bGUgbG9jYWwgdmFyaWFibGUKKyAg
ICAvLyAqICAgPSBpbXBvcnRlZCBiaW5kaW5nCisgICAgLy8gICAgID0gbm9uLWV4cG9ydGVkIG1v
ZHVsZSBsb2NhbCB2YXJpYWJsZQorICAgIC8vICogKiA9IGluZGlyZWN0IGV4cG9ydGVkIGJpbmRp
bmcKKyAgICAvLworICAgIC8vIE9uZSBleGNlcHRpb24gaXMgbmFtZXNwYWNlIGJpbmRpbmcgKGxp
a2UgaW1wb3J0ICogYXMgbnMgZnJvbSAibW9kIikuCisgICAgLy8gVGhpcyBpcyBhbm5vdGF0ZWQg
YXMgYW4gaW1wb3J0ZWQsIGJ1dCB0aGUgYWN0dWFsIGJpbmRpbmcgaXMgbG9jYXRlIGluIHRoZQor
ICAgIC8vIGN1cnJlbnQgbW9kdWxlLgorCisgICAgaWYgKCF2YXJpYWJsZS5pc0V4cG9ydGVkKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGNvbnN0IElkZW50aWZpZXIgZXhwb3J0TmFtZSA9IGV4
cG9ydGVkQmluZGluZyhsb2NhbE5hbWUpOworCisgICAgLy8gRXhwb3J0ZWQgbW9kdWxlIGxvY2Fs
IHZhcmlhYmxlLgorICAgIGlmICghdmFyaWFibGUuaXNJbXBvcnRlZCgpKSB7CisgICAgICAgIG1v
ZHVsZVJlY29yZCgpLmFkZEV4cG9ydEVudHJ5KE1vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNy
ZWF0ZUxvY2FsKGV4cG9ydE5hbWUsIElkZW50aWZpZXI6OmZyb21VaWQobV92bSwgbG9jYWxOYW1l
LmdldCgpKSwgdmFyaWFibGUpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnN0
IGF1dG8mIGltcG9ydEVudHJ5ID0gbW9kdWxlUmVjb3JkKCkubG9va1VwSW1wb3J0RW50cnkobG9j
YWxOYW1lKTsKKyAgICBpZiAoaW1wb3J0RW50cnkuaXNOYW1lc3BhY2Uodm0oKSkpIHsKKyAgICAg
ICAgLy8gRXhwb3J0ZWQgbmFtZXNwYWNlIGJpbmRpbmcuCisgICAgICAgIC8vIGltcG9ydCAqIGFz
IG5hbWVzcGFjZSBmcm9tICJtb2QiCisgICAgICAgIC8vIGV4cG9ydCB7IG5hbWVzcGFjZSB9Cisg
ICAgICAgIG1vZHVsZVJlY29yZCgpLmFkZEV4cG9ydEVudHJ5KE1vZHVsZVJlY29yZDo6RXhwb3J0
RW50cnk6OmNyZWF0ZU5hbWVzcGFjZShleHBvcnROYW1lLCBpbXBvcnRFbnRyeS5tb2R1bGVSZXF1
ZXN0KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBJbmRpcmVjdGx5IGV4cG9y
dGVkIGJpbmRpbmcuCisgICAgLy8gaW1wb3J0IGEgZnJvbSAibW9kIgorICAgIC8vIGV4cG9ydCB7
IGEgfQorICAgIG1vZHVsZVJlY29yZCgpLmFkZEV4cG9ydEVudHJ5KE1vZHVsZVJlY29yZDo6RXhw
b3J0RW50cnk6OmNyZWF0ZUluZGlyZWN0KGV4cG9ydE5hbWUsIGltcG9ydEVudHJ5LmltcG9ydE5h
bWUsIGltcG9ydEVudHJ5Lm1vZHVsZVJlcXVlc3QpKTsKK30KKworCisKK1JlZjxNb2R1bGVSZWNv
cmQ+IE1vZHVsZUFuYWx5emVyOjphbmFseXplKE1vZHVsZVByb2dyYW1Ob2RlJiBtb2R1bGVQcm9n
cmFtTm9kZSkKK3sKKyAgICAvLyBUcmF2ZXJzZSB0aGUgbW9kdWxlIEFTVCBhbmQgY29sbGVjdAor
ICAgIC8vIDEuIEltcG9ydCBlbnRyaWVzCisgICAgLy8gMi4gRXhwb3J0IGVudHJpZXMgdGhhdCBo
YXZlIEZyb21DbGF1c2UgKGUuZy4gZXhwb3J0IHsgYSB9IGZyb20gIm1vZCIpCisgICAgLy8gMy4g
RXhwb3J0IGVudHJpZXMgdGhhdCBoYXZlIHN0YXIgKGUuZy4gZXhwb3J0ICogZnJvbSAibW9kIikK
KyAgICAvLyA0LiBBbGlhc2VkIGV4cG9ydCBuYW1lcyAoZS5nLiBleHBvcnQgeyBhIGFzIGIgfSkK
KyAgICBtb2R1bGVQcm9ncmFtTm9kZS5hbmFseXplTW9kdWxlKCp0aGlzKTsKKworICAgIC8vIEJh
c2VkIG9uIHRoZSBjb2xsZWN0ZWQgaW5mb3JtYXRpb24sIGNhdGVnb3JpemUgZXhwb3J0IGVudHJp
ZXMgaW50byAzIHR5cGVzLgorICAgIC8vIDEuIExvY2FsIGV4cG9ydCBlbnRyaWVzCisgICAgLy8g
ICAgIFRoaXMgcmVmZXJlbmNlcyB0aGUgbG9jYWwgdmFyaWFibGUgaW4gdGhlIGN1cnJlbnQgbW9k
dWxlLgorICAgIC8vICAgICBUaGlzIHZhcmlhYmxlIHNob3VsZCBiZSBhbGxvY2F0ZWQgaW4gdGhl
IGN1cnJlbnQgbW9kdWxlIGVudmlyb25tZW50IGFzIGEgaGVhcCB2YXJpYWJsZS4KKyAgICAvLwor
ICAgIC8vICAgICBjb25zdCB2YXJpYWJsZSA9IDIwCisgICAgLy8gICAgIGV4cG9ydCB7IHZhcmlh
YmxlIH0KKyAgICAvLworICAgIC8vIDIuIE5hbWVzcGFjZSBleHBvcnQgZW50cmllcworICAgIC8v
ICAgICBUaGlzIHJlZmVyZW5jZXMgdGhlIG5hbWVzcGFjZSBvYmplY3QgaW1wb3J0ZWQgYnkgc29t
ZSBpbXBvcnQgZW50cmllcy4KKyAgICAvLyAgICAgVGhpcyB2YXJpYWJsZSBpdHNlbGYgc2hvdWxk
IGJlIGFsbG9jYXRlZCBpbiB0aGUgY3VycmVudCBtb2R1bGUgZW52aXJvbm1lbnQgYXMgYSBoZWFw
IHZhcmlhYmxlLgorICAgIC8vICAgICBCdXQgd2hlbiB0aGUgb3RoZXIgbW9kdWxlcyBhdHRlbXB0
IHRvIHJlc29sdmUgdGhpcyBleHBvcnQgbmFtZSBpbiB0aGlzIG1vZHVsZSwgdGhpcyBtb2R1bGUK
KyAgICAvLyAgICAgc2hvdWxkIHRlbGwgdGhlIGxpbmsgdG8gdGhlIG9yaWdpbmFsIG1vZHVsZS4K
KyAgICAvLworICAgIC8vICAgICBpbXBvcnQgKiBhcyBuYW1lc3BhY2UgZnJvbSAibW9kIgorICAg
IC8vICAgICBleHBvcnQgeyBuYW1lc3BhY2UgYXMgbW9kIH0KKyAgICAvLworICAgIC8vIDMuIElu
ZGlyZWN0IGV4cG9ydCBlbnRyaWVzCisgICAgLy8gICAgIFRoaXMgcmVmZXJlbmNlcyB0aGUgaW1w
b3J0ZWQgYmluZGluZyBuYW1lIGZyb20gdGhlIG90aGVyIG1vZHVsZS4KKyAgICAvLyAgICAgVGhp
cyBtb2R1bGUgZW52aXJvbm1lbnQgaXRzZWxmIHNob3VsZCBob2xkIHRoZSBwb2ludGVyIHRvICgx
KSB0aGUgb3JpZ2luYWwgbW9kdWxlIGFuZAorICAgIC8vICAgICAoMikgdGhlIGJpbmRpbmcgaW4g
dGhlIG9yaWdpbmFsIG1vZHVsZS4gVGhlIHZhcmlhYmxlIGl0c2VsZiBpcyBhbGxvY2F0ZWQgaW4g
dGhlIG9yaWdpbmFsCisgICAgLy8gICAgIG1vZHVsZS4gVGhpcyBpbmRpcmVjdCBiaW5kaW5nIGlz
IHJlc29sdmVkIHdoZW4gdGhlIENvZGVCbG9jayByZXNvbHZlcyB0aGUgcmVmZXJlbmNlcy4KKyAg
ICAvLworICAgIC8vICAgICBpbXBvcnQgbW9kIGZyb20gIm1vZCIKKyAgICAvLyAgICAgZXhwb3J0
IHsgbW9kIH0KKyAgICAvLworICAgIC8vICAgICBleHBvcnQgeyBhIH0gZnJvbSAibW9kIgorICAg
IC8vCisgICAgLy8gQW5kIHNlcGFyZXRlZCBmcm9tIHRoZSBhYm92ZSAzIHR5cGVzLCB3ZSBhbHNv
IGNvbGxlY3QgdGhlIHN0YXIgZXhwb3J0IGVudHJpZXMuCisgICAgLy8KKyAgICAvLyA0LiBTdGFy
IGV4cG9ydCBlbnRyaWVzCisgICAgLy8gICAgIFRoaXMgZXhwb3J0cyBhbGwgdGhlIG5hbWVzIGZy
b20gdGhlIHNwZWNpZmllZCBleHRlcm5hbCBtb2R1bGUgYXMgdGhlIGN1cnJlbnQgbW9kdWxlJ3Mg
bmFtZS4KKyAgICAvLworICAgIC8vICAgICBleHBvcnQgKiBmcm9tICJtb2QiCisgICAgZm9yIChj
b25zdCBhdXRvJiBwYWlyIDogbV9kZWNsYXJlZFZhcmlhYmxlcykKKyAgICAgICAgZXhwb3J0VmFy
aWFibGUocGFpci5rZXksIHBhaXIudmFsdWUpOworCisgICAgZm9yIChjb25zdCBhdXRvJiBwYWly
IDogbV9sZXhpY2FsVmFyaWFibGVzKQorICAgICAgICBleHBvcnRWYXJpYWJsZShwYWlyLmtleSwg
cGFpci52YWx1ZSk7CisKKyAgICBpZiAoT3B0aW9uczo6ZHVtcE1vZHVsZVJlY29yZCgpKQorICAg
ICAgICBtX21vZHVsZVJlY29yZC0+ZHVtcCgpOworCisgICAgcmV0dXJuICptX21vZHVsZVJlY29y
ZDsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL01vZHVsZUFuYWx5emVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDI3NjQ4NDc2NTBiMzAyNGZkMmE4YzM3
MjJlNzNhNzQ3Yjk2M2NiNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTW9kdWxlQW5hbHl6ZXIuaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNb2R1bGVBbmFseXplcl9o
CisjZGVmaW5lIE1vZHVsZUFuYWx5emVyX2gKKworI2luY2x1ZGUgIk1vZHVsZVJlY29yZC5oIgor
I2luY2x1ZGUgIk5vZGVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBNb2R1bGVBbmFs
eXplciB7CitwdWJsaWM6CisgICAgTW9kdWxlQW5hbHl6ZXIoVk0mLCBjb25zdCBWYXJpYWJsZUVu
dmlyb25tZW50JiBkZWNsYXJlZFZhcmlhYmxlcywgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYg
bGV4aWNhbFZhcmlhYmxlcyk7CisKKyAgICBSZWY8TW9kdWxlUmVjb3JkPiBhbmFseXplKE1vZHVs
ZVByb2dyYW1Ob2RlJik7CisKKyAgICBWTSYgdm0oKSB7IHJldHVybiAqbV92bTsgfQorCisgICAg
TW9kdWxlUmVjb3JkJiBtb2R1bGVSZWNvcmQoKSB7IHJldHVybiAqbV9tb2R1bGVSZWNvcmQ7IH0K
KworICAgIHZvaWQgZGVjbGFyZUV4cG9ydEFsaWFzKGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFt
ZSwgY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSk7CisKK3ByaXZhdGU6CisgICAgdHlwZWRl
ZiBIYXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIElkZW50aWZpZXIsIElkZW50aWZp
ZXJSZXBIYXNoLCBIYXNoVHJhaXRzPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+PiBJZGVudGlm
aWVyQWxpYXNNYXA7CisKKyAgICB2b2lkIGV4cG9ydFZhcmlhYmxlKGNvbnN0IFJlZlB0cjxVbmlx
dWVkU3RyaW5nSW1wbD4mLCBjb25zdCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkmKTsKKworICAg
IElkZW50aWZpZXIgZXhwb3J0ZWRCaW5kaW5nKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4mIGlkZW50KTsKKworICAgIFZNKiBtX3ZtOworICAgIFJlZlB0cjxNb2R1bGVSZWNvcmQ+IG1f
bW9kdWxlUmVjb3JkOworICAgIFZhcmlhYmxlRW52aXJvbm1lbnQgbV9kZWNsYXJlZFZhcmlhYmxl
czsKKyAgICBWYXJpYWJsZUVudmlyb25tZW50IG1fbGV4aWNhbFZhcmlhYmxlczsKKyAgICBJZGVu
dGlmaWVyQWxpYXNNYXAgbV9hbGlhc01hcDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gTW9kdWxlQW5hbHl6ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Nb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Nb2R1bGVSZWNvcmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVjOTczNTY4YmVjOGEwYjE1MzMzMmY0ODc1
ZjllZmUxMzc4MmVjOGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL01vZHVsZVJlY29yZC5jcHAKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiTW9kdWxlUmVjb3JkLmgiCisKKyNpbmNsdWRlICJJZGVudGlmaWVySW5saW5lcy5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworCithdXRvIE1vZHVsZVJlY29yZDo6RXhwb3J0RW50cnk6OmNy
ZWF0ZUxvY2FsKGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXIm
IGxvY2FsTmFtZSwgY29uc3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5JiB2YXJpYWJsZSkgLT4g
RXhwb3J0RW50cnkKK3sKKyAgICByZXR1cm4gRXhwb3J0RW50cnkgeyBUeXBlOjpMb2NhbCwgZXhw
b3J0TmFtZSwgSWRlbnRpZmllcigpLCBJZGVudGlmaWVyKCksIGxvY2FsTmFtZSwgdmFyaWFibGUg
fTsKK30KKworYXV0byBNb2R1bGVSZWNvcmQ6OkV4cG9ydEVudHJ5OjpjcmVhdGVOYW1lc3BhY2Uo
Y29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFt
ZSkgLT4gRXhwb3J0RW50cnkKK3sKKyAgICByZXR1cm4gRXhwb3J0RW50cnkgeyBUeXBlOjpOYW1l
c3BhY2UsIGV4cG9ydE5hbWUsIG1vZHVsZU5hbWUsIElkZW50aWZpZXIoKSwgSWRlbnRpZmllcigp
LCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKSB9OworfQorCithdXRvIE1vZHVsZVJlY29yZDo6
RXhwb3J0RW50cnk6OmNyZWF0ZUluZGlyZWN0KGNvbnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUs
IGNvbnN0IElkZW50aWZpZXImIGltcG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5h
bWUpIC0+IEV4cG9ydEVudHJ5Cit7CisgICAgcmV0dXJuIEV4cG9ydEVudHJ5IHsgVHlwZTo6SW5k
aXJlY3QsIGV4cG9ydE5hbWUsIG1vZHVsZU5hbWUsIGltcG9ydE5hbWUsIElkZW50aWZpZXIoKSwg
VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCkgfTsKK30KKworc3RhdGljIFN0cmluZyBwcmludGFi
bGVOYW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIHVpZCkKK3sKKyAgICBpZiAo
dWlkLT5pc1N5bWJvbCgpKQorICAgICAgICByZXR1cm4gdWlkLmdldCgpOworICAgIHJldHVybiBX
VEY6Om1ha2VTdHJpbmcoIiciLCBTdHJpbmcodWlkLmdldCgpKSwgIiciKTsKK30KKworc3RhdGlj
IFN0cmluZyBwcmludGFibGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQoreworICAgIHJl
dHVybiBwcmludGFibGVOYW1lKGlkZW50LmltcGwoKSk7Cit9CisKKwordm9pZCBNb2R1bGVSZWNv
cmQ6OmR1bXAoKQoreworICAgIGRhdGFMb2coIlxuQW5hbHl6aW5nIE1vZHVsZVJlY29yZFxuIik7
CisKKyAgICBkYXRhTG9nKCIgICAgRGVwZW5kZW5jaWVzOiAiLCBtX3JlcXVlc3RlZE1vZHVsZXMu
c2l6ZSgpLCAiIG1vZHVsZXNcbiIpOworICAgIGZvciAoY29uc3QgYXV0byYgbW9kdWxlTmFtZSA6
IG1fcmVxdWVzdGVkTW9kdWxlcykKKyAgICAgICAgZGF0YUxvZygiICAgICAgbW9kdWxlKCIsIHBy
aW50YWJsZU5hbWUobW9kdWxlTmFtZSksICIpXG4iKTsKKworICAgIGRhdGFMb2coIiAgICBJbXBv
cnQ6ICIsIG1faW1wb3J0RW50cmllcy5zaXplKCksICIgZW50cmllc1xuIik7CisgICAgZm9yIChj
b25zdCBhdXRvJiBwYWlyIDogbV9pbXBvcnRFbnRyaWVzKQorICAgICAgICBkYXRhTG9nKCIgICAg
ICBpbXBvcnQoIiwgcHJpbnRhYmxlTmFtZShwYWlyLnZhbHVlLmltcG9ydE5hbWUpLCAiKSwgbG9j
YWwoIiwgcHJpbnRhYmxlTmFtZShwYWlyLnZhbHVlLmxvY2FsTmFtZSksICIpLCBtb2R1bGUoIiwg
cHJpbnRhYmxlTmFtZShwYWlyLnZhbHVlLm1vZHVsZVJlcXVlc3QpLCAiKVxuIik7CisKKyAgICBk
YXRhTG9nKCIgICAgRXhwb3J0OiAiLCBtX2V4cG9ydEVudHJpZXMuc2l6ZSgpLCAiIGVudHJpZXNc
biIpOworICAgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IG1fZXhwb3J0RW50cmllcykgeworICAg
ICAgICBjb25zdCBFeHBvcnRFbnRyeSYgZW50cnkgPSBwYWlyLnZhbHVlOworICAgICAgICBzd2l0
Y2ggKGVudHJ5LnR5cGUpIHsKKyAgICAgICAgY2FzZSBFeHBvcnRFbnRyeTo6VHlwZTo6TG9jYWw6
CisgICAgICAgICAgICBkYXRhTG9nKCIgICAgICBbTG9jYWxdICIsICJleHBvcnQoIiwgcHJpbnRh
YmxlTmFtZShlbnRyeS5leHBvcnROYW1lKSwgIiksIGxvY2FsKCIsIHByaW50YWJsZU5hbWUoZW50
cnkubG9jYWxOYW1lKSwgIilcbiIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2Fz
ZSBFeHBvcnRFbnRyeTo6VHlwZTo6TmFtZXNwYWNlOgorICAgICAgICAgICAgZGF0YUxvZygiICAg
ICAgW05hbWVzcGFjZV0gIiwgImV4cG9ydCgiLCBwcmludGFibGVOYW1lKGVudHJ5LmV4cG9ydE5h
bWUpLCAiKSwgbW9kdWxlKCIsIHByaW50YWJsZU5hbWUoZW50cnkubW9kdWxlTmFtZSksICIpXG4i
KTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgRXhwb3J0RW50cnk6OlR5cGU6
OkluZGlyZWN0OgorICAgICAgICAgICAgZGF0YUxvZygiICAgICAgW0luZGlyZWN0XSAiLCAiZXhw
b3J0KCIsIHByaW50YWJsZU5hbWUoZW50cnkuZXhwb3J0TmFtZSksICIpLCBpbXBvcnQoIiwgcHJp
bnRhYmxlTmFtZShlbnRyeS5pbXBvcnROYW1lKSwgIiksIG1vZHVsZSgiLCBwcmludGFibGVOYW1l
KGVudHJ5Lm1vZHVsZU5hbWUpLCAiKVxuIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgIH0KKyAgICBmb3IgKGNvbnN0IGF1dG8mIG1vZHVsZU5hbWUgOiBtX3N0YXJFeHBvcnRF
bnRyaWVzKQorICAgICAgICBkYXRhTG9nKCIgICAgICBbU3Rhcl0gbW9kdWxlKCIsIHByaW50YWJs
ZU5hbWUobW9kdWxlTmFtZS5nZXQoKSksICIpXG4iKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZVJlY29yZC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVSZWNvcmQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lZjA4MWMwM2IwYTViZGU2ZjE1NTYyOWRmM2Y1MDZjYWYzY2IxNzE0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVSZWNvcmQuaApAQCAtMCww
ICsxLDEyOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgTW9kdWxlUmVjb3JkX2gKKyNkZWZpbmUgTW9kdWxlUmVjb3JkX2gKKworI2luY2x1
ZGUgIk5vZGVzLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTGlz
dEhhc2hTZXQuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKy8vIEJhc2VkIG9uIHRoZSBTb3VyY2Ug
VGV4dCBNb2R1bGUgUmVjb3JkCisvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcv
ZWNtYS0yNjIvNi4wLyNzZWMtc291cmNlLXRleHQtbW9kdWxlLXJlY29yZHMKK2NsYXNzIE1vZHVs
ZVJlY29yZCA6IHB1YmxpYyBSZWZDb3VudGVkPE1vZHVsZVJlY29yZD4geworcHVibGljOgorICAg
IHN0cnVjdCBFeHBvcnRFbnRyeSB7CisgICAgICAgIGVudW0gY2xhc3MgVHlwZSB7CisgICAgICAg
ICAgICBMb2NhbCwKKyAgICAgICAgICAgIE5hbWVzcGFjZSwKKyAgICAgICAgICAgIEluZGlyZWN0
CisgICAgICAgIH07CisKKyAgICAgICAgc3RhdGljIEV4cG9ydEVudHJ5IGNyZWF0ZUxvY2FsKGNv
bnN0IElkZW50aWZpZXImIGV4cG9ydE5hbWUsIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSwg
Y29uc3QgVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5Jik7CisgICAgICAgIHN0YXRpYyBFeHBvcnRF
bnRyeSBjcmVhdGVOYW1lc3BhY2UoY29uc3QgSWRlbnRpZmllciYgZXhwb3J0TmFtZSwgY29uc3Qg
SWRlbnRpZmllciYgbW9kdWxlTmFtZSk7CisgICAgICAgIHN0YXRpYyBFeHBvcnRFbnRyeSBjcmVh
dGVJbmRpcmVjdChjb25zdCBJZGVudGlmaWVyJiBleHBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVy
JiBpbXBvcnROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKTsKKworICAgICAgICBU
eXBlIHR5cGU7CisgICAgICAgIElkZW50aWZpZXIgZXhwb3J0TmFtZTsKKyAgICAgICAgSWRlbnRp
ZmllciBtb2R1bGVOYW1lOworICAgICAgICBJZGVudGlmaWVyIGltcG9ydE5hbWU7CisgICAgICAg
IElkZW50aWZpZXIgbG9jYWxOYW1lOworICAgICAgICBWYXJpYWJsZUVudmlyb25tZW50RW50cnkg
dmFyaWFibGU7CisgICAgfTsKKworICAgIHN0cnVjdCBJbXBvcnRFbnRyeSB7CisgICAgICAgIElk
ZW50aWZpZXIgbW9kdWxlUmVxdWVzdDsKKyAgICAgICAgSWRlbnRpZmllciBpbXBvcnROYW1lOwor
ICAgICAgICBJZGVudGlmaWVyIGxvY2FsTmFtZTsKKworICAgICAgICBib29sIGlzTmFtZXNwYWNl
KFZNJiB2bSkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGltcG9ydE5hbWUg
PT0gdm0ucHJvcGVydHlOYW1lcy0+dGltZXNJZGVudGlmaWVyOworICAgICAgICB9CisgICAgfTsK
KworICAgIHR5cGVkZWYgV1RGOjpMaXN0SGFzaFNldDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+
LCBJZGVudGlmaWVyUmVwSGFzaD4gT3JkZXJlZElkZW50aWZpZXJTZXQ7CisgICAgdHlwZWRlZiBI
YXNoTWFwPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4sIEltcG9ydEVudHJ5LCBJZGVudGlmaWVy
UmVwSGFzaCwgSGFzaFRyYWl0czxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+Pj4gSW1wb3J0TWFw
OworICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+LCBFeHBvcnRF
bnRyeSwgSWRlbnRpZmllclJlcEhhc2gsIEhhc2hUcmFpdHM8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJ
bXBsPj4+IEV4cG9ydE1hcDsKKworICAgIHN0YXRpYyBSZWY8TW9kdWxlUmVjb3JkPiBjcmVhdGUo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgTW9kdWxlUmVjb3JkKTsKKyAg
ICB9CisKKyAgICB2b2lkIGFwcGVuZFJlcXVlc3RlZE1vZHVsZShjb25zdCBJZGVudGlmaWVyJik7
CisgICAgdm9pZCBhZGRTdGFyRXhwb3J0RW50cnkoY29uc3QgSWRlbnRpZmllciYpOworICAgIHZv
aWQgYWRkSW1wb3J0RW50cnkoY29uc3QgSW1wb3J0RW50cnkmKTsKKyAgICB2b2lkIGFkZEV4cG9y
dEVudHJ5KGNvbnN0IEV4cG9ydEVudHJ5Jik7CisKKyAgICBjb25zdCBJbXBvcnRFbnRyeSYgbG9v
a1VwSW1wb3J0RW50cnkoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1l
KTsKKworICAgIHZvaWQgZHVtcCgpOworCitwcml2YXRlOgorICAgIC8vIE1hcCBsb2NhbE5hbWUg
LT4gSW1wb3J0RW50cnkuCisgICAgSW1wb3J0TWFwIG1faW1wb3J0RW50cmllczsKKworICAgIC8v
IE1hcCBleHBvcnROYW1lIC0+IEV4cG9ydEVudHJ5LgorICAgIEV4cG9ydE1hcCBtX2V4cG9ydEVu
dHJpZXM7CisKKyAgICBJZGVudGlmaWVyU2V0IG1fc3RhckV4cG9ydEVudHJpZXM7CisKKyAgICAv
LyBTYXZlIHRoZSBvY2N1cnJlbmNlIG9yZGVyIHNpbmNlIHRoZSBtb2R1bGUgbG9hZGVyIGxvYWRz
IGFuZCBydW5zIHRoZSBtb2R1bGVzIGluIHRoaXMgb3JkZXIuCisgICAgLy8gaHR0cDovL3d3dy5l
Y21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZWV2YWx1YXRpb24K
KyAgICBPcmRlcmVkSWRlbnRpZmllclNldCBtX3JlcXVlc3RlZE1vZHVsZXM7Cit9OworCitpbmxp
bmUgdm9pZCBNb2R1bGVSZWNvcmQ6OmFwcGVuZFJlcXVlc3RlZE1vZHVsZShjb25zdCBJZGVudGlm
aWVyJiBtb2R1bGVOYW1lKQoreworICAgIG1fcmVxdWVzdGVkTW9kdWxlcy5hZGQobW9kdWxlTmFt
ZS5pbXBsKCkpOworfQorCitpbmxpbmUgdm9pZCBNb2R1bGVSZWNvcmQ6OmFkZEltcG9ydEVudHJ5
KGNvbnN0IEltcG9ydEVudHJ5JiBlbnRyeSkKK3sKKyAgICBtX2ltcG9ydEVudHJpZXMuYWRkKGVu
dHJ5LmxvY2FsTmFtZS5pbXBsKCksIGVudHJ5KTsKK30KKworaW5saW5lIHZvaWQgTW9kdWxlUmVj
b3JkOjphZGRFeHBvcnRFbnRyeShjb25zdCBFeHBvcnRFbnRyeSYgZW50cnkpCit7CisgICAgbV9l
eHBvcnRFbnRyaWVzLmFkZChlbnRyeS5leHBvcnROYW1lLmltcGwoKSwgZW50cnkpOworfQorCitp
bmxpbmUgdm9pZCBNb2R1bGVSZWNvcmQ6OmFkZFN0YXJFeHBvcnRFbnRyeShjb25zdCBJZGVudGlm
aWVyJiBtb2R1bGVOYW1lKQoreworICAgIG1fc3RhckV4cG9ydEVudHJpZXMuYWRkKG1vZHVsZU5h
bWUuaW1wbCgpKTsKK30KKworaW5saW5lIGF1dG8gTW9kdWxlUmVjb3JkOjpsb29rVXBJbXBvcnRF
bnRyeShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBsb2NhbE5hbWUpIC0+IGNvbnN0
IEltcG9ydEVudHJ5JgoreworICAgIHJldHVybiAoKm1faW1wb3J0RW50cmllcy5maW5kKGxvY2Fs
TmFtZSkpLnZhbHVlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIE1vZHVs
ZVJlY29yZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVD
b25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVj
dG9ycy5oCmluZGV4IGIxOGMzNDM2ODZjOGM1YWZiODI1ZGM1MTM1ZjM0NjZkNjUxOTcyMzAuLjA0
NTEwYmU1OTczZGQ5NDBiOWNkNjdjZWNhYjNiMzdjYjI0NmJlNmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCkBAIC03MzMsNiArNzMzLDEx
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKKyAgICBpbmxpbmUgTW9kdWxlRGVj
bGFyYXRpb25Ob2RlOjpNb2R1bGVEZWNsYXJhdGlvbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBsb2NhdGlvbikKKyAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQorICAgIHsKKyAg
ICB9CisKICAgICBpbmxpbmUgTW9kdWxlU3BlY2lmaWVyTm9kZTo6TW9kdWxlU3BlY2lmaWVyTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1
bGVOYW1lKQogICAgICAgICA6IE5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9tb2R1bGVOYW1l
KG1vZHVsZU5hbWUpCkBAIC03NDcsMzIgKzc1MiwzMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9
CiAKICAgICBpbmxpbmUgSW1wb3J0RGVjbGFyYXRpb25Ob2RlOjpJbXBvcnREZWNsYXJhdGlvbk5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgSW1wb3J0U3BlY2lmaWVyTGlzdE5v
ZGUqIGltcG9ydFNwZWNpZmllckxpc3QsIE1vZHVsZVNwZWNpZmllck5vZGUqIG1vZHVsZVNwZWNp
ZmllcikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQorICAgICAgICA6IE1vZHVs
ZURlY2xhcmF0aW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX3NwZWNpZmllckxpc3QoaW1w
b3J0U3BlY2lmaWVyTGlzdCkKICAgICAgICAgLCBtX21vZHVsZVNwZWNpZmllcihtb2R1bGVTcGVj
aWZpZXIpCiAgICAgewogICAgIH0KIAogICAgIGlubGluZSBFeHBvcnRBbGxEZWNsYXJhdGlvbk5v
ZGU6OkV4cG9ydEFsbERlY2xhcmF0aW9uTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBNb2R1bGVTcGVjaWZpZXJOb2RlKiBtb2R1bGVTcGVjaWZpZXIpCi0gICAgICAgIDogU3Rh
dGVtZW50Tm9kZShsb2NhdGlvbikKKyAgICAgICAgOiBNb2R1bGVEZWNsYXJhdGlvbk5vZGUobG9j
YXRpb24pCiAgICAgICAgICwgbV9tb2R1bGVTcGVjaWZpZXIobW9kdWxlU3BlY2lmaWVyKQogICAg
IHsKICAgICB9CiAKLSAgICBpbmxpbmUgRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZTo6RXhw
b3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9u
LCBTdGF0ZW1lbnROb2RlKiBkZWNsYXJhdGlvbikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxv
Y2F0aW9uKQorICAgIGlubGluZSBFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25Ob2RlOjpFeHBvcnRE
ZWZhdWx0RGVjbGFyYXRpb25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIFN0
YXRlbWVudE5vZGUqIGRlY2xhcmF0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUpCisg
ICAgICAgIDogTW9kdWxlRGVjbGFyYXRpb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fZGVj
bGFyYXRpb24oZGVjbGFyYXRpb24pCisgICAgICAgICwgbV9sb2NhbE5hbWUobG9jYWxOYW1lKQog
ICAgIHsKICAgICB9CiAKICAgICBpbmxpbmUgRXhwb3J0TG9jYWxEZWNsYXJhdGlvbk5vZGU6OkV4
cG9ydExvY2FsRGVjbGFyYXRpb25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IFN0YXRlbWVudE5vZGUqIGRlY2xhcmF0aW9uKQotICAgICAgICA6IFN0YXRlbWVudE5vZGUobG9j
YXRpb24pCisgICAgICAgIDogTW9kdWxlRGVjbGFyYXRpb25Ob2RlKGxvY2F0aW9uKQogICAgICAg
ICAsIG1fZGVjbGFyYXRpb24oZGVjbGFyYXRpb24pCiAgICAgewogICAgIH0KIAogICAgIGlubGlu
ZSBFeHBvcnROYW1lZERlY2xhcmF0aW9uTm9kZTo6RXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwb3J0U3BlY2lmaWVyTGlzdE5vZGUq
IGV4cG9ydFNwZWNpZmllckxpc3QsIE1vZHVsZVNwZWNpZmllck5vZGUqIG1vZHVsZVNwZWNpZmll
cikKLSAgICAgICAgOiBTdGF0ZW1lbnROb2RlKGxvY2F0aW9uKQorICAgICAgICA6IE1vZHVsZURl
Y2xhcmF0aW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX3NwZWNpZmllckxpc3QoZXhwb3J0
U3BlY2lmaWVyTGlzdCkKICAgICAgICAgLCBtX21vZHVsZVNwZWNpZmllcihtb2R1bGVTcGVjaWZp
ZXIpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IDUyODRjOWE3
YjJkNTQ3Y2JjY2Q2NjI4MDVjNmU5ZGVmNjU5NzkwY2IuLjA0NzRmMjIwMjc1NmY1ZGU5YTk4ZWY0
NjhlNmVmOTYxMzIzMzc0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAg
LTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgUmVnaXN0ZXJJRDsKICAg
ICBjbGFzcyBKU1Njb3BlOwogICAgIGNsYXNzIFNjb3BlTm9kZTsKKyAgICBjbGFzcyBNb2R1bGVB
bmFseXplcjsKIAogICAgIGVudW0gT3BlcmF0b3IgewogICAgICAgICBPcEVxdWFsLApAQCAtMTI3
Niw2ICsxMjc3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIGxh
c3RTdGF0ZW1lbnQoKSBjb25zdDsKIAogICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9uKTsKKyAgICAgICAgdm9pZCBhbmFs
eXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBTdGF0
ZW1lbnROb2RlKiBtX2hlYWQ7CkBAIC0xNTc0LDYgKzE1NzYsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgCiAgICAgICAgIHZvaWQgc2V0Q2xvc2VkVmFyaWFibGVzKFZlY3RvcjxSZWZQdHI8
VW5pcXVlZFN0cmluZ0ltcGw+PiYmKSB7IH0KIAorICAgICAgICB2b2lkIGFuYWx5emVNb2R1bGUo
TW9kdWxlQW5hbHl6ZXImKTsKKwogICAgIHByb3RlY3RlZDoKICAgICAgICAgaW50IG1fc3RhcnRM
aW5lTnVtYmVyOwogICAgICAgICB1bnNpZ25lZCBtX3N0YXJ0U3RhcnRPZmZzZXQ7CkBAIC0xNjcz
LDcgKzE2NzcsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFNwZWNpZmllcnMgbV9zcGVj
aWZpZXJzOwogICAgIH07CiAKLSAgICBjbGFzcyBJbXBvcnREZWNsYXJhdGlvbk5vZGUgOiBwdWJs
aWMgU3RhdGVtZW50Tm9kZSB7CisgICAgY2xhc3MgTW9kdWxlRGVjbGFyYXRpb25Ob2RlIDogcHVi
bGljIFN0YXRlbWVudE5vZGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB2b2lkIGFu
YWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImKSA9IDA7CisKKyAgICBwcm90ZWN0ZWQ6CisgICAg
ICAgIE1vZHVsZURlY2xhcmF0aW9uTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mKTsKKyAgICB9
OworCisgICAgY2xhc3MgSW1wb3J0RGVjbGFyYXRpb25Ob2RlIDogcHVibGljIE1vZHVsZURlY2xh
cmF0aW9uTm9kZSB7CiAgICAgcHVibGljOgogICAgICAgICBJbXBvcnREZWNsYXJhdGlvbk5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgSW1wb3J0U3BlY2lmaWVyTGlzdE5vZGUqLCBNb2R1bGVT
cGVjaWZpZXJOb2RlKik7CiAKQEAgLTE2ODIsMTIgKzE2OTQsMTMgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImKSBvdmVycmlkZTsKIAogICAgICAg
ICBJbXBvcnRTcGVjaWZpZXJMaXN0Tm9kZSogbV9zcGVjaWZpZXJMaXN0OwogICAgICAgICBNb2R1
bGVTcGVjaWZpZXJOb2RlKiBtX21vZHVsZVNwZWNpZmllcjsKICAgICB9OwogCi0gICAgY2xhc3Mg
RXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgeworICAgIGNs
YXNzIEV4cG9ydEFsbERlY2xhcmF0aW9uTm9kZSA6IHB1YmxpYyBNb2R1bGVEZWNsYXJhdGlvbk5v
ZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgRXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIE1vZHVsZVNwZWNpZmllck5vZGUqKTsKIApAQCAtMTY5NSwyMSAr
MTcwOCwyNiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
IG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgYW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFs
eXplciYpIG92ZXJyaWRlOworCiAgICAgICAgIE1vZHVsZVNwZWNpZmllck5vZGUqIG1fbW9kdWxl
U3BlY2lmaWVyOwogICAgIH07CiAKLSAgICBjbGFzcyBFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25O
b2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgeworICAgIGNsYXNzIEV4cG9ydERlZmF1bHREZWNs
YXJhdGlvbk5vZGUgOiBwdWJsaWMgTW9kdWxlRGVjbGFyYXRpb25Ob2RlIHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIEV4cG9ydERlZmF1bHREZWNsYXJhdGlvbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgU3RhdGVtZW50Tm9kZSopOworICAgICAgICBFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25O
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFN0YXRlbWVudE5vZGUqLCBjb25zdCBJZGVudGlm
aWVyJiBsb2NhbE5hbWUpOwogCiAgICAgICAgIGNvbnN0IFN0YXRlbWVudE5vZGUmIGRlY2xhcmF0
aW9uKCkgY29uc3QgeyByZXR1cm4gKm1fZGVjbGFyYXRpb247IH0KKyAgICAgICAgY29uc3QgSWRl
bnRpZmllciYgbG9jYWxOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbE5hbWU7IH0KIAogICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQg
YW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYpIG92ZXJyaWRlOwogICAgICAgICBTdGF0ZW1l
bnROb2RlKiBtX2RlY2xhcmF0aW9uOworICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2xvY2Fs
TmFtZTsKICAgICB9OwogCi0gICAgY2xhc3MgRXhwb3J0TG9jYWxEZWNsYXJhdGlvbk5vZGUgOiBw
dWJsaWMgU3RhdGVtZW50Tm9kZSB7CisgICAgY2xhc3MgRXhwb3J0TG9jYWxEZWNsYXJhdGlvbk5v
ZGUgOiBwdWJsaWMgTW9kdWxlRGVjbGFyYXRpb25Ob2RlIHsKICAgICBwdWJsaWM6CiAgICAgICAg
IEV4cG9ydExvY2FsRGVjbGFyYXRpb25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFN0YXRl
bWVudE5vZGUqKTsKIApAQCAtMTcxNyw2ICsxNzM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImKSBvdmVycmlkZTsKICAgICAgICAgU3RhdGVt
ZW50Tm9kZSogbV9kZWNsYXJhdGlvbjsKICAgICB9OwogCkBAIC0xNzQ2LDcgKzE3NjUsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3BlY2lmaWVycyBtX3NwZWNpZmllcnM7CiAgICAgfTsK
IAotICAgIGNsYXNzIEV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlIDogcHVibGljIFN0YXRlbWVu
dE5vZGUgeworICAgIGNsYXNzIEV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlIDogcHVibGljIE1v
ZHVsZURlY2xhcmF0aW9uTm9kZSB7CiAgICAgcHVibGljOgogICAgICAgICBFeHBvcnROYW1lZERl
Y2xhcmF0aW9uTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBvcnRTcGVjaWZpZXJMaXN0
Tm9kZSosIE1vZHVsZVNwZWNpZmllck5vZGUqKTsKIApAQCAtMTc1NSw2ICsxNzc0LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImKSBvdmVycmlk
ZTsKICAgICAgICAgRXhwb3J0U3BlY2lmaWVyTGlzdE5vZGUqIG1fc3BlY2lmaWVyTGlzdDsKICAg
ICAgICAgTW9kdWxlU3BlY2lmaWVyTm9kZSogbV9tb2R1bGVTcGVjaWZpZXIgeyBudWxscHRyIH07
CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXNB
bmFseXplTW9kdWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXNBbmFs
eXplTW9kdWxlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41OTczZmI0YzI1ODlkNjVlNjNlYmYzZDFjMGZlZWQw
MTg0NDlkMWIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlc0FuYWx5emVNb2R1bGUuY3BwCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiTm9kZXMuaCIKKyNpbmNsdWRlICJOb2RlQ29uc3RydWN0b3JzLmgiCisKKyNpbmNsdWRl
ICJNb2R1bGVBbmFseXplci5oIgorI2luY2x1ZGUgIk1vZHVsZVJlY29yZC5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKwordm9pZCBTY29wZU5vZGU6OmFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXIm
IGFuYWx5emVyKQoreworICAgIG1fc3RhdGVtZW50cy0+YW5hbHl6ZU1vZHVsZShhbmFseXplcik7
Cit9CisKK3ZvaWQgU291cmNlRWxlbWVudHM6OmFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXIm
IGFuYWx5emVyKQoreworICAgIC8vIEluIHRoZSBtb2R1bGUgYW5hbHl6ZXIgcGhhc2UsIG9ubHkg
bW9kdWxlIGRlY2xhcmF0aW9ucyBhcmUgaW5jbHVkZWQgaW4gdGhlIHRvcC1sZXZlbCBTb3VyY2VF
bGVtZW50cy4KKyAgICBmb3IgKFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudCA9IG1faGVhZDsgc3Rh
dGVtZW50OyBzdGF0ZW1lbnQgPSBzdGF0ZW1lbnQtPm5leHQoKSkKKyAgICAgICAgc3RhdGljX2Nh
c3Q8TW9kdWxlRGVjbGFyYXRpb25Ob2RlKj4oc3RhdGVtZW50KS0+YW5hbHl6ZU1vZHVsZShhbmFs
eXplcik7Cit9CisKK3ZvaWQgSW1wb3J0RGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKE1v
ZHVsZUFuYWx5emVyJiBhbmFseXplcikKK3sKKyAgICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS5h
cHBlbmRSZXF1ZXN0ZWRNb2R1bGUobV9tb2R1bGVTcGVjaWZpZXItPm1vZHVsZU5hbWUoKSk7Cisg
ICAgZm9yIChhdXRvKiBzcGVjaWZpZXIgOiBtX3NwZWNpZmllckxpc3QtPnNwZWNpZmllcnMoKSkg
eworICAgICAgICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS5hZGRJbXBvcnRFbnRyeSh7CisgICAg
ICAgICAgICBtX21vZHVsZVNwZWNpZmllci0+bW9kdWxlTmFtZSgpLAorICAgICAgICAgICAgc3Bl
Y2lmaWVyLT5pbXBvcnRlZE5hbWUoKSwKKyAgICAgICAgICAgIHNwZWNpZmllci0+bG9jYWxOYW1l
KCkKKyAgICAgICAgfSk7CisgICAgfQorfQorCit2b2lkIEV4cG9ydEFsbERlY2xhcmF0aW9uTm9k
ZTo6YW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYgYW5hbHl6ZXIpCit7CisgICAgYW5hbHl6
ZXIubW9kdWxlUmVjb3JkKCkuYXBwZW5kUmVxdWVzdGVkTW9kdWxlKG1fbW9kdWxlU3BlY2lmaWVy
LT5tb2R1bGVOYW1lKCkpOworICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLmFkZFN0YXJFeHBv
cnRFbnRyeShtX21vZHVsZVNwZWNpZmllci0+bW9kdWxlTmFtZSgpKTsKK30KKwordm9pZCBFeHBv
cnREZWZhdWx0RGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJiBh
bmFseXplcikKK3sKKyAgICBhbmFseXplci5kZWNsYXJlRXhwb3J0QWxpYXMobV9sb2NhbE5hbWUs
IGFuYWx5emVyLnZtKCkucHJvcGVydHlOYW1lcy0+ZGVmYXVsdEtleXdvcmQpOworfQorCit2b2lk
IEV4cG9ydExvY2FsRGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVy
JikKK3sKK30KKwordm9pZCBFeHBvcnROYW1lZERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVs
ZShNb2R1bGVBbmFseXplciYgYW5hbHl6ZXIpCit7CisgICAgaWYgKG1fbW9kdWxlU3BlY2lmaWVy
KQorICAgICAgICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS5hcHBlbmRSZXF1ZXN0ZWRNb2R1bGUo
bV9tb2R1bGVTcGVjaWZpZXItPm1vZHVsZU5hbWUoKSk7CisKKyAgICBmb3IgKGF1dG8qIHNwZWNp
ZmllciA6IG1fc3BlY2lmaWVyTGlzdC0+c3BlY2lmaWVycygpKSB7CisgICAgICAgIGlmIChtX21v
ZHVsZVNwZWNpZmllcikgeworICAgICAgICAgICAgLy8gZXhwb3J0IHsgdiB9IGZyb20gIm1vZCIK
KyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2UsIG5vIGxvY2FsIHZh
cmlhYmxlIG5hbWVzIGFyZSBpbXBvcnRlZCBpbnRvIHRoZSBjdXJyZW50IG1vZHVsZS4KKyAgICAg
ICAgICAgIC8vICJ2IiBpbmRpcmVjdGx5IHBvaW50cyB0aGUgYmluZGluZyBpbiAibW9kIi4KKyAg
ICAgICAgICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLmFkZEV4cG9ydEVudHJ5KE1vZHVsZVJl
Y29yZDo6RXhwb3J0RW50cnk6OmNyZWF0ZUluZGlyZWN0KHNwZWNpZmllci0+ZXhwb3J0ZWROYW1l
KCksIHNwZWNpZmllci0+bG9jYWxOYW1lKCksIG1fbW9kdWxlU3BlY2lmaWVyLT5tb2R1bGVOYW1l
KCkpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNw
ZWNpZmllci0+bG9jYWxOYW1lKCkgIT0gc3BlY2lmaWVyLT5leHBvcnRlZE5hbWUoKSkKKyAgICAg
ICAgICAgIGFuYWx5emVyLmRlY2xhcmVFeHBvcnRBbGlhcyhzcGVjaWZpZXItPmxvY2FsTmFtZSgp
LCBzcGVjaWZpZXItPmV4cG9ydGVkTmFtZSgpKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGU4MWYzZWIy
N2VkMDVmZWU4MWUxNzI1NzY2OWEzOTQzYTg4NjNkMDQuLjQ1OWY3YjMxYjcxNzI5MWNjYjViOTI3
YWNhM2NmMzhmZWE2MTljMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAKQEAgLTIzNSw4ICsyMzUsMTAgQEAgUGFyc2VyPExleGVyVHlwZT46On5QYXJzZXIoKQogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIEZ1bmN0aW9uUGFyc2VN
b2RlIHBhcnNlTW9kZSkKK1N0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcihjb25z
dCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBGdW5jdGlvblBhcnNlTW9kZSBwYXJzZU1vZGUsIE1v
ZHVsZVBhcnNlTW9kZSBtb2R1bGVQYXJzZU1vZGUpCiB7CisgICAgVU5VU0VEX1BBUkFNKG1vZHVs
ZVBhcnNlTW9kZSk7CisKICAgICBTdHJpbmcgcGFyc2VFcnJvciA9IFN0cmluZygpOwogICAgIAog
ICAgIEFTVEJ1aWxkZXIgY29udGV4dChjb25zdF9jYXN0PFZNKj4obV92bSksIG1fcGFyc2VyQXJl
bmEsIGNvbnN0X2Nhc3Q8U291cmNlQ29kZSo+KG1fc291cmNlKSk7CkBAIC0yNzIsNyArMjc0LDcg
QEAgU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXIm
IGNhbGxlZU5hbWUsIEZ1bmN0aW9uUGFyc2UKICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0g
cGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHlTb3VyY2VFbGVtZW50cyhjb250
ZXh0KTsKICNpZiBFTkFCTEUoRVM2X01PRFVMRVMpCiAgICAgICAgIGVsc2UgaWYgKG1fY29kZVR5
cGUgPT0gSlNQYXJzZXJDb2RlVHlwZTo6TW9kdWxlKQotICAgICAgICAgICAgc291cmNlRWxlbWVu
dHMgPSBwYXJzZU1vZHVsZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQpOworICAgICAgICAgICAgc291
cmNlRWxlbWVudHMgPSBwYXJzZU1vZHVsZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIG1vZHVsZVBh
cnNlTW9kZSk7CiAjZW5kaWYKICAgICAgICAgZWxzZQogICAgICAgICAgICAgc291cmNlRWxlbWVu
dHMgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIENoZWNrRm9yU3RyaWN0TW9kZSk7CkBA
IC00MTIsMzkgKzQxNCw0OCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3Vy
Y2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTb3VyY2VFbAogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
U291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTW9kdWxlU291cmNlRWxlbWVu
dHMoVHJlZUJ1aWxkZXImIGNvbnRleHQpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNb2R1bGVTb3VyY2VFbGVt
ZW50cyhUcmVlQnVpbGRlciYgY29udGV4dCwgTW9kdWxlUGFyc2VNb2RlIG1vZHVsZVBhcnNlTW9k
ZSkKIHsKICAgICBUcmVlU291cmNlRWxlbWVudHMgc291cmNlRWxlbWVudHMgPSBjb250ZXh0LmNy
ZWF0ZVNvdXJjZUVsZW1lbnRzKCk7Ci0KLSAgICAvLyBGSVhNRTogV2hlbiBzb21lIHNvcnQgb2Yg
TW9kdWxlQW5hbHl6ZXIgVHJlZUJ1aWxkZXIgaXMgbGFuZGVkLAotICAgIC8vIHRoaXMgU3ludGF4
Q2hlY2tlciB3aWxsIGJlIHJlcGxhY2VkIHdpdGggdHlwZWRlZiB1bmRlciB0aGUgVHJlZUJ1aWxk
ZXIsCi0gICAgLy8gbGlrZSBUcmVlQnVpbGRlcjo6TW9kdWxlU3RhdGVtZW50SXRlbUJ1aWxkZXIu
Ci0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzM1Mwot
ICAgIFN5bnRheENoZWNrZXIgbW9kdWxlU3RhdGVtZW50SXRlbUJ1aWxkZXIoY29uc3RfY2FzdDxW
TSo+KG1fdm0pLCBtX2xleGVyLmdldCgpKTsKKyAgICBTeW50YXhDaGVja2VyIHN5bnRheENoZWNr
ZXIoY29uc3RfY2FzdDxWTSo+KG1fdm0pLCBtX2xleGVyLmdldCgpKTsKIAogICAgIHdoaWxlICh0
cnVlKSB7Ci0gICAgICAgIGlmIChtYXRjaChJTVBPUlQpIHx8IG1hdGNoKEVYUE9SVCkpIHsKLSAg
ICAgICAgICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0gMDsKLSAgICAgICAgICAgIGlmICht
YXRjaChJTVBPUlQpKQotICAgICAgICAgICAgICAgIHN0YXRlbWVudCA9IHBhcnNlSW1wb3J0RGVj
bGFyYXRpb24oY29udGV4dCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc3Rh
dGVtZW50ID0gcGFyc2VFeHBvcnREZWNsYXJhdGlvbihjb250ZXh0KTsKLQotICAgICAgICAgICAg
aWYgKCFzdGF0ZW1lbnQpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjb250
ZXh0LmFwcGVuZFN0YXRlbWVudChzb3VyY2VFbGVtZW50cywgc3RhdGVtZW50KTsKLSAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgVHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSAwOworICAgICAgICBp
ZiAobWF0Y2goSU1QT1JUKSkKKyAgICAgICAgICAgIHN0YXRlbWVudCA9IHBhcnNlSW1wb3J0RGVj
bGFyYXRpb24oY29udGV4dCk7CisgICAgICAgIGVsc2UgaWYgKG1hdGNoKEVYUE9SVCkpCisgICAg
ICAgICAgICBzdGF0ZW1lbnQgPSBwYXJzZUV4cG9ydERlY2xhcmF0aW9uKGNvbnRleHQpOworICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGRpcmVjdGl2ZSA9IDA7
CiAgICAgICAgICAgICB1bnNpZ25lZCBkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoID0gMDsKLSAgICAg
ICAgICAgIGlmICghcGFyc2VTdGF0ZW1lbnRMaXN0SXRlbShtb2R1bGVTdGF0ZW1lbnRJdGVtQnVp
bGRlciwgZGlyZWN0aXZlLCAmZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCkpCi0gICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBpZiAobW9kdWxlUGFyc2VNb2RlID09IE1vZHVsZVBhcnNl
TW9kZTo6QW5hbHl6ZSkgeworICAgICAgICAgICAgICAgIGlmICghcGFyc2VTdGF0ZW1lbnRMaXN0
SXRlbShzeW50YXhDaGVja2VyLCBkaXJlY3RpdmUsICZkaXJlY3RpdmVMaXRlcmFsTGVuZ3RoKSkK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVudExpc3RJ
dGVtKGNvbnRleHQsIGRpcmVjdGl2ZSwgJmRpcmVjdGl2ZUxpdGVyYWxMZW5ndGgpOwogICAgICAg
ICB9CisKKyAgICAgICAgaWYgKCFzdGF0ZW1lbnQpCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY29udGV4dC5hcHBlbmRTdGF0ZW1lbnQoc291cmNlRWxlbWVudHMsIHN0YXRlbWVudCk7CiAg
ICAgfQogCiAgICAgcHJvcGFnYXRlRXJyb3IoKTsKIAotICAgIGZvciAoY29uc3QgYXV0byYgdWlk
IDogY3VycmVudFNjb3BlKCktPm1vZHVsZVNjb3BlRGF0YSgpLmV4cG9ydGVkQmluZGluZ3MoKSkK
LSAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShjdXJyZW50U2NvcGUoKS0+aGFzRGVjbGFyZWRW
YXJpYWJsZSh1aWQpIHx8IGN1cnJlbnRTY29wZSgpLT5oYXNMZXhpY2FsbHlEZWNsYXJlZFZhcmlh
YmxlKHVpZCksICJFeHBvcnRlZCBiaW5kaW5nICciLCB1aWQuZ2V0KCksICInIG5lZWRzIHRvIHJl
ZmVyIHRvIGEgdG9wLWxldmVsIGRlY2xhcmVkIHZhcmlhYmxlIik7CisgICAgZm9yIChjb25zdCBh
dXRvJiB1aWQgOiBjdXJyZW50U2NvcGUoKS0+bW9kdWxlU2NvcGVEYXRhKCkuZXhwb3J0ZWRCaW5k
aW5ncygpKSB7CisgICAgICAgIGlmIChjdXJyZW50U2NvcGUoKS0+aGFzRGVjbGFyZWRWYXJpYWJs
ZSh1aWQpKSB7CisgICAgICAgICAgICBjdXJyZW50U2NvcGUoKS0+ZGVjbGFyZWRWYXJpYWJsZXMo
KS5tYXJrVmFyaWFibGVBc0V4cG9ydGVkKHVpZCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChjdXJyZW50U2NvcGUoKS0+aGFzTGV4aWNhbGx5RGVjbGFy
ZWRWYXJpYWJsZSh1aWQpKSB7CisgICAgICAgICAgICBjdXJyZW50U2NvcGUoKS0+bGV4aWNhbFZh
cmlhYmxlcygpLm1hcmtWYXJpYWJsZUFzRXhwb3J0ZWQodWlkKTsKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICB9CisKKyAgICAgICAgc2VtYW50aWNGYWlsKCJFeHBvcnRlZCBiaW5kaW5n
ICciLCB1aWQuZ2V0KCksICInIG5lZWRzIHRvIHJlZmVyIHRvIGEgdG9wLWxldmVsIGRlY2xhcmVk
IHZhcmlhYmxlIik7CisgICAgfQogCiAgICAgcmV0dXJuIHNvdXJjZUVsZW1lbnRzOwogfQpAQCAt
NjAxLDcgKzYxMiwxMCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNz
aW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVZhcmlhYmxlRGVjbAogICAgICAgICAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShleHBvcnRUeXBlID09
IEV4cG9ydFR5cGU6OkV4cG9ydGVkICYmICFjdXJyZW50U2NvcGUoKS0+bW9kdWxlU2NvcGVEYXRh
KCkuZXhwb3J0TmFtZSgqbmFtZSksICJDYW5ub3QgZXhwb3J0IGEgZHVwbGljYXRlIG5hbWUgJyIs
IG5hbWUtPmltcGwoKSwgIiciKTsKKyAgICAgICAgICAgIGlmIChleHBvcnRUeXBlID09IEV4cG9y
dFR5cGU6OkV4cG9ydGVkKSB7CisgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShl
eHBvcnROYW1lKCpuYW1lKSwgIkNhbm5vdCBleHBvcnQgYSBkdXBsaWNhdGUgbmFtZSAnIiwgbmFt
ZS0+aW1wbCgpLCAiJyIpOworICAgICAgICAgICAgICAgIGN1cnJlbnRTY29wZSgpLT5tb2R1bGVT
Y29wZURhdGEoKS5leHBvcnRCaW5kaW5nKCpuYW1lKTsKKyAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgaWYgKGhhc0luaXRpYWxpemVyKSB7CiAgICAgICAgICAgICAgICAgSlNUZXh0UG9zaXRp
b24gdmFyRGl2b3QgPSB0b2tlblN0YXJ0UG9zaXRpb24oKSArIDE7CkBAIC03MDUsNyArNzE5LDEw
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJu
IFBhcnNlcjxMZXhlclR5cGU+OjpjcmVhdGVCCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzZW1h
bnRpY0ZhaWxJZlRydWUoZXhwb3J0VHlwZSA9PSBFeHBvcnRUeXBlOjpFeHBvcnRlZCAmJiAhY3Vy
cmVudFNjb3BlKCktPm1vZHVsZVNjb3BlRGF0YSgpLmV4cG9ydE5hbWUobmFtZSksICJDYW5ub3Qg
ZXhwb3J0IGEgZHVwbGljYXRlIG5hbWUgJyIsIG5hbWUuaW1wbCgpLCAiJyIpOworICAgIGlmIChl
eHBvcnRUeXBlID09IEV4cG9ydFR5cGU6OkV4cG9ydGVkKSB7CisgICAgICAgIHNlbWFudGljRmFp
bElmRmFsc2UoZXhwb3J0TmFtZShuYW1lKSwgIkNhbm5vdCBleHBvcnQgYSBkdXBsaWNhdGUgbmFt
ZSAnIiwgbmFtZS5pbXBsKCksICInIik7CisgICAgICAgIGN1cnJlbnRTY29wZSgpLT5tb2R1bGVT
Y29wZURhdGEoKS5leHBvcnRCaW5kaW5nKG5hbWUpOworICAgIH0KICAgICByZXR1cm4gY29udGV4
dC5jcmVhdGVCaW5kaW5nTG9jYXRpb24odG9rZW4ubV9sb2NhdGlvbiwgbmFtZSwgdG9rZW4ubV9z
dGFydFBvc2l0aW9uLCB0b2tlbi5tX2VuZFBvc2l0aW9uLCBiaW5kaW5nQ29udGV4dCk7CiB9CiAK
QEAgLTE4NTYsNyArMTg3MywxMCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVT
dGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25EZWNsYQogICAgICAgICBm
dW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25JbmZvLCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VU
eXBlKSksICJDYW5ub3QgcGFyc2UgdGhpcyBmdW5jdGlvbiIpOwogICAgIGZhaWxJZkZhbHNlKGZ1
bmN0aW9uSW5mby5uYW1lLCAiRnVuY3Rpb24gc3RhdGVtZW50cyBtdXN0IGhhdmUgYSBuYW1lIik7
CiAgICAgZmFpbElmVHJ1ZUlmU3RyaWN0KGRlY2xhcmVWYXJpYWJsZShmdW5jdGlvbkluZm8ubmFt
ZSkgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZFN0cmljdE1vZGUsICJDYW5ub3QgZGVjbGFy
ZSBhIGZ1bmN0aW9uIG5hbWVkICciLCBmdW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpbiBz
dHJpY3QgbW9kZSIpOwotICAgIHNlbWFudGljRmFpbElmVHJ1ZShleHBvcnRUeXBlID09IEV4cG9y
dFR5cGU6OkV4cG9ydGVkICYmICFjdXJyZW50U2NvcGUoKS0+bW9kdWxlU2NvcGVEYXRhKCkuZXhw
b3J0TmFtZSgqZnVuY3Rpb25JbmZvLm5hbWUpLCAiQ2Fubm90IGV4cG9ydCBhIGR1cGxpY2F0ZSBm
dW5jdGlvbiBuYW1lOiAnIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIiciKTsKKyAgICBp
ZiAoZXhwb3J0VHlwZSA9PSBFeHBvcnRUeXBlOjpFeHBvcnRlZCkgeworICAgICAgICBzZW1hbnRp
Y0ZhaWxJZkZhbHNlKGV4cG9ydE5hbWUoKmZ1bmN0aW9uSW5mby5uYW1lKSwgIkNhbm5vdCBleHBv
cnQgYSBkdXBsaWNhdGUgZnVuY3Rpb24gbmFtZTogJyIsIGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBs
KCksICInIik7CisgICAgICAgIGN1cnJlbnRTY29wZSgpLT5tb2R1bGVTY29wZURhdGEoKS5leHBv
cnRCaW5kaW5nKCpmdW5jdGlvbkluZm8ubmFtZSk7CisgICAgfQogICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZUZ1bmNEZWNsU3RhdGVtZW50KGxvY2F0aW9uLCBmdW5jdGlvbkluZm8pOwogfQogCkBA
IC0xODc2LDcgKzE4OTYsMTAgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzRGVjbGFyYXQKICAgICBEZWNsYXJh
dGlvblJlc3VsdE1hc2sgZGVjbGFyYXRpb25SZXN1bHQgPSBkZWNsYXJlVmFyaWFibGUoaW5mby5j
bGFzc05hbWUsIERlY2xhcmF0aW9uVHlwZTo6TGV0RGVjbGFyYXRpb24pOwogICAgIGlmIChkZWNs
YXJhdGlvblJlc3VsdCAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFy
YXRpb24pCiAgICAgICAgIGludGVybmFsRmFpbFdpdGhNZXNzYWdlKGZhbHNlLCAiQ2Fubm90IGRl
Y2xhcmUgYSBjbGFzcyB0d2ljZTogJyIsIGluZm8uY2xhc3NOYW1lLT5pbXBsKCksICInIik7Ci0g
ICAgc2VtYW50aWNGYWlsSWZUcnVlKGV4cG9ydFR5cGUgPT0gRXhwb3J0VHlwZTo6RXhwb3J0ZWQg
JiYgIWN1cnJlbnRTY29wZSgpLT5tb2R1bGVTY29wZURhdGEoKS5leHBvcnROYW1lKCppbmZvLmNs
YXNzTmFtZSksICJDYW5ub3QgZXhwb3J0IGEgZHVwbGljYXRlIGNsYXNzIG5hbWU6ICciLCBpbmZv
LmNsYXNzTmFtZS0+aW1wbCgpLCAiJyIpOworICAgIGlmIChleHBvcnRUeXBlID09IEV4cG9ydFR5
cGU6OkV4cG9ydGVkKSB7CisgICAgICAgIHNlbWFudGljRmFpbElmRmFsc2UoZXhwb3J0TmFtZSgq
aW5mby5jbGFzc05hbWUpLCAiQ2Fubm90IGV4cG9ydCBhIGR1cGxpY2F0ZSBjbGFzcyBuYW1lOiAn
IiwgaW5mby5jbGFzc05hbWUtPmltcGwoKSwgIiciKTsKKyAgICAgICAgY3VycmVudFNjb3BlKCkt
Pm1vZHVsZVNjb3BlRGF0YSgpLmV4cG9ydEJpbmRpbmcoKmluZm8uY2xhc3NOYW1lKTsKKyAgICB9
CiAKICAgICBKU1RleHRQb3NpdGlvbiBjbGFzc0VuZCA9IGxhc3RUb2tlbkVuZFBvc2l0aW9uKCk7
CiAgICAgdW5zaWduZWQgY2xhc3NFbmRMaW5lID0gdG9rZW5MaW5lKCk7CkBAIC0yMjgyLDcgKzIz
MDUsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVy
OjpJbXBvcnRTcGVjaWZpZXIgUGFyc2VyPExleGVyVAogICAgIH0KIAogICAgIHNlbWFudGljRmFp
bElmVHJ1ZShsb2NhbE5hbWVUb2tlbi5tX3R5cGUgJiBLZXl3b3JkVG9rZW5GbGFnLCAiQ2Fubm90
IHVzZSBrZXl3b3JkIGFzIGltcG9ydGVkIGJpbmRpbmcgbmFtZSIpOwotICAgIERlY2xhcmF0aW9u
UmVzdWx0TWFzayBkZWNsYXJhdGlvblJlc3VsdCA9IGRlY2xhcmVWYXJpYWJsZShsb2NhbE5hbWUs
IERlY2xhcmF0aW9uVHlwZTo6Q29uc3REZWNsYXJhdGlvbik7CisgICAgRGVjbGFyYXRpb25SZXN1
bHRNYXNrIGRlY2xhcmF0aW9uUmVzdWx0ID0gZGVjbGFyZVZhcmlhYmxlKGxvY2FsTmFtZSwgRGVj
bGFyYXRpb25UeXBlOjpDb25zdERlY2xhcmF0aW9uLCBEZWNsYXJhdGlvbkltcG9ydFR5cGU6Oklt
cG9ydGVkKTsKICAgICBpZiAoZGVjbGFyYXRpb25SZXN1bHQgIT0gRGVjbGFyYXRpb25SZXN1bHQ6
OlZhbGlkKSB7CiAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdChkZWNsYXJhdGlvblJlc3VsdCAm
IERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkU3RyaWN0TW9kZSwgIkNhbm5vdCBkZWNsYXJlIGFu
IGltcG9ydGVkIGJpbmRpbmcgbmFtZWQgIiwgbG9jYWxOYW1lLT5pbXBsKCksICIgaW4gc3RyaWN0
IG1vZGUiKTsKICAgICAgICAgaWYgKGRlY2xhcmF0aW9uUmVzdWx0ICYgRGVjbGFyYXRpb25SZXN1
bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbikKQEAgLTIzODQsNyArMjQwNyw3IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkV4cG9ydFNw
ZWNpZmllciBQYXJzZXI8TGV4ZXJUCiAgICAgICAgIG5leHQoKTsKICAgICB9CiAKLSAgICBzZW1h
bnRpY0ZhaWxJZkZhbHNlKGN1cnJlbnRTY29wZSgpLT5tb2R1bGVTY29wZURhdGEoKS5leHBvcnRO
YW1lKCpleHBvcnRlZE5hbWUpLCAiQ2Fubm90IGV4cG9ydCBhIGR1cGxpY2F0ZSBuYW1lICciLCBl
eHBvcnRlZE5hbWUtPmltcGwoKSwgIiciKTsKKyAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKGV4cG9y
dE5hbWUoKmV4cG9ydGVkTmFtZSksICJDYW5ub3QgZXhwb3J0IGEgZHVwbGljYXRlIG5hbWUgJyIs
IGV4cG9ydGVkTmFtZS0+aW1wbCgpLCAiJyIpOwogICAgIG1heWJlTG9jYWxOYW1lcy5hcHBlbmQo
bG9jYWxOYW1lKTsKICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVFeHBvcnRTcGVjaWZpZXIoc3Bl
Y2lmaWVyTG9jYXRpb24sICpsb2NhbE5hbWUsICpleHBvcnRlZE5hbWUpOwogfQpAQCAtMjQwNyw2
ICsyNDMwLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydERlY2xhcmEKICAgICAgICAgYXV0byBtb2R1bGVT
cGVjaWZpZXIgPSBwYXJzZU1vZHVsZVNwZWNpZmllcihjb250ZXh0KTsKICAgICAgICAgZmFpbElm
RmFsc2UobW9kdWxlU3BlY2lmaWVyLCAiQ2Fubm90IHBhcnNlIHRoZSAnZnJvbScgY2xhdXNlIik7
CiAgICAgICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSwgIkV4cGVjdGVkIGEgJzsnIGZv
bGxvd2luZyBhIHRhcmdldGVkIGV4cG9ydCBkZWNsYXJhdGlvbiIpOworCiAgICAgICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZUV4cG9ydEFsbERlY2xhcmF0aW9uKGV4cG9ydExvY2F0aW9uLCBtb2R1
bGVTcGVjaWZpZXIpOwogICAgIH0KIApAQCAtMjQxOCw4ICsyNDQyLDggQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4
cG9ydERlY2xhcmEKICAgICAgICAgbmV4dCgpOwogCiAgICAgICAgIFRyZWVTdGF0ZW1lbnQgcmVz
dWx0ID0gMDsKLSAgICAgICAgYm9vbCBoYXNOYW1lID0gZmFsc2U7CiAgICAgICAgIGJvb2wgaXNG
dW5jdGlvbk9yQ2xhc3NEZWNsYXJhdGlvbiA9IGZhbHNlOworICAgICAgICBjb25zdCBJZGVudGlm
aWVyKiBsb2NhbE5hbWUgPSBudWxscHRyOwogICAgICAgICBTYXZlUG9pbnQgc2F2ZVBvaW50ID0g
Y3JlYXRlU2F2ZVBvaW50KCk7CiAgICAgICAgIGlmIChtYXRjaChGVU5DVElPTikKICNpZiBFTkFC
TEUoRVM2X0NMQVNTX1NZTlRBWCkKQEAgLTI0MjksMTEgKzI0NTMsMTIgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4
cG9ydERlY2xhcmEKICAgICAgICAgICAgIGlzRnVuY3Rpb25PckNsYXNzRGVjbGFyYXRpb24gPSB0
cnVlOwogICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgLy8gRklYTUU6IFdoZW4gbGFu
ZGluZyBFUzYgZ2VuZXJhdG9ycywgd2UgbmVlZCB0byB0YWtlIGNhcmUgb2YgdGhhdCAnKicgY29t
ZXMuCi0gICAgICAgICAgICBoYXNOYW1lID0gbWF0Y2goSURFTlQpOworICAgICAgICAgICAgaWYg
KG1hdGNoKElERU5UKSkKKyAgICAgICAgICAgICAgICBsb2NhbE5hbWUgPSBtX3Rva2VuLm1fZGF0
YS5pZGVudDsKICAgICAgICAgICAgIHJlc3RvcmVTYXZlUG9pbnQoc2F2ZVBvaW50KTsKICAgICAg
ICAgfQogCi0gICAgICAgIGlmIChoYXNOYW1lKSB7CisgICAgICAgIGlmIChsb2NhbE5hbWUpIHsK
ICAgICAgICAgICAgIGlmIChtYXRjaChGVU5DVElPTikpCiAgICAgICAgICAgICAgICAgcmVzdWx0
ID0gcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKGNvbnRleHQpOwogI2lmIEVOQUJMRShFUzZfQ0xB
U1NfU1lOVEFYKQpAQCAtMjQ0MywxOCArMjQ2OCwzMiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwb3J0RGVjbGFy
YQogICAgICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAv
LyBleHBvcnQgZGVmYXVsdCBleHByOworICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIEl0
IHNob3VsZCBiZSB0cmVhdGVkIGFzIHRoZSBzYW1lIHRvIHRoZSBmb2xsb3dpbmcuCisgICAgICAg
ICAgICAvLworICAgICAgICAgICAgLy8gY29uc3QgKmRlZmF1bHQqID0gZXhwcjsKKyAgICAgICAg
ICAgIC8vIGV4cG9ydCB7ICpkZWZhdWx0KiBhcyBkZWZhdWx0IH0KICAgICAgICAgICAgIEpTVG9r
ZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgICAgICAgICAgSlNUZXh0
UG9zaXRpb24gc3RhcnQgPSB0b2tlblN0YXJ0UG9zaXRpb24oKTsKICAgICAgICAgICAgIFRyZWVF
eHByZXNzaW9uIGV4cHJlc3Npb24gPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQp
OwogICAgICAgICAgICAgZmFpbElmRmFsc2UoZXhwcmVzc2lvbiwgIkNhbm5vdCBwYXJzZSBleHBy
ZXNzaW9uIik7Ci0gICAgICAgICAgICByZXN1bHQgPSBjb250ZXh0LmNyZWF0ZUV4cHJTdGF0ZW1l
bnQobG9jYXRpb24sIGV4cHJlc3Npb24sIHN0YXJ0LCB0b2tlbkVuZFBvc2l0aW9uKCkpOworCisg
ICAgICAgICAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyYXRpb25SZXN1bHQgPSBkZWNs
YXJlVmFyaWFibGUoJm1fdm0tPnByb3BlcnR5TmFtZXMtPnN0YXJEZWZhdWx0UHJpdmF0ZU5hbWUs
IERlY2xhcmF0aW9uVHlwZTo6Q29uc3REZWNsYXJhdGlvbik7CisgICAgICAgICAgICBpZiAoZGVj
bGFyYXRpb25SZXN1bHQgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xh
cmF0aW9uKQorICAgICAgICAgICAgICAgIGludGVybmFsRmFpbFdpdGhNZXNzYWdlKGZhbHNlLCAi
Q2Fubm90IGV4cG9ydCAnZGVmYXVsdCcgbmFtZSB0d2ljZTogJyIpOworCisgICAgICAgICAgICBU
cmVlRXhwcmVzc2lvbiBhc3NpZ25tZW50ID0gY29udGV4dC5jcmVhdGVBc3NpZ25SZXNvbHZlKGxv
Y2F0aW9uLCBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5zdGFyRGVmYXVsdFByaXZhdGVOYW1lLCBleHBy
ZXNzaW9uLCBzdGFydCwgc3RhcnQsIHRva2VuRW5kUG9zaXRpb24oKSwgQXNzaWdubWVudENvbnRl
eHQ6OkNvbnN0RGVjbGFyYXRpb25TdGF0ZW1lbnQpOworICAgICAgICAgICAgcmVzdWx0ID0gY29u
dGV4dC5jcmVhdGVFeHByU3RhdGVtZW50KGxvY2F0aW9uLCBhc3NpZ25tZW50LCBzdGFydCwgdG9r
ZW5FbmRQb3NpdGlvbigpKTsKICAgICAgICAgICAgIGlmICghaXNGdW5jdGlvbk9yQ2xhc3NEZWNs
YXJhdGlvbikKICAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZShhdXRvU2VtaUNvbG9uKCksICJF
eHBlY3RlZCBhICc7JyBmb2xsb3dpbmcgYSB0YXJnZXRlZCBleHBvcnQgZGVjbGFyYXRpb24iKTsK
KyAgICAgICAgICAgIGxvY2FsTmFtZSA9ICZtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5zdGFyRGVmYXVs
dFByaXZhdGVOYW1lOwogICAgICAgICB9CiAgICAgICAgIGZhaWxJZkZhbHNlKHJlc3VsdCwgIkNh
bm5vdCBwYXJzZSB0aGUgZGVjbGFyYXRpb24iKTsKLSAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxz
ZShjdXJyZW50U2NvcGUoKS0+bW9kdWxlU2NvcGVEYXRhKCkuZXhwb3J0TmFtZShtX3ZtLT5wcm9w
ZXJ0eU5hbWVzLT5kZWZhdWx0S2V5d29yZCksICJDYW5ub3QgZXhwb3J0ICdkZWZhdWx0JyBuYW1l
IHR3aWNlLiIpOwogCi0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUV4cG9ydERlZmF1bHRE
ZWNsYXJhdGlvbihleHBvcnRMb2NhdGlvbiwgcmVzdWx0KTsKKyAgICAgICAgc2VtYW50aWNGYWls
SWZGYWxzZShleHBvcnROYW1lKG1fdm0tPnByb3BlcnR5TmFtZXMtPmRlZmF1bHRLZXl3b3JkKSwg
IkNhbm5vdCBleHBvcnQgJ2RlZmF1bHQnIG5hbWUgdHdpY2UuIik7CisgICAgICAgIGN1cnJlbnRT
Y29wZSgpLT5tb2R1bGVTY29wZURhdGEoKS5leHBvcnRCaW5kaW5nKCpsb2NhbE5hbWUpOworICAg
ICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVFeHBvcnREZWZhdWx0RGVjbGFyYXRpb24oZXhwb3J0
TG9jYXRpb24sIHJlc3VsdCwgKmxvY2FsTmFtZSk7CiAgICAgfQogCiAgICAgY2FzZSBPUEVOQlJB
Q0U6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGJkN2I1MDQ4Y2Uw
MDBjNGUxYjZkZDdmNTk5ZTZkMWM1Mzg4MTk3YWEuLjZiZjIyMjQ1MGI3ODY1OWEzY2IwNDIxODYx
NGQ1NmRlNDRlZDYzYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAt
OTgsNiArOTgsMTEgQEAgZW51bSBjbGFzcyBEZWNsYXJhdGlvblR5cGUgewogICAgIENvbnN0RGVj
bGFyYXRpb24KIH07CiAKK2VudW0gY2xhc3MgRGVjbGFyYXRpb25JbXBvcnRUeXBlIHsKKyAgICBJ
bXBvcnRlZCwKKyAgICBOb3RJbXBvcnRlZAorfTsKKwogZW51bSBEZWNsYXJhdGlvblJlc3VsdCB7
CiAgICAgVmFsaWQgPSAwLAogICAgIEludmFsaWRTdHJpY3RNb2RlID0gMSA8PCAwLApAQCAtMjU3
LDYgKzI2Miw3IEBAIHN0cnVjdCBTY29wZSB7CiAgICAgYm9vbCBpc0xleGljYWxTY29wZSgpIHsg
cmV0dXJuIG1faXNMZXhpY2FsU2NvcGU7IH0KIAogICAgIFZhcmlhYmxlRW52aXJvbm1lbnQmIGRl
Y2xhcmVkVmFyaWFibGVzKCkgeyByZXR1cm4gbV9kZWNsYXJlZFZhcmlhYmxlczsgfQorICAgIFZh
cmlhYmxlRW52aXJvbm1lbnQmIGxleGljYWxWYXJpYWJsZXMoKSB7IHJldHVybiBtX2xleGljYWxW
YXJpYWJsZXM7IH0KICAgICBWYXJpYWJsZUVudmlyb25tZW50JiBmaW5hbGl6ZUxleGljYWxFbnZp
cm9ubWVudCgpIAogICAgIHsgCiAgICAgICAgIGlmIChtX3VzZXNFdmFsIHx8IG1fbmVlZHNGdWxs
QWN0aXZhdGlvbikKQEAgLTMxNSw3ICszMjEsNyBAQCBzdHJ1Y3QgU2NvcGUgewogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KIAotICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJl
TGV4aWNhbFZhcmlhYmxlKGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBib29sIGlzQ29uc3RhbnQp
CisgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmVMZXhpY2FsVmFyaWFibGUoY29uc3Qg
SWRlbnRpZmllciogaWRlbnQsIGJvb2wgaXNDb25zdGFudCwgRGVjbGFyYXRpb25JbXBvcnRUeXBl
IGltcG9ydFR5cGUgPSBEZWNsYXJhdGlvbkltcG9ydFR5cGU6Ok5vdEltcG9ydGVkKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyk7CiAgICAgICAgIERl
Y2xhcmF0aW9uUmVzdWx0TWFzayByZXN1bHQgPSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQ7CkBA
IC0zMjcsNiArMzMzLDkgQEAgc3RydWN0IFNjb3BlIHsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5zZXRJc0xldCgpOwogCisgICAgICAgIGlmIChp
bXBvcnRUeXBlID09IERlY2xhcmF0aW9uSW1wb3J0VHlwZTo6SW1wb3J0ZWQpCisgICAgICAgICAg
ICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLnNldElzSW1wb3J0ZWQoKTsKKwogICAgICAgICBp
ZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmVzdWx0IHw9IERlY2xhcmF0
aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb247CiAgICAgICAgIGlmICghaXNW
YWxpZFN0cmljdE1vZGUpCkBAIC02MTEsNyArNjIwLDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICB+
UGFyc2VyKCk7CiAKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImLCBjb25zdCBJZGVudGlmaWVy
JiwgRnVuY3Rpb25QYXJzZU1vZGUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBw
YXJzZShQYXJzZXJFcnJvciYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvblBhcnNlTW9kZSwg
TW9kdWxlUGFyc2VNb2RlKTsKIAogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFz
dE5ld2xpbmUoKSBjb25zdCB7IHJldHVybiBtX2xleGVyLT5wb3NpdGlvbkJlZm9yZUxhc3ROZXds
aW5lKCk7IH0KICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb25CZWZvcmVMYXN0VG9rZW4oKSBj
b25zdCB7IHJldHVybiBtX2xleGVyLT5sYXN0VG9rZW5Mb2NhdGlvbigpOyB9CkBAIC03NjksNyAr
Nzc4LDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICAgICAgcG9wU2NvcGVJbnRlcm5hbChzY29wZSwg
c2hvdWxkVHJhY2tDbG9zZWRWYXJpYWJsZXMpOwogICAgIH0KICAgICAKLSAgICBEZWNsYXJhdGlv
blJlc3VsdE1hc2sgZGVjbGFyZVZhcmlhYmxlKGNvbnN0IElkZW50aWZpZXIqIGlkZW50LCBEZWNs
YXJhdGlvblR5cGUgdHlwZSA9IERlY2xhcmF0aW9uVHlwZTo6VmFyRGVjbGFyYXRpb24pCisgICAg
RGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmVWYXJpYWJsZShjb25zdCBJZGVudGlmaWVyKiBp
ZGVudCwgRGVjbGFyYXRpb25UeXBlIHR5cGUgPSBEZWNsYXJhdGlvblR5cGU6OlZhckRlY2xhcmF0
aW9uLCBEZWNsYXJhdGlvbkltcG9ydFR5cGUgaW1wb3J0VHlwZSA9IERlY2xhcmF0aW9uSW1wb3J0
VHlwZTo6Tm90SW1wb3J0ZWQpCiAgICAgewogICAgICAgICB1bnNpZ25lZCBpID0gbV9zY29wZVN0
YWNrLnNpemUoKSAtIDE7CiAgICAgICAgIEFTU0VSVChpIDwgbV9zY29wZVN0YWNrLnNpemUoKSk7
CkBAIC03OTQsNyArODAzLDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICAgICAgICAgIEFTU0VSVChp
IDwgbV9zY29wZVN0YWNrLnNpemUoKSk7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gbV9z
Y29wZVN0YWNrW2ldLmRlY2xhcmVMZXhpY2FsVmFyaWFibGUoaWRlbnQsIHR5cGUgPT0gRGVjbGFy
YXRpb25UeXBlOjpDb25zdERlY2xhcmF0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1fc2NvcGVTdGFj
a1tpXS5kZWNsYXJlTGV4aWNhbFZhcmlhYmxlKGlkZW50LCB0eXBlID09IERlY2xhcmF0aW9uVHlw
ZTo6Q29uc3REZWNsYXJhdGlvbiwgaW1wb3J0VHlwZSk7CiAgICAgfQogICAgIAogICAgIE5FVkVS
X0lOTElORSBib29sIGhhc0RlY2xhcmVkVmFyaWFibGUoY29uc3QgSWRlbnRpZmllciYgaWRlbnQp
CkBAIC04MjUsNiArODM0LDEyIEBAIGNsYXNzIFBhcnNlciB7CiAgICAgICAgICAgICBtX3Njb3Bl
U3RhY2subGFzdCgpLmRlY2xhcmVXcml0ZShpZGVudCk7CiAgICAgfQogCisgICAgYm9vbCBleHBv
cnROYW1lKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGN1
cnJlbnRTY29wZSgpLmluZGV4KCkgPT0gMCk7CisgICAgICAgIHJldHVybiBjdXJyZW50U2NvcGUo
KS0+bW9kdWxlU2NvcGVEYXRhKCkuZXhwb3J0TmFtZShpZGVudCk7CisgICAgfQorCiAgICAgU2Nv
cGVTdGFjayBtX3Njb3BlU3RhY2s7CiAgICAgCiAgICAgY29uc3QgU291cmNlUHJvdmlkZXJDYWNo
ZUl0ZW0qIGZpbmRDYWNoZWRGdW5jdGlvbkluZm8oaW50IG9wZW5CcmFjZVBvcykgCkBAIC04MzMs
NyArODQ4LDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICB9CiAKICAgICBQYXJzZXIoKTsKLSAgICBT
dHJpbmcgcGFyc2VJbm5lcihjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25QYXJzZU1vZGUpOwor
ICAgIFN0cmluZyBwYXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvblBhcnNlTW9k
ZSwgTW9kdWxlUGFyc2VNb2RlKTsKIAogICAgIHZvaWQgZGlkRmluaXNoUGFyc2luZyhTb3VyY2VF
bGVtZW50cyosIERlY2xhcmF0aW9uU3RhY2tzOjpGdW5jdGlvblN0YWNrJiwgVmFyaWFibGVFbnZp
cm9ubWVudCYsIENvZGVGZWF0dXJlcywgaW50LCBjb25zdCBWZWN0b3I8UmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPj4mJik7CiAKQEAgLTEwOTgsNyArMTExMyw3IEBAIGNsYXNzIFBhcnNlciB7CiAg
ICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZURlc3RydWN0
dXJpbmdQYXR0ZXJuIHBhcnNlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4oVHJlZUJ1aWxkZXImLCBEZXN0
cnVjdHVyaW5nS2luZCwgRXhwb3J0VHlwZSwgY29uc3QgSWRlbnRpZmllcioqIGR1cGxpY2F0ZUlk
ZW50aWZpZXIgPSBudWxscHRyLCBib29sKiBoYXNEZXN0cnVjdHVyaW5nUGF0dGVybiA9IG51bGxw
dHIsIEFzc2lnbm1lbnRDb250ZXh0ID0gQXNzaWdubWVudENvbnRleHQ6OkRlY2xhcmF0aW9uU3Rh
dGVtZW50LCBpbnQgZGVwdGggPSAwKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IE5FVkVSX0lOTElORSBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gdHJ5UGFyc2VEZXN0cnVjdHVy
aW5nUGF0dGVybkV4cHJlc3Npb24oVHJlZUJ1aWxkZXImLCBBc3NpZ25tZW50Q29udGV4dCk7CiAg
ICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZUV4cHJlc3Np
b24gcGFyc2VEZWZhdWx0VmFsdWVGb3JEZXN0cnVjdHVyaW5nUGF0dGVybihUcmVlQnVpbGRlciYp
OwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBh
cnNlTW9kdWxlU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImKTsKKyAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBwYXJzZU1vZHVsZVNvdXJjZUVsZW1l
bnRzKFRyZWVCdWlsZGVyJiwgTW9kdWxlUGFyc2VNb2RlKTsKICAgICBlbnVtIGNsYXNzIEltcG9y
dFNwZWNpZmllclR5cGUgeyBOYW1lc3BhY2VJbXBvcnQsIE5hbWVkSW1wb3J0LCBEZWZhdWx0SW1w
b3J0IH07CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVp
bGRlcjo6SW1wb3J0U3BlY2lmaWVyIHBhcnNlSW1wb3J0Q2xhdXNlSXRlbShUcmVlQnVpbGRlciYs
IEltcG9ydFNwZWNpZmllclR5cGUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
dHlwZW5hbWUgVHJlZUJ1aWxkZXI6Ok1vZHVsZVNwZWNpZmllciBwYXJzZU1vZHVsZVNwZWNpZmll
cihUcmVlQnVpbGRlciYpOwpAQCAtMTI1NSw3ICsxMjcwLDcgQEAgY2xhc3MgUGFyc2VyIHsKIAog
dGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2Rl
Pgotc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQ
YXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIEZ1bmN0aW9u
UGFyc2VNb2RlIHBhcnNlTW9kZSkKK3N0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJZGVudGlmaWVyJiBj
YWxsZWVOYW1lLCBGdW5jdGlvblBhcnNlTW9kZSBwYXJzZU1vZGUsIE1vZHVsZVBhcnNlTW9kZSBt
b2R1bGVQYXJzZU1vZGUpCiB7CiAgICAgaW50IGVyckxpbmU7CiAgICAgU3RyaW5nIGVyck1zZzsK
QEAgLTEyNzIsNyArMTI4Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJCiAgICAgQVNTRVJU
KG1fc291cmNlLT5zdGFydENvbHVtbigpID4gMCk7CiAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4g
PSBtX3NvdXJjZS0+c3RhcnRDb2x1bW4oKSAtIDE7CiAKLSAgICBTdHJpbmcgcGFyc2VFcnJvciA9
IHBhcnNlSW5uZXIoY2FsbGVlTmFtZSwgcGFyc2VNb2RlKTsKKyAgICBTdHJpbmcgcGFyc2VFcnJv
ciA9IHBhcnNlSW5uZXIoY2FsbGVlTmFtZSwgcGFyc2VNb2RlLCBtb2R1bGVQYXJzZU1vZGUpOwog
CiAgICAgaW50IGxpbmVOdW1iZXIgPSBtX2xleGVyLT5saW5lTnVtYmVyKCk7CiAgICAgYm9vbCBs
ZXhFcnJvciA9IG1fbGV4ZXItPnNhd0Vycm9yKCk7CkBAIC0xMzQwLDE1ICsxMzU1LDE2IEBAIHN0
ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICBjb25zdCBJZGVudGlmaWVyJiBu
YW1lLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLAogICAgIEpTUGFyc2VyU3RyaWN0
TW9kZSBzdHJpY3RNb2RlLCBKU1BhcnNlckNvZGVUeXBlIGNvZGVUeXBlLAogICAgIFBhcnNlckVy
cm9yJiBlcnJvciwgSlNUZXh0UG9zaXRpb24qIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBu
dWxscHRyLAotICAgIEZ1bmN0aW9uUGFyc2VNb2RlIHBhcnNlTW9kZSA9IE5vdEFGdW5jdGlvbk1v
ZGUsIENvbnN0cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kID0gQ29uc3RydWN0b3JL
aW5kOjpOb25lLCAKLSAgICBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpD
aGVja0lmTmVlZGVkKQorICAgIEZ1bmN0aW9uUGFyc2VNb2RlIHBhcnNlTW9kZSA9IE5vdEFGdW5j
dGlvbk1vZGUsIENvbnN0cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kID0gQ29uc3Ry
dWN0b3JLaW5kOjpOb25lLAorICAgIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlID0gVGhpc1REWk1v
ZGU6OkNoZWNrSWZOZWVkZWQsCisgICAgTW9kdWxlUGFyc2VNb2RlIG1vZHVsZVBhcnNlTW9kZSA9
IE1vZHVsZVBhcnNlTW9kZTo6QW5hbHl6ZSkKIHsKICAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGlu
Z1JlZ2lvbigiUGFyc2luZyIpOwogCiAgICAgQVNTRVJUKCFzb3VyY2UucHJvdmlkZXIoKS0+c291
cmNlKCkuaXNOdWxsKCkpOwogICAgIGlmIChzb3VyY2UucHJvdmlkZXIoKS0+c291cmNlKCkuaXM4
Qml0KCkpIHsKICAgICAgICAgUGFyc2VyPExleGVyPExDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2Us
IGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBjb2RlVHlwZSwgZGVmYXVsdENvbnN0cnVjdG9yS2lu
ZCwgdGhpc1REWk1vZGUpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVz
dWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUpOwor
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNl
PFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUsIG1vZHVsZVBhcnNlTW9kZSk7CiAg
ICAgICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAgICAgICAgKnBvc2l0
aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgp
OwogICAgICAgICBpZiAoYnVpbHRpbk1vZGUgPT0gSlNQYXJzZXJCdWlsdGluTW9kZTo6QnVpbHRp
bikgewpAQCAtMTM2MSw3ICsxMzc3LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBh
cnNlKAogICAgIH0KICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGRlZmF1bHRDb25zdHJ1Y3Rvcktp
bmQgPT0gQ29uc3RydWN0b3JLaW5kOjpOb25lLCAiQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVE
ZWZhdWx0Q29uc3RydWN0b3Igc2hvdWxkIGFsd2F5cyB1c2UgYSA4LWJpdCBzdHJpbmciKTsKICAg
ICBQYXJzZXI8TGV4ZXI8VUNoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0
cmljdE1vZGUsIGNvZGVUeXBlLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERaTW9kZSk7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQ
YXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1l
LCBwYXJzZU1vZGUsIG1vZHVsZVBhcnNlTW9kZSk7CiAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFz
dE5ld2xpbmUpCiAgICAgICAgICpwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBv
c2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsKICAgICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCmluZGV4IGM0ZDYxNjdlYzgyZGM5Njc3
OTA0OTk2YjFjZTYzNmFiNzlkOTlkODIuLjQyMDQzNmVhMzA2YzE4NDkwOWMxODg0NDllODY4NTU0
OWQyNjRiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
TW9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgK
QEAgLTM4LDYgKzM4LDcgQEAgZW51bSBjbGFzcyBKU1BhcnNlckNvZGVUeXBlIHsgUHJvZ3JhbSwg
RnVuY3Rpb24sIE1vZHVsZSB9OwogZW51bSBjbGFzcyBDb25zdHJ1Y3RvcktpbmQgeyBOb25lLCBC
YXNlLCBEZXJpdmVkIH07CiBlbnVtIGNsYXNzIFN1cGVyQmluZGluZyB7IE5lZWRlZCwgTm90TmVl
ZGVkIH07CiBlbnVtIGNsYXNzIFRoaXNURFpNb2RlIHsgQWx3YXlzQ2hlY2ssIENoZWNrSWZOZWVk
ZWQgfTsKK2VudW0gY2xhc3MgTW9kdWxlUGFyc2VNb2RlIHsgQW5hbHl6ZSwgRXZhbHVhdGUgfTsK
IAogZW51bSBQcm9maWxlck1vZGUgeyBQcm9maWxlck9mZiwgUHJvZmlsZXJPbiB9OwogZW51bSBE
ZWJ1Z2dlck1vZGUgeyBEZWJ1Z2dlck9mZiwgRGVidWdnZXJPbiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaAppbmRleCA3NTAzNDVhM2E5OThjMjFhY2Jj
ZjllZGRjZmIwNmU3MDM1Yjk1ZWM4Li5kZDI2ODAyNzdmMDIyYjg2NTg0MWU0YTNjZDIwOGNmYmQy
MjBjOTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENo
ZWNrZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIu
aApAQCAtMjY1LDcgKzI2NSw3IEBAIGNsYXNzIFN5bnRheENoZWNrZXIgewogICAgIHZvaWQgYXBw
ZW5kSW1wb3J0U3BlY2lmaWVyKEltcG9ydFNwZWNpZmllckxpc3QsIEltcG9ydFNwZWNpZmllcikg
eyB9CiAgICAgaW50IGNyZWF0ZUltcG9ydERlY2xhcmF0aW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEltcG9ydFNwZWNpZmllckxpc3QsIE1vZHVsZVNwZWNpZmllcikgeyByZXR1cm4gU3RhdGVt
ZW50UmVzdWx0OyB9CiAgICAgaW50IGNyZWF0ZUV4cG9ydEFsbERlY2xhcmF0aW9uKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIE1vZHVsZVNwZWNpZmllcikgeyByZXR1cm4gU3RhdGVtZW50UmVzdWx0
OyB9Ci0gICAgaW50IGNyZWF0ZUV4cG9ydERlZmF1bHREZWNsYXJhdGlvbihjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBpbnQpIHsgcmV0dXJuIFN0YXRlbWVudFJlc3VsdDsgfQorICAgIGludCBjcmVh
dGVFeHBvcnREZWZhdWx0RGVjbGFyYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBj
b25zdCBJZGVudGlmaWVyJikgeyByZXR1cm4gU3RhdGVtZW50UmVzdWx0OyB9CiAgICAgaW50IGNy
ZWF0ZUV4cG9ydExvY2FsRGVjbGFyYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50KSB7
IHJldHVybiBTdGF0ZW1lbnRSZXN1bHQ7IH0KICAgICBpbnQgY3JlYXRlRXhwb3J0TmFtZWREZWNs
YXJhdGlvbihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBvcnRTcGVjaWZpZXJMaXN0LCBNb2R1
bGVTcGVjaWZpZXIpIHsgcmV0dXJuIFN0YXRlbWVudFJlc3VsdDsgfQogICAgIEV4cG9ydFNwZWNp
ZmllciBjcmVhdGVFeHBvcnRTcGVjaWZpZXIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3Qg
SWRlbnRpZmllciYsIGNvbnN0IElkZW50aWZpZXImKSB7IHJldHVybiBFeHBvcnRTcGVjaWZpZXJS
ZXN1bHQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFi
bGVFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxl
RW52aXJvbm1lbnQuY3BwCmluZGV4IDljY2UzZjhkMjgwZmZhNTA5OThlMjAxZWViMDMyMmJkZTc1
ZjM2NDcuLmVkMDU1Zjk4YTk0OWNhM2FjMGFjODE3NmI0NWJlOGQ0NGMzMmNhMzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNw
cApAQCAtODEsNCArODEsMTggQEAgdm9pZCBWYXJpYWJsZUVudmlyb25tZW50Ojpzd2FwKFZhcmlh
YmxlRW52aXJvbm1lbnQmIG90aGVyKQogICAgIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQgPSBvdGhl
ci5tX2lzRXZlcnl0aGluZ0NhcHR1cmVkOwogfQogCit2b2lkIFZhcmlhYmxlRW52aXJvbm1lbnQ6
Om1hcmtWYXJpYWJsZUFzSW1wb3J0ZWQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYg
aWRlbnRpZmllcikKK3sKKyAgICBhdXRvIGZpbmRSZXN1bHQgPSBtX21hcC5maW5kKGlkZW50aWZp
ZXIpOworICAgIFJFTEVBU0VfQVNTRVJUKGZpbmRSZXN1bHQgIT0gbV9tYXAuZW5kKCkpOworICAg
IGZpbmRSZXN1bHQtPnZhbHVlLnNldElzSW1wb3J0ZWQoKTsKK30KKwordm9pZCBWYXJpYWJsZUVu
dmlyb25tZW50OjptYXJrVmFyaWFibGVBc0V4cG9ydGVkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3Ry
aW5nSW1wbD4mIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBmaW5kUmVzdWx0ID0gbV9tYXAuZmlu
ZChpZGVudGlmaWVyKTsKKyAgICBSRUxFQVNFX0FTU0VSVChmaW5kUmVzdWx0ICE9IG1fbWFwLmVu
ZCgpKTsKKyAgICBmaW5kUmVzdWx0LT52YWx1ZS5zZXRJc0V4cG9ydGVkKCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9W
YXJpYWJsZUVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Zhcmlh
YmxlRW52aXJvbm1lbnQuaAppbmRleCA3MzhlNjUxOWMxZTIwYWFkNGRmNDU3NzYwNzAwYjZjMWU2
YTQ5M2M3Li41ZWQyYTZiZGE5MjgzOGUyOTY0ODJmNjZjMDc4NWEzNjExYWU2MTVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaApA
QCAtMzgsMTEgKzM4LDE1IEBAIHN0cnVjdCBWYXJpYWJsZUVudmlyb25tZW50RW50cnkgewogICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBpc0NvbnN0KCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXND
b25zdDsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1ZhcigpIGNvbnN0IHsgcmV0dXJuIG1f
Yml0cyAmIElzVmFyOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzTGV0KCkgY29uc3QgeyBy
ZXR1cm4gbV9iaXRzICYgSXNMZXQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNFeHBvcnRl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzRXhwb3J0ZWQ7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgaXNJbXBvcnRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzSW1wb3J0ZWQ7
IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0NhcHR1cmVkKCkgeyBtX2JpdHMgfD0g
SXNDYXB0dXJlZDsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0NvbnN0KCkgeyBtX2Jp
dHMgfD0gSXNDb25zdDsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1ZhcigpIHsgbV9i
aXRzIHw9IElzVmFyOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzTGV0KCkgeyBtX2Jp
dHMgfD0gSXNMZXQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNFeHBvcnRlZCgpIHsg
bV9iaXRzIHw9IElzRXhwb3J0ZWQ7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNJbXBv
cnRlZCgpIHsgbV9iaXRzIHw9IElzSW1wb3J0ZWQ7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBjbGVhcklzVmFyKCkgeyBtX2JpdHMgJj0gfklzVmFyOyB9CiAKQEAgLTUxLDcgKzU1LDkgQEAg
c3RydWN0IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSB7CiAgICAgICAgIElzQ2FwdHVyZWQgPSAx
IDw8IDAsCiAgICAgICAgIElzQ29uc3QgPSAxIDw8IDEsCiAgICAgICAgIElzVmFyID0gMSA8PCAy
LAotICAgICAgICBJc0xldCA9IDEgPDwgMworICAgICAgICBJc0xldCA9IDEgPDwgMywKKyAgICAg
ICAgSXNFeHBvcnRlZCA9IDEgPDwgNCwKKyAgICAgICAgSXNJbXBvcnRlZCA9IDEgPDwgNQogICAg
IH07CiAgICAgdWludDhfdCBtX2JpdHMgeyAwIH07CiB9OwpAQCAtNzksNiArODUsOCBAQCBjbGFz
cyBWYXJpYWJsZUVudmlyb25tZW50IHsKICAgICB2b2lkIG1hcmtBbGxWYXJpYWJsZXNBc0NhcHR1
cmVkKCk7CiAgICAgYm9vbCBoYXNDYXB0dXJlZFZhcmlhYmxlcygpIGNvbnN0OwogICAgIGJvb2wg
Y2FwdHVyZXMoVW5pcXVlZFN0cmluZ0ltcGwqIGlkZW50aWZpZXIpIGNvbnN0OworICAgIHZvaWQg
bWFya1ZhcmlhYmxlQXNJbXBvcnRlZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBp
ZGVudGlmaWVyKTsKKyAgICB2b2lkIG1hcmtWYXJpYWJsZUFzRXhwb3J0ZWQoY29uc3QgUmVmUHRy
PFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcik7CiAKIHByaXZhdGU6CiAgICAgTWFwIG1f
bWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmgKaW5kZXggNjQ1MWZmMzQ0OTBmYmI2NmJkMmFmMjFkYjc2MGZhNWU3ZDJiNWIxNC4uZDdh
ZTA3Nzk1YWY5ZTY5M2M5ZTM4NGZiZjNmNTFmMzZjMWFhNTYzMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0zMDEsNiArMzAx
LDcgQEAKICAgICBtYWNybyhwcm9taXNlUmVqZWN0UmVhY3Rpb25zKSBcCiAgICAgbWFjcm8ocHJv
bWlzZVJlc3VsdCkgXAogICAgIG1hY3JvKGNhcGFiaWxpdGllcykgXAorICAgIG1hY3JvKHN0YXJE
ZWZhdWx0KSBcCiAKIAogbmFtZXNwYWNlIEpTQyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbXBsZXRpb24uY3BwCmluZGV4IGFiYWZmN2VjYjljZGIyOWRlZjg3MmJiNTZlYzBj
YTdjNjFjNGU5MWIuLmYyYTdmOWVkNmYwZWM3ZWNmOWJhMzdmYjJjYzY3MTBmZjE1ZmNkOWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCkBAIC0zMSw2
ICszMSw4IEBACiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKU0xvY2su
aCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiTW9kdWxlQW5hbHl6ZXIuaCIK
KyNpbmNsdWRlICJNb2R1bGVSZWNvcmQuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKICNpbmNsdWRl
IDx3dGYvV1RGVGhyZWFkRGF0YS5oPgogCkBAIC02NSw5ICs2NywxNSBAQCBib29sIGNoZWNrTW9k
dWxlU3ludGF4KFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYg
ZXJyb3IpCiB7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sodm0pOwogICAgIFJFTEVBU0VfQVNTRVJU
KHZtLmF0b21pY1N0cmluZ1RhYmxlKCkgPT0gd3RmVGhyZWFkRGF0YSgpLmF0b21pY1N0cmluZ1Rh
YmxlKCkpOwotICAgIHJldHVybiAhIXBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8TW9kdWxlUHJvZ3JhbU5vZGU+IG1vZHVsZVByb2dyYW1Ob2RlID0gcGFyc2U8
TW9kdWxlUHJvZ3JhbU5vZGU+KAogICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBK
U1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAogICAgICAgICBKU1BhcnNlclN0cmljdE1v
ZGU6OlN0cmljdCwgSlNQYXJzZXJDb2RlVHlwZTo6TW9kdWxlLCBlcnJvcik7CisgICAgaWYgKCFt
b2R1bGVQcm9ncmFtTm9kZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgTW9kdWxlQW5h
bHl6ZXIgbW9kdWxlQW5hbHl6ZXIodm0sIG1vZHVsZVByb2dyYW1Ob2RlLT52YXJEZWNsYXJhdGlv
bnMoKSwgbW9kdWxlUHJvZ3JhbU5vZGUtPmxleGljYWxWYXJpYWJsZXMoKSk7CisgICAgbW9kdWxl
QW5hbHl6ZXIuYW5hbHl6ZSgqbW9kdWxlUHJvZ3JhbU5vZGUpOworICAgIHJldHVybiB0cnVlOwog
fQogCiBKU1ZhbHVlIGV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU291cmNlQ29kZSYg
c291cmNlLCBKU1ZhbHVlIHRoaXNWYWx1ZSwgTmFrZWRQdHI8RXhjZXB0aW9uPiYgcmV0dXJuZWRF
eGNlcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKaW5kZXggYzYw
ZGE5ZDEwNDc4YzI5ZjcxY2MzZTM3MWY4YmIyYWFlZTlkMTQ3MS4uY2UwYzA3YmQxNjc0MzgyN2Vk
MmNmZjI5Zjc2NjliNDM1Mjg4YWEzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuaApAQCAtMzIwLDYgKzMyMCw4IEBAIHR5cGVkZWYgY29uc3QgY2hhciogb3B0aW9uU3Ry
aW5nOwogICAgIFwKICAgICB2KGJvb2wsIGVuYWJsZURvbGxhclZNLCBmYWxzZSwgImluc3RhbGxz
IHRoZSAkdm0gZGVidWdnaW5nIHRvb2wgaW4gZ2xvYmFsIG9iamVjdHMiKSBcCiAgICAgdihvcHRp
b25TdHJpbmcsIGZ1bmN0aW9uT3ZlcnJpZGVzLCBudWxscHRyLCAiZmlsZSB3aXRoIGRlYnVnZ2lu
ZyBvdmVycmlkZXMgZm9yIGZ1bmN0aW9uIGJvZGllcyIpIFwKKyAgICBcCisgICAgdihib29sLCBk
dW1wTW9kdWxlUmVjb3JkLCBmYWxzZSwgbnVsbHB0cikgXAogCiBjbGFzcyBPcHRpb25zIHsKIHB1
YmxpYzoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258918</attachid>
            <date>2015-08-13 12:59:40 -0700</date>
            <delta_ts>2015-08-13 13:53:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147353-20150813125923.patch</filename>
            <type>text/plain</type>
            <size>72598</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4Mzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
NWRmZmI1YjAyNDM0Y2NlZThmMDBlY2JhZjU5NzI3MmI5NTQ3ODRkLi40MjdlMmZhODA4ZGQzMWEz
MWU1ZWRkZTBiNzRiMGY3YzFjNjExNzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwxMDIgQEAKKzIwMTUtMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgVW5pZnkgSlNQYXJzZXJDb2RlVHlwZSwgRnVuY3Rpb25QYXJzZU1v
ZGUgYW5kIE1vZHVsZVBhcnNlTW9kZSBpbnRvIFNvdXJjZVBhcnNlTW9kZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3MzUzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgZm9sbG93LXVw
IHBhdGNoIGFmdGVyIHIxODgzNTUuCisgICAgICAgIEl0IGluY2x1ZGVzIHRoZSBmb2xsb3dpbmcg
Y2hhbmdlcy4KKworICAgICAgICAgICAgKiBVbmlmeSBKU1BhcnNlckNvZGVUeXBlLCBGdW5jdGlv
blBhcnNlTW9kZSBhbmQgTW9kdWxlUGFyc2VNb2RlIGludG8gU291cmNlUGFyc2VNb2RlLgorICAg
ICAgICAgICAgKiBNYWtlIFNvdXJjZVBhcnNlTW9kZSB0byBDKysgc3Ryb25nbHktdHlwZWQgZW51
bS4KKyAgICAgICAgICAgICogRml4IHRoZSBjb21tZW50cy4KKyAgICAgICAgICAgICogUmVuYW1l
IE1vZHVsZVNwZWNpZmllciB0byBNb2R1bGVOYW1lLgorCisgICAgICAgICogQVBJL0pTU2NyaXB0
UmVmLmNwcDoKKyAgICAgICAgKHBhcnNlU2NyaXB0KToKKyAgICAgICAgKiBidWlsdGlucy9CdWls
dGluRXhlY3V0YWJsZXMuY3BwOgorICAgICAgICAoSlNDOjpCdWlsdGluRXhlY3V0YWJsZXM6OmNy
ZWF0ZUV4ZWN1dGFibGVJbnRlcm5hbCk6CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJs
b2NrKToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5oOgor
ICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6bWFrZUZ1bmN0aW9uKToKKyAgICAgICAgKiBwYXJzZXIvQVNU
QnVpbGRlci5oOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVGdW5jdGlvbk1ldGFk
YXRhKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlTW9kdWxlTmFtZSk6CisgICAg
ICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUltcG9ydERlY2xhcmF0aW9uKToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlRXhwb3J0QWxsRGVjbGFyYXRpb24pOgorICAgICAgICAo
SlNDOjpBU1RCdWlsZGVyOjpjcmVhdGVFeHBvcnROYW1lZERlY2xhcmF0aW9uKToKKyAgICAgICAg
KEpTQzo6QVNUQnVpbGRlcjo6Y3JlYXRlTW9kdWxlU3BlY2lmaWVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBwYXJzZXIvTW9kdWxlQW5hbHl6ZXIuY3BwOgorICAgICAgICAoSlNDOjpNb2R1bGVBbmFs
eXplcjo6YW5hbHl6ZSk6CisgICAgICAgICogcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaDoKKyAg
ICAgICAgKEpTQzo6TW9kdWxlTmFtZU5vZGU6Ok1vZHVsZU5hbWVOb2RlKToKKyAgICAgICAgKEpT
Qzo6SW1wb3J0RGVjbGFyYXRpb25Ob2RlOjpJbXBvcnREZWNsYXJhdGlvbk5vZGUpOgorICAgICAg
ICAoSlNDOjpFeHBvcnRBbGxEZWNsYXJhdGlvbk5vZGU6OkV4cG9ydEFsbERlY2xhcmF0aW9uTm9k
ZSk6CisgICAgICAgIChKU0M6OkV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlOjpFeHBvcnROYW1l
ZERlY2xhcmF0aW9uTm9kZSk6CisgICAgICAgIChKU0M6Ok1vZHVsZVNwZWNpZmllck5vZGU6Ok1v
ZHVsZVNwZWNpZmllck5vZGUpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5jcHA6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9k
ZSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgIChKU0M6OlN0YXRlbWVudE5v
ZGU6OmlzTW9kdWxlRGVjbGFyYXRpb25Ob2RlKToKKyAgICAgICAgKEpTQzo6TW9kdWxlRGVjbGFy
YXRpb25Ob2RlOjppc01vZHVsZURlY2xhcmF0aW9uTm9kZSk6CisgICAgICAgIChKU0M6OkltcG9y
dERlY2xhcmF0aW9uTm9kZTo6bW9kdWxlTmFtZSk6CisgICAgICAgIChKU0M6OkV4cG9ydEFsbERl
Y2xhcmF0aW9uTm9kZTo6bW9kdWxlTmFtZSk6CisgICAgICAgIChKU0M6OkV4cG9ydE5hbWVkRGVj
bGFyYXRpb25Ob2RlOjptb2R1bGVOYW1lKToKKyAgICAgICAgKEpTQzo6SW1wb3J0RGVjbGFyYXRp
b25Ob2RlOjptb2R1bGVTcGVjaWZpZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpFeHBvcnRB
bGxEZWNsYXJhdGlvbk5vZGU6Om1vZHVsZVNwZWNpZmllcik6IERlbGV0ZWQuCisgICAgICAgIChK
U0M6OkV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlOjptb2R1bGVTcGVjaWZpZXIpOiBEZWxldGVk
LgorICAgICAgICAqIHBhcnNlci9Ob2Rlc0FuYWx5emVNb2R1bGUuY3BwOgorICAgICAgICAoSlND
OjpTb3VyY2VFbGVtZW50czo6YW5hbHl6ZU1vZHVsZSk6CisgICAgICAgIChKU0M6OkltcG9ydERl
Y2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZSk6CisgICAgICAgIChKU0M6OkV4cG9ydEFsbERl
Y2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZSk6CisgICAgICAgIChKU0M6OkV4cG9ydE5hbWVk
RGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OlBhcnNlcik6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKToKKyAgICAgICAgKEpTQzo6UGFy
c2VyPExleGVyVHlwZT46OnBhcnNlTW9kdWxlU291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlND
OjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkJvZHkpOgorICAgICAgICAoSlNDOjpz
dHJpbmdGb3JGdW5jdGlvbk1vZGUpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VGdW5jdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VGdW5jdGlvbkluZm8pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlQ2xhc3MpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VN
b2R1bGVOYW1lKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW1wb3J0
RGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBv
cnREZWNsYXJhdGlvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVBy
b3BlcnR5TWV0aG9kKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2V0
dGVyU2V0dGVyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJpbWFy
eUV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBcnJv
d0Z1bmN0aW9uRXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZU1vZHVsZVNwZWNpZmllcik6IERlbGV0ZWQuCisgICAgICAgICogcGFyc2VyL1BhcnNlci5o
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UpOgorICAgICAgICAoSlND
OjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlck1vZGVzLmg6CisgICAgICAgIChKU0M6
OmlzRnVuY3Rpb25QYXJzZU1vZGUpOgorICAgICAgICAoSlNDOjppc01vZHVsZVBhcnNlTW9kZSk6
CisgICAgICAgIChKU0M6OmlzUHJvZ3JhbVBhcnNlTW9kZSk6CisgICAgICAgICogcGFyc2VyL1N5
bnRheENoZWNrZXIuaDoKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRnVuY3Rp
b25NZXRhZGF0YSk6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZU1vZHVsZU5h
bWUpOgorICAgICAgICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVJbXBvcnREZWNsYXJhdGlv
bik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZUV4cG9ydEFsbERlY2xhcmF0
aW9uKToKKyAgICAgICAgKEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlRXhwb3J0TmFtZWREZWNs
YXJhdGlvbik6CisgICAgICAgIChKU0M6OlN5bnRheENoZWNrZXI6OmNyZWF0ZU1vZHVsZVNwZWNp
Zmllcik6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9Db2RlQ2FjaGUuY3BwOgorICAgICAg
ICAoSlNDOjpDb2RlQ2FjaGU6OmdldEdsb2JhbENvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNv
ZGVDYWNoZTo6Z2V0RnVuY3Rpb25FeGVjdXRhYmxlRnJvbUdsb2JhbENvZGUpOgorICAgICAgICAq
IHJ1bnRpbWUvQ29tcGxldGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNoZWNrU3ludGF4KToKKyAg
ICAgICAgKEpTQzo6Y2hlY2tNb2R1bGVTeW50YXgpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0
YWJsZS5jcHA6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpjaGVja1N5bnRheCk6
CisgICAgICAgICogdGVzdHMvc3RyZXNzL21vZHVsZXMtc3ludGF4LWVycm9yLXdpdGgtbmFtZXMu
anM6CisKIDIwMTUtMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+
CiAKICAgICAgICAgWC5bW1NldFByb3RvdHlwZU9mXV0oWSkgc2hvdWxkIHN1Y2NlZWQgaWYgWC5b
W1Byb3RvdHlwZV1dIGlzIGFscmVhZHkgWSBldmVuIGlmIFggaXMgbm90IGV4dGVuc2libGUKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzkzMAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCmluZGV4IGMyMGFmNmRmMmYw
ZjljMmFiOTRlODZiNzFmMTM5MzExMmRiODExM2UuLjNiN2I3NmJmM2E0NDRjOTIxYmU5NzNjNTc2
YzE5ZjY5MmU4ZDIzMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNT
Y3JpcHRSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYu
Y3BwCkBAIC03MCw4ICs3MCw4IEBAIHN0cnVjdCBPcGFxdWVKU1NjcmlwdCA6IHB1YmxpYyBTb3Vy
Y2VQcm92aWRlciB7CiBzdGF0aWMgYm9vbCBwYXJzZVNjcmlwdChWTSogdm0sIGNvbnN0IFNvdXJj
ZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogewogICAgIHJldHVybiAhIUpTQzo6
cGFyc2U8SlNDOjpQcm9ncmFtTm9kZT4oCi0gICAgICAgIHZtLCBzb3VyY2UsIElkZW50aWZpZXIo
KSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgCi0gICAgICAgIEpTUGFyc2VyU3Ry
aWN0TW9kZTo6Tm90U3RyaWN0LCBKU1BhcnNlckNvZGVUeXBlOjpQcm9ncmFtLCAKKyAgICAgICAg
dm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGlu
LAorICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2Rl
OjpQcm9ncmFtTW9kZSwgCiAgICAgICAgIGVycm9yKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAppbmRleCBjNzVi
YWMwZmVhNzJlNDViMDFmNTZhNTNmMjgyN2ZiNzdkNzU2YWYyLi45MzcwZTdlMWZlNjU5YmFhZDEz
YmQwMjliN2I5YmZmNjg0NjJiZWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFibGVzLmNwcApAQCAtNjksOSArNjksOSBAQCBVbmxp
bmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogQnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRh
YmxlSW50ZXJuYWwoY29uc3QgUwogICAgIFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQgPSBpc1Bh
cnNpbmdEZWZhdWx0Q29uc3RydWN0b3IgPyBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uIDogVW5saW5r
ZWRCdWlsdGluRnVuY3Rpb247CiAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VPdmVy
cmlkZSA9IGlzUGFyc2luZ0RlZmF1bHRDb25zdHJ1Y3RvciA/IHNvdXJjZS5wcm92aWRlcigpIDog
bnVsbHB0cjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJz
ZTxQcm9ncmFtTm9kZT4oCi0gICAgICAgICZtX3ZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgYnVp
bHRpbk1vZGUsIAotICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgSlNQYXJz
ZXJDb2RlVHlwZTo6UHJvZ3JhbSwgZXJyb3IsIAotICAgICAgICAmcG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZSwgRnVuY3Rpb25QYXJzZU1vZGU6Ok5vdEFGdW5jdGlvbk1vZGUsIGNvbnN0cnVjdG9y
S2luZCk7CisgICAgICAgICZtX3ZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1vZGUs
CisgICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6
OlByb2dyYW1Nb2RlLCBlcnJvciwKKyAgICAgICAgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUs
IGNvbnN0cnVjdG9yS2luZCk7CiAKICAgICBpZiAoIXByb2dyYW0pIHsKICAgICAgICAgZGF0YUxv
ZygiRmF0YWwgZXJyb3IgY29tcGlsaW5nIGJ1aWx0aW4gZnVuY3Rpb24gJyIsIG5hbWUuc3RyaW5n
KCksICInOiAiLCBlcnJvci5tZXNzYWdlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5k
ZXggYTUyZjM2NjQwMTI1YmMwNzFiYjk0NDQzZjZhZjVhOGIyYmZlYjc5NC4uMTg5MWNiOGM1Yzk5
MmY0M2Y2ZGMxZDVkZTA1MTlmZDExOTFmN2YyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3Bw
CkBAIC01NCw5ICs1NCw5IEBAIHN0YXRpYyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5l
cmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKAogewogICAgIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRp
bk1vZGUgPSBleGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpID8gSlNQYXJzZXJCdWlsdGlu
TW9kZTo6QnVpbHRpbiA6IEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW47CiAgICAgSlNQ
YXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4
dCgpID8gSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QgOiBKU1BhcnNlclN0cmljdE1vZGU6Ok5v
dFN0cmljdDsKKyAgICBBU1NFUlQoaXNGdW5jdGlvblBhcnNlTW9kZShleGVjdXRhYmxlLT5wYXJz
ZU1vZGUoKSkpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlvbk5vZGU+IGZ1bmN0aW9uID0g
cGFyc2U8RnVuY3Rpb25Ob2RlPigKLSAgICAgICAgJnZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPm5h
bWUoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIAotICAgICAgICBKU1BhcnNlckNvZGVUeXBl
OjpGdW5jdGlvbiwgZXJyb3IsIG51bGxwdHIsIGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpKTsKKyAg
ICAgICAgJnZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPm5hbWUoKSwgYnVpbHRpbk1vZGUsIHN0cmlj
dE1vZGUsIGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpLCBlcnJvciwgbnVsbHB0cik7CiAKICAgICBp
ZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAgIEFTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuaAppbmRleCAwYjRiMzMwYTRlYWM0NDBhNjNiNWQ3ZTM4M2ExMTYxN2FiZTk0
ZTEzLi42ZWFlOWYwYTJkMGRlYzg1MjNhYjJlOGNkNmEzMjVmY2FjYTIwZTU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFi
bGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUuaApAQCAtNzgsNyArNzgsNyBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIGNvbnN0IElkZW50aWZpZXImIGlu
ZmVycmVkTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faW5mZXJyZWROYW1lOyB9CiAgICAgSlNTdHJp
bmcqIG5hbWVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZVZhbHVlLmdldCgpOyB9CiAgICAg
dW5zaWduZWQgcGFyYW1ldGVyQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlckNvdW50
OyB9OwotICAgIEZ1bmN0aW9uUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFyc2VNb2RlOyB9OworICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJl
dHVybiBtX3BhcnNlTW9kZTsgfTsKICAgICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3Qg
eyByZXR1cm4gbV9pc0luU3RyaWN0Q29udGV4dDsgfQogICAgIEZ1bmN0aW9uTW9kZSBmdW5jdGlv
bk1vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxGdW5jdGlvbk1vZGU+KG1fZnVuY3Rp
b25Nb2RlKTsgfQogICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxDb25zdHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsg
fQpAQCAtMTQ2LDcgKzE0Niw3IEBAIGNsYXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZp
bmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgdW5zaWduZWQgbV90eXBlUHJvZmlsaW5nU3RhcnRP
ZmZzZXQ7CiAgICAgdW5zaWduZWQgbV90eXBlUHJvZmlsaW5nRW5kT2Zmc2V0OwogICAgIHVuc2ln
bmVkIG1fcGFyYW1ldGVyQ291bnQ7Ci0gICAgRnVuY3Rpb25QYXJzZU1vZGUgbV9wYXJzZU1vZGU7
CisgICAgU291cmNlUGFyc2VNb2RlIG1fcGFyc2VNb2RlOwogCiAgICAgQ29kZUZlYXR1cmVzIG1f
ZmVhdHVyZXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCA0ZGM2ZTljZTUwZjM3Njg5ZjdjOWI5ZjIxNjc1
ODhlZjQ2MTFjMjk1Li4zM2ExNWMxZmY5YjEwNTM1ZDA0MTQ3ZjFhZjZmMjZkY2Q4MTU0OWE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5oCkBAIC03MTcsOSArNzE3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICBWYXJpYWJsZUVudmlyb25tZW50IHZhcmlhYmxlc1VuZGVyVERaOwogICAgICAgICAgICAg
Z2V0VmFyaWFibGVzVW5kZXJURFoodmFyaWFibGVzVW5kZXJURFopOwogCi0gICAgICAgICAgICBG
dW5jdGlvblBhcnNlTW9kZSBwYXJzZU1vZGUgPSBtZXRhZGF0YS0+cGFyc2VNb2RlKCk7CisgICAg
ICAgICAgICBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlID0gbWV0YWRhdGEtPnBhcnNlTW9kZSgp
OwogICAgICAgICAgICAgQ29uc3RydWN0QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3Ry
dWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0OwotICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBH
ZXR0ZXJNb2RlIHx8IHBhcnNlTW9kZSA9PSBTZXR0ZXJNb2RlIHx8IHBhcnNlTW9kZSA9PSBBcnJv
d0Z1bmN0aW9uTW9kZSB8fCAocGFyc2VNb2RlID09IE1ldGhvZE1vZGUgJiYgbWV0YWRhdGEtPmNv
bnN0cnVjdG9yS2luZCgpID09IENvbnN0cnVjdG9yS2luZDo6Tm9uZSkpCisgICAgICAgICAgICBp
ZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZSB8fCBwYXJzZU1vZGUg
PT0gU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlIHx8IHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJz
ZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlIHx8IChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2Rl
OjpNZXRob2RNb2RlICYmIG1ldGFkYXRhLT5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3Rv
cktpbmQ6Ok5vbmUpKQogICAgICAgICAgICAgICAgIGNvbnN0cnVjdEFiaWxpdHkgPSBDb25zdHJ1
Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3Q7CiAKICAgICAgICAgICAgIHJldHVybiBVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwg
bWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6
IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIGNvbnN0cnVjdEFiaWxpdHksIHZhcmlhYmxlc1VuZGVy
VERaKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggYzEx
OTU5ODBhMjBkMzgwM2Q1M2ExN2EyNWVmNTQ1YmFlMTBlZTUxNy4uN2I1ODc3MzBhNmYwMzU0NDBk
YjkwZDljNDI2ODBhZDU3OGI5NGE2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9B
U1RCdWlsZGVyLmgKQEAgLTExMiw3ICsxMTIsNyBAQCBjbGFzcyBBU1RCdWlsZGVyIHsKICNpZiBF
TkFCTEUoRVM2X0NMQVNTX1NZTlRBWCkKICAgICB0eXBlZGVmIENsYXNzRXhwck5vZGUqIENsYXNz
RXhwcmVzc2lvbjsKICNlbmRpZgotICAgIHR5cGVkZWYgTW9kdWxlU3BlY2lmaWVyTm9kZSogTW9k
dWxlU3BlY2lmaWVyOworICAgIHR5cGVkZWYgTW9kdWxlTmFtZU5vZGUqIE1vZHVsZU5hbWU7CiAg
ICAgdHlwZWRlZiBJbXBvcnRTcGVjaWZpZXJOb2RlKiBJbXBvcnRTcGVjaWZpZXI7CiAgICAgdHlw
ZWRlZiBJbXBvcnRTcGVjaWZpZXJMaXN0Tm9kZSogSW1wb3J0U3BlY2lmaWVyTGlzdDsKICAgICB0
eXBlZGVmIEV4cG9ydFNwZWNpZmllck5vZGUqIEV4cG9ydFNwZWNpZmllcjsKQEAgLTM2MSw3ICsz
NjEsNyBAQCBjbGFzcyBBU1RCdWlsZGVyIHsKICAgICAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBzdGFydExvY2F0aW9uLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCAKICAg
ICAgICAgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0
aW9uS2V5d29yZFN0YXJ0LCAKICAgICAgICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFy
YW1ldGVyc1N0YXJ0LCBib29sIGluU3RyaWN0Q29udGV4dCwgCi0gICAgICAgIENvbnN0cnVjdG9y
S2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBGdW5jdGlvblBh
cnNlTW9kZSBtb2RlKQorICAgICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCB1
bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgU291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgewogICAg
ICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAg
ICAgICAgICAgIG1fcGFyc2VyQXJlbmEsIHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzdGFy
dENvbHVtbiwgZW5kQ29sdW1uLCAKQEAgLTYxOSw5ICs2MTksOSBAQCBjbGFzcyBBU1RCdWlsZGVy
IHsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBNb2R1bGVTcGVjaWZpZXJO
b2RlKiBjcmVhdGVNb2R1bGVTcGVjaWZpZXIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSkKKyAgICBNb2R1bGVOYW1lTm9kZSogY3Jl
YXRlTW9kdWxlTmFtZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVu
dGlmaWVyJiBtb2R1bGVOYW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJB
cmVuYSkgTW9kdWxlU3BlY2lmaWVyTm9kZShsb2NhdGlvbiwgbW9kdWxlTmFtZSk7CisgICAgICAg
IHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIE1vZHVsZU5hbWVOb2RlKGxvY2F0aW9uLCBtb2R1
bGVOYW1lKTsKICAgICB9CiAKICAgICBJbXBvcnRTcGVjaWZpZXJOb2RlKiBjcmVhdGVJbXBvcnRT
cGVjaWZpZXIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmll
ciYgaW1wb3J0ZWROYW1lLCBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUpCkBAIC02MzksMTQg
KzYzOSwxNCBAQCBjbGFzcyBBU1RCdWlsZGVyIHsKICAgICAgICAgc3BlY2lmaWVyTGlzdC0+YXBw
ZW5kKHNwZWNpZmllcik7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlSW1wb3J0
RGVjbGFyYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgSW1wb3J0U3BlY2lm
aWVyTGlzdE5vZGUqIGltcG9ydFNwZWNpZmllckxpc3QsIE1vZHVsZVNwZWNpZmllck5vZGUqIG1v
ZHVsZVNwZWNpZmllcikKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVJbXBvcnREZWNsYXJhdGlv
bihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBJbXBvcnRTcGVjaWZpZXJMaXN0Tm9k
ZSogaW1wb3J0U3BlY2lmaWVyTGlzdCwgTW9kdWxlTmFtZU5vZGUqIG1vZHVsZU5hbWUpCiAgICAg
ewotICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBJbXBvcnREZWNsYXJhdGlvbk5v
ZGUobG9jYXRpb24sIGltcG9ydFNwZWNpZmllckxpc3QsIG1vZHVsZVNwZWNpZmllcik7CisgICAg
ICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEltcG9ydERlY2xhcmF0aW9uTm9kZShsb2Nh
dGlvbiwgaW1wb3J0U3BlY2lmaWVyTGlzdCwgbW9kdWxlTmFtZSk7CiAgICAgfQogCi0gICAgU3Rh
dGVtZW50Tm9kZSogY3JlYXRlRXhwb3J0QWxsRGVjbGFyYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiBsb2NhdGlvbiwgTW9kdWxlU3BlY2lmaWVyTm9kZSogbW9kdWxlU3BlY2lmaWVyKQorICAg
IFN0YXRlbWVudE5vZGUqIGNyZWF0ZUV4cG9ydEFsbERlY2xhcmF0aW9uKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIE1vZHVsZU5hbWVOb2RlKiBtb2R1bGVOYW1lKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgRXhwb3J0QWxsRGVjbGFyYXRpb25Ob2Rl
KGxvY2F0aW9uLCBtb2R1bGVTcGVjaWZpZXIpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNl
ckFyZW5hKSBFeHBvcnRBbGxEZWNsYXJhdGlvbk5vZGUobG9jYXRpb24sIG1vZHVsZU5hbWUpOwog
ICAgIH0KIAogICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUV4cG9ydERlZmF1bHREZWNsYXJhdGlv
bihjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBTdGF0ZW1lbnROb2RlKiBkZWNsYXJh
dGlvbiwgY29uc3QgSWRlbnRpZmllciYgbG9jYWxOYW1lKQpAQCAtNjU5LDkgKzY1OSw5IEBAIGNs
YXNzIEFTVEJ1aWxkZXIgewogICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBFeHBv
cnRMb2NhbERlY2xhcmF0aW9uTm9kZShsb2NhdGlvbiwgZGVjbGFyYXRpb24pOwogICAgIH0KIAot
ICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUV4cG9ydE5hbWVkRGVjbGFyYXRpb24oY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwb3J0U3BlY2lmaWVyTGlzdE5vZGUqIGV4cG9ydFNw
ZWNpZmllckxpc3QsIE1vZHVsZVNwZWNpZmllck5vZGUqIG1vZHVsZVNwZWNpZmllcikKKyAgICBT
dGF0ZW1lbnROb2RlKiBjcmVhdGVFeHBvcnROYW1lZERlY2xhcmF0aW9uKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYgbG9jYXRpb24sIEV4cG9ydFNwZWNpZmllckxpc3ROb2RlKiBleHBvcnRTcGVjaWZp
ZXJMaXN0LCBNb2R1bGVOYW1lTm9kZSogbW9kdWxlTmFtZSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBuZXcgKG1fcGFyc2VyQXJlbmEpIEV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlKGxvY2F0aW9u
LCBleHBvcnRTcGVjaWZpZXJMaXN0LCBtb2R1bGVTcGVjaWZpZXIpOworICAgICAgICByZXR1cm4g
bmV3IChtX3BhcnNlckFyZW5hKSBFeHBvcnROYW1lZERlY2xhcmF0aW9uTm9kZShsb2NhdGlvbiwg
ZXhwb3J0U3BlY2lmaWVyTGlzdCwgbW9kdWxlTmFtZSk7CiAgICAgfQogCiAgICAgRXhwb3J0U3Bl
Y2lmaWVyTm9kZSogY3JlYXRlRXhwb3J0U3BlY2lmaWVyKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYg
bG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIGxvY2FsTmFtZSwgY29uc3QgSWRlbnRpZmllciYg
ZXhwb3J0ZWROYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9N
b2R1bGVBbmFseXplci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFu
YWx5emVyLmNwcAppbmRleCA5OTg0Mjc1YzYwMjU1NjZlNTU2MDY5NTE3ZDBlMDExOWU2OThkNTRl
Li5iMmRlOTYwYjM5MzI1ODQxY2Q5Zjg1YzY3MTYyMmMzZGY3YmE5ZDc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcApAQCAtMTAwLDEwICsx
MDAsMTAgQEAgdm9pZCBNb2R1bGVBbmFseXplcjo6ZXhwb3J0VmFyaWFibGUoY29uc3QgUmVmUHRy
PFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9jYWxOYW1lLAogUmVmPE1vZHVsZVJlY29yZD4gTW9kdWxl
QW5hbHl6ZXI6OmFuYWx5emUoTW9kdWxlUHJvZ3JhbU5vZGUmIG1vZHVsZVByb2dyYW1Ob2RlKQog
ewogICAgIC8vIFRyYXZlcnNlIHRoZSBtb2R1bGUgQVNUIGFuZCBjb2xsZWN0Ci0gICAgLy8gMS4g
SW1wb3J0IGVudHJpZXMKLSAgICAvLyAyLiBFeHBvcnQgZW50cmllcyB0aGF0IGhhdmUgRnJvbUNs
YXVzZSAoZS5nLiBleHBvcnQgeyBhIH0gZnJvbSAibW9kIikKLSAgICAvLyAzLiBFeHBvcnQgZW50
cmllcyB0aGF0IGhhdmUgc3RhciAoZS5nLiBleHBvcnQgKiBmcm9tICJtb2QiKQotICAgIC8vIDQu
IEFsaWFzZWQgZXhwb3J0IG5hbWVzIChlLmcuIGV4cG9ydCB7IGEgYXMgYiB9KQorICAgIC8vICog
SW1wb3J0IGVudHJpZXMKKyAgICAvLyAqIEV4cG9ydCBlbnRyaWVzIHRoYXQgaGF2ZSBGcm9tQ2xh
dXNlIChlLmcuIGV4cG9ydCB7IGEgfSBmcm9tICJtb2QiKQorICAgIC8vICogRXhwb3J0IGVudHJp
ZXMgdGhhdCBoYXZlIHN0YXIgKGUuZy4gZXhwb3J0ICogZnJvbSAibW9kIikKKyAgICAvLyAqIEFs
aWFzZWQgZXhwb3J0IG5hbWVzIChlLmcuIGV4cG9ydCB7IGEgYXMgYiB9KQogICAgIG1vZHVsZVBy
b2dyYW1Ob2RlLmFuYWx5emVNb2R1bGUoKnRoaXMpOwogCiAgICAgLy8gQmFzZWQgb24gdGhlIGNv
bGxlY3RlZCBpbmZvcm1hdGlvbiwgY2F0ZWdvcml6ZSBleHBvcnQgZW50cmllcyBpbnRvIDMgdHlw
ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1
Y3RvcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5o
CmluZGV4IDA0NTEwYmU1OTczZGQ5NDBiOWNkNjdjZWNhYjNiMzdjYjI0NmJlNmYuLmFiYjcyYTc0
ZTEyODg0OGVhOGI0M2ZkODYzNjk3NGNiOTk3YzM3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCkBAIC03MzgsNyArNzM4LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBNb2R1bGVTcGVjaWZpZXJO
b2RlOjpNb2R1bGVTcGVjaWZpZXJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpCisgICAgaW5saW5lIE1vZHVsZU5hbWVOb2Rl
OjpNb2R1bGVOYW1lTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJ
ZGVudGlmaWVyJiBtb2R1bGVOYW1lKQogICAgICAgICA6IE5vZGUobG9jYXRpb24pCiAgICAgICAg
ICwgbV9tb2R1bGVOYW1lKG1vZHVsZU5hbWUpCiAgICAgewpAQCAtNzUxLDE2ICs3NTEsMTYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAgIH0KIAotICAgIGlubGluZSBJbXBvcnREZWNsYXJh
dGlvbk5vZGU6OkltcG9ydERlY2xhcmF0aW9uTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxv
Y2F0aW9uLCBJbXBvcnRTcGVjaWZpZXJMaXN0Tm9kZSogaW1wb3J0U3BlY2lmaWVyTGlzdCwgTW9k
dWxlU3BlY2lmaWVyTm9kZSogbW9kdWxlU3BlY2lmaWVyKQorICAgIGlubGluZSBJbXBvcnREZWNs
YXJhdGlvbk5vZGU6OkltcG9ydERlY2xhcmF0aW9uTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBJbXBvcnRTcGVjaWZpZXJMaXN0Tm9kZSogaW1wb3J0U3BlY2lmaWVyTGlzdCwg
TW9kdWxlTmFtZU5vZGUqIG1vZHVsZU5hbWUpCiAgICAgICAgIDogTW9kdWxlRGVjbGFyYXRpb25O
b2RlKGxvY2F0aW9uKQogICAgICAgICAsIG1fc3BlY2lmaWVyTGlzdChpbXBvcnRTcGVjaWZpZXJM
aXN0KQotICAgICAgICAsIG1fbW9kdWxlU3BlY2lmaWVyKG1vZHVsZVNwZWNpZmllcikKKyAgICAg
ICAgLCBtX21vZHVsZU5hbWUobW9kdWxlTmFtZSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5l
IEV4cG9ydEFsbERlY2xhcmF0aW9uTm9kZTo6RXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIE1vZHVsZVNwZWNpZmllck5vZGUqIG1vZHVsZVNw
ZWNpZmllcikKKyAgICBpbmxpbmUgRXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlOjpFeHBvcnRBbGxE
ZWNsYXJhdGlvbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgTW9kdWxlTmFt
ZU5vZGUqIG1vZHVsZU5hbWUpCiAgICAgICAgIDogTW9kdWxlRGVjbGFyYXRpb25Ob2RlKGxvY2F0
aW9uKQotICAgICAgICAsIG1fbW9kdWxlU3BlY2lmaWVyKG1vZHVsZVNwZWNpZmllcikKKyAgICAg
ICAgLCBtX21vZHVsZU5hbWUobW9kdWxlTmFtZSkKICAgICB7CiAgICAgfQogCkBAIC03NzcsMTAg
Kzc3NywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEV4
cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlOjpFeHBvcnROYW1lZERlY2xhcmF0aW9uTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHBvcnRTcGVjaWZpZXJMaXN0Tm9kZSogZXhw
b3J0U3BlY2lmaWVyTGlzdCwgTW9kdWxlU3BlY2lmaWVyTm9kZSogbW9kdWxlU3BlY2lmaWVyKQor
ICAgIGlubGluZSBFeHBvcnROYW1lZERlY2xhcmF0aW9uTm9kZTo6RXhwb3J0TmFtZWREZWNsYXJh
dGlvbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwb3J0U3BlY2lmaWVy
TGlzdE5vZGUqIGV4cG9ydFNwZWNpZmllckxpc3QsIE1vZHVsZU5hbWVOb2RlKiBtb2R1bGVOYW1l
KQogICAgICAgICA6IE1vZHVsZURlY2xhcmF0aW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBt
X3NwZWNpZmllckxpc3QoZXhwb3J0U3BlY2lmaWVyTGlzdCkKLSAgICAgICAgLCBtX21vZHVsZVNw
ZWNpZmllcihtb2R1bGVTcGVjaWZpZXIpCisgICAgICAgICwgbV9tb2R1bGVOYW1lKG1vZHVsZU5h
bWUpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApp
bmRleCA1NWExODNiZjc5MGEzMzdhYzU2ZDI2NjcxZjI4YTVlMzg0MjU3NDAwLi5jZjRmZTQ1MGE5
MjQ5NTA0ZjMwYmE4NWEyNjRlNjdiYWE5YTU1Yzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmNwcApAQCAtMTUxLDcgKzE1MSw3IEBAIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpG
dW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgc3RhcnRMb2NhdGlvbiwgCiAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2Nh
dGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgCiAgICAgaW50
IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0
ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAotICAgIENvbnN0cnVjdG9yS2luZCBj
b25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBGdW5jdGlvblBhcnNlTW9k
ZSBtb2RlKQorICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBh
cmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSkKICAgICAgICAgOiBOb2RlKGVuZExv
Y2F0aW9uKQogICAgICAgICAsIG1fc3RhcnRDb2x1bW4oc3RhcnRDb2x1bW4pCiAgICAgICAgICwg
bV9lbmRDb2x1bW4oZW5kQ29sdW1uKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmlu
ZGV4IDA0NzRmMjIwMjc1NmY1ZGU5YTk4ZWY0NjhlNmVmOTYxMzIzMzc0Y2EuLjFkNmIwM2Q3NzY2
Mjk3YWUxNzU5M2JiYTlhZWM1NjA5MzI5MzBjMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmgKQEAgLTIwMyw2ICsyMDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmly
dHVhbCBib29sIGlzQ29udGludWUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2
aXJ0dWFsIGJvb2wgaXNCbG9jaygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc0Z1bmNEZWNsTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc01vZHVsZURlY2xhcmF0aW9uTm9kZSgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIG1fbmV4
dDsKQEAgLTE2NDEsOSArMTY0Miw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25l
ZCBtX2VuZENvbHVtbjsKICAgICB9OwogCi0gICAgY2xhc3MgTW9kdWxlU3BlY2lmaWVyTm9kZSA6
IHB1YmxpYyBOb2RlIHsKKyAgICBjbGFzcyBNb2R1bGVOYW1lTm9kZSA6IHB1YmxpYyBOb2RlIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIE1vZHVsZVNwZWNpZmllck5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYgbW9kdWxlTmFtZSk7CisgICAgICAgIE1vZHVsZU5h
bWVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5h
bWUpOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUoKSB7IHJldHVybiBt
X21vZHVsZU5hbWU7IH0KIApAQCAtMTY4MCw2ICsxNjgxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgY2xhc3MgTW9kdWxlRGVjbGFyYXRpb25Ob2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewog
ICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIGFuYWx5emVNb2R1bGUoTW9kdWxlQW5h
bHl6ZXImKSA9IDA7CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc01vZHVsZURlY2xhcmF0aW9uTm9k
ZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgTW9k
dWxlRGVjbGFyYXRpb25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpOwpAQCAtMTY4NywzMCAr
MTY4OSwzMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEltcG9ydERlY2xhcmF0aW9u
Tm9kZSA6IHB1YmxpYyBNb2R1bGVEZWNsYXJhdGlvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAg
ICAgSW1wb3J0RGVjbGFyYXRpb25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEltcG9ydFNw
ZWNpZmllckxpc3ROb2RlKiwgTW9kdWxlU3BlY2lmaWVyTm9kZSopOworICAgICAgICBJbXBvcnRE
ZWNsYXJhdGlvbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgSW1wb3J0U3BlY2lmaWVyTGlz
dE5vZGUqLCBNb2R1bGVOYW1lTm9kZSopOwogCiAgICAgICAgIEltcG9ydFNwZWNpZmllckxpc3RO
b2RlKiBzcGVjaWZpZXJMaXN0KCkgY29uc3QgeyByZXR1cm4gbV9zcGVjaWZpZXJMaXN0OyB9Ci0g
ICAgICAgIE1vZHVsZVNwZWNpZmllck5vZGUqIG1vZHVsZVNwZWNpZmllcigpIGNvbnN0IHsgcmV0
dXJuIG1fbW9kdWxlU3BlY2lmaWVyOyB9CisgICAgICAgIE1vZHVsZU5hbWVOb2RlKiBtb2R1bGVO
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVOYW1lOyB9CiAKICAgICBwcml2YXRlOgogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKSBvdmVycmlkZTsKICAgICAgICAgdmlydHVhbCB2b2lkIGFuYWx5emVNb2R1bGUo
TW9kdWxlQW5hbHl6ZXImKSBvdmVycmlkZTsKIAogICAgICAgICBJbXBvcnRTcGVjaWZpZXJMaXN0
Tm9kZSogbV9zcGVjaWZpZXJMaXN0OwotICAgICAgICBNb2R1bGVTcGVjaWZpZXJOb2RlKiBtX21v
ZHVsZVNwZWNpZmllcjsKKyAgICAgICAgTW9kdWxlTmFtZU5vZGUqIG1fbW9kdWxlTmFtZTsKICAg
ICB9OwogCiAgICAgY2xhc3MgRXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlIDogcHVibGljIE1vZHVs
ZURlY2xhcmF0aW9uTm9kZSB7CiAgICAgcHVibGljOgotICAgICAgICBFeHBvcnRBbGxEZWNsYXJh
dGlvbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgTW9kdWxlU3BlY2lmaWVyTm9kZSopOwor
ICAgICAgICBFeHBvcnRBbGxEZWNsYXJhdGlvbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
TW9kdWxlTmFtZU5vZGUqKTsKIAotICAgICAgICBNb2R1bGVTcGVjaWZpZXJOb2RlKiBtb2R1bGVT
cGVjaWZpZXIoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZVNwZWNpZmllcjsgfQorICAgICAgICBN
b2R1bGVOYW1lTm9kZSogbW9kdWxlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlTmFtZTsg
fQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBhbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJikgb3ZlcnJpZGU7CiAKLSAgICAg
ICAgTW9kdWxlU3BlY2lmaWVyTm9kZSogbV9tb2R1bGVTcGVjaWZpZXI7CisgICAgICAgIE1vZHVs
ZU5hbWVOb2RlKiBtX21vZHVsZU5hbWU7CiAgICAgfTsKIAogICAgIGNsYXNzIEV4cG9ydERlZmF1
bHREZWNsYXJhdGlvbk5vZGUgOiBwdWJsaWMgTW9kdWxlRGVjbGFyYXRpb25Ob2RlIHsKQEAgLTE3
NjcsMTYgKzE3NjksMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBFeHBvcnROYW1l
ZERlY2xhcmF0aW9uTm9kZSA6IHB1YmxpYyBNb2R1bGVEZWNsYXJhdGlvbk5vZGUgewogICAgIHB1
YmxpYzoKLSAgICAgICAgRXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwb3J0U3BlY2lmaWVyTGlzdE5vZGUqLCBNb2R1bGVTcGVjaWZpZXJOb2RlKik7
CisgICAgICAgIEV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cG9ydFNwZWNpZmllckxpc3ROb2RlKiwgTW9kdWxlTmFtZU5vZGUqKTsKIAogICAgICAg
ICBFeHBvcnRTcGVjaWZpZXJMaXN0Tm9kZSogc3BlY2lmaWVyTGlzdCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3BlY2lmaWVyTGlzdDsgfQotICAgICAgICBNb2R1bGVTcGVjaWZpZXJOb2RlKiBtb2R1bGVT
cGVjaWZpZXIoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZVNwZWNpZmllcjsgfQorICAgICAgICBN
b2R1bGVOYW1lTm9kZSogbW9kdWxlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlTmFtZTsg
fQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBhbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJikgb3ZlcnJpZGU7CiAgICAgICAg
IEV4cG9ydFNwZWNpZmllckxpc3ROb2RlKiBtX3NwZWNpZmllckxpc3Q7Ci0gICAgICAgIE1vZHVs
ZVNwZWNpZmllck5vZGUqIG1fbW9kdWxlU3BlY2lmaWVyIHsgbnVsbHB0ciB9OworICAgICAgICBN
b2R1bGVOYW1lTm9kZSogbV9tb2R1bGVOYW1lIHsgbnVsbHB0ciB9OwogICAgIH07CiAKICAgICBj
bGFzcyBGdW5jdGlvblBhcmFtZXRlcnMgOiBwdWJsaWMgUGFyc2VyQXJlbmFEZWxldGFibGUgewpA
QCAtMTgwNyw3ICsxODA5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBQYXJzZXJB
cmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgZW5kLCAKICAgICAgICAgICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRD
b2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgCiAgICAgICAgICAgICBpbnQgZnVuY3Rp
b25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQs
IAotICAgICAgICAgICAgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgRnVuY3Rpb25QYXJzZU1v
ZGUpOworICAgICAgICAgICAgQ29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VN
b2RlKTsKIAogICAgICAgICB2b2lkIGZpbmlzaFBhcnNpbmcoY29uc3QgU291cmNlQ29kZSYsIGNv
bnN0IElkZW50aWZpZXImLCBGdW5jdGlvbk1vZGUpOwogICAgICAgICAKQEAgLTE4MjQsNyArMTgy
Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbigpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhcnRDb2x1bW47IH0KICAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1u
KCkgY29uc3QgeyByZXR1cm4gbV9lbmRDb2x1bW47IH0KICAgICAgICAgdW5zaWduZWQgcGFyYW1l
dGVyQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlckNvdW50OyB9Ci0gICAgICAgIEZ1
bmN0aW9uUGFyc2VNb2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VNb2RlOyB9
CisgICAgICAgIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3Bh
cnNlTW9kZTsgfQogCiAgICAgICAgIHZvaWQgc2V0RW5kUG9zaXRpb24oSlNUZXh0UG9zaXRpb24p
OwogCkBAIC0xODU1LDcgKzE4NTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW50IG1f
c3RhcnRTdGFydE9mZnNldDsKICAgICAgICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJDb3VudDsKICAg
ICAgICAgaW50IG1fbGFzdExpbmU7Ci0gICAgICAgIEZ1bmN0aW9uUGFyc2VNb2RlIG1fcGFyc2VN
b2RlOworICAgICAgICBTb3VyY2VQYXJzZU1vZGUgbV9wYXJzZU1vZGU7CiAgICAgICAgIHVuc2ln
bmVkIG1faXNJblN0cmljdENvbnRleHQgOiAxOwogICAgICAgICB1bnNpZ25lZCBtX2NvbnN0cnVj
dG9yS2luZCA6IDI7CiAgICAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXNBbmFseXplTW9kdWxlLmNwcAppbmRleCA1OTczZmI0YzI1ODlkNjVlNjNlYmYzZDFj
MGZlZWQwMTg0NDlkMWIwLi42MzNkZWFlY2U2YWY2NjY1OWQwZTc2YWMxYWE0MTYxNTlhYjc1YTM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzQW5hbHl6ZU1v
ZHVsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlc0FuYWx5emVN
b2R1bGUuY3BwCkBAIC00MCwxNiArNDAsMTggQEAgdm9pZCBTY29wZU5vZGU6OmFuYWx5emVNb2R1
bGUoTW9kdWxlQW5hbHl6ZXImIGFuYWx5emVyKQogdm9pZCBTb3VyY2VFbGVtZW50czo6YW5hbHl6
ZU1vZHVsZShNb2R1bGVBbmFseXplciYgYW5hbHl6ZXIpCiB7CiAgICAgLy8gSW4gdGhlIG1vZHVs
ZSBhbmFseXplciBwaGFzZSwgb25seSBtb2R1bGUgZGVjbGFyYXRpb25zIGFyZSBpbmNsdWRlZCBp
biB0aGUgdG9wLWxldmVsIFNvdXJjZUVsZW1lbnRzLgotICAgIGZvciAoU3RhdGVtZW50Tm9kZSog
c3RhdGVtZW50ID0gbV9oZWFkOyBzdGF0ZW1lbnQ7IHN0YXRlbWVudCA9IHN0YXRlbWVudC0+bmV4
dCgpKQorICAgIGZvciAoU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50ID0gbV9oZWFkOyBzdGF0ZW1l
bnQ7IHN0YXRlbWVudCA9IHN0YXRlbWVudC0+bmV4dCgpKSB7CisgICAgICAgIEFTU0VSVChzdGF0
ZW1lbnQtPmlzTW9kdWxlRGVjbGFyYXRpb25Ob2RlKCkpOwogICAgICAgICBzdGF0aWNfY2FzdDxN
b2R1bGVEZWNsYXJhdGlvbk5vZGUqPihzdGF0ZW1lbnQpLT5hbmFseXplTW9kdWxlKGFuYWx5emVy
KTsKKyAgICB9CiB9CiAKIHZvaWQgSW1wb3J0RGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxl
KE1vZHVsZUFuYWx5emVyJiBhbmFseXplcikKIHsKLSAgICBhbmFseXplci5tb2R1bGVSZWNvcmQo
KS5hcHBlbmRSZXF1ZXN0ZWRNb2R1bGUobV9tb2R1bGVTcGVjaWZpZXItPm1vZHVsZU5hbWUoKSk7
CisgICAgYW5hbHl6ZXIubW9kdWxlUmVjb3JkKCkuYXBwZW5kUmVxdWVzdGVkTW9kdWxlKG1fbW9k
dWxlTmFtZS0+bW9kdWxlTmFtZSgpKTsKICAgICBmb3IgKGF1dG8qIHNwZWNpZmllciA6IG1fc3Bl
Y2lmaWVyTGlzdC0+c3BlY2lmaWVycygpKSB7Ci0gICAgICAgIGFuYWx5emVyLm1vZHVsZVJlY29y
ZCgpLmFkZEltcG9ydEVudHJ5KHsKLSAgICAgICAgICAgIG1fbW9kdWxlU3BlY2lmaWVyLT5tb2R1
bGVOYW1lKCksCisgICAgICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLmFkZEltcG9ydEVudHJ5
KE1vZHVsZVJlY29yZDo6SW1wb3J0RW50cnkgeworICAgICAgICAgICAgbV9tb2R1bGVOYW1lLT5t
b2R1bGVOYW1lKCksCiAgICAgICAgICAgICBzcGVjaWZpZXItPmltcG9ydGVkTmFtZSgpLAogICAg
ICAgICAgICAgc3BlY2lmaWVyLT5sb2NhbE5hbWUoKQogICAgICAgICB9KTsKQEAgLTU4LDggKzYw
LDggQEAgdm9pZCBJbXBvcnREZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUoTW9kdWxlQW5h
bHl6ZXImIGFuYWx5emVyKQogCiB2b2lkIEV4cG9ydEFsbERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6
ZU1vZHVsZShNb2R1bGVBbmFseXplciYgYW5hbHl6ZXIpCiB7Ci0gICAgYW5hbHl6ZXIubW9kdWxl
UmVjb3JkKCkuYXBwZW5kUmVxdWVzdGVkTW9kdWxlKG1fbW9kdWxlU3BlY2lmaWVyLT5tb2R1bGVO
YW1lKCkpOwotICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLmFkZFN0YXJFeHBvcnRFbnRyeSht
X21vZHVsZVNwZWNpZmllci0+bW9kdWxlTmFtZSgpKTsKKyAgICBhbmFseXplci5tb2R1bGVSZWNv
cmQoKS5hcHBlbmRSZXF1ZXN0ZWRNb2R1bGUobV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCkpOwor
ICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLmFkZFN0YXJFeHBvcnRFbnRyeShtX21vZHVsZU5h
bWUtPm1vZHVsZU5hbWUoKSk7CiB9CiAKIHZvaWQgRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9k
ZTo6YW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYgYW5hbHl6ZXIpCkBAIC03MywxNiArNzUs
MTYgQEAgdm9pZCBFeHBvcnRMb2NhbERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZShNb2R1
bGVBbmFseXplciYpCiAKIHZvaWQgRXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVN
b2R1bGUoTW9kdWxlQW5hbHl6ZXImIGFuYWx5emVyKQogewotICAgIGlmIChtX21vZHVsZVNwZWNp
ZmllcikKLSAgICAgICAgYW5hbHl6ZXIubW9kdWxlUmVjb3JkKCkuYXBwZW5kUmVxdWVzdGVkTW9k
dWxlKG1fbW9kdWxlU3BlY2lmaWVyLT5tb2R1bGVOYW1lKCkpOworICAgIGlmIChtX21vZHVsZU5h
bWUpCisgICAgICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLmFwcGVuZFJlcXVlc3RlZE1vZHVs
ZShtX21vZHVsZU5hbWUtPm1vZHVsZU5hbWUoKSk7CiAKICAgICBmb3IgKGF1dG8qIHNwZWNpZmll
ciA6IG1fc3BlY2lmaWVyTGlzdC0+c3BlY2lmaWVycygpKSB7Ci0gICAgICAgIGlmIChtX21vZHVs
ZVNwZWNpZmllcikgeworICAgICAgICBpZiAobV9tb2R1bGVOYW1lKSB7CiAgICAgICAgICAgICAv
LyBleHBvcnQgeyB2IH0gZnJvbSAibW9kIgogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIC8v
IEluIHRoaXMgY2FzZSwgbm8gbG9jYWwgdmFyaWFibGUgbmFtZXMgYXJlIGltcG9ydGVkIGludG8g
dGhlIGN1cnJlbnQgbW9kdWxlLgogICAgICAgICAgICAgLy8gInYiIGluZGlyZWN0bHkgcG9pbnRz
IHRoZSBiaW5kaW5nIGluICJtb2QiLgotICAgICAgICAgICAgYW5hbHl6ZXIubW9kdWxlUmVjb3Jk
KCkuYWRkRXhwb3J0RW50cnkoTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlSW5kaXJl
Y3Qoc3BlY2lmaWVyLT5leHBvcnRlZE5hbWUoKSwgc3BlY2lmaWVyLT5sb2NhbE5hbWUoKSwgbV9t
b2R1bGVTcGVjaWZpZXItPm1vZHVsZU5hbWUoKSkpOworICAgICAgICAgICAgYW5hbHl6ZXIubW9k
dWxlUmVjb3JkKCkuYWRkRXhwb3J0RW50cnkoTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3Jl
YXRlSW5kaXJlY3Qoc3BlY2lmaWVyLT5leHBvcnRlZE5hbWUoKSwgc3BlY2lmaWVyLT5sb2NhbE5h
bWUoKSwgbV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCkpKTsKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRl
eCA0NTlmN2IzMWI3MTcyOTFjY2I1YjkyN2FjYTNjZjM4ZmVhNjE5YzE4Li5hZWU3MGI2YTczMjli
YzExYjVjZTczZDUzNTJkMzEzZTIyYTI3YmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAgdm9pZCBQYXJzZXI8TGV4ZXJUeXBlPjo6
bG9nRXJyb3IoYm9vbCBzaG91bGRQcmludFRva2VuLCBjb25zdCBBJiB2YWx1ZTEsIGNvbnN0IEIK
IHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2Vy
KAogICAgIFZNKiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlckJ1aWx0aW5N
b2RlIGJ1aWx0aW5Nb2RlLCAKLSAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQ
YXJzZXJDb2RlVHlwZSBjb2RlVHlwZSwgCisgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1v
ZGUsIFNvdXJjZVBhcnNlTW9kZSBwYXJzZU1vZGUsIAogICAgIENvbnN0cnVjdG9yS2luZCBkZWZh
dWx0Q29uc3RydWN0b3JLaW5kLCBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSkKICAgICA6IG1fdm0o
dm0pCiAgICAgLCBtX3NvdXJjZSgmc291cmNlKQpAQCAtMjA5LDcgKzIwOSw2IEBAIFBhcnNlcjxM
ZXhlclR5cGU+OjpQYXJzZXIoCiAgICAgLCBtX3BhcnNpbmdCdWlsdGluKGJ1aWx0aW5Nb2RlID09
IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1aWx0aW4pCiAgICAgLCBtX2RlZmF1bHRDb25zdHJ1Y3Rv
cktpbmQoZGVmYXVsdENvbnN0cnVjdG9yS2luZCkKICAgICAsIG1fdGhpc1REWk1vZGUodGhpc1RE
Wk1vZGUpCi0gICAgLCBtX2NvZGVUeXBlKGNvZGVUeXBlKQogewogICAgIG1fbGV4ZXIgPSBzdGQ6
Om1ha2VfdW5pcXVlPExleGVyVHlwZT4odm0sIGJ1aWx0aW5Nb2RlKTsKICAgICBtX2xleGVyLT5z
ZXRDb2RlKHNvdXJjZSwgJm1fcGFyc2VyQXJlbmEpOwpAQCAtMjE5LDkgKzIxOCw5IEBAIFBhcnNl
cjxMZXhlclR5cGU+OjpQYXJzZXIoCiAgICAgbV90b2tlbi5tX2xvY2F0aW9uLmxpbmVTdGFydE9m
ZnNldCA9IHNvdXJjZS5zdGFydE9mZnNldCgpOwogICAgIG1fZnVuY3Rpb25DYWNoZSA9IHZtLT5h
ZGRTb3VyY2VQcm92aWRlckNhY2hlKHNvdXJjZS5wcm92aWRlcigpKTsKICAgICBTY29wZVJlZiBz
Y29wZSA9IHB1c2hTY29wZSgpOwotICAgIGlmIChjb2RlVHlwZSA9PSBKU1BhcnNlckNvZGVUeXBl
OjpGdW5jdGlvbikKKyAgICBpZiAoaXNGdW5jdGlvblBhcnNlTW9kZShwYXJzZU1vZGUpKQogICAg
ICAgICBzY29wZS0+c2V0SXNGdW5jdGlvbigpOwotICAgIGlmIChjb2RlVHlwZSA9PSBKU1BhcnNl
ckNvZGVUeXBlOjpNb2R1bGUpCisgICAgaWYgKGlzTW9kdWxlUGFyc2VNb2RlKHBhcnNlTW9kZSkp
CiAgICAgICAgIHNjb3BlLT5zZXRJc01vZHVsZSgpOwogICAgIGlmIChzdHJpY3RNb2RlID09IEpT
UGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0KQogICAgICAgICBzY29wZS0+c2V0U3RyaWN0TW9kZSgp
OwpAQCAtMjM1LDEyICsyMzQsMTAgQEAgUGFyc2VyPExleGVyVHlwZT46On5QYXJzZXIoKQogfQog
CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUlubmVyKGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIEZ1bmN0aW9uUGFyc2VN
b2RlIHBhcnNlTW9kZSwgTW9kdWxlUGFyc2VNb2RlIG1vZHVsZVBhcnNlTW9kZSkKK1N0cmluZyBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcihjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1l
LCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogewotICAgIFVOVVNFRF9QQVJBTShtb2R1bGVQ
YXJzZU1vZGUpOwotCiAgICAgU3RyaW5nIHBhcnNlRXJyb3IgPSBTdHJpbmcoKTsKLSAgICAKKwog
ICAgIEFTVEJ1aWxkZXIgY29udGV4dChjb25zdF9jYXN0PFZNKj4obV92bSksIG1fcGFyc2VyQXJl
bmEsIGNvbnN0X2Nhc3Q8U291cmNlQ29kZSo+KG1fc291cmNlKSk7CiAgICAgU2NvcGVSZWYgc2Nv
cGUgPSBjdXJyZW50U2NvcGUoKTsKICAgICBzY29wZS0+c2V0SXNMZXhpY2FsU2NvcGUoKTsKQEAg
LTI1Miw3ICsyNDksNyBAQCBTdHJpbmcgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoY29u
c3QgSWRlbnRpZmllciYgY2FsbGVlTmFtZSwgRnVuY3Rpb25QYXJzZQogICAgICAgICBtX3BhcmFt
ZXRlcnMgPSBmdW5jdGlvbkluZm8ucGFyYW1ldGVyczsKIAogI2lmIEVOQUJMRShFUzZfQVJST1dG
VU5DVElPTl9TWU5UQVgpCi0gICAgICAgIGlmIChwYXJzZU1vZGUgPT0gQXJyb3dGdW5jdGlvbk1v
ZGUgJiYgIWhhc0Vycm9yKCkpIHsKKyAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJz
ZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlICYmICFoYXNFcnJvcigpKSB7CiAgICAgICAgICAgICAv
LyBUaGUgb25seSB3YXkgd2UgY291bGQgaGF2ZSBhbiBlcnJvciB3aWxlIHJlcGFyc2luZyBpcyBp
ZiB3ZSBydW4gb3V0IG9mIHN0YWNrIHNwYWNlLgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQo
bWF0Y2goQVJST1dGVU5DVElPTikpOwogICAgICAgICAgICAgbmV4dCgpOwpAQCAtMjczLDggKzI3
MCw4IEBAIFN0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbm5lcihjb25zdCBJZGVudGlm
aWVyJiBjYWxsZWVOYW1lLCBGdW5jdGlvblBhcnNlCiAgICAgICAgIGlmIChpc0Fycm93RnVuY3Rp
b25Cb2R5RXhwcmVzc2lvbikKICAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VBcnJv
d0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lvbkJvZHlTb3VyY2VFbGVtZW50cyhjb250ZXh0KTsKICNp
ZiBFTkFCTEUoRVM2X01PRFVMRVMpCi0gICAgICAgIGVsc2UgaWYgKG1fY29kZVR5cGUgPT0gSlNQ
YXJzZXJDb2RlVHlwZTo6TW9kdWxlKQotICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJz
ZU1vZHVsZVNvdXJjZUVsZW1lbnRzKGNvbnRleHQsIG1vZHVsZVBhcnNlTW9kZSk7CisgICAgICAg
IGVsc2UgaWYgKGlzTW9kdWxlUGFyc2VNb2RlKHBhcnNlTW9kZSkpCisgICAgICAgICAgICBzb3Vy
Y2VFbGVtZW50cyA9IHBhcnNlTW9kdWxlU291cmNlRWxlbWVudHMoY29udGV4dCwgcGFyc2VNb2Rl
KTsKICNlbmRpZgogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBh
cnNlU291cmNlRWxlbWVudHMoY29udGV4dCwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsKQEAgLTQxNCw3
ICs0MTEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50
cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTb3VyY2VFbAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxl
bWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTW9kdWxlU291cmNlRWxlbWVudHMoVHJlZUJ1
aWxkZXImIGNvbnRleHQsIE1vZHVsZVBhcnNlTW9kZSBtb2R1bGVQYXJzZU1vZGUpCit0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VNb2R1bGVTb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYgY29udGV4dCwgU291cmNl
UGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsKICAgICBUcmVlU291cmNlRWxlbWVudHMgc291cmNlRWxl
bWVudHMgPSBjb250ZXh0LmNyZWF0ZVNvdXJjZUVsZW1lbnRzKCk7CiAgICAgU3ludGF4Q2hlY2tl
ciBzeW50YXhDaGVja2VyKGNvbnN0X2Nhc3Q8Vk0qPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7CkBA
IC00MjgsNyArNDI1LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNl
RWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTW9kdWxlU28KICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBkaXJlY3RpdmUgPSAwOwogICAgICAgICAg
ICAgdW5zaWduZWQgZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCA9IDA7Ci0gICAgICAgICAgICBpZiAo
bW9kdWxlUGFyc2VNb2RlID09IE1vZHVsZVBhcnNlTW9kZTo6QW5hbHl6ZSkgeworICAgICAgICAg
ICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlKSB7
CiAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZVN0YXRlbWVudExpc3RJdGVtKHN5bnRheENoZWNr
ZXIsIGRpcmVjdGl2ZSwgJmRpcmVjdGl2ZUxpdGVyYWxMZW5ndGgpKQogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE1NDcsNyArMTU0NCw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VGb3JtYWxQYXJhbWV0ZXJzKFRyZWVCCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBl
PgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRnVuY3Rpb25Cb2R5IFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uQm9keSgKICAgICBUcmVlQnVpbGRlciYgY29udGV4dCwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBpbnQgc3RhcnRDb2x1bW4sIGlu
dCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1l
dGVyc1N0YXJ0LCAKLSAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBGdW5jdGlv
bkJvZHlUeXBlIGJvZHlUeXBlLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwgRnVuY3Rpb25QYXJz
ZU1vZGUgcGFyc2VNb2RlKQorICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEZ1
bmN0aW9uQm9keVR5cGUgYm9keVR5cGUsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQ
YXJzZU1vZGUgcGFyc2VNb2RlKQogewogICAgIGlmIChib2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0
aW9uQm9keUJsb2NrIHx8IGJvZHlUeXBlID09IEFycm93RnVuY3Rpb25Cb2R5QmxvY2spIHsKICAg
ICAgICAgbmV4dCgpOwpAQCAtMTU2OCwyMCArMTU2NSwyMiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVGdW5jdGlvbkJvZHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rp
b25CbwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2Nh
dGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktl
eXdvcmRTdGFydCwgZnVuY3Rpb25OYW1lU3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9k
ZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBhcmFtZXRlckNvdW50LCBwYXJzZU1vZGUpOwogfQogCi1z
dGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKEZ1bmN0aW9uUGFyc2VNb2Rl
IG1vZGUpCitzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBh
cnNlTW9kZSBtb2RlKQogewogICAgIHN3aXRjaCAobW9kZSkgewotICAgIGNhc2UgR2V0dGVyTW9k
ZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKICAgICAgICAgcmV0dXJu
ICJnZXR0ZXIiOwotICAgIGNhc2UgU2V0dGVyTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6U2V0dGVyTW9kZToKICAgICAgICAgcmV0dXJuICJzZXR0ZXIiOwotICAgIGNhc2UgTm9ybWFs
RnVuY3Rpb25Nb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1v
ZGU6CiAgICAgICAgIHJldHVybiAiZnVuY3Rpb24iOwotICAgIGNhc2UgTWV0aG9kTW9kZToKKyAg
ICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZToKICAgICAgICAgcmV0dXJuICJtZXRo
b2QiOwotICAgIGNhc2UgQXJyb3dGdW5jdGlvbk1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1v
ZGU6OkFycm93RnVuY3Rpb25Nb2RlOgogICAgICAgICByZXR1cm4gImFycm93IGZ1bmN0aW9uIjsK
LSAgICBjYXNlIE5vdEFGdW5jdGlvbk1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlBy
b2dyYW1Nb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZToK
KyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlOgogICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gIiI7CiAgICAgfQpA
QCAtMTU4OSwxNSArMTU4OCwxNSBAQCBzdGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rp
b25Nb2RlKEZ1bmN0aW9uUGFyc2VNb2RlIG1vZGUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
LXRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gaW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhUcmVlQnVp
bGRlciYgY29udGV4dCwgRnVuY3Rpb25QYXJzZU1vZGUgbW9kZSwgUGFyc2VyRnVuY3Rpb25JbmZv
PFRyZWVCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQordGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlw
ZT4gdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBpbnQgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlRnVuY3Rpb25QYXJhbWV0ZXJzKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBTb3VyY2VQYXJzZU1v
ZGUgbW9kZSwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQog
ewotICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUgIT0gTm90QUZ1bmN0aW9uTW9kZSk7CisgICAgUkVM
RUFTRV9BU1NFUlQobW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlICYmIG1vZGUg
IT0gU291cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZSAmJiBtb2RlICE9IFNvdXJjZVBh
cnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlKTsKICAgICBpbnQgcGFyYW1ldGVyc1N0YXJ0ID0g
bV90b2tlbi5tX2xvY2F0aW9uLnN0YXJ0T2Zmc2V0OwogICAgIFRyZWVGb3JtYWxQYXJhbWV0ZXJM
aXN0IHBhcmFtZXRlckxpc3QgPSBjb250ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoKTsK
ICAgICBmdW5jdGlvbkluZm8ucGFyYW1ldGVycyA9IHBhcmFtZXRlckxpc3Q7CiAgICAgZnVuY3Rp
b25JbmZvLnN0YXJ0T2Zmc2V0ID0gcGFyYW1ldGVyc1N0YXJ0OwogICAgIAotICAgIGlmIChtb2Rl
ID09IEFycm93RnVuY3Rpb25Nb2RlKSB7CisgICAgaWYgKG1vZGUgPT0gU291cmNlUGFyc2VNb2Rl
OjpBcnJvd0Z1bmN0aW9uTW9kZSkgewogICAgICAgICBpZiAoIW1hdGNoKElERU5UKSAmJiAhbWF0
Y2goT1BFTlBBUkVOKSkgewogICAgICAgICAgICAgc2VtYW50aWNGYWlsdXJlRHVlVG9LZXl3b3Jk
KHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSwgIiBuYW1lIik7CiAgICAgICAgICAgICBmYWls
V2l0aE1lc3NhZ2UoIkV4cGVjdGVkIGFuIGFycm93IGZ1bmN0aW9uIGlucHV0IHBhcmFtZXRlciIp
OwpAQCAtMTYyNywxMCArMTYyNiwxMCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPiB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IGludCBQYXJzZXI8TGV4ZXJUeXBlPgogICAgICAg
ICBmYWlsV2l0aE1lc3NhZ2UoIkV4cGVjdGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhICIsIHN0
cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSwgIidzIHBhcmFtZXRlciBsaXN0Iik7CiAgICAgfQog
Ci0gICAgaWYgKG1vZGUgPT0gR2V0dGVyTW9kZSkgeworICAgIGlmIChtb2RlID09IFNvdXJjZVBh
cnNlTW9kZTo6R2V0dGVyTW9kZSkgewogICAgICAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4s
ICJnZXR0ZXIgZnVuY3Rpb25zIG11c3QgaGF2ZSBubyBwYXJhbWV0ZXJzIik7CiAgICAgICAgIGZ1
bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCA9IDA7Ci0gICAgfSBlbHNlIGlmIChtb2RlID09IFNl
dHRlck1vZGUpIHsKKyAgICB9IGVsc2UgaWYgKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpTZXR0
ZXJNb2RlKSB7CiAgICAgICAgIGZhaWxJZlRydWUobWF0Y2goQ0xPU0VQQVJFTiksICJzZXR0ZXIg
ZnVuY3Rpb25zIG11c3QgaGF2ZSBvbmUgcGFyYW1ldGVyIik7CiAgICAgICAgIGNvbnN0IElkZW50
aWZpZXIqIGR1cGxpY2F0ZVBhcmFtZXRlciA9IG51bGxwdHI7CiAgICAgICAgIGF1dG8gcGFyYW1l
dGVyID0gcGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybihjb250ZXh0LCBEZXN0cnVjdHVyZVRvUGFy
YW1ldGVycywgRXhwb3J0VHlwZTo6Tm90RXhwb3J0ZWQsICZkdXBsaWNhdGVQYXJhbWV0ZXIpOwpA
QCAtMTY1NCw5ICsxNjUzLDkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4gdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBpbnQgUGFyc2VyPExleGVyVHlwZT4KIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIExleGVyVHlwZT4KLXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9v
bCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImIGNvbnRl
eHQsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzIHJlcXVpcmVtZW50cywgRnVuY3Rpb25QYXJzZU1vZGUg
bW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JLaW5kIGNvbnN0
cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIGV4cGVjdGVkU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rp
b25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mIGZ1bmN0aW9u
SW5mbywgRnVuY3Rpb25QYXJzZVR5cGUgcGFyc2VUeXBlKQordGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVp
bGRlciYgY29udGV4dCwgRnVuY3Rpb25SZXF1aXJlbWVudHMgcmVxdWlyZW1lbnRzLCBTb3VyY2VQ
YXJzZU1vZGUgbW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JL
aW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nIGV4cGVjdGVkU3VwZXJCaW5kaW5nLCBp
bnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4m
IGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25QYXJzZVR5cGUgcGFyc2VUeXBlKQogewotICAgIFJFTEVB
U0VfQVNTRVJUKG1vZGUgIT0gTm90QUZ1bmN0aW9uTW9kZSk7CisgICAgUkVMRUFTRV9BU1NFUlQo
aXNGdW5jdGlvblBhcnNlTW9kZShtb2RlKSk7CiAKICAgICBBdXRvUG9wU2NvcGVSZWYgZnVuY3Rp
b25TY29wZSh0aGlzLCBwdXNoU2NvcGUoKSk7CiAgICAgZnVuY3Rpb25TY29wZS0+c2V0SXNGdW5j
dGlvbigpOwpAQCAtMTY3MCw3ICsxNjY5LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAg
ICAKICAgICBzd2l0Y2ggKHBhcnNlVHlwZSkgewogICAgIGNhc2UgU3RhbmRhcmRGdW5jdGlvblBh
cnNlVHlwZTogewotICAgICAgICBSRUxFQVNFX0FTU0VSVChtb2RlICE9IEFycm93RnVuY3Rpb25N
b2RlKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6OkFy
cm93RnVuY3Rpb25Nb2RlKTsKICAgICAgICAgaWYgKG1hdGNoKElERU5UKSB8fCBpc0xFVE1hc2tl
ZEFzSURFTlQoKSkgewogICAgICAgICAgICAgZnVuY3Rpb25JbmZvLm5hbWUgPSBtX3Rva2VuLm1f
ZGF0YS5pZGVudDsKICAgICAgICAgICAgIG1fbGFzdEZ1bmN0aW9uTmFtZSA9IGZ1bmN0aW9uSW5m
by5uYW1lOwpAQCAtMTY3OCw3ICsxNjc3LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBib29sIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAg
ICAgICAgICAgIGlmICghbmFtZUlzSW5Db250YWluaW5nU2NvcGUpCiAgICAgICAgICAgICAgICAg
ZmFpbElmVHJ1ZUlmU3RyaWN0KGZ1bmN0aW9uU2NvcGUtPmRlY2xhcmVWYXJpYWJsZShmdW5jdGlv
bkluZm8ubmFtZSkgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZFN0cmljdE1vZGUsICInIiwg
ZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwoKSwgIicgaXMgbm90IGEgdmFsaWQgIiwgc3RyaW5nRm9y
RnVuY3Rpb25Nb2RlKG1vZGUpLCAiIG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgfSBl
bHNlIGlmIChyZXF1aXJlbWVudHMgPT0gRnVuY3Rpb25OZWVkc05hbWUpIHsKLSAgICAgICAgICAg
IGlmIChtYXRjaChPUEVOUEFSRU4pICYmIG1vZGUgPT0gTm9ybWFsRnVuY3Rpb25Nb2RlKQorICAg
ICAgICAgICAgaWYgKG1hdGNoKE9QRU5QQVJFTikgJiYgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6
Ok5vcm1hbEZ1bmN0aW9uTW9kZSkKICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWwoIkZ1bmN0
aW9uIHN0YXRlbWVudHMgbXVzdCBoYXZlIGEgbmFtZSIpOwogICAgICAgICAgICAgc2VtYW50aWNG
YWlsdXJlRHVlVG9LZXl3b3JkKHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2RlKSwgIiBuYW1lIik7
CiAgICAgICAgICAgICBmYWlsRHVlVG9VbmV4cGVjdGVkVG9rZW4oKTsKQEAgLTE3MDgsNyArMTcw
Nyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgfQogI2lmIEVOQUJMRShFUzZfQVJS
T1dGVU5DVElPTl9TWU5UQVgpCiAgICAgY2FzZSBBcnJvd0Z1bmN0aW9uUGFyc2VUeXBlOiB7Ci0g
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUgPT0gQXJyb3dGdW5jdGlvbk1vZGUpOworICAgICAg
ICBSRUxFQVNFX0FTU0VSVChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1v
ZGUpOwogCiAgICAgICAgIHN0YXJ0TG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7CiAgICAgICAg
IGZ1bmN0aW9uSW5mby5zdGFydExpbmUgPSB0b2tlbkxpbmUoKTsKQEAgLTE4MDQsNyArMTgwMyw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkCiAgICAgZmFpbElmRmFsc2UoZnVuY3Rpb25JbmZv
LmJvZHksICJDYW5ub3QgcGFyc2UgdGhlIGJvZHkgb2YgdGhpcyAiLCBzdHJpbmdGb3JGdW5jdGlv
bk1vZGUobW9kZSkpOwogICAgIGNvbnRleHQuc2V0RW5kT2Zmc2V0KGZ1bmN0aW9uSW5mby5ib2R5
LCBtX2xleGVyLT5jdXJyZW50T2Zmc2V0KCkpOwogICAgIGlmIChmdW5jdGlvblNjb3BlLT5zdHJp
Y3RNb2RlKCkgJiYgZnVuY3Rpb25JbmZvLm5hbWUpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQo
bW9kZSA9PSBOb3JtYWxGdW5jdGlvbk1vZGUgfHwgbW9kZSA9PSBNZXRob2RNb2RlIHx8IG1vZGUg
PT0gQXJyb3dGdW5jdGlvbk1vZGUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtb2RlID09IFNv
dXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VN
b2RlOjpNZXRob2RNb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9u
TW9kZSk7CiAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5h
cmd1bWVudHMgPT0gKmZ1bmN0aW9uSW5mby5uYW1lLCAiJyIsIGZ1bmN0aW9uSW5mby5uYW1lLT5p
bXBsKCksICInIGlzIG5vdCBhIHZhbGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsK
ICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmV2YWwgPT0g
KmZ1bmN0aW9uSW5mby5uYW1lLCAiJyIsIGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBsKCksICInIGlz
IG5vdCBhIHZhbGlkIGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsKICAgICB9CkBAIC0x
ODY5LDcgKzE4NjgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1l
bnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25EZWNsYQogICAgIHVuc2lnbmVkIGZ1
bmN0aW9uS2V5d29yZFN0YXJ0ID0gdG9rZW5TdGFydCgpOwogICAgIG5leHQoKTsKICAgICBQYXJz
ZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGZ1bmN0aW9uSW5mbzsKLSAgICBmYWlsSWZGYWxz
ZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OZWVkc05hbWUsIE5vcm1hbEZ1
bmN0aW9uTW9kZSwgdHJ1ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5v
dE5lZWRlZCwKKyAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVu
Y3Rpb25OZWVkc05hbWUsIFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlLCB0cnVl
LCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLAogICAgICAg
ICBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25JbmZvLCBTdGFuZGFyZEZ1bmN0aW9uUGFy
c2VUeXBlKSksICJDYW5ub3QgcGFyc2UgdGhpcyBmdW5jdGlvbiIpOwogICAgIGZhaWxJZkZhbHNl
KGZ1bmN0aW9uSW5mby5uYW1lLCAiRnVuY3Rpb24gc3RhdGVtZW50cyBtdXN0IGhhdmUgYSBuYW1l
Iik7CiAgICAgZmFpbElmVHJ1ZUlmU3RyaWN0KGRlY2xhcmVWYXJpYWJsZShmdW5jdGlvbkluZm8u
bmFtZSkgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZFN0cmljdE1vZGUsICJDYW5ub3QgZGVj
bGFyZSBhIGZ1bmN0aW9uIG5hbWVkICciLCBmdW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBp
biBzdHJpY3QgbW9kZSIpOwpAQCAtMTk5OSw3ICsxOTk4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlQ2xhc3NFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNs
YXNzKFQKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxU
cmVlQnVpbGRlcj4gbWV0aG9kSW5mbzsKICAgICAgICAgICAgIGJvb2wgaXNDb25zdHJ1Y3RvciA9
ICFpc1N0YXRpY01ldGhvZCAmJiAqaWRlbnQgPT0gcHJvcGVydHlOYW1lcy5jb25zdHJ1Y3RvcjsK
LSAgICAgICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5j
dGlvbk5vUmVxdWlyZW1lbnRzLCBNZXRob2RNb2RlLCBmYWxzZSwgaXNDb25zdHJ1Y3RvciA/IGNv
bnN0cnVjdG9yS2luZCA6IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOZWVk
ZWQsIG1ldGhvZFN0YXJ0LCBtZXRob2RJbmZvLCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlKSks
ICJDYW5ub3QgcGFyc2UgdGhpcyBtZXRob2QiKTsKKyAgICAgICAgICAgIGZhaWxJZkZhbHNlKChw
YXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBTb3VyY2VQ
YXJzZU1vZGU6Ok1ldGhvZE1vZGUsIGZhbHNlLCBpc0NvbnN0cnVjdG9yID8gY29uc3RydWN0b3JL
aW5kIDogQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgbWV0aG9k
U3RhcnQsIG1ldGhvZEluZm8sIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUpKSwgIkNhbm5vdCBw
YXJzZSB0aGlzIG1ldGhvZCIpOwogICAgICAgICAgICAgZmFpbElmVHJ1ZSghaWRlbnQgfHwgKGRl
Y2xhcmVWYXJpYWJsZShpZGVudCkgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZFN0cmljdE1v
ZGUpLCAiQ2Fubm90IGRlY2xhcmUgYSBtZXRob2QgbmFtZWQgJyIsIG1ldGhvZEluZm8ubmFtZS0+
aW1wbCgpLCAiJyIpOwogICAgICAgICAgICAgbWV0aG9kSW5mby5uYW1lID0gaXNDb25zdHJ1Y3Rv
ciA/IGNsYXNzTmFtZSA6IGlkZW50OwogCkBAIC0yMjI2LDE2ICsyMjI1LDE2IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VJZlN0YXRlbWVudChUCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpNb2R1bGVTcGVj
aWZpZXIgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlTW9kdWxlU3BlY2lmaWVyKFRyZWVCdWlsZGVy
JiBjb250ZXh0KQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVp
bGRlcjo6TW9kdWxlTmFtZSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNb2R1bGVOYW1lKFRyZWVC
dWlsZGVyJiBjb250ZXh0KQogewotICAgIC8vIE1vZHVsZVNwZWNpZmllciByZXByZXNlbnRzIHRo
ZSBtb2R1bGUgbmFtZSBpbXBvcnRlZCBieSB0aGUgc2NyaXB0LgorICAgIC8vIE1vZHVsZU5hbWUg
KE1vZHVsZVNwZWNpZmllciBpbiB0aGUgc3BlYykgcmVwcmVzZW50cyB0aGUgbW9kdWxlIG5hbWUg
aW1wb3J0ZWQgYnkgdGhlIHNjcmlwdC4KICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRp
b25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtaW1wb3J0cwogICAgIC8vIGh0dHA6Ly93d3cuZWNt
YS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1leHBvcnRzCiAgICAgSlNUb2tl
bkxvY2F0aW9uIHNwZWNpZmllckxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgZmFpbElm
RmFsc2UobWF0Y2goU1RSSU5HKSwgIkltcG9ydGVkIG1vZHVsZXMgbmFtZXMgbXVzdCBiZSBzdHJp
bmcgbGl0ZXJhbHMiKTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBtb2R1bGVOYW1lID0gbV90b2tl
bi5tX2RhdGEuaWRlbnQ7CiAgICAgbmV4dCgpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU1v
ZHVsZVNwZWNpZmllcihzcGVjaWZpZXJMb2NhdGlvbiwgKm1vZHVsZU5hbWUpOworICAgIHJldHVy
biBjb250ZXh0LmNyZWF0ZU1vZHVsZU5hbWUoc3BlY2lmaWVyTG9jYXRpb24sICptb2R1bGVOYW1l
KTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KQEAgLTIzMjcsMTAgKzIzMjYs
MTAgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUltcG9ydERlY2xhcmEKIAogICAgIGlmIChtYXRjaChTVFJJTkcpKSB7
CiAgICAgICAgIC8vIGltcG9ydCBNb2R1bGVTcGVjaWZpZXIgOwotICAgICAgICBhdXRvIG1vZHVs
ZVNwZWNpZmllciA9IHBhcnNlTW9kdWxlU3BlY2lmaWVyKGNvbnRleHQpOwotICAgICAgICBmYWls
SWZGYWxzZShtb2R1bGVTcGVjaWZpZXIsICJDYW5ub3QgcGFyc2UgdGhlIG1vZHVsZSBuYW1lIik7
CisgICAgICAgIGF1dG8gbW9kdWxlTmFtZSA9IHBhcnNlTW9kdWxlTmFtZShjb250ZXh0KTsKKyAg
ICAgICAgZmFpbElmRmFsc2UobW9kdWxlTmFtZSwgIkNhbm5vdCBwYXJzZSB0aGUgbW9kdWxlIG5h
bWUiKTsKICAgICAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpLCAiRXhwZWN0ZWQgYSAn
OycgZm9sbG93aW5nIGEgdGFyZ2V0ZWQgaW1wb3J0IGRlY2xhcmF0aW9uIik7Ci0gICAgICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZUltcG9ydERlY2xhcmF0aW9uKGltcG9ydExvY2F0aW9uLCBzcGVj
aWZpZXJMaXN0LCBtb2R1bGVTcGVjaWZpZXIpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVJbXBvcnREZWNsYXJhdGlvbihpbXBvcnRMb2NhdGlvbiwgc3BlY2lmaWVyTGlzdCwgbW9kdWxl
TmFtZSk7CiAgICAgfQogCiAgICAgYm9vbCBpc0ZpbmlzaGVkUGFyc2luZ0ltcG9ydCA9IGZhbHNl
OwpAQCAtMjM3OCwxMSArMjM3NywxMSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW1wb3J0RGVjbGFyYQogICAgIGZh
aWxJZkZhbHNlKG1hdGNoQ29udGV4dHVhbEtleXdvcmQobV92bS0+cHJvcGVydHlOYW1lcy0+ZnJv
bSksICJFeHBlY3RlZCAnZnJvbScgYmVmb3JlIGltcG9ydGVkIG1vZHVsZSBuYW1lIik7CiAgICAg
bmV4dCgpOwogCi0gICAgYXV0byBtb2R1bGVTcGVjaWZpZXIgPSBwYXJzZU1vZHVsZVNwZWNpZmll
cihjb250ZXh0KTsKLSAgICBmYWlsSWZGYWxzZShtb2R1bGVTcGVjaWZpZXIsICJDYW5ub3QgcGFy
c2UgdGhlIG1vZHVsZSBuYW1lIik7CisgICAgYXV0byBtb2R1bGVOYW1lID0gcGFyc2VNb2R1bGVO
YW1lKGNvbnRleHQpOworICAgIGZhaWxJZkZhbHNlKG1vZHVsZU5hbWUsICJDYW5ub3QgcGFyc2Ug
dGhlIG1vZHVsZSBuYW1lIik7CiAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpLCAiRXhw
ZWN0ZWQgYSAnOycgZm9sbG93aW5nIGEgdGFyZ2V0ZWQgaW1wb3J0IGRlY2xhcmF0aW9uIik7CiAK
LSAgICByZXR1cm4gY29udGV4dC5jcmVhdGVJbXBvcnREZWNsYXJhdGlvbihpbXBvcnRMb2NhdGlv
biwgc3BlY2lmaWVyTGlzdCwgbW9kdWxlU3BlY2lmaWVyKTsKKyAgICByZXR1cm4gY29udGV4dC5j
cmVhdGVJbXBvcnREZWNsYXJhdGlvbihpbXBvcnRMb2NhdGlvbiwgc3BlY2lmaWVyTGlzdCwgbW9k
dWxlTmFtZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CkBAIC0yNDI3LDEx
ICsyNDI2LDExIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQ
YXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnREZWNsYXJhCiAKICAgICAgICAgZmFpbElmRmFs
c2UobWF0Y2hDb250ZXh0dWFsS2V5d29yZChtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5mcm9tKSwgIkV4
cGVjdGVkICdmcm9tJyBiZWZvcmUgZXhwb3J0ZWQgbW9kdWxlIG5hbWUiKTsKICAgICAgICAgbmV4
dCgpOwotICAgICAgICBhdXRvIG1vZHVsZVNwZWNpZmllciA9IHBhcnNlTW9kdWxlU3BlY2lmaWVy
KGNvbnRleHQpOwotICAgICAgICBmYWlsSWZGYWxzZShtb2R1bGVTcGVjaWZpZXIsICJDYW5ub3Qg
cGFyc2UgdGhlICdmcm9tJyBjbGF1c2UiKTsKKyAgICAgICAgYXV0byBtb2R1bGVOYW1lID0gcGFy
c2VNb2R1bGVOYW1lKGNvbnRleHQpOworICAgICAgICBmYWlsSWZGYWxzZShtb2R1bGVOYW1lLCAi
Q2Fubm90IHBhcnNlIHRoZSAnZnJvbScgY2xhdXNlIik7CiAgICAgICAgIGZhaWxJZkZhbHNlKGF1
dG9TZW1pQ29sb24oKSwgIkV4cGVjdGVkIGEgJzsnIGZvbGxvd2luZyBhIHRhcmdldGVkIGV4cG9y
dCBkZWNsYXJhdGlvbiIpOwogCi0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUV4cG9ydEFs
bERlY2xhcmF0aW9uKGV4cG9ydExvY2F0aW9uLCBtb2R1bGVTcGVjaWZpZXIpOworICAgICAgICBy
ZXR1cm4gY29udGV4dC5jcmVhdGVFeHBvcnRBbGxEZWNsYXJhdGlvbihleHBvcnRMb2NhdGlvbiwg
bW9kdWxlTmFtZSk7CiAgICAgfQogCiAgICAgY2FzZSBERUZBVUxUOiB7CkBAIC0yNDc0LDYgKzI0
NzMsOSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlRXhwb3J0RGVjbGFyYQogICAgICAgICAgICAgLy8KICAgICAgICAg
ICAgIC8vIGNvbnN0ICpkZWZhdWx0KiA9IGV4cHI7CiAgICAgICAgICAgICAvLyBleHBvcnQgeyAq
ZGVmYXVsdCogYXMgZGVmYXVsdCB9CisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gSW4g
dGhlIGFib3ZlIGV4YW1wbGUsICpkZWZhdWx0KiBpcyB0aGUgaW52aXNpYmxlIHZhcmlhYmxlIHRv
IHRoZSB1c2Vycy4KKyAgICAgICAgICAgIC8vIFdlIHVzZSB0aGUgcHJpdmF0ZSBzeW1ib2wgdG8g
cmVwcmVzZW50IHRoZSBuYW1lIG9mIHRoaXMgdmFyaWFibGUuCiAgICAgICAgICAgICBKU1Rva2Vu
TG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgICAgIEpTVGV4dFBv
c2l0aW9uIHN0YXJ0ID0gdG9rZW5TdGFydFBvc2l0aW9uKCk7CiAgICAgICAgICAgICBUcmVlRXhw
cmVzc2lvbiBleHByZXNzaW9uID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsK
QEAgLTI0ODEsNyArMjQ4Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0
YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnREZWNsYXJhCiAKICAgICAgICAg
ICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJhdGlvblJlc3VsdCA9IGRlY2xhcmVWYXJp
YWJsZSgmbV92bS0+cHJvcGVydHlOYW1lcy0+c3RhckRlZmF1bHRQcml2YXRlTmFtZSwgRGVjbGFy
YXRpb25UeXBlOjpDb25zdERlY2xhcmF0aW9uKTsKICAgICAgICAgICAgIGlmIChkZWNsYXJhdGlv
blJlc3VsdCAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24p
Ci0gICAgICAgICAgICAgICAgaW50ZXJuYWxGYWlsV2l0aE1lc3NhZ2UoZmFsc2UsICJDYW5ub3Qg
ZXhwb3J0ICdkZWZhdWx0JyBuYW1lIHR3aWNlOiAnIik7CisgICAgICAgICAgICAgICAgaW50ZXJu
YWxGYWlsV2l0aE1lc3NhZ2UoZmFsc2UsICJPbmx5IG9uZSAnZGVmYXVsdCcgZXhwb3J0IGlzIGFs
bG93ZWQiKTsKIAogICAgICAgICAgICAgVHJlZUV4cHJlc3Npb24gYXNzaWdubWVudCA9IGNvbnRl
eHQuY3JlYXRlQXNzaWduUmVzb2x2ZShsb2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+c3Rh
ckRlZmF1bHRQcml2YXRlTmFtZSwgZXhwcmVzc2lvbiwgc3RhcnQsIHN0YXJ0LCB0b2tlbkVuZFBv
c2l0aW9uKCksIEFzc2lnbm1lbnRDb250ZXh0OjpDb25zdERlY2xhcmF0aW9uU3RhdGVtZW50KTsK
ICAgICAgICAgICAgIHJlc3VsdCA9IGNvbnRleHQuY3JlYXRlRXhwclN0YXRlbWVudChsb2NhdGlv
biwgYXNzaWdubWVudCwgc3RhcnQsIHRva2VuRW5kUG9zaXRpb24oKSk7CkBAIC0yNDkxLDcgKzI0
OTMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlRXhwb3J0RGVjbGFyYQogICAgICAgICB9CiAgICAgICAgIGZhaWxJ
ZkZhbHNlKHJlc3VsdCwgIkNhbm5vdCBwYXJzZSB0aGUgZGVjbGFyYXRpb24iKTsKIAotICAgICAg
ICBzZW1hbnRpY0ZhaWxJZkZhbHNlKGV4cG9ydE5hbWUobV92bS0+cHJvcGVydHlOYW1lcy0+ZGVm
YXVsdEtleXdvcmQpLCAiQ2Fubm90IGV4cG9ydCAnZGVmYXVsdCcgbmFtZSB0d2ljZS4iKTsKKyAg
ICAgICAgc2VtYW50aWNGYWlsSWZGYWxzZShleHBvcnROYW1lKG1fdm0tPnByb3BlcnR5TmFtZXMt
PmRlZmF1bHRLZXl3b3JkKSwgIk9ubHkgb25lICdkZWZhdWx0JyBleHBvcnQgaXMgYWxsb3dlZCIp
OwogICAgICAgICBjdXJyZW50U2NvcGUoKS0+bW9kdWxlU2NvcGVEYXRhKCkuZXhwb3J0QmluZGlu
ZygqbG9jYWxOYW1lKTsKICAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRXhwb3J0RGVmYXVs
dERlY2xhcmF0aW9uKGV4cG9ydExvY2F0aW9uLCByZXN1bHQsICpsb2NhbE5hbWUpOwogICAgIH0K
QEAgLTI1MjUsMTUgKzI1MjcsMTUgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
U3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydERlY2xhcmEKICAgICAgICAg
fQogICAgICAgICBoYW5kbGVQcm9kdWN0aW9uT3JGYWlsKENMT1NFQlJBQ0UsICJ9IiwgImVuZCIs
ICJleHBvcnQgbGlzdCIpOwogCi0gICAgICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpNb2R1bGVT
cGVjaWZpZXIgbW9kdWxlU3BlY2lmaWVyID0gMDsKKyAgICAgICAgdHlwZW5hbWUgVHJlZUJ1aWxk
ZXI6Ok1vZHVsZU5hbWUgbW9kdWxlTmFtZSA9IDA7CiAgICAgICAgIGlmIChtYXRjaENvbnRleHR1
YWxLZXl3b3JkKG1fdm0tPnByb3BlcnR5TmFtZXMtPmZyb20pKSB7CiAgICAgICAgICAgICBuZXh0
KCk7Ci0gICAgICAgICAgICBtb2R1bGVTcGVjaWZpZXIgPSBwYXJzZU1vZHVsZVNwZWNpZmllcihj
b250ZXh0KTsKLSAgICAgICAgICAgIGZhaWxJZkZhbHNlKG1vZHVsZVNwZWNpZmllciwgIkNhbm5v
dCBwYXJzZSB0aGUgJ2Zyb20nIGNsYXVzZSIpOworICAgICAgICAgICAgbW9kdWxlTmFtZSA9IHBh
cnNlTW9kdWxlTmFtZShjb250ZXh0KTsKKyAgICAgICAgICAgIGZhaWxJZkZhbHNlKG1vZHVsZU5h
bWUsICJDYW5ub3QgcGFyc2UgdGhlICdmcm9tJyBjbGF1c2UiKTsKICAgICAgICAgfQogICAgICAg
ICBmYWlsSWZGYWxzZShhdXRvU2VtaUNvbG9uKCksICJFeHBlY3RlZCBhICc7JyBmb2xsb3dpbmcg
YSB0YXJnZXRlZCBleHBvcnQgZGVjbGFyYXRpb24iKTsKIAotICAgICAgICBpZiAoIW1vZHVsZVNw
ZWNpZmllcikgeworICAgICAgICBpZiAoIW1vZHVsZU5hbWUpIHsKICAgICAgICAgICAgIHNlbWFu
dGljRmFpbElmVHJ1ZShoYXNLZXl3b3JkRm9yTG9jYWxCaW5kaW5ncywgIkNhbm5vdCB1c2Uga2V5
d29yZCBhcyBleHBvcnRlZCB2YXJpYWJsZSBuYW1lIik7CiAgICAgICAgICAgICAvLyBTaW5jZSB0
aGlzIGV4cG9ydCBkZWNsYXJhdGlvbiBkb2VzIG5vdCBoYXZlIG1vZHVsZSBzcGVjaWZpZXIgcGFy
dCwgaXQgZXhwb3J0cyB0aGUgbG9jYWwgYmluZGluZ3MuCiAgICAgICAgICAgICAvLyBXaGlsZSB0
aGUgZXhwb3J0IGRlY2xhcmF0aW9uIHdpdGggbW9kdWxlIHNwZWNpZmllciBkb2VzIG5vdCBoYXZl
IGFueSBlZmZlY3Qgb24gdGhlIGN1cnJlbnQgbW9kdWxlJ3Mgc2NvcGUsCkBAIC0yNTQ5LDcgKzI1
NTEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlRXhwb3J0RGVjbGFyYQogICAgICAgICAgICAgfQogICAgICAgICB9
CiAKLSAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRXhwb3J0TmFtZWREZWNsYXJhdGlvbihl
eHBvcnRMb2NhdGlvbiwgc3BlY2lmaWVyTGlzdCwgbW9kdWxlU3BlY2lmaWVyKTsKKyAgICAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlRXhwb3J0TmFtZWREZWNsYXJhdGlvbihleHBvcnRMb2NhdGlv
biwgc3BlY2lmaWVyTGlzdCwgbW9kdWxlTmFtZSk7CiAgICAgfQogCiAgICAgZGVmYXVsdDogewpA
QCAtMjg4Niw3ICsyODg4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhw
cmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcm9wZXJ0eU1ldGgKICAgICBKU1Rva2Vu
TG9jYXRpb24gbWV0aG9kTG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICB1bnNpZ25lZCBt
ZXRob2RTdGFydCA9IHRva2VuU3RhcnQoKTsKICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1
aWxkZXI+IG1ldGhvZEluZm87Ci0gICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNv
bnRleHQsIEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIE1ldGhvZE1vZGUsIGZhbHNlLCBDb25zdHJ1
Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBtZXRob2RTdGFydCwgbWV0
aG9kSW5mbywgU3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZSkpLCAiQ2Fubm90IHBhcnNlIHRoaXMg
bWV0aG9kIik7CisgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1
bmN0aW9uTm9SZXF1aXJlbWVudHMsIFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSwgZmFsc2Us
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIG1ldGhvZFN0
YXJ0LCBtZXRob2RJbmZvLCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlKSksICJDYW5ub3QgcGFy
c2UgdGhpcyBtZXRob2QiKTsKICAgICBtZXRob2RJbmZvLm5hbWUgPSBtZXRob2ROYW1lOwogICAg
IHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihtZXRob2RMb2NhdGlvbiwgbWV0aG9k
SW5mbyk7CiB9CkBAIC0yOTEyLDExICsyOTE0LDExIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVByb3BlcnR5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdldHRlclNldHRlcihU
CiAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOwogICAgIGlmICh0eXBl
ICYgUHJvcGVydHlOb2RlOjpHZXR0ZXIpIHsKICAgICAgICAgZmFpbElmRmFsc2UobWF0Y2goT1BF
TlBBUkVOKSwgIkV4cGVjdGVkIGEgcGFyYW1ldGVyIGxpc3QgZm9yIGdldHRlciBkZWZpbml0aW9u
Iik7Ci0gICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5j
dGlvbk5vUmVxdWlyZW1lbnRzLCBHZXR0ZXJNb2RlLCBmYWxzZSwgY29uc3RydWN0b3JLaW5kLCBz
dXBlckJpbmRpbmcsCisgICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250
ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGUs
IGZhbHNlLCBjb25zdHJ1Y3RvcktpbmQsIHN1cGVyQmluZGluZywKICAgICAgICAgICAgIGdldHRl
ck9yU2V0dGVyU3RhcnRPZmZzZXQsIGluZm8sIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUpKSwg
IkNhbm5vdCBwYXJzZSBnZXR0ZXIgZGVmaW5pdGlvbiIpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IGZhaWxJZkZhbHNlKG1hdGNoKE9QRU5QQVJFTiksICJFeHBlY3RlZCBhIHBhcmFtZXRlciBsaXN0
IGZvciBzZXR0ZXIgZGVmaW5pdGlvbiIpOwotICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5j
dGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgU2V0dGVyTW9kZSwgZmFs
c2UsIGNvbnN0cnVjdG9yS2luZCwgc3VwZXJCaW5kaW5nLAorICAgICAgICBmYWlsSWZGYWxzZSgo
cGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgU291cmNl
UGFyc2VNb2RlOjpTZXR0ZXJNb2RlLCBmYWxzZSwgY29uc3RydWN0b3JLaW5kLCBzdXBlckJpbmRp
bmcsCiAgICAgICAgICAgICBnZXR0ZXJPclNldHRlclN0YXJ0T2Zmc2V0LCBpbmZvLCBTdGFuZGFy
ZEZ1bmN0aW9uUGFyc2VUeXBlKSksICJDYW5ub3QgcGFyc2Ugc2V0dGVyIGRlZmluaXRpb24iKTsK
ICAgICB9CiAgICAgaWYgKHN0cmluZ1Byb3BlcnR5TmFtZSkKQEAgLTMxODQsNyArMzE4Niw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlUHJpbWFyeUV4cHJlCiAgICAgICAgIG5leHQoKTsKICAgICAgICAgUGFyc2Vy
RnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiBpbmZvOwogICAgICAgICBpbmZvLm5hbWUgPSAmbV92
bS0+cHJvcGVydHlOYW1lcy0+bnVsbElkZW50aWZpZXI7Ci0gICAgICAgIGZhaWxJZkZhbHNlKChw
YXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBOb3JtYWxG
dW5jdGlvbk1vZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6
Tm90TmVlZGVkLCBmdW5jdGlvbktleXdvcmRTdGFydCwgaW5mbywgU3RhbmRhcmRGdW5jdGlvblBh
cnNlVHlwZSkpLCAiQ2Fubm90IHBhcnNlIGZ1bmN0aW9uIGV4cHJlc3Npb24iKTsKKyAgICAgICAg
ZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1aXJl
bWVudHMsIFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlLCBmYWxzZSwgQ29uc3Ry
dWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3Jk
U3RhcnQsIGluZm8sIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUpKSwgIkNhbm5vdCBwYXJzZSBm
dW5jdGlvbiBleHByZXNzaW9uIik7CiAgICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0
aW9uRXhwcihsb2NhdGlvbiwgaW5mbyk7CiAgICAgfQogI2lmIEVOQUJMRShFUzZfQ0xBU1NfU1lO
VEFYKQpAQCAtMzQ1Niw3ICszNDU4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBcnJvd0Z1bmN0aW8KICAgICBs
b2NhdGlvbiA9IHRva2VuTG9jYXRpb24oKTsKICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1
aWxkZXI+IGluZm87CiAgICAgaW5mby5uYW1lID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJ
ZGVudGlmaWVyOwotICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBG
dW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBBcnJvd0Z1bmN0aW9uTW9kZSwgdHJ1ZSwgQ29uc3RydWN0
b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3Rh
cnQsIGluZm8sIEFycm93RnVuY3Rpb25QYXJzZVR5cGUpKSwgIkNhbm5vdCBwYXJzZSBhcnJvdyBm
dW5jdGlvbiBleHByZXNzaW9uIik7CisgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZv
KGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dG
dW5jdGlvbk1vZGUsIHRydWUsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpO
b3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBpbmZvLCBBcnJvd0Z1bmN0aW9uUGFyc2VU
eXBlKSksICJDYW5ub3QgcGFyc2UgYXJyb3cgZnVuY3Rpb24gZXhwcmVzc2lvbiIpOwogCiAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlQXJyb3dGdW5jdGlvbkV4cHIobG9jYXRpb24sIGluZm8pOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggNmJmMjIyNDUwYjc4NjU5
YTNjYjA0MjE4NjE0ZDU2ZGU0NGVkNjNjNC4uYzJlNmE2NTA0MDg5OTE1ZGMyODA1N2ZmZTAxZjA0
ZWVhZGUwMWYxNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC02MTUs
MTIgKzYxNSwxMiBAQCBjbGFzcyBQYXJzZXIgewogCiBwdWJsaWM6CiAgICAgUGFyc2VyKAotICAg
ICAgICBWTSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNl
clN0cmljdE1vZGUsIEpTUGFyc2VyQ29kZVR5cGUsIAorICAgICAgICBWTSosIGNvbnN0IFNvdXJj
ZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIFNvdXJjZVBh
cnNlTW9kZSwKICAgICAgICAgQ29uc3RydWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQg
PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNr
SWZOZWVkZWQpOwogICAgIH5QYXJzZXIoKTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWRO
b2RlPgotICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYs
IGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlvblBhcnNlTW9kZSwgTW9kdWxlUGFyc2VNb2RlKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImLCBjb25z
dCBJZGVudGlmaWVyJiwgU291cmNlUGFyc2VNb2RlKTsKIAogICAgIEpTVGV4dFBvc2l0aW9uIHBv
c2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKSBjb25zdCB7IHJldHVybiBtX2xleGVyLT5wb3NpdGlv
bkJlZm9yZUxhc3ROZXdsaW5lKCk7IH0KICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb25CZWZv
cmVMYXN0VG9rZW4oKSBjb25zdCB7IHJldHVybiBtX2xleGVyLT5sYXN0VG9rZW5Mb2NhdGlvbigp
OyB9CkBAIC04NDgsNyArODQ4LDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICB9CiAKICAgICBQYXJz
ZXIoKTsKLSAgICBTdHJpbmcgcGFyc2VJbm5lcihjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25Q
YXJzZU1vZGUsIE1vZHVsZVBhcnNlTW9kZSk7CisgICAgU3RyaW5nIHBhcnNlSW5uZXIoY29uc3Qg
SWRlbnRpZmllciYsIFNvdXJjZVBhcnNlTW9kZSk7CiAKICAgICB2b2lkIGRpZEZpbmlzaFBhcnNp
bmcoU291cmNlRWxlbWVudHMqLCBEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjayYsIFZh
cmlhYmxlRW52aXJvbm1lbnQmLCBDb2RlRmVhdHVyZXMsIGludCwgY29uc3QgVmVjdG9yPFJlZlB0
cjxVbmlxdWVkU3RyaW5nSW1wbD4+JiYpOwogCkBAIC0xMTAzLDcgKzExMDMsNyBAQCBjbGFzcyBQ
YXJzZXIgewogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IHBh
cnNlUHJvcGVydHkoVHJlZUJ1aWxkZXImLCBib29sIHN0cmljdCk7CiAgICAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBwYXJzZVByb3BlcnR5TWV0aG9kKFRyZWVC
dWlsZGVyJiBjb250ZXh0LCBjb25zdCBJZGVudGlmaWVyKiBtZXRob2ROYW1lKTsKICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBwYXJzZUdldHRlclNldHRlcihU
cmVlQnVpbGRlciYsIGJvb2wgc3RyaWN0LCBQcm9wZXJ0eU5vZGU6OlR5cGUsIHVuc2lnbmVkIGdl
dHRlck9yU2V0dGVyU3RhcnRPZmZzZXQsIENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2lu
ZDo6Tm9uZSwgU3VwZXJCaW5kaW5nID0gU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQpOwotICAgIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRnVuY3Rpb25Cb2R5
IHBhcnNlRnVuY3Rpb25Cb2R5KFRyZWVCdWlsZGVyJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
aW50LCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50
IHBhcmFtZXRlcnNTdGFydCwgQ29uc3RydWN0b3JLaW5kLCBGdW5jdGlvbkJvZHlUeXBlLCB1bnNp
Z25lZCwgRnVuY3Rpb25QYXJzZU1vZGUpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gQUxXQVlTX0lOTElORSBUcmVlRnVuY3Rpb25Cb2R5IHBhcnNlRnVuY3Rpb25Cb2R5KFRyZWVC
dWlsZGVyJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQgZnVuY3Rpb25LZXl3b3Jk
U3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgQ29uc3Ry
dWN0b3JLaW5kLCBGdW5jdGlvbkJvZHlUeXBlLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlKTsK
ICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgYm9vbCBwYXJz
ZUZvcm1hbFBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCwg
dW5zaWduZWQmKTsKICAgICBlbnVtIFZhckRlY2xhcmF0aW9uTGlzdENvbnRleHQgeyBGb3JMb29w
Q29udGV4dCwgVmFyRGVjbGFyYXRpb25Db250ZXh0IH07CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFRy
ZWVCdWlsZGVyJiwgaW50JiBkZWNsYXJhdGlvbnMsIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiYg
bGFzdFBhdHRlcm4sIFRyZWVFeHByZXNzaW9uJiBsYXN0SW5pdGlhbGl6ZXIsIEpTVGV4dFBvc2l0
aW9uJiBpZGVudFN0YXJ0LCBKU1RleHRQb3NpdGlvbiYgaW5pdFN0YXJ0LCBKU1RleHRQb3NpdGlv
biYgaW5pdEVuZCwgVmFyRGVjbGFyYXRpb25MaXN0Q29udGV4dCwgRGVjbGFyYXRpb25UeXBlLCBF
eHBvcnRUeXBlLCBib29sJiBmb3JMb29wQ29uc3REb2VzTm90SGF2ZUluaXRpYWxpemVyKTsKQEAg
LTExMTMsMTcgKzExMTMsMTcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGFyc2VE
ZXN0cnVjdHVyaW5nUGF0dGVybihUcmVlQnVpbGRlciYsIERlc3RydWN0dXJpbmdLaW5kLCBFeHBv
cnRUeXBlLCBjb25zdCBJZGVudGlmaWVyKiogZHVwbGljYXRlSWRlbnRpZmllciA9IG51bGxwdHIs
IGJvb2wqIGhhc0Rlc3RydWN0dXJpbmdQYXR0ZXJuID0gbnVsbHB0ciwgQXNzaWdubWVudENvbnRl
eHQgPSBBc3NpZ25tZW50Q29udGV4dDo6RGVjbGFyYXRpb25TdGF0ZW1lbnQsIGludCBkZXB0aCA9
IDApOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVE
ZXN0cnVjdHVyaW5nUGF0dGVybiB0cnlQYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuRXhwcmVzc2lv
bihUcmVlQnVpbGRlciYsIEFzc2lnbm1lbnRDb250ZXh0KTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBUcmVlRXhwcmVzc2lvbiBwYXJzZURlZmF1bHRWYWx1
ZUZvckRlc3RydWN0dXJpbmdQYXR0ZXJuKFRyZWVCdWlsZGVyJik7Ci0gICAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VNb2R1bGVTb3VyY2VFbGVt
ZW50cyhUcmVlQnVpbGRlciYsIE1vZHVsZVBhcnNlTW9kZSk7CisgICAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VNb2R1bGVTb3VyY2VFbGVtZW50
cyhUcmVlQnVpbGRlciYsIFNvdXJjZVBhcnNlTW9kZSk7CiAgICAgZW51bSBjbGFzcyBJbXBvcnRT
cGVjaWZpZXJUeXBlIHsgTmFtZXNwYWNlSW1wb3J0LCBOYW1lZEltcG9ydCwgRGVmYXVsdEltcG9y
dCB9OwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxk
ZXI6OkltcG9ydFNwZWNpZmllciBwYXJzZUltcG9ydENsYXVzZUl0ZW0oVHJlZUJ1aWxkZXImLCBJ
bXBvcnRTcGVjaWZpZXJUeXBlKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5
cGVuYW1lIFRyZWVCdWlsZGVyOjpNb2R1bGVTcGVjaWZpZXIgcGFyc2VNb2R1bGVTcGVjaWZpZXIo
VHJlZUJ1aWxkZXImKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1l
IFRyZWVCdWlsZGVyOjpNb2R1bGVOYW1lIHBhcnNlTW9kdWxlTmFtZShUcmVlQnVpbGRlciYpOwog
ICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZUltcG9y
dERlY2xhcmF0aW9uKFRyZWVCdWlsZGVyJik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6RXhwb3J0U3BlY2lmaWVyIHBhcnNlRXhwb3J0U3Bl
Y2lmaWVyKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBWZWN0b3I8Y29uc3QgSWRlbnRpZmllcio+JiBt
YXliZUxvY2FsTmFtZXMsIGJvb2wmIGhhc0tleXdvcmRGb3JMb2NhbEJpbmRpbmdzKTsKICAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VFeHBvcnREZWNs
YXJhdGlvbihUcmVlQnVpbGRlciYpOwogCi0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBORVZFUl9JTkxJTkUgYm9vbCBwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYsIEZ1bmN0
aW9uUmVxdWlyZW1lbnRzLCBGdW5jdGlvblBhcnNlTW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5p
bmdTY29wZSwgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdv
cmRTdGFydCwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYsIEZ1bmN0aW9uUGFyc2VU
eXBlKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBib29s
IHBhcnNlRnVuY3Rpb25JbmZvKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVudHMsIFNv
dXJjZVBhcnNlTW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JL
aW5kLCBTdXBlckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgUGFyc2VyRnVuY3Rp
b25JbmZvPFRyZWVCdWlsZGVyPiYsIEZ1bmN0aW9uUGFyc2VUeXBlKTsKICAgICAKLSAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBpbnQgcGFyc2VGdW5jdGlvblBh
cmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBGdW5jdGlvblBhcnNlTW9kZSwgUGFyc2VyRnVuY3Rpb25J
bmZvPFRyZWVCdWlsZGVyPiYpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVW
RVJfSU5MSU5FIGludCBwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIFNvdXJj
ZVBhcnNlTW9kZSwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYpOwogCiAjaWYgRU5B
QkxFKEVTNl9DTEFTU19TWU5UQVgpCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBO
RVZFUl9JTkxJTkUgVHJlZUNsYXNzRXhwcmVzc2lvbiBwYXJzZUNsYXNzKFRyZWVCdWlsZGVyJiwg
RnVuY3Rpb25SZXF1aXJlbWVudHMsIFBhcnNlckNsYXNzSW5mbzxUcmVlQnVpbGRlcj4mKTsKQEAg
LTEyNDcsNyArMTI0Nyw2IEBAIGNsYXNzIFBhcnNlciB7CiAgICAgVmVjdG9yPFJlZlB0cjxVbmlx
dWVkU3RyaW5nSW1wbD4+IG1fY2xvc2VkVmFyaWFibGVzOwogICAgIENvZGVGZWF0dXJlcyBtX2Zl
YXR1cmVzOwogICAgIGludCBtX251bUNvbnN0YW50czsKLSAgICBKU1BhcnNlckNvZGVUeXBlIG1f
Y29kZVR5cGU7CiAgICAgCiAgICAgc3RydWN0IERlcHRoTWFuYWdlciB7CiAgICAgICAgIERlcHRo
TWFuYWdlcihpbnQqIGRlcHRoKQpAQCAtMTI3MCw3ICsxMjY5LDcgQEAgY2xhc3MgUGFyc2VyIHsK
IAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWRO
b2RlPgotc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIEZ1bmN0
aW9uUGFyc2VNb2RlIHBhcnNlTW9kZSwgTW9kdWxlUGFyc2VNb2RlIG1vZHVsZVBhcnNlTW9kZSkK
K3N0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFy
c2VyRXJyb3ImIGVycm9yLCBjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBTb3VyY2VQYXJz
ZU1vZGUgcGFyc2VNb2RlKQogewogICAgIGludCBlcnJMaW5lOwogICAgIFN0cmluZyBlcnJNc2c7
CkBAIC0xMjg3LDcgKzEyODYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlKFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSQogICAgIEFTU0VS
VChtX3NvdXJjZS0+c3RhcnRDb2x1bW4oKSA+IDApOwogICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1u
ID0gbV9zb3VyY2UtPnN0YXJ0Q29sdW1uKCkgLSAxOwogCi0gICAgU3RyaW5nIHBhcnNlRXJyb3Ig
PSBwYXJzZUlubmVyKGNhbGxlZU5hbWUsIHBhcnNlTW9kZSwgbW9kdWxlUGFyc2VNb2RlKTsKKyAg
ICBTdHJpbmcgcGFyc2VFcnJvciA9IHBhcnNlSW5uZXIoY2FsbGVlTmFtZSwgcGFyc2VNb2RlKTsK
IAogICAgIGludCBsaW5lTnVtYmVyID0gbV9sZXhlci0+bGluZU51bWJlcigpOwogICAgIGJvb2wg
bGV4RXJyb3IgPSBtX2xleGVyLT5zYXdFcnJvcigpOwpAQCAtMTM1MywxOCArMTM1MiwxNyBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9kZT4KIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBw
YXJzZSgKICAgICBWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwKICAgICBjb25zdCBJ
ZGVudGlmaWVyJiBuYW1lLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLAotICAgIEpT
UGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBKU1BhcnNlckNvZGVUeXBlIGNvZGVUeXBlLAor
ICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VN
b2RlLAogICAgIFBhcnNlckVycm9yJiBlcnJvciwgSlNUZXh0UG9zaXRpb24qIHBvc2l0aW9uQmVm
b3JlTGFzdE5ld2xpbmUgPSBudWxscHRyLAotICAgIEZ1bmN0aW9uUGFyc2VNb2RlIHBhcnNlTW9k
ZSA9IE5vdEFGdW5jdGlvbk1vZGUsIENvbnN0cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JL
aW5kID0gQ29uc3RydWN0b3JLaW5kOjpOb25lLAotICAgIFRoaXNURFpNb2RlIHRoaXNURFpNb2Rl
ID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQsCi0gICAgTW9kdWxlUGFyc2VNb2RlIG1vZHVs
ZVBhcnNlTW9kZSA9IE1vZHVsZVBhcnNlTW9kZTo6QW5hbHl6ZSkKKyAgICBDb25zdHJ1Y3Rvcktp
bmQgZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwKKyAgICBU
aGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkKQogewog
ICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJQYXJzaW5nIik7CiAKICAgICBBU1NF
UlQoIXNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2UoKS5pc051bGwoKSk7CiAgICAgaWYgKHNvdXJj
ZS5wcm92aWRlcigpLT5zb3VyY2UoKS5pczhCaXQoKSkgewotICAgICAgICBQYXJzZXI8TGV4ZXI8
TENoYXI+PiBwYXJzZXIodm0sIHNvdXJjZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIGNvZGVU
eXBlLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCB0aGlzVERaTW9kZSk7Ci0gICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxQYXJzZWROb2RlPiByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4o
ZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSwgbW9kdWxlUGFyc2VNb2RlKTsKKyAgICAgICAgUGFyc2Vy
PExleGVyPExDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2Rl
LCBwYXJzZU1vZGUsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKKyAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJz
ZWROb2RlPihlcnJvciwgbmFtZSwgcGFyc2VNb2RlKTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVm
b3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9
IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CiAgICAgICAgIGlmIChidWlsdGlu
TW9kZSA9PSBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluKSB7CkBAIC0xMzc2LDggKzEzNzQs
OCBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZGVmYXVsdENvbnN0cnVjdG9y
S2luZCA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsICJCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0
ZURlZmF1bHRDb25zdHJ1Y3RvciBzaG91bGQgYWx3YXlzIHVzZSBhIDgtYml0IHN0cmluZyIpOwot
ICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwg
c3RyaWN0TW9kZSwgY29kZVR5cGUsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2Rl
KTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNl
PFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUsIG1vZHVsZVBhcnNlTW9kZSk7Cisg
ICAgUGFyc2VyPExleGVyPFVDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBz
dHJpY3RNb2RlLCBwYXJzZU1vZGUsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2Rl
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNl
PFBhcnNlZE5vZGU+KGVycm9yLCBuYW1lLCBwYXJzZU1vZGUpOwogICAgIGlmIChwb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lKQogICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBh
cnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaAppbmRleCA0MjA0MzZlYTMw
NmMxODQ5MDljMTg4NDQ5ZTg2ODU1NDlkMjY0YjBiLi5hNjU2MDM4MDVhZGE5ODBjMzNmMzVkNmFj
N2UyODJlZTUwZDU1NmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlck1vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJN
b2Rlcy5oCkBAIC0zOCwyMiArMzgsODAgQEAgZW51bSBjbGFzcyBKU1BhcnNlckNvZGVUeXBlIHsg
UHJvZ3JhbSwgRnVuY3Rpb24sIE1vZHVsZSB9OwogZW51bSBjbGFzcyBDb25zdHJ1Y3RvcktpbmQg
eyBOb25lLCBCYXNlLCBEZXJpdmVkIH07CiBlbnVtIGNsYXNzIFN1cGVyQmluZGluZyB7IE5lZWRl
ZCwgTm90TmVlZGVkIH07CiBlbnVtIGNsYXNzIFRoaXNURFpNb2RlIHsgQWx3YXlzQ2hlY2ssIENo
ZWNrSWZOZWVkZWQgfTsKLWVudW0gY2xhc3MgTW9kdWxlUGFyc2VNb2RlIHsgQW5hbHl6ZSwgRXZh
bHVhdGUgfTsKIAogZW51bSBQcm9maWxlck1vZGUgeyBQcm9maWxlck9mZiwgUHJvZmlsZXJPbiB9
OwogZW51bSBEZWJ1Z2dlck1vZGUgeyBEZWJ1Z2dlck9mZiwgRGVidWdnZXJPbiB9OwogCiBlbnVt
IEZ1bmN0aW9uTW9kZSB7IEZ1bmN0aW9uRXhwcmVzc2lvbiwgRnVuY3Rpb25EZWNsYXJhdGlvbiB9
OwogCi1lbnVtIEZ1bmN0aW9uUGFyc2VNb2RlIHsKK2VudW0gY2xhc3MgU291cmNlUGFyc2VNb2Rl
IHsKICAgICBOb3JtYWxGdW5jdGlvbk1vZGUsCiAgICAgR2V0dGVyTW9kZSwKICAgICBTZXR0ZXJN
b2RlLAogICAgIE1ldGhvZE1vZGUsCi0gICAgTm90QUZ1bmN0aW9uTW9kZSwKLSAgICBBcnJvd0Z1
bmN0aW9uTW9kZQorICAgIEFycm93RnVuY3Rpb25Nb2RlLAorICAgIFByb2dyYW1Nb2RlLAorICAg
IE1vZHVsZUFuYWx5emVNb2RlLAorICAgIE1vZHVsZUV2YWx1YXRlTW9kZQogfTsKIAoraW5saW5l
IGJvb2wgaXNGdW5jdGlvblBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQorewor
ICAgIHN3aXRjaCAocGFyc2VNb2RlKSB7CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1h
bEZ1bmN0aW9uTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKKyAg
ICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6TWV0aG9kTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlv
bk1vZGU6CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
OlByb2dyYW1Nb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9k
ZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlOgorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgcmV0dXJuIGZhbHNlOworfQorCitpbmxpbmUgYm9vbCBpc01vZHVsZVBhcnNlTW9kZShT
b3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQoreworICAgIHN3aXRjaCAocGFyc2VNb2RlKSB7Cisg
ICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlOgorICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFsdWF0ZU1vZGU6CisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToKKyAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
U2V0dGVyTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZToKKyAgICBj
YXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU6CisgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6OlByb2dyYW1Nb2RlOgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitp
bmxpbmUgYm9vbCBpc1Byb2dyYW1QYXJzZU1vZGUoU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkK
K3sKKyAgICBzd2l0Y2ggKHBhcnNlTW9kZSkgeworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpQ
cm9ncmFtTW9kZToKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0
ZXJNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgorICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpB
cnJvd0Z1bmN0aW9uTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6
ZU1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZToKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogaW5saW5lIGJvb2wgZnVuY3Rpb25OYW1lSXNJ
blNjb3BlKGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUp
CiB7CiAgICAgaWYgKG5hbWUuaXNOdWxsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4IGRkMjY4MDI3N2YwMjJiODY1ODQxZTRhM2NkMjA4Y2Zi
ZDIyMGM5MDIuLjA3NjBjMTllYjE2MzZkYjIxYTE3OTYxMmE1NDk2ZTE5Y2ZkMWJiMDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC04NCw3ICs4
NCw3IEBAIGNsYXNzIFN5bnRheENoZWNrZXIgewogICAgICAgICBUZW1wbGF0ZVN0cmluZ1Jlc3Vs
dCwgVGVtcGxhdGVTdHJpbmdMaXN0UmVzdWx0LAogICAgICAgICBUZW1wbGF0ZUV4cHJlc3Npb25M
aXN0UmVzdWx0LCBUZW1wbGF0ZUV4cHIsCiAgICAgICAgIFRhZ2dlZFRlbXBsYXRlRXhwciwKLSAg
ICAgICAgTW9kdWxlU3BlY2lmaWVyUmVzdWx0LAorICAgICAgICBNb2R1bGVOYW1lUmVzdWx0LAog
ICAgICAgICBJbXBvcnRTcGVjaWZpZXJSZXN1bHQsIEltcG9ydFNwZWNpZmllckxpc3RSZXN1bHQs
CiAgICAgICAgIEV4cG9ydFNwZWNpZmllclJlc3VsdCwgRXhwb3J0U3BlY2lmaWVyTGlzdFJlc3Vs
dAogICAgIH07CkBAIC0xMjcsNyArMTI3LDcgQEAgY2xhc3MgU3ludGF4Q2hlY2tlciB7CiAjaWYg
RU5BQkxFKEVTNl9DTEFTU19TWU5UQVgpCiAgICAgdHlwZWRlZiBpbnQgQ2xhc3NFeHByZXNzaW9u
OwogI2VuZGlmCi0gICAgdHlwZWRlZiBpbnQgTW9kdWxlU3BlY2lmaWVyOworICAgIHR5cGVkZWYg
aW50IE1vZHVsZU5hbWU7CiAgICAgdHlwZWRlZiBpbnQgSW1wb3J0U3BlY2lmaWVyOwogICAgIHR5
cGVkZWYgaW50IEltcG9ydFNwZWNpZmllckxpc3Q7CiAgICAgdHlwZWRlZiBpbnQgRXhwb3J0U3Bl
Y2lmaWVyOwpAQCAtMTg2LDcgKzE4Niw3IEBAIGNsYXNzIFN5bnRheENoZWNrZXIgewogICAgIENs
YXNzRXhwcmVzc2lvbiBjcmVhdGVDbGFzc0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29u
c3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25UeXBlLCBFeHByZXNzaW9uVHlwZSwgUHJvcGVydHlM
aXN0LCBQcm9wZXJ0eUxpc3QpIHsgcmV0dXJuIENsYXNzRXhwcjsgfQogI2VuZGlmCiAgICAgRXhw
cmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNv
bnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9u
RXhwcjsgfQotICAgIGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwg
aW50LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBpbnQpIHsgcmV0dXJuIEZ1bmN0aW9uQm9k
eVJlc3VsdDsgfQorICAgIGludCBjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGlu
dCwgaW50LCBDb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUpIHsgcmV0
dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycm93
RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9u
SW5mbzxTeW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAgIHZvaWQg
c2V0RnVuY3Rpb25OYW1lU3RhcnQoaW50LCBpbnQpIHsgfQogICAgIGludCBjcmVhdGVBcmd1bWVu
dHMoKSB7IHJldHVybiBBcmd1bWVudHNSZXN1bHQ7IH0KQEAgLTI1OSwxNSArMjU5LDE1IEBAIGNs
YXNzIFN5bnRheENoZWNrZXIgewogICAgIGludCBjcmVhdGVUaHJvd1N0YXRlbWVudChjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBTdGF0ZW1lbnRSZXN1bHQ7
IH0KICAgICBpbnQgY3JlYXRlRGVidWdnZXIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBp
bnQpIHsgcmV0dXJuIFN0YXRlbWVudFJlc3VsdDsgfQogICAgIGludCBjcmVhdGVDb25zdFN0YXRl
bWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBTdGF0
ZW1lbnRSZXN1bHQ7IH0KLSAgICBpbnQgY3JlYXRlTW9kdWxlU3BlY2lmaWVyKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImKSB7IHJldHVybiBNb2R1bGVTcGVjaWZpZXJS
ZXN1bHQ7IH0KKyAgICBpbnQgY3JlYXRlTW9kdWxlTmFtZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBjb25zdCBJZGVudGlmaWVyJikgeyByZXR1cm4gTW9kdWxlTmFtZVJlc3VsdDsgfQogICAgIElt
cG9ydFNwZWNpZmllciBjcmVhdGVJbXBvcnRTcGVjaWZpZXIoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IElkZW50aWZpZXImKSB7IHJldHVybiBJbXBvcnRT
cGVjaWZpZXJSZXN1bHQ7IH0KICAgICBJbXBvcnRTcGVjaWZpZXJMaXN0IGNyZWF0ZUltcG9ydFNw
ZWNpZmllckxpc3QoKSB7IHJldHVybiBJbXBvcnRTcGVjaWZpZXJMaXN0UmVzdWx0OyB9CiAgICAg
dm9pZCBhcHBlbmRJbXBvcnRTcGVjaWZpZXIoSW1wb3J0U3BlY2lmaWVyTGlzdCwgSW1wb3J0U3Bl
Y2lmaWVyKSB7IH0KLSAgICBpbnQgY3JlYXRlSW1wb3J0RGVjbGFyYXRpb24oY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgSW1wb3J0U3BlY2lmaWVyTGlzdCwgTW9kdWxlU3BlY2lmaWVyKSB7IHJldHVy
biBTdGF0ZW1lbnRSZXN1bHQ7IH0KLSAgICBpbnQgY3JlYXRlRXhwb3J0QWxsRGVjbGFyYXRpb24o
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgTW9kdWxlU3BlY2lmaWVyKSB7IHJldHVybiBTdGF0ZW1l
bnRSZXN1bHQ7IH0KKyAgICBpbnQgY3JlYXRlSW1wb3J0RGVjbGFyYXRpb24oY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgSW1wb3J0U3BlY2lmaWVyTGlzdCwgTW9kdWxlTmFtZSkgeyByZXR1cm4gU3Rh
dGVtZW50UmVzdWx0OyB9CisgICAgaW50IGNyZWF0ZUV4cG9ydEFsbERlY2xhcmF0aW9uKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIE1vZHVsZU5hbWUpIHsgcmV0dXJuIFN0YXRlbWVudFJlc3VsdDsg
fQogICAgIGludCBjcmVhdGVFeHBvcnREZWZhdWx0RGVjbGFyYXRpb24oY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgaW50LCBjb25zdCBJZGVudGlmaWVyJikgeyByZXR1cm4gU3RhdGVtZW50UmVzdWx0
OyB9CiAgICAgaW50IGNyZWF0ZUV4cG9ydExvY2FsRGVjbGFyYXRpb24oY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgaW50KSB7IHJldHVybiBTdGF0ZW1lbnRSZXN1bHQ7IH0KLSAgICBpbnQgY3JlYXRl
RXhwb3J0TmFtZWREZWNsYXJhdGlvbihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBvcnRTcGVj
aWZpZXJMaXN0LCBNb2R1bGVTcGVjaWZpZXIpIHsgcmV0dXJuIFN0YXRlbWVudFJlc3VsdDsgfQor
ICAgIGludCBjcmVhdGVFeHBvcnROYW1lZERlY2xhcmF0aW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cG9ydFNwZWNpZmllckxpc3QsIE1vZHVsZU5hbWUpIHsgcmV0dXJuIFN0YXRlbWVudFJl
c3VsdDsgfQogICAgIEV4cG9ydFNwZWNpZmllciBjcmVhdGVFeHBvcnRTcGVjaWZpZXIoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IElkZW50aWZpZXImKSB7
IHJldHVybiBFeHBvcnRTcGVjaWZpZXJSZXN1bHQ7IH0KICAgICBFeHBvcnRTcGVjaWZpZXJMaXN0
IGNyZWF0ZUV4cG9ydFNwZWNpZmllckxpc3QoKSB7IHJldHVybiBFeHBvcnRTcGVjaWZpZXJMaXN0
UmVzdWx0OyB9CiAgICAgdm9pZCBhcHBlbmRFeHBvcnRTcGVjaWZpZXIoRXhwb3J0U3BlY2lmaWVy
TGlzdCwgRXhwb3J0U3BlY2lmaWVyKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlQ2FjaGUuY3BwCmluZGV4IDEwNDMxNmU4YjRhODRlMjA2MTdlYjA4YjBhNDBjOWRmNDMx
NTZlMmEuLmFiNzBlYWJiOWUzYTJhMDQ1MGM2MjllNzA1NjY2ZjRkY2NhMDFlMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZUNhY2hlLmNwcApAQCAtOTQsOCArOTQsOCBA
QCBVbmxpbmtlZENvZGVCbG9ja1R5cGUqIENvZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKFZN
JiB2bSwgRXhlY3V0YWJsZVR5cGUqIGV4ZQogCiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDYWNoZVR5
cGVzPFVubGlua2VkQ29kZUJsb2NrVHlwZT46OlJvb3ROb2RlIFJvb3ROb2RlOwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxSb290Tm9kZT4gcm9vdE5vZGUgPSBwYXJzZTxSb290Tm9kZT4oCi0gICAgICAg
ICZ2bSwgc291cmNlLCBJZGVudGlmaWVyKCksIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCAKLSAg
ICAgICAgSlNQYXJzZXJDb2RlVHlwZTo6UHJvZ3JhbSwgZXJyb3IsIG51bGxwdHIsIEZ1bmN0aW9u
UGFyc2VNb2RlOjpOb3RBRnVuY3Rpb25Nb2RlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHRoaXNU
RFpNb2RlKTsKKyAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1vZGUs
IHN0cmljdE1vZGUsCisgICAgICAgIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGVycm9y
LCBudWxscHRyLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHRoaXNURFpNb2RlKTsKICAgICBpZiAo
IXJvb3ROb2RlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTQ1LDggKzE0NSw4IEBA
IFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBDb2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0
YWJsZUZyb21HbG9iYWxDb2RlKFZNJiB2CiAKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJl
Zm9yZUxhc3ROZXdsaW5lOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9ncmFtTm9kZT4gcHJvZ3Jh
bSA9IHBhcnNlPFByb2dyYW1Ob2RlPigKLSAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIo
KSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwgCi0gICAgICAgIEpTUGFyc2VyU3Ry
aWN0TW9kZTo6Tm90U3RyaWN0LCBKU1BhcnNlckNvZGVUeXBlOjpQcm9ncmFtLCAKKyAgICAgICAg
JnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRp
biwKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9k
ZTo6UHJvZ3JhbU1vZGUsCiAgICAgICAgIGVycm9yLCAmcG9zaXRpb25CZWZvcmVMYXN0TmV3bGlu
ZSk7CiAgICAgaWYgKCFwcm9ncmFtKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVycm9yLmlz
VmFsaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21w
bGV0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3Bw
CmluZGV4IGYyYTdmOWVkNmYwZWM3ZWNmOWJhMzdmYjJjYzY3MTBmZjE1ZmNkOWUuLmEzZGFlZTYw
MzQzYWMxNGIxNGFkMDMwNGViZGM5YTI1YWFiMTU3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCkBAIC01OSw4ICs1OSw4IEBAIGJvb2wgY2hlY2tT
eW50YXgoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJv
cikKICAgICBKU0xvY2tIb2xkZXIgbG9jayh2bSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRv
bWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7
CiAgICAgcmV0dXJuICEhcGFyc2U8UHJvZ3JhbU5vZGU+KAotICAgICAgICAmdm0sIHNvdXJjZSwg
SWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCAKLSAgICAgICAg
SlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIEpTUGFyc2VyQ29kZVR5cGU6OlByb2dyYW0s
IGVycm9yKTsKKyAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWls
dGluTW9kZTo6Tm90QnVpbHRpbiwKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJp
Y3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGVycm9yKTsKIH0KIAogYm9vbCBjaGVj
a01vZHVsZVN5bnRheChWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJy
b3ImIGVycm9yKQpAQCAtNjksNyArNjksNyBAQCBib29sIGNoZWNrTW9kdWxlU3ludGF4KFZNJiB2
bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiAgICAgUkVM
RUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRv
bWljU3RyaW5nVGFibGUoKSk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1Ob2Rl
PiBtb2R1bGVQcm9ncmFtTm9kZSA9IHBhcnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKICAgICAgICAg
JnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRp
biwKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QsIEpTUGFyc2VyQ29kZVR5cGU6
Ok1vZHVsZSwgZXJyb3IpOworICAgICAgICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgU291
cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZSwgZXJyb3IpOwogICAgIGlmICghbW9kdWxl
UHJvZ3JhbU5vZGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAppbmRleCA5N2VmZGM3YTg0NmMyODVmMGUzYzJk
MzMyMGMyZWJlZTFhYWE5NTdkLi4wYWIxNjcyMTE2ODE5NGMxYTYwMjg5ZWI4NTZlOThjMGNmYTE3
Yjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcApA
QCAtNDYyLDcgKzQ2Miw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50
YXgoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2Jq
ZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
cm9ncmFtTm9kZT4gcHJvZ3JhbU5vZGUgPSBwYXJzZTxQcm9ncmFtTm9kZT4oCiAgICAgICAgIHZt
LCBtX3NvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGlu
LCAKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIEpTUGFyc2VyQ29kZVR5
cGU6OlByb2dyYW0sIGVycm9yKTsKKyAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJp
Y3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGVycm9yKTsKICAgICBpZiAocHJvZ3Jh
bU5vZGUpCiAgICAgICAgIHJldHVybiAwOwogICAgIEFTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9tb2R1bGVzLXN5
bnRheC1lcnJvci13aXRoLW5hbWVzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9tb2R1bGVzLXN5bnRheC1lcnJvci13aXRoLW5hbWVzLmpzCmluZGV4IDA0MzFjMGE2MDQw
YWExODBkYmFkYzU3MDE2MzQzNGNkYmFjOTA3YTYuLmZhODEwM2EzMGI1ZmM2ZmYyYzA2MjY0OGEx
OWFlNDcyNmIyZTMxNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9z
dHJlc3MvbW9kdWxlcy1zeW50YXgtZXJyb3Itd2l0aC1uYW1lcy5qcworKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL21vZHVsZXMtc3ludGF4LWVycm9yLXdpdGgtbmFtZXMu
anMKQEAgLTE4Nyw3ICsxODcsMTIgQEAgZnVuY3Rpb24gY2hlY2tNb2R1bGVTeW50YXhFcnJvcihz
b3VyY2UsIGVycm9yTWVzc2FnZSkgewogY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3
YAogZXhwb3J0IGRlZmF1bHQgMjA7CiBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBoZWxsbyAoKSB7
IH0KLWAsIGBTeW50YXhFcnJvcjogQ2Fubm90IGV4cG9ydCAnZGVmYXVsdCcgbmFtZSB0d2ljZS4u
OjRgKTsKK2AsIGBTeW50YXhFcnJvcjogT25seSBvbmUgJ2RlZmF1bHQnIGV4cG9ydCBpcyBhbGxv
d2VkLjo0YCk7CisKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2V4cG9ydCBk
ZWZhdWx0IGZ1bmN0aW9uIGhlbGxvICgpIHsgfQorZXhwb3J0IGRlZmF1bHQgMjA7CitgLCBgU3lu
dGF4RXJyb3I6IE9ubHkgb25lICdkZWZhdWx0JyBleHBvcnQgaXMgYWxsb3dlZC46NGApOwogCiAv
LyBGSVhNRTogVGhlc2UgdGVzdHMgYWxzbyBzaG91bGQgYmUgcGFzc2VkLiBCdXQgbm93LCB2YXIg
YW5kIGxleGljYWwgZGVjbGFyZWQgbmFtZXMgY2FuIGJlIGNvLWV4aXN0IG9uIFNjcmlwdCAvIE1v
ZHVsZSB0b3AgbGV2ZWwgc2NvcGUuCiAvLyBUaGlzIHdpbGwgYmUgZml4ZWQgd2hlbiB0aGlzIGlz
c3VlIGlzIGZpeGVkIGZvciBTY3JpcHQgZW52aXJvbm1lbnQuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258928</attachid>
            <date>2015-08-13 13:53:48 -0700</date>
            <delta_ts>2015-08-13 16:40:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147353-20150813135330.patch</filename>
            <type>text/plain</type>
            <size>72745</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MThkNWMwY2JkMDRkYTI4YzM2MWI5MGFkNTQ5YTgxZTlkZTM3NjlkLi40NGQzOGNmMWZjYzJjZmQz
NmIzOGU0ZmU1Yjc4ZTljMjYxMDg1YWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDMgQEAKKzIwMTUtMDgtMTMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgVW5pZnkgSlNQYXJzZXJDb2RlVHlwZSwgRnVuY3Rpb25QYXJzZU1v
ZGUgYW5kIE1vZHVsZVBhcnNlTW9kZSBpbnRvIFNvdXJjZVBhcnNlTW9kZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3MzUzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyB0aGUgZm9sbG93LXVw
IHBhdGNoIGFmdGVyIHIxODgzNTUuCisgICAgICAgIEl0IGluY2x1ZGVzIHRoZSBmb2xsb3dpbmcg
Y2hhbmdlcy4KKworICAgICAgICAtIFVuaWZ5IEpTUGFyc2VyQ29kZVR5cGUsIEZ1bmN0aW9uUGFy
c2VNb2RlIGFuZCBNb2R1bGVQYXJzZU1vZGUgaW50byBTb3VyY2VQYXJzZU1vZGUKKyAgICAgICAg
LSBNYWtlIFNvdXJjZVBhcnNlTW9kZSB0byBDKysgc3Ryb25nbHktdHlwZWQgZW51bS4KKyAgICAg
ICAgLSBGaXggdGhlIGNvbW1lbnRzLgorICAgICAgICAtIFJlbmFtZSBNb2R1bGVTcGVjaWZpZXIg
dG8gTW9kdWxlTmFtZS4KKyAgICAgICAgLSBBZGQgdGhlIHR5cGUgbmFtZSBgSW1wb3J0RW50cnlg
IGJlZm9yZSB0aGUgQysrMTEgdW5pZm9ybSBpbml0aWFsaXphdGlvbi4KKyAgICAgICAgLSBGaXgg
dGhlIHRocm93biBtZXNzYWdlIGZvciBkdXBsaWNhdGUgJ2RlZmF1bHQnIG5hbWVzLgorICAgICAg
ICAtIEFzc2VydCB0aGUgYWxsIHN0YXRlbWVudHMgaW4gdGhlIHRvcC1sZXZlbCBzb3VyY2UgZWxl
bWVudHMgYXJlIHRoZSBtb2R1bGUgZGVjbGFyYXRpb25zIHVuZGVyIHRoZSBtb2R1bGUgYW5hbHl6
ZXIgcGhhc2UuCisKKyAgICAgICAgKiBBUEkvSlNTY3JpcHRSZWYuY3BwOgorICAgICAgICAocGFy
c2VTY3JpcHQpOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5jcHA6Cisg
ICAgICAgIChKU0M6OkJ1aWx0aW5FeGVjdXRhYmxlczo6Y3JlYXRlRXhlY3V0YWJsZUludGVybmFs
KToKKyAgICAgICAgKiBieXRlY29kZS9VbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHA6Cisg
ICAgICAgIChKU0M6OmdlbmVyYXRlRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVj
b2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpt
YWtlRnVuY3Rpb24pOgorICAgICAgICAqIHBhcnNlci9BU1RCdWlsZGVyLmg6CisgICAgICAgIChK
U0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEpOgorICAgICAgICAoSlNDOjpB
U1RCdWlsZGVyOjpjcmVhdGVNb2R1bGVOYW1lKToKKyAgICAgICAgKEpTQzo6QVNUQnVpbGRlcjo6
Y3JlYXRlSW1wb3J0RGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVh
dGVFeHBvcnRBbGxEZWNsYXJhdGlvbik6CisgICAgICAgIChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0
ZUV4cG9ydE5hbWVkRGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjpBU1RCdWlsZGVyOjpjcmVh
dGVNb2R1bGVTcGVjaWZpZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBhcnNlci9Nb2R1bGVBbmFs
eXplci5jcHA6CisgICAgICAgIChKU0M6Ok1vZHVsZUFuYWx5emVyOjphbmFseXplKToKKyAgICAg
ICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oOgorICAgICAgICAoSlNDOjpNb2R1bGVOYW1l
Tm9kZTo6TW9kdWxlTmFtZU5vZGUpOgorICAgICAgICAoSlNDOjpJbXBvcnREZWNsYXJhdGlvbk5v
ZGU6OkltcG9ydERlY2xhcmF0aW9uTm9kZSk6CisgICAgICAgIChKU0M6OkV4cG9ydEFsbERlY2xh
cmF0aW9uTm9kZTo6RXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlKToKKyAgICAgICAgKEpTQzo6RXhw
b3J0TmFtZWREZWNsYXJhdGlvbk5vZGU6OkV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlKToKKyAg
ICAgICAgKEpTQzo6TW9kdWxlU3BlY2lmaWVyTm9kZTo6TW9kdWxlU3BlY2lmaWVyTm9kZSk6IERl
bGV0ZWQuCisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25NZXRhZGF0YU5vZGU6OkZ1bmN0aW9uTWV0YWRhdGFOb2RlKToKKyAgICAgICAgKiBwYXJzZXIv
Tm9kZXMuaDoKKyAgICAgICAgKEpTQzo6U3RhdGVtZW50Tm9kZTo6aXNNb2R1bGVEZWNsYXJhdGlv
bk5vZGUpOgorICAgICAgICAoSlNDOjpNb2R1bGVEZWNsYXJhdGlvbk5vZGU6OmlzTW9kdWxlRGVj
bGFyYXRpb25Ob2RlKToKKyAgICAgICAgKEpTQzo6SW1wb3J0RGVjbGFyYXRpb25Ob2RlOjptb2R1
bGVOYW1lKToKKyAgICAgICAgKEpTQzo6RXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlOjptb2R1bGVO
YW1lKToKKyAgICAgICAgKEpTQzo6RXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGU6Om1vZHVsZU5h
bWUpOgorICAgICAgICAoSlNDOjpJbXBvcnREZWNsYXJhdGlvbk5vZGU6Om1vZHVsZVNwZWNpZmll
cik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkV4cG9ydEFsbERlY2xhcmF0aW9uTm9kZTo6bW9k
dWxlU3BlY2lmaWVyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RXhwb3J0TmFtZWREZWNsYXJh
dGlvbk5vZGU6Om1vZHVsZVNwZWNpZmllcik6IERlbGV0ZWQuCisgICAgICAgICogcGFyc2VyL05v
ZGVzQW5hbHl6ZU1vZHVsZS5jcHA6CisgICAgICAgIChKU0M6OlNvdXJjZUVsZW1lbnRzOjphbmFs
eXplTW9kdWxlKToKKyAgICAgICAgKEpTQzo6SW1wb3J0RGVjbGFyYXRpb25Ob2RlOjphbmFseXpl
TW9kdWxlKToKKyAgICAgICAgKEpTQzo6RXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlOjphbmFseXpl
TW9kdWxlKToKKyAgICAgICAgKEpTQzo6RXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGU6OmFuYWx5
emVNb2R1bGUpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQ
YXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VN
b2R1bGVTb3VyY2VFbGVtZW50cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUZ1bmN0aW9uQm9keSk6CisgICAgICAgIChKU0M6OnN0cmluZ0ZvckZ1bmN0aW9uTW9kZSk6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uUGFyYW1ldGVy
cyk6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyk6
CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRp
b24pOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1vZHVsZU5hbWUpOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbXBvcnREZWNsYXJhdGlvbik6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydERlY2xhcmF0aW9uKToKKyAgICAg
ICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJvcGVydHlNZXRob2QpOgorICAgICAg
ICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZXR0ZXJTZXR0ZXIpOgorICAgICAgICAo
SlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VQcmltYXJ5RXhwcmVzc2lvbik6CisgICAgICAg
IChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUFycm93RnVuY3Rpb25FeHByZXNzaW9uKToK
KyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlTW9kdWxlU3BlY2lmaWVyKTog
RGVsZXRlZC4KKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgIChKU0M6OnBhcnNlKToKKyAgICAgICAgKiBw
YXJzZXIvUGFyc2VyTW9kZXMuaDoKKyAgICAgICAgKEpTQzo6aXNGdW5jdGlvblBhcnNlTW9kZSk6
CisgICAgICAgIChKU0M6OmlzTW9kdWxlUGFyc2VNb2RlKToKKyAgICAgICAgKEpTQzo6aXNQcm9n
cmFtUGFyc2VNb2RlKToKKyAgICAgICAgKiBwYXJzZXIvU3ludGF4Q2hlY2tlci5oOgorICAgICAg
ICAoSlNDOjpTeW50YXhDaGVja2VyOjpjcmVhdGVGdW5jdGlvbk1ldGFkYXRhKToKKyAgICAgICAg
KEpTQzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlTW9kdWxlTmFtZSk6CisgICAgICAgIChKU0M6OlN5
bnRheENoZWNrZXI6OmNyZWF0ZUltcG9ydERlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6U3lu
dGF4Q2hlY2tlcjo6Y3JlYXRlRXhwb3J0QWxsRGVjbGFyYXRpb24pOgorICAgICAgICAoSlNDOjpT
eW50YXhDaGVja2VyOjpjcmVhdGVFeHBvcnROYW1lZERlY2xhcmF0aW9uKToKKyAgICAgICAgKEpT
Qzo6U3ludGF4Q2hlY2tlcjo6Y3JlYXRlTW9kdWxlU3BlY2lmaWVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBydW50aW1lL0NvZGVDYWNoZS5jcHA6CisgICAgICAgIChKU0M6OkNvZGVDYWNoZTo6Z2V0
R2xvYmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUNhY2hlOjpnZXRGdW5jdGlvbkV4
ZWN1dGFibGVGcm9tR2xvYmFsQ29kZSk6CisgICAgICAgICogcnVudGltZS9Db21wbGV0aW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6Y2hlY2tTeW50YXgpOgorICAgICAgICAoSlNDOjpjaGVja01vZHVs
ZVN5bnRheCk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpT
Qzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmNoZWNrU3ludGF4KToKKyAgICAgICAgKiB0ZXN0cy9zdHJl
c3MvbW9kdWxlcy1zeW50YXgtZXJyb3Itd2l0aC1uYW1lcy5qczoKKwogMjAxNS0wOC0xMyAgR2Vv
ZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlZ0V4cENhY2hlOjpm
aW5hbGl6ZSBzaG91bGQgbm90IGRlbGV0ZSBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNTY3JpcHRSZWYuY3BwCmluZGV4IGMyMGFmNmRmMmYwZjljMmFiOTRlODZiNzFmMTM5MzExMmRi
ODExM2UuLjNiN2I3NmJmM2E0NDRjOTIxYmU5NzNjNTc2YzE5ZjY5MmU4ZDIzMmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHRSZWYuY3BwCkBAIC03MCw4ICs3MCw4IEBAIHN0
cnVjdCBPcGFxdWVKU1NjcmlwdCA6IHB1YmxpYyBTb3VyY2VQcm92aWRlciB7CiBzdGF0aWMgYm9v
bCBwYXJzZVNjcmlwdChWTSogdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJy
b3ImIGVycm9yKQogewogICAgIHJldHVybiAhIUpTQzo6cGFyc2U8SlNDOjpQcm9ncmFtTm9kZT4o
Ci0gICAgICAgIHZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6
Tm90QnVpbHRpbiwgCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBKU1Bh
cnNlckNvZGVUeXBlOjpQcm9ncmFtLCAKKyAgICAgICAgdm0sIHNvdXJjZSwgSWRlbnRpZmllcigp
LCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLAorICAgICAgICBKU1BhcnNlclN0cmlj
dE1vZGU6Ok5vdFN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZSwgCiAgICAgICAg
IGVycm9yKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0J1aWx0aW5FeGVjdXRhYmxlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMv
QnVpbHRpbkV4ZWN1dGFibGVzLmNwcAppbmRleCBjNzViYWMwZmVhNzJlNDViMDFmNTZhNTNmMjgy
N2ZiNzdkNzU2YWYyLi45MzcwZTdlMWZlNjU5YmFhZDEzYmQwMjliN2I5YmZmNjg0NjJiZWFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1dGFi
bGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbkV4ZWN1
dGFibGVzLmNwcApAQCAtNjksOSArNjksOSBAQCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
QnVpbHRpbkV4ZWN1dGFibGVzOjpjcmVhdGVFeGVjdXRhYmxlSW50ZXJuYWwoY29uc3QgUwogICAg
IFVubGlua2VkRnVuY3Rpb25LaW5kIGtpbmQgPSBpc1BhcnNpbmdEZWZhdWx0Q29uc3RydWN0b3Ig
PyBVbmxpbmtlZE5vcm1hbEZ1bmN0aW9uIDogVW5saW5rZWRCdWlsdGluRnVuY3Rpb247CiAgICAg
UmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VPdmVycmlkZSA9IGlzUGFyc2luZ0RlZmF1bHRD
b25zdHJ1Y3RvciA/IHNvdXJjZS5wcm92aWRlcigpIDogbnVsbHB0cjsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UHJvZ3JhbU5vZGU+IHByb2dyYW0gPSBwYXJzZTxQcm9ncmFtTm9kZT4oCi0gICAgICAg
ICZtX3ZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1vZGUsIAotICAgICAgICBKU1Bh
cnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdCwgSlNQYXJzZXJDb2RlVHlwZTo6UHJvZ3JhbSwgZXJy
b3IsIAotICAgICAgICAmcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSwgRnVuY3Rpb25QYXJzZU1v
ZGU6Ok5vdEFGdW5jdGlvbk1vZGUsIGNvbnN0cnVjdG9yS2luZCk7CisgICAgICAgICZtX3ZtLCBz
b3VyY2UsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1vZGUsCisgICAgICAgIEpTUGFyc2VyU3RyaWN0
TW9kZTo6Tm90U3RyaWN0LCBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlLCBlcnJvciwKKyAg
ICAgICAgJnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUsIGNvbnN0cnVjdG9yS2luZCk7CiAKICAg
ICBpZiAoIXByb2dyYW0pIHsKICAgICAgICAgZGF0YUxvZygiRmF0YWwgZXJyb3IgY29tcGlsaW5n
IGJ1aWx0aW4gZnVuY3Rpb24gJyIsIG5hbWUuc3RyaW5nKCksICInOiAiLCBlcnJvci5tZXNzYWdl
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9V
bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS5jcHAKaW5kZXggYTUyZjM2NjQwMTI1YmMwNzFiYjk0
NDQzZjZhZjVhOGIyYmZlYjc5NC4uMTg5MWNiOGM1Yzk5MmY0M2Y2ZGMxZDVkZTA1MTlmZDExOTFm
N2YyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
RnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC01NCw5ICs1NCw5IEBAIHN0YXRp
YyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKAog
ewogICAgIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVpbHRpbk1vZGUgPSBleGVjdXRhYmxlLT5pc0J1
aWx0aW5GdW5jdGlvbigpID8gSlNQYXJzZXJCdWlsdGluTW9kZTo6QnVpbHRpbiA6IEpTUGFyc2Vy
QnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW47CiAgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1v
ZGUgPSBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpID8gSlNQYXJzZXJTdHJpY3RNb2Rl
OjpTdHJpY3QgOiBKU1BhcnNlclN0cmljdE1vZGU6Ok5vdFN0cmljdDsKKyAgICBBU1NFUlQoaXNG
dW5jdGlvblBhcnNlTW9kZShleGVjdXRhYmxlLT5wYXJzZU1vZGUoKSkpOwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxGdW5jdGlvbk5vZGU+IGZ1bmN0aW9uID0gcGFyc2U8RnVuY3Rpb25Ob2RlPigKLSAg
ICAgICAgJnZtLCBzb3VyY2UsIGV4ZWN1dGFibGUtPm5hbWUoKSwgYnVpbHRpbk1vZGUsIHN0cmlj
dE1vZGUsIAotICAgICAgICBKU1BhcnNlckNvZGVUeXBlOjpGdW5jdGlvbiwgZXJyb3IsIG51bGxw
dHIsIGV4ZWN1dGFibGUtPnBhcnNlTW9kZSgpKTsKKyAgICAgICAgJnZtLCBzb3VyY2UsIGV4ZWN1
dGFibGUtPm5hbWUoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIGV4ZWN1dGFibGUtPnBhcnNl
TW9kZSgpLCBlcnJvciwgbnVsbHB0cik7CiAKICAgICBpZiAoIWZ1bmN0aW9uKSB7CiAgICAgICAg
IEFTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAppbmRleCAwYjRi
MzMwYTRlYWM0NDBhNjNiNWQ3ZTM4M2ExMTYxN2FiZTk0ZTEzLi42ZWFlOWYwYTJkMGRlYzg1MjNh
YjJlOGNkNmEzMjVmY2FjYTIwZTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUuaApAQCAtNzgsNyAr
NzgsNyBAQCBjbGFzcyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSBmaW5hbCA6IHB1YmxpYyBK
U0NlbGwgewogICAgIGNvbnN0IElkZW50aWZpZXImIGluZmVycmVkTmFtZSgpIGNvbnN0IHsgcmV0
dXJuIG1faW5mZXJyZWROYW1lOyB9CiAgICAgSlNTdHJpbmcqIG5hbWVWYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbmFtZVZhbHVlLmdldCgpOyB9CiAgICAgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQo
KSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlckNvdW50OyB9OwotICAgIEZ1bmN0aW9uUGFyc2VN
b2RlIHBhcnNlTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VNb2RlOyB9OworICAgIFNvdXJj
ZVBhcnNlTW9kZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfTsKICAg
ICBib29sIGlzSW5TdHJpY3RDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9pc0luU3RyaWN0Q29u
dGV4dDsgfQogICAgIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxGdW5jdGlvbk1vZGU+KG1fZnVuY3Rpb25Nb2RlKTsgfQogICAgIENvbnN0cnVj
dG9yS2luZCBjb25zdHJ1Y3RvcktpbmQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxDb25z
dHJ1Y3RvcktpbmQ+KG1fY29uc3RydWN0b3JLaW5kKTsgfQpAQCAtMTQ2LDcgKzE0Niw3IEBAIGNs
YXNzIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgdW5zaWduZWQgbV90eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQ7CiAgICAgdW5zaWduZWQgbV90
eXBlUHJvZmlsaW5nRW5kT2Zmc2V0OwogICAgIHVuc2lnbmVkIG1fcGFyYW1ldGVyQ291bnQ7Ci0g
ICAgRnVuY3Rpb25QYXJzZU1vZGUgbV9wYXJzZU1vZGU7CisgICAgU291cmNlUGFyc2VNb2RlIG1f
cGFyc2VNb2RlOwogCiAgICAgQ29kZUZlYXR1cmVzIG1fZmVhdHVyZXM7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApp
bmRleCA0ZGM2ZTljZTUwZjM3Njg5ZjdjOWI5ZjIxNjc1ODhlZjQ2MTFjMjk1Li4zM2ExNWMxZmY5
YjEwNTM1ZDA0MTQ3ZjFhZjZmMjZkY2Q4MTU0OWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC03MTcsOSAr
NzE3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBWYXJpYWJsZUVudmlyb25tZW50
IHZhcmlhYmxlc1VuZGVyVERaOwogICAgICAgICAgICAgZ2V0VmFyaWFibGVzVW5kZXJURFoodmFy
aWFibGVzVW5kZXJURFopOwogCi0gICAgICAgICAgICBGdW5jdGlvblBhcnNlTW9kZSBwYXJzZU1v
ZGUgPSBtZXRhZGF0YS0+cGFyc2VNb2RlKCk7CisgICAgICAgICAgICBTb3VyY2VQYXJzZU1vZGUg
cGFyc2VNb2RlID0gbWV0YWRhdGEtPnBhcnNlTW9kZSgpOwogICAgICAgICAgICAgQ29uc3RydWN0
QWJpbGl0eSBjb25zdHJ1Y3RBYmlsaXR5ID0gQ29uc3RydWN0QWJpbGl0eTo6Q2FuQ29uc3RydWN0
OwotICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBHZXR0ZXJNb2RlIHx8IHBhcnNlTW9kZSA9
PSBTZXR0ZXJNb2RlIHx8IHBhcnNlTW9kZSA9PSBBcnJvd0Z1bmN0aW9uTW9kZSB8fCAocGFyc2VN
b2RlID09IE1ldGhvZE1vZGUgJiYgbWV0YWRhdGEtPmNvbnN0cnVjdG9yS2luZCgpID09IENvbnN0
cnVjdG9yS2luZDo6Tm9uZSkpCisgICAgICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBh
cnNlTW9kZTo6R2V0dGVyTW9kZSB8fCBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpTZXR0
ZXJNb2RlIHx8IHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2Rl
IHx8IChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlICYmIG1ldGFkYXRh
LT5jb25zdHJ1Y3RvcktpbmQoKSA9PSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUpKQogICAgICAgICAg
ICAgICAgIGNvbnN0cnVjdEFiaWxpdHkgPSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1
Y3Q7CiAKICAgICAgICAgICAgIHJldHVybiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3Jl
YXRlKG1fdm0sIG1fc2NvcGVOb2RlLT5zb3VyY2UoKSwgbWV0YWRhdGEsIGlzQnVpbHRpbkZ1bmN0
aW9uKCkgPyBVbmxpbmtlZEJ1aWx0aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24s
IGNvbnN0cnVjdEFiaWxpdHksIHZhcmlhYmxlc1VuZGVyVERaKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggYzExOTU5ODBhMjBkMzgwM2Q1M2ExN2EyNWVm
NTQ1YmFlMTBlZTUxNy4uN2I1ODc3MzBhNmYwMzU0NDBkYjkwZDljNDI2ODBhZDU3OGI5NGE2NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKQEAgLTExMiw3ICsx
MTIsNyBAQCBjbGFzcyBBU1RCdWlsZGVyIHsKICNpZiBFTkFCTEUoRVM2X0NMQVNTX1NZTlRBWCkK
ICAgICB0eXBlZGVmIENsYXNzRXhwck5vZGUqIENsYXNzRXhwcmVzc2lvbjsKICNlbmRpZgotICAg
IHR5cGVkZWYgTW9kdWxlU3BlY2lmaWVyTm9kZSogTW9kdWxlU3BlY2lmaWVyOworICAgIHR5cGVk
ZWYgTW9kdWxlTmFtZU5vZGUqIE1vZHVsZU5hbWU7CiAgICAgdHlwZWRlZiBJbXBvcnRTcGVjaWZp
ZXJOb2RlKiBJbXBvcnRTcGVjaWZpZXI7CiAgICAgdHlwZWRlZiBJbXBvcnRTcGVjaWZpZXJMaXN0
Tm9kZSogSW1wb3J0U3BlY2lmaWVyTGlzdDsKICAgICB0eXBlZGVmIEV4cG9ydFNwZWNpZmllck5v
ZGUqIEV4cG9ydFNwZWNpZmllcjsKQEAgLTM2MSw3ICszNjEsNyBAQCBjbGFzcyBBU1RCdWlsZGVy
IHsKICAgICAgICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBzdGFydExvY2F0aW9uLCBjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGVuZExvY2F0aW9uLCAKICAgICAgICAgdW5zaWduZWQgc3RhcnRDb2x1
bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCAKICAgICAg
ICAgaW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCBib29sIGluU3Ry
aWN0Q29udGV4dCwgCi0gICAgICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVu
c2lnbmVkIHBhcmFtZXRlckNvdW50LCBGdW5jdGlvblBhcnNlTW9kZSBtb2RlKQorICAgICAgICBD
b25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCwg
U291cmNlUGFyc2VNb2RlIG1vZGUpCiAgICAgewogICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNl
ckFyZW5hKSBGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAgICAgICAgICAgIG1fcGFyc2VyQXJlbmEs
IHN0YXJ0TG9jYXRpb24sIGVuZExvY2F0aW9uLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uLCAKQEAg
LTYxOSw5ICs2MTksOSBAQCBjbGFzcyBBU1RCdWlsZGVyIHsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAKLSAgICBNb2R1bGVTcGVjaWZpZXJOb2RlKiBjcmVhdGVNb2R1bGVTcGVjaWZp
ZXIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgbW9k
dWxlTmFtZSkKKyAgICBNb2R1bGVOYW1lTm9kZSogY3JlYXRlTW9kdWxlTmFtZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJzZXJBcmVuYSkgTW9kdWxlU3BlY2lmaWVyTm9k
ZShsb2NhdGlvbiwgbW9kdWxlTmFtZSk7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJl
bmEpIE1vZHVsZU5hbWVOb2RlKGxvY2F0aW9uLCBtb2R1bGVOYW1lKTsKICAgICB9CiAKICAgICBJ
bXBvcnRTcGVjaWZpZXJOb2RlKiBjcmVhdGVJbXBvcnRTcGVjaWZpZXIoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgY29uc3QgSWRlbnRpZmllciYgaW1wb3J0ZWROYW1lLCBjb25zdCBJ
ZGVudGlmaWVyJiBsb2NhbE5hbWUpCkBAIC02MzksMTQgKzYzOSwxNCBAQCBjbGFzcyBBU1RCdWls
ZGVyIHsKICAgICAgICAgc3BlY2lmaWVyTGlzdC0+YXBwZW5kKHNwZWNpZmllcik7CiAgICAgfQog
Ci0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlSW1wb3J0RGVjbGFyYXRpb24oY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgSW1wb3J0U3BlY2lmaWVyTGlzdE5vZGUqIGltcG9ydFNwZWNp
Zmllckxpc3QsIE1vZHVsZVNwZWNpZmllck5vZGUqIG1vZHVsZVNwZWNpZmllcikKKyAgICBTdGF0
ZW1lbnROb2RlKiBjcmVhdGVJbXBvcnREZWNsYXJhdGlvbihjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBJbXBvcnRTcGVjaWZpZXJMaXN0Tm9kZSogaW1wb3J0U3BlY2lmaWVyTGlzdCwg
TW9kdWxlTmFtZU5vZGUqIG1vZHVsZU5hbWUpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3ICht
X3BhcnNlckFyZW5hKSBJbXBvcnREZWNsYXJhdGlvbk5vZGUobG9jYXRpb24sIGltcG9ydFNwZWNp
Zmllckxpc3QsIG1vZHVsZVNwZWNpZmllcik7CisgICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2Vy
QXJlbmEpIEltcG9ydERlY2xhcmF0aW9uTm9kZShsb2NhdGlvbiwgaW1wb3J0U3BlY2lmaWVyTGlz
dCwgbW9kdWxlTmFtZSk7CiAgICAgfQogCi0gICAgU3RhdGVtZW50Tm9kZSogY3JlYXRlRXhwb3J0
QWxsRGVjbGFyYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgTW9kdWxlU3Bl
Y2lmaWVyTm9kZSogbW9kdWxlU3BlY2lmaWVyKQorICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0ZUV4
cG9ydEFsbERlY2xhcmF0aW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIE1vZHVs
ZU5hbWVOb2RlKiBtb2R1bGVOYW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyAobV9wYXJz
ZXJBcmVuYSkgRXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlKGxvY2F0aW9uLCBtb2R1bGVTcGVjaWZp
ZXIpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBFeHBvcnRBbGxEZWNsYXJh
dGlvbk5vZGUobG9jYXRpb24sIG1vZHVsZU5hbWUpOwogICAgIH0KIAogICAgIFN0YXRlbWVudE5v
ZGUqIGNyZWF0ZUV4cG9ydERlZmF1bHREZWNsYXJhdGlvbihjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBTdGF0ZW1lbnROb2RlKiBkZWNsYXJhdGlvbiwgY29uc3QgSWRlbnRpZmllciYg
bG9jYWxOYW1lKQpAQCAtNjU5LDkgKzY1OSw5IEBAIGNsYXNzIEFTVEJ1aWxkZXIgewogICAgICAg
ICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBFeHBvcnRMb2NhbERlY2xhcmF0aW9uTm9kZShs
b2NhdGlvbiwgZGVjbGFyYXRpb24pOwogICAgIH0KIAotICAgIFN0YXRlbWVudE5vZGUqIGNyZWF0
ZUV4cG9ydE5hbWVkRGVjbGFyYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwg
RXhwb3J0U3BlY2lmaWVyTGlzdE5vZGUqIGV4cG9ydFNwZWNpZmllckxpc3QsIE1vZHVsZVNwZWNp
Zmllck5vZGUqIG1vZHVsZVNwZWNpZmllcikKKyAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVFeHBv
cnROYW1lZERlY2xhcmF0aW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIEV4cG9y
dFNwZWNpZmllckxpc3ROb2RlKiBleHBvcnRTcGVjaWZpZXJMaXN0LCBNb2R1bGVOYW1lTm9kZSog
bW9kdWxlTmFtZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgKG1fcGFyc2VyQXJlbmEpIEV4
cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2RlKGxvY2F0aW9uLCBleHBvcnRTcGVjaWZpZXJMaXN0LCBt
b2R1bGVTcGVjaWZpZXIpOworICAgICAgICByZXR1cm4gbmV3IChtX3BhcnNlckFyZW5hKSBFeHBv
cnROYW1lZERlY2xhcmF0aW9uTm9kZShsb2NhdGlvbiwgZXhwb3J0U3BlY2lmaWVyTGlzdCwgbW9k
dWxlTmFtZSk7CiAgICAgfQogCiAgICAgRXhwb3J0U3BlY2lmaWVyTm9kZSogY3JlYXRlRXhwb3J0
U3BlY2lmaWVyKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZp
ZXImIGxvY2FsTmFtZSwgY29uc3QgSWRlbnRpZmllciYgZXhwb3J0ZWROYW1lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Nb2R1bGVBbmFseXplci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL01vZHVsZUFuYWx5emVyLmNwcAppbmRleCA5OTg0Mjc1
YzYwMjU1NjZlNTU2MDY5NTE3ZDBlMDExOWU2OThkNTRlLi5iMmRlOTYwYjM5MzI1ODQxY2Q5Zjg1
YzY3MTYyMmMzZGY3YmE5ZDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL01vZHVsZUFuYWx5emVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L01vZHVsZUFuYWx5emVyLmNwcApAQCAtMTAwLDEwICsxMDAsMTAgQEAgdm9pZCBNb2R1bGVBbmFs
eXplcjo6ZXhwb3J0VmFyaWFibGUoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgbG9j
YWxOYW1lLAogUmVmPE1vZHVsZVJlY29yZD4gTW9kdWxlQW5hbHl6ZXI6OmFuYWx5emUoTW9kdWxl
UHJvZ3JhbU5vZGUmIG1vZHVsZVByb2dyYW1Ob2RlKQogewogICAgIC8vIFRyYXZlcnNlIHRoZSBt
b2R1bGUgQVNUIGFuZCBjb2xsZWN0Ci0gICAgLy8gMS4gSW1wb3J0IGVudHJpZXMKLSAgICAvLyAy
LiBFeHBvcnQgZW50cmllcyB0aGF0IGhhdmUgRnJvbUNsYXVzZSAoZS5nLiBleHBvcnQgeyBhIH0g
ZnJvbSAibW9kIikKLSAgICAvLyAzLiBFeHBvcnQgZW50cmllcyB0aGF0IGhhdmUgc3RhciAoZS5n
LiBleHBvcnQgKiBmcm9tICJtb2QiKQotICAgIC8vIDQuIEFsaWFzZWQgZXhwb3J0IG5hbWVzIChl
LmcuIGV4cG9ydCB7IGEgYXMgYiB9KQorICAgIC8vICogSW1wb3J0IGVudHJpZXMKKyAgICAvLyAq
IEV4cG9ydCBlbnRyaWVzIHRoYXQgaGF2ZSBGcm9tQ2xhdXNlIChlLmcuIGV4cG9ydCB7IGEgfSBm
cm9tICJtb2QiKQorICAgIC8vICogRXhwb3J0IGVudHJpZXMgdGhhdCBoYXZlIHN0YXIgKGUuZy4g
ZXhwb3J0ICogZnJvbSAibW9kIikKKyAgICAvLyAqIEFsaWFzZWQgZXhwb3J0IG5hbWVzIChlLmcu
IGV4cG9ydCB7IGEgYXMgYiB9KQogICAgIG1vZHVsZVByb2dyYW1Ob2RlLmFuYWx5emVNb2R1bGUo
KnRoaXMpOwogCiAgICAgLy8gQmFzZWQgb24gdGhlIGNvbGxlY3RlZCBpbmZvcm1hdGlvbiwgY2F0
ZWdvcml6ZSBleHBvcnQgZW50cmllcyBpbnRvIDMgdHlwZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCmluZGV4IDA0NTEwYmU1OTczZGQ5NDBi
OWNkNjdjZWNhYjNiMzdjYjI0NmJlNmYuLmFiYjcyYTc0ZTEyODg0OGVhOGI0M2ZkODYzNjk3NGNi
OTk3YzM3ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNv
bnN0cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0
cnVjdG9ycy5oCkBAIC03MzgsNyArNzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewogICAg
IH0KIAotICAgIGlubGluZSBNb2R1bGVTcGVjaWZpZXJOb2RlOjpNb2R1bGVTcGVjaWZpZXJOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGNvbnN0IElkZW50aWZpZXImIG1vZHVs
ZU5hbWUpCisgICAgaW5saW5lIE1vZHVsZU5hbWVOb2RlOjpNb2R1bGVOYW1lTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJZGVudGlmaWVyJiBtb2R1bGVOYW1lKQog
ICAgICAgICA6IE5vZGUobG9jYXRpb24pCiAgICAgICAgICwgbV9tb2R1bGVOYW1lKG1vZHVsZU5h
bWUpCiAgICAgewpAQCAtNzUxLDE2ICs3NTEsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgewog
ICAgIH0KIAotICAgIGlubGluZSBJbXBvcnREZWNsYXJhdGlvbk5vZGU6OkltcG9ydERlY2xhcmF0
aW9uTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBJbXBvcnRTcGVjaWZpZXJM
aXN0Tm9kZSogaW1wb3J0U3BlY2lmaWVyTGlzdCwgTW9kdWxlU3BlY2lmaWVyTm9kZSogbW9kdWxl
U3BlY2lmaWVyKQorICAgIGlubGluZSBJbXBvcnREZWNsYXJhdGlvbk5vZGU6OkltcG9ydERlY2xh
cmF0aW9uTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBJbXBvcnRTcGVjaWZp
ZXJMaXN0Tm9kZSogaW1wb3J0U3BlY2lmaWVyTGlzdCwgTW9kdWxlTmFtZU5vZGUqIG1vZHVsZU5h
bWUpCiAgICAgICAgIDogTW9kdWxlRGVjbGFyYXRpb25Ob2RlKGxvY2F0aW9uKQogICAgICAgICAs
IG1fc3BlY2lmaWVyTGlzdChpbXBvcnRTcGVjaWZpZXJMaXN0KQotICAgICAgICAsIG1fbW9kdWxl
U3BlY2lmaWVyKG1vZHVsZVNwZWNpZmllcikKKyAgICAgICAgLCBtX21vZHVsZU5hbWUobW9kdWxl
TmFtZSkKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEV4cG9ydEFsbERlY2xhcmF0aW9uTm9k
ZTo6RXhwb3J0QWxsRGVjbGFyYXRpb25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRp
b24sIE1vZHVsZVNwZWNpZmllck5vZGUqIG1vZHVsZVNwZWNpZmllcikKKyAgICBpbmxpbmUgRXhw
b3J0QWxsRGVjbGFyYXRpb25Ob2RlOjpFeHBvcnRBbGxEZWNsYXJhdGlvbk5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgTW9kdWxlTmFtZU5vZGUqIG1vZHVsZU5hbWUpCiAgICAg
ICAgIDogTW9kdWxlRGVjbGFyYXRpb25Ob2RlKGxvY2F0aW9uKQotICAgICAgICAsIG1fbW9kdWxl
U3BlY2lmaWVyKG1vZHVsZVNwZWNpZmllcikKKyAgICAgICAgLCBtX21vZHVsZU5hbWUobW9kdWxl
TmFtZSkKICAgICB7CiAgICAgfQogCkBAIC03NzcsMTAgKzc3NywxMCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICB7CiAgICAgfQogCi0gICAgaW5saW5lIEV4cG9ydE5hbWVkRGVjbGFyYXRpb25Ob2Rl
OjpFeHBvcnROYW1lZERlY2xhcmF0aW9uTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0
aW9uLCBFeHBvcnRTcGVjaWZpZXJMaXN0Tm9kZSogZXhwb3J0U3BlY2lmaWVyTGlzdCwgTW9kdWxl
U3BlY2lmaWVyTm9kZSogbW9kdWxlU3BlY2lmaWVyKQorICAgIGlubGluZSBFeHBvcnROYW1lZERl
Y2xhcmF0aW9uTm9kZTo6RXhwb3J0TmFtZWREZWNsYXJhdGlvbk5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiBsb2NhdGlvbiwgRXhwb3J0U3BlY2lmaWVyTGlzdE5vZGUqIGV4cG9ydFNwZWNpZmll
ckxpc3QsIE1vZHVsZU5hbWVOb2RlKiBtb2R1bGVOYW1lKQogICAgICAgICA6IE1vZHVsZURlY2xh
cmF0aW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX3NwZWNpZmllckxpc3QoZXhwb3J0U3Bl
Y2lmaWVyTGlzdCkKLSAgICAgICAgLCBtX21vZHVsZVNwZWNpZmllcihtb2R1bGVTcGVjaWZpZXIp
CisgICAgICAgICwgbV9tb2R1bGVOYW1lKG1vZHVsZU5hbWUpCiAgICAgewogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcAppbmRleCA1NWExODNiZjc5MGEzMzdhYzU2
ZDI2NjcxZjI4YTVlMzg0MjU3NDAwLi5jZjRmZTQ1MGE5MjQ5NTA0ZjMwYmE4NWEyNjRlNjdiYWE5
YTU1Yzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcApAQCAtMTUxLDcg
KzE1MSw3IEBAIEZ1bmN0aW9uTWV0YWRhdGFOb2RlOjpGdW5jdGlvbk1ldGFkYXRhTm9kZSgKICAg
ICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgc3RhcnRMb2NhdGlvbiwgCiAg
ICAgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmRMb2NhdGlvbiwgdW5zaWduZWQgc3RhcnRDb2x1
bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgCiAgICAgaW50IGZ1bmN0aW9uS2V5d29yZFN0YXJ0LCBp
bnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmlj
dENvbnRleHQsIAotICAgIENvbnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVk
IHBhcmFtZXRlckNvdW50LCBGdW5jdGlvblBhcnNlTW9kZSBtb2RlKQorICAgIENvbnN0cnVjdG9y
S2luZCBjb25zdHJ1Y3RvcktpbmQsIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJz
ZU1vZGUgbW9kZSkKICAgICAgICAgOiBOb2RlKGVuZExvY2F0aW9uKQogICAgICAgICAsIG1fc3Rh
cnRDb2x1bW4oc3RhcnRDb2x1bW4pCiAgICAgICAgICwgbV9lbmRDb2x1bW4oZW5kQ29sdW1uKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCmluZGV4IDA0NzRmMjIwMjc1NmY1ZGU5YTk4
ZWY0NjhlNmVmOTYxMzIzMzc0Y2EuLjFkNmIwM2Q3NzY2Mjk3YWUxNzU5M2JiYTlhZWM1NjA5MzI5
MzBjMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKQEAgLTIwMyw2ICsyMDMs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzQ29udGludWUoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNCbG9jaygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0Z1bmNEZWNsTm9k
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc01vZHVs
ZURlY2xhcmF0aW9uTm9kZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBwcm90ZWN0
ZWQ6CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIG1fbmV4dDsKQEAgLTE2NDEsOSArMTY0Miw5IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKICAgICB9Owog
Ci0gICAgY2xhc3MgTW9kdWxlU3BlY2lmaWVyTm9kZSA6IHB1YmxpYyBOb2RlIHsKKyAgICBjbGFz
cyBNb2R1bGVOYW1lTm9kZSA6IHB1YmxpYyBOb2RlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIE1v
ZHVsZVNwZWNpZmllck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmll
ciYgbW9kdWxlTmFtZSk7CisgICAgICAgIE1vZHVsZU5hbWVOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGNvbnN0IElkZW50aWZpZXImIG1vZHVsZU5hbWUpOwogCiAgICAgICAgIGNvbnN0IElk
ZW50aWZpZXImIG1vZHVsZU5hbWUoKSB7IHJldHVybiBtX21vZHVsZU5hbWU7IH0KIApAQCAtMTY4
MCw2ICsxNjgxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgTW9kdWxlRGVjbGFyYXRp
b25Ob2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgdmly
dHVhbCB2b2lkIGFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImKSA9IDA7CisgICAgICAgIHZp
cnR1YWwgYm9vbCBpc01vZHVsZURlY2xhcmF0aW9uTm9kZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgTW9kdWxlRGVjbGFyYXRpb25Ob2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYpOwpAQCAtMTY4NywzMCArMTY4OSwzMCBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIEltcG9ydERlY2xhcmF0aW9uTm9kZSA6IHB1YmxpYyBNb2R1bGVEZWNs
YXJhdGlvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgSW1wb3J0RGVjbGFyYXRpb25Ob2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEltcG9ydFNwZWNpZmllckxpc3ROb2RlKiwgTW9kdWxl
U3BlY2lmaWVyTm9kZSopOworICAgICAgICBJbXBvcnREZWNsYXJhdGlvbk5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgSW1wb3J0U3BlY2lmaWVyTGlzdE5vZGUqLCBNb2R1bGVOYW1lTm9kZSop
OwogCiAgICAgICAgIEltcG9ydFNwZWNpZmllckxpc3ROb2RlKiBzcGVjaWZpZXJMaXN0KCkgY29u
c3QgeyByZXR1cm4gbV9zcGVjaWZpZXJMaXN0OyB9Ci0gICAgICAgIE1vZHVsZVNwZWNpZmllck5v
ZGUqIG1vZHVsZVNwZWNpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlU3BlY2lmaWVyOyB9
CisgICAgICAgIE1vZHVsZU5hbWVOb2RlKiBtb2R1bGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9t
b2R1bGVOYW1lOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImKSBvdmVycmlk
ZTsKIAogICAgICAgICBJbXBvcnRTcGVjaWZpZXJMaXN0Tm9kZSogbV9zcGVjaWZpZXJMaXN0Owot
ICAgICAgICBNb2R1bGVTcGVjaWZpZXJOb2RlKiBtX21vZHVsZVNwZWNpZmllcjsKKyAgICAgICAg
TW9kdWxlTmFtZU5vZGUqIG1fbW9kdWxlTmFtZTsKICAgICB9OwogCiAgICAgY2xhc3MgRXhwb3J0
QWxsRGVjbGFyYXRpb25Ob2RlIDogcHVibGljIE1vZHVsZURlY2xhcmF0aW9uTm9kZSB7CiAgICAg
cHVibGljOgotICAgICAgICBFeHBvcnRBbGxEZWNsYXJhdGlvbk5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgTW9kdWxlU3BlY2lmaWVyTm9kZSopOworICAgICAgICBFeHBvcnRBbGxEZWNsYXJh
dGlvbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgTW9kdWxlTmFtZU5vZGUqKTsKIAotICAg
ICAgICBNb2R1bGVTcGVjaWZpZXJOb2RlKiBtb2R1bGVTcGVjaWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX21vZHVsZVNwZWNpZmllcjsgfQorICAgICAgICBNb2R1bGVOYW1lTm9kZSogbW9kdWxlTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlTmFtZTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCkgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhbmFseXplTW9kdWxlKE1v
ZHVsZUFuYWx5emVyJikgb3ZlcnJpZGU7CiAKLSAgICAgICAgTW9kdWxlU3BlY2lmaWVyTm9kZSog
bV9tb2R1bGVTcGVjaWZpZXI7CisgICAgICAgIE1vZHVsZU5hbWVOb2RlKiBtX21vZHVsZU5hbWU7
CiAgICAgfTsKIAogICAgIGNsYXNzIEV4cG9ydERlZmF1bHREZWNsYXJhdGlvbk5vZGUgOiBwdWJs
aWMgTW9kdWxlRGVjbGFyYXRpb25Ob2RlIHsKQEAgLTE3NjcsMTYgKzE3NjksMTYgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBFeHBvcnROYW1lZERlY2xhcmF0aW9uTm9kZSA6IHB1Ymxp
YyBNb2R1bGVEZWNsYXJhdGlvbk5vZGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgRXhwb3J0TmFt
ZWREZWNsYXJhdGlvbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwb3J0U3BlY2lmaWVy
TGlzdE5vZGUqLCBNb2R1bGVTcGVjaWZpZXJOb2RlKik7CisgICAgICAgIEV4cG9ydE5hbWVkRGVj
bGFyYXRpb25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cG9ydFNwZWNpZmllckxpc3RO
b2RlKiwgTW9kdWxlTmFtZU5vZGUqKTsKIAogICAgICAgICBFeHBvcnRTcGVjaWZpZXJMaXN0Tm9k
ZSogc3BlY2lmaWVyTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fc3BlY2lmaWVyTGlzdDsgfQotICAg
ICAgICBNb2R1bGVTcGVjaWZpZXJOb2RlKiBtb2R1bGVTcGVjaWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX21vZHVsZVNwZWNpZmllcjsgfQorICAgICAgICBNb2R1bGVOYW1lTm9kZSogbW9kdWxlTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlTmFtZTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCkgb3ZlcnJpZGU7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhbmFseXplTW9kdWxlKE1v
ZHVsZUFuYWx5emVyJikgb3ZlcnJpZGU7CiAgICAgICAgIEV4cG9ydFNwZWNpZmllckxpc3ROb2Rl
KiBtX3NwZWNpZmllckxpc3Q7Ci0gICAgICAgIE1vZHVsZVNwZWNpZmllck5vZGUqIG1fbW9kdWxl
U3BlY2lmaWVyIHsgbnVsbHB0ciB9OworICAgICAgICBNb2R1bGVOYW1lTm9kZSogbV9tb2R1bGVO
YW1lIHsgbnVsbHB0ciB9OwogICAgIH07CiAKICAgICBjbGFzcyBGdW5jdGlvblBhcmFtZXRlcnMg
OiBwdWJsaWMgUGFyc2VyQXJlbmFEZWxldGFibGUgewpAQCAtMTgwNyw3ICsxODA5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBQYXJzZXJBcmVuYSYsIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgc3RhcnQsIGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgZW5kLCAKICAgICAgICAgICAgIHVu
c2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIGludCBmdW5jdGlvbktleXdv
cmRTdGFydCwgCiAgICAgICAgICAgICBpbnQgZnVuY3Rpb25OYW1lU3RhcnQsIGludCBwYXJhbWV0
ZXJzU3RhcnQsIGJvb2wgaXNJblN0cmljdENvbnRleHQsIAotICAgICAgICAgICAgQ29uc3RydWN0
b3JLaW5kLCB1bnNpZ25lZCwgRnVuY3Rpb25QYXJzZU1vZGUpOworICAgICAgICAgICAgQ29uc3Ry
dWN0b3JLaW5kLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlKTsKIAogICAgICAgICB2b2lkIGZp
bmlzaFBhcnNpbmcoY29uc3QgU291cmNlQ29kZSYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlv
bk1vZGUpOwogICAgICAgICAKQEAgLTE4MjQsNyArMTgyNiw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB1bnNpZ25lZCBzdGFydENvbHVtbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnRDb2x1
bW47IH0KICAgICAgICAgdW5zaWduZWQgZW5kQ29sdW1uKCkgY29uc3QgeyByZXR1cm4gbV9lbmRD
b2x1bW47IH0KICAgICAgICAgdW5zaWduZWQgcGFyYW1ldGVyQ291bnQoKSBjb25zdCB7IHJldHVy
biBtX3BhcmFtZXRlckNvdW50OyB9Ci0gICAgICAgIEZ1bmN0aW9uUGFyc2VNb2RlIHBhcnNlTW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VNb2RlOyB9CisgICAgICAgIFNvdXJjZVBhcnNlTW9k
ZSBwYXJzZU1vZGUoKSBjb25zdCB7IHJldHVybiBtX3BhcnNlTW9kZTsgfQogCiAgICAgICAgIHZv
aWQgc2V0RW5kUG9zaXRpb24oSlNUZXh0UG9zaXRpb24pOwogCkBAIC0xODU1LDcgKzE4NTcsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaW50IG1fc3RhcnRTdGFydE9mZnNldDsKICAgICAg
ICAgdW5zaWduZWQgbV9wYXJhbWV0ZXJDb3VudDsKICAgICAgICAgaW50IG1fbGFzdExpbmU7Ci0g
ICAgICAgIEZ1bmN0aW9uUGFyc2VNb2RlIG1fcGFyc2VNb2RlOworICAgICAgICBTb3VyY2VQYXJz
ZU1vZGUgbV9wYXJzZU1vZGU7CiAgICAgICAgIHVuc2lnbmVkIG1faXNJblN0cmljdENvbnRleHQg
OiAxOwogICAgICAgICB1bnNpZ25lZCBtX2NvbnN0cnVjdG9yS2luZCA6IDI7CiAgICAgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXNBbmFseXplTW9kdWxl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXNBbmFseXplTW9kdWxlLmNw
cAppbmRleCA1OTczZmI0YzI1ODlkNjVlNjNlYmYzZDFjMGZlZWQwMTg0NDlkMWIwLi42MzNkZWFl
Y2U2YWY2NjY1OWQwZTc2YWMxYWE0MTYxNTlhYjc1YTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzQW5hbHl6ZU1vZHVsZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlc0FuYWx5emVNb2R1bGUuY3BwCkBAIC00MCwxNiArNDAs
MTggQEAgdm9pZCBTY29wZU5vZGU6OmFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImIGFuYWx5
emVyKQogdm9pZCBTb3VyY2VFbGVtZW50czo6YW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYg
YW5hbHl6ZXIpCiB7CiAgICAgLy8gSW4gdGhlIG1vZHVsZSBhbmFseXplciBwaGFzZSwgb25seSBt
b2R1bGUgZGVjbGFyYXRpb25zIGFyZSBpbmNsdWRlZCBpbiB0aGUgdG9wLWxldmVsIFNvdXJjZUVs
ZW1lbnRzLgotICAgIGZvciAoU3RhdGVtZW50Tm9kZSogc3RhdGVtZW50ID0gbV9oZWFkOyBzdGF0
ZW1lbnQ7IHN0YXRlbWVudCA9IHN0YXRlbWVudC0+bmV4dCgpKQorICAgIGZvciAoU3RhdGVtZW50
Tm9kZSogc3RhdGVtZW50ID0gbV9oZWFkOyBzdGF0ZW1lbnQ7IHN0YXRlbWVudCA9IHN0YXRlbWVu
dC0+bmV4dCgpKSB7CisgICAgICAgIEFTU0VSVChzdGF0ZW1lbnQtPmlzTW9kdWxlRGVjbGFyYXRp
b25Ob2RlKCkpOwogICAgICAgICBzdGF0aWNfY2FzdDxNb2R1bGVEZWNsYXJhdGlvbk5vZGUqPihz
dGF0ZW1lbnQpLT5hbmFseXplTW9kdWxlKGFuYWx5emVyKTsKKyAgICB9CiB9CiAKIHZvaWQgSW1w
b3J0RGVjbGFyYXRpb25Ob2RlOjphbmFseXplTW9kdWxlKE1vZHVsZUFuYWx5emVyJiBhbmFseXpl
cikKIHsKLSAgICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS5hcHBlbmRSZXF1ZXN0ZWRNb2R1bGUo
bV9tb2R1bGVTcGVjaWZpZXItPm1vZHVsZU5hbWUoKSk7CisgICAgYW5hbHl6ZXIubW9kdWxlUmVj
b3JkKCkuYXBwZW5kUmVxdWVzdGVkTW9kdWxlKG1fbW9kdWxlTmFtZS0+bW9kdWxlTmFtZSgpKTsK
ICAgICBmb3IgKGF1dG8qIHNwZWNpZmllciA6IG1fc3BlY2lmaWVyTGlzdC0+c3BlY2lmaWVycygp
KSB7Ci0gICAgICAgIGFuYWx5emVyLm1vZHVsZVJlY29yZCgpLmFkZEltcG9ydEVudHJ5KHsKLSAg
ICAgICAgICAgIG1fbW9kdWxlU3BlY2lmaWVyLT5tb2R1bGVOYW1lKCksCisgICAgICAgIGFuYWx5
emVyLm1vZHVsZVJlY29yZCgpLmFkZEltcG9ydEVudHJ5KE1vZHVsZVJlY29yZDo6SW1wb3J0RW50
cnkgeworICAgICAgICAgICAgbV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCksCiAgICAgICAgICAg
ICBzcGVjaWZpZXItPmltcG9ydGVkTmFtZSgpLAogICAgICAgICAgICAgc3BlY2lmaWVyLT5sb2Nh
bE5hbWUoKQogICAgICAgICB9KTsKQEAgLTU4LDggKzYwLDggQEAgdm9pZCBJbXBvcnREZWNsYXJh
dGlvbk5vZGU6OmFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImIGFuYWx5emVyKQogCiB2b2lk
IEV4cG9ydEFsbERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYg
YW5hbHl6ZXIpCiB7Ci0gICAgYW5hbHl6ZXIubW9kdWxlUmVjb3JkKCkuYXBwZW5kUmVxdWVzdGVk
TW9kdWxlKG1fbW9kdWxlU3BlY2lmaWVyLT5tb2R1bGVOYW1lKCkpOwotICAgIGFuYWx5emVyLm1v
ZHVsZVJlY29yZCgpLmFkZFN0YXJFeHBvcnRFbnRyeShtX21vZHVsZVNwZWNpZmllci0+bW9kdWxl
TmFtZSgpKTsKKyAgICBhbmFseXplci5tb2R1bGVSZWNvcmQoKS5hcHBlbmRSZXF1ZXN0ZWRNb2R1
bGUobV9tb2R1bGVOYW1lLT5tb2R1bGVOYW1lKCkpOworICAgIGFuYWx5emVyLm1vZHVsZVJlY29y
ZCgpLmFkZFN0YXJFeHBvcnRFbnRyeShtX21vZHVsZU5hbWUtPm1vZHVsZU5hbWUoKSk7CiB9CiAK
IHZvaWQgRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZShNb2R1bGVB
bmFseXplciYgYW5hbHl6ZXIpCkBAIC03MywxNiArNzUsMTYgQEAgdm9pZCBFeHBvcnRMb2NhbERl
Y2xhcmF0aW9uTm9kZTo6YW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYpCiAKIHZvaWQgRXhw
b3J0TmFtZWREZWNsYXJhdGlvbk5vZGU6OmFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImIGFu
YWx5emVyKQogewotICAgIGlmIChtX21vZHVsZVNwZWNpZmllcikKLSAgICAgICAgYW5hbHl6ZXIu
bW9kdWxlUmVjb3JkKCkuYXBwZW5kUmVxdWVzdGVkTW9kdWxlKG1fbW9kdWxlU3BlY2lmaWVyLT5t
b2R1bGVOYW1lKCkpOworICAgIGlmIChtX21vZHVsZU5hbWUpCisgICAgICAgIGFuYWx5emVyLm1v
ZHVsZVJlY29yZCgpLmFwcGVuZFJlcXVlc3RlZE1vZHVsZShtX21vZHVsZU5hbWUtPm1vZHVsZU5h
bWUoKSk7CiAKICAgICBmb3IgKGF1dG8qIHNwZWNpZmllciA6IG1fc3BlY2lmaWVyTGlzdC0+c3Bl
Y2lmaWVycygpKSB7Ci0gICAgICAgIGlmIChtX21vZHVsZVNwZWNpZmllcikgeworICAgICAgICBp
ZiAobV9tb2R1bGVOYW1lKSB7CiAgICAgICAgICAgICAvLyBleHBvcnQgeyB2IH0gZnJvbSAibW9k
IgogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSwgbm8gbG9jYWwg
dmFyaWFibGUgbmFtZXMgYXJlIGltcG9ydGVkIGludG8gdGhlIGN1cnJlbnQgbW9kdWxlLgogICAg
ICAgICAgICAgLy8gInYiIGluZGlyZWN0bHkgcG9pbnRzIHRoZSBiaW5kaW5nIGluICJtb2QiLgot
ICAgICAgICAgICAgYW5hbHl6ZXIubW9kdWxlUmVjb3JkKCkuYWRkRXhwb3J0RW50cnkoTW9kdWxl
UmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlSW5kaXJlY3Qoc3BlY2lmaWVyLT5leHBvcnRlZE5h
bWUoKSwgc3BlY2lmaWVyLT5sb2NhbE5hbWUoKSwgbV9tb2R1bGVTcGVjaWZpZXItPm1vZHVsZU5h
bWUoKSkpOworICAgICAgICAgICAgYW5hbHl6ZXIubW9kdWxlUmVjb3JkKCkuYWRkRXhwb3J0RW50
cnkoTW9kdWxlUmVjb3JkOjpFeHBvcnRFbnRyeTo6Y3JlYXRlSW5kaXJlY3Qoc3BlY2lmaWVyLT5l
eHBvcnRlZE5hbWUoKSwgc3BlY2lmaWVyLT5sb2NhbE5hbWUoKSwgbV9tb2R1bGVOYW1lLT5tb2R1
bGVOYW1lKCkpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA0NTlmN2IzMWI3MTcyOTFjY2I1Yjky
N2FjYTNjZjM4ZmVhNjE5YzE4Li5hZWU3MGI2YTczMjliYzExYjVjZTczZDUzNTJkMzEzZTIyYTI3
YmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0xOTIsNyAr
MTkyLDcgQEAgdm9pZCBQYXJzZXI8TGV4ZXJUeXBlPjo6bG9nRXJyb3IoYm9vbCBzaG91bGRQcmlu
dFRva2VuLCBjb25zdCBBJiB2YWx1ZTEsIGNvbnN0IEIKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhl
clR5cGU+CiBQYXJzZXI8TGV4ZXJUeXBlPjo6UGFyc2VyKAogICAgIFZNKiB2bSwgY29uc3QgU291
cmNlQ29kZSYgc291cmNlLCBKU1BhcnNlckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLCAKLSAgICBK
U1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJDb2RlVHlwZSBjb2RlVHlwZSwg
CisgICAgSlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSBwYXJz
ZU1vZGUsIAogICAgIENvbnN0cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kLCBUaGlz
VERaTW9kZSB0aGlzVERaTW9kZSkKICAgICA6IG1fdm0odm0pCiAgICAgLCBtX3NvdXJjZSgmc291
cmNlKQpAQCAtMjA5LDcgKzIwOSw2IEBAIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIoCiAgICAg
LCBtX3BhcnNpbmdCdWlsdGluKGJ1aWx0aW5Nb2RlID09IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1
aWx0aW4pCiAgICAgLCBtX2RlZmF1bHRDb25zdHJ1Y3RvcktpbmQoZGVmYXVsdENvbnN0cnVjdG9y
S2luZCkKICAgICAsIG1fdGhpc1REWk1vZGUodGhpc1REWk1vZGUpCi0gICAgLCBtX2NvZGVUeXBl
KGNvZGVUeXBlKQogewogICAgIG1fbGV4ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPExleGVyVHlwZT4o
dm0sIGJ1aWx0aW5Nb2RlKTsKICAgICBtX2xleGVyLT5zZXRDb2RlKHNvdXJjZSwgJm1fcGFyc2Vy
QXJlbmEpOwpAQCAtMjE5LDkgKzIxOCw5IEBAIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZXIoCiAg
ICAgbV90b2tlbi5tX2xvY2F0aW9uLmxpbmVTdGFydE9mZnNldCA9IHNvdXJjZS5zdGFydE9mZnNl
dCgpOwogICAgIG1fZnVuY3Rpb25DYWNoZSA9IHZtLT5hZGRTb3VyY2VQcm92aWRlckNhY2hlKHNv
dXJjZS5wcm92aWRlcigpKTsKICAgICBTY29wZVJlZiBzY29wZSA9IHB1c2hTY29wZSgpOwotICAg
IGlmIChjb2RlVHlwZSA9PSBKU1BhcnNlckNvZGVUeXBlOjpGdW5jdGlvbikKKyAgICBpZiAoaXNG
dW5jdGlvblBhcnNlTW9kZShwYXJzZU1vZGUpKQogICAgICAgICBzY29wZS0+c2V0SXNGdW5jdGlv
bigpOwotICAgIGlmIChjb2RlVHlwZSA9PSBKU1BhcnNlckNvZGVUeXBlOjpNb2R1bGUpCisgICAg
aWYgKGlzTW9kdWxlUGFyc2VNb2RlKHBhcnNlTW9kZSkpCiAgICAgICAgIHNjb3BlLT5zZXRJc01v
ZHVsZSgpOwogICAgIGlmIChzdHJpY3RNb2RlID09IEpTUGFyc2VyU3RyaWN0TW9kZTo6U3RyaWN0
KQogICAgICAgICBzY29wZS0+c2V0U3RyaWN0TW9kZSgpOwpAQCAtMjM1LDEyICsyMzQsMTAgQEAg
UGFyc2VyPExleGVyVHlwZT46On5QYXJzZXIoKQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4
ZXJUeXBlPgotU3RyaW5nIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUlubmVyKGNvbnN0IElkZW50
aWZpZXImIGNhbGxlZU5hbWUsIEZ1bmN0aW9uUGFyc2VNb2RlIHBhcnNlTW9kZSwgTW9kdWxlUGFy
c2VNb2RlIG1vZHVsZVBhcnNlTW9kZSkKK1N0cmluZyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJ
bm5lcihjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VN
b2RlKQogewotICAgIFVOVVNFRF9QQVJBTShtb2R1bGVQYXJzZU1vZGUpOwotCiAgICAgU3RyaW5n
IHBhcnNlRXJyb3IgPSBTdHJpbmcoKTsKLSAgICAKKwogICAgIEFTVEJ1aWxkZXIgY29udGV4dChj
b25zdF9jYXN0PFZNKj4obV92bSksIG1fcGFyc2VyQXJlbmEsIGNvbnN0X2Nhc3Q8U291cmNlQ29k
ZSo+KG1fc291cmNlKSk7CiAgICAgU2NvcGVSZWYgc2NvcGUgPSBjdXJyZW50U2NvcGUoKTsKICAg
ICBzY29wZS0+c2V0SXNMZXhpY2FsU2NvcGUoKTsKQEAgLTI1Miw3ICsyNDksNyBAQCBTdHJpbmcg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmllciYgY2FsbGVlTmFt
ZSwgRnVuY3Rpb25QYXJzZQogICAgICAgICBtX3BhcmFtZXRlcnMgPSBmdW5jdGlvbkluZm8ucGFy
YW1ldGVyczsKIAogI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCi0gICAgICAg
IGlmIChwYXJzZU1vZGUgPT0gQXJyb3dGdW5jdGlvbk1vZGUgJiYgIWhhc0Vycm9yKCkpIHsKKyAg
ICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2Rl
ICYmICFoYXNFcnJvcigpKSB7CiAgICAgICAgICAgICAvLyBUaGUgb25seSB3YXkgd2UgY291bGQg
aGF2ZSBhbiBlcnJvciB3aWxlIHJlcGFyc2luZyBpcyBpZiB3ZSBydW4gb3V0IG9mIHN0YWNrIHNw
YWNlLgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQobWF0Y2goQVJST1dGVU5DVElPTikpOwog
ICAgICAgICAgICAgbmV4dCgpOwpAQCAtMjczLDggKzI3MCw4IEBAIFN0cmluZyBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VJbm5lcihjb25zdCBJZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBGdW5jdGlv
blBhcnNlCiAgICAgICAgIGlmIChpc0Fycm93RnVuY3Rpb25Cb2R5RXhwcmVzc2lvbikKICAgICAg
ICAgICAgIHNvdXJjZUVsZW1lbnRzID0gcGFyc2VBcnJvd0Z1bmN0aW9uU2luZ2xlRXhwcmVzc2lv
bkJvZHlTb3VyY2VFbGVtZW50cyhjb250ZXh0KTsKICNpZiBFTkFCTEUoRVM2X01PRFVMRVMpCi0g
ICAgICAgIGVsc2UgaWYgKG1fY29kZVR5cGUgPT0gSlNQYXJzZXJDb2RlVHlwZTo6TW9kdWxlKQot
ICAgICAgICAgICAgc291cmNlRWxlbWVudHMgPSBwYXJzZU1vZHVsZVNvdXJjZUVsZW1lbnRzKGNv
bnRleHQsIG1vZHVsZVBhcnNlTW9kZSk7CisgICAgICAgIGVsc2UgaWYgKGlzTW9kdWxlUGFyc2VN
b2RlKHBhcnNlTW9kZSkpCisgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlTW9kdWxl
U291cmNlRWxlbWVudHMoY29udGV4dCwgcGFyc2VNb2RlKTsKICNlbmRpZgogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBzb3VyY2VFbGVtZW50cyA9IHBhcnNlU291cmNlRWxlbWVudHMoY29udGV4
dCwgQ2hlY2tGb3JTdHJpY3RNb2RlKTsKQEAgLTQxNCw3ICs0MTEsNyBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VTb3VyY2VFbAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUg
PGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlTW9kdWxlU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImIGNvbnRleHQsIE1vZHVsZVBh
cnNlTW9kZSBtb2R1bGVQYXJzZU1vZGUpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNb2R1bGVTb3VyY2VFbGVt
ZW50cyhUcmVlQnVpbGRlciYgY29udGV4dCwgU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKIHsK
ICAgICBUcmVlU291cmNlRWxlbWVudHMgc291cmNlRWxlbWVudHMgPSBjb250ZXh0LmNyZWF0ZVNv
dXJjZUVsZW1lbnRzKCk7CiAgICAgU3ludGF4Q2hlY2tlciBzeW50YXhDaGVja2VyKGNvbnN0X2Nh
c3Q8Vk0qPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7CkBAIC00MjgsNyArNDI1LDcgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlTW9kdWxlU28KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjb25zdCBJZGVu
dGlmaWVyKiBkaXJlY3RpdmUgPSAwOwogICAgICAgICAgICAgdW5zaWduZWQgZGlyZWN0aXZlTGl0
ZXJhbExlbmd0aCA9IDA7Ci0gICAgICAgICAgICBpZiAobW9kdWxlUGFyc2VNb2RlID09IE1vZHVs
ZVBhcnNlTW9kZTo6QW5hbHl6ZSkgeworICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3Vy
Y2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFw
YXJzZVN0YXRlbWVudExpc3RJdGVtKHN5bnRheENoZWNrZXIsIGRpcmVjdGl2ZSwgJmRpcmVjdGl2
ZUxpdGVyYWxMZW5ndGgpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKQEAgLTE1NDcsNyArMTU0NCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JtYWxQYXJhbWV0ZXJzKFRy
ZWVCCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBUcmVlRnVuY3Rpb25Cb2R5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9u
Qm9keSgKICAgICBUcmVlQnVpbGRlciYgY29udGV4dCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBz
dGFydExvY2F0aW9uLCBpbnQgc3RhcnRDb2x1bW4sIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwg
aW50IGZ1bmN0aW9uTmFtZVN0YXJ0LCBpbnQgcGFyYW1ldGVyc1N0YXJ0LCAKLSAgICBDb25zdHJ1
Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBGdW5jdGlvbkJvZHlUeXBlIGJvZHlUeXBlLCB1bnNp
Z25lZCBwYXJhbWV0ZXJDb3VudCwgRnVuY3Rpb25QYXJzZU1vZGUgcGFyc2VNb2RlKQorICAgIENv
bnN0cnVjdG9yS2luZCBjb25zdHJ1Y3RvcktpbmQsIEZ1bmN0aW9uQm9keVR5cGUgYm9keVR5cGUs
IHVuc2lnbmVkIHBhcmFtZXRlckNvdW50LCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogewog
ICAgIGlmIChib2R5VHlwZSA9PSBTdGFuZGFyZEZ1bmN0aW9uQm9keUJsb2NrIHx8IGJvZHlUeXBl
ID09IEFycm93RnVuY3Rpb25Cb2R5QmxvY2spIHsKICAgICAgICAgbmV4dCgpOwpAQCAtMTU2OCwy
MCArMTU2NSwyMiBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVGdW5jdGlvbkJv
ZHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25CbwogICAgIHJldHVybiBjb250ZXh0
LmNyZWF0ZUZ1bmN0aW9uTWV0YWRhdGEoc3RhcnRMb2NhdGlvbiwgdG9rZW5Mb2NhdGlvbigpLCBz
dGFydENvbHVtbiwgZW5kQ29sdW1uLCBmdW5jdGlvbktleXdvcmRTdGFydCwgZnVuY3Rpb25OYW1l
U3RhcnQsIHBhcmFtZXRlcnNTdGFydCwgc3RyaWN0TW9kZSgpLCBjb25zdHJ1Y3RvcktpbmQsIHBh
cmFtZXRlckNvdW50LCBwYXJzZU1vZGUpOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciogc3RyaW5n
Rm9yRnVuY3Rpb25Nb2RlKEZ1bmN0aW9uUGFyc2VNb2RlIG1vZGUpCitzdGF0aWMgY29uc3QgY2hh
ciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKFNvdXJjZVBhcnNlTW9kZSBtb2RlKQogewogICAgIHN3
aXRjaCAobW9kZSkgewotICAgIGNhc2UgR2V0dGVyTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6R2V0dGVyTW9kZToKICAgICAgICAgcmV0dXJuICJnZXR0ZXIiOwotICAgIGNhc2UgU2V0
dGVyTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZToKICAgICAgICAg
cmV0dXJuICJzZXR0ZXIiOwotICAgIGNhc2UgTm9ybWFsRnVuY3Rpb25Nb2RlOgorICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU6CiAgICAgICAgIHJldHVybiAiZnVu
Y3Rpb24iOwotICAgIGNhc2UgTWV0aG9kTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
TWV0aG9kTW9kZToKICAgICAgICAgcmV0dXJuICJtZXRob2QiOwotICAgIGNhc2UgQXJyb3dGdW5j
dGlvbk1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOgog
ICAgICAgICByZXR1cm4gImFycm93IGZ1bmN0aW9uIjsKLSAgICBjYXNlIE5vdEFGdW5jdGlvbk1v
ZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlOgorICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6TW9kdWxlRXZhbHVhdGVNb2RlOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICByZXR1cm4gIiI7CiAgICAgfQpAQCAtMTU4OSwxNSArMTU4OCwxNSBAQCBz
dGF0aWMgY29uc3QgY2hhciogc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKEZ1bmN0aW9uUGFyc2VNb2Rl
IG1vZGUpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBMZXhl
clR5cGU+IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gaW50IFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUZ1bmN0aW9uUGFyYW1ldGVycyhUcmVlQnVpbGRlciYgY29udGV4dCwgRnVuY3Rpb25Q
YXJzZU1vZGUgbW9kZSwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYgZnVuY3Rpb25J
bmZvKQordGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4gdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiBpbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25QYXJhbWV0ZXJzKFRy
ZWVCdWlsZGVyJiBjb250ZXh0LCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgUGFyc2VyRnVuY3Rpb25J
bmZvPFRyZWVCdWlsZGVyPiYgZnVuY3Rpb25JbmZvKQogewotICAgIFJFTEVBU0VfQVNTRVJUKG1v
ZGUgIT0gTm90QUZ1bmN0aW9uTW9kZSk7CisgICAgUkVMRUFTRV9BU1NFUlQobW9kZSAhPSBTb3Vy
Y2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlICYmIG1vZGUgIT0gU291cmNlUGFyc2VNb2RlOjpNb2R1
bGVBbmFseXplTW9kZSAmJiBtb2RlICE9IFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlRXZhbHVhdGVN
b2RlKTsKICAgICBpbnQgcGFyYW1ldGVyc1N0YXJ0ID0gbV90b2tlbi5tX2xvY2F0aW9uLnN0YXJ0
T2Zmc2V0OwogICAgIFRyZWVGb3JtYWxQYXJhbWV0ZXJMaXN0IHBhcmFtZXRlckxpc3QgPSBjb250
ZXh0LmNyZWF0ZUZvcm1hbFBhcmFtZXRlckxpc3QoKTsKICAgICBmdW5jdGlvbkluZm8ucGFyYW1l
dGVycyA9IHBhcmFtZXRlckxpc3Q7CiAgICAgZnVuY3Rpb25JbmZvLnN0YXJ0T2Zmc2V0ID0gcGFy
YW1ldGVyc1N0YXJ0OwogICAgIAotICAgIGlmIChtb2RlID09IEFycm93RnVuY3Rpb25Nb2RlKSB7
CisgICAgaWYgKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSkgewog
ICAgICAgICBpZiAoIW1hdGNoKElERU5UKSAmJiAhbWF0Y2goT1BFTlBBUkVOKSkgewogICAgICAg
ICAgICAgc2VtYW50aWNGYWlsdXJlRHVlVG9LZXl3b3JkKHN0cmluZ0ZvckZ1bmN0aW9uTW9kZSht
b2RlKSwgIiBuYW1lIik7CiAgICAgICAgICAgICBmYWlsV2l0aE1lc3NhZ2UoIkV4cGVjdGVkIGFu
IGFycm93IGZ1bmN0aW9uIGlucHV0IHBhcmFtZXRlciIpOwpAQCAtMTYyNywxMCArMTYyNiwxMCBA
QCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IGludCBQYXJzZXI8TGV4ZXJUeXBlPgogICAgICAgICBmYWlsV2l0aE1lc3NhZ2UoIkV4cGVj
dGVkIGFuIG9wZW5pbmcgJygnIGJlZm9yZSBhICIsIHN0cmluZ0ZvckZ1bmN0aW9uTW9kZShtb2Rl
KSwgIidzIHBhcmFtZXRlciBsaXN0Iik7CiAgICAgfQogCi0gICAgaWYgKG1vZGUgPT0gR2V0dGVy
TW9kZSkgeworICAgIGlmIChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZSkgewog
ICAgICAgICBjb25zdW1lT3JGYWlsKENMT1NFUEFSRU4sICJnZXR0ZXIgZnVuY3Rpb25zIG11c3Qg
aGF2ZSBubyBwYXJhbWV0ZXJzIik7CiAgICAgICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3Vu
dCA9IDA7Ci0gICAgfSBlbHNlIGlmIChtb2RlID09IFNldHRlck1vZGUpIHsKKyAgICB9IGVsc2Ug
aWYgKG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlKSB7CiAgICAgICAgIGZhaWxJ
ZlRydWUobWF0Y2goQ0xPU0VQQVJFTiksICJzZXR0ZXIgZnVuY3Rpb25zIG11c3QgaGF2ZSBvbmUg
cGFyYW1ldGVyIik7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGR1cGxpY2F0ZVBhcmFtZXRl
ciA9IG51bGxwdHI7CiAgICAgICAgIGF1dG8gcGFyYW1ldGVyID0gcGFyc2VEZXN0cnVjdHVyaW5n
UGF0dGVybihjb250ZXh0LCBEZXN0cnVjdHVyZVRvUGFyYW1ldGVycywgRXhwb3J0VHlwZTo6Tm90
RXhwb3J0ZWQsICZkdXBsaWNhdGVQYXJhbWV0ZXIpOwpAQCAtMTY1NCw5ICsxNjUzLDkgQEAgdGVt
cGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4gdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBp
bnQgUGFyc2VyPExleGVyVHlwZT4KIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4K
LXRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VGdW5jdGlvbkluZm8oVHJlZUJ1aWxkZXImIGNvbnRleHQsIEZ1bmN0aW9uUmVxdWlyZW1lbnRz
IHJlcXVpcmVtZW50cywgRnVuY3Rpb25QYXJzZU1vZGUgbW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRh
aW5pbmdTY29wZSwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5n
IGV4cGVjdGVkU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIFBhcnNlckZ1
bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25QYXJzZVR5cGUg
cGFyc2VUeXBlKQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYgY29udGV4dCwgRnVuY3Rpb25S
ZXF1aXJlbWVudHMgcmVxdWlyZW1lbnRzLCBTb3VyY2VQYXJzZU1vZGUgbW9kZSwgYm9vbCBuYW1l
SXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JLaW5kIGNvbnN0cnVjdG9yS2luZCwgU3Vw
ZXJCaW5kaW5nIGV4cGVjdGVkU3VwZXJCaW5kaW5nLCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQs
IFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4mIGZ1bmN0aW9uSW5mbywgRnVuY3Rpb25Q
YXJzZVR5cGUgcGFyc2VUeXBlKQogewotICAgIFJFTEVBU0VfQVNTRVJUKG1vZGUgIT0gTm90QUZ1
bmN0aW9uTW9kZSk7CisgICAgUkVMRUFTRV9BU1NFUlQoaXNGdW5jdGlvblBhcnNlTW9kZShtb2Rl
KSk7CiAKICAgICBBdXRvUG9wU2NvcGVSZWYgZnVuY3Rpb25TY29wZSh0aGlzLCBwdXNoU2NvcGUo
KSk7CiAgICAgZnVuY3Rpb25TY29wZS0+c2V0SXNGdW5jdGlvbigpOwpAQCAtMTY3MCw3ICsxNjY5
LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAgICAKICAgICBzd2l0Y2ggKHBhcnNlVHlw
ZSkgewogICAgIGNhc2UgU3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZTogewotICAgICAgICBSRUxF
QVNFX0FTU0VSVChtb2RlICE9IEFycm93RnVuY3Rpb25Nb2RlKTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQobW9kZSAhPSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlKTsKICAgICAg
ICAgaWYgKG1hdGNoKElERU5UKSB8fCBpc0xFVE1hc2tlZEFzSURFTlQoKSkgewogICAgICAgICAg
ICAgZnVuY3Rpb25JbmZvLm5hbWUgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICAgICAgICAg
IG1fbGFzdEZ1bmN0aW9uTmFtZSA9IGZ1bmN0aW9uSW5mby5uYW1lOwpAQCAtMTY3OCw3ICsxNjc3
LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29sIFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAgICAgICAgICAgIGlmICghbmFtZUlzSW5D
b250YWluaW5nU2NvcGUpCiAgICAgICAgICAgICAgICAgZmFpbElmVHJ1ZUlmU3RyaWN0KGZ1bmN0
aW9uU2NvcGUtPmRlY2xhcmVWYXJpYWJsZShmdW5jdGlvbkluZm8ubmFtZSkgJiBEZWNsYXJhdGlv
blJlc3VsdDo6SW52YWxpZFN0cmljdE1vZGUsICInIiwgZnVuY3Rpb25JbmZvLm5hbWUtPmltcGwo
KSwgIicgaXMgbm90IGEgdmFsaWQgIiwgc3RyaW5nRm9yRnVuY3Rpb25Nb2RlKG1vZGUpLCAiIG5h
bWUgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgfSBlbHNlIGlmIChyZXF1aXJlbWVudHMgPT0g
RnVuY3Rpb25OZWVkc05hbWUpIHsKLSAgICAgICAgICAgIGlmIChtYXRjaChPUEVOUEFSRU4pICYm
IG1vZGUgPT0gTm9ybWFsRnVuY3Rpb25Nb2RlKQorICAgICAgICAgICAgaWYgKG1hdGNoKE9QRU5Q
QVJFTikgJiYgbW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZSkKICAg
ICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWwoIkZ1bmN0aW9uIHN0YXRlbWVudHMgbXVzdCBoYXZl
IGEgbmFtZSIpOwogICAgICAgICAgICAgc2VtYW50aWNGYWlsdXJlRHVlVG9LZXl3b3JkKHN0cmlu
Z0ZvckZ1bmN0aW9uTW9kZShtb2RlKSwgIiBuYW1lIik7CiAgICAgICAgICAgICBmYWlsRHVlVG9V
bmV4cGVjdGVkVG9rZW4oKTsKQEAgLTE3MDgsNyArMTcwNyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJl
ZUJ1aWxkCiAgICAgfQogI2lmIEVOQUJMRShFUzZfQVJST1dGVU5DVElPTl9TWU5UQVgpCiAgICAg
Y2FzZSBBcnJvd0Z1bmN0aW9uUGFyc2VUeXBlOiB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUKG1v
ZGUgPT0gQXJyb3dGdW5jdGlvbk1vZGUpOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtb2RlID09
IFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUpOwogCiAgICAgICAgIHN0YXJ0TG9j
YXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7CiAgICAgICAgIGZ1bmN0aW9uSW5mby5zdGFydExpbmUg
PSB0b2tlbkxpbmUoKTsKQEAgLTE4MDQsNyArMTgwMyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gYm9vbCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGdW5jdGlvbkluZm8oVHJlZUJ1
aWxkCiAgICAgZmFpbElmRmFsc2UoZnVuY3Rpb25JbmZvLmJvZHksICJDYW5ub3QgcGFyc2UgdGhl
IGJvZHkgb2YgdGhpcyAiLCBzdHJpbmdGb3JGdW5jdGlvbk1vZGUobW9kZSkpOwogICAgIGNvbnRl
eHQuc2V0RW5kT2Zmc2V0KGZ1bmN0aW9uSW5mby5ib2R5LCBtX2xleGVyLT5jdXJyZW50T2Zmc2V0
KCkpOwogICAgIGlmIChmdW5jdGlvblNjb3BlLT5zdHJpY3RNb2RlKCkgJiYgZnVuY3Rpb25JbmZv
Lm5hbWUpIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobW9kZSA9PSBOb3JtYWxGdW5jdGlvbk1v
ZGUgfHwgbW9kZSA9PSBNZXRob2RNb2RlIHx8IG1vZGUgPT0gQXJyb3dGdW5jdGlvbk1vZGUpOwor
ICAgICAgICBSRUxFQVNFX0FTU0VSVChtb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVu
Y3Rpb25Nb2RlIHx8IG1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlIHx8IG1vZGUg
PT0gU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZSk7CiAgICAgICAgIHNlbWFudGlj
RmFpbElmVHJ1ZShtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5hcmd1bWVudHMgPT0gKmZ1bmN0aW9uSW5m
by5uYW1lLCAiJyIsIGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZhbGlk
IGZ1bmN0aW9uIG5hbWUgaW4gc3RyaWN0IG1vZGUiKTsKICAgICAgICAgc2VtYW50aWNGYWlsSWZU
cnVlKG1fdm0tPnByb3BlcnR5TmFtZXMtPmV2YWwgPT0gKmZ1bmN0aW9uSW5mby5uYW1lLCAiJyIs
IGZ1bmN0aW9uSW5mby5uYW1lLT5pbXBsKCksICInIGlzIG5vdCBhIHZhbGlkIGZ1bmN0aW9uIG5h
bWUgaW4gc3RyaWN0IG1vZGUiKTsKICAgICB9CkBAIC0xODY5LDcgKzE4NjgsNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlRnVuY3Rpb25EZWNsYQogICAgIHVuc2lnbmVkIGZ1bmN0aW9uS2V5d29yZFN0YXJ0ID0gdG9r
ZW5TdGFydCgpOwogICAgIG5leHQoKTsKICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxk
ZXI+IGZ1bmN0aW9uSW5mbzsKLSAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29u
dGV4dCwgRnVuY3Rpb25OZWVkc05hbWUsIE5vcm1hbEZ1bmN0aW9uTW9kZSwgdHJ1ZSwgQ29uc3Ry
dWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRpbmc6Ok5vdE5lZWRlZCwKKyAgICBmYWlsSWZGYWxz
ZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OZWVkc05hbWUsIFNvdXJjZVBh
cnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlLCB0cnVlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUs
IFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLAogICAgICAgICBmdW5jdGlvbktleXdvcmRTdGFydCwg
ZnVuY3Rpb25JbmZvLCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlKSksICJDYW5ub3QgcGFyc2Ug
dGhpcyBmdW5jdGlvbiIpOwogICAgIGZhaWxJZkZhbHNlKGZ1bmN0aW9uSW5mby5uYW1lLCAiRnVu
Y3Rpb24gc3RhdGVtZW50cyBtdXN0IGhhdmUgYSBuYW1lIik7CiAgICAgZmFpbElmVHJ1ZUlmU3Ry
aWN0KGRlY2xhcmVWYXJpYWJsZShmdW5jdGlvbkluZm8ubmFtZSkgJiBEZWNsYXJhdGlvblJlc3Vs
dDo6SW52YWxpZFN0cmljdE1vZGUsICJDYW5ub3QgZGVjbGFyZSBhIGZ1bmN0aW9uIG5hbWVkICci
LCBmdW5jdGlvbkluZm8ubmFtZS0+aW1wbCgpLCAiJyBpbiBzdHJpY3QgbW9kZSIpOwpAQCAtMTk5
OSw3ICsxOTk4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlQ2xhc3NFeHBy
ZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKFQKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIFBhcnNlckZ1bmN0aW9uSW5mbzxUcmVlQnVpbGRlcj4gbWV0aG9kSW5mbzsK
ICAgICAgICAgICAgIGJvb2wgaXNDb25zdHJ1Y3RvciA9ICFpc1N0YXRpY01ldGhvZCAmJiAqaWRl
bnQgPT0gcHJvcGVydHlOYW1lcy5jb25zdHJ1Y3RvcjsKLSAgICAgICAgICAgIGZhaWxJZkZhbHNl
KChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBNZXRo
b2RNb2RlLCBmYWxzZSwgaXNDb25zdHJ1Y3RvciA/IGNvbnN0cnVjdG9yS2luZCA6IENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIG1ldGhvZFN0YXJ0LCBtZXRob2RJ
bmZvLCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlKSksICJDYW5ub3QgcGFyc2UgdGhpcyBtZXRo
b2QiKTsKKyAgICAgICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0
LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUsIGZh
bHNlLCBpc0NvbnN0cnVjdG9yID8gY29uc3RydWN0b3JLaW5kIDogQ29uc3RydWN0b3JLaW5kOjpO
b25lLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgbWV0aG9kU3RhcnQsIG1ldGhvZEluZm8sIFN0YW5k
YXJkRnVuY3Rpb25QYXJzZVR5cGUpKSwgIkNhbm5vdCBwYXJzZSB0aGlzIG1ldGhvZCIpOwogICAg
ICAgICAgICAgZmFpbElmVHJ1ZSghaWRlbnQgfHwgKGRlY2xhcmVWYXJpYWJsZShpZGVudCkgJiBE
ZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZFN0cmljdE1vZGUpLCAiQ2Fubm90IGRlY2xhcmUgYSBt
ZXRob2QgbmFtZWQgJyIsIG1ldGhvZEluZm8ubmFtZS0+aW1wbCgpLCAiJyIpOwogICAgICAgICAg
ICAgbWV0aG9kSW5mby5uYW1lID0gaXNDb25zdHJ1Y3RvciA/IGNsYXNzTmFtZSA6IGlkZW50Owog
CkBAIC0yMjI2LDE2ICsyMjI1LDE2IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJZlN0YXRlbWVudChUCiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpNb2R1bGVTcGVjaWZpZXIgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlTW9kdWxlU3BlY2lmaWVyKFRyZWVCdWlsZGVyJiBjb250ZXh0KQordGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6TW9kdWxlTmFtZSBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VNb2R1bGVOYW1lKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewotICAg
IC8vIE1vZHVsZVNwZWNpZmllciByZXByZXNlbnRzIHRoZSBtb2R1bGUgbmFtZSBpbXBvcnRlZCBi
eSB0aGUgc2NyaXB0LgorICAgIC8vIE1vZHVsZU5hbWUgKE1vZHVsZVNwZWNpZmllciBpbiB0aGUg
c3BlYykgcmVwcmVzZW50cyB0aGUgbW9kdWxlIG5hbWUgaW1wb3J0ZWQgYnkgdGhlIHNjcmlwdC4K
ICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNz
ZWMtaW1wb3J0cwogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21h
LTI2Mi82LjAvI3NlYy1leHBvcnRzCiAgICAgSlNUb2tlbkxvY2F0aW9uIHNwZWNpZmllckxvY2F0
aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgZmFpbElmRmFsc2UobWF0Y2goU1RSSU5HKSwgIklt
cG9ydGVkIG1vZHVsZXMgbmFtZXMgbXVzdCBiZSBzdHJpbmcgbGl0ZXJhbHMiKTsKICAgICBjb25z
dCBJZGVudGlmaWVyKiBtb2R1bGVOYW1lID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgbmV4
dCgpOwotICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU1vZHVsZVNwZWNpZmllcihzcGVjaWZpZXJM
b2NhdGlvbiwgKm1vZHVsZU5hbWUpOworICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZU1vZHVsZU5h
bWUoc3BlY2lmaWVyTG9jYXRpb24sICptb2R1bGVOYW1lKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVu
YW1lIExleGVyVHlwZT4KQEAgLTIzMjcsMTAgKzIzMjYsMTAgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUltcG9ydERl
Y2xhcmEKIAogICAgIGlmIChtYXRjaChTVFJJTkcpKSB7CiAgICAgICAgIC8vIGltcG9ydCBNb2R1
bGVTcGVjaWZpZXIgOwotICAgICAgICBhdXRvIG1vZHVsZVNwZWNpZmllciA9IHBhcnNlTW9kdWxl
U3BlY2lmaWVyKGNvbnRleHQpOwotICAgICAgICBmYWlsSWZGYWxzZShtb2R1bGVTcGVjaWZpZXIs
ICJDYW5ub3QgcGFyc2UgdGhlIG1vZHVsZSBuYW1lIik7CisgICAgICAgIGF1dG8gbW9kdWxlTmFt
ZSA9IHBhcnNlTW9kdWxlTmFtZShjb250ZXh0KTsKKyAgICAgICAgZmFpbElmRmFsc2UobW9kdWxl
TmFtZSwgIkNhbm5vdCBwYXJzZSB0aGUgbW9kdWxlIG5hbWUiKTsKICAgICAgICAgZmFpbElmRmFs
c2UoYXV0b1NlbWlDb2xvbigpLCAiRXhwZWN0ZWQgYSAnOycgZm9sbG93aW5nIGEgdGFyZ2V0ZWQg
aW1wb3J0IGRlY2xhcmF0aW9uIik7Ci0gICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUltcG9y
dERlY2xhcmF0aW9uKGltcG9ydExvY2F0aW9uLCBzcGVjaWZpZXJMaXN0LCBtb2R1bGVTcGVjaWZp
ZXIpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVJbXBvcnREZWNsYXJhdGlvbihpbXBv
cnRMb2NhdGlvbiwgc3BlY2lmaWVyTGlzdCwgbW9kdWxlTmFtZSk7CiAgICAgfQogCiAgICAgYm9v
bCBpc0ZpbmlzaGVkUGFyc2luZ0ltcG9ydCA9IGZhbHNlOwpAQCAtMjM3OCwxMSArMjM3NywxMSBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlSW1wb3J0RGVjbGFyYQogICAgIGZhaWxJZkZhbHNlKG1hdGNoQ29udGV4dHVh
bEtleXdvcmQobV92bS0+cHJvcGVydHlOYW1lcy0+ZnJvbSksICJFeHBlY3RlZCAnZnJvbScgYmVm
b3JlIGltcG9ydGVkIG1vZHVsZSBuYW1lIik7CiAgICAgbmV4dCgpOwogCi0gICAgYXV0byBtb2R1
bGVTcGVjaWZpZXIgPSBwYXJzZU1vZHVsZVNwZWNpZmllcihjb250ZXh0KTsKLSAgICBmYWlsSWZG
YWxzZShtb2R1bGVTcGVjaWZpZXIsICJDYW5ub3QgcGFyc2UgdGhlIG1vZHVsZSBuYW1lIik7Cisg
ICAgYXV0byBtb2R1bGVOYW1lID0gcGFyc2VNb2R1bGVOYW1lKGNvbnRleHQpOworICAgIGZhaWxJ
ZkZhbHNlKG1vZHVsZU5hbWUsICJDYW5ub3QgcGFyc2UgdGhlIG1vZHVsZSBuYW1lIik7CiAgICAg
ZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpLCAiRXhwZWN0ZWQgYSAnOycgZm9sbG93aW5nIGEg
dGFyZ2V0ZWQgaW1wb3J0IGRlY2xhcmF0aW9uIik7CiAKLSAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVJbXBvcnREZWNsYXJhdGlvbihpbXBvcnRMb2NhdGlvbiwgc3BlY2lmaWVyTGlzdCwgbW9kdWxl
U3BlY2lmaWVyKTsKKyAgICByZXR1cm4gY29udGV4dC5jcmVhdGVJbXBvcnREZWNsYXJhdGlvbihp
bXBvcnRMb2NhdGlvbiwgc3BlY2lmaWVyTGlzdCwgbW9kdWxlTmFtZSk7CiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBMZXhlclR5cGU+CkBAIC0yNDI3LDExICsyNDI2LDExIEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VF
eHBvcnREZWNsYXJhCiAKICAgICAgICAgZmFpbElmRmFsc2UobWF0Y2hDb250ZXh0dWFsS2V5d29y
ZChtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5mcm9tKSwgIkV4cGVjdGVkICdmcm9tJyBiZWZvcmUgZXhw
b3J0ZWQgbW9kdWxlIG5hbWUiKTsKICAgICAgICAgbmV4dCgpOwotICAgICAgICBhdXRvIG1vZHVs
ZVNwZWNpZmllciA9IHBhcnNlTW9kdWxlU3BlY2lmaWVyKGNvbnRleHQpOwotICAgICAgICBmYWls
SWZGYWxzZShtb2R1bGVTcGVjaWZpZXIsICJDYW5ub3QgcGFyc2UgdGhlICdmcm9tJyBjbGF1c2Ui
KTsKKyAgICAgICAgYXV0byBtb2R1bGVOYW1lID0gcGFyc2VNb2R1bGVOYW1lKGNvbnRleHQpOwor
ICAgICAgICBmYWlsSWZGYWxzZShtb2R1bGVOYW1lLCAiQ2Fubm90IHBhcnNlIHRoZSAnZnJvbScg
Y2xhdXNlIik7CiAgICAgICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSwgIkV4cGVjdGVk
IGEgJzsnIGZvbGxvd2luZyBhIHRhcmdldGVkIGV4cG9ydCBkZWNsYXJhdGlvbiIpOwogCi0gICAg
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUV4cG9ydEFsbERlY2xhcmF0aW9uKGV4cG9ydExvY2F0
aW9uLCBtb2R1bGVTcGVjaWZpZXIpOworICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVFeHBv
cnRBbGxEZWNsYXJhdGlvbihleHBvcnRMb2NhdGlvbiwgbW9kdWxlTmFtZSk7CiAgICAgfQogCiAg
ICAgY2FzZSBERUZBVUxUOiB7CkBAIC0yNDc0LDYgKzI0NzMsOSBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwb3J0
RGVjbGFyYQogICAgICAgICAgICAgLy8KICAgICAgICAgICAgIC8vIGNvbnN0ICpkZWZhdWx0KiA9
IGV4cHI7CiAgICAgICAgICAgICAvLyBleHBvcnQgeyAqZGVmYXVsdCogYXMgZGVmYXVsdCB9Cisg
ICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gSW4gdGhlIGFib3ZlIGV4YW1wbGUsICpkZWZh
dWx0KiBpcyB0aGUgaW52aXNpYmxlIHZhcmlhYmxlIHRvIHRoZSB1c2Vycy4KKyAgICAgICAgICAg
IC8vIFdlIHVzZSB0aGUgcHJpdmF0ZSBzeW1ib2wgdG8gcmVwcmVzZW50IHRoZSBuYW1lIG9mIHRo
aXMgdmFyaWFibGUuCiAgICAgICAgICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5M
b2NhdGlvbigpKTsKICAgICAgICAgICAgIEpTVGV4dFBvc2l0aW9uIHN0YXJ0ID0gdG9rZW5TdGFy
dFBvc2l0aW9uKCk7CiAgICAgICAgICAgICBUcmVlRXhwcmVzc2lvbiBleHByZXNzaW9uID0gcGFy
c2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKQEAgLTI0ODEsNyArMjQ4Myw3IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VFeHBvcnREZWNsYXJhCiAKICAgICAgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFz
ayBkZWNsYXJhdGlvblJlc3VsdCA9IGRlY2xhcmVWYXJpYWJsZSgmbV92bS0+cHJvcGVydHlOYW1l
cy0+c3RhckRlZmF1bHRQcml2YXRlTmFtZSwgRGVjbGFyYXRpb25UeXBlOjpDb25zdERlY2xhcmF0
aW9uKTsKICAgICAgICAgICAgIGlmIChkZWNsYXJhdGlvblJlc3VsdCAmIERlY2xhcmF0aW9uUmVz
dWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24pCi0gICAgICAgICAgICAgICAgaW50ZXJu
YWxGYWlsV2l0aE1lc3NhZ2UoZmFsc2UsICJDYW5ub3QgZXhwb3J0ICdkZWZhdWx0JyBuYW1lIHR3
aWNlOiAnIik7CisgICAgICAgICAgICAgICAgaW50ZXJuYWxGYWlsV2l0aE1lc3NhZ2UoZmFsc2Us
ICJPbmx5IG9uZSAnZGVmYXVsdCcgZXhwb3J0IGlzIGFsbG93ZWQiKTsKIAogICAgICAgICAgICAg
VHJlZUV4cHJlc3Npb24gYXNzaWdubWVudCA9IGNvbnRleHQuY3JlYXRlQXNzaWduUmVzb2x2ZShs
b2NhdGlvbiwgbV92bS0+cHJvcGVydHlOYW1lcy0+c3RhckRlZmF1bHRQcml2YXRlTmFtZSwgZXhw
cmVzc2lvbiwgc3RhcnQsIHN0YXJ0LCB0b2tlbkVuZFBvc2l0aW9uKCksIEFzc2lnbm1lbnRDb250
ZXh0OjpDb25zdERlY2xhcmF0aW9uU3RhdGVtZW50KTsKICAgICAgICAgICAgIHJlc3VsdCA9IGNv
bnRleHQuY3JlYXRlRXhwclN0YXRlbWVudChsb2NhdGlvbiwgYXNzaWdubWVudCwgc3RhcnQsIHRv
a2VuRW5kUG9zaXRpb24oKSk7CkBAIC0yNDkxLDcgKzI0OTMsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwb3J0
RGVjbGFyYQogICAgICAgICB9CiAgICAgICAgIGZhaWxJZkZhbHNlKHJlc3VsdCwgIkNhbm5vdCBw
YXJzZSB0aGUgZGVjbGFyYXRpb24iKTsKIAotICAgICAgICBzZW1hbnRpY0ZhaWxJZkZhbHNlKGV4
cG9ydE5hbWUobV92bS0+cHJvcGVydHlOYW1lcy0+ZGVmYXVsdEtleXdvcmQpLCAiQ2Fubm90IGV4
cG9ydCAnZGVmYXVsdCcgbmFtZSB0d2ljZS4iKTsKKyAgICAgICAgc2VtYW50aWNGYWlsSWZGYWxz
ZShleHBvcnROYW1lKG1fdm0tPnByb3BlcnR5TmFtZXMtPmRlZmF1bHRLZXl3b3JkKSwgIk9ubHkg
b25lICdkZWZhdWx0JyBleHBvcnQgaXMgYWxsb3dlZCIpOwogICAgICAgICBjdXJyZW50U2NvcGUo
KS0+bW9kdWxlU2NvcGVEYXRhKCkuZXhwb3J0QmluZGluZygqbG9jYWxOYW1lKTsKICAgICAgICAg
cmV0dXJuIGNvbnRleHQuY3JlYXRlRXhwb3J0RGVmYXVsdERlY2xhcmF0aW9uKGV4cG9ydExvY2F0
aW9uLCByZXN1bHQsICpsb2NhbE5hbWUpOwogICAgIH0KQEAgLTI1MjUsMTUgKzI1MjcsMTUgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUV4cG9ydERlY2xhcmEKICAgICAgICAgfQogICAgICAgICBoYW5kbGVQcm9kdWN0
aW9uT3JGYWlsKENMT1NFQlJBQ0UsICJ9IiwgImVuZCIsICJleHBvcnQgbGlzdCIpOwogCi0gICAg
ICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpNb2R1bGVTcGVjaWZpZXIgbW9kdWxlU3BlY2lmaWVy
ID0gMDsKKyAgICAgICAgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6Ok1vZHVsZU5hbWUgbW9kdWxlTmFt
ZSA9IDA7CiAgICAgICAgIGlmIChtYXRjaENvbnRleHR1YWxLZXl3b3JkKG1fdm0tPnByb3BlcnR5
TmFtZXMtPmZyb20pKSB7CiAgICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAgICAgICBtb2R1bGVT
cGVjaWZpZXIgPSBwYXJzZU1vZHVsZVNwZWNpZmllcihjb250ZXh0KTsKLSAgICAgICAgICAgIGZh
aWxJZkZhbHNlKG1vZHVsZVNwZWNpZmllciwgIkNhbm5vdCBwYXJzZSB0aGUgJ2Zyb20nIGNsYXVz
ZSIpOworICAgICAgICAgICAgbW9kdWxlTmFtZSA9IHBhcnNlTW9kdWxlTmFtZShjb250ZXh0KTsK
KyAgICAgICAgICAgIGZhaWxJZkZhbHNlKG1vZHVsZU5hbWUsICJDYW5ub3QgcGFyc2UgdGhlICdm
cm9tJyBjbGF1c2UiKTsKICAgICAgICAgfQogICAgICAgICBmYWlsSWZGYWxzZShhdXRvU2VtaUNv
bG9uKCksICJFeHBlY3RlZCBhICc7JyBmb2xsb3dpbmcgYSB0YXJnZXRlZCBleHBvcnQgZGVjbGFy
YXRpb24iKTsKIAotICAgICAgICBpZiAoIW1vZHVsZVNwZWNpZmllcikgeworICAgICAgICBpZiAo
IW1vZHVsZU5hbWUpIHsKICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShoYXNLZXl3b3Jk
Rm9yTG9jYWxCaW5kaW5ncywgIkNhbm5vdCB1c2Uga2V5d29yZCBhcyBleHBvcnRlZCB2YXJpYWJs
ZSBuYW1lIik7CiAgICAgICAgICAgICAvLyBTaW5jZSB0aGlzIGV4cG9ydCBkZWNsYXJhdGlvbiBk
b2VzIG5vdCBoYXZlIG1vZHVsZSBzcGVjaWZpZXIgcGFydCwgaXQgZXhwb3J0cyB0aGUgbG9jYWwg
YmluZGluZ3MuCiAgICAgICAgICAgICAvLyBXaGlsZSB0aGUgZXhwb3J0IGRlY2xhcmF0aW9uIHdp
dGggbW9kdWxlIHNwZWNpZmllciBkb2VzIG5vdCBoYXZlIGFueSBlZmZlY3Qgb24gdGhlIGN1cnJl
bnQgbW9kdWxlJ3Mgc2NvcGUsCkBAIC0yNTQ5LDcgKzI1NTEsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwb3J0
RGVjbGFyYQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIGNvbnRl
eHQuY3JlYXRlRXhwb3J0TmFtZWREZWNsYXJhdGlvbihleHBvcnRMb2NhdGlvbiwgc3BlY2lmaWVy
TGlzdCwgbW9kdWxlU3BlY2lmaWVyKTsKKyAgICAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlRXhw
b3J0TmFtZWREZWNsYXJhdGlvbihleHBvcnRMb2NhdGlvbiwgc3BlY2lmaWVyTGlzdCwgbW9kdWxl
TmFtZSk7CiAgICAgfQogCiAgICAgZGVmYXVsdDogewpAQCAtMjg4Niw3ICsyODg4LDcgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VQcm9wZXJ0eU1ldGgKICAgICBKU1Rva2VuTG9jYXRpb24gbWV0aG9kTG9jYXRpb24o
dG9rZW5Mb2NhdGlvbigpKTsKICAgICB1bnNpZ25lZCBtZXRob2RTdGFydCA9IHRva2VuU3RhcnQo
KTsKICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IG1ldGhvZEluZm87Ci0gICAg
ZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1aXJl
bWVudHMsIE1ldGhvZE1vZGUsIGZhbHNlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmlu
ZGluZzo6Tm90TmVlZGVkLCBtZXRob2RTdGFydCwgbWV0aG9kSW5mbywgU3RhbmRhcmRGdW5jdGlv
blBhcnNlVHlwZSkpLCAiQ2Fubm90IHBhcnNlIHRoaXMgbWV0aG9kIik7CisgICAgZmFpbElmRmFs
c2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIFNv
dXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSwgZmFsc2UsIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwg
U3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIG1ldGhvZFN0YXJ0LCBtZXRob2RJbmZvLCBTdGFuZGFy
ZEZ1bmN0aW9uUGFyc2VUeXBlKSksICJDYW5ub3QgcGFyc2UgdGhpcyBtZXRob2QiKTsKICAgICBt
ZXRob2RJbmZvLm5hbWUgPSBtZXRob2ROYW1lOwogICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1
bmN0aW9uRXhwcihtZXRob2RMb2NhdGlvbiwgbWV0aG9kSW5mbyk7CiB9CkBAIC0yOTEyLDExICsy
OTE0LDExIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUdldHRlclNldHRlcihUCiAgICAgUGFyc2VyRnVuY3Rpb25JbmZv
PFRyZWVCdWlsZGVyPiBpbmZvOwogICAgIGlmICh0eXBlICYgUHJvcGVydHlOb2RlOjpHZXR0ZXIp
IHsKICAgICAgICAgZmFpbElmRmFsc2UobWF0Y2goT1BFTlBBUkVOKSwgIkV4cGVjdGVkIGEgcGFy
YW1ldGVyIGxpc3QgZm9yIGdldHRlciBkZWZpbml0aW9uIik7Ci0gICAgICAgIGZhaWxJZkZhbHNl
KChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBHZXR0
ZXJNb2RlLCBmYWxzZSwgY29uc3RydWN0b3JLaW5kLCBzdXBlckJpbmRpbmcsCisgICAgICAgIGZh
aWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1l
bnRzLCBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGUsIGZhbHNlLCBjb25zdHJ1Y3RvcktpbmQs
IHN1cGVyQmluZGluZywKICAgICAgICAgICAgIGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQsIGlu
Zm8sIFN0YW5kYXJkRnVuY3Rpb25QYXJzZVR5cGUpKSwgIkNhbm5vdCBwYXJzZSBnZXR0ZXIgZGVm
aW5pdGlvbiIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGZhaWxJZkZhbHNlKG1hdGNoKE9QRU5Q
QVJFTiksICJFeHBlY3RlZCBhIHBhcmFtZXRlciBsaXN0IGZvciBzZXR0ZXIgZGVmaW5pdGlvbiIp
OwotICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rp
b25Ob1JlcXVpcmVtZW50cywgU2V0dGVyTW9kZSwgZmFsc2UsIGNvbnN0cnVjdG9yS2luZCwgc3Vw
ZXJCaW5kaW5nLAorICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4
dCwgRnVuY3Rpb25Ob1JlcXVpcmVtZW50cywgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlLCBm
YWxzZSwgY29uc3RydWN0b3JLaW5kLCBzdXBlckJpbmRpbmcsCiAgICAgICAgICAgICBnZXR0ZXJP
clNldHRlclN0YXJ0T2Zmc2V0LCBpbmZvLCBTdGFuZGFyZEZ1bmN0aW9uUGFyc2VUeXBlKSksICJD
YW5ub3QgcGFyc2Ugc2V0dGVyIGRlZmluaXRpb24iKTsKICAgICB9CiAgICAgaWYgKHN0cmluZ1By
b3BlcnR5TmFtZSkKQEAgLTMxODQsNyArMzE4Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlUHJpbWFyeUV4cHJl
CiAgICAgICAgIG5leHQoKTsKICAgICAgICAgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVy
PiBpbmZvOwogICAgICAgICBpbmZvLm5hbWUgPSAmbV92bS0+cHJvcGVydHlOYW1lcy0+bnVsbElk
ZW50aWZpZXI7Ci0gICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0
LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBOb3JtYWxGdW5jdGlvbk1vZGUsIGZhbHNlLCBDb25z
dHJ1Y3RvcktpbmQ6Ok5vbmUsIFN1cGVyQmluZGluZzo6Tm90TmVlZGVkLCBmdW5jdGlvbktleXdv
cmRTdGFydCwgaW5mbywgU3RhbmRhcmRGdW5jdGlvblBhcnNlVHlwZSkpLCAiQ2Fubm90IHBhcnNl
IGZ1bmN0aW9uIGV4cHJlc3Npb24iKTsKKyAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rp
b25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1aXJlbWVudHMsIFNvdXJjZVBhcnNlTW9kZTo6
Tm9ybWFsRnVuY3Rpb25Nb2RlLCBmYWxzZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJp
bmRpbmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGluZm8sIFN0YW5kYXJkRnVu
Y3Rpb25QYXJzZVR5cGUpKSwgIkNhbm5vdCBwYXJzZSBmdW5jdGlvbiBleHByZXNzaW9uIik7CiAg
ICAgICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUZ1bmN0aW9uRXhwcihsb2NhdGlvbiwgaW5mbyk7
CiAgICAgfQogI2lmIEVOQUJMRShFUzZfQ0xBU1NfU1lOVEFYKQpAQCAtMzQ1Niw3ICszNDU4LDcg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VBcnJvd0Z1bmN0aW8KICAgICBsb2NhdGlvbiA9IHRva2VuTG9jYXRpb24o
KTsKICAgICBQYXJzZXJGdW5jdGlvbkluZm88VHJlZUJ1aWxkZXI+IGluZm87CiAgICAgaW5mby5u
YW1lID0gJm1fdm0tPnByb3BlcnR5TmFtZXMtPm51bGxJZGVudGlmaWVyOwotICAgIGZhaWxJZkZh
bHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5vUmVxdWlyZW1lbnRzLCBB
cnJvd0Z1bmN0aW9uTW9kZSwgdHJ1ZSwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCBTdXBlckJpbmRp
bmc6Ok5vdE5lZWRlZCwgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGluZm8sIEFycm93RnVuY3Rpb25Q
YXJzZVR5cGUpKSwgIkNhbm5vdCBwYXJzZSBhcnJvdyBmdW5jdGlvbiBleHByZXNzaW9uIik7Cisg
ICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTm9SZXF1
aXJlbWVudHMsIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGUsIHRydWUsIENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQsIGZ1bmN0aW9uS2V5d29y
ZFN0YXJ0LCBpbmZvLCBBcnJvd0Z1bmN0aW9uUGFyc2VUeXBlKSksICJDYW5ub3QgcGFyc2UgYXJy
b3cgZnVuY3Rpb24gZXhwcmVzc2lvbiIpOwogCiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlQXJy
b3dGdW5jdGlvbkV4cHIobG9jYXRpb24sIGluZm8pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmgKaW5kZXggNmJmMjIyNDUwYjc4NjU5YTNjYjA0MjE4NjE0ZDU2ZGU0NGVkNjNj
NC4uYzJlNmE2NTA0MDg5OTE1ZGMyODA1N2ZmZTAxZjA0ZWVhZGUwMWYxNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC02MTUsMTIgKzYxNSwxMiBAQCBjbGFzcyBQYXJz
ZXIgewogCiBwdWJsaWM6CiAgICAgUGFyc2VyKAotICAgICAgICBWTSosIGNvbnN0IFNvdXJjZUNv
ZGUmLCBKU1BhcnNlckJ1aWx0aW5Nb2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIEpTUGFyc2VyQ29k
ZVR5cGUsIAorICAgICAgICBWTSosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1BhcnNlckJ1aWx0aW5N
b2RlLCBKU1BhcnNlclN0cmljdE1vZGUsIFNvdXJjZVBhcnNlTW9kZSwKICAgICAgICAgQ29uc3Ry
dWN0b3JLaW5kIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQgPSBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUs
IFRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZOZWVkZWQpOwogICAgIH5QYXJzZXIo
KTsKIAogICAgIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgotICAgIHN0ZDo6dW5pcXVlX3B0
cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5j
dGlvblBhcnNlTW9kZSwgTW9kdWxlUGFyc2VNb2RlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFy
c2VkTm9kZT4gcGFyc2UoUGFyc2VyRXJyb3ImLCBjb25zdCBJZGVudGlmaWVyJiwgU291cmNlUGFy
c2VNb2RlKTsKIAogICAgIEpTVGV4dFBvc2l0aW9uIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUo
KSBjb25zdCB7IHJldHVybiBtX2xleGVyLT5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7IH0K
ICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb25CZWZvcmVMYXN0VG9rZW4oKSBjb25zdCB7IHJl
dHVybiBtX2xleGVyLT5sYXN0VG9rZW5Mb2NhdGlvbigpOyB9CkBAIC04NDgsNyArODQ4LDcgQEAg
Y2xhc3MgUGFyc2VyIHsKICAgICB9CiAKICAgICBQYXJzZXIoKTsKLSAgICBTdHJpbmcgcGFyc2VJ
bm5lcihjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25QYXJzZU1vZGUsIE1vZHVsZVBhcnNlTW9k
ZSk7CisgICAgU3RyaW5nIHBhcnNlSW5uZXIoY29uc3QgSWRlbnRpZmllciYsIFNvdXJjZVBhcnNl
TW9kZSk7CiAKICAgICB2b2lkIGRpZEZpbmlzaFBhcnNpbmcoU291cmNlRWxlbWVudHMqLCBEZWNs
YXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjayYsIFZhcmlhYmxlRW52aXJvbm1lbnQmLCBDb2Rl
RmVhdHVyZXMsIGludCwgY29uc3QgVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+JiYp
OwogCkBAIC0xMTAzLDcgKzExMDMsNyBAQCBjbGFzcyBQYXJzZXIgewogICAgIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IHBhcnNlUHJvcGVydHkoVHJlZUJ1aWxkZXIm
LCBib29sIHN0cmljdCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhw
cmVzc2lvbiBwYXJzZVByb3BlcnR5TWV0aG9kKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBjb25zdCBJ
ZGVudGlmaWVyKiBtZXRob2ROYW1lKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVQcm9wZXJ0eSBwYXJzZUdldHRlclNldHRlcihUcmVlQnVpbGRlciYsIGJvb2wgc3RyaWN0
LCBQcm9wZXJ0eU5vZGU6OlR5cGUsIHVuc2lnbmVkIGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQs
IENvbnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgU3VwZXJCaW5kaW5nID0g
U3VwZXJCaW5kaW5nOjpOb3ROZWVkZWQpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gQUxXQVlTX0lOTElORSBUcmVlRnVuY3Rpb25Cb2R5IHBhcnNlRnVuY3Rpb25Cb2R5KFRyZWVC
dWlsZGVyJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQgZnVuY3Rpb25LZXl3b3Jk
U3RhcnQsIGludCBmdW5jdGlvbk5hbWVTdGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgQ29uc3Ry
dWN0b3JLaW5kLCBGdW5jdGlvbkJvZHlUeXBlLCB1bnNpZ25lZCwgRnVuY3Rpb25QYXJzZU1vZGUp
OworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRnVu
Y3Rpb25Cb2R5IHBhcnNlRnVuY3Rpb25Cb2R5KFRyZWVCdWlsZGVyJiwgY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgaW50LCBpbnQgZnVuY3Rpb25LZXl3b3JkU3RhcnQsIGludCBmdW5jdGlvbk5hbWVT
dGFydCwgaW50IHBhcmFtZXRlcnNTdGFydCwgQ29uc3RydWN0b3JLaW5kLCBGdW5jdGlvbkJvZHlU
eXBlLCB1bnNpZ25lZCwgU291cmNlUGFyc2VNb2RlKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgYm9vbCBwYXJzZUZvcm1hbFBhcmFtZXRlcnMoVHJlZUJ1
aWxkZXImLCBUcmVlRm9ybWFsUGFyYW1ldGVyTGlzdCwgdW5zaWduZWQmKTsKICAgICBlbnVtIFZh
ckRlY2xhcmF0aW9uTGlzdENvbnRleHQgeyBGb3JMb29wQ29udGV4dCwgVmFyRGVjbGFyYXRpb25D
b250ZXh0IH07CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lv
biBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KFRyZWVCdWlsZGVyJiwgaW50JiBkZWNsYXJh
dGlvbnMsIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiYgbGFzdFBhdHRlcm4sIFRyZWVFeHByZXNz
aW9uJiBsYXN0SW5pdGlhbGl6ZXIsIEpTVGV4dFBvc2l0aW9uJiBpZGVudFN0YXJ0LCBKU1RleHRQ
b3NpdGlvbiYgaW5pdFN0YXJ0LCBKU1RleHRQb3NpdGlvbiYgaW5pdEVuZCwgVmFyRGVjbGFyYXRp
b25MaXN0Q29udGV4dCwgRGVjbGFyYXRpb25UeXBlLCBFeHBvcnRUeXBlLCBib29sJiBmb3JMb29w
Q29uc3REb2VzTm90SGF2ZUluaXRpYWxpemVyKTsKQEAgLTExMTMsMTcgKzExMTMsMTcgQEAgY2xh
c3MgUGFyc2VyIHsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElO
RSBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGFyc2VEZXN0cnVjdHVyaW5nUGF0dGVybihUcmVl
QnVpbGRlciYsIERlc3RydWN0dXJpbmdLaW5kLCBFeHBvcnRUeXBlLCBjb25zdCBJZGVudGlmaWVy
KiogZHVwbGljYXRlSWRlbnRpZmllciA9IG51bGxwdHIsIGJvb2wqIGhhc0Rlc3RydWN0dXJpbmdQ
YXR0ZXJuID0gbnVsbHB0ciwgQXNzaWdubWVudENvbnRleHQgPSBBc3NpZ25tZW50Q29udGV4dDo6
RGVjbGFyYXRpb25TdGF0ZW1lbnQsIGludCBkZXB0aCA9IDApOwogICAgIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiB0cnlQ
YXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuRXhwcmVzc2lvbihUcmVlQnVpbGRlciYsIEFzc2lnbm1l
bnRDb250ZXh0KTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElO
RSBUcmVlRXhwcmVzc2lvbiBwYXJzZURlZmF1bHRWYWx1ZUZvckRlc3RydWN0dXJpbmdQYXR0ZXJu
KFRyZWVCdWlsZGVyJik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291
cmNlRWxlbWVudHMgcGFyc2VNb2R1bGVTb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIE1vZHVs
ZVBhcnNlTW9kZSk7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNl
RWxlbWVudHMgcGFyc2VNb2R1bGVTb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIFNvdXJjZVBh
cnNlTW9kZSk7CiAgICAgZW51bSBjbGFzcyBJbXBvcnRTcGVjaWZpZXJUeXBlIHsgTmFtZXNwYWNl
SW1wb3J0LCBOYW1lZEltcG9ydCwgRGVmYXVsdEltcG9ydCB9OwogICAgIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkltcG9ydFNwZWNpZmllciBwYXJz
ZUltcG9ydENsYXVzZUl0ZW0oVHJlZUJ1aWxkZXImLCBJbXBvcnRTcGVjaWZpZXJUeXBlKTsKLSAg
ICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpNb2R1
bGVTcGVjaWZpZXIgcGFyc2VNb2R1bGVTcGVjaWZpZXIoVHJlZUJ1aWxkZXImKTsKKyAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpNb2R1bGVOYW1l
IHBhcnNlTW9kdWxlTmFtZShUcmVlQnVpbGRlciYpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZUltcG9ydERlY2xhcmF0aW9uKFRyZWVCdWlsZGVy
Jik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRl
cjo6RXhwb3J0U3BlY2lmaWVyIHBhcnNlRXhwb3J0U3BlY2lmaWVyKFRyZWVCdWlsZGVyJiBjb250
ZXh0LCBWZWN0b3I8Y29uc3QgSWRlbnRpZmllcio+JiBtYXliZUxvY2FsTmFtZXMsIGJvb2wmIGhh
c0tleXdvcmRGb3JMb2NhbEJpbmRpbmdzKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VFeHBvcnREZWNsYXJhdGlvbihUcmVlQnVpbGRlciYpOwog
Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgYm9vbCBwYXJz
ZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGRlciYsIEZ1bmN0aW9uUmVxdWlyZW1lbnRzLCBGdW5jdGlv
blBhcnNlTW9kZSwgYm9vbCBuYW1lSXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JLaW5k
LCBTdXBlckJpbmRpbmcsIGludCBmdW5jdGlvbktleXdvcmRTdGFydCwgUGFyc2VyRnVuY3Rpb25J
bmZvPFRyZWVCdWlsZGVyPiYsIEZ1bmN0aW9uUGFyc2VUeXBlKTsKKyAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IE5FVkVSX0lOTElORSBib29sIHBhcnNlRnVuY3Rpb25JbmZvKFRyZWVC
dWlsZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVudHMsIFNvdXJjZVBhcnNlTW9kZSwgYm9vbCBuYW1l
SXNJbkNvbnRhaW5pbmdTY29wZSwgQ29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmcsIGludCBm
dW5jdGlvbktleXdvcmRTdGFydCwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYsIEZ1
bmN0aW9uUGFyc2VUeXBlKTsKICAgICAKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IE5FVkVSX0lOTElORSBpbnQgcGFyc2VGdW5jdGlvblBhcmFtZXRlcnMoVHJlZUJ1aWxkZXImLCBG
dW5jdGlvblBhcnNlTW9kZSwgUGFyc2VyRnVuY3Rpb25JbmZvPFRyZWVCdWlsZGVyPiYpOworICAg
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gTkVWRVJfSU5MSU5FIGludCBwYXJzZUZ1bmN0
aW9uUGFyYW1ldGVycyhUcmVlQnVpbGRlciYsIFNvdXJjZVBhcnNlTW9kZSwgUGFyc2VyRnVuY3Rp
b25JbmZvPFRyZWVCdWlsZGVyPiYpOwogCiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5UQVgpCiAg
ICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBORVZFUl9JTkxJTkUgVHJlZUNsYXNzRXhw
cmVzc2lvbiBwYXJzZUNsYXNzKFRyZWVCdWlsZGVyJiwgRnVuY3Rpb25SZXF1aXJlbWVudHMsIFBh
cnNlckNsYXNzSW5mbzxUcmVlQnVpbGRlcj4mKTsKQEAgLTEyNDcsNyArMTI0Nyw2IEBAIGNsYXNz
IFBhcnNlciB7CiAgICAgVmVjdG9yPFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4+IG1fY2xvc2Vk
VmFyaWFibGVzOwogICAgIENvZGVGZWF0dXJlcyBtX2ZlYXR1cmVzOwogICAgIGludCBtX251bUNv
bnN0YW50czsKLSAgICBKU1BhcnNlckNvZGVUeXBlIG1fY29kZVR5cGU7CiAgICAgCiAgICAgc3Ry
dWN0IERlcHRoTWFuYWdlciB7CiAgICAgICAgIERlcHRoTWFuYWdlcihpbnQqIGRlcHRoKQpAQCAt
MTI3MCw3ICsxMjY5LDcgQEAgY2xhc3MgUGFyc2VyIHsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIExl
eGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgotc3RkOjp1bmlxdWVfcHRyPFBh
cnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNv
bnN0IElkZW50aWZpZXImIGNhbGxlZU5hbWUsIEZ1bmN0aW9uUGFyc2VNb2RlIHBhcnNlTW9kZSwg
TW9kdWxlUGFyc2VNb2RlIG1vZHVsZVBhcnNlTW9kZSkKK3N0ZDo6dW5pcXVlX3B0cjxQYXJzZWRO
b2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2UoUGFyc2VyRXJyb3ImIGVycm9yLCBjb25zdCBJ
ZGVudGlmaWVyJiBjYWxsZWVOYW1lLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQogewogICAg
IGludCBlcnJMaW5lOwogICAgIFN0cmluZyBlcnJNc2c7CkBAIC0xMjg3LDcgKzEyODYsNyBAQCBz
dGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlKFBhcnNl
ckVycm9yJiBlcnJvciwgY29uc3QgSQogICAgIEFTU0VSVChtX3NvdXJjZS0+c3RhcnRDb2x1bW4o
KSA+IDApOwogICAgIHVuc2lnbmVkIHN0YXJ0Q29sdW1uID0gbV9zb3VyY2UtPnN0YXJ0Q29sdW1u
KCkgLSAxOwogCi0gICAgU3RyaW5nIHBhcnNlRXJyb3IgPSBwYXJzZUlubmVyKGNhbGxlZU5hbWUs
IHBhcnNlTW9kZSwgbW9kdWxlUGFyc2VNb2RlKTsKKyAgICBTdHJpbmcgcGFyc2VFcnJvciA9IHBh
cnNlSW5uZXIoY2FsbGVlTmFtZSwgcGFyc2VNb2RlKTsKIAogICAgIGludCBsaW5lTnVtYmVyID0g
bV9sZXhlci0+bGluZU51bWJlcigpOwogICAgIGJvb2wgbGV4RXJyb3IgPSBtX2xleGVyLT5zYXdF
cnJvcigpOwpAQCAtMTM1MywxOCArMTM1MiwxNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgUGFyc2VkTm9k
ZT4KIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICBWTSogdm0sIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwKICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBKU1BhcnNl
ckJ1aWx0aW5Nb2RlIGJ1aWx0aW5Nb2RlLAotICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RN
b2RlLCBKU1BhcnNlckNvZGVUeXBlIGNvZGVUeXBlLAorICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBz
dHJpY3RNb2RlLCBTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlLAogICAgIFBhcnNlckVycm9yJiBl
cnJvciwgSlNUZXh0UG9zaXRpb24qIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBudWxscHRy
LAotICAgIEZ1bmN0aW9uUGFyc2VNb2RlIHBhcnNlTW9kZSA9IE5vdEFGdW5jdGlvbk1vZGUsIENv
bnN0cnVjdG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kID0gQ29uc3RydWN0b3JLaW5kOjpO
b25lLAotICAgIFRoaXNURFpNb2RlIHRoaXNURFpNb2RlID0gVGhpc1REWk1vZGU6OkNoZWNrSWZO
ZWVkZWQsCi0gICAgTW9kdWxlUGFyc2VNb2RlIG1vZHVsZVBhcnNlTW9kZSA9IE1vZHVsZVBhcnNl
TW9kZTo6QW5hbHl6ZSkKKyAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENvbnN0cnVjdG9yS2lu
ZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwKKyAgICBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9
IFRoaXNURFpNb2RlOjpDaGVja0lmTmVlZGVkKQogewogICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBs
aW5nUmVnaW9uKCJQYXJzaW5nIik7CiAKICAgICBBU1NFUlQoIXNvdXJjZS5wcm92aWRlcigpLT5z
b3VyY2UoKS5pc051bGwoKSk7CiAgICAgaWYgKHNvdXJjZS5wcm92aWRlcigpLT5zb3VyY2UoKS5p
czhCaXQoKSkgewotICAgICAgICBQYXJzZXI8TGV4ZXI8TENoYXI+PiBwYXJzZXIodm0sIHNvdXJj
ZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIGNvZGVUeXBlLCBkZWZhdWx0Q29uc3RydWN0b3JL
aW5kLCB0aGlzVERaTW9kZSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBy
ZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5hbWUsIHBhcnNlTW9kZSwg
bW9kdWxlUGFyc2VNb2RlKTsKKyAgICAgICAgUGFyc2VyPExleGVyPExDaGFyPj4gcGFyc2VyKHZt
LCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBwYXJzZU1vZGUsIGRlZmF1bHRDb25z
dHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNl
ZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmFtZSwgcGFy
c2VNb2RlKTsKICAgICAgICAgaWYgKHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAg
ICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxh
c3ROZXdsaW5lKCk7CiAgICAgICAgIGlmIChidWlsdGluTW9kZSA9PSBKU1BhcnNlckJ1aWx0aW5N
b2RlOjpCdWlsdGluKSB7CkBAIC0xMzc2LDggKzEzNzQsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFy
c2VkTm9kZT4gcGFyc2UoCiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UoZGVmYXVsdENvbnN0cnVjdG9yS2luZCA9PSBDb25zdHJ1Y3RvcktpbmQ6
Ok5vbmUsICJCdWlsdGluRXhlY3V0YWJsZXM6OmNyZWF0ZURlZmF1bHRDb25zdHJ1Y3RvciBzaG91
bGQgYWx3YXlzIHVzZSBhIDgtYml0IHN0cmluZyIpOwotICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+
IHBhcnNlcih2bSwgc291cmNlLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgY29kZVR5cGUsIGRl
ZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1l
LCBwYXJzZU1vZGUsIG1vZHVsZVBhcnNlTW9kZSk7CisgICAgUGFyc2VyPExleGVyPFVDaGFyPj4g
cGFyc2VyKHZtLCBzb3VyY2UsIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCBwYXJzZU1vZGUsIGRl
ZmF1bHRDb25zdHJ1Y3RvcktpbmQsIHRoaXNURFpNb2RlKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yLCBuYW1l
LCBwYXJzZU1vZGUpOwogICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKQogICAgICAg
ICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3RO
ZXdsaW5lKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyTW9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyTW9kZXMuaAppbmRleCA0MjA0MzZlYTMwNmMxODQ5MDljMTg4NDQ5ZTg2ODU1NDlk
MjY0YjBiLi5hNjU2MDM4MDVhZGE5ODBjMzNmMzVkNmFjN2UyODJlZTUwZDU1NmUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlck1vZGVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJNb2Rlcy5oCkBAIC0zOCwyMiArMzgsODAg
QEAgZW51bSBjbGFzcyBKU1BhcnNlckNvZGVUeXBlIHsgUHJvZ3JhbSwgRnVuY3Rpb24sIE1vZHVs
ZSB9OwogZW51bSBjbGFzcyBDb25zdHJ1Y3RvcktpbmQgeyBOb25lLCBCYXNlLCBEZXJpdmVkIH07
CiBlbnVtIGNsYXNzIFN1cGVyQmluZGluZyB7IE5lZWRlZCwgTm90TmVlZGVkIH07CiBlbnVtIGNs
YXNzIFRoaXNURFpNb2RlIHsgQWx3YXlzQ2hlY2ssIENoZWNrSWZOZWVkZWQgfTsKLWVudW0gY2xh
c3MgTW9kdWxlUGFyc2VNb2RlIHsgQW5hbHl6ZSwgRXZhbHVhdGUgfTsKIAogZW51bSBQcm9maWxl
ck1vZGUgeyBQcm9maWxlck9mZiwgUHJvZmlsZXJPbiB9OwogZW51bSBEZWJ1Z2dlck1vZGUgeyBE
ZWJ1Z2dlck9mZiwgRGVidWdnZXJPbiB9OwogCiBlbnVtIEZ1bmN0aW9uTW9kZSB7IEZ1bmN0aW9u
RXhwcmVzc2lvbiwgRnVuY3Rpb25EZWNsYXJhdGlvbiB9OwogCi1lbnVtIEZ1bmN0aW9uUGFyc2VN
b2RlIHsKK2VudW0gY2xhc3MgU291cmNlUGFyc2VNb2RlIHsKICAgICBOb3JtYWxGdW5jdGlvbk1v
ZGUsCiAgICAgR2V0dGVyTW9kZSwKICAgICBTZXR0ZXJNb2RlLAogICAgIE1ldGhvZE1vZGUsCi0g
ICAgTm90QUZ1bmN0aW9uTW9kZSwKLSAgICBBcnJvd0Z1bmN0aW9uTW9kZQorICAgIEFycm93RnVu
Y3Rpb25Nb2RlLAorICAgIFByb2dyYW1Nb2RlLAorICAgIE1vZHVsZUFuYWx5emVNb2RlLAorICAg
IE1vZHVsZUV2YWx1YXRlTW9kZQogfTsKIAoraW5saW5lIGJvb2wgaXNGdW5jdGlvblBhcnNlTW9k
ZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2RlKQoreworICAgIHN3aXRjaCAocGFyc2VNb2RlKSB7
CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToKKyAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
U2V0dGVyTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZToKKyAgICBj
YXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJyb3dGdW5jdGlvbk1vZGU6CisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlOgorICAgIGNhc2Ug
U291cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFseXplTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNl
TW9kZTo6TW9kdWxlRXZhbHVhdGVNb2RlOgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
CitpbmxpbmUgYm9vbCBpc01vZHVsZVBhcnNlTW9kZShTb3VyY2VQYXJzZU1vZGUgcGFyc2VNb2Rl
KQoreworICAgIHN3aXRjaCAocGFyc2VNb2RlKSB7CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
Ok1vZHVsZUFuYWx5emVNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVFdmFs
dWF0ZU1vZGU6CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgY2FzZSBTb3VyY2VQYXJzZU1v
ZGU6Ok5vcm1hbEZ1bmN0aW9uTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVy
TW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZToKKyAgICBjYXNlIFNv
dXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZToKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXJy
b3dGdW5jdGlvbk1vZGU6CisgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OlByb2dyYW1Nb2RlOgor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitpbmxpbmUgYm9vbCBpc1Byb2dyYW1QYXJz
ZU1vZGUoU291cmNlUGFyc2VNb2RlIHBhcnNlTW9kZSkKK3sKKyAgICBzd2l0Y2ggKHBhcnNlTW9k
ZSkgeworICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpQcm9ncmFtTW9kZToKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2Rl
OgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlOgorICAgIGNhc2UgU291cmNl
UGFyc2VNb2RlOjpTZXR0ZXJNb2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpNZXRob2RN
b2RlOgorICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZToKKyAgICBj
YXNlIFNvdXJjZVBhcnNlTW9kZTo6TW9kdWxlQW5hbHl6ZU1vZGU6CisgICAgY2FzZSBTb3VyY2VQ
YXJzZU1vZGU6Ok1vZHVsZUV2YWx1YXRlTW9kZToKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsK
K30KKwogaW5saW5lIGJvb2wgZnVuY3Rpb25OYW1lSXNJblNjb3BlKGNvbnN0IElkZW50aWZpZXIm
IG5hbWUsIEZ1bmN0aW9uTW9kZSBmdW5jdGlvbk1vZGUpCiB7CiAgICAgaWYgKG5hbWUuaXNOdWxs
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1N5bnRheENoZWNr
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCmluZGV4
IGRkMjY4MDI3N2YwMjJiODY1ODQxZTRhM2NkMjA4Y2ZiZDIyMGM5MDIuLjA3NjBjMTllYjE2MzZk
YjIxYTE3OTYxMmE1NDk2ZTE5Y2ZkMWJiMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC04NCw3ICs4NCw3IEBAIGNsYXNzIFN5bnRheENoZWNr
ZXIgewogICAgICAgICBUZW1wbGF0ZVN0cmluZ1Jlc3VsdCwgVGVtcGxhdGVTdHJpbmdMaXN0UmVz
dWx0LAogICAgICAgICBUZW1wbGF0ZUV4cHJlc3Npb25MaXN0UmVzdWx0LCBUZW1wbGF0ZUV4cHIs
CiAgICAgICAgIFRhZ2dlZFRlbXBsYXRlRXhwciwKLSAgICAgICAgTW9kdWxlU3BlY2lmaWVyUmVz
dWx0LAorICAgICAgICBNb2R1bGVOYW1lUmVzdWx0LAogICAgICAgICBJbXBvcnRTcGVjaWZpZXJS
ZXN1bHQsIEltcG9ydFNwZWNpZmllckxpc3RSZXN1bHQsCiAgICAgICAgIEV4cG9ydFNwZWNpZmll
clJlc3VsdCwgRXhwb3J0U3BlY2lmaWVyTGlzdFJlc3VsdAogICAgIH07CkBAIC0xMjcsNyArMTI3
LDcgQEAgY2xhc3MgU3ludGF4Q2hlY2tlciB7CiAjaWYgRU5BQkxFKEVTNl9DTEFTU19TWU5UQVgp
CiAgICAgdHlwZWRlZiBpbnQgQ2xhc3NFeHByZXNzaW9uOwogI2VuZGlmCi0gICAgdHlwZWRlZiBp
bnQgTW9kdWxlU3BlY2lmaWVyOworICAgIHR5cGVkZWYgaW50IE1vZHVsZU5hbWU7CiAgICAgdHlw
ZWRlZiBpbnQgSW1wb3J0U3BlY2lmaWVyOwogICAgIHR5cGVkZWYgaW50IEltcG9ydFNwZWNpZmll
ckxpc3Q7CiAgICAgdHlwZWRlZiBpbnQgRXhwb3J0U3BlY2lmaWVyOwpAQCAtMTg2LDcgKzE4Niw3
IEBAIGNsYXNzIFN5bnRheENoZWNrZXIgewogICAgIENsYXNzRXhwcmVzc2lvbiBjcmVhdGVDbGFz
c0V4cHIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Np
b25UeXBlLCBFeHByZXNzaW9uVHlwZSwgUHJvcGVydHlMaXN0LCBQcm9wZXJ0eUxpc3QpIHsgcmV0
dXJuIENsYXNzRXhwcjsgfQogI2VuZGlmCiAgICAgRXhwcmVzc2lvblR5cGUgY3JlYXRlRnVuY3Rp
b25FeHByKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxT
eW50YXhDaGVja2VyPiYpIHsgcmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQotICAgIGludCBjcmVhdGVG
dW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1Y3RvcktpbmQsIHVu
c2lnbmVkLCBpbnQpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsgfQorICAgIGludCBjcmVh
dGVGdW5jdGlvbk1ldGFkYXRhKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVG9rZW5M
b2NhdGlvbiYsIGludCwgaW50LCBib29sLCBpbnQsIGludCwgaW50LCBDb25zdHJ1Y3RvcktpbmQs
IHVuc2lnbmVkLCBTb3VyY2VQYXJzZU1vZGUpIHsgcmV0dXJuIEZ1bmN0aW9uQm9keVJlc3VsdDsg
fQogICAgIEV4cHJlc3Npb25UeXBlIGNyZWF0ZUFycm93RnVuY3Rpb25FeHByKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIGNvbnN0IFBhcnNlckZ1bmN0aW9uSW5mbzxTeW50YXhDaGVja2VyPiYpIHsg
cmV0dXJuIEZ1bmN0aW9uRXhwcjsgfQogICAgIHZvaWQgc2V0RnVuY3Rpb25OYW1lU3RhcnQoaW50
LCBpbnQpIHsgfQogICAgIGludCBjcmVhdGVBcmd1bWVudHMoKSB7IHJldHVybiBBcmd1bWVudHNS
ZXN1bHQ7IH0KQEAgLTI1OSwxNSArMjU5LDE1IEBAIGNsYXNzIFN5bnRheENoZWNrZXIgewogICAg
IGludCBjcmVhdGVUaHJvd1N0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBpbnQsIGlu
dCwgaW50KSB7IHJldHVybiBTdGF0ZW1lbnRSZXN1bHQ7IH0KICAgICBpbnQgY3JlYXRlRGVidWdn
ZXIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBpbnQpIHsgcmV0dXJuIFN0YXRlbWVudFJl
c3VsdDsgfQogICAgIGludCBjcmVhdGVDb25zdFN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBpbnQsIGludCwgaW50KSB7IHJldHVybiBTdGF0ZW1lbnRSZXN1bHQ7IH0KLSAgICBpbnQg
Y3JlYXRlTW9kdWxlU3BlY2lmaWVyKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50
aWZpZXImKSB7IHJldHVybiBNb2R1bGVTcGVjaWZpZXJSZXN1bHQ7IH0KKyAgICBpbnQgY3JlYXRl
TW9kdWxlTmFtZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJikgeyBy
ZXR1cm4gTW9kdWxlTmFtZVJlc3VsdDsgfQogICAgIEltcG9ydFNwZWNpZmllciBjcmVhdGVJbXBv
cnRTcGVjaWZpZXIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYsIGNv
bnN0IElkZW50aWZpZXImKSB7IHJldHVybiBJbXBvcnRTcGVjaWZpZXJSZXN1bHQ7IH0KICAgICBJ
bXBvcnRTcGVjaWZpZXJMaXN0IGNyZWF0ZUltcG9ydFNwZWNpZmllckxpc3QoKSB7IHJldHVybiBJ
bXBvcnRTcGVjaWZpZXJMaXN0UmVzdWx0OyB9CiAgICAgdm9pZCBhcHBlbmRJbXBvcnRTcGVjaWZp
ZXIoSW1wb3J0U3BlY2lmaWVyTGlzdCwgSW1wb3J0U3BlY2lmaWVyKSB7IH0KLSAgICBpbnQgY3Jl
YXRlSW1wb3J0RGVjbGFyYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgSW1wb3J0U3BlY2lm
aWVyTGlzdCwgTW9kdWxlU3BlY2lmaWVyKSB7IHJldHVybiBTdGF0ZW1lbnRSZXN1bHQ7IH0KLSAg
ICBpbnQgY3JlYXRlRXhwb3J0QWxsRGVjbGFyYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
TW9kdWxlU3BlY2lmaWVyKSB7IHJldHVybiBTdGF0ZW1lbnRSZXN1bHQ7IH0KKyAgICBpbnQgY3Jl
YXRlSW1wb3J0RGVjbGFyYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgSW1wb3J0U3BlY2lm
aWVyTGlzdCwgTW9kdWxlTmFtZSkgeyByZXR1cm4gU3RhdGVtZW50UmVzdWx0OyB9CisgICAgaW50
IGNyZWF0ZUV4cG9ydEFsbERlY2xhcmF0aW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIE1vZHVs
ZU5hbWUpIHsgcmV0dXJuIFN0YXRlbWVudFJlc3VsdDsgfQogICAgIGludCBjcmVhdGVFeHBvcnRE
ZWZhdWx0RGVjbGFyYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50LCBjb25zdCBJZGVu
dGlmaWVyJikgeyByZXR1cm4gU3RhdGVtZW50UmVzdWx0OyB9CiAgICAgaW50IGNyZWF0ZUV4cG9y
dExvY2FsRGVjbGFyYXRpb24oY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgaW50KSB7IHJldHVybiBT
dGF0ZW1lbnRSZXN1bHQ7IH0KLSAgICBpbnQgY3JlYXRlRXhwb3J0TmFtZWREZWNsYXJhdGlvbihj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBvcnRTcGVjaWZpZXJMaXN0LCBNb2R1bGVTcGVjaWZp
ZXIpIHsgcmV0dXJuIFN0YXRlbWVudFJlc3VsdDsgfQorICAgIGludCBjcmVhdGVFeHBvcnROYW1l
ZERlY2xhcmF0aW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cG9ydFNwZWNpZmllckxpc3Qs
IE1vZHVsZU5hbWUpIHsgcmV0dXJuIFN0YXRlbWVudFJlc3VsdDsgfQogICAgIEV4cG9ydFNwZWNp
ZmllciBjcmVhdGVFeHBvcnRTcGVjaWZpZXIoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3Qg
SWRlbnRpZmllciYsIGNvbnN0IElkZW50aWZpZXImKSB7IHJldHVybiBFeHBvcnRTcGVjaWZpZXJS
ZXN1bHQ7IH0KICAgICBFeHBvcnRTcGVjaWZpZXJMaXN0IGNyZWF0ZUV4cG9ydFNwZWNpZmllckxp
c3QoKSB7IHJldHVybiBFeHBvcnRTcGVjaWZpZXJMaXN0UmVzdWx0OyB9CiAgICAgdm9pZCBhcHBl
bmRFeHBvcnRTcGVjaWZpZXIoRXhwb3J0U3BlY2lmaWVyTGlzdCwgRXhwb3J0U3BlY2lmaWVyKSB7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVDYWNoZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlQ2FjaGUuY3BwCmluZGV4IDEw
NDMxNmU4YjRhODRlMjA2MTdlYjA4YjBhNDBjOWRmNDMxNTZlMmEuLmFiNzBlYWJiOWUzYTJhMDQ1
MGM2MjllNzA1NjY2ZjRkY2NhMDFlMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvZGVDYWNoZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29kZUNhY2hlLmNwcApAQCAtOTQsOCArOTQsOCBAQCBVbmxpbmtlZENvZGVCbG9ja1R5cGUq
IENvZGVDYWNoZTo6Z2V0R2xvYmFsQ29kZUJsb2NrKFZNJiB2bSwgRXhlY3V0YWJsZVR5cGUqIGV4
ZQogCiAgICAgdHlwZWRlZiB0eXBlbmFtZSBDYWNoZVR5cGVzPFVubGlua2VkQ29kZUJsb2NrVHlw
ZT46OlJvb3ROb2RlIFJvb3ROb2RlOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxSb290Tm9kZT4gcm9v
dE5vZGUgPSBwYXJzZTxSb290Tm9kZT4oCi0gICAgICAgICZ2bSwgc291cmNlLCBJZGVudGlmaWVy
KCksIGJ1aWx0aW5Nb2RlLCBzdHJpY3RNb2RlLCAKLSAgICAgICAgSlNQYXJzZXJDb2RlVHlwZTo6
UHJvZ3JhbSwgZXJyb3IsIG51bGxwdHIsIEZ1bmN0aW9uUGFyc2VNb2RlOjpOb3RBRnVuY3Rpb25N
b2RlLCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHRoaXNURFpNb2RlKTsKKyAgICAgICAgJnZtLCBz
b3VyY2UsIElkZW50aWZpZXIoKSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsCisgICAgICAgIFNv
dXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsIGVycm9yLCBudWxscHRyLCBDb25zdHJ1Y3Rvcktp
bmQ6Ok5vbmUsIHRoaXNURFpNb2RlKTsKICAgICBpZiAoIXJvb3ROb2RlKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIApAQCAtMTQ1LDggKzE0NSw4IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiBDb2RlQ2FjaGU6OmdldEZ1bmN0aW9uRXhlY3V0YWJsZUZyb21HbG9iYWxDb2RlKFZNJiB2
CiAKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lOwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbSA9IHBhcnNlPFByb2dyYW1Ob2RlPigK
LSAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6
Tm90QnVpbHRpbiwgCi0gICAgICAgIEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCBKU1Bh
cnNlckNvZGVUeXBlOjpQcm9ncmFtLCAKKyAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIo
KSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKKyAgICAgICAgSlNQYXJzZXJTdHJp
Y3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJvZ3JhbU1vZGUsCiAgICAgICAg
IGVycm9yLCAmcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSk7CiAgICAgaWYgKCFwcm9ncmFtKSB7
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGVycm9yLmlzVmFsaWQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uY3BwCmluZGV4IGYyYTdmOWVkNmYwZWM3ZWNm
OWJhMzdmYjJjYzY3MTBmZjE1ZmNkOWUuLmEzZGFlZTYwMzQzYWMxNGIxNGFkMDMwNGViZGM5YTI1
YWFiMTU3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBs
ZXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24u
Y3BwCkBAIC01OSw4ICs1OSw4IEBAIGJvb2wgY2hlY2tTeW50YXgoVk0mIHZtLCBjb25zdCBTb3Vy
Y2VDb2RlJiBzb3VyY2UsIFBhcnNlckVycm9yJiBlcnJvcikKICAgICBKU0xvY2tIb2xkZXIgbG9j
ayh2bSk7CiAgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3RyaW5nVGFibGUoKSA9PSB3dGZU
aHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAgcmV0dXJuICEhcGFyc2U8UHJv
Z3JhbU5vZGU+KAotICAgICAgICAmdm0sIHNvdXJjZSwgSWRlbnRpZmllcigpLCBKU1BhcnNlckJ1
aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCAKLSAgICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RT
dHJpY3QsIEpTUGFyc2VyQ29kZVR5cGU6OlByb2dyYW0sIGVycm9yKTsKKyAgICAgICAgJnZtLCBz
b3VyY2UsIElkZW50aWZpZXIoKSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKKyAg
ICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJv
Z3JhbU1vZGUsIGVycm9yKTsKIH0KIAogYm9vbCBjaGVja01vZHVsZVN5bnRheChWTSYgdm0sIGNv
bnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgUGFyc2VyRXJyb3ImIGVycm9yKQpAQCAtNjksNyArNjks
NyBAQCBib29sIGNoZWNrTW9kdWxlU3ludGF4KFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291
cmNlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiAgICAgUkVMRUFTRV9BU1NFUlQodm0uYXRvbWljU3Ry
aW5nVGFibGUoKSA9PSB3dGZUaHJlYWREYXRhKCkuYXRvbWljU3RyaW5nVGFibGUoKSk7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPE1vZHVsZVByb2dyYW1Ob2RlPiBtb2R1bGVQcm9ncmFtTm9kZSA9IHBh
cnNlPE1vZHVsZVByb2dyYW1Ob2RlPigKICAgICAgICAgJnZtLCBzb3VyY2UsIElkZW50aWZpZXIo
KSwgSlNQYXJzZXJCdWlsdGluTW9kZTo6Tm90QnVpbHRpbiwKLSAgICAgICAgSlNQYXJzZXJTdHJp
Y3RNb2RlOjpTdHJpY3QsIEpTUGFyc2VyQ29kZVR5cGU6Ok1vZHVsZSwgZXJyb3IpOworICAgICAg
ICBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCwgU291cmNlUGFyc2VNb2RlOjpNb2R1bGVBbmFs
eXplTW9kZSwgZXJyb3IpOwogICAgIGlmICghbW9kdWxlUHJvZ3JhbU5vZGUpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmNwcAppbmRleCA5N2VmZGM3YTg0NmMyODVmMGUzYzJkMzMyMGMyZWJlZTFhYWE5NTdkLi4wYWIx
NjcyMTE2ODE5NGMxYTYwMjg5ZWI4NTZlOThjMGNmYTE3Yjc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcApAQCAtNDYyLDcgKzQ2Miw3IEBAIEpTT2Jq
ZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y2hlY2tTeW50YXgoRXhlY1N0YXRlKiBleGVjKQogICAg
IEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQcm9ncmFtTm9kZT4gcHJvZ3JhbU5vZGUg
PSBwYXJzZTxQcm9ncmFtTm9kZT4oCiAgICAgICAgIHZtLCBtX3NvdXJjZSwgSWRlbnRpZmllcigp
LCBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpOb3RCdWlsdGluLCAKLSAgICAgICAgSlNQYXJzZXJTdHJp
Y3RNb2RlOjpOb3RTdHJpY3QsIEpTUGFyc2VyQ29kZVR5cGU6OlByb2dyYW0sIGVycm9yKTsKKyAg
ICAgICAgSlNQYXJzZXJTdHJpY3RNb2RlOjpOb3RTdHJpY3QsIFNvdXJjZVBhcnNlTW9kZTo6UHJv
Z3JhbU1vZGUsIGVycm9yKTsKICAgICBpZiAocHJvZ3JhbU5vZGUpCiAgICAgICAgIHJldHVybiAw
OwogICAgIEFTU0VSVChlcnJvci5pc1ZhbGlkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9tb2R1bGVzLXN5bnRheC1lcnJvci13aXRoLW5hbWVzLmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9tb2R1bGVzLXN5bnRheC1lcnJv
ci13aXRoLW5hbWVzLmpzCmluZGV4IDA0MzFjMGE2MDQwYWExODBkYmFkYzU3MDE2MzQzNGNkYmFj
OTA3YTYuLmZhODEwM2EzMGI1ZmM2ZmYyYzA2MjY0OGExOWFlNDcyNmIyZTMxNmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvbW9kdWxlcy1zeW50YXgtZXJy
b3Itd2l0aC1uYW1lcy5qcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L21vZHVsZXMtc3ludGF4LWVycm9yLXdpdGgtbmFtZXMuanMKQEAgLTE4Nyw3ICsxODcsMTIgQEAg
ZnVuY3Rpb24gY2hlY2tNb2R1bGVTeW50YXhFcnJvcihzb3VyY2UsIGVycm9yTWVzc2FnZSkgewog
Y2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAogZXhwb3J0IGRlZmF1bHQgMjA7CiBl
eHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBoZWxsbyAoKSB7IH0KLWAsIGBTeW50YXhFcnJvcjogQ2Fu
bm90IGV4cG9ydCAnZGVmYXVsdCcgbmFtZSB0d2ljZS4uOjRgKTsKK2AsIGBTeW50YXhFcnJvcjog
T25seSBvbmUgJ2RlZmF1bHQnIGV4cG9ydCBpcyBhbGxvd2VkLjo0YCk7CisKK2NoZWNrTW9kdWxl
U3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2V4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGhlbGxvICgp
IHsgfQorZXhwb3J0IGRlZmF1bHQgMjA7CitgLCBgU3ludGF4RXJyb3I6IE9ubHkgb25lICdkZWZh
dWx0JyBleHBvcnQgaXMgYWxsb3dlZC46NGApOwogCiAvLyBGSVhNRTogVGhlc2UgdGVzdHMgYWxz
byBzaG91bGQgYmUgcGFzc2VkLiBCdXQgbm93LCB2YXIgYW5kIGxleGljYWwgZGVjbGFyZWQgbmFt
ZXMgY2FuIGJlIGNvLWV4aXN0IG9uIFNjcmlwdCAvIE1vZHVsZSB0b3AgbGV2ZWwgc2NvcGUuCiAv
LyBUaGlzIHdpbGwgYmUgZml4ZWQgd2hlbiB0aGlzIGlzc3VlIGlzIGZpeGVkIGZvciBTY3JpcHQg
ZW52aXJvbm1lbnQuCg==
</data>
<flag name="review"
          id="284113"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>