<?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>114406</bug_id>
          
          <creation_ts>2013-04-10 19:07:47 -0700</creation_ts>
          <short_desc>Calling console.{log, info, error, ...} should not require this === console</short_desc>
          <delta_ts>2013-04-10 23:57:04 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>20141</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Victor Costan">costan</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>873424</commentid>
    <comment_count>0</comment_count>
    <who name="Victor Costan">costan</who>
    <bug_when>2013-04-10 19:07:47 -0700</bug_when>
    <thetext>This is a bug for a patch that I will attach very soon.

In a nutshell, this change will make the code below not throw an exception:

f = console.log;
f(&quot;Hello world&quot;);

This comes in handy when debugging asynchronous code in the Web Inspector, because console.log can be passed as a callback that prints its arguments. For example, given a node.js-style asynchronous function perform(action, error, callback) can be called as follows in the Inspector, for quick debugging.

perform(action, console.warn, console.log);

In order to achieve this, the patch introduces the [LenientThis] WebKitIDL attribute, which is heavily inspired from the LenientThis WebIDL.
http://www.w3.org/TR/WebIDL/#LenientThis

I implemented LenientThis for methods.  I figured the only way to not require a specific type for &quot;this&quot; is to completely ignore the value, so a LenientThis method calls a static method in WebCore. A LenientMethod is similar to a static method, but it can be accessed as a property of the interface instances, instead of being a property of the interface object. I hope this makes sense, and I look forward to feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>873426</commentid>
    <comment_count>1</comment_count>
      <attachid>197464</attachid>
    <who name="Victor Costan">costan</who>
    <bug_when>2013-04-10 19:27:19 -0700</bug_when>
    <thetext>Created attachment 197464
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>873427</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-10 19:29:22 -0700</bug_when>
    <thetext>Attachment 197464 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/dom/Window/console-unbound-functions-expected.txt&apos;, u&apos;LayoutTests/fast/dom/Window/console-unbound-functions.html&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorJS.pm&apos;, u&apos;Source/WebCore/bindings/scripts/IDLAttributes.txt&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm&apos;, u&apos;Source/WebCore/bindings/scripts/test/TestObj.idl&apos;, u&apos;Source/WebCore/page/Console.cpp&apos;, u&apos;Source/WebCore/page/Console.h&apos;, u&apos;Source/WebCore/page/Console.idl&apos;]&quot; exit_code: 1
Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.h:188:  The parameter name &quot;str&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 18 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>873435</commentid>
    <comment_count>3</comment_count>
      <attachid>197464</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-04-10 19:44:52 -0700</bug_when>
    <thetext>Comment on attachment 197464
Patch

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

&gt; Source/WebCore/page/Console.idl:62
&gt; -    [CallWith=ScriptArguments|ScriptState] void clear();
&gt; +    [CallWith=ScriptArguments|ScriptState] static void clear();

Why is this different from the others? Was this an earlier syntax you had experimented with?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>873513</commentid>
    <comment_count>4</comment_count>
      <attachid>197499</attachid>
    <who name="Victor Costan">costan</who>
    <bug_when>2013-04-10 20:22:03 -0700</bug_when>
    <thetext>Created attachment 197499
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>873515</commentid>
    <comment_count>5</comment_count>
    <who name="Victor Costan">costan</who>
    <bug_when>2013-04-10 20:26:56 -0700</bug_when>
    <thetext>Darin, thank you so much for catching that! Yes, I tried static first, hoping it would work.

I&apos;m really sorry about this omission, I was so happy when I got the IDL generator working that I forgot to double-check my Console changes. :(

Also, should I worry about the style error in the generated code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>873517</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-10 20:31:30 -0700</bug_when>
    <thetext>Attachment 197499 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/dom/Window/console-unbound-functions-expected.txt&apos;, u&apos;LayoutTests/fast/dom/Window/console-unbound-functions.html&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/bindings/scripts/CodeGeneratorJS.pm&apos;, u&apos;Source/WebCore/bindings/scripts/IDLAttributes.txt&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp&apos;, u&apos;Source/WebCore/bindings/scripts/test/JS/JSTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.h&apos;, u&apos;Source/WebCore/bindings/scripts/test/ObjC/DOMTestObj.mm&apos;, u&apos;Source/WebCore/bindings/scripts/test/TestObj.idl&apos;, u&apos;Source/WebCore/page/Console.cpp&apos;, u&apos;Source/WebCore/page/Console.h&apos;, u&apos;Source/WebCore/page/Console.idl&apos;]&quot; exit_code: 1
Source/WebCore/bindings/scripts/test/CPP/WebDOMTestObj.h:188:  The parameter name &quot;str&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 18 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>873537</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-04-10 22:02:10 -0700</bug_when>
    <thetext>Is this the same as bug 20141?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>873540</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-04-10 22:04:51 -0700</bug_when>
    <thetext>If you agree, I think that it would be better to dupe this to older bug, and to move the patch there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>873578</commentid>
    <comment_count>9</comment_count>
    <who name="Victor Costan">costan</who>
    <bug_when>2013-04-10 23:37:09 -0700</bug_when>
    <thetext>Thank you for pointing this out, Alexey! Should I add the description of my patch as a comment in #20141?

*** This bug has been marked as a duplicate of bug 20141 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>873581</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-04-10 23:54:46 -0700</bug_when>
    <thetext>&gt; Should I add the description of my patch as a comment in #20141?

Sure, bug 20141 should have enough information to learn what&apos;s going on.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>197464</attachid>
            <date>2013-04-10 19:27:19 -0700</date>
            <delta_ts>2013-04-10 20:21:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-114406-20130410222659.patch</filename>
            <type>text/plain</type>
            <size>36676</size>
            <attacher name="Victor Costan">costan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0ODE1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDEzLTA0LTEwICBWaWN0b3Ig
Q29zdGFuICA8Y29zdGFuQGdtYWlsLmNvbT4KKworICAgICAgICBDYWxsaW5nIGNvbnNvbGUue2xv
ZywgaW5mbywgZXJyb3IsIC4uLn0gc2hvdWxkIG5vdCByZXF1aXJlIHRoaXMgPT09IGNvbnNvbGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDQwNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZh
c3QvZG9tL1dpbmRvdy9jb25zb2xlLXVuYm91bmQtZnVuY3Rpb25zLmh0bWwKKworICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOiBpbXBsZW1lbnRlZCB0aGUgW0xl
bmllbnRUaGlzXSBtZXRob2QgYXR0cmlidXRlCisgICAgICAgIChBZGRJbmNsdWRlc0ZvclR5cGVJ
bkltcGwpOiB3aGl0ZXNwYWNlIHJlbW92YWwKKyAgICAgICAgKEFkZEluY2x1ZGVzRm9yVHlwZUlu
SGVhZGVyKTogd2hpdGVzcGFjZSByZW1vdmFsCisgICAgICAgIChHZW5lcmF0ZUdldE93blByb3Bl
cnR5RGVzY3JpcHRvckJvZHkpOiB3aGl0ZXNwYWNlIHJlbW92YWwKKyAgICAgICAgKEdlbmVyYXRl
SGVhZGVyKTogW0xlbmllbnRUaGlzXSBtZXRob2RzIGFyZSBzdGF0aWMKKyAgICAgICAgKEdlbmVy
YXRlQXR0cmlidXRlc0hhc2hUYWJsZSk6IHdoaXRlc3BhY2UgcmVtb3ZhbAorICAgICAgICAoR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbik6IFtMZW5pZW50VGhpc10gbWV0aG9kIHNob3VsZCBiZSBpbnZv
a2VkIHVzaW5nIHRoZSBzdGF0aWMgbWV0aG9kIHN5bnRheAorICAgICAgICAoR2VuZXJhdGVQYXJh
bWV0ZXJzQ2hlY2spOiBbTGVuaWVudFRoaXNdIG1ldGhvZCBzaG91bGQgYmUgaW52b2tlZCB1c2lu
ZyB0aGUgc3RhdGljIG1ldGhvZCBzeW50YXggCisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0
aW9uRnVuY3Rpb25DYWxsKTogd2hpdGVzcGFjZSByZW1vdmFsCisgICAgICAgIChHZXRTVkdQcm9w
ZXJ0eVR5cGVzKTogd2hpdGVzcGFjZSByZW1vdmFsCisgICAgICAgIChHZW5lcmF0ZUhhc2hUYWJs
ZSk6IHdoaXRlc3BhY2UgcmVtb3ZhbAorICAgICAgICAoTWFrZXNTdGF0aWNDYWxsKTogcmV0dXJu
cyB0cnVlIGZvciBtZXRob2RzIHRoYXQgZ2VuZXJhdGUgc3RhdGljIGNhbGxzIGluIFdlYkNvcmUK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0OiBhZGRlZCB0aGUg
W0xlbmllbnRUaGlzXSBtZXRob2QgYXR0cmlidXRlCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcDogcmVnZW5lcmF0ZWQgdGVzdAorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oOiByZWdlbmVyYXRlZCB0
ZXN0CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVz
dE9iai5jcHA6IHJlZ2VuZXJhdGVkIHRlc3QKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmg6IHJlZ2VuZXJhdGVkIHRlc3QKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDogcmVnZW5lcmF0ZWQgdGVz
dAorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaDogcmVnZW5l
cmF0ZWQgdGVzdAorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RP
YmouaDogcmVnZW5lcmF0ZWQgdGVzdAorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9P
YmpDL0RPTVRlc3RPYmoubW06IHJlZ2VuZXJhdGVkIHRlc3QKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6IGFkZGVkIG1ldGhvZCB0aGF0IHRlc3RzIHRoZSBbTGVu
aWVudFRoaXNdIGF0dHJpYnV0ZQorICAgICAgICAqIHBhZ2UvQ29uc29sZS5jcHA6IG1hZGUgYSBi
dW5jaCBvZiBjb25zb2xlIG1ldGhvZHMgc3RhdGljCisgICAgICAgIChXZWJDb3JlOjpDb25zb2xl
OjpkZWJ1Zyk6IGJlY2FtZSBzdGF0aWMKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmVycm9y
KTogYmVjYW1lIHN0YXRpYworICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6bG9nKTogYmVjYW1l
IHN0YXRpYworICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6d2Fybik6IGJlY2FtZSBzdGF0aWMK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmRpcik6IGJlY2FtZSBzdGF0aWMKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnNvbGU6OmRpcnhtbCk6IGJlY2FtZSBzdGF0aWMKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnNvbGU6OnRhYmxlKTogYmVjYW1lIHN0YXRpYworICAgICAgICAoV2ViQ29yZTo6Q29u
c29sZTo6Y2xlYXIpOiBiZWNhbWUgc3RhdGljCisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjp0
cmFjZSk6IGJlY2FtZSBzdGF0aWMKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmNvdW50KTog
YmVjYW1lIHN0YXRpYworICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6cGFnZUZyb21TY3JpcHRT
dGF0ZSk6IHJlY292ZXJzIENvbnNvbGUgZGF0YSBmcm9tIHRoZSBTY3JpcHRTdGF0ZQorICAgICAg
ICAqIHBhZ2UvQ29uc29sZS5oOiBkZWNsYXJlZCB0aGUgbWV0aG9kcyBhYm92ZSB0byBiZSBzdGF0
aWMKKyAgICAgICAgKiBwYWdlL0NvbnNvbGUuaWRsOiBhZGRlZCB0aGUgW0xlbmllbnRUaGlzXSBh
dHRyaWJ1dGUgdG8gdGhlIGNvbnNvbGUgbWV0aG9kcyBsaXN0ZWQgYWJvdmUKKwogMjAxMy0wNC0x
MCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBNYXNz
IHJlbW92ZSBhbGwgdGhlIGVtcHR5IGRpcmVjdG9yaWVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMTQ4
MTA1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0JKHdvcmtpbmcgY29weSkKQEAgLTE4OCw5ICsxODgsOSBAQCBzdWIgQWRkSW5jbHVkZXNGb3JU
eXBlSW5JbXBsCiB7CiAgICAgbXkgJHR5cGUgPSBzaGlmdDsKICAgICBteSAkaXNDYWxsYmFjayA9
IEBfID8gc2hpZnQgOiAwOwotICAgIAorCiAgICAgQWRkSW5jbHVkZXNGb3JUeXBlKCR0eXBlLCAk
aXNDYWxsYmFjaywgXCVpbXBsSW5jbHVkZXMpOwotICAgIAorCiAgICAgIyBhZGRpdGlvbmFsIGlu
Y2x1ZGVzICh0aGluZ3MgbmVlZGVkIHRvIGNvbXBpbGUgdGhlIGJpbmRpbmdzIGJ1dCBub3QgdGhl
IGhlYWRlcikKICAgICBpZiAoJHR5cGUgZXEgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCIpIHsK
ICAgICAgICAgJGltcGxJbmNsdWRlc3siQ2FudmFzR3JhZGllbnQuaCJ9ID0gMTsKQEAgLTIxNSw3
ICsyMTUsNyBAQCBzdWIgQWRkSW5jbHVkZXNGb3JUeXBlSW5IZWFkZXIKIHsKICAgICBteSAkdHlw
ZSA9IHNoaWZ0OwogICAgIG15ICRpc0NhbGxiYWNrID0gQF8gPyBzaGlmdCA6IDA7Ci0gICAgCisK
ICAgICBBZGRJbmNsdWRlc0ZvclR5cGUoJHR5cGUsICRpc0NhbGxiYWNrLCBcJWhlYWRlckluY2x1
ZGVzKTsKIH0KIApAQCAtNDY0LDkgKzQ2NCw5IEBAIHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5
U2xvdEJvZHkKIHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5RGVzY3JpcHRvckJvZHkKIHsKICAg
ICBteSAoJGludGVyZmFjZSwgJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRoYXNBdHRyaWJ1
dGVzLCAkaW5saW5lZCkgPSBAXzsKLSAgICAKKwogICAgIG15ICRuYW1lc3BhY2VNYXliZSA9ICgk
aW5saW5lZCA/ICJKU0M6OiIgOiAiIik7Ci0gICAgCisKICAgICBteSBAZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9ySW1wbCA9ICgpOwogICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ2hlY2tTZWN1cml0eSJ9KSB7CiAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAi
RE9NV2luZG93IikgewpAQCAtNDc3LDEzICs0NzcsMTMgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yQm9keQogICAgICAgICB9CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICByZXR1cm4gZmFsc2U7XG4iKTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoJGlu
dGVyZmFjZU5hbWUgZXEgIk5hbWVkTm9kZU1hcCIgb3IgJGludGVyZmFjZU5hbWUgPX4gL15IVE1M
XHcqQ29sbGVjdGlvbiQvKSB7CiAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRv
ckltcGwsICIgICAgJHtuYW1lc3BhY2VNYXliZX1KU1ZhbHVlIHByb3RvID0gdGhpc09iamVjdC0+
cHJvdG90eXBlKCk7XG4iKTsKICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
SW1wbCwgIiAgICBpZiAocHJvdG8uaXNPYmplY3QoKSAmJiBqc0Nhc3Q8JHtuYW1lc3BhY2VNYXli
ZX1KU09iamVjdCo+KGFzT2JqZWN0KHByb3RvKSktPmhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5
TmFtZSkpXG4iKTsKICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ySW1wbCwg
IiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4iKTsKICAgICB9Ci0gICAgCisKICAgICBteSAkbWFu
dWFsTG9va3VwR2V0dGVyR2VuZXJhdGlvbiA9IHN1YiB7CiAgICAgICAgIG15ICRyZXF1aXJlc01h
bnVhbExvb2t1cCA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbmRleGVkR2V0
dGVyIn0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVkR2V0dGVyIn07
CiAgICAgICAgIGlmICgkcmVxdWlyZXNNYW51YWxMb29rdXApIHsKQEAgLTU1OCw3ICs1NTgsNyBA
QCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JCb2R5CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ySW1wbCwgIiAgICByZXR1cm4g
QmFzZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgZGVzY3JpcHRvcik7XG4iKTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gQGdldE93
blByb3BlcnR5RGVzY3JpcHRvckltcGw7CiB9CiAKQEAgLTY5NSw3ICs2OTUsNyBAQCBzdWIgR2Vu
ZXJhdGVIZWFkZXIKICAgICAgICAgICAgICRoZWFkZXJJbmNsdWRlc3siJGludGVyZmFjZU5hbWUu
aCJ9ID0gMTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgICRoZWFkZXJJbmNsdWRlc3si
PHJ1bnRpbWUvSlNPYmplY3QuaD4ifSA9IDE7CiAgICAgJGhlYWRlckluY2x1ZGVzeyJTVkdFbGVt
ZW50LmgifSA9IDEgaWYgJGNsYXNzTmFtZSA9fiAvXkpTU1ZHLzsKIApAQCAtNzg3LDcgKzc4Nyw3
IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiTnVtZXJpY0luZGV4ZWRHZXR0ZXIifQogICAgICAgICB8fCAkaW50ZXJmYWNl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RBbmREZXNj
cmlwdG9yIn0KICAgICAgICAgfHwgJGhhc0ltcHVyZU5hbWVkR2V0dGVyOwotICAgIAorCiAgICAg
bXkgJGhhc0dldHRlciA9ICRudW1BdHRyaWJ1dGVzID4gMCB8fCAhJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Ik9taXRDb25zdHJ1Y3RvciJ9IHx8ICRoYXNDb21wbGV4R2V0dGVyOwog
CiAgICAgaWYgKCRoYXNJbXB1cmVOYW1lZEdldHRlcikgewpAQCAtODE3LDcgKzgxNyw3IEBAIHN1
YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ3VzdG9tUHV0RnVuY3Rpb24ifQogICAgICAgICB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ3VzdG9tTmFtZWRTZXR0ZXIifQogICAgICAgICB8fCAkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tSW5kZXhlZFNldHRlciJ9OwotICAgICAgICAKKwog
ICAgIG15ICRoYXNTZXR0ZXIgPSAkaGFzUmVhZFdyaXRlUHJvcGVydGllcyB8fCAkaGFzQ29tcGxl
eFNldHRlcjsKIAogICAgICMgR2V0dGVycwpAQCAtODcwLDcgKzg3MCw3IEBAIHN1YiBHZW5lcmF0
ZUhlYWRlcgogICAgICMgQ3VzdG9tIGdldE93blByb3BlcnR5TmFtZXMgZnVuY3Rpb24KICAgICBp
ZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUVudW1lcmF0ZVByb3Bl
cnR5In0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkluZGV4ZWRHZXR0ZXIi
fSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTnVtZXJpY0luZGV4ZWRHZXR0
ZXIifSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdl
dE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQ
cm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlIG1vZGUgPSBKU0M6OkV4Y2x1
ZGVEb250RW51bVByb3BlcnRpZXMpO1xuIik7Ci0gICAgICAgICRzdHJ1Y3R1cmVGbGFnc3siSlND
OjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIn0gPSAxOyAgICAgICAKKyAgICAgICAgJHN0cnVj
dHVyZUZsYWdzeyJKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMifSA9IDE7CiAgICAgfQog
CiAgICAgIyBDdXN0b20gZGVmaW5lT3duUHJvcGVydHkgZnVuY3Rpb24KQEAgLTk0MSw3ICs5NDEs
NyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmlu
ZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRmdW5jdGlvbi0+
c2lnbmF0dXJlKTsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjaWYgJHtjb25k
aXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgICAgIG15
ICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRBcyJ9IHx8ICRjb2RlR2VuZXJhdG9yLT5XS19s
Y2ZpcnN0KCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lKTsKLSAgICAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgIiAuICgkZnVuY3Rpb24tPmlzU3RhdGljID8gInN0YXRpYyAiIDog
IiIpIC4gIkpTQzo6SlNWYWx1ZSAiIC4gJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lIC4gIihK
U0M6OkV4ZWNTdGF0ZSopO1xuIik7CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgICIgLiAoTWFrZXNTdGF0aWNDYWxsKCRmdW5jdGlvbikgPyAic3RhdGljICIgOiAiIikgLiAi
SlNDOjpKU1ZhbHVlICIgLiAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUgLiAiKEpTQzo6RXhl
Y1N0YXRlKik7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjZW5kaWZc
biIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgfQogICAgIH0KQEAgLTEwNzIsNyAr
MTA3Miw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIGlmICgkdXNlc1RvSlNOZXdseUNyZWF0
ZWR7JGludGVyZmFjZU5hbWV9KSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJKU0M6
OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0KiwgJGludGVyZmFjZU5hbWUqKTtcbiIpOwogICAgIH0KLSAgICAKKwogICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICJcbiIpOwogCiAgICAgIyBBZGQgcHJvdG90eXBlIGRlY2xhcmF0aW9uLgpA
QCAtMTE1Niw3ICsxMTU2LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9u
YWxTdHJpbmc7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKCEkaW50ZXJmYWNl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT21pdENvbnN0cnVjdG9yIn0pIHsKICAgICAgICAgICAg
IG15ICRnZXR0ZXIgPSAianMiIC4gJGludGVyZmFjZU5hbWUgLiAiQ29uc3RydWN0b3IiOwogICAg
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkpTQzo6SlNWYWx1ZSAke2dldHRlcn0oSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTtcbiIpOwpAQCAt
MTE4Nyw3ICsxMTg3LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgIyAtIEdlbmVyYXRlIGRl
cGVuZGVuY2llcy4KICAgICBpZiAoJHdyaXRlRGVwZW5kZW5jaWVzICYmIEBhbmNlc3RvckludGVy
ZmFjZU5hbWVzKSB7CiAgICAgICAgIHB1c2goQGRlcHNDb250ZW50LCAiJGNsYXNzTmFtZS5oIDog
Iiwgam9pbigiICIsIG1hcCB7ICIkXy5pZGwiIH0gQGFuY2VzdG9ySW50ZXJmYWNlTmFtZXMpLCAi
XG4iKTsKLSAgICAgICAgcHVzaChAZGVwc0NvbnRlbnQsIG1hcCB7ICIkXy5pZGwgOlxuIiB9IEBh
bmNlc3RvckludGVyZmFjZU5hbWVzKTsgCisgICAgICAgIHB1c2goQGRlcHNDb250ZW50LCBtYXAg
eyAiJF8uaWRsIDpcbiIgfSBAYW5jZXN0b3JJbnRlcmZhY2VOYW1lcyk7CiAgICAgfQogfQogCkBA
IC0xMTk4LDcgKzExOTgsNyBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVzSGFzaFRhYmxlKCQkKQog
ICAgICMgRklYTUU6IFRoZXNlIHNob3VsZCBiZSBmdW5jdGlvbnMgb24gJGludGVyZmFjZS4KICAg
ICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPm5hbWU7CiAgICAgbXkgJGNsYXNzTmFt
ZSA9ICJKUyRpbnRlcmZhY2VOYW1lIjsKLSAgICAKKwogICAgICMgLSBBZGQgYWxsIGF0dHJpYnV0
ZXMgaW4gYSBoYXNodGFibGUgZGVmaW5pdGlvbgogICAgIG15ICRudW1BdHRyaWJ1dGVzID0gQHsk
aW50ZXJmYWNlLT5hdHRyaWJ1dGVzfTsKICAgICAkbnVtQXR0cmlidXRlcysrIGlmICEkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT21pdENvbnN0cnVjdG9yIn07CkBAIC0xMjUyLDcg
KzEyNTIsNyBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVzSGFzaFRhYmxlKCQkKQogICAgICAgICAg
ICAgbXkgJHNldHRlciA9ICJzZXRKUyIgLiAkaW50ZXJmYWNlTmFtZSAuICJDb25zdHJ1Y3RvciI7
CiAgICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUyLCAkc2V0dGVyKTsKICAgICAgICAgICAgIHB1
c2goQGhhc2hTcGVjaWFscywgIkRvbnRFbnVtIHwgRG9udERlbGV0ZSIpOwotICAgICAgICB9IGVs
c2UgeyAgICAgICAgICAgIAorICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHVzaChAaGFz
aFZhbHVlMiwgIjAiKTsKICAgICAgICAgICAgIHB1c2goQGhhc2hTcGVjaWFscywgIkRvbnRFbnVt
IHwgUmVhZE9ubHkiKTsKICAgICAgICAgfQpAQCAtMTYwMyw3ICsxNjAzLDcgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFz
c05hbWV9UHJvdG90eXBlKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfVByb3RvdHlw
ZSo+KGNlbGwpO1xuIik7CiAKICAgICAgICAgaWYgKCRudW1Db25zdGFudHMgZXEgMCAmJiAkbnVt
RnVuY3Rpb25zIGVxIDApIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90KTtcbiIpOyAgICAgICAgCisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKICAgICAgICAgfSBlbHNpZiAoJG51bUNvbnN0YW50cyBl
cSAwKSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0U3Rh
dGljRnVuY3Rpb25TbG90PEpTT2JqZWN0PihleGVjLCAiIC4gcHJvdG90eXBlSGFzaFRhYmxlQWNj
ZXNzb3IoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTTm9TdGF0aWNUYWJsZXMi
fSwgJGNsYXNzTmFtZSkgLiAiLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7
CiAgICAgICAgIH0gZWxzaWYgKCRudW1GdW5jdGlvbnMgZXEgMCkgewpAQCAtMTYxOCw3ICsxNjE4
LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgJHtjbGFzc05hbWV9UHJvdG90eXBlKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xh
c3NOYW1lfVByb3RvdHlwZSo+KG9iamVjdCk7XG4iKTsKIAogICAgICAgICBpZiAoJG51bUNvbnN0
YW50cyBlcSAwICYmICRudW1GdW5jdGlvbnMgZXEgMCkgewotICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpO1xuIik7ICAgICAgICAKKyAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9y
KTtcbiIpOwogICAgICAgICB9IGVsc2lmICgkbnVtQ29uc3RhbnRzIGVxIDApIHsKICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvbkRlc2Ny
aXB0b3I8SlNPYmplY3Q+KGV4ZWMsICIgLiBwcm90b3R5cGVIYXNoVGFibGVBY2Nlc3NvcigkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNOb1N0YXRpY1RhYmxlcyJ9LCAkY2xhc3NO
YW1lKSAuICIsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7XG4iKTsKICAg
ICAgICAgfSBlbHNpZiAoJG51bUZ1bmN0aW9ucyBlcSAwKSB7CkBAIC0xNzE5LDcgKzE3MTksNyBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIH0KIAogICAgIGlmICghJGhhc1BhcmVu
dCkgewotICAgICAgICAjIEZJWE1FOiBUaGlzIGRlc3Ryb3kgZnVuY3Rpb24gc2hvdWxkIG5vdCBi
ZSBuZWNlc3NhcnksIGFzIAorICAgICAgICAjIEZJWE1FOiBUaGlzIGRlc3Ryb3kgZnVuY3Rpb24g
c2hvdWxkIG5vdCBiZSBuZWNlc3NhcnksIGFzCiAgICAgICAgICMgYSBmaW5hbGl6ZXIgc2hvdWxk
IGJlIGNhbGxlZCBmb3IgZWFjaCBET00gb2JqZWN0IHdyYXBwZXIuCiAgICAgICAgICMgSG93ZXZl
ciwgdGhhdCBzZWVtcyBub3QgdG8gYmUgdGhlIGNhc2UsIHNvIHRoaXMgaGFzIGJlZW4KICAgICAg
ICAgIyBhZGRlZCBiYWNrIHRvIGF2b2lkIGxlYWtpbmcgd2hpbGUgd2UgZmlndXJlIG91dCB3aHkg
dGhlCkBAIC0xNzQwLDcgKzE3NDAsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
IH0KIAogICAgIG15ICRoYXNHZXR0ZXIgPSAkbnVtQXR0cmlidXRlcyA+IDAKLSAgICAgICAgICAg
ICAgICAgfHwgISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPbWl0Q29uc3RydWN0
b3IifSAKKyAgICAgICAgICAgICAgICAgfHwgISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJPbWl0Q29uc3RydWN0b3IifQogICAgICAgICAgICAgICAgICB8fCAkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW5kZXhlZEdldHRlciJ9CiAgICAgICAgICAgICAgICAgIHx8
ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOdW1lcmljSW5kZXhlZEdldHRlciJ9
CiAgICAgICAgICAgICAgICAgIHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJK
U0N1c3RvbUdldE93blByb3BlcnR5U2xvdEFuZERlc2NyaXB0b3IifQpAQCAtMjAyOCw3ICsyMDI4
LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNsb3QpO1xuIik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKLSAgICAgICAgICAgICAgICAKKwogICAg
ICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
SW5kZXhlZFNldHRlciJ9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0
b21OYW1lZFNldHRlciJ9KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAidm9pZCAke2NsYXNzTmFtZX06OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KVxu
Iik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CkBAIC0y
MDQxLDE0ICsyMDQxLDE0IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAg
ICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVk
U2V0dGVyIn0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGlu
ZGV4KTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2hvdWxkVGhyb3cpO1xuIik7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAodGhpc09iamVjdC0+cHV0RGVs
ZWdhdGUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpXG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKICAg
ICAgICAgICAgICAgICAgICAgfQotICAgIAorCiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIEJhc2U6OnB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgaW5kZXgsIHZhbHVl
LCBzaG91bGRUaHJvdyk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ9XG5cbiIpOwogICAgICAgICAgICAgICAgIH0KQEAgLTIyMzMsNyArMjIzMyw3IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIGRpZSAiTm8gd2F5
IHRvIGhhbmRsZSBpbnRlcmZhY2Ugd2l0aCBSZXBsYWNlYWJsZUNvbnN0cnVjdG9yIGV4dGVuZGVk
IGF0dHJpYnV0ZTogJGludGVyZmFjZU5hbWUiOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Ci0gICAgICAgICAgICB9ICAgICAg
ICAKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtMjI5MCw3ICsyMjkwLDcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgJGltcGxJbmNsdWRl
c3siPHJ1bnRpbWUvRXJyb3IuaD4ifSA9IDE7CiAKLSAgICAgICAgICAgIGlmICgkZnVuY3Rpb24t
PmlzU3RhdGljKSB7CisgICAgICAgICAgICBpZiAoTWFrZXNTdGF0aWNDYWxsKCRmdW5jdGlvbikp
IHsKICAgICAgICAgICAgICAgICBpZiAoJGlzQ3VzdG9tKSB7CiAgICAgICAgICAgICAgICAgICAg
IEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjayhcQGltcGxDb250ZW50LCAkZnVuY3Rpb24sICRp
bnRlcmZhY2UpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKCR7Y2xhc3NOYW1lfTo6IiAuICRmdW5jdGlvbkltcGxlbWVu
dGF0aW9uTmFtZSAuICIoZXhlYykpO1xuIik7CkBAIC0yNjY5LDkgKzI2NjksOSBAQCBzdWIgR2Vu
ZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRmdW5jdGlvbi0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9OwogICAgIGlm
ICgkaW1wbGVtZW50ZWRCeSkgewogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiJHtpbXBsZW1l
bnRlZEJ5fS5oIik7Ci0gICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgImltcGwiKSBpZiAhJGZ1
bmN0aW9uLT5pc1N0YXRpYzsKKyAgICAgICAgdW5zaGlmdChAYXJndW1lbnRzLCAiaW1wbCIpIGlm
ICFNYWtlc1N0YXRpY0NhbGwoJGZ1bmN0aW9uKTsKICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICIk
e2ltcGxlbWVudGVkQnl9Ojoke2Z1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lfSI7Ci0gICAgfSBl
bHNpZiAoJGZ1bmN0aW9uLT5pc1N0YXRpYykgeworICAgIH0gZWxzaWYgKE1ha2VzU3RhdGljQ2Fs
bCgkZnVuY3Rpb24pKSB7CiAgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiJHtpbnRlcmZhY2VOYW1l
fTo6JHtmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZX0iOwogICAgIH0gZWxzaWYgKCRzdmdQcm9w
ZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSBhbmQgISRzdmdMaXN0UHJvcGVydHlUeXBlKSB7CiAgICAg
ICAgICRmdW5jdGlvbk5hbWUgPSAicG9kSW1wbC4ke2Z1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1l
fSI7CkBAIC0zMDU0LDcgKzMwNTQsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0
aW9uQ2FsbCgpCiAKICAgICAgICAgaWYgKCRzdmdQcm9wZXJ0eVR5cGUgYW5kICEkZnVuY3Rpb24t
PmlzU3RhdGljKSB7CiAgICAgICAgICAgICBpZiAoQHskZnVuY3Rpb24tPnJhaXNlc0V4Y2VwdGlv
bnN9KSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiaWYg
KCFlYylcbiIpOyAKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAu
ICJpZiAoIWVjKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRl
bnQgLiAiICAgIGltcGwtPmNvbW1pdENoYW5nZSgpO1xuIik7CiAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gImltcGwtPmNv
bW1pdENoYW5nZSgpO1xuIik7CkBAIC0zMTA3LDcgKzMxMDcsNyBAQCBteSAlbmF0aXZlVHlwZSA9
ICgKICAgICAibG9uZyBsb25nIiA9PiAibG9uZyBsb25nIiwKICAgICAidW5zaWduZWQgbG9uZyBs
b25nIiA9PiAidW5zaWduZWQgbG9uZyBsb25nIiwKICAgICAiTWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ciIgPT4gIlJlZlB0cjxNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiIsCi0gICAgIkRPTVRpbWVTdGFt
cCIgPT4gIkRPTVRpbWVTdGFtcCIsICAgIAorICAgICJET01UaW1lU3RhbXAiID0+ICJET01UaW1l
U3RhbXAiLAogKTsKIAogc3ViIEdldE5hdGl2ZVR5cGUKQEAgLTMxNjAsNyArMzE2MCw3IEBAIHN1
YiBHZXRTVkdQcm9wZXJ0eVR5cGVzCiAgICAgbXkgJHN2Z05hdGl2ZVR5cGU7CiAKICAgICByZXR1
cm4gKCRzdmdQcm9wZXJ0eVR5cGUsICRzdmdMaXN0UHJvcGVydHlUeXBlLCAkc3ZnTmF0aXZlVHlw
ZSkgaWYgbm90ICRpbXBsVHlwZSA9fiAvU1ZHLzsKLSAgICAKKwogICAgICRzdmdOYXRpdmVUeXBl
ID0gJGNvZGVHZW5lcmF0b3ItPkdldFNWR1R5cGVOZWVkaW5nVGVhck9mZigkaW1wbFR5cGUpOwog
ICAgIHJldHVybiAoJHN2Z1Byb3BlcnR5VHlwZSwgJHN2Z0xpc3RQcm9wZXJ0eVR5cGUsICRzdmdO
YXRpdmVUeXBlKSBpZiBub3QgJHN2Z05hdGl2ZVR5cGU7CiAKQEAgLTM1MzAsNyArMzUzMCw3IEBA
IHN1YiBHZW5lcmF0ZUhhc2hUYWJsZQogICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5n
ID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmdGcm9tQXR0cmlidXRl
VmFsdWUoJGNvbmRpdGlvbmFsKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lm
ICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAg
ICBpZiAoIkAkc3BlY2lhbHNbJGldIiA9fiBtL0Z1bmN0aW9uLykgewogICAgICAgICAgICAgJHRh
cmdldFR5cGUgPSAic3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+IjsKICAgICAgICAgfSBlbHNl
IHsKQEAgLTQwOTAsNiArNDA5MCwxMiBAQCBzdWIgSGFzQ3VzdG9tTWV0aG9kCiAgICAgcmV0dXJu
ICRhdHRyRXh0LT57IkN1c3RvbSJ9IHx8ICRhdHRyRXh0LT57IkpTQ3VzdG9tIn07CiB9CiAKK3N1
YiBNYWtlc1N0YXRpY0NhbGwKK3sKKyAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKKyAgICByZXR1
cm4gJGZ1bmN0aW9uLT5pc1N0YXRpYyB8fCAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkxlbmllbnRUaGlzIn07Cit9CisKIHN1YiBJc0NvbnN0cnVjdGFibGUKIHsK
ICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQJKHJldmlzaW9uIDE0ODEwNSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTg3LDYgKzg3LDcgQEAgSlNJbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QKIEpT
TGVnYWN5UGFyZW50PSoKIEpTTm9TdGF0aWNUYWJsZXMKIEpTV2luZG93RXZlbnRMaXN0ZW5lcgor
TGVuaWVudFRoaXMKIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQKIE5hbWVkQ29uc3RydWN0b3I9Kgog
TmFtZWRHZXR0ZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0T2JqLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdE9iai5pZGwJKHJldmlzaW9uIDE0ODEwNSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDEx
ICsxMDAsMTEgQEAgZW51bSBUZXN0RW51bVR5cGUgeyAiIiwgIkVudW1WYWx1ZTEiLCAiRQogICAg
IFtDdXN0b21dIHZvaWQgY3VzdG9tTWV0aG9kKCk7CiAgICAgW0N1c3RvbV0gdm9pZCBjdXN0b21N
ZXRob2RXaXRoQXJncyhpbiBsb25nIGxvbmdBcmcsIGluIERPTVN0cmluZyBzdHJBcmcsIGluIFRl
c3RPYmogb2JqQXJnKTsKIAotICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcg
dHlwZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVu
ZXIsIAorICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOwotICAg
IHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwgCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIAorICAgIHZvaWQg
cmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOwogCiAgICAgLy8g
J0NhbGxXaXRoJyBleHRlbmRlZCBhdHRyaWJ1dGUKQEAgLTE3MSw3ICsxNzEsNyBAQCBlbnVtIFRl
c3RFbnVtVHlwZSB7ICIiLCAiRW51bVZhbHVlMSIsICJFCiAgICAgW0NhY2hlZEF0dHJpYnV0ZV0g
cmVhZG9ubHkgYXR0cmlidXRlIGFueSBjYWNoZWRBdHRyaWJ1dGUxOwogICAgIFtDYWNoZWRBdHRy
aWJ1dGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBhbnkgY2FjaGVkQXR0cmlidXRlMjsKICNlbmRpZgot
ICAgIAorCiAgICAgYXR0cmlidXRlIGFueSBhbnlBdHRyaWJ1dGU7CiAKICNpZiBkZWZpbmVkKFRF
U1RJTkdfSlMpCkBAIC0xOTQsNiArMTk0LDkgQEAgZW51bSBUZXN0RW51bVR5cGUgeyAiIiwgIkVu
dW1WYWx1ZTEiLCAiRQogICAgIHN0YXRpYyBsb25nIGNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKGlu
IFtPcHRpb25hbF0gbG9uZyBhcmcpOwogICAgIFtDdXN0b21dIHN0YXRpYyB2b2lkIGNsYXNzTWV0
aG9kMihpbiBsb25nIGFyZyk7CiAKKyAgICAvLyBTdGF0aWMgbWV0aG9kcyBkZWZpbmVkIG9uIGlu
c3RhbmNlcyAobGlrZSBjb25zb2xlLmxvZykuCisgICAgW0xlbmllbnRUaGlzXSB2b2lkIGxlbmll
bnRUaGlzTWV0aG9kKGluIERPTVN0cmluZyBzdHIpOworCiAgICAgLy8gU3RhdGljIG1ldGhvZCB3
aXRoIGNvbmRpdGlvbmFsIG9uIG92ZXJsb2FkZWQgbWV0aG9kcwogICAgIFtDb25kaXRpb25hbD1D
b25kaXRpb24xXSBzdGF0aWMgdm9pZCBvdmVybG9hZGVkTWV0aG9kMShpbiBsb25nIGFyZyk7CiAg
ICAgW0NvbmRpdGlvbmFsPUNvbmRpdGlvbjFdIHN0YXRpYyB2b2lkIG92ZXJsb2FkZWRNZXRob2Qx
KGluIFtTdHJpY3RUeXBlQ2hlY2tpbmddIERPTVN0cmluZyB0eXBlKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01U
ZXN0T2JqLmNwcAkocmV2aXNpb24gMTQ4MTA1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQ4
LDYgKzk0OCwxNCBAQCBpbnQgV2ViRE9NVGVzdE9iajo6Y2xhc3NNZXRob2RXaXRoT3B0aW9uCiAg
ICAgcmV0dXJuIGltcGwoKS0+Y2xhc3NNZXRob2RXaXRoT3B0aW9uYWwoYXJnKTsKIH0KIAordm9p
ZCBXZWJET01UZXN0T2JqOjpsZW5pZW50VGhpc01ldGhvZChjb25zdCBXZWJET01TdHJpbmcmIHN0
cikKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW1wbCgpLT5s
ZW5pZW50VGhpc01ldGhvZChzdHIpOworfQorCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKIHZv
aWQgV2ViRE9NVGVzdE9iajo6b3ZlcmxvYWRlZE1ldGhvZDEoaW50IGFyZykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9N
VGVzdE9iai5oCShyZXZpc2lvbiAxNDgxMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaAkod29ya2luZyBjb3B5KQpAQCAtMTg1LDYg
KzE4NSw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIHZvaWQgY2xhc3NNZXRob2QoKTsKICAgICBp
bnQgY2xhc3NNZXRob2RXaXRoT3B0aW9uYWwoaW50IGFyZyk7CisgICAgdm9pZCBsZW5pZW50VGhp
c01ldGhvZChjb25zdCBXZWJET01TdHJpbmcmIHN0cik7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEp
CiAgICAgdm9pZCBvdmVybG9hZGVkTWV0aG9kMShpbnQgYXJnKTsKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9i
ai5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAJKHJldmlzaW9uIDE0ODEwNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmou
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUyLDYgKzEzNTIsMTcgQEAgd2Via2l0X2RvbV90ZXN0
X29ial9jbGFzc19tZXRob2Rfd2l0aF9vcAogfQogCiB2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X2xlbmllbnRfdGhpc19tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgY29uc3QgZ2NoYXIq
IHN0cikKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAg
Z19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpKTsKKyAgICBnX3Jl
dHVybl9pZl9mYWlsKHN0cik7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKKyAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRTdHIgPSBXVEY6OlN0cmluZzo6
ZnJvbVVURjgoc3RyKTsKKyAgICBpdGVtLT5sZW5pZW50VGhpc01ldGhvZChjb252ZXJ0ZWRTdHIp
OworfQorCit2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX292ZXJsb2FkZWRfbWV0aG9kMShXZWJL
aXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyBhcmcpCiB7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJL
aXRET01UZXN0T2JqLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCShyZXZpc2lvbiAxNDgxMDUpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01U
ZXN0T2JqLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4MCw2ICszODAsMTcgQEAgV0VCS0lUX0FQSSBn
bG9uZwogd2Via2l0X2RvbV90ZXN0X29ial9jbGFzc19tZXRob2Rfd2l0aF9vcHRpb25hbChXZWJL
aXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyBhcmcpOwogCiAvKioKKyAqIHdlYmtpdF9kb21fdGVz
dF9vYmpfbGVuaWVudF90aGlzX21ldGhvZDoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2Jq
CisgKiBAc3RyOiBBICNnY2hhcgorICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRfQVBJ
IHZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfbGVuaWVudF90aGlzX21ldGhvZChXZWJLaXRET01U
ZXN0T2JqKiBzZWxmLCBjb25zdCBnY2hhciogc3RyKTsKKworLyoqCiAgKiB3ZWJraXRfZG9tX3Rl
c3Rfb2JqX292ZXJsb2FkZWRfbWV0aG9kMToKICAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2Jq
CiAgKiBAYXJnOiBBICNnbG9uZwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHJldmlzaW9uIDE0ODEwNSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMTQsNiArMzE0LDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlIEpTVGVzdE9ialBybwogICAgIHsgImNvbmRpdGlvbmFsTWV0aG9kMyIsIERvbnREZWxldGUg
fCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QzKSwgKGludHB0cl90KTAs
IE5vSW50cmluc2ljIH0sCiAjZW5kaWYKICAgICB7ICJvdmVybG9hZGVkTWV0aG9kIiwgRG9udERl
bGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlv
bj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kKSwgKGludHB0cl90
KTIsIE5vSW50cmluc2ljIH0sCisgICAgeyAibGVuaWVudFRoaXNNZXRob2QiLCBEb250RGVsZXRl
IHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxlbmllbnRUaGlzTWV0aG9kKSwgKGludHB0cl90KTEs
IE5vSW50cmluc2ljIH0sCiAgICAgeyAiY2xhc3NNZXRob2RXaXRoQ2xhbXAiLCBEb250RGVsZXRl
IHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wKSwgKGludHB0cl90
KTIsIE5vSW50cmluc2ljIH0sCiAgICAgeyAibWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNl
IiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRp
dmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVW5zaWduZWRM
b25nU2VxdWVuY2UpLCAoaW50cHRyX3QpMSwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJzdHJpbmdB
cnJheUZ1bmN0aW9uIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0
aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdB
cnJheUZ1bmN0aW9uKSwgKGludHB0cl90KTEsIE5vSW50cmluc2ljIH0sCkBAIC0yNjI1LDYgKzI2
MjYsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDbwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0T2JqOjpjbGFzc01ldGhvZDIoZXhlYykpOwogfQog
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TGVuaWVudFRoaXNNZXRob2QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmIChleGVjLT5hcmd1
bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKyAgICBjb25zdCBTdHJpbmcmIHN0cihl
eGVjLT5hcmd1bWVudCgwKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IGV4ZWMtPmFyZ3VtZW50KDAp
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAg
IFRlc3RPYmo6OmxlbmllbnRUaGlzTWV0aG9kKHN0cik7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKK30KKwogI2lmIEVOQUJMRShDb25kaXRpb24xKQogc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2QxMShFeGVjU3RhdGUqIGV4ZWMpCiB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCShyZXZp
c2lvbiAxNDgxMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMyw2ICsyMDMsNyBAQCBKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kKEpTQzo6RXhl
Y1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29u
c3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKEpTQzo6RXhlY1N0YXRlKik7
CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JG
dW5jdGlvbkNsYXNzTWV0aG9kMihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTGVuaWVudFRoaXNNZXRo
b2QoSlNDOjpFeGVjU3RhdGUqKTsKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZDEoSlNDOjpFeGVjU3RhdGUqKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaAko
cmV2aXNpb24gMTQ4MTA1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdE9iai5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsNiArMTY1LDcgQEAgZW51
bSB7CiAtICh2b2lkKWNsYXNzTWV0aG9kOwogLSAoaW50KWNsYXNzTWV0aG9kV2l0aE9wdGlvbmFs
OihpbnQpYXJnOwogLSAodm9pZCljbGFzc01ldGhvZDI6KGludClhcmc7CistICh2b2lkKWxlbmll
bnRUaGlzTWV0aG9kOihOU1N0cmluZyAqKXN0cjsKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKIC0g
KHZvaWQpb3ZlcmxvYWRlZE1ldGhvZDE6KGludClhcmc7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9i
ai5tbQkocmV2aXNpb24gMTQ4MTA1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAxMiw2ICsxMDEy
LDEyIEBAIC0gKHZvaWQpY2xhc3NNZXRob2QyOihpbnQpYXJnCiAgICAgSU1QTC0+Y2xhc3NNZXRo
b2QyKGFyZyk7CiB9CiAKKy0gKHZvaWQpbGVuaWVudFRoaXNNZXRob2Q6KE5TU3RyaW5nICopc3Ry
Cit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIElNUEwt
PmxlbmllbnRUaGlzTWV0aG9kKHN0cik7Cit9CisKIAogI2lmIEVOQUJMRShDb25kaXRpb24xKQog
LSAodm9pZClvdmVybG9hZGVkTWV0aG9kMTooaW50KWFyZwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9Db25zb2xlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNv
bGUuY3BwCShyZXZpc2lvbiAxNDgxMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsMTIgKzExNSwxMiBAQCBzdGF0aWMgdm9pZCBpbnRl
cm5hbEFkZE1lc3NhZ2UoUGFnZSogcGFnCiAKIHZvaWQgQ29uc29sZTo6ZGVidWcoU2NyaXB0U3Rh
dGUqIHN0YXRlLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzKQogewotICAg
IGludGVybmFsQWRkTWVzc2FnZShwYWdlKCksIExvZ01lc3NhZ2VUeXBlLCBEZWJ1Z01lc3NhZ2VM
ZXZlbCwgc3RhdGUsIGFyZ3VtZW50cyk7CisgICAgaW50ZXJuYWxBZGRNZXNzYWdlKHBhZ2VGcm9t
U2NyaXB0U3RhdGUoc3RhdGUpLCBMb2dNZXNzYWdlVHlwZSwgRGVidWdNZXNzYWdlTGV2ZWwsIHN0
YXRlLCBhcmd1bWVudHMpOwogfQogCiB2b2lkIENvbnNvbGU6OmVycm9yKFNjcmlwdFN0YXRlKiBz
dGF0ZSwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cykKIHsKLSAgICBpbnRl
cm5hbEFkZE1lc3NhZ2UocGFnZSgpLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWws
IHN0YXRlLCBhcmd1bWVudHMpOworICAgIGludGVybmFsQWRkTWVzc2FnZShwYWdlRnJvbVNjcmlw
dFN0YXRlKHN0YXRlKSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBzdGF0ZSwg
YXJndW1lbnRzKTsKIH0KIAogdm9pZCBDb25zb2xlOjppbmZvKFNjcmlwdFN0YXRlKiBzdGF0ZSwg
UGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cykKQEAgLTEzMCwzNyArMTMwLDM3
IEBAIHZvaWQgQ29uc29sZTo6aW5mbyhTY3JpcHRTdGF0ZSogc3RhdGUsIFAKIAogdm9pZCBDb25z
b2xlOjpsb2coU2NyaXB0U3RhdGUqIHN0YXRlLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4g
YXJndW1lbnRzKQogewotICAgIGludGVybmFsQWRkTWVzc2FnZShwYWdlKCksIExvZ01lc3NhZ2VU
eXBlLCBMb2dNZXNzYWdlTGV2ZWwsIHN0YXRlLCBhcmd1bWVudHMpOworICAgIGludGVybmFsQWRk
TWVzc2FnZShwYWdlRnJvbVNjcmlwdFN0YXRlKHN0YXRlKSwgTG9nTWVzc2FnZVR5cGUsIExvZ01l
c3NhZ2VMZXZlbCwgc3RhdGUsIGFyZ3VtZW50cyk7CiB9CiAKIHZvaWQgQ29uc29sZTo6d2FybihT
Y3JpcHRTdGF0ZSogc3RhdGUsIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMp
CiB7Ci0gICAgaW50ZXJuYWxBZGRNZXNzYWdlKHBhZ2UoKSwgTG9nTWVzc2FnZVR5cGUsIFdhcm5p
bmdNZXNzYWdlTGV2ZWwsIHN0YXRlLCBhcmd1bWVudHMpOworICAgIGludGVybmFsQWRkTWVzc2Fn
ZShwYWdlRnJvbVNjcmlwdFN0YXRlKHN0YXRlKSwgTG9nTWVzc2FnZVR5cGUsIFdhcm5pbmdNZXNz
YWdlTGV2ZWwsIHN0YXRlLCBhcmd1bWVudHMpOwogfQogCiB2b2lkIENvbnNvbGU6OmRpcihTY3Jp
cHRTdGF0ZSogc3RhdGUsIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMpCiB7
Ci0gICAgaW50ZXJuYWxBZGRNZXNzYWdlKHBhZ2UoKSwgRGlyTWVzc2FnZVR5cGUsIExvZ01lc3Nh
Z2VMZXZlbCwgc3RhdGUsIGFyZ3VtZW50cyk7CisgICAgaW50ZXJuYWxBZGRNZXNzYWdlKHBhZ2VG
cm9tU2NyaXB0U3RhdGUoc3RhdGUpLCBEaXJNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBz
dGF0ZSwgYXJndW1lbnRzKTsKIH0KIAogdm9pZCBDb25zb2xlOjpkaXJ4bWwoU2NyaXB0U3RhdGUq
IHN0YXRlLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzKQogewotICAgIGlu
dGVybmFsQWRkTWVzc2FnZShwYWdlKCksIERpclhNTE1lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2
ZWwsIHN0YXRlLCBhcmd1bWVudHMpOworICAgIGludGVybmFsQWRkTWVzc2FnZShwYWdlRnJvbVNj
cmlwdFN0YXRlKHN0YXRlKSwgRGlyWE1MTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgc3Rh
dGUsIGFyZ3VtZW50cyk7CiB9CiAKIHZvaWQgQ29uc29sZTo6dGFibGUoU2NyaXB0U3RhdGUqIHN0
YXRlLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzKQogewotICAgIGludGVy
bmFsQWRkTWVzc2FnZShwYWdlKCksIFRhYmxlTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwg
c3RhdGUsIGFyZ3VtZW50cyk7CisgICAgaW50ZXJuYWxBZGRNZXNzYWdlKHBhZ2VGcm9tU2NyaXB0
U3RhdGUoc3RhdGUpLCBUYWJsZU1lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIHN0YXRlLCBh
cmd1bWVudHMpOwogfQogCiB2b2lkIENvbnNvbGU6OmNsZWFyKFNjcmlwdFN0YXRlKiBzdGF0ZSwg
UGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cykKIHsKLSAgICBpbnRlcm5hbEFk
ZE1lc3NhZ2UocGFnZSgpLCBDbGVhck1lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIHN0YXRl
LCBhcmd1bWVudHMsIHRydWUpOworICAgIGludGVybmFsQWRkTWVzc2FnZShwYWdlRnJvbVNjcmlw
dFN0YXRlKHN0YXRlKSwgQ2xlYXJNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBzdGF0ZSwg
YXJndW1lbnRzLCB0cnVlKTsKIH0KIAogdm9pZCBDb25zb2xlOjp0cmFjZShTY3JpcHRTdGF0ZSog
c3RhdGUsIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMpCiB7Ci0gICAgaW50
ZXJuYWxBZGRNZXNzYWdlKHBhZ2UoKSwgVHJhY2VNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVs
LCBzdGF0ZSwgYXJndW1lbnRzLCB0cnVlLCB0cnVlKTsKKyAgICBpbnRlcm5hbEFkZE1lc3NhZ2Uo
cGFnZUZyb21TY3JpcHRTdGF0ZShzdGF0ZSksIFRyYWNlTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VM
ZXZlbCwgc3RhdGUsIGFyZ3VtZW50cywgdHJ1ZSwgdHJ1ZSk7CiB9CiAKIHZvaWQgQ29uc29sZTo6
YXNzZXJ0Q29uZGl0aW9uKFNjcmlwdFN0YXRlKiBzdGF0ZSwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1
bWVudHM+IGFyZ3VtZW50cywgYm9vbCBjb25kaXRpb24pCkBAIC0xNzMsNyArMTczLDcgQEAgdm9p
ZCBDb25zb2xlOjphc3NlcnRDb25kaXRpb24oU2NyaXB0U3RhdAogCiB2b2lkIENvbnNvbGU6OmNv
dW50KFNjcmlwdFN0YXRlKiBzdGF0ZSwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3Vt
ZW50cykKIHsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudChwYWdl
KCksIHN0YXRlLCBhcmd1bWVudHMpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29u
c29sZUNvdW50KHBhZ2VGcm9tU2NyaXB0U3RhdGUoc3RhdGUpLCBzdGF0ZSwgYXJndW1lbnRzKTsK
IH0KIAogdm9pZCBDb25zb2xlOjptYXJrVGltZWxpbmUoUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVu
dHM+IGFyZ3VtZW50cykKQEAgLTI2OSw0ICsyNjksMTUgQEAgUGFnZSogQ29uc29sZTo6cGFnZSgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fZnJhbWUtPnBhZ2UoKTsKIH0KIAorUGFnZSogQ29uc29sZTo6
cGFnZUZyb21TY3JpcHRTdGF0ZShTY3JpcHRTdGF0ZSogc3RhdGUpCit7CisgICAgRE9NV2luZG93
KiB3aW5kb3cgPSBkb21XaW5kb3dGcm9tU2NyaXB0U3RhdGUoc3RhdGUpOworICAgIGlmICghd2lu
ZG93KQorICAgICAgICByZXR1cm4gMDsKKyAgICBDb25zb2xlKiBjb25zb2xlID0gd2luZG93LT5j
b25zb2xlKCk7CisgICAgaWYgKCFjb25zb2xlKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gY29uc29sZS0+cGFnZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnNvbGUuaAkocmV2aXNpb24gMTQ4MTA1KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9Db25zb2xlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDE4ICs1MywxOCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8Q29uc29sZT4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1
cm4gYWRvcHRSZWYobmV3IENvbnNvbGUoZnJhbWUpKTsgfQogICAgIHZpcnR1YWwgfkNvbnNvbGUo
KTsKIAotICAgIHZvaWQgZGVidWcoU2NyaXB0U3RhdGUqLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3Vt
ZW50cz4pOwotICAgIHZvaWQgZXJyb3IoU2NyaXB0U3RhdGUqLCBQYXNzUmVmUHRyPFNjcmlwdEFy
Z3VtZW50cz4pOwotICAgIHZvaWQgaW5mbyhTY3JpcHRTdGF0ZSosIFBhc3NSZWZQdHI8U2NyaXB0
QXJndW1lbnRzPik7Ci0gICAgdm9pZCBsb2coU2NyaXB0U3RhdGUqLCBQYXNzUmVmUHRyPFNjcmlw
dEFyZ3VtZW50cz4pOwotICAgIHZvaWQgY2xlYXIoU2NyaXB0U3RhdGUqLCBQYXNzUmVmUHRyPFNj
cmlwdEFyZ3VtZW50cz4pOwotICAgIHZvaWQgd2FybihTY3JpcHRTdGF0ZSosIFBhc3NSZWZQdHI8
U2NyaXB0QXJndW1lbnRzPik7Ci0gICAgdm9pZCBkaXIoU2NyaXB0U3RhdGUqLCBQYXNzUmVmUHRy
PFNjcmlwdEFyZ3VtZW50cz4pOwotICAgIHZvaWQgZGlyeG1sKFNjcmlwdFN0YXRlKiwgUGFzc1Jl
ZlB0cjxTY3JpcHRBcmd1bWVudHM+KTsKLSAgICB2b2lkIHRhYmxlKFNjcmlwdFN0YXRlKiwgUGFz
c1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+KTsKLSAgICB2b2lkIHRyYWNlKFNjcmlwdFN0YXRlKiwg
UGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+KTsKKyAgICBzdGF0aWMgdm9pZCBkZWJ1ZyhTY3Jp
cHRTdGF0ZSosIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPik7CisgICAgc3RhdGljIHZvaWQg
ZXJyb3IoU2NyaXB0U3RhdGUqLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4pOworICAgIHN0
YXRpYyB2b2lkIGluZm8oU2NyaXB0U3RhdGUqLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4p
OworICAgIHN0YXRpYyB2b2lkIGxvZyhTY3JpcHRTdGF0ZSosIFBhc3NSZWZQdHI8U2NyaXB0QXJn
dW1lbnRzPik7CisgICAgc3RhdGljIHZvaWQgY2xlYXIoU2NyaXB0U3RhdGUqLCBQYXNzUmVmUHRy
PFNjcmlwdEFyZ3VtZW50cz4pOworICAgIHN0YXRpYyB2b2lkIHdhcm4oU2NyaXB0U3RhdGUqLCBQ
YXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4pOworICAgIHN0YXRpYyB2b2lkIGRpcihTY3JpcHRT
dGF0ZSosIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPik7CisgICAgc3RhdGljIHZvaWQgZGly
eG1sKFNjcmlwdFN0YXRlKiwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+KTsKKyAgICBzdGF0
aWMgdm9pZCB0YWJsZShTY3JpcHRTdGF0ZSosIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPik7
CisgICAgc3RhdGljIHZvaWQgdHJhY2UoU2NyaXB0U3RhdGUqLCBQYXNzUmVmUHRyPFNjcmlwdEFy
Z3VtZW50cz4pOwogICAgIHZvaWQgYXNzZXJ0Q29uZGl0aW9uKFNjcmlwdFN0YXRlKiwgUGFzc1Jl
ZlB0cjxTY3JpcHRBcmd1bWVudHM+LCBib29sIGNvbmRpdGlvbik7Ci0gICAgdm9pZCBjb3VudChT
Y3JpcHRTdGF0ZSosIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPik7CisgICAgc3RhdGljIHZv
aWQgY291bnQoU2NyaXB0U3RhdGUqLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4pOwogICAg
IHZvaWQgbWFya1RpbWVsaW5lKFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPik7CiAjaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgY29uc3QgUHJvZmlsZXNBcnJheSYgcHJvZmls
ZXMoKSBjb25zdCB7IHJldHVybiBtX3Byb2ZpbGVzOyB9CkBAIC04NSw2ICs4NSw4IEBAIHByaXZh
dGU6CiAKICAgICBleHBsaWNpdCBDb25zb2xlKEZyYW1lKik7CiAKKyAgICBpbmxpbmUgc3RhdGlj
IFBhZ2UqIHBhZ2VGcm9tU2NyaXB0U3RhdGUoU2NyaXB0U3RhdGUqKTsKKwogI2lmIEVOQUJMRShK
QVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIFByb2ZpbGVzQXJyYXkgbV9wcm9maWxlczsKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xlLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaWRsCShyZXZpc2lvbiAxNDgxMDUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNSArMzEs
MTUgQEAKICAgICBPbWl0Q29uc3RydWN0b3IKIF0gaW50ZXJmYWNlIENvbnNvbGUgewogCi0gICAg
W0NhbGxXaXRoPVNjcmlwdEFyZ3VtZW50c3xTY3JpcHRTdGF0ZV0gdm9pZCBkZWJ1ZygpOwotICAg
IFtDYWxsV2l0aD1TY3JpcHRBcmd1bWVudHN8U2NyaXB0U3RhdGVdIHZvaWQgZXJyb3IoKTsKLSAg
ICBbQ2FsbFdpdGg9U2NyaXB0QXJndW1lbnRzfFNjcmlwdFN0YXRlXSB2b2lkIGluZm8oKTsKLSAg
ICBbQ2FsbFdpdGg9U2NyaXB0QXJndW1lbnRzfFNjcmlwdFN0YXRlXSB2b2lkIGxvZygpOwotICAg
IFtDYWxsV2l0aD1TY3JpcHRBcmd1bWVudHN8U2NyaXB0U3RhdGVdIHZvaWQgd2FybigpOwotICAg
IFtDYWxsV2l0aD1TY3JpcHRBcmd1bWVudHN8U2NyaXB0U3RhdGVdIHZvaWQgZGlyKCk7Ci0gICAg
W0NhbGxXaXRoPVNjcmlwdEFyZ3VtZW50c3xTY3JpcHRTdGF0ZV0gdm9pZCBkaXJ4bWwoKTsKLSAg
ICBbQ2FsbFdpdGg9U2NyaXB0QXJndW1lbnRzfFNjcmlwdFN0YXRlXSB2b2lkIHRhYmxlKCk7Ci0g
ICAgW0NhbGxXaXRoPVNjcmlwdEFyZ3VtZW50c3xTY3JpcHRTdGF0ZV0gdm9pZCB0cmFjZSgpOwor
ICAgIFtDYWxsV2l0aD1TY3JpcHRBcmd1bWVudHN8U2NyaXB0U3RhdGUsIExlbmllbnRUaGlzXSB2
b2lkIGRlYnVnKCk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEFyZ3VtZW50c3xTY3JpcHRTdGF0ZSwg
TGVuaWVudFRoaXNdIHZvaWQgZXJyb3IoKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0QXJndW1lbnRz
fFNjcmlwdFN0YXRlLCBMZW5pZW50VGhpc10gdm9pZCBpbmZvKCk7CisgICAgW0NhbGxXaXRoPVNj
cmlwdEFyZ3VtZW50c3xTY3JpcHRTdGF0ZSwgTGVuaWVudFRoaXNdIHZvaWQgbG9nKCk7CisgICAg
W0NhbGxXaXRoPVNjcmlwdEFyZ3VtZW50c3xTY3JpcHRTdGF0ZSwgTGVuaWVudFRoaXNdIHZvaWQg
d2FybigpOworICAgIFtDYWxsV2l0aD1TY3JpcHRBcmd1bWVudHN8U2NyaXB0U3RhdGUsIExlbmll
bnRUaGlzXSB2b2lkIGRpcigpOworICAgIFtDYWxsV2l0aD1TY3JpcHRBcmd1bWVudHN8U2NyaXB0
U3RhdGUsIExlbmllbnRUaGlzXSB2b2lkIGRpcnhtbCgpOworICAgIFtDYWxsV2l0aD1TY3JpcHRB
cmd1bWVudHN8U2NyaXB0U3RhdGUsIExlbmllbnRUaGlzXSB2b2lkIHRhYmxlKCk7CisgICAgW0Nh
bGxXaXRoPVNjcmlwdEFyZ3VtZW50c3xTY3JpcHRTdGF0ZSwgTGVuaWVudFRoaXNdIHZvaWQgdHJh
Y2UoKTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0QXJndW1lbnRzfFNjcmlwdFN0YXRlLCBJbXBsZW1l
bnRlZEFzPWFzc2VydENvbmRpdGlvbl0gdm9pZCBhc3NlcnQoaW4gYm9vbGVhbiBjb25kaXRpb24p
OwogICAgIFtDYWxsV2l0aD1TY3JpcHRBcmd1bWVudHN8U2NyaXB0U3RhdGVdIHZvaWQgY291bnQo
KTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0QXJndW1lbnRzXSB2b2lkIG1hcmtUaW1lbGluZSgpOwpA
QCAtNTksNyArNTksNyBAQAogICAgIFtDYWxsV2l0aD1TY3JpcHRBcmd1bWVudHN8U2NyaXB0U3Rh
dGVdIHZvaWQgZ3JvdXAoKTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0QXJndW1lbnRzfFNjcmlwdFN0
YXRlXSB2b2lkIGdyb3VwQ29sbGFwc2VkKCk7CiAgICAgdm9pZCBncm91cEVuZCgpOwotICAgIFtD
YWxsV2l0aD1TY3JpcHRBcmd1bWVudHN8U2NyaXB0U3RhdGVdIHZvaWQgY2xlYXIoKTsKKyAgICBb
Q2FsbFdpdGg9U2NyaXB0QXJndW1lbnRzfFNjcmlwdFN0YXRlXSBzdGF0aWMgdm9pZCBjbGVhcigp
OwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lbW9yeUluZm8gbWVtb3J5OwogfTsKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDE0ODE1OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEzLTA0LTEwICBWaWN0b3IgQ29zdGFuICA8Y29zdGFu
QGdtYWlsLmNvbT4KKworICAgICAgICBDYWxsaW5nIGNvbnNvbGUue2xvZywgaW5mbywgZXJyb3Is
IC4uLn0gc2hvdWxkIG5vdCByZXF1aXJlIHRoaXMgPT09IGNvbnNvbGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDQwNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vV2luZG93L2NvbnNv
bGUtdW5ib3VuZC1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9XaW5kb3cvY29uc29sZS11bmJvdW5kLWZ1bmN0aW9ucy5odG1sOiBBZGRlZC4KKwogMjAx
My0wNC0xMCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAg
ICBNYXNzIHJlbW92ZSBhbGwgdGhlIGVtcHR5IGRpcmVjdG9yaWVzCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9XaW5kb3cvY29uc29sZS11bmJvdW5kLWZ1bmN0aW9ucy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2NvbnNvbGUtdW5ib3Vu
ZC1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vV2luZG93L2NvbnNvbGUtdW5ib3VuZC1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTE6IGNvbnNv
bGUubG9nKCkgY2FsbGVkLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEzOiBjb25zb2xlLmluZm8o
KSBjYWxsZWQuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTU6IGNvbnNvbGUud2FybigpIGNhbGxl
ZC4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxNzogY29uc29sZS5lcnJvcigpIGNhbGxlZC4KK1Rl
c3RzIHdpbmRvdy5jb25zb2xlIGZ1bmN0aW9ucyB3aGVuICJ0aGlzIiBpcyBub3Qgc2V0IHRvIGNv
bnNvbGUuIFRvIG1ha2Ugc3VyZSB0aGlzIHRlc3QgcGFzc2VkIHlvdSBtdXN0IGNoZWNrIHRoZSBj
b25zb2xlIGZvciB0aGUgZm9sbG93aW5nIDQgbWVzc2FnZXM6CisKK2NvbnNvbGUubG9nKCkgY2Fs
bGVkLgorY29uc29sZS5pbmZvKCkgY2FsbGVkLgorY29uc29sZS53YXJuKCkgY2FsbGVkLgorY29u
c29sZS5lcnJvcigpIGNhbGxlZC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9j
b25zb2xlLXVuYm91bmQtZnVuY3Rpb25zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vV2luZG93L2NvbnNvbGUtdW5ib3VuZC1mdW5jdGlvbnMuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9jb25zb2xlLXVuYm91bmQtZnVuY3Rp
b25zLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAg
ICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
CisgICAgICAgICAgICB2YXIgbG9nID0gY29uc29sZS5sb2c7CisgICAgICAgICAgICBsb2coImNv
bnNvbGUubG9nKCkgY2FsbGVkLiIpOworICAgICAgICAgICAgdmFyIGluZm8gPSBjb25zb2xlLmlu
Zm87CisgICAgICAgICAgICBpbmZvKCJjb25zb2xlLmluZm8oKSBjYWxsZWQuIik7CisgICAgICAg
ICAgICB2YXIgd2FybiA9IGNvbnNvbGUud2FybjsKKyAgICAgICAgICAgIHdhcm4oImNvbnNvbGUu
d2FybigpIGNhbGxlZC4iKTsKKyAgICAgICAgICAgIHZhciBlcnJvciA9IGNvbnNvbGUuZXJyb3I7
CisgICAgICAgICAgICBlcnJvcigiY29uc29sZS5lcnJvcigpIGNhbGxlZC4iKTsKKyAgICAgICAg
fQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0cygpOyI+Cisg
ICAgPHA+VGVzdHMgd2luZG93LmNvbnNvbGUgZnVuY3Rpb25zIHdoZW4gInRoaXMiIGlzIG5vdCBz
ZXQgdG8gY29uc29sZS4gIFRvIG1ha2Ugc3VyZSB0aGlzIHRlc3QgcGFzc2VkIHlvdSBtdXN0IGNo
ZWNrIHRoZSBjb25zb2xlIGZvciB0aGUgZm9sbG93aW5nIDQgbWVzc2FnZXM6PC9wPgorICAgIDx1
bD4KKyAgICAgICAgPGxpPmNvbnNvbGUubG9nKCkgY2FsbGVkLjwvbGk+CisgICAgICAgIDxsaT5j
b25zb2xlLmluZm8oKSBjYWxsZWQuPC9saT4KKyAgICAgICAgPGxpPmNvbnNvbGUud2FybigpIGNh
bGxlZC48L2xpPgorICAgICAgICA8bGk+Y29uc29sZS5lcnJvcigpIGNhbGxlZC48L2xpPgorICAg
IDwvdWw+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>197499</attachid>
            <date>2013-04-10 20:22:03 -0700</date>
            <delta_ts>2013-04-10 23:57:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-114406-20130410232142.patch</filename>
            <type>text/plain</type>
            <size>36682</size>
            <attacher name="Victor Costan">costan</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0ODE1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDEzLTA0LTEwICBWaWN0b3Ig
Q29zdGFuICA8Y29zdGFuQGdtYWlsLmNvbT4KKworICAgICAgICBDYWxsaW5nIGNvbnNvbGUue2xv
ZywgaW5mbywgZXJyb3IsIC4uLn0gc2hvdWxkIG5vdCByZXF1aXJlIHRoaXMgPT09IGNvbnNvbGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDQwNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZh
c3QvZG9tL1dpbmRvdy9jb25zb2xlLXVuYm91bmQtZnVuY3Rpb25zLmh0bWwKKworICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOiBpbXBsZW1lbnRlZCB0aGUgW0xl
bmllbnRUaGlzXSBtZXRob2QgYXR0cmlidXRlCisgICAgICAgIChBZGRJbmNsdWRlc0ZvclR5cGVJ
bkltcGwpOiB3aGl0ZXNwYWNlIHJlbW92YWwKKyAgICAgICAgKEFkZEluY2x1ZGVzRm9yVHlwZUlu
SGVhZGVyKTogd2hpdGVzcGFjZSByZW1vdmFsCisgICAgICAgIChHZW5lcmF0ZUdldE93blByb3Bl
cnR5RGVzY3JpcHRvckJvZHkpOiB3aGl0ZXNwYWNlIHJlbW92YWwKKyAgICAgICAgKEdlbmVyYXRl
SGVhZGVyKTogW0xlbmllbnRUaGlzXSBtZXRob2RzIGFyZSBzdGF0aWMKKyAgICAgICAgKEdlbmVy
YXRlQXR0cmlidXRlc0hhc2hUYWJsZSk6IHdoaXRlc3BhY2UgcmVtb3ZhbAorICAgICAgICAoR2Vu
ZXJhdGVJbXBsZW1lbnRhdGlvbik6IFtMZW5pZW50VGhpc10gbWV0aG9kIHNob3VsZCBiZSBpbnZv
a2VkIHVzaW5nIHRoZSBzdGF0aWMgbWV0aG9kIHN5bnRheAorICAgICAgICAoR2VuZXJhdGVQYXJh
bWV0ZXJzQ2hlY2spOiBbTGVuaWVudFRoaXNdIG1ldGhvZCBzaG91bGQgYmUgaW52b2tlZCB1c2lu
ZyB0aGUgc3RhdGljIG1ldGhvZCBzeW50YXggCisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0
aW9uRnVuY3Rpb25DYWxsKTogd2hpdGVzcGFjZSByZW1vdmFsCisgICAgICAgIChHZXRTVkdQcm9w
ZXJ0eVR5cGVzKTogd2hpdGVzcGFjZSByZW1vdmFsCisgICAgICAgIChHZW5lcmF0ZUhhc2hUYWJs
ZSk6IHdoaXRlc3BhY2UgcmVtb3ZhbAorICAgICAgICAoTWFrZXNTdGF0aWNDYWxsKTogcmV0dXJu
cyB0cnVlIGZvciBtZXRob2RzIHRoYXQgZ2VuZXJhdGUgc3RhdGljIGNhbGxzIGluIFdlYkNvcmUK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0OiBhZGRlZCB0aGUg
W0xlbmllbnRUaGlzXSBtZXRob2QgYXR0cmlidXRlCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcDogcmVnZW5lcmF0ZWQgdGVzdAorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oOiByZWdlbmVyYXRlZCB0
ZXN0CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVz
dE9iai5jcHA6IHJlZ2VuZXJhdGVkIHRlc3QKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmg6IHJlZ2VuZXJhdGVkIHRlc3QKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcDogcmVnZW5lcmF0ZWQgdGVz
dAorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaDogcmVnZW5l
cmF0ZWQgdGVzdAorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RP
YmouaDogcmVnZW5lcmF0ZWQgdGVzdAorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9P
YmpDL0RPTVRlc3RPYmoubW06IHJlZ2VuZXJhdGVkIHRlc3QKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6IGFkZGVkIG1ldGhvZCB0aGF0IHRlc3RzIHRoZSBbTGVu
aWVudFRoaXNdIGF0dHJpYnV0ZQorICAgICAgICAqIHBhZ2UvQ29uc29sZS5jcHA6IG1hZGUgYSBi
dW5jaCBvZiBjb25zb2xlIG1ldGhvZHMgc3RhdGljCisgICAgICAgIChXZWJDb3JlOjpDb25zb2xl
OjpkZWJ1Zyk6IGJlY2FtZSBzdGF0aWMKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmVycm9y
KTogYmVjYW1lIHN0YXRpYworICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6bG9nKTogYmVjYW1l
IHN0YXRpYworICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6d2Fybik6IGJlY2FtZSBzdGF0aWMK
KyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmRpcik6IGJlY2FtZSBzdGF0aWMKKyAgICAgICAg
KFdlYkNvcmU6OkNvbnNvbGU6OmRpcnhtbCk6IGJlY2FtZSBzdGF0aWMKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnNvbGU6OnRhYmxlKTogYmVjYW1lIHN0YXRpYworICAgICAgICAoV2ViQ29yZTo6Q29u
c29sZTo6Y2xlYXIpOiBiZWNhbWUgc3RhdGljCisgICAgICAgIChXZWJDb3JlOjpDb25zb2xlOjp0
cmFjZSk6IGJlY2FtZSBzdGF0aWMKKyAgICAgICAgKFdlYkNvcmU6OkNvbnNvbGU6OmNvdW50KTog
YmVjYW1lIHN0YXRpYworICAgICAgICAoV2ViQ29yZTo6Q29uc29sZTo6cGFnZUZyb21TY3JpcHRT
dGF0ZSk6IHJlY292ZXJzIENvbnNvbGUgZGF0YSBmcm9tIHRoZSBTY3JpcHRTdGF0ZQorICAgICAg
ICAqIHBhZ2UvQ29uc29sZS5oOiBkZWNsYXJlZCB0aGUgbWV0aG9kcyBhYm92ZSB0byBiZSBzdGF0
aWMKKyAgICAgICAgKiBwYWdlL0NvbnNvbGUuaWRsOiBhZGRlZCB0aGUgW0xlbmllbnRUaGlzXSBh
dHRyaWJ1dGUgdG8gdGhlIGNvbnNvbGUgbWV0aG9kcyBsaXN0ZWQgYWJvdmUKKwogMjAxMy0wNC0x
MCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBNYXNz
IHJlbW92ZSBhbGwgdGhlIGVtcHR5IGRpcmVjdG9yaWVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMTQ4
MTA1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0JKHdvcmtpbmcgY29weSkKQEAgLTE4OCw5ICsxODgsOSBAQCBzdWIgQWRkSW5jbHVkZXNGb3JU
eXBlSW5JbXBsCiB7CiAgICAgbXkgJHR5cGUgPSBzaGlmdDsKICAgICBteSAkaXNDYWxsYmFjayA9
IEBfID8gc2hpZnQgOiAwOwotICAgIAorCiAgICAgQWRkSW5jbHVkZXNGb3JUeXBlKCR0eXBlLCAk
aXNDYWxsYmFjaywgXCVpbXBsSW5jbHVkZXMpOwotICAgIAorCiAgICAgIyBhZGRpdGlvbmFsIGlu
Y2x1ZGVzICh0aGluZ3MgbmVlZGVkIHRvIGNvbXBpbGUgdGhlIGJpbmRpbmdzIGJ1dCBub3QgdGhl
IGhlYWRlcikKICAgICBpZiAoJHR5cGUgZXEgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCIpIHsK
ICAgICAgICAgJGltcGxJbmNsdWRlc3siQ2FudmFzR3JhZGllbnQuaCJ9ID0gMTsKQEAgLTIxNSw3
ICsyMTUsNyBAQCBzdWIgQWRkSW5jbHVkZXNGb3JUeXBlSW5IZWFkZXIKIHsKICAgICBteSAkdHlw
ZSA9IHNoaWZ0OwogICAgIG15ICRpc0NhbGxiYWNrID0gQF8gPyBzaGlmdCA6IDA7Ci0gICAgCisK
ICAgICBBZGRJbmNsdWRlc0ZvclR5cGUoJHR5cGUsICRpc0NhbGxiYWNrLCBcJWhlYWRlckluY2x1
ZGVzKTsKIH0KIApAQCAtNDY0LDkgKzQ2NCw5IEBAIHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5
U2xvdEJvZHkKIHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5RGVzY3JpcHRvckJvZHkKIHsKICAg
ICBteSAoJGludGVyZmFjZSwgJGludGVyZmFjZU5hbWUsICRjbGFzc05hbWUsICRoYXNBdHRyaWJ1
dGVzLCAkaW5saW5lZCkgPSBAXzsKLSAgICAKKwogICAgIG15ICRuYW1lc3BhY2VNYXliZSA9ICgk
aW5saW5lZCA/ICJKU0M6OiIgOiAiIik7Ci0gICAgCisKICAgICBteSBAZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9ySW1wbCA9ICgpOwogICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ2hlY2tTZWN1cml0eSJ9KSB7CiAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAi
RE9NV2luZG93IikgewpAQCAtNDc3LDEzICs0NzcsMTMgQEAgc3ViIEdlbmVyYXRlR2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yQm9keQogICAgICAgICB9CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICByZXR1cm4gZmFsc2U7XG4iKTsKICAgICB9Ci0gICAgCisKICAgICBpZiAoJGlu
dGVyZmFjZU5hbWUgZXEgIk5hbWVkTm9kZU1hcCIgb3IgJGludGVyZmFjZU5hbWUgPX4gL15IVE1M
XHcqQ29sbGVjdGlvbiQvKSB7CiAgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5RGVzY3JpcHRv
ckltcGwsICIgICAgJHtuYW1lc3BhY2VNYXliZX1KU1ZhbHVlIHByb3RvID0gdGhpc09iamVjdC0+
cHJvdG90eXBlKCk7XG4iKTsKICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
SW1wbCwgIiAgICBpZiAocHJvdG8uaXNPYmplY3QoKSAmJiBqc0Nhc3Q8JHtuYW1lc3BhY2VNYXli
ZX1KU09iamVjdCo+KGFzT2JqZWN0KHByb3RvKSktPmhhc1Byb3BlcnR5KGV4ZWMsIHByb3BlcnR5
TmFtZSkpXG4iKTsKICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ySW1wbCwg
IiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4iKTsKICAgICB9Ci0gICAgCisKICAgICBteSAkbWFu
dWFsTG9va3VwR2V0dGVyR2VuZXJhdGlvbiA9IHN1YiB7CiAgICAgICAgIG15ICRyZXF1aXJlc01h
bnVhbExvb2t1cCA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbmRleGVkR2V0
dGVyIn0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5hbWVkR2V0dGVyIn07
CiAgICAgICAgIGlmICgkcmVxdWlyZXNNYW51YWxMb29rdXApIHsKQEAgLTU1OCw3ICs1NTgsNyBA
QCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JCb2R5CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ySW1wbCwgIiAgICByZXR1cm4g
QmFzZTo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgZGVzY3JpcHRvcik7XG4iKTsKICAgICB9Ci0gICAgCisKICAgICByZXR1cm4gQGdldE93
blByb3BlcnR5RGVzY3JpcHRvckltcGw7CiB9CiAKQEAgLTY5NSw3ICs2OTUsNyBAQCBzdWIgR2Vu
ZXJhdGVIZWFkZXIKICAgICAgICAgICAgICRoZWFkZXJJbmNsdWRlc3siJGludGVyZmFjZU5hbWUu
aCJ9ID0gMTsKICAgICAgICAgfQogICAgIH0KLSAgICAKKwogICAgICRoZWFkZXJJbmNsdWRlc3si
PHJ1bnRpbWUvSlNPYmplY3QuaD4ifSA9IDE7CiAgICAgJGhlYWRlckluY2x1ZGVzeyJTVkdFbGVt
ZW50LmgifSA9IDEgaWYgJGNsYXNzTmFtZSA9fiAvXkpTU1ZHLzsKIApAQCAtNzg3LDcgKzc4Nyw3
IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiTnVtZXJpY0luZGV4ZWRHZXR0ZXIifQogICAgICAgICB8fCAkaW50ZXJmYWNl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3RBbmREZXNj
cmlwdG9yIn0KICAgICAgICAgfHwgJGhhc0ltcHVyZU5hbWVkR2V0dGVyOwotICAgIAorCiAgICAg
bXkgJGhhc0dldHRlciA9ICRudW1BdHRyaWJ1dGVzID4gMCB8fCAhJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Ik9taXRDb25zdHJ1Y3RvciJ9IHx8ICRoYXNDb21wbGV4R2V0dGVyOwog
CiAgICAgaWYgKCRoYXNJbXB1cmVOYW1lZEdldHRlcikgewpAQCAtODE3LDcgKzgxNyw3IEBAIHN1
YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ3VzdG9tUHV0RnVuY3Rpb24ifQogICAgICAgICB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ3VzdG9tTmFtZWRTZXR0ZXIifQogICAgICAgICB8fCAkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tSW5kZXhlZFNldHRlciJ9OwotICAgICAgICAKKwog
ICAgIG15ICRoYXNTZXR0ZXIgPSAkaGFzUmVhZFdyaXRlUHJvcGVydGllcyB8fCAkaGFzQ29tcGxl
eFNldHRlcjsKIAogICAgICMgR2V0dGVycwpAQCAtODcwLDcgKzg3MCw3IEBAIHN1YiBHZW5lcmF0
ZUhlYWRlcgogICAgICMgQ3VzdG9tIGdldE93blByb3BlcnR5TmFtZXMgZnVuY3Rpb24KICAgICBp
ZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbUVudW1lcmF0ZVByb3Bl
cnR5In0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkluZGV4ZWRHZXR0ZXIi
fSB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTnVtZXJpY0luZGV4ZWRHZXR0
ZXIifSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lkIGdl
dE93blByb3BlcnR5TmFtZXMoSlNDOjpKU09iamVjdCosIEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQ
cm9wZXJ0eU5hbWVBcnJheSYsIEpTQzo6RW51bWVyYXRpb25Nb2RlIG1vZGUgPSBKU0M6OkV4Y2x1
ZGVEb250RW51bVByb3BlcnRpZXMpO1xuIik7Ci0gICAgICAgICRzdHJ1Y3R1cmVGbGFnc3siSlND
OjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIn0gPSAxOyAgICAgICAKKyAgICAgICAgJHN0cnVj
dHVyZUZsYWdzeyJKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMifSA9IDE7CiAgICAgfQog
CiAgICAgIyBDdXN0b20gZGVmaW5lT3duUHJvcGVydHkgZnVuY3Rpb24KQEAgLTk0MSw3ICs5NDEs
NyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmlu
ZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRmdW5jdGlvbi0+
c2lnbmF0dXJlKTsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjaWYgJHtjb25k
aXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgICAgIG15
ICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRBcyJ9IHx8ICRjb2RlR2VuZXJhdG9yLT5XS19s
Y2ZpcnN0KCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lKTsKLSAgICAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgIiAuICgkZnVuY3Rpb24tPmlzU3RhdGljID8gInN0YXRpYyAiIDog
IiIpIC4gIkpTQzo6SlNWYWx1ZSAiIC4gJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lIC4gIihK
U0M6OkV4ZWNTdGF0ZSopO1xuIik7CisgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgICIgLiAoTWFrZXNTdGF0aWNDYWxsKCRmdW5jdGlvbikgPyAic3RhdGljICIgOiAiIikgLiAi
SlNDOjpKU1ZhbHVlICIgLiAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUgLiAiKEpTQzo6RXhl
Y1N0YXRlKik7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjZW5kaWZc
biIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgfQogICAgIH0KQEAgLTEwNzIsNyAr
MTA3Miw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIGlmICgkdXNlc1RvSlNOZXdseUNyZWF0
ZWR7JGludGVyZmFjZU5hbWV9KSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJKU0M6
OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChKU0M6OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0KiwgJGludGVyZmFjZU5hbWUqKTtcbiIpOwogICAgIH0KLSAgICAKKwogICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICJcbiIpOwogCiAgICAgIyBBZGQgcHJvdG90eXBlIGRlY2xhcmF0aW9uLgpA
QCAtMTE1Niw3ICsxMTU2LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9u
YWxTdHJpbmc7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgaWYgKCEkaW50ZXJmYWNl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT21pdENvbnN0cnVjdG9yIn0pIHsKICAgICAgICAgICAg
IG15ICRnZXR0ZXIgPSAianMiIC4gJGludGVyZmFjZU5hbWUgLiAiQ29uc3RydWN0b3IiOwogICAg
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIkpTQzo6SlNWYWx1ZSAke2dldHRlcn0oSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTtcbiIpOwpAQCAt
MTE4Nyw3ICsxMTg3LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgIyAtIEdlbmVyYXRlIGRl
cGVuZGVuY2llcy4KICAgICBpZiAoJHdyaXRlRGVwZW5kZW5jaWVzICYmIEBhbmNlc3RvckludGVy
ZmFjZU5hbWVzKSB7CiAgICAgICAgIHB1c2goQGRlcHNDb250ZW50LCAiJGNsYXNzTmFtZS5oIDog
Iiwgam9pbigiICIsIG1hcCB7ICIkXy5pZGwiIH0gQGFuY2VzdG9ySW50ZXJmYWNlTmFtZXMpLCAi
XG4iKTsKLSAgICAgICAgcHVzaChAZGVwc0NvbnRlbnQsIG1hcCB7ICIkXy5pZGwgOlxuIiB9IEBh
bmNlc3RvckludGVyZmFjZU5hbWVzKTsgCisgICAgICAgIHB1c2goQGRlcHNDb250ZW50LCBtYXAg
eyAiJF8uaWRsIDpcbiIgfSBAYW5jZXN0b3JJbnRlcmZhY2VOYW1lcyk7CiAgICAgfQogfQogCkBA
IC0xMTk4LDcgKzExOTgsNyBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVzSGFzaFRhYmxlKCQkKQog
ICAgICMgRklYTUU6IFRoZXNlIHNob3VsZCBiZSBmdW5jdGlvbnMgb24gJGludGVyZmFjZS4KICAg
ICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPm5hbWU7CiAgICAgbXkgJGNsYXNzTmFt
ZSA9ICJKUyRpbnRlcmZhY2VOYW1lIjsKLSAgICAKKwogICAgICMgLSBBZGQgYWxsIGF0dHJpYnV0
ZXMgaW4gYSBoYXNodGFibGUgZGVmaW5pdGlvbgogICAgIG15ICRudW1BdHRyaWJ1dGVzID0gQHsk
aW50ZXJmYWNlLT5hdHRyaWJ1dGVzfTsKICAgICAkbnVtQXR0cmlidXRlcysrIGlmICEkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiT21pdENvbnN0cnVjdG9yIn07CkBAIC0xMjUyLDcg
KzEyNTIsNyBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVzSGFzaFRhYmxlKCQkKQogICAgICAgICAg
ICAgbXkgJHNldHRlciA9ICJzZXRKUyIgLiAkaW50ZXJmYWNlTmFtZSAuICJDb25zdHJ1Y3RvciI7
CiAgICAgICAgICAgICBwdXNoKEBoYXNoVmFsdWUyLCAkc2V0dGVyKTsKICAgICAgICAgICAgIHB1
c2goQGhhc2hTcGVjaWFscywgIkRvbnRFbnVtIHwgRG9udERlbGV0ZSIpOwotICAgICAgICB9IGVs
c2UgeyAgICAgICAgICAgIAorICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHVzaChAaGFz
aFZhbHVlMiwgIjAiKTsKICAgICAgICAgICAgIHB1c2goQGhhc2hTcGVjaWFscywgIkRvbnRFbnVt
IHwgUmVhZE9ubHkiKTsKICAgICAgICAgfQpAQCAtMTYwMyw3ICsxNjAzLDcgQEAgc3ViIEdlbmVy
YXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFz
c05hbWV9UHJvdG90eXBlKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xhc3NOYW1lfVByb3RvdHlw
ZSo+KGNlbGwpO1xuIik7CiAKICAgICAgICAgaWYgKCRudW1Db25zdGFudHMgZXEgMCAmJiAkbnVt
RnVuY3Rpb25zIGVxIDApIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90KTtcbiIpOyAgICAgICAgCisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7XG4iKTsKICAgICAgICAgfSBlbHNpZiAoJG51bUNvbnN0YW50cyBl
cSAwKSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0U3Rh
dGljRnVuY3Rpb25TbG90PEpTT2JqZWN0PihleGVjLCAiIC4gcHJvdG90eXBlSGFzaFRhYmxlQWNj
ZXNzb3IoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkpTTm9TdGF0aWNUYWJsZXMi
fSwgJGNsYXNzTmFtZSkgLiAiLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpO1xuIik7
CiAgICAgICAgIH0gZWxzaWYgKCRudW1GdW5jdGlvbnMgZXEgMCkgewpAQCAtMTYxOCw3ICsxNjE4
LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgJHtjbGFzc05hbWV9UHJvdG90eXBlKiB0aGlzT2JqZWN0ID0ganNDYXN0PCR7Y2xh
c3NOYW1lfVByb3RvdHlwZSo+KG9iamVjdCk7XG4iKTsKIAogICAgICAgICBpZiAoJG51bUNvbnN0
YW50cyBlcSAwICYmICRudW1GdW5jdGlvbnMgZXEgMCkgewotICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlz
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2NyaXB0b3IpO1xuIik7ICAgICAgICAKKyAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IodGhpc09iamVjdCwgZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9y
KTtcbiIpOwogICAgICAgICB9IGVsc2lmICgkbnVtQ29uc3RhbnRzIGVxIDApIHsKICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvbkRlc2Ny
aXB0b3I8SlNPYmplY3Q+KGV4ZWMsICIgLiBwcm90b3R5cGVIYXNoVGFibGVBY2Nlc3NvcigkaW50
ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSlNOb1N0YXRpY1RhYmxlcyJ9LCAkY2xhc3NO
YW1lKSAuICIsIHRoaXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7XG4iKTsKICAg
ICAgICAgfSBlbHNpZiAoJG51bUZ1bmN0aW9ucyBlcSAwKSB7CkBAIC0xNzE5LDcgKzE3MTksNyBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIH0KIAogICAgIGlmICghJGhhc1BhcmVu
dCkgewotICAgICAgICAjIEZJWE1FOiBUaGlzIGRlc3Ryb3kgZnVuY3Rpb24gc2hvdWxkIG5vdCBi
ZSBuZWNlc3NhcnksIGFzIAorICAgICAgICAjIEZJWE1FOiBUaGlzIGRlc3Ryb3kgZnVuY3Rpb24g
c2hvdWxkIG5vdCBiZSBuZWNlc3NhcnksIGFzCiAgICAgICAgICMgYSBmaW5hbGl6ZXIgc2hvdWxk
IGJlIGNhbGxlZCBmb3IgZWFjaCBET00gb2JqZWN0IHdyYXBwZXIuCiAgICAgICAgICMgSG93ZXZl
ciwgdGhhdCBzZWVtcyBub3QgdG8gYmUgdGhlIGNhc2UsIHNvIHRoaXMgaGFzIGJlZW4KICAgICAg
ICAgIyBhZGRlZCBiYWNrIHRvIGF2b2lkIGxlYWtpbmcgd2hpbGUgd2UgZmlndXJlIG91dCB3aHkg
dGhlCkBAIC0xNzQwLDcgKzE3NDAsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAg
IH0KIAogICAgIG15ICRoYXNHZXR0ZXIgPSAkbnVtQXR0cmlidXRlcyA+IDAKLSAgICAgICAgICAg
ICAgICAgfHwgISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJPbWl0Q29uc3RydWN0
b3IifSAKKyAgICAgICAgICAgICAgICAgfHwgISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJPbWl0Q29uc3RydWN0b3IifQogICAgICAgICAgICAgICAgICB8fCAkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW5kZXhlZEdldHRlciJ9CiAgICAgICAgICAgICAgICAgIHx8
ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOdW1lcmljSW5kZXhlZEdldHRlciJ9
CiAgICAgICAgICAgICAgICAgIHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJK
U0N1c3RvbUdldE93blByb3BlcnR5U2xvdEFuZERlc2NyaXB0b3IifQpAQCAtMjAyOCw3ICsyMDI4
LDcgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgQmFzZTo6cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIHNsb3QpO1xuIik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKLSAgICAgICAgICAgICAgICAKKwogICAg
ICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9t
SW5kZXhlZFNldHRlciJ9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0
b21OYW1lZFNldHRlciJ9KSB7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAidm9pZCAke2NsYXNzTmFtZX06OnB1dEJ5SW5kZXgoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUq
IGV4ZWMsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlLCBib29sIHNob3VsZFRocm93KVxu
Iik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7CkBAIC0y
MDQxLDE0ICsyMDQxLDE0IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuO1xuIik7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAg
ICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVk
U2V0dGVyIn0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGlu
ZGV4KTtcbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgUHV0UHJvcGVydHlTbG90IHNsb3Qoc2hvdWxkVGhyb3cpO1xuIik7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAodGhpc09iamVjdC0+cHV0RGVs
ZWdhdGUoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCkpXG4iKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKICAg
ICAgICAgICAgICAgICAgICAgfQotICAgIAorCiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIEJhc2U6OnB1dEJ5SW5kZXgoY2VsbCwgZXhlYywgaW5kZXgsIHZhbHVl
LCBzaG91bGRUaHJvdyk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ9XG5cbiIpOwogICAgICAgICAgICAgICAgIH0KQEAgLTIyMzMsNyArMjIzMyw3IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIGRpZSAiTm8gd2F5
IHRvIGhhbmRsZSBpbnRlcmZhY2Ugd2l0aCBSZXBsYWNlYWJsZUNvbnN0cnVjdG9yIGV4dGVuZGVk
IGF0dHJpYnV0ZTogJGludGVyZmFjZU5hbWUiOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7Ci0gICAgICAgICAgICB9ICAgICAg
ICAKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIApAQCAtMjI5MCw3ICsyMjkwLDcg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgJGltcGxJbmNsdWRl
c3siPHJ1bnRpbWUvRXJyb3IuaD4ifSA9IDE7CiAKLSAgICAgICAgICAgIGlmICgkZnVuY3Rpb24t
PmlzU3RhdGljKSB7CisgICAgICAgICAgICBpZiAoTWFrZXNTdGF0aWNDYWxsKCRmdW5jdGlvbikp
IHsKICAgICAgICAgICAgICAgICBpZiAoJGlzQ3VzdG9tKSB7CiAgICAgICAgICAgICAgICAgICAg
IEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjayhcQGltcGxDb250ZW50LCAkZnVuY3Rpb24sICRp
bnRlcmZhY2UpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKCR7Y2xhc3NOYW1lfTo6IiAuICRmdW5jdGlvbkltcGxlbWVu
dGF0aW9uTmFtZSAuICIoZXhlYykpO1xuIik7CkBAIC0yNjY5LDkgKzI2NjksOSBAQCBzdWIgR2Vu
ZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICBteSAkaW1wbGVtZW50ZWRCeSA9ICRmdW5jdGlvbi0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9OwogICAgIGlm
ICgkaW1wbGVtZW50ZWRCeSkgewogICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiJHtpbXBsZW1l
bnRlZEJ5fS5oIik7Ci0gICAgICAgIHVuc2hpZnQoQGFyZ3VtZW50cywgImltcGwiKSBpZiAhJGZ1
bmN0aW9uLT5pc1N0YXRpYzsKKyAgICAgICAgdW5zaGlmdChAYXJndW1lbnRzLCAiaW1wbCIpIGlm
ICFNYWtlc1N0YXRpY0NhbGwoJGZ1bmN0aW9uKTsKICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICIk
e2ltcGxlbWVudGVkQnl9Ojoke2Z1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lfSI7Ci0gICAgfSBl
bHNpZiAoJGZ1bmN0aW9uLT5pc1N0YXRpYykgeworICAgIH0gZWxzaWYgKE1ha2VzU3RhdGljQ2Fs
bCgkZnVuY3Rpb24pKSB7CiAgICAgICAgICRmdW5jdGlvbk5hbWUgPSAiJHtpbnRlcmZhY2VOYW1l
fTo6JHtmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZX0iOwogICAgIH0gZWxzaWYgKCRzdmdQcm9w
ZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSBhbmQgISRzdmdMaXN0UHJvcGVydHlUeXBlKSB7CiAgICAg
ICAgICRmdW5jdGlvbk5hbWUgPSAicG9kSW1wbC4ke2Z1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1l
fSI7CkBAIC0zMDU0LDcgKzMwNTQsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0
aW9uQ2FsbCgpCiAKICAgICAgICAgaWYgKCRzdmdQcm9wZXJ0eVR5cGUgYW5kICEkZnVuY3Rpb24t
PmlzU3RhdGljKSB7CiAgICAgICAgICAgICBpZiAoQHskZnVuY3Rpb24tPnJhaXNlc0V4Y2VwdGlv
bnN9KSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiaWYg
KCFlYylcbiIpOyAKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAu
ICJpZiAoIWVjKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRl
bnQgLiAiICAgIGltcGwtPmNvbW1pdENoYW5nZSgpO1xuIik7CiAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gImltcGwtPmNv
bW1pdENoYW5nZSgpO1xuIik7CkBAIC0zMTA3LDcgKzMxMDcsNyBAQCBteSAlbmF0aXZlVHlwZSA9
ICgKICAgICAibG9uZyBsb25nIiA9PiAibG9uZyBsb25nIiwKICAgICAidW5zaWduZWQgbG9uZyBs
b25nIiA9PiAidW5zaWduZWQgbG9uZyBsb25nIiwKICAgICAiTWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ciIgPT4gIlJlZlB0cjxNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiIsCi0gICAgIkRPTVRpbWVTdGFt
cCIgPT4gIkRPTVRpbWVTdGFtcCIsICAgIAorICAgICJET01UaW1lU3RhbXAiID0+ICJET01UaW1l
U3RhbXAiLAogKTsKIAogc3ViIEdldE5hdGl2ZVR5cGUKQEAgLTMxNjAsNyArMzE2MCw3IEBAIHN1
YiBHZXRTVkdQcm9wZXJ0eVR5cGVzCiAgICAgbXkgJHN2Z05hdGl2ZVR5cGU7CiAKICAgICByZXR1
cm4gKCRzdmdQcm9wZXJ0eVR5cGUsICRzdmdMaXN0UHJvcGVydHlUeXBlLCAkc3ZnTmF0aXZlVHlw
ZSkgaWYgbm90ICRpbXBsVHlwZSA9fiAvU1ZHLzsKLSAgICAKKwogICAgICRzdmdOYXRpdmVUeXBl
ID0gJGNvZGVHZW5lcmF0b3ItPkdldFNWR1R5cGVOZWVkaW5nVGVhck9mZigkaW1wbFR5cGUpOwog
ICAgIHJldHVybiAoJHN2Z1Byb3BlcnR5VHlwZSwgJHN2Z0xpc3RQcm9wZXJ0eVR5cGUsICRzdmdO
YXRpdmVUeXBlKSBpZiBub3QgJHN2Z05hdGl2ZVR5cGU7CiAKQEAgLTM1MzAsNyArMzUzMCw3IEBA
IHN1YiBHZW5lcmF0ZUhhc2hUYWJsZQogICAgICAgICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5n
ID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmdGcm9tQXR0cmlidXRl
VmFsdWUoJGNvbmRpdGlvbmFsKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lm
ICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKTsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAg
ICBpZiAoIkAkc3BlY2lhbHNbJGldIiA9fiBtL0Z1bmN0aW9uLykgewogICAgICAgICAgICAgJHRh
cmdldFR5cGUgPSAic3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+IjsKICAgICAgICAgfSBlbHNl
IHsKQEAgLTQwOTAsNiArNDA5MCwxMiBAQCBzdWIgSGFzQ3VzdG9tTWV0aG9kCiAgICAgcmV0dXJu
ICRhdHRyRXh0LT57IkN1c3RvbSJ9IHx8ICRhdHRyRXh0LT57IkpTQ3VzdG9tIn07CiB9CiAKK3N1
YiBNYWtlc1N0YXRpY0NhbGwKK3sKKyAgICBteSAkZnVuY3Rpb24gPSBzaGlmdDsKKyAgICByZXR1
cm4gJGZ1bmN0aW9uLT5pc1N0YXRpYyB8fCAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkxlbmllbnRUaGlzIn07Cit9CisKIHN1YiBJc0NvbnN0cnVjdGFibGUKIHsK
ICAgICBteSAkaW50ZXJmYWNlID0gc2hpZnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQJKHJldmlzaW9uIDE0ODEwNSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTg3LDYgKzg3LDcgQEAgSlNJbmxpbmVHZXRPd25Qcm9wZXJ0eVNsb3QKIEpT
TGVnYWN5UGFyZW50PSoKIEpTTm9TdGF0aWNUYWJsZXMKIEpTV2luZG93RXZlbnRMaXN0ZW5lcgor
TGVuaWVudFRoaXMKIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQKIE5hbWVkQ29uc3RydWN0b3I9Kgog
TmFtZWRHZXR0ZXIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0T2JqLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdE9iai5pZGwJKHJldmlzaW9uIDE0ODEwNSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTAwLDEx
ICsxMDAsMTEgQEAgZW51bSBUZXN0RW51bVR5cGUgeyAiIiwgIkVudW1WYWx1ZTEiLCAiRQogICAg
IFtDdXN0b21dIHZvaWQgY3VzdG9tTWV0aG9kKCk7CiAgICAgW0N1c3RvbV0gdm9pZCBjdXN0b21N
ZXRob2RXaXRoQXJncyhpbiBsb25nIGxvbmdBcmcsIGluIERPTVN0cmluZyBzdHJBcmcsIGluIFRl
c3RPYmogb2JqQXJnKTsKIAotICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcg
dHlwZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVu
ZXIsIAorICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOwotICAg
IHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwgCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsIAorICAgIHZvaWQg
cmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOwogCiAgICAgLy8g
J0NhbGxXaXRoJyBleHRlbmRlZCBhdHRyaWJ1dGUKQEAgLTE3MSw3ICsxNzEsNyBAQCBlbnVtIFRl
c3RFbnVtVHlwZSB7ICIiLCAiRW51bVZhbHVlMSIsICJFCiAgICAgW0NhY2hlZEF0dHJpYnV0ZV0g
cmVhZG9ubHkgYXR0cmlidXRlIGFueSBjYWNoZWRBdHRyaWJ1dGUxOwogICAgIFtDYWNoZWRBdHRy
aWJ1dGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBhbnkgY2FjaGVkQXR0cmlidXRlMjsKICNlbmRpZgot
ICAgIAorCiAgICAgYXR0cmlidXRlIGFueSBhbnlBdHRyaWJ1dGU7CiAKICNpZiBkZWZpbmVkKFRF
U1RJTkdfSlMpCkBAIC0xOTQsNiArMTk0LDkgQEAgZW51bSBUZXN0RW51bVR5cGUgeyAiIiwgIkVu
dW1WYWx1ZTEiLCAiRQogICAgIHN0YXRpYyBsb25nIGNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKGlu
IFtPcHRpb25hbF0gbG9uZyBhcmcpOwogICAgIFtDdXN0b21dIHN0YXRpYyB2b2lkIGNsYXNzTWV0
aG9kMihpbiBsb25nIGFyZyk7CiAKKyAgICAvLyBTdGF0aWMgbWV0aG9kcyBkZWZpbmVkIG9uIGlu
c3RhbmNlcyAobGlrZSBjb25zb2xlLmxvZykuCisgICAgW0xlbmllbnRUaGlzXSB2b2lkIGxlbmll
bnRUaGlzTWV0aG9kKGluIERPTVN0cmluZyBzdHIpOworCiAgICAgLy8gU3RhdGljIG1ldGhvZCB3
aXRoIGNvbmRpdGlvbmFsIG9uIG92ZXJsb2FkZWQgbWV0aG9kcwogICAgIFtDb25kaXRpb25hbD1D
b25kaXRpb24xXSBzdGF0aWMgdm9pZCBvdmVybG9hZGVkTWV0aG9kMShpbiBsb25nIGFyZyk7CiAg
ICAgW0NvbmRpdGlvbmFsPUNvbmRpdGlvbjFdIHN0YXRpYyB2b2lkIG92ZXJsb2FkZWRNZXRob2Qx
KGluIFtTdHJpY3RUeXBlQ2hlY2tpbmddIERPTVN0cmluZyB0eXBlKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01U
ZXN0T2JqLmNwcAkocmV2aXNpb24gMTQ4MTA1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQ4
LDYgKzk0OCwxNCBAQCBpbnQgV2ViRE9NVGVzdE9iajo6Y2xhc3NNZXRob2RXaXRoT3B0aW9uCiAg
ICAgcmV0dXJuIGltcGwoKS0+Y2xhc3NNZXRob2RXaXRoT3B0aW9uYWwoYXJnKTsKIH0KIAordm9p
ZCBXZWJET01UZXN0T2JqOjpsZW5pZW50VGhpc01ldGhvZChjb25zdCBXZWJET01TdHJpbmcmIHN0
cikKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW1wbCgpLT5s
ZW5pZW50VGhpc01ldGhvZChzdHIpOworfQorCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKIHZv
aWQgV2ViRE9NVGVzdE9iajo6b3ZlcmxvYWRlZE1ldGhvZDEoaW50IGFyZykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9N
VGVzdE9iai5oCShyZXZpc2lvbiAxNDgxMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaAkod29ya2luZyBjb3B5KQpAQCAtMTg1LDYg
KzE4NSw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIHZvaWQgY2xhc3NNZXRob2QoKTsKICAgICBp
bnQgY2xhc3NNZXRob2RXaXRoT3B0aW9uYWwoaW50IGFyZyk7CisgICAgdm9pZCBsZW5pZW50VGhp
c01ldGhvZChjb25zdCBXZWJET01TdHJpbmcmIHN0cik7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEp
CiAgICAgdm9pZCBvdmVybG9hZGVkTWV0aG9kMShpbnQgYXJnKTsKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9i
ai5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5jcHAJKHJldmlzaW9uIDE0ODEwNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmou
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUyLDYgKzEzNTIsMTcgQEAgd2Via2l0X2RvbV90ZXN0
X29ial9jbGFzc19tZXRob2Rfd2l0aF9vcAogfQogCiB2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X2xlbmllbnRfdGhpc19tZXRob2QoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgY29uc3QgZ2NoYXIq
IHN0cikKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAg
Z19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1RfT0JKKHNlbGYpKTsKKyAgICBnX3Jl
dHVybl9pZl9mYWlsKHN0cik7CisgICAgV2ViQ29yZTo6VGVzdE9iaiogaXRlbSA9IFdlYktpdDo6
Y29yZShzZWxmKTsKKyAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRTdHIgPSBXVEY6OlN0cmluZzo6
ZnJvbVVURjgoc3RyKTsKKyAgICBpdGVtLT5sZW5pZW50VGhpc01ldGhvZChjb252ZXJ0ZWRTdHIp
OworfQorCit2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX292ZXJsb2FkZWRfbWV0aG9kMShXZWJL
aXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyBhcmcpCiB7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJL
aXRET01UZXN0T2JqLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCShyZXZpc2lvbiAxNDgxMDUpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01U
ZXN0T2JqLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4MCw2ICszODAsMTcgQEAgV0VCS0lUX0FQSSBn
bG9uZwogd2Via2l0X2RvbV90ZXN0X29ial9jbGFzc19tZXRob2Rfd2l0aF9vcHRpb25hbChXZWJL
aXRET01UZXN0T2JqKiBzZWxmLCBnbG9uZyBhcmcpOwogCiAvKioKKyAqIHdlYmtpdF9kb21fdGVz
dF9vYmpfbGVuaWVudF90aGlzX21ldGhvZDoKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2Jq
CisgKiBAc3RyOiBBICNnY2hhcgorICoKKyAqIFJldHVybnM6CisgKgorKiovCitXRUJLSVRfQVBJ
IHZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfbGVuaWVudF90aGlzX21ldGhvZChXZWJLaXRET01U
ZXN0T2JqKiBzZWxmLCBjb25zdCBnY2hhciogc3RyKTsKKworLyoqCiAgKiB3ZWJraXRfZG9tX3Rl
c3Rfb2JqX292ZXJsb2FkZWRfbWV0aG9kMToKICAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2Jq
CiAgKiBAYXJnOiBBICNnbG9uZwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHJldmlzaW9uIDE0ODEwNSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMTQsNiArMzE0LDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZh
bHVlIEpTVGVzdE9ialBybwogICAgIHsgImNvbmRpdGlvbmFsTWV0aG9kMyIsIERvbnREZWxldGUg
fCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QzKSwgKGludHB0cl90KTAs
IE5vSW50cmluc2ljIH0sCiAjZW5kaWYKICAgICB7ICJvdmVybG9hZGVkTWV0aG9kIiwgRG9udERl
bGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlv
bj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kKSwgKGludHB0cl90
KTIsIE5vSW50cmluc2ljIH0sCisgICAgeyAibGVuaWVudFRoaXNNZXRob2QiLCBEb250RGVsZXRl
IHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxlbmllbnRUaGlzTWV0aG9kKSwgKGludHB0cl90KTEs
IE5vSW50cmluc2ljIH0sCiAgICAgeyAiY2xhc3NNZXRob2RXaXRoQ2xhbXAiLCBEb250RGVsZXRl
IHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wKSwgKGludHB0cl90
KTIsIE5vSW50cmluc2ljIH0sCiAgICAgeyAibWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNl
IiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRp
dmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVW5zaWduZWRM
b25nU2VxdWVuY2UpLCAoaW50cHRyX3QpMSwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJzdHJpbmdB
cnJheUZ1bmN0aW9uIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0
aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdB
cnJheUZ1bmN0aW9uKSwgKGludHB0cl90KTEsIE5vSW50cmluc2ljIH0sCkBAIC0yNjI1LDYgKzI2
MjYsMTcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDbwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0T2JqOjpjbGFzc01ldGhvZDIoZXhlYykpOwogfQog
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TGVuaWVudFRoaXNNZXRob2QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmIChleGVjLT5hcmd1
bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKyAgICBjb25zdCBTdHJpbmcmIHN0cihl
eGVjLT5hcmd1bWVudCgwKS5pc0VtcHR5KCkgPyBTdHJpbmcoKSA6IGV4ZWMtPmFyZ3VtZW50KDAp
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAg
IFRlc3RPYmo6OmxlbmllbnRUaGlzTWV0aG9kKHN0cik7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKK30KKwogI2lmIEVOQUJMRShDb25kaXRpb24xKQogc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2QxMShFeGVjU3RhdGUqIGV4ZWMpCiB7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCShyZXZp
c2lvbiAxNDgxMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMyw2ICsyMDMsNyBAQCBKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kKEpTQzo6RXhl
Y1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29u
c3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsKEpTQzo6RXhlY1N0YXRlKik7
CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JG
dW5jdGlvbkNsYXNzTWV0aG9kMihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTGVuaWVudFRoaXNNZXRo
b2QoSlNDOjpFeGVjU3RhdGUqKTsKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZDEoSlNDOjpFeGVjU3RhdGUqKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaAko
cmV2aXNpb24gMTQ4MTA1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdE9iai5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsNiArMTY1LDcgQEAgZW51
bSB7CiAtICh2b2lkKWNsYXNzTWV0aG9kOwogLSAoaW50KWNsYXNzTWV0aG9kV2l0aE9wdGlvbmFs
OihpbnQpYXJnOwogLSAodm9pZCljbGFzc01ldGhvZDI6KGludClhcmc7CistICh2b2lkKWxlbmll
bnRUaGlzTWV0aG9kOihOU1N0cmluZyAqKXN0cjsKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKIC0g
KHZvaWQpb3ZlcmxvYWRlZE1ldGhvZDE6KGludClhcmc7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9i
ai5tbQkocmV2aXNpb24gMTQ4MTA1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAxMiw2ICsxMDEy
LDEyIEBAIC0gKHZvaWQpY2xhc3NNZXRob2QyOihpbnQpYXJnCiAgICAgSU1QTC0+Y2xhc3NNZXRo
b2QyKGFyZyk7CiB9CiAKKy0gKHZvaWQpbGVuaWVudFRoaXNNZXRob2Q6KE5TU3RyaW5nICopc3Ry
Cit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIElNUEwt
PmxlbmllbnRUaGlzTWV0aG9kKHN0cik7Cit9CisKIAogI2lmIEVOQUJMRShDb25kaXRpb24xKQog
LSAodm9pZClvdmVybG9hZGVkTWV0aG9kMTooaW50KWFyZwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9Db25zb2xlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNv
bGUuY3BwCShyZXZpc2lvbiAxNDgxMDUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTUsMTIgKzExNSwxMiBAQCBzdGF0aWMgdm9pZCBpbnRl
cm5hbEFkZE1lc3NhZ2UoUGFnZSogcGFnCiAKIHZvaWQgQ29uc29sZTo6ZGVidWcoU2NyaXB0U3Rh
dGUqIHN0YXRlLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzKQogewotICAg
IGludGVybmFsQWRkTWVzc2FnZShwYWdlKCksIExvZ01lc3NhZ2VUeXBlLCBEZWJ1Z01lc3NhZ2VM
ZXZlbCwgc3RhdGUsIGFyZ3VtZW50cyk7CisgICAgaW50ZXJuYWxBZGRNZXNzYWdlKHBhZ2VGcm9t
U2NyaXB0U3RhdGUoc3RhdGUpLCBMb2dNZXNzYWdlVHlwZSwgRGVidWdNZXNzYWdlTGV2ZWwsIHN0
YXRlLCBhcmd1bWVudHMpOwogfQogCiB2b2lkIENvbnNvbGU6OmVycm9yKFNjcmlwdFN0YXRlKiBz
dGF0ZSwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cykKIHsKLSAgICBpbnRl
cm5hbEFkZE1lc3NhZ2UocGFnZSgpLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWws
IHN0YXRlLCBhcmd1bWVudHMpOworICAgIGludGVybmFsQWRkTWVzc2FnZShwYWdlRnJvbVNjcmlw
dFN0YXRlKHN0YXRlKSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBzdGF0ZSwg
YXJndW1lbnRzKTsKIH0KIAogdm9pZCBDb25zb2xlOjppbmZvKFNjcmlwdFN0YXRlKiBzdGF0ZSwg
UGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cykKQEAgLTEzMCwzNyArMTMwLDM3
IEBAIHZvaWQgQ29uc29sZTo6aW5mbyhTY3JpcHRTdGF0ZSogc3RhdGUsIFAKIAogdm9pZCBDb25z
b2xlOjpsb2coU2NyaXB0U3RhdGUqIHN0YXRlLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4g
YXJndW1lbnRzKQogewotICAgIGludGVybmFsQWRkTWVzc2FnZShwYWdlKCksIExvZ01lc3NhZ2VU
eXBlLCBMb2dNZXNzYWdlTGV2ZWwsIHN0YXRlLCBhcmd1bWVudHMpOworICAgIGludGVybmFsQWRk
TWVzc2FnZShwYWdlRnJvbVNjcmlwdFN0YXRlKHN0YXRlKSwgTG9nTWVzc2FnZVR5cGUsIExvZ01l
c3NhZ2VMZXZlbCwgc3RhdGUsIGFyZ3VtZW50cyk7CiB9CiAKIHZvaWQgQ29uc29sZTo6d2FybihT
Y3JpcHRTdGF0ZSogc3RhdGUsIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMp
CiB7Ci0gICAgaW50ZXJuYWxBZGRNZXNzYWdlKHBhZ2UoKSwgTG9nTWVzc2FnZVR5cGUsIFdhcm5p
bmdNZXNzYWdlTGV2ZWwsIHN0YXRlLCBhcmd1bWVudHMpOworICAgIGludGVybmFsQWRkTWVzc2Fn
ZShwYWdlRnJvbVNjcmlwdFN0YXRlKHN0YXRlKSwgTG9nTWVzc2FnZVR5cGUsIFdhcm5pbmdNZXNz
YWdlTGV2ZWwsIHN0YXRlLCBhcmd1bWVudHMpOwogfQogCiB2b2lkIENvbnNvbGU6OmRpcihTY3Jp
cHRTdGF0ZSogc3RhdGUsIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMpCiB7
Ci0gICAgaW50ZXJuYWxBZGRNZXNzYWdlKHBhZ2UoKSwgRGlyTWVzc2FnZVR5cGUsIExvZ01lc3Nh
Z2VMZXZlbCwgc3RhdGUsIGFyZ3VtZW50cyk7CisgICAgaW50ZXJuYWxBZGRNZXNzYWdlKHBhZ2VG
cm9tU2NyaXB0U3RhdGUoc3RhdGUpLCBEaXJNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBz
dGF0ZSwgYXJndW1lbnRzKTsKIH0KIAogdm9pZCBDb25zb2xlOjpkaXJ4bWwoU2NyaXB0U3RhdGUq
IHN0YXRlLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzKQogewotICAgIGlu
dGVybmFsQWRkTWVzc2FnZShwYWdlKCksIERpclhNTE1lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2
ZWwsIHN0YXRlLCBhcmd1bWVudHMpOworICAgIGludGVybmFsQWRkTWVzc2FnZShwYWdlRnJvbVNj
cmlwdFN0YXRlKHN0YXRlKSwgRGlyWE1MTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgc3Rh
dGUsIGFyZ3VtZW50cyk7CiB9CiAKIHZvaWQgQ29uc29sZTo6dGFibGUoU2NyaXB0U3RhdGUqIHN0
YXRlLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1lbnRzKQogewotICAgIGludGVy
bmFsQWRkTWVzc2FnZShwYWdlKCksIFRhYmxlTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwg
c3RhdGUsIGFyZ3VtZW50cyk7CisgICAgaW50ZXJuYWxBZGRNZXNzYWdlKHBhZ2VGcm9tU2NyaXB0
U3RhdGUoc3RhdGUpLCBUYWJsZU1lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIHN0YXRlLCBh
cmd1bWVudHMpOwogfQogCiB2b2lkIENvbnNvbGU6OmNsZWFyKFNjcmlwdFN0YXRlKiBzdGF0ZSwg
UGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cykKIHsKLSAgICBpbnRlcm5hbEFk
ZE1lc3NhZ2UocGFnZSgpLCBDbGVhck1lc3NhZ2VUeXBlLCBMb2dNZXNzYWdlTGV2ZWwsIHN0YXRl
LCBhcmd1bWVudHMsIHRydWUpOworICAgIGludGVybmFsQWRkTWVzc2FnZShwYWdlRnJvbVNjcmlw
dFN0YXRlKHN0YXRlKSwgQ2xlYXJNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVsLCBzdGF0ZSwg
YXJndW1lbnRzLCB0cnVlKTsKIH0KIAogdm9pZCBDb25zb2xlOjp0cmFjZShTY3JpcHRTdGF0ZSog
c3RhdGUsIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMpCiB7Ci0gICAgaW50
ZXJuYWxBZGRNZXNzYWdlKHBhZ2UoKSwgVHJhY2VNZXNzYWdlVHlwZSwgTG9nTWVzc2FnZUxldmVs
LCBzdGF0ZSwgYXJndW1lbnRzLCB0cnVlLCB0cnVlKTsKKyAgICBpbnRlcm5hbEFkZE1lc3NhZ2Uo
cGFnZUZyb21TY3JpcHRTdGF0ZShzdGF0ZSksIFRyYWNlTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VM
ZXZlbCwgc3RhdGUsIGFyZ3VtZW50cywgdHJ1ZSwgdHJ1ZSk7CiB9CiAKIHZvaWQgQ29uc29sZTo6
YXNzZXJ0Q29uZGl0aW9uKFNjcmlwdFN0YXRlKiBzdGF0ZSwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1
bWVudHM+IGFyZ3VtZW50cywgYm9vbCBjb25kaXRpb24pCkBAIC0xNzMsNyArMTczLDcgQEAgdm9p
ZCBDb25zb2xlOjphc3NlcnRDb25kaXRpb24oU2NyaXB0U3RhdAogCiB2b2lkIENvbnNvbGU6OmNv
dW50KFNjcmlwdFN0YXRlKiBzdGF0ZSwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3Vt
ZW50cykKIHsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudChwYWdl
KCksIHN0YXRlLCBhcmd1bWVudHMpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29u
c29sZUNvdW50KHBhZ2VGcm9tU2NyaXB0U3RhdGUoc3RhdGUpLCBzdGF0ZSwgYXJndW1lbnRzKTsK
IH0KIAogdm9pZCBDb25zb2xlOjptYXJrVGltZWxpbmUoUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVu
dHM+IGFyZ3VtZW50cykKQEAgLTI2OSw0ICsyNjksMTUgQEAgUGFnZSogQ29uc29sZTo6cGFnZSgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fZnJhbWUtPnBhZ2UoKTsKIH0KIAorUGFnZSogQ29uc29sZTo6
cGFnZUZyb21TY3JpcHRTdGF0ZShTY3JpcHRTdGF0ZSogc3RhdGUpCit7CisgICAgRE9NV2luZG93
KiB3aW5kb3cgPSBkb21XaW5kb3dGcm9tU2NyaXB0U3RhdGUoc3RhdGUpOworICAgIGlmICghd2lu
ZG93KQorICAgICAgICByZXR1cm4gMDsKKyAgICBDb25zb2xlKiBjb25zb2xlID0gd2luZG93LT5j
b25zb2xlKCk7CisgICAgaWYgKCFjb25zb2xlKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gY29uc29sZS0+cGFnZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0NvbnNvbGUuaAkocmV2aXNpb24gMTQ4MTA1KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9Db25zb2xlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDE4ICs1MywxOCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8Q29uc29sZT4gY3JlYXRlKEZyYW1lKiBmcmFtZSkgeyByZXR1
cm4gYWRvcHRSZWYobmV3IENvbnNvbGUoZnJhbWUpKTsgfQogICAgIHZpcnR1YWwgfkNvbnNvbGUo
KTsKIAotICAgIHZvaWQgZGVidWcoU2NyaXB0U3RhdGUqLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3Vt
ZW50cz4pOwotICAgIHZvaWQgZXJyb3IoU2NyaXB0U3RhdGUqLCBQYXNzUmVmUHRyPFNjcmlwdEFy
Z3VtZW50cz4pOwotICAgIHZvaWQgaW5mbyhTY3JpcHRTdGF0ZSosIFBhc3NSZWZQdHI8U2NyaXB0
QXJndW1lbnRzPik7Ci0gICAgdm9pZCBsb2coU2NyaXB0U3RhdGUqLCBQYXNzUmVmUHRyPFNjcmlw
dEFyZ3VtZW50cz4pOwotICAgIHZvaWQgY2xlYXIoU2NyaXB0U3RhdGUqLCBQYXNzUmVmUHRyPFNj
cmlwdEFyZ3VtZW50cz4pOwotICAgIHZvaWQgd2FybihTY3JpcHRTdGF0ZSosIFBhc3NSZWZQdHI8
U2NyaXB0QXJndW1lbnRzPik7Ci0gICAgdm9pZCBkaXIoU2NyaXB0U3RhdGUqLCBQYXNzUmVmUHRy
PFNjcmlwdEFyZ3VtZW50cz4pOwotICAgIHZvaWQgZGlyeG1sKFNjcmlwdFN0YXRlKiwgUGFzc1Jl
ZlB0cjxTY3JpcHRBcmd1bWVudHM+KTsKLSAgICB2b2lkIHRhYmxlKFNjcmlwdFN0YXRlKiwgUGFz
c1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+KTsKLSAgICB2b2lkIHRyYWNlKFNjcmlwdFN0YXRlKiwg
UGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+KTsKKyAgICBzdGF0aWMgdm9pZCBkZWJ1ZyhTY3Jp
cHRTdGF0ZSosIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPik7CisgICAgc3RhdGljIHZvaWQg
ZXJyb3IoU2NyaXB0U3RhdGUqLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4pOworICAgIHN0
YXRpYyB2b2lkIGluZm8oU2NyaXB0U3RhdGUqLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4p
OworICAgIHN0YXRpYyB2b2lkIGxvZyhTY3JpcHRTdGF0ZSosIFBhc3NSZWZQdHI8U2NyaXB0QXJn
dW1lbnRzPik7CisgICAgc3RhdGljIHZvaWQgY2xlYXIoU2NyaXB0U3RhdGUqLCBQYXNzUmVmUHRy
PFNjcmlwdEFyZ3VtZW50cz4pOworICAgIHN0YXRpYyB2b2lkIHdhcm4oU2NyaXB0U3RhdGUqLCBQ
YXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4pOworICAgIHN0YXRpYyB2b2lkIGRpcihTY3JpcHRT
dGF0ZSosIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPik7CisgICAgc3RhdGljIHZvaWQgZGly
eG1sKFNjcmlwdFN0YXRlKiwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+KTsKKyAgICBzdGF0
aWMgdm9pZCB0YWJsZShTY3JpcHRTdGF0ZSosIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPik7
CisgICAgc3RhdGljIHZvaWQgdHJhY2UoU2NyaXB0U3RhdGUqLCBQYXNzUmVmUHRyPFNjcmlwdEFy
Z3VtZW50cz4pOwogICAgIHZvaWQgYXNzZXJ0Q29uZGl0aW9uKFNjcmlwdFN0YXRlKiwgUGFzc1Jl
ZlB0cjxTY3JpcHRBcmd1bWVudHM+LCBib29sIGNvbmRpdGlvbik7Ci0gICAgdm9pZCBjb3VudChT
Y3JpcHRTdGF0ZSosIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPik7CisgICAgc3RhdGljIHZv
aWQgY291bnQoU2NyaXB0U3RhdGUqLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4pOwogICAg
IHZvaWQgbWFya1RpbWVsaW5lKFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPik7CiAjaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgY29uc3QgUHJvZmlsZXNBcnJheSYgcHJvZmls
ZXMoKSBjb25zdCB7IHJldHVybiBtX3Byb2ZpbGVzOyB9CkBAIC04NSw2ICs4NSw4IEBAIHByaXZh
dGU6CiAKICAgICBleHBsaWNpdCBDb25zb2xlKEZyYW1lKik7CiAKKyAgICBpbmxpbmUgc3RhdGlj
IFBhZ2UqIHBhZ2VGcm9tU2NyaXB0U3RhdGUoU2NyaXB0U3RhdGUqKTsKKwogI2lmIEVOQUJMRShK
QVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIFByb2ZpbGVzQXJyYXkgbV9wcm9maWxlczsKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Db25zb2xlLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaWRsCShyZXZpc2lvbiAxNDgxMDUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NvbnNvbGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxNSArMzEs
MTUgQEAKICAgICBPbWl0Q29uc3RydWN0b3IKIF0gaW50ZXJmYWNlIENvbnNvbGUgewogCi0gICAg
W0NhbGxXaXRoPVNjcmlwdEFyZ3VtZW50c3xTY3JpcHRTdGF0ZV0gdm9pZCBkZWJ1ZygpOwotICAg
IFtDYWxsV2l0aD1TY3JpcHRBcmd1bWVudHN8U2NyaXB0U3RhdGVdIHZvaWQgZXJyb3IoKTsKLSAg
ICBbQ2FsbFdpdGg9U2NyaXB0QXJndW1lbnRzfFNjcmlwdFN0YXRlXSB2b2lkIGluZm8oKTsKLSAg
ICBbQ2FsbFdpdGg9U2NyaXB0QXJndW1lbnRzfFNjcmlwdFN0YXRlXSB2b2lkIGxvZygpOwotICAg
IFtDYWxsV2l0aD1TY3JpcHRBcmd1bWVudHN8U2NyaXB0U3RhdGVdIHZvaWQgd2FybigpOwotICAg
IFtDYWxsV2l0aD1TY3JpcHRBcmd1bWVudHN8U2NyaXB0U3RhdGVdIHZvaWQgZGlyKCk7Ci0gICAg
W0NhbGxXaXRoPVNjcmlwdEFyZ3VtZW50c3xTY3JpcHRTdGF0ZV0gdm9pZCBkaXJ4bWwoKTsKLSAg
ICBbQ2FsbFdpdGg9U2NyaXB0QXJndW1lbnRzfFNjcmlwdFN0YXRlXSB2b2lkIHRhYmxlKCk7Ci0g
ICAgW0NhbGxXaXRoPVNjcmlwdEFyZ3VtZW50c3xTY3JpcHRTdGF0ZV0gdm9pZCB0cmFjZSgpOwor
ICAgIFtDYWxsV2l0aD1TY3JpcHRBcmd1bWVudHN8U2NyaXB0U3RhdGUsIExlbmllbnRUaGlzXSB2
b2lkIGRlYnVnKCk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEFyZ3VtZW50c3xTY3JpcHRTdGF0ZSwg
TGVuaWVudFRoaXNdIHZvaWQgZXJyb3IoKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0QXJndW1lbnRz
fFNjcmlwdFN0YXRlLCBMZW5pZW50VGhpc10gdm9pZCBpbmZvKCk7CisgICAgW0NhbGxXaXRoPVNj
cmlwdEFyZ3VtZW50c3xTY3JpcHRTdGF0ZSwgTGVuaWVudFRoaXNdIHZvaWQgbG9nKCk7CisgICAg
W0NhbGxXaXRoPVNjcmlwdEFyZ3VtZW50c3xTY3JpcHRTdGF0ZSwgTGVuaWVudFRoaXNdIHZvaWQg
d2FybigpOworICAgIFtDYWxsV2l0aD1TY3JpcHRBcmd1bWVudHN8U2NyaXB0U3RhdGUsIExlbmll
bnRUaGlzXSB2b2lkIGRpcigpOworICAgIFtDYWxsV2l0aD1TY3JpcHRBcmd1bWVudHN8U2NyaXB0
U3RhdGUsIExlbmllbnRUaGlzXSB2b2lkIGRpcnhtbCgpOworICAgIFtDYWxsV2l0aD1TY3JpcHRB
cmd1bWVudHN8U2NyaXB0U3RhdGUsIExlbmllbnRUaGlzXSB2b2lkIHRhYmxlKCk7CisgICAgW0Nh
bGxXaXRoPVNjcmlwdEFyZ3VtZW50c3xTY3JpcHRTdGF0ZSwgTGVuaWVudFRoaXNdIHZvaWQgdHJh
Y2UoKTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0QXJndW1lbnRzfFNjcmlwdFN0YXRlLCBJbXBsZW1l
bnRlZEFzPWFzc2VydENvbmRpdGlvbl0gdm9pZCBhc3NlcnQoaW4gYm9vbGVhbiBjb25kaXRpb24p
OwogICAgIFtDYWxsV2l0aD1TY3JpcHRBcmd1bWVudHN8U2NyaXB0U3RhdGVdIHZvaWQgY291bnQo
KTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0QXJndW1lbnRzXSB2b2lkIG1hcmtUaW1lbGluZSgpOwpA
QCAtNTksNyArNTksNyBAQAogICAgIFtDYWxsV2l0aD1TY3JpcHRBcmd1bWVudHN8U2NyaXB0U3Rh
dGVdIHZvaWQgZ3JvdXAoKTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0QXJndW1lbnRzfFNjcmlwdFN0
YXRlXSB2b2lkIGdyb3VwQ29sbGFwc2VkKCk7CiAgICAgdm9pZCBncm91cEVuZCgpOwotICAgIFtD
YWxsV2l0aD1TY3JpcHRBcmd1bWVudHN8U2NyaXB0U3RhdGVdIHZvaWQgY2xlYXIoKTsKKyAgICBb
Q2FsbFdpdGg9U2NyaXB0QXJndW1lbnRzfFNjcmlwdFN0YXRlLCBMZW5pZW50VGhpc10gdm9pZCBj
bGVhcigpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lbW9yeUluZm8gbWVtb3J5OwogfTsK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE0ODE1OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEzLTA0LTEwICBWaWN0b3IgQ29zdGFuICA8
Y29zdGFuQGdtYWlsLmNvbT4KKworICAgICAgICBDYWxsaW5nIGNvbnNvbGUue2xvZywgaW5mbywg
ZXJyb3IsIC4uLn0gc2hvdWxkIG5vdCByZXF1aXJlIHRoaXMgPT09IGNvbnNvbGUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDQwNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vV2luZG93
L2NvbnNvbGUtdW5ib3VuZC1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9XaW5kb3cvY29uc29sZS11bmJvdW5kLWZ1bmN0aW9ucy5odG1sOiBBZGRlZC4K
KwogMjAxMy0wNC0xMCAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBNYXNzIHJlbW92ZSBhbGwgdGhlIGVtcHR5IGRpcmVjdG9yaWVzCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvY29uc29sZS11bmJvdW5kLWZ1bmN0aW9ucy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2NvbnNvbGUt
dW5ib3VuZC1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vV2luZG93L2NvbnNvbGUtdW5ib3VuZC1mdW5jdGlvbnMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTE6
IGNvbnNvbGUubG9nKCkgY2FsbGVkLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEzOiBjb25zb2xl
LmluZm8oKSBjYWxsZWQuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTU6IGNvbnNvbGUud2Fybigp
IGNhbGxlZC4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxNzogY29uc29sZS5lcnJvcigpIGNhbGxl
ZC4KK1Rlc3RzIHdpbmRvdy5jb25zb2xlIGZ1bmN0aW9ucyB3aGVuICJ0aGlzIiBpcyBub3Qgc2V0
IHRvIGNvbnNvbGUuIFRvIG1ha2Ugc3VyZSB0aGlzIHRlc3QgcGFzc2VkIHlvdSBtdXN0IGNoZWNr
IHRoZSBjb25zb2xlIGZvciB0aGUgZm9sbG93aW5nIDQgbWVzc2FnZXM6CisKK2NvbnNvbGUubG9n
KCkgY2FsbGVkLgorY29uc29sZS5pbmZvKCkgY2FsbGVkLgorY29uc29sZS53YXJuKCkgY2FsbGVk
LgorY29uc29sZS5lcnJvcigpIGNhbGxlZC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dp
bmRvdy9jb25zb2xlLXVuYm91bmQtZnVuY3Rpb25zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vV2luZG93L2NvbnNvbGUtdW5ib3VuZC1mdW5jdGlvbnMuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9jb25zb2xlLXVuYm91bmQt
ZnVuY3Rpb25zLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
CisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworCisgICAgICAgICAgICB2YXIgbG9nID0gY29uc29sZS5sb2c7CisgICAgICAgICAgICBs
b2coImNvbnNvbGUubG9nKCkgY2FsbGVkLiIpOworICAgICAgICAgICAgdmFyIGluZm8gPSBjb25z
b2xlLmluZm87CisgICAgICAgICAgICBpbmZvKCJjb25zb2xlLmluZm8oKSBjYWxsZWQuIik7Cisg
ICAgICAgICAgICB2YXIgd2FybiA9IGNvbnNvbGUud2FybjsKKyAgICAgICAgICAgIHdhcm4oImNv
bnNvbGUud2FybigpIGNhbGxlZC4iKTsKKyAgICAgICAgICAgIHZhciBlcnJvciA9IGNvbnNvbGUu
ZXJyb3I7CisgICAgICAgICAgICBlcnJvcigiY29uc29sZS5lcnJvcigpIGNhbGxlZC4iKTsKKyAg
ICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0cygp
OyI+CisgICAgPHA+VGVzdHMgd2luZG93LmNvbnNvbGUgZnVuY3Rpb25zIHdoZW4gInRoaXMiIGlz
IG5vdCBzZXQgdG8gY29uc29sZS4gIFRvIG1ha2Ugc3VyZSB0aGlzIHRlc3QgcGFzc2VkIHlvdSBt
dXN0IGNoZWNrIHRoZSBjb25zb2xlIGZvciB0aGUgZm9sbG93aW5nIDQgbWVzc2FnZXM6PC9wPgor
ICAgIDx1bD4KKyAgICAgICAgPGxpPmNvbnNvbGUubG9nKCkgY2FsbGVkLjwvbGk+CisgICAgICAg
IDxsaT5jb25zb2xlLmluZm8oKSBjYWxsZWQuPC9saT4KKyAgICAgICAgPGxpPmNvbnNvbGUud2Fy
bigpIGNhbGxlZC48L2xpPgorICAgICAgICA8bGk+Y29uc29sZS5lcnJvcigpIGNhbGxlZC48L2xp
PgorICAgIDwvdWw+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>