<?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>16420</bug_id>
          
          <creation_ts>2007-12-13 09:37:44 -0800</creation_ts>
          <short_desc>change regression tests to use document.execCommand instead of textInputController.doCommand</short_desc>
          <delta_ts>2007-12-14 12:05:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>ap</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>64085</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-12-13 09:37:44 -0800</bug_when>
    <thetext>document.execCommand is cross-platform, and textInputController.doCommand is Mac OS X only.

So we should change cross-platform tests to use execCommand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64086</commentid>
    <comment_count>1</comment_count>
      <attachid>17874</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-12-13 09:55:11 -0800</bug_when>
    <thetext>Created attachment 17874
work in progress (includes some unrelated changes)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64169</commentid>
    <comment_count>2</comment_count>
      <attachid>17892</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-12-14 09:42:19 -0800</bug_when>
    <thetext>Created attachment 17892
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64181</commentid>
    <comment_count>3</comment_count>
      <attachid>17892</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-12-14 10:52:45 -0800</bug_when>
    <thetext>Comment on attachment 17892
patch

r=me

+        (WebCore::EventHandler::passMouseDownEventToWidget): Removed the special case code for
+        NSTextView. This was left over from when we used NSTextField and NSTextView for form
+        elements and is no longer used at all.

I think I heard about some plug-ins creating Cocoa views - can this break them?

+static bool verticalScrollDistance(Frame* frame)

This sounds like it should be int.

-if (window.layoutTestController)
-    textInputController.doCommand(&quot;selectLine:&quot;);
+document.execCommand(&quot;SelectLine&quot;);

Some of these tests have comments saying that they cannot be run outside DRT - perhaps these comments should be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64186</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-12-14 11:00:22 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 17892 [edit])
&gt; r=me
&gt; 
&gt; +        (WebCore::EventHandler::passMouseDownEventToWidget): Removed the
&gt; special case code for
&gt; +        NSTextView. This was left over from when we used NSTextField and
&gt; NSTextView for form
&gt; +        elements and is no longer used at all.
&gt; 
&gt; I think I heard about some plug-ins creating Cocoa views - can this break them?

These changes might have some small effect on such plug-ins, but I&apos;m pretty sure that the old behavior wasn&apos;t even particularly helpful for them. It was specifically aimed at our form elements; for example it only worked if the top level NSView in a plug-in was an NSTextField or NSTextView, which is highly unlikely.

&gt; +static bool verticalScrollDistance(Frame* frame)
&gt; 
&gt; This sounds like it should be int.

Uh oh! Good catch!

&gt; -if (window.layoutTestController)
&gt; -    textInputController.doCommand(&quot;selectLine:&quot;);
&gt; +document.execCommand(&quot;SelectLine&quot;);
&gt; 
&gt; Some of these tests have comments saying that they cannot be run outside DRT -
&gt; perhaps these comments should be removed.

Yes, I mentioned those in my ChangeLog.

+        To avoid changing results at this time, I didn&apos;t correct the many tests that now have
+        misleading &quot;this test cannot be run manually&quot; text or references to &quot;NSResponder&quot; or
+        uneeded instructions for running the test manually. We can do that on a later pass.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64197</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-12-14 12:05:19 -0800</bug_when>
    <thetext>Committed revision 28717.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17874</attachid>
            <date>2007-12-13 09:55:11 -0800</date>
            <delta_ts>2007-12-14 09:42:19 -0800</delta_ts>
            <desc>work in progress (includes some unrelated changes)</desc>
            <filename>PatchInProgress.txt</filename>
            <type>text/plain</type>
            <size>172666</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4Njg3KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTEgQEAKKzIwMDctMTItMTMgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIC0gcmVuYW1lIG1hbnkgZnVuY3Rpb25zIHRvIG1hdGNoIHVzdWFsIFdl
YktpdCBuYW1pbmcgc3R5bGUgYW5kIGZvciBjbGFyaXR5CisgICAgICAgIC0gYWRkIHNvbWUgYXNz
ZXJ0aW9ucworCisgICAgICAgICogcGNyZS9wY3JlX2NvbXBpbGUuY3BwOgorICAgICAgICAoZXJy
b3JUZXh0KToKKyAgICAgICAgKGNoZWNrX2VzY2FwZSk6CisgICAgICAgIChpc0NvdW50ZWRSZXBl
YXQpOgorICAgICAgICAocmVhZFJlcGVhdENvdW50cyk6CisgICAgICAgIChmaXJzdFNpZ25pZmlj
YW50T3Bjb2RlKToKKyAgICAgICAgKGZpcnN0U2lnbmlmaWNhbnRPcGNvZGVTa2lwcGluZ0Fzc2Vy
dGlvbnMpOgorICAgICAgICAoZ2V0T3RoZXJjYXNlUmFuZ2UpOgorICAgICAgICAoZW5jb2RlVVRG
OCk6CisgICAgICAgIChjb21waWxlQnJhbmNoKToKKyAgICAgICAgKGNvbXBpbGVCcmFja2V0KToK
KyAgICAgICAgKGJyYW5jaElzQW5jaG9yZWQpOgorICAgICAgICAoYnJhY2tldElzQW5jaG9yZWQp
OgorICAgICAgICAoYnJhbmNoTmVlZHNMaW5lU3RhcnQpOgorICAgICAgICAoYnJhY2tldE5lZWRz
TGluZVN0YXJ0KToKKyAgICAgICAgKGJyYW5jaEZpbmRGaXJzdEFzc2VydGVkQ2hhcmFjdGVyKToK
KyAgICAgICAgKGJyYWNrZXRGaW5kRmlyc3RBc3NlcnRlZENoYXJhY3Rlcik6CisgICAgICAgIChj
YWxjdWxhdGVDb21waWxlZFBhdHRlcm5MZW5ndGhBbmRGbGFncyk6CisgICAgICAgIChyZXR1cm5F
cnJvcik6CisgICAgICAgICogcGNyZS9wY3JlX2V4ZWMuY3BwOgorICAgICAgICAobWF0Y2gpOgor
ICAgICAgICAqIHBjcmUvcGNyZV9pbnRlcm5hbC5oOgorICAgICAgICAocHV0TGlua1ZhbHVlQWxs
b3daZXJvKToKKyAgICAgICAgKGdldExpbmtWYWx1ZUFsbG93WmVybyk6CisgICAgICAgIChwdXRM
aW5rVmFsdWUpOgorICAgICAgICAoZ2V0TGlua1ZhbHVlKToKKyAgICAgICAgKHB1dExpbmtWYWx1
ZUFuZEFkdmFuY2UpOgorICAgICAgICAocHV0TGlua1ZhbHVlQWxsb3daZXJvQW5kQWR2YW5jZSk6
CisgICAgICAgIChwdXQyQnl0ZVZhbHVlKToKKyAgICAgICAgKGdldDJCeXRlVmFsdWUpOgorICAg
ICAgICAocHV0MkJ5dGVWYWx1ZUFuZEFkdmFuY2UpOgorICAgICAgICAoYWR2YW5jZVRvRW5kT2ZC
cmFja2V0KToKKyAgICAgICAgKiB3dGYvQVNDSUlDVHlwZS5oOgorICAgICAgICAoV1RGOjppc0FT
Q0lJQWxwaGEpOgorICAgICAgICAoV1RGOjppc0FTQ0lJQWxwaGFudW1lcmljKToKKyAgICAgICAg
KFdURjo6aXNBU0NJSUhleERpZ2l0KToKKyAgICAgICAgKFdURjo6aXNBU0NJSUxvd2VyKToKKyAg
ICAgICAgKFdURjo6aXNBU0NJSVNwYWNlKToKKyAgICAgICAgKFdURjo6dG9BU0NJSUxvd2VyKToK
KyAgICAgICAgKFdURjo6dG9BU0NJSVVwcGVyKToKKwogMjAwNy0xMi0xMSAgR2VvZmZyZXkgR2Fy
ZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcu
CkBAIC05NDEsNyArOTg5LDkgQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWouCiAKLSAg
ICAgICAgQ2VudHJhbGl6ZSBjb2RlIGZvciBzdWJqZWN0UHRyIGFkanVzdG1lbnRzIHVzaW5nIGlu
bGluZXMsIG9ubHkgZXZlciBjaGVjayBmb3IgYSBzaW5nbGUgdHJhaWxpbmcgc3Vycm9nYXRlIChh
cyBVVEYxNiBvbmx5IGFsbG93cyBvbmUpLCBwb3NzaWJseSBmaXggUENSRSBidWdzIGludm9sdmlu
ZyBjaGFyIGNsYXNzZXMgYW5kIGdhcmJsZWQgVVRGMTYgc3RyaW5ncy4KKyAgICAgICAgQ2VudHJh
bGl6ZSBjb2RlIGZvciBzdWJqZWN0UHRyIGFkanVzdG1lbnRzIHVzaW5nIGlubGluZXMsIG9ubHkg
ZXZlciBjaGVjayBmb3IgYSBzaW5nbGUKKyAgICAgICAgdHJhaWxpbmcgc3Vycm9nYXRlIChhcyBV
VEYxNiBvbmx5IGFsbG93cyBvbmUpLCBwb3NzaWJseSBmaXggUENSRSBidWdzIGludm9sdmluZyBj
aGFyCisgICAgICAgIGNsYXNzZXMgYW5kIGdhcmJsZWQgVVRGMTYgc3RyaW5ncy4KIAogICAgICAg
ICAqIHBjcmUvcGNyZV9leGVjLmNwcDoKICAgICAgICAgKG1hdGNoKToKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL3BjcmUvcGNyZV9jb21waWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9wY3JlL3BjcmVfY29tcGlsZS5jcHAJKHJldmlzaW9uIDI4Njg3KQorKysgSmF2YVNjcmlwdENv
cmUvcGNyZS9wY3JlX2NvbXBpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Niw5ICs5Niw5IEBA
IHN0YXRpYyBjb25zdCB1c2NoYXIgT1BfbGVuZ3Roc1tdID0geyBPUF8KIC8qIFRoZSB0ZXh0cyBv
ZiBjb21waWxlLXRpbWUgZXJyb3IgbWVzc2FnZXMuIFRoZXNlIGFyZSAiY2hhciAqIiBiZWNhdXNl
IHRoZXkKIGFyZSBwYXNzZWQgdG8gdGhlIG91dHNpZGUgd29ybGQuICovCiAKLXN0YXRpYyBjb25z
dCBjaGFyKiBlcnJvcl90ZXh0KEVycm9yQ29kZSBjb2RlKQorc3RhdGljIGNvbnN0IGNoYXIqIGVy
cm9yVGV4dChFcnJvckNvZGUgY29kZSkKIHsKLSAgICBzdGF0aWMgY29uc3QgY2hhciBlcnJvcl90
ZXh0c1tdID0KKyAgICBzdGF0aWMgY29uc3QgY2hhciBlcnJvclRleHRzW10gPQogICAgICAgLyog
MSAqLwogICAgICAgIlxcIGF0IGVuZCBvZiBwYXR0ZXJuXDAiCiAgICAgICAiXFxjIGF0IGVuZCBv
ZiBwYXR0ZXJuXDAiCkBAIC0xMjMsNyArMTIzLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGVycm9y
X3RleHQoRXJyb3JDb2RlIAogICAgIDsKIAogICAgIGludCBpID0gY29kZTsKLSAgICBjb25zdCBj
aGFyKiB0ZXh0ID0gZXJyb3JfdGV4dHM7CisgICAgY29uc3QgY2hhciogdGV4dCA9IGVycm9yVGV4
dHM7CiAgICAgd2hpbGUgKGkgPiAxKQogICAgICAgICBpIC09ICEqdGV4dCsrOwogICAgIHJldHVy
biB0ZXh0OwpAQCAtMjAzLDExNCArMjAzLDExMCBAQCBzdGF0aWMgaW50IGNoZWNrX2VzY2FwZShj
b25zdCBVQ2hhcioqIHB0CiAgICAgCiAgICAgZWxzZSB7CiAgICAgICAgIHN3aXRjaCAoYykgewot
ICAgICAgICBjYXNlICcxJzoKLSAgICAgICAgY2FzZSAnMic6Ci0gICAgICAgIGNhc2UgJzMnOgot
ICAgICAgICBjYXNlICc0JzoKLSAgICAgICAgY2FzZSAnNSc6Ci0gICAgICAgIGNhc2UgJzYnOgot
ICAgICAgICBjYXNlICc3JzoKLSAgICAgICAgY2FzZSAnOCc6Ci0gICAgICAgIGNhc2UgJzknOgot
ICAgICAgICAgICAgLyogRXNjYXBlIHNlcXVlbmNlcyBzdGFydGluZyB3aXRoIGEgbm9uLXplcm8g
ZGlnaXQgYXJlIGJhY2tyZWZlcmVuY2VzLAotICAgICAgICAgICAgIHVubGVzcyB0aGVyZSBhcmUg
aW5zdWZmaWNpZW50IGJyYWNrZXRzLCBpbiB3aGljaCBjYXNlIHRoZXkgYXJlIG9jdGFsCi0gICAg
ICAgICAgICAgZXNjYXBlIHNlcXVlbmNlcy4gVGhvc2Ugc2VxdWVuY2VzIGVuZCBvbiB0aGUgZmly
c3Qgbm9uLW9jdGFsIGNoYXJhY3RlcgotICAgICAgICAgICAgIG9yIHdoZW4gd2Ugb3ZlcmZsb3cg
MC0yNTUsIHdoaWNoZXZlciBjb21lcyBmaXJzdC4gKi8KLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgaWYgKCFpc2NsYXNzKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgVUNoYXIqIG9sZHB0ciA9
IHB0cjsKLSAgICAgICAgICAgICAgICBjIC09ICcwJzsKLSAgICAgICAgICAgICAgICB3aGlsZSAo
KHB0ciArIDEgPCBwYXR0ZXJuRW5kKSAmJiBpc0FTQ0lJRGlnaXQocHRyWzFdKSAmJiBjIDw9IGJy
YWNvdW50KQotICAgICAgICAgICAgICAgICAgICBjID0gYyAqIDEwICsgKigrK3B0cikgLSAnMCc7
Ci0gICAgICAgICAgICAgICAgaWYgKGMgPD0gYnJhY291bnQpIHsKLSAgICAgICAgICAgICAgICAg
ICAgYyA9IC0oRVNDX1JFRiArIGMpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2UgJzEnOgorICAgICAgICAgICAgY2FzZSAnMic6CisgICAgICAgICAgICBjYXNl
ICczJzoKKyAgICAgICAgICAgIGNhc2UgJzQnOgorICAgICAgICAgICAgY2FzZSAnNSc6CisgICAg
ICAgICAgICBjYXNlICc2JzoKKyAgICAgICAgICAgIGNhc2UgJzcnOgorICAgICAgICAgICAgY2Fz
ZSAnOCc6CisgICAgICAgICAgICBjYXNlICc5JzoKKyAgICAgICAgICAgICAgICAvKiBFc2NhcGUg
c2VxdWVuY2VzIHN0YXJ0aW5nIHdpdGggYSBub24temVybyBkaWdpdCBhcmUgYmFja3JlZmVyZW5j
ZXMsCisgICAgICAgICAgICAgICAgIHVubGVzcyB0aGVyZSBhcmUgaW5zdWZmaWNpZW50IGJyYWNr
ZXRzLCBpbiB3aGljaCBjYXNlIHRoZXkgYXJlIG9jdGFsCisgICAgICAgICAgICAgICAgIGVzY2Fw
ZSBzZXF1ZW5jZXMuIFRob3NlIHNlcXVlbmNlcyBlbmQgb24gdGhlIGZpcnN0IG5vbi1vY3RhbCBj
aGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgb3Igd2hlbiB3ZSBvdmVyZmxvdyAwLTI1NSwgd2hp
Y2hldmVyIGNvbWVzIGZpcnN0LiAqLworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAg
IGlmICghaXNjbGFzcykgeworICAgICAgICAgICAgICAgICAgICBjb25zdCBVQ2hhciogb2xkcHRy
ID0gcHRyOworICAgICAgICAgICAgICAgICAgICBjIC09ICcwJzsKKyAgICAgICAgICAgICAgICAg
ICAgd2hpbGUgKChwdHIgKyAxIDwgcGF0dGVybkVuZCkgJiYgaXNBU0NJSURpZ2l0KHB0clsxXSkg
JiYgYyA8PSBicmFjb3VudCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBjICogMTAgKyAq
KCsrcHRyKSAtICcwJzsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPD0gYnJhY291bnQpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAtKEVTQ19SRUYgKyBjKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIHB0ciA9IG9sZHB0cjsgICAgICAvKiBQdXQgdGhlIHBvaW50ZXIgYmFjayBhbmQgZmFs
bCB0aHJvdWdoICovCiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHB0ciA9IG9s
ZHB0cjsgICAgICAvKiBQdXQgdGhlIHBvaW50ZXIgYmFjayBhbmQgZmFsbCB0aHJvdWdoICovCi0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8qIEhhbmRsZSBhbiBvY3Rh
bCBudW1iZXIgZm9sbG93aW5nIFwuIElmIHRoZSBmaXJzdCBkaWdpdCBpcyA4IG9yIDksCi0gICAg
ICAgICAgICAgdGhpcyBpcyBub3Qgb2N0YWwuICovCi0gICAgICAgICAgICAKLSAgICAgICAgICAg
IGlmICgoYyA9ICpwdHIpID49ICc4JykKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8qIEhhbmRsZSBhbiBvY3Rh
bCBudW1iZXIgZm9sbG93aW5nIFwuIElmIHRoZSBmaXJzdCBkaWdpdCBpcyA4IG9yIDksCisgICAg
ICAgICAgICAgICAgIHRoaXMgaXMgbm90IG9jdGFsLiAqLworICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIGlmICgoYyA9ICpwdHIpID49ICc4JykKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisKICAgICAgICAgICAgIC8qIFwwIGFsd2F5cyBzdGFydHMgYW4gb2N0YWwgbnVtYmVy
LCBidXQgd2UgbWF5IGRyb3AgdGhyb3VnaCB0byBoZXJlIHdpdGggYQogICAgICAgICAgICAgIGxh
cmdlciBmaXJzdCBvY3RhbCBkaWdpdC4gKi8KLSAgICAgICAgCi0gICAgICAgIGNhc2UgJzAnOiB7
Ci0gICAgICAgICAgICBjIC09ICcwJzsKLSAgICAgICAgICAgIGludCBpOwotICAgICAgICAgICAg
Zm9yIChpID0gMTsgaSA8PSAyOyArK2kpIHsKLSAgICAgICAgICAgICAgICBpZiAocHRyICsgaSA+
PSBwYXR0ZXJuRW5kIHx8IHB0cltpXSA8ICcwJyB8fCBwdHJbaV0gPiAnNycpCi0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGludCBjYyA9IGMgKiA4ICsgcHRyW2ld
IC0gJzAnOwotICAgICAgICAgICAgICAgIGlmIChjYyA+IDI1NSkKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgYyA9IGNjOworCisgICAgICAgICAgICBjYXNlICcw
JzogeworICAgICAgICAgICAgICAgIGMgLT0gJzAnOworICAgICAgICAgICAgICAgIGludCBpOwor
ICAgICAgICAgICAgICAgIGZvciAoaSA9IDE7IGkgPD0gMjsgKytpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChwdHIgKyBpID49IHBhdHRlcm5FbmQgfHwgcHRyW2ldIDwgJzAnIHx8IHB0cltp
XSA+ICc3JykKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICBpbnQgY2MgPSBjICogOCArIHB0cltpXSAtICcwJzsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGNjID4gMjU1KQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIGMgPSBjYzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcHRy
ICs9IGkgLSAxOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcHRyICs9IGkgLSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSAneCc6IHsKLSAgICAgICAgICAgIGMgPSAwOwotICAgICAgICAgICAgaW50IGk7Ci0g
ICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDw9IDI7ICsraSkgewotICAgICAgICAgICAgICAgIGlm
IChwdHIgKyBpID49IHBhdHRlcm5FbmQgfHwgIWlzQVNDSUlIZXhEaWdpdChwdHJbaV0pKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGMgPSAneCc7Ci0gICAgICAgICAgICAgICAgICAgIGkgPSAxOwot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSAneCc6IHsKKyAg
ICAgICAgICAgICAgICBjID0gMDsKKyAgICAgICAgICAgICAgICBpbnQgaTsKKyAgICAgICAgICAg
ICAgICBmb3IgKGkgPSAxOyBpIDw9IDI7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBpZiAo
cHRyICsgaSA+PSBwYXR0ZXJuRW5kIHx8ICFpc0FTQ0lJSGV4RGlnaXQocHRyW2ldKSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgYyA9ICd4JzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGkg
PSAxOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgaW50IGNjID0gcHRyW2ldOworICAgICAgICAgICAgICAg
ICAgICBpZiAoY2MgPj0gJ2EnKQorICAgICAgICAgICAgICAgICAgICAgICAgY2MgLT0gMzI7ICAg
ICAgICAgICAgIC8qIENvbnZlcnQgdG8gdXBwZXIgY2FzZSAqLworICAgICAgICAgICAgICAgICAg
ICBjID0gYyAqIDE2ICsgY2MgLSAoKGNjIDwgJ0EnKSA/ICcwJyA6ICgnQScgLSAxMCkpOwogICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpbnQgY2MgPSBwdHJbaV07Ci0gICAgICAg
ICAgICAgICAgaWYgKGNjID49ICdhJykKLSAgICAgICAgICAgICAgICAgICAgY2MgLT0gMzI7ICAg
ICAgICAgICAgIC8qIENvbnZlcnQgdG8gdXBwZXIgY2FzZSAqLwotICAgICAgICAgICAgICAgIGMg
PSBjICogMTYgKyBjYyAtICgoY2MgPCAnQScpID8gJzAnIDogKCdBJyAtIDEwKSk7CisgICAgICAg
ICAgICAgICAgcHRyICs9IGkgLSAxOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgcHRyICs9IGkgLSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSAndSc6IHsKLSAgICAgICAgICAgIGMgPSAwOwotICAgICAgICAg
ICAgaW50IGk7Ci0gICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDw9IDQ7ICsraSkgewotICAgICAg
ICAgICAgICAgIGlmIChwdHIgKyBpID49IHBhdHRlcm5FbmQgfHwgIWlzQVNDSUlIZXhEaWdpdChw
dHJbaV0pKSB7Ci0gICAgICAgICAgICAgICAgICAgIGMgPSAndSc7Ci0gICAgICAgICAgICAgICAg
ICAgIGkgPSAxOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2Fz
ZSAndSc6IHsKKyAgICAgICAgICAgICAgICBjID0gMDsKKyAgICAgICAgICAgICAgICBpbnQgaTsK
KyAgICAgICAgICAgICAgICBmb3IgKGkgPSAxOyBpIDw9IDQ7ICsraSkgeworICAgICAgICAgICAg
ICAgICAgICBpZiAocHRyICsgaSA+PSBwYXR0ZXJuRW5kIHx8ICFpc0FTQ0lJSGV4RGlnaXQocHRy
W2ldKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYyA9ICd1JzsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGkgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaW50IGNjID0gcHRyW2ldOworICAg
ICAgICAgICAgICAgICAgICBpZiAoY2MgPj0gJ2EnKQorICAgICAgICAgICAgICAgICAgICAgICAg
Y2MgLT0gMzI7ICAgICAgICAgICAgIC8qIENvbnZlcnQgdG8gdXBwZXIgY2FzZSAqLworICAgICAg
ICAgICAgICAgICAgICBjID0gYyAqIDE2ICsgY2MgLSAoKGNjIDwgJ0EnKSA/ICcwJyA6ICgnQScg
LSAxMCkpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpbnQgY2MgPSBwdHJb
aV07Ci0gICAgICAgICAgICAgICAgaWYgKGNjID49ICdhJykKLSAgICAgICAgICAgICAgICAgICAg
Y2MgLT0gMzI7ICAgICAgICAgICAgIC8qIENvbnZlcnQgdG8gdXBwZXIgY2FzZSAqLwotICAgICAg
ICAgICAgICAgIGMgPSBjICogMTYgKyBjYyAtICgoY2MgPCAnQScpID8gJzAnIDogKCdBJyAtIDEw
KSk7CisgICAgICAgICAgICAgICAgcHRyICs9IGkgLSAxOworICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcHRyICs9IGkgLSAxOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8qIE90aGVyIHNwZWNpYWwgZXNjYXBl
cyBub3Qgc3RhcnRpbmcgd2l0aCBhIGRpZ2l0IGFyZSBzdHJhaWdodGZvcndhcmQgKi8KLSAgICAg
ICAgfQotICAgICAgICBjYXNlICdjJzoKLSAgICAgICAgICAgIGlmICgrK3B0ciA9PSBwYXR0ZXJu
RW5kKSB7Ci0gICAgICAgICAgICAgICAgKmVycm9yY29kZXB0ciA9IEVSUjI7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgICAgIGNhc2UgJ2MnOgorICAgICAgICAgICAgICAg
IGlmICgrK3B0ciA9PSBwYXR0ZXJuRW5kKSB7CisgICAgICAgICAgICAgICAgICAgICplcnJvcmNv
ZGVwdHIgPSBFUlIyOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgYyA9ICpwdHI7CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgLyogQSBsZXR0ZXIgaXMgdXBwZXItY2FzZWQ7IHRoZW4gdGhlIDB4NDAgYml0
IGlzIGZsaXBwZWQuIFRoaXMgY29kaW5nCisgICAgICAgICAgICAgICAgIGlzIEFTQ0lJLXNwZWNp
ZmljLCBidXQgdGhlbiB0aGUgd2hvbGUgY29uY2VwdCBvZiBcY3ggaXMgQVNDSUktc3BlY2lmaWMu
ICovCisgICAgICAgICAgICAgICAgYyA9IHRvQVNDSUlVcHBlcihjKSBeIDB4NDA7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjID0gKnB0cjsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgLyogQSBsZXR0ZXIgaXMgdXBwZXItY2FzZWQ7IHRoZW4g
dGhlIDB4NDAgYml0IGlzIGZsaXBwZWQuIFRoaXMgY29kaW5nCi0gICAgICAgICAgICAgaXMgQVND
SUktc3BlY2lmaWMsIGJ1dCB0aGVuIHRoZSB3aG9sZSBjb25jZXB0IG9mIFxjeCBpcyBBU0NJSS1z
cGVjaWZpYy4gKi8KLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGMgPj0gJ2EnICYmIGMg
PD0gJ3onKQotICAgICAgICAgICAgICAgIGMgLT0gMzI7Ci0gICAgICAgICAgICBjIF49IDB4NDA7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQogICAgIH0KICAgICAKICAgICAqcHRycHRy
ID0gcHRyOwogICAgIHJldHVybiBjOwogfQogCi0KLQogLyoqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioKICogICAgICAgICAgICBDaGVjayBmb3IgY291bnRl
ZCByZXBlYXQgICAgICAgICAgICAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqLwpAQCAtMzI2LDcgKzMyMiw3IEBAIEFyZ3VtZW50czoKIFJldHVybnM6
ICAgIHRydWUgb3IgZmFsc2UKICovCiAKLXN0YXRpYyBib29sIGlzX2NvdW50ZWRfcmVwZWF0KGNv
bnN0IFVDaGFyKiBwLCBjb25zdCBVQ2hhciogcGF0dGVybkVuZCkKK3N0YXRpYyBib29sIGlzQ291
bnRlZFJlcGVhdChjb25zdCBVQ2hhciogcCwgY29uc3QgVUNoYXIqIHBhdHRlcm5FbmQpCiB7CiAg
ICAgaWYgKHAgPj0gcGF0dGVybkVuZCB8fCAhaXNBU0NJSURpZ2l0KCpwKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMzUwLDEzICszNDYsMTIgQEAgc3RhdGljIGJvb2wgaXNfY291bnRlZF9y
ZXBlYXQoY29uc3QgVUNoYQogICAgIHJldHVybiAocCA8IHBhdHRlcm5FbmQgJiYgKnAgPT0gJ30n
KTsKIH0KIAotCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKgogKiAgICAgICAgIFJlYWQgcmVwZWF0IGNvdW50cyAgICAgICAgICAgICAgICAgICAgICoK
ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKIC8q
IFJlYWQgYW4gaXRlbSBvZiB0aGUgZm9ybSB7bixtfSBhbmQgcmV0dXJuIHRoZSB2YWx1ZXMuIFRo
aXMgaXMgY2FsbGVkIG9ubHkKLWFmdGVyIGlzX2NvdW50ZWRfcmVwZWF0KCkgaGFzIGNvbmZpcm1l
ZCB0aGF0IGEgcmVwZWF0LWNvdW50IHF1YW50aWZpZXIgZXhpc3RzLAorYWZ0ZXIgaXNDb3VudGVk
UmVwZWF0KCkgaGFzIGNvbmZpcm1lZCB0aGF0IGEgcmVwZWF0LWNvdW50IHF1YW50aWZpZXIgZXhp
c3RzLAogc28gdGhlIHN5bnRheCBpcyBndWFyYW50ZWVkIHRvIGJlIGNvcnJlY3QsIGJ1dCB3ZSBu
ZWVkIHRvIGNoZWNrIHRoZSB2YWx1ZXMuCiAKIEFyZ3VtZW50czoKQEAgLTM3MCw3ICszNjUsNyBA
QCBSZXR1cm5zOiAgICAgICAgIHBvaW50ZXIgdG8gJ30nIG9uIHN1Y2NlCiAgICAgICAgICAgICAg
ICAgIGN1cnJlbnQgcHRyIG9uIGVycm9yLCB3aXRoIGVycm9yY29kZXB0ciBzZXQgbm9uLXplcm8K
ICovCiAKLXN0YXRpYyBjb25zdCBVQ2hhciogcmVhZF9yZXBlYXRfY291bnRzKGNvbnN0IFVDaGFy
KiBwLCBpbnQqIG1pbnAsIGludCogbWF4cCwgRXJyb3JDb2RlKiBlcnJvcmNvZGVwdHIpCitzdGF0
aWMgY29uc3QgVUNoYXIqIHJlYWRSZXBlYXRDb3VudHMoY29uc3QgVUNoYXIqIHAsIGludCogbWlu
cCwgaW50KiBtYXhwLCBFcnJvckNvZGUqIGVycm9yY29kZXB0cikKIHsKICAgICBpbnQgbWluID0g
MDsKICAgICBpbnQgbWF4ID0gLTE7CkBAIC00MTQsNyArNDA5LDYgQEAgc3RhdGljIGNvbnN0IFVD
aGFyKiByZWFkX3JlcGVhdF9jb3VudHMoYwogICAgIHJldHVybiBwOwogfQogCi0KIC8qKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgICAgRmluZCBm
aXJzdCBzaWduaWZpY2FudCBvcCBjb2RlICAgICAgICAgICAgKgogKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAgLTQzMiwyMSArNDI2LDE5IEBAIEFy
Z3VtZW50czoKIFJldHVybnM6ICAgICAgIHBvaW50ZXIgdG8gdGhlIGZpcnN0IHNpZ25pZmljYW50
IG9wY29kZQogKi8KIAotc3RhdGljIGNvbnN0IHVzY2hhciogZmlyc3RTaWduaWZpY2FudE9wQ29k
ZShjb25zdCB1c2NoYXIqIGNvZGUpCitzdGF0aWMgY29uc3QgdXNjaGFyKiBmaXJzdFNpZ25pZmlj
YW50T3Bjb2RlKGNvbnN0IHVzY2hhciogY29kZSkKIHsKICAgICB3aGlsZSAoKmNvZGUgPT0gT1Bf
QlJBTlVNQkVSKQogICAgICAgICBjb2RlICs9IE9QX2xlbmd0aHNbKmNvZGVdOwogICAgIHJldHVy
biBjb2RlOwogfQogCi1zdGF0aWMgY29uc3QgdXNjaGFyKiBmaXJzdFNpZ25pZmljYW50T3BDb2Rl
U2tpcHBpbmdBc3NlcnRpb25zKGNvbnN0IHVzY2hhciogY29kZSkKK3N0YXRpYyBjb25zdCB1c2No
YXIqIGZpcnN0U2lnbmlmaWNhbnRPcGNvZGVTa2lwcGluZ0Fzc2VydGlvbnMoY29uc3QgdXNjaGFy
KiBjb2RlKQogewogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIHN3aXRjaCAoKmNvZGUpIHsK
ICAgICAgICAgY2FzZSBPUF9BU1NFUlRfTk9UOgotICAgICAgICAgICAgZG8gewotICAgICAgICAg
ICAgICAgIGNvZGUgKz0gZ2V0T3Bjb2RlVmFsdWVBdE9mZnNldChjb2RlLCAxKTsKLSAgICAgICAg
ICAgIH0gd2hpbGUgKCpjb2RlID09IE9QX0FMVCk7CisgICAgICAgICAgICBhZHZhbmNlVG9FbmRP
ZkJyYWNrZXQoY29kZSk7CiAgICAgICAgICAgICBjb2RlICs9IE9QX2xlbmd0aHNbKmNvZGVdOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgT1BfV09SRF9CT1VOREFSWToKQEAgLTQ2
MSwxOTcgKzQ1Myw2IEBAIHN0YXRpYyBjb25zdCB1c2NoYXIqIGZpcnN0U2lnbmlmaWNhbnRPcEMK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotCi0vKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKiAgICAgICAgRmluZCB0aGUgZml4ZWQgbGVu
Z3RoIG9mIGEgcGF0dGVybiAgICAgICoKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKiovCi0KLS8qIFNjYW4gYSBwYXR0ZXJuIGFuZCBjb21wdXRlIHRoZSBm
aXhlZCBsZW5ndGggb2Ygc3ViamVjdCB0aGF0IHdpbGwgbWF0Y2ggaXQsCi1pZiB0aGUgbGVuZ3Ro
IGlzIGZpeGVkLiBUaGlzIGlzIG5lZWRlZCBmb3IgZGVhbGluZyB3aXRoIGJhY2t3YXJkIGFzc2Vy
dGlvbnMuCi1JbiBVVEY4IG1vZGUsIHRoZSByZXN1bHQgaXMgaW4gY2hhcmFjdGVycyByYXRoZXIg
dGhhbiBieXRlcy4KLQotQXJndW1lbnRzOgotICBjb2RlICAgICBwb2ludHMgdG8gdGhlIHN0YXJ0
IG9mIHRoZSBwYXR0ZXJuICh0aGUgYnJhY2tldCkKLSAgb3B0aW9ucyAgdGhlIGNvbXBpbGluZyBv
cHRpb25zCi0KLVJldHVybnM6ICAgdGhlIGZpeGVkIGxlbmd0aCwgb3IgLTEgaWYgdGhlcmUgaXMg
bm8gZml4ZWQgbGVuZ3RoLAotICAgICAgICAgICAgIG9yIC0yIGlmIFxDIHdhcyBlbmNvdW50ZXJl
ZAotKi8KLQotc3RhdGljIGludCBmaW5kX2ZpeGVkbGVuZ3RoKHVzY2hhciogY29kZSwgaW50IG9w
dGlvbnMpCi17Ci0gICAgaW50IGxlbmd0aCA9IC0xOwotICAgIAotICAgIGludCBicmFuY2hsZW5n
dGggPSAwOwotICAgIHVzY2hhciogY2MgPSBjb2RlICsgMSArIExJTktfU0laRTsKLSAgICAKLSAg
ICAvKiBTY2FuIGFsb25nIHRoZSBvcGNvZGVzIGZvciB0aGlzIGJyYW5jaC4gSWYgd2UgZ2V0IHRv
IHRoZSBlbmQgb2YgdGhlCi0gICAgIGJyYW5jaCwgY2hlY2sgdGhlIGxlbmd0aCBhZ2FpbnN0IHRo
YXQgb2YgdGhlIG90aGVyIGJyYW5jaGVzLiAqLwotICAgIAotICAgIHdoaWxlICh0cnVlKSB7Ci0g
ICAgICAgIGludCBkOwotICAgICAgICBpbnQgb3AgPSAqY2M7Ci0gICAgICAgIGlmIChvcCA+PSBP
UF9CUkEpCi0gICAgICAgICAgICBvcCA9IE9QX0JSQTsKLSAgICAgICAgCi0gICAgICAgIHN3aXRj
aCAob3ApIHsKLSAgICAgICAgICAgIGNhc2UgT1BfQlJBOgotICAgICAgICAgICAgY2FzZSBPUF9P
TkNFOgotICAgICAgICAgICAgICAgIGQgPSBmaW5kX2ZpeGVkbGVuZ3RoKGNjLCBvcHRpb25zKTsK
LSAgICAgICAgICAgICAgICBpZiAoZCA8IDApCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBk
OwotICAgICAgICAgICAgICAgIGJyYW5jaGxlbmd0aCArPSBkOwotICAgICAgICAgICAgICAgIGRv
IHsKLSAgICAgICAgICAgICAgICAgICAgY2MgKz0gZ2V0T3Bjb2RlVmFsdWVBdE9mZnNldChjYywg
MSk7Ci0gICAgICAgICAgICAgICAgfSB3aGlsZSAoKmNjID09IE9QX0FMVCk7Ci0gICAgICAgICAg
ICAgICAgY2MgKz0gMSArIExJTktfU0laRTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvKiBSZWFjaGVkIGVuZCBvZiBhIGJyYW5jaDsg
aWYgaXQncyBhIGtldCBpdCBpcyB0aGUgZW5kIG9mIGEgbmVzdGVkCi0gICAgICAgICAgICAgICAg
IGNhbGwuIElmIGl0J3MgQUxUIGl0IGlzIGFuIGFsdGVybmF0aW9uIGluIGEgbmVzdGVkIGNhbGwu
IElmIGl0IGlzCi0gICAgICAgICAgICAgICAgIEVORCBpdCdzIHRoZSBlbmQgb2YgdGhlIG91dGVy
IGNhbGwuIEFsbCBjYW4gYmUgaGFuZGxlZCBieSB0aGUgc2FtZSBjb2RlLiAqLwotICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgY2FzZSBPUF9BTFQ6Ci0gICAgICAgICAgICBjYXNlIE9QX0tF
VDoKLSAgICAgICAgICAgIGNhc2UgT1BfS0VUUk1BWDoKLSAgICAgICAgICAgIGNhc2UgT1BfS0VU
Uk1JTjoKLSAgICAgICAgICAgIGNhc2UgT1BfRU5EOgotICAgICAgICAgICAgICAgIGlmIChsZW5n
dGggPCAwKQotICAgICAgICAgICAgICAgICAgICBsZW5ndGggPSBicmFuY2hsZW5ndGg7Ci0gICAg
ICAgICAgICAgICAgZWxzZSBpZiAobGVuZ3RoICE9IGJyYW5jaGxlbmd0aCkKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgICAgIGlmICgqY2MgIT0gT1BfQUxUKQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGVuZ3RoOwotICAgICAgICAgICAgICAgIGNjICs9
IDEgKyBMSU5LX1NJWkU7Ci0gICAgICAgICAgICAgICAgYnJhbmNobGVuZ3RoID0gMDsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvKiBT
a2lwIG92ZXIgYXNzZXJ0aXZlIHN1YnBhdHRlcm5zICovCi0gICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICBjYXNlIE9QX0FTU0VSVDoKLSAgICAgICAgICAgIGNhc2UgT1BfQVNTRVJUX05PVDoK
LSAgICAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgICAgIGNjICs9IGdldE9wY29k
ZVZhbHVlQXRPZmZzZXQoY2MsIDEpOwotICAgICAgICAgICAgICAgIH0gd2hpbGUgKCpjYyA9PSBP
UF9BTFQpOwotICAgICAgICAgICAgICAgIC8qIEZhbGwgdGhyb3VnaCAqLwotICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgIC8qIFNraXAgb3ZlciB0aGluZ3MgdGhhdCBkb24ndCBtYXRj
aCBjaGFycyAqLwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBPUF9CUkFOVU1C
RVI6Ci0gICAgICAgICAgICBjYXNlIE9QX0NJUkM6Ci0gICAgICAgICAgICBjYXNlIE9QX0RPTEw6
Ci0gICAgICAgICAgICBjYXNlIE9QX05PVF9XT1JEX0JPVU5EQVJZOgotICAgICAgICAgICAgY2Fz
ZSBPUF9XT1JEX0JPVU5EQVJZOgotICAgICAgICAgICAgICAgIGNjICs9IE9QX2xlbmd0aHNbKmNj
XTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICAvKiBIYW5kbGUgbGl0ZXJhbCBjaGFyYWN0ZXJzICovCi0gICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICBjYXNlIE9QX0NIQVI6Ci0gICAgICAgICAgICBjYXNlIE9QX0NIQVJfSUdOT1JJ
TkdfQ0FTRToKLSAgICAgICAgICAgIGNhc2UgT1BfTk9UOgotICAgICAgICAgICAgICAgIGJyYW5j
aGxlbmd0aCsrOwotICAgICAgICAgICAgICAgIGNjICs9IDI7Ci0gICAgICAgICAgICAgICAgd2hp
bGUgKCgqY2MgJiAweGMwKSA9PSAweDgwKQotICAgICAgICAgICAgICAgICAgICBjYysrOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBP
UF9BU0NJSV9DSEFSOgotICAgICAgICAgICAgY2FzZSBPUF9BU0NJSV9MRVRURVJfSUdOT1JJTkdf
Q0FTRToKLSAgICAgICAgICAgICAgICBicmFuY2hsZW5ndGgrKzsKLSAgICAgICAgICAgICAgICBj
YyArPSAyOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIC8qIEhhbmRsZSBleGFjdCByZXBldGl0aW9ucy4gVGhlIGNvdW50IGlzIGFscmVh
ZHkgaW4gY2hhcmFjdGVycywgYnV0IHdlCi0gICAgICAgICAgICAgICAgIG5lZWQgdG8gc2tpcCBv
dmVyIGEgbXVsdGlieXRlIGNoYXJhY3RlciBpbiBVVEY4IG1vZGUuICAqLwotICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgY2FzZSBPUF9FWEFDVDoKLSAgICAgICAgICAgICAgICBicmFuY2hs
ZW5ndGggKz0gZ2V0MkJ5dGVPcGNvZGVWYWx1ZUF0T2Zmc2V0KGNjLDEpOwotICAgICAgICAgICAg
ICAgIGNjICs9IDQ7Ci0gICAgICAgICAgICAgICAgd2hpbGUoKCpjYyAmIDB4ODApID09IDB4ODAp
Ci0gICAgICAgICAgICAgICAgICAgIGNjKys7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlIE9QX1RZUEVFWEFDVDoKLSAgICAgICAgICAg
ICAgICBicmFuY2hsZW5ndGggKz0gZ2V0MkJ5dGVPcGNvZGVWYWx1ZUF0T2Zmc2V0KGNjLDEpOwot
ICAgICAgICAgICAgICAgIGNjICs9IDQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgCi0gICAgICAgICAgICAgICAgLyogSGFuZGxlIHNpbmdsZS1jaGFyIG1hdGNoZXJz
ICovCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlIE9QX05PVF9ESUdJVDoKLSAg
ICAgICAgICAgIGNhc2UgT1BfRElHSVQ6Ci0gICAgICAgICAgICBjYXNlIE9QX05PVF9XSElURVNQ
QUNFOgotICAgICAgICAgICAgY2FzZSBPUF9XSElURVNQQUNFOgotICAgICAgICAgICAgY2FzZSBP
UF9OT1RfV09SRENIQVI6Ci0gICAgICAgICAgICBjYXNlIE9QX1dPUkRDSEFSOgotICAgICAgICAg
ICAgY2FzZSBPUF9OT1RfTkVXTElORToKLSAgICAgICAgICAgICAgICBicmFuY2hsZW5ndGgrKzsK
LSAgICAgICAgICAgICAgICBjYysrOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgIC8qIENoZWNrIGEgY2xhc3MgZm9yIHZhcmlhYmxlIHF1
YW50aWZpY2F0aW9uICovCi0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlIE9QX1hD
TEFTUzoKLSAgICAgICAgICAgICAgICBjYyArPSBnZXRPcGNvZGVWYWx1ZUF0T2Zmc2V0KGNjLCAx
KSAtIDMzOwotICAgICAgICAgICAgICAgIC8qIEZhbGwgdGhyb3VnaCAqLwotICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgY2FzZSBPUF9DTEFTUzoKLSAgICAgICAgICAgIGNhc2UgT1BfTkNM
QVNTOgotICAgICAgICAgICAgICAgIGNjICs9IDMzOwotICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgIHN3aXRjaCAoKmNjKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBPUF9DUlNUQVI6
Ci0gICAgICAgICAgICAgICAgY2FzZSBPUF9DUk1JTlNUQVI6Ci0gICAgICAgICAgICAgICAgY2Fz
ZSBPUF9DUlFVRVJZOgotICAgICAgICAgICAgICAgIGNhc2UgT1BfQ1JNSU5RVUVSWToKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICBjYXNlIE9QX0NSUkFOR0U6Ci0gICAgICAgICAgICAgICAgY2FzZSBPUF9DUk1JTlJB
TkdFOgotICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0MkJ5dGVPcGNvZGVWYWx1ZUF0T2Zmc2V0
KGNjLCAxKSAhPSBnZXQyQnl0ZU9wY29kZVZhbHVlQXRPZmZzZXQoY2MsIDMpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgICAgICAgICBicmFuY2hsZW5n
dGggKz0gZ2V0MkJ5dGVPcGNvZGVWYWx1ZUF0T2Zmc2V0KGNjLCAxKTsKLSAgICAgICAgICAgICAg
ICAgICAgY2MgKz0gNTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGJy
YW5jaGxlbmd0aCsrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvKiBBbnl0aGluZyBlbHNlIGlzIHZh
cmlhYmxlIGxlbmd0aCAqLwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci19Ci0KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioKLSogICAgICAgICBDb21wbGV0ZSBhIGNhbGxvdXQgaXRlbSAgICAg
ICAgICAgICAgICAqCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqLwotCi0vKiBBIGNhbGxvdXQgaXRlbSBjb250YWlucyB0aGUgbGVuZ3RoIG9mIHRoZSBu
ZXh0IGl0ZW0gaW4gdGhlIHBhdHRlcm4sIHdoaWNoCi13ZSBjYW4ndCBmaWxsIGluIHRpbGwgYWZ0
ZXIgd2UgaGF2ZSByZWFjaGVkIHRoZSByZWxldmFudCBwb2ludC4gVGhpcyBpcyB1c2VkCi1mb3Ig
Ym90aCBhdXRvbWF0aWMgYW5kIG1hbnVhbCBjYWxsb3V0cy4KLQotQXJndW1lbnRzOgotICBwcmV2
aW91c19jYWxsb3V0ICAgcG9pbnRzIHRvIHByZXZpb3VzIGNhbGxvdXQgaXRlbQotICBwdHIgICAg
ICAgICAgICAgICAgY3VycmVudCBwYXR0ZXJuIHBvaW50ZXIKLSAgY2QgICAgICAgICAgICAgICAg
IHBvaW50ZXJzIHRvIHRhYmxlcyBldGMKLSovCi0KLXN0YXRpYyB2b2lkIGNvbXBsZXRlX2NhbGxv
dXQodXNjaGFyKiBwcmV2aW91c19jYWxsb3V0LCBjb25zdCBVQ2hhciogcHRyLCBjb25zdCBDb21w
aWxlRGF0YSYgY2QpCi17Ci0gICAgaW50IGxlbmd0aCA9IHB0ciAtIGNkLnN0YXJ0X3BhdHRlcm4g
LSBnZXRPcGNvZGVWYWx1ZUF0T2Zmc2V0KHByZXZpb3VzX2NhbGxvdXQsIDIpOwotICAgIHB1dE9w
Y29kZVZhbHVlQXRPZmZzZXQocHJldmlvdXNfY2FsbG91dCwgMiArIExJTktfU0laRSwgbGVuZ3Ro
KTsKLX0KLQotCi0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqCiAqICAgICAgICAgICBHZXQgb3RoZXJjYXNlIHJhbmdlICAgICAgICAgICAgICAgICAg
KgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KQEAg
LTY3MCw3ICs0NzEsNyBAQCBBcmd1bWVudHM6CiBZaWVsZDogICAgICAgIHRydWUgd2hlbiByYW5n
ZSByZXR1cm5lZDsgZmFsc2Ugd2hlbiBubyBtb3JlCiAqLwogCi1zdGF0aWMgYm9vbCBnZXRfb3Ro
ZXJjYXNlX3JhbmdlKGludCogY3B0ciwgaW50IGQsIGludCogb2NwdHIsIGludCogb2RwdHIpCitz
dGF0aWMgYm9vbCBnZXRPdGhlcmNhc2VSYW5nZShpbnQqIGNwdHIsIGludCBkLCBpbnQqIG9jcHRy
LCBpbnQqIG9kcHRyKQogewogICAgIGludCBjLCBvdGhlcmNhc2UgPSAwOwogICAgIApAQCAtNzEx
LDggKzUxMiw3IEBAIHN0YXRpYyBib29sIGdldF9vdGhlcmNhc2VfcmFuZ2UoaW50KiBjcHQKICBS
ZXR1cm5zOiAgICAgbnVtYmVyIG9mIGNoYXJhY3RlcnMgcGxhY2VkIGluIHRoZSBidWZmZXIKICAq
LwogCi0vLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBhcyBzb29uIGFzIGFsbCBVVEY4
IHVzZXMgYXJlIHJlbW92ZWQgZnJvbSBQQ1JFCi1pbnQgX3BjcmVfb3JkMnV0ZjgoaW50IGN2YWx1
ZSwgdXNjaGFyICpidWZmZXIpCitzdGF0aWMgaW50IGVuY29kZVVURjgoaW50IGN2YWx1ZSwgdXNj
aGFyICpidWZmZXIpCiB7CiAgICAgaW50IGk7CiAgICAgZm9yIChpID0gMDsgaSA8IF9wY3JlX3V0
ZjhfdGFibGUxX3NpemU7IGkrKykKQEAgLTc2MSw3ICs1NjEsNiBAQCBjb21waWxlQnJhbmNoKGlu
dCBvcHRpb25zLCBpbnQqIGJyYWNrZXRzCiAgICAgaW50IHJlcGVhdF9taW4gPSAwLCByZXBlYXRf
bWF4ID0gMDsgICAgICAvKiBUbyBwbGVhc2UgcGlja3kgY29tcGlsZXJzICovCiAgICAgaW50IGJy
YXZhbHVlID0gMDsKICAgICBpbnQgcmVxdmFyeSwgdGVtcHJlcXZhcnk7Ci0gICAgaW50IGFmdGVy
X21hbnVhbF9jYWxsb3V0ID0gMDsKICAgICBpbnQgYzsKICAgICB1c2NoYXIqIGNvZGUgPSAqY29k
ZXB0cjsKICAgICB1c2NoYXIqIHRlbXBjb2RlOwpAQCAtNzY5LDcgKzU2OCw2IEBAIGNvbXBpbGVC
cmFuY2goaW50IG9wdGlvbnMsIGludCogYnJhY2tldHMKICAgICBjb25zdCBVQ2hhciogcHRyID0g
KnB0cnB0cjsKICAgICBjb25zdCBVQ2hhciogdGVtcHB0cjsKICAgICB1c2NoYXIqIHByZXZpb3Vz
ID0gTlVMTDsKLSAgICB1c2NoYXIqIHByZXZpb3VzX2NhbGxvdXQgPSBOVUxMOwogICAgIHVzY2hh
ciBjbGFzc2JpdHNbMzJdOwogICAgIAogICAgIGJvb2wgY2xhc3NfdXRmODsKQEAgLTgxOCwxMiAr
NjE2LDcgQEAgY29tcGlsZUJyYW5jaChpbnQgb3B0aW9ucywgaW50KiBicmFja2V0cwogICAgICAg
ICAvKiBGaWxsIGluIGxlbmd0aCBvZiBhIHByZXZpb3VzIGNhbGxvdXQsIGV4Y2VwdCB3aGVuIHRo
ZSBuZXh0IHRoaW5nIGlzCiAgICAgICAgICBhIHF1YW50aWZpZXIuICovCiAgICAgICAgIAotICAg
ICAgICBib29sIGlzX3F1YW50aWZpZXIgPSBjID09ICcqJyB8fCBjID09ICcrJyB8fCBjID09ICc/
JyB8fCAoYyA9PSAneycgJiYgaXNfY291bnRlZF9yZXBlYXQocHRyICsgMSwgcGF0dGVybkVuZCkp
OwotICAgICAgICAKLSAgICAgICAgaWYgKCFpc19xdWFudGlmaWVyICYmIHByZXZpb3VzX2NhbGxv
dXQgJiYgYWZ0ZXJfbWFudWFsX2NhbGxvdXQtLSA8PSAwKSB7Ci0gICAgICAgICAgICBjb21wbGV0
ZV9jYWxsb3V0KHByZXZpb3VzX2NhbGxvdXQsIHB0ciwgY2QpOwotICAgICAgICAgICAgcHJldmlv
dXNfY2FsbG91dCA9IE5VTEw7Ci0gICAgICAgIH0KKyAgICAgICAgYm9vbCBpc19xdWFudGlmaWVy
ID0gYyA9PSAnKicgfHwgYyA9PSAnKycgfHwgYyA9PSAnPycgfHwgKGMgPT0gJ3snICYmIGlzQ291
bnRlZFJlcGVhdChwdHIgKyAxLCBwYXR0ZXJuRW5kKSk7CiAgICAgICAgIAogICAgICAgICBzd2l0
Y2ggKGMpIHsKICAgICAgICAgICAgIC8qIFRoZSBicmFuY2ggdGVybWluYXRlcyBhdCBlbmQgb2Yg
c3RyaW5nLCB8LCBvciApLiAqLwpAQCAtMTA0MSw3ICs4MzQsNyBAQCBjb21waWxlQnJhbmNoKGlu
dCBvcHRpb25zLCBpbnQqIGJyYWNrZXRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBvY2MsIG9jZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNjID0g
YzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9yaWdkID0gZDsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGdldF9vdGhlcmNhc2VfcmFuZ2UoJmNj
LCBvcmlnZCwgJm9jYywgJm9jZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
d2hpbGUgKGdldE90aGVyY2FzZVJhbmdlKCZjYywgb3JpZ2QsICZvY2MsICZvY2QpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2NjID49IGMgJiYgb2NkIDw9IGQp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7ICAvKiBT
a2lwIGVtYmVkZGVkIHJhbmdlcyAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCkBAIC0xMDYwLDkgKzg1Myw5IEBAIGNvbXBpbGVCcmFuY2goaW50IG9wdGlvbnMsIGludCog
YnJhY2tldHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqY2xhc3Nf
dXRmOGRhdGErKyA9IFhDTF9TSU5HTEU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqY2xh
c3NfdXRmOGRhdGErKyA9IFhDTF9SQU5HRTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjbGFzc191dGY4ZGF0YSArPSBfcGNyZV9vcmQydXRmOChvY2MsIGNsYXNzX3V0
ZjhkYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc191
dGY4ZGF0YSArPSBlbmNvZGVVVEY4KG9jYywgY2xhc3NfdXRmOGRhdGEpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY2xhc3NfdXRmOGRhdGEgKz0gX3BjcmVfb3JkMnV0Zjgob2NkLCBjbGFzc191dGY4ZGF0
YSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc191dGY4ZGF0YSAr
PSBlbmNvZGVVVEY4KG9jZCwgY2xhc3NfdXRmOGRhdGEpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIApAQCAtMTA3MCw4ICs4NjMsOCBAQCBjb21waWxlQnJhbmNoKGludCBv
cHRpb25zLCBpbnQqIGJyYWNrZXRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJs
YXBwaW5nIHJhbmdlcy4gKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAqY2xhc3NfdXRmOGRhdGErKyA9IFhDTF9SQU5HRTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjbGFzc191dGY4ZGF0YSArPSBfcGNyZV9vcmQydXRmOChj
LCBjbGFzc191dGY4ZGF0YSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NfdXRm
OGRhdGEgKz0gX3BjcmVfb3JkMnV0ZjgoZCwgY2xhc3NfdXRmOGRhdGEpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNsYXNzX3V0ZjhkYXRhICs9IGVuY29kZVVURjgoYywgY2xhc3NfdXRm
OGRhdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzX3V0ZjhkYXRhICs9IGVu
Y29kZVVURjgoZCwgY2xhc3NfdXRmOGRhdGEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFdpdGggVUNQIHN1cHBvcnQsIHdlIGFy
ZSBkb25lLiBXaXRob3V0IFVDUCBzdXBwb3J0LCB0aGVyZSBpcyBubwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjYXNlbGVzcyBtYXRjaGluZyBmb3IgVVRGLTggY2hhcmFjdGVycyA+IDEy
Nzsgd2UgY2FuIHVzZSB0aGUgYml0IG1hcApAQCAtMTEwOCwxMyArOTAxLDEzIEBAIGNvbXBpbGVC
cmFuY2goaW50IG9wdGlvbnMsIGludCogYnJhY2tldHMKICAgICAgICAgICAgICAgICAgICAgaWYg
KChjID4gMjU1IHx8ICgob3B0aW9ucyAmIElnbm9yZUNhc2VPcHRpb24pICYmIGMgPiAxMjcpKSkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NfdXRmOCA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAqY2xhc3NfdXRmOGRhdGErKyA9IFhDTF9TSU5HTEU7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBjbGFzc191dGY4ZGF0YSArPSBfcGNyZV9vcmQydXRmOChjLCBjbGFzc191
dGY4ZGF0YSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc191dGY4ZGF0YSArPSBlbmNv
ZGVVVEY4KGMsIGNsYXNzX3V0ZjhkYXRhKTsKICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMgJiBJZ25vcmVDYXNlT3B0aW9uKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG90aGVyY2FzZTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoKG90aGVyY2FzZSA9IF9wY3JlX3VjcF9vdGhlcmNhc2UoYykpID49
IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmNsYXNzX3V0ZjhkYXRhKysg
PSBYQ0xfU0lOR0xFOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc191dGY4
ZGF0YSArPSBfcGNyZV9vcmQydXRmOChvdGhlcmNhc2UsIGNsYXNzX3V0ZjhkYXRhKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NfdXRmOGRhdGEgKz0gZW5jb2RlVVRGOChv
dGhlcmNhc2UsIGNsYXNzX3V0ZjhkYXRhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
CkBAIC0xMjAyLDcgKzk5NSw3IEBAIGNvbXBpbGVCcmFuY2goaW50IG9wdGlvbnMsIGludCogYnJh
Y2tldHMKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIC8qIE5vdyBm
aWxsIGluIHRoZSBjb21wbGV0ZSBsZW5ndGggb2YgdGhlIGl0ZW0gKi8KICAgICAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgICAgIHB1dE9wY29kZVZhbHVlQXRPZmZzZXQocHJldmlv
dXMsIDEsIGNvZGUgLSBwcmV2aW91cyk7CisgICAgICAgICAgICAgICAgICAgIHB1dExpbmtWYWx1
ZShwcmV2aW91cyArIDEsIGNvZGUgLSBwcmV2aW91cyk7CiAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOyAgIC8qIEVuZCBvZiBjbGFzcyBoYW5kbGluZyAqLwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAKQEAgLTEyMjcsNyArMTAyMCw3IEBAIGNvbXBpbGVCcmFuY2goaW50IG9w
dGlvbnMsIGludCogYnJhY2tldHMKICAgICAgICAgICAgIGNhc2UgJ3snOgogICAgICAgICAgICAg
ICAgIGlmICghaXNfcXVhbnRpZmllcikKICAgICAgICAgICAgICAgICAgICAgZ290byBOT1JNQUxf
Q0hBUjsKLSAgICAgICAgICAgICAgICBwdHIgPSByZWFkX3JlcGVhdF9jb3VudHMocHRyKzEsICZy
ZXBlYXRfbWluLCAmcmVwZWF0X21heCwgZXJyb3Jjb2RlcHRyKTsKKyAgICAgICAgICAgICAgICBw
dHIgPSByZWFkUmVwZWF0Q291bnRzKHB0ciArIDEsICZyZXBlYXRfbWluLCAmcmVwZWF0X21heCwg
ZXJyb3Jjb2RlcHRyKTsKICAgICAgICAgICAgICAgICBpZiAoKmVycm9yY29kZXB0cikKICAgICAg
ICAgICAgICAgICAgICAgZ290byBGQUlMRUQ7CiAgICAgICAgICAgICAgICAgZ290byBSRVBFQVQ7
CkBAIC0xMzYyLDcgKzExNTUsNyBAQCBjb21waWxlQnJhbmNoKGludCBvcHRpb25zLCBpbnQqIGJy
YWNrZXRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmNvZGUrKyA9IE9QX1FVRVJZICsg
cmVwZWF0X3R5cGU7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqY29kZSsrID0gT1BfVVBUTyArIHJlcGVhdF90eXBlOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1dDJCeXRlT3Bjb2RlVmFsdWVBdE9mZnNldEFuZEFkdmFu
Y2UoY29kZSwgMCwgcmVwZWF0X21heCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0
MkJ5dGVWYWx1ZUFuZEFkdmFuY2UoY29kZSwgcmVwZWF0X21heCk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCkBA
IC0xMzc5LDcgKzExNzIsNyBAQCBjb21waWxlQnJhbmNoKGludCBvcHRpb25zLCBpbnQqIGJyYWNr
ZXRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcGVhdF9tYXggPT0gMSkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBFTkRfUkVQRUFUOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICpjb2RlKysgPSBPUF9VUFRPICsgcmVwZWF0X3R5cGU7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHV0MkJ5dGVPcGNvZGVWYWx1ZUF0T2Zmc2V0QW5kQWR2
YW5jZShjb2RlLCAwLCByZXBlYXRfbWF4IC0gMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHV0MkJ5dGVWYWx1ZUFuZEFkdmFuY2UoY29kZSwgcmVwZWF0X21heCAtIDEpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIApAQCAtMTM4OCw3ICsxMTgxLDcgQEAgY29tcGlsZUJyYW5jaChpbnQgb3B0aW9ucywg
aW50KiBicmFja2V0cwogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAqY29kZSsrID0gT1BfRVhBQ1QgKyBvcF90
eXBlOyAgLyogTkIgRVhBQ1QgZG9lc24ndCBoYXZlIHJlcGVhdF90eXBlICovCi0gICAgICAgICAg
ICAgICAgICAgICAgICBwdXQyQnl0ZU9wY29kZVZhbHVlQXRPZmZzZXRBbmRBZHZhbmNlKGNvZGUs
IDAsIHJlcGVhdF9taW4pOworICAgICAgICAgICAgICAgICAgICAgICAgcHV0MkJ5dGVWYWx1ZUFu
ZEFkdmFuY2UoY29kZSwgcmVwZWF0X21pbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgIC8qIElmIHRoZSBtYXhpbXVtIGlzIHVubGltaXRlZCwgaW5z
ZXJ0IGFuIE9QX1NUQVIuIEJlZm9yZSBkb2luZyBzbywKICAgICAgICAgICAgICAgICAgICAgICAg
ICB3ZSBoYXZlIHRvIGluc2VydCB0aGUgY2hhcmFjdGVyIGZvciB0aGUgcHJldmlvdXMgY29kZS4g
Rm9yIGEgcmVwZWF0ZWQKQEAgLTE0MjUsNyArMTIxOCw3IEBAIGNvbXBpbGVCcmFuY2goaW50IG9w
dGlvbnMsIGludCogYnJhY2tldHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVwZWF0X21heCAtPSByZXBlYXRfbWluOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICpjb2RlKysgPSBPUF9VUFRPICsgcmVwZWF0X3R5cGU7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0MkJ5dGVPcGNvZGVWYWx1ZUF0T2Zmc2V0QW5k
QWR2YW5jZShjb2RlLCAwLCByZXBlYXRfbWF4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdXQyQnl0ZVZhbHVlQW5kQWR2YW5jZShjb2RlLCByZXBlYXRfbWF4KTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICAKQEAgLTE0NjcsMTAgKzEyNjAsMTAgQEAgY29tcGlsZUJyYW5jaChpbnQgb3B0aW9ucywgaW50
KiBicmFja2V0cwogICAgICAgICAgICAgICAgICAgICAgICAgKmNvZGUrKyA9IE9QX0NSUVVFUlkg
KyByZXBlYXRfdHlwZTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAqY29kZSsrID0gT1BfQ1JSQU5HRSArIHJlcGVhdF90eXBlOwotICAgICAgICAg
ICAgICAgICAgICAgICAgcHV0MkJ5dGVPcGNvZGVWYWx1ZUF0T2Zmc2V0QW5kQWR2YW5jZShjb2Rl
LCAwLCByZXBlYXRfbWluKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1dDJCeXRlVmFsdWVB
bmRBZHZhbmNlKGNvZGUsIHJlcGVhdF9taW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHJlcGVhdF9tYXggPT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwZWF0X21h
eCA9IDA7ICAvKiAyLWJ5dGUgZW5jb2RpbmcgZm9yIG1heCAqLwotICAgICAgICAgICAgICAgICAg
ICAgICAgcHV0MkJ5dGVPcGNvZGVWYWx1ZUF0T2Zmc2V0QW5kQWR2YW5jZShjb2RlLCAwLCByZXBl
YXRfbWF4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1dDJCeXRlVmFsdWVBbmRBZHZhbmNl
KGNvZGUsIHJlcGVhdF9tYXgpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIApAQCAtMTQ4OSwxMCArMTI4Miw4IEBAIGNvbXBpbGVCcmFu
Y2goaW50IG9wdGlvbnMsIGludCogYnJhY2tldHMKICAgICAgICAgICAgICAgICAgICAgIHBvaW50
ZXIuICovCiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBpZiAocmVw
ZWF0X21heCA9PSAtMSkgewotICAgICAgICAgICAgICAgICAgICAgICAgdXNjaGFyKiBrZXQgPSBw
cmV2aW91czsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBrZXQgKz0gZ2V0T3Bjb2RlVmFsdWVBdE9mZnNldChrZXQsIDEpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoKmtldCAhPSBPUF9LRVQpOworICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgdXNjaGFyKiBrZXQgPSBwcmV2aW91czsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGFkdmFuY2VUb0VuZE9mQnJhY2tldChrZXQpOwogICAgICAgICAgICAgICAgICAg
ICAgICAga2V0b2Zmc2V0ID0gY29kZSAtIGtldDsKICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAKQEAgLTE1NDQsNyArMTMzNSw3IEBAIGNvbXBpbGVCcmFuY2goaW50
IG9wdGlvbnMsIGludCogYnJhY2tldHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKCFicmFsaW5rKSA/IDAgOiBw
cmV2aW91cyAtIGJyYWxpbms7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJhbGluayA9
IHByZXZpb3VzOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE9wY29kZVZhbHVlQXRP
ZmZzZXRBbmRBZHZhbmNlKHByZXZpb3VzLCAwLCBvZmZzZXQpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHB1dExpbmtWYWx1ZUFsbG93WmVyb0FuZEFkdmFuY2UocHJldmlvdXMsIG9mZnNl
dCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdF9tYXgtLTsKQEAgLTE1ODUsNyArMTM3Niw3
IEBAIGNvbXBpbGVCcmFuY2goaW50IG9wdGlvbnMsIGludCogYnJhY2tldHMKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKmNvZGUrKyA9IE9QX0JSQTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IG9mZnNldCA9ICghYnJhbGluaykgPyAwIDogY29kZSAtIGJyYWxp
bms7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyYWxpbmsgPSBjb2RlOwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRPcGNvZGVWYWx1ZUF0T2Zmc2V0QW5kQWR2
YW5jZShjb2RlLCAwLCBvZmZzZXQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dXRMaW5rVmFsdWVBbGxvd1plcm9BbmRBZHZhbmNlKGNvZGUsIG9mZnNldCk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1lbWNweShjb2RlLCBwcmV2aW91cywgbGVuKTsKQEAgLTE1
OTgsMTEgKzEzODksMTEgQEAgY29tcGlsZUJyYW5jaChpbnQgb3B0aW9ucywgaW50KiBicmFja2V0
cwogICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGJyYWxpbmspIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gY29kZSAtIGJyYWxpbmsgKyAxOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVzY2hhciogYnJhID0gY29kZSAtIG9mZnNldDsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbnQgb2xkbGlua29mZnNldCA9IGdldE9wY29kZVZhbHVl
QXRPZmZzZXQoYnJhLCAxKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmFsaW5rID0g
b2xkbGlua29mZnNldCA/IGJyYWxpbmsgLSBvbGRsaW5rb2Zmc2V0IDogMDsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgb2xkbGlua29mZnNldCA9IGdldExpbmtWYWx1ZUFsbG93WmVy
byhicmEgKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmFsaW5rID0gKCFvbGRs
aW5rb2Zmc2V0KSA/IDAgOiBicmFsaW5rIC0gb2xkbGlua29mZnNldDsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqY29kZSsrID0gT1BfS0VUOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1dE9wY29kZVZhbHVlQXRPZmZzZXRBbmRBZHZhbmNlKGNvZGUsIDAsIG9mZnNldCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0T3Bjb2RlVmFsdWVBdE9mZnNldChicmEsIDEs
IG9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TGlua1ZhbHVlQW5kQWR2
YW5jZShjb2RlLCBvZmZzZXQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dExpbmtW
YWx1ZShicmEgKyAxLCBvZmZzZXQpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIApAQCAtMTY3NCw3ICsxNDY1LDcg
QEAgY29tcGlsZUJyYW5jaChpbnQgb3B0aW9ucywgaW50KiBicmFja2V0cwogICAgICAgICAgICAg
ICAgICAgICBpZiAoKysoKmJyYWNrZXRzKSA+IEVYVFJBQ1RfQkFTSUNfTUFYKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBicmF2YWx1ZSA9IE9QX0JSQSArIEVYVFJBQ1RfQkFTSUNfTUFYICsg
MTsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVbMSArIExJTktfU0laRV0gPSBPUF9CUkFO
VU1CRVI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdXQyQnl0ZU9wY29kZVZhbHVlQXRPZmZz
ZXQoY29kZSwgMitMSU5LX1NJWkUsICpicmFja2V0cyk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBwdXQyQnl0ZVZhbHVlKGNvZGUgKyAyICsgTElOS19TSVpFLCAqYnJhY2tldHMpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgc2tpcGJ5dGVzID0gMzsKICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICBlbHNlCkBAIC0xODA2LDcgKzE1OTcsNyBAQCBjb21waWxlQnJh
bmNoKGludCBvcHRpb25zLCBpbnQqIGJyYWNrZXRzCiAgICAgICAgICAgICAgICAgICAgICAgICBp
bnQgbnVtYmVyID0gLWMgLSBFU0NfUkVGOwogICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlv
dXMgPSBjb2RlOwogICAgICAgICAgICAgICAgICAgICAgICAgKmNvZGUrKyA9IE9QX1JFRjsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHB1dDJCeXRlT3Bjb2RlVmFsdWVBdE9mZnNldEFuZEFkdmFu
Y2UoY29kZSwgMCwgbnVtYmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1dDJCeXRlVmFs
dWVBbmRBZHZhbmNlKGNvZGUsIG51bWJlcik7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIC8qIEZvciB0aGUgcmVzdCwgd2Ug
Y2FuIG9idGFpbiB0aGUgT1AgdmFsdWUgYnkgbmVnYXRpbmcgdGhlIGVzY2FwZQpAQCAtMTg0Miw3
ICsxNjMzLDcgQEAgY29tcGlsZUJyYW5jaChpbnQgb3B0aW9ucywgaW50KiBicmFja2V0cwogICAg
ICAgICAgICAgICAgICAgICAgICAgKmNvZGUrKyA9IGM7CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBtY2xlbmd0aCA9
IF9wY3JlX29yZDJ1dGY4KGMsIG1jYnVmZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgbWNsZW5n
dGggPSBlbmNvZGVVVEY4KGMsIG1jYnVmZmVyKTsKICAgICAgICAgICAgICAgICAgICAgCiAgICAg
ICAgICAgICAgICAgICAgICpjb2RlKysgPSAob3B0aW9ucyAmIElnbm9yZUNhc2VPcHRpb24pID8g
T1BfQ0hBUl9JR05PUklOR19DQVNFIDogT1BfQ0hBUjsKICAgICAgICAgICAgICAgICAgICAgZm9y
IChjID0gMDsgYyA8IG1jbGVuZ3RoOyBjKyspCkBAIC0xODkzLDkgKzE2ODQsNiBAQCBGQUlMRUQ6
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi0KLQotCiAvKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKgogKiAgICAgQ29tcGlsZSBzZXF1ZW5jZSBvZiBhbHRl
cm5hdGl2ZXMgICAgICAgICAgICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKiovCkBAIC0xOTM2LDcgKzE3MjQsNyBAQCBjb21waWxlQnJhY2tldChpbnQg
b3B0aW9ucywgaW50KiBicmFja2V0CiAgICAgCiAgICAgLyogT2Zmc2V0IGlzIHNldCB6ZXJvIHRv
IG1hcmsgdGhhdCB0aGlzIGJyYWNrZXQgaXMgc3RpbGwgb3BlbiAqLwogICAgIAotICAgIHB1dE9w
Y29kZVZhbHVlQXRPZmZzZXQoY29kZSwgMSwgMCk7CisgICAgcHV0TGlua1ZhbHVlQWxsb3daZXJv
KGNvZGUgKyAxLCAwKTsKICAgICBjb2RlICs9IDEgKyBMSU5LX1NJWkUgKyBza2lwYnl0ZXM7CiAg
ICAgCiAgICAgLyogTG9vcCBmb3IgZWFjaCBhbHRlcm5hdGl2ZSBicmFuY2ggKi8KQEAgLTIwMDIs
OCArMTc5MCw4IEBAIGNvbXBpbGVCcmFja2V0KGludCBvcHRpb25zLCBpbnQqIGJyYWNrZXQKICAg
ICAgICAgaWYgKHB0ciA+PSBwYXR0ZXJuRW5kIHx8ICpwdHIgIT0gJ3wnKSB7CiAgICAgICAgICAg
ICBpbnQgbGVuZ3RoID0gY29kZSAtIGxhc3RfYnJhbmNoOwogICAgICAgICAgICAgZG8gewotICAg
ICAgICAgICAgICAgIGludCBwcmV2X2xlbmd0aCA9IGdldE9wY29kZVZhbHVlQXRPZmZzZXQobGFz
dF9icmFuY2gsIDEpOwotICAgICAgICAgICAgICAgIHB1dE9wY29kZVZhbHVlQXRPZmZzZXQobGFz
dF9icmFuY2gsIDEsIGxlbmd0aCk7CisgICAgICAgICAgICAgICAgaW50IHByZXZfbGVuZ3RoID0g
Z2V0TGlua1ZhbHVlQWxsb3daZXJvKGxhc3RfYnJhbmNoICsgMSk7CisgICAgICAgICAgICAgICAg
cHV0TGlua1ZhbHVlKGxhc3RfYnJhbmNoICsgMSwgbGVuZ3RoKTsKICAgICAgICAgICAgICAgICBs
ZW5ndGggPSBwcmV2X2xlbmd0aDsKICAgICAgICAgICAgICAgICBsYXN0X2JyYW5jaCAtPSBsZW5n
dGg7CiAgICAgICAgICAgICB9IHdoaWxlIChsZW5ndGggPiAwKTsKQEAgLTIwMTEsNyArMTc5OSw3
IEBAIGNvbXBpbGVCcmFja2V0KGludCBvcHRpb25zLCBpbnQqIGJyYWNrZXQKICAgICAgICAgICAg
IC8qIEZpbGwgaW4gdGhlIGtldCAqLwogICAgICAgICAgICAgCiAgICAgICAgICAgICAqY29kZSA9
IE9QX0tFVDsKLSAgICAgICAgICAgIHB1dE9wY29kZVZhbHVlQXRPZmZzZXQoY29kZSwgMSwgY29k
ZSAtIHN0YXJ0X2JyYWNrZXQpOworICAgICAgICAgICAgcHV0TGlua1ZhbHVlKGNvZGUgKyAxLCBj
b2RlIC0gc3RhcnRfYnJhY2tldCk7CiAgICAgICAgICAgICBjb2RlICs9IDEgKyBMSU5LX1NJWkU7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8qIFNldCB2YWx1ZXMgdG8gcGFzcyBiYWNrICov
CkBAIC0yMDI5LDcgKzE4MTcsNyBAQCBjb21waWxlQnJhY2tldChpbnQgb3B0aW9ucywgaW50KiBi
cmFja2V0CiAgICAgICAgICB6ZXJvIG9mZnNldCB1bnRpbCBpdCBpcyBjbG9zZWQsIG1ha2luZyBp
dCBwb3NzaWJsZSB0byBkZXRlY3QgcmVjdXJzaW9uLiAqLwogICAgICAgICAKICAgICAgICAgKmNv
ZGUgPSBPUF9BTFQ7Ci0gICAgICAgIHB1dE9wY29kZVZhbHVlQXRPZmZzZXQoY29kZSwgMSwgY29k
ZSAtIGxhc3RfYnJhbmNoKTsKKyAgICAgICAgcHV0TGlua1ZhbHVlKGNvZGUgKyAxLCBjb2RlIC0g
bGFzdF9icmFuY2gpOwogICAgICAgICBsYXN0X2JyYW5jaCA9IGNvZGU7CiAgICAgICAgIGNvZGUg
Kz0gMSArIExJTktfU0laRTsKICAgICAgICAgcHRyKys7CkBAIC0yMDM3LDcgKzE4MjUsNiBAQCBj
b21waWxlQnJhY2tldChpbnQgb3B0aW9ucywgaW50KiBicmFja2V0CiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CiAKLQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioKICogICAgICAgICAgQ2hlY2sgZm9yIGFuY2hvcmVkIGV4cHJlc3Npb24gICAg
ICAgICAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
LwpAQCAtMjA1Nyw3ICsxODQ0LDcgQEAgQXJndW1lbnRzOgogCiBzdGF0aWMgYm9vbCBicmFuY2hJ
c0FuY2hvcmVkKGNvbnN0IHVzY2hhciogY29kZSkKIHsKLSAgICBjb25zdCB1c2NoYXIqIHNjb2Rl
ID0gZmlyc3RTaWduaWZpY2FudE9wQ29kZShjb2RlKTsKKyAgICBjb25zdCB1c2NoYXIqIHNjb2Rl
ID0gZmlyc3RTaWduaWZpY2FudE9wY29kZShjb2RlKTsKICAgICBpbnQgb3AgPSAqc2NvZGU7CiAK
ICAgICAvKiBCcmFja2V0cyAqLwpAQCAtMjA3Myw3ICsxODYwLDcgQEAgc3RhdGljIGJvb2wgYnJh
Y2tldElzQW5jaG9yZWQoY29uc3QgdXNjaAogICAgIGRvIHsKICAgICAgICAgaWYgKCFicmFuY2hJ
c0FuY2hvcmVkKGNvZGUgKyAxICsgTElOS19TSVpFKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgY29kZSArPSBnZXRPcGNvZGVWYWx1ZUF0T2Zmc2V0KGNvZGUsIDEpOworICAg
ICAgICBjb2RlICs9IGdldExpbmtWYWx1ZShjb2RlICsgMSk7CiAgICAgfSB3aGlsZSAoKmNvZGUg
PT0gT1BfQUxUKTsgICAvKiBMb29wIGZvciBlYWNoIGFsdGVybmF0aXZlICovCiAgICAgcmV0dXJu
IHRydWU7CiB9CkBAIC0yMTAyLDE0ICsxODg5LDE0IEBAIEFyZ3VtZW50czoKIAogc3RhdGljIGJv
b2wgYnJhbmNoTmVlZHNMaW5lU3RhcnQoY29uc3QgdXNjaGFyKiBjb2RlLCB1bnNpZ25lZCBjYXB0
dXJlTWFwLCB1bnNpZ25lZCBiYWNrcmVmTWFwKQogewotICAgIGNvbnN0IHVzY2hhciogc2NvZGUg
PSBmaXJzdFNpZ25pZmljYW50T3BDb2RlKGNvZGUpOworICAgIGNvbnN0IHVzY2hhciogc2NvZGUg
PSBmaXJzdFNpZ25pZmljYW50T3Bjb2RlKGNvZGUpOwogICAgIGludCBvcCA9ICpzY29kZTsKICAg
ICAKICAgICAvKiBDYXB0dXJpbmcgYnJhY2tldHMgKi8KICAgICBpZiAob3AgPiBPUF9CUkEpIHsK
ICAgICAgICAgaW50IGNhcHR1cmVOdW0gPSBvcCAtIE9QX0JSQTsKICAgICAgICAgaWYgKGNhcHR1
cmVOdW0gPiBFWFRSQUNUX0JBU0lDX01BWCkKLSAgICAgICAgICAgIGNhcHR1cmVOdW0gPSBnZXQy
Qnl0ZU9wY29kZVZhbHVlQXRPZmZzZXQoc2NvZGUsIDIgKyBMSU5LX1NJWkUpOworICAgICAgICAg
ICAgY2FwdHVyZU51bSA9IGdldDJCeXRlVmFsdWUoc2NvZGUgKyAyICsgTElOS19TSVpFKTsKICAg
ICAgICAgaW50IGJyYWNrZXRNYXNrID0gKGNhcHR1cmVOdW0gPCAzMikgPyAoMSA8PCBjYXB0dXJl
TnVtKSA6IDE7CiAgICAgICAgIHJldHVybiBicmFja2V0TmVlZHNMaW5lU3RhcnQoc2NvZGUsIGNh
cHR1cmVNYXAgfCBicmFja2V0TWFzaywgYmFja3JlZk1hcCk7CiAgICAgfQpAQCAtMjEzMyw3ICsx
OTIwLDcgQEAgc3RhdGljIGJvb2wgYnJhY2tldE5lZWRzTGluZVN0YXJ0KGNvbnN0IAogICAgIGRv
IHsKICAgICAgICAgaWYgKCFicmFuY2hOZWVkc0xpbmVTdGFydChjb2RlICsgMSArIExJTktfU0la
RSwgY2FwdHVyZU1hcCwgYmFja3JlZk1hcCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIGNvZGUgKz0gZ2V0T3Bjb2RlVmFsdWVBdE9mZnNldChjb2RlLCAxKTsKKyAgICAgICAg
Y29kZSArPSBnZXRMaW5rVmFsdWUoY29kZSArIDEpOwogICAgIH0gd2hpbGUgKCpjb2RlID09IE9Q
X0FMVCk7ICAvKiBMb29wIGZvciBlYWNoIGFsdGVybmF0aXZlICovCiAgICAgcmV0dXJuIHRydWU7
CiB9CkBAIC0yMTYwLDcgKzE5NDcsNyBAQCBSZXR1cm5zOiAgICAgLTEgb3IgdGhlIGZpeGVkIGZp
cnN0IGNoYXIKIAogc3RhdGljIGludCBicmFuY2hGaW5kRmlyc3RBc3NlcnRlZENoYXJhY3Rlcihj
b25zdCB1c2NoYXIqIGNvZGUsIGJvb2wgaW5hc3NlcnQpCiB7Ci0gICAgY29uc3QgdXNjaGFyKiBz
Y29kZSA9IGZpcnN0U2lnbmlmaWNhbnRPcENvZGVTa2lwcGluZ0Fzc2VydGlvbnMoY29kZSk7Cisg
ICAgY29uc3QgdXNjaGFyKiBzY29kZSA9IGZpcnN0U2lnbmlmaWNhbnRPcGNvZGVTa2lwcGluZ0Fz
c2VydGlvbnMoY29kZSk7CiAgICAgaW50IG9wID0gKnNjb2RlOwogICAgIAogICAgIGlmIChvcCA+
PSBPUF9CUkEpCkBAIC0yMjAyLDcgKzE5ODksNyBAQCBzdGF0aWMgaW50IGJyYWNrZXRGaW5kRmly
c3RBc3NlcnRlZENoYXJhCiAgICAgICAgICAgICBjID0gZDsKICAgICAgICAgZWxzZSBpZiAoYyAh
PSBkKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBjb2RlICs9IGdldE9wY29kZVZh
bHVlQXRPZmZzZXQoY29kZSwgMSk7CisgICAgICAgIGNvZGUgKz0gZ2V0TGlua1ZhbHVlKGNvZGUg
KyAxKTsKICAgICB9IHdoaWxlICgqY29kZSA9PSBPUF9BTFQpOwogICAgIHJldHVybiBjOwogfQpA
QCAtMjI3MSw4ICsyMDU4LDggQEAgc3RhdGljIGludCBjYWxjdWxhdGVDb21waWxlZFBhdHRlcm5M
ZW5ndAogICAgICAgICAgICAgICAgICAgICBpZiAocmVmbnVtID4gY2QudG9wX2JhY2tyZWYpCiAg
ICAgICAgICAgICAgICAgICAgICAgICBjZC50b3BfYmFja3JlZiA9IHJlZm51bTsKICAgICAgICAg
ICAgICAgICAgICAgbGVuZ3RoICs9IDI7ICAgLyogRm9yIHNpbmdsZSBiYWNrIHJlZmVyZW5jZSAq
LwotICAgICAgICAgICAgICAgICAgICBpZiAoc2FmZWx5Q2hlY2tOZXh0Q2hhcihwdHIsIHBhdHRl
cm5FbmQsICd7JykgJiYgaXNfY291bnRlZF9yZXBlYXQocHRyICsgMiwgcGF0dGVybkVuZCkpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHB0ciA9IHJlYWRfcmVwZWF0X2NvdW50cyhwdHIgKyAy
LCAmbWluUmVwZWF0cywgJm1heFJlcGVhdHMsICZlcnJvcmNvZGUpOworICAgICAgICAgICAgICAg
ICAgICBpZiAoc2FmZWx5Q2hlY2tOZXh0Q2hhcihwdHIsIHBhdHRlcm5FbmQsICd7JykgJiYgaXND
b3VudGVkUmVwZWF0KHB0ciArIDIsIHBhdHRlcm5FbmQpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBwdHIgPSByZWFkUmVwZWF0Q291bnRzKHB0ciArIDIsICZtaW5SZXBlYXRzLCAmbWF4UmVw
ZWF0cywgJmVycm9yY29kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3Jjb2Rl
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICgobWluUmVwZWF0cyA9PSAwICYmIChtYXhSZXBlYXRzID09IDEgfHwgbWF4
UmVwZWF0cyA9PSAtMSkpIHx8CkBAIC0yMzAzLDkgKzIwOTAsOSBAQCBzdGF0aWMgaW50IGNhbGN1
bGF0ZUNvbXBpbGVkUGF0dGVybkxlbmd0CiAgICAgICAgICAgICAgY2xhc3MsIG9yIGJhY2sgcmVm
ZXJlbmNlLiAqLwogCiAgICAgICAgICAgICBjYXNlICd7JzoKLSAgICAgICAgICAgICAgICBpZiAo
IWlzX2NvdW50ZWRfcmVwZWF0KHB0cisxLCBwYXR0ZXJuRW5kKSkKKyAgICAgICAgICAgICAgICBp
ZiAoIWlzQ291bnRlZFJlcGVhdChwdHIgKyAxLCBwYXR0ZXJuRW5kKSkKICAgICAgICAgICAgICAg
ICAgICAgZ290byBOT1JNQUxfQ0hBUjsKLSAgICAgICAgICAgICAgICBwdHIgPSByZWFkX3JlcGVh
dF9jb3VudHMocHRyKzEsICZtaW5SZXBlYXRzLCAmbWF4UmVwZWF0cywgJmVycm9yY29kZSk7Cisg
ICAgICAgICAgICAgICAgcHRyID0gcmVhZFJlcGVhdENvdW50cyhwdHIgKyAxLCAmbWluUmVwZWF0
cywgJm1heFJlcGVhdHMsICZlcnJvcmNvZGUpOwogICAgICAgICAgICAgICAgIGlmIChlcnJvcmNv
ZGUgIT0gMCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAg
IApAQCAtMjQ1MCw3ICsyMjM3LDcgQEAgc3RhdGljIGludCBjYWxjdWxhdGVDb21waWxlZFBhdHRl
cm5MZW5ndAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9jYywgb2Nk
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNjID0gYzsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvcmlnZCA9IGQ7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoZ2V0X290aGVyY2FzZV9yYW5nZSgmY2Ms
IG9yaWdkLCAmb2NjLCAmb2NkKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd2hpbGUgKGdldE90aGVyY2FzZVJhbmdlKCZjYywgb3JpZ2QsICZvY2MsICZvY2QpKSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9jYyA+PSBjICYmIG9j
ZCA8PSBkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsgICAvKiBTa2lwIGVtYmVkZGVkICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgCkBAIC0yNDY3LDE0ICsyMjU0LDE0IEBAIHN0YXRpYyBpbnQgY2FsY3VsYXRl
Q29tcGlsZWRQYXR0ZXJuTGVuZ3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBbiBleHRy
YSBpdGVtIGlzIG5lZWRlZCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCArPSAx
ICsgX3BjcmVfb3JkMnV0Zjgob2NjLCBidWZmZXIpICsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoKG9jYyA9PSBvY2QpID8gMCA6IF9wY3JlX29yZDJ1dGY4KG9jZCwg
YnVmZmVyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3Ro
ICs9IDEgKyBlbmNvZGVVVEY4KG9jYywgYnVmZmVyKSArCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKChvY2MgPT0gb2NkKSA/IDAgOiBlbmNvZGVVVEY4KG9jZCwgYnVm
ZmVyKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRoZSBsZW5ndGggb2YgdGhlIChw
b3NzaWJseSBleHRlbmRlZCkgcmFuZ2UgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCArPSAxICsgX3BjcmVf
b3JkMnV0ZjgoYywgYnVmZmVyKSArIF9wY3JlX29yZDJ1dGY4KGQsIGJ1ZmZlcik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aCArPSAxICsgZW5jb2RlVVRGOChjLCBidWZm
ZXIpICsgZW5jb2RlVVRGOChkLCBidWZmZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg
IH0KQEAgLTI0OTMsNyArMjI4MCw3IEBAIHN0YXRpYyBpbnQgY2FsY3VsYXRlQ29tcGlsZWRQYXR0
ZXJuTGVuZ3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzX3V0Zjgg
PSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoICs9IExJ
TktfU0laRSArIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoICs9IChpZ25vcmVDYXNlID8gMiA6IDEpICog
KDEgKyBfcGNyZV9vcmQydXRmOChjLCBidWZmZXIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbGVuZ3RoICs9IChpZ25vcmVDYXNlID8gMiA6IDEpICogKDEgKyBlbmNvZGVVVEY4
KGMsIGJ1ZmZlcikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjUxOSw4ICsyMzA2LDgg
QEAgc3RhdGljIGludCBjYWxjdWxhdGVDb21waWxlZFBhdHRlcm5MZW5ndAogICAgICAgICAgICAg
ICAgICAgICAvKiBBIHJlcGVhdCBuZWVkcyBlaXRoZXIgMSBvciA1IGJ5dGVzLiBJZiBpdCBpcyBh
IHBvc3Nlc3NpdmUgcXVhbnRpZmllciwKICAgICAgICAgICAgICAgICAgICAgIHdlIGFsc28gbmVl
ZCBleHRyYSBmb3Igd3JhcHBpbmcgdGhlIHdob2xlIHRoaW5nIGluIGEgc3ViLXBhdHRlcm4uICov
CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBpZiAoc2FmZWx5Q2hl
Y2tOZXh0Q2hhcihwdHIsIHBhdHRlcm5FbmQsICd7JykgJiYgaXNfY291bnRlZF9yZXBlYXQocHRy
KzIsIHBhdHRlcm5FbmQpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdHIgPSByZWFkX3Jl
cGVhdF9jb3VudHMocHRyKzIsICZtaW5SZXBlYXRzLCAmbWF4UmVwZWF0cywgJmVycm9yY29kZSk7
CisgICAgICAgICAgICAgICAgICAgIGlmIChzYWZlbHlDaGVja05leHRDaGFyKHB0ciwgcGF0dGVy
bkVuZCwgJ3snKSAmJiBpc0NvdW50ZWRSZXBlYXQocHRyICsgMiwgcGF0dGVybkVuZCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHB0ciA9IHJlYWRSZXBlYXRDb3VudHMocHRyICsgMiwgJm1p
blJlcGVhdHMsICZtYXhSZXBlYXRzLCAmZXJyb3Jjb2RlKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChlcnJvcmNvZGUgIT0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gLTE7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG1pblJlcGVhdHMgPT0gMCAmJiAo
bWF4UmVwZWF0cyA9PSAxIHx8IG1heFJlcGVhdHMgPT0gLTEpKSB8fApAQCAtMjYxNiwxMSArMjQw
MywxMSBAQCBzdGF0aWMgaW50IGNhbGN1bGF0ZUNvbXBpbGVkUGF0dGVybkxlbmd0CiAgICAgICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICBkdXBsZW5ndGggPSAwOwogICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIC8qIExlYXZlIHB0ciBhdCB0aGUgZmluYWwgY2hh
cjsgZm9yIHJlYWRfcmVwZWF0X2NvdW50cyB0aGlzIGhhcHBlbnMKKyAgICAgICAgICAgICAgICAv
KiBMZWF2ZSBwdHIgYXQgdGhlIGZpbmFsIGNoYXI7IGZvciByZWFkUmVwZWF0Q291bnRzIHRoaXMg
aGFwcGVucwogICAgICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5OyBmb3IgdGhlIG90aGVycyB3
ZSBuZWVkIGFuIGluY3JlbWVudC4gKi8KICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICBpZiAoKHB0ciArIDEgPCBwYXR0ZXJuRW5kKSAmJiAoYyA9IHB0clsxXSkgPT0gJ3snICYmIGlz
X2NvdW50ZWRfcmVwZWF0KHB0cisyLCBwYXR0ZXJuRW5kKSkgewotICAgICAgICAgICAgICAgICAg
ICBwdHIgPSByZWFkX3JlcGVhdF9jb3VudHMocHRyKzIsICZtaW5SZXBlYXRzLCAmbWF4UmVwZWF0
cywgJmVycm9yY29kZSk7CisgICAgICAgICAgICAgICAgaWYgKChwdHIgKyAxIDwgcGF0dGVybkVu
ZCkgJiYgKGMgPSBwdHJbMV0pID09ICd7JyAmJiBpc0NvdW50ZWRSZXBlYXQocHRyICsgMiwgcGF0
dGVybkVuZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcHRyID0gcmVhZFJlcGVhdENvdW50cyhw
dHIgKyAyLCAmbWluUmVwZWF0cywgJm1heFJlcGVhdHMsICZlcnJvcmNvZGUpOwogICAgICAgICAg
ICAgICAgICAgICBpZiAoZXJyb3Jjb2RlKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IC0xOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnKicpIHsKQEAgLTI3MjAsOSAr
MjUwNyw5IEBAIFJldHVybnM6ICAgICAgICBwb2ludGVyIHRvIGNvbXBpbGVkIGRhdGEKICAgICAg
ICAgICAgICAgICB3aXRoIGVycm9ycHRyIGFuZCBlcnJvcm9mZnNldCBzZXQKICovCiAKLXN0YXRp
YyBKU1JlZ0V4cCogcmV0dXJuRXJyb3IoRXJyb3JDb2RlIGVycm9yY29kZSwgY29uc3QgY2hhcioq
IGVycm9ycHRyKQorc3RhdGljIGlubGluZSBKU1JlZ0V4cCogcmV0dXJuRXJyb3IoRXJyb3JDb2Rl
IGVycm9yY29kZSwgY29uc3QgY2hhcioqIGVycm9ycHRyKQogewotICAgICplcnJvcnB0ciA9IGVy
cm9yX3RleHQoZXJyb3Jjb2RlKTsKKyAgICAqZXJyb3JwdHIgPSBlcnJvclRleHQoZXJyb3Jjb2Rl
KTsKICAgICByZXR1cm4gMDsKIH0KIApJbmRleDogSmF2YVNjcmlwdENvcmUvcGNyZS9wY3JlX2V4
ZWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3BjcmUvcGNyZV9leGVjLmNwcAko
cmV2aXNpb24gMjg2ODcpCisrKyBKYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmVfZXhlYy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyNyw2ICsxMjcsMjAgQEAgZGVmaW5lZCBQQ1JFX0VSUk9SX3h4eCBj
b2Rlcywgd2hpY2ggYXJlIAogI2RlZmluZSBNQVRDSF9NQVRDSCAgICAgICAgMQogI2RlZmluZSBN
QVRDSF9OT01BVENIICAgICAgMAogCisvKiBUaGUgbWF4aW11bSByZW1haW5pbmcgbGVuZ3RoIG9m
IHN1YmplY3Qgd2UgYXJlIHByZXBhcmVkIHRvIHNlYXJjaCBmb3IgYQorcmVxX2J5dGUgbWF0Y2gu
ICovCisKKyNkZWZpbmUgUkVRX0JZVEVfTUFYIDEwMDAKKworLyogVGhlIGJlbG93IGxpbWl0IHJl
c3RyaWN0cyB0aGUgbnVtYmVyIG9mIHJlY3Vyc2l2ZSBtYXRjaCBjYWxscyBpbiBvcmRlciB0bwor
bGltaXQgdGhlIG1heGltdW0gYW1vdW50IG9mIHN0b3JhZ2UuCisgCitUaGlzIGxpbWl0IGlzIHRp
ZWQgdG8gdGhlIHNpemUgb2YgTWF0Y2hGcmFtZS4gIFJpZ2h0IG5vdyB3ZSBhbGxvdyBQQ1JFIHRv
IGFsbG9jYXRlIHVwCit0byBNQVRDSF9SRUNVUlNJT05fTElNSVQgLSAxNiAqIHNpemVvZihNYXRj
aEZyYW1lKSBieXRlcyBvZiAic3RhY2siIHNwYWNlIGJlZm9yZSB3ZSBnaXZlIHVwLgorQ3VycmVu
dGx5IHRoYXQncyAxMDAwMDAgLSAxNiAqICgyMyAqIDQpICB+IDkwTUIuICovCisKKyNkZWZpbmUg
TUFUQ0hfUkVDVVJTSU9OX0xJTUlUIDEwMDAwMAorCiAjaWZkZWYgREVCVUcKIC8qKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqICAgICAgICBEZWJ1Z2dp
bmcgZnVuY3Rpb24gdG8gcHJpbnQgY2hhcnMgICAgICAgKgpAQCAtMjM4LDM3ICsyNTIsMjkgQEAg
YSBiaXQgbW9yZSBjb2RlIGFuZCBub3RpY2UgaWYgd2UgdXNlIGNvbgogCiAjZW5kaWYKIAotI2Rl
ZmluZSBDSEVDS19SRUNVUlNJT05fTElNSVQgXAotICAgIGlmIChzdGFjay5zaXplID49IE1BVENI
X0xJTUlUX1JFQ1VSU0lPTikgXAotICAgICAgICByZXR1cm4gbWF0Y2hFcnJvcihKU1JlZ0V4cEVy
cm9yUmVjdXJzaW9uTGltaXQsIHN0YWNrKTsKLQotI2RlZmluZSBSRUNVUlNFX1dJVEhfUkVUVVJO
X05VTUJFUihudW0pIFwKLSAgICBDSEVDS19SRUNVUlNJT05fTElNSVQgXAorI2RlZmluZSBSRUNV
UlNJVkVfTUFUQ0hfQ09NTU9OKG51bSkgXAorICAgIGlmIChzdGFjay5zaXplID49IE1BVENIX1JF
Q1VSU0lPTl9MSU1JVCkgXAorICAgICAgICByZXR1cm4gbWF0Y2hFcnJvcihKU1JlZ0V4cEVycm9y
UmVjdXJzaW9uTGltaXQsIHN0YWNrKTsgXAogICAgIGdvdG8gUkVDVVJTRTtcCi0gICAgUlJFVFVS
Tl8jI251bToKKyAgICBSUkVUVVJOXyMjbnVtOiBcCisgICAgc3RhY2sucG9wQ3VycmVudEZyYW1l
KCk7CiAKICNkZWZpbmUgUkVDVVJTSVZFX01BVENIKG51bSwgcmEsIHJiKSBcCi17XAotICAgIHN0
YWNrLnB1c2hOZXdGcmFtZSgocmEpLCAocmIpLCBSTUFUQ0hfV0hFUkUobnVtKSk7IFwKLSAgICBS
RUNVUlNFX1dJVEhfUkVUVVJOX05VTUJFUihudW0pIFwKLSAgICBzdGFjay5wb3BDdXJyZW50RnJh
bWUoKTsgXAotfQorICAgIGRvIHsgXAorICAgICAgICBzdGFjay5wdXNoTmV3RnJhbWUoKHJhKSwg
KHJiKSwgUk1BVENIX1dIRVJFKG51bSkpOyBcCisgICAgICAgIFJFQ1VSU0lWRV9NQVRDSF9DT01N
T04obnVtKSBcCisgICAgfSB3aGlsZSAoMCkKIAogI2RlZmluZSBSRUNVUlNJVkVfTUFUQ0hfU1RB
UlROR19ORVdfR1JPVVAobnVtLCByYSwgcmIpIFwKLXtcCi0gICAgc3RhY2sucHVzaE5ld0ZyYW1l
KChyYSksIChyYiksIFJNQVRDSF9XSEVSRShudW0pKTsgXAotICAgIHN0YXJ0TmV3R3JvdXAoc3Rh
Y2suY3VycmVudEZyYW1lKTsgXAotICAgIFJFQ1VSU0VfV0lUSF9SRVRVUk5fTlVNQkVSKG51bSkg
XAotICAgIHN0YWNrLnBvcEN1cnJlbnRGcmFtZSgpOyBcCi19CisgICAgZG8geyBcCisgICAgICAg
IHN0YWNrLnB1c2hOZXdGcmFtZSgocmEpLCAocmIpLCBSTUFUQ0hfV0hFUkUobnVtKSk7IFwKKyAg
ICAgICAgc3RhcnROZXdHcm91cChzdGFjay5jdXJyZW50RnJhbWUpOyBcCisgICAgICAgIFJFQ1VS
U0lWRV9NQVRDSF9DT01NT04obnVtKSBcCisgICAgfSB3aGlsZSAoMCkKIAogI2RlZmluZSBSUkVU
VVJOIGdvdG8gUlJFVFVSTl9MQUJFTAogCi0jZGVmaW5lIFJSRVRVUk5fTk9fTUFUQ0ggXAotICB7
XAotICAgIGlzX21hdGNoID0gZmFsc2U7XAotICAgIFJSRVRVUk47XAotICB9CisjZGVmaW5lIFJS
RVRVUk5fTk9fTUFUQ0ggZG8geyBpc19tYXRjaCA9IGZhbHNlOyBSUkVUVVJOOyB9IHdoaWxlICgw
KQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgog
KiAgICAgICAgIE1hdGNoIGZyb20gY3VycmVudCBwb3NpdGlvbiAgICAgICAgICAgICoKQEAgLTQ2
OSw3ICs0NzUsNyBAQCBSRUNVUlNFOgogICAgICAgICAgICAgICAgICAgICBSRUNVUlNJVkVfTUFU
Q0hfU1RBUlROR19ORVdfR1JPVVAoMiwgc3RhY2suY3VycmVudEZyYW1lLT5hcmdzLmluc3RydWN0
aW9uUHRyICsgMSArIExJTktfU0laRSwgc3RhY2suY3VycmVudEZyYW1lLT5hcmdzLnN1YnBhdHRl
cm5TdGFydCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpc19tYXRjaCkKICAgICAgICAgICAg
ICAgICAgICAgICAgIFJSRVRVUk47Ci0gICAgICAgICAgICAgICAgICAgIHN0YWNrLmN1cnJlbnRG
cmFtZS0+YXJncy5pbnN0cnVjdGlvblB0ciArPSBnZXRPcGNvZGVWYWx1ZUF0T2Zmc2V0KHN0YWNr
LmN1cnJlbnRGcmFtZS0+YXJncy5pbnN0cnVjdGlvblB0ciwgMSk7CisgICAgICAgICAgICAgICAg
ICAgIHN0YWNrLmN1cnJlbnRGcmFtZS0+YXJncy5pbnN0cnVjdGlvblB0ciArPSBnZXRMaW5rVmFs
dWUoc3RhY2suY3VycmVudEZyYW1lLT5hcmdzLmluc3RydWN0aW9uUHRyICsgMSk7CiAgICAgICAg
ICAgICAgICAgfSB3aGlsZSAoKnN0YWNrLmN1cnJlbnRGcmFtZS0+YXJncy5pbnN0cnVjdGlvblB0
ciA9PSBPUF9BTFQpOwogICAgICAgICAgICAgICAgIERQUklOVEYoKCJicmFja2V0IDAgZmFpbGVk
XG4iKSk7CiAgICAgICAgICAgICAgICAgUlJFVFVSTjsKQEAgLTQ5OSw3ICs1MDUsNyBAQCBSRUNV
UlNFOgogICAgICAgICAgICAgICAgICAgICBSRUNVUlNJVkVfTUFUQ0hfU1RBUlROR19ORVdfR1JP
VVAoNiwgc3RhY2suY3VycmVudEZyYW1lLT5hcmdzLmluc3RydWN0aW9uUHRyICsgMSArIExJTktf
U0laRSwgTlVMTCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpc19tYXRjaCkKICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBzdGFjay5jdXJyZW50
RnJhbWUtPmFyZ3MuaW5zdHJ1Y3Rpb25QdHIgKz0gZ2V0T3Bjb2RlVmFsdWVBdE9mZnNldChzdGFj
ay5jdXJyZW50RnJhbWUtPmFyZ3MuaW5zdHJ1Y3Rpb25QdHIsIDEpOworICAgICAgICAgICAgICAg
ICAgICBzdGFjay5jdXJyZW50RnJhbWUtPmFyZ3MuaW5zdHJ1Y3Rpb25QdHIgKz0gZ2V0TGlua1Zh
bHVlKHN0YWNrLmN1cnJlbnRGcmFtZS0+YXJncy5pbnN0cnVjdGlvblB0ciArIDEpOwogICAgICAg
ICAgICAgICAgIH0gd2hpbGUgKCpzdGFjay5jdXJyZW50RnJhbWUtPmFyZ3MuaW5zdHJ1Y3Rpb25Q
dHIgPT0gT1BfQUxUKTsKICAgICAgICAgICAgICAgICBpZiAoKnN0YWNrLmN1cnJlbnRGcmFtZS0+
YXJncy5pbnN0cnVjdGlvblB0ciA9PSBPUF9LRVQpCiAgICAgICAgICAgICAgICAgICAgIFJSRVRV
Uk5fTk9fTUFUQ0g7CkBAIC01MDcsNyArNTEzLDcgQEAgUkVDVVJTRToKICAgICAgICAgICAgICAg
ICAvKiBDb250aW51ZSBmcm9tIGFmdGVyIHRoZSBhc3NlcnRpb24sIHVwZGF0aW5nIHRoZSBvZmZz
ZXRzIGhpZ2ggd2F0ZXIKICAgICAgICAgICAgICAgICAgbWFyaywgc2luY2UgZXh0cmFjdHMgbWF5
IGhhdmUgYmVlbiB0YWtlbiBkdXJpbmcgdGhlIGFzc2VydGlvbi4gKi8KICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICBtb3ZlT3Bjb2RlUHRyUGFzdEFueUFsdGVybmF0ZUJyYW5jaGVz
KHN0YWNrLmN1cnJlbnRGcmFtZS0+YXJncy5pbnN0cnVjdGlvblB0cik7CisgICAgICAgICAgICAg
ICAgYWR2YW5jZVRvRW5kT2ZCcmFja2V0KHN0YWNrLmN1cnJlbnRGcmFtZS0+YXJncy5pbnN0cnVj
dGlvblB0cik7CiAgICAgICAgICAgICAgICAgc3RhY2suY3VycmVudEZyYW1lLT5hcmdzLmluc3Ry
dWN0aW9uUHRyICs9IDEgKyBMSU5LX1NJWkU7CiAgICAgICAgICAgICAgICAgc3RhY2suY3VycmVu
dEZyYW1lLT5hcmdzLm9mZnNldF90b3AgPSBtZC5lbmRfb2Zmc2V0X3RvcDsKICAgICAgICAgICAg
ICAgICBORVhUX09QQ09ERTsKQEAgLTUxOSw3ICs1MjUsNyBAQCBSRUNVUlNFOgogICAgICAgICAg
ICAgICAgICAgICBSRUNVUlNJVkVfTUFUQ0hfU1RBUlROR19ORVdfR1JPVVAoNywgc3RhY2suY3Vy
cmVudEZyYW1lLT5hcmdzLmluc3RydWN0aW9uUHRyICsgMSArIExJTktfU0laRSwgTlVMTCk7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChpc19tYXRjaCkKICAgICAgICAgICAgICAgICAgICAgICAg
IFJSRVRVUk5fTk9fTUFUQ0g7Ci0gICAgICAgICAgICAgICAgICAgIHN0YWNrLmN1cnJlbnRGcmFt
ZS0+YXJncy5pbnN0cnVjdGlvblB0ciArPSBnZXRPcGNvZGVWYWx1ZUF0T2Zmc2V0KHN0YWNrLmN1
cnJlbnRGcmFtZS0+YXJncy5pbnN0cnVjdGlvblB0ciwgMSk7CisgICAgICAgICAgICAgICAgICAg
IHN0YWNrLmN1cnJlbnRGcmFtZS0+YXJncy5pbnN0cnVjdGlvblB0ciArPSBnZXRMaW5rVmFsdWUo
c3RhY2suY3VycmVudEZyYW1lLT5hcmdzLmluc3RydWN0aW9uUHRyICsgMSk7CiAgICAgICAgICAg
ICAgICAgfSB3aGlsZSAoKnN0YWNrLmN1cnJlbnRGcmFtZS0+YXJncy5pbnN0cnVjdGlvblB0ciA9
PSBPUF9BTFQpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHN0YWNrLmN1cnJl
bnRGcmFtZS0+YXJncy5pbnN0cnVjdGlvblB0ciArPSAxICsgTElOS19TSVpFOwpAQCAtNTQwLDcg
KzU0Niw3IEBAIFJFQ1VSU0U6CiAgICAgICAgICAgICAgICAgICAgIFJFQ1VSU0lWRV9NQVRDSF9T
VEFSVE5HX05FV19HUk9VUCg5LCBzdGFjay5jdXJyZW50RnJhbWUtPmFyZ3MuaW5zdHJ1Y3Rpb25Q
dHIgKyAxICsgTElOS19TSVpFLCBzdGFjay5jdXJyZW50RnJhbWUtPmFyZ3Muc3VicGF0dGVyblN0
YXJ0KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGlzX21hdGNoKQogICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIHN0YWNrLmN1cnJlbnRGcmFtZS0+
YXJncy5pbnN0cnVjdGlvblB0ciArPSBnZXRPcGNvZGVWYWx1ZUF0T2Zmc2V0KHN0YWNrLmN1cnJl
bnRGcmFtZS0+YXJncy5pbnN0cnVjdGlvblB0ciwgMSk7CisgICAgICAgICAgICAgICAgICAgIHN0
YWNrLmN1cnJlbnRGcmFtZS0+YXJncy5pbnN0cnVjdGlvblB0ciArPSBnZXRMaW5rVmFsdWUoc3Rh
Y2suY3VycmVudEZyYW1lLT5hcmdzLmluc3RydWN0aW9uUHRyICsgMSk7CiAgICAgICAgICAgICAg
ICAgfSB3aGlsZSAoKnN0YWNrLmN1cnJlbnRGcmFtZS0+YXJncy5pbnN0cnVjdGlvblB0ciA9PSBP
UF9BTFQpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIC8qIElmIGhpdCB0aGUg
ZW5kIG9mIHRoZSBncm91cCAod2hpY2ggY291bGQgYmUgcmVwZWF0ZWQpLCBmYWlsICovCkBAIC01
NTEsNyArNTU3LDcgQEAgUkVDVVJTRToKICAgICAgICAgICAgICAgICAvKiBDb250aW51ZSBhcyBm
cm9tIGFmdGVyIHRoZSBhc3NlcnRpb24sIHVwZGF0aW5nIHRoZSBvZmZzZXRzIGhpZ2ggd2F0ZXIK
ICAgICAgICAgICAgICAgICAgbWFyaywgc2luY2UgZXh0cmFjdHMgbWF5IGhhdmUgYmVlbiB0YWtl
bi4gKi8KICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtb3ZlT3Bjb2RlUHRyUGFz
dEFueUFsdGVybmF0ZUJyYW5jaGVzKHN0YWNrLmN1cnJlbnRGcmFtZS0+YXJncy5pbnN0cnVjdGlv
blB0cik7CisgICAgICAgICAgICAgICAgYWR2YW5jZVRvRW5kT2ZCcmFja2V0KHN0YWNrLmN1cnJl
bnRGcmFtZS0+YXJncy5pbnN0cnVjdGlvblB0cik7CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgc3RhY2suY3VycmVudEZyYW1lLT5hcmdzLm9mZnNldF90b3AgPSBtZC5lbmRfb2Zm
c2V0X3RvcDsKICAgICAgICAgICAgICAgICBzdGFjay5jdXJyZW50RnJhbWUtPmFyZ3Muc3ViamVj
dFB0ciA9IG1kLmVuZF9tYXRjaF9wdHI7CkBAIC01OTMsNyArNTk5LDcgQEAgUkVDVVJTRToKICAg
ICAgICAgICAgICBicmFja2V0ZWQgZ3JvdXAgYW5kIGdvIHRvIHRoZXJlLiAqLwogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgQkVHSU5fT1BDT0RFKEFMVCk6Ci0gICAgICAgICAgICAgICAg
bW92ZU9wY29kZVB0clBhc3RBbnlBbHRlcm5hdGVCcmFuY2hlcyhzdGFjay5jdXJyZW50RnJhbWUt
PmFyZ3MuaW5zdHJ1Y3Rpb25QdHIpOworICAgICAgICAgICAgICAgIGFkdmFuY2VUb0VuZE9mQnJh
Y2tldChzdGFjay5jdXJyZW50RnJhbWUtPmFyZ3MuaW5zdHJ1Y3Rpb25QdHIpOwogICAgICAgICAg
ICAgICAgIE5FWFRfT1BDT0RFOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgLyogQlJB
WkVSTyBhbmQgQlJBTUlOWkVSTyBvY2N1ciBqdXN0IGJlZm9yZSBhIGJyYWNrZXQgZ3JvdXAsIGlu
ZGljYXRpbmcKQEAgLTYwNywxNCArNjEzLDE0IEBAIFJFQ1VSU0U6CiAgICAgICAgICAgICAgICAg
UkVDVVJTSVZFX01BVENIX1NUQVJUTkdfTkVXX0dST1VQKDE0LCBzdGFjay5jdXJyZW50RnJhbWUt
PmxvY2Fscy5zdGFydE9mUmVwZWF0aW5nQnJhY2tldCwgc3RhY2suY3VycmVudEZyYW1lLT5hcmdz
LnN1YnBhdHRlcm5TdGFydCk7CiAgICAgICAgICAgICAgICAgaWYgKGlzX21hdGNoKQogICAgICAg
ICAgICAgICAgICAgICBSUkVUVVJOOwotICAgICAgICAgICAgICAgIG1vdmVPcGNvZGVQdHJQYXN0
QW55QWx0ZXJuYXRlQnJhbmNoZXMoc3RhY2suY3VycmVudEZyYW1lLT5sb2NhbHMuc3RhcnRPZlJl
cGVhdGluZ0JyYWNrZXQpOworICAgICAgICAgICAgICAgIGFkdmFuY2VUb0VuZE9mQnJhY2tldChz
dGFjay5jdXJyZW50RnJhbWUtPmxvY2Fscy5zdGFydE9mUmVwZWF0aW5nQnJhY2tldCk7CiAgICAg
ICAgICAgICAgICAgc3RhY2suY3VycmVudEZyYW1lLT5hcmdzLmluc3RydWN0aW9uUHRyID0gc3Rh
Y2suY3VycmVudEZyYW1lLT5sb2NhbHMuc3RhcnRPZlJlcGVhdGluZ0JyYWNrZXQgKyAxICsgTElO
S19TSVpFOwogICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgQkVHSU5fT1BDT0RFKEJSQU1JTlpFUk8pOiB7CiAg
ICAgICAgICAgICAgICAgc3RhY2suY3VycmVudEZyYW1lLT5sb2NhbHMuc3RhcnRPZlJlcGVhdGlu
Z0JyYWNrZXQgPSBzdGFjay5jdXJyZW50RnJhbWUtPmFyZ3MuaW5zdHJ1Y3Rpb25QdHIgKyAxOwot
ICAgICAgICAgICAgICAgIG1vdmVPcGNvZGVQdHJQYXN0QW55QWx0ZXJuYXRlQnJhbmNoZXMoc3Rh
Y2suY3VycmVudEZyYW1lLT5sb2NhbHMuc3RhcnRPZlJlcGVhdGluZ0JyYWNrZXQpOworICAgICAg
ICAgICAgICAgIGFkdmFuY2VUb0VuZE9mQnJhY2tldChzdGFjay5jdXJyZW50RnJhbWUtPmxvY2Fs
cy5zdGFydE9mUmVwZWF0aW5nQnJhY2tldCk7CiAgICAgICAgICAgICAgICAgUkVDVVJTSVZFX01B
VENIX1NUQVJUTkdfTkVXX0dST1VQKDE1LCBzdGFjay5jdXJyZW50RnJhbWUtPmxvY2Fscy5zdGFy
dE9mUmVwZWF0aW5nQnJhY2tldCArIDEgKyBMSU5LX1NJWkUsIHN0YWNrLmN1cnJlbnRGcmFtZS0+
YXJncy5zdWJwYXR0ZXJuU3RhcnQpOwogICAgICAgICAgICAgICAgIGlmIChpc19tYXRjaCkKICAg
ICAgICAgICAgICAgICAgICAgUlJFVFVSTjsKQEAgLTYzMCw3ICs2MzYsNyBAQCBSRUNVUlNFOgog
ICAgICAgICAgICAgQkVHSU5fT1BDT0RFKEtFVCk6CiAgICAgICAgICAgICBCRUdJTl9PUENPREUo
S0VUUk1JTik6CiAgICAgICAgICAgICBCRUdJTl9PUENPREUoS0VUUk1BWCk6Ci0gICAgICAgICAg
ICAgICAgc3RhY2suY3VycmVudEZyYW1lLT5sb2NhbHMuaW5zdHJ1Y3Rpb25QdHJBdFN0YXJ0T2ZP
bmNlID0gc3RhY2suY3VycmVudEZyYW1lLT5hcmdzLmluc3RydWN0aW9uUHRyIC0gZ2V0T3Bjb2Rl
VmFsdWVBdE9mZnNldChzdGFjay5jdXJyZW50RnJhbWUtPmFyZ3MuaW5zdHJ1Y3Rpb25QdHIsIDEp
OworICAgICAgICAgICAgICAgIHN0YWNrLmN1cnJlbnRGcmFtZS0+bG9jYWxzLmluc3RydWN0aW9u
UHRyQXRTdGFydE9mT25jZSA9IHN0YWNrLmN1cnJlbnRGcmFtZS0+YXJncy5pbnN0cnVjdGlvblB0
ciAtIGdldExpbmtWYWx1ZShzdGFjay5jdXJyZW50RnJhbWUtPmFyZ3MuaW5zdHJ1Y3Rpb25QdHIg
KyAxKTsKICAgICAgICAgICAgICAgICBzdGFjay5jdXJyZW50RnJhbWUtPmFyZ3Muc3VicGF0dGVy
blN0YXJ0ID0gc3RhY2suY3VycmVudEZyYW1lLT5sb2NhbHMuc3VicGF0dGVyblN0YXJ0OwogICAg
ICAgICAgICAgICAgIHN0YWNrLmN1cnJlbnRGcmFtZS0+bG9jYWxzLnN1YnBhdHRlcm5TdGFydCA9
IHN0YWNrLmN1cnJlbnRGcmFtZS0+cHJldmlvdXNGcmFtZS0+YXJncy5zdWJwYXR0ZXJuU3RhcnQ7
CiAKQEAgLTY1MSw3ICs2NTcsNyBAQCBSRUNVUlNFOgogICAgICAgICAgICAgICAgICB0aGUgbnVt
YmVyIGZyb20gYSBkdW1teSBvcGNvZGUgYXQgdGhlIHN0YXJ0LiAqLwogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGlmIChzdGFjay5jdXJyZW50RnJhbWUtPmxvY2Fscy5udW1iZXIg
PiBFWFRSQUNUX0JBU0lDX01BWCkKLSAgICAgICAgICAgICAgICAgICAgc3RhY2suY3VycmVudEZy
YW1lLT5sb2NhbHMubnVtYmVyID0gZ2V0MkJ5dGVPcGNvZGVWYWx1ZUF0T2Zmc2V0KHN0YWNrLmN1
cnJlbnRGcmFtZS0+bG9jYWxzLmluc3RydWN0aW9uUHRyQXRTdGFydE9mT25jZSwgMitMSU5LX1NJ
WkUpOworICAgICAgICAgICAgICAgICAgICBzdGFjay5jdXJyZW50RnJhbWUtPmxvY2Fscy5udW1i
ZXIgPSBnZXQyQnl0ZVZhbHVlKHN0YWNrLmN1cnJlbnRGcmFtZS0+bG9jYWxzLmluc3RydWN0aW9u
UHRyQXRTdGFydE9mT25jZSArIDIgKyBMSU5LX1NJWkUpOwogICAgICAgICAgICAgICAgIHN0YWNr
LmN1cnJlbnRGcmFtZS0+bG9jYWxzLm9mZnNldCA9IHN0YWNrLmN1cnJlbnRGcmFtZS0+bG9jYWxz
Lm51bWJlciA8PCAxOwogICAgICAgICAgICAgICAgIAogI2lmZGVmIERFQlVHCkBAIC04MDksNyAr
ODE1LDcgQEAgUkVDVVJTRToKICAgICAgICAgICAgICBsb29wcykuICovCiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICBCRUdJTl9PUENPREUoUkVGKToKLSAgICAgICAgICAgICAgICBzdGFj
ay5jdXJyZW50RnJhbWUtPmxvY2Fscy5vZmZzZXQgPSBnZXQyQnl0ZU9wY29kZVZhbHVlQXRPZmZz
ZXQoc3RhY2suY3VycmVudEZyYW1lLT5hcmdzLmluc3RydWN0aW9uUHRyLCAxKSA8PCAxOyAgICAg
ICAgICAgICAgIC8qIERvdWJsZWQgcmVmIG51bWJlciAqLworICAgICAgICAgICAgICAgIHN0YWNr
LmN1cnJlbnRGcmFtZS0+bG9jYWxzLm9mZnNldCA9IGdldDJCeXRlVmFsdWUoc3RhY2suY3VycmVu
dEZyYW1lLT5hcmdzLmluc3RydWN0aW9uUHRyICsgMSkgPDwgMTsgICAgICAgICAgICAgICAvKiBE
b3VibGVkIHJlZiBudW1iZXIgKi8KICAgICAgICAgICAgICAgICBzdGFjay5jdXJyZW50RnJhbWUt
PmFyZ3MuaW5zdHJ1Y3Rpb25QdHIgKz0gMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvKiBBZHZhbmNlIHBhc3QgaXRlbSAqLwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIC8qIElmIHRoZSByZWZlcmVuY2UgaXMgdW5zZXQsIHNldCB0aGUgbGVuZ3RoIHRvIGJlIGxv
bmdlciB0aGFuIHRoZSBhbW91bnQKQEAgLTgzNyw4ICs4NDMsOCBAQCBSRUNVUlNFOgogICAgICAg
ICAgICAgICAgICAgICBjYXNlIE9QX0NSUkFOR0U6CiAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
T1BfQ1JNSU5SQU5HRToKICAgICAgICAgICAgICAgICAgICAgICAgIG1pbmltaXplID0gKCpzdGFj
ay5jdXJyZW50RnJhbWUtPmFyZ3MuaW5zdHJ1Y3Rpb25QdHIgPT0gT1BfQ1JNSU5SQU5HRSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBtaW4gPSBnZXQyQnl0ZU9wY29kZVZhbHVlQXRPZmZzZXQo
c3RhY2suY3VycmVudEZyYW1lLT5hcmdzLmluc3RydWN0aW9uUHRyLCAxKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YWNrLmN1cnJlbnRGcmFtZS0+bG9jYWxzLm1heCA9IGdldDJCeXRlT3Bj
b2RlVmFsdWVBdE9mZnNldChzdGFjay5jdXJyZW50RnJhbWUtPmFyZ3MuaW5zdHJ1Y3Rpb25QdHIs
IDMpOworICAgICAgICAgICAgICAgICAgICAgICAgbWluID0gZ2V0MkJ5dGVWYWx1ZShzdGFjay5j
dXJyZW50RnJhbWUtPmFyZ3MuaW5zdHJ1Y3Rpb25QdHIgKyAxKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YWNrLmN1cnJlbnRGcmFtZS0+bG9jYWxzLm1heCA9IGdldDJCeXRlVmFsdWUoc3Rh
Y2suY3VycmVudEZyYW1lLT5hcmdzLmluc3RydWN0aW9uUHRyICsgMyk7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoc3RhY2suY3VycmVudEZyYW1lLT5sb2NhbHMubWF4ID09IDApCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2suY3VycmVudEZyYW1lLT5sb2NhbHMubWF4ID0g
SU5UX01BWDsKICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLmN1cnJlbnRGcmFtZS0+YXJn
cy5pbnN0cnVjdGlvblB0ciArPSA1OwpAQCAtOTMzLDggKzkzOSw4IEBAIFJFQ1VSU0U6CiAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgT1BfQ1JSQU5HRToKICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBPUF9DUk1JTlJBTkdFOgogICAgICAgICAgICAgICAgICAgICAgICAgbWluaW1pemUgPSAoKnN0
YWNrLmN1cnJlbnRGcmFtZS0+YXJncy5pbnN0cnVjdGlvblB0ciA9PSBPUF9DUk1JTlJBTkdFKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIG1pbiA9IGdldDJCeXRlT3Bjb2RlVmFsdWVBdE9mZnNl
dChzdGFjay5jdXJyZW50RnJhbWUtPmFyZ3MuaW5zdHJ1Y3Rpb25QdHIsIDEpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhY2suY3VycmVudEZyYW1lLT5sb2NhbHMubWF4ID0gZ2V0MkJ5dGVP
cGNvZGVWYWx1ZUF0T2Zmc2V0KHN0YWNrLmN1cnJlbnRGcmFtZS0+YXJncy5pbnN0cnVjdGlvblB0
ciwgMyk7CisgICAgICAgICAgICAgICAgICAgICAgICBtaW4gPSBnZXQyQnl0ZVZhbHVlKHN0YWNr
LmN1cnJlbnRGcmFtZS0+YXJncy5pbnN0cnVjdGlvblB0ciArIDEpOworICAgICAgICAgICAgICAg
ICAgICAgICAgc3RhY2suY3VycmVudEZyYW1lLT5sb2NhbHMubWF4ID0gZ2V0MkJ5dGVWYWx1ZShz
dGFjay5jdXJyZW50RnJhbWUtPmFyZ3MuaW5zdHJ1Y3Rpb25QdHIgKyAzKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChzdGFjay5jdXJyZW50RnJhbWUtPmxvY2Fscy5tYXggPT0gMCkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5jdXJyZW50RnJhbWUtPmxvY2Fscy5tYXgg
PSBJTlRfTUFYOwogICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2suY3VycmVudEZyYW1lLT5h
cmdzLmluc3RydWN0aW9uUHRyICs9IDU7CkBAIC0xMDE5LDcgKzEwMjUsNyBAQCBSRUNVUlNFOgog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgQkVHSU5fT1BDT0RFKFhDTEFTUyk6CiAgICAg
ICAgICAgICAgICAgc3RhY2suY3VycmVudEZyYW1lLT5sb2NhbHMuZGF0YSA9IHN0YWNrLmN1cnJl
bnRGcmFtZS0+YXJncy5pbnN0cnVjdGlvblB0ciArIDEgKyBMSU5LX1NJWkU7ICAgICAgICAgICAg
ICAgIC8qIFNhdmUgZm9yIG1hdGNoaW5nICovCi0gICAgICAgICAgICAgICAgc3RhY2suY3VycmVu
dEZyYW1lLT5hcmdzLmluc3RydWN0aW9uUHRyICs9IGdldE9wY29kZVZhbHVlQXRPZmZzZXQoc3Rh
Y2suY3VycmVudEZyYW1lLT5hcmdzLmluc3RydWN0aW9uUHRyLCAxKTsgICAgICAgICAgICAgICAg
ICAgICAgLyogQWR2YW5jZSBwYXN0IHRoZSBpdGVtICovCisgICAgICAgICAgICAgICAgc3RhY2su
Y3VycmVudEZyYW1lLT5hcmdzLmluc3RydWN0aW9uUHRyICs9IGdldExpbmtWYWx1ZShzdGFjay5j
dXJyZW50RnJhbWUtPmFyZ3MuaW5zdHJ1Y3Rpb25QdHIgKyAxKTsgICAgICAgICAgICAgICAgICAg
ICAgLyogQWR2YW5jZSBwYXN0IHRoZSBpdGVtICovCiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgc3dpdGNoICgqc3RhY2suY3VycmVudEZyYW1lLT5hcmdzLmluc3RydWN0aW9uUHRy
KSB7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgT1BfQ1JTVEFSOgpAQCAtMTAzNCw4ICsxMDQw
LDggQEAgUkVDVVJTRToKICAgICAgICAgICAgICAgICAgICAgY2FzZSBPUF9DUlJBTkdFOgogICAg
ICAgICAgICAgICAgICAgICBjYXNlIE9QX0NSTUlOUkFOR0U6CiAgICAgICAgICAgICAgICAgICAg
ICAgICBtaW5pbWl6ZSA9ICgqc3RhY2suY3VycmVudEZyYW1lLT5hcmdzLmluc3RydWN0aW9uUHRy
ID09IE9QX0NSTUlOUkFOR0UpOwotICAgICAgICAgICAgICAgICAgICAgICAgbWluID0gZ2V0MkJ5
dGVPcGNvZGVWYWx1ZUF0T2Zmc2V0KHN0YWNrLmN1cnJlbnRGcmFtZS0+YXJncy5pbnN0cnVjdGlv
blB0ciwgMSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5jdXJyZW50RnJhbWUtPmxv
Y2Fscy5tYXggPSBnZXQyQnl0ZU9wY29kZVZhbHVlQXRPZmZzZXQoc3RhY2suY3VycmVudEZyYW1l
LT5hcmdzLmluc3RydWN0aW9uUHRyLCAzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pbiA9
IGdldDJCeXRlVmFsdWUoc3RhY2suY3VycmVudEZyYW1lLT5hcmdzLmluc3RydWN0aW9uUHRyICsg
MSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5jdXJyZW50RnJhbWUtPmxvY2Fscy5t
YXggPSBnZXQyQnl0ZVZhbHVlKHN0YWNrLmN1cnJlbnRGcmFtZS0+YXJncy5pbnN0cnVjdGlvblB0
ciArIDMpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YWNrLmN1cnJlbnRGcmFtZS0+
bG9jYWxzLm1heCA9PSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLmN1cnJl
bnRGcmFtZS0+bG9jYWxzLm1heCA9IElOVF9NQVg7CiAgICAgICAgICAgICAgICAgICAgICAgICBz
dGFjay5jdXJyZW50RnJhbWUtPmFyZ3MuaW5zdHJ1Y3Rpb25QdHIgKz0gNTsKQEAgLTExNTUsNyAr
MTE2MSw3IEBAIFJFQ1VSU0U6CiAgICAgICAgICAgICAvKiBNYXRjaCBhIHNpbmdsZSBjaGFyYWN0
ZXIgcmVwZWF0ZWRseTsgZGlmZmVyZW50IG9wY29kZXMgc2hhcmUgY29kZS4gKi8KICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgIEJFR0lOX09QQ09ERShFWEFDVCk6Ci0gICAgICAgICAgICAg
ICAgbWluID0gc3RhY2suY3VycmVudEZyYW1lLT5sb2NhbHMubWF4ID0gZ2V0MkJ5dGVPcGNvZGVW
YWx1ZUF0T2Zmc2V0KHN0YWNrLmN1cnJlbnRGcmFtZS0+YXJncy5pbnN0cnVjdGlvblB0ciwgMSk7
CisgICAgICAgICAgICAgICAgbWluID0gc3RhY2suY3VycmVudEZyYW1lLT5sb2NhbHMubWF4ID0g
Z2V0MkJ5dGVWYWx1ZShzdGFjay5jdXJyZW50RnJhbWUtPmFyZ3MuaW5zdHJ1Y3Rpb25QdHIgKyAx
KTsKICAgICAgICAgICAgICAgICBtaW5pbWl6ZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHN0
YWNrLmN1cnJlbnRGcmFtZS0+YXJncy5pbnN0cnVjdGlvblB0ciArPSAzOwogICAgICAgICAgICAg
ICAgIGdvdG8gUkVQRUFUQ0hBUjsKQEAgLTExNjMsNyArMTE2OSw3IEBAIFJFQ1VSU0U6CiAgICAg
ICAgICAgICBCRUdJTl9PUENPREUoVVBUTyk6CiAgICAgICAgICAgICBCRUdJTl9PUENPREUoTUlO
VVBUTyk6CiAgICAgICAgICAgICAgICAgbWluID0gMDsKLSAgICAgICAgICAgICAgICBzdGFjay5j
dXJyZW50RnJhbWUtPmxvY2Fscy5tYXggPSBnZXQyQnl0ZU9wY29kZVZhbHVlQXRPZmZzZXQoc3Rh
Y2suY3VycmVudEZyYW1lLT5hcmdzLmluc3RydWN0aW9uUHRyLCAxKTsKKyAgICAgICAgICAgICAg
ICBzdGFjay5jdXJyZW50RnJhbWUtPmxvY2Fscy5tYXggPSBnZXQyQnl0ZVZhbHVlKHN0YWNrLmN1
cnJlbnRGcmFtZS0+YXJncy5pbnN0cnVjdGlvblB0ciArIDEpOwogICAgICAgICAgICAgICAgIG1p
bmltaXplID0gKnN0YWNrLmN1cnJlbnRGcmFtZS0+YXJncy5pbnN0cnVjdGlvblB0ciA9PSBPUF9N
SU5VUFRPOwogICAgICAgICAgICAgICAgIHN0YWNrLmN1cnJlbnRGcmFtZS0+YXJncy5pbnN0cnVj
dGlvblB0ciArPSAzOwogICAgICAgICAgICAgICAgIGdvdG8gUkVQRUFUQ0hBUjsKQEAgLTEzMDMs
NyArMTMwOSw3IEBAIFJFQ1VSU0U6CiAgICAgICAgICAgICAgYWJvdXQuLi4gKi8KICAgICAgICAg
ICAgICAgICAKICAgICAgICAgICAgIEJFR0lOX09QQ09ERShOT1RFWEFDVCk6Ci0gICAgICAgICAg
ICAgICAgbWluID0gc3RhY2suY3VycmVudEZyYW1lLT5sb2NhbHMubWF4ID0gZ2V0MkJ5dGVPcGNv
ZGVWYWx1ZUF0T2Zmc2V0KHN0YWNrLmN1cnJlbnRGcmFtZS0+YXJncy5pbnN0cnVjdGlvblB0ciwg
MSk7CisgICAgICAgICAgICAgICAgbWluID0gc3RhY2suY3VycmVudEZyYW1lLT5sb2NhbHMubWF4
ID0gZ2V0MkJ5dGVWYWx1ZShzdGFjay5jdXJyZW50RnJhbWUtPmFyZ3MuaW5zdHJ1Y3Rpb25QdHIg
KyAxKTsKICAgICAgICAgICAgICAgICBtaW5pbWl6ZSA9IGZhbHNlOwogICAgICAgICAgICAgICAg
IHN0YWNrLmN1cnJlbnRGcmFtZS0+YXJncy5pbnN0cnVjdGlvblB0ciArPSAzOwogICAgICAgICAg
ICAgICAgIGdvdG8gUkVQRUFUTk9UQ0hBUjsKQEAgLTEzMTEsNyArMTMxNyw3IEBAIFJFQ1VSU0U6
CiAgICAgICAgICAgICBCRUdJTl9PUENPREUoTk9UVVBUTyk6CiAgICAgICAgICAgICBCRUdJTl9P
UENPREUoTk9UTUlOVVBUTyk6CiAgICAgICAgICAgICAgICAgbWluID0gMDsKLSAgICAgICAgICAg
ICAgICBzdGFjay5jdXJyZW50RnJhbWUtPmxvY2Fscy5tYXggPSBnZXQyQnl0ZU9wY29kZVZhbHVl
QXRPZmZzZXQoc3RhY2suY3VycmVudEZyYW1lLT5hcmdzLmluc3RydWN0aW9uUHRyLCAxKTsKKyAg
ICAgICAgICAgICAgICBzdGFjay5jdXJyZW50RnJhbWUtPmxvY2Fscy5tYXggPSBnZXQyQnl0ZVZh
bHVlKHN0YWNrLmN1cnJlbnRGcmFtZS0+YXJncy5pbnN0cnVjdGlvblB0ciArIDEpOwogICAgICAg
ICAgICAgICAgIG1pbmltaXplID0gKnN0YWNrLmN1cnJlbnRGcmFtZS0+YXJncy5pbnN0cnVjdGlv
blB0ciA9PSBPUF9OT1RNSU5VUFRPOwogICAgICAgICAgICAgICAgIHN0YWNrLmN1cnJlbnRGcmFt
ZS0+YXJncy5pbnN0cnVjdGlvblB0ciArPSAzOwogICAgICAgICAgICAgICAgIGdvdG8gUkVQRUFU
Tk9UQ0hBUjsKQEAgLTE0NTUsNyArMTQ2MSw3IEBAIFJFQ1VSU0U6CiAgICAgICAgICAgICAgcmVw
ZWF0IGl0IGluIHRoZSBpbnRlcmVzdHMgb2YgZWZmaWNpZW5jeS4gKi8KICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgIEJFR0lOX09QQ09ERShUWVBFRVhBQ1QpOgotICAgICAgICAgICAgICAg
IG1pbiA9IHN0YWNrLmN1cnJlbnRGcmFtZS0+bG9jYWxzLm1heCA9IGdldDJCeXRlT3Bjb2RlVmFs
dWVBdE9mZnNldChzdGFjay5jdXJyZW50RnJhbWUtPmFyZ3MuaW5zdHJ1Y3Rpb25QdHIsIDEpOwor
ICAgICAgICAgICAgICAgIG1pbiA9IHN0YWNrLmN1cnJlbnRGcmFtZS0+bG9jYWxzLm1heCA9IGdl
dDJCeXRlVmFsdWUoc3RhY2suY3VycmVudEZyYW1lLT5hcmdzLmluc3RydWN0aW9uUHRyICsgMSk7
CiAgICAgICAgICAgICAgICAgbWluaW1pemUgPSB0cnVlOwogICAgICAgICAgICAgICAgIHN0YWNr
LmN1cnJlbnRGcmFtZS0+YXJncy5pbnN0cnVjdGlvblB0ciArPSAzOwogICAgICAgICAgICAgICAg
IGdvdG8gUkVQRUFUVFlQRTsKQEAgLTE0NjMsNyArMTQ2OSw3IEBAIFJFQ1VSU0U6CiAgICAgICAg
ICAgICBCRUdJTl9PUENPREUoVFlQRVVQVE8pOgogICAgICAgICAgICAgQkVHSU5fT1BDT0RFKFRZ
UEVNSU5VUFRPKToKICAgICAgICAgICAgICAgICBtaW4gPSAwOwotICAgICAgICAgICAgICAgIHN0
YWNrLmN1cnJlbnRGcmFtZS0+bG9jYWxzLm1heCA9IGdldDJCeXRlT3Bjb2RlVmFsdWVBdE9mZnNl
dChzdGFjay5jdXJyZW50RnJhbWUtPmFyZ3MuaW5zdHJ1Y3Rpb25QdHIsIDEpOworICAgICAgICAg
ICAgICAgIHN0YWNrLmN1cnJlbnRGcmFtZS0+bG9jYWxzLm1heCA9IGdldDJCeXRlVmFsdWUoc3Rh
Y2suY3VycmVudEZyYW1lLT5hcmdzLmluc3RydWN0aW9uUHRyICsgMSk7CiAgICAgICAgICAgICAg
ICAgbWluaW1pemUgPSAqc3RhY2suY3VycmVudEZyYW1lLT5hcmdzLmluc3RydWN0aW9uUHRyID09
IE9QX1RZUEVNSU5VUFRPOwogICAgICAgICAgICAgICAgIHN0YWNrLmN1cnJlbnRGcmFtZS0+YXJn
cy5pbnN0cnVjdGlvblB0ciArPSAzOwogICAgICAgICAgICAgICAgIGdvdG8gUkVQRUFUVFlQRTsK
QEAgLTE3NTUsNyArMTc2MSw3IEBAIFJFQ1VSU0U6CiAgICAgICAgICAgICAgICAgIG51bWJlciBm
cm9tIGEgZHVtbXkgb3Bjb2RlIGF0IHRoZSBzdGFydC4gKi8KICAgICAgICAgICAgICAgICAKICAg
ICAgICAgICAgICAgICBpZiAoc3RhY2suY3VycmVudEZyYW1lLT5sb2NhbHMubnVtYmVyID4gRVhU
UkFDVF9CQVNJQ19NQVgpCi0gICAgICAgICAgICAgICAgICAgIHN0YWNrLmN1cnJlbnRGcmFtZS0+
bG9jYWxzLm51bWJlciA9IGdldDJCeXRlT3Bjb2RlVmFsdWVBdE9mZnNldChzdGFjay5jdXJyZW50
RnJhbWUtPmFyZ3MuaW5zdHJ1Y3Rpb25QdHIsIDIrTElOS19TSVpFKTsKKyAgICAgICAgICAgICAg
ICAgICAgc3RhY2suY3VycmVudEZyYW1lLT5sb2NhbHMubnVtYmVyID0gZ2V0MkJ5dGVWYWx1ZShz
dGFjay5jdXJyZW50RnJhbWUtPmFyZ3MuaW5zdHJ1Y3Rpb25QdHIgKyAyICsgTElOS19TSVpFKTsK
ICAgICAgICAgICAgICAgICBzdGFjay5jdXJyZW50RnJhbWUtPmxvY2Fscy5vZmZzZXQgPSBzdGFj
ay5jdXJyZW50RnJhbWUtPmxvY2Fscy5udW1iZXIgPDwgMTsKICAgICAgICAgICAgICAgICAKICNp
ZmRlZiBERUJVRwpAQCAtMTc3Niw3ICsxNzgyLDcgQEAgUkVDVVJTRToKICAgICAgICAgICAgICAg
ICAgICAgICAgIFJFQ1VSU0lWRV9NQVRDSF9TVEFSVE5HX05FV19HUk9VUCgxLCBzdGFjay5jdXJy
ZW50RnJhbWUtPmFyZ3MuaW5zdHJ1Y3Rpb25QdHIgKyAxICsgTElOS19TSVpFLCBzdGFjay5jdXJy
ZW50RnJhbWUtPmFyZ3Muc3VicGF0dGVyblN0YXJ0KTsKICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChpc19tYXRjaCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSUkVUVVJOOwotICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhY2suY3VycmVudEZyYW1lLT5hcmdzLmluc3RydWN0aW9u
UHRyICs9IGdldE9wY29kZVZhbHVlQXRPZmZzZXQoc3RhY2suY3VycmVudEZyYW1lLT5hcmdzLmlu
c3RydWN0aW9uUHRyLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLmN1cnJlbnRG
cmFtZS0+YXJncy5pbnN0cnVjdGlvblB0ciArPSBnZXRMaW5rVmFsdWUoc3RhY2suY3VycmVudEZy
YW1lLT5hcmdzLmluc3RydWN0aW9uUHRyICsgMSk7CiAgICAgICAgICAgICAgICAgICAgIH0gd2hp
bGUgKCpzdGFjay5jdXJyZW50RnJhbWUtPmFyZ3MuaW5zdHJ1Y3Rpb25QdHIgPT0gT1BfQUxUKTsK
ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIERQUklOVEYoKCJicmFj
a2V0ICVkIGZhaWxlZFxuIiwgc3RhY2suY3VycmVudEZyYW1lLT5sb2NhbHMubnVtYmVyKSk7Cklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9wY3JlL3BjcmVfaW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9wY3JlL3BjcmVfaW50ZXJuYWwuaAkocmV2aXNpb24gMjg2ODcpCisrKyBK
YXZhU2NyaXB0Q29yZS9wY3JlL3BjcmVfaW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtODUs
MTkgKzg1LDcgQEAgdG8gb3ZlcnJpZGUgdGhpcyBkZWZhdWx0LiAqLwogCiAjZGVmaW5lIExJTktf
U0laRSAgIDIKIAotLyogVGhlIGJlbG93IGxpbWl0IHJlc3RyaWN0cyB0aGUgbnVtYmVyIG9mIHJl
Y3Vyc2l2ZSBtYXRjaCBjYWxscyBpbiBvcmRlciB0bwotbGltaXQgdGhlIG1heGltdW0gYW1vdW50
IG9mIHN0YWNrIChvciBoZWFwLCBpZiBOT19SRUNVUlNFIGlzIGRlZmluZWQpIHRoYXQgaXMgdXNl
ZC4gVGhlCi12YWx1ZSBvZiBNQVRDSF9MSU1JVF9SRUNVUlNJT04gYXBwbGllcyBvbmx5IHRvIHJl
Y3Vyc2l2ZSBjYWxscyBvZiBtYXRjaCgpLgotIAotIFRoaXMgbGltaXQgaXMgdGllZCB0byB0aGUg
c2l6ZSBvZiBNYXRjaEZyYW1lLiAgUmlnaHQgbm93IHdlIGFsbG93IFBDUkUgdG8gYWxsb2NhdGUg
dXAKLSB0byBNQVRDSF9MSU1JVF9SRUNVUlNJT04gLSAxNiAqIHNpemVvZihNYXRjaEZyYW1lKSBi
eXRlcyBvZiAic3RhY2siIHNwYWNlIGJlZm9yZSB3ZSBnaXZlIHVwLgotIEN1cnJlbnRseSB0aGF0
J3MgMTAwMDAwIC0gMTYgKiAoMjMgKiA0KSAgfiA5ME1CCi0gKi8KLQotI2RlZmluZSBNQVRDSF9M
SU1JVF9SRUNVUlNJT04gMTAwMDAwCi0KICNkZWZpbmUgX3BjcmVfZGVmYXVsdF90YWJsZXMga2pz
X3BjcmVfZGVmYXVsdF90YWJsZXMKLSNkZWZpbmUgX3BjcmVfb3JkMnV0Zjgga2pzX3BjcmVfb3Jk
MnV0ZjgKICNkZWZpbmUgX3BjcmVfdXRmOF90YWJsZTEga2pzX3BjcmVfdXRmOF90YWJsZTEKICNk
ZWZpbmUgX3BjcmVfdXRmOF90YWJsZTIga2pzX3BjcmVfdXRmOF90YWJsZTIKICNkZWZpbmUgX3Bj
cmVfdXRmOF90YWJsZTMga2pzX3BjcmVfdXRmOF90YWJsZTMKQEAgLTE0OCw2OSArMTM2LDQ1IEBA
IHN0YXJ0IG9mIGEgc3VicGF0dGVybiB0byBpdHMgYWx0ZXJuYXRpdmUKIG9mZnNldCBsaW1pdHMg
dGhlIHNpemUgb2YgdGhlIGNvbXBpbGVkIHJlZ2V4IHRvIGFyb3VuZCA2NEssIHdoaWNoIGlzIGJp
ZyBlbm91Z2gKIGZvciBhbG1vc3QgZXZlcnlib2R5LiBIb3dldmVyLCBJIHJlY2VpdmVkIGEgcmVx
dWVzdCBmb3IgYW4gZXZlbiBiaWdnZXIgbGltaXQuCiBGb3IgdGhpcyByZWFzb24sIGFuZCBhbHNv
IHRvIG1ha2UgdGhlIGNvZGUgZWFzaWVyIHRvIG1haW50YWluLCB0aGUgc3RvcmluZyBhbmQKLWxv
YWRpbmcgb2Ygb2Zmc2V0cyBmcm9tIHRoZSBieXRlIHN0cmluZyBpcyBub3cgaGFuZGxlZCBieSB0
aGUgbWFjcm9zIHRoYXQgYXJlCi1kZWZpbmVkIGhlcmUuCi0KLVRoZSBtYWNyb3MgYXJlIGNvbnRy
b2xsZWQgYnkgdGhlIHZhbHVlIG9mIExJTktfU0laRS4gVGhpcyBkZWZhdWx0cyB0byAyIGluCi10
aGUgY29uZmlnLmggZmlsZSwgYnV0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IHVzaW5nIC1EIG9uIHRo
ZSBjb21tYW5kIGxpbmUuIFRoaXMKLWlzIGF1dG9tYXRlZCBvbiBVbml4IHN5c3RlbXMgdmlhIHRo
ZSAiY29uZmlndXJlIiBjb21tYW5kLiAqLworbG9hZGluZyBvZiBvZmZzZXRzIGZyb20gdGhlIGJ5
dGUgc3RyaW5nIGlzIG5vdyBoYW5kbGVkIGJ5IHRoZSBmdW5jdGlvbnMgdGhhdCBhcmUKK2RlZmlu
ZWQgaGVyZS4gKi8KIAotI2lmIExJTktfU0laRSA9PSAyCi0KLXN0YXRpYyBpbmxpbmUgdm9pZCBw
dXRPcGNvZGVWYWx1ZUF0T2Zmc2V0KHVzY2hhciogb3Bjb2RlUHRyLCBzaXplX3Qgb2Zmc2V0LCB1
bnNpZ25lZCBzaG9ydCB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBwdXRMaW5rVmFsdWVBbGxv
d1plcm8odXNjaGFyKiBvcGNvZGVQdHIsIGludCB2YWx1ZSkKIHsKLSAgICBvcGNvZGVQdHJbb2Zm
c2V0XSA9IHZhbHVlID4+IDg7Ci0gICAgb3Bjb2RlUHRyW29mZnNldCArIDFdID0gdmFsdWUgJiAy
NTU7CisgICAgQVNTRVJUKHZhbHVlID49IDAgJiYgdmFsdWUgPD0gMHhGRkZGKTsKKyAgICBvcGNv
ZGVQdHJbMF0gPSB2YWx1ZSA+PiA4OworICAgIG9wY29kZVB0clsxXSA9IHZhbHVlICYgMjU1Owog
fQogCi1zdGF0aWMgaW5saW5lIHNob3J0IGdldE9wY29kZVZhbHVlQXRPZmZzZXQoY29uc3QgdXNj
aGFyKiBvcGNvZGVQdHIsIHNpemVfdCBvZmZzZXQpCitzdGF0aWMgaW5saW5lIGludCBnZXRMaW5r
VmFsdWVBbGxvd1plcm8oY29uc3QgdXNjaGFyKiBvcGNvZGVQdHIpCiB7Ci0gICAgcmV0dXJuICgo
b3Bjb2RlUHRyW29mZnNldF0gPDwgOCkgfCBvcGNvZGVQdHJbb2Zmc2V0ICsgMV0pOworICAgIHJl
dHVybiAob3Bjb2RlUHRyWzBdIDw8IDgpIHwgb3Bjb2RlUHRyWzFdOwogfQogCiAjZGVmaW5lIE1B
WF9QQVRURVJOX1NJWkUgKDEgPDwgMTYpCiAKLSNlbGlmIExJTktfU0laRSA9PSAzCi0KLXN0YXRp
YyBpbmxpbmUgdm9pZCBwdXRPcGNvZGVWYWx1ZUF0T2Zmc2V0KHVzY2hhciogb3Bjb2RlUHRyLCBz
aXplX3Qgb2Zmc2V0LCB1bnNpZ25lZCB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBwdXRMaW5r
VmFsdWUodXNjaGFyKiBvcGNvZGVQdHIsIGludCB2YWx1ZSkKIHsKLSAgICBBU1NFUlQoISh2YWx1
ZSAmIDB4RkYwMDAwMDApKTsgLy8gVGhpcyBmdW5jdGlvbiBvbmx5IGFsbG93cyB2YWx1ZXMgPCAy
XjI0Ci0gICAgb3Bjb2RlUHRyW29mZnNldF0gPSB2YWx1ZSA+PiAxNjsKLSAgICBvcGNvZGVQdHJb
b2Zmc2V0ICsgMV0gPSB2YWx1ZSA+PiA4OwotICAgIG9wY29kZVB0cltvZmZzZXQgKyAyXSA9IHZh
bHVlICYgMjU1OworICAgIEFTU0VSVCh2YWx1ZSk7CisgICAgcHV0TGlua1ZhbHVlQWxsb3daZXJv
KG9wY29kZVB0ciwgdmFsdWUpOwogfQogCi1zdGF0aWMgaW5saW5lIGludCBnZXRPcGNvZGVWYWx1
ZUF0T2Zmc2V0KGNvbnN0IHVzY2hhciogb3Bjb2RlUHRyLCBzaXplX3Qgb2Zmc2V0KQotewotICAg
IHJldHVybiAoKG9wY29kZVB0cltvZmZzZXRdIDw8IDE2KSB8IChvcGNvZGVQdHJbb2Zmc2V0ICsg
MV0gPDwgOCkgfCBvcGNvZGVQdHJbb2Zmc2V0ICsgMl0pOwotfQotCi0jZGVmaW5lIE1BWF9QQVRU
RVJOX1NJWkUgKDEgPDwgMjQpCi0KLSNlbGlmIExJTktfU0laRSA9PSA0Ci0KLXN0YXRpYyBpbmxp
bmUgdm9pZCBwdXRPcGNvZGVWYWx1ZUF0T2Zmc2V0KHVzY2hhciogb3Bjb2RlUHRyLCBzaXplX3Qg
b2Zmc2V0LCB1bnNpZ25lZCB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUgaW50IGdldExpbmtWYWx1ZShj
b25zdCB1c2NoYXIqIG9wY29kZVB0cikKIHsKLSAgICBvcGNvZGVQdHJbb2Zmc2V0XSA9IHZhbHVl
ID4+IDI0OwotICAgIG9wY29kZVB0cltvZmZzZXQgKyAxXSA9IHZhbHVlID4+IDE2OwotICAgIG9w
Y29kZVB0cltvZmZzZXQgKyAyXSA9IHZhbHVlID4+IDg7Ci0gICAgb3Bjb2RlUHRyW29mZnNldCAr
IDNdID0gdmFsdWUgJiAyNTU7CisgICAgaW50IHZhbHVlID0gZ2V0TGlua1ZhbHVlQWxsb3daZXJv
KG9wY29kZVB0cik7CisgICAgQVNTRVJUKHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgaW50IGdldE9wY29kZVZhbHVlQXRPZmZzZXQoY29uc3QgdXNjaGFyKiBv
cGNvZGVQdHIsIHNpemVfdCBvZmZzZXQpCitzdGF0aWMgaW5saW5lIHZvaWQgcHV0TGlua1ZhbHVl
QW5kQWR2YW5jZSh1c2NoYXIqJiBvcGNvZGVQdHIsIGludCB2YWx1ZSkKIHsKLSAgICByZXR1cm4g
KChvcGNvZGVQdHJbb2Zmc2V0XSA8PCAyNCkgfCAob3Bjb2RlUHRyW29mZnNldCArIDFdIDw8IDE2
KSB8IChvcGNvZGVQdHJbb2Zmc2V0ICsgMl0gPDwgOCkgfCBvcGNvZGVQdHJbb2Zmc2V0ICsgM10p
OworICAgIHB1dExpbmtWYWx1ZShvcGNvZGVQdHIsIHZhbHVlKTsKKyAgICBvcGNvZGVQdHIgKz0g
TElOS19TSVpFOwogfQogCi0jZGVmaW5lIE1BWF9QQVRURVJOX1NJWkUgKDEgPDwgMzApICAgLyog
S2VlcCBpdCBwb3NpdGl2ZSAqLwotCi0jZWxzZQotI2Vycm9yIExJTktfU0laRSBtdXN0IGJlIGVp
dGhlciAyLCAzLCBvciA0Ci0jZW5kaWYKLQotc3RhdGljIGlubGluZSB2b2lkIHB1dE9wY29kZVZh
bHVlQXRPZmZzZXRBbmRBZHZhbmNlKHVzY2hhciomIG9wY29kZVB0ciwgc2l6ZV90IG9mZnNldCwg
dW5zaWduZWQgc2hvcnQgdmFsdWUpCitzdGF0aWMgaW5saW5lIHZvaWQgcHV0TGlua1ZhbHVlQWxs
b3daZXJvQW5kQWR2YW5jZSh1c2NoYXIqJiBvcGNvZGVQdHIsIGludCB2YWx1ZSkKIHsKLSAgICBw
dXRPcGNvZGVWYWx1ZUF0T2Zmc2V0KG9wY29kZVB0ciwgb2Zmc2V0LCB2YWx1ZSk7CisgICAgcHV0
TGlua1ZhbHVlQWxsb3daZXJvKG9wY29kZVB0ciwgdmFsdWUpOwogICAgIG9wY29kZVB0ciArPSBM
SU5LX1NJWkU7CiB9CiAKQEAgLTIxOCwyMCArMTgyLDIxIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBw
dXRPcGNvZGVWYWx1ZUF0T2Zmc2UKIG9mZnNldHMgY2hhbmdlcy4gVGhlcmUgYXJlIHVzZWQgZm9y
IHJlcGVhdCBjb3VudHMgYW5kIGZvciBvdGhlciB0aGluZ3Mgc3VjaCBhcwogY2FwdHVyaW5nIHBh
cmVudGhlc2lzIG51bWJlcnMgaW4gYmFjayByZWZlcmVuY2VzLiAqLwogCi1zdGF0aWMgaW5saW5l
IHZvaWQgcHV0MkJ5dGVPcGNvZGVWYWx1ZUF0T2Zmc2V0KHVzY2hhciogb3Bjb2RlUHRyLCBzaXpl
X3Qgb2Zmc2V0LCB1bnNpZ25lZCBzaG9ydCB2YWx1ZSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBwdXQy
Qnl0ZVZhbHVlKHVzY2hhciogb3Bjb2RlUHRyLCBpbnQgdmFsdWUpCiB7Ci0gICAgb3Bjb2RlUHRy
W29mZnNldF0gPSB2YWx1ZSA+PiA4OwotICAgIG9wY29kZVB0cltvZmZzZXQgKyAxXSA9IHZhbHVl
ICYgMjU1OworICAgIEFTU0VSVCh2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDB4RkZGRik7CisgICAg
b3Bjb2RlUHRyWzBdID0gdmFsdWUgPj4gODsKKyAgICBvcGNvZGVQdHJbMV0gPSB2YWx1ZSAmIDI1
NTsKIH0KIAotc3RhdGljIGlubGluZSBzaG9ydCBnZXQyQnl0ZU9wY29kZVZhbHVlQXRPZmZzZXQo
Y29uc3QgdXNjaGFyKiBvcGNvZGVQdHIsIHNpemVfdCBvZmZzZXQpCitzdGF0aWMgaW5saW5lIGlu
dCBnZXQyQnl0ZVZhbHVlKGNvbnN0IHVzY2hhciogb3Bjb2RlUHRyKQogewotICAgIHJldHVybiAo
KG9wY29kZVB0cltvZmZzZXRdIDw8IDgpIHwgb3Bjb2RlUHRyW29mZnNldCArIDFdKTsKKyAgICBy
ZXR1cm4gKG9wY29kZVB0clswXSA8PCA4KSB8IG9wY29kZVB0clsxXTsKIH0KIAotc3RhdGljIGlu
bGluZSB2b2lkIHB1dDJCeXRlT3Bjb2RlVmFsdWVBdE9mZnNldEFuZEFkdmFuY2UodXNjaGFyKiYg
b3Bjb2RlUHRyLCBzaXplX3Qgb2Zmc2V0LCB1bnNpZ25lZCBzaG9ydCB2YWx1ZSkKK3N0YXRpYyBp
bmxpbmUgdm9pZCBwdXQyQnl0ZVZhbHVlQW5kQWR2YW5jZSh1c2NoYXIqJiBvcGNvZGVQdHIsIGlu
dCB2YWx1ZSkKIHsKLSAgICBwdXQyQnl0ZU9wY29kZVZhbHVlQXRPZmZzZXQob3Bjb2RlUHRyLCBv
ZmZzZXQsIHZhbHVlKTsKKyAgICBwdXQyQnl0ZVZhbHVlKG9wY29kZVB0ciwgdmFsdWUpOwogICAg
IG9wY29kZVB0ciArPSAyOwogfQogCkBAIC0yNTAsMTEgKzIxNSw2IEBAIGVudW0gUmVnRXhwT3B0
aW9ucyB7CiAjZGVmaW5lIFJFUV9VTlNFVCAoLTIpCiAjZGVmaW5lIFJFUV9OT05FICAoLTEpCiAK
LS8qIFRoZSBtYXhpbXVtIHJlbWFpbmluZyBsZW5ndGggb2Ygc3ViamVjdCB3ZSBhcmUgcHJlcGFy
ZWQgdG8gc2VhcmNoIGZvciBhCi1yZXFfYnl0ZSBtYXRjaC4gKi8KLQotI2RlZmluZSBSRVFfQllU
RV9NQVggMTAwMAotCiAvKiBGbGFncyBhZGRlZCB0byBmaXJzdGJ5dGUgb3IgcmVxYnl0ZTsgYSAi
bm9uLWxpdGVyYWwiIGl0ZW0gaXMgZWl0aGVyIGEKIHZhcmlhYmxlLWxlbmd0aCByZXBlYXQsIG9y
IGEgYW55dGhpbmcgb3RoZXIgdGhhbiBsaXRlcmFsIGNoYXJhY3RlcnMuICovCiAKQEAgLTM4MSwx
MSArMzQxLDE0IEBAIHN0dWR5LmMgdGhhdCBhbGwgb3Bjb2RlcyBhcmUgbGVzcyB0aGFuIDEKIGNo
YXJhY3RlciBzZXF1ZW5jZXMgZWFzaWVyLiAqLwogCiAvKiBUaGUgaGlnaGVzdCBleHRyYWN0aW9u
IG51bWJlciBiZWZvcmUgd2UgaGF2ZSB0byBzdGFydCB1c2luZyBhZGRpdGlvbmFsCi1ieXRlcy4g
KE9yaWdpbmFsbHkgUENSRSBkaWRuJ3QgaGF2ZSBzdXBwb3J0IGZvciBleHRyYWN0aW9uIGNvdW50
cyBoaWdodGVyIHRoYW4KK2J5dGVzLiAoT3JpZ2luYWxseSBQQ1JFIGRpZG4ndCBoYXZlIHN1cHBv
cnQgZm9yIGV4dHJhY3Rpb24gY291bnRzIGhpZ2hlciB0aGFuCiB0aGlzIG51bWJlci4pIFRoZSB2
YWx1ZSBpcyBsaW1pdGVkIGJ5IHRoZSBudW1iZXIgb2Ygb3Bjb2RlcyBsZWZ0IGFmdGVyIE9QX0JS
QSwKIGkuZS4gMjU1IC0gT1BfQlJBLiBXZSBhY3R1YWxseSBzZXQgaXQgYSBiaXQgbG93ZXIgdG8g
bGVhdmUgcm9vbSBmb3IgYWRkaXRpb25hbAogb3Bjb2Rlcy4gKi8KIAorLyogRklYTUU6IE5vdGUg
dGhhdCBPUF9CUkEgKyAxMDAgaXMgPiAxMjgsIHNvIHRoZSB0d28gY29tbWVudHMgYWJvdmUKK2Fy
ZSBpbiBjb25mbGljdCEgKi8KKwogI2RlZmluZSBFWFRSQUNUX0JBU0lDX01BWCAgMTAwCiAKIC8q
IFRoaXMgbWFjcm8gZGVmaW5lcyB0aGUgbGVuZ3RoIG9mIGZpeGVkIGxlbmd0aCBvcGVyYXRpb25z
IGluIHRoZSBjb21waWxlZApAQCAtNDIxLDE2ICszODQsMTYgQEAgaW4gVVRGLTggbW9kZS4gVGhl
IGNvZGUgdGhhdCB1c2VzIHRoaXMgdAogIDMzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LyogTkNMQVNTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8gXAogICAwLCAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgLyogWENMQVNTIC0gdmFyaWFibGUgbGVuZ3RoICAgICAg
ICAgICAgICAgKi8gXAogICAzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUkVGICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8gXAotICAxICsgTElOS19TSVpFLCAg
ICAgICAgICAgICAgICAgICAvKiBBbHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqLyBcCi0gIDEgKyBMSU5LX1NJWkUsICAgICAgICAgICAgICAgICAgIC8qIEtldCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICovIFwKLSAgMSArIExJTktfU0laRSwgICAgICAg
ICAgICAgICAgICAgLyogS2V0Um1heCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8g
XAotICAxICsgTElOS19TSVpFLCAgICAgICAgICAgICAgICAgICAvKiBLZXRSbWluICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAqLyBcCi0gIDEgKyBMSU5LX1NJWkUsICAgICAgICAgICAg
ICAgICAgIC8qIEFzc2VydCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovIFwKLSAg
MSArIExJTktfU0laRSwgICAgICAgICAgICAgICAgICAgLyogQXNzZXJ0IG5vdCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKi8gXAotICAxICsgTElOS19TSVpFLCAgICAgICAgICAgICAgICAg
ICAvKiBPbmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLyBcCisgIDEgKyBM
SU5LX1NJWkUsICAgICAgICAgICAgICAgICAvKiBBbHQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqLyBcCisgIDEgKyBMSU5LX1NJWkUsICAgICAgICAgICAgICAgICAvKiBLZXQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLyBcCisgIDEgKyBMSU5LX1NJWkUs
ICAgICAgICAgICAgICAgICAvKiBLZXRSbWF4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAqLyBcCisgIDEgKyBMSU5LX1NJWkUsICAgICAgICAgICAgICAgICAvKiBLZXRSbWluICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqLyBcCisgIDEgKyBMSU5LX1NJWkUsICAgICAgICAg
ICAgICAgICAvKiBBc3NlcnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLyBcCisg
IDEgKyBMSU5LX1NJWkUsICAgICAgICAgICAgICAgICAvKiBBc3NlcnQgbm90ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqLyBcCisgIDEgKyBMSU5LX1NJWkUsICAgICAgICAgICAgICAgICAv
KiBPbmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLyBcCiAgIDEsIDEsICAg
ICAgICAgICAgICAgICAgICAgICAgICAvKiBCUkFaRVJPLCBCUkFNSU5aRVJPICAgICAgICAgICAg
ICAgICAgICAqLyBcCiAgIDMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBCUkFOVU1C
RVIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLyBcCi0gIDEgKyBMSU5LX1NJWkUgICAg
ICAgICAgICAgICAgICAgIC8qIEJSQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICovIFwKKyAgMSArIExJTktfU0laRSAgICAgICAgICAgICAgICAgIC8qIEJSQSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICovIFwKIAogCiAvKiBUaGUgaW5kZXggb2YgbmFtZXMg
YW5kIHRoZQpAQCAtNTE1LDE0ICs0NzgsMTIgQEAgc3RhdGljIGlubGluZSBib29sIGlzTmV3bGlu
ZShVQ2hhciBubCkKICAgICByZXR1cm4gKG5sID09IDB4QSB8fCBubCA9PSAweEQgfHwgbmwgPT0g
MHgyMDI4IHx8IG5sID09IDB4MjAyOSk7CiB9CiAKLS8vIEZJWE1FOiBJdCdzIHVuY2xlYXIgdG8g
bWUgaWYgdGhpcyBtb3ZlcyB0aGUgb3Bjb2RlIHB0ciB0byB0aGUgc3RhcnQgb2YgYWxsIGJyYW5j
aGVzCi0vLyBvciB0byB0aGUgZW5kIG9mIGFsbCBicmFuY2hlcyAtLSBlY3MKIC8vIEZJWE1FOiBU
aGlzIGFic3RyYWN0aW9uIGlzIHBvb3Igc2luY2UgaXQgYXNzdW1lcyB0aGF0IHlvdSB3YW50IHRv
IGp1bXAgYmFzZWQgb24gd2hhdGV2ZXIKIC8vIHRoZSBuZXh0IHZhbHVlIGluIHRoZSBzdHJlYW0g
aXMsIGFuZCAqdGhlbiogZm9sbG93IGFueSBPUF9BTFQgYnJhbmNoZXMuCi1zdGF0aWMgaW5saW5l
IHZvaWQgbW92ZU9wY29kZVB0clBhc3RBbnlBbHRlcm5hdGVCcmFuY2hlcyhjb25zdCB1c2NoYXIq
JiBvcGNvZGVQdHIpCitzdGF0aWMgaW5saW5lIHZvaWQgYWR2YW5jZVRvRW5kT2ZCcmFja2V0KGNv
bnN0IHVzY2hhciomIG9wY29kZVB0cikKIHsKICAgICBkbyB7Ci0gICAgICAgIG9wY29kZVB0ciAr
PSBnZXRPcGNvZGVWYWx1ZUF0T2Zmc2V0KG9wY29kZVB0ciwgMSk7CisgICAgICAgIG9wY29kZVB0
ciArPSBnZXRMaW5rVmFsdWUob3Bjb2RlUHRyICsgMSk7CiAgICAgfSB3aGlsZSAoKm9wY29kZVB0
ciA9PSBPUF9BTFQpOwogfQogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvQVNDSUlDVHlwZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9BU0NJSUNUeXBlLmgJKHJldmlzaW9u
IDI4Njg3KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL0FTQ0lJQ1R5cGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNDgsMTIgKzQ4LDE0IEBAIG5hbWVzcGFjZSBXVEYgewogI2lmICFDT01QSUxFUihNU1ZD
KSB8fCBkZWZpbmVkKF9OQVRJVkVfV0NIQVJfVF9ERUZJTkVEKQogICAgIGlubGluZSBib29sIGlz
QVNDSUlBbHBoYSh3Y2hhcl90IGMpIHsgcmV0dXJuIChjIHwgMHgyMCkgPj0gJ2EnICYmIChjIHwg
MHgyMCkgPD0gJ3onOyB9CiAjZW5kaWYKKyAgICBpbmxpbmUgYm9vbCBpc0FTQ0lJQWxwaGEoaW50
IGMpIHsgcmV0dXJuIChjIHwgMHgyMCkgPj0gJ2EnICYmIChjIHwgMHgyMCkgPD0gJ3onOyB9CiAK
ICAgICBpbmxpbmUgYm9vbCBpc0FTQ0lJQWxwaGFudW1lcmljKGNoYXIgYykgeyByZXR1cm4gYyA+
PSAnMCcgJiYgYyA8PSAnOScgfHwgKGMgfCAweDIwKSA+PSAnYScgJiYgKGMgfCAweDIwKSA8PSAn
eic7IH0KICAgICBpbmxpbmUgYm9vbCBpc0FTQ0lJQWxwaGFudW1lcmljKHVuc2lnbmVkIHNob3J0
IGMpIHsgcmV0dXJuIGMgPj0gJzAnICYmIGMgPD0gJzknIHx8IChjIHwgMHgyMCkgPj0gJ2EnICYm
IChjIHwgMHgyMCkgPD0gJ3onOyB9CiAjaWYgIUNPTVBJTEVSKE1TVkMpIHx8IGRlZmluZWQoX05B
VElWRV9XQ0hBUl9UX0RFRklORUQpCiAgICAgaW5saW5lIGJvb2wgaXNBU0NJSUFscGhhbnVtZXJp
Yyh3Y2hhcl90IGMpIHsgcmV0dXJuIGMgPj0gJzAnICYmIGMgPD0gJzknIHx8IChjIHwgMHgyMCkg
Pj0gJ2EnICYmIChjIHwgMHgyMCkgPD0gJ3onOyB9CiAjZW5kaWYKKyAgICBpbmxpbmUgYm9vbCBp
c0FTQ0lJQWxwaGFudW1lcmljKGludCBjKSB7IHJldHVybiBjID49ICcwJyAmJiBjIDw9ICc5JyB8
fCAoYyB8IDB4MjApID49ICdhJyAmJiAoYyB8IDB4MjApIDw9ICd6JzsgfQogCiAgICAgaW5saW5l
IGJvb2wgaXNBU0NJSURpZ2l0KGNoYXIgYykgeyByZXR1cm4gKGMgPj0gJzAnKSAmIChjIDw9ICc5
Jyk7IH0KICAgICBpbmxpbmUgYm9vbCBpc0FTQ0lJRGlnaXQodW5zaWduZWQgc2hvcnQgYykgeyBy
ZXR1cm4gKGMgPj0gJzAnKSAmIChjIDw9ICc5Jyk7IH0KQEAgLTY3LDMwICs2OSwzNSBAQCBuYW1l
c3BhY2UgV1RGIHsKICNpZiAhQ09NUElMRVIoTVNWQykgfHwgZGVmaW5lZChfTkFUSVZFX1dDSEFS
X1RfREVGSU5FRCkKICAgICBpbmxpbmUgYm9vbCBpc0FTQ0lJSGV4RGlnaXQod2NoYXJfdCBjKSB7
IHJldHVybiBjID49ICcwJyAmJiBjIDw9ICc5JyB8fCAoYyB8IDB4MjApID49ICdhJyAmJiAoYyB8
IDB4MjApIDw9ICdmJzsgfQogI2VuZGlmCisgICAgaW5saW5lIGJvb2wgaXNBU0NJSUhleERpZ2l0
KGludCBjKSB7IHJldHVybiBjID49ICcwJyAmJiBjIDw9ICc5JyB8fCAoYyB8IDB4MjApID49ICdh
JyAmJiAoYyB8IDB4MjApIDw9ICdmJzsgfQogCiAgICAgaW5saW5lIGJvb2wgaXNBU0NJSUxvd2Vy
KGNoYXIgYykgeyByZXR1cm4gYyA+PSAnYScgJiYgYyA8PSAneic7IH0KICAgICBpbmxpbmUgYm9v
bCBpc0FTQ0lJTG93ZXIodW5zaWduZWQgc2hvcnQgYykgeyByZXR1cm4gYyA+PSAnYScgJiYgYyA8
PSAneic7IH0KICNpZiAhQ09NUElMRVIoTVNWQykgfHwgZGVmaW5lZChfTkFUSVZFX1dDSEFSX1Rf
REVGSU5FRCkKICAgICBpbmxpbmUgYm9vbCBpc0FTQ0lJTG93ZXIod2NoYXJfdCBjKSB7IHJldHVy
biBjID49ICdhJyAmJiBjIDw9ICd6JzsgfQogI2VuZGlmCisgICAgaW5saW5lIGJvb2wgaXNBU0NJ
SUxvd2VyKGludCBjKSB7IHJldHVybiBjID49ICdhJyAmJiBjIDw9ICd6JzsgfQogCiAgICAgaW5s
aW5lIGJvb2wgaXNBU0NJSVNwYWNlKGNoYXIgYykgeyByZXR1cm4gYyA9PSAnXHQnIHx8IGMgPT0g
J1xuJyB8fCBjID09ICdcdicgfHwgYyA9PSdcZicgfHwgYyA9PSAnXHInIHx8IGMgPT0gJyAnOyB9
CiAgICAgaW5saW5lIGJvb2wgaXNBU0NJSVNwYWNlKHVuc2lnbmVkIHNob3J0IGMpIHsgcmV0dXJu
IGMgPT0gJ1x0JyB8fCBjID09ICdcbicgfHwgYyA9PSAnXHYnIHx8IGMgPT0nXGYnIHx8IGMgPT0g
J1xyJyB8fCBjID09ICcgJzsgfQogI2lmICFDT01QSUxFUihNU1ZDKSB8fCBkZWZpbmVkKF9OQVRJ
VkVfV0NIQVJfVF9ERUZJTkVEKQogICAgIGlubGluZSBib29sIGlzQVNDSUlTcGFjZSh3Y2hhcl90
IGMpIHsgcmV0dXJuIGMgPT0gJ1x0JyB8fCBjID09ICdcbicgfHwgYyA9PSAnXHYnIHx8IGMgPT0n
XGYnIHx8IGMgPT0gJ1xyJyB8fCBjID09ICcgJzsgfQogI2VuZGlmCisgICAgaW5saW5lIGJvb2wg
aXNBU0NJSVNwYWNlKGludCBjKSB7IHJldHVybiBjID09ICdcdCcgfHwgYyA9PSAnXG4nIHx8IGMg
PT0gJ1x2JyB8fCBjID09J1xmJyB8fCBjID09ICdccicgfHwgYyA9PSAnICc7IH0KIAogICAgIGlu
bGluZSBjaGFyIHRvQVNDSUlMb3dlcihjaGFyIGMpIHsgcmV0dXJuIGMgfCAoKGMgPj0gJ0EnICYm
IGMgPD0gJ1onKSA8PCA1KTsgfQogICAgIGlubGluZSB1bnNpZ25lZCBzaG9ydCB0b0FTQ0lJTG93
ZXIodW5zaWduZWQgc2hvcnQgYykgeyByZXR1cm4gYyB8ICgoYyA+PSAnQScgJiYgYyA8PSAnWicp
IDw8IDUpOyB9CiAjaWYgIUNPTVBJTEVSKE1TVkMpIHx8IGRlZmluZWQoX05BVElWRV9XQ0hBUl9U
X0RFRklORUQpCiAgICAgaW5saW5lIHdjaGFyX3QgdG9BU0NJSUxvd2VyKHdjaGFyX3QgYykgeyBy
ZXR1cm4gYyB8ICgoYyA+PSAnQScgJiYgYyA8PSAnWicpIDw8IDUpOyB9CiAjZW5kaWYKKyAgICBp
bmxpbmUgaW50IHRvQVNDSUlMb3dlcihpbnQgYykgeyByZXR1cm4gYyB8ICgoYyA+PSAnQScgJiYg
YyA8PSAnWicpIDw8IDUpOyB9CiAKICAgICBpbmxpbmUgY2hhciB0b0FTQ0lJVXBwZXIoY2hhciBj
KSB7IHJldHVybiBzdGF0aWNfY2FzdDxjaGFyPihjICYgfigoYyA+PSAnYScgJiYgYyA8PSAneicp
IDw8IDUpKTsgfQogICAgIGlubGluZSB1bnNpZ25lZCBzaG9ydCB0b0FTQ0lJVXBwZXIodW5zaWdu
ZWQgc2hvcnQgYykgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KGMgJiB+KChj
ID49ICdhJyAmJiBjIDw9ICd6JykgPDwgNSkpOyB9CiAjaWYgIUNPTVBJTEVSKE1TVkMpIHx8IGRl
ZmluZWQoX05BVElWRV9XQ0hBUl9UX0RFRklORUQpCiAgICAgaW5saW5lIHdjaGFyX3QgdG9BU0NJ
SVVwcGVyKHdjaGFyX3QgYykgeyByZXR1cm4gc3RhdGljX2Nhc3Q8d2NoYXJfdD4oYyAmIH4oKGMg
Pj0gJ2EnICYmIGMgPD0gJ3onKSA8PCA1KSk7IH0KICNlbmRpZgorICAgIGlubGluZSBpbnQgdG9B
U0NJSVVwcGVyKGludCBjKSB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KGMgJiB+KChjID49ICdh
JyAmJiBjIDw9ICd6JykgPDwgNSkpOyB9CiAKIH0KIApJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4Njg3KQorKysgV2Vi
Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw2NSBAQAorMjAwNy0xMi0x
MyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjQyMAorICAgICAgICAgIGNoYW5nZSByZWdyZXNzaW9uIHRlc3RzIHRvIHVz
ZSBkb2N1bWVudC5leGVjQ29tbWFuZCBpbnN0ZWFkIG9mIHRleHRJbnB1dENvbnRyb2xsZXIuZG9D
b21tYW5kCisKKyAgICAgICAgQWRkIGEgZmV3IG1vcmUgb3BlcmF0aW9ucyB0byBkb2N1bWVudC5l
eGVjQ29tbWFuZC4KKworICAgICAgICBGaW5pc2hlZCB1cCB0aGUgdHJhbnNpdGlvbiB0byB0aGUg
bmV3IEVkaXRvcjo6Q29tbWFuZCwgaW5jbHVkaW5nIHJlbW92aW5nCisgICAgICAgIHRoZSBFZGl0
b3I6OmV4ZWNDb21tYW5kIGZ1bmN0aW9uLgorCisgICAgICAgICogV2ViQ29yZS5iYXNlLmV4cDog
QWRkZWQgRWRpdG9yOjpDb21tYW5kOjppc1N1cHBvcnRlZC4KKyAgICAgICAgKiBlZGl0aW5nL0Vk
aXRvci5oOiBSZW1vdmVkIGV4ZWNDb21tYW5kLgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29t
bWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpleHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFyaXR5
KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjp2ZXJ0aWNhbFNjcm9sbERpc3RhbmNlKTogQWRk
ZWQ7IHJlcGxhY2VzIGNhblNjcm9sbC4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVC
YWNrd2FyZCk6IEFkZGVkLiBNb3ZlZCBjb2RlIGhlcmUgZnJvbSBXZWJIVE1MVmlldy4KKyAgICAg
ICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVCYWNrd2FyZEJ5RGVjb21wb3NpbmdQcmV2aW91c0No
YXJhY3Rlcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZUZvcndhcmQp
OiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVUb0JlZ2lubmluZ09mTGlu
ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZQ
YXJhZ3JhcGgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVEZWxldGVUb0VuZE9m
TGluZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZURlbGV0ZVRvRW5kT2ZQYXJh
Z3JhcGgpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlUGFnZURvd24pOiBS
ZW5hbWVkIHRoaXMgY29tbWFuZCB0byBiZSBjb25zaXN0ZW50IHdpdGggYWxsIHRoZSBvdGhlcgor
ICAgICAgICBNb3ZlIGNvbW1hbmRzLiBUaGV5IGFsbCBtb2RpZnkgdGhlIGNhcmV0LiBSZWltcGxl
bWVudGVkIHRvIG1hdGNoIHRoZSBNYWMgT1MgWCB2ZXJzaW9uIGJ5CisgICAgICAgIHJlbW92aW5n
IHRoZSBleHBsaWNpdCBzY3JvbGxpbmcsIGFuZCBsZXR0aW5nIGl0IGJlIGRvbmUgYXV0b21hdGlj
YWxseSBieSBjb2RlIHRoYXQgbWFrZXMKKyAgICAgICAgdGhlIGNhcmV0IHZpc2libGUuIEluIHNv
bWUgY2FzZXMgdGhlIG9sZCBjb2RlIHdvdWxkIHNjcm9sbCB0d2ljZSB3aGljaCB3YXMgaGFybWxl
c3MgYnV0CisgICAgICAgIHVubmVjZXNzYXJ5LgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZU1v
dmVQYWdlRG93bkFuZE1vZGlmeVNlbGVjdGlvbik6IEFkZGVkLiBNb3ZlZCBjb2RlIGhlcmUgZnJv
bSBXZWJIVE1MVmlldy4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlUGFnZVVwKTogU2Vl
IE1vdmVQYWdlRG93biBhYm92ZS4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlUGFnZVVw
QW5kTW9kaWZ5U2VsZWN0aW9uKTogQWRkZWQuIE1vdmVkIGNvZGUgaGVyZSBmcm9tIFdlYkhUTUxW
aWV3LgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZVNlbGVjdExpbmUpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OmV4ZWN1dGVTZWxlY3RQYXJhZ3JhcGgpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OmV4ZWN1dGVTZWxlY3RTZW50ZW5jZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
ZXhlY3V0ZVNlbGVjdFdvcmQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVTd2Fw
V2l0aE1hcmspOiBTb21lIHNtYWxsIHR3ZWFrcy4KKworICAgICAgICAqIHBhZ2UvQ29udGV4dE1l
bnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxl
cjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQpOiBDaGFuZ2VkIHRvIHVzZSBFZGl0b3I6OmNvbW1h
bmQoKQorICAgICAgICBpbnN0ZWFkIG9mIEVkaXRvcjo6ZXhlY0NvbW1hbmQoKS4gVGhpcyBjb2Rl
IGNvdWxkIGJlIGNoYW5nZWQgdG8gdXNlIEVkaXRvcjo6Q29tbWFuZCBxdWl0ZSBhCisgICAgICAg
IGJpdCBtb3JlLCBidXQgSSBkaWRuJ3QgZG8gdGhhdCB0aGlzIHRpbWUuCisKKyAgICAgICAgLSBS
ZW1vdmVkIHNvbWUgb2Jzb2xldGUgdW51c2VkIGNvZGUuCisKKyAgICAgICAgKiBwYWdlL21hYy9F
dmVudEhhbmRsZXJNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnBhc3NN
b3VzZURvd25FdmVudFRvV2lkZ2V0KTogUmVtb3ZlZCB0aGUgc3BlY2lhbCBjYXNlIGNvZGUgZm9y
CisgICAgICAgIE5TVGV4dFZpZXcuIFRoaXMgd2FzIGxlZnQgb3ZlciBmcm9tIHdoZW4gd2UgdXNl
ZCBOU1RleHRGaWVsZCBhbmQgTlNUZXh0VmlldyBmb3IgZm9ybQorICAgICAgICBlbGVtZW50cyBh
bmQgaXMgbm8gbG9uZ2VyIHVzZWQgYXQgYWxsLgorCisgICAgICAgICogcGFnZS9tYWMvV2ViQ29y
ZUZyYW1lQnJpZGdlLmg6IFJlbW92ZWQgMjAgdW51c2VkIG1ldGhvZHMgdGhhdCB3ZXJlIHN0aWxs
IG9uIG9uZSBzaWRlCisgICAgICAgIG9mIHRoZSBicmlkZ2Ugb3IgYW5vdGhlci4gV2UgcmVhbGx5
IG5lZWQgdG8gZmluZCBhIHRpbWUgdG8gdGVhciBkb3duIHRoZSByZXN0IG9mIHRoZQorICAgICAg
ICBicmlkZ2UsIGJ1dCB0aGF0J3Mgbm90IHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBwYWdlL21h
Yy9XZWJDb3JlRnJhbWVCcmlkZ2UubW06CisgICAgICAgICgtW1dlYkNvcmVGcmFtZUJyaWRnZSBh
ZGREYXRhOl0pOiBDaGFuZ2VkIHRvIGdldCBhdCB0aGUgX3Nob3VsZENyZWF0ZVJlbmRlcmVycyBm
aWVsZCBkaXJlY3RseQorICAgICAgICBpbnN0ZWFkIG9mIHVzaW5nIGEgbWV0aG9kLgorICAgICAg
ICAoLVtXZWJDb3JlRnJhbWVCcmlkZ2UgcmFuZ2VCeUFsdGVyaW5nQ3VycmVudFNlbGVjdGlvbjpT
ZWxlY3Rpb25Db250cm9sbGVyOjpkaXJlY3Rpb246U2VsZWN0aW9uQ29udHJvbGxlcjo6Z3JhbnVs
YXJpdHk6XSk6CisgICAgICAgIFRvb2sgb3V0IG9ic29sZXRlIGNvbW1lbnQgYWJvdXQgbWF0Y2hp
bmcgZW51bXMgKHdlIHVzZSBhIHNpbmdsZSBlbnVtIG5vdyBhbmQgaGF2ZSBmb3Igc29tZQorICAg
ICAgICB0aW1lKS4KKyAgICAgICAgKC1bV2ViQ29yZUZyYW1lQnJpZGdlIHNlbGVjdGlvbkdyYW51
bGFyaXR5XSk6IERpdHRvLgorCiAyMDA3LTEyLTEzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFw
cGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXgKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5iYXNl
LmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAJKHJldmlzaW9uIDI4
Njg3KQorKysgV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCSh3b3JraW5nIGNvcHkpCkBAIC02NzQs
NiArNjc0LDcgQEAgX19aTks3V2ViQ29yZTZFZGl0b3IxN3Nob3VsZERlbGV0ZVJhbmdlRQogX19a
Tks3V2ViQ29yZTZFZGl0b3IyMnNlbGVjdGlvblN0YXJ0SGFzU3R5bGVFUE5TXzE5Q1NTU3R5bGVE
ZWNsYXJhdGlvbkUKIF9fWk5LN1dlYkNvcmU2RWRpdG9yMjNnZXRDb21wb3NpdGlvblNlbGVjdGlv
bkVSalMxXwogX19aTks3V2ViQ29yZTZFZGl0b3I2Y2FuQ3V0RXYKK19fWk5LN1dlYkNvcmU2RWRp
dG9yN0NvbW1hbmQxMWlzU3VwcG9ydGVkRXYKIF9fWk5LN1dlYkNvcmU2RWRpdG9yN0NvbW1hbmQx
NWlzVGV4dEluc2VydGlvbkV2CiBfX1pOSzdXZWJDb3JlNkVkaXRvcjdDb21tYW5kNXN0YXRlRVBO
U181RXZlbnRFCiBfX1pOSzdXZWJDb3JlNkVkaXRvcjdDb21tYW5kN2V4ZWN1dGVFUE5TXzVFdmVu
dEUKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmgJKHJldmlzaW9uIDI4Njg3KQorKysgV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODYsOSArMTg2LDYgQEAgcHVibGljOgogICAgIENv
bW1hbmQgY29tbWFuZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lKTsgLy8gRGVmYXVsdCBpcyBD
b21tYW5kRnJvbU1lbnVPcktleUJpbmRpbmcuCiAgICAgQ29tbWFuZCBjb21tYW5kKGNvbnN0IFN0
cmluZyYgY29tbWFuZE5hbWUsIEVkaXRvckNvbW1hbmRTb3VyY2UpOwogCi0gICAgLy8gRGVwcmVj
YXRlZCwgYnV0IHVzZWQgYnkgb2xkIGtleSBiaW5kaW5nIGNvZGUuIEtlZXAgYXJvdW5kIHVudGls
IHdlIGhhdmUgZWxpbWluYXRlZCBhbGwgY2FsbGVycy4KLSAgICBib29sIGV4ZWNDb21tYW5kKGNv
bnN0IEF0b21pY1N0cmluZyYgY29tbWFuZE5hbWUsIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQgPSAw
KTsKLQogICAgIGJvb2wgaW5zZXJ0VGV4dChjb25zdCBTdHJpbmcmLCBFdmVudCogdHJpZ2dlcmlu
Z0V2ZW50KTsKICAgICBib29sIGluc2VydFRleHRXaXRob3V0U2VuZGluZ1RleHRFdmVudChjb25z
dCBTdHJpbmcmLCBib29sIHNlbGVjdEluc2VydGVkVGV4dCwgRXZlbnQqIHRyaWdnZXJpbmdFdmVu
dCA9IDApOwogICAgIGJvb2wgaW5zZXJ0TGluZUJyZWFrKCk7CkluZGV4OiBXZWJDb3JlL2VkaXRp
bmcvRWRpdG9yQ29tbWFuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ckNvbW1hbmQuY3BwCShyZXZpc2lvbiAyODY4NykKKysrIFdlYkNvcmUvZWRpdGluZy9FZGl0b3JD
b21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDYgKzE3NCwxNiBAQCBzdGF0aWMgYm9v
bCBleGVjdXRlSW5zZXJ0Tm9kZShGcmFtZSogZnJhCiAgICAgcmV0dXJuIGV4ZWN1dGVJbnNlcnRG
cmFnbWVudChmcmFtZSwgZnJhZ21lbnQucmVsZWFzZSgpKTsKIH0KIAorc3RhdGljIGJvb2wgZXhw
YW5kU2VsZWN0aW9uVG9HcmFudWxhcml0eShGcmFtZSogZnJhbWUsIFRleHRHcmFudWxhcml0eSBn
cmFudWxhcml0eSkKK3sKKyAgICBTZWxlY3Rpb24gc2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlv
bkNvbnRyb2xsZXIoKS0+c2VsZWN0aW9uKCk7CisgICAgc2VsZWN0aW9uLmV4cGFuZFVzaW5nR3Jh
bnVsYXJpdHkoZ3JhbnVsYXJpdHkpOworICAgIGlmICghZnJhbWUtPnNob3VsZENoYW5nZVNlbGVj
dGlvbihzZWxlY3Rpb24pKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgZnJhbWUtPnNlbGVj
dGlvbkNvbnRyb2xsZXIoKS0+ZXhwYW5kVXNpbmdHcmFudWxhcml0eShncmFudWxhcml0eSk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVN0eWxlKEZyYW1lKiBm
cmFtZSwgaW50IHByb3BlcnR5SUQsIGNvbnN0IGNoYXIqIGRlc2lyZWRWYWx1ZSkKIHsKICAgICBS
ZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gbmV3IENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uOwpAQCAtMTg2LDE0ICsxOTYsMjEgQEAgc3RhdGljIFN0cmluZyB2YWx1
ZVN0eWxlKEZyYW1lKiBmcmFtZSwgaQogICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9uU3RhcnRT
dHlsZVByb3BlcnR5VmFsdWUocHJvcGVydHlJRCk7CiB9CiAKLXN0YXRpYyBib29sIGNhblNjcm9s
bChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQorc3RhdGljIGJvb2wgdmVydGljYWxTY3JvbGxEaXN0
YW5jZShGcmFtZSogZnJhbWUpCiB7CisgICAgTm9kZSogZm9jdXNlZE5vZGUgPSBmcmFtZS0+ZG9j
dW1lbnQoKS0+Zm9jdXNlZE5vZGUoKTsKKyAgICBpZiAoIWZvY3VzZWROb2RlKQorICAgICAgICBy
ZXR1cm4gMDsKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZm9jdXNlZE5vZGUtPnJlbmRl
cmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICByZXR1cm4gMDsKICAgICBSZW5kZXJTdHlsZSogc3R5bGUgPSByZW5kZXJlci0+c3R5bGUoKTsK
ICAgICBpZiAoIXN0eWxlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHN0eWxl
LT5vdmVyZmxvd1koKSA9PSBPU0NST0xMIHx8IHN0eWxlLT5vdmVyZmxvd1koKSA9PSBPQVVUTyB8
fCByZW5kZXJlci0+aXNUZXh0QXJlYSgpOworICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoIShz
dHlsZS0+b3ZlcmZsb3dZKCkgPT0gT1NDUk9MTCB8fCBzdHlsZS0+b3ZlcmZsb3dZKCkgPT0gT0FV
VE8gfHwgcmVuZGVyZXItPmlzVGV4dEFyZWEoKSkpCisgICAgICAgIHJldHVybiAwOworICAgIGlu
dCBoZWlnaHQgPSByZW5kZXJlci0+Y2xpZW50SGVpZ2h0KCk7CisgICAgcmV0dXJuIG1heCgoaGVp
Z2h0ICsgMSkgLyAyLCBoZWlnaHQgLSBQQUdFX0tFRVApOwogfQogCiBzdGF0aWMgUmVmUHRyPFJh
bmdlPiB1bmlvbkRPTVJhbmdlcyhSYW5nZSogYSwgUmFuZ2UqIGIpCkBAIC0yNTgsNiArMjc1LDUz
IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGUoRnJhbWUqIGZyYW1lLCAKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKK3N0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVCYWNrd2FyZChGcmFtZSogZnJh
bWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKK3sKKyAgICBm
cmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6
QkFDS1dBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3N0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVCYWNrd2FyZEJ5RGVjb21wb3Np
bmdQcmV2aW91c0NoYXJhY3RlcihGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNv
dXJjZSwgY29uc3QgU3RyaW5nJikKK3sKKyAgICBMT0dfRVJST1IoIkRlbGV0ZUJhY2t3YXJkQnlE
ZWNvbXBvc2luZ1ByZXZpb3VzQ2hhcmFjdGVyIGlzIG5vdCBpbXBsZW1lbnRlZCwgZG9pbmcgRGVs
ZXRlQmFja3dhcmQgaW5zdGVhZCIpOworICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERp
cmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgQ2hhcmFjdGVyR3JhbnVsYXJp
dHksIGZhbHNlLCB0cnVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgZXhl
Y3V0ZURlbGV0ZUZvcndhcmQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3Vy
Y2Ugc291cmNlLCBjb25zdCBTdHJpbmcmKQoreworICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRl
V2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBDaGFyYWN0ZXJHcmFu
dWxhcml0eSwgZmFsc2UsIHRydWUpOworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9v
bCBleGVjdXRlRGVsZXRlVG9CZWdpbm5pbmdPZkxpbmUoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVk
aXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCit7CisgICAgZnJhbWUtPmVkaXRvcigp
LT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBMaW5l
Qm91bmRhcnksIHRydWUsIGZhbHNlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJv
b2wgZXhlY3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgoRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCit7CisgICAgZnJhbWUtPmVk
aXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJE
LCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOworICAgIHJldHVybiB0cnVlOworfQor
CitzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9FbmRPZkxpbmUoRnJhbWUqIGZyYW1lLCBFdmVu
dCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCit7CisgICAgLy8gRGVzcGl0
ZSBpdHMgbmFtZSwgdGhpcyBjb21tYW5kIHNob3VsZCBkZWxldGUgdGhlIG5ld2xpbmUgYXQgdGhl
IGVuZCBvZgorICAgIC8vIGEgcGFyYWdyYXBoIGlmIHlvdSBhcmUgYXQgdGhlIGVuZCBvZiBhIHBh
cmFncmFwaCAobGlrZSBEZWxldGVUb0VuZE9mUGFyYWdyYXBoKS4KKyAgICBmcmFtZS0+ZWRpdG9y
KCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgTGlu
ZUJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBi
b29sIGV4ZWN1dGVEZWxldGVUb0VuZE9mUGFyYWdyYXBoKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQoreworICAgIC8vIERlc3BpdGUgaXRz
IG5hbWUsIHRoaXMgY29tbWFuZCBzaG91bGQgZGVsZXRlIHRoZSBuZXdsaW5lIGF0IHRoZSBlbmQg
b2YKKyAgICAvLyBhIHBhcmFncmFwaCBpZiB5b3UgYXJlIGF0IHRoZSBlbmQgb2YgYSBwYXJhZ3Jh
cGguCisgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkZPUldBUkQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CisgICAg
cmV0dXJuIHRydWU7Cit9CisKIHN0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVUb01hcmsoRnJhbWUq
IGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7CiAg
ICAgUmVmUHRyPFJhbmdlPiBtYXJrID0gZnJhbWUtPm1hcmsoKS50b1JhbmdlKCk7CkBAIC00NzQs
MTkgKzUzOCw2IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlRG93bkFuZE1vZGlmeVNlbGUKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVEb3duQnlQYWdlQW5k
TW9kaWZ5Q2FyZXQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNv
bnN0IFN0cmluZyYpCi17Ci0gICAgTm9kZSogZm9jdXNlZE5vZGUgPSBmcmFtZS0+ZG9jdW1lbnQo
KS0+Zm9jdXNlZE5vZGUoKTsKLSAgICBpZiAoIWZvY3VzZWROb2RlKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGZvY3VzZWROb2RlLT5yZW5kZXJl
cigpOwotICAgIGlmICghY2FuU2Nyb2xsKHJlbmRlcmVyKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGJvb2wgaGFuZGxlZFNjcm9sbCA9IHJlbmRlcmVyLT5zY3JvbGwoU2Nyb2xsRG93biwg
U2Nyb2xsQnlQYWdlKTsKLSAgICBib29sIGhhbmRsZWRDYXJldE1vdmUgPSBmcmFtZS0+c2VsZWN0
aW9uQ29udHJvbGxlcigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgcmVuZGVy
ZXItPmNsaWVudEhlaWdodCgpIC0gUEFHRV9LRUVQKTsKLSAgICByZXR1cm4gaGFuZGxlZFNjcm9s
bCB8fCBoYW5kbGVkQ2FyZXRNb3ZlOwotfQotCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZUZvcndh
cmQoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmlu
ZyYpCiB7CiAgICAgZnJhbWUtPnNlbGVjdGlvbkNvbnRyb2xsZXIoKS0+bW9kaWZ5KFNlbGVjdGlv
bkNvbnRyb2xsZXI6Ok1PVkUsIFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIENoYXJhY3Rl
ckdyYW51bGFyaXR5LCB0cnVlKTsKQEAgLTUxMSw2ICs1NjIsMzggQEAgc3RhdGljIGJvb2wgZXhl
Y3V0ZU1vdmVMZWZ0QW5kTW9kaWZ5U2VsZQogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMg
Ym9vbCBleGVjdXRlTW92ZVBhZ2VEb3duKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQoreworICAgIGludCBkaXN0YW5jZSA9IHZlcnRpY2Fs
U2Nyb2xsRGlzdGFuY2UoZnJhbWUpOworICAgIGlmICghZGlzdGFuY2UpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICByZXR1cm4gZnJhbWUtPnNlbGVjdGlvbkNvbnRyb2xsZXIoKS0+bW9kaWZ5
KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUsIGRpc3RhbmNlLCB0cnVlKTsKK30KKworc3RhdGlj
IGJvb2wgZXhlY3V0ZU1vdmVQYWdlRG93bkFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSogZnJhbWUs
IEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKK3sKKyAgICBpbnQg
ZGlzdGFuY2UgPSB2ZXJ0aWNhbFNjcm9sbERpc3RhbmNlKGZyYW1lKTsKKyAgICBpZiAoIWRpc3Rh
bmNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGZyYW1lLT5zZWxlY3Rpb25D
b250cm9sbGVyKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQsIGRpc3RhbmNl
LCB0cnVlKTsKK30KKworc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVQYWdlVXAoRnJhbWUqIGZyYW1l
LCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCit7CisgICAgaW50
IGRpc3RhbmNlID0gdmVydGljYWxTY3JvbGxEaXN0YW5jZShmcmFtZSk7CisgICAgaWYgKCFkaXN0
YW5jZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9u
Q29udHJvbGxlcigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgLWRpc3RhbmNl
LCB0cnVlKTsKK30KKworc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVQYWdlVXBBbmRNb2RpZnlTZWxl
Y3Rpb24oRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0
cmluZyYpCit7CisgICAgaW50IGRpc3RhbmNlID0gdmVydGljYWxTY3JvbGxEaXN0YW5jZShmcmFt
ZSk7CisgICAgaWYgKCFkaXN0YW5jZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biBmcmFtZS0+c2VsZWN0aW9uQ29udHJvbGxlcigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxl
cjo6RVhURU5ELCAtZGlzdGFuY2UsIHRydWUpOworfQorCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92
ZVJpZ2h0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBT
dHJpbmcmKQogewogICAgIGZyYW1lLT5zZWxlY3Rpb25Db250cm9sbGVyKCktPm1vZGlmeShTZWxl
Y3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpSSUdIVCwgQ2hhcmFj
dGVyR3JhbnVsYXJpdHksIHRydWUpOwpAQCAtNjQzLDE5ICs3MjYsNiBAQCBzdGF0aWMgYm9vbCBl
eGVjdXRlTW92ZVVwQW5kTW9kaWZ5U2VsZWN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRp
YyBib29sIGV4ZWN1dGVNb3ZlVXBCeVBhZ2VBbmRNb2RpZnlDYXJldChGcmFtZSogZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKLXsKLSAgICBOb2RlKiBm
b2N1c2VkTm9kZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpOwotICAgIGlmICgh
Zm9jdXNlZE5vZGUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBSZW5kZXJPYmplY3QqIHJl
bmRlcmVyID0gZm9jdXNlZE5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFjYW5TY3JvbGwocmVu
ZGVyZXIpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgYm9vbCBoYW5kbGVkU2Nyb2xsID0g
cmVuZGVyZXItPnNjcm9sbChTY3JvbGxEb3duLCBTY3JvbGxCeVBhZ2UpOwotICAgIGJvb2wgaGFu
ZGxlZENhcmV0TW92ZSA9IGZyYW1lLT5zZWxlY3Rpb25Db250cm9sbGVyKCktPm1vZGlmeShTZWxl
Y3Rpb25Db250cm9sbGVyOjpNT1ZFLCAtKHJlbmRlcmVyLT5jbGllbnRIZWlnaHQoKSAtIFBBR0Vf
S0VFUCkpOwotICAgIHJldHVybiBoYW5kbGVkU2Nyb2xsIHx8IGhhbmRsZWRDYXJldE1vdmU7Ci19
Ci0KIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlV29yZEJhY2t3YXJkKEZyYW1lKiBmcmFtZSwgRXZl
bnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewogICAgIGZyYW1lLT5z
ZWxlY3Rpb25Db250cm9sbGVyKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBT
ZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgV29yZEdyYW51bGFyaXR5LCB0cnVlKTsKQEAg
LTc0OSw2ICs4MTksMjEgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVNlbGVjdEFsbChGcmFtZSogZnJh
bQogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0TGluZShG
cmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikK
K3sKKyAgICByZXR1cm4gZXhwYW5kU2VsZWN0aW9uVG9HcmFudWxhcml0eShmcmFtZSwgTGluZUdy
YW51bGFyaXR5KTsKK30KKworc3RhdGljIGJvb2wgZXhlY3V0ZVNlbGVjdFBhcmFncmFwaChGcmFt
ZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKK3sK
KyAgICByZXR1cm4gZXhwYW5kU2VsZWN0aW9uVG9HcmFudWxhcml0eShmcmFtZSwgUGFyYWdyYXBo
R3JhbnVsYXJpdHkpOworfQorCitzdGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0U2VudGVuY2UoRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCit7
CisgICAgcmV0dXJuIGV4cGFuZFNlbGVjdGlvblRvR3JhbnVsYXJpdHkoZnJhbWUsIFNlbnRlbmNl
R3JhbnVsYXJpdHkpOworfQorCiBzdGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0VG9NYXJrKEZyYW1l
KiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewog
ICAgIFJlZlB0cjxSYW5nZT4gbWFyayA9IGZyYW1lLT5tYXJrKCkudG9SYW5nZSgpOwpAQCAtNzYx
LDYgKzg0NiwxMSBAQCBzdGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0VG9NYXJrKEZyYW1lKiBmCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKK3N0YXRpYyBib29sIGV4ZWN1dGVTZWxlY3RXb3JkKEZyYW1l
KiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQorewor
ICAgIHJldHVybiBleHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFyaXR5KGZyYW1lLCBXb3JkR3JhbnVs
YXJpdHkpOworfQorCiBzdGF0aWMgYm9vbCBleGVjdXRlU2V0TWFyayhGcmFtZSogZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBmcmFtZS0+
c2V0TWFyayhmcmFtZS0+c2VsZWN0aW9uQ29udHJvbGxlcigpLT5zZWxlY3Rpb24oKSk7CkBAIC03
ODUsMTIgKzg3NSwxMSBAQCBzdGF0aWMgYm9vbCBleGVjdXRlU3VwZXJzY3JpcHQoRnJhbWUqIGZy
CiBzdGF0aWMgYm9vbCBleGVjdXRlU3dhcFdpdGhNYXJrKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBF
ZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQogewogICAgIGNvbnN0IFNlbGVjdGlv
biYgbWFyayA9IGZyYW1lLT5tYXJrKCk7Ci0gICAgU2VsZWN0aW9uIHNlbGVjdGlvbiA9IGZyYW1l
LT5zZWxlY3Rpb25Db250cm9sbGVyKCktPnNlbGVjdGlvbigpOworICAgIGNvbnN0IFNlbGVjdGlv
biYgc2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlvbkNvbnRyb2xsZXIoKS0+c2VsZWN0aW9uKCk7
CiAgICAgaWYgKG1hcmsuaXNOb25lKCkgfHwgc2VsZWN0aW9uLmlzTm9uZSgpKSB7CiAgICAgICAg
IHN5c3RlbUJlZXAoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLQogICAgIGZyYW1l
LT5zZWxlY3Rpb25Db250cm9sbGVyKCktPnNldFNlbGVjdGlvbihtYXJrKTsKICAgICBmcmFtZS0+
c2V0TWFyayhzZWxlY3Rpb24pOwogICAgIHJldHVybiB0cnVlOwpAQCAtMTA0Miw2ICsxMTMxLDEz
IEBAIHN0YXRpYyBjb25zdCBDb21tYW5kTWFwJiBjcmVhdGVDb21tYW5kTWEKICAgICAgICAgeyAi
Q3JlYXRlTGluayIsIHsgZXhlY3V0ZUNyZWF0ZUxpbmssIHN1cHBvcnRlZCwgZW5hYmxlZEluUmlj
aGx5RWRpdGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiB9
IH0sCiAgICAgICAgIHsgIkN1dCIsIHsgZXhlY3V0ZUN1dCwgc3VwcG9ydGVkLCBlbmFibGVkQ3V0
LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiB9IH0sCiAgICAgICAgIHsg
IkRlbGV0ZSIsIHsgZXhlY3V0ZURlbGV0ZSwgc3VwcG9ydGVkLCBlbmFibGVkSW5FZGl0YWJsZVRl
eHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uIH0gfSwKKyAgICAgICAg
eyAiRGVsZXRlQmFja3dhcmQiLCB7IGV4ZWN1dGVEZWxldGVCYWNrd2FyZCwgc3VwcG9ydGVkLCBl
bmFibGVkSW5FZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0
aW9uIH0gfSwKKyAgICAgICAgeyAiRGVsZXRlQmFja3dhcmRCeURlY29tcG9zaW5nUHJldmlvdXND
aGFyYWN0ZXIiLCB7IGV4ZWN1dGVEZWxldGVCYWNrd2FyZEJ5RGVjb21wb3NpbmdQcmV2aW91c0No
YXJhY3Rlciwgc3VwcG9ydGVkLCBlbmFibGVkSW5FZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFs
dWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uIH0gfSwKKyAgICAgICAgeyAiRGVsZXRlRm9yd2FyZCIs
IHsgZXhlY3V0ZURlbGV0ZUZvcndhcmQsIHN1cHBvcnRlZCwgZW5hYmxlZEluRWRpdGFibGVUZXh0
LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiB9IH0sCisgICAgICAgIHsg
IkRlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5lIiwgeyBleGVjdXRlRGVsZXRlVG9CZWdpbm5pbmdPZkxp
bmUsIHN1cHBvcnRlZCwgZW5hYmxlZEluRWRpdGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVs
bCwgbm90VGV4dEluc2VydGlvbiB9IH0sCisgICAgICAgIHsgIkRlbGV0ZVRvQmVnaW5uaW5nT2ZQ
YXJhZ3JhcGgiLCB7IGV4ZWN1dGVEZWxldGVUb0JlZ2lubmluZ09mUGFyYWdyYXBoLCBzdXBwb3J0
ZWQsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJ
bnNlcnRpb24gfSB9LAorICAgICAgICB7ICJEZWxldGVUb0VuZE9mTGluZSIsIHsgZXhlY3V0ZURl
bGV0ZVRvRW5kT2ZMaW5lLCBzdXBwb3J0ZWQsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dCwgc3RhdGVO
b25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24gfSB9LAorICAgICAgICB7ICJEZWxldGVU
b0VuZE9mUGFyYWdyYXBoIiwgeyBleGVjdXRlRGVsZXRlVG9FbmRPZlBhcmFncmFwaCwgc3VwcG9y
dGVkLCBlbmFibGVkSW5FZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0
SW5zZXJ0aW9uIH0gfSwKICAgICAgICAgeyAiRGVsZXRlVG9NYXJrIiwgeyBleGVjdXRlRGVsZXRl
VG9NYXJrLCBzdXBwb3J0ZWQsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2YWx1
ZU51bGwsIG5vdFRleHRJbnNlcnRpb24gfSB9LAogICAgICAgICB7ICJEZWxldGVXb3JkQmFja3dh
cmQiLCB7IGV4ZWN1dGVEZWxldGVXb3JkQmFja3dhcmQsIHN1cHBvcnRlZCwgZW5hYmxlZEluRWRp
dGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiB9IH0sCiAg
ICAgICAgIHsgIkRlbGV0ZVdvcmRGb3J3YXJkIiwgeyBleGVjdXRlRGVsZXRlV29yZEZvcndhcmQs
IHN1cHBvcnRlZCwgZW5hYmxlZEluRWRpdGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwg
bm90VGV4dEluc2VydGlvbiB9IH0sCkBAIC0xMDc2LDExICsxMTcyLDE0IEBAIHN0YXRpYyBjb25z
dCBDb21tYW5kTWFwJiBjcmVhdGVDb21tYW5kTWEKICAgICAgICAgeyAiTW92ZUJhY2t3YXJkQW5k
TW9kaWZ5U2VsZWN0aW9uIiwgeyBleGVjdXRlTW92ZUJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9u
LCBzdXBwb3J0ZWQsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2YWx1ZU51bGws
IG5vdFRleHRJbnNlcnRpb24gfSB9LAogICAgICAgICB7ICJNb3ZlRG93biIsIHsgZXhlY3V0ZU1v
dmVEb3duLCBzdXBwb3J0ZWQsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2YWx1
ZU51bGwsIG5vdFRleHRJbnNlcnRpb24gfSB9LAogICAgICAgICB7ICJNb3ZlRG93bkFuZE1vZGlm
eVNlbGVjdGlvbiIsIHsgZXhlY3V0ZU1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uLCBzdXBwb3J0
ZWQsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJ
bnNlcnRpb24gfSB9LAotICAgICAgICB7ICJNb3ZlRG93bkJ5UGFnZUFuZE1vZGlmeUNhcmV0Iiwg
eyBleGVjdXRlTW92ZURvd25CeVBhZ2VBbmRNb2RpZnlDYXJldCwgc3VwcG9ydGVkLCBlbmFibGVk
SW5FZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uIH0g
fSwKICAgICAgICAgeyAiTW92ZUZvcndhcmQiLCB7IGV4ZWN1dGVNb3ZlRm9yd2FyZCwgc3VwcG9y
dGVkLCBlbmFibGVkSW5FZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0
SW5zZXJ0aW9uIH0gfSwKICAgICAgICAgeyAiTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24i
LCB7IGV4ZWN1dGVNb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiwgc3VwcG9ydGVkLCBlbmFi
bGVkSW5FZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9u
IH0gfSwKICAgICAgICAgeyAiTW92ZUxlZnQiLCB7IGV4ZWN1dGVNb3ZlTGVmdCwgc3VwcG9ydGVk
LCBlbmFibGVkSW5FZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5z
ZXJ0aW9uIH0gfSwKICAgICAgICAgeyAiTW92ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24iLCB7IGV4
ZWN1dGVNb3ZlTGVmdEFuZE1vZGlmeVNlbGVjdGlvbiwgc3VwcG9ydGVkLCBlbmFibGVkSW5FZGl0
YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uIH0gfSwKKyAg
ICAgICAgeyAiTW92ZVBhZ2VEb3duIiwgeyBleGVjdXRlTW92ZVBhZ2VEb3duLCBzdXBwb3J0ZWQs
IGVuYWJsZWRJbkVkaXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNl
cnRpb24gfSB9LAorICAgICAgICB7ICJNb3ZlUGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iLCB7
IGV4ZWN1dGVNb3ZlUGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb24sIHN1cHBvcnRlZCwgZW5hYmxl
ZEluRWRpdGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiB9
IH0sCisgICAgICAgIHsgIk1vdmVQYWdlVXAiLCB7IGV4ZWN1dGVNb3ZlUGFnZVVwLCBzdXBwb3J0
ZWQsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJ
bnNlcnRpb24gfSB9LAorICAgICAgICB7ICJNb3ZlUGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIiwg
eyBleGVjdXRlTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbiwgc3VwcG9ydGVkLCBlbmFibGVk
SW5FZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uIH0g
fSwKICAgICAgICAgeyAiTW92ZVBhcmFncmFwaEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiwg
eyBleGVjdXRlTW92ZVBhcmFncmFwaEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uLCBzdXBwb3J0
ZWQsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJ
bnNlcnRpb24gfSB9LAogICAgICAgICB7ICJNb3ZlUGFyYWdyYXBoRm9yd2FyZEFuZE1vZGlmeVNl
bGVjdGlvbiIsIHsgZXhlY3V0ZU1vdmVQYXJhZ3JhcGhGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9u
LCBzdXBwb3J0ZWQsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2YWx1ZU51bGws
IG5vdFRleHRJbnNlcnRpb24gfSB9LAogICAgICAgICB7ICJNb3ZlUmlnaHQiLCB7IGV4ZWN1dGVN
b3ZlUmlnaHQsIHN1cHBvcnRlZCwgZW5hYmxlZEluRWRpdGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZh
bHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiB9IH0sCkBAIC0xMTAzLDcgKzEyMDIsNiBAQCBzdGF0
aWMgY29uc3QgQ29tbWFuZE1hcCYgY3JlYXRlQ29tbWFuZE1hCiAgICAgICAgIHsgIk1vdmVUb0Vu
ZE9mU2VudGVuY2VBbmRNb2RpZnlTZWxlY3Rpb24iLCB7IGV4ZWN1dGVNb3ZlVG9FbmRPZlNlbnRl
bmNlQW5kTW9kaWZ5U2VsZWN0aW9uLCBzdXBwb3J0ZWQsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dCwg
c3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24gfSB9LAogICAgICAgICB7ICJN
b3ZlVXAiLCB7IGV4ZWN1dGVNb3ZlVXAsIHN1cHBvcnRlZCwgZW5hYmxlZEluRWRpdGFibGVUZXh0
LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiB9IH0sCiAgICAgICAgIHsg
Ik1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbiIsIHsgZXhlY3V0ZU1vdmVVcEFuZE1vZGlmeVNlbGVj
dGlvbiwgc3VwcG9ydGVkLCBlbmFibGVkSW5FZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVO
dWxsLCBub3RUZXh0SW5zZXJ0aW9uIH0gfSwKLSAgICAgICAgeyAiTW92ZVVwQnlQYWdlQW5kTW9k
aWZ5Q2FyZXQiLCB7IGV4ZWN1dGVNb3ZlVXBCeVBhZ2VBbmRNb2RpZnlDYXJldCwgc3VwcG9ydGVk
LCBlbmFibGVkSW5FZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5z
ZXJ0aW9uIH0gfSwKICAgICAgICAgeyAiTW92ZVdvcmRCYWNrd2FyZCIsIHsgZXhlY3V0ZU1vdmVX
b3JkQmFja3dhcmQsIHN1cHBvcnRlZCwgZW5hYmxlZEluRWRpdGFibGVUZXh0LCBzdGF0ZU5vbmUs
IHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiB9IH0sCiAgICAgICAgIHsgIk1vdmVXb3JkQmFj
a3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iLCB7IGV4ZWN1dGVNb3ZlV29yZEJhY2t3YXJkQW5kTW9k
aWZ5U2VsZWN0aW9uLCBzdXBwb3J0ZWQsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dCwgc3RhdGVOb25l
LCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24gfSB9LAogICAgICAgICB7ICJNb3ZlV29yZEZv
cndhcmQiLCB7IGV4ZWN1dGVNb3ZlV29yZEZvcndhcmQsIHN1cHBvcnRlZCwgZW5hYmxlZEluRWRp
dGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiB9IH0sCkBA
IC0xMTE5LDcgKzEyMTcsMTEgQEAgc3RhdGljIGNvbnN0IENvbW1hbmRNYXAmIGNyZWF0ZUNvbW1h
bmRNYQogICAgICAgICB7ICJSZWRvIiwgeyBleGVjdXRlUmVkbywgc3VwcG9ydGVkLCBlbmFibGVk
UmVkbywgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24gfSB9LAogICAgICAg
ICB7ICJSZW1vdmVGb3JtYXQiLCB7IGV4ZWN1dGVSZW1vdmVGb3JtYXQsIHN1cHBvcnRlZCwgZW5h
YmxlZFJhbmdlSW5FZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5z
ZXJ0aW9uIH0gfSwKICAgICAgICAgeyAiU2VsZWN0QWxsIiwgeyBleGVjdXRlU2VsZWN0QWxsLCBz
dXBwb3J0ZWQsIGVuYWJsZWQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9u
IH0gfSwKKyAgICAgICAgeyAiU2VsZWN0TGluZSIsIHsgZXhlY3V0ZVNlbGVjdExpbmUsIHN1cHBv
cnRlZCwgZW5hYmxlZEFueVNlbGVjdGlvbiwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJ
bnNlcnRpb24gfSB9LAorICAgICAgICB7ICJTZWxlY3RQYXJhZ3JhcGgiLCB7IGV4ZWN1dGVTZWxl
Y3RQYXJhZ3JhcGgsIHN1cHBvcnRlZCwgZW5hYmxlZEFueVNlbGVjdGlvbiwgc3RhdGVOb25lLCB2
YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24gfSB9LAorICAgICAgICB7ICJTZWxlY3RTZW50ZW5j
ZSIsIHsgZXhlY3V0ZVNlbGVjdFNlbnRlbmNlLCBzdXBwb3J0ZWQsIGVuYWJsZWRBbnlTZWxlY3Rp
b24sIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uIH0gfSwKICAgICAgICAg
eyAiU2VsZWN0VG9NYXJrIiwgeyBleGVjdXRlU2VsZWN0VG9NYXJrLCBzdXBwb3J0ZWQsIGVuYWJs
ZWRBbnlTZWxlY3Rpb25BbmRNYXJrLCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2Vy
dGlvbiB9IH0sCisgICAgICAgIHsgIlNlbGVjdFdvcmQiLCB7IGV4ZWN1dGVTZWxlY3RXb3JkLCBz
dXBwb3J0ZWQsIGVuYWJsZWRBbnlTZWxlY3Rpb24sIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RU
ZXh0SW5zZXJ0aW9uIH0gfSwKICAgICAgICAgeyAiU2V0TWFyayIsIHsgZXhlY3V0ZVNldE1hcmss
IHN1cHBvcnRlZCwgZW5hYmxlZEFueVNlbGVjdGlvbiwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5v
dFRleHRJbnNlcnRpb24gfSB9LAogICAgICAgICB7ICJTdHJpa2V0aHJvdWdoIiwgeyBleGVjdXRl
U3RyaWtldGhyb3VnaCwgc3VwcG9ydGVkLCBlbmFibGVkSW5SaWNobHlFZGl0YWJsZVRleHQsIHN0
YXRlU3RyaWtldGhyb3VnaCwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uIH0gfSwKICAgICAg
ICAgeyAiU3Vic2NyaXB0IiwgeyBleGVjdXRlU3Vic2NyaXB0LCBzdXBwb3J0ZWQsIGVuYWJsZWRJ
blJpY2hseUVkaXRhYmxlVGV4dCwgc3RhdGVTdWJzY3JpcHQsIHZhbHVlTnVsbCwgbm90VGV4dElu
c2VydGlvbiB9IH0sCkBAIC0xMjcwLDkgKzEzNzIsNCBAQCBib29sIEVkaXRvcjo6Q29tbWFuZDo6
aXNUZXh0SW5zZXJ0aW9uKCkgCiAgICAgcmV0dXJuIG1fY29tbWFuZCAmJiBtX2NvbW1hbmQtPmlz
VGV4dEluc2VydGlvbjsKIH0KIAotYm9vbCBFZGl0b3I6OmV4ZWNDb21tYW5kKGNvbnN0IEF0b21p
Y1N0cmluZyYgY29tbWFuZE5hbWUsIEV2ZW50KiB0cmlnZ2VyaW5nRXZlbnQpCi17Ci0gICAgcmV0
dXJuIGNvbW1hbmQoY29tbWFuZE5hbWUpLmV4ZWN1dGUodHJpZ2dlcmluZ0V2ZW50KTsKLX0KLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29u
dHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJv
bGxlci5jcHAJKHJldmlzaW9uIDI4Njg3KQorKysgV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29u
dHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNCwxMCArMjE0LDEwIEBAIHZvaWQgQ29u
dGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUkKICAgICAgICAgICAgICAgICBvcGVuTmV3
V2luZG93KHJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKSwgZnJhbWUpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQm9sZDoKLSAgICAgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS0+ZXhlY0NvbW1hbmQoIlRvZ2dsZUJvbGQiKTsKKyAgICAgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiVG9nZ2xlQm9sZCIpLmV4ZWN1dGUoKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0l0YWxpYzoKLSAgICAg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZXhlY0NvbW1hbmQoIlRvZ2dsZUl0YWxpYyIpOworICAg
ICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJUb2dnbGVJdGFsaWMiKS5leGVjdXRl
KCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdV
bmRlcmxpbmU6CiAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPnRvZ2dsZVVuZGVybGluZSgp
OwpJbmRleDogV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0JKHJldmlzaW9uIDI4Njg3KQor
KysgV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTIxOSwzNyArMjE5LDE2IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpwYXNzTW91c2VEb3duRXZlbnRU
b1cKICAgICBBU1NFUlQobm9kZVZpZXcpOwogICAgIEFTU0VSVChbbm9kZVZpZXcgc3VwZXJ2aWV3
XSk7CiAgICAgTlNWaWV3ICp2aWV3ID0gW25vZGVWaWV3IGhpdFRlc3Q6W1tub2RlVmlldyBzdXBl
cnZpZXddIGNvbnZlcnRQb2ludDpbY3VycmVudEV2ZW50KCkuZ2V0KCkgbG9jYXRpb25JbldpbmRv
d10gZnJvbVZpZXc6bmlsXV07Ci0gICAgaWYgKCF2aWV3KQorICAgIGlmICghdmlldykgewogICAg
ICAgICAvLyBXZSBwcm9iYWJseSBoaXQgdGhlIGJvcmRlciBvZiBhIFJlbmRlcldpZGdldAogICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAgICAgCi0gICAgaWYgKFttX2ZyYW1lLT5icmlkZ2Uo
KSBmaXJzdFJlc3BvbmRlcl0gPT0gdmlldykgewotICAgICAgICAvLyBJbiB0aGUgY2FzZSB3aGVy
ZSB3ZSBqdXN0IGJlY2FtZSBmaXJzdCByZXNwb25kZXIsIHdlIHNob3VsZCBzZW5kIHRoZSBtb3Vz
ZURvd246Ci0gICAgICAgIC8vIHRvIHRoZSBOU1RleHRGaWVsZCwgbm90IHRoZSBOU1RleHRGaWVs
ZCdzIGVkaXRvci4gVGhpcyBjb2RlIG1ha2VzIHN1cmUgdGhhdCBoYXBwZW5zLgotICAgICAgICAv
LyBJZiB3ZSBkb24ndCBkbyB0aGlzLCB3ZSBzZWUgYSBmbGFzaCBvZiBzZWxlY3RlZCB0ZXh0IHdo
ZW4gY2xpY2tpbmcgaW4gYSB0ZXh0IGZpZWxkLgotICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyB0
aGUgb25seSBjYWxsZXIgb2YgdGV4dFZpZXdXYXNGaXJzdFJlc3BvbmRlckF0TW91c2VEb3duVGlt
ZS4gV2hlbiB3ZQotICAgICAgICAvLyBlbGltaW5hdGUgYWxsIHVzZSBvZiBOU1RleHRGaWVsZC9O
U1RleHRWaWV3IGluIGZvcm0gZmllbGRzIHdlIGNhbiBlbGltaW5hdGUgdGhpcyBjb2RlLAotICAg
ICAgICAvLyBhbmQgdGV4dFZpZXdXYXNGaXJzdFJlc3BvbmRlckF0TW91c2VEb3duVGltZTosIGFu
ZCB0aGUgaW5zdGFuY2UgdmFyaWFibGUgV2ViSFRNTFZpZXcKLSAgICAgICAgLy8ga2VlcHMgc29s
ZWx5IHRvIHN1cHBvcnQgdGV4dFZpZXdXYXNGaXJzdFJlc3BvbmRlckF0TW91c2VEb3duVGltZTou
Ci0gICAgICAgIGlmIChbdmlldyBpc0tpbmRPZkNsYXNzOltOU1RleHRWaWV3IGNsYXNzXV0gJiYg
IVttX2ZyYW1lLT5icmlkZ2UoKSB0ZXh0Vmlld1dhc0ZpcnN0UmVzcG9uZGVyQXRNb3VzZURvd25U
aW1lOihOU1RleHRWaWV3ICopdmlld10pIHsKLSAgICAgICAgICAgIE5TVmlldyAqc3VwZXJ2aWV3
ID0gdmlldzsKLSAgICAgICAgICAgIHdoaWxlIChzdXBlcnZpZXcgIT0gbm9kZVZpZXcpIHsKLSAg
ICAgICAgICAgICAgICBzdXBlcnZpZXcgPSBbc3VwZXJ2aWV3IHN1cGVydmlld107Ci0gICAgICAg
ICAgICAgICAgQVNTRVJUKHN1cGVydmlldyk7Ci0gICAgICAgICAgICAgICAgaWYgKFtzdXBlcnZp
ZXcgaXNLaW5kT2ZDbGFzczpbTlNDb250cm9sIGNsYXNzXV0pIHsKLSAgICAgICAgICAgICAgICAg
ICAgTlNDb250cm9sICpjb250cm9sID0gc3RhdGljX2Nhc3Q8TlNDb250cm9sKj4oc3VwZXJ2aWV3
KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFtjb250cm9sIGN1cnJlbnRFZGl0b3JdID09IHZp
ZXcpCi0gICAgICAgICAgICAgICAgICAgICAgICB2aWV3ID0gc3VwZXJ2aWV3OwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICB9IGVsc2UgeworICAgIGlmIChbbV9mcmFtZS0+YnJpZGdlKCkgZmlyc3RSZXNw
b25kZXJdICE9IHZpZXcpIHsKICAgICAgICAgLy8gTm9ybWFsbHkgW05TV2luZG93IHNlbmRFdmVu
dDpdIGhhbmRsZXMgc2V0dGluZyB0aGUgZmlyc3QgcmVzcG9uZGVyLgogICAgICAgICAvLyBCdXQg
aW4gb3VyIGNhc2UsIHRoZSBldmVudCB3YXMgc2VudCB0byB0aGUgdmlldyByZXByZXNlbnRpbmcg
dGhlIGVudGlyZSB3ZWIgcGFnZS4KLSAgICAgICAgaWYgKFtjdXJyZW50RXZlbnQoKS5nZXQoKSBj
bGlja0NvdW50XSA8PSAxICYmIFt2aWV3IGFjY2VwdHNGaXJzdFJlc3BvbmRlcl0gJiYgW3ZpZXcg
bmVlZHNQYW5lbFRvQmVjb21lS2V5XSkgeworICAgICAgICBpZiAoW2N1cnJlbnRFdmVudCgpLmdl
dCgpIGNsaWNrQ291bnRdIDw9IDEgJiYgW3ZpZXcgYWNjZXB0c0ZpcnN0UmVzcG9uZGVyXSAmJiBb
dmlldyBuZWVkc1BhbmVsVG9CZWNvbWVLZXldKQogICAgICAgICAgICAgW21fZnJhbWUtPmJyaWRn
ZSgpIG1ha2VGaXJzdFJlc3BvbmRlcjp2aWV3XTsKLSAgICAgICAgfQogICAgIH0KIAogICAgIC8v
IFdlIG5lZWQgdG8gImRlZmVyIGxvYWRpbmciIHdoaWxlIHRyYWNraW5nIHRoZSBtb3VzZSwgYmVj
YXVzZSB0ZWFyaW5nIGRvd24gdGhlCkluZGV4OiBXZWJDb3JlL3BhZ2UvbWFjL1dlYkNvcmVGcmFt
ZUJyaWRnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9tYWMvV2ViQ29yZUZyYW1lQnJp
ZGdlLmgJKHJldmlzaW9uIDI4Njg3KQorKysgV2ViQ29yZS9wYWdlL21hYy9XZWJDb3JlRnJhbWVC
cmlkZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDggKzEwMyw2IEBAIGVudW0gV2ViU2Nyb2xs
R3JhbnVsYXJpdHkgewogLSAoaWQpaW5pdDsKIC0gKHZvaWQpY2xvc2U7CiAKLS0gKHZvaWQpYWRk
RGF0YTooTlNEYXRhICopZGF0YTsKLQogLSAodm9pZCljbGVhckZyYW1lOwogCiAtIChOU1VSTCAq
KWJhc2VVUkw7CkBAIC0xMjAsNyArMTE4LDYgQEAgZW51bSBXZWJTY3JvbGxHcmFudWxhcml0eSB7
CiAtICh2b2lkKWZvcmNlTGF5b3V0V2l0aE1pbmltdW1QYWdlV2lkdGg6KGZsb2F0KW1pblBhZ2VX
aWR0aCBtYXhpbXVtUGFnZVdpZHRoOihmbG9hdCltYXhQYWdlV2lkdGggYWRqdXN0aW5nVmlld1Np
emU6KEJPT0wpYWRqdXN0U2l6ZUZsYWc7CiAtICh2b2lkKXNlbmRTY3JvbGxFdmVudDsKIC0gKEJP
T0wpbmVlZHNMYXlvdXQ7Ci0tICh2b2lkKXNldE5lZWRzTGF5b3V0OwogLSAodm9pZClkcmF3UmVj
dDooTlNSZWN0KXJlY3Q7CiAtICh2b2lkKWFkanVzdFBhZ2VIZWlnaHROZXc6KGZsb2F0ICopbmV3
Qm90dG9tIHRvcDooZmxvYXQpb2xkVG9wIGJvdHRvbTooZmxvYXQpb2xkQm90dG9tIGxpbWl0Oihm
bG9hdClib3R0b21MaW1pdDsKIC0gKE5TQXJyYXkqKWNvbXB1dGVQYWdlUmVjdHNXaXRoUHJpbnRX
aWR0aFNjYWxlRmFjdG9yOihmbG9hdClwcmludFdpZHRoU2NhbGVGYWN0b3IgcHJpbnRIZWlnaHQ6
KGZsb2F0KXByaW50SGVpZ2h0OwpAQCAtMTYzLDE3ICsxNjAsMTMgQEAgZW51bSBXZWJTY3JvbGxH
cmFudWxhcml0eSB7CiAtIChOU1JlY3QpZmlyc3RSZWN0Rm9yRE9NUmFuZ2U6KERPTVJhbmdlICop
cmFuZ2U7CiAtICh2b2lkKXNjcm9sbERPTVJhbmdlVG9WaXNpYmxlOihET01SYW5nZSAqKXJhbmdl
OwogCi0vLyBFbWFjcy1zdHlsZS1lZGl0aW5nICJtYXJrIgotLSAoRE9NUmFuZ2UgKiltYXJrRE9N
UmFuZ2U7Ci0KIC0gKE5TRm9udCAqKWZvbnRGb3JTZWxlY3Rpb246KEJPT0wgKiloYXNNdWx0aXBs
ZUZvbnRzOwogLSAoTlNXcml0aW5nRGlyZWN0aW9uKWJhc2VXcml0aW5nRGlyZWN0aW9uRm9yU2Vs
ZWN0aW9uU3RhcnQ7CiAKIC0gKE5TU3RyaW5nICopc3RyaW5nV2l0aERhdGE6KE5TRGF0YSAqKWRh
dGE7IC8vIHVzaW5nIHRoZSBlbmNvZGluZyBvZiB0aGUgZnJhbWUncyBtYWluIHJlc291cmNlCiAr
IChOU1N0cmluZyAqKXN0cmluZ1dpdGhEYXRhOihOU0RhdGEgKilkYXRhIHRleHRFbmNvZGluZ05h
bWU6KE5TU3RyaW5nICopdGV4dEVuY29kaW5nTmFtZTsgLy8gbmlsIGZvciB0ZXh0RW5jb2RpbmdO
YW1lIG1lYW5zIExhdGluLTEKIAotLSAodm9pZClzZXRTaG91bGRDcmVhdGVSZW5kZXJlcnM6KEJP
T0wpZjsKLS0gKEJPT0wpc2hvdWxkQ3JlYXRlUmVuZGVyZXJzOworLSAodm9pZClzZXRTaG91bGRD
cmVhdGVSZW5kZXJlcnM6KEJPT0wpc2hvdWxkQ3JlYXRlUmVuZGVyZXJzOwogCiAtICh2b2lkKXNl
dEJhc2VCYWNrZ3JvdW5kQ29sb3I6KE5TQ29sb3IgKiliYWNrZ3JvdW5kQ29sb3I7CiAtICh2b2lk
KXNldERyYXdzQmFja2dyb3VuZDooQk9PTClkcmF3c0JhY2tyb3VuZDsKQEAgLTE4MywxMCArMTc2
LDcgQEAgZW51bSBXZWJTY3JvbGxHcmFudWxhcml0eSB7CiAtIChpZClhY2Nlc3NpYmlsaXR5VHJl
ZTsKIAogLSAoRE9NUmFuZ2UgKilyYW5nZUJ5QWx0ZXJpbmdDdXJyZW50U2VsZWN0aW9uOihXZWJD
b3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjpFQWx0ZXJhdGlvbilhbHRlcmF0aW9uIGRpcmVjdGlv
bjooV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6RURpcmVjdGlvbilkaXJlY3Rpb24gZ3Jh
bnVsYXJpdHk6KFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSlncmFudWxhcml0eTsKLS0gKHZvaWQp
YWx0ZXJDdXJyZW50U2VsZWN0aW9uOihXZWJDb3JlOjpTZWxlY3Rpb25Db250cm9sbGVyOjpFQWx0
ZXJhdGlvbilhbHRlcmF0aW9uIHZlcnRpY2FsRGlzdGFuY2U6KGZsb2F0KWRpc3RhbmNlOwogLSAo
V2ViQ29yZTo6VGV4dEdyYW51bGFyaXR5KXNlbGVjdGlvbkdyYW51bGFyaXR5OwotLSAoRE9NUmFu
Z2UgKilzbWFydERlbGV0ZVJhbmdlRm9yUHJvcG9zZWRSYW5nZTooRE9NUmFuZ2UgKilwcm9wb3Nl
ZENoYXJSYW5nZTsKLS0gKHZvaWQpc21hcnRJbnNlcnRGb3JTdHJpbmc6KE5TU3RyaW5nICopcGFz
dGVTdHJpbmcgcmVwbGFjaW5nUmFuZ2U6KERPTVJhbmdlICopY2hhclJhbmdlVG9SZXBsYWNlIGJl
Zm9yZVN0cmluZzooTlNTdHJpbmcgKiopYmVmb3JlU3RyaW5nIGFmdGVyU3RyaW5nOihOU1N0cmlu
ZyAqKilhZnRlclN0cmluZzsKIC0gKHZvaWQpc2VsZWN0TlNSYW5nZTooTlNSYW5nZSlyYW5nZTsK
IC0gKE5TUmFuZ2Upc2VsZWN0ZWROU1JhbmdlOwogLSAoTlNSYW5nZSltYXJrZWRUZXh0TlNSYW5n
ZTsKQEAgLTIwNCwxMCArMTk0LDYgQEAgZW51bSBXZWJTY3JvbGxHcmFudWxhcml0eSB7CiAKIC0g
KHZvaWQpaW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50OwogCi0tICh2b2lk
KXNldFNlbGVjdGlvblRvRHJhZ0NhcmV0OwotLSAodm9pZCltb3ZlU2VsZWN0aW9uVG9EcmFnQ2Fy
ZXQ6KERPTURvY3VtZW50RnJhZ21lbnQgKilzZWxlY3Rpb25GcmFnbWVudCBzbWFydE1vdmU6KEJP
T0wpc21hcnRNb3ZlOwotLSAoRE9NUmFuZ2UgKilkcmFnQ2FyZXRET01SYW5nZTsKLS0gKEJPT0wp
aXNEcmFnQ2FyZXRSaWNobHlFZGl0YWJsZTsKIC0gKERPTVJhbmdlICopY2hhcmFjdGVyUmFuZ2VB
dFBvaW50OihOU1BvaW50KXBvaW50OwogCiAtIChET01DU1NTdHlsZURlY2xhcmF0aW9uICopdHlw
aW5nU3R5bGU7CkBAIC0yMzAsNDYgKzIxNiwyMSBAQCBlbnVtIFdlYlNjcm9sbEdyYW51bGFyaXR5
IHsKIAogQHByb3RvY29sIFdlYkNvcmVGcmFtZUJyaWRnZQogCi0tIChOU1ZpZXcgKilkb2N1bWVu
dFZpZXc7Ci0KLS0gKFdlYkNvcmU6OkZyYW1lKiljcmVhdGVDaGlsZEZyYW1lTmFtZWQ6KE5TU3Ry
aW5nICopZnJhbWVOYW1lIHdpdGhVUkw6KE5TVVJMICopVVJMIHJlZmVycmVyOihjb25zdCBXZWJD
b3JlOjpTdHJpbmcmKXJlZmVycmVyCi0gICAgb3duZXJFbGVtZW50OihXZWJDb3JlOjpIVE1MRnJh
bWVPd25lckVsZW1lbnQgKilvd25lckVsZW1lbnQgYWxsb3dzU2Nyb2xsaW5nOihCT09MKWFsbG93
c1Njcm9sbGluZyBtYXJnaW5XaWR0aDooaW50KXdpZHRoIG1hcmdpbkhlaWdodDooaW50KWhlaWdo
dDsKLQogLSAoTlNXaW5kb3cgKil3aW5kb3c7CiAKIC0gKE5TUmVzcG9uZGVyICopZmlyc3RSZXNw
b25kZXI7CiAtICh2b2lkKW1ha2VGaXJzdFJlc3BvbmRlcjooTlNSZXNwb25kZXIgKilyZXNwb25k
ZXI7Ci0tICh2b2lkKXdpbGxNYWtlRmlyc3RSZXNwb25kZXJGb3JOb2RlRm9jdXM7Ci0KLS0gKEJP
T0wpdGV4dFZpZXdXYXNGaXJzdFJlc3BvbmRlckF0TW91c2VEb3duVGltZTooTlNUZXh0VmlldyAq
KXRleHRWaWV3OwogCiAtICh2b2lkKXJ1bk9wZW5QYW5lbEZvckZpbGVCdXR0b25XaXRoUmVzdWx0
TGlzdGVuZXI6KGlkIDxXZWJDb3JlT3BlblBhbmVsUmVzdWx0TGlzdGVuZXI+KXJlc3VsdExpc3Rl
bmVyOwogCi0tIChOU1ZpZXcgKil2aWV3Rm9yUGx1Z2luV2l0aEZyYW1lOihOU1JlY3QpZnJhbWUK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVUkw6KE5TVVJMICopVVJMCi0gICAgICAg
ICAgICAgICAgICAgIGF0dHJpYnV0ZU5hbWVzOihOU0FycmF5ICopYXR0cmlidXRlTmFtZXMKLSAg
ICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVWYWx1ZXM6KE5TQXJyYXkgKilhdHRyaWJ1dGVWYWx1
ZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5
cGUKLSAgICAgICAgICAgICAgICAgICAgICAgIERPTUVsZW1lbnQ6KERPTUVsZW1lbnQgKillbGVt
ZW50Ci0gICAgICAgICAgICAgICAgICAgICAgbG9hZE1hbnVhbGx5OihCT09MKWxvYWRNYW51YWxs
eTsKLS0gKE5TVmlldyAqKXZpZXdGb3JKYXZhQXBwbGV0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUK
LSAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZU5hbWVzOihOU0FycmF5ICopYXR0cmli
dXRlTmFtZXMKLSAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlVmFsdWVzOihOU0FycmF5
ICopYXR0cmlidXRlVmFsdWVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZVVS
TDooTlNVUkwgKiliYXNlVVJMCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRE9NRWxlbWVu
dDooRE9NRWxlbWVudCAqKWVsZW1lbnQ7Ci0tICh2b2lkKXJlZGlyZWN0RGF0YVRvUGx1Z2luOihO
U1ZpZXcgKilwbHVnaW5WaWV3OwotCi0tIChXZWJDb3JlOjpPYmplY3RDb250ZW50VHlwZSlkZXRl
cm1pbmVPYmplY3RGcm9tTUlNRVR5cGU6KE5TU3RyaW5nKilNSU1FVHlwZSBVUkw6KE5TVVJMKilV
Ukw7Ci0KIC0gKGpvYmplY3QpZ2V0QXBwbGV0SW5WaWV3OihOU1ZpZXcgKil2aWV3OwogCiAvLyBE
ZXByZWNhdGVkLCB1c2UgZ2V0QXBwbGV0SW5WaWV3OiBpbnN0ZWFkLgogLSAoam9iamVjdClwb2xs
Rm9yQXBwbGV0SW5WaWV3OihOU1ZpZXcgKil2aWV3OwogCiAtICh2b2lkKWlzc3VlUGFzdGVDb21t
YW5kOwotLSAodm9pZClzZXRJc1NlbGVjdGVkOihCT09MKWlzU2VsZWN0ZWQgZm9yVmlldzooTlNW
aWV3ICopdmlldzsKIAotLSAodm9pZCl3aW5kb3dPYmplY3RDbGVhcmVkOworLSAodm9pZClzZXRJ
c1NlbGVjdGVkOihCT09MKWlzU2VsZWN0ZWQgZm9yVmlldzooTlNWaWV3ICopdmlldzsKIAogLSAo
dm9pZClkYXNoYm9hcmRSZWdpb25zQ2hhbmdlZDooTlNNdXRhYmxlRGljdGlvbmFyeSAqKXJlZ2lv
bnM7CiAtICh2b2lkKXdpbGxQb3B1cE1lbnU6KE5TTWVudSAqKW1lbnU7CkluZGV4OiBXZWJDb3Jl
L3BhZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bh
Z2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5tbQkocmV2aXNpb24gMjg2ODcpCisrKyBXZWJDb3Jl
L3BhZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjkxLDcg
KzI5MSw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViQ29yZUZyYW1lQnJpZGdlICpicmlkZ2UKICAgICAv
LyBjaGFuZ2luZyBhbm90aGVyJ3MgbG9jYXRpb24gYmVmb3JlIHRoZSBmcmFtZSdzIGRvY3VtZW50
CiAgICAgLy8gaGFzIGJlZW4gY3JlYXRlZC4gCiAgICAgaWYgKGRvYykgewotICAgICAgICBkb2Mt
PnNldFNob3VsZENyZWF0ZVJlbmRlcmVycyhbc2VsZiBzaG91bGRDcmVhdGVSZW5kZXJlcnNdKTsK
KyAgICAgICAgZG9jLT5zZXRTaG91bGRDcmVhdGVSZW5kZXJlcnMoX3Nob3VsZENyZWF0ZVJlbmRl
cmVycyk7CiAgICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT5hZGREYXRhKChjb25zdCBjaGFyICop
W2RhdGEgYnl0ZXNdLCBbZGF0YSBsZW5ndGhdKTsKICAgICB9CiB9CkBAIC03NzQsMTIgKzc3NCw2
IEBAIHN0YXRpYyBIVE1MRm9ybUVsZW1lbnQgKmZvcm1FbGVtZW50RnJvbUQKICAgICByZXR1cm4g
bV9mcmFtZS0+dmlldygpID8gbV9mcmFtZS0+dmlldygpLT5uZWVkc0xheW91dCgpIDogZmFsc2U7
CiB9CiAKLS0gKHZvaWQpc2V0TmVlZHNMYXlvdXQKLXsKLSAgICBpZiAobV9mcmFtZS0+dmlldygp
KQotICAgICAgICBtX2ZyYW1lLT52aWV3KCktPnNldE5lZWRzTGF5b3V0KCk7Ci19Ci0KIC0gKE5T
U3RyaW5nICopcmVuZGVyVHJlZUFzRXh0ZXJuYWxSZXByZXNlbnRhdGlvbgogewogICAgIHJldHVy
biBleHRlcm5hbFJlcHJlc2VudGF0aW9uKG1fZnJhbWUtPnJlbmRlcmVyKCkpLmdldE5TU3RyaW5n
KCk7CkBAIC03OTAsMTEgKzc4NCw2IEBAIHN0YXRpYyBIVE1MRm9ybUVsZW1lbnQgKmZvcm1FbGVt
ZW50RnJvbUQKICAgICBfc2hvdWxkQ3JlYXRlUmVuZGVyZXJzID0gZjsKIH0KIAotLSAoQk9PTClz
aG91bGRDcmVhdGVSZW5kZXJlcnMKLXsKLSAgICByZXR1cm4gX3Nob3VsZENyZWF0ZVJlbmRlcmVy
czsKLX0KLQogLSAoTlNDb2xvciAqKXNlbGVjdGlvbkNvbG9yCiB7CiAgICAgcmV0dXJuIG1fZnJh
bWUtPmlzQWN0aXZlKCkgPyBbTlNDb2xvciBzZWxlY3RlZFRleHRCYWNrZ3JvdW5kQ29sb3JdIDog
W05TQ29sb3Igc2Vjb25kYXJ5U2VsZWN0ZWRDb250cm9sQ29sb3JdOwpAQCAtODMwLDI0ICs4MTks
MTQgQEAgc3RhdGljIEhUTUxGb3JtRWxlbWVudCAqZm9ybUVsZW1lbnRGcm9tRAogICAgIGlmICht
X2ZyYW1lLT5zZWxlY3Rpb25Db250cm9sbGVyKCktPmlzTm9uZSgpKQogICAgICAgICByZXR1cm4g
bmlsOwogCi0gICAgLy8gTk9URTogVGhlIGVudW1zICptdXN0KiBtYXRjaCB0aGUgdmVyeSBzaW1p
bGFyIG9uZXMgZGVjbGFyZWQgaW4gU2VsZWN0aW9uQ29udHJvbGxlci5oCiAgICAgU2VsZWN0aW9u
Q29udHJvbGxlciBzZWxlY3Rpb25Db250cm9sbGVyOwogICAgIHNlbGVjdGlvbkNvbnRyb2xsZXIu
c2V0U2VsZWN0aW9uKG1fZnJhbWUtPnNlbGVjdGlvbkNvbnRyb2xsZXIoKS0+c2VsZWN0aW9uKCkp
OwogICAgIHNlbGVjdGlvbkNvbnRyb2xsZXIubW9kaWZ5KGFsdGVyYXRpb24sIGRpcmVjdGlvbiwg
Z3JhbnVsYXJpdHkpOwogICAgIHJldHVybiBbRE9NUmFuZ2UgX3dyYXBSYW5nZTpzZWxlY3Rpb25D
b250cm9sbGVyLnRvUmFuZ2UoKS5nZXQoKV07CiB9CiAKLS0gKHZvaWQpYWx0ZXJDdXJyZW50U2Vs
ZWN0aW9uOihTZWxlY3Rpb25Db250cm9sbGVyOjpFQWx0ZXJhdGlvbilhbHRlcmF0aW9uIHZlcnRp
Y2FsRGlzdGFuY2U6KGZsb2F0KXZlcnRpY2FsRGlzdGFuY2UKLXsKLSAgICBpZiAobV9mcmFtZS0+
c2VsZWN0aW9uQ29udHJvbGxlcigpLT5pc05vbmUoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIFNl
bGVjdGlvbkNvbnRyb2xsZXIqIHNlbGVjdGlvbkNvbnRyb2xsZXIgPSBtX2ZyYW1lLT5zZWxlY3Rp
b25Db250cm9sbGVyKCk7Ci0gICAgc2VsZWN0aW9uQ29udHJvbGxlci0+bW9kaWZ5KGFsdGVyYXRp
b24sIHN0YXRpY19jYXN0PGludD4odmVydGljYWxEaXN0YW5jZSksIHRydWUpOwotfQotCiAtIChU
ZXh0R3JhbnVsYXJpdHkpc2VsZWN0aW9uR3JhbnVsYXJpdHkKIHsKLSAgICAvLyBOT1RFOiBUaGUg
ZW51bXMgKm11c3QqIG1hdGNoIHRoZSB2ZXJ5IHNpbWlsYXIgb25lcyBkZWNsYXJlZCBpbiBTZWxl
Y3Rpb25Db250cm9sbGVyLmgKICAgICByZXR1cm4gbV9mcmFtZS0+c2VsZWN0aW9uR3JhbnVsYXJp
dHkoKTsKIH0KIApAQCAtMTA4NiwxNiArMTA2NSw2IEBAIHN0YXRpYyBIVE1MRm9ybUVsZW1lbnQg
KmZvcm1FbGVtZW50RnJvbUQKICAgICBtX2ZyYW1lLT5yZXZlYWxTZWxlY3Rpb24oUmVuZGVyTGF5
ZXI6OmdBbGlnblRvRWRnZUlmTmVlZGVkKTsKIH0KIAotLSAodm9pZClzZXRTZWxlY3Rpb25Ub0Ry
YWdDYXJldAotewotICAgIG1fZnJhbWUtPnNlbGVjdGlvbkNvbnRyb2xsZXIoKS0+c2V0U2VsZWN0
aW9uKG1fZnJhbWUtPmRyYWdDYXJldENvbnRyb2xsZXIoKS0+c2VsZWN0aW9uKCkpOwotfQotCi0t
ICh2b2lkKW1vdmVTZWxlY3Rpb25Ub0RyYWdDYXJldDooRE9NRG9jdW1lbnRGcmFnbWVudCAqKXNl
bGVjdGlvbkZyYWdtZW50IHNtYXJ0TW92ZTooQk9PTClzbWFydE1vdmUKLXsKLSAgICBhcHBseUNv
bW1hbmQobmV3IE1vdmVTZWxlY3Rpb25Db21tYW5kKFtzZWxlY3Rpb25GcmFnbWVudCBfZG9jdW1l
bnRGcmFnbWVudF0sIG1fZnJhbWUtPmRyYWdDYXJldENvbnRyb2xsZXIoKS0+YmFzZSgpLCBzbWFy
dE1vdmUpKTsKLX0KLQogLSAoVmlzaWJsZVBvc2l0aW9uKV92aXNpYmxlUG9zaXRpb25Gb3JQb2lu
dDooTlNQb2ludClwb2ludAogewogICAgIEludFBvaW50IG91dGVyUG9pbnQocG9pbnQpOwpAQCAt
MTExMiwxNiArMTA4MSw2IEBAIHN0YXRpYyBIVE1MRm9ybUVsZW1lbnQgKmZvcm1FbGVtZW50RnJv
bUQKICAgICByZXR1cm4gdmlzaWJsZVBvczsKIH0KIAotLSAoRE9NUmFuZ2UgKilkcmFnQ2FyZXRE
T01SYW5nZQotewotICAgIHJldHVybiBbRE9NUmFuZ2UgX3dyYXBSYW5nZTptX2ZyYW1lLT5kcmFn
Q2FyZXRDb250cm9sbGVyKCktPnRvUmFuZ2UoKS5nZXQoKV07Ci19Ci0KLS0gKEJPT0wpaXNEcmFn
Q2FyZXRSaWNobHlFZGl0YWJsZQotewotICAgIHJldHVybiBtX2ZyYW1lLT5kcmFnQ2FyZXRDb250
cm9sbGVyKCktPmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCk7Ci19Ci0KIC0gKERPTVJhbmdlICop
Y2hhcmFjdGVyUmFuZ2VBdFBvaW50OihOU1BvaW50KXBvaW50CiB7CiAgICAgVmlzaWJsZVBvc2l0
aW9uIHBvc2l0aW9uID0gW3NlbGYgX3Zpc2libGVQb3NpdGlvbkZvclBvaW50OnBvaW50XTsKSW5k
ZXg6IFdlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L0NoYW5nZUxvZwkocmV2
aXNpb24gMjg2ODcpCisrKyBXZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDgg
KzEsMTIgQEAKKzIwMDctMTItMTMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisg
ICAgICAgICogU3RyaW5nc05vdFRvQmVMb2NhbGl6ZWQudHh0OiBVcGRhdGVkLgorCiAyMDA3LTEy
LTEyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBTYW0gV2VpbmlnCiAKLSAgICAgICAgICAgICAgICBGaXggZm9yIDxyZGFyOi8vcHJvYmxl
bS80ODg2ODQ0PiBhbmQgbGF5IGdyb3VuZHdvcmsgZm9yIDxyZGFyOi8vcHJvYmxlbS80NTE2MTcw
PiAoQmFjay9Gb3J3YXJkIENhY2hlIG9uIFdpbmRvd3MpCisgICAgICAgIEZpeCBmb3IgPHJkYXI6
Ly9wcm9ibGVtLzQ4ODY4NDQ+IGFuZCBsYXkgZ3JvdW5kd29yayBmb3IgPHJkYXI6Ly9wcm9ibGVt
LzQ1MTYxNzA+IChCYWNrL0ZvcndhcmQgQ2FjaGUgb24gV2luZG93cykKIAogICAgICAgICAqIFdl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZCBhIG5ldyBmaWxlCiAKSW5kZXg6
IFdlYktpdC9TdHJpbmdzTm90VG9CZUxvY2FsaXplZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L1N0cmluZ3NOb3RUb0JlTG9jYWxpemVkLnR4dAkocmV2aXNpb24gMjg2ODcpCisrKyBXZWJLaXQv
U3RyaW5nc05vdFRvQmVMb2NhbGl6ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01LDggKzUsOCBA
QAogIiAqUE9TVCoiCiAiICp0YXJnZXQqIgogIiA+Pj4iCi0iIE1hYyBPUyBYOyAlQCkgQXBwbGVX
ZWJLaXQvJUAgKEtIVE1MLCBsaWtlIEdlY2tvKSAlQCIKLSIgTWFjIE9TIFg7ICVAKSBBcHBsZVdl
YktpdC8lQCAoS0hUTUwsIGxpa2UgR2Vja28pIgorIiBNYWMgT1MgWCAlQDsgJUApIEFwcGxlV2Vi
S2l0LyVAIChLSFRNTCwgbGlrZSBHZWNrbykgJUAiCisiIE1hYyBPUyBYICVAOyAlQCkgQXBwbGVX
ZWJLaXQvJUAgKEtIVE1MLCBsaWtlIEdlY2tvKSIKICIgd2ViVmlld0RyYXdSZXNpemVyIGRlbGVn
YXRlIGNhbGwiCiAiIyIKICIlIgpAQCAtMzEsNiArMzEsOCBAQAogIiVAOi8vJUAvJUAiCiAiJUA6
Ly8lQDolZCIKICIlZCIKKyIlZF8lZCIKKyIlZF8lZF8lZCIKICIlZHB4IgogIiVsZCIKICImaWU9
VVRGLTgmb2U9VVRGLTgiCkBAIC02Nyw2ICs2OSw3IEBACiAiNDE5IgogIjQyMCsiCiAiNDIyIgor
IjUyNDI4ODAiCiAiNUNBQ0Q2MzctRjgyRi00OTFGLTk0N0EtNURDQTM4QUEwRkVBIgogIjZFQjhE
OThGLTI3MjMtNDQ3Mi04OEQzLTU5MzZGOUQ2RTYzMSIKICI3IgpAQCAtMTAwLDcgKzEwMyw2IEBA
CiAiQkVHSU46VkNBUkQiCiAiQlBfQ3JlYXRlUGx1Z2luTUlNRVR5cGVzUHJlZmVyZW5jZXMiCiAi
QmFja3dhcmREZWxldGUiCi0iQ0ZOZXR3b3JrIgogIkNTUyIKICJDYWNoZS1Db250cm9sIgogIkNv
bnRlbnQtRW5jb2RpbmciCkBAIC0xMzYsNyArMTM4LDYgQEAKICJJbW1TZXRPcGVuU3RhdHVzIgog
IkluY2x1ZGVEZWJ1Z01lbnUiCiAiSW5zZXJ0QmFja3RhYiIKLSJJbnNlcnRMaW5lQnJlYWsiCiAi
SW5zZXJ0TmV3bGluZSIKICJJbnNlcnRUYWIiCiAiSW50ZWwiCkBAIC0xNDksOSArMTUwLDEyIEBA
CiAiTUlNRVxcRGF0YWJhc2VcXENvbnRlbnQgVHlwZSIKICJNb3ZlRG93biIKICJNb3ZlRG93bkFu
ZE1vZGlmeVNlbGVjdGlvbiIKLSJNb3ZlRG93bkJ5UGFnZUFuZE1vZGlmeUNhcmV0IgogIk1vdmVM
ZWZ0IgogIk1vdmVMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uIgorIk1vdmVQYWdlRG93biIKKyJNb3Zl
UGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iCisiTW92ZVBhZ2VVcCIKKyJNb3ZlUGFnZVVwQW5k
TW9kaWZ5U2VsZWN0aW9uIgogIk1vdmVSaWdodCIKICJNb3ZlUmlnaHRBbmRNb2RpZnlTZWxlY3Rp
b24iCiAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCIKQEAgLTE2NCw3ICsxNjgsNiBAQAogIk1v
dmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiIKICJNb3ZlVXAiCiAiTW92ZVVwQW5kTW9k
aWZ5U2VsZWN0aW9uIgotIk1vdmVVcEJ5UGFnZUFuZE1vZGlmeUNhcmV0IgogIk1vdmVXb3JkTGVm
dCIKICJNb3ZlV29yZExlZnRBbmRNb2RpZnlTZWxlY3Rpb24iCiAiTW92ZVdvcmRSaWdodCIKQEAg
LTE5NSw3ICsxOTgsNiBAQAogIlJlZmVyZXIiCiAiU0FNSUxhbmciCiAiU0FNSVN0eWxlIgotIlNU
SW5pdGlhbGl6ZSIKICJTYWZhcmkuZXhlIgogIlNhZmFyaS80MTkuMyIKICJUaW1lcyIKQEAgLTUz
MSwxNiArNTMzLDE0IEBAIFdlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbToiYmxhY2sK
IFdlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbToiYm9keSIKIFdlYktpdC9tYWMvV2Vi
Vmlldy9XZWJIVE1MVmlldy5tbToiYm9sZCIKIFdlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmll
dy5tbToiY2VudGVyIgorV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOiJkaXJlY3Rp
b24iCiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW06ImZvbnQiCiBXZWJLaXQvbWFj
L1dlYlZpZXcvV2ViSFRNTFZpZXcubW06ImhlYWQiCiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRN
TFZpZXcubW06Iml0YWxpYyIKLVdlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbToianVz
dGlmeSIKLVdlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbToibGVmdCIKIFdlYktpdC9t
YWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbToibWVudSIKIFdlYktpdC9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbToibm9uZSIKIFdlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbToibm9y
bWFsIgogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOiJvYmplY3QiCi1XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW06InJpZ2h0IgogV2ViS2l0L21hYy9XZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tOiJzdHJpa2UiCiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW06
InN0eWxlIgogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOiJzdXBlciIKSW5kZXg6
IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODY4NykKKysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMDctMTItMTMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRp
dG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KTogQ2hhbmdlZCB0byB1c2UgRWRpdG9yOjpj
b21tYW5kCisgICAgICAgIGluc3RlYWQgb2YgRWRpdG9yOjpleGVjQ29tbWFuZC4KKyAgICAgICAg
KiBXZWJWaWV3L3dlYmtpdHdlYnZpZXcuY3BwOiBEaXR0by4KKwogMjAwNy0xMi0xMiAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdl
aW5pZwpJbmRleDogV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3Rr
LmNwcAkocmV2aXNpb24gMjg2ODcpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MSwzMyArMjcxLDMzIEBAIHZvaWQg
RWRpdG9yQ2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KEsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHRydWUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19Q
UklPUjogIC8vIFBhZ2VVcAotICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZXhlY0Nv
bW1hbmQoIk1vdmVVcEJ5UGFnZUFuZE1vZGlmeUNhcmV0Iik7CisgICAgICAgICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlUGFnZVVwIikuZXhlY3V0ZSgpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19ORVhUOiAgLy8gUGFnZURvd24KLSAg
ICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmV4ZWNDb21tYW5kKCJNb3ZlRG93bkJ5UGFn
ZUFuZE1vZGlmeUNhcmV0Iik7CisgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21t
YW5kKCJNb3ZlUGFnZURvd24iKS5leGVjdXRlKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIFZLX0hPTUU6CiAgICAgICAgICAgICAgICAgaWYgKGtldmVudC0+Y3Ry
bEtleSgpICYmIGtldmVudC0+c2hpZnRLZXkoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUt
PmVkaXRvcigpLT5leGVjQ29tbWFuZCgiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudEFuZE1vZGlm
eVNlbGVjdGlvbiIpOworICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1h
bmQoIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24iKS5leGVjdXRl
KCk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoa2V2ZW50LT5jdHJsS2V5KCkpCi0gICAgICAg
ICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZXhlY0NvbW1hbmQoIk1vdmVUb0JlZ2lubmlu
Z09mRG9jdW1lbnQiKTsKKyAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21t
YW5kKCJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50IikuZXhlY3V0ZSgpOwogICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKGtldmVudC0+c2hpZnRLZXkoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLT5leGVjQ29tbWFuZCgiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5
U2VsZWN0aW9uIik7CisgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFu
ZCgiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIikuZXhlY3V0ZSgpOwog
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigp
LT5leGVjQ29tbWFuZCgiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIik7CisgICAgICAgICAgICAgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIikuZXhl
Y3V0ZSgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19FTkQ6
CiAgICAgICAgICAgICAgICAgaWYgKGtldmVudC0+Y3RybEtleSgpICYmIGtldmVudC0+c2hpZnRL
ZXkoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5leGVjQ29tbWFuZCgi
TW92ZVRvRW5kT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlvbiIpOworICAgICAgICAgICAgICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVUb0VuZE9mRG9jdW1lbnRBbmRNb2Rp
ZnlTZWxlY3Rpb24iKS5leGVjdXRlKCk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoa2V2ZW50
LT5jdHJsS2V5KCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZXhlY0Nv
bW1hbmQoIk1vdmVUb0VuZE9mRG9jdW1lbnQiKTsKKyAgICAgICAgICAgICAgICAgICAgZnJhbWUt
PmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVG9FbmRPZkRvY3VtZW50IikuZXhlY3V0ZSgpOwogICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKGtldmVudC0+c2hpZnRLZXkoKSkKLSAgICAgICAgICAgICAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5leGVjQ29tbWFuZCgiTW92ZVRvRW5kT2ZMaW5lQW5kTW9k
aWZ5U2VsZWN0aW9uIik7CisgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29t
bWFuZCgiTW92ZVRvRW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIikuZXhlY3V0ZSgpOwogICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5l
eGVjQ29tbWFuZCgiTW92ZVRvRW5kT2ZMaW5lIik7CisgICAgICAgICAgICAgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVRvRW5kT2ZMaW5lIikuZXhlY3V0ZSgpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19SRVRVUk46Ci0gICAgICAgICAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5leGVjQ29tbWFuZCgiSW5zZXJ0TGluZUJyZWFrIik7Cisg
ICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJJbnNlcnRMaW5lQnJlYWsi
KS5leGVjdXRlKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFZL
X1RBQjoKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0zMTMsMTYgKzMxMywxNiBAQCB2b2lk
IEVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLCiAgICAgICAgICAgICAgICAgfSBl
bHNlIGlmIChrZXZlbnQtPmN0cmxLZXkoKSkgewogICAgICAgICAgICAgICAgICAgICBzd2l0Y2gg
KGtldmVudC0+d2luZG93c1ZpcnR1YWxLZXlDb2RlKCkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgVktfQjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmV4ZWNDb21tYW5kKCJUb2dnbGVCb2xkIik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJUb2dnbGVCb2xkIikuZXhlY3V0ZSgpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBWS19JOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+
ZXhlY0NvbW1hbmQoIlRvZ2dsZUl0YWxpYyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiVG9nZ2xlSXRhbGljIikuZXhlY3V0ZSgpOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBWS19ZOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+
ZXhlY0NvbW1hbmQoIlJlZG8iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPmNvbW1hbmQoIlJlZG8iKS5leGVjdXRlKCk7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFZLX1o6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5leGVjQ29tbWFuZCgiVW5k
byIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFu
ZCgiVW5kbyIpLmV4ZWN1dGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMzMyLDI0ICszMzIsMjQgQEAgdm9pZCBFZGl0b3JDbGllbnQ6Omhh
bmRsZUtleWJvYXJkRXZlbnQoSwogICAgIH0gZWxzZSB7CiAgICAgICAgIHN3aXRjaCAoa2V2ZW50
LT53aW5kb3dzVmlydHVhbEtleUNvZGUoKSkgewogICAgICAgICAgICAgY2FzZSBWS19VUDoKLSAg
ICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmV4ZWNDb21tYW5kKCJNb3ZlVXAiKTsKKyAg
ICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVVcCIpLmV4ZWN1dGUo
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVktfRE9XTjoKLSAg
ICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmV4ZWNDb21tYW5kKCJNb3ZlRG93biIpOwor
ICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZURvd24iKS5leGVj
dXRlKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFZLX1BSSU9S
OiAgLy8gUGFnZVVwCi0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5leGVjQ29tbWFu
ZCgiTW92ZVVwQnlQYWdlQW5kTW9kaWZ5Q2FyZXQiKTsKKyAgICAgICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVQYWdlVXAiKS5leGVjdXRlKCk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFZLX05FWFQ6ICAvLyBQYWdlRG93bgotICAgICAg
ICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZXhlY0NvbW1hbmQoIk1vdmVEb3duQnlQYWdlQW5k
TW9kaWZ5Q2FyZXQiKTsKKyAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQo
Ik1vdmVQYWdlRG93biIpLmV4ZWN1dGUoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIGNhc2UgVktfSE9NRToKICAgICAgICAgICAgICAgICBpZiAoa2V2ZW50LT5jdHJsS2V5
KCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZXhlY0NvbW1hbmQoIk1v
dmVUb0JlZ2lubmluZ09mRG9jdW1lbnQiKTsKKyAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVk
aXRvcigpLT5jb21tYW5kKCJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50IikuZXhlY3V0ZSgpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19FTkQ6CiAgICAgICAg
ICAgICAgICAgaWYgKGtldmVudC0+Y3RybEtleSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPmV4ZWNDb21tYW5kKCJNb3ZlVG9FbmRPZkRvY3VtZW50Iik7CisgICAgICAg
ICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVRvRW5kT2ZEb2N1bWVu
dCIpLmV4ZWN1dGUoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpJbmRleDogV2ViS2l0L2d0ay9XZWJWaWV3L3dl
YmtpdHdlYnZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViVmlldy93ZWJraXR3
ZWJ2aWV3LmNwcAkocmV2aXNpb24gMjg2ODcpCisrKyBXZWJLaXQvZ3RrL1dlYlZpZXcvd2Via2l0
d2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwNCwyNSArNDA0LDI1IEBAIHN0YXRpYyBn
Ym9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jb24KIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
dmlld19yZWFsX3NlbGVjdF9hbGwoV2ViS2l0V2ViVmlldyogd2ViVmlldykKIHsKICAgICBGcmFt
ZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFp
bkZyYW1lKCk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5leGVjQ29tbWFuZCgiU2VsZWN0QWxsIik7
CisgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJTZWxlY3RBbGwiKS5leGVjdXRlKCk7CiB9
CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19yZWFsX2N1dF9jbGlwYm9hcmQoV2ViS2l0
V2ViVmlldyogd2ViVmlldykKIHsKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5m
b2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgZnJhbWUtPmVkaXRv
cigpLT5leGVjQ29tbWFuZCgiQ3V0Iik7CisgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJD
dXQiKS5leGVjdXRlKCk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19yZWFsX2Nv
cHlfY2xpcGJvYXJkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgRnJhbWUqIGZyYW1l
ID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgp
OwotICAgIGZyYW1lLT5lZGl0b3IoKS0+ZXhlY0NvbW1hbmQoIkNvcHkiKTsKKyAgICBmcmFtZS0+
ZWRpdG9yKCktPmNvbW1hbmQoIkNvcHkiKS5leGVjdXRlKCk7CiB9CiAKIHN0YXRpYyB2b2lkIHdl
YmtpdF93ZWJfdmlld19yZWFsX3Bhc3RlX2NsaXBib2FyZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
KQogewogICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigp
LT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmV4ZWNDb21tYW5k
KCJQYXN0ZSIpOworICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiUGFzdGUiKS5leGVjdXRl
KCk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19maW5hbGl6ZShHT2JqZWN0KiBv
YmplY3QpCkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
bWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjg2ODcpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDA3LTEyLTEzICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lQnJpZGdlLmg6IE1vdmVkIGRlY2xh
cmF0aW9ucyBvZiBtZXRob2RzIHRoYXQgYXJlIGJvdGgKKyAgICAgICAgZGVmaW5lZCBhbmQgdXNl
ZCBvbiB0aGUgV2ViS2l0IHNpZGUgdG8gaGVyZS4gVGhlc2Ugbm8gbG9uZ2VyIGJlbG9uZyBvbiB0
aGUgYnJpZGdlCisgICAgICAgIGFuZCBzaG91bGQgYmUgbW92ZWQgdG8gdGhlIFdlYkZyYW1lIGNs
YXNzIChvciBlbHNld2hlcmUpLgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lQnJp
ZGdlLm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tOgorICAgICAgICAoK1tX
ZWJGcmFtZVZpZXcgX3ZpZXdUeXBlc0FsbG93SW1hZ2VUeXBlT21pc3Npb246XSk6CisgICAgICAg
ICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXdQcml2YXRl
IGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXdQcml2YXRlIGNsZWFyXSk6CisgICAg
ICAgICgtW1dlYkhUTUxWaWV3IF9zZXRNb3VzZURvd25FdmVudDpdKToKKyAgICAgICAgKGNvbWFu
ZE5hbWVGb3JTZWxlY3Rvcik6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IHZhbGlkYXRlVXNlcklu
dGVyZmFjZUl0ZW1XaXRob3V0RGVsZWdhdGU6XSk6CisgICAgICAgICgtW1dlYkhUTUxWaWV3IG1v
dXNlRG93bjpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgYmVjb21lRmlyc3RSZXNwb25kZXJd
KToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgcmVzaWduRmlyc3RSZXNwb25kZXJdKToKKyAgICAg
ICAgKC1bV2ViSFRNTFZpZXcgY2hlY2tTcGVsbGluZzpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkhUTUxWaWV3SW50ZXJuYWwuaDoKKwogMjAwNy0xMi0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZwpJbmRleDogV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUJyaWRnZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVCcmlkZ2UuaAkocmV2aXNpb24gMjg2ODcp
CisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lQnJpZGdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU2LDQgKzU2LDI4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLSAoV2ViRnJh
bWUgKil3ZWJGcmFtZTsKIAorLy8gVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBhbGwgbW92ZSBv
ZmYgdGhlIGJyaWRnZTsgdGhleSdyZSB1c2VkIG9uIHRoZSBXZWJLaXQgc2lkZSBvbmx5LgorCist
IChOU1ZpZXcgKil2aWV3Rm9yUGx1Z2luV2l0aEZyYW1lOihOU1JlY3QpZnJhbWUKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBVUkw6KE5TVVJMICopVVJMCisgICAgICAgICAgICAgICAg
ICAgIGF0dHJpYnV0ZU5hbWVzOihOU0FycmF5ICopYXR0cmlidXRlTmFtZXMKKyAgICAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGVWYWx1ZXM6KE5TQXJyYXkgKilhdHRyaWJ1dGVWYWx1ZXMKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgTUlNRVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUKKyAgICAg
ICAgICAgICAgICAgICAgICAgIERPTUVsZW1lbnQ6KERPTUVsZW1lbnQgKillbGVtZW50CisgICAg
ICAgICAgICAgICAgICAgICAgbG9hZE1hbnVhbGx5OihCT09MKWxvYWRNYW51YWxseTsKKy0gKE5T
VmlldyAqKXZpZXdGb3JKYXZhQXBwbGV0V2l0aEZyYW1lOihOU1JlY3QpZnJhbWUKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGF0dHJpYnV0ZU5hbWVzOihOU0FycmF5ICopYXR0cmlidXRlTmFtZXMK
KyAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlVmFsdWVzOihOU0FycmF5ICopYXR0cmli
dXRlVmFsdWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZVVSTDooTlNVUkwg
KiliYXNlVVJMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRE9NRWxlbWVudDooRE9NRWxl
bWVudCAqKWVsZW1lbnQ7CisKKy0gKFdlYkNvcmU6OkZyYW1lKiljcmVhdGVDaGlsZEZyYW1lTmFt
ZWQ6KE5TU3RyaW5nICopZnJhbWVOYW1lIHdpdGhVUkw6KE5TVVJMICopVVJMIHJlZmVycmVyOihj
b25zdCBXZWJDb3JlOjpTdHJpbmcmKXJlZmVycmVyCisgICAgb3duZXJFbGVtZW50OihXZWJDb3Jl
OjpIVE1MRnJhbWVPd25lckVsZW1lbnQgKilvd25lckVsZW1lbnQgYWxsb3dzU2Nyb2xsaW5nOihC
T09MKWFsbG93c1Njcm9sbGluZyBtYXJnaW5XaWR0aDooaW50KXdpZHRoIG1hcmdpbkhlaWdodDoo
aW50KWhlaWdodDsKKworLSAodm9pZClyZWRpcmVjdERhdGFUb1BsdWdpbjooTlNWaWV3ICopcGx1
Z2luVmlldzsKKworLSAoV2ViQ29yZTo6T2JqZWN0Q29udGVudFR5cGUpZGV0ZXJtaW5lT2JqZWN0
RnJvbU1JTUVUeXBlOihOU1N0cmluZyopTUlNRVR5cGUgVVJMOihOU1VSTCopVVJMOworCistICh2
b2lkKXdpbmRvd09iamVjdENsZWFyZWQ7CisKIEBlbmQKSW5kZXg6IFdlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVCcmlkZ2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUJyaWRnZS5tbQkocmV2aXNpb24gMjg2ODcpCisrKyBXZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lQnJpZGdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDQsMTIgKzI0NCw2IEBAIE5TU3RyaW5nICpXZWJQbHVnaW5Db250YWluZXJLZXkgPSAgIEAiV2UK
ICAgICByZXR1cm4gW1tbc2VsZiB3ZWJWaWV3XSBtYWluRnJhbWVdIF9icmlkZ2VdOwogfQogCi0t
IChOU1ZpZXcgKilkb2N1bWVudFZpZXcKLXsKLSAgICBBU1NFUlQoX2ZyYW1lICE9IG5pbCk7Ci0g
ICAgcmV0dXJuIFtbX2ZyYW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XTsKLX0KLQogLSAoTlNS
ZXNwb25kZXIgKilmaXJzdFJlc3BvbmRlcgogewogICAgIEFTU0VSVChfZnJhbWUgIT0gbmlsKTsK
QEAgLTI2OSwyMiArMjYzLDYgQEAgTlNTdHJpbmcgKldlYlBsdWdpbkNvbnRhaW5lcktleSA9ICAg
QCJXZQogICAgIFt3ZWJWaWV3IF9wb3BQZXJmb3JtaW5nUHJvZ3JhbW1hdGljRm9jdXNdOwogfQog
Ci0tICh2b2lkKXdpbGxNYWtlRmlyc3RSZXNwb25kZXJGb3JOb2RlRm9jdXMKLXsKLSAgICBBU1NF
UlQoW1tbX2ZyYW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3XSBpc0tpbmRPZkNsYXNzOltXZWJI
VE1MVmlldyBjbGFzc11dKTsKLSAgICBbKFdlYkhUTUxWaWV3ICopW1tfZnJhbWUgZnJhbWVWaWV3
XSBkb2N1bWVudFZpZXddIF93aWxsTWFrZUZpcnN0UmVzcG9uZGVyRm9yTm9kZUZvY3VzXTsKLX0K
LQotLSAoQk9PTCl0ZXh0Vmlld1dhc0ZpcnN0UmVzcG9uZGVyQXRNb3VzZURvd25UaW1lOihOU1Rl
eHRWaWV3ICopdGV4dFZpZXc7Ci17Ci0gICAgQVNTRVJUKF9mcmFtZSAhPSBuaWwpOwotICAgIE5T
VmlldyAqZG9jdW1lbnRWaWV3ID0gW1tfZnJhbWUgZnJhbWVWaWV3XSBkb2N1bWVudFZpZXddOwot
ICAgIGlmICghW2RvY3VtZW50VmlldyBpc0tpbmRPZkNsYXNzOltXZWJIVE1MVmlldyBjbGFzc11d
KQotICAgICAgICByZXR1cm4gTk87Ci0gICAgV2ViSFRNTFZpZXcgKndlYkhUTUxWaWV3ID0gKFdl
YkhUTUxWaWV3ICopZG9jdW1lbnRWaWV3OwotICAgIHJldHVybiBbd2ViSFRNTFZpZXcgX3RleHRW
aWV3V2FzRmlyc3RSZXNwb25kZXJBdE1vdXNlRG93blRpbWU6dGV4dFZpZXddOwotfQotCiAtIChO
U1dpbmRvdyAqKXdpbmRvdwogewogICAgIEFTU0VSVChfZnJhbWUgIT0gbmlsKTsKSW5kZXg6IFdl
YktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQkocmV2aXNpb24gMjg2ODcpCisrKyBXZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNjAsNyArMjYwLDcg
QEAgc3RhdGljIGlubGluZSB2b2lkIGFkZFR5cGVzRnJvbUNsYXNzKE5TTQogICAgICAgICB2aWV3
VHlwZXMgPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdOwogICAgICAgICBhZGRU
eXBlc0Zyb21DbGFzcyh2aWV3VHlwZXMsIFtXZWJIVE1MVmlldyBjbGFzc10sIFtXZWJIVE1MVmll
dyBzdXBwb3J0ZWROb25JbWFnZU1JTUVUeXBlc10pOwogCi0gICAgICAgIC8vIFNpbmNlIHRoaXMg
aXMgYSAic2VjcmV0IGRlZmF1bHQiIHdlIGRvbid0IGJvdGggcmVnaXN0ZXJpbmcgaXQuCisgICAg
ICAgIC8vIFNpbmNlIHRoaXMgaXMgYSAic2VjcmV0IGRlZmF1bHQiIHdlIGRvbid0IGJvdGhlciBy
ZWdpc3RlcmluZyBpdC4KICAgICAgICAgQk9PTCBvbWl0UERGU3VwcG9ydCA9IFtbTlNVc2VyRGVm
YXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIGJvb2xGb3JLZXk6QCJXZWJLaXRPbWl0UERGU3Vw
cG9ydCJdOwogICAgICAgICBpZiAoIW9taXRQREZTdXBwb3J0KQogICAgICAgICAgICAgYWRkVHlw
ZXNGcm9tQ2xhc3Modmlld1R5cGVzLCBbV2ViUERGVmlldyBjbGFzc10sIFtXZWJQREZWaWV3IHN1
cHBvcnRlZE1JTUVUeXBlc10pOwpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQkocmV2
aXNpb24gMjg2ODcpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHdvcmtp
bmcgY29weSkKQEAgLTQxOCw3ICs0MTgsNiBAQCBzdGF0aWMgTlNDZWxsU3RhdGVWYWx1ZSBraXQo
VHJpU3RhdGUgc3RhCiAgICAgW3BsdWdpbkNvbnRyb2xsZXIgcmVsZWFzZV07CiAgICAgW3Rvb2xU
aXAgcmVsZWFzZV07CiAgICAgW2NvbXBDb250cm9sbGVyIHJlbGVhc2VdOwotICAgIFtmaXJzdFJl
c3BvbmRlclRleHRWaWV3QXRNb3VzZURvd25UaW1lIHJlbGVhc2VdOwogICAgIFtkYXRhU291cmNl
IHJlbGVhc2VdOwogICAgIFtoaWdobGlnaHRlcnMgcmVsZWFzZV07CiAgICAgaWYgKHByb21pc2Vk
RHJhZ1RJRkZEYXRhU291cmNlKQpAQCAtNDQ0LDcgKzQ0Myw2IEBAIHN0YXRpYyBOU0NlbGxTdGF0
ZVZhbHVlIGtpdChUcmlTdGF0ZSBzdGEKICAgICBbcGx1Z2luQ29udHJvbGxlciByZWxlYXNlXTsK
ICAgICBbdG9vbFRpcCByZWxlYXNlXTsKICAgICBbY29tcENvbnRyb2xsZXIgcmVsZWFzZV07Ci0g
ICAgW2ZpcnN0UmVzcG9uZGVyVGV4dFZpZXdBdE1vdXNlRG93blRpbWUgcmVsZWFzZV07CiAgICAg
W2RhdGFTb3VyY2UgcmVsZWFzZV07CiAgICAgW2hpZ2hsaWdodGVycyByZWxlYXNlXTsKICAgICBp
ZiAocHJvbWlzZWREcmFnVElGRkRhdGFTb3VyY2UpCkBAIC00NTUsNyArNDUzLDYgQEAgc3RhdGlj
IE5TQ2VsbFN0YXRlVmFsdWUga2l0KFRyaVN0YXRlIHN0YQogICAgIHBsdWdpbkNvbnRyb2xsZXIg
PSBuaWw7CiAgICAgdG9vbFRpcCA9IG5pbDsKICAgICBjb21wQ29udHJvbGxlciA9IG5pbDsKLSAg
ICBmaXJzdFJlc3BvbmRlclRleHRWaWV3QXRNb3VzZURvd25UaW1lID0gbmlsOwogICAgIGRhdGFT
b3VyY2UgPSBuaWw7CiAgICAgaGlnaGxpZ2h0ZXJzID0gbmlsOwogICAgIHByb21pc2VkRHJhZ1RJ
RkZEYXRhU291cmNlID0gMDsKQEAgLTgwMiwyMSArNzk5LDYgQEAgc3RhdGljIE5TVVJMKiB1bmlx
dWVVUkxXaXRoUmVsYXRpdmVQYXJ0KAogICAgIFtldmVudCByZXRhaW5dOwogICAgIFtfcHJpdmF0
ZS0+bW91c2VEb3duRXZlbnQgcmVsZWFzZV07CiAgICAgX3ByaXZhdGUtPm1vdXNlRG93bkV2ZW50
ID0gZXZlbnQ7Ci0KLSAgICBbX3ByaXZhdGUtPmZpcnN0UmVzcG9uZGVyVGV4dFZpZXdBdE1vdXNl
RG93blRpbWUgcmVsZWFzZV07Ci0gICAgCi0gICAgLy8gVGhlIG9ubHkgY29kZSB0aGF0IGNoZWNr
cyB0aGlzIGl2YXIgb25seSBjYXJlcyBhYm91dCBOU1RleHRWaWV3cy4gVGhlIGNvZGUgdXNlZCB0
byBiZSBtb3JlIGdlbmVyYWwsCi0gICAgLy8gYnV0IGl0IGNhdXNlZCByZWZlcmVuY2UgY3ljbGVz
IGxlYWRpbmcgdG8gd29ybGQgbGVha3MgKHNlZSA0NTU3Mzg2KS4gV2Ugc2hvdWxkIGJlIGFibGUg
dG8gZWxpbWluYXRlCi0gICAgLy8gZmlyc3RSZXNwb25kZXJUZXh0Vmlld0F0TW91c2VEb3duVGlt
ZSBlbnRpcmVseSB3aGVuIGFsbCB0aGUgZm9ybSBjb250cm9scyBhcmUgbmF0aXZlIHdpZGdldHMs
IGJlY2F1c2UgCi0gICAgLy8gdGhlIG9ubHkgY2FsbGVyIChpbiBXZWJDb3JlKSB3aWxsIGJlIHVu
bmVjZXNzYXJ5LgotICAgIGlmIChldmVudCkgewotICAgICAgICBOU1Jlc3BvbmRlciAqZmlyc3RS
ZXNwb25kZXIgPSBbW3NlbGYgd2luZG93XSBmaXJzdFJlc3BvbmRlcl07Ci0gICAgICAgIGlmIChb
Zmlyc3RSZXNwb25kZXIgaXNLaW5kT2ZDbGFzczpbTlNUZXh0VmlldyBjbGFzc11dKQotICAgICAg
ICAgICAgX3ByaXZhdGUtPmZpcnN0UmVzcG9uZGVyVGV4dFZpZXdBdE1vdXNlRG93blRpbWUgPSBb
Zmlyc3RSZXNwb25kZXIgcmV0YWluXTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgX3ByaXZh
dGUtPmZpcnN0UmVzcG9uZGVyVGV4dFZpZXdBdE1vdXNlRG93blRpbWUgPSBuaWw7Ci0gICAgfSBl
bHNlCi0gICAgICAgIF9wcml2YXRlLT5maXJzdFJlc3BvbmRlclRleHRWaWV3QXRNb3VzZURvd25U
aW1lID0gbmlsOwogfQogCiAtICh2b2lkKV9jYW5jZWxVcGRhdGVBY3RpdmVTdGF0ZVRpbWVyCkBA
IC0xMTc5LDI5ICsxMTYxLDYgQEAgc3RhdGljIHZvaWQgX3VwZGF0ZU1vdXNlb3ZlclRpbWVyQ2Fs
bGJhYwogICAgIHJldHVybiBzZWxmICE9IFtzZWxmIF90b3BIVE1MVmlld107CiB9CiAKLS0gKHZv
aWQpc2Nyb2xsUG9pbnQ6KE5TUG9pbnQpcG9pbnQKLXsKLSAgICAvLyBTaW5jZSB3ZSBjYW4ndCBz
dWJjbGFzcyBOU1RleHRWaWV3IHRvIGRvIHdoYXQgd2Ugd2FudCwgd2UgaGF2ZSB0byBzZWNvbmQg
Z3Vlc3MgaXQgaGVyZS4KLSAgICAvLyBJZiB3ZSBnZXQgY2FsbGVkIGR1cmluZyB0aGUgaGFuZGxp
bmcgb2YgYSBrZXkgZG93biBldmVudCwgd2UgYXNzdW1lIHRoZSBjYWxsIGNhbWUgZnJvbQotICAg
IC8vIE5TVGV4dFZpZXcsIGFuZCBpZ25vcmUgaXQgYW5kIHVzZSBvdXIgb3duIGNvZGUgdG8gZGVj
aWRlIGhvdyB0byBwYWdlIHVwIGFuZCBwYWdlIGRvd24KLSAgICAvLyBXZSBhcmUgc21hcnRlciBh
Ym91dCBob3cgZmFyIHRvIHNjcm9sbCwgYW5kIHdlIGhhdmUgInN1cGVydmlldyBzY3JvbGxpbmci
IGxvZ2ljLgotICAgIE5TRXZlbnQgKmV2ZW50ID0gW1tzZWxmIHdpbmRvd10gY3VycmVudEV2ZW50
XTsKLSAgICBpZiAoW2V2ZW50IHR5cGVdID09IE5TS2V5RG93bikgewotICAgICAgICBjb25zdCB1
bmljaGFyIHBhZ2VVcCA9IE5TUGFnZVVwRnVuY3Rpb25LZXk7Ci0gICAgICAgIGlmIChbW2V2ZW50
IGNoYXJhY3RlcnNdIHJhbmdlT2ZTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJz
OiZwYWdlVXAgbGVuZ3RoOjFdXS5sZW5ndGggPT0gMSkgewotICAgICAgICAgICAgW3NlbGYgdHJ5
VG9QZXJmb3JtOkBzZWxlY3RvcihzY3JvbGxQYWdlVXA6KSB3aXRoOm5pbF07Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgY29uc3QgdW5pY2hhciBwYWdlRG93biA9IE5T
UGFnZURvd25GdW5jdGlvbktleTsKLSAgICAgICAgaWYgKFtbZXZlbnQgY2hhcmFjdGVyc10gcmFu
Z2VPZlN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aENoYXJhY3RlcnM6JnBhZ2VEb3duIGxlbmd0
aDoxXV0ubGVuZ3RoID09IDEpIHsKLSAgICAgICAgICAgIFtzZWxmIHRyeVRvUGVyZm9ybTpAc2Vs
ZWN0b3Ioc2Nyb2xsUGFnZURvd246KSB3aXRoOm5pbF07Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgW3N1cGVyIHNjcm9sbFBvaW50OnBvaW50XTsKLX0K
LQogLSAoTlNWaWV3ICopaGl0VGVzdDooTlNQb2ludClwb2ludAogewogICAgIC8vIFdlYkhUTUxW
aWV3IG9iamVjdHMgaGFuZGxlIGFsbCBldmVudHMgZm9yIG9iamVjdHMgaW5zaWRlIHRoZW0uCkBA
IC0yMDYzLDEwICsyMDIyLDE5IEBAIHN0YXRpYyB2b2lkIF91cGRhdGVNb3VzZW92ZXJUaW1lckNh
bGxiYWMKIHN0YXRpYyBTdHJpbmcgY29tYW5kTmFtZUZvclNlbGVjdG9yKFNFTCBzZWxlY3RvcikK
IHsKICAgICAvLyBDaGFuZ2UgYSBmZXcgY29tbWFuZCBuYW1lcyBpbnRvIG9uZXMgc3VwcG9ydGVk
IGJ5IFdlYkNvcmU6OkVkaXRvci4KKyAgICAvLyBJZiB0aGlzIGxpc3QgZ2V0cyB0b28gbG9uZyB3
ZSBtaWdodCBkZWNpZGUgd2UgbmVlZCB0byB1c2UgYSBoYXNoIHRhYmxlLgogICAgIGlmIChzZWxl
Y3RvciA9PSBAc2VsZWN0b3IoaW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yOikgfHwgc2VsZWN0b3Ig
PT0gQHNlbGVjdG9yKGluc2VydE5ld2xpbmVJZ25vcmluZ0ZpZWxkRWRpdG9yOikpCiAgICAgICAg
IHJldHVybiAiSW5zZXJ0TmV3bGluZSI7CiAgICAgaWYgKHNlbGVjdG9yID09IEBzZWxlY3Rvcihp
bnNlcnRUYWJJZ25vcmluZ0ZpZWxkRWRpdG9yOikpCiAgICAgICAgIHJldHVybiAiSW5zZXJ0VGFi
IjsKKyAgICBpZiAoc2VsZWN0b3IgPT0gQHNlbGVjdG9yKHBhZ2VEb3duOikpCisgICAgICAgIHJl
dHVybiAiTW92ZVBhZ2VEb3duIjsKKyAgICBpZiAoc2VsZWN0b3IgPT0gQHNlbGVjdG9yKHBhZ2VE
b3duQW5kTW9kaWZ5U2VsZWN0aW9uOikpCisgICAgICAgIHJldHVybiAiTW92ZVBhZ2VEb3duQW5k
TW9kaWZ5U2VsZWN0aW9uIjsKKyAgICBpZiAoc2VsZWN0b3IgPT0gQHNlbGVjdG9yKHBhZ2VVcDop
KQorICAgICAgICByZXR1cm4gIk1vdmVQYWdlVXAiOworICAgIGlmIChzZWxlY3RvciA9PSBAc2Vs
ZWN0b3IocGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uOikpCisgICAgICAgIHJldHVybiAiTW92ZVBh
Z2VVcEFuZE1vZGlmeVNlbGVjdGlvbiI7CiAKICAgICAvLyBSZW1vdmUgdGhlIHRyYWlsaW5nIGNv
bG9uLgogICAgIGNvbnN0IGNoYXIqIHNlbGVjdG9yTmFtZSA9IHNlbF9nZXROYW1lKHNlbGVjdG9y
KTsKQEAgLTIxMTgsOCArMjA4NiwxNiBAQCBXRUJDT1JFX0NPTU1BTkQoYWxpZ25DZW50ZXIpCiBX
RUJDT1JFX0NPTU1BTkQoYWxpZ25KdXN0aWZpZWQpCiBXRUJDT1JFX0NPTU1BTkQoYWxpZ25MZWZ0
KQogV0VCQ09SRV9DT01NQU5EKGFsaWduUmlnaHQpCi1XRUJDT1JFX0NPTU1BTkQoY3V0KQogV0VC
Q09SRV9DT01NQU5EKGNvcHkpCitXRUJDT1JFX0NPTU1BTkQoY3V0KQorV0VCQ09SRV9DT01NQU5E
KGRlbGV0ZSkKK1dFQkNPUkVfQ09NTUFORChkZWxldGVCYWNrd2FyZCkKK1dFQkNPUkVfQ09NTUFO
RChkZWxldGVCYWNrd2FyZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3RlcikKK1dFQkNPUkVf
Q09NTUFORChkZWxldGVGb3J3YXJkKQorV0VCQ09SRV9DT01NQU5EKGRlbGV0ZVRvQmVnaW5uaW5n
T2ZMaW5lKQorV0VCQ09SRV9DT01NQU5EKGRlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGgpCitX
RUJDT1JFX0NPTU1BTkQoZGVsZXRlVG9FbmRPZkxpbmUpCitXRUJDT1JFX0NPTU1BTkQoZGVsZXRl
VG9FbmRPZlBhcmFncmFwaCkKIFdFQkNPUkVfQ09NTUFORChkZWxldGVUb01hcmspCiBXRUJDT1JF
X0NPTU1BTkQoZGVsZXRlV29yZEJhY2t3YXJkKQogV0VCQ09SRV9DT01NQU5EKGRlbGV0ZVdvcmRG
b3J3YXJkKQpAQCAtMjE3MCw4ICsyMTQ2LDE2IEBAIFdFQkNPUkVfQ09NTUFORChtb3ZlV29yZExl
ZnRBbmRNb2RpZnlTZWwKIFdFQkNPUkVfQ09NTUFORChtb3ZlV29yZFJpZ2h0KQogV0VCQ09SRV9D
T01NQU5EKG1vdmVXb3JkUmlnaHRBbmRNb2RpZnlTZWxlY3Rpb24pCiBXRUJDT1JFX0NPTU1BTkQo
b3V0ZGVudCkKK1dFQkNPUkVfQ09NTUFORChwYWdlRG93bikKK1dFQkNPUkVfQ09NTUFORChwYWdl
RG93bkFuZE1vZGlmeVNlbGVjdGlvbikKK1dFQkNPUkVfQ09NTUFORChwYWdlVXApCitXRUJDT1JF
X0NPTU1BTkQocGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uKQogV0VCQ09SRV9DT01NQU5EKHNlbGVj
dEFsbCkKK1dFQkNPUkVfQ09NTUFORChzZWxlY3RMaW5lKQorV0VCQ09SRV9DT01NQU5EKHNlbGVj
dFBhcmFncmFwaCkKK1dFQkNPUkVfQ09NTUFORChzZWxlY3RTZW50ZW5jZSkKIFdFQkNPUkVfQ09N
TUFORChzZWxlY3RUb01hcmspCitXRUJDT1JFX0NPTU1BTkQoc2VsZWN0V29yZCkKIFdFQkNPUkVf
Q09NTUFORChzZXRNYXJrKQogV0VCQ09SRV9DT01NQU5EKHN1YnNjcmlwdCkKIFdFQkNPUkVfQ09N
TUFORChzdXBlcnNjcmlwdCkKQEAgLTIyMjgsMTAgKzIyMTIsMTAgQEAgV0VCQ09SRV9DT01NQU5E
KHlhbmtBbmRTZWxlY3QpCiB9CiAKIC8vIGp1bXBUb1NlbGVjdGlvbiBpcyB0aGUgb2xkIG5hbWUg
Zm9yIHdoYXQgQXBwS2l0IG5vdyBjYWxscyBjZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhLiBT
YWZhcmkKLS8vIHdhcyB1c2luZyB0aGUgb2xkIGp1bXBUb1NlbGVjdGlvbiBzZWxlY3RvciBpbiBp
dHMgbWVudS4gTmV3ZXIgdmVyc2lvbnMgb2YgU2FmYXJpIHdpbGwgdXMgdGhlCi0vLyBzZWxlY3Rv
ciBjZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhLiBXZSdsbCBsZWF2ZSB0aGlzIG9sZCBzZWxl
Y3RvciBpbiBwbGFjZSBmb3IgdHdvIHJlYXNvbnM6Ci0vLyAoMSkgY29tcGF0aWJpbGl0eSBiZXR3
ZWVuIG9sZGVyIFNhZmFyaSBhbmQgbmV3ZXIgV2ViS2l0OyAoMikgb3RoZXIgV2ViS2l0LWJhc2Vk
IGFwcGxpY2F0aW9ucwotLy8gbWlnaHQgYmUgdXNpbmcgdGhlIGp1bXBUb1NlbGVjdGlvbjogc2Vs
ZWN0b3IsIGFuZCB3ZSBkb24ndCB3YW50IHRvIGJyZWFrIHRoZW0uCisvLyB3YXMgdXNpbmcgdGhl
IG9sZCBqdW1wVG9TZWxlY3Rpb24gc2VsZWN0b3IgaW4gaXRzIG1lbnUuIE5ld2VyIHZlcnNpb25z
IG9mIFNhZmFyaSB3aWxsIHVzZSB0aGUKKy8vIHNlbGVjdG9yIGNlbnRlclNlbGVjdGlvbkluVmlz
aWJsZUFyZWEuIFdlJ2xsIGxlYXZlIHRoZSBvbGQgc2VsZWN0b3IgaW4gcGxhY2UgZm9yIHR3byBy
ZWFzb25zOgorLy8gKDEpIENvbXBhdGliaWxpdHkgYmV0d2VlbiBvbGRlciBTYWZhcmkgYW5kIG5l
d2VyIFdlYktpdDsgKDIpIG90aGVyIFdlYktpdC1iYXNlZCBhcHBsaWNhdGlvbnMKKy8vIG1pZ2h0
IGJlIHVzaW5nIHRoZSBzZWxlY3RvciwgYW5kIHdlIGRvbid0IHdhbnQgdG8gYnJlYWsgdGhlbS4K
IC0gKHZvaWQpanVtcFRvU2VsZWN0aW9uOihpZClzZW5kZXIKIHsKICAgICBDT01NQU5EX1BST0xP
R1VFCkBAIC0yMjU5LDEwNCArMjI0MywxNyBAQCBXRUJDT1JFX0NPTU1BTkQoeWFua0FuZFNlbGVj
dCkKICAgICBpZiAoRG9jdW1lbnQqIGRvYyA9IGZyYW1lLT5kb2N1bWVudCgpKSB7CiAgICAgICAg
IGlmIChkb2MtPmlzUGx1Z2luRG9jdW1lbnQoKSkKICAgICAgICAgICAgIHJldHVybiBOTzsKLSAg
ICAgICAgCiAgICAgICAgIGlmIChkb2MtPmlzSW1hZ2VEb2N1bWVudCgpKSB7ICAgICAgICAgICAg
CiAgICAgICAgICAgICBpZiAoYWN0aW9uID09IEBzZWxlY3Rvcihjb3B5OikpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZyYW1lLT5sb2FkZXIoKS0+aXNDb21wbGV0ZSgpOwotICAgICAgICAKICAg
ICAgICAgICAgIHJldHVybiBOTzsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChhY3Rpb24g
PT0gQHNlbGVjdG9yKGFsaWduQ2VudGVyOikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2Vs
ZWN0b3IoYWxpZ25KdXN0aWZpZWQ6KQotICAgICAgICAgICAgfHwgYWN0aW9uID09IEBzZWxlY3Rv
cihhbGlnbkxlZnQ6KQotICAgICAgICAgICAgfHwgYWN0aW9uID09IEBzZWxlY3RvcihhbGlnblJp
Z2h0OikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoY3V0OikKLSAgICAgICAg
ICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoY29weTopCi0gICAgICAgICAgICB8fCBhY3Rpb24g
PT0gQHNlbGVjdG9yKGRlbGV0ZVRvTWFyazopCi0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNl
bGVjdG9yKGRlbGV0ZVdvcmRCYWNrd2FyZDopCi0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNl
bGVjdG9yKGRlbGV0ZVdvcmRGb3J3YXJkOikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2Vs
ZWN0b3IoaW5kZW50OikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoaW5zZXJ0
QmFja3RhYjopCi0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKGluc2VydExpbmVC
cmVhazopCi0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKGluc2VydE5ld2xpbmU6
KQotICAgICAgICAgICAgfHwgYWN0aW9uID09IEBzZWxlY3RvcihpbnNlcnROZXdsaW5lSWdub3Jp
bmdGaWVsZEVkaXRvcjopCi0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKGluc2Vy
dFBhcmFncmFwaFNlcGFyYXRvcjopCi0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9y
KGluc2VydFRhYjopCi0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKGluc2VydFRh
Yklnbm9yaW5nRmllbGRFZGl0b3I6KQotICAgICAgICAgICAgfHwgYWN0aW9uID09IEBzZWxlY3Rv
cihtb3ZlQmFja3dhcmQ6KQotICAgICAgICAgICAgfHwgYWN0aW9uID09IEBzZWxlY3Rvcihtb3Zl
QmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb246KQotICAgICAgICAgICAgfHwgYWN0aW9uID09IEBz
ZWxlY3Rvcihtb3ZlRG93bjopCi0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKG1v
dmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uOikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2Vs
ZWN0b3IobW92ZUZvcndhcmQ6KQotICAgICAgICAgICAgfHwgYWN0aW9uID09IEBzZWxlY3Rvciht
b3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbjopCi0gICAgICAgICAgICB8fCBhY3Rpb24gPT0g
QHNlbGVjdG9yKG1vdmVMZWZ0OikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3Io
bW92ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb246KQotICAgICAgICAgICAgfHwgYWN0aW9uID09IEBz
ZWxlY3Rvcihtb3ZlUGFyYWdyYXBoQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb246KQotICAgICAg
ICAgICAgfHwgYWN0aW9uID09IEBzZWxlY3Rvcihtb3ZlUGFyYWdyYXBoRm9yd2FyZEFuZE1vZGlm
eVNlbGVjdGlvbjopCi0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKG1vdmVSaWdo
dDopCi0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKG1vdmVSaWdodEFuZE1vZGlm
eVNlbGVjdGlvbjopCi0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKG1vdmVUb0Jl
Z2lubmluZ09mRG9jdW1lbnQ6KQotICAgICAgICAgICAgfHwgYWN0aW9uID09IEBzZWxlY3Rvciht
b3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9uOikKLSAgICAgICAgICAg
IHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IobW92ZVRvQmVnaW5uaW5nT2ZMaW5lOikKLSAgICAgICAg
ICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IobW92ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9kaWZ5
U2VsZWN0aW9uOikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IobW92ZVRvQmVn
aW5uaW5nT2ZQYXJhZ3JhcGg6KQotICAgICAgICAgICAgfHwgYWN0aW9uID09IEBzZWxlY3Rvciht
b3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFwaEFuZE1vZGlmeVNlbGVjdGlvbjopCi0gICAgICAgICAg
ICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKG1vdmVUb0JlZ2lubmluZ09mU2VudGVuY2U6KQotICAg
ICAgICAgICAgfHwgYWN0aW9uID09IEBzZWxlY3Rvcihtb3ZlVG9CZWdpbm5pbmdPZlNlbnRlbmNl
QW5kTW9kaWZ5U2VsZWN0aW9uOikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3Io
bW92ZVRvRW5kT2ZEb2N1bWVudDopCi0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9y
KG1vdmVUb0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb246KQotICAgICAgICAgICAgfHwg
YWN0aW9uID09IEBzZWxlY3Rvcihtb3ZlVG9FbmRPZkxpbmU6KQotICAgICAgICAgICAgfHwgYWN0
aW9uID09IEBzZWxlY3Rvcihtb3ZlVG9FbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb246KQotICAg
ICAgICAgICAgfHwgYWN0aW9uID09IEBzZWxlY3Rvcihtb3ZlVG9FbmRPZlBhcmFncmFwaDopCi0g
ICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKG1vdmVUb0VuZE9mUGFyYWdyYXBoQW5k
TW9kaWZ5U2VsZWN0aW9uOikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IobW92
ZVRvRW5kT2ZTZW50ZW5jZTopCi0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKG1v
dmVUb0VuZE9mU2VudGVuY2VBbmRNb2RpZnlTZWxlY3Rpb246KQotICAgICAgICAgICAgfHwgYWN0
aW9uID09IEBzZWxlY3Rvcihtb3ZlVXA6KQotICAgICAgICAgICAgfHwgYWN0aW9uID09IEBzZWxl
Y3Rvcihtb3ZlVXBBbmRNb2RpZnlTZWxlY3Rpb246KQotICAgICAgICAgICAgfHwgYWN0aW9uID09
IEBzZWxlY3Rvcihtb3ZlV29yZEJhY2t3YXJkOikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9PSBA
c2VsZWN0b3IobW92ZVdvcmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbjopCi0gICAgICAgICAg
ICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKG1vdmVXb3JkRm9yd2FyZDopCi0gICAgICAgICAgICB8
fCBhY3Rpb24gPT0gQHNlbGVjdG9yKG1vdmVXb3JkRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbjop
Ci0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKG1vdmVXb3JkTGVmdDopCi0gICAg
ICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKG1vdmVXb3JkTGVmdEFuZE1vZGlmeVNlbGVj
dGlvbjopCi0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKG1vdmVXb3JkUmlnaHQ6
KQotICAgICAgICAgICAgfHwgYWN0aW9uID09IEBzZWxlY3Rvcihtb3ZlV29yZFJpZ2h0QW5kTW9k
aWZ5U2VsZWN0aW9uOikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3Iob3V0ZGVu
dDopCi0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHNlbGVjdEFsbDopCi0gICAg
ICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHNlbGVjdFRvTWFyazopCi0gICAgICAgICAg
ICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHNldE1hcms6KQotICAgICAgICAgICAgfHwgYWN0aW9u
ID09IEBzZWxlY3RvcihzdWJzY3JpcHQ6KQotICAgICAgICAgICAgfHwgYWN0aW9uID09IEBzZWxl
Y3RvcihzdXBlcnNjcmlwdDopCi0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHN3
YXBXaXRoTWFyazopCi0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHRyYW5zcG9z
ZTopCi0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHVuZGVybGluZTopCi0gICAg
ICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHVuc2NyaXB0OikKLSAgICAgICAgICAgIHx8
IGFjdGlvbiA9PSBAc2VsZWN0b3IoeWFuazopCi0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNl
bGVjdG9yKHlhbmtBbmRTZWxlY3Q6KSkgewotICAgICAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFu
ZCA9IFtzZWxmIGNvcmVDb21tYW5kQnlTZWxlY3RvcjphY3Rpb25dOwotICAgICAgICBOU01lbnVJ
dGVtICptZW51SXRlbSA9IChOU01lbnVJdGVtICopaXRlbTsKLSAgICAgICAgaWYgKFttZW51SXRl
bSBpc0tpbmRPZkNsYXNzOltOU01lbnVJdGVtIGNsYXNzXV0pCi0gICAgICAgICAgICBbbWVudUl0
ZW0gc2V0U3RhdGU6a2l0KGNvbW1hbmQuc3RhdGUoKSldOwotICAgICAgICByZXR1cm4gY29tbWFu
ZC5pc0VuYWJsZWQoKTsKLSAgICB9Ci0KICAgICBpZiAoYWN0aW9uID09IEBzZWxlY3RvcihjaGFu
Z2VTcGVsbGluZzopCiAgICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKF9jaGFuZ2VT
cGVsbGluZ0Zyb21NZW51OikKICAgICAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoY2hl
Y2tTcGVsbGluZzopCiAgICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKGNvbXBsZXRl
OikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoZGVsZXRlQmFja3dhcmQ6KQot
ICAgICAgICAgICAgfHwgYWN0aW9uID09IEBzZWxlY3RvcihkZWxldGVCYWNrd2FyZEJ5RGVjb21w
b3NpbmdQcmV2aW91c0NoYXJhY3RlcjopCi0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVj
dG9yKGRlbGV0ZUZvcndhcmQ6KQotICAgICAgICAgICAgfHwgYWN0aW9uID09IEBzZWxlY3Rvcihk
ZWxldGVUb0JlZ2lubmluZ09mTGluZTopCi0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVj
dG9yKGRlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGg6KQotICAgICAgICAgICAgfHwgYWN0aW9u
ID09IEBzZWxlY3RvcihkZWxldGVUb0VuZE9mTGluZTopCi0gICAgICAgICAgICB8fCBhY3Rpb24g
PT0gQHNlbGVjdG9yKGRlbGV0ZVRvRW5kT2ZQYXJhZ3JhcGg6KQotICAgICAgICAgICAgfHwgYWN0
aW9uID09IEBzZWxlY3RvcihwYWdlRG93bjopCi0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNl
bGVjdG9yKHBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uOikKLSAgICAgICAgICAgIHx8IGFjdGlv
biA9PSBAc2VsZWN0b3IocGFnZVVwOikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0
b3IocGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uOikKICAgICAgICAgICAgIHx8IGFjdGlvbiA9PSBA
c2VsZWN0b3IocGFzdGVGb250OikpCiAgICAgICAgIHJldHVybiBbc2VsZiBfY2FuRWRpdF07CiAg
ICAgCkBAIC0yMzczLDEzICsyMjcwLDExIEBAIFdFQkNPUkVfQ09NTUFORCh5YW5rQW5kU2VsZWN0
KQogICAgIH0KICAgICAKICAgICBpZiAoYWN0aW9uID09IEBzZWxlY3RvcihjaGFuZ2VCYXNlV3Jp
dGluZ0RpcmVjdGlvbjopKSB7CisgICAgICAgIE5TV3JpdGluZ0RpcmVjdGlvbiB3cml0aW5nRGly
ZWN0aW9uID0gc3RhdGljX2Nhc3Q8TlNXcml0aW5nRGlyZWN0aW9uPihbaXRlbSB0YWddKTsKKyAg
ICAgICAgaWYgKHdyaXRpbmdEaXJlY3Rpb24gPT0gTlNXcml0aW5nRGlyZWN0aW9uTmF0dXJhbCkK
KyAgICAgICAgICAgIHJldHVybiBOTzsKICAgICAgICAgTlNNZW51SXRlbSAqbWVudUl0ZW0gPSAo
TlNNZW51SXRlbSAqKWl0ZW07CiAgICAgICAgIGlmIChbbWVudUl0ZW0gaXNLaW5kT2ZDbGFzczpb
TlNNZW51SXRlbSBjbGFzc11dKSB7Ci0gICAgICAgICAgICBOU1dyaXRpbmdEaXJlY3Rpb24gd3Jp
dGluZ0RpcmVjdGlvbiA9IHN0YXRpY19jYXN0PE5TV3JpdGluZ0RpcmVjdGlvbj4oW2l0ZW0gdGFn
XSk7Ci0gICAgICAgICAgICBpZiAod3JpdGluZ0RpcmVjdGlvbiA9PSBOU1dyaXRpbmdEaXJlY3Rp
b25OYXR1cmFsKSB7Ci0gICAgICAgICAgICAgICAgW21lbnVJdGVtIHNldFN0YXRlOk5TT2ZmU3Rh
dGVdOwotICAgICAgICAgICAgICAgIHJldHVybiBOTzsKLSAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIFJlZlB0cjxDU1NTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IG5ldyBDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbjsKICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgICAgICAg
ICBzdHlsZS0+c2V0UHJvcGVydHkoImRpcmVjdGlvbiIsIHdyaXRpbmdEaXJlY3Rpb24gPT0gTlNX
cml0aW5nRGlyZWN0aW9uTGVmdFRvUmlnaHQgPyAiTFRSIiA6ICJSVEwiLCBlYyk7CkBAIC0yNDIx
LDkgKzIzMTYsNiBAQCBXRUJDT1JFX0NPTU1BTkQoeWFua0FuZFNlbGVjdCkKICAgICBpZiAoYWN0
aW9uID09IEBzZWxlY3RvcihjaGFuZ2VEb2N1bWVudEJhY2tncm91bmRDb2xvcjopKQogICAgICAg
ICByZXR1cm4gW1tzZWxmIF93ZWJWaWV3XSBpc0VkaXRhYmxlXSAmJiBbc2VsZiBfY2FuRWRpdFJp
Y2hseV07CiAgICAgCi0gICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IoZGVsZXRlOikpCi0gICAg
ICAgIHJldHVybiBmcmFtZSAmJiBmcmFtZS0+ZWRpdG9yKCktPmNhbkRlbGV0ZSgpOwotICAgIAog
ICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKF9pZ25vcmVTcGVsbGluZ0Zyb21NZW51OikKICAg
ICAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoX2xlYXJuU3BlbGxpbmdGcm9tTWVudTop
CiAgICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHRha2VGaW5kU3RyaW5nRnJvbVNl
bGVjdGlvbjopKQpAQCAtMjQzNywyNyArMjMyOSwzMSBAQCBXRUJDT1JFX0NPTU1BTkQoeWFua0Fu
ZFNlbGVjdCkKICAgICAgICAgICAgIHx8IChmcmFtZS0+ZWRpdG9yKCktPmNhblBhc3RlKCkgJiYg
ZnJhbWUtPnNlbGVjdGlvbkNvbnRyb2xsZXIoKS0+aXNDb250ZW50UmljaGx5RWRpdGFibGUoKSkp
OwogICAgIAogICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHBlcmZvcm1GaW5kUGFuZWxBY3Rp
b246KSkKLSAgICAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQuCiAgICAgICAgIHJl
dHVybiBOTzsKICAgICAKLSAgICBpZiAoYWN0aW9uID09IEBzZWxlY3RvcihfbG9va1VwSW5EaWN0
aW9uYXJ5RnJvbU1lbnU6KSkgeworICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKF9sb29rVXBJ
bkRpY3Rpb25hcnlGcm9tTWVudTopKQogICAgICAgICByZXR1cm4gW3NlbGYgX2hhc1NlbGVjdGlv
bl07Ci0gICAgfSAKICAgICAKICNpZm5kZWYgQlVJTERJTkdfT05fVElHRVIKICAgICBpZiAoYWN0
aW9uID09IEBzZWxlY3Rvcih0b2dnbGVHcmFtbWFyQ2hlY2tpbmc6KSkgewogICAgICAgICAvLyBG
SVhNRSA0Nzk5MTM0OiBXZWJWaWV3IGlzIHRoZSBib3R0bGVuZWNrIGZvciB0aGlzIGdyYW1tYXIt
Y2hlY2tpbmcgbG9naWMsIGJ1dCB3ZSBtdXN0IHZhbGlkYXRlIAogICAgICAgICAvLyB0aGUgc2Vs
ZWN0b3IgaGVyZSBiZWNhdXNlIHdlIGltcGxlbWVudCBpdCBoZXJlLCBhbmQgd2UgbXVzdCBpbXBs
ZW1lbnQgaXQgaGVyZSBiZWNhdXNlIHRoZSBBcHBLaXQgCiAgICAgICAgIC8vIGNvZGUgY2hlY2tz
IHRoZSBmaXJzdCByZXNwb25kZXIuCi0gICAgICAgIEJPT0wgY2hlY2tNYXJrID0gW3NlbGYgaXNH
cmFtbWFyQ2hlY2tpbmdFbmFibGVkXTsKLSAgICAgICAgaWYgKFsoTlNPYmplY3QgKilpdGVtIGlz
S2luZE9mQ2xhc3M6W05TTWVudUl0ZW0gY2xhc3NdXSkgewotICAgICAgICAgICAgTlNNZW51SXRl
bSAqbWVudUl0ZW0gPSAoTlNNZW51SXRlbSAqKWl0ZW07Ci0gICAgICAgICAgICBbbWVudUl0ZW0g
c2V0U3RhdGU6Y2hlY2tNYXJrID8gTlNPblN0YXRlIDogTlNPZmZTdGF0ZV07Ci0gICAgICAgIH0K
KyAgICAgICAgTlNNZW51SXRlbSAqbWVudUl0ZW0gPSAoTlNNZW51SXRlbSAqKWl0ZW07CisgICAg
ICAgIGlmIChbbWVudUl0ZW0gaXNLaW5kT2ZDbGFzczpbTlNNZW51SXRlbSBjbGFzc11dKQorICAg
ICAgICAgICAgW21lbnVJdGVtIHNldFN0YXRlOltzZWxmIGlzR3JhbW1hckNoZWNraW5nRW5hYmxl
ZF0gPyBOU09uU3RhdGUgOiBOU09mZlN0YXRlXTsKICAgICAgICAgcmV0dXJuIFlFUzsKICAgICB9
CiAjZW5kaWYKICAgICAKKyAgICBFZGl0b3I6OkNvbW1hbmQgY29tbWFuZCA9IFtzZWxmIGNvcmVD
b21tYW5kQnlTZWxlY3RvcjphY3Rpb25dOworICAgIGlmIChjb21tYW5kLmlzU3VwcG9ydGVkKCkp
IHsKKyAgICAgICAgTlNNZW51SXRlbSAqbWVudUl0ZW0gPSAoTlNNZW51SXRlbSAqKWl0ZW07Cisg
ICAgICAgIGlmIChbbWVudUl0ZW0gaXNLaW5kT2ZDbGFzczpbTlNNZW51SXRlbSBjbGFzc11dKQor
ICAgICAgICAgICAgW21lbnVJdGVtIHNldFN0YXRlOmtpdChjb21tYW5kLnN0YXRlKCkpXTsKKyAg
ICAgICAgcmV0dXJuIGNvbW1hbmQuaXNFbmFibGVkKCk7CisgICAgfQorCiAgICAgcmV0dXJuIFlF
UzsKIH0KIApAQCAtMzA4NCw5ICsyOTgwLDYgQEAgc3RhdGljIHZvaWQgX3VwZGF0ZUFjdGl2ZVN0
YXRlVGltZXJDYWxsYgogICAgIH0KIAogZG9uZToKLSAgICBbX3ByaXZhdGUtPmZpcnN0UmVzcG9u
ZGVyVGV4dFZpZXdBdE1vdXNlRG93blRpbWUgcmVsZWFzZV07Ci0gICAgX3ByaXZhdGUtPmZpcnN0
UmVzcG9uZGVyVGV4dFZpZXdBdE1vdXNlRG93blRpbWUgPSBuaWw7Ci0KICAgICBfcHJpdmF0ZS0+
aGFuZGxpbmdNb3VzZURvd25FdmVudCA9IE5POwogfQogCkBAIC0zMjU5LDkgKzMxNTIsOCBAQCBu
b1Byb21pc2VkRGF0YToKIC0gKEJPT0wpYmVjb21lRmlyc3RSZXNwb25kZXIKIHsKICAgICBOU1Nl
bGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24gPSBOU0RpcmVjdFNlbGVjdGlvbjsKLSAgICBpZiAo
IVtbc2VsZiBfd2ViVmlld10gX2lzUGVyZm9ybWluZ1Byb2dyYW1tYXRpY0ZvY3VzXSAmJiAhX3By
aXZhdGUtPndpbGxCZWNvbWVGaXJzdFJlc3BvbmRlckZvck5vZGVGb2N1cykKKyAgICBpZiAoIVtb
c2VsZiBfd2ViVmlld10gX2lzUGVyZm9ybWluZ1Byb2dyYW1tYXRpY0ZvY3VzXSkKICAgICAgICAg
ZGlyZWN0aW9uID0gW1tzZWxmIHdpbmRvd10ga2V5Vmlld1NlbGVjdGlvbkRpcmVjdGlvbl07Ci0g
ICAgX3ByaXZhdGUtPndpbGxCZWNvbWVGaXJzdFJlc3BvbmRlckZvck5vZGVGb2N1cyA9IE5POwog
CiAgICAgW3NlbGYgX3VwZGF0ZUFjdGl2ZVN0YXRlXTsKICAgICBbc2VsZiBfdXBkYXRlRm9udFBh
bmVsXTsKQEAgLTMzMDAsNyArMzE5Miw2IEBAIG5vUHJvbWlzZWREYXRhOgogICAgICAgICB9CiAg
ICAgICAgIFtzZWxmIF91cGRhdGVBY3RpdmVTdGF0ZV07CiAgICAgICAgIF9wcml2YXRlLT5yZXNp
Z25pbmdGaXJzdFJlc3BvbmRlciA9IE5POwotICAgICAgICBfcHJpdmF0ZS0+d2lsbEJlY29tZUZp
cnN0UmVzcG9uZGVyRm9yTm9kZUZvY3VzID0gTk87CiAgICAgfQogICAgIHJldHVybiByZXNpZ247
CiB9CkBAIC0zNjY4LDExNSArMzU1OSw2IEBAIG5vUHJvbWlzZWREYXRhOgogICAgICAgICBjb3Jl
RnJhbWUtPnJldmVhbFNlbGVjdGlvbihSZW5kZXJMYXllcjo6Z0FsaWduQ2VudGVyQWx3YXlzKTsK
IH0KIAotLSAodm9pZClwYWdlVXA6KGlkKXNlbmRlcgotewotICAgIENPTU1BTkRfUFJPTE9HVUUK
LQotICAgIFdlYkZyYW1lVmlldyAqZnJhbWVWaWV3ID0gW3NlbGYgX2ZyYW1lVmlld107Ci0gICAg
aWYgKCFmcmFtZVZpZXcpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoW3NlbGYgX2NhbkFsdGVy
Q3VycmVudFNlbGVjdGlvbl0pCi0gICAgICAgIFtbc2VsZiBfYnJpZGdlXSBhbHRlckN1cnJlbnRT
ZWxlY3Rpb246U2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSB2ZXJ0aWNhbERpc3RhbmNlOi1bZnJh
bWVWaWV3IF92ZXJ0aWNhbFBhZ2VTY3JvbGxEaXN0YW5jZV1dOwotfQotCi0tICh2b2lkKXBhZ2VE
b3duOihpZClzZW5kZXIKLXsKLSAgICBDT01NQU5EX1BST0xPR1VFCi0KLSAgICBXZWJGcmFtZVZp
ZXcgKmZyYW1lVmlldyA9IFtzZWxmIF9mcmFtZVZpZXddOwotICAgIGlmICghZnJhbWVWaWV3KQot
ICAgICAgICByZXR1cm47Ci0gICAgaWYgKFtzZWxmIF9jYW5BbHRlckN1cnJlbnRTZWxlY3Rpb25d
KQotICAgICAgICBbW3NlbGYgX2JyaWRnZV0gYWx0ZXJDdXJyZW50U2VsZWN0aW9uOlNlbGVjdGlv
bkNvbnRyb2xsZXI6Ok1PVkUgdmVydGljYWxEaXN0YW5jZTpbZnJhbWVWaWV3IF92ZXJ0aWNhbFBh
Z2VTY3JvbGxEaXN0YW5jZV1dOwotfQotCi0tICh2b2lkKXBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlv
bjooaWQpc2VuZGVyCi17Ci0gICAgQ09NTUFORF9QUk9MT0dVRQotCi0gICAgV2ViRnJhbWVWaWV3
ICpmcmFtZVZpZXcgPSBbc2VsZiBfZnJhbWVWaWV3XTsKLSAgICBpZiAoIWZyYW1lVmlldykKLSAg
ICAgICAgcmV0dXJuOwotICAgIGlmIChbc2VsZiBfY2FuQWx0ZXJDdXJyZW50U2VsZWN0aW9uXSkK
LSAgICAgICAgW1tzZWxmIF9icmlkZ2VdIGFsdGVyQ3VycmVudFNlbGVjdGlvbjpTZWxlY3Rpb25D
b250cm9sbGVyOjpFWFRFTkQgdmVydGljYWxEaXN0YW5jZTotW2ZyYW1lVmlldyBfdmVydGljYWxQ
YWdlU2Nyb2xsRGlzdGFuY2VdXTsKLX0KLQotLSAodm9pZClwYWdlRG93bkFuZE1vZGlmeVNlbGVj
dGlvbjooaWQpc2VuZGVyCi17Ci0gICAgQ09NTUFORF9QUk9MT0dVRQotCi0gICAgV2ViRnJhbWVW
aWV3ICpmcmFtZVZpZXcgPSBbc2VsZiBfZnJhbWVWaWV3XTsKLSAgICBpZiAoZnJhbWVWaWV3ID09
IG5pbCkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmIChbc2VsZiBfY2FuQWx0ZXJDdXJyZW50U2Vs
ZWN0aW9uXSkKLSAgICAgICAgW1tzZWxmIF9icmlkZ2VdIGFsdGVyQ3VycmVudFNlbGVjdGlvbjpT
ZWxlY3Rpb25Db250cm9sbGVyOjpFWFRFTkQgdmVydGljYWxEaXN0YW5jZTpbZnJhbWVWaWV3IF92
ZXJ0aWNhbFBhZ2VTY3JvbGxEaXN0YW5jZV1dOwotfQotCi0tICh2b2lkKV9leHBhbmRTZWxlY3Rp
b25Ub0dyYW51bGFyaXR5OihUZXh0R3JhbnVsYXJpdHkpZ3JhbnVsYXJpdHkKLXsKLSAgICBpZiAo
IVtzZWxmIF9jYW5BbHRlckN1cnJlbnRTZWxlY3Rpb25dKQotICAgICAgICByZXR1cm47Ci0gICAg
Ci0gICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAgaWYgKCFj
b3JlRnJhbWUgfHwgIWNvcmVGcmFtZS0+c2VsZWN0aW9uQ29udHJvbGxlcigpLT5pc0NhcmV0T3JS
YW5nZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBOT1RFOiBUaGUgZW51bXMgKm11c3Qq
IG1hdGNoIHRoZSB2ZXJ5IHNpbWlsYXIgb25lcyBkZWNsYXJlZCBpbiBTZWxlY3Rpb25Db250cm9s
bGVyLmgKLSAgICBTZWxlY3Rpb24gc2VsZWN0aW9uKGNvcmVGcmFtZS0+c2VsZWN0aW9uQ29udHJv
bGxlcigpLT5zZWxlY3Rpb24oKSk7Ci0gICAgc2VsZWN0aW9uLmV4cGFuZFVzaW5nR3JhbnVsYXJp
dHkoc3RhdGljX2Nhc3Q8VGV4dEdyYW51bGFyaXR5PihncmFudWxhcml0eSkpOwotICAgIAotICAg
IFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBzZWxlY3Rpb24udG9SYW5nZSgpOwotICAgIGlmICghcmFu
Z2UpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBET01SYW5nZSAqZG9tUmFuZ2UgPSBraXQo
cmFuZ2UuZ2V0KCkpOwotICAgIAotICAgIGlmIChbZG9tUmFuZ2UgY29sbGFwc2VkXSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgRUFmZmluaXR5IGFmZmluaXR5ID0gY29yZUZyYW1lLT5zZWxlY3Rp
b25Db250cm9sbGVyKCktPmFmZmluaXR5KCk7Ci0gICAgV2ViVmlldyAqd2ViVmlldyA9IFtzZWxm
IF93ZWJWaWV3XTsKLSAgICBpZiAoW1t3ZWJWaWV3IF9lZGl0aW5nRGVsZWdhdGVGb3J3YXJkZXJd
IHdlYlZpZXc6d2ViVmlldyBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOltzZWxmIF9zZWxl
Y3RlZFJhbmdlXSB0b0RPTVJhbmdlOmRvbVJhbmdlIGFmZmluaXR5OmtpdChhZmZpbml0eSkgc3Rp
bGxTZWxlY3Rpbmc6Tk9dKSB7Ci0gICAgICAgIGNvcmVGcmFtZS0+c2VsZWN0aW9uQ29udHJvbGxl
cigpLT5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLmdldCgpLCBhZmZpbml0eSwgdHJ1ZSk7Ci0gICAg
fQotfQotCi0tICh2b2lkKXNlbGVjdFBhcmFncmFwaDooaWQpc2VuZGVyCi17Ci0gICAgQ09NTUFO
RF9QUk9MT0dVRQotCi0gICAgW3NlbGYgX2V4cGFuZFNlbGVjdGlvblRvR3JhbnVsYXJpdHk6UGFy
YWdyYXBoR3JhbnVsYXJpdHldOwotfQotCi0tICh2b2lkKXNlbGVjdExpbmU6KGlkKXNlbmRlcgot
ewotICAgIENPTU1BTkRfUFJPTE9HVUUKLQotICAgIFtzZWxmIF9leHBhbmRTZWxlY3Rpb25Ub0dy
YW51bGFyaXR5OkxpbmVHcmFudWxhcml0eV07Ci19Ci0KLS0gKHZvaWQpc2VsZWN0U2VudGVuY2U6
KGlkKXNlbmRlcgotewotICAgIENPTU1BTkRfUFJPTE9HVUUKLQotICAgIFtzZWxmIF9leHBhbmRT
ZWxlY3Rpb25Ub0dyYW51bGFyaXR5OlNlbnRlbmNlR3JhbnVsYXJpdHldOwotfQotCi0tICh2b2lk
KXNlbGVjdFdvcmQ6KGlkKXNlbmRlcgotewotICAgIENPTU1BTkRfUFJPTE9HVUUKLQotICAgIFtz
ZWxmIF9leHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFyaXR5OldvcmRHcmFudWxhcml0eV07Ci19Ci0K
LS0gKHZvaWQpZGVsZXRlOihpZClzZW5kZXIKLXsKLSAgICBDT01NQU5EX1BST0xPR1VFCi0KLSAg
ICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSkpCi0gICAgICAgIGNv
cmVGcmFtZS0+ZWRpdG9yKCktPnBlcmZvcm1EZWxldGUoKTsKLX0KLQogLSAoTlNEYXRhICopX3Nl
bGVjdGlvblN0YXJ0Rm9udEF0dHJpYnV0ZXNBc1JURgogewogICAgIEZyYW1lKiBjb3JlRnJhbWUg
PSBjb3JlKFtzZWxmIF9mcmFtZV0pOwpAQCAtNDMwMCw4MCArNDA4Miw2IEBAIE5TU3Ryb2tlQ29s
b3JBdHRyaWJ1dGVOYW1lICAgICAgICAvKiBOU0MKICAgICBbc2VsZiBfY2hhbmdlV29yZENhc2VX
aXRoU2VsZWN0b3I6QHNlbGVjdG9yKGNhcGl0YWxpemVkU3RyaW5nKV07CiB9CiAKLS0gKHZvaWQp
ZGVsZXRlRm9yd2FyZDooaWQpc2VuZGVyCi17Ci0gICAgQ09NTUFORF9QUk9MT0dVRQotCi0gICAg
aWYgKCFbc2VsZiBfaXNFZGl0YWJsZV0pCi0gICAgICAgIHJldHVybjsKLSAgICBGcmFtZSogY29y
ZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICBpZiAoY29yZUZyYW1lKQotICAgICAg
ICBjb3JlRnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRy
b2xsZXI6OkZPUldBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7Ci19Ci0K
LS0gKHZvaWQpZGVsZXRlQmFja3dhcmQ6KGlkKXNlbmRlcgotewotICAgIENPTU1BTkRfUFJPTE9H
VUUKLQotICAgIGlmICghW3NlbGYgX2lzRWRpdGFibGVdKQotICAgICAgICByZXR1cm47Ci0gICAg
RnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAgaWYgKGNvcmVGcmFt
ZSkKLSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxl
Y3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0
cnVlKTsKLX0KLQotLSAodm9pZClkZWxldGVCYWNrd2FyZEJ5RGVjb21wb3NpbmdQcmV2aW91c0No
YXJhY3RlcjooaWQpc2VuZGVyCi17Ci0gICAgQ09NTUFORF9QUk9MT0dVRQotCi0gICAgTE9HX0VS
Uk9SKCJ1bmltcGxlbWVudGVkLCBkb2luZyBkZWxldGVCYWNrd2FyZCBpbnN0ZWFkIik7Ci0KLSAg
ICBpZiAoIVtzZWxmIF9pc0VkaXRhYmxlXSkKLSAgICAgICAgcmV0dXJuOwotICAgIEZyYW1lKiBj
b3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwotICAgIGlmIChjb3JlRnJhbWUpCi0gICAg
ICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29u
dHJvbGxlcjo6QkFDS1dBUkQsIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7Ci19
Ci0KLS0gKHZvaWQpZGVsZXRlVG9CZWdpbm5pbmdPZkxpbmU6KGlkKXNlbmRlcgotewotICAgIENP
TU1BTkRfUFJPTE9HVUUKLQotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFt
ZV0pOwotICAgIGlmIChjb3JlRnJhbWUpCi0gICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmRl
bGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIExpbmVCb3Vu
ZGFyeSwgdHJ1ZSwgZmFsc2UpOwotfQotCi0tICh2b2lkKWRlbGV0ZVRvRW5kT2ZMaW5lOihpZClz
ZW5kZXIKLXsKLSAgICBDT01NQU5EX1BST0xPR1VFCi0KLSAgICAvLyBUbyBtYXRjaCBOU1RleHRW
aWV3LCB0aGlzIGNvbW1hbmQgc2hvdWxkIGRlbGV0ZSB0aGUgbmV3bGluZSBhdCB0aGUgZW5kIG9m
Ci0gICAgLy8gYSBwYXJhZ3JhcGggaWYgeW91IGFyZSBhdCB0aGUgZW5kIG9mIGEgcGFyYWdyYXBo
IChsaWtlIGRlbGV0ZVRvRW5kT2ZQYXJhZ3JhcGggZG9lcyBiZWxvdykuCi0gICAgRnJhbWUqIGNv
cmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAgaWYgKGNvcmVGcmFtZSkKLSAgICAg
ICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250
cm9sbGVyOjpGT1JXQVJELCBMaW5lQm91bmRhcnksIHRydWUsIGZhbHNlKTsKLX0KLQotLSAodm9p
ZClkZWxldGVUb0JlZ2lubmluZ09mUGFyYWdyYXBoOihpZClzZW5kZXIKLXsKLSAgICBDT01NQU5E
X1BST0xPR1VFCi0KLSAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsK
LSAgICBpZiAoY29yZUZyYW1lKQotICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5kZWxldGVX
aXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBQYXJhZ3JhcGhCb3Vu
ZGFyeSwgdHJ1ZSwgZmFsc2UpOwotfQotCi0tICh2b2lkKWRlbGV0ZVRvRW5kT2ZQYXJhZ3JhcGg6
KGlkKXNlbmRlcgotewotICAgIENPTU1BTkRfUFJPTE9HVUUKLQotICAgIC8vIERlc3BpdGUgdGhl
IG5hbWUgb2YgdGhlIG1ldGhvZCwgdGhpcyBzaG91bGQgZGVsZXRlIHRoZSBuZXdsaW5lIGlmIHRo
ZSBjYXJldCBpcyBhdCB0aGUgZW5kIG9mIGEgcGFyYWdyYXBoLgotICAgIEZyYW1lKiBjb3JlRnJh
bWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwotICAgIGlmIChjb3JlRnJhbWUpCi0gICAgICAgIGNv
cmVGcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxl
cjo6Rk9SV0FSRCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsKLX0KLQogLSAodm9p
ZCljb21wbGV0ZTooaWQpc2VuZGVyCiB7CiAgICAgQ09NTUFORF9QUk9MT0dVRQpAQCAtNDM4OSwx
MiArNDA5Nyw2IEBAIE5TU3Ryb2tlQ29sb3JBdHRyaWJ1dGVOYW1lICAgICAgICAvKiBOU0MKIHsK
ICAgICBDT01NQU5EX1BST0xPR1VFCiAKLSAgICBOU1NwZWxsQ2hlY2tlciAqY2hlY2tlciA9IFtO
U1NwZWxsQ2hlY2tlciBzaGFyZWRTcGVsbENoZWNrZXJdOwotICAgIGlmICghY2hlY2tlcikgewot
ICAgICAgICBMT0dfRVJST1IoIk5vIE5TU3BlbGxDaGVja2VyIik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgCiAgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFt
ZV0pKQogICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5hZHZhbmNlVG9OZXh0TWlzc3BlbGxp
bmcoKTsKIH0KQEAgLTQ3NzQsMzMgKzQ0NzYsNiBAQCBOU1N0cm9rZUNvbG9yQXR0cmlidXRlTmFt
ZSAgICAgICAgLyogTlNDCiAgICAgcmV0dXJuIFtbc2VsZiBfd2ViVmlld10gc21hcnRJbnNlcnRE
ZWxldGVFbmFibGVkXSAmJiBbW3NlbGYgX2JyaWRnZV0gc2VsZWN0aW9uR3JhbnVsYXJpdHldID09
IFdvcmRHcmFudWxhcml0eTsKIH0KIAotLSAoRE9NUmFuZ2UgKilfc21hcnREZWxldGVSYW5nZUZv
clByb3Bvc2VkUmFuZ2U6KERPTVJhbmdlICopcHJvcG9zZWRSYW5nZQotewotICAgIGlmIChwcm9w
b3NlZFJhbmdlID09IG5pbCB8fCBbc2VsZiBfY2FuU21hcnRDb3B5T3JEZWxldGVdID09IE5PKQot
ICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIHJldHVybiBbW3NlbGYgX2JyaWRnZV0gc21h
cnREZWxldGVSYW5nZUZvclByb3Bvc2VkUmFuZ2U6cHJvcG9zZWRSYW5nZV07Ci19Ci0KLS0gKHZv
aWQpX3NtYXJ0SW5zZXJ0Rm9yU3RyaW5nOihOU1N0cmluZyAqKXBhc3RlU3RyaW5nIHJlcGxhY2lu
Z1JhbmdlOihET01SYW5nZSAqKXJhbmdlVG9SZXBsYWNlIGJlZm9yZVN0cmluZzooTlNTdHJpbmcg
KiopYmVmb3JlU3RyaW5nIGFmdGVyU3RyaW5nOihOU1N0cmluZyAqKilhZnRlclN0cmluZwotewot
ICAgIGlmICghcGFzdGVTdHJpbmcgfHwgIXJhbmdlVG9SZXBsYWNlIHx8ICFbW3NlbGYgX3dlYlZp
ZXddIHNtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZF0pIHsKLSAgICAgICAgaWYgKGJlZm9yZVN0cmlu
ZykKLSAgICAgICAgICAgICpiZWZvcmVTdHJpbmcgPSBuaWw7Ci0gICAgICAgIGlmIChhZnRlclN0
cmluZykKLSAgICAgICAgICAgICphZnRlclN0cmluZyA9IG5pbDsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICAKLSAgICBbW3NlbGYgX2JyaWRnZV0gc21hcnRJbnNlcnRGb3JTdHJpbmc6cGFz
dGVTdHJpbmcgcmVwbGFjaW5nUmFuZ2U6cmFuZ2VUb1JlcGxhY2UgYmVmb3JlU3RyaW5nOmJlZm9y
ZVN0cmluZyBhZnRlclN0cmluZzphZnRlclN0cmluZ107Ci19Ci0KLS0gKEJPT0wpX3RleHRWaWV3
V2FzRmlyc3RSZXNwb25kZXJBdE1vdXNlRG93blRpbWU6KE5TVGV4dFZpZXcgKil0ZXh0Vmlldwot
ewotICAgIHJldHVybiB0ZXh0VmlldyA9PSBfcHJpdmF0ZS0+Zmlyc3RSZXNwb25kZXJUZXh0Vmll
d0F0TW91c2VEb3duVGltZTsKLX0KLQotCiAtIChOU0V2ZW50ICopX21vdXNlRG93bkV2ZW50CiB7
CiAgICAgcmV0dXJuIF9wcml2YXRlLT5tb3VzZURvd25FdmVudDsKQEAgLTQ4MzYsMTEgKzQ1MTEs
NiBAQCBOU1N0cm9rZUNvbG9yQXR0cmlidXRlTmFtZSAgICAgICAgLyogTlNDCiB9CiAjZW5kaWYK
IAotLSAodm9pZClfd2lsbE1ha2VGaXJzdFJlc3BvbmRlckZvck5vZGVGb2N1cwotewotICAgIF9w
cml2YXRlLT53aWxsQmVjb21lRmlyc3RSZXNwb25kZXJGb3JOb2RlRm9jdXMgPSBZRVM7Ci19Ci0K
IC0gKGlkPFdlYkhUTUxIaWdobGlnaHRlcj4pX2hpZ2hsaWdodGVyRm9yVHlwZTooTlNTdHJpbmcq
KXR5cGUKIHsKICAgICByZXR1cm4gW19wcml2YXRlLT5oaWdobGlnaHRlcnMgb2JqZWN0Rm9yS2V5
OnR5cGVdOwpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3SW50ZXJuYWwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXdJbnRlcm5hbC5oCShy
ZXZpc2lvbiAyODY4NykKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlld0ludGVybmFs
LmgJKHdvcmtpbmcgY29weSkKQEAgLTc4LDcgKzc4LDYgQEAgc3RydWN0IFdlYkhUTUxWaWV3SW50
ZXJwcmV0S2V5RXZlbnRzUGFyYQogCiAgICAgQk9PTCByZXNpZ25pbmdGaXJzdFJlc3BvbmRlcjsK
ICAgICBCT09MIG5leHRSZXNwb25kZXJEaXNhYmxlZE9uY2U7Ci0gICAgQk9PTCB3aWxsQmVjb21l
Rmlyc3RSZXNwb25kZXJGb3JOb2RlRm9jdXM7CiAgICAgCiAgICAgV2ViVGV4dENvbXBsZXRlQ29u
dHJvbGxlciAqY29tcENvbnRyb2xsZXI7CiAgICAgCkBAIC04Nyw4ICs4Niw2IEBAIHN0cnVjdCBX
ZWJIVE1MVmlld0ludGVycHJldEtleUV2ZW50c1BhcmEKICAgICBXZWJIVE1MVmlld0ludGVycHJl
dEtleUV2ZW50c1BhcmFtZXRlcnMgKmludGVycHJldEtleUV2ZW50c1BhcmFtZXRlcnM7CiAgICAg
Qk9PTCByZWNlaXZlZE5PT1A7CiAgICAgCi0gICAgTlNUZXh0VmlldyAqZmlyc3RSZXNwb25kZXJU
ZXh0Vmlld0F0TW91c2VEb3duVGltZTsKLSAgICAKICAgICBXZWJEYXRhU291cmNlICpkYXRhU291
cmNlOwogICAgIFdlYkNvcmU6OkNhY2hlZEltYWdlICpwcm9taXNlZERyYWdUSUZGRGF0YVNvdXJj
ZTsKICAgICAKQEAgLTEwOCwxMiArMTA1LDEwIEBAIHN0cnVjdCBXZWJIVE1MVmlld0ludGVycHJl
dEtleUV2ZW50c1BhcmEKIC0gKHZvaWQpX3NlbGVjdGlvbkNoYW5nZWQ7CiAtICh2b2lkKV91cGRh
dGVGb250UGFuZWw7CiAtIChCT09MKV9jYW5TbWFydENvcHlPckRlbGV0ZTsKLS0gKEJPT0wpX3Rl
eHRWaWV3V2FzRmlyc3RSZXNwb25kZXJBdE1vdXNlRG93blRpbWU6KE5TVGV4dFZpZXcgKil0ZXh0
VmlldzsKICNpZm5kZWYgX19MUDY0X18KIC0gKHZvaWQpX3BhdXNlTnVsbEV2ZW50c0ZvckFsbE5l
dHNjYXBlUGx1Z2luczsKIC0gKHZvaWQpX3Jlc3VtZU51bGxFdmVudHNGb3JBbGxOZXRzY2FwZVBs
dWdpbnM7CiAjZW5kaWYKLS0gKHZvaWQpX3dpbGxNYWtlRmlyc3RSZXNwb25kZXJGb3JOb2RlRm9j
dXM7CiAtIChpZDxXZWJIVE1MSGlnaGxpZ2h0ZXI+KV9oaWdobGlnaHRlckZvclR5cGU6KE5TU3Ry
aW5nKil0eXBlOwogLSAoV2ViRnJhbWUgKilfZnJhbWU7CiAtICh2b2lkKXBhc3RlOihpZClzZW5k
ZXI7CkluZGV4OiBXZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9D
aGFuZ2VMb2cJKHJldmlzaW9uIDI4Njg3KQorKysgV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDA3LTEyLTEzICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6dHJpZ2dlckFjdGlv
bik6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorCiAyMDA3
LTEyLTEyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBTYW0gV2VpbmlnCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkocmV2aXNpb24gMjg2ODcpCisr
KyBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg4LDIwICs0
ODgsMjAgQEAgdm9pZCBRV2ViUGFnZTo6dHJpZ2dlckFjdGlvbihXZWJBY3Rpb24gYQogICAgICAg
ICAgICAgbWFpbkZyYW1lKCktPmQtPmZyYW1lLT5sb2FkZXIoKS0+cmVsb2FkKCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBDdXQ6Ci0gICAgICAgICAgICBlZGl0b3ItPmN1dCgp
OworICAgICAgICAgICAgY29tbWFuZCA9ICJDdXQiOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgQ29weToKLSAgICAgICAgICAgIGVkaXRvci0+Y29weSgpOworICAgICAgICAgICAg
Y29tbWFuZCA9ICJDb3B5IjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFBhc3Rl
OgotICAgICAgICAgICAgZWRpdG9yLT5wYXN0ZSgpOworICAgICAgICAgICAgY29tbWFuZCA9ICJQ
YXN0ZSI7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFVuZG86Ci0gICAgICAg
ICAgICBlZGl0b3ItPnVuZG8oKTsKKyAgICAgICAgICAgIGNvbW1hbmQgPSAiVW5kbyI7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBSZWRvOgotICAgICAgICAgICAgZWRpdG9yLT5y
ZWRvKCk7CisgICAgICAgICAgICBjb21tYW5kID0gIlJlZG8iOwogICAgICAgICAgICAgYnJlYWs7
CiAKICAgICAgICAgY2FzZSBNb3ZlVG9OZXh0Q2hhcjoKQEAgLTU5Myw3ICs1OTMsNiBAQCB2b2lk
IFFXZWJQYWdlOjp0cmlnZ2VyQWN0aW9uKFdlYkFjdGlvbiBhCiAgICAgICAgICAgICBlZGl0b3It
PnNldEJhc2VXcml0aW5nRGlyZWN0aW9uKCJydGwiKTsKICAgICAgICAgICAgIGJyZWFrOwogCi0K
ICAgICAgICAgY2FzZSBUb2dnbGVCb2xkOgogICAgICAgICAgICAgY29tbWFuZCA9ICJUb2dnbGVC
b2xkIjsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjExLDcgKzYxMCw3IEBAIHZvaWQgUVdlYlBh
Z2U6OnRyaWdnZXJBY3Rpb24oV2ViQWN0aW9uIGEKICAgICB9CiAKICAgICBpZiAoY29tbWFuZCkK
LSAgICAgICAgZWRpdG9yLT5leGVjQ29tbWFuZChjb21tYW5kKTsKKyAgICAgICAgZWRpdG9yLT5j
b21tYW5kKGNvbW1hbmQpLmV4ZWN1dGUoKTsKIH0KIAogUVdlYlBhZ2U6Ok5hdmlnYXRpb25SZXF1
ZXN0UmVzcG9uc2UgUVdlYlBhZ2U6Om5hdmlnYXRpb25SZXF1ZXN0ZWQoUVdlYkZyYW1lICpmcmFt
ZSwgY29uc3QgUVdlYk5ldHdvcmtSZXF1ZXN0ICZyZXF1ZXN0LCBRV2ViUGFnZTo6TmF2aWdhdGlv
blR5cGUgdHlwZSkKSW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRR
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dFF0LmNwcAkocmV2aXNpb24gMjg2ODcpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDMsNyArMzQzLDcgQEAgdm9pZCBF
ZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudAogICAgIGlmIChzdGFydC0+aXNDb250
ZW50RWRpdGFibGUoKSkgewogICAgICAgICBzd2l0Y2ggKGtldmVudC0+d2luZG93c1ZpcnR1YWxL
ZXlDb2RlKCkpIHsKICAgICAgICAgICAgIGNhc2UgVktfUkVUVVJOOgotICAgICAgICAgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS0+ZXhlY0NvbW1hbmQoIkluc2VydExpbmVCcmVhayIpOworICAgICAg
ICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiSW5zZXJ0TGluZUJyZWFrIikuZXhl
Y3V0ZSgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19CQUNL
OgogICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihT
ZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwKQEAgLTM1NSwyOSArMzU1LDI5IEBAIHZvaWQg
RWRpdG9yQ2xpZW50UXQ6OmhhbmRsZUtleWJvYXJkRXZlbnQKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGNhc2UgVktfTEVGVDoKICAgICAgICAgICAgICAgICBpZiAoa2V2ZW50
LT5zaGlmdEtleSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmV4ZWND
b21tYW5kKCJNb3ZlTGVmdEFuZE1vZGlmeVNlbGVjdGlvbiIpOwotICAgICAgICAgICAgICAgIGVs
c2UgZnJhbWUtPmVkaXRvcigpLT5leGVjQ29tbWFuZCgiTW92ZUxlZnQiKTsKKyAgICAgICAgICAg
ICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlTGVmdEFuZE1vZGlmeVNlbGVj
dGlvbiIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgICAgICBlbHNlIGZyYW1lLT5lZGl0b3IoKS0+
Y29tbWFuZCgiTW92ZUxlZnQiKS5leGVjdXRlKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIFZLX1JJR0hUOgogICAgICAgICAgICAgICAgIGlmIChrZXZlbnQtPnNo
aWZ0S2V5KCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZXhlY0NvbW1h
bmQoIk1vdmVSaWdodEFuZE1vZGlmeVNlbGVjdGlvbiIpOwotICAgICAgICAgICAgICAgIGVsc2Ug
ZnJhbWUtPmVkaXRvcigpLT5leGVjQ29tbWFuZCgiTW92ZVJpZ2h0Iik7CisgICAgICAgICAgICAg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0
aW9uIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgICAgIGVsc2UgZnJhbWUtPmVkaXRvcigpLT5j
b21tYW5kKCJNb3ZlUmlnaHQiKS5leGVjdXRlKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIFZLX1VQOgogICAgICAgICAgICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0
S2V5KCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZXhlY0NvbW1hbmQo
Ik1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbiIpOwotICAgICAgICAgICAgICAgIGVsc2UgZnJhbWUt
PmVkaXRvcigpLT5leGVjQ29tbWFuZCgiTW92ZVVwIik7CisgICAgICAgICAgICAgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIikuZXhlY3V0
ZSgpOworICAgICAgICAgICAgICAgIGVsc2UgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3Zl
VXAiKS5leGVjdXRlKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IFZLX0RPV046CiAgICAgICAgICAgICAgICAgaWYgKGtldmVudC0+c2hpZnRLZXkoKSkKLSAgICAg
ICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5leGVjQ29tbWFuZCgiTW92ZURvd25BbmRN
b2RpZnlTZWxlY3Rpb24iKTsKLSAgICAgICAgICAgICAgICBlbHNlIGZyYW1lLT5lZGl0b3IoKS0+
ZXhlY0NvbW1hbmQoIk1vdmVEb3duIik7CisgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0
b3IoKS0+Y29tbWFuZCgiTW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iKS5leGVjdXRlKCk7Cisg
ICAgICAgICAgICAgICAgZWxzZSBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVEb3duIiku
ZXhlY3V0ZSgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19Q
UklPUjogIC8vIFBhZ2VVcAotICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZXhlY0Nv
bW1hbmQoIk1vdmVVcEJ5UGFnZUFuZE1vZGlmeUNhcmV0Iik7CisgICAgICAgICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlUGFnZVVwIikuZXhlY3V0ZSgpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19ORVhUOiAgLy8gUGFnZURvd24KLSAg
ICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmV4ZWNDb21tYW5kKCJNb3ZlRG93bkJ5UGFn
ZUFuZE1vZGlmeUNhcmV0Iik7CisgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21t
YW5kKCJNb3ZlUGFnZURvd24iKS5leGVjdXRlKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIFZLX1RBQjoKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0zODcs
MjggKzM4NywyOCBAQCB2b2lkIEVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50CiAg
ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrZXZlbnQtPmN0cmxLZXkoKSkgewogICAgICAgICAg
ICAgICAgICAgICBzd2l0Y2ggKGtldmVudC0+d2luZG93c1ZpcnR1YWxLZXlDb2RlKCkpIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVktfQToKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCktPmV4ZWNDb21tYW5kKCJTZWxlY3RBbGwiKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlNlbGVjdEFsbCIp
LmV4ZWN1dGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhc2UgVktfQjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
cmFtZS0+ZWRpdG9yKCktPmV4ZWNDb21tYW5kKCJUb2dnbGVCb2xkIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJUb2dnbGVCb2xkIikuZXhl
Y3V0ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgICAgICAgICAgY2FzZSBWS19DOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS0+ZXhlY0NvbW1hbmQoIkNvcHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIkNvcHkiKS5leGVjdXRlKCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBjYXNl
IFZLX0k6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5leGVj
Q29tbWFuZCgiVG9nZ2xlSXRhbGljIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLT5jb21tYW5kKCJUb2dnbGVJdGFsaWMiKS5leGVjdXRlKCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBjYXNl
IFZLX1Y6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5leGVj
Q29tbWFuZCgiUGFzdGUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRp
dG9yKCktPmNvbW1hbmQoIlBhc3RlIikuZXhlY3V0ZSgpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBWS19YOgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZXhlY0NvbW1hbmQoIkN1dCIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgi
Q3V0IikuZXhlY3V0ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBWS19ZOgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS0+ZXhlY0NvbW1hbmQoIlJlZG8iKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlJlZG8iKS5leGVjdXRlKCk7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIFZLX1o6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT5leGVjQ29tbWFuZCgiVW5kbyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZy
YW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiVW5kbyIpLmV4ZWN1dGUoKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDE4LDMzICs0MTgsMzMgQEAg
dm9pZCBFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudAogICAgIH0gZWxzZSB7CiAg
ICAgICAgIHN3aXRjaCAoa2V2ZW50LT53aW5kb3dzVmlydHVhbEtleUNvZGUoKSkgewogICAgICAg
ICAgICAgY2FzZSBWS19VUDoKLSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmV4ZWND
b21tYW5kKCJNb3ZlVXAiKTsKKyAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1h
bmQoIk1vdmVVcCIpLmV4ZWN1dGUoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgVktfRE9XTjoKLSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmV4ZWND
b21tYW5kKCJNb3ZlRG93biIpOworICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29t
bWFuZCgiTW92ZURvd24iKS5leGVjdXRlKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIFZLX1BSSU9SOiAgLy8gUGFnZVVwCi0gICAgICAgICAgICAgICAgZnJhbWUt
PmVkaXRvcigpLT5leGVjQ29tbWFuZCgiTW92ZVVwQnlQYWdlQW5kTW9kaWZ5Q2FyZXQiKTsKKyAg
ICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVQYWdlVXBwIikuZXhl
Y3V0ZSgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19ORVhU
OiAgLy8gUGFnZURvd24KLSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmV4ZWNDb21t
YW5kKCJNb3ZlRG93bkJ5UGFnZUFuZE1vZGlmeUNhcmV0Iik7CisgICAgICAgICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlUGFnZURvd24iKS5leGVjdXRlKCk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFZLX0hPTUU6CiAgICAgICAgICAgICAg
ICAgaWYgKGtldmVudC0+Y3RybEtleSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRp
dG9yKCktPmV4ZWNDb21tYW5kKCJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50Iik7CisgICAgICAg
ICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVRvQmVnaW5uaW5nT2ZE
b2N1bWVudCIpLmV4ZWN1dGUoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgVktfRU5EOgogICAgICAgICAgICAgICAgIGlmIChrZXZlbnQtPmN0cmxLZXkoKSkKLSAg
ICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5leGVjQ29tbWFuZCgiTW92ZVRvRW5k
T2ZEb2N1bWVudCIpOworICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1h
bmQoIk1vdmVUb0VuZE9mRG9jdW1lbnQiKS5leGVjdXRlKCk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGlmIChrZXZlbnQtPmN0
cmxLZXkoKSkgewotICAgICAgICAgICAgICAgICAgICBzd2l0Y2goa2V2ZW50LT53aW5kb3dzVmly
dHVhbEtleUNvZGUoKSkgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGtldmVudC0+d2lu
ZG93c1ZpcnR1YWxLZXlDb2RlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVktf
QToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmV4ZWNDb21t
YW5kKCJTZWxlY3RBbGwiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRp
dG9yKCktPmNvbW1hbmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVktfQzogY2Fz
ZSBWS19YOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZXhl
Y0NvbW1hbmQoIkNvcHkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRp
dG9yKCktPmNvbW1hbmQoIkNvcHkiKS5leGVjdXRlKCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAyODY4NykKKysrIFdl
YktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMDct
MTItMTMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChX
ZWJWaWV3OjpleGVjQ29tbWFuZCk6CisgICAgICAgIChXZWJWaWV3Ojpjb3B5KToKKyAgICAgICAg
KFdlYlZpZXc6OmN1dCk6CisgICAgICAgIChXZWJWaWV3OjpwYXN0ZSk6CisgICAgICAgIChXZWJW
aWV3OjpkZWxldGVfKToKKwogMjAwNy0xMi0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZwpJbmRleDogV2ViS2l0L3dp
bi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZp
c2lvbiAyODY4NykKKysrIFdlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEyNDQsMjEgKzEyNDQsMTUgQEAgYm9vbCBXZWJWaWV3Ojptb3VzZVdoZWVsKFdQQVJBTSB3UGFy
YW0sIAogYm9vbCBXZWJWaWV3OjpleGVjQ29tbWFuZChXUEFSQU0gd1BhcmFtLCBMUEFSQU0gLyps
UGFyYW0qLykKIHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigp
LT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBib29sIGhhbmRsZWQgPSBmYWxzZTsKICAgICBz
d2l0Y2ggKExPV09SRCh3UGFyYW0pKSB7Ci0gICAgY2FzZSBTZWxlY3RBbGw6Ci0gICAgICAgIGhh
bmRsZWQgPSBmcmFtZS0+ZWRpdG9yKCktPmV4ZWNDb21tYW5kKCJTZWxlY3RBbGwiKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBVbmRvOgotICAgICAgICBoYW5kbGVkID0gZnJhbWUtPmVkaXRv
cigpLT5leGVjQ29tbWFuZCgiVW5kbyIpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFJlZG86
Ci0gICAgICAgIGhhbmRsZWQgPSBmcmFtZS0+ZWRpdG9yKCktPmV4ZWNDb21tYW5kKCJSZWRvIik7
Ci0gICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFNlbGVjdEFsbDoKKyAgICAgICAgICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNvbW1h
bmQoIlNlbGVjdEFsbCIpLmV4ZWN1dGUoKTsKKyAgICAgICAgY2FzZSBVbmRvOgorICAgICAgICAg
ICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiVW5kbyIpLmV4ZWN1dGUoKTsKKyAg
ICAgICAgY2FzZSBSZWRvOgorICAgICAgICAgICAgcmV0dXJuIGZyYW1lLT5lZGl0b3IoKS0+Y29t
bWFuZCgiUmVkbyIpLmV4ZWN1dGUoKTsKICAgICB9Ci0gICAgcmV0dXJuIGhhbmRsZWQ7CisgICAg
cmV0dXJuIGNhbHNlOwogfQogCiBib29sIFdlYlZpZXc6OmtleVVwKFdQQVJBTSB2aXJ0dWFsS2V5
Q29kZSwgTFBBUkFNIGtleURhdGEsIGJvb2wgc3lzdGVtS2V5RG93bikKQEAgLTEzMDMsOCArMTI5
Nyw4IEBAIHN0YXRpYyBjb25zdCBLZXlEb3duRW50cnkga2V5RG93bkVudHJpZXMKICAgICB7IFZL
X0RPV04sICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZURvd24iICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSwKICAgICB7IFZLX0RPV04sICAgU2hpZnRLZXksICAgICAgICAg
ICAiTW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iICAgICAgICAgICAgICAgICAgfSwKICAgICB7
IFZLX05FWFQsICAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZURvd25BbmRNb2RpZnlTZWxlY3Rp
b24iICAgICAgICAgICAgICAgICAgfSwKLSAgICB7IFZLX1BSSU9SLCAgMCwgICAgICAgICAgICAg
ICAgICAiTW92ZVVwQnlQYWdlQW5kTW9kaWZ5Q2FyZXQiICAgICAgICAgICAgICAgICAgfSwKLSAg
ICB7IFZLX05FWFQsICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZURvd25CeVBhZ2VBbmRNb2Rp
ZnlDYXJldCIgICAgICAgICAgICAgICAgfSwKKyAgICB7IFZLX1BSSU9SLCAgMCwgICAgICAgICAg
ICAgICAgICAiTW92ZVBhZ2VVcCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwK
KyAgICB7IFZLX05FWFQsICAgMCwgICAgICAgICAgICAgICAgICAiTW92ZVBhZ2VEb3duIiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICB7IFZLX0hPTUUsICAgMCwgICAgICAg
ICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIiAgICAgICAgICAgICAgICAgICAgICAg
fSwKICAgICB7IFZLX0hPTUUsICAgU2hpZnRLZXksICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5n
T2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgfSwKICAgICB7IFZLX0hPTUUsICAgQ3RybEtl
eSwgICAgICAgICAgICAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCIgICAgICAgICAgICAgICAg
ICAgfSwKQEAgLTM0ODAsMjEgKzM0NzQsMjEgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBX
ZWJWaWV3OjphcHBseQogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3Ojpjb3B5KCAK
ICAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biogLypzZW5kZXIqLykKIHsKLSAgICBtX3BhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmV4ZWND
b21tYW5kKCJDb3B5Iik7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9y
TWFpbkZyYW1lKCktPmVkaXRvcigpLT5jb21tYW5kKCJDb3B5IikuZXhlY3V0ZSgpOwogICAgIHJl
dHVybiBTX09LOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OmN1dCgg
CiAgICAgICAgIC8qIFtpbl0gKi8gSVVua25vd24qIC8qc2VuZGVyKi8pCiB7Ci0gICAgbV9wYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5leGVj
Q29tbWFuZCgiQ3V0Iik7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9y
TWFpbkZyYW1lKCktPmVkaXRvcigpLT5jb21tYW5kKCJDdXQiKS5leGVjdXRlKCk7CiAgICAgcmV0
dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6cGFzdGUo
IAogICAgICAgICAvKiBbaW5dICovIElVbmtub3duKiAvKnNlbmRlciovKQogewotICAgIG1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+ZXhl
Y0NvbW1hbmQoIlBhc3RlIik7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNl
ZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5jb21tYW5kKCJQYXN0ZSIpLmV4ZWN1dGUoKTsKICAg
ICByZXR1cm4gU19PSzsKIH0KIApAQCAtMzUyNCw3ICszNTE4LDcgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJWaWV3OjpwYXN0ZQogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJW
aWV3OjpkZWxldGVfKCAKICAgICAgICAgLyogW2luXSAqLyBJVW5rbm93biogLypzZW5kZXIqLykK
IHsKLSAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+
ZWRpdG9yKCktPmV4ZWNDb21tYW5kKCJEZWxldGUiKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmNvbW1hbmQoIkRlbGV0ZSIp
LmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsKIH0KICAgICAKSW5kZXg6IFdlYktpdC93eC9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2aXNpb24gMjg2
ODcpCisrKyBXZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTAg
QEAKKzIwMDctMTItMTMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9F
ZGl0b3JDbGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRXeDo6aGFu
ZGxlS2V5Ym9hcmRFdmVudCk6CisKIDIwMDctMTItMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25A
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcKSW5kZXg6IFdlYktp
dC93eC9XZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvd3gvV2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5jcHAJKHJldmlzaW9uIDI4Njg3KQor
KysgV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzksMTkgKzI3OSwxOSBAQCB2b2lkIEVkaXRvckNsaWVudFd4OjpoYW5kbGVLZXli
b2FyZEV2ZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFZLX0xFRlQ6Ci0gICAgICAgICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLT5leGVjQ29tbWFuZCgiTW92ZUxlZnQiKTsKKyAgICAgICAgICAgICAgICBm
cmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVMZWZ0IikuZXhlY3V0ZSgpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAgICAgICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCktPmV4ZWNDb21tYW5kKCJNb3ZlUmlnaHQiKTsKKyAgICAgICAgICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVSaWdodCIpLmV4ZWN1dGUoKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVktfVVA6Ci0gICAgICAgICAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5leGVjQ29tbWFuZCgiTW92ZVVwIik7CisgICAgICAgICAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVXAiKS5leGVjdXRlKCk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFZLX0RPV046Ci0gICAgICAgICAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5leGVjQ29tbWFuZCgiTW92ZURvd24iKTsKKyAgICAgICAg
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVEb3duIikuZXhlY3V0ZSgpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19SRVRVUk46Ci0gICAg
ICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5leGVjQ29tbWFuZCgiSW5zZXJ0TGluZUJyZWFr
Iik7CisgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJJbnNlcnRMaW5l
QnJlYWsiKS5leGVjdXRlKCk7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODY4NykKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDA3LTEyLTEz
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGVkaXRpbmcvZGVsZXRpbmcvNTMwMDM3OS5odG1s
OgorICAgICAgICAqIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLXRvLWVuZC1vZi1wYXJhZ3JhcGgu
aHRtbDoKKyAgICAgICAgKiBlZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWRlbGV0ZS0wMDMuaHRtbDoK
KyAgICAgICAgKiBlZGl0aW5nL2RlbGV0aW5nL3NtYXJ0LWRlbGV0ZS0wMDQuaHRtbDoKKyAgICAg
ICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL25zcmVzcG9uZGVyLWluZGVudC5odG1sOgorICAgICAg
ICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvbnNyZXNwb25kZXItb3V0ZGVudC5odG1sOgorICAgICAg
ICAqIGVkaXRpbmcvc2VsZWN0aW9uLzQ5NDczODcuaHRtbDoKKyAgICAgICAgKiBlZGl0aW5nL3Nl
bGVjdGlvbi81MTk1MTY2LTEuaHRtbDoKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi81MTk1
MTY2LTIuaHRtbDoKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtbGluZS5odG1s
OgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdGlvbi1hY3Rpb25zLmh0bWw6CisK
IDIwMDctMTItMTIgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRp
bmcvNTMwMDM3OS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRp
bmcvNTMwMDM3OS5odG1sCShyZXZpc2lvbiAyODY4NykKKysrIExheW91dFRlc3RzL2VkaXRpbmcv
ZGVsZXRpbmcvNTMwMDM3OS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC02LDE0ICs2LDEwIEBACiBk
aXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2Iik7CiBzZWwgPSB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCk7CiBzZWwuc2V0UG9zaXRpb24oZGl2LCAwKTsKLWlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKLSAgICAvLyBUZXN0IHRvIHNlZSBpZiBkZWxldGVXb3JkQmFja3dhcmQ6
IGhhbmdzLgotICAgIHRleHRJbnB1dENvbnRyb2xsZXIuZG9Db21tYW5kKCJkZWxldGVXb3JkQmFj
a3dhcmQ6Iik7Ci0gICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwg
IlN1Y2Nlc3MgRkFJTCIpOwotICAgIC8vIERlbGV0ZSAnRkFJTCcgd2l0aCBkZWxldGVXb3JkQmFj
a3dhcmQ6IHRvIHZlcmlmeSB0aGF0IGl0J3Mgbm90IGEgbm8tb3AuCi0gICAgdGV4dElucHV0Q29u
dHJvbGxlci5kb0NvbW1hbmQoImRlbGV0ZVdvcmRCYWNrd2FyZDoiKTsKLSAgICB0ZXh0SW5wdXRD
b250cm9sbGVyLmRvQ29tbWFuZCgiZGVsZXRlQmFja3dhcmQ6Iik7Ci19IGVsc2UgewotICAgIGRv
Y3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICJUbyBydW4gdGhpcyB0ZXN0
IG1hbnVhbGx5LiAgRGVsZXRlIGFsbCB0aGlzIHRleHQgYW5kIHRoZW4gb3B0aW9uLWRlbGV0ZS4g
IFNhZmFyaSBzaG91bGRuJ3QgaGFuZy4iKTsKLX0KKy8vIFRlc3QgdG8gc2VlIGlmIERlbGV0ZVdv
cmRCYWNrd2FyZCBoYW5ncy4KK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJEZWxldGVXb3JkQmFja3dh
cmQiKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICJTdWNjZXNz
IEZBSUwiKTsKKy8vIERlbGV0ZSAnRkFJTCcgd2l0aCBEZWxldGVXb3JkQmFja3dhcmQgdG8gdmVy
aWZ5IHRoYXQgaXQncyBub3QgYSBuby1vcC4KK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJEZWxldGVX
b3JkQmFja3dhcmQiKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJEZWxldGVCYWNrd2FyZCIpOwog
PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2RlbGV0ZS10by1l
bmQtb2YtcGFyYWdyYXBoLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9k
ZWxldGluZy9kZWxldGUtdG8tZW5kLW9mLXBhcmFncmFwaC5odG1sCShyZXZpc2lvbiAyODY4NykK
KysrIExheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLXRvLWVuZC1vZi1wYXJhZ3Jh
cGguaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTIsMTggKzEyLDEzIEBACiA8c2NyaXB0PgogCiBm
dW5jdGlvbiBlZGl0aW5nVGVzdCgpIHsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7Ci0gICAgICAgIAotICAgICAgICB0cnkgewotICAgICAgICAgICAgLy8gdGVzdCBmb3Ig
NDU3MDIxOCBieSB1c2luZyBkb3VibGUgZGVsZXRlVG9FbmRPZlBhcmFncmFwaAotICAgICAgICAg
ICAgdGV4dElucHV0Q29udHJvbGxlci5kb0NvbW1hbmQoImRlbGV0ZVRvRW5kT2ZQYXJhZ3JhcGg6
Iik7ICAgIAotICAgICAgICAgICAgdGV4dElucHV0Q29udHJvbGxlci5kb0NvbW1hbmQoImRlbGV0
ZVRvRW5kT2ZQYXJhZ3JhcGg6Iik7ICAgIAorICAgIHRyeSB7CisgICAgICAgIC8vIHRlc3QgZm9y
IDQ1NzAyMTggYnkgdXNpbmcgZG91YmxlIGRlbGV0ZVRvRW5kT2ZQYXJhZ3JhcGgKKyAgICAgICAg
ZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkRlbGV0ZVRvRW5kT2ZQYXJhZ3JhcGgiKTsgICAgCisgICAg
ICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJEZWxldGVUb0VuZE9mUGFyYWdyYXBoIik7ICAgIAog
Ci0gICAgICAgIH0gY2F0Y2ggKGV4KSB7Ci0gICAgICAgICAgICBkb2N1bWVudC53cml0ZSgiRXhj
ZXB0aW9uOiAiICsgZXguZGVzY3JpcHRpb24pOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgZG9jdW1lbnQud3JpdGUoIihjYW5ub3QgcnVuIGludGVyYWN0aXZlbHkpIik7CisgICAg
fSBjYXRjaCAoZXgpIHsKKyAgICAgICAgZG9jdW1lbnQud3JpdGUoIkV4Y2VwdGlvbjogIiArIGV4
LmRlc2NyaXB0aW9uKTsKICAgICB9CiB9CiAKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZGVs
ZXRpbmcvc21hcnQtZGVsZXRlLTAwMy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Vk
aXRpbmcvZGVsZXRpbmcvc21hcnQtZGVsZXRlLTAwMy5odG1sCShyZXZpc2lvbiAyODY4NykKKysr
IExheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvc21hcnQtZGVsZXRlLTAwMy5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNCw2ICsxNCw2IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKICAgICBzZWwubW9kaWZ5KCJtb3ZlIiwgImZvcndhcmQiLCAid29yZCIpOwogICAgIHNl
bC5tb2RpZnkoIm1vdmUiLCAiZm9yd2FyZCIsICJ3b3JkIik7CiAgICAgc2VsLm1vZGlmeSgiZXh0
ZW5kIiwgImJhY2t3YXJkIiwgIndvcmQiKTsKLSAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmRvQ29t
bWFuZCgiZGVsZXRlQmFja3dhcmQ6Iik7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkRlbGV0
ZUJhY2t3YXJkIik7CiB9CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZGVs
ZXRpbmcvc21hcnQtZGVsZXRlLTAwNC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Vk
aXRpbmcvZGVsZXRpbmcvc21hcnQtZGVsZXRlLTAwNC5odG1sCShyZXZpc2lvbiAyODY4NykKKysr
IExheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvc21hcnQtZGVsZXRlLTAwNC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNCw2ICsxNCw2IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKICAgICBzZWwubW9kaWZ5KCJtb3ZlIiwgImZvcndhcmQiLCAid29yZCIpOwogICAgIHNl
bC5tb2RpZnkoIm1vdmUiLCAiZm9yd2FyZCIsICJ3b3JkIik7CiAgICAgc2VsLm1vZGlmeSgiZXh0
ZW5kIiwgImJhY2t3YXJkIiwgIndvcmQiKTsKLSAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmRvQ29t
bWFuZCgiZGVsZXRlRm9yd2FyZDoiKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiRGVsZXRl
Rm9yd2FyZCIpOwogfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWND
b21tYW5kL25zcmVzcG9uZGVyLWluZGVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2VkaXRpbmcvZXhlY0NvbW1hbmQvbnNyZXNwb25kZXItaW5kZW50Lmh0bWwJKHJldmlzaW9uIDI4
Njg3KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9uc3Jlc3BvbmRlci1pbmRl
bnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTEsNSArMTEsNSBAQCB2YXIgc2VsID0gd2luZG93
LmdldFNlbGVjdGlvbigpOwogCiBzZWwuc2V0UG9zaXRpb24oZGl2LCAwKTsKIAotdGV4dElucHV0
Q29udHJvbGxlci5kb0NvbW1hbmQoImluZGVudDoiKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJ
bmRlbnQiKTsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFu
ZC9uc3Jlc3BvbmRlci1vdXRkZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRp
dGluZy9leGVjQ29tbWFuZC9uc3Jlc3BvbmRlci1vdXRkZW50Lmh0bWwJKHJldmlzaW9uIDI4Njg3
KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9uc3Jlc3BvbmRlci1vdXRkZW50
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTExLDUgKzExLDUgQEAgdmFyIHNlbCA9IHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKTsKIAogc2VsLnNldFBvc2l0aW9uKGRpdiwgMCk7CiAKLXRleHRJbnB1dENv
bnRyb2xsZXIuZG9Db21tYW5kKCJvdXRkZW50OiIpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIk91
dGRlbnQiKTsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24v
NDk0NzM4Ny5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
LzQ5NDczODcuaHRtbAkocmV2aXNpb24gMjg2ODcpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi80OTQ3Mzg3Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEyLDE1ICsxMiwxNSBAQCBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAgICAgdmFyIHNlbCA9IHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKTsKICAgICAKICAgICBzZWwuc2V0UG9zaXRpb24odGV4dCwgdGV4dC5sZW5n
dGgpOwotICAgIHRleHRJbnB1dENvbnRyb2xsZXIuZG9Db21tYW5kKCJtb3ZlVG9CZWdpbm5pbmdP
ZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb246Iik7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIk1v
dmVUb0JlZ2lubmluZ09mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiIpOwogICAgIAogICAgIHNlbC5z
ZXRQb3NpdGlvbih0ZXh0LCAwKTsKLSAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmRvQ29tbWFuZCgi
bW92ZVRvRW5kT2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uOiIpOworICAgIGRvY3VtZW50LmV4ZWND
b21tYW5kKCJNb3ZlVG9FbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24iKTsKIAogICAgIHNlbC5z
ZXRQb3NpdGlvbih0ZXh0LCB0ZXh0Lmxlbmd0aCk7Ci0gICAgdGV4dElucHV0Q29udHJvbGxlci5k
b0NvbW1hbmQoIm1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uOiIp
OworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJNb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFwaEFu
ZE1vZGlmeVNlbGVjdGlvbiIpOwogICAgIAogICAgIHNlbC5zZXRQb3NpdGlvbih0ZXh0LCAwKTsK
LSAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmRvQ29tbWFuZCgibW92ZVRvRW5kT2ZQYXJhZ3JhcGhB
bmRNb2RpZnlTZWxlY3Rpb246Iik7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIk1vdmVUb0Vu
ZE9mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9uIik7CiB9CiA8L3NjcmlwdD4KSW5kZXg6IExh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMS5odG1sCShyZXZpc2lvbiAy
ODY4NykKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMS5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0yMCw3ICsyMCw3IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKICAgICAKICAgICBzZWxlY3Rpb24uc2V0QmFzZUFuZEV4dGVudCh0ZXh0LCAzICsg
NSwgdGV4dCwgMyk7CiAgICAgLy8gRXh0ZW5kaW5nIHRoaXMgNSBjaGFyYWN0ZXIgc2VsZWN0aW9u
IHdpbGwgc2VsZWN0IDYgY2hhcmFjdGVycy4KLSAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmRvQ29t
bWFuZCgibW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb246Iik7CisgICAgZG9jdW1lbnQuZXhl
Y0NvbW1hbmQoIk1vdmVGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIik7CiAgICAgLy8gRXh0ZW5k
aW5nIGl0IGluIHRoaXMgd2F5IGZsaXBzIHRoZSBiYXNlIGFuZCB0aGUgZXh0ZW50LgogICAgIGlm
IChzZWxlY3Rpb24uZXh0ZW50T2Zmc2V0IC0gc2VsZWN0aW9uLmJhc2VPZmZzZXQgIT0gNikKICAg
ICAgICAgbG9nKCJGYWlsdXJlOiBTZWxlY3Rpb24gaXNuJ3QgdGhlIHJpZ2h0IHNpemUuIik7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2LTIuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2LTIuaHRtbAkocmV2
aXNpb24gMjg2ODcpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2LTIu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTQsMTAgKzE0LDEwIEBAIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKICAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJkaXYiKS5maXJzdENoaWxkOwogICAgIHZhciBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCk7CiAgICAgc2VsZWN0aW9uLnNldEJhc2VBbmRFeHRlbnQodGV4dCwgMCwgdGV4dCwgMCk7
Ci0gICAgdGV4dElucHV0Q29udHJvbGxlci5kb0NvbW1hbmQoIm1vdmVGb3J3YXJkQW5kTW9kaWZ5
U2VsZWN0aW9uOiIpOwotICAgIHRleHRJbnB1dENvbnRyb2xsZXIuZG9Db21tYW5kKCJtb3ZlRm9y
d2FyZEFuZE1vZGlmeVNlbGVjdGlvbjoiKTsKLSAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmRvQ29t
bWFuZCgibW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb246Iik7Ci0gICAgdGV4dElucHV0Q29u
dHJvbGxlci5kb0NvbW1hbmQoIm1vdmVCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbjoiKTsKKyAg
ICBkb2N1bWVudC5leGVjQ29tbWFuZCgiTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24iKTsK
KyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24i
KTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rp
b24iKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiTW92ZUJhY2t3YXJkQW5kTW9kaWZ5U2Vs
ZWN0aW9uIik7CiB9IGVsc2UgewogICAgIGxvZygiRmFpbHVyZTogVGhpcyB0ZXN0IGNhbm5vdCBi
ZSBydW4gbWFudWFsbHkuIikKIH0KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L3NlbGVjdC1saW5lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxl
Y3Rpb24vc2VsZWN0LWxpbmUuaHRtbAkocmV2aXNpb24gMjg2ODcpCisrKyBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3QtbGluZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw1
ICsxMCw1IEBAIHZhciBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CiAKIHNlbC5zZXRQb3Np
dGlvbihkaXYsIDApOwogaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICB0ZXh0
SW5wdXRDb250cm9sbGVyLmRvQ29tbWFuZCgic2VsZWN0TGluZToiKTsKKyAgICBkb2N1bWVudC5l
eGVjQ29tbWFuZCgiU2VsZWN0TGluZSIpOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3Rpb24tYWN0aW9ucy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdGlvbi1hY3Rpb25zLmh0bWwJKHJldmlz
aW9uIDI4Njg3KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0aW9uLWFj
dGlvbnMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjQsMzcgKzI0LDM3IEBAIGZ1bmN0aW9uIGVk
aXRpbmdUZXN0KCkgewogICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOwogICAgIGV2
ZW50U2VuZGVyLm1vdXNlVXAoKTsKICAgICAKLSAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmRvQ29t
bWFuZCgibW92ZUJhY2t3YXJkOiIpOwotICAgIHRleHRJbnB1dENvbnRyb2xsZXIuZG9Db21tYW5k
KCJtb3ZlQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb246Iik7Ci0gICAgdGV4dElucHV0Q29udHJv
bGxlci5kb0NvbW1hbmQoIm1vdmVEb3duOiIpOwotICAgIHRleHRJbnB1dENvbnRyb2xsZXIuZG9D
b21tYW5kKCJtb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbjoiKTsKLSAgICB0ZXh0SW5wdXRDb250
cm9sbGVyLmRvQ29tbWFuZCgibW92ZUZvcndhcmQ6Iik7Ci0gICAgdGV4dElucHV0Q29udHJvbGxl
ci5kb0NvbW1hbmQoIm1vdmVGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uOiIpOwotICAgIHRleHRJ
bnB1dENvbnRyb2xsZXIuZG9Db21tYW5kKCJtb3ZlTGVmdDoiKTsKLSAgICB0ZXh0SW5wdXRDb250
cm9sbGVyLmRvQ29tbWFuZCgibW92ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb246Iik7Ci0gICAgdGV4
dElucHV0Q29udHJvbGxlci5kb0NvbW1hbmQoIm1vdmVSaWdodDoiKTsKLSAgICB0ZXh0SW5wdXRD
b250cm9sbGVyLmRvQ29tbWFuZCgibW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uOiIpOwotICAg
IHRleHRJbnB1dENvbnRyb2xsZXIuZG9Db21tYW5kKCJtb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50
OiIpOwotICAgIHRleHRJbnB1dENvbnRyb2xsZXIuZG9Db21tYW5kKCJtb3ZlVG9CZWdpbm5pbmdP
ZkxpbmU6Iik7Ci0gICAgdGV4dElucHV0Q29udHJvbGxlci5kb0NvbW1hbmQoIm1vdmVUb0JlZ2lu
bmluZ09mUGFyYWdyYXBoOiIpOwotICAgIHRleHRJbnB1dENvbnRyb2xsZXIuZG9Db21tYW5kKCJt
b3ZlVG9FbmRPZkRvY3VtZW50OiIpOwotICAgIHRleHRJbnB1dENvbnRyb2xsZXIuZG9Db21tYW5k
KCJtb3ZlVG9FbmRPZkxpbmU6Iik7Ci0gICAgdGV4dElucHV0Q29udHJvbGxlci5kb0NvbW1hbmQo
Im1vdmVUb0VuZE9mUGFyYWdyYXBoOiIpOwotICAgIHRleHRJbnB1dENvbnRyb2xsZXIuZG9Db21t
YW5kKCJtb3ZlVXA6Iik7Ci0gICAgdGV4dElucHV0Q29udHJvbGxlci5kb0NvbW1hbmQoIm1vdmVV
cEFuZE1vZGlmeVNlbGVjdGlvbjoiKTsKLSAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmRvQ29tbWFu
ZCgibW92ZVdvcmRCYWNrd2FyZDoiKTsKLSAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmRvQ29tbWFu
ZCgibW92ZVdvcmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbjoiKTsKLSAgICB0ZXh0SW5wdXRD
b250cm9sbGVyLmRvQ29tbWFuZCgibW92ZVdvcmRGb3J3YXJkOiIpOwotICAgIHRleHRJbnB1dENv
bnRyb2xsZXIuZG9Db21tYW5kKCJtb3ZlV29yZEZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb246Iik7
Ci0gICAgdGV4dElucHV0Q29udHJvbGxlci5kb0NvbW1hbmQoIm1vdmVXb3JkTGVmdDoiKTsKLSAg
ICB0ZXh0SW5wdXRDb250cm9sbGVyLmRvQ29tbWFuZCgibW92ZVdvcmRSaWdodDoiKTsKLSAgICB0
ZXh0SW5wdXRDb250cm9sbGVyLmRvQ29tbWFuZCgibW92ZVdvcmRSaWdodEFuZE1vZGlmeVNlbGVj
dGlvbjoiKTsKLSAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmRvQ29tbWFuZCgibW92ZVdvcmRMZWZ0
QW5kTW9kaWZ5U2VsZWN0aW9uOiIpOwotICAgIHRleHRJbnB1dENvbnRyb2xsZXIuZG9Db21tYW5k
KCJwYWdlRG93bjoiKTsKLSAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmRvQ29tbWFuZCgicGFnZVVw
OiIpOwotICAgIHRleHRJbnB1dENvbnRyb2xsZXIuZG9Db21tYW5kKCJzZWxlY3RMaW5lOiIpOwot
ICAgIHRleHRJbnB1dENvbnRyb2xsZXIuZG9Db21tYW5kKCJzZWxlY3RQYXJhZ3JhcGg6Iik7Ci0g
ICAgdGV4dElucHV0Q29udHJvbGxlci5kb0NvbW1hbmQoInNlbGVjdFdvcmQ6Iik7CisgICAgZG9j
dW1lbnQuZXhlY0NvbW1hbmQoIk1vdmVCYWNrd2FyZCIpOworICAgIGRvY3VtZW50LmV4ZWNDb21t
YW5kKCJNb3ZlQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rpb24iKTsKKyAgICBkb2N1bWVudC5leGVj
Q29tbWFuZCgiTW92ZURvd24iKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiTW92ZURvd25B
bmRNb2RpZnlTZWxlY3Rpb24iKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiTW92ZUZvcndh
cmQiKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxl
Y3Rpb24iKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiTW92ZUxlZnQiKTsKKyAgICBkb2N1
bWVudC5leGVjQ29tbWFuZCgiTW92ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24iKTsKKyAgICBkb2N1
bWVudC5leGVjQ29tbWFuZCgiTW92ZVJpZ2h0Iik7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQo
Ik1vdmVSaWdodEFuZE1vZGlmeVNlbGVjdGlvbiIpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5k
KCJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50Iik7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQo
Ik1vdmVUb0JlZ2lubmluZ09mTGluZSIpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJNb3Zl
VG9CZWdpbm5pbmdPZlBhcmFncmFwaCIpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJNb3Zl
VG9FbmRPZkRvY3VtZW50Iik7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIk1vdmVUb0VuZE9m
TGluZSIpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJNb3ZlVG9FbmRPZlBhcmFncmFwaCIp
OworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJNb3ZlVXAiKTsKKyAgICBkb2N1bWVudC5leGVj
Q29tbWFuZCgiTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIik7CisgICAgZG9jdW1lbnQuZXhlY0Nv
bW1hbmQoIk1vdmVXb3JkQmFja3dhcmQiKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiTW92
ZVdvcmRCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIpOworICAgIGRvY3VtZW50LmV4ZWNDb21t
YW5kKCJNb3ZlV29yZEZvcndhcmQiKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiTW92ZVdv
cmRGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIik7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQo
Ik1vdmVXb3JkTGVmdCIpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJNb3ZlV29yZFJpZ2h0
Iik7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIk1vdmVXb3JkUmlnaHRBbmRNb2RpZnlTZWxl
Y3Rpb24iKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiTW92ZVdvcmRMZWZ0QW5kTW9kaWZ5
U2VsZWN0aW9uIik7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIk1vdmVQYWdlRG93biIpOwor
ICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJNb3ZlUGFnZVVwIik7CisgICAgZG9jdW1lbnQuZXhl
Y0NvbW1hbmQoIlNlbGVjdExpbmUiKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiU2VsZWN0
UGFyYWdyYXBoIik7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlNlbGVjdFdvcmQiKTsKIH0K
IAogPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17892</attachid>
            <date>2007-12-14 09:42:19 -0800</date>
            <delta_ts>2007-12-14 10:52:45 -0800</delta_ts>
            <desc>patch</desc>
            <filename>ExecCommandPatch.txt</filename>
            <type>text/plain</type>
            <size>107034</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODcxMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjUgQEAKKzIwMDctMTItMTMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gaHR0
cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MjAKKyAgICAgICAgICBjaGFu
Z2UgcmVncmVzc2lvbiB0ZXN0cyB0byB1c2UgZG9jdW1lbnQuZXhlY0NvbW1hbmQgaW5zdGVhZCBv
ZiB0ZXh0SW5wdXRDb250cm9sbGVyLmRvQ29tbWFuZAorCisgICAgICAgIEFkZCBhIGZldyBtb3Jl
IG9wZXJhdGlvbnMgdG8gZG9jdW1lbnQuZXhlY0NvbW1hbmQuCisKKyAgICAgICAgRmluaXNoZWQg
dXAgdGhlIHRyYW5zaXRpb24gdG8gdGhlIG5ldyBFZGl0b3I6OkNvbW1hbmQsIGluY2x1ZGluZyBy
ZW1vdmluZworICAgICAgICB0aGUgRWRpdG9yOjpleGVjQ29tbWFuZCBmdW5jdGlvbi4KKworICAg
ICAgICAqIFdlYkNvcmUuYmFzZS5leHA6IEFkZGVkIEVkaXRvcjo6Q29tbWFuZDo6aXNTdXBwb3J0
ZWQuCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDogUmVtb3ZlZCBleGVjQ29tbWFuZC4KKyAg
ICAgICAgKiBlZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXhw
YW5kU2VsZWN0aW9uVG9HcmFudWxhcml0eSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6dmVy
dGljYWxTY3JvbGxEaXN0YW5jZSk6IEFkZGVkOyByZXBsYWNlcyBjYW5TY3JvbGwuCisgICAgICAg
IChXZWJDb3JlOjpleGVjdXRlRGVsZXRlQmFja3dhcmQpOiBBZGRlZC4gTW92ZWQgY29kZSBoZXJl
IGZyb20gV2ViSFRNTFZpZXcuCisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRGVsZXRlQmFja3dh
cmRCeURlY29tcG9zaW5nUHJldmlvdXNDaGFyYWN0ZXIpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmV4ZWN1dGVEZWxldGVGb3J3YXJkKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlRGVsZXRlVG9CZWdpbm5pbmdPZkxpbmUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4
ZWN1dGVEZWxldGVUb0JlZ2lubmluZ09mUGFyYWdyYXBoKTogRGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlRGVsZXRlVG9FbmRPZkxpbmUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OmV4ZWN1dGVEZWxldGVUb0VuZE9mUGFyYWdyYXBoKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpleGVjdXRlTW92ZVBhZ2VEb3duKTogUmVuYW1lZCB0aGlzIGNvbW1hbmQgdG8gYmUgY29uc2lz
dGVudCB3aXRoIGFsbCB0aGUgb3RoZXIKKyAgICAgICAgTW92ZSBjb21tYW5kcy4gVGhleSBhbGwg
bW9kaWZ5IHRoZSBjYXJldC4gUmVpbXBsZW1lbnRlZCB0byBtYXRjaCB0aGUgTWFjIE9TIFggdmVy
c2lvbiBieQorICAgICAgICByZW1vdmluZyB0aGUgZXhwbGljaXQgc2Nyb2xsaW5nLCBhbmQgbGV0
dGluZyBpdCBiZSBkb25lIGF1dG9tYXRpY2FsbHkgYnkgY29kZSB0aGF0IG1ha2VzCisgICAgICAg
IHRoZSBjYXJldCB2aXNpYmxlLiBJbiBzb21lIGNhc2VzIHRoZSBvbGQgY29kZSB3b3VsZCBzY3Jv
bGwgdHdpY2Ugd2hpY2ggd2FzIGhhcm1sZXNzIGJ1dAorICAgICAgICB1bm5lY2Vzc2FyeS4KKyAg
ICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVNb3ZlUGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb24pOiBB
ZGRlZC4gTW92ZWQgY29kZSBoZXJlIGZyb20gV2ViSFRNTFZpZXcuCisgICAgICAgIChXZWJDb3Jl
OjpleGVjdXRlTW92ZVBhZ2VVcCk6IFNlZSBNb3ZlUGFnZURvd24gYWJvdmUuCisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlTW92ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbik6IEFkZGVkLiBNb3Zl
ZCBjb2RlIGhlcmUgZnJvbSBXZWJIVE1MVmlldy4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVT
ZWxlY3RMaW5lKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlU2VsZWN0UGFyYWdy
YXBoKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlU2VsZWN0U2VudGVuY2UpOiBE
aXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVTZWxlY3RXb3JkKTogRGl0dG8uCisgICAg
ICAgIChXZWJDb3JlOjpleGVjdXRlU3dhcFdpdGhNYXJrKTogU29tZSBzbWFsbCB0d2Vha3MuCisK
KyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRleHRNZW51SXRlbVNlbGVjdGVkKTogQ2hh
bmdlZCB0byB1c2UgRWRpdG9yOjpjb21tYW5kKCkKKyAgICAgICAgaW5zdGVhZCBvZiBFZGl0b3I6
OmV4ZWNDb21tYW5kKCkuIFRoaXMgY29kZSBjb3VsZCBiZSBjaGFuZ2VkIHRvIHVzZSBFZGl0b3I6
OkNvbW1hbmQgcXVpdGUgYQorICAgICAgICBiaXQgbW9yZSwgYnV0IEkgZGlkbid0IGRvIHRoYXQg
dGhpcyB0aW1lLgorCisgICAgICAgIC0gUmVtb3ZlZCBzb21lIG9ic29sZXRlIHVudXNlZCBjb2Rl
LgorCisgICAgICAgICogcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjpwYXNzTW91c2VEb3duRXZlbnRUb1dpZGdldCk6IFJlbW92ZWQg
dGhlIHNwZWNpYWwgY2FzZSBjb2RlIGZvcgorICAgICAgICBOU1RleHRWaWV3LiBUaGlzIHdhcyBs
ZWZ0IG92ZXIgZnJvbSB3aGVuIHdlIHVzZWQgTlNUZXh0RmllbGQgYW5kIE5TVGV4dFZpZXcgZm9y
IGZvcm0KKyAgICAgICAgZWxlbWVudHMgYW5kIGlzIG5vIGxvbmdlciB1c2VkIGF0IGFsbC4KKwor
ICAgICAgICAqIHBhZ2UvbWFjL1dlYkNvcmVGcmFtZUJyaWRnZS5oOiBSZW1vdmVkIDIwIHVudXNl
ZCBtZXRob2RzIHRoYXQgd2VyZSBzdGlsbCBvbiBvbmUgc2lkZQorICAgICAgICBvZiB0aGUgYnJp
ZGdlIG9yIGFub3RoZXIuIFdlIHJlYWxseSBuZWVkIHRvIGZpbmQgYSB0aW1lIHRvIHRlYXIgZG93
biB0aGUgcmVzdCBvZiB0aGUKKyAgICAgICAgYnJpZGdlLCBidXQgdGhhdCdzIG5vdCB0aGlzIHBh
dGNoLgorCisgICAgICAgICogcGFnZS9tYWMvV2ViQ29yZUZyYW1lQnJpZGdlLm1tOgorICAgICAg
ICAoLVtXZWJDb3JlRnJhbWVCcmlkZ2UgYWRkRGF0YTpdKTogQ2hhbmdlZCB0byBnZXQgYXQgdGhl
IF9zaG91bGRDcmVhdGVSZW5kZXJlcnMgZmllbGQgZGlyZWN0bHkKKyAgICAgICAgaW5zdGVhZCBv
ZiB1c2luZyBhIG1ldGhvZC4KKyAgICAgICAgKC1bV2ViQ29yZUZyYW1lQnJpZGdlIHJhbmdlQnlB
bHRlcmluZ0N1cnJlbnRTZWxlY3Rpb246U2VsZWN0aW9uQ29udHJvbGxlcjo6ZGlyZWN0aW9uOlNl
bGVjdGlvbkNvbnRyb2xsZXI6OmdyYW51bGFyaXR5Ol0pOgorICAgICAgICBUb29rIG91dCBvYnNv
bGV0ZSBjb21tZW50IGFib3V0IG1hdGNoaW5nIGVudW1zICh3ZSB1c2UgYSBzaW5nbGUgZW51bSBu
b3cgYW5kIGhhdmUgZm9yIHNvbWUKKyAgICAgICAgdGltZSkuCisgICAgICAgICgtW1dlYkNvcmVG
cmFtZUJyaWRnZSBzZWxlY3Rpb25HcmFudWxhcml0eV0pOiBEaXR0by4KKwogMjAwNy0xMi0xMyAg
QWxwIFRva2VyICA8YWxwQGF0b2tlci5jb20+CiAKICAgICAgICAgY3VybCBiYWNrZW5kIGJ1aWxk
IGZpeCBmb3IgYnJlYWthZ2UgaW50cm9kdWNlZCBpbiByMjg3MDkuCkluZGV4OiBXZWJDb3JlL1dl
YkNvcmUuYmFzZS5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCShy
ZXZpc2lvbiAyODcxMSkKKysrIFdlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAkod29ya2luZyBjb3B5
KQpAQCAtNjc1LDYgKzY3NSw3IEBAIF9fWk5LN1dlYkNvcmU2RWRpdG9yMTdzaG91bGREZWxldGVS
YW5nZUUKIF9fWk5LN1dlYkNvcmU2RWRpdG9yMjJzZWxlY3Rpb25TdGFydEhhc1N0eWxlRVBOU18x
OUNTU1N0eWxlRGVjbGFyYXRpb25FCiBfX1pOSzdXZWJDb3JlNkVkaXRvcjIzZ2V0Q29tcG9zaXRp
b25TZWxlY3Rpb25FUmpTMV8KIF9fWk5LN1dlYkNvcmU2RWRpdG9yNmNhbkN1dEV2CitfX1pOSzdX
ZWJDb3JlNkVkaXRvcjdDb21tYW5kMTFpc1N1cHBvcnRlZEV2CiBfX1pOSzdXZWJDb3JlNkVkaXRv
cjdDb21tYW5kMTVpc1RleHRJbnNlcnRpb25FdgogX19aTks3V2ViQ29yZTZFZGl0b3I3Q29tbWFu
ZDVzdGF0ZUVQTlNfNUV2ZW50RQogX19aTks3V2ViQ29yZTZFZGl0b3I3Q29tbWFuZDdleGVjdXRl
RVBOU181RXZlbnRFCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCShyZXZpc2lvbiAyODcxMSkKKysrIFdlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTg2LDkgKzE4Niw2IEBAIHB1Ymxp
YzoKICAgICBDb21tYW5kIGNvbW1hbmQoY29uc3QgU3RyaW5nJiBjb21tYW5kTmFtZSk7IC8vIERl
ZmF1bHQgaXMgQ29tbWFuZEZyb21NZW51T3JLZXlCaW5kaW5nLgogICAgIENvbW1hbmQgY29tbWFu
ZChjb25zdCBTdHJpbmcmIGNvbW1hbmROYW1lLCBFZGl0b3JDb21tYW5kU291cmNlKTsKIAotICAg
IC8vIERlcHJlY2F0ZWQsIGJ1dCB1c2VkIGJ5IG9sZCBrZXkgYmluZGluZyBjb2RlLiBLZWVwIGFy
b3VuZCB1bnRpbCB3ZSBoYXZlIGVsaW1pbmF0ZWQgYWxsIGNhbGxlcnMuCi0gICAgYm9vbCBleGVj
Q29tbWFuZChjb25zdCBBdG9taWNTdHJpbmcmIGNvbW1hbmROYW1lLCBFdmVudCogdHJpZ2dlcmlu
Z0V2ZW50ID0gMCk7Ci0KICAgICBib29sIGluc2VydFRleHQoY29uc3QgU3RyaW5nJiwgRXZlbnQq
IHRyaWdnZXJpbmdFdmVudCk7CiAgICAgYm9vbCBpbnNlcnRUZXh0V2l0aG91dFNlbmRpbmdUZXh0
RXZlbnQoY29uc3QgU3RyaW5nJiwgYm9vbCBzZWxlY3RJbnNlcnRlZFRleHQsIEV2ZW50KiB0cmln
Z2VyaW5nRXZlbnQgPSAwKTsKICAgICBib29sIGluc2VydExpbmVCcmVhaygpOwpJbmRleDogV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRp
dGluZy9FZGl0b3JDb21tYW5kLmNwcAkocmV2aXNpb24gMjg3MTEpCisrKyBXZWJDb3JlL2VkaXRp
bmcvRWRpdG9yQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw2ICsxNzQsMTYgQEAg
c3RhdGljIGJvb2wgZXhlY3V0ZUluc2VydE5vZGUoRnJhbWUqIGZyYQogICAgIHJldHVybiBleGVj
dXRlSW5zZXJ0RnJhZ21lbnQoZnJhbWUsIGZyYWdtZW50LnJlbGVhc2UoKSk7CiB9CiAKK3N0YXRp
YyBib29sIGV4cGFuZFNlbGVjdGlvblRvR3JhbnVsYXJpdHkoRnJhbWUqIGZyYW1lLCBUZXh0R3Jh
bnVsYXJpdHkgZ3JhbnVsYXJpdHkpCit7CisgICAgU2VsZWN0aW9uIHNlbGVjdGlvbiA9IGZyYW1l
LT5zZWxlY3Rpb25Db250cm9sbGVyKCktPnNlbGVjdGlvbigpOworICAgIHNlbGVjdGlvbi5leHBh
bmRVc2luZ0dyYW51bGFyaXR5KGdyYW51bGFyaXR5KTsKKyAgICBpZiAoIWZyYW1lLT5zaG91bGRD
aGFuZ2VTZWxlY3Rpb24oc2VsZWN0aW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGZy
YW1lLT5zZWxlY3Rpb25Db250cm9sbGVyKCktPmV4cGFuZFVzaW5nR3JhbnVsYXJpdHkoZ3JhbnVs
YXJpdHkpOworICAgIHJldHVybiB0cnVlOworfQorCiBzdGF0aWMgVHJpU3RhdGUgc3RhdGVTdHls
ZShGcmFtZSogZnJhbWUsIGludCBwcm9wZXJ0eUlELCBjb25zdCBjaGFyKiBkZXNpcmVkVmFsdWUp
CiB7CiAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IG5ldyBD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjsKQEAgLTE4NiwxNCArMTk2LDIxIEBAIHN0YXRpYyBT
dHJpbmcgdmFsdWVTdHlsZShGcmFtZSogZnJhbWUsIGkKICAgICByZXR1cm4gZnJhbWUtPnNlbGVj
dGlvblN0YXJ0U3R5bGVQcm9wZXJ0eVZhbHVlKHByb3BlcnR5SUQpOwogfQogCi1zdGF0aWMgYm9v
bCBjYW5TY3JvbGwoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKK3N0YXRpYyBib29sIHZlcnRpY2Fs
U2Nyb2xsRGlzdGFuY2UoRnJhbWUqIGZyYW1lKQogeworICAgIE5vZGUqIGZvY3VzZWROb2RlID0g
ZnJhbWUtPmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCk7CisgICAgaWYgKCFmb2N1c2VkTm9kZSkK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGZvY3VzZWRO
b2RlLT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgUmVuZGVyU3R5bGUqIHN0eWxlID0gcmVuZGVyZXIt
PnN0eWxlKCk7CiAgICAgaWYgKCFzdHlsZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJl
dHVybiBzdHlsZS0+b3ZlcmZsb3dZKCkgPT0gT1NDUk9MTCB8fCBzdHlsZS0+b3ZlcmZsb3dZKCkg
PT0gT0FVVE8gfHwgcmVuZGVyZXItPmlzVGV4dEFyZWEoKTsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgaWYgKCEoc3R5bGUtPm92ZXJmbG93WSgpID09IE9TQ1JPTEwgfHwgc3R5bGUtPm92ZXJmbG93
WSgpID09IE9BVVRPIHx8IHJlbmRlcmVyLT5pc1RleHRBcmVhKCkpKQorICAgICAgICByZXR1cm4g
MDsKKyAgICBpbnQgaGVpZ2h0ID0gcmVuZGVyZXItPmNsaWVudEhlaWdodCgpOworICAgIHJldHVy
biBtYXgoKGhlaWdodCArIDEpIC8gMiwgaGVpZ2h0IC0gUEFHRV9LRUVQKTsKIH0KIAogc3RhdGlj
IFJlZlB0cjxSYW5nZT4gdW5pb25ET01SYW5nZXMoUmFuZ2UqIGEsIFJhbmdlKiBiKQpAQCAtMjU4
LDYgKzI3NSw1MyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlKEZyYW1lKiBmcmFtZSwgCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlQmFja3dhcmQo
RnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYp
Cit7CisgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNv
bnRyb2xsZXI6OkJBQ0tXQVJELCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgZmFsc2UsIHRydWUpOwor
ICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlQmFja3dhcmRC
eURlY29tcG9zaW5nUHJldmlvdXNDaGFyYWN0ZXIoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRv
ckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCit7CisgICAgTE9HX0VSUk9SKCJEZWxldGVC
YWNrd2FyZEJ5RGVjb21wb3NpbmdQcmV2aW91c0NoYXJhY3RlciBpcyBub3QgaW1wbGVtZW50ZWQs
IGRvaW5nIERlbGV0ZUJhY2t3YXJkIGluc3RlYWQiKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCktPmRl
bGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIENoYXJhY3Rl
ckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRp
YyBib29sIGV4ZWN1dGVEZWxldGVGb3J3YXJkKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JD
b21tYW5kU291cmNlIHNvdXJjZSwgY29uc3QgU3RyaW5nJikKK3sKKyAgICBmcmFtZS0+ZWRpdG9y
KCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgQ2hh
cmFjdGVyR3JhbnVsYXJpdHksIGZhbHNlLCB0cnVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwor
c3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5lKEZyYW1lKiBmcmFtZSwg
RXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQoreworICAgIGZyYW1l
LT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNL
V0FSRCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K3N0YXRpYyBib29sIGV4ZWN1dGVEZWxldGVUb0JlZ2lubmluZ09mUGFyYWdyYXBoKEZyYW1lKiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQoreworICAg
IGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVy
OjpCQUNLV0FSRCwgUGFyYWdyYXBoQm91bmRhcnksIHRydWUsIGZhbHNlKTsKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworc3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZVRvRW5kT2ZMaW5lKEZyYW1lKiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQoreworICAg
IC8vIERlc3BpdGUgaXRzIG5hbWUsIHRoaXMgY29tbWFuZCBzaG91bGQgZGVsZXRlIHRoZSBuZXds
aW5lIGF0IHRoZSBlbmQgb2YKKyAgICAvLyBhIHBhcmFncmFwaCBpZiB5b3UgYXJlIGF0IHRoZSBl
bmQgb2YgYSBwYXJhZ3JhcGggKGxpa2UgRGVsZXRlVG9FbmRPZlBhcmFncmFwaCkuCisgICAgZnJh
bWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZP
UldBUkQsIExpbmVCb3VuZGFyeSwgdHJ1ZSwgZmFsc2UpOworICAgIHJldHVybiB0cnVlOworfQor
CitzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9FbmRPZlBhcmFncmFwaChGcmFtZSogZnJhbWUs
IEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKK3sKKyAgICAvLyBE
ZXNwaXRlIGl0cyBuYW1lLCB0aGlzIGNvbW1hbmQgc2hvdWxkIGRlbGV0ZSB0aGUgbmV3bGluZSBh
dCB0aGUgZW5kIG9mCisgICAgLy8gYSBwYXJhZ3JhcGggaWYgeW91IGFyZSBhdCB0aGUgZW5kIG9m
IGEgcGFyYWdyYXBoLgorICAgIGZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihT
ZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSwgZmFs
c2UpOworICAgIHJldHVybiB0cnVlOworfQorCiBzdGF0aWMgYm9vbCBleGVjdXRlRGVsZXRlVG9N
YXJrKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJp
bmcmKQogewogICAgIFJlZlB0cjxSYW5nZT4gbWFyayA9IGZyYW1lLT5tYXJrKCkudG9SYW5nZSgp
OwpAQCAtNDc0LDE5ICs1MzgsNiBAQCBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZURvd25BbmRNb2Rp
ZnlTZWxlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlRG93
bkJ5UGFnZUFuZE1vZGlmeUNhcmV0KEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5k
U291cmNlLCBjb25zdCBTdHJpbmcmKQotewotICAgIE5vZGUqIGZvY3VzZWROb2RlID0gZnJhbWUt
PmRvY3VtZW50KCktPmZvY3VzZWROb2RlKCk7Ci0gICAgaWYgKCFmb2N1c2VkTm9kZSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBmb2N1c2VkTm9k
ZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIWNhblNjcm9sbChyZW5kZXJlcikpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBib29sIGhhbmRsZWRTY3JvbGwgPSByZW5kZXJlci0+c2Nyb2xsKFNj
cm9sbERvd24sIFNjcm9sbEJ5UGFnZSk7Ci0gICAgYm9vbCBoYW5kbGVkQ2FyZXRNb3ZlID0gZnJh
bWUtPnNlbGVjdGlvbkNvbnRyb2xsZXIoKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1P
VkUsIHJlbmRlcmVyLT5jbGllbnRIZWlnaHQoKSAtIFBBR0VfS0VFUCk7Ci0gICAgcmV0dXJuIGhh
bmRsZWRTY3JvbGwgfHwgaGFuZGxlZENhcmV0TW92ZTsKLX0KLQogc3RhdGljIGJvb2wgZXhlY3V0
ZU1vdmVGb3J3YXJkKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBj
b25zdCBTdHJpbmcmKQogewogICAgIGZyYW1lLT5zZWxlY3Rpb25Db250cm9sbGVyKCktPm1vZGlm
eShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJE
LCBDaGFyYWN0ZXJHcmFudWxhcml0eSwgdHJ1ZSk7CkBAIC01MTEsNiArNTYyLDM4IEBAIHN0YXRp
YyBib29sIGV4ZWN1dGVNb3ZlTGVmdEFuZE1vZGlmeVNlbGUKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAorc3RhdGljIGJvb2wgZXhlY3V0ZU1vdmVQYWdlRG93bihGcmFtZSogZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKK3sKKyAgICBpbnQgZGlzdGFuY2Ug
PSB2ZXJ0aWNhbFNjcm9sbERpc3RhbmNlKGZyYW1lKTsKKyAgICBpZiAoIWRpc3RhbmNlKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGZyYW1lLT5zZWxlY3Rpb25Db250cm9sbGVy
KCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFLCBkaXN0YW5jZSwgdHJ1ZSk7Cit9
CisKK3N0YXRpYyBib29sIGV4ZWN1dGVNb3ZlUGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb24oRnJh
bWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCit7
CisgICAgaW50IGRpc3RhbmNlID0gdmVydGljYWxTY3JvbGxEaXN0YW5jZShmcmFtZSk7CisgICAg
aWYgKCFkaXN0YW5jZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBmcmFtZS0+
c2VsZWN0aW9uQ29udHJvbGxlcigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6RVhURU5E
LCBkaXN0YW5jZSwgdHJ1ZSk7Cit9CisKK3N0YXRpYyBib29sIGV4ZWN1dGVNb3ZlUGFnZVVwKEZy
YW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcmKQor
eworICAgIGludCBkaXN0YW5jZSA9IHZlcnRpY2FsU2Nyb2xsRGlzdGFuY2UoZnJhbWUpOworICAg
IGlmICghZGlzdGFuY2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gZnJhbWUt
PnNlbGVjdGlvbkNvbnRyb2xsZXIoKS0+bW9kaWZ5KFNlbGVjdGlvbkNvbnRyb2xsZXI6Ok1PVkUs
IC1kaXN0YW5jZSwgdHJ1ZSk7Cit9CisKK3N0YXRpYyBib29sIGV4ZWN1dGVNb3ZlUGFnZVVwQW5k
TW9kaWZ5U2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNl
LCBjb25zdCBTdHJpbmcmKQoreworICAgIGludCBkaXN0YW5jZSA9IHZlcnRpY2FsU2Nyb2xsRGlz
dGFuY2UoZnJhbWUpOworICAgIGlmICghZGlzdGFuY2UpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICByZXR1cm4gZnJhbWUtPnNlbGVjdGlvbkNvbnRyb2xsZXIoKS0+bW9kaWZ5KFNlbGVjdGlv
bkNvbnRyb2xsZXI6OkVYVEVORCwgLWRpc3RhbmNlLCB0cnVlKTsKK30KKwogc3RhdGljIGJvb2wg
ZXhlY3V0ZU1vdmVSaWdodChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJj
ZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBmcmFtZS0+c2VsZWN0aW9uQ29udHJvbGxlcigpLT5t
b2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6UklH
SFQsIENoYXJhY3RlckdyYW51bGFyaXR5LCB0cnVlKTsKQEAgLTY0MywxOSArNzI2LDYgQEAgc3Rh
dGljIGJvb2wgZXhlY3V0ZU1vdmVVcEFuZE1vZGlmeVNlbGVjdAogICAgIHJldHVybiB0cnVlOwog
fQogCi1zdGF0aWMgYm9vbCBleGVjdXRlTW92ZVVwQnlQYWdlQW5kTW9kaWZ5Q2FyZXQoRnJhbWUq
IGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCi17Ci0g
ICAgTm9kZSogZm9jdXNlZE5vZGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZE5vZGUoKTsK
LSAgICBpZiAoIWZvY3VzZWROb2RlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IGZvY3VzZWROb2RlLT5yZW5kZXJlcigpOwotICAgIGlmICghY2Fu
U2Nyb2xsKHJlbmRlcmVyKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGJvb2wgaGFuZGxl
ZFNjcm9sbCA9IHJlbmRlcmVyLT5zY3JvbGwoU2Nyb2xsRG93biwgU2Nyb2xsQnlQYWdlKTsKLSAg
ICBib29sIGhhbmRsZWRDYXJldE1vdmUgPSBmcmFtZS0+c2VsZWN0aW9uQ29udHJvbGxlcigpLT5t
b2RpZnkoU2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSwgLShyZW5kZXJlci0+Y2xpZW50SGVpZ2h0
KCkgLSBQQUdFX0tFRVApKTsKLSAgICByZXR1cm4gaGFuZGxlZFNjcm9sbCB8fCBoYW5kbGVkQ2Fy
ZXRNb3ZlOwotfQotCiBzdGF0aWMgYm9vbCBleGVjdXRlTW92ZVdvcmRCYWNrd2FyZChGcmFtZSog
ZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKICAg
ICBmcmFtZS0+c2VsZWN0aW9uQ29udHJvbGxlcigpLT5tb2RpZnkoU2VsZWN0aW9uQ29udHJvbGxl
cjo6TU9WRSwgU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFDS1dBUkQsIFdvcmRHcmFudWxhcml0eSwg
dHJ1ZSk7CkBAIC03NDksNiArODE5LDIxIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVTZWxlY3RBbGwo
RnJhbWUqIGZyYW0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIGJvb2wgZXhlY3V0ZVNl
bGVjdExpbmUoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0
IFN0cmluZyYpCit7CisgICAgcmV0dXJuIGV4cGFuZFNlbGVjdGlvblRvR3JhbnVsYXJpdHkoZnJh
bWUsIExpbmVHcmFudWxhcml0eSk7Cit9CisKK3N0YXRpYyBib29sIGV4ZWN1dGVTZWxlY3RQYXJh
Z3JhcGgoRnJhbWUqIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0
cmluZyYpCit7CisgICAgcmV0dXJuIGV4cGFuZFNlbGVjdGlvblRvR3JhbnVsYXJpdHkoZnJhbWUs
IFBhcmFncmFwaEdyYW51bGFyaXR5KTsKK30KKworc3RhdGljIGJvb2wgZXhlY3V0ZVNlbGVjdFNl
bnRlbmNlKEZyYW1lKiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBT
dHJpbmcmKQoreworICAgIHJldHVybiBleHBhbmRTZWxlY3Rpb25Ub0dyYW51bGFyaXR5KGZyYW1l
LCBTZW50ZW5jZUdyYW51bGFyaXR5KTsKK30KKwogc3RhdGljIGJvb2wgZXhlY3V0ZVNlbGVjdFRv
TWFyayhGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3Ry
aW5nJikKIHsKICAgICBSZWZQdHI8UmFuZ2U+IG1hcmsgPSBmcmFtZS0+bWFyaygpLnRvUmFuZ2Uo
KTsKQEAgLTc2MSw2ICs4NDYsMTEgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVNlbGVjdFRvTWFyayhG
cmFtZSogZgogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgYm9vbCBleGVjdXRlU2VsZWN0
V29yZChGcmFtZSogZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3Ry
aW5nJikKK3sKKyAgICByZXR1cm4gZXhwYW5kU2VsZWN0aW9uVG9HcmFudWxhcml0eShmcmFtZSwg
V29yZEdyYW51bGFyaXR5KTsKK30KKwogc3RhdGljIGJvb2wgZXhlY3V0ZVNldE1hcmsoRnJhbWUq
IGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7CiAg
ICAgZnJhbWUtPnNldE1hcmsoZnJhbWUtPnNlbGVjdGlvbkNvbnRyb2xsZXIoKS0+c2VsZWN0aW9u
KCkpOwpAQCAtNzg1LDEyICs4NzUsMTEgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZVN1cGVyc2NyaXB0
KEZyYW1lKiBmcgogc3RhdGljIGJvb2wgZXhlY3V0ZVN3YXBXaXRoTWFyayhGcmFtZSogZnJhbWUs
IEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBjb25z
dCBTZWxlY3Rpb24mIG1hcmsgPSBmcmFtZS0+bWFyaygpOwotICAgIFNlbGVjdGlvbiBzZWxlY3Rp
b24gPSBmcmFtZS0+c2VsZWN0aW9uQ29udHJvbGxlcigpLT5zZWxlY3Rpb24oKTsKKyAgICBjb25z
dCBTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb25Db250cm9sbGVyKCktPnNl
bGVjdGlvbigpOwogICAgIGlmIChtYXJrLmlzTm9uZSgpIHx8IHNlbGVjdGlvbi5pc05vbmUoKSkg
ewogICAgICAgICBzeXN0ZW1CZWVwKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0K
ICAgICBmcmFtZS0+c2VsZWN0aW9uQ29udHJvbGxlcigpLT5zZXRTZWxlY3Rpb24obWFyayk7CiAg
ICAgZnJhbWUtPnNldE1hcmsoc2VsZWN0aW9uKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEwNDIs
NiArMTEzMSwxMyBAQCBzdGF0aWMgY29uc3QgQ29tbWFuZE1hcCYgY3JlYXRlQ29tbWFuZE1hCiAg
ICAgICAgIHsgIkNyZWF0ZUxpbmsiLCB7IGV4ZWN1dGVDcmVhdGVMaW5rLCBzdXBwb3J0ZWQsIGVu
YWJsZWRJblJpY2hseUVkaXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJ
bnNlcnRpb24gfSB9LAogICAgICAgICB7ICJDdXQiLCB7IGV4ZWN1dGVDdXQsIHN1cHBvcnRlZCwg
ZW5hYmxlZEN1dCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24gfSB9LAog
ICAgICAgICB7ICJEZWxldGUiLCB7IGV4ZWN1dGVEZWxldGUsIHN1cHBvcnRlZCwgZW5hYmxlZElu
RWRpdGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiB9IH0s
CisgICAgICAgIHsgIkRlbGV0ZUJhY2t3YXJkIiwgeyBleGVjdXRlRGVsZXRlQmFja3dhcmQsIHN1
cHBvcnRlZCwgZW5hYmxlZEluRWRpdGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90
VGV4dEluc2VydGlvbiB9IH0sCisgICAgICAgIHsgIkRlbGV0ZUJhY2t3YXJkQnlEZWNvbXBvc2lu
Z1ByZXZpb3VzQ2hhcmFjdGVyIiwgeyBleGVjdXRlRGVsZXRlQmFja3dhcmRCeURlY29tcG9zaW5n
UHJldmlvdXNDaGFyYWN0ZXIsIHN1cHBvcnRlZCwgZW5hYmxlZEluRWRpdGFibGVUZXh0LCBzdGF0
ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiB9IH0sCisgICAgICAgIHsgIkRlbGV0
ZUZvcndhcmQiLCB7IGV4ZWN1dGVEZWxldGVGb3J3YXJkLCBzdXBwb3J0ZWQsIGVuYWJsZWRJbkVk
aXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24gfSB9LAor
ICAgICAgICB7ICJEZWxldGVUb0JlZ2lubmluZ09mTGluZSIsIHsgZXhlY3V0ZURlbGV0ZVRvQmVn
aW5uaW5nT2ZMaW5lLCBzdXBwb3J0ZWQsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dCwgc3RhdGVOb25l
LCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24gfSB9LAorICAgICAgICB7ICJEZWxldGVUb0Jl
Z2lubmluZ09mUGFyYWdyYXBoIiwgeyBleGVjdXRlRGVsZXRlVG9CZWdpbm5pbmdPZlBhcmFncmFw
aCwgc3VwcG9ydGVkLCBlbmFibGVkSW5FZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxs
LCBub3RUZXh0SW5zZXJ0aW9uIH0gfSwKKyAgICAgICAgeyAiRGVsZXRlVG9FbmRPZkxpbmUiLCB7
IGV4ZWN1dGVEZWxldGVUb0VuZE9mTGluZSwgc3VwcG9ydGVkLCBlbmFibGVkSW5FZGl0YWJsZVRl
eHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uIH0gfSwKKyAgICAgICAg
eyAiRGVsZXRlVG9FbmRPZlBhcmFncmFwaCIsIHsgZXhlY3V0ZURlbGV0ZVRvRW5kT2ZQYXJhZ3Jh
cGgsIHN1cHBvcnRlZCwgZW5hYmxlZEluRWRpdGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVs
bCwgbm90VGV4dEluc2VydGlvbiB9IH0sCiAgICAgICAgIHsgIkRlbGV0ZVRvTWFyayIsIHsgZXhl
Y3V0ZURlbGV0ZVRvTWFyaywgc3VwcG9ydGVkLCBlbmFibGVkSW5FZGl0YWJsZVRleHQsIHN0YXRl
Tm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uIH0gfSwKICAgICAgICAgeyAiRGVsZXRl
V29yZEJhY2t3YXJkIiwgeyBleGVjdXRlRGVsZXRlV29yZEJhY2t3YXJkLCBzdXBwb3J0ZWQsIGVu
YWJsZWRJbkVkaXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRp
b24gfSB9LAogICAgICAgICB7ICJEZWxldGVXb3JkRm9yd2FyZCIsIHsgZXhlY3V0ZURlbGV0ZVdv
cmRGb3J3YXJkLCBzdXBwb3J0ZWQsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2
YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24gfSB9LApAQCAtMTA3NiwxMSArMTE3MiwxNCBAQCBz
dGF0aWMgY29uc3QgQ29tbWFuZE1hcCYgY3JlYXRlQ29tbWFuZE1hCiAgICAgICAgIHsgIk1vdmVC
YWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIsIHsgZXhlY3V0ZU1vdmVCYWNrd2FyZEFuZE1vZGlm
eVNlbGVjdGlvbiwgc3VwcG9ydGVkLCBlbmFibGVkSW5FZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwg
dmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uIH0gfSwKICAgICAgICAgeyAiTW92ZURvd24iLCB7
IGV4ZWN1dGVNb3ZlRG93biwgc3VwcG9ydGVkLCBlbmFibGVkSW5FZGl0YWJsZVRleHQsIHN0YXRl
Tm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uIH0gfSwKICAgICAgICAgeyAiTW92ZURv
d25BbmRNb2RpZnlTZWxlY3Rpb24iLCB7IGV4ZWN1dGVNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlv
biwgc3VwcG9ydGVkLCBlbmFibGVkSW5FZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxs
LCBub3RUZXh0SW5zZXJ0aW9uIH0gfSwKLSAgICAgICAgeyAiTW92ZURvd25CeVBhZ2VBbmRNb2Rp
ZnlDYXJldCIsIHsgZXhlY3V0ZU1vdmVEb3duQnlQYWdlQW5kTW9kaWZ5Q2FyZXQsIHN1cHBvcnRl
ZCwgZW5hYmxlZEluRWRpdGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dElu
c2VydGlvbiB9IH0sCiAgICAgICAgIHsgIk1vdmVGb3J3YXJkIiwgeyBleGVjdXRlTW92ZUZvcndh
cmQsIHN1cHBvcnRlZCwgZW5hYmxlZEluRWRpdGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVs
bCwgbm90VGV4dEluc2VydGlvbiB9IH0sCiAgICAgICAgIHsgIk1vdmVGb3J3YXJkQW5kTW9kaWZ5
U2VsZWN0aW9uIiwgeyBleGVjdXRlTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24sIHN1cHBv
cnRlZCwgZW5hYmxlZEluRWRpdGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4
dEluc2VydGlvbiB9IH0sCiAgICAgICAgIHsgIk1vdmVMZWZ0IiwgeyBleGVjdXRlTW92ZUxlZnQs
IHN1cHBvcnRlZCwgZW5hYmxlZEluRWRpdGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwg
bm90VGV4dEluc2VydGlvbiB9IH0sCiAgICAgICAgIHsgIk1vdmVMZWZ0QW5kTW9kaWZ5U2VsZWN0
aW9uIiwgeyBleGVjdXRlTW92ZUxlZnRBbmRNb2RpZnlTZWxlY3Rpb24sIHN1cHBvcnRlZCwgZW5h
YmxlZEluRWRpdGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlv
biB9IH0sCisgICAgICAgIHsgIk1vdmVQYWdlRG93biIsIHsgZXhlY3V0ZU1vdmVQYWdlRG93biwg
c3VwcG9ydGVkLCBlbmFibGVkSW5FZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBu
b3RUZXh0SW5zZXJ0aW9uIH0gfSwKKyAgICAgICAgeyAiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2Vs
ZWN0aW9uIiwgeyBleGVjdXRlTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uLCBzdXBwb3J0
ZWQsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJ
bnNlcnRpb24gfSB9LAorICAgICAgICB7ICJNb3ZlUGFnZVVwIiwgeyBleGVjdXRlTW92ZVBhZ2VV
cCwgc3VwcG9ydGVkLCBlbmFibGVkSW5FZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxs
LCBub3RUZXh0SW5zZXJ0aW9uIH0gfSwKKyAgICAgICAgeyAiTW92ZVBhZ2VVcEFuZE1vZGlmeVNl
bGVjdGlvbiIsIHsgZXhlY3V0ZU1vdmVQYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24sIHN1cHBvcnRl
ZCwgZW5hYmxlZEluRWRpdGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dElu
c2VydGlvbiB9IH0sCiAgICAgICAgIHsgIk1vdmVQYXJhZ3JhcGhCYWNrd2FyZEFuZE1vZGlmeVNl
bGVjdGlvbiIsIHsgZXhlY3V0ZU1vdmVQYXJhZ3JhcGhCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlv
biwgc3VwcG9ydGVkLCBlbmFibGVkSW5FZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxs
LCBub3RUZXh0SW5zZXJ0aW9uIH0gfSwKICAgICAgICAgeyAiTW92ZVBhcmFncmFwaEZvcndhcmRB
bmRNb2RpZnlTZWxlY3Rpb24iLCB7IGV4ZWN1dGVNb3ZlUGFyYWdyYXBoRm9yd2FyZEFuZE1vZGlm
eVNlbGVjdGlvbiwgc3VwcG9ydGVkLCBlbmFibGVkSW5FZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwg
dmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uIH0gfSwKICAgICAgICAgeyAiTW92ZVJpZ2h0Iiwg
eyBleGVjdXRlTW92ZVJpZ2h0LCBzdXBwb3J0ZWQsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dCwgc3Rh
dGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24gfSB9LApAQCAtMTEwMyw3ICsxMjAy
LDYgQEAgc3RhdGljIGNvbnN0IENvbW1hbmRNYXAmIGNyZWF0ZUNvbW1hbmRNYQogICAgICAgICB7
ICJNb3ZlVG9FbmRPZlNlbnRlbmNlQW5kTW9kaWZ5U2VsZWN0aW9uIiwgeyBleGVjdXRlTW92ZVRv
RW5kT2ZTZW50ZW5jZUFuZE1vZGlmeVNlbGVjdGlvbiwgc3VwcG9ydGVkLCBlbmFibGVkSW5FZGl0
YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uIH0gfSwKICAg
ICAgICAgeyAiTW92ZVVwIiwgeyBleGVjdXRlTW92ZVVwLCBzdXBwb3J0ZWQsIGVuYWJsZWRJbkVk
aXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24gfSB9LAog
ICAgICAgICB7ICJNb3ZlVXBBbmRNb2RpZnlTZWxlY3Rpb24iLCB7IGV4ZWN1dGVNb3ZlVXBBbmRN
b2RpZnlTZWxlY3Rpb24sIHN1cHBvcnRlZCwgZW5hYmxlZEluRWRpdGFibGVUZXh0LCBzdGF0ZU5v
bmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiB9IH0sCi0gICAgICAgIHsgIk1vdmVVcEJ5
UGFnZUFuZE1vZGlmeUNhcmV0IiwgeyBleGVjdXRlTW92ZVVwQnlQYWdlQW5kTW9kaWZ5Q2FyZXQs
IHN1cHBvcnRlZCwgZW5hYmxlZEluRWRpdGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwg
bm90VGV4dEluc2VydGlvbiB9IH0sCiAgICAgICAgIHsgIk1vdmVXb3JkQmFja3dhcmQiLCB7IGV4
ZWN1dGVNb3ZlV29yZEJhY2t3YXJkLCBzdXBwb3J0ZWQsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dCwg
c3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24gfSB9LAogICAgICAgICB7ICJN
b3ZlV29yZEJhY2t3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uIiwgeyBleGVjdXRlTW92ZVdvcmRCYWNr
d2FyZEFuZE1vZGlmeVNlbGVjdGlvbiwgc3VwcG9ydGVkLCBlbmFibGVkSW5FZGl0YWJsZVRleHQs
IHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uIH0gfSwKICAgICAgICAgeyAi
TW92ZVdvcmRGb3J3YXJkIiwgeyBleGVjdXRlTW92ZVdvcmRGb3J3YXJkLCBzdXBwb3J0ZWQsIGVu
YWJsZWRJbkVkaXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRp
b24gfSB9LApAQCAtMTExOSw3ICsxMjE3LDExIEBAIHN0YXRpYyBjb25zdCBDb21tYW5kTWFwJiBj
cmVhdGVDb21tYW5kTWEKICAgICAgICAgeyAiUmVkbyIsIHsgZXhlY3V0ZVJlZG8sIHN1cHBvcnRl
ZCwgZW5hYmxlZFJlZG8sIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uIH0g
fSwKICAgICAgICAgeyAiUmVtb3ZlRm9ybWF0IiwgeyBleGVjdXRlUmVtb3ZlRm9ybWF0LCBzdXBw
b3J0ZWQsIGVuYWJsZWRSYW5nZUluRWRpdGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwg
bm90VGV4dEluc2VydGlvbiB9IH0sCiAgICAgICAgIHsgIlNlbGVjdEFsbCIsIHsgZXhlY3V0ZVNl
bGVjdEFsbCwgc3VwcG9ydGVkLCBlbmFibGVkLCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4
dEluc2VydGlvbiB9IH0sCisgICAgICAgIHsgIlNlbGVjdExpbmUiLCB7IGV4ZWN1dGVTZWxlY3RM
aW5lLCBzdXBwb3J0ZWQsIGVuYWJsZWRBbnlTZWxlY3Rpb24sIHN0YXRlTm9uZSwgdmFsdWVOdWxs
LCBub3RUZXh0SW5zZXJ0aW9uIH0gfSwKKyAgICAgICAgeyAiU2VsZWN0UGFyYWdyYXBoIiwgeyBl
eGVjdXRlU2VsZWN0UGFyYWdyYXBoLCBzdXBwb3J0ZWQsIGVuYWJsZWRBbnlTZWxlY3Rpb24sIHN0
YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uIH0gfSwKKyAgICAgICAgeyAiU2Vs
ZWN0U2VudGVuY2UiLCB7IGV4ZWN1dGVTZWxlY3RTZW50ZW5jZSwgc3VwcG9ydGVkLCBlbmFibGVk
QW55U2VsZWN0aW9uLCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiB9IH0s
CiAgICAgICAgIHsgIlNlbGVjdFRvTWFyayIsIHsgZXhlY3V0ZVNlbGVjdFRvTWFyaywgc3VwcG9y
dGVkLCBlbmFibGVkQW55U2VsZWN0aW9uQW5kTWFyaywgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5v
dFRleHRJbnNlcnRpb24gfSB9LAorICAgICAgICB7ICJTZWxlY3RXb3JkIiwgeyBleGVjdXRlU2Vs
ZWN0V29yZCwgc3VwcG9ydGVkLCBlbmFibGVkQW55U2VsZWN0aW9uLCBzdGF0ZU5vbmUsIHZhbHVl
TnVsbCwgbm90VGV4dEluc2VydGlvbiB9IH0sCiAgICAgICAgIHsgIlNldE1hcmsiLCB7IGV4ZWN1
dGVTZXRNYXJrLCBzdXBwb3J0ZWQsIGVuYWJsZWRBbnlTZWxlY3Rpb24sIHN0YXRlTm9uZSwgdmFs
dWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uIH0gfSwKICAgICAgICAgeyAiU3RyaWtldGhyb3VnaCIs
IHsgZXhlY3V0ZVN0cmlrZXRocm91Z2gsIHN1cHBvcnRlZCwgZW5hYmxlZEluUmljaGx5RWRpdGFi
bGVUZXh0LCBzdGF0ZVN0cmlrZXRocm91Z2gsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiB9
IH0sCiAgICAgICAgIHsgIlN1YnNjcmlwdCIsIHsgZXhlY3V0ZVN1YnNjcmlwdCwgc3VwcG9ydGVk
LCBlbmFibGVkSW5SaWNobHlFZGl0YWJsZVRleHQsIHN0YXRlU3Vic2NyaXB0LCB2YWx1ZU51bGws
IG5vdFRleHRJbnNlcnRpb24gfSB9LApAQCAtMTI3MCw5ICsxMzcyLDQgQEAgYm9vbCBFZGl0b3I6
OkNvbW1hbmQ6OmlzVGV4dEluc2VydGlvbigpIAogICAgIHJldHVybiBtX2NvbW1hbmQgJiYgbV9j
b21tYW5kLT5pc1RleHRJbnNlcnRpb247CiB9CiAKLWJvb2wgRWRpdG9yOjpleGVjQ29tbWFuZChj
b25zdCBBdG9taWNTdHJpbmcmIGNvbW1hbmROYW1lLCBFdmVudCogdHJpZ2dlcmluZ0V2ZW50KQot
ewotICAgIHJldHVybiBjb21tYW5kKGNvbW1hbmROYW1lKS5leGVjdXRlKHRyaWdnZXJpbmdFdmVu
dCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Db250ZXh0
TWVudUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyODcxMSkKKysrIFdlYkNvcmUvcGFnZS9Db250
ZXh0TWVudUNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsMTAgKzIxNCwxMCBA
QCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJCiAgICAgICAgICAgICAg
ICAgb3Blbk5ld1dpbmRvdyhyZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCksIGZyYW1lKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ0JvbGQ6Ci0gICAg
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmV4ZWNDb21tYW5kKCJUb2dnbGVCb2xkIik7CisgICAg
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlRvZ2dsZUJvbGQiKS5leGVjdXRlKCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb250ZXh0TWVudUl0ZW1UYWdJdGFs
aWM6Ci0gICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmV4ZWNDb21tYW5kKCJUb2dnbGVJdGFs
aWMiKTsKKyAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiVG9nZ2xlSXRhbGlj
IikuZXhlY3V0ZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ29udGV4dE1l
bnVJdGVtVGFnVW5kZXJsaW5lOgogICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT50b2dnbGVV
bmRlcmxpbmUoKTsKSW5kZXg6IFdlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCShyZXZpc2lv
biAyODcxMSkKKysrIFdlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yNDMsMzcgKzI0MywxNiBAQCBib29sIEV2ZW50SGFuZGxlcjo6cGFzc01vdXNl
RG93bkV2ZW50VG9XCiAgICAgQVNTRVJUKG5vZGVWaWV3KTsKICAgICBBU1NFUlQoW25vZGVWaWV3
IHN1cGVydmlld10pOwogICAgIE5TVmlldyAqdmlldyA9IFtub2RlVmlldyBoaXRUZXN0Oltbbm9k
ZVZpZXcgc3VwZXJ2aWV3XSBjb252ZXJ0UG9pbnQ6W2N1cnJlbnRFdmVudCgpLmdldCgpIGxvY2F0
aW9uSW5XaW5kb3ddIGZyb21WaWV3Om5pbF1dOwotICAgIGlmICghdmlldykKKyAgICBpZiAoIXZp
ZXcpIHsKICAgICAgICAgLy8gV2UgcHJvYmFibHkgaGl0IHRoZSBib3JkZXIgb2YgYSBSZW5kZXJX
aWRnZXQKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogICAgIAotICAgIGlmIChbbV9mcmFt
ZS0+YnJpZGdlKCkgZmlyc3RSZXNwb25kZXJdID09IHZpZXcpIHsKLSAgICAgICAgLy8gSW4gdGhl
IGNhc2Ugd2hlcmUgd2UganVzdCBiZWNhbWUgZmlyc3QgcmVzcG9uZGVyLCB3ZSBzaG91bGQgc2Vu
ZCB0aGUgbW91c2VEb3duOgotICAgICAgICAvLyB0byB0aGUgTlNUZXh0RmllbGQsIG5vdCB0aGUg
TlNUZXh0RmllbGQncyBlZGl0b3IuIFRoaXMgY29kZSBtYWtlcyBzdXJlIHRoYXQgaGFwcGVucy4K
LSAgICAgICAgLy8gSWYgd2UgZG9uJ3QgZG8gdGhpcywgd2Ugc2VlIGEgZmxhc2ggb2Ygc2VsZWN0
ZWQgdGV4dCB3aGVuIGNsaWNraW5nIGluIGEgdGV4dCBmaWVsZC4KLSAgICAgICAgLy8gRklYTUU6
IFRoaXMgaXMgdGhlIG9ubHkgY2FsbGVyIG9mIHRleHRWaWV3V2FzRmlyc3RSZXNwb25kZXJBdE1v
dXNlRG93blRpbWUuIFdoZW4gd2UKLSAgICAgICAgLy8gZWxpbWluYXRlIGFsbCB1c2Ugb2YgTlNU
ZXh0RmllbGQvTlNUZXh0VmlldyBpbiBmb3JtIGZpZWxkcyB3ZSBjYW4gZWxpbWluYXRlIHRoaXMg
Y29kZSwKLSAgICAgICAgLy8gYW5kIHRleHRWaWV3V2FzRmlyc3RSZXNwb25kZXJBdE1vdXNlRG93
blRpbWU6LCBhbmQgdGhlIGluc3RhbmNlIHZhcmlhYmxlIFdlYkhUTUxWaWV3Ci0gICAgICAgIC8v
IGtlZXBzIHNvbGVseSB0byBzdXBwb3J0IHRleHRWaWV3V2FzRmlyc3RSZXNwb25kZXJBdE1vdXNl
RG93blRpbWU6LgotICAgICAgICBpZiAoW3ZpZXcgaXNLaW5kT2ZDbGFzczpbTlNUZXh0VmlldyBj
bGFzc11dICYmICFbbV9mcmFtZS0+YnJpZGdlKCkgdGV4dFZpZXdXYXNGaXJzdFJlc3BvbmRlckF0
TW91c2VEb3duVGltZTooTlNUZXh0VmlldyAqKXZpZXddKSB7Ci0gICAgICAgICAgICBOU1ZpZXcg
KnN1cGVydmlldyA9IHZpZXc7Ci0gICAgICAgICAgICB3aGlsZSAoc3VwZXJ2aWV3ICE9IG5vZGVW
aWV3KSB7Ci0gICAgICAgICAgICAgICAgc3VwZXJ2aWV3ID0gW3N1cGVydmlldyBzdXBlcnZpZXdd
OwotICAgICAgICAgICAgICAgIEFTU0VSVChzdXBlcnZpZXcpOwotICAgICAgICAgICAgICAgIGlm
IChbc3VwZXJ2aWV3IGlzS2luZE9mQ2xhc3M6W05TQ29udHJvbCBjbGFzc11dKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIE5TQ29udHJvbCAqY29udHJvbCA9IHN0YXRpY19jYXN0PE5TQ29udHJvbCo+
KHN1cGVydmlldyk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChbY29udHJvbCBjdXJyZW50RWRp
dG9yXSA9PSB2aWV3KQotICAgICAgICAgICAgICAgICAgICAgICAgdmlldyA9IHN1cGVydmlldzsK
LSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKKyAgICBpZiAoW21fZnJhbWUtPmJyaWRnZSgp
IGZpcnN0UmVzcG9uZGVyXSAhPSB2aWV3KSB7CiAgICAgICAgIC8vIE5vcm1hbGx5IFtOU1dpbmRv
dyBzZW5kRXZlbnQ6XSBoYW5kbGVzIHNldHRpbmcgdGhlIGZpcnN0IHJlc3BvbmRlci4KICAgICAg
ICAgLy8gQnV0IGluIG91ciBjYXNlLCB0aGUgZXZlbnQgd2FzIHNlbnQgdG8gdGhlIHZpZXcgcmVw
cmVzZW50aW5nIHRoZSBlbnRpcmUgd2ViIHBhZ2UuCi0gICAgICAgIGlmIChbY3VycmVudEV2ZW50
KCkuZ2V0KCkgY2xpY2tDb3VudF0gPD0gMSAmJiBbdmlldyBhY2NlcHRzRmlyc3RSZXNwb25kZXJd
ICYmIFt2aWV3IG5lZWRzUGFuZWxUb0JlY29tZUtleV0pIHsKKyAgICAgICAgaWYgKFtjdXJyZW50
RXZlbnQoKS5nZXQoKSBjbGlja0NvdW50XSA8PSAxICYmIFt2aWV3IGFjY2VwdHNGaXJzdFJlc3Bv
bmRlcl0gJiYgW3ZpZXcgbmVlZHNQYW5lbFRvQmVjb21lS2V5XSkKICAgICAgICAgICAgIFttX2Zy
YW1lLT5icmlkZ2UoKSBtYWtlRmlyc3RSZXNwb25kZXI6dmlld107Ci0gICAgICAgIH0KICAgICB9
CiAKICAgICAvLyBXZSBuZWVkIHRvICJkZWZlciBsb2FkaW5nIiB3aGlsZSB0cmFja2luZyB0aGUg
bW91c2UsIGJlY2F1c2UgdGVhcmluZyBkb3duIHRoZQpJbmRleDogV2ViQ29yZS9wYWdlL21hYy9X
ZWJDb3JlRnJhbWVCcmlkZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvbWFjL1dlYkNv
cmVGcmFtZUJyaWRnZS5oCShyZXZpc2lvbiAyODcxMSkKKysrIFdlYkNvcmUvcGFnZS9tYWMvV2Vi
Q29yZUZyYW1lQnJpZGdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw4ICsxMDMsNiBAQCBlbnVt
IFdlYlNjcm9sbEdyYW51bGFyaXR5IHsKIC0gKGlkKWluaXQ7CiAtICh2b2lkKWNsb3NlOwogCi0t
ICh2b2lkKWFkZERhdGE6KE5TRGF0YSAqKWRhdGE7Ci0KIC0gKHZvaWQpY2xlYXJGcmFtZTsKIAog
LSAoTlNVUkwgKiliYXNlVVJMOwpAQCAtMTIwLDcgKzExOCw2IEBAIGVudW0gV2ViU2Nyb2xsR3Jh
bnVsYXJpdHkgewogLSAodm9pZClmb3JjZUxheW91dFdpdGhNaW5pbXVtUGFnZVdpZHRoOihmbG9h
dCltaW5QYWdlV2lkdGggbWF4aW11bVBhZ2VXaWR0aDooZmxvYXQpbWF4UGFnZVdpZHRoIGFkanVz
dGluZ1ZpZXdTaXplOihCT09MKWFkanVzdFNpemVGbGFnOwogLSAodm9pZClzZW5kU2Nyb2xsRXZl
bnQ7CiAtIChCT09MKW5lZWRzTGF5b3V0OwotLSAodm9pZClzZXROZWVkc0xheW91dDsKIC0gKHZv
aWQpZHJhd1JlY3Q6KE5TUmVjdClyZWN0OwogLSAodm9pZClhZGp1c3RQYWdlSGVpZ2h0TmV3Oihm
bG9hdCAqKW5ld0JvdHRvbSB0b3A6KGZsb2F0KW9sZFRvcCBib3R0b206KGZsb2F0KW9sZEJvdHRv
bSBsaW1pdDooZmxvYXQpYm90dG9tTGltaXQ7CiAtIChOU0FycmF5Kiljb21wdXRlUGFnZVJlY3Rz
V2l0aFByaW50V2lkdGhTY2FsZUZhY3RvcjooZmxvYXQpcHJpbnRXaWR0aFNjYWxlRmFjdG9yIHBy
aW50SGVpZ2h0OihmbG9hdClwcmludEhlaWdodDsKQEAgLTE2MywxNyArMTYwLDEzIEBAIGVudW0g
V2ViU2Nyb2xsR3JhbnVsYXJpdHkgewogLSAoTlNSZWN0KWZpcnN0UmVjdEZvckRPTVJhbmdlOihE
T01SYW5nZSAqKXJhbmdlOwogLSAodm9pZClzY3JvbGxET01SYW5nZVRvVmlzaWJsZTooRE9NUmFu
Z2UgKilyYW5nZTsKIAotLy8gRW1hY3Mtc3R5bGUtZWRpdGluZyAibWFyayIKLS0gKERPTVJhbmdl
ICopbWFya0RPTVJhbmdlOwotCiAtIChOU0ZvbnQgKilmb250Rm9yU2VsZWN0aW9uOihCT09MICop
aGFzTXVsdGlwbGVGb250czsKIC0gKE5TV3JpdGluZ0RpcmVjdGlvbiliYXNlV3JpdGluZ0RpcmVj
dGlvbkZvclNlbGVjdGlvblN0YXJ0OwogCiAtIChOU1N0cmluZyAqKXN0cmluZ1dpdGhEYXRhOihO
U0RhdGEgKilkYXRhOyAvLyB1c2luZyB0aGUgZW5jb2Rpbmcgb2YgdGhlIGZyYW1lJ3MgbWFpbiBy
ZXNvdXJjZQogKyAoTlNTdHJpbmcgKilzdHJpbmdXaXRoRGF0YTooTlNEYXRhICopZGF0YSB0ZXh0
RW5jb2RpbmdOYW1lOihOU1N0cmluZyAqKXRleHRFbmNvZGluZ05hbWU7IC8vIG5pbCBmb3IgdGV4
dEVuY29kaW5nTmFtZSBtZWFucyBMYXRpbi0xCiAKLS0gKHZvaWQpc2V0U2hvdWxkQ3JlYXRlUmVu
ZGVyZXJzOihCT09MKWY7Ci0tIChCT09MKXNob3VsZENyZWF0ZVJlbmRlcmVyczsKKy0gKHZvaWQp
c2V0U2hvdWxkQ3JlYXRlUmVuZGVyZXJzOihCT09MKXNob3VsZENyZWF0ZVJlbmRlcmVyczsKIAog
LSAodm9pZClzZXRCYXNlQmFja2dyb3VuZENvbG9yOihOU0NvbG9yICopYmFja2dyb3VuZENvbG9y
OwogLSAodm9pZClzZXREcmF3c0JhY2tncm91bmQ6KEJPT0wpZHJhd3NCYWNrcm91bmQ7CkBAIC0x
ODMsMTAgKzE3Niw3IEBAIGVudW0gV2ViU2Nyb2xsR3JhbnVsYXJpdHkgewogLSAoaWQpYWNjZXNz
aWJpbGl0eVRyZWU7CiAKIC0gKERPTVJhbmdlICopcmFuZ2VCeUFsdGVyaW5nQ3VycmVudFNlbGVj
dGlvbjooV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6RUFsdGVyYXRpb24pYWx0ZXJhdGlv
biBkaXJlY3Rpb246KFdlYkNvcmU6OlNlbGVjdGlvbkNvbnRyb2xsZXI6OkVEaXJlY3Rpb24pZGly
ZWN0aW9uIGdyYW51bGFyaXR5OihXZWJDb3JlOjpUZXh0R3JhbnVsYXJpdHkpZ3JhbnVsYXJpdHk7
Ci0tICh2b2lkKWFsdGVyQ3VycmVudFNlbGVjdGlvbjooV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJv
bGxlcjo6RUFsdGVyYXRpb24pYWx0ZXJhdGlvbiB2ZXJ0aWNhbERpc3RhbmNlOihmbG9hdClkaXN0
YW5jZTsKIC0gKFdlYkNvcmU6OlRleHRHcmFudWxhcml0eSlzZWxlY3Rpb25HcmFudWxhcml0eTsK
LS0gKERPTVJhbmdlICopc21hcnREZWxldGVSYW5nZUZvclByb3Bvc2VkUmFuZ2U6KERPTVJhbmdl
ICopcHJvcG9zZWRDaGFyUmFuZ2U7Ci0tICh2b2lkKXNtYXJ0SW5zZXJ0Rm9yU3RyaW5nOihOU1N0
cmluZyAqKXBhc3RlU3RyaW5nIHJlcGxhY2luZ1JhbmdlOihET01SYW5nZSAqKWNoYXJSYW5nZVRv
UmVwbGFjZSBiZWZvcmVTdHJpbmc6KE5TU3RyaW5nICoqKWJlZm9yZVN0cmluZyBhZnRlclN0cmlu
ZzooTlNTdHJpbmcgKiopYWZ0ZXJTdHJpbmc7CiAtICh2b2lkKXNlbGVjdE5TUmFuZ2U6KE5TUmFu
Z2UpcmFuZ2U7CiAtIChOU1JhbmdlKXNlbGVjdGVkTlNSYW5nZTsKIC0gKE5TUmFuZ2UpbWFya2Vk
VGV4dE5TUmFuZ2U7CkBAIC0yMDQsMTAgKzE5NCw2IEBAIGVudW0gV2ViU2Nyb2xsR3JhbnVsYXJp
dHkgewogCiAtICh2b2lkKWluc2VydFBhcmFncmFwaFNlcGFyYXRvckluUXVvdGVkQ29udGVudDsK
IAotLSAodm9pZClzZXRTZWxlY3Rpb25Ub0RyYWdDYXJldDsKLS0gKHZvaWQpbW92ZVNlbGVjdGlv
blRvRHJhZ0NhcmV0OihET01Eb2N1bWVudEZyYWdtZW50ICopc2VsZWN0aW9uRnJhZ21lbnQgc21h
cnRNb3ZlOihCT09MKXNtYXJ0TW92ZTsKLS0gKERPTVJhbmdlICopZHJhZ0NhcmV0RE9NUmFuZ2U7
Ci0tIChCT09MKWlzRHJhZ0NhcmV0UmljaGx5RWRpdGFibGU7CiAtIChET01SYW5nZSAqKWNoYXJh
Y3RlclJhbmdlQXRQb2ludDooTlNQb2ludClwb2ludDsKIAogLSAoRE9NQ1NTU3R5bGVEZWNsYXJh
dGlvbiAqKXR5cGluZ1N0eWxlOwpAQCAtMjMwLDQ2ICsyMTYsMjEgQEAgZW51bSBXZWJTY3JvbGxH
cmFudWxhcml0eSB7CiAKIEBwcm90b2NvbCBXZWJDb3JlRnJhbWVCcmlkZ2UKIAotLSAoTlNWaWV3
ICopZG9jdW1lbnRWaWV3OwotCi0tIChXZWJDb3JlOjpGcmFtZSopY3JlYXRlQ2hpbGRGcmFtZU5h
bWVkOihOU1N0cmluZyAqKWZyYW1lTmFtZSB3aXRoVVJMOihOU1VSTCAqKVVSTCByZWZlcnJlcjoo
Y29uc3QgV2ViQ29yZTo6U3RyaW5nJilyZWZlcnJlcgotICAgIG93bmVyRWxlbWVudDooV2ViQ29y
ZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50ICopb3duZXJFbGVtZW50IGFsbG93c1Njcm9sbGluZzoo
Qk9PTClhbGxvd3NTY3JvbGxpbmcgbWFyZ2luV2lkdGg6KGludCl3aWR0aCBtYXJnaW5IZWlnaHQ6
KGludCloZWlnaHQ7Ci0KIC0gKE5TV2luZG93ICopd2luZG93OwogCiAtIChOU1Jlc3BvbmRlciAq
KWZpcnN0UmVzcG9uZGVyOwogLSAodm9pZCltYWtlRmlyc3RSZXNwb25kZXI6KE5TUmVzcG9uZGVy
ICopcmVzcG9uZGVyOwotLSAodm9pZCl3aWxsTWFrZUZpcnN0UmVzcG9uZGVyRm9yTm9kZUZvY3Vz
OwotCi0tIChCT09MKXRleHRWaWV3V2FzRmlyc3RSZXNwb25kZXJBdE1vdXNlRG93blRpbWU6KE5T
VGV4dFZpZXcgKil0ZXh0VmlldzsKIAogLSAodm9pZClydW5PcGVuUGFuZWxGb3JGaWxlQnV0dG9u
V2l0aFJlc3VsdExpc3RlbmVyOihpZCA8V2ViQ29yZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyPily
ZXN1bHRMaXN0ZW5lcjsKIAotLSAoTlNWaWV3ICopdmlld0ZvclBsdWdpbldpdGhGcmFtZTooTlNS
ZWN0KWZyYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVJMOihOU1VSTCAqKVVS
TAotICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVOYW1lczooTlNBcnJheSAqKWF0dHJpYnV0
ZU5hbWVzCi0gICAgICAgICAgICAgICAgICAgYXR0cmlidXRlVmFsdWVzOihOU0FycmF5ICopYXR0
cmlidXRlVmFsdWVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgIE1JTUVUeXBlOihOU1N0cmlu
ZyAqKU1JTUVUeXBlCi0gICAgICAgICAgICAgICAgICAgICAgICBET01FbGVtZW50OihET01FbGVt
ZW50ICopZWxlbWVudAotICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYW51YWxseTooQk9PTCls
b2FkTWFudWFsbHk7Ci0tIChOU1ZpZXcgKil2aWV3Rm9ySmF2YUFwcGxldFdpdGhGcmFtZTooTlNS
ZWN0KWZyYW1lCi0gICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVOYW1lczooTlNBcnJh
eSAqKWF0dHJpYnV0ZU5hbWVzCi0gICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVZhbHVl
czooTlNBcnJheSAqKWF0dHJpYnV0ZVZhbHVlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJhc2VVUkw6KE5TVVJMICopYmFzZVVSTAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IERPTUVsZW1lbnQ6KERPTUVsZW1lbnQgKillbGVtZW50OwotLSAodm9pZClyZWRpcmVjdERhdGFU
b1BsdWdpbjooTlNWaWV3ICopcGx1Z2luVmlldzsKLQotLSAoV2ViQ29yZTo6T2JqZWN0Q29udGVu
dFR5cGUpZGV0ZXJtaW5lT2JqZWN0RnJvbU1JTUVUeXBlOihOU1N0cmluZyopTUlNRVR5cGUgVVJM
OihOU1VSTCopVVJMOwotCiAtIChqb2JqZWN0KWdldEFwcGxldEluVmlldzooTlNWaWV3ICopdmll
dzsKIAogLy8gRGVwcmVjYXRlZCwgdXNlIGdldEFwcGxldEluVmlldzogaW5zdGVhZC4KIC0gKGpv
YmplY3QpcG9sbEZvckFwcGxldEluVmlldzooTlNWaWV3ICopdmlldzsKIAogLSAodm9pZClpc3N1
ZVBhc3RlQ29tbWFuZDsKLS0gKHZvaWQpc2V0SXNTZWxlY3RlZDooQk9PTClpc1NlbGVjdGVkIGZv
clZpZXc6KE5TVmlldyAqKXZpZXc7CiAKLS0gKHZvaWQpd2luZG93T2JqZWN0Q2xlYXJlZDsKKy0g
KHZvaWQpc2V0SXNTZWxlY3RlZDooQk9PTClpc1NlbGVjdGVkIGZvclZpZXc6KE5TVmlldyAqKXZp
ZXc7CiAKIC0gKHZvaWQpZGFzaGJvYXJkUmVnaW9uc0NoYW5nZWQ6KE5TTXV0YWJsZURpY3Rpb25h
cnkgKilyZWdpb25zOwogLSAodm9pZCl3aWxsUG9wdXBNZW51OihOU01lbnUgKiltZW51OwpJbmRl
eDogV2ViQ29yZS9wYWdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wYWdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0JKHJldmlzaW9uIDI4NzExKQor
KysgV2ViQ29yZS9wYWdlL21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI5MSw3ICsyOTEsNyBAQCBzdGF0aWMgaW5saW5lIFdlYkNvcmVGcmFtZUJyaWRnZSAqYnJp
ZGdlCiAgICAgLy8gY2hhbmdpbmcgYW5vdGhlcidzIGxvY2F0aW9uIGJlZm9yZSB0aGUgZnJhbWUn
cyBkb2N1bWVudAogICAgIC8vIGhhcyBiZWVuIGNyZWF0ZWQuIAogICAgIGlmIChkb2MpIHsKLSAg
ICAgICAgZG9jLT5zZXRTaG91bGRDcmVhdGVSZW5kZXJlcnMoW3NlbGYgc2hvdWxkQ3JlYXRlUmVu
ZGVyZXJzXSk7CisgICAgICAgIGRvYy0+c2V0U2hvdWxkQ3JlYXRlUmVuZGVyZXJzKF9zaG91bGRD
cmVhdGVSZW5kZXJlcnMpOwogICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+YWRkRGF0YSgoY29u
c3QgY2hhciAqKVtkYXRhIGJ5dGVzXSwgW2RhdGEgbGVuZ3RoXSk7CiAgICAgfQogfQpAQCAtNzc0
LDEyICs3NzQsNiBAQCBzdGF0aWMgSFRNTEZvcm1FbGVtZW50ICpmb3JtRWxlbWVudEZyb21ECiAg
ICAgcmV0dXJuIG1fZnJhbWUtPnZpZXcoKSA/IG1fZnJhbWUtPnZpZXcoKS0+bmVlZHNMYXlvdXQo
KSA6IGZhbHNlOwogfQogCi0tICh2b2lkKXNldE5lZWRzTGF5b3V0Ci17Ci0gICAgaWYgKG1fZnJh
bWUtPnZpZXcoKSkKLSAgICAgICAgbV9mcmFtZS0+dmlldygpLT5zZXROZWVkc0xheW91dCgpOwot
fQotCiAtIChOU1N0cmluZyAqKXJlbmRlclRyZWVBc0V4dGVybmFsUmVwcmVzZW50YXRpb24KIHsK
ICAgICByZXR1cm4gZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihtX2ZyYW1lLT5yZW5kZXJlcigpKS5n
ZXROU1N0cmluZygpOwpAQCAtNzkwLDExICs3ODQsNiBAQCBzdGF0aWMgSFRNTEZvcm1FbGVtZW50
ICpmb3JtRWxlbWVudEZyb21ECiAgICAgX3Nob3VsZENyZWF0ZVJlbmRlcmVycyA9IGY7CiB9CiAK
LS0gKEJPT0wpc2hvdWxkQ3JlYXRlUmVuZGVyZXJzCi17Ci0gICAgcmV0dXJuIF9zaG91bGRDcmVh
dGVSZW5kZXJlcnM7Ci19Ci0KIC0gKE5TQ29sb3IgKilzZWxlY3Rpb25Db2xvcgogewogICAgIHJl
dHVybiBtX2ZyYW1lLT5pc0FjdGl2ZSgpID8gW05TQ29sb3Igc2VsZWN0ZWRUZXh0QmFja2dyb3Vu
ZENvbG9yXSA6IFtOU0NvbG9yIHNlY29uZGFyeVNlbGVjdGVkQ29udHJvbENvbG9yXTsKQEAgLTgz
MCwyNCArODE5LDE0IEBAIHN0YXRpYyBIVE1MRm9ybUVsZW1lbnQgKmZvcm1FbGVtZW50RnJvbUQK
ICAgICBpZiAobV9mcmFtZS0+c2VsZWN0aW9uQ29udHJvbGxlcigpLT5pc05vbmUoKSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKIAotICAgIC8vIE5PVEU6IFRoZSBlbnVtcyAqbXVzdCogbWF0Y2ggdGhl
IHZlcnkgc2ltaWxhciBvbmVzIGRlY2xhcmVkIGluIFNlbGVjdGlvbkNvbnRyb2xsZXIuaAogICAg
IFNlbGVjdGlvbkNvbnRyb2xsZXIgc2VsZWN0aW9uQ29udHJvbGxlcjsKICAgICBzZWxlY3Rpb25D
b250cm9sbGVyLnNldFNlbGVjdGlvbihtX2ZyYW1lLT5zZWxlY3Rpb25Db250cm9sbGVyKCktPnNl
bGVjdGlvbigpKTsKICAgICBzZWxlY3Rpb25Db250cm9sbGVyLm1vZGlmeShhbHRlcmF0aW9uLCBk
aXJlY3Rpb24sIGdyYW51bGFyaXR5KTsKICAgICByZXR1cm4gW0RPTVJhbmdlIF93cmFwUmFuZ2U6
c2VsZWN0aW9uQ29udHJvbGxlci50b1JhbmdlKCkuZ2V0KCldOwogfQogCi0tICh2b2lkKWFsdGVy
Q3VycmVudFNlbGVjdGlvbjooU2VsZWN0aW9uQ29udHJvbGxlcjo6RUFsdGVyYXRpb24pYWx0ZXJh
dGlvbiB2ZXJ0aWNhbERpc3RhbmNlOihmbG9hdCl2ZXJ0aWNhbERpc3RhbmNlCi17Ci0gICAgaWYg
KG1fZnJhbWUtPnNlbGVjdGlvbkNvbnRyb2xsZXIoKS0+aXNOb25lKCkpCi0gICAgICAgIHJldHVy
bjsKLSAgICBTZWxlY3Rpb25Db250cm9sbGVyKiBzZWxlY3Rpb25Db250cm9sbGVyID0gbV9mcmFt
ZS0+c2VsZWN0aW9uQ29udHJvbGxlcigpOwotICAgIHNlbGVjdGlvbkNvbnRyb2xsZXItPm1vZGlm
eShhbHRlcmF0aW9uLCBzdGF0aWNfY2FzdDxpbnQ+KHZlcnRpY2FsRGlzdGFuY2UpLCB0cnVlKTsK
LX0KLQogLSAoVGV4dEdyYW51bGFyaXR5KXNlbGVjdGlvbkdyYW51bGFyaXR5CiB7Ci0gICAgLy8g
Tk9URTogVGhlIGVudW1zICptdXN0KiBtYXRjaCB0aGUgdmVyeSBzaW1pbGFyIG9uZXMgZGVjbGFy
ZWQgaW4gU2VsZWN0aW9uQ29udHJvbGxlci5oCiAgICAgcmV0dXJuIG1fZnJhbWUtPnNlbGVjdGlv
bkdyYW51bGFyaXR5KCk7CiB9CiAKQEAgLTEwODYsMTYgKzEwNjUsNiBAQCBzdGF0aWMgSFRNTEZv
cm1FbGVtZW50ICpmb3JtRWxlbWVudEZyb21ECiAgICAgbV9mcmFtZS0+cmV2ZWFsU2VsZWN0aW9u
KFJlbmRlckxheWVyOjpnQWxpZ25Ub0VkZ2VJZk5lZWRlZCk7CiB9CiAKLS0gKHZvaWQpc2V0U2Vs
ZWN0aW9uVG9EcmFnQ2FyZXQKLXsKLSAgICBtX2ZyYW1lLT5zZWxlY3Rpb25Db250cm9sbGVyKCkt
PnNldFNlbGVjdGlvbihtX2ZyYW1lLT5kcmFnQ2FyZXRDb250cm9sbGVyKCktPnNlbGVjdGlvbigp
KTsKLX0KLQotLSAodm9pZCltb3ZlU2VsZWN0aW9uVG9EcmFnQ2FyZXQ6KERPTURvY3VtZW50RnJh
Z21lbnQgKilzZWxlY3Rpb25GcmFnbWVudCBzbWFydE1vdmU6KEJPT0wpc21hcnRNb3ZlCi17Ci0g
ICAgYXBwbHlDb21tYW5kKG5ldyBNb3ZlU2VsZWN0aW9uQ29tbWFuZChbc2VsZWN0aW9uRnJhZ21l
bnQgX2RvY3VtZW50RnJhZ21lbnRdLCBtX2ZyYW1lLT5kcmFnQ2FyZXRDb250cm9sbGVyKCktPmJh
c2UoKSwgc21hcnRNb3ZlKSk7Ci19Ci0KIC0gKFZpc2libGVQb3NpdGlvbilfdmlzaWJsZVBvc2l0
aW9uRm9yUG9pbnQ6KE5TUG9pbnQpcG9pbnQKIHsKICAgICBJbnRQb2ludCBvdXRlclBvaW50KHBv
aW50KTsKQEAgLTExMTIsMTYgKzEwODEsNiBAQCBzdGF0aWMgSFRNTEZvcm1FbGVtZW50ICpmb3Jt
RWxlbWVudEZyb21ECiAgICAgcmV0dXJuIHZpc2libGVQb3M7CiB9CiAKLS0gKERPTVJhbmdlICop
ZHJhZ0NhcmV0RE9NUmFuZ2UKLXsKLSAgICByZXR1cm4gW0RPTVJhbmdlIF93cmFwUmFuZ2U6bV9m
cmFtZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLT50b1JhbmdlKCkuZ2V0KCldOwotfQotCi0tIChC
T09MKWlzRHJhZ0NhcmV0UmljaGx5RWRpdGFibGUKLXsKLSAgICByZXR1cm4gbV9mcmFtZS0+ZHJh
Z0NhcmV0Q29udHJvbGxlcigpLT5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpOwotfQotCiAtIChE
T01SYW5nZSAqKWNoYXJhY3RlclJhbmdlQXRQb2ludDooTlNQb2ludClwb2ludAogewogICAgIFZp
c2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IFtzZWxmIF92aXNpYmxlUG9zaXRpb25Gb3JQb2ludDpw
b2ludF07CkluZGV4OiBXZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI4NzExKQorKysgV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSw4ICsxLDEyIEBACisyMDA3LTEyLTEzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KKworICAgICAgICAqIFN0cmluZ3NOb3RUb0JlTG9jYWxpemVkLnR4dDogVXBkYXRlZC4K
KwogMjAwNy0xMi0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZwogCi0gICAgICAgICAgICAgICAgRml4IGZvciA8cmRh
cjovL3Byb2JsZW0vNDg4Njg0ND4gYW5kIGxheSBncm91bmR3b3JrIGZvciA8cmRhcjovL3Byb2Js
ZW0vNDUxNjE3MD4gKEJhY2svRm9yd2FyZCBDYWNoZSBvbiBXaW5kb3dzKQorICAgICAgICBGaXgg
Zm9yIDxyZGFyOi8vcHJvYmxlbS80ODg2ODQ0PiBhbmQgbGF5IGdyb3VuZHdvcmsgZm9yIDxyZGFy
Oi8vcHJvYmxlbS80NTE2MTcwPiAoQmFjay9Gb3J3YXJkIENhY2hlIG9uIFdpbmRvd3MpCiAKICAg
ICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkZWQgYSBuZXcgZmls
ZQogCkluZGV4OiBXZWJLaXQvU3RyaW5nc05vdFRvQmVMb2NhbGl6ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9TdHJpbmdzTm90VG9CZUxvY2FsaXplZC50eHQJKHJldmlzaW9uIDI4NzExKQor
KysgV2ViS2l0L1N0cmluZ3NOb3RUb0JlTG9jYWxpemVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
NSw4ICs1LDggQEAKICIgKlBPU1QqIgogIiAqdGFyZ2V0KiIKICIgPj4+IgotIiBNYWMgT1MgWDsg
JUApIEFwcGxlV2ViS2l0LyVAIChLSFRNTCwgbGlrZSBHZWNrbykgJUAiCi0iIE1hYyBPUyBYOyAl
QCkgQXBwbGVXZWJLaXQvJUAgKEtIVE1MLCBsaWtlIEdlY2tvKSIKKyIgTWFjIE9TIFggJUA7ICVA
KSBBcHBsZVdlYktpdC8lQCAoS0hUTUwsIGxpa2UgR2Vja28pICVAIgorIiBNYWMgT1MgWCAlQDsg
JUApIEFwcGxlV2ViS2l0LyVAIChLSFRNTCwgbGlrZSBHZWNrbykiCiAiIHdlYlZpZXdEcmF3UmVz
aXplciBkZWxlZ2F0ZSBjYWxsIgogIiMiCiAiJSIKQEAgLTMxLDYgKzMxLDggQEAKICIlQDovLyVA
LyVAIgogIiVAOi8vJUA6JWQiCiAiJWQiCisiJWRfJWQiCisiJWRfJWRfJWQiCiAiJWRweCIKICIl
bGQiCiAiJmllPVVURi04Jm9lPVVURi04IgpAQCAtNjcsNiArNjksNyBAQAogIjQxOSIKICI0MjAr
IgogIjQyMiIKKyI1MjQyODgwIgogIjVDQUNENjM3LUY4MkYtNDkxRi05NDdBLTVEQ0EzOEFBMEZF
QSIKICI2RUI4RDk4Ri0yNzIzLTQ0NzItODhEMy01OTM2RjlENkU2MzEiCiAiNyIKQEAgLTEwMCw3
ICsxMDMsNiBAQAogIkJFR0lOOlZDQVJEIgogIkJQX0NyZWF0ZVBsdWdpbk1JTUVUeXBlc1ByZWZl
cmVuY2VzIgogIkJhY2t3YXJkRGVsZXRlIgotIkNGTmV0d29yayIKICJDU1MiCiAiQ2FjaGUtQ29u
dHJvbCIKICJDb250ZW50LUVuY29kaW5nIgpAQCAtMTM2LDcgKzEzOCw2IEBACiAiSW1tU2V0T3Bl
blN0YXR1cyIKICJJbmNsdWRlRGVidWdNZW51IgogIkluc2VydEJhY2t0YWIiCi0iSW5zZXJ0TGlu
ZUJyZWFrIgogIkluc2VydE5ld2xpbmUiCiAiSW5zZXJ0VGFiIgogIkludGVsIgpAQCAtMTQ5LDkg
KzE1MCwxMiBAQAogIk1JTUVcXERhdGFiYXNlXFxDb250ZW50IFR5cGUiCiAiTW92ZURvd24iCiAi
TW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb24iCi0iTW92ZURvd25CeVBhZ2VBbmRNb2RpZnlDYXJl
dCIKICJNb3ZlTGVmdCIKICJNb3ZlTGVmdEFuZE1vZGlmeVNlbGVjdGlvbiIKKyJNb3ZlUGFnZURv
d24iCisiTW92ZVBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIgorIk1vdmVQYWdlVXAiCisiTW92
ZVBhZ2VVcEFuZE1vZGlmeVNlbGVjdGlvbiIKICJNb3ZlUmlnaHQiCiAiTW92ZVJpZ2h0QW5kTW9k
aWZ5U2VsZWN0aW9uIgogIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQiCkBAIC0xNjQsNyArMTY4
LDYgQEAKICJNb3ZlVG9FbmRPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb24iCiAiTW92ZVVwIgogIk1v
dmVVcEFuZE1vZGlmeVNlbGVjdGlvbiIKLSJNb3ZlVXBCeVBhZ2VBbmRNb2RpZnlDYXJldCIKICJN
b3ZlV29yZExlZnQiCiAiTW92ZVdvcmRMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uIgogIk1vdmVXb3Jk
UmlnaHQiCkBAIC0xOTUsNyArMTk4LDYgQEAKICJSZWZlcmVyIgogIlNBTUlMYW5nIgogIlNBTUlT
dHlsZSIKLSJTVEluaXRpYWxpemUiCiAiU2FmYXJpLmV4ZSIKICJTYWZhcmkvNDE5LjMiCiAiVGlt
ZXMiCkBAIC01MzEsMTYgKzUzMywxNCBAQCBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW06ImJsYWNrCiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW06ImJvZHkiCiBXZWJL
aXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW06ImJvbGQiCiBXZWJLaXQvbWFjL1dlYlZpZXcv
V2ViSFRNTFZpZXcubW06ImNlbnRlciIKK1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5t
bToiZGlyZWN0aW9uIgogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOiJmb250Igog
V2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOiJoZWFkIgogV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tOiJpdGFsaWMiCi1XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW06Imp1c3RpZnkiCi1XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW06ImxlZnQi
CiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW06Im1lbnUiCiBXZWJLaXQvbWFjL1dl
YlZpZXcvV2ViSFRNTFZpZXcubW06Im5vbmUiCiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZp
ZXcubW06Im5vcm1hbCIKIFdlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbToib2JqZWN0
IgotV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOiJyaWdodCIKIFdlYktpdC9tYWMv
V2ViVmlldy9XZWJIVE1MVmlldy5tbToic3RyaWtlIgogV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tOiJzdHlsZSIKIFdlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbToic3Vw
ZXIiCkluZGV4OiBXZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3Rr
L0NoYW5nZUxvZwkocmV2aXNpb24gMjg3MTEpCisrKyBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDA3LTEyLTEzICBEYXJpbiBBZGxlciAgPGRh
cmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6IENoYW5nZWQgdG8gdXNl
IEVkaXRvcjo6Y29tbWFuZAorICAgICAgICBpbnN0ZWFkIG9mIEVkaXRvcjo6ZXhlY0NvbW1hbmQu
CisgICAgICAgICogV2ViVmlldy93ZWJraXR3ZWJ2aWV3LmNwcDogRGl0dG8uCisKIDIwMDctMTIt
MTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFNhbSBXZWluaWcKSW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDI4NzExKQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzEsMzMgKzI3MSwz
MyBAQCB2b2lkIEVkaXRvckNsaWVudDo6aGFuZGxlS2V5Ym9hcmRFdmVudChLCiAgICAgICAgICAg
ICAgICAgICAgICAgICB0cnVlKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgVktfUFJJT1I6ICAvLyBQYWdlVXAKLSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmV4ZWNDb21tYW5kKCJNb3ZlVXBCeVBhZ2VBbmRNb2RpZnlDYXJldCIpOworICAgICAgICAg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVBhZ2VVcCIpLmV4ZWN1dGUoKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVktfTkVYVDogIC8vIFBh
Z2VEb3duCi0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5leGVjQ29tbWFuZCgiTW92
ZURvd25CeVBhZ2VBbmRNb2RpZnlDYXJldCIpOworICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0
b3IoKS0+Y29tbWFuZCgiTW92ZVBhZ2VEb3duIikuZXhlY3V0ZSgpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19IT01FOgogICAgICAgICAgICAgICAgIGlmIChr
ZXZlbnQtPmN0cmxLZXkoKSAmJiBrZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICAgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS0+ZXhlY0NvbW1hbmQoIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1l
bnRBbmRNb2RpZnlTZWxlY3Rpb24iKTsKKyAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT5jb21tYW5kKCJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50QW5kTW9kaWZ5U2VsZWN0aW9u
IikuZXhlY3V0ZSgpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtldmVudC0+Y3RybEtleSgp
KQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmV4ZWNDb21tYW5kKCJNb3Zl
VG9CZWdpbm5pbmdPZkRvY3VtZW50Iik7CisgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0
b3IoKS0+Y29tbWFuZCgiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCIpLmV4ZWN1dGUoKTsKICAg
ICAgICAgICAgICAgICBlbHNlIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICAg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZXhlY0NvbW1hbmQoIk1vdmVUb0JlZ2lubmluZ09mTGlu
ZUFuZE1vZGlmeVNlbGVjdGlvbiIpOworICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmNvbW1hbmQoIk1vdmVUb0JlZ2lubmluZ09mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4
ZWN1dGUoKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS0+ZXhlY0NvbW1hbmQoIk1vdmVUb0JlZ2lubmluZ09mTGluZSIpOworICAgICAg
ICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVUb0JlZ2lubmluZ09m
TGluZSIpLmV4ZWN1dGUoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgVktfRU5EOgogICAgICAgICAgICAgICAgIGlmIChrZXZlbnQtPmN0cmxLZXkoKSAmJiBrZXZl
bnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZXhl
Y0NvbW1hbmQoIk1vdmVUb0VuZE9mRG9jdW1lbnRBbmRNb2RpZnlTZWxlY3Rpb24iKTsKKyAgICAg
ICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVG9FbmRPZkRvY3Vt
ZW50QW5kTW9kaWZ5U2VsZWN0aW9uIikuZXhlY3V0ZSgpOwogICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKGtldmVudC0+Y3RybEtleSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmV4ZWNDb21tYW5kKCJNb3ZlVG9FbmRPZkRvY3VtZW50Iik7CisgICAgICAgICAgICAgICAg
ICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVRvRW5kT2ZEb2N1bWVudCIpLmV4ZWN1
dGUoKTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAg
ICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZXhlY0NvbW1hbmQoIk1vdmVUb0VuZE9m
TGluZUFuZE1vZGlmeVNlbGVjdGlvbiIpOworICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRp
dG9yKCktPmNvbW1hbmQoIk1vdmVUb0VuZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiIpLmV4ZWN1
dGUoKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5l
ZGl0b3IoKS0+ZXhlY0NvbW1hbmQoIk1vdmVUb0VuZE9mTGluZSIpOworICAgICAgICAgICAgICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVUb0VuZE9mTGluZSIpLmV4ZWN1dGUo
KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVktfUkVUVVJOOgot
ICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZXhlY0NvbW1hbmQoIkluc2VydExpbmVC
cmVhayIpOworICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiSW5zZXJ0
TGluZUJyZWFrIikuZXhlY3V0ZSgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBWS19UQUI6CiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzEzLDE2ICszMTMs
MTYgQEAgdm9pZCBFZGl0b3JDbGllbnQ6OmhhbmRsZUtleWJvYXJkRXZlbnQoSwogICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoa2V2ZW50LT5jdHJsS2V5KCkpIHsKICAgICAgICAgICAgICAgICAg
ICAgc3dpdGNoIChrZXZlbnQtPndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBjYXNlIFZLX0I6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLT5leGVjQ29tbWFuZCgiVG9nZ2xlQm9sZCIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiVG9nZ2xlQm9sZCIpLmV4ZWN1
dGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgVktfSToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPmV4ZWNDb21tYW5kKCJUb2dnbGVJdGFsaWMiKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlRvZ2dsZUl0YWxpYyIpLmV4ZWN1
dGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgVktfWToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPmV4ZWNDb21tYW5kKCJSZWRvIik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJSZWRvIikuZXhlY3V0ZSgpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBW
S19aOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZXhlY0Nv
bW1hbmQoIlVuZG8iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9y
KCktPmNvbW1hbmQoIlVuZG8iKS5leGVjdXRlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTMzMiwyNCArMzMyLDI0IEBAIHZvaWQgRWRpdG9y
Q2xpZW50OjpoYW5kbGVLZXlib2FyZEV2ZW50KEsKICAgICB9IGVsc2UgewogICAgICAgICBzd2l0
Y2ggKGtldmVudC0+d2luZG93c1ZpcnR1YWxLZXlDb2RlKCkpIHsKICAgICAgICAgICAgIGNhc2Ug
VktfVVA6Ci0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5leGVjQ29tbWFuZCgiTW92
ZVVwIik7CisgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVXAi
KS5leGVjdXRlKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFZL
X0RPV046Ci0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5leGVjQ29tbWFuZCgiTW92
ZURvd24iKTsKKyAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVE
b3duIikuZXhlY3V0ZSgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2Fz
ZSBWS19QUklPUjogIC8vIFBhZ2VVcAotICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+
ZXhlY0NvbW1hbmQoIk1vdmVVcEJ5UGFnZUFuZE1vZGlmeUNhcmV0Iik7CisgICAgICAgICAgICAg
ICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlUGFnZVVwIikuZXhlY3V0ZSgpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19ORVhUOiAgLy8gUGFnZURv
d24KLSAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmV4ZWNDb21tYW5kKCJNb3ZlRG93
bkJ5UGFnZUFuZE1vZGlmeUNhcmV0Iik7CisgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigp
LT5jb21tYW5kKCJNb3ZlUGFnZURvd24iKS5leGVjdXRlKCk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIFZLX0hPTUU6CiAgICAgICAgICAgICAgICAgaWYgKGtldmVu
dC0+Y3RybEtleSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmV4ZWND
b21tYW5kKCJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50Iik7CisgICAgICAgICAgICAgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCIpLmV4
ZWN1dGUoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVktfRU5E
OgogICAgICAgICAgICAgICAgIGlmIChrZXZlbnQtPmN0cmxLZXkoKSkKLSAgICAgICAgICAgICAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5leGVjQ29tbWFuZCgiTW92ZVRvRW5kT2ZEb2N1bWVudCIp
OworICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVUb0Vu
ZE9mRG9jdW1lbnQiKS5leGVjdXRlKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFdlYktpdC9ndGsv
V2ViVmlldy93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYlZp
ZXcvd2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9uIDI4NzExKQorKysgV2ViS2l0L2d0ay9XZWJW
aWV3L3dlYmtpdHdlYnZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDQsMjUgKzQwNCwyNSBA
QCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3JlYWxfY29uCiBzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX3ZpZXdfcmVhbF9zZWxlY3RfYWxsKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7
CiAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZv
Y3VzZWRPck1haW5GcmFtZSgpOwotICAgIGZyYW1lLT5lZGl0b3IoKS0+ZXhlY0NvbW1hbmQoIlNl
bGVjdEFsbCIpOworICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiU2VsZWN0QWxsIikuZXhl
Y3V0ZSgpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jdXRfY2xpcGJv
YXJkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gY29yZSh3
ZWJWaWV3KS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIGZy
YW1lLT5lZGl0b3IoKS0+ZXhlY0NvbW1hbmQoIkN1dCIpOworICAgIGZyYW1lLT5lZGl0b3IoKS0+
Y29tbWFuZCgiQ3V0IikuZXhlY3V0ZSgpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3Zp
ZXdfcmVhbF9jb3B5X2NsaXBib2FyZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIEZy
YW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKLSAgICBmcmFtZS0+ZWRpdG9yKCktPmV4ZWNDb21tYW5kKCJDb3B5Iik7Cisg
ICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJDb3B5IikuZXhlY3V0ZSgpOwogfQogCiBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9wYXN0ZV9jbGlwYm9hcmQoV2ViS2l0V2ViVmll
dyogd2ViVmlldykKIHsKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0Nv
bnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgZnJhbWUtPmVkaXRvcigpLT5l
eGVjQ29tbWFuZCgiUGFzdGUiKTsKKyAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlBhc3Rl
IikuZXhlY3V0ZSgpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZmluYWxpemUo
R09iamVjdCogb2JqZWN0KQpJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NzExKQorKysgV2ViS2l0L21hYy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NSBAQAorMjAwNy0xMi0xMyAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgLSBDaGFuZ2VkIGEgZmV3IG1vcmUgZWRpdGluZyBvcGVyYXRp
b25zIHRvIHVzZSBXZWJDb3JlIGluc3RlYWQgb2YgV2ViS2l0LgorICAgICAgICAtIFJlbW92ZWQg
c29tZSBvYnNvbGV0ZSB1bnVzZWQgY29kZS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lQnJpZGdlLmg6IE1vdmVkIGRlY2xhcmF0aW9ucyBvZiBtZXRob2RzIHRoYXQgYXJlIGJv
dGgKKyAgICAgICAgZGVmaW5lZCBhbmQgdXNlZCBvbiB0aGUgV2ViS2l0IHNpZGUgdG8gaGVyZS4g
VGhlc2Ugbm8gbG9uZ2VyIGJlbG9uZyBvbiB0aGUgYnJpZGdlCisgICAgICAgIGFuZCBzaG91bGQg
YmUgbW92ZWQgdG8gdGhlIFdlYkZyYW1lIGNsYXNzIChvciBlbHNld2hlcmUpLgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lQnJpZGdlLm1tOiBSZW1vdmVkIHNvbWUgdW51c2VkIG1l
dGhvZHMuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lVmlldy5tbToKKyAgICAgICAgKCtb
V2ViRnJhbWVWaWV3IF92aWV3VHlwZXNBbGxvd0ltYWdlVHlwZU9taXNzaW9uOl0pOiBGaXggdHlw
byBpbiBjb21tZW50LgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MVmlldy5tbToKKyAgICAg
ICAgKC1bV2ViSFRNTFZpZXdQcml2YXRlIGRlYWxsb2NdKTogUmVtb3ZlZCB1bnVzZWQgZmlyc3RS
ZXNwb25kZXJUZXh0Vmlld0F0TW91c2VEb3duVGltZS4KKyAgICAgICAgKC1bV2ViSFRNTFZpZXdQ
cml2YXRlIGNsZWFyXSk6IERpdHRvLgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfc2V0TW91c2VE
b3duRXZlbnQ6XSk6IERpdHRvLgorICAgICAgICAoY29tbWFuZE5hbWVGb3JTZWxlY3Rvcik6IEFk
ZGVkIHNwZWNpYWwgY2FzZXMgZm9yIHBhZ2VEb3duOiwgcGFnZURvd25BbmRNb2RpZnlTZWxlY3Rp
b246LAorICAgICAgICBwYWdlVXA6LCBhbmQgcGFnZVVwQW5kTW9kaWZ5U2VsZWN0aW9uOiwgc2lu
Y2UgdGhvc2UgbmFtZXMgcHJvYmFibHkgYXJlbid0IHNwZWNpZmljIGVub3VnaAorICAgICAgICB0
byBiZSB1c2VkIGluIFdlYkNvcmUgKHdoYXQgQXBwS2l0IGNhbGxzIHNjcm9sbFBhZ2VEb3duOiB2
cy4gcGFnZURvd246IG5lZWRzIHRvIGJlCisgICAgICAgIGRpc2FtYmlndWF0ZWQgd2l0aCB0aGUg
d29yZCAiTW92ZSIpLiBBZGRlZCBkZWxldGVCYWNrd2FyZDosCisgICAgICAgIGRlbGV0ZUJhY2t3
YXJkQnlEZWNvbXBvc2luZ1ByZXZpb3VzQ2hhcmFjdGVyOiwgZGVsZXRlRm9yd2FyZDosIGRlbGV0
ZVRvQmVnaW5uaW5nT2ZMaW5lOiwKKyAgICAgICAgZGVsZXRlVG9CZWdpbm5pbmdPZlBhcmFncmFw
aDosIGRlbGV0ZVRvRW5kT2ZMaW5lOiwgZGVsZXRlVG9FbmRPZlBhcmFncmFwaDosIHBhZ2VEb3du
OiwKKyAgICAgICAgcGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb246LCBwYWdlVXA6LCBwYWdlVXBB
bmRNb2RpZnlTZWxlY3Rpb246LCBzZWxlY3RMaW5lOiwKKyAgICAgICAgc2VsZWN0UGFyYWdyYXBo
Oiwgc2VsZWN0U2VudGVuY2U6LCBhbmQgc2VsZWN0V29yZDogdG8gdGhlIGxpc3Qgb2YgY29tbWFu
ZHMgdGhhdCBhcmUKKyAgICAgICAgZm9yd2FyZGVkIHRvIFdlYkNvcmUuCisgICAgICAgICgtW1dl
YkhUTUxWaWV3IHZhbGlkYXRlVXNlckludGVyZmFjZUl0ZW1XaXRob3V0RGVsZWdhdGU6XSk6IEVs
aW1pbmF0ZWQgdGhlIGxvbmcgbGlzdCBvZgorICAgICAgICBvcGVyYXRpb25zIHRoYXQgd2UgZm9y
d2FyZCB0byBXZWJDb3JlLiBJbnN0ZWFkLCBsb29rIHVwIGFueSBjb21tYW5kIHRoYXQgV2ViQ29y
ZSBjYW4KKyAgICAgICAgaGFuZGxlLCBhZnRlciBhbnkgdGhhdCB3ZSBoYW5kbGUgc3BlY2lhbGx5
IGluIFdlYkhUTUxWaWV3LiBBbHNvIGZpeGVkIGEgYnVnIHdoZXJlCisgICAgICAgIGFuIGl0ZW0g
dGhhdCdzIG5vdCBhIG1lbnUgaXRlbSB3aXRoIGNoYW5nZUJhc2VXcml0aW5nRGlyZWN0aW9uOk5T
V3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwKKyAgICAgICAgd291bGQgZW5kIHVwIGVuYWJsZWQgaW5z
dGVhZCBvZiBkaXNhYmxlZCBhbmQgc3RyZWFtbGluZWQgdGhlIGxvZ2ljIGZvciB0b2dnbGVHcmFt
bWFyQ2hlY2tpbmc6LgorICAgICAgICAoLVtXZWJIVE1MVmlldyBtb3VzZURvd246XSk6IFJlbW92
ZWQgdW51c2VkIGZpcnN0UmVzcG9uZGVyVGV4dFZpZXdBdE1vdXNlRG93blRpbWUuCisgICAgICAg
ICgtW1dlYkhUTUxWaWV3IGJlY29tZUZpcnN0UmVzcG9uZGVyXSk6IFJlbW92ZWQgdW51c2VkIHdp
bGxCZWNvbWVGaXJzdFJlc3BvbmRlckZvck5vZGVGb2N1cy4KKyAgICAgICAgKC1bV2ViSFRNTFZp
ZXcgcmVzaWduRmlyc3RSZXNwb25kZXJdKTogRGl0dG8uCisgICAgICAgICgtW1dlYkhUTUxWaWV3
IGNoZWNrU3BlbGxpbmc6XSk6IFRvb2sgdW5uZWVkZWQgZXh0cmEgaW5pdGlhbGl6YXRpb24gb2Yg
TlNTcGVsbENoZWNrZXIuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3SW50ZXJuYWwu
aDogUmVtb3ZlZCB1bnVzZWQgd2lsbEJlY29tZUZpcnN0UmVzcG9uZGVyRm9yTm9kZUZvY3VzLAor
ICAgICAgICBmaXJzdFJlc3BvbmRlclRleHRWaWV3QXRNb3VzZURvd25UaW1lLCBfdGV4dFZpZXdX
YXNGaXJzdFJlc3BvbmRlckF0TW91c2VEb3duVGltZTogYW5kCisgICAgICAgIF93aWxsTWFrZUZp
cnN0UmVzcG9uZGVyRm9yTm9kZUZvY3VzLgorCiAyMDA3LTEyLTEzICBBbGV4ZXkgUHJvc2t1cnlh
a292ICA8YXBAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbi4KSW5kZXg6
IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVCcmlkZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lQnJpZGdlLmgJKHJldmlzaW9uIDI4
NzExKQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUJyaWRnZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Niw0ICs1NiwyOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC0gKFdl
YkZyYW1lICopd2ViRnJhbWU7CiAKKy8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYWxsIG1v
dmUgb2ZmIHRoZSBicmlkZ2U7IHRoZXkncmUgdXNlZCBvbiB0aGUgV2ViS2l0IHNpZGUgb25seS4K
KworLSAoTlNWaWV3ICopdmlld0ZvclBsdWdpbldpdGhGcmFtZTooTlNSZWN0KWZyYW1lCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgVVJMOihOU1VSTCAqKVVSTAorICAgICAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGVOYW1lczooTlNBcnJheSAqKWF0dHJpYnV0ZU5hbWVzCisgICAgICAg
ICAgICAgICAgICAgYXR0cmlidXRlVmFsdWVzOihOU0FycmF5ICopYXR0cmlidXRlVmFsdWVzCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIE1JTUVUeXBlOihOU1N0cmluZyAqKU1JTUVUeXBlCisg
ICAgICAgICAgICAgICAgICAgICAgICBET01FbGVtZW50OihET01FbGVtZW50ICopZWxlbWVudAor
ICAgICAgICAgICAgICAgICAgICAgIGxvYWRNYW51YWxseTooQk9PTClsb2FkTWFudWFsbHk7Cist
IChOU1ZpZXcgKil2aWV3Rm9ySmF2YUFwcGxldFdpdGhGcmFtZTooTlNSZWN0KWZyYW1lCisgICAg
ICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVOYW1lczooTlNBcnJheSAqKWF0dHJpYnV0ZU5h
bWVzCisgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlczooTlNBcnJheSAqKWF0
dHJpYnV0ZVZhbHVlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VVUkw6KE5T
VVJMICopYmFzZVVSTAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIERPTUVsZW1lbnQ6KERP
TUVsZW1lbnQgKillbGVtZW50OworCistIChXZWJDb3JlOjpGcmFtZSopY3JlYXRlQ2hpbGRGcmFt
ZU5hbWVkOihOU1N0cmluZyAqKWZyYW1lTmFtZSB3aXRoVVJMOihOU1VSTCAqKVVSTCByZWZlcnJl
cjooY29uc3QgV2ViQ29yZTo6U3RyaW5nJilyZWZlcnJlcgorICAgIG93bmVyRWxlbWVudDooV2Vi
Q29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50ICopb3duZXJFbGVtZW50IGFsbG93c1Njcm9sbGlu
ZzooQk9PTClhbGxvd3NTY3JvbGxpbmcgbWFyZ2luV2lkdGg6KGludCl3aWR0aCBtYXJnaW5IZWln
aHQ6KGludCloZWlnaHQ7CisKKy0gKHZvaWQpcmVkaXJlY3REYXRhVG9QbHVnaW46KE5TVmlldyAq
KXBsdWdpblZpZXc7CisKKy0gKFdlYkNvcmU6Ok9iamVjdENvbnRlbnRUeXBlKWRldGVybWluZU9i
amVjdEZyb21NSU1FVHlwZTooTlNTdHJpbmcqKU1JTUVUeXBlIFVSTDooTlNVUkwqKVVSTDsKKwor
LSAodm9pZCl3aW5kb3dPYmplY3RDbGVhcmVkOworCiBAZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lQnJpZGdlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVCcmlkZ2UubW0JKHJldmlzaW9uIDI4NzExKQorKysgV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUJyaWRnZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtMjQ0LDEyICsyNDQsNiBAQCBOU1N0cmluZyAqV2ViUGx1Z2luQ29udGFpbmVyS2V5ID0gICBA
IldlCiAgICAgcmV0dXJuIFtbW3NlbGYgd2ViVmlld10gbWFpbkZyYW1lXSBfYnJpZGdlXTsKIH0K
IAotLSAoTlNWaWV3ICopZG9jdW1lbnRWaWV3Ci17Ci0gICAgQVNTRVJUKF9mcmFtZSAhPSBuaWwp
OwotICAgIHJldHVybiBbW19mcmFtZSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld107Ci19Ci0KIC0g
KE5TUmVzcG9uZGVyICopZmlyc3RSZXNwb25kZXIKIHsKICAgICBBU1NFUlQoX2ZyYW1lICE9IG5p
bCk7CkBAIC0yNjksMjIgKzI2Myw2IEBAIE5TU3RyaW5nICpXZWJQbHVnaW5Db250YWluZXJLZXkg
PSAgIEAiV2UKICAgICBbd2ViVmlldyBfcG9wUGVyZm9ybWluZ1Byb2dyYW1tYXRpY0ZvY3VzXTsK
IH0KIAotLSAodm9pZCl3aWxsTWFrZUZpcnN0UmVzcG9uZGVyRm9yTm9kZUZvY3VzCi17Ci0gICAg
QVNTRVJUKFtbW19mcmFtZSBmcmFtZVZpZXddIGRvY3VtZW50Vmlld10gaXNLaW5kT2ZDbGFzczpb
V2ViSFRNTFZpZXcgY2xhc3NdXSk7Ci0gICAgWyhXZWJIVE1MVmlldyAqKVtbX2ZyYW1lIGZyYW1l
Vmlld10gZG9jdW1lbnRWaWV3XSBfd2lsbE1ha2VGaXJzdFJlc3BvbmRlckZvck5vZGVGb2N1c107
Ci19Ci0KLS0gKEJPT0wpdGV4dFZpZXdXYXNGaXJzdFJlc3BvbmRlckF0TW91c2VEb3duVGltZToo
TlNUZXh0VmlldyAqKXRleHRWaWV3OwotewotICAgIEFTU0VSVChfZnJhbWUgIT0gbmlsKTsKLSAg
ICBOU1ZpZXcgKmRvY3VtZW50VmlldyA9IFtbX2ZyYW1lIGZyYW1lVmlld10gZG9jdW1lbnRWaWV3
XTsKLSAgICBpZiAoIVtkb2N1bWVudFZpZXcgaXNLaW5kT2ZDbGFzczpbV2ViSFRNTFZpZXcgY2xh
c3NdXSkKLSAgICAgICAgcmV0dXJuIE5POwotICAgIFdlYkhUTUxWaWV3ICp3ZWJIVE1MVmlldyA9
IChXZWJIVE1MVmlldyAqKWRvY3VtZW50VmlldzsKLSAgICByZXR1cm4gW3dlYkhUTUxWaWV3IF90
ZXh0Vmlld1dhc0ZpcnN0UmVzcG9uZGVyQXRNb3VzZURvd25UaW1lOnRleHRWaWV3XTsKLX0KLQog
LSAoTlNXaW5kb3cgKil3aW5kb3cKIHsKICAgICBBU1NFUlQoX2ZyYW1lICE9IG5pbCk7CkluZGV4
OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0JKHJldmlzaW9uIDI4NzExKQorKysgV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYwLDcgKzI2
MCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRUeXBlc0Zyb21DbGFzcyhOU00KICAgICAgICAg
dmlld1R5cGVzID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XTsKICAgICAgICAg
YWRkVHlwZXNGcm9tQ2xhc3Modmlld1R5cGVzLCBbV2ViSFRNTFZpZXcgY2xhc3NdLCBbV2ViSFRN
TFZpZXcgc3VwcG9ydGVkTm9uSW1hZ2VNSU1FVHlwZXNdKTsKIAotICAgICAgICAvLyBTaW5jZSB0
aGlzIGlzIGEgInNlY3JldCBkZWZhdWx0IiB3ZSBkb24ndCBib3RoIHJlZ2lzdGVyaW5nIGl0Lgor
ICAgICAgICAvLyBTaW5jZSB0aGlzIGlzIGEgInNlY3JldCBkZWZhdWx0IiB3ZSBkb24ndCBib3Ro
ZXIgcmVnaXN0ZXJpbmcgaXQuCiAgICAgICAgIEJPT0wgb21pdFBERlN1cHBvcnQgPSBbW05TVXNl
ckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBib29sRm9yS2V5OkAiV2ViS2l0T21pdFBE
RlN1cHBvcnQiXTsKICAgICAgICAgaWYgKCFvbWl0UERGU3VwcG9ydCkKICAgICAgICAgICAgIGFk
ZFR5cGVzRnJvbUNsYXNzKHZpZXdUeXBlcywgW1dlYlBERlZpZXcgY2xhc3NdLCBbV2ViUERGVmll
dyBzdXBwb3J0ZWRNSU1FVHlwZXNdKTsKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1M
Vmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0J
KHJldmlzaW9uIDI4NzExKQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC00MTgsNyArNDE4LDYgQEAgc3RhdGljIE5TQ2VsbFN0YXRlVmFsdWUg
a2l0KFRyaVN0YXRlIHN0YQogICAgIFtwbHVnaW5Db250cm9sbGVyIHJlbGVhc2VdOwogICAgIFt0
b29sVGlwIHJlbGVhc2VdOwogICAgIFtjb21wQ29udHJvbGxlciByZWxlYXNlXTsKLSAgICBbZmly
c3RSZXNwb25kZXJUZXh0Vmlld0F0TW91c2VEb3duVGltZSByZWxlYXNlXTsKICAgICBbZGF0YVNv
dXJjZSByZWxlYXNlXTsKICAgICBbaGlnaGxpZ2h0ZXJzIHJlbGVhc2VdOwogICAgIGlmIChwcm9t
aXNlZERyYWdUSUZGRGF0YVNvdXJjZSkKQEAgLTQ0NCw3ICs0NDMsNiBAQCBzdGF0aWMgTlNDZWxs
U3RhdGVWYWx1ZSBraXQoVHJpU3RhdGUgc3RhCiAgICAgW3BsdWdpbkNvbnRyb2xsZXIgcmVsZWFz
ZV07CiAgICAgW3Rvb2xUaXAgcmVsZWFzZV07CiAgICAgW2NvbXBDb250cm9sbGVyIHJlbGVhc2Vd
OwotICAgIFtmaXJzdFJlc3BvbmRlclRleHRWaWV3QXRNb3VzZURvd25UaW1lIHJlbGVhc2VdOwog
ICAgIFtkYXRhU291cmNlIHJlbGVhc2VdOwogICAgIFtoaWdobGlnaHRlcnMgcmVsZWFzZV07CiAg
ICAgaWYgKHByb21pc2VkRHJhZ1RJRkZEYXRhU291cmNlKQpAQCAtNDU1LDcgKzQ1Myw2IEBAIHN0
YXRpYyBOU0NlbGxTdGF0ZVZhbHVlIGtpdChUcmlTdGF0ZSBzdGEKICAgICBwbHVnaW5Db250cm9s
bGVyID0gbmlsOwogICAgIHRvb2xUaXAgPSBuaWw7CiAgICAgY29tcENvbnRyb2xsZXIgPSBuaWw7
Ci0gICAgZmlyc3RSZXNwb25kZXJUZXh0Vmlld0F0TW91c2VEb3duVGltZSA9IG5pbDsKICAgICBk
YXRhU291cmNlID0gbmlsOwogICAgIGhpZ2hsaWdodGVycyA9IG5pbDsKICAgICBwcm9taXNlZERy
YWdUSUZGRGF0YVNvdXJjZSA9IDA7CkBAIC04MDIsMjEgKzc5OSw2IEBAIHN0YXRpYyBOU1VSTCog
dW5pcXVlVVJMV2l0aFJlbGF0aXZlUGFydCgKICAgICBbZXZlbnQgcmV0YWluXTsKICAgICBbX3By
aXZhdGUtPm1vdXNlRG93bkV2ZW50IHJlbGVhc2VdOwogICAgIF9wcml2YXRlLT5tb3VzZURvd25F
dmVudCA9IGV2ZW50OwotCi0gICAgW19wcml2YXRlLT5maXJzdFJlc3BvbmRlclRleHRWaWV3QXRN
b3VzZURvd25UaW1lIHJlbGVhc2VdOwotICAgIAotICAgIC8vIFRoZSBvbmx5IGNvZGUgdGhhdCBj
aGVja3MgdGhpcyBpdmFyIG9ubHkgY2FyZXMgYWJvdXQgTlNUZXh0Vmlld3MuIFRoZSBjb2RlIHVz
ZWQgdG8gYmUgbW9yZSBnZW5lcmFsLAotICAgIC8vIGJ1dCBpdCBjYXVzZWQgcmVmZXJlbmNlIGN5
Y2xlcyBsZWFkaW5nIHRvIHdvcmxkIGxlYWtzIChzZWUgNDU1NzM4NikuIFdlIHNob3VsZCBiZSBh
YmxlIHRvIGVsaW1pbmF0ZQotICAgIC8vIGZpcnN0UmVzcG9uZGVyVGV4dFZpZXdBdE1vdXNlRG93
blRpbWUgZW50aXJlbHkgd2hlbiBhbGwgdGhlIGZvcm0gY29udHJvbHMgYXJlIG5hdGl2ZSB3aWRn
ZXRzLCBiZWNhdXNlIAotICAgIC8vIHRoZSBvbmx5IGNhbGxlciAoaW4gV2ViQ29yZSkgd2lsbCBi
ZSB1bm5lY2Vzc2FyeS4KLSAgICBpZiAoZXZlbnQpIHsKLSAgICAgICAgTlNSZXNwb25kZXIgKmZp
cnN0UmVzcG9uZGVyID0gW1tzZWxmIHdpbmRvd10gZmlyc3RSZXNwb25kZXJdOwotICAgICAgICBp
ZiAoW2ZpcnN0UmVzcG9uZGVyIGlzS2luZE9mQ2xhc3M6W05TVGV4dFZpZXcgY2xhc3NdXSkKLSAg
ICAgICAgICAgIF9wcml2YXRlLT5maXJzdFJlc3BvbmRlclRleHRWaWV3QXRNb3VzZURvd25UaW1l
ID0gW2ZpcnN0UmVzcG9uZGVyIHJldGFpbl07Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIF9w
cml2YXRlLT5maXJzdFJlc3BvbmRlclRleHRWaWV3QXRNb3VzZURvd25UaW1lID0gbmlsOwotICAg
IH0gZWxzZQotICAgICAgICBfcHJpdmF0ZS0+Zmlyc3RSZXNwb25kZXJUZXh0Vmlld0F0TW91c2VE
b3duVGltZSA9IG5pbDsKIH0KIAogLSAodm9pZClfY2FuY2VsVXBkYXRlQWN0aXZlU3RhdGVUaW1l
cgpAQCAtMTE3OSwyOSArMTE2MSw2IEBAIHN0YXRpYyB2b2lkIF91cGRhdGVNb3VzZW92ZXJUaW1l
ckNhbGxiYWMKICAgICByZXR1cm4gc2VsZiAhPSBbc2VsZiBfdG9wSFRNTFZpZXddOwogfQogCi0t
ICh2b2lkKXNjcm9sbFBvaW50OihOU1BvaW50KXBvaW50Ci17Ci0gICAgLy8gU2luY2Ugd2UgY2Fu
J3Qgc3ViY2xhc3MgTlNUZXh0VmlldyB0byBkbyB3aGF0IHdlIHdhbnQsIHdlIGhhdmUgdG8gc2Vj
b25kIGd1ZXNzIGl0IGhlcmUuCi0gICAgLy8gSWYgd2UgZ2V0IGNhbGxlZCBkdXJpbmcgdGhlIGhh
bmRsaW5nIG9mIGEga2V5IGRvd24gZXZlbnQsIHdlIGFzc3VtZSB0aGUgY2FsbCBjYW1lIGZyb20K
LSAgICAvLyBOU1RleHRWaWV3LCBhbmQgaWdub3JlIGl0IGFuZCB1c2Ugb3VyIG93biBjb2RlIHRv
IGRlY2lkZSBob3cgdG8gcGFnZSB1cCBhbmQgcGFnZSBkb3duCi0gICAgLy8gV2UgYXJlIHNtYXJ0
ZXIgYWJvdXQgaG93IGZhciB0byBzY3JvbGwsIGFuZCB3ZSBoYXZlICJzdXBlcnZpZXcgc2Nyb2xs
aW5nIiBsb2dpYy4KLSAgICBOU0V2ZW50ICpldmVudCA9IFtbc2VsZiB3aW5kb3ddIGN1cnJlbnRF
dmVudF07Ci0gICAgaWYgKFtldmVudCB0eXBlXSA9PSBOU0tleURvd24pIHsKLSAgICAgICAgY29u
c3QgdW5pY2hhciBwYWdlVXAgPSBOU1BhZ2VVcEZ1bmN0aW9uS2V5OwotICAgICAgICBpZiAoW1tl
dmVudCBjaGFyYWN0ZXJzXSByYW5nZU9mU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFj
dGVyczomcGFnZVVwIGxlbmd0aDoxXV0ubGVuZ3RoID09IDEpIHsKLSAgICAgICAgICAgIFtzZWxm
IHRyeVRvUGVyZm9ybTpAc2VsZWN0b3Ioc2Nyb2xsUGFnZVVwOikgd2l0aDpuaWxdOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGNvbnN0IHVuaWNoYXIgcGFnZURvd24g
PSBOU1BhZ2VEb3duRnVuY3Rpb25LZXk7Ci0gICAgICAgIGlmIChbW2V2ZW50IGNoYXJhY3RlcnNd
IHJhbmdlT2ZTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZwYWdlRG93biBs
ZW5ndGg6MV1dLmxlbmd0aCA9PSAxKSB7Ci0gICAgICAgICAgICBbc2VsZiB0cnlUb1BlcmZvcm06
QHNlbGVjdG9yKHNjcm9sbFBhZ2VEb3duOikgd2l0aDpuaWxdOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIFtzdXBlciBzY3JvbGxQb2ludDpwb2ludF07
Ci19Ci0KIC0gKE5TVmlldyAqKWhpdFRlc3Q6KE5TUG9pbnQpcG9pbnQKIHsKICAgICAvLyBXZWJI
VE1MVmlldyBvYmplY3RzIGhhbmRsZSBhbGwgZXZlbnRzIGZvciBvYmplY3RzIGluc2lkZSB0aGVt
LgpAQCAtMjA2MCwxMyArMjAxOSwyMiBAQCBzdGF0aWMgdm9pZCBfdXBkYXRlTW91c2VvdmVyVGlt
ZXJDYWxsYmFjCiAgICAgcmV0dXJuIFtbd2ViVmlldyBfZWRpdGluZ0RlbGVnYXRlRm9yd2FyZGVy
XSB3ZWJWaWV3OndlYlZpZXcgZG9Db21tYW5kQnlTZWxlY3RvcjpzZWxlY3Rvcl07CiB9CiAKLXN0
YXRpYyBTdHJpbmcgY29tYW5kTmFtZUZvclNlbGVjdG9yKFNFTCBzZWxlY3RvcikKK3N0YXRpYyBT
dHJpbmcgY29tbWFuZE5hbWVGb3JTZWxlY3RvcihTRUwgc2VsZWN0b3IpCiB7CiAgICAgLy8gQ2hh
bmdlIGEgZmV3IGNvbW1hbmQgbmFtZXMgaW50byBvbmVzIHN1cHBvcnRlZCBieSBXZWJDb3JlOjpF
ZGl0b3IuCisgICAgLy8gSWYgdGhpcyBsaXN0IGdldHMgdG9vIGxvbmcgd2UgbWlnaHQgZGVjaWRl
IHdlIG5lZWQgdG8gdXNlIGEgaGFzaCB0YWJsZS4KICAgICBpZiAoc2VsZWN0b3IgPT0gQHNlbGVj
dG9yKGluc2VydFBhcmFncmFwaFNlcGFyYXRvcjopIHx8IHNlbGVjdG9yID09IEBzZWxlY3Rvcihp
bnNlcnROZXdsaW5lSWdub3JpbmdGaWVsZEVkaXRvcjopKQogICAgICAgICByZXR1cm4gIkluc2Vy
dE5ld2xpbmUiOwogICAgIGlmIChzZWxlY3RvciA9PSBAc2VsZWN0b3IoaW5zZXJ0VGFiSWdub3Jp
bmdGaWVsZEVkaXRvcjopKQogICAgICAgICByZXR1cm4gIkluc2VydFRhYiI7CisgICAgaWYgKHNl
bGVjdG9yID09IEBzZWxlY3RvcihwYWdlRG93bjopKQorICAgICAgICByZXR1cm4gIk1vdmVQYWdl
RG93biI7CisgICAgaWYgKHNlbGVjdG9yID09IEBzZWxlY3RvcihwYWdlRG93bkFuZE1vZGlmeVNl
bGVjdGlvbjopKQorICAgICAgICByZXR1cm4gIk1vdmVQYWdlRG93bkFuZE1vZGlmeVNlbGVjdGlv
biI7CisgICAgaWYgKHNlbGVjdG9yID09IEBzZWxlY3RvcihwYWdlVXA6KSkKKyAgICAgICAgcmV0
dXJuICJNb3ZlUGFnZVVwIjsKKyAgICBpZiAoc2VsZWN0b3IgPT0gQHNlbGVjdG9yKHBhZ2VVcEFu
ZE1vZGlmeVNlbGVjdGlvbjopKQorICAgICAgICByZXR1cm4gIk1vdmVQYWdlVXBBbmRNb2RpZnlT
ZWxlY3Rpb24iOwogCiAgICAgLy8gUmVtb3ZlIHRoZSB0cmFpbGluZyBjb2xvbi4KICAgICBjb25z
dCBjaGFyKiBzZWxlY3Rvck5hbWUgPSBzZWxfZ2V0TmFtZShzZWxlY3Rvcik7CkBAIC0yMDgxLDcg
KzIwNDksNyBAQCBzdGF0aWMgU3RyaW5nIGNvbWFuZE5hbWVGb3JTZWxlY3RvcihTRUwgCiAgICAg
RnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CiAgICAgaWYgKCFjb3JlRnJh
bWUpCiAgICAgICAgIHJldHVybiBFZGl0b3I6OkNvbW1hbmQoKTsKLSAgICByZXR1cm4gY29yZUZy
YW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21hbmROYW1lRm9yU2VsZWN0b3Ioc2VsZWN0b3IpKTsK
KyAgICByZXR1cm4gY29yZUZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZChjb21tYW5kTmFtZUZvclNl
bGVjdG9yKHNlbGVjdG9yKSk7CiB9CiAKIC0gKEVkaXRvcjo6Q29tbWFuZCljb3JlQ29tbWFuZEJ5
TmFtZTooY29uc3QgY2hhciopbmFtZQpAQCAtMjExOCw4ICsyMDg2LDE2IEBAIFdFQkNPUkVfQ09N
TUFORChhbGlnbkNlbnRlcikKIFdFQkNPUkVfQ09NTUFORChhbGlnbkp1c3RpZmllZCkKIFdFQkNP
UkVfQ09NTUFORChhbGlnbkxlZnQpCiBXRUJDT1JFX0NPTU1BTkQoYWxpZ25SaWdodCkKLVdFQkNP
UkVfQ09NTUFORChjdXQpCiBXRUJDT1JFX0NPTU1BTkQoY29weSkKK1dFQkNPUkVfQ09NTUFORChj
dXQpCitXRUJDT1JFX0NPTU1BTkQoZGVsZXRlKQorV0VCQ09SRV9DT01NQU5EKGRlbGV0ZUJhY2t3
YXJkKQorV0VCQ09SRV9DT01NQU5EKGRlbGV0ZUJhY2t3YXJkQnlEZWNvbXBvc2luZ1ByZXZpb3Vz
Q2hhcmFjdGVyKQorV0VCQ09SRV9DT01NQU5EKGRlbGV0ZUZvcndhcmQpCitXRUJDT1JFX0NPTU1B
TkQoZGVsZXRlVG9CZWdpbm5pbmdPZkxpbmUpCitXRUJDT1JFX0NPTU1BTkQoZGVsZXRlVG9CZWdp
bm5pbmdPZlBhcmFncmFwaCkKK1dFQkNPUkVfQ09NTUFORChkZWxldGVUb0VuZE9mTGluZSkKK1dF
QkNPUkVfQ09NTUFORChkZWxldGVUb0VuZE9mUGFyYWdyYXBoKQogV0VCQ09SRV9DT01NQU5EKGRl
bGV0ZVRvTWFyaykKIFdFQkNPUkVfQ09NTUFORChkZWxldGVXb3JkQmFja3dhcmQpCiBXRUJDT1JF
X0NPTU1BTkQoZGVsZXRlV29yZEZvcndhcmQpCkBAIC0yMTcwLDggKzIxNDYsMTYgQEAgV0VCQ09S
RV9DT01NQU5EKG1vdmVXb3JkTGVmdEFuZE1vZGlmeVNlbAogV0VCQ09SRV9DT01NQU5EKG1vdmVX
b3JkUmlnaHQpCiBXRUJDT1JFX0NPTU1BTkQobW92ZVdvcmRSaWdodEFuZE1vZGlmeVNlbGVjdGlv
bikKIFdFQkNPUkVfQ09NTUFORChvdXRkZW50KQorV0VCQ09SRV9DT01NQU5EKHBhZ2VEb3duKQor
V0VCQ09SRV9DT01NQU5EKHBhZ2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uKQorV0VCQ09SRV9DT01N
QU5EKHBhZ2VVcCkKK1dFQkNPUkVfQ09NTUFORChwYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb24pCiBX
RUJDT1JFX0NPTU1BTkQoc2VsZWN0QWxsKQorV0VCQ09SRV9DT01NQU5EKHNlbGVjdExpbmUpCitX
RUJDT1JFX0NPTU1BTkQoc2VsZWN0UGFyYWdyYXBoKQorV0VCQ09SRV9DT01NQU5EKHNlbGVjdFNl
bnRlbmNlKQogV0VCQ09SRV9DT01NQU5EKHNlbGVjdFRvTWFyaykKK1dFQkNPUkVfQ09NTUFORChz
ZWxlY3RXb3JkKQogV0VCQ09SRV9DT01NQU5EKHNldE1hcmspCiBXRUJDT1JFX0NPTU1BTkQoc3Vi
c2NyaXB0KQogV0VCQ09SRV9DT01NQU5EKHN1cGVyc2NyaXB0KQpAQCAtMjIyOCwxMCArMjIxMiwx
MCBAQCBXRUJDT1JFX0NPTU1BTkQoeWFua0FuZFNlbGVjdCkKIH0KIAogLy8ganVtcFRvU2VsZWN0
aW9uIGlzIHRoZSBvbGQgbmFtZSBmb3Igd2hhdCBBcHBLaXQgbm93IGNhbGxzIGNlbnRlclNlbGVj
dGlvbkluVmlzaWJsZUFyZWEuIFNhZmFyaQotLy8gd2FzIHVzaW5nIHRoZSBvbGQganVtcFRvU2Vs
ZWN0aW9uIHNlbGVjdG9yIGluIGl0cyBtZW51LiBOZXdlciB2ZXJzaW9ucyBvZiBTYWZhcmkgd2ls
bCB1cyB0aGUKLS8vIHNlbGVjdG9yIGNlbnRlclNlbGVjdGlvbkluVmlzaWJsZUFyZWEuIFdlJ2xs
IGxlYXZlIHRoaXMgb2xkIHNlbGVjdG9yIGluIHBsYWNlIGZvciB0d28gcmVhc29uczoKLS8vICgx
KSBjb21wYXRpYmlsaXR5IGJldHdlZW4gb2xkZXIgU2FmYXJpIGFuZCBuZXdlciBXZWJLaXQ7ICgy
KSBvdGhlciBXZWJLaXQtYmFzZWQgYXBwbGljYXRpb25zCi0vLyBtaWdodCBiZSB1c2luZyB0aGUg
anVtcFRvU2VsZWN0aW9uOiBzZWxlY3RvciwgYW5kIHdlIGRvbid0IHdhbnQgdG8gYnJlYWsgdGhl
bS4KKy8vIHdhcyB1c2luZyB0aGUgb2xkIGp1bXBUb1NlbGVjdGlvbiBzZWxlY3RvciBpbiBpdHMg
bWVudS4gTmV3ZXIgdmVyc2lvbnMgb2YgU2FmYXJpIHdpbGwgdXNlIHRoZQorLy8gc2VsZWN0b3Ig
Y2VudGVyU2VsZWN0aW9uSW5WaXNpYmxlQXJlYS4gV2UnbGwgbGVhdmUgdGhlIG9sZCBzZWxlY3Rv
ciBpbiBwbGFjZSBmb3IgdHdvIHJlYXNvbnM6CisvLyAoMSkgQ29tcGF0aWJpbGl0eSBiZXR3ZWVu
IG9sZGVyIFNhZmFyaSBhbmQgbmV3ZXIgV2ViS2l0OyAoMikgb3RoZXIgV2ViS2l0LWJhc2VkIGFw
cGxpY2F0aW9ucworLy8gbWlnaHQgYmUgdXNpbmcgdGhlIHNlbGVjdG9yLCBhbmQgd2UgZG9uJ3Qg
d2FudCB0byBicmVhayB0aGVtLgogLSAodm9pZClqdW1wVG9TZWxlY3Rpb246KGlkKXNlbmRlcgog
ewogICAgIENPTU1BTkRfUFJPTE9HVUUKQEAgLTIyNTksMTA0ICsyMjQzLDE3IEBAIFdFQkNPUkVf
Q09NTUFORCh5YW5rQW5kU2VsZWN0KQogICAgIGlmIChEb2N1bWVudCogZG9jID0gZnJhbWUtPmRv
Y3VtZW50KCkpIHsKICAgICAgICAgaWYgKGRvYy0+aXNQbHVnaW5Eb2N1bWVudCgpKQogICAgICAg
ICAgICAgcmV0dXJuIE5POwotICAgICAgICAKICAgICAgICAgaWYgKGRvYy0+aXNJbWFnZURvY3Vt
ZW50KCkpIHsgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9y
KGNvcHk6KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZnJhbWUtPmxvYWRlcigpLT5pc0NvbXBs
ZXRlKCk7Ci0gICAgICAgIAogICAgICAgICAgICAgcmV0dXJuIE5POwogICAgICAgICB9CiAgICAg
fQogCi0gICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IoYWxpZ25DZW50ZXI6KQotICAgICAgICAg
ICAgfHwgYWN0aW9uID09IEBzZWxlY3RvcihhbGlnbkp1c3RpZmllZDopCi0gICAgICAgICAgICB8
fCBhY3Rpb24gPT0gQHNlbGVjdG9yKGFsaWduTGVmdDopCi0gICAgICAgICAgICB8fCBhY3Rpb24g
PT0gQHNlbGVjdG9yKGFsaWduUmlnaHQ6KQotICAgICAgICAgICAgfHwgYWN0aW9uID09IEBzZWxl
Y3RvcihjdXQ6KQotICAgICAgICAgICAgfHwgYWN0aW9uID09IEBzZWxlY3Rvcihjb3B5OikKLSAg
ICAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoZGVsZXRlVG9NYXJrOikKLSAgICAgICAg
ICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoZGVsZXRlV29yZEJhY2t3YXJkOikKLSAgICAgICAg
ICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoZGVsZXRlV29yZEZvcndhcmQ6KQotICAgICAgICAg
ICAgfHwgYWN0aW9uID09IEBzZWxlY3RvcihpbmRlbnQ6KQotICAgICAgICAgICAgfHwgYWN0aW9u
ID09IEBzZWxlY3RvcihpbnNlcnRCYWNrdGFiOikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9PSBA
c2VsZWN0b3IoaW5zZXJ0TGluZUJyZWFrOikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2Vs
ZWN0b3IoaW5zZXJ0TmV3bGluZTopCi0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9y
KGluc2VydE5ld2xpbmVJZ25vcmluZ0ZpZWxkRWRpdG9yOikKLSAgICAgICAgICAgIHx8IGFjdGlv
biA9PSBAc2VsZWN0b3IoaW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yOikKLSAgICAgICAgICAgIHx8
IGFjdGlvbiA9PSBAc2VsZWN0b3IoaW5zZXJ0VGFiOikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9
PSBAc2VsZWN0b3IoaW5zZXJ0VGFiSWdub3JpbmdGaWVsZEVkaXRvcjopCi0gICAgICAgICAgICB8
fCBhY3Rpb24gPT0gQHNlbGVjdG9yKG1vdmVCYWNrd2FyZDopCi0gICAgICAgICAgICB8fCBhY3Rp
b24gPT0gQHNlbGVjdG9yKG1vdmVCYWNrd2FyZEFuZE1vZGlmeVNlbGVjdGlvbjopCi0gICAgICAg
ICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKG1vdmVEb3duOikKLSAgICAgICAgICAgIHx8IGFj
dGlvbiA9PSBAc2VsZWN0b3IobW92ZURvd25BbmRNb2RpZnlTZWxlY3Rpb246KQotICAgICAgICAg
ICAgfHwgYWN0aW9uID09IEBzZWxlY3Rvcihtb3ZlRm9yd2FyZDopCi0gICAgICAgICAgICB8fCBh
Y3Rpb24gPT0gQHNlbGVjdG9yKG1vdmVGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uOikKLSAgICAg
ICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IobW92ZUxlZnQ6KQotICAgICAgICAgICAgfHwg
YWN0aW9uID09IEBzZWxlY3Rvcihtb3ZlTGVmdEFuZE1vZGlmeVNlbGVjdGlvbjopCi0gICAgICAg
ICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKG1vdmVQYXJhZ3JhcGhCYWNrd2FyZEFuZE1vZGlm
eVNlbGVjdGlvbjopCi0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKG1vdmVQYXJh
Z3JhcGhGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0aW9uOikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9
PSBAc2VsZWN0b3IobW92ZVJpZ2h0OikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0
b3IobW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uOikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9
PSBAc2VsZWN0b3IobW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudDopCi0gICAgICAgICAgICB8fCBh
Y3Rpb24gPT0gQHNlbGVjdG9yKG1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnRBbmRNb2RpZnlTZWxl
Y3Rpb246KQotICAgICAgICAgICAgfHwgYWN0aW9uID09IEBzZWxlY3Rvcihtb3ZlVG9CZWdpbm5p
bmdPZkxpbmU6KQotICAgICAgICAgICAgfHwgYWN0aW9uID09IEBzZWxlY3Rvcihtb3ZlVG9CZWdp
bm5pbmdPZkxpbmVBbmRNb2RpZnlTZWxlY3Rpb246KQotICAgICAgICAgICAgfHwgYWN0aW9uID09
IEBzZWxlY3Rvcihtb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFwaDopCi0gICAgICAgICAgICB8fCBh
Y3Rpb24gPT0gQHNlbGVjdG9yKG1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoQW5kTW9kaWZ5U2Vs
ZWN0aW9uOikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IobW92ZVRvQmVnaW5u
aW5nT2ZTZW50ZW5jZTopCi0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKG1vdmVU
b0JlZ2lubmluZ09mU2VudGVuY2VBbmRNb2RpZnlTZWxlY3Rpb246KQotICAgICAgICAgICAgfHwg
YWN0aW9uID09IEBzZWxlY3Rvcihtb3ZlVG9FbmRPZkRvY3VtZW50OikKLSAgICAgICAgICAgIHx8
IGFjdGlvbiA9PSBAc2VsZWN0b3IobW92ZVRvRW5kT2ZEb2N1bWVudEFuZE1vZGlmeVNlbGVjdGlv
bjopCi0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKG1vdmVUb0VuZE9mTGluZTop
Ci0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKG1vdmVUb0VuZE9mTGluZUFuZE1v
ZGlmeVNlbGVjdGlvbjopCi0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKG1vdmVU
b0VuZE9mUGFyYWdyYXBoOikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IobW92
ZVRvRW5kT2ZQYXJhZ3JhcGhBbmRNb2RpZnlTZWxlY3Rpb246KQotICAgICAgICAgICAgfHwgYWN0
aW9uID09IEBzZWxlY3Rvcihtb3ZlVG9FbmRPZlNlbnRlbmNlOikKLSAgICAgICAgICAgIHx8IGFj
dGlvbiA9PSBAc2VsZWN0b3IobW92ZVRvRW5kT2ZTZW50ZW5jZUFuZE1vZGlmeVNlbGVjdGlvbjop
Ci0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKG1vdmVVcDopCi0gICAgICAgICAg
ICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKG1vdmVVcEFuZE1vZGlmeVNlbGVjdGlvbjopCi0gICAg
ICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKG1vdmVXb3JkQmFja3dhcmQ6KQotICAgICAg
ICAgICAgfHwgYWN0aW9uID09IEBzZWxlY3Rvcihtb3ZlV29yZEJhY2t3YXJkQW5kTW9kaWZ5U2Vs
ZWN0aW9uOikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IobW92ZVdvcmRGb3J3
YXJkOikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IobW92ZVdvcmRGb3J3YXJk
QW5kTW9kaWZ5U2VsZWN0aW9uOikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3Io
bW92ZVdvcmRMZWZ0OikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IobW92ZVdv
cmRMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uOikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2Vs
ZWN0b3IobW92ZVdvcmRSaWdodDopCi0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9y
KG1vdmVXb3JkUmlnaHRBbmRNb2RpZnlTZWxlY3Rpb246KQotICAgICAgICAgICAgfHwgYWN0aW9u
ID09IEBzZWxlY3RvcihvdXRkZW50OikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0
b3Ioc2VsZWN0QWxsOikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3Ioc2VsZWN0
VG9NYXJrOikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3Ioc2V0TWFyazopCi0g
ICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHN1YnNjcmlwdDopCi0gICAgICAgICAg
ICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHN1cGVyc2NyaXB0OikKLSAgICAgICAgICAgIHx8IGFj
dGlvbiA9PSBAc2VsZWN0b3Ioc3dhcFdpdGhNYXJrOikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9
PSBAc2VsZWN0b3IodHJhbnNwb3NlOikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0
b3IodW5kZXJsaW5lOikKLSAgICAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IodW5zY3Jp
cHQ6KQotICAgICAgICAgICAgfHwgYWN0aW9uID09IEBzZWxlY3Rvcih5YW5rOikKLSAgICAgICAg
ICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoeWFua0FuZFNlbGVjdDopKSB7Ci0gICAgICAgIEVk
aXRvcjo6Q29tbWFuZCBjb21tYW5kID0gW3NlbGYgY29yZUNvbW1hbmRCeVNlbGVjdG9yOmFjdGlv
bl07Ci0gICAgICAgIE5TTWVudUl0ZW0gKm1lbnVJdGVtID0gKE5TTWVudUl0ZW0gKilpdGVtOwot
ICAgICAgICBpZiAoW21lbnVJdGVtIGlzS2luZE9mQ2xhc3M6W05TTWVudUl0ZW0gY2xhc3NdXSkK
LSAgICAgICAgICAgIFttZW51SXRlbSBzZXRTdGF0ZTpraXQoY29tbWFuZC5zdGF0ZSgpKV07Ci0g
ICAgICAgIHJldHVybiBjb21tYW5kLmlzRW5hYmxlZCgpOwotICAgIH0KLQogICAgIGlmIChhY3Rp
b24gPT0gQHNlbGVjdG9yKGNoYW5nZVNwZWxsaW5nOikKICAgICAgICAgICAgIHx8IGFjdGlvbiA9
PSBAc2VsZWN0b3IoX2NoYW5nZVNwZWxsaW5nRnJvbU1lbnU6KQogICAgICAgICAgICAgfHwgYWN0
aW9uID09IEBzZWxlY3RvcihjaGVja1NwZWxsaW5nOikKICAgICAgICAgICAgIHx8IGFjdGlvbiA9
PSBAc2VsZWN0b3IoY29tcGxldGU6KQotICAgICAgICAgICAgfHwgYWN0aW9uID09IEBzZWxlY3Rv
cihkZWxldGVCYWNrd2FyZDopCi0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKGRl
bGV0ZUJhY2t3YXJkQnlEZWNvbXBvc2luZ1ByZXZpb3VzQ2hhcmFjdGVyOikKLSAgICAgICAgICAg
IHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoZGVsZXRlRm9yd2FyZDopCi0gICAgICAgICAgICB8fCBh
Y3Rpb24gPT0gQHNlbGVjdG9yKGRlbGV0ZVRvQmVnaW5uaW5nT2ZMaW5lOikKLSAgICAgICAgICAg
IHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoZGVsZXRlVG9CZWdpbm5pbmdPZlBhcmFncmFwaDopCi0g
ICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKGRlbGV0ZVRvRW5kT2ZMaW5lOikKLSAg
ICAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoZGVsZXRlVG9FbmRPZlBhcmFncmFwaDop
Ci0gICAgICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHBhZ2VEb3duOikKLSAgICAgICAg
ICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IocGFnZURvd25BbmRNb2RpZnlTZWxlY3Rpb246KQot
ICAgICAgICAgICAgfHwgYWN0aW9uID09IEBzZWxlY3RvcihwYWdlVXA6KQotICAgICAgICAgICAg
fHwgYWN0aW9uID09IEBzZWxlY3RvcihwYWdlVXBBbmRNb2RpZnlTZWxlY3Rpb246KQogICAgICAg
ICAgICAgfHwgYWN0aW9uID09IEBzZWxlY3RvcihwYXN0ZUZvbnQ6KSkKICAgICAgICAgcmV0dXJu
IFtzZWxmIF9jYW5FZGl0XTsKICAgICAKQEAgLTIzNzMsMTMgKzIyNzAsMTEgQEAgV0VCQ09SRV9D
T01NQU5EKHlhbmtBbmRTZWxlY3QpCiAgICAgfQogICAgIAogICAgIGlmIChhY3Rpb24gPT0gQHNl
bGVjdG9yKGNoYW5nZUJhc2VXcml0aW5nRGlyZWN0aW9uOikpIHsKKyAgICAgICAgTlNXcml0aW5n
RGlyZWN0aW9uIHdyaXRpbmdEaXJlY3Rpb24gPSBzdGF0aWNfY2FzdDxOU1dyaXRpbmdEaXJlY3Rp
b24+KFtpdGVtIHRhZ10pOworICAgICAgICBpZiAod3JpdGluZ0RpcmVjdGlvbiA9PSBOU1dyaXRp
bmdEaXJlY3Rpb25OYXR1cmFsKQorICAgICAgICAgICAgcmV0dXJuIE5POwogICAgICAgICBOU01l
bnVJdGVtICptZW51SXRlbSA9IChOU01lbnVJdGVtICopaXRlbTsKICAgICAgICAgaWYgKFttZW51
SXRlbSBpc0tpbmRPZkNsYXNzOltOU01lbnVJdGVtIGNsYXNzXV0pIHsKLSAgICAgICAgICAgIE5T
V3JpdGluZ0RpcmVjdGlvbiB3cml0aW5nRGlyZWN0aW9uID0gc3RhdGljX2Nhc3Q8TlNXcml0aW5n
RGlyZWN0aW9uPihbaXRlbSB0YWddKTsKLSAgICAgICAgICAgIGlmICh3cml0aW5nRGlyZWN0aW9u
ID09IE5TV3JpdGluZ0RpcmVjdGlvbk5hdHVyYWwpIHsKLSAgICAgICAgICAgICAgICBbbWVudUl0
ZW0gc2V0U3RhdGU6TlNPZmZTdGF0ZV07Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5POwotICAg
ICAgICAgICAgfQogICAgICAgICAgICAgUmVmUHRyPENTU1N0eWxlRGVjbGFyYXRpb24+IHN0eWxl
ID0gbmV3IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOwogICAgICAgICAgICAgRXhjZXB0aW9u
Q29kZSBlYzsKICAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eSgiZGlyZWN0aW9uIiwgd3Jp
dGluZ0RpcmVjdGlvbiA9PSBOU1dyaXRpbmdEaXJlY3Rpb25MZWZ0VG9SaWdodCA/ICJMVFIiIDog
IlJUTCIsIGVjKTsKQEAgLTI0MjEsOSArMjMxNiw2IEBAIFdFQkNPUkVfQ09NTUFORCh5YW5rQW5k
U2VsZWN0KQogICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKGNoYW5nZURvY3VtZW50QmFja2dy
b3VuZENvbG9yOikpCiAgICAgICAgIHJldHVybiBbW3NlbGYgX3dlYlZpZXddIGlzRWRpdGFibGVd
ICYmIFtzZWxmIF9jYW5FZGl0UmljaGx5XTsKICAgICAKLSAgICBpZiAoYWN0aW9uID09IEBzZWxl
Y3RvcihkZWxldGU6KSkKLSAgICAgICAgcmV0dXJuIGZyYW1lICYmIGZyYW1lLT5lZGl0b3IoKS0+
Y2FuRGVsZXRlKCk7Ci0gICAgCiAgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IoX2lnbm9yZVNw
ZWxsaW5nRnJvbU1lbnU6KQogICAgICAgICAgICAgfHwgYWN0aW9uID09IEBzZWxlY3RvcihfbGVh
cm5TcGVsbGluZ0Zyb21NZW51OikKICAgICAgICAgICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3Io
dGFrZUZpbmRTdHJpbmdGcm9tU2VsZWN0aW9uOikpCkBAIC0yNDM3LDI3ICsyMzI5LDMxIEBAIFdF
QkNPUkVfQ09NTUFORCh5YW5rQW5kU2VsZWN0KQogICAgICAgICAgICAgfHwgKGZyYW1lLT5lZGl0
b3IoKS0+Y2FuUGFzdGUoKSAmJiBmcmFtZS0+c2VsZWN0aW9uQ29udHJvbGxlcigpLT5pc0NvbnRl
bnRSaWNobHlFZGl0YWJsZSgpKSk7CiAgICAgCiAgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3Io
cGVyZm9ybUZpbmRQYW5lbEFjdGlvbjopKQotICAgICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBs
ZW1lbnRlZC4KICAgICAgICAgcmV0dXJuIE5POwogICAgIAotICAgIGlmIChhY3Rpb24gPT0gQHNl
bGVjdG9yKF9sb29rVXBJbkRpY3Rpb25hcnlGcm9tTWVudTopKSB7CisgICAgaWYgKGFjdGlvbiA9
PSBAc2VsZWN0b3IoX2xvb2tVcEluRGljdGlvbmFyeUZyb21NZW51OikpCiAgICAgICAgIHJldHVy
biBbc2VsZiBfaGFzU2VsZWN0aW9uXTsKLSAgICB9IAogICAgIAogI2lmbmRlZiBCVUlMRElOR19P
Tl9USUdFUgogICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZUdyYW1tYXJDaGVja2lu
ZzopKSB7CiAgICAgICAgIC8vIEZJWE1FIDQ3OTkxMzQ6IFdlYlZpZXcgaXMgdGhlIGJvdHRsZW5l
Y2sgZm9yIHRoaXMgZ3JhbW1hci1jaGVja2luZyBsb2dpYywgYnV0IHdlIG11c3QgdmFsaWRhdGUg
CiAgICAgICAgIC8vIHRoZSBzZWxlY3RvciBoZXJlIGJlY2F1c2Ugd2UgaW1wbGVtZW50IGl0IGhl
cmUsIGFuZCB3ZSBtdXN0IGltcGxlbWVudCBpdCBoZXJlIGJlY2F1c2UgdGhlIEFwcEtpdCAKICAg
ICAgICAgLy8gY29kZSBjaGVja3MgdGhlIGZpcnN0IHJlc3BvbmRlci4KLSAgICAgICAgQk9PTCBj
aGVja01hcmsgPSBbc2VsZiBpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWRdOwotICAgICAgICBpZiAo
WyhOU09iamVjdCAqKWl0ZW0gaXNLaW5kT2ZDbGFzczpbTlNNZW51SXRlbSBjbGFzc11dKSB7Ci0g
ICAgICAgICAgICBOU01lbnVJdGVtICptZW51SXRlbSA9IChOU01lbnVJdGVtICopaXRlbTsKLSAg
ICAgICAgICAgIFttZW51SXRlbSBzZXRTdGF0ZTpjaGVja01hcmsgPyBOU09uU3RhdGUgOiBOU09m
ZlN0YXRlXTsKLSAgICAgICAgfQorICAgICAgICBOU01lbnVJdGVtICptZW51SXRlbSA9IChOU01l
bnVJdGVtICopaXRlbTsKKyAgICAgICAgaWYgKFttZW51SXRlbSBpc0tpbmRPZkNsYXNzOltOU01l
bnVJdGVtIGNsYXNzXV0pCisgICAgICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6W3NlbGYgaXNH
cmFtbWFyQ2hlY2tpbmdFbmFibGVkXSA/IE5TT25TdGF0ZSA6IE5TT2ZmU3RhdGVdOwogICAgICAg
ICByZXR1cm4gWUVTOwogICAgIH0KICNlbmRpZgogICAgIAorICAgIEVkaXRvcjo6Q29tbWFuZCBj
b21tYW5kID0gW3NlbGYgY29yZUNvbW1hbmRCeVNlbGVjdG9yOmFjdGlvbl07CisgICAgaWYgKGNv
bW1hbmQuaXNTdXBwb3J0ZWQoKSkgeworICAgICAgICBOU01lbnVJdGVtICptZW51SXRlbSA9IChO
U01lbnVJdGVtICopaXRlbTsKKyAgICAgICAgaWYgKFttZW51SXRlbSBpc0tpbmRPZkNsYXNzOltO
U01lbnVJdGVtIGNsYXNzXV0pCisgICAgICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6a2l0KGNv
bW1hbmQuc3RhdGUoKSldOworICAgICAgICByZXR1cm4gY29tbWFuZC5pc0VuYWJsZWQoKTsKKyAg
ICB9CisKICAgICByZXR1cm4gWUVTOwogfQogCkBAIC0zMDg0LDkgKzI5ODAsNiBAQCBzdGF0aWMg
dm9pZCBfdXBkYXRlQWN0aXZlU3RhdGVUaW1lckNhbGxiCiAgICAgfQogCiBkb25lOgotICAgIFtf
cHJpdmF0ZS0+Zmlyc3RSZXNwb25kZXJUZXh0Vmlld0F0TW91c2VEb3duVGltZSByZWxlYXNlXTsK
LSAgICBfcHJpdmF0ZS0+Zmlyc3RSZXNwb25kZXJUZXh0Vmlld0F0TW91c2VEb3duVGltZSA9IG5p
bDsKLQogICAgIF9wcml2YXRlLT5oYW5kbGluZ01vdXNlRG93bkV2ZW50ID0gTk87CiB9CiAKQEAg
LTMyNTksOSArMzE1Miw4IEBAIG5vUHJvbWlzZWREYXRhOgogLSAoQk9PTCliZWNvbWVGaXJzdFJl
c3BvbmRlcgogewogICAgIE5TU2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiA9IE5TRGlyZWN0
U2VsZWN0aW9uOwotICAgIGlmICghW1tzZWxmIF93ZWJWaWV3XSBfaXNQZXJmb3JtaW5nUHJvZ3Jh
bW1hdGljRm9jdXNdICYmICFfcHJpdmF0ZS0+d2lsbEJlY29tZUZpcnN0UmVzcG9uZGVyRm9yTm9k
ZUZvY3VzKQorICAgIGlmICghW1tzZWxmIF93ZWJWaWV3XSBfaXNQZXJmb3JtaW5nUHJvZ3JhbW1h
dGljRm9jdXNdKQogICAgICAgICBkaXJlY3Rpb24gPSBbW3NlbGYgd2luZG93XSBrZXlWaWV3U2Vs
ZWN0aW9uRGlyZWN0aW9uXTsKLSAgICBfcHJpdmF0ZS0+d2lsbEJlY29tZUZpcnN0UmVzcG9uZGVy
Rm9yTm9kZUZvY3VzID0gTk87CiAKICAgICBbc2VsZiBfdXBkYXRlQWN0aXZlU3RhdGVdOwogICAg
IFtzZWxmIF91cGRhdGVGb250UGFuZWxdOwpAQCAtMzMwMCw3ICszMTkyLDYgQEAgbm9Qcm9taXNl
ZERhdGE6CiAgICAgICAgIH0KICAgICAgICAgW3NlbGYgX3VwZGF0ZUFjdGl2ZVN0YXRlXTsKICAg
ICAgICAgX3ByaXZhdGUtPnJlc2lnbmluZ0ZpcnN0UmVzcG9uZGVyID0gTk87Ci0gICAgICAgIF9w
cml2YXRlLT53aWxsQmVjb21lRmlyc3RSZXNwb25kZXJGb3JOb2RlRm9jdXMgPSBOTzsKICAgICB9
CiAgICAgcmV0dXJuIHJlc2lnbjsKIH0KQEAgLTM2NjgsMTE1ICszNTU5LDYgQEAgbm9Qcm9taXNl
ZERhdGE6CiAgICAgICAgIGNvcmVGcmFtZS0+cmV2ZWFsU2VsZWN0aW9uKFJlbmRlckxheWVyOjpn
QWxpZ25DZW50ZXJBbHdheXMpOwogfQogCi0tICh2b2lkKXBhZ2VVcDooaWQpc2VuZGVyCi17Ci0g
ICAgQ09NTUFORF9QUk9MT0dVRQotCi0gICAgV2ViRnJhbWVWaWV3ICpmcmFtZVZpZXcgPSBbc2Vs
ZiBfZnJhbWVWaWV3XTsKLSAgICBpZiAoIWZyYW1lVmlldykKLSAgICAgICAgcmV0dXJuOwotICAg
IGlmIChbc2VsZiBfY2FuQWx0ZXJDdXJyZW50U2VsZWN0aW9uXSkKLSAgICAgICAgW1tzZWxmIF9i
cmlkZ2VdIGFsdGVyQ3VycmVudFNlbGVjdGlvbjpTZWxlY3Rpb25Db250cm9sbGVyOjpNT1ZFIHZl
cnRpY2FsRGlzdGFuY2U6LVtmcmFtZVZpZXcgX3ZlcnRpY2FsUGFnZVNjcm9sbERpc3RhbmNlXV07
Ci19Ci0KLS0gKHZvaWQpcGFnZURvd246KGlkKXNlbmRlcgotewotICAgIENPTU1BTkRfUFJPTE9H
VUUKLQotICAgIFdlYkZyYW1lVmlldyAqZnJhbWVWaWV3ID0gW3NlbGYgX2ZyYW1lVmlld107Ci0g
ICAgaWYgKCFmcmFtZVZpZXcpCi0gICAgICAgIHJldHVybjsKLSAgICBpZiAoW3NlbGYgX2NhbkFs
dGVyQ3VycmVudFNlbGVjdGlvbl0pCi0gICAgICAgIFtbc2VsZiBfYnJpZGdlXSBhbHRlckN1cnJl
bnRTZWxlY3Rpb246U2VsZWN0aW9uQ29udHJvbGxlcjo6TU9WRSB2ZXJ0aWNhbERpc3RhbmNlOltm
cmFtZVZpZXcgX3ZlcnRpY2FsUGFnZVNjcm9sbERpc3RhbmNlXV07Ci19Ci0KLS0gKHZvaWQpcGFn
ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uOihpZClzZW5kZXIKLXsKLSAgICBDT01NQU5EX1BST0xPR1VF
Ci0KLSAgICBXZWJGcmFtZVZpZXcgKmZyYW1lVmlldyA9IFtzZWxmIF9mcmFtZVZpZXddOwotICAg
IGlmICghZnJhbWVWaWV3KQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKFtzZWxmIF9jYW5BbHRl
ckN1cnJlbnRTZWxlY3Rpb25dKQotICAgICAgICBbW3NlbGYgX2JyaWRnZV0gYWx0ZXJDdXJyZW50
U2VsZWN0aW9uOlNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCB2ZXJ0aWNhbERpc3RhbmNlOi1b
ZnJhbWVWaWV3IF92ZXJ0aWNhbFBhZ2VTY3JvbGxEaXN0YW5jZV1dOwotfQotCi0tICh2b2lkKXBh
Z2VEb3duQW5kTW9kaWZ5U2VsZWN0aW9uOihpZClzZW5kZXIKLXsKLSAgICBDT01NQU5EX1BST0xP
R1VFCi0KLSAgICBXZWJGcmFtZVZpZXcgKmZyYW1lVmlldyA9IFtzZWxmIF9mcmFtZVZpZXddOwot
ICAgIGlmIChmcmFtZVZpZXcgPT0gbmlsKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKFtzZWxm
IF9jYW5BbHRlckN1cnJlbnRTZWxlY3Rpb25dKQotICAgICAgICBbW3NlbGYgX2JyaWRnZV0gYWx0
ZXJDdXJyZW50U2VsZWN0aW9uOlNlbGVjdGlvbkNvbnRyb2xsZXI6OkVYVEVORCB2ZXJ0aWNhbERp
c3RhbmNlOltmcmFtZVZpZXcgX3ZlcnRpY2FsUGFnZVNjcm9sbERpc3RhbmNlXV07Ci19Ci0KLS0g
KHZvaWQpX2V4cGFuZFNlbGVjdGlvblRvR3JhbnVsYXJpdHk6KFRleHRHcmFudWxhcml0eSlncmFu
dWxhcml0eQotewotICAgIGlmICghW3NlbGYgX2NhbkFsdGVyQ3VycmVudFNlbGVjdGlvbl0pCi0g
ICAgICAgIHJldHVybjsKLSAgICAKLSAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBf
ZnJhbWVdKTsKLSAgICBpZiAoIWNvcmVGcmFtZSB8fCAhY29yZUZyYW1lLT5zZWxlY3Rpb25Db250
cm9sbGVyKCktPmlzQ2FyZXRPclJhbmdlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIE5P
VEU6IFRoZSBlbnVtcyAqbXVzdCogbWF0Y2ggdGhlIHZlcnkgc2ltaWxhciBvbmVzIGRlY2xhcmVk
IGluIFNlbGVjdGlvbkNvbnRyb2xsZXIuaAotICAgIFNlbGVjdGlvbiBzZWxlY3Rpb24oY29yZUZy
YW1lLT5zZWxlY3Rpb25Db250cm9sbGVyKCktPnNlbGVjdGlvbigpKTsKLSAgICBzZWxlY3Rpb24u
ZXhwYW5kVXNpbmdHcmFudWxhcml0eShzdGF0aWNfY2FzdDxUZXh0R3JhbnVsYXJpdHk+KGdyYW51
bGFyaXR5KSk7Ci0gICAgCi0gICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IHNlbGVjdGlvbi50b1Jh
bmdlKCk7Ci0gICAgaWYgKCFyYW5nZSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIERPTVJh
bmdlICpkb21SYW5nZSA9IGtpdChyYW5nZS5nZXQoKSk7Ci0gICAgCi0gICAgaWYgKFtkb21SYW5n
ZSBjb2xsYXBzZWRdKQotICAgICAgICByZXR1cm47Ci0KLSAgICBFQWZmaW5pdHkgYWZmaW5pdHkg
PSBjb3JlRnJhbWUtPnNlbGVjdGlvbkNvbnRyb2xsZXIoKS0+YWZmaW5pdHkoKTsKLSAgICBXZWJW
aWV3ICp3ZWJWaWV3ID0gW3NlbGYgX3dlYlZpZXddOwotICAgIGlmIChbW3dlYlZpZXcgX2VkaXRp
bmdEZWxlZ2F0ZUZvcndhcmRlcl0gd2ViVmlldzp3ZWJWaWV3IHNob3VsZENoYW5nZVNlbGVjdGVk
RE9NUmFuZ2U6W3NlbGYgX3NlbGVjdGVkUmFuZ2VdIHRvRE9NUmFuZ2U6ZG9tUmFuZ2UgYWZmaW5p
dHk6a2l0KGFmZmluaXR5KSBzdGlsbFNlbGVjdGluZzpOT10pIHsKLSAgICAgICAgY29yZUZyYW1l
LT5zZWxlY3Rpb25Db250cm9sbGVyKCktPnNldFNlbGVjdGVkUmFuZ2UocmFuZ2UuZ2V0KCksIGFm
ZmluaXR5LCB0cnVlKTsKLSAgICB9Ci19Ci0KLS0gKHZvaWQpc2VsZWN0UGFyYWdyYXBoOihpZClz
ZW5kZXIKLXsKLSAgICBDT01NQU5EX1BST0xPR1VFCi0KLSAgICBbc2VsZiBfZXhwYW5kU2VsZWN0
aW9uVG9HcmFudWxhcml0eTpQYXJhZ3JhcGhHcmFudWxhcml0eV07Ci19Ci0KLS0gKHZvaWQpc2Vs
ZWN0TGluZTooaWQpc2VuZGVyCi17Ci0gICAgQ09NTUFORF9QUk9MT0dVRQotCi0gICAgW3NlbGYg
X2V4cGFuZFNlbGVjdGlvblRvR3JhbnVsYXJpdHk6TGluZUdyYW51bGFyaXR5XTsKLX0KLQotLSAo
dm9pZClzZWxlY3RTZW50ZW5jZTooaWQpc2VuZGVyCi17Ci0gICAgQ09NTUFORF9QUk9MT0dVRQot
Ci0gICAgW3NlbGYgX2V4cGFuZFNlbGVjdGlvblRvR3JhbnVsYXJpdHk6U2VudGVuY2VHcmFudWxh
cml0eV07Ci19Ci0KLS0gKHZvaWQpc2VsZWN0V29yZDooaWQpc2VuZGVyCi17Ci0gICAgQ09NTUFO
RF9QUk9MT0dVRQotCi0gICAgW3NlbGYgX2V4cGFuZFNlbGVjdGlvblRvR3JhbnVsYXJpdHk6V29y
ZEdyYW51bGFyaXR5XTsKLX0KLQotLSAodm9pZClkZWxldGU6KGlkKXNlbmRlcgotewotICAgIENP
TU1BTkRfUFJPTE9HVUUKLQotICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBf
ZnJhbWVdKSkKLSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+cGVyZm9ybURlbGV0ZSgpOwot
fQotCiAtIChOU0RhdGEgKilfc2VsZWN0aW9uU3RhcnRGb250QXR0cmlidXRlc0FzUlRGCiB7CiAg
ICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7CkBAIC00MzAwLDgwICs0
MDgyLDYgQEAgTlNTdHJva2VDb2xvckF0dHJpYnV0ZU5hbWUgICAgICAgIC8qIE5TQwogICAgIFtz
ZWxmIF9jaGFuZ2VXb3JkQ2FzZVdpdGhTZWxlY3RvcjpAc2VsZWN0b3IoY2FwaXRhbGl6ZWRTdHJp
bmcpXTsKIH0KIAotLSAodm9pZClkZWxldGVGb3J3YXJkOihpZClzZW5kZXIKLXsKLSAgICBDT01N
QU5EX1BST0xPR1VFCi0KLSAgICBpZiAoIVtzZWxmIF9pc0VkaXRhYmxlXSkKLSAgICAgICAgcmV0
dXJuOwotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKFtzZWxmIF9mcmFtZV0pOwotICAgIGlm
IChjb3JlRnJhbWUpCi0gICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJl
Y3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6Rk9SV0FSRCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHks
IGZhbHNlLCB0cnVlKTsKLX0KLQotLSAodm9pZClkZWxldGVCYWNrd2FyZDooaWQpc2VuZGVyCi17
Ci0gICAgQ09NTUFORF9QUk9MT0dVRQotCi0gICAgaWYgKCFbc2VsZiBfaXNFZGl0YWJsZV0pCi0g
ICAgICAgIHJldHVybjsKLSAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVd
KTsKLSAgICBpZiAoY29yZUZyYW1lKQotICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5kZWxl
dGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELCBDaGFyYWN0ZXJH
cmFudWxhcml0eSwgZmFsc2UsIHRydWUpOwotfQotCi0tICh2b2lkKWRlbGV0ZUJhY2t3YXJkQnlE
ZWNvbXBvc2luZ1ByZXZpb3VzQ2hhcmFjdGVyOihpZClzZW5kZXIKLXsKLSAgICBDT01NQU5EX1BS
T0xPR1VFCi0KLSAgICBMT0dfRVJST1IoInVuaW1wbGVtZW50ZWQsIGRvaW5nIGRlbGV0ZUJhY2t3
YXJkIGluc3RlYWQiKTsKLQotICAgIGlmICghW3NlbGYgX2lzRWRpdGFibGVdKQotICAgICAgICBy
ZXR1cm47Ci0gICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAg
aWYgKGNvcmVGcmFtZSkKLSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERp
cmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVyOjpCQUNLV0FSRCwgQ2hhcmFjdGVyR3JhbnVsYXJp
dHksIGZhbHNlLCB0cnVlKTsKLX0KLQotLSAodm9pZClkZWxldGVUb0JlZ2lubmluZ09mTGluZToo
aWQpc2VuZGVyCi17Ci0gICAgQ09NTUFORF9QUk9MT0dVRQotCi0gICAgRnJhbWUqIGNvcmVGcmFt
ZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAgaWYgKGNvcmVGcmFtZSkKLSAgICAgICAgY29y
ZUZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlvbihTZWxlY3Rpb25Db250cm9sbGVy
OjpCQUNLV0FSRCwgTGluZUJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7Ci19Ci0KLS0gKHZvaWQpZGVs
ZXRlVG9FbmRPZkxpbmU6KGlkKXNlbmRlcgotewotICAgIENPTU1BTkRfUFJPTE9HVUUKLQotICAg
IC8vIFRvIG1hdGNoIE5TVGV4dFZpZXcsIHRoaXMgY29tbWFuZCBzaG91bGQgZGVsZXRlIHRoZSBu
ZXdsaW5lIGF0IHRoZSBlbmQgb2YKLSAgICAvLyBhIHBhcmFncmFwaCBpZiB5b3UgYXJlIGF0IHRo
ZSBlbmQgb2YgYSBwYXJhZ3JhcGggKGxpa2UgZGVsZXRlVG9FbmRPZlBhcmFncmFwaCBkb2VzIGJl
bG93KS4KLSAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKTsKLSAgICBp
ZiAoY29yZUZyYW1lKQotICAgICAgICBjb3JlRnJhbWUtPmVkaXRvcigpLT5kZWxldGVXaXRoRGly
ZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkZPUldBUkQsIExpbmVCb3VuZGFyeSwgdHJ1ZSwg
ZmFsc2UpOwotfQotCi0tICh2b2lkKWRlbGV0ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGg6KGlkKXNl
bmRlcgotewotICAgIENPTU1BTkRfUFJPTE9HVUUKLQotICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBj
b3JlKFtzZWxmIF9mcmFtZV0pOwotICAgIGlmIChjb3JlRnJhbWUpCi0gICAgICAgIGNvcmVGcmFt
ZS0+ZWRpdG9yKCktPmRlbGV0ZVdpdGhEaXJlY3Rpb24oU2VsZWN0aW9uQ29udHJvbGxlcjo6QkFD
S1dBUkQsIFBhcmFncmFwaEJvdW5kYXJ5LCB0cnVlLCBmYWxzZSk7Ci19Ci0KLS0gKHZvaWQpZGVs
ZXRlVG9FbmRPZlBhcmFncmFwaDooaWQpc2VuZGVyCi17Ci0gICAgQ09NTUFORF9QUk9MT0dVRQot
Ci0gICAgLy8gRGVzcGl0ZSB0aGUgbmFtZSBvZiB0aGUgbWV0aG9kLCB0aGlzIHNob3VsZCBkZWxl
dGUgdGhlIG5ld2xpbmUgaWYgdGhlIGNhcmV0IGlzIGF0IHRoZSBlbmQgb2YgYSBwYXJhZ3JhcGgu
Ci0gICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSk7Ci0gICAgaWYgKGNv
cmVGcmFtZSkKLSAgICAgICAgY29yZUZyYW1lLT5lZGl0b3IoKS0+ZGVsZXRlV2l0aERpcmVjdGlv
bihTZWxlY3Rpb25Db250cm9sbGVyOjpGT1JXQVJELCBQYXJhZ3JhcGhCb3VuZGFyeSwgdHJ1ZSwg
ZmFsc2UpOwotfQotCiAtICh2b2lkKWNvbXBsZXRlOihpZClzZW5kZXIKIHsKICAgICBDT01NQU5E
X1BST0xPR1VFCkBAIC00Mzg5LDEyICs0MDk3LDYgQEAgTlNTdHJva2VDb2xvckF0dHJpYnV0ZU5h
bWUgICAgICAgIC8qIE5TQwogewogICAgIENPTU1BTkRfUFJPTE9HVUUKIAotICAgIE5TU3BlbGxD
aGVja2VyICpjaGVja2VyID0gW05TU3BlbGxDaGVja2VyIHNoYXJlZFNwZWxsQ2hlY2tlcl07Ci0g
ICAgaWYgKCFjaGVja2VyKSB7Ci0gICAgICAgIExPR19FUlJPUigiTm8gTlNTcGVsbENoZWNrZXIi
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKICAgICBpZiAoRnJhbWUqIGNvcmVGcmFt
ZSA9IGNvcmUoW3NlbGYgX2ZyYW1lXSkpCiAgICAgICAgIGNvcmVGcmFtZS0+ZWRpdG9yKCktPmFk
dmFuY2VUb05leHRNaXNzcGVsbGluZygpOwogfQpAQCAtNDc3NCwzMyArNDQ3Niw2IEBAIE5TU3Ry
b2tlQ29sb3JBdHRyaWJ1dGVOYW1lICAgICAgICAvKiBOU0MKICAgICByZXR1cm4gW1tzZWxmIF93
ZWJWaWV3XSBzbWFydEluc2VydERlbGV0ZUVuYWJsZWRdICYmIFtbc2VsZiBfYnJpZGdlXSBzZWxl
Y3Rpb25HcmFudWxhcml0eV0gPT0gV29yZEdyYW51bGFyaXR5OwogfQogCi0tIChET01SYW5nZSAq
KV9zbWFydERlbGV0ZVJhbmdlRm9yUHJvcG9zZWRSYW5nZTooRE9NUmFuZ2UgKilwcm9wb3NlZFJh
bmdlCi17Ci0gICAgaWYgKHByb3Bvc2VkUmFuZ2UgPT0gbmlsIHx8IFtzZWxmIF9jYW5TbWFydENv
cHlPckRlbGV0ZV0gPT0gTk8pCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgcmV0dXJu
IFtbc2VsZiBfYnJpZGdlXSBzbWFydERlbGV0ZVJhbmdlRm9yUHJvcG9zZWRSYW5nZTpwcm9wb3Nl
ZFJhbmdlXTsKLX0KLQotLSAodm9pZClfc21hcnRJbnNlcnRGb3JTdHJpbmc6KE5TU3RyaW5nICop
cGFzdGVTdHJpbmcgcmVwbGFjaW5nUmFuZ2U6KERPTVJhbmdlICopcmFuZ2VUb1JlcGxhY2UgYmVm
b3JlU3RyaW5nOihOU1N0cmluZyAqKiliZWZvcmVTdHJpbmcgYWZ0ZXJTdHJpbmc6KE5TU3RyaW5n
ICoqKWFmdGVyU3RyaW5nCi17Ci0gICAgaWYgKCFwYXN0ZVN0cmluZyB8fCAhcmFuZ2VUb1JlcGxh
Y2UgfHwgIVtbc2VsZiBfd2ViVmlld10gc21hcnRJbnNlcnREZWxldGVFbmFibGVkXSkgewotICAg
ICAgICBpZiAoYmVmb3JlU3RyaW5nKQotICAgICAgICAgICAgKmJlZm9yZVN0cmluZyA9IG5pbDsK
LSAgICAgICAgaWYgKGFmdGVyU3RyaW5nKQotICAgICAgICAgICAgKmFmdGVyU3RyaW5nID0gbmls
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIFtbc2VsZiBfYnJpZGdlXSBzbWFy
dEluc2VydEZvclN0cmluZzpwYXN0ZVN0cmluZyByZXBsYWNpbmdSYW5nZTpyYW5nZVRvUmVwbGFj
ZSBiZWZvcmVTdHJpbmc6YmVmb3JlU3RyaW5nIGFmdGVyU3RyaW5nOmFmdGVyU3RyaW5nXTsKLX0K
LQotLSAoQk9PTClfdGV4dFZpZXdXYXNGaXJzdFJlc3BvbmRlckF0TW91c2VEb3duVGltZTooTlNU
ZXh0VmlldyAqKXRleHRWaWV3Ci17Ci0gICAgcmV0dXJuIHRleHRWaWV3ID09IF9wcml2YXRlLT5m
aXJzdFJlc3BvbmRlclRleHRWaWV3QXRNb3VzZURvd25UaW1lOwotfQotCi0KIC0gKE5TRXZlbnQg
KilfbW91c2VEb3duRXZlbnQKIHsKICAgICByZXR1cm4gX3ByaXZhdGUtPm1vdXNlRG93bkV2ZW50
OwpAQCAtNDgzNiwxMSArNDUxMSw2IEBAIE5TU3Ryb2tlQ29sb3JBdHRyaWJ1dGVOYW1lICAgICAg
ICAvKiBOU0MKIH0KICNlbmRpZgogCi0tICh2b2lkKV93aWxsTWFrZUZpcnN0UmVzcG9uZGVyRm9y
Tm9kZUZvY3VzCi17Ci0gICAgX3ByaXZhdGUtPndpbGxCZWNvbWVGaXJzdFJlc3BvbmRlckZvck5v
ZGVGb2N1cyA9IFlFUzsKLX0KLQogLSAoaWQ8V2ViSFRNTEhpZ2hsaWdodGVyPilfaGlnaGxpZ2h0
ZXJGb3JUeXBlOihOU1N0cmluZyopdHlwZQogewogICAgIHJldHVybiBbX3ByaXZhdGUtPmhpZ2hs
aWdodGVycyBvYmplY3RGb3JLZXk6dHlwZV07CkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
SFRNTFZpZXdJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJI
VE1MVmlld0ludGVybmFsLmgJKHJldmlzaW9uIDI4NzExKQorKysgV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkhUTUxWaWV3SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNiBAQCBz
dHJ1Y3QgV2ViSFRNTFZpZXdJbnRlcnByZXRLZXlFdmVudHNQYXJhCiAKICAgICBCT09MIHJlc2ln
bmluZ0ZpcnN0UmVzcG9uZGVyOwogICAgIEJPT0wgbmV4dFJlc3BvbmRlckRpc2FibGVkT25jZTsK
LSAgICBCT09MIHdpbGxCZWNvbWVGaXJzdFJlc3BvbmRlckZvck5vZGVGb2N1czsKICAgICAKICAg
ICBXZWJUZXh0Q29tcGxldGVDb250cm9sbGVyICpjb21wQ29udHJvbGxlcjsKICAgICAKQEAgLTg3
LDggKzg2LDYgQEAgc3RydWN0IFdlYkhUTUxWaWV3SW50ZXJwcmV0S2V5RXZlbnRzUGFyYQogICAg
IFdlYkhUTUxWaWV3SW50ZXJwcmV0S2V5RXZlbnRzUGFyYW1ldGVycyAqaW50ZXJwcmV0S2V5RXZl
bnRzUGFyYW1ldGVyczsKICAgICBCT09MIHJlY2VpdmVkTk9PUDsKICAgICAKLSAgICBOU1RleHRW
aWV3ICpmaXJzdFJlc3BvbmRlclRleHRWaWV3QXRNb3VzZURvd25UaW1lOwotICAgIAogICAgIFdl
YkRhdGFTb3VyY2UgKmRhdGFTb3VyY2U7CiAgICAgV2ViQ29yZTo6Q2FjaGVkSW1hZ2UgKnByb21p
c2VkRHJhZ1RJRkZEYXRhU291cmNlOwogICAgIApAQCAtMTA4LDEyICsxMDUsMTAgQEAgc3RydWN0
IFdlYkhUTUxWaWV3SW50ZXJwcmV0S2V5RXZlbnRzUGFyYQogLSAodm9pZClfc2VsZWN0aW9uQ2hh
bmdlZDsKIC0gKHZvaWQpX3VwZGF0ZUZvbnRQYW5lbDsKIC0gKEJPT0wpX2NhblNtYXJ0Q29weU9y
RGVsZXRlOwotLSAoQk9PTClfdGV4dFZpZXdXYXNGaXJzdFJlc3BvbmRlckF0TW91c2VEb3duVGlt
ZTooTlNUZXh0VmlldyAqKXRleHRWaWV3OwogI2lmbmRlZiBfX0xQNjRfXwogLSAodm9pZClfcGF1
c2VOdWxsRXZlbnRzRm9yQWxsTmV0c2NhcGVQbHVnaW5zOwogLSAodm9pZClfcmVzdW1lTnVsbEV2
ZW50c0ZvckFsbE5ldHNjYXBlUGx1Z2luczsKICNlbmRpZgotLSAodm9pZClfd2lsbE1ha2VGaXJz
dFJlc3BvbmRlckZvck5vZGVGb2N1czsKIC0gKGlkPFdlYkhUTUxIaWdobGlnaHRlcj4pX2hpZ2hs
aWdodGVyRm9yVHlwZTooTlNTdHJpbmcqKXR5cGU7CiAtIChXZWJGcmFtZSAqKV9mcmFtZTsKIC0g
KHZvaWQpcGFzdGU6KGlkKXNlbmRlcjsKSW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gMjg3MTEpCisrKyBXZWJLaXQv
cXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDctMTItMTMg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFX
ZWJQYWdlOjp0cmlnZ2VyQWN0aW9uKTogUmVtb3ZlZCBzb21lIHVzZSBvZiBFZGl0b3IgbWVtYmVy
IGZ1bmN0aW9ucyB3ZSBwbGFuCisgICAgICAgIHRvIGV2ZW50dWFsbHkgZWxpbWluYXRlLiBTd2l0
Y2ggZnJvbSBFZGl0b3I6OmV4ZWNDb21tYW5kIHRvIEVkaXRvcjo6Y29tbWFuZC4KKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudCk6IERpdHRvLiBBbHNvIHVwZGF0ZWQg
bmFtZSBmcm9tCisgICAgICAgIE1vdmVVcEJ5UGFnZUFuZE1vZGlmeUNhcmV0IHRvIE1vdmVQYWdl
VXAgYW5kIGZyb20gTW92ZURvd25CeVBhZ2VBbmRNb2RpZnlDYXJldAorICAgICAgICB0byBNb3Zl
UGFnZURvd24uCisKIDIwMDctMTItMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcKSW5kZXg6IFdlYktpdC9xdC9BcGkv
cXdlYnBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCShy
ZXZpc2lvbiAyODcxMSkKKysrIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00ODgsMjAgKzQ4OCwyMCBAQCB2b2lkIFFXZWJQYWdlOjp0cmlnZ2VyQWN0aW9uKFdl
YkFjdGlvbiBhCiAgICAgICAgICAgICBtYWluRnJhbWUoKS0+ZC0+ZnJhbWUtPmxvYWRlcigpLT5y
ZWxvYWQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEN1dDoKLSAgICAgICAg
ICAgIGVkaXRvci0+Y3V0KCk7CisgICAgICAgICAgICBjb21tYW5kID0gIkN1dCI7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgY2FzZSBDb3B5OgotICAgICAgICAgICAgZWRpdG9yLT5jb3B5
KCk7CisgICAgICAgICAgICBjb21tYW5kID0gIkNvcHkiOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgUGFzdGU6Ci0gICAgICAgICAgICBlZGl0b3ItPnBhc3RlKCk7CisgICAgICAg
ICAgICBjb21tYW5kID0gIlBhc3RlIjsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNh
c2UgVW5kbzoKLSAgICAgICAgICAgIGVkaXRvci0+dW5kbygpOworICAgICAgICAgICAgY29tbWFu
ZCA9ICJVbmRvIjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFJlZG86Ci0gICAg
ICAgICAgICBlZGl0b3ItPnJlZG8oKTsKKyAgICAgICAgICAgIGNvbW1hbmQgPSAiUmVkbyI7CiAg
ICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIE1vdmVUb05leHRDaGFyOgpAQCAtNTkz
LDcgKzU5Myw2IEBAIHZvaWQgUVdlYlBhZ2U6OnRyaWdnZXJBY3Rpb24oV2ViQWN0aW9uIGEKICAg
ICAgICAgICAgIGVkaXRvci0+c2V0QmFzZVdyaXRpbmdEaXJlY3Rpb24oInJ0bCIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAKLQogICAgICAgICBjYXNlIFRvZ2dsZUJvbGQ6CiAgICAgICAgICAgICBj
b21tYW5kID0gIlRvZ2dsZUJvbGQiOwogICAgICAgICAgICAgYnJlYWs7CkBAIC02MTEsNyArNjEw
LDcgQEAgdm9pZCBRV2ViUGFnZTo6dHJpZ2dlckFjdGlvbihXZWJBY3Rpb24gYQogICAgIH0KIAog
ICAgIGlmIChjb21tYW5kKQotICAgICAgICBlZGl0b3ItPmV4ZWNDb21tYW5kKGNvbW1hbmQpOwor
ICAgICAgICBlZGl0b3ItPmNvbW1hbmQoY29tbWFuZCkuZXhlY3V0ZSgpOwogfQogCiBRV2ViUGFn
ZTo6TmF2aWdhdGlvblJlcXVlc3RSZXNwb25zZSBRV2ViUGFnZTo6bmF2aWdhdGlvblJlcXVlc3Rl
ZChRV2ViRnJhbWUgKmZyYW1lLCBjb25zdCBRV2ViTmV0d29ya1JlcXVlc3QgJnJlcXVlc3QsIFFX
ZWJQYWdlOjpOYXZpZ2F0aW9uVHlwZSB0eXBlKQpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCShyZXZpc2lvbiAyODcxMSkKKysrIFdlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0Myw3
ICszNDMsNyBAQCB2b2lkIEVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50CiAgICAg
aWYgKHN0YXJ0LT5pc0NvbnRlbnRFZGl0YWJsZSgpKSB7CiAgICAgICAgIHN3aXRjaCAoa2V2ZW50
LT53aW5kb3dzVmlydHVhbEtleUNvZGUoKSkgewogICAgICAgICAgICAgY2FzZSBWS19SRVRVUk46
Ci0gICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5leGVjQ29tbWFuZCgiSW5zZXJ0TGlu
ZUJyZWFrIik7CisgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJJbnNl
cnRMaW5lQnJlYWsiKS5leGVjdXRlKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBjYXNlIFZLX0JBQ0s6CiAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5kZWxl
dGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkNvbnRyb2xsZXI6OkJBQ0tXQVJELApAQCAtMzU1LDI5
ICszNTUsMjkgQEAgdm9pZCBFZGl0b3JDbGllbnRRdDo6aGFuZGxlS2V5Ym9hcmRFdmVudAogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19MRUZUOgogICAgICAgICAg
ICAgICAgIGlmIChrZXZlbnQtPnNoaWZ0S2V5KCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS0+ZXhlY0NvbW1hbmQoIk1vdmVMZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uIik7Ci0g
ICAgICAgICAgICAgICAgZWxzZSBmcmFtZS0+ZWRpdG9yKCktPmV4ZWNDb21tYW5kKCJNb3ZlTGVm
dCIpOworICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVM
ZWZ0QW5kTW9kaWZ5U2VsZWN0aW9uIikuZXhlY3V0ZSgpOworICAgICAgICAgICAgICAgIGVsc2Ug
ZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlTGVmdCIpLmV4ZWN1dGUoKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVktfUklHSFQ6CiAgICAgICAgICAgICAg
ICAgaWYgKGtldmVudC0+c2hpZnRLZXkoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVk
aXRvcigpLT5leGVjQ29tbWFuZCgiTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uIik7Ci0gICAg
ICAgICAgICAgICAgZWxzZSBmcmFtZS0+ZWRpdG9yKCktPmV4ZWNDb21tYW5kKCJNb3ZlUmlnaHQi
KTsKKyAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlUmln
aHRBbmRNb2RpZnlTZWxlY3Rpb24iKS5leGVjdXRlKCk7CisgICAgICAgICAgICAgICAgZWxzZSBm
cmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVSaWdodCIpLmV4ZWN1dGUoKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVktfVVA6CiAgICAgICAgICAgICAgICAg
aWYgKGtldmVudC0+c2hpZnRLZXkoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRv
cigpLT5leGVjQ29tbWFuZCgiTW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uIik7Ci0gICAgICAgICAg
ICAgICAgZWxzZSBmcmFtZS0+ZWRpdG9yKCktPmV4ZWNDb21tYW5kKCJNb3ZlVXAiKTsKKyAgICAg
ICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVXBBbmRNb2RpZnlT
ZWxlY3Rpb24iKS5leGVjdXRlKCk7CisgICAgICAgICAgICAgICAgZWxzZSBmcmFtZS0+ZWRpdG9y
KCktPmNvbW1hbmQoIk1vdmVVcCIpLmV4ZWN1dGUoKTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIGNhc2UgVktfRE9XTjoKICAgICAgICAgICAgICAgICBpZiAoa2V2ZW50LT5z
aGlmdEtleSgpKQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmV4ZWNDb21t
YW5kKCJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIpOwotICAgICAgICAgICAgICAgIGVsc2Ug
ZnJhbWUtPmVkaXRvcigpLT5leGVjQ29tbWFuZCgiTW92ZURvd24iKTsKKyAgICAgICAgICAgICAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlv
biIpLmV4ZWN1dGUoKTsKKyAgICAgICAgICAgICAgICBlbHNlIGZyYW1lLT5lZGl0b3IoKS0+Y29t
bWFuZCgiTW92ZURvd24iKS5leGVjdXRlKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICBjYXNlIFZLX1BSSU9SOiAgLy8gUGFnZVVwCi0gICAgICAgICAgICAgICAgZnJhbWUt
PmVkaXRvcigpLT5leGVjQ29tbWFuZCgiTW92ZVVwQnlQYWdlQW5kTW9kaWZ5Q2FyZXQiKTsKKyAg
ICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVQYWdlVXAiKS5leGVj
dXRlKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFZLX05FWFQ6
ICAvLyBQYWdlRG93bgotICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZXhlY0NvbW1h
bmQoIk1vdmVEb3duQnlQYWdlQW5kTW9kaWZ5Q2FyZXQiKTsKKyAgICAgICAgICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVQYWdlRG93biIpLmV4ZWN1dGUoKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVktfVEFCOgogICAgICAgICAgICAgICAg
IHJldHVybjsKQEAgLTM4NywyOCArMzg3LDI4IEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OmhhbmRs
ZUtleWJvYXJkRXZlbnQKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtldmVudC0+Y3RybEtl
eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoa2V2ZW50LT53aW5kb3dzVmlydHVh
bEtleUNvZGUoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBWS19BOgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZXhlY0NvbW1hbmQoIlNlbGVj
dEFsbCIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29t
bWFuZCgiU2VsZWN0QWxsIikuZXhlY3V0ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBWS19COgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZXhlY0NvbW1hbmQoIlRvZ2dsZUJvbGQi
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQo
IlRvZ2dsZUJvbGQiKS5leGVjdXRlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFZLX0M6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5leGVjQ29tbWFuZCgiQ29weSIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiQ29weSIpLmV4
ZWN1dGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgVktfSToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPmV4ZWNDb21tYW5kKCJUb2dnbGVJdGFsaWMiKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlRvZ2dsZUl0YWxpYyIpLmV4
ZWN1dGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgVktfVjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPmV4ZWNDb21tYW5kKCJQYXN0ZSIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiUGFzdGUiKS5leGVjdXRlKCk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBj
YXNlIFZLX1g6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5l
eGVjQ29tbWFuZCgiQ3V0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVk
aXRvcigpLT5jb21tYW5kKCJDdXQiKS5leGVjdXRlKCk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFZLX1k6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5leGVjQ29tbWFuZCgiUmVkbyIp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgi
UmVkbyIpLmV4ZWN1dGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVktfWjoKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBmcmFtZS0+ZWRpdG9yKCktPmV4ZWNDb21tYW5kKCJVbmRvIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJVbmRvIikuZXhlY3V0ZSgp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC00
MTgsMzMgKzQxOCwzMyBAQCB2b2lkIEVkaXRvckNsaWVudFF0OjpoYW5kbGVLZXlib2FyZEV2ZW50
CiAgICAgfSBlbHNlIHsKICAgICAgICAgc3dpdGNoIChrZXZlbnQtPndpbmRvd3NWaXJ0dWFsS2V5
Q29kZSgpKSB7CiAgICAgICAgICAgICBjYXNlIFZLX1VQOgotICAgICAgICAgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS0+ZXhlY0NvbW1hbmQoIk1vdmVVcCIpOworICAgICAgICAgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVVwIikuZXhlY3V0ZSgpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19ET1dOOgotICAgICAgICAgICAgICAgIGZyYW1l
LT5lZGl0b3IoKS0+ZXhlY0NvbW1hbmQoIk1vdmVEb3duIik7CisgICAgICAgICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlRG93biIpLmV4ZWN1dGUoKTsKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVktfUFJJT1I6ICAvLyBQYWdlVXAKLSAgICAg
ICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmV4ZWNDb21tYW5kKCJNb3ZlVXBCeVBhZ2VBbmRN
b2RpZnlDYXJldCIpOworICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgi
TW92ZVBhZ2VVcCIpLmV4ZWN1dGUoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgVktfTkVYVDogIC8vIFBhZ2VEb3duCi0gICAgICAgICAgICAgICAgZnJhbWUtPmVk
aXRvcigpLT5leGVjQ29tbWFuZCgiTW92ZURvd25CeVBhZ2VBbmRNb2RpZnlDYXJldCIpOworICAg
ICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+Y29tbWFuZCgiTW92ZVBhZ2VEb3duIikuZXhl
Y3V0ZSgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19IT01F
OgogICAgICAgICAgICAgICAgIGlmIChrZXZlbnQtPmN0cmxLZXkoKSkKLSAgICAgICAgICAgICAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5leGVjQ29tbWFuZCgiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1
bWVudCIpOworICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1v
dmVUb0JlZ2lubmluZ09mRG9jdW1lbnQiKS5leGVjdXRlKCk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIFZLX0VORDoKICAgICAgICAgICAgICAgICBpZiAoa2V2ZW50
LT5jdHJsS2V5KCkpCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS0+ZXhlY0Nv
bW1hbmQoIk1vdmVUb0VuZE9mRG9jdW1lbnQiKTsKKyAgICAgICAgICAgICAgICAgICAgZnJhbWUt
PmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVG9FbmRPZkRvY3VtZW50IikuZXhlY3V0ZSgpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAg
ICBpZiAoa2V2ZW50LT5jdHJsS2V5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoKGtl
dmVudC0+d2luZG93c1ZpcnR1YWxLZXlDb2RlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3dp
dGNoIChrZXZlbnQtPndpbmRvd3NWaXJ0dWFsS2V5Q29kZSgpKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBjYXNlIFZLX0E6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmVk
aXRvcigpLT5leGVjQ29tbWFuZCgiU2VsZWN0QWxsIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJTZWxlY3RBbGwiKS5leGVjdXRlKCk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBjYXNlIFZLX0M6IGNhc2UgVktfWDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPmV4ZWNDb21tYW5kKCJDb3B5Iik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJDb3B5IikuZXhlY3V0ZSgpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CkluZGV4OiBXZWJLaXQv
d2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNp
b24gMjg3MTEpCisrKyBXZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE2IEBACisyMDA3LTEyLTEzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlZpZXcu
Y3BwOgorICAgICAgICAoV2ViVmlldzo6ZXhlY0NvbW1hbmQpOiBTd2l0Y2hlZCBmcm9tIEVkaXRv
cjo6ZXhlY0NvbW1hbmQgdG8gRWRpdG9yOmNvbW1hbmQuCisgICAgICAgIFVwZGF0ZWQgbmFtZSBm
cm9tIE1vdmVVcEJ5UGFnZUFuZE1vZGlmeUNhcmV0IHRvIE1vdmVQYWdlVXAgYW5kIGZyb20KKyAg
ICAgICAgTW92ZURvd25CeVBhZ2VBbmRNb2RpZnlDYXJldCB0byBNb3ZlUGFnZURvd24uCisgICAg
ICAgIChXZWJWaWV3Ojpjb3B5KTogU3dpdGNoZWQgZnJvbSBFZGl0b3I6OmV4ZWNDb21tYW5kIHRv
IEVkaXRvcjpjb21tYW5kLgorICAgICAgICAoV2ViVmlldzo6Y3V0KTogRGl0dG8uCisgICAgICAg
IChXZWJWaWV3OjpwYXN0ZSk6IERpdHRvLgorICAgICAgICAoV2ViVmlldzo6ZGVsZXRlXyk6IERp
dHRvLgorCiAyMDA3LTEyLTEzICBTdGV2ZSBGYWxrZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+
CiAKICAgICAgICAgTW92ZSBzb3VyY2UgZmlsZSBnZW5lcmF0aW9uIGludG8gaXRzIG93biB2Y3By
b2ogdG8gZml4IGJ1aWxkIGRlcGVuZGVuY2llcy4KSW5kZXg6IFdlYktpdC93aW4vV2ViVmlldy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gMjg3MTEp
CisrKyBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQ1LDIxICsx
MjQ1LDE1IEBAIGJvb2wgV2ViVmlldzo6bW91c2VXaGVlbChXUEFSQU0gd1BhcmFtLCAKIGJvb2wg
V2ViVmlldzo6ZXhlY0NvbW1hbmQoV1BBUkFNIHdQYXJhbSwgTFBBUkFNIC8qbFBhcmFtKi8pCiB7
CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9y
TWFpbkZyYW1lKCk7Ci0gICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CiAgICAgc3dpdGNoIChMT1dP
UkQod1BhcmFtKSkgewotICAgIGNhc2UgU2VsZWN0QWxsOgotICAgICAgICBoYW5kbGVkID0gZnJh
bWUtPmVkaXRvcigpLT5leGVjQ29tbWFuZCgiU2VsZWN0QWxsIik7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgVW5kbzoKLSAgICAgICAgaGFuZGxlZCA9IGZyYW1lLT5lZGl0b3IoKS0+ZXhlY0Nv
bW1hbmQoIlVuZG8iKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSZWRvOgotICAgICAgICBo
YW5kbGVkID0gZnJhbWUtPmVkaXRvcigpLT5leGVjQ29tbWFuZCgiUmVkbyIpOwotICAgICAgICBi
cmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTZWxlY3RB
bGw6CisgICAgICAgICAgICByZXR1cm4gZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJTZWxlY3RB
bGwiKS5leGVjdXRlKCk7CisgICAgICAgIGNhc2UgVW5kbzoKKyAgICAgICAgICAgIHJldHVybiBm
cmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlVuZG8iKS5leGVjdXRlKCk7CisgICAgICAgIGNhc2Ug
UmVkbzoKKyAgICAgICAgICAgIHJldHVybiBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIlJlZG8i
KS5leGVjdXRlKCk7CiAgICAgfQotICAgIHJldHVybiBoYW5kbGVkOworICAgIHJldHVybiBmYWxz
ZTsKIH0KIAogYm9vbCBXZWJWaWV3OjprZXlVcChXUEFSQU0gdmlydHVhbEtleUNvZGUsIExQQVJB
TSBrZXlEYXRhLCBib29sIHN5c3RlbUtleURvd24pCkBAIC0xMzA0LDggKzEyOTgsOCBAQCBzdGF0
aWMgY29uc3QgS2V5RG93bkVudHJ5IGtleURvd25FbnRyaWVzCiAgICAgeyBWS19ET1dOLCAgIDAs
ICAgICAgICAgICAgICAgICAgIk1vdmVEb3duIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0sCiAgICAgeyBWS19ET1dOLCAgIFNoaWZ0S2V5LCAgICAgICAgICAgIk1vdmVEb3du
QW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAgICAgICAgICAgIH0sCiAgICAgeyBWS19ORVhULCAg
IFNoaWZ0S2V5LCAgICAgICAgICAgIk1vdmVEb3duQW5kTW9kaWZ5U2VsZWN0aW9uIiAgICAgICAg
ICAgICAgICAgIH0sCi0gICAgeyBWS19QUklPUiwgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVV
cEJ5UGFnZUFuZE1vZGlmeUNhcmV0IiAgICAgICAgICAgICAgICAgIH0sCi0gICAgeyBWS19ORVhU
LCAgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVEb3duQnlQYWdlQW5kTW9kaWZ5Q2FyZXQiICAg
ICAgICAgICAgICAgIH0sCisgICAgeyBWS19QUklPUiwgIDAsICAgICAgICAgICAgICAgICAgIk1v
dmVQYWdlVXAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgeyBWS19O
RVhULCAgIDAsICAgICAgICAgICAgICAgICAgIk1vdmVQYWdlRG93biIgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0sCiAgICAgeyBWS19IT01FLCAgIDAsICAgICAgICAgICAgICAgICAg
Ik1vdmVUb0JlZ2lubmluZ09mTGluZSIgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgeyBW
S19IT01FLCAgIFNoaWZ0S2V5LCAgICAgICAgICAgIk1vdmVUb0JlZ2lubmluZ09mTGluZUFuZE1v
ZGlmeVNlbGVjdGlvbiIgICAgIH0sCiAgICAgeyBWS19IT01FLCAgIEN0cmxLZXksICAgICAgICAg
ICAgIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQiICAgICAgICAgICAgICAgICAgIH0sCkBAIC0z
NDk2LDIxICszNDkwLDIxIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6YXBw
bHkKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6Y29weSggCiAgICAgICAgIC8q
IFtpbl0gKi8gSVVua25vd24qIC8qc2VuZGVyKi8pCiB7Ci0gICAgbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5leGVjQ29tbWFuZCgiQ29w
eSIpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgp
LT5lZGl0b3IoKS0+Y29tbWFuZCgiQ29weSIpLmV4ZWN1dGUoKTsKICAgICByZXR1cm4gU19PSzsK
IH0KIAogSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpjdXQoIAogICAgICAgICAv
KiBbaW5dICovIElVbmtub3duKiAvKnNlbmRlciovKQogewotICAgIG1fcGFnZS0+Zm9jdXNDb250
cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpLT5lZGl0b3IoKS0+ZXhlY0NvbW1hbmQoIkN1
dCIpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgp
LT5lZGl0b3IoKS0+Y29tbWFuZCgiQ3V0IikuZXhlY3V0ZSgpOwogICAgIHJldHVybiBTX09LOwog
fQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnBhc3RlKCAKICAgICAgICAg
LyogW2luXSAqLyBJVW5rbm93biogLypzZW5kZXIqLykKIHsKLSAgICBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKS0+ZWRpdG9yKCktPmV4ZWNDb21tYW5kKCJQ
YXN0ZSIpOworICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpLT5lZGl0b3IoKS0+Y29tbWFuZCgiUGFzdGUiKS5leGVjdXRlKCk7CiAgICAgcmV0dXJuIFNf
T0s7CiB9CiAKQEAgLTM1NDAsNyArMzUzNCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUg
V2ViVmlldzo6cGFzdGUKIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6ZGVsZXRl
XyggCiAgICAgICAgIC8qIFtpbl0gKi8gSVVua25vd24qIC8qc2VuZGVyKi8pCiB7Ci0gICAgbV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5l
eGVjQ29tbWFuZCgiRGVsZXRlIik7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9j
dXNlZE9yTWFpbkZyYW1lKCktPmVkaXRvcigpLT5jb21tYW5kKCJEZWxldGUiKS5leGVjdXRlKCk7
CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgICAgCkluZGV4OiBXZWJLaXQvd3gvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC93eC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NzExKQorKysgV2Vi
S2l0L3d4L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExIEBACisyMDA3LTEy
LTEzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50
V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50V3g6OmhhbmRsZUtleWJvYXJk
RXZlbnQpOiBTd2l0Y2hlZCBmcm9tIEVkaXRvcjo6ZXhlY0NvbW1hbmQKKyAgICAgICAgdG8gRWR0
b3I6OmNvbW1hbmQuCisKIDIwMDctMTItMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcKSW5kZXg6IFdlYktpdC93eC9X
ZWJLaXRTdXBwb3J0L0VkaXRvckNsaWVudFd4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd3gv
V2ViS2l0U3VwcG9ydC9FZGl0b3JDbGllbnRXeC5jcHAJKHJldmlzaW9uIDI4NzExKQorKysgV2Vi
S2l0L3d4L1dlYktpdFN1cHBvcnQvRWRpdG9yQ2xpZW50V3guY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNzksMTkgKzI3OSwxOSBAQCB2b2lkIEVkaXRvckNsaWVudFd4OjpoYW5kbGVLZXlib2FyZEV2
ZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IENoYXJhY3RlckdyYW51bGFyaXR5LCBmYWxzZSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIFZLX0xFRlQ6Ci0gICAgICAgICAgICAgICAgZnJhbWUtPmVk
aXRvcigpLT5leGVjQ29tbWFuZCgiTW92ZUxlZnQiKTsKKyAgICAgICAgICAgICAgICBmcmFtZS0+
ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVMZWZ0IikuZXhlY3V0ZSgpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19SSUdIVDoKLSAgICAgICAgICAgICAgICBmcmFt
ZS0+ZWRpdG9yKCktPmV4ZWNDb21tYW5kKCJNb3ZlUmlnaHQiKTsKKyAgICAgICAgICAgICAgICBm
cmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVSaWdodCIpLmV4ZWN1dGUoKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgVktfVVA6Ci0gICAgICAgICAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT5leGVjQ29tbWFuZCgiTW92ZVVwIik7CisgICAgICAgICAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJNb3ZlVXAiKS5leGVjdXRlKCk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFZLX0RPV046Ci0gICAgICAgICAgICAgICAg
ZnJhbWUtPmVkaXRvcigpLT5leGVjQ29tbWFuZCgiTW92ZURvd24iKTsKKyAgICAgICAgICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCktPmNvbW1hbmQoIk1vdmVEb3duIikuZXhlY3V0ZSgpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBWS19SRVRVUk46Ci0gICAgICAgICAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLT5leGVjQ29tbWFuZCgiSW5zZXJ0TGluZUJyZWFrIik7Cisg
ICAgICAgICAgICAgICAgZnJhbWUtPmVkaXRvcigpLT5jb21tYW5kKCJJbnNlcnRMaW5lQnJlYWsi
KS5leGVjdXRlKCk7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyODcxMSkKKysrIExheW91dFRlc3RzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDA3LTEyLTEzICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAtIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NDIwCisgICAgICAgICAgY2hhbmdlIHJlZ3Jlc3Npb24gdGVzdHMgdG8gdXNlIGRvY3Vt
ZW50LmV4ZWNDb21tYW5kIGluc3RlYWQgb2YgdGV4dElucHV0Q29udHJvbGxlci5kb0NvbW1hbmQK
KworICAgICAgICBUbyBhdm9pZCBjaGFuZ2luZyByZXN1bHRzIGF0IHRoaXMgdGltZSwgSSBkaWRu
J3QgY29ycmVjdCB0aGUgbWFueSB0ZXN0cyB0aGF0IG5vdyBoYXZlCisgICAgICAgIG1pc2xlYWRp
bmcgInRoaXMgdGVzdCBjYW5ub3QgYmUgcnVuIG1hbnVhbGx5IiB0ZXh0IG9yIHJlZmVyZW5jZXMg
dG8gIk5TUmVzcG9uZGVyIiBvcgorICAgICAgICB1bmVlZGVkIGluc3RydWN0aW9ucyBmb3IgcnVu
bmluZyB0aGUgdGVzdCBtYW51YWxseS4gV2UgY2FuIGRvIHRoYXQgb24gYSBsYXRlciBwYXNzLgor
CisgICAgICAgICogZWRpdGluZy9kZWxldGluZy81MzAwMzc5Lmh0bWw6IFVzZSBleGVjQ29tbWFu
ZCBpbnN0ZWFkIG9mIGRvQ29tbWFuZC4KKyAgICAgICAgKiBlZGl0aW5nL2RlbGV0aW5nL2RlbGV0
ZS10by1lbmQtb2YtcGFyYWdyYXBoLmh0bWw6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvZGVs
ZXRpbmcvc21hcnQtZGVsZXRlLTAwMy5odG1sOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL2Rl
bGV0aW5nL3NtYXJ0LWRlbGV0ZS0wMDQuaHRtbDogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9l
eGVjQ29tbWFuZC9uc3Jlc3BvbmRlci1pbmRlbnQuaHRtbDogRGl0dG8uCisgICAgICAgICogZWRp
dGluZy9leGVjQ29tbWFuZC9uc3Jlc3BvbmRlci1vdXRkZW50Lmh0bWw6IERpdHRvLgorICAgICAg
ICAqIGVkaXRpbmcvc2VsZWN0aW9uLzQ5NDczODcuaHRtbDogRGl0dG8uCisgICAgICAgICogZWRp
dGluZy9zZWxlY3Rpb24vNTE5NTE2Ni0xLmh0bWw6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcv
c2VsZWN0aW9uLzUxOTUxNjYtMi5odG1sOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVj
dGlvbi9zZWxlY3QtbGluZS5odG1sOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlv
bi9zZWxlY3Rpb24tYWN0aW9ucy5odG1sOiBEaXR0by4KKwogMjAwNy0xMi0xMyAgSnVzdGluIEdh
cmNpYSAgPGp1c3Rpbi5nYXJjaWFAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9s
aXZlciBIdW50LgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy81MzAwMzc5Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy81MzAwMzc5Lmh0
bWwJKHJldmlzaW9uIDI4NzExKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy81MzAw
Mzc5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsMTQgKzYsMTAgQEAKIGRpdiA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJkaXYiKTsKIHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKIHNl
bC5zZXRQb3NpdGlvbihkaXYsIDApOwotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
ewotICAgIC8vIFRlc3QgdG8gc2VlIGlmIGRlbGV0ZVdvcmRCYWNrd2FyZDogaGFuZ3MuCi0gICAg
dGV4dElucHV0Q29udHJvbGxlci5kb0NvbW1hbmQoImRlbGV0ZVdvcmRCYWNrd2FyZDoiKTsKLSAg
ICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAiU3VjY2VzcyBGQUlM
Iik7Ci0gICAgLy8gRGVsZXRlICdGQUlMJyB3aXRoIGRlbGV0ZVdvcmRCYWNrd2FyZDogdG8gdmVy
aWZ5IHRoYXQgaXQncyBub3QgYSBuby1vcC4KLSAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmRvQ29t
bWFuZCgiZGVsZXRlV29yZEJhY2t3YXJkOiIpOwotICAgIHRleHRJbnB1dENvbnRyb2xsZXIuZG9D
b21tYW5kKCJkZWxldGVCYWNrd2FyZDoiKTsKLX0gZWxzZSB7Ci0gICAgZG9jdW1lbnQuZXhlY0Nv
bW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgIlRvIHJ1biB0aGlzIHRlc3QgbWFudWFsbHkuICBE
ZWxldGUgYWxsIHRoaXMgdGV4dCBhbmQgdGhlbiBvcHRpb24tZGVsZXRlLiAgU2FmYXJpIHNob3Vs
ZG4ndCBoYW5nLiIpOwotfQorLy8gVGVzdCB0byBzZWUgaWYgRGVsZXRlV29yZEJhY2t3YXJkIGhh
bmdzLgorZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkRlbGV0ZVdvcmRCYWNrd2FyZCIpOworZG9jdW1l
bnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgIlN1Y2Nlc3MgRkFJTCIpOworLy8g
RGVsZXRlICdGQUlMJyB3aXRoIERlbGV0ZVdvcmRCYWNrd2FyZCB0byB2ZXJpZnkgdGhhdCBpdCdz
IG5vdCBhIG5vLW9wLgorZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkRlbGV0ZVdvcmRCYWNrd2FyZCIp
OworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkRlbGV0ZUJhY2t3YXJkIik7CiA8L3NjcmlwdD4KSW5k
ZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvZGVsZXRlLXRvLWVuZC1vZi1wYXJhZ3Jh
cGguaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2RlbGV0
ZS10by1lbmQtb2YtcGFyYWdyYXBoLmh0bWwJKHJldmlzaW9uIDI4NzExKQorKysgTGF5b3V0VGVz
dHMvZWRpdGluZy9kZWxldGluZy9kZWxldGUtdG8tZW5kLW9mLXBhcmFncmFwaC5odG1sCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMiwxOCArMTIsMTMgQEAKIDxzY3JpcHQ+CiAKIGZ1bmN0aW9uIGVkaXRp
bmdUZXN0KCkgewotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKLSAgICAg
ICAgCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAvLyB0ZXN0IGZvciA0NTcwMjE4IGJ5IHVz
aW5nIGRvdWJsZSBkZWxldGVUb0VuZE9mUGFyYWdyYXBoCi0gICAgICAgICAgICB0ZXh0SW5wdXRD
b250cm9sbGVyLmRvQ29tbWFuZCgiZGVsZXRlVG9FbmRPZlBhcmFncmFwaDoiKTsgICAgCi0gICAg
ICAgICAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmRvQ29tbWFuZCgiZGVsZXRlVG9FbmRPZlBhcmFn
cmFwaDoiKTsgICAgCisgICAgdHJ5IHsKKyAgICAgICAgLy8gdGVzdCBmb3IgNDU3MDIxOCBieSB1
c2luZyBkb3VibGUgZGVsZXRlVG9FbmRPZlBhcmFncmFwaAorICAgICAgICBkb2N1bWVudC5leGVj
Q29tbWFuZCgiRGVsZXRlVG9FbmRPZlBhcmFncmFwaCIpOyAgICAKKyAgICAgICAgZG9jdW1lbnQu
ZXhlY0NvbW1hbmQoIkRlbGV0ZVRvRW5kT2ZQYXJhZ3JhcGgiKTsgICAgCiAKLSAgICAgICAgfSBj
YXRjaCAoZXgpIHsKLSAgICAgICAgICAgIGRvY3VtZW50LndyaXRlKCJFeGNlcHRpb246ICIgKyBl
eC5kZXNjcmlwdGlvbik7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBkb2N1bWVu
dC53cml0ZSgiKGNhbm5vdCBydW4gaW50ZXJhY3RpdmVseSkiKTsKKyAgICB9IGNhdGNoIChleCkg
eworICAgICAgICBkb2N1bWVudC53cml0ZSgiRXhjZXB0aW9uOiAiICsgZXguZGVzY3JpcHRpb24p
OwogICAgIH0KIH0KIApJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9zbWFydC1k
ZWxldGUtMDAzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGlu
Zy9zbWFydC1kZWxldGUtMDAzLmh0bWwJKHJldmlzaW9uIDI4NzExKQorKysgTGF5b3V0VGVzdHMv
ZWRpdGluZy9kZWxldGluZy9zbWFydC1kZWxldGUtMDAzLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTYsMTQgKzYsMTIgQEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKIDxkaXYgaWQ9
ImRpdiIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj5mb28gYmFyIGJhejwvZGl2PgogCiA8c2NyaXB0
PgotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIHZhciBkaXYgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2Iik7Ci0gICAgdmFyIHNlbCA9IHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKTsKLSAgICAKLSAgICBzZWwuc2V0UG9zaXRpb24oZGl2LCAwKTsKLSAgICBzZWwubW9k
aWZ5KCJtb3ZlIiwgImZvcndhcmQiLCAid29yZCIpOwotICAgIHNlbC5tb2RpZnkoIm1vdmUiLCAi
Zm9yd2FyZCIsICJ3b3JkIik7Ci0gICAgc2VsLm1vZGlmeSgiZXh0ZW5kIiwgImJhY2t3YXJkIiwg
IndvcmQiKTsKLSAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmRvQ29tbWFuZCgiZGVsZXRlQmFja3dh
cmQ6Iik7Ci19Cit2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdiIpOwordmFy
IHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKworc2VsLnNldFBvc2l0aW9uKGRpdiwgMCk7
CitzZWwubW9kaWZ5KCJtb3ZlIiwgImZvcndhcmQiLCAid29yZCIpOworc2VsLm1vZGlmeSgibW92
ZSIsICJmb3J3YXJkIiwgIndvcmQiKTsKK3NlbC5tb2RpZnkoImV4dGVuZCIsICJiYWNrd2FyZCIs
ICJ3b3JkIik7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiRGVsZXRlQmFja3dhcmQiKTsKIDwvc2Ny
aXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9zbWFydC1kZWxldGUtMDA0
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9zbWFydC1k
ZWxldGUtMDA0Lmh0bWwJKHJldmlzaW9uIDI4NzExKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9k
ZWxldGluZy9zbWFydC1kZWxldGUtMDA0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTYsMTQgKzYs
MTIgQEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKIDxkaXYgaWQ9ImRpdiIgY29u
dGVudGVkaXRhYmxlPSJ0cnVlIj5mb28gYmFyIGJhejwvZGl2PgogCiA8c2NyaXB0PgotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewotICAgIHZhciBkaXYgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZGl2Iik7Ci0gICAgdmFyIHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsK
LSAgICAKLSAgICBzZWwuc2V0UG9zaXRpb24oZGl2LCAwKTsKLSAgICBzZWwubW9kaWZ5KCJtb3Zl
IiwgImZvcndhcmQiLCAid29yZCIpOwotICAgIHNlbC5tb2RpZnkoIm1vdmUiLCAiZm9yd2FyZCIs
ICJ3b3JkIik7Ci0gICAgc2VsLm1vZGlmeSgiZXh0ZW5kIiwgImJhY2t3YXJkIiwgIndvcmQiKTsK
LSAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmRvQ29tbWFuZCgiZGVsZXRlRm9yd2FyZDoiKTsKLX0K
K3ZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2Iik7Cit2YXIgc2VsID0gd2lu
ZG93LmdldFNlbGVjdGlvbigpOworCitzZWwuc2V0UG9zaXRpb24oZGl2LCAwKTsKK3NlbC5tb2Rp
ZnkoIm1vdmUiLCAiZm9yd2FyZCIsICJ3b3JkIik7CitzZWwubW9kaWZ5KCJtb3ZlIiwgImZvcndh
cmQiLCAid29yZCIpOworc2VsLm1vZGlmeSgiZXh0ZW5kIiwgImJhY2t3YXJkIiwgIndvcmQiKTsK
K2RvY3VtZW50LmV4ZWNDb21tYW5kKCJEZWxldGVGb3J3YXJkIik7CiA8L3NjcmlwdD4KSW5kZXg6
IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvbnNyZXNwb25kZXItaW5kZW50Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9uc3Jlc3BvbmRl
ci1pbmRlbnQuaHRtbAkocmV2aXNpb24gMjg3MTEpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4
ZWNDb21tYW5kL25zcmVzcG9uZGVyLWluZGVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMSw1
ICsxMSw1IEBAIHZhciBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CiAKIHNlbC5zZXRQb3Np
dGlvbihkaXYsIDApOwogCi10ZXh0SW5wdXRDb250cm9sbGVyLmRvQ29tbWFuZCgiaW5kZW50OiIp
OworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluZGVudCIpOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlv
dXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL25zcmVzcG9uZGVyLW91dGRlbnQuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL25zcmVzcG9uZGVyLW91
dGRlbnQuaHRtbAkocmV2aXNpb24gMjg3MTEpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWND
b21tYW5kL25zcmVzcG9uZGVyLW91dGRlbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTEsNSAr
MTEsNSBAQCB2YXIgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpOwogCiBzZWwuc2V0UG9zaXRp
b24oZGl2LCAwKTsKIAotdGV4dElucHV0Q29udHJvbGxlci5kb0NvbW1hbmQoIm91dGRlbnQ6Iik7
Citkb2N1bWVudC5leGVjQ29tbWFuZCgiT3V0ZGVudCIpOwogPC9zY3JpcHQ+CkluZGV4OiBMYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi80OTQ3Mzg3Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vNDk0NzM4Ny5odG1sCShyZXZpc2lvbiAyODcxMSkK
KysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uLzQ5NDczODcuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMywyNCArMywyMyBAQAogCiA8c2NyaXB0PgogCi1pZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7Ci0KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICAg
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCk7CiAgICAg
Ci0gICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYiKTsKLSAgICB2YXIg
dGV4dCA9IGRpdi5maXJzdENoaWxkOwotICAgIHZhciBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCk7Ci0gICAgCi0gICAgc2VsLnNldFBvc2l0aW9uKHRleHQsIHRleHQubGVuZ3RoKTsKLSAgICB0
ZXh0SW5wdXRDb250cm9sbGVyLmRvQ29tbWFuZCgibW92ZVRvQmVnaW5uaW5nT2ZMaW5lQW5kTW9k
aWZ5U2VsZWN0aW9uOiIpOwotICAgIAotICAgIHNlbC5zZXRQb3NpdGlvbih0ZXh0LCAwKTsKLSAg
ICB0ZXh0SW5wdXRDb250cm9sbGVyLmRvQ29tbWFuZCgibW92ZVRvRW5kT2ZMaW5lQW5kTW9kaWZ5
U2VsZWN0aW9uOiIpOwordmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYiKTsK
K3ZhciB0ZXh0ID0gZGl2LmZpcnN0Q2hpbGQ7Cit2YXIgc2VsID0gd2luZG93LmdldFNlbGVjdGlv
bigpOworCitzZWwuc2V0UG9zaXRpb24odGV4dCwgdGV4dC5sZW5ndGgpOworZG9jdW1lbnQuZXhl
Y0NvbW1hbmQoIk1vdmVUb0JlZ2lubmluZ09mTGluZUFuZE1vZGlmeVNlbGVjdGlvbiIpOworCitz
ZWwuc2V0UG9zaXRpb24odGV4dCwgMCk7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiTW92ZVRvRW5k
T2ZMaW5lQW5kTW9kaWZ5U2VsZWN0aW9uIik7CisKK3NlbC5zZXRQb3NpdGlvbih0ZXh0LCB0ZXh0
Lmxlbmd0aCk7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiTW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3Jh
cGhBbmRNb2RpZnlTZWxlY3Rpb24iKTsKKworc2VsLnNldFBvc2l0aW9uKHRleHQsIDApOworZG9j
dW1lbnQuZXhlY0NvbW1hbmQoIk1vdmVUb0VuZE9mUGFyYWdyYXBoQW5kTW9kaWZ5U2VsZWN0aW9u
Iik7CiAKLSAgICBzZWwuc2V0UG9zaXRpb24odGV4dCwgdGV4dC5sZW5ndGgpOwotICAgIHRleHRJ
bnB1dENvbnRyb2xsZXIuZG9Db21tYW5kKCJtb3ZlVG9CZWdpbm5pbmdPZlBhcmFncmFwaEFuZE1v
ZGlmeVNlbGVjdGlvbjoiKTsKLSAgICAKLSAgICBzZWwuc2V0UG9zaXRpb24odGV4dCwgMCk7Ci0g
ICAgdGV4dElucHV0Q29udHJvbGxlci5kb0NvbW1hbmQoIm1vdmVUb0VuZE9mUGFyYWdyYXBoQW5k
TW9kaWZ5U2VsZWN0aW9uOiIpOwotfQogPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi81MTk1MTY2LTEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2LTEuaHRtbAkocmV2aXNpb24gMjg3MTEpCisrKyBMYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi81MTk1MTY2LTEuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtOSwyMyArOSwyMCBAQCBmdW5jdGlvbiBsb2coc3RyKSB7CiAgICAgY29uc29sZS5hcHBlbmRD
aGlsZChsaSk7CiAgICAgbGkuYXBwZW5kQ2hpbGQodGV4dCk7CiB9Ci1pZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKSB7Ci0gICAgdmFyIHRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiZGl2IikuZmlyc3RDaGlsZDsKLSAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVj
dGlvbigpOwotICAgIAotICAgIC8vIEZJWE1FOiBtX2xhc3RDaGFuZ2VXYXNIb3Jpem9udGFsRXh0
ZW5zaW9uIGlzbid0IGNsZWFyZWQgaW4gc2V2ZXJhbCBwbGFjZXMKLSAgICAvLyB3aGVyZSBpdCBz
aG91bGQgYmUsIHdoZW4gb3BlbmluZyBhIG5ldyBkb2N1bWVudCBmb3IgZXhhbXBsZS4KLSAgICBz
ZWxlY3Rpb24uc2V0UG9zaXRpb24odGV4dCwgMCk7Ci0gICAgc2VsZWN0aW9uLm1vZGlmeSgibW92
ZSIsICJmb3J3YXJkIiwgImNoYXJhY3RlciIpOwotICAgIAotICAgIHNlbGVjdGlvbi5zZXRCYXNl
QW5kRXh0ZW50KHRleHQsIDMgKyA1LCB0ZXh0LCAzKTsKLSAgICAvLyBFeHRlbmRpbmcgdGhpcyA1
IGNoYXJhY3RlciBzZWxlY3Rpb24gd2lsbCBzZWxlY3QgNiBjaGFyYWN0ZXJzLgotICAgIHRleHRJ
bnB1dENvbnRyb2xsZXIuZG9Db21tYW5kKCJtb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbjoi
KTsKLSAgICAvLyBFeHRlbmRpbmcgaXQgaW4gdGhpcyB3YXkgZmxpcHMgdGhlIGJhc2UgYW5kIHRo
ZSBleHRlbnQuCi0gICAgaWYgKHNlbGVjdGlvbi5leHRlbnRPZmZzZXQgLSBzZWxlY3Rpb24uYmFz
ZU9mZnNldCAhPSA2KQotICAgICAgICBsb2coIkZhaWx1cmU6IFNlbGVjdGlvbiBpc24ndCB0aGUg
cmlnaHQgc2l6ZS4iKTsKLSAgICBlbHNlCi0gICAgICAgIGxvZyAoIlN1Y2Nlc3MiKTsKLX0gZWxz
ZQotICAgIGxvZyAoIkZhaWx1cmU6IFRoaXMgdGVzdCBjYW5ub3QgYmUgcnVuIG1hbnVhbGx5LiIp
Cit2YXIgdGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYiKS5maXJzdENoaWxkOwor
dmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKworLy8gRklYTUU6IG1fbGFz
dENoYW5nZVdhc0hvcml6b250YWxFeHRlbnNpb24gaXNuJ3QgY2xlYXJlZCBpbiBzZXZlcmFsIHBs
YWNlcworLy8gd2hlcmUgaXQgc2hvdWxkIGJlLCB3aGVuIG9wZW5pbmcgYSBuZXcgZG9jdW1lbnQg
Zm9yIGV4YW1wbGUuCitzZWxlY3Rpb24uc2V0UG9zaXRpb24odGV4dCwgMCk7CitzZWxlY3Rpb24u
bW9kaWZ5KCJtb3ZlIiwgImZvcndhcmQiLCAiY2hhcmFjdGVyIik7CisKK3NlbGVjdGlvbi5zZXRC
YXNlQW5kRXh0ZW50KHRleHQsIDMgKyA1LCB0ZXh0LCAzKTsKKy8vIEV4dGVuZGluZyB0aGlzIDUg
Y2hhcmFjdGVyIHNlbGVjdGlvbiB3aWxsIHNlbGVjdCA2IGNoYXJhY3RlcnMuCitkb2N1bWVudC5l
eGVjQ29tbWFuZCgiTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb24iKTsKKy8vIEV4dGVuZGlu
ZyBpdCBpbiB0aGlzIHdheSBmbGlwcyB0aGUgYmFzZSBhbmQgdGhlIGV4dGVudC4KK2lmIChzZWxl
Y3Rpb24uZXh0ZW50T2Zmc2V0IC0gc2VsZWN0aW9uLmJhc2VPZmZzZXQgIT0gNikKKyAgICBsb2co
IkZhaWx1cmU6IFNlbGVjdGlvbiBpc24ndCB0aGUgcmlnaHQgc2l6ZS4iKTsKK2Vsc2UKKyAgICBs
b2cgKCJTdWNjZXNzIik7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uLzUxOTUxNjYtMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uLzUxOTUxNjYtMi5odG1sCShyZXZpc2lvbiAyODcxMSkKKysrIExheW91dFRlc3Rz
L2VkaXRpbmcvc2VsZWN0aW9uLzUxOTUxNjYtMi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC05LDE3
ICs5LDEzIEBAIGZ1bmN0aW9uIGxvZyhzdHIpIHsKICAgICBjb25zb2xlLmFwcGVuZENoaWxkKGxp
KTsKICAgICBsaS5hcHBlbmRDaGlsZCh0ZXh0KTsKIH0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgd2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBFZGl0aW5nQ2FsbGJhY2tzKCk7Ci0gICAgdmFyIHRl
eHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2IikuZmlyc3RDaGlsZDsKLSAgICB2YXIg
c2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOwotICAgIHNlbGVjdGlvbi5zZXRCYXNl
QW5kRXh0ZW50KHRleHQsIDAsIHRleHQsIDApOwotICAgIHRleHRJbnB1dENvbnRyb2xsZXIuZG9D
b21tYW5kKCJtb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbjoiKTsKLSAgICB0ZXh0SW5wdXRD
b250cm9sbGVyLmRvQ29tbWFuZCgibW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rpb246Iik7Ci0g
ICAgdGV4dElucHV0Q29udHJvbGxlci5kb0NvbW1hbmQoIm1vdmVGb3J3YXJkQW5kTW9kaWZ5U2Vs
ZWN0aW9uOiIpOwotICAgIHRleHRJbnB1dENvbnRyb2xsZXIuZG9Db21tYW5kKCJtb3ZlQmFja3dh
cmRBbmRNb2RpZnlTZWxlY3Rpb246Iik7Ci19IGVsc2UgewotICAgIGxvZygiRmFpbHVyZTogVGhp
cyB0ZXN0IGNhbm5vdCBiZSBydW4gbWFudWFsbHkuIikKLX0KLQordmFyIHRleHQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiZGl2IikuZmlyc3RDaGlsZDsKK3ZhciBzZWxlY3Rpb24gPSB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCk7CitzZWxlY3Rpb24uc2V0QmFzZUFuZEV4dGVudCh0ZXh0LCAwLCB0
ZXh0LCAwKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJNb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVj
dGlvbiIpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIk1vdmVGb3J3YXJkQW5kTW9kaWZ5U2VsZWN0
aW9uIik7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiTW92ZUZvcndhcmRBbmRNb2RpZnlTZWxlY3Rp
b24iKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJNb3ZlQmFja3dhcmRBbmRNb2RpZnlTZWxlY3Rp
b24iKTsKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vc2Vs
ZWN0LWxpbmUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9zZWxlY3QtbGluZS5odG1sCShyZXZpc2lvbiAyODcxMSkKKysrIExheW91dFRlc3RzL2VkaXRp
bmcvc2VsZWN0aW9uL3NlbGVjdC1saW5lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTksNiArOSw1
IEBAIHZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2IikKIHZhciBzZWwgPSB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCk7CiAKIHNlbC5zZXRQb3NpdGlvbihkaXYsIDApOwotaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmRvQ29t
bWFuZCgic2VsZWN0TGluZToiKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJTZWxlY3RMaW5lIik7
CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdGlv
bi1hY3Rpb25zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rp
b24vc2VsZWN0aW9uLWFjdGlvbnMuaHRtbAkocmV2aXNpb24gMjg3MTEpCisrKyBMYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3Rpb24tYWN0aW9ucy5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0yNCwzNyArMjQsMzcgQEAgZnVuY3Rpb24gZWRpdGluZ1Rlc3QoKSB7CiAgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CiAgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpOwogICAg
IAotICAgIHRleHRJbnB1dENvbnRyb2xsZXIuZG9Db21tYW5kKCJtb3ZlQmFja3dhcmQ6Iik7Ci0g
ICAgdGV4dElucHV0Q29udHJvbGxlci5kb0NvbW1hbmQoIm1vdmVCYWNrd2FyZEFuZE1vZGlmeVNl
bGVjdGlvbjoiKTsKLSAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmRvQ29tbWFuZCgibW92ZURvd246
Iik7Ci0gICAgdGV4dElucHV0Q29udHJvbGxlci5kb0NvbW1hbmQoIm1vdmVEb3duQW5kTW9kaWZ5
U2VsZWN0aW9uOiIpOwotICAgIHRleHRJbnB1dENvbnRyb2xsZXIuZG9Db21tYW5kKCJtb3ZlRm9y
d2FyZDoiKTsKLSAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmRvQ29tbWFuZCgibW92ZUZvcndhcmRB
bmRNb2RpZnlTZWxlY3Rpb246Iik7Ci0gICAgdGV4dElucHV0Q29udHJvbGxlci5kb0NvbW1hbmQo
Im1vdmVMZWZ0OiIpOwotICAgIHRleHRJbnB1dENvbnRyb2xsZXIuZG9Db21tYW5kKCJtb3ZlTGVm
dEFuZE1vZGlmeVNlbGVjdGlvbjoiKTsKLSAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmRvQ29tbWFu
ZCgibW92ZVJpZ2h0OiIpOwotICAgIHRleHRJbnB1dENvbnRyb2xsZXIuZG9Db21tYW5kKCJtb3Zl
UmlnaHRBbmRNb2RpZnlTZWxlY3Rpb246Iik7Ci0gICAgdGV4dElucHV0Q29udHJvbGxlci5kb0Nv
bW1hbmQoIm1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQ6Iik7Ci0gICAgdGV4dElucHV0Q29udHJv
bGxlci5kb0NvbW1hbmQoIm1vdmVUb0JlZ2lubmluZ09mTGluZToiKTsKLSAgICB0ZXh0SW5wdXRD
b250cm9sbGVyLmRvQ29tbWFuZCgibW92ZVRvQmVnaW5uaW5nT2ZQYXJhZ3JhcGg6Iik7Ci0gICAg
dGV4dElucHV0Q29udHJvbGxlci5kb0NvbW1hbmQoIm1vdmVUb0VuZE9mRG9jdW1lbnQ6Iik7Ci0g
ICAgdGV4dElucHV0Q29udHJvbGxlci5kb0NvbW1hbmQoIm1vdmVUb0VuZE9mTGluZToiKTsKLSAg
ICB0ZXh0SW5wdXRDb250cm9sbGVyLmRvQ29tbWFuZCgibW92ZVRvRW5kT2ZQYXJhZ3JhcGg6Iik7
Ci0gICAgdGV4dElucHV0Q29udHJvbGxlci5kb0NvbW1hbmQoIm1vdmVVcDoiKTsKLSAgICB0ZXh0
SW5wdXRDb250cm9sbGVyLmRvQ29tbWFuZCgibW92ZVVwQW5kTW9kaWZ5U2VsZWN0aW9uOiIpOwot
ICAgIHRleHRJbnB1dENvbnRyb2xsZXIuZG9Db21tYW5kKCJtb3ZlV29yZEJhY2t3YXJkOiIpOwot
ICAgIHRleHRJbnB1dENvbnRyb2xsZXIuZG9Db21tYW5kKCJtb3ZlV29yZEJhY2t3YXJkQW5kTW9k
aWZ5U2VsZWN0aW9uOiIpOwotICAgIHRleHRJbnB1dENvbnRyb2xsZXIuZG9Db21tYW5kKCJtb3Zl
V29yZEZvcndhcmQ6Iik7Ci0gICAgdGV4dElucHV0Q29udHJvbGxlci5kb0NvbW1hbmQoIm1vdmVX
b3JkRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbjoiKTsKLSAgICB0ZXh0SW5wdXRDb250cm9sbGVy
LmRvQ29tbWFuZCgibW92ZVdvcmRMZWZ0OiIpOwotICAgIHRleHRJbnB1dENvbnRyb2xsZXIuZG9D
b21tYW5kKCJtb3ZlV29yZFJpZ2h0OiIpOwotICAgIHRleHRJbnB1dENvbnRyb2xsZXIuZG9Db21t
YW5kKCJtb3ZlV29yZFJpZ2h0QW5kTW9kaWZ5U2VsZWN0aW9uOiIpOwotICAgIHRleHRJbnB1dENv
bnRyb2xsZXIuZG9Db21tYW5kKCJtb3ZlV29yZExlZnRBbmRNb2RpZnlTZWxlY3Rpb246Iik7Ci0g
ICAgdGV4dElucHV0Q29udHJvbGxlci5kb0NvbW1hbmQoInBhZ2VEb3duOiIpOwotICAgIHRleHRJ
bnB1dENvbnRyb2xsZXIuZG9Db21tYW5kKCJwYWdlVXA6Iik7Ci0gICAgdGV4dElucHV0Q29udHJv
bGxlci5kb0NvbW1hbmQoInNlbGVjdExpbmU6Iik7Ci0gICAgdGV4dElucHV0Q29udHJvbGxlci5k
b0NvbW1hbmQoInNlbGVjdFBhcmFncmFwaDoiKTsKLSAgICB0ZXh0SW5wdXRDb250cm9sbGVyLmRv
Q29tbWFuZCgic2VsZWN0V29yZDoiKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiTW92ZUJh
Y2t3YXJkIik7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIk1vdmVCYWNrd2FyZEFuZE1vZGlm
eVNlbGVjdGlvbiIpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJNb3ZlRG93biIpOworICAg
IGRvY3VtZW50LmV4ZWNDb21tYW5kKCJNb3ZlRG93bkFuZE1vZGlmeVNlbGVjdGlvbiIpOworICAg
IGRvY3VtZW50LmV4ZWNDb21tYW5kKCJNb3ZlRm9yd2FyZCIpOworICAgIGRvY3VtZW50LmV4ZWND
b21tYW5kKCJNb3ZlRm9yd2FyZEFuZE1vZGlmeVNlbGVjdGlvbiIpOworICAgIGRvY3VtZW50LmV4
ZWNDb21tYW5kKCJNb3ZlTGVmdCIpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJNb3ZlTGVm
dEFuZE1vZGlmeVNlbGVjdGlvbiIpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJNb3ZlUmln
aHQiKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiTW92ZVJpZ2h0QW5kTW9kaWZ5U2VsZWN0
aW9uIik7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1l
bnQiKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiTW92ZVRvQmVnaW5uaW5nT2ZMaW5lIik7
CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIk1vdmVUb0JlZ2lubmluZ09mUGFyYWdyYXBoIik7
CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIk1vdmVUb0VuZE9mRG9jdW1lbnQiKTsKKyAgICBk
b2N1bWVudC5leGVjQ29tbWFuZCgiTW92ZVRvRW5kT2ZMaW5lIik7CisgICAgZG9jdW1lbnQuZXhl
Y0NvbW1hbmQoIk1vdmVUb0VuZE9mUGFyYWdyYXBoIik7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1h
bmQoIk1vdmVVcCIpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJNb3ZlVXBBbmRNb2RpZnlT
ZWxlY3Rpb24iKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiTW92ZVdvcmRCYWNrd2FyZCIp
OworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJNb3ZlV29yZEJhY2t3YXJkQW5kTW9kaWZ5U2Vs
ZWN0aW9uIik7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIk1vdmVXb3JkRm9yd2FyZCIpOwor
ICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJNb3ZlV29yZEZvcndhcmRBbmRNb2RpZnlTZWxlY3Rp
b24iKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiTW92ZVdvcmRMZWZ0Iik7CisgICAgZG9j
dW1lbnQuZXhlY0NvbW1hbmQoIk1vdmVXb3JkUmlnaHQiKTsKKyAgICBkb2N1bWVudC5leGVjQ29t
bWFuZCgiTW92ZVdvcmRSaWdodEFuZE1vZGlmeVNlbGVjdGlvbiIpOworICAgIGRvY3VtZW50LmV4
ZWNDb21tYW5kKCJNb3ZlV29yZExlZnRBbmRNb2RpZnlTZWxlY3Rpb24iKTsKKyAgICBkb2N1bWVu
dC5leGVjQ29tbWFuZCgiTW92ZVBhZ2VEb3duIik7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQo
Ik1vdmVQYWdlVXAiKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiU2VsZWN0TGluZSIpOwor
ICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJTZWxlY3RQYXJhZ3JhcGgiKTsKKyAgICBkb2N1bWVu
dC5leGVjQ29tbWFuZCgiU2VsZWN0V29yZCIpOwogfQogCiA8L3NjcmlwdD4K
</data>
<flag name="review"
          id="7738"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>