<?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>173192</bug_id>
          
          <creation_ts>2017-06-09 16:19:40 -0700</creation_ts>
          <short_desc>URL::host should return a StringView</short_desc>
          <delta_ts>2018-08-01 13:14:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>185986</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1317691</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-06-09 16:19:40 -0700</bug_when>
    <thetext>URL::host should return a StringView</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317692</commentid>
    <comment_count>1</comment_count>
      <attachid>312507</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-06-09 16:21:34 -0700</bug_when>
    <thetext>Created attachment 312507
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317708</commentid>
    <comment_count>2</comment_count>
      <attachid>312511</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-06-09 16:49:52 -0700</bug_when>
    <thetext>Created attachment 312511
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317710</commentid>
    <comment_count>3</comment_count>
      <attachid>312511</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-09 16:53:15 -0700</bug_when>
    <thetext>Comment on attachment 312511
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        URL::host should return a StringView

This adds quite a bit of toString() at call sites, which is unfortunate. Couldn&apos;t we add a new method which returns a StringView for call sites that actually need a view rather than a string?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317711</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-06-09 16:54:50 -0700</bug_when>
    <thetext>We should work towards removing those .toString() calls by doing things like making functions in HashSet&lt;String&gt; that take StringViews as arguments, etc.  This is a step in the right direction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317713</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-09 16:57:01 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #4)
&gt; We should work towards removing those .toString() calls by doing things like
&gt; making functions in HashSet&lt;String&gt; that take StringViews as arguments, etc.
&gt; This is a step in the right direction.

I also worry about the safety of this. People should be very careful when using StringViews.

e.g.
auto host = url.host();
// modify url
// host is now potentially bad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317715</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-06-09 17:00:40 -0700</bug_when>
    <thetext>That&apos;s true for all StringViews.  That shouldn&apos;t prevent this patch.
If anything we should get rid of StringView.toStringWithoutCopying, but that&apos;s completely unrelated to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317719</commentid>
    <comment_count>7</comment_count>
      <attachid>312513</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-06-09 17:05:49 -0700</bug_when>
    <thetext>Created attachment 312513
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317722</commentid>
    <comment_count>8</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-09 17:08:59 -0700</bug_when>
    <thetext>Attachment 312513 did not pass style-queue:


ERROR: Source/WebCore/page/SecurityOrigin.cpp:148:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 48 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1446946</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-01 13:14:11 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 185986 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312507</attachid>
            <date>2017-06-09 16:21:34 -0700</date>
            <delta_ts>2017-06-09 16:49:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173192-20170609162226.patch</filename>
            <type>text/plain</type>
            <size>48809</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxODAxOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDE3LTA2LTA5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVVJMOjpob3N0
IHNob3VsZCByZXR1cm4gYSBTdHJpbmdWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMxOTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuICBKdXN0IGZld2VyIGNv
cGllcyBhbmQgYWxsb2NhdGlvbnMuCisKKyAgICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvWW91VHVi
ZVBsdWdpblJlcGxhY2VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzWW91VHViZVVSTCk6
CisgICAgICAgIChXZWJDb3JlOjpwcm9jZXNzQW5kQ3JlYXRlWW91VHViZVVSTCk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpob3N0TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6
Omhvc3QpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb246
OnBvcHVsYXRlQ29uZGl0aW9uQ2FjaGVJZk5lZWRlZCk6CisgICAgICAgICogZG9tL0RPTUltcGxl
bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uOjpjcmVh
dGVEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAg
ICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllckRvY3VtZW50SG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpu
ZWVkc1NlZWtpbmdTdXBwb3J0UXVpcmspOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdl
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojpy
ZXN0YXJ0U2ltaWxhclBsdWdJbnMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6dXNlckRpZENsaWNrU25hcHNob3QpOgorICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50OjpmaW5pc2hlZFBhcnNp
bmcpOgorICAgICAgICAqIGh0bWwvVVJMVXRpbHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlVSTFV0
aWxzPFQ+Ojpob3N0bmFtZSk6CisgICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGlua0xvYWRlcjo6bG9hZExpbmspOgorICAgICAgICAqIGxvYWRlci9S
ZXNvdXJjZUxvYWRPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6cHJpbWFyeURvbWFpbik6CisgICAgICAgICogbG9hZGVyL21hYy9Mb2FkZXJOU1VS
TEV4dHJhcy5tbToKKyAgICAgICAgKHN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKToKKyAg
ICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6Om1vdXNl
RGlkTW92ZU92ZXJFbGVtZW50KToKKyAgICAgICAgKiBwYWdlL0xvY2F0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpob3N0bmFtZSk6CisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Om1haW5GcmFtZUxvYWRTdGFydGVkKToKKyAgICAg
ICAgKiBwYWdlL1BlcmZvcm1hbmNlTW9uaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXBv
cnRQYWdlT3ZlclBvc3RMb2FkUmVzb3VyY2VUaHJlc2hvbGQpOgorICAgICAgICAqIHBhZ2UvUGx1
Z0luQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAqIHBh
Z2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJDb250
ZW50VVJMUGF0dGVybjo6bWF0Y2hlc0hvc3QpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2U6Omhvc3RNYXRjaGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9VUkwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpob3N0KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6
aG9zdEFuZFBvcnQpOgorICAgICAgICAqIHBsYXRmb3JtL1VSTC5oOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpzaWduZWRQ
dWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0
UGFydGl0aW9uaW5nRG9tYWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJl
YW1IYW5kbGVJbXBsOjpjcmVhdGVTdHJlYW1zKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckxv
Y2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckxvY2F0aW9uOjpob3N0bmFtZSk6
CisKIDIwMTctMDYtMDkgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAg
ICAgTWVkaWEgZWxlbWVudHMgYXJlIGFsbG93ZWQgdG8gY29udGludWUgdG8gbG9hZCBtZWRpYSBk
YXRhIGFmdGVyIG5hdmlnYXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lu
cy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCShyZXZpc2lv
biAyMTgwMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdp
blJlcGxhY2VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDcgKzE4MSw3IEBAIHN0YXRp
YyBib29sIGhhc0Nhc2VJbnNlbnNpdGl2ZVByZWZpeChjb24KICAgICAKIHN0YXRpYyBib29sIGlz
WW91VHViZVVSTChjb25zdCBVUkwmIHVybCkKIHsKLSAgICBTdHJpbmcgaG9zdE5hbWUgPSB1cmwu
aG9zdCgpOworICAgIFN0cmluZ1ZpZXcgaG9zdE5hbWUgPSB1cmwuaG9zdCgpOwogICAgIHJldHVy
biBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShob3N0TmFtZSwgIm0ueW91dHViZS5jb20i
KQogICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShob3N0TmFtZSwgInlv
dXR1LmJlIikKICAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaG9zdE5h
bWUsICJ3d3cueW91dHViZS5jb20iKQpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0YXRpYyBVUkwgcHJv
Y2Vzc0FuZENyZWF0ZVlvdVR1YmVVUkwoY28KICAgICBpZiAoIWlzWW91VHViZVVSTCh1cmwpKQog
ICAgICAgICByZXR1cm4gVVJMKCk7CiAKLSAgICBTdHJpbmcgaG9zdE5hbWUgPSB1cmwuaG9zdCgp
OworICAgIFN0cmluZ1ZpZXcgaG9zdE5hbWUgPSB1cmwuaG9zdCgpOwogICAgIGJvb2wgaXNZb3VU
dWJlTW9iaWxlV2ViQXBwVVJMID0gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaG9zdE5h
bWUsICJtLnlvdXR1YmUuY29tIik7CiAgICAgaXNZb3VUdWJlU2hvcnRlbmVkVVJMID0gZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaG9zdE5hbWUsICJ5b3V0dS5iZSIpOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlLmNwcAkocmV2aXNpb24gMjE4MDE4KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgz
LDcgKzgzLDcgQEAgc3RhdGljIFN0cmluZyBob3N0TmFtZShjb25zdCBVUkwmIHVybCwgYgogewog
ICAgIEFTU0VSVCh1cmwucHJvdG9jb2xJcygid3NzIikgPT0gc2VjdXJlKTsKICAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQodXJsLmhvc3QoKS5jb252ZXJ0VG9B
U0NJSUxvd2VyY2FzZSgpKTsKKyAgICBidWlsZGVyLmFwcGVuZCh1cmwuaG9zdCgpLnRvU3RyaW5n
KCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSk7CiAgICAgaWYgKHVybC5wb3J0KCkgJiYgKCgh
c2VjdXJlICYmIHVybC5wb3J0KCkudmFsdWUoKSAhPSA4MCkgfHwgKHNlY3VyZSAmJiB1cmwucG9y
dCgpLnZhbHVlKCkgIT0gNDQzKSkpIHsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKICAg
ICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIodXJsLnBvcnQoKS52YWx1ZSgpKTsKQEAgLTE0OSw3
ICsxNDksNyBAQCB2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0VVJMKGNvbnN0IFVSCiAvLyBG
SVhNRTogUmV0dXJuIHR5cGUgc2hvdWxkIGp1c3QgYmUgU3RyaW5nLCBub3QgY29uc3QgU3RyaW5n
LgogY29uc3QgU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6aG9zdCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fdXJsLmhvc3QoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOworICAgIHJldHVy
biBtX3VybC5ob3N0KCkudG9TdHJpbmcoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogfQog
CiBjb25zdCBTdHJpbmcmIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50UHJvdG9jb2woKSBjb25z
dApJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbi5jcHAJKHJldmlzaW9uIDIxODAxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjEsNyArMTIxLDcgQEAgdm9pZCBDb250ZW50RXh0ZW5zaW9uOjpwb3B1bGF0ZUNvbmRpdGlvbgog
ICAgIGlmIChtX2NhY2hlZFRvcFVSTCAhPSB0b3BVUkwpIHsKICAgICAgICAgREZBQnl0ZWNvZGVJ
bnRlcnByZXRlciBpbnRlcnByZXRlcihtX2NvbXBpbGVkRXh0ZW5zaW9uLT50b3BVUkxGaWx0ZXJz
Qnl0ZWNvZGUoKSwgbV9jb21waWxlZEV4dGVuc2lvbi0+dG9wVVJMRmlsdGVyc0J5dGVjb2RlTGVu
Z3RoKCkpOwogICAgICAgICBjb25zdCB1aW50MTZfdCBhbGxMb2FkVHlwZXNBbmRSZXNvdXJjZVR5
cGVzID0gTG9hZFR5cGVNYXNrIHwgUmVzb3VyY2VUeXBlTWFzazsKLSAgICAgICAgU3RyaW5nIHN0
cmluZyA9IG1fY29tcGlsZWRFeHRlbnNpb24tPmNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbigp
ID8gdG9wVVJMLmhvc3QoKSA6IHRvcFVSTC5zdHJpbmcoKTsKKyAgICAgICAgU3RyaW5nIHN0cmlu
ZyA9IG1fY29tcGlsZWRFeHRlbnNpb24tPmNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbigpID8g
dG9wVVJMLmhvc3QoKS50b1N0cmluZygpIDogdG9wVVJMLnN0cmluZygpOwogICAgICAgICBhdXRv
IHRvcFVSTEFjdGlvbnMgPSBpbnRlcnByZXRlci5pbnRlcnByZXQoc3RyaW5nLnV0ZjgoKSwgYWxs
TG9hZFR5cGVzQW5kUmVzb3VyY2VUeXBlcyk7CiAgICAgICAgIAogICAgICAgICBtX2NhY2hlZFRv
cFVSTEFjdGlvbnMuY2xlYXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1l
bnRhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVu
dGF0aW9uLmNwcAkocmV2aXNpb24gMjE4MDE4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RPTUlt
cGxlbWVudGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkzLDcgKzE5Myw3IEBAIFJlZjxE
b2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUQKICNpZiBFTkFCTEUoVklERU8pCiAg
ICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSB0eXBlIGNhbiBiZSBwbGF5ZWQgYnkgb3VyIE1lZGlh
UGxheWVyLCBpZiBzbyBjcmVhdGUgYSBNZWRpYURvY3VtZW50CiAgICAgLy8gS2V5IHN5c3RlbSBp
cyBub3QgYXBwbGljYWJsZSBoZXJlLgotICAgIERPTUltcGxlbWVudGF0aW9uU3VwcG9ydHNUeXBl
Q2xpZW50IGNsaWVudChmcmFtZSAmJiBmcmFtZS0+c2V0dGluZ3MoKS5uZWVkc1NpdGVTcGVjaWZp
Y1F1aXJrcygpLCB1cmwuaG9zdCgpKTsKKyAgICBET01JbXBsZW1lbnRhdGlvblN1cHBvcnRzVHlw
ZUNsaWVudCBjbGllbnQoZnJhbWUgJiYgZnJhbWUtPnNldHRpbmdzKCkubmVlZHNTaXRlU3BlY2lm
aWNRdWlya3MoKSwgdXJsLmhvc3QoKS50b1N0cmluZygpKTsKICAgICBNZWRpYUVuZ2luZVN1cHBv
cnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgICAgcGFyYW1ldGVycy50eXBlID0gQ29udGVudFR5
cGUodHlwZSk7CiAgICAgcGFyYW1ldGVycy51cmwgPSB1cmw7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAkocmV2aXNpb24gMjE4MDE4KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIz
OSw3ICsyMzksNyBAQCB2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjCiAg
ICAgICAgICAgICBTdHJpbmcgcGFyc2VkVVJMID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1M
U3BhY2VzKHZhbHVlKTsKICAgICAgICAgICAgIGlmIChkb2N1bWVudCgpLmlzRE5TUHJlZmV0Y2hF
bmFibGVkKCkgJiYgZG9jdW1lbnQoKS5mcmFtZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHBy
b3RvY29sSXNJbkhUVFBGYW1pbHkocGFyc2VkVVJMKSB8fCBwYXJzZWRVUkwuc3RhcnRzV2l0aCgi
Ly8iKSkKLSAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIoKS5j
bGllbnQoKS5wcmVmZXRjaEROUyhkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHBhcnNlZFVSTCkuaG9z
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIoKS5j
bGllbnQoKS5wcmVmZXRjaEROUyhkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHBhcnNlZFVSTCkuaG9z
dCgpLnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGludmFs
aWRhdGVDYWNoZWRWaXNpdGVkTGlua0hhc2goKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMjE4MDE4KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQ2MCw3ICs2NDYw
LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllck5lZWRzUwogCiBTdHJpbmcg
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEb2N1bWVudEhvc3QoKSBjb25zdAogewotICAg
IHJldHVybiBkb2N1bWVudCgpLnVybCgpLmhvc3QoKTsKKyAgICByZXR1cm4gZG9jdW1lbnQoKS51
cmwoKS5ob3N0KCkudG9TdHJpbmcoKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllckVudGVyRnVsbHNjcmVlbigpCkBAIC03MTA5LDcgKzcxMDksNyBAQCBzdGF0aWMgYm9v
bCBuZWVkc1NlZWtpbmdTdXBwb3J0UXVpcmsoRG9jCiAgICAgaWYgKCFkb2N1bWVudC5zZXR0aW5n
cygpLm5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIAotICAgIFN0cmluZyBob3N0ID0gZG9jdW1lbnQudG9wRG9jdW1lbnQoKS51cmwo
KS5ob3N0KCk7CisgICAgU3RyaW5nVmlldyBob3N0ID0gZG9jdW1lbnQudG9wRG9jdW1lbnQoKS51
cmwoKS5ob3N0KCk7CiAgICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGhv
c3QsICJuZXRmbGl4LmNvbSIpIHx8IGhvc3QuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLm5l
dGZsaXguY29tIik7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMjE4MDE4KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEwLDcg
KzQxMCw3IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cmVzdGFydFNpbWkKICAgICAv
LyBSZXN0YXJ0IGFueSBvdGhlciBzbmFwc2hvdHRlZCBwbHVnaW5zIGluIHRoZSBwYWdlIHdpdGgg
dGhlIHNhbWUgb3JpZ2luLiBOb3RlIHRoYXQgdGhleQogICAgIC8vIG1heSBiZSBpbiBkaWZmZXJl
bnQgZnJhbWVzLCBzbyB0cmF2ZXJzZSBmcm9tIHRoZSB0b3Agb2YgdGhlIGRvY3VtZW50LgogCi0g
ICAgU3RyaW5nIHBsdWdJbk9yaWdpbiA9IG1fbG9hZGVkVXJsLmhvc3QoKTsKKyAgICBTdHJpbmdW
aWV3IHBsdWdJbk9yaWdpbiA9IG1fbG9hZGVkVXJsLmhvc3QoKTsKICAgICBTdHJpbmcgbWltZVR5
cGUgPSBsb2FkZWRNaW1lVHlwZSgpOwogICAgIFZlY3RvcjxSZWY8SFRNTFBsdWdJbkltYWdlRWxl
bWVudD4+IHNpbWlsYXJQbHVnaW5zOwogCkBAIC00NDQsNyArNDQ0LDcgQEAgdm9pZCBIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50Ojp1c2VyRGlkQ2xpYwogICAgIGlmIChmb3J3YXJkRXZlbnQpCiAgICAg
ICAgIG1fcGVuZGluZ0NsaWNrRXZlbnRGcm9tU25hcHNob3QgPSAmZXZlbnQ7CiAKLSAgICBTdHJp
bmcgcGx1Z0luT3JpZ2luID0gbV9sb2FkZWRVcmwuaG9zdCgpOworICAgIFN0cmluZ1ZpZXcgcGx1
Z0luT3JpZ2luID0gbV9sb2FkZWRVcmwuaG9zdCgpOwogICAgIGlmIChkb2N1bWVudCgpLnBhZ2Uo
KSAmJiAhU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbChkb2N1bWVu
dCgpLnBhZ2UoKS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+YmFzZVVSTCgpLnByb3RvY29sKCku
dG9TdHJpbmdXaXRob3V0Q29weWluZygpKSAmJiBkb2N1bWVudCgpLnBhZ2UoKS0+c2V0dGluZ3Mo
KS5hdXRvc3RhcnRPcmlnaW5QbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKCkpCiAgICAgICAgIGRv
Y3VtZW50KCkucGFnZSgpLT5wbHVnSW5DbGllbnQoKS0+ZGlkU3RhcnRGcm9tT3JpZ2luKGRvY3Vt
ZW50KCkucGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT5iYXNlVVJMKCkuaG9zdCgpLCBw
bHVnSW5PcmlnaW4sIGxvYWRlZE1pbWVUeXBlKCksIGRvY3VtZW50KCkucGFnZSgpLT5zZXNzaW9u
SUQoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAkocmV2aXNp
b24gMjE4MDE4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6ZmluaXNo
ZWRQYXJzaW5nKCkKICAgICAgICAgICAgIC8vIGJhY2sgb24gdGhlIGhvc3RuYW1lIGlmIHRoZXJl
IGlzIG5vIHBhdGguCiAgICAgICAgICAgICBTdHJpbmcgbmFtZSA9IGRlY29kZVVSTEVzY2FwZVNl
cXVlbmNlcyh1cmwoKS5sYXN0UGF0aENvbXBvbmVudCgpKTsKICAgICAgICAgICAgIGlmIChuYW1l
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBuYW1lID0gdXJsKCkuaG9zdCgpOworICAgICAg
ICAgICAgICAgIG5hbWUgPSB1cmwoKS5ob3N0KCkudG9TdHJpbmcoKTsKICAgICAgICAgICAgIHNl
dFRpdGxlKGltYWdlVGl0bGUobmFtZSwgc2l6ZSkpOwogICAgICAgICB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL1VSTFV0aWxzLmgJKHJldmlzaW9uIDIxODAxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
VVJMVXRpbHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgVVJMVXRp
bHM8VD46OnNldEhvc3QoY29uc3QgU3RyaW5nJiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogU3Ry
aW5nIFVSTFV0aWxzPFQ+Ojpob3N0bmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhyZWYoKS5o
b3N0KCk7CisgICAgcmV0dXJuIGhyZWYoKS5ob3N0KCkudG9TdHJpbmcoKTsKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCShy
ZXZpc2lvbiAyMTgwMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI0Nyw3ICsyNDcsNyBAQCBib29sIExpbmtMb2FkZXI6OmxvYWRM
aW5rKGNvbnN0IExpbmtSZWxBCiAgICAgICAgIC8vIEZJWE1FOiBUaGUgaHJlZiBhdHRyaWJ1dGUg
b2YgdGhlIGxpbmsgZWxlbWVudCBjYW4gYmUgaW4gIi8vaG9zdG5hbWUiIGZvcm0sIGFuZCB3ZSBz
aG91bGRuJ3QgYXR0ZW1wdAogICAgICAgICAvLyB0byBjb21wbGV0ZSB0aGF0IGFzIFVSTCA8aHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4ODU3Pi4KICAgICAgICAgaWYg
KGRvY3VtZW50LnNldHRpbmdzKCkuZG5zUHJlZmV0Y2hpbmdFbmFibGVkKCkgJiYgaHJlZi5pc1Zh
bGlkKCkgJiYgIWhyZWYuaXNFbXB0eSgpICYmIGRvY3VtZW50LmZyYW1lKCkpCi0gICAgICAgICAg
ICBkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5wcmVmZXRjaEROUyhocmVmLmhv
c3QoKSk7CisgICAgICAgICAgICBkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5w
cmVmZXRjaEROUyhocmVmLmhvc3QoKS50b1N0cmluZygpKTsKICAgICB9CiAKICAgICBpZiAobV9j
bGllbnQuc2hvdWxkTG9hZExpbmsoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZE9ic2VydmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCShyZXZpc2lvbiAyMTgwMTgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01ODYsNyArNTg2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6ZmlyZVNob3VsZFBh
cgogCiBTdHJpbmcgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnByaW1hcnlEb21haW4oY29uc3QgVVJM
JiB1cmwpCiB7Ci0gICAgcmV0dXJuIHByaW1hcnlEb21haW4odXJsLmhvc3QoKSk7CisgICAgcmV0
dXJuIHByaW1hcnlEb21haW4odXJsLmhvc3QoKS50b1N0cmluZygpKTsKIH0KIAogU3RyaW5nIFJl
c291cmNlTG9hZE9ic2VydmVyOjpwcmltYXJ5RG9tYWluKGNvbnN0IFN0cmluZyYgaG9zdCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Mb2FkZXJOU1VSTEV4dHJhcy5tbQko
cmV2aXNpb24gMjE4MDE4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Mb2FkZXJOU1VS
TEV4dHJhcy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBOU1N0cmluZyAqc3Vn
Z2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUoCiAKICAgICBpZiAoW2ZpbGVuYW1lIGxlbmd0aF0g
PT0gMCB8fCBbbGFzdFBhdGhDb21wb25lbnQgaXNFcXVhbFRvU3RyaW5nOkAiLyJdKSB7CiAgICAg
ICAgIC8vIGxhc3RQYXRoQ29tcG9uZW50IGlzIG5vIGdvb2QsIHRyeSB0aGUgaG9zdC4KLSAgICAg
ICAgTlNTdHJpbmcgKmhvc3QgPSBVUkwodXJsKS5ob3N0KCk7CisgICAgICAgIE5TU3RyaW5nICpo
b3N0ID0gVVJMKHVybCkuaG9zdCgpLnRvU3RyaW5nKCk7CiAgICAgICAgIGZpbGVuYW1lID0gZmls
ZW5hbWVCeUZpeGluZ0lsbGVnYWxDaGFyYWN0ZXJzKGhvc3QpOwogICAgICAgICBpZiAoW2ZpbGVu
YW1lIGxlbmd0aF0gPT0gMCkgewogICAgICAgICAgICAgLy8gQ2FuJ3QgbWFrZSBhIGZpbGVuYW1l
IHVzaW5nIHRoaXMgVVJMLCB1c2UgInVua25vd24iLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNw
cAkocmV2aXNpb24gMjE4MDE4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMzUsNyArMzM1LDcgQEAgdm9pZCBDaHJvbWU6OnNldFN0YXR1c2Jh
clRleHQoRnJhbWUmIGZyYQogdm9pZCBDaHJvbWU6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNv
bnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgdW5zaWduZWQgbW9kaWZpZXJGbGFncykKIHsKICAg
ICBpZiAocmVzdWx0LmlubmVyTm9kZSgpICYmIHJlc3VsdC5pbm5lck5vZGUoKS0+ZG9jdW1lbnQo
KS5pc0ROU1ByZWZldGNoRW5hYmxlZCgpKQotICAgICAgICBtX3BhZ2UubWFpbkZyYW1lKCkubG9h
ZGVyKCkuY2xpZW50KCkucHJlZmV0Y2hETlMocmVzdWx0LmFic29sdXRlTGlua1VSTCgpLmhvc3Qo
KSk7CisgICAgICAgIG1fcGFnZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5jbGllbnQoKS5wcmVmZXRj
aEROUyhyZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCkuaG9zdCgpLnRvU3RyaW5nKCkpOwogICAgIG1f
Y2xpZW50Lm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KHJlc3VsdCwgbW9kaWZpZXJGbGFncyk7CiAK
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KG1f
cGFnZSwgcmVzdWx0LCBtb2RpZmllckZsYWdzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
TG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24u
Y3BwCShyZXZpc2lvbiAyMTgwMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQsNyBAQCBTdHJpbmcgTG9jYXRpb246Omhvc3Ru
YW1lKCkgY29uc3QKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
IAotICAgIHJldHVybiB1cmwoKS5ob3N0KCk7CisgICAgcmV0dXJuIHVybCgpLmhvc3QoKS50b1N0
cmluZygpOwogfQogCiBTdHJpbmcgTG9jYXRpb246OnBvcnQoKSBjb25zdApJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCShyZXZpc2lvbiAyMTgwMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTE2LDcgKzIxMTYsNyBAQCB2b2lkIFBhZ2U6Om1haW5G
cmFtZUxvYWRTdGFydGVkKGNvbnN0IFVSCiB7CiAgICAgU3RyaW5nIGRvbWFpbjsKICNpZiBFTkFC
TEUoUFVCTElDX1NVRkZJWF9MSVNUKQotICAgIGRvbWFpbiA9IHRvcFByaXZhdGVseUNvbnRyb2xs
ZWREb21haW4oZGVzdGluYXRpb25VUkwuaG9zdCgpKTsKKyAgICBkb21haW4gPSB0b3BQcml2YXRl
bHlDb250cm9sbGVkRG9tYWluKGRlc3RpbmF0aW9uVVJMLmhvc3QoKS50b1N0cmluZygpKTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uVVJMKTsKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNb25pdG9yLmNwcAkocmV2aXNpb24gMjE4MDE4
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDgsNyArMTQ4LDcgQEAgc3RhdGljIHZvaWQgcmVwb3J0UGFnZU92ZXJQb3N0
TG9hZFJlc291cgogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0
cmluZyBkb21haW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKGRvY3VtZW50LT51cmwo
KS5ob3N0KCkpOworICAgIFN0cmluZyBkb21haW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9t
YWluKGRvY3VtZW50LT51cmwoKS5ob3N0KCkudG9TdHJpbmcoKSk7CiAgICAgaWYgKGRvbWFpbi5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Q
bHVnSW5DbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdJbkNs
aWVudC5oCShyZXZpc2lvbiAyMTgwMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdJbkNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMyw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFBsdWdJbkNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhZ2VE
ZXN0cm95ZWQoKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZEF1dG9TdGFydEZyb21Pcmln
aW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydEZy
b21PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9y
aWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgU2Vzc2lvbklEKSA9IDA7CisgICAgdmlydHVh
bCBib29sIHNob3VsZEF1dG9TdGFydEZyb21PcmlnaW4oU3RyaW5nVmlldyBwYWdlT3JpZ2luLCBT
dHJpbmdWaWV3IHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkaWRTdGFydEZyb21PcmlnaW4oU3RyaW5nVmlldyBwYWdlT3JpZ2luLCBT
dHJpbmdWaWV3IHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgU2Vzc2lvbklE
KSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5QbHVnSW5DbGllbnQoKSB7IH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCShyZXZpc2lvbiAyMTgwMTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTAxLDcgKzEwMSw3IEBAIHN0YXRpYyBib29sIHNob3VsZFRyZWF0QXNVbmlxdWVPcmln
aW4oY28KIAogU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0IFVSTCYgdXJsKQog
ICAgIDogbV9wcm90b2NvbCh1cmwucHJvdG9jb2woKS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkg
OiB1cmwucHJvdG9jb2woKS50b1N0cmluZygpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpCi0g
ICAgLCBtX2hvc3QodXJsLmhvc3QoKS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiB1cmwuaG9z
dCgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpCisgICAgLCBtX2hvc3QodXJsLmhvc3QoKS5p
c051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiB1cmwuaG9zdCgpLnRvU3RyaW5nKCkuY29udmVydFRv
QVNDSUlMb3dlcmNhc2UoKSkKICAgICAsIG1fcG9ydCh1cmwucG9ydCgpKQogewogICAgIC8vIGRv
Y3VtZW50LmRvbWFpbiBzdGFydHMgYXMgbV9ob3N0LCBidXQgY2FuIGJlIHNldCBieSB0aGUgRE9N
LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNw
cAkocmV2aXNpb24gMjE4MDE4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVS
TFBhdHRlcm4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNyArMTI1LDcgQEAgYm9vbCBVc2Vy
Q29udGVudFVSTFBhdHRlcm46Om1hdGNoZXMoY29ucwogCiBib29sIFVzZXJDb250ZW50VVJMUGF0
dGVybjo6bWF0Y2hlc0hvc3QoY29uc3QgVVJMJiB0ZXN0KSBjb25zdAogewotICAgIGNvbnN0IFN0
cmluZyYgaG9zdCA9IHRlc3QuaG9zdCgpOworICAgIFN0cmluZ1ZpZXcgaG9zdCA9IHRlc3QuaG9z
dCgpOwogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGhvc3QsIG1faG9zdCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCkBAIC0xMzgsNyArMTM4LDcgQEAgYm9vbCBVc2VyQ29udGVudFVS
TFBhdHRlcm46Om1hdGNoZXNIb3N0KAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIENo
ZWNrIGlmIHRoZSBkb21haW4gaXMgYSBzdWJkb21haW4gb2Ygb3VyIGhvc3QuCi0gICAgaWYgKCFo
b3N0LmVuZHNXaXRoKG1faG9zdCwgZmFsc2UpKQorICAgIGlmICghaG9zdC50b1N0cmluZygpLmVu
ZHNXaXRoKG1faG9zdCwgZmFsc2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBBU1NF
UlQoaG9zdC5sZW5ndGgoKSA+IG1faG9zdC5sZW5ndGgoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHAJ
KHJldmlzaW9uIDIxODAxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDEwICs2MywxMCBAQCBi
b29sIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTo6c2NoZW1lCiAKIGJvb2wgQ29udGVudFNl
Y3VyaXR5UG9saWN5U291cmNlOjpob3N0TWF0Y2hlcyhjb25zdCBVUkwmIHVybCkgY29uc3QKIHsK
LSAgICBjb25zdCBTdHJpbmcmIGhvc3QgPSB1cmwuaG9zdCgpOworICAgIFN0cmluZ1ZpZXcgaG9z
dCA9IHVybC5ob3N0KCk7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoaG9zdCwgbV9o
b3N0KSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIG1faG9zdEhhc1dpbGRjYXJk
ICYmIGhvc3QuZW5kc1dpdGgoIi4iICsgbV9ob3N0LCBmYWxzZSk7CisgICAgcmV0dXJuIG1faG9z
dEhhc1dpbGRjYXJkICYmIGhvc3QudG9TdHJpbmcoKS5lbmRzV2l0aCgiLiIgKyBtX2hvc3QsIGZh
bHNlKTsKIAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAJKHJldmlzaW9uIDIxODAx
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQyNCwxMCArNDI0LDEwIEBAIFN0cmluZ1ZpZXcgVVJMOjpwcm90b2NvbCgpIGNvbnN0CiAgICAg
cmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZygwLCBtX3NjaGVtZUVuZCk7CiB9
CiAKLVN0cmluZyBVUkw6Omhvc3QoKSBjb25zdAorU3RyaW5nVmlldyBVUkw6Omhvc3QoKSBjb25z
dAogewogICAgIHVuc2lnbmVkIHN0YXJ0ID0gaG9zdFN0YXJ0KCk7Ci0gICAgcmV0dXJuIG1fc3Ry
aW5nLnN1YnN0cmluZyhzdGFydCwgbV9ob3N0RW5kIC0gc3RhcnQpOworICAgIHJldHVybiBTdHJp
bmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoc3RhcnQsIG1faG9zdEVuZCAtIHN0YXJ0KTsKIH0K
IAogc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gVVJMOjpwb3J0KCkgY29uc3QKQEAgLTQ0OCw5ICs0
NDgsOCBAQCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBVUkw6OnBvcnQoKSBjb25zCiAKIFN0cmlu
ZyBVUkw6Omhvc3RBbmRQb3J0KCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byBwb3J0ID0gdGhpcy0+
cG9ydCgpKQotICAgICAgICByZXR1cm4gaG9zdCgpICsgJzonICsgU3RyaW5nOjpudW1iZXIocG9y
dC52YWx1ZSgpKTsKLSAgICByZXR1cm4gaG9zdCgpOworICAgIHVuc2lnbmVkIHN0YXJ0ID0gaG9z
dFN0YXJ0KCk7CisgICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhzdGFydCwgbV9wb3J0RW5k
IC0gc3RhcnQpOwogfQogCiBTdHJpbmcgVVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3QK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oCShyZXZpc2lvbiAyMTgwMTgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9VUkwuaAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRv
TGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCA9IDEwMjQpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nVmlldyBwcm90b2NvbCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBob3N0KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nVmlldyBob3N0KCkgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCgpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBob3N0QW5kUG9ydCgpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3Q7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMu
bW0JKHJldmlzaW9uIDIxODAxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TU0xL
ZXlHZW5lcmF0b3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI0MCw3ICsyNDAsNyBAQCBTdHJp
bmcgc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nCiAKICAgICBhdXRvIGNoYWxsZW5n
ZSA9IGNoYWxsZW5nZVN0cmluZy5jb250YWluc09ubHlBU0NJSSgpID8gY2hhbGxlbmdlU3RyaW5n
LmFzY2lpKCkgOiAiIjsKIAotICAgIHJldHVybiBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VT
dHJpbmcoa2V5U2l6ZSwgY2hhbGxlbmdlLCBrZXlnZW5LZXljaGFpbkl0ZW1OYW1lKHVybC5ob3N0
KCkpKTsKKyAgICByZXR1cm4gc2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKGtleVNp
emUsIGNoYWxsZW5nZSwga2V5Z2VuS2V5Y2hhaW5JdGVtTmFtZSh1cmwuaG9zdCgpLnRvU3RyaW5n
KCkpKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAJKHJl
dmlzaW9uIDIxODAxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzQsMTIgKzE3
NCwxMyBAQCBTdHJpbmcgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29raWVTdG9yCiAKIHN0YXRp
YyBpbmxpbmUgU3RyaW5nIGdldFBhcnRpdGlvbmluZ0RvbWFpbihjb25zdCBVUkwmIHVybCkgCiB7
CisgICAgYXV0byBob3N0ID0gdXJsLmhvc3QoKS50b1N0cmluZygpOwogI2lmIEVOQUJMRShQVUJM
SUNfU1VGRklYX0xJU1QpCi0gICAgYXV0byBkb21haW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVk
RG9tYWluKHVybC5ob3N0KCkpOworICAgIGF1dG8gZG9tYWluID0gdG9wUHJpdmF0ZWx5Q29udHJv
bGxlZERvbWFpbihob3N0KTsKICAgICBpZiAoZG9tYWluLmlzRW1wdHkoKSkKLSAgICAgICAgZG9t
YWluID0gdXJsLmhvc3QoKTsKKyAgICAgICAgZG9tYWluID0gaG9zdDsKICNlbHNlCi0gICAgYXV0
byBkb21haW4gPSB1cmwuaG9zdCgpOworICAgIGF1dG8gZG9tYWluID0gaG9zdDsKICNlbmRpZgog
ICAgIHJldHVybiBkb21haW47CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZO
ZXQuY3BwCShyZXZpc2lvbiAyMTgwMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMwOSw3ICszMDksNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNyZWF0ZVN0cmVh
CiAgICAgaWYgKG1fY29ubmVjdGlvblR5cGUgPT0gVW5rbm93bikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBob3N0ID0gbV91cmwuaG9zdCgpLmNyZWF0ZUNG
U3RyaW5nKCk7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBob3N0ID0gbV91cmwuaG9zdCgp
LnRvU3RyaW5nKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKIAogICAgIC8vIENyZWF0aW5nIHN0cmVhbXMg
dG8gZmluYWwgZGVzdGluYXRpb24sIG5vdCB0byBwcm94eS4KICAgICBDRlJlYWRTdHJlYW1SZWYg
cmVhZFN0cmVhbSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0
aW9uLmNwcAkocmV2aXNpb24gMjE4MDE4KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJMb2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgU3RyaW5nIFdv
cmtlckxvY2F0aW9uOjpob3N0KCkgY29uc3QKIAogU3RyaW5nIFdvcmtlckxvY2F0aW9uOjpob3N0
bmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdXJsLmhvc3QoKTsKKyAgICByZXR1cm4gbV91
cmwuaG9zdCgpLnRvU3RyaW5nKCk7CiB9CiAKIFN0cmluZyBXb3JrZXJMb2NhdGlvbjo6cG9ydCgp
IGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTgwMTgpCisrKyBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MyBAQAorMjAxNy0wNi0wOSAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVS
TDo6aG9zdCBzaG91bGQgcmV0dXJuIGEgU3RyaW5nVmlldworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczMTkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmZldGNoRGlza0NhY2hlRW50cmllcyk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tOgorICAgICAgICAoV2Vi
S2l0OjpvdmVycmlkZVN5c3RlbVByb3hpZXMpOgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJVVJM
Lmg6CisgICAgICAgIChBUEk6OlVSTDo6aG9zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRv
bWF0aW9uU2Vzc2lvbjo6YWRkU2luZ2xlQ29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0
b21hdGlvblNlc3Npb246OmRlbGV0ZUFsbENvb2tpZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGx1
Z2luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVn
aW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdp
bkluZm9Qcm92aWRlcjo6cG9wdWxhdGVQbHVnaW5DYWNoZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBsdWdpbkluZm9Qcm92aWRlcjo6cGx1Z2luTG9hZENsaWVudFBvbGljeUZvckhvc3QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsdWdJbkNsaWVudDo6c2hvdWxkQXV0b1N0YXJ0RnJvbU9yaWdpbik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdJbkNsaWVudDo6ZGlkU3RhcnRGcm9tT3JpZ2luKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5oOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6bmVlZHNIaWRkZW5Db250ZW50RWRpdGFibGVRdWlyayk6CisgICAgICAgIChXZWJLaXQ6Om5l
ZWRzUGxhaW5UZXh0UXVpcmspOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkZXRlcm1pbmVQ
cmltYXJ5U25hcHNob3R0ZWRQbHVnSW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjptYXRj
aGVzUHJpbWFyeVBsdWdJbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjphZGRDYXNlRm9sZGVkQ2hhcmFjdGVycyk6CisgICAgICAgIChXZWJLaXQ6Omhhc2hGb3JQbHVn
SW5PcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpzaG91bGRQbHVnSW5BdXRv
U3RhcnRGcm9tT3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGx1Z0luRGlk
U3RhcnRGcm9tT3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGx1Z0luRGlk
UmVjZWl2ZVVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
Lmg6CisKIDIwMTctMDYtMDkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAg
ICAgICBVc2UgV1RGOjpGdW5jdGlvbiBpbnN0ZWFkIG9mIHN0ZDo6ZnVuY3Rpb24gaW4gU3RvcmFn
ZU1hbmFnZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIxODAxOCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ1LDcgKzM0
NSw3IEBAIHN0YXRpYyB2b2lkIGZldGNoRGlza0NhY2hlRW50cmllcyhTZXNzaW8KICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgYXV0byB1cmwgPSB0cmF2ZXJzYWxFbnRyeS0+ZW50cnkucmVz
cG9uc2UoKS51cmwoKTsKLSAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gb3JpZ2luc0FuZFNpemVz
LmFkZCh7dXJsLnByb3RvY29sKCkudG9TdHJpbmcoKSwgdXJsLmhvc3QoKSwgdXJsLnBvcnQoKX0s
IDApOworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBvcmlnaW5zQW5kU2l6ZXMuYWRkKHt1cmwu
cHJvdG9jb2woKS50b1N0cmluZygpLCB1cmwuaG9zdCgpLnRvU3RyaW5nKCksIHVybC5wb3J0KCl9
LCAwKTsKIAogICAgICAgICAgICAgaWYgKGZldGNoT3B0aW9ucy5jb250YWlucyhXZWJzaXRlRGF0
YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6ZXMpKQogICAgICAgICAgICAgICAgIHJlc3VsdC5pdGVy
YXRvci0+dmFsdWUgKz0gdHJhdmVyc2FsRW50cnktPmVudHJ5LnNvdXJjZVN0b3JhZ2VSZWNvcmQo
KS5oZWFkZXIuc2l6ZSgpICsgdHJhdmVyc2FsRW50cnktPnJlY29yZEluZm8uYm9keVNpemU7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdv
cmtQcm9jZXNzTWFjLm1tCShyZXZpc2lvbiAyMTgwMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTY5
LDcgKzY5LDcgQEAgc3RhdGljIHZvaWQgb3ZlcnJpZGVTeXN0ZW1Qcm94aWVzKGNvbnN0IAogICAg
IGlmICghaHR0cFByb3h5LmlzTnVsbCgpKSB7CiAgICAgICAgIFVSTCBodHRwUHJveHlVUkwoVVJM
KCksIGh0dHBQcm94eSk7CiAgICAgICAgIGlmIChodHRwUHJveHlVUkwuaXNWYWxpZCgpKSB7Ci0g
ICAgICAgICAgICBbcHJveHlTZXR0aW5ncyBzZXRPYmplY3Q6bnNTdHJpbmdGcm9tV2ViQ29yZVN0
cmluZyhodHRwUHJveHlVUkwuaG9zdCgpKSBmb3JLZXk6KE5TU3RyaW5nICopa0NGTmV0d29ya1By
b3hpZXNIVFRQUHJveHldOworICAgICAgICAgICAgW3Byb3h5U2V0dGluZ3Mgc2V0T2JqZWN0Om5z
U3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcoaHR0cFByb3h5VVJMLmhvc3QoKS50b1N0cmluZygpKSBm
b3JLZXk6KE5TU3RyaW5nICopa0NGTmV0d29ya1Byb3hpZXNIVFRQUHJveHldOwogICAgICAgICAg
ICAgaWYgKGh0dHBQcm94eVVSTC5wb3J0KCkpIHsKICAgICAgICAgICAgICAgICBOU051bWJlciAq
cG9ydCA9IFtOU051bWJlciBudW1iZXJXaXRoSW50Omh0dHBQcm94eVVSTC5wb3J0KCkudmFsdWUo
KV07CiAgICAgICAgICAgICAgICAgW3Byb3h5U2V0dGluZ3Mgc2V0T2JqZWN0OnBvcnQgZm9yS2V5
OihOU1N0cmluZyAqKWtDRk5ldHdvcmtQcm94aWVzSFRUUFBvcnRdOwpAQCAtODIsNyArODIsNyBA
QCBzdGF0aWMgdm9pZCBvdmVycmlkZVN5c3RlbVByb3hpZXMoY29uc3QgCiAgICAgaWYgKCFodHRw
c1Byb3h5LmlzTnVsbCgpKSB7CiAgICAgICAgIFVSTCBodHRwc1Byb3h5VVJMKFVSTCgpLCBodHRw
c1Byb3h5KTsKICAgICAgICAgaWYgKGh0dHBzUHJveHlVUkwuaXNWYWxpZCgpKSB7Ci0gICAgICAg
ICAgICBbcHJveHlTZXR0aW5ncyBzZXRPYmplY3Q6bnNTdHJpbmdGcm9tV2ViQ29yZVN0cmluZyho
dHRwc1Byb3h5VVJMLmhvc3QoKSkgZm9yS2V5OihOU1N0cmluZyAqKWtDRk5ldHdvcmtQcm94aWVz
SFRUUFNQcm94eV07CisgICAgICAgICAgICBbcHJveHlTZXR0aW5ncyBzZXRPYmplY3Q6bnNTdHJp
bmdGcm9tV2ViQ29yZVN0cmluZyhodHRwc1Byb3h5VVJMLmhvc3QoKS50b1N0cmluZygpKSBmb3JL
ZXk6KE5TU3RyaW5nICopa0NGTmV0d29ya1Byb3hpZXNIVFRQU1Byb3h5XTsKICAgICAgICAgICAg
IGlmIChodHRwc1Byb3h5VVJMLnBvcnQoKSkgewogICAgICAgICAgICAgICAgIE5TTnVtYmVyICpw
b3J0ID0gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6aHR0cHNQcm94eVVSTC5wb3J0KCkudmFsdWUo
KV07CiAgICAgICAgICAgICAgICAgW3Byb3h5U2V0dGluZ3Mgc2V0T2JqZWN0OnBvcnQgZm9yS2V5
OihOU1N0cmluZyAqKWtDRk5ldHdvcmtQcm94aWVzSFRUUFNQb3J0XTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvQVBJVVJMLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9BUElVUkwuaAkocmV2aXNpb24gMjE4MDE4KQorKysgU291cmNlL1dlYktpdDIv
U2hhcmVkL0FQSS9BUElVUkwuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViVVJMX2gK
LSNkZWZpbmUgV2ViVVJMX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCkBAIC02NCw3ICs2Myw3IEBAIHB1
YmxpYzoKICAgICBXVEY6OlN0cmluZyBob3N0KCkgY29uc3QKICAgICB7CiAgICAgICAgIHBhcnNl
VVJMSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgcmV0dXJuIG1fcGFyc2VkVVJMLT5pc1ZhbGlkKCkg
PyBtX3BhcnNlZFVSTC0+aG9zdCgpIDogV1RGOjpTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIG1f
cGFyc2VkVVJMLT5pc1ZhbGlkKCkgPyBtX3BhcnNlZFVSTC0+aG9zdCgpLnRvU3RyaW5nKCkgOiBX
VEY6OlN0cmluZygpOwogICAgIH0KIAogICAgIFdURjo6U3RyaW5nIHByb3RvY29sKCkgY29uc3QK
QEAgLTEzMCw1ICsxMjksMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
Ci0KLSNlbmRpZiAvLyBVUkxfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAkocmV2aXNp
b24gMjE4MDE4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OTQsNyArNzk0LDcgQEAgdm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6YWRkU2luZ2xlQ29vawogCiAgICAgLy8gSW5oZXJpdCB0
aGUgZG9tYWluL2hvc3QgZnJvbSB0aGUgbWFpbiBmcmFtZSdzIFVSTCBpZiBpdCBpcyBub3QgZXhw
bGljaXRseSBzZXQuCiAgICAgaWYgKGRvbWFpbi5pc0VtcHR5KCkpCi0gICAgICAgIGRvbWFpbiA9
IGFjdGl2ZVVSTC5ob3N0KCk7CisgICAgICAgIGRvbWFpbiA9IGFjdGl2ZVVSTC5ob3N0KCkudG9T
dHJpbmcoKTsKIAogICAgIGNvb2tpZS5kb21haW4gPSBkb21haW47CiAKQEAgLTgzOCw3ICs4Mzgs
NyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpkZWxldGVBbGxDb29rCiAgICAgQVNTRVJU
KGFjdGl2ZVVSTC5pc1ZhbGlkKCkpOwogCiAgICAgV2ViQ29va2llTWFuYWdlclByb3h5KiBjb29r
aWVNYW5hZ2VyID0gbV9wcm9jZXNzUG9vbC0+c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJv
eHk+KCk7Ci0gICAgY29va2llTWFuYWdlci0+ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKHBhZ2Ut
PndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSwgYWN0aXZlVVJMLmhvc3QoKSk7CisgICAg
Y29va2llTWFuYWdlci0+ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKHBhZ2UtPndlYnNpdGVEYXRh
U3RvcmUoKS5zZXNzaW9uSUQoKSwgYWN0aXZlVVJMLmhvc3QoKS50b1N0cmluZygpKTsKIH0KIAog
I2lmIFVTRShBUFBLSVQpIHx8IFBMQVRGT1JNKEdUSykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjE4MDE4KQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzg5LDcgKzc4
OSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6Y2xlYXJSZXNvdXJjZUNhY2hlcyhSZXMKICAgICBDcm9z
c09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlOjpzaW5nbGV0b24oKS5lbXB0eSgpOwogfQogCi1z
dGF0aWMgaW5saW5lIHZvaWQgYWRkQ2FzZUZvbGRlZENoYXJhY3RlcnMoU3RyaW5nSGFzaGVyJiBo
YXNoZXIsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQorc3RhdGljIGlubGluZSB2b2lkIGFkZENhc2VG
b2xkZWRDaGFyYWN0ZXJzKFN0cmluZ0hhc2hlciYgaGFzaGVyLCBTdHJpbmdWaWV3IHN0cmluZykK
IHsKICAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtODAwLDcg
KzgwMCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRDYXNlRm9sZGVkQ2hhcmFjdGUKICAgICBo
YXNoZXIuYWRkQ2hhcmFjdGVyczxVQ2hhciwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoOjpmb2xk
Q2FzZTxVQ2hhcj4+KHN0cmluZy5jaGFyYWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpKTsKIH0K
IAotc3RhdGljIHVuc2lnbmVkIGhhc2hGb3JQbHVnSW5PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdl
T3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSkKK3N0YXRpYyB1bnNpZ25lZCBoYXNoRm9yUGx1Z0luT3JpZ2luKFN0cmluZ1ZpZXcgcGFnZU9y
aWdpbiwgU3RyaW5nVmlldyBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7
CiAgICAgLy8gV2Ugd2FudCB0byBhdm9pZCBjb25jYXRlbmF0aW5nIHRoZSBzdHJpbmdzIGFuZCB0
aGVuIHRha2luZyB0aGUgaGFzaCwgc2luY2UgdGhhdCBjb3VsZCBsZWFkIHRvIGFuIGV4cGVuc2l2
ZSBjb252ZXJzaW9uLgogICAgIC8vIFdlIGFsc28gd2FudCB0byBhdm9pZCB1c2luZyB0aGUgaGFz
aCgpIGZ1bmN0aW9uIGluIFN0cmluZ0ltcGwgb3IgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoIGJl
Y2F1c2UgdGhhdCBtYXNrcyBvdXQgYml0cyBmb3IgdGhlIHVzZSBvZiBmbGFncy4KQEAgLTgzMiw5
ICs4MzIsOSBAQCBib29sIFdlYlByb2Nlc3M6OmlzUGx1Z0luQXV0b1N0YXJ0T3JpZ2luCiAgICAg
cmV0dXJuIGN1cnJlbnRUaW1lKCkgPCBpdC0+dmFsdWU7CiB9CiAKLWJvb2wgV2ViUHJvY2Vzczo6
c2hvdWxkUGx1Z0luQXV0b1N0YXJ0RnJvbU9yaWdpbihXZWJQYWdlJiB3ZWJQYWdlLCBjb25zdCBT
dHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKQorYm9vbCBXZWJQcm9jZXNzOjpzaG91bGRQbHVnSW5BdXRvU3RhcnRGcm9t
T3JpZ2luKFdlYlBhZ2UmIHdlYlBhZ2UsIFN0cmluZ1ZpZXcgcGFnZU9yaWdpbiwgU3RyaW5nVmll
dyBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7Ci0gICAgaWYgKCFwbHVn
aW5PcmlnaW4uaXNFbXB0eSgpICYmIG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2lucy5jb250YWlucyhw
bHVnaW5PcmlnaW4pKQorICAgIGlmICghcGx1Z2luT3JpZ2luLmlzRW1wdHkoKSAmJiBtX3BsdWdJ
bkF1dG9TdGFydE9yaWdpbnMuY29udGFpbnMocGx1Z2luT3JpZ2luLnRvU3RyaW5nKCkpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAogI2lmZGVmIEVOQUJMRV9QUklNQVJZX1NOQVBTSE9UVEVEX1BM
VUdJTl9IRVVSSVNUSUMKQEAgLTg0OSw3ICs4NDksNyBAQCBib29sIFdlYlByb2Nlc3M6OnNob3Vs
ZFBsdWdJbkF1dG9TdGFydEZyCiAgICAgcmV0dXJuIGlzUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFz
aChoYXNoRm9yUGx1Z0luT3JpZ2luKHBhZ2VPcmlnaW4sIHBsdWdpbk9yaWdpbiwgbWltZVR5cGUp
LCB3ZWJQYWdlLnNlc3Npb25JRCgpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpwbHVnSW5EaWRT
dGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBs
dWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgU2Vzc2lvbklEIHNlc3Npb25JRCkK
K3ZvaWQgV2ViUHJvY2Vzczo6cGx1Z0luRGlkU3RhcnRGcm9tT3JpZ2luKFN0cmluZ1ZpZXcgcGFn
ZU9yaWdpbiwgU3RyaW5nVmlldyBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7CiAgICAgaWYgKHBhZ2VPcmlnaW4uaXNFbXB0eSgpKSB7
CiAgICAgICAgIExPRyhQbHVnaW5zLCAiTm90IGFkZGluZyBlbXB0eSBwYWdlIG9yaWdpbiIpOwpA
QCAtODY4LDcgKzg2OCw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6cGx1Z0luRGlkU3RhcnRGcm9tT3Jp
Z2kKICAgICAvLyBpbmNvcnJlY3QgZm9yIGEgbGl0dGxlIHdoaWxlLgogICAgIG1fcGx1Z0luQXV0
b1N0YXJ0T3JpZ2luSGFzaGVzLmFkZChzZXNzaW9uSUQsIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJs
ZT4oKSkuaXRlcmF0b3ItPnZhbHVlLnNldChwbHVnSW5PcmlnaW5IYXNoLCBjdXJyZW50VGltZSgp
ICsgMzAgKiAxMDAwKTsKIAotICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYlByb2Nlc3NQb29sOjpBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHBhZ2VP
cmlnaW4sIHBsdWdJbk9yaWdpbkhhc2gsIHNlc3Npb25JRCksIDApOworICAgIHBhcmVudFByb2Nl
c3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQb29sOjpBZGRQbHVnSW5B
dXRvU3RhcnRPcmlnaW5IYXNoKHBhZ2VPcmlnaW4udG9TdHJpbmcoKSwgcGx1Z0luT3JpZ2luSGFz
aCwgc2Vzc2lvbklEKSwgMCk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzczo6ZGlkQWRkUGx1Z0luQXV0
b1N0YXJ0T3JpZ2luSGFzaCh1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoLCBkb3VibGUgZXhwaXJh
dGlvblRpbWUsIFNlc3Npb25JRCBzZXNzaW9uSUQpCkBAIC04OTAsNyArODkwLDcgQEAgdm9pZCBX
ZWJQcm9jZXNzOjpyZXNldFBsdWdJbkF1dG9TdGFydE9yaQogICAgIG1fcGx1Z0luQXV0b1N0YXJ0
T3JpZ2luSGFzaGVzLnN3YXAoY29uc3RfY2FzdDxIYXNoTWFwPFNlc3Npb25JRCwgSGFzaE1hcDx1
bnNpZ25lZCwgZG91YmxlPj4mPihoYXNoZXMpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpwbHVn
SW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29u
c3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFNlc3Npb25J
RCBzZXNzaW9uSUQpCit2b2lkIFdlYlByb2Nlc3M6OnBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJh
Y3Rpb24oU3RyaW5nVmlldyBwYWdlT3JpZ2luLCBTdHJpbmdWaWV3IHBsdWdpbk9yaWdpbiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBpZiAocGFn
ZU9yaWdpbi5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAyMTgwMTgpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDkgKzEyOCw5
IEBAIHB1YmxpYzoKICAgICBjb25zdCBXZWJDb3JlOjpNYWNoU2VuZFJpZ2h0JiBjb21wb3NpdGlu
Z1JlbmRlclNlcnZlclBvcnQoKSBjb25zdCB7IHJldHVybiBtX2NvbXBvc2l0aW5nUmVuZGVyU2Vy
dmVyUG9ydDsgfQogI2VuZGlmCiAKLSAgICBib29sIHNob3VsZFBsdWdJbkF1dG9TdGFydEZyb21P
cmlnaW4oV2ViUGFnZSYsIGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBw
bHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOwotICAgIHZvaWQgcGx1Z0luRGlk
U3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBw
bHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6OlNlc3Npb25JRCk7
Ci0gICAgdm9pZCBwbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYg
cGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIFdlYkNvcmU6OlNlc3Npb25JRCk7CisgICAgYm9vbCBzaG91bGRQbHVnSW5BdXRvU3Rh
cnRGcm9tT3JpZ2luKFdlYlBhZ2UmLCBTdHJpbmdWaWV3IHBhZ2VPcmlnaW4sIFN0cmluZ1ZpZXcg
cGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsKKyAgICB2b2lkIHBsdWdJbkRp
ZFN0YXJ0RnJvbU9yaWdpbihTdHJpbmdWaWV3IHBhZ2VPcmlnaW4sIFN0cmluZ1ZpZXcgcGx1Z2lu
T3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3JlOjpTZXNzaW9uSUQpOworICAg
IHZvaWQgcGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihTdHJpbmdWaWV3IHBhZ2VPcmln
aW4sIFN0cmluZ1ZpZXcgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJD
b3JlOjpTZXNzaW9uSUQpOwogICAgIHZvaWQgc2V0UGx1Z2luTG9hZENsaWVudFBvbGljeSh1aW50
OF90IHBvbGljeSwgY29uc3QgU3RyaW5nJiBob3N0LCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgdmVyc2lvblN0cmluZyk7CiAgICAgdm9pZCBjbGVhclBsdWdp
bkNsaWVudFBvbGljaWVzKCk7CiAgICAgdm9pZCByZWZyZXNoUGx1Z2lucygpOwpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkocmV2
aXNpb24gMjE4MDE4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODM4LDggKzE4MzgsOCBAQCB2b2lkIFBsdWdp
blZpZXc6OnBsdWdpbkRpZFJlY2VpdmVVc2VySW50CiAgICAgbV9kaWRSZWNlaXZlVXNlckludGVy
YWN0aW9uID0gdHJ1ZTsKIAogICAgIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmIHBsdWdJbkltYWdl
RWxlbWVudCA9IGRvd25jYXN0PEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ+KCptX3BsdWdpbkVsZW1l
bnQpOwotICAgIFN0cmluZyBwYWdlT3JpZ2luID0gcGx1Z0luSW1hZ2VFbGVtZW50LmRvY3VtZW50
KCkucGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT5iYXNlVVJMKCkuaG9zdCgpOwotICAg
IFN0cmluZyBwbHVnaW5PcmlnaW4gPSBwbHVnSW5JbWFnZUVsZW1lbnQubG9hZGVkVXJsKCkuaG9z
dCgpOworICAgIFN0cmluZ1ZpZXcgcGFnZU9yaWdpbiA9IHBsdWdJbkltYWdlRWxlbWVudC5kb2N1
bWVudCgpLnBhZ2UoKS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+YmFzZVVSTCgpLmhvc3QoKTsK
KyAgICBTdHJpbmdWaWV3IHBsdWdpbk9yaWdpbiA9IHBsdWdJbkltYWdlRWxlbWVudC5sb2FkZWRV
cmwoKS5ob3N0KCk7CiAgICAgU3RyaW5nIG1pbWVUeXBlID0gcGx1Z0luSW1hZ2VFbGVtZW50Lmxv
YWRlZE1pbWVUeXBlKCk7CiAKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wbHVnSW5EaWRS
ZWNlaXZlVXNlckludGVyYWN0aW9uKHBhZ2VPcmlnaW4sIHBsdWdpbk9yaWdpbiwgbWltZVR5cGUs
IHBsdWdJbkltYWdlRWxlbWVudC5kb2N1bWVudCgpLnBhZ2UoKS0+c2Vzc2lvbklEKCkpOwpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1dl
YlBsdWdpbkluZm9Qcm92aWRlci5jcHAJKHJldmlzaW9uIDIxODAxOCkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTIsNyArMTUyLDcgQEAgdm9pZCBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnBv
cHVsYXRlUGx1ZwogICAgIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICBTdHJpbmcgcGFnZUhv
c3QgPSBwYWdlLm1haW5GcmFtZSgpLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNl
VVJMKCkuaG9zdCgpOworICAgIFN0cmluZ1ZpZXcgcGFnZUhvc3QgPSBwYWdlLm1haW5GcmFtZSgp
LmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlVVJMKCkuaG9zdCgpOwogICAgIGZv
ciAoYXV0byYgaW5mbyA6IG1fY2FjaGVkUGx1Z2lucykgewogICAgICAgICBpZiAoYXV0byBjbGll
bnRQb2xpY3kgPSBwbHVnaW5Mb2FkQ2xpZW50UG9saWN5Rm9ySG9zdChwYWdlSG9zdCwgaW5mbykp
CiAgICAgICAgICAgICBpbmZvLmNsaWVudExvYWRQb2xpY3kgPSAqY2xpZW50UG9saWN5OwpAQCAt
MTY0LDkgKzE2NCw5IEBAIHZvaWQgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpwb3B1bGF0ZVBsdWcK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQotc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQbHVn
aW5Mb2FkQ2xpZW50UG9saWN5PiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnBsdWdpbkxvYWRDbGll
bnRQb2xpY3lGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCwgY29uc3QgV2ViQ29yZTo6UGx1Z2lu
SW5mbyYgaW5mbykgY29uc3QKK3N0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGx1Z2luTG9hZENsaWVu
dFBvbGljeT4gV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpwbHVnaW5Mb2FkQ2xpZW50UG9saWN5Rm9y
SG9zdChTdHJpbmdWaWV3IGhvc3QsIGNvbnN0IFdlYkNvcmU6OlBsdWdpbkluZm8mIGluZm8pIGNv
bnN0CiB7Ci0gICAgU3RyaW5nIGhvc3RUb0xvb2tVcCA9IGhvc3Q7CisgICAgU3RyaW5nIGhvc3RU
b0xvb2tVcCA9IGhvc3QudG9TdHJpbmcoKTsKICAgICBTdHJpbmcgaWRlbnRpZmllciA9IGluZm8u
YnVuZGxlSWRlbnRpZmllcjsKIAogICAgIGF1dG8gcG9saWNpZXNCeUlkZW50aWZpZXJJdGVyYXRv
ciA9IG1faG9zdHNUb1BsdWdpbklkZW50aWZpZXJEYXRhLmZpbmQoaG9zdFRvTG9va1VwKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlk
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvV2Vi
UGx1Z2luSW5mb1Byb3ZpZGVyLmgJKHJldmlzaW9uIDIxODAxOCkKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9Q
TFVHSU5fQVBJKQogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeT4gcGx1Z2luTG9hZENsaWVudFBvbGljeUZvckhvc3Qo
Y29uc3QgU3RyaW5nJiwgY29uc3QgV2ViQ29yZTo6UGx1Z2luSW5mbyYpIGNvbnN0OworICAgIHN0
ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeT4gcGx1Z2luTG9hZENs
aWVudFBvbGljeUZvckhvc3QoU3RyaW5nVmlldywgY29uc3QgV2ViQ29yZTo6UGx1Z2luSW5mbyYp
IGNvbnN0OwogICAgIFN0cmluZyBsb25nZXN0TWF0Y2hlZFdpbGRjYXJkSG9zdEZvckhvc3QoY29u
c3QgU3RyaW5nJiBob3N0KSBjb25zdDsKICAgICBib29sIHJlcGxhY2VIb3N0V2l0aE1hdGNoZWRX
aWxkY2FyZEhvc3QoU3RyaW5nJiBob3N0LCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpIGNvbnN0
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
dWdJbkNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuY3BwCShyZXZpc2lvbiAyMTgwMTgpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDEyICs0OCwxMiBAQCB2b2lkIFdlYlBsdWdJbkNsaWVu
dDo6cGFnZURlc3Ryb3llZCgpCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLWJvb2wgV2ViUGx1Z0lu
Q2xpZW50OjpzaG91bGRBdXRvU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdp
biwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiti
b29sIFdlYlBsdWdJbkNsaWVudDo6c2hvdWxkQXV0b1N0YXJ0RnJvbU9yaWdpbihTdHJpbmdWaWV3
IHBhZ2VPcmlnaW4sIFN0cmluZ1ZpZXcgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKQogewogICAgIHJldHVybiBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5zaG91bGRQbHVnSW5B
dXRvU3RhcnRGcm9tT3JpZ2luKG1fd2ViUGFnZSwgcGFnZU9yaWdpbiwgcGx1Z2luT3JpZ2luLCBt
aW1lVHlwZSk7CiB9CiAKLXZvaWQgV2ViUGx1Z0luQ2xpZW50OjpkaWRTdGFydEZyb21PcmlnaW4o
Y29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29u
c3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQg
V2ViUGx1Z0luQ2xpZW50OjpkaWRTdGFydEZyb21PcmlnaW4oU3RyaW5nVmlldyBwYWdlT3JpZ2lu
LCBTdHJpbmdWaWV3IHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29y
ZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
bHVnSW5EaWRTdGFydEZyb21PcmlnaW4ocGFnZU9yaWdpbiwgcGx1Z2luT3JpZ2luLCBtaW1lVHlw
ZSwgc2Vzc2lvbklEKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuaAkocmV2aXNpb24gMjE4
MDE4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVn
SW5DbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViUGx1Z0luQ2xpZW50X2gK
LSNkZWZpbmUgV2ViUGx1Z0luQ2xpZW50X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8V2Vi
Q29yZS9QbHVnSW5DbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgpAQCAt
NDAsMTIgKzM5LDEwIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIHBhZ2VEZXN0cm95
ZWQoKSBvdmVycmlkZTsKLSAgICBib29sIHNob3VsZEF1dG9TdGFydEZyb21PcmlnaW4oY29uc3Qg
U3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRTdGFydEZyb21PcmlnaW4oY29u
c3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6U2Vzc2lvbklEKSBvdmVycmlkZTsKKyAgICBib29s
IHNob3VsZEF1dG9TdGFydEZyb21PcmlnaW4oU3RyaW5nVmlldyBwYWdlT3JpZ2luLCBTdHJpbmdW
aWV3IHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkaWRTdGFydEZyb21PcmlnaW4oU3RyaW5nVmlldyBwYWdlT3JpZ2luLCBTdHJpbmdWaWV3
IHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6U2Vzc2lvbklE
KSBvdmVycmlkZTsKIAogICAgIFdlYlBhZ2UmIG1fd2ViUGFnZTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLyogV2ViUGx1Z0luQ2xpZW50ICovCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyMTgw
MTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUwMTksNyArNTAxOSw3IEBAIHN0YXRpYyBib29sIG5lZWRzSGlkZGVu
Q29udGVudEVkaXRhYmxlUXUKICAgICBpZiAoIW5lZWRzUXVpcmtzKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBTdHJpbmcgaG9zdCA9IHVybC5ob3N0KCk7CisgICAgU3RyaW5nVmlldyBo
b3N0ID0gdXJsLmhvc3QoKTsKICAgICBTdHJpbmcgcGF0aCA9IHVybC5wYXRoKCk7CiAgICAgcmV0
dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGhvc3QsICJkb2NzLmdvb2dsZS5jb20i
KTsKIH0KQEAgLTUwMjksNyArNTAyOSw3IEBAIHN0YXRpYyBib29sIG5lZWRzUGxhaW5UZXh0UXVp
cmsoYm9vbCBuZWUKICAgICBpZiAoIW5lZWRzUXVpcmtzKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBTdHJpbmcgaG9zdCA9IHVybC5ob3N0KCk7CisgICAgU3RyaW5nVmlldyBob3N0ID0g
dXJsLmhvc3QoKTsKIAogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShob3N0
LCAidHdpdHRlci5jb20iKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01NTI0LDggKzU1MjQs
OCBAQCB2b2lkIFdlYlBhZ2U6OmRldGVybWluZVByaW1hcnlTbmFwc2hvdHRlCiAKICAgICBMT0co
UGx1Z2lucywgIlByaW1hcnkgUGx1Zy1JbiBEZXRlY3Rpb246IHN1Y2Nlc3MgLSBmb3VuZCBhIGNh
bmRpZGF0ZSBwbHVnLWluIC0gaW5mb3JtIGl0LiIpOwogICAgIG1fZGlkRmluZFByaW1hcnlTbmFw
c2hvdHRlZFBsdWdpbiA9IHRydWU7Ci0gICAgbV9wcmltYXJ5UGx1Z0luUGFnZU9yaWdpbiA9IG1f
cGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+YmFzZVVSTCgpLmhvc3QoKTsKLSAgICBtX3By
aW1hcnlQbHVnSW5PcmlnaW4gPSBjYW5kaWRhdGVQbHVnSW4tPmxvYWRlZFVybCgpLmhvc3QoKTsK
KyAgICBtX3ByaW1hcnlQbHVnSW5QYWdlT3JpZ2luID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1
bWVudCgpLT5iYXNlVVJMKCkuaG9zdCgpLnRvU3RyaW5nKCk7CisgICAgbV9wcmltYXJ5UGx1Z0lu
T3JpZ2luID0gY2FuZGlkYXRlUGx1Z0luLT5sb2FkZWRVcmwoKS5ob3N0KCkudG9TdHJpbmcoKTsK
ICAgICBtX3ByaW1hcnlQbHVnSW5NaW1lVHlwZSA9IGNhbmRpZGF0ZVBsdWdJbi0+bG9hZGVkTWlt
ZVR5cGUoKTsKIAogICAgIGNhbmRpZGF0ZVBsdWdJbi0+c2V0SXNQcmltYXJ5U25hcHNob3R0ZWRQ
bHVnSW4odHJ1ZSk7CkBAIC01NTM5LDcgKzU1MzksNyBAQCB2b2lkIFdlYlBhZ2U6OnJlc2V0UHJp
bWFyeVNuYXBzaG90dGVkUGx1CiAgICAgbV9oYXNTZWVuUGx1Z2luID0gZmFsc2U7CiB9CiAKLWJv
b2wgV2ViUGFnZTo6bWF0Y2hlc1ByaW1hcnlQbHVnSW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2lu
LCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29u
c3QKK2Jvb2wgV2ViUGFnZTo6bWF0Y2hlc1ByaW1hcnlQbHVnSW4oU3RyaW5nVmlldyBwYWdlT3Jp
Z2luLCBTdHJpbmdWaWV3IHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29u
c3QKIHsKICAgICBpZiAoIW1fZGlkRmluZFByaW1hcnlTbmFwc2hvdHRlZFBsdWdpbikKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCShyZXZpc2lvbiAyMTgwMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC04OTIsNyArODkyLDcgQEAg
cHVibGljOgogICAgIHZvaWQgZGV0ZXJtaW5lUHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luKCk7CiAg
ICAgdm9pZCBkZXRlcm1pbmVQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW5UaW1lckZpcmVkKCk7CiAg
ICAgdm9pZCByZXNldFByaW1hcnlTbmFwc2hvdHRlZFBsdWdJbigpOwotICAgIGJvb2wgbWF0Y2hl
c1ByaW1hcnlQbHVnSW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBs
dWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3Q7CisgICAgYm9vbCBtYXRj
aGVzUHJpbWFyeVBsdWdJbihTdHJpbmdWaWV3IHBhZ2VPcmlnaW4sIFN0cmluZ1ZpZXcgcGx1Z2lu
T3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdDsKICAgICBib29sIHBsdWdJbklu
dGVyc2VjdHNTZWFyY2hSZWN0KFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmIHBsdWdp
bkltYWdlRWxlbWVudCk7CiAgICAgYm9vbCBwbHVnSW5Jc1ByaW1hcnlTaXplKFdlYkNvcmU6OkhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQmIHBsdWdpbkltYWdlRWxlbWVudCwgdW5zaWduZWQgJnBsdWdp
bkFyZWEpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjE4MDE4KQorKysgU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNy0w
Ni0wOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAg
ICAgIFVSTDo6aG9zdCBzaG91bGQgcmV0dXJuIGEgU3RyaW5nVmlldworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczMTkyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJSZXNv
dXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVy
Ojpob3N0Rm9yVVJMKToKKwogMjAxNy0wNi0wOSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW1dpbjY0XSBCdWlsZCBlcnJvciB3aGVuIGNvbXBpbGluZyBQ
YWludEhvb2tzLmFzbS4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViUmVz
b3VyY2VMb2FkU2NoZWR1bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYkNv
cmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAJKHJldmlzaW9uIDIxODAxOCkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsOSArNjUsMTAgQEAgV2ViUmVzb3VyY2VMb2FkU2No
ZWR1bGVyOjpIb3N0SW5mb3JtYXRpbwogICAgICAgICByZXR1cm4gbV9ub25IVFRQUHJvdG9jb2xI
b3N0OwogCiAgICAgbV9ob3N0cy5jaGVja0NvbnNpc3RlbmN5KCk7Ci0gICAgU3RyaW5nIGhvc3RO
YW1lID0gdXJsLmhvc3QoKTsKKyAgICBTdHJpbmcgaG9zdE5hbWUgPSB1cmwuaG9zdCgpLnRvU3Ry
aW5nKCk7CiAgICAgSG9zdEluZm9ybWF0aW9uKiBob3N0ID0gbV9ob3N0cy5nZXQoaG9zdE5hbWUp
OwogICAgIGlmICghaG9zdCAmJiBjcmVhdGVIb3N0UG9saWN5ID09IENyZWF0ZUlmTm90Rm91bmQp
IHsKKyAgICAgICAgLy8gRklYTUU6IFVzZSBhIHNtYXJ0IHBvaW50ZXIuCiAgICAgICAgIGhvc3Qg
PSBuZXcgSG9zdEluZm9ybWF0aW9uKGhvc3ROYW1lLCBtYXhSZXF1ZXN0c0luRmxpZ2h0UGVySG9z
dCk7CiAgICAgICAgIG1faG9zdHMuYWRkKGhvc3ROYW1lLCBob3N0KTsKICAgICB9CkluZGV4OiBU
b29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
MTgwMjYpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBA
QAorMjAxNy0wNi0wOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIFVSTDo6aG9zdCBzaG91bGQgcmV0dXJuIGEgU3RyaW5nVmlldworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczMTkyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvVVJMLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHA6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1VSTCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpjaGVja1JlbGF0aXZlVVJMKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrVVJMRGlm
ZmVyZW5jZXMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2hlY2tSZWxhdGl2ZVVSTERpZmZl
cmVuY2VzKToKKwogMjAxNy0wNi0wOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KIAogICAgICAgICBbaU9TIERuRF0gQWRkIGEgaG9vayB0byBwZXJmb3JtIHR3by1zdGVw
IGRyb3BzIGluIGVkaXRhYmxlIGNvbnRlbnQKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9VUkwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9VUkwuY3BwCShyZXZpc2lvbiAyMTgwMTgpCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvVVJMLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBA
QCBURVNUX0YoVVJMVGVzdCwgVVJMQ29uc3RydWN0b3JDb25zdENoYXIpCiAgICAgRVhQRUNUX1RS
VUUoa3VybC5pc1ZhbGlkKCkpOwogCiAgICAgRVhQRUNUX0VRKGt1cmwucHJvdG9jb2woKSA9PSAi
aHR0cCIsIHRydWUpOwotICAgIEVYUEVDVF9FUShTdHJpbmcoInd3dy5leGFtcGxlLmNvbSIpLCBr
dXJsLmhvc3QoKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygid3d3LmV4YW1wbGUuY29tIiksIGt1
cmwuaG9zdCgpLnRvU3RyaW5nKCkpOwogICAgIEVYUEVDVF9UUlVFKCEha3VybC5wb3J0KCkpOwog
ICAgIEVYUEVDVF9FUSg4MDgwLCBrdXJsLnBvcnQoKS52YWx1ZSgpKTsKICAgICBFWFBFQ1RfRVEo
U3RyaW5nKCJ1c2VybmFtZSIpLCBrdXJsLnVzZXIoKSk7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcAkocmV2aXNpb24gMjE4MDE4KQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNCArMSw0IEBACi3vu78vKgorLyoKICAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC05
Myw3ICs5Myw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3QKICAg
ICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wcm90b2NvbCwgdXJsLnByb3RvY29sKCkudG9TdHJpbmco
KSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBF
WFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOwotICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzLmhvc3QsIHVybC5ob3N0KCkpKTsKKyAgICBFWFBFQ1RfVFJVRShlcShwYXJ0
cy5ob3N0LCB1cmwuaG9zdCgpLnRvU3RyaW5nKCkpKTsKICAgICBFWFBFQ1RfRVEocGFydHMucG9y
dCwgdXJsLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGF0
aCwgdXJsLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnF1ZXJ5LCB1cmwucXVl
cnkoKSkpOwpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrUmVsYXRpdmVVUkwo
Y29uc3QgU3RyaW4KICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wcm90b2NvbCwgdXJsLnByb3Rv
Y29sKCkudG9TdHJpbmcoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIHVybC51
c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3MoKSkp
OwotICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIHVybC5ob3N0KCkpKTsKKyAgICBFWFBF
Q1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1cmwuaG9zdCgpLnRvU3RyaW5nKCkpKTsKICAgICBFWFBF
Q1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RS
VUUoZXEocGFydHMucGF0aCwgdXJsLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRz
LnF1ZXJ5LCB1cmwucXVlcnkoKSkpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIHN0YXRpYyB2b2lkIGNo
ZWNrVVJMRGlmZmVyZW5jZXMoY29uc3QgU3QKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5w
cm90b2NvbCwgdXJsLnByb3RvY29sKCkudG9TdHJpbmcoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzTmV3LnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05l
dy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOwotICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3Lmhv
c3QsIHVybC5ob3N0KCkpKTsKKyAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5ob3N0LCB1cmwu
aG9zdCgpLnRvU3RyaW5nKCkpKTsKICAgICBFWFBFQ1RfRVEocGFydHNOZXcucG9ydCwgdXJsLnBv
cnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGF0aCwgdXJs
LnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnF1ZXJ5LCB1cmwucXVlcnko
KSkpOwpAQCAtMTc4LDcgKzE3OCw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrUmVsYXRpdmVVUkxEaWZm
ZXJlbmNlcygKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wcm90b2NvbCwgdXJsLnByb3Rv
Y29sKCkudG9TdHJpbmcoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnVzZXIsIHVy
bC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wYXNzd29yZCwgdXJsLnBh
c3MoKSkpOwotICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3Lmhvc3QsIHVybC5ob3N0KCkpKTsK
KyAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5ob3N0LCB1cmwuaG9zdCgpLnRvU3RyaW5nKCkp
KTsKICAgICBFWFBFQ1RfRVEocGFydHNOZXcucG9ydCwgdXJsLnBvcnQoKS52YWx1ZV9vcigwKSk7
CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGF0aCwgdXJsLnBhdGgoKSkpOwogICAgIEVY
UEVDVF9UUlVFKGVxKHBhcnRzTmV3LnF1ZXJ5LCB1cmwucXVlcnkoKSkpOwpAQCAtMjE2LDcgKzIx
Niw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3QKICAgICBFWFBF
Q1RfVFJVRShlcShwYXJ0cy5wcm90b2NvbCwgdXJsLnByb3RvY29sKCkudG9TdHJpbmcoKSkpOwog
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOwotICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzLmhvc3QsIHVybC5ob3N0KCkpKTsKKyAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0
LCB1cmwuaG9zdCgpLnRvU3RyaW5nKCkpKTsKICAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJs
LnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGF0aCwgdXJs
LnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnF1ZXJ5LCB1cmwucXVlcnkoKSkp
OwpAQCAtMjQyLDcgKzI0Miw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYg
dXJsU3QKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wcm90b2NvbCwgdXJsLnByb3RvY29sKCku
dG9TdHJpbmcoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIHVybC51c2VyKCkp
KTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOwotICAg
IEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIHVybC5ob3N0KCkpKTsKKyAgICBFWFBFQ1RfVFJV
RShlcShwYXJ0cy5ob3N0LCB1cmwuaG9zdCgpLnRvU3RyaW5nKCkpKTsKICAgICBFWFBFQ1RfRVEo
cGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEo
cGFydHMucGF0aCwgdXJsLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnF1ZXJ5
LCB1cmwucXVlcnkoKSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312511</attachid>
            <date>2017-06-09 16:49:52 -0700</date>
            <delta_ts>2017-06-09 17:05:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173192-20170609165044.patch</filename>
            <type>text/plain</type>
            <size>50951</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxODAxOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDE3LTA2LTA5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVVJMOjpob3N0
IHNob3VsZCByZXR1cm4gYSBTdHJpbmdWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMxOTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuICBKdXN0IGZld2VyIGNv
cGllcyBhbmQgYWxsb2NhdGlvbnMuCisKKyAgICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvWW91VHVi
ZVBsdWdpblJlcGxhY2VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzWW91VHViZVVSTCk6
CisgICAgICAgIChXZWJDb3JlOjpwcm9jZXNzQW5kQ3JlYXRlWW91VHViZVVSTCk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpob3N0TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6
Omhvc3QpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb246
OnBvcHVsYXRlQ29uZGl0aW9uQ2FjaGVJZk5lZWRlZCk6CisgICAgICAgICogZG9tL0RPTUltcGxl
bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uOjpjcmVh
dGVEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAg
ICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllckRvY3VtZW50SG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpu
ZWVkc1NlZWtpbmdTdXBwb3J0UXVpcmspOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdl
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojpy
ZXN0YXJ0U2ltaWxhclBsdWdJbnMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6dXNlckRpZENsaWNrU25hcHNob3QpOgorICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50OjpmaW5pc2hlZFBhcnNp
bmcpOgorICAgICAgICAqIGh0bWwvVVJMVXRpbHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlVSTFV0
aWxzPFQ+Ojpob3N0bmFtZSk6CisgICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGlua0xvYWRlcjo6bG9hZExpbmspOgorICAgICAgICAqIGxvYWRlci9S
ZXNvdXJjZUxvYWRPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6cHJpbWFyeURvbWFpbik6CisgICAgICAgICogbG9hZGVyL21hYy9Mb2FkZXJOU1VS
TEV4dHJhcy5tbToKKyAgICAgICAgKHN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKToKKyAg
ICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6Om1vdXNl
RGlkTW92ZU92ZXJFbGVtZW50KToKKyAgICAgICAgKiBwYWdlL0xvY2F0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpob3N0bmFtZSk6CisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Om1haW5GcmFtZUxvYWRTdGFydGVkKToKKyAgICAg
ICAgKiBwYWdlL1BlcmZvcm1hbmNlTW9uaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXBv
cnRQYWdlT3ZlclBvc3RMb2FkUmVzb3VyY2VUaHJlc2hvbGQpOgorICAgICAgICAqIHBhZ2UvUGx1
Z0luQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAqIHBh
Z2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJDb250
ZW50VVJMUGF0dGVybjo6bWF0Y2hlc0hvc3QpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2U6Omhvc3RNYXRjaGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9VUkwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpob3N0KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6
aG9zdEFuZFBvcnQpOgorICAgICAgICAqIHBsYXRmb3JtL1VSTC5oOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpzaWduZWRQ
dWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0
UGFydGl0aW9uaW5nRG9tYWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJl
YW1IYW5kbGVJbXBsOjpjcmVhdGVTdHJlYW1zKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckxv
Y2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckxvY2F0aW9uOjpob3N0bmFtZSk6
CisKIDIwMTctMDYtMDkgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAg
ICAgTWVkaWEgZWxlbWVudHMgYXJlIGFsbG93ZWQgdG8gY29udGludWUgdG8gbG9hZCBtZWRpYSBk
YXRhIGFmdGVyIG5hdmlnYXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lu
cy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCShyZXZpc2lv
biAyMTgwMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdp
blJlcGxhY2VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDcgKzE4MSw3IEBAIHN0YXRp
YyBib29sIGhhc0Nhc2VJbnNlbnNpdGl2ZVByZWZpeChjb24KICAgICAKIHN0YXRpYyBib29sIGlz
WW91VHViZVVSTChjb25zdCBVUkwmIHVybCkKIHsKLSAgICBTdHJpbmcgaG9zdE5hbWUgPSB1cmwu
aG9zdCgpOworICAgIFN0cmluZ1ZpZXcgaG9zdE5hbWUgPSB1cmwuaG9zdCgpOwogICAgIHJldHVy
biBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShob3N0TmFtZSwgIm0ueW91dHViZS5jb20i
KQogICAgICAgICB8fCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShob3N0TmFtZSwgInlv
dXR1LmJlIikKICAgICAgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaG9zdE5h
bWUsICJ3d3cueW91dHViZS5jb20iKQpAQCAtMjA4LDcgKzIwOCw3IEBAIHN0YXRpYyBVUkwgcHJv
Y2Vzc0FuZENyZWF0ZVlvdVR1YmVVUkwoY28KICAgICBpZiAoIWlzWW91VHViZVVSTCh1cmwpKQog
ICAgICAgICByZXR1cm4gVVJMKCk7CiAKLSAgICBTdHJpbmcgaG9zdE5hbWUgPSB1cmwuaG9zdCgp
OworICAgIFN0cmluZ1ZpZXcgaG9zdE5hbWUgPSB1cmwuaG9zdCgpOwogICAgIGJvb2wgaXNZb3VU
dWJlTW9iaWxlV2ViQXBwVVJMID0gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaG9zdE5h
bWUsICJtLnlvdXR1YmUuY29tIik7CiAgICAgaXNZb3VUdWJlU2hvcnRlbmVkVVJMID0gZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaG9zdE5hbWUsICJ5b3V0dS5iZSIpOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlLmNwcAkocmV2aXNpb24gMjE4MDE4KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgz
LDcgKzgzLDcgQEAgc3RhdGljIFN0cmluZyBob3N0TmFtZShjb25zdCBVUkwmIHVybCwgYgogewog
ICAgIEFTU0VSVCh1cmwucHJvdG9jb2xJcygid3NzIikgPT0gc2VjdXJlKTsKICAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVpbGRlci5hcHBlbmQodXJsLmhvc3QoKS5jb252ZXJ0VG9B
U0NJSUxvd2VyY2FzZSgpKTsKKyAgICBidWlsZGVyLmFwcGVuZCh1cmwuaG9zdCgpLnRvU3RyaW5n
KCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSk7CiAgICAgaWYgKHVybC5wb3J0KCkgJiYgKCgh
c2VjdXJlICYmIHVybC5wb3J0KCkudmFsdWUoKSAhPSA4MCkgfHwgKHNlY3VyZSAmJiB1cmwucG9y
dCgpLnZhbHVlKCkgIT0gNDQzKSkpIHsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKICAg
ICAgICAgYnVpbGRlci5hcHBlbmROdW1iZXIodXJsLnBvcnQoKS52YWx1ZSgpKTsKQEAgLTE0OSw3
ICsxNDksNyBAQCB2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6c2V0VVJMKGNvbnN0IFVSCiAvLyBG
SVhNRTogUmV0dXJuIHR5cGUgc2hvdWxkIGp1c3QgYmUgU3RyaW5nLCBub3QgY29uc3QgU3RyaW5n
LgogY29uc3QgU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZTo6aG9zdCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fdXJsLmhvc3QoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOworICAgIHJldHVy
biBtX3VybC5ob3N0KCkudG9TdHJpbmcoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogfQog
CiBjb25zdCBTdHJpbmcmIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xpZW50UHJvdG9jb2woKSBjb25z
dApJbmRleDogU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbi5jcHAJKHJldmlzaW9uIDIxODAxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nv
bnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjEsNyArMTIxLDcgQEAgdm9pZCBDb250ZW50RXh0ZW5zaW9uOjpwb3B1bGF0ZUNvbmRpdGlvbgog
ICAgIGlmIChtX2NhY2hlZFRvcFVSTCAhPSB0b3BVUkwpIHsKICAgICAgICAgREZBQnl0ZWNvZGVJ
bnRlcnByZXRlciBpbnRlcnByZXRlcihtX2NvbXBpbGVkRXh0ZW5zaW9uLT50b3BVUkxGaWx0ZXJz
Qnl0ZWNvZGUoKSwgbV9jb21waWxlZEV4dGVuc2lvbi0+dG9wVVJMRmlsdGVyc0J5dGVjb2RlTGVu
Z3RoKCkpOwogICAgICAgICBjb25zdCB1aW50MTZfdCBhbGxMb2FkVHlwZXNBbmRSZXNvdXJjZVR5
cGVzID0gTG9hZFR5cGVNYXNrIHwgUmVzb3VyY2VUeXBlTWFzazsKLSAgICAgICAgU3RyaW5nIHN0
cmluZyA9IG1fY29tcGlsZWRFeHRlbnNpb24tPmNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbigp
ID8gdG9wVVJMLmhvc3QoKSA6IHRvcFVSTC5zdHJpbmcoKTsKKyAgICAgICAgU3RyaW5nIHN0cmlu
ZyA9IG1fY29tcGlsZWRFeHRlbnNpb24tPmNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbigpID8g
dG9wVVJMLmhvc3QoKS50b1N0cmluZygpIDogdG9wVVJMLnN0cmluZygpOwogICAgICAgICBhdXRv
IHRvcFVSTEFjdGlvbnMgPSBpbnRlcnByZXRlci5pbnRlcnByZXQoc3RyaW5nLnV0ZjgoKSwgYWxs
TG9hZFR5cGVzQW5kUmVzb3VyY2VUeXBlcyk7CiAgICAgICAgIAogICAgICAgICBtX2NhY2hlZFRv
cFVSTEFjdGlvbnMuY2xlYXIoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1l
bnRhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVu
dGF0aW9uLmNwcAkocmV2aXNpb24gMjE4MDE4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RPTUlt
cGxlbWVudGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkzLDcgKzE5Myw3IEBAIFJlZjxE
b2N1bWVudD4gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZUQKICNpZiBFTkFCTEUoVklERU8pCiAg
ICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZSB0eXBlIGNhbiBiZSBwbGF5ZWQgYnkgb3VyIE1lZGlh
UGxheWVyLCBpZiBzbyBjcmVhdGUgYSBNZWRpYURvY3VtZW50CiAgICAgLy8gS2V5IHN5c3RlbSBp
cyBub3QgYXBwbGljYWJsZSBoZXJlLgotICAgIERPTUltcGxlbWVudGF0aW9uU3VwcG9ydHNUeXBl
Q2xpZW50IGNsaWVudChmcmFtZSAmJiBmcmFtZS0+c2V0dGluZ3MoKS5uZWVkc1NpdGVTcGVjaWZp
Y1F1aXJrcygpLCB1cmwuaG9zdCgpKTsKKyAgICBET01JbXBsZW1lbnRhdGlvblN1cHBvcnRzVHlw
ZUNsaWVudCBjbGllbnQoZnJhbWUgJiYgZnJhbWUtPnNldHRpbmdzKCkubmVlZHNTaXRlU3BlY2lm
aWNRdWlya3MoKSwgdXJsLmhvc3QoKS50b1N0cmluZygpKTsKICAgICBNZWRpYUVuZ2luZVN1cHBv
cnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CiAgICAgcGFyYW1ldGVycy50eXBlID0gQ29udGVudFR5
cGUodHlwZSk7CiAgICAgcGFyYW1ldGVycy51cmwgPSB1cmw7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxBbmNob3JFbGVtZW50LmNwcAkocmV2aXNpb24gMjE4MDE4KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIz
OSw3ICsyMzksNyBAQCB2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjCiAg
ICAgICAgICAgICBTdHJpbmcgcGFyc2VkVVJMID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1M
U3BhY2VzKHZhbHVlKTsKICAgICAgICAgICAgIGlmIChkb2N1bWVudCgpLmlzRE5TUHJlZmV0Y2hF
bmFibGVkKCkgJiYgZG9jdW1lbnQoKS5mcmFtZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHBy
b3RvY29sSXNJbkhUVFBGYW1pbHkocGFyc2VkVVJMKSB8fCBwYXJzZWRVUkwuc3RhcnRzV2l0aCgi
Ly8iKSkKLSAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIoKS5j
bGllbnQoKS5wcmVmZXRjaEROUyhkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHBhcnNlZFVSTCkuaG9z
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIoKS5j
bGllbnQoKS5wcmVmZXRjaEROUyhkb2N1bWVudCgpLmNvbXBsZXRlVVJMKHBhcnNlZFVSTCkuaG9z
dCgpLnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGludmFs
aWRhdGVDYWNoZWRWaXNpdGVkTGlua0hhc2goKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMjE4MDE4KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQ2MCw3ICs2NDYw
LDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllck5lZWRzUwogCiBTdHJpbmcg
SFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJEb2N1bWVudEhvc3QoKSBjb25zdAogewotICAg
IHJldHVybiBkb2N1bWVudCgpLnVybCgpLmhvc3QoKTsKKyAgICByZXR1cm4gZG9jdW1lbnQoKS51
cmwoKS5ob3N0KCkudG9TdHJpbmcoKTsKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRp
YVBsYXllckVudGVyRnVsbHNjcmVlbigpCkBAIC03MTA5LDcgKzcxMDksNyBAQCBzdGF0aWMgYm9v
bCBuZWVkc1NlZWtpbmdTdXBwb3J0UXVpcmsoRG9jCiAgICAgaWYgKCFkb2N1bWVudC5zZXR0aW5n
cygpLm5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIAotICAgIFN0cmluZyBob3N0ID0gZG9jdW1lbnQudG9wRG9jdW1lbnQoKS51cmwo
KS5ob3N0KCk7CisgICAgU3RyaW5nVmlldyBob3N0ID0gZG9jdW1lbnQudG9wRG9jdW1lbnQoKS51
cmwoKS5ob3N0KCk7CiAgICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGhv
c3QsICJuZXRmbGl4LmNvbSIpIHx8IGhvc3QuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLm5l
dGZsaXguY29tIik7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1
Z0luSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMjE4MDE4KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEwLDcg
KzQxMCw3IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6cmVzdGFydFNpbWkKICAgICAv
LyBSZXN0YXJ0IGFueSBvdGhlciBzbmFwc2hvdHRlZCBwbHVnaW5zIGluIHRoZSBwYWdlIHdpdGgg
dGhlIHNhbWUgb3JpZ2luLiBOb3RlIHRoYXQgdGhleQogICAgIC8vIG1heSBiZSBpbiBkaWZmZXJl
bnQgZnJhbWVzLCBzbyB0cmF2ZXJzZSBmcm9tIHRoZSB0b3Agb2YgdGhlIGRvY3VtZW50LgogCi0g
ICAgU3RyaW5nIHBsdWdJbk9yaWdpbiA9IG1fbG9hZGVkVXJsLmhvc3QoKTsKKyAgICBTdHJpbmdW
aWV3IHBsdWdJbk9yaWdpbiA9IG1fbG9hZGVkVXJsLmhvc3QoKTsKICAgICBTdHJpbmcgbWltZVR5
cGUgPSBsb2FkZWRNaW1lVHlwZSgpOwogICAgIFZlY3RvcjxSZWY8SFRNTFBsdWdJbkltYWdlRWxl
bWVudD4+IHNpbWlsYXJQbHVnaW5zOwogCkBAIC00NDQsNyArNDQ0LDcgQEAgdm9pZCBIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50Ojp1c2VyRGlkQ2xpYwogICAgIGlmIChmb3J3YXJkRXZlbnQpCiAgICAg
ICAgIG1fcGVuZGluZ0NsaWNrRXZlbnRGcm9tU25hcHNob3QgPSAmZXZlbnQ7CiAKLSAgICBTdHJp
bmcgcGx1Z0luT3JpZ2luID0gbV9sb2FkZWRVcmwuaG9zdCgpOworICAgIFN0cmluZ1ZpZXcgcGx1
Z0luT3JpZ2luID0gbV9sb2FkZWRVcmwuaG9zdCgpOwogICAgIGlmIChkb2N1bWVudCgpLnBhZ2Uo
KSAmJiAhU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbChkb2N1bWVu
dCgpLnBhZ2UoKS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+YmFzZVVSTCgpLnByb3RvY29sKCku
dG9TdHJpbmdXaXRob3V0Q29weWluZygpKSAmJiBkb2N1bWVudCgpLnBhZ2UoKS0+c2V0dGluZ3Mo
KS5hdXRvc3RhcnRPcmlnaW5QbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKCkpCiAgICAgICAgIGRv
Y3VtZW50KCkucGFnZSgpLT5wbHVnSW5DbGllbnQoKS0+ZGlkU3RhcnRGcm9tT3JpZ2luKGRvY3Vt
ZW50KCkucGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT5iYXNlVVJMKCkuaG9zdCgpLCBw
bHVnSW5PcmlnaW4sIGxvYWRlZE1pbWVUeXBlKCksIGRvY3VtZW50KCkucGFnZSgpLT5zZXNzaW9u
SUQoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAkocmV2aXNp
b24gMjE4MDE4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6ZmluaXNo
ZWRQYXJzaW5nKCkKICAgICAgICAgICAgIC8vIGJhY2sgb24gdGhlIGhvc3RuYW1lIGlmIHRoZXJl
IGlzIG5vIHBhdGguCiAgICAgICAgICAgICBTdHJpbmcgbmFtZSA9IGRlY29kZVVSTEVzY2FwZVNl
cXVlbmNlcyh1cmwoKS5sYXN0UGF0aENvbXBvbmVudCgpKTsKICAgICAgICAgICAgIGlmIChuYW1l
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBuYW1lID0gdXJsKCkuaG9zdCgpOworICAgICAg
ICAgICAgICAgIG5hbWUgPSB1cmwoKS5ob3N0KCkudG9TdHJpbmcoKTsKICAgICAgICAgICAgIHNl
dFRpdGxlKGltYWdlVGl0bGUobmFtZSwgc2l6ZSkpOwogICAgICAgICB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL1VSTFV0aWxzLmgJKHJldmlzaW9uIDIxODAxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
VVJMVXRpbHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgVVJMVXRp
bHM8VD46OnNldEhvc3QoY29uc3QgU3RyaW5nJiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogU3Ry
aW5nIFVSTFV0aWxzPFQ+Ojpob3N0bmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhyZWYoKS5o
b3N0KCk7CisgICAgcmV0dXJuIGhyZWYoKS5ob3N0KCkudG9TdHJpbmcoKTsKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCShy
ZXZpc2lvbiAyMTgwMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI0Nyw3ICsyNDcsNyBAQCBib29sIExpbmtMb2FkZXI6OmxvYWRM
aW5rKGNvbnN0IExpbmtSZWxBCiAgICAgICAgIC8vIEZJWE1FOiBUaGUgaHJlZiBhdHRyaWJ1dGUg
b2YgdGhlIGxpbmsgZWxlbWVudCBjYW4gYmUgaW4gIi8vaG9zdG5hbWUiIGZvcm0sIGFuZCB3ZSBz
aG91bGRuJ3QgYXR0ZW1wdAogICAgICAgICAvLyB0byBjb21wbGV0ZSB0aGF0IGFzIFVSTCA8aHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ4ODU3Pi4KICAgICAgICAgaWYg
KGRvY3VtZW50LnNldHRpbmdzKCkuZG5zUHJlZmV0Y2hpbmdFbmFibGVkKCkgJiYgaHJlZi5pc1Zh
bGlkKCkgJiYgIWhyZWYuaXNFbXB0eSgpICYmIGRvY3VtZW50LmZyYW1lKCkpCi0gICAgICAgICAg
ICBkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5wcmVmZXRjaEROUyhocmVmLmhv
c3QoKSk7CisgICAgICAgICAgICBkb2N1bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5w
cmVmZXRjaEROUyhocmVmLmhvc3QoKS50b1N0cmluZygpKTsKICAgICB9CiAKICAgICBpZiAobV9j
bGllbnQuc2hvdWxkTG9hZExpbmsoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jl
c291cmNlTG9hZE9ic2VydmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCShyZXZpc2lvbiAyMTgwMTgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01ODYsNyArNTg2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRPYnNlcnZlcjo6ZmlyZVNob3VsZFBh
cgogCiBTdHJpbmcgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnByaW1hcnlEb21haW4oY29uc3QgVVJM
JiB1cmwpCiB7Ci0gICAgcmV0dXJuIHByaW1hcnlEb21haW4odXJsLmhvc3QoKSk7CisgICAgcmV0
dXJuIHByaW1hcnlEb21haW4odXJsLmhvc3QoKS50b1N0cmluZygpKTsKIH0KIAogU3RyaW5nIFJl
c291cmNlTG9hZE9ic2VydmVyOjpwcmltYXJ5RG9tYWluKGNvbnN0IFN0cmluZyYgaG9zdCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Mb2FkZXJOU1VSTEV4dHJhcy5tbQko
cmV2aXNpb24gMjE4MDE4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Mb2FkZXJOU1VS
TEV4dHJhcy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDksNyArNDksNyBAQCBOU1N0cmluZyAqc3Vn
Z2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5cGUoCiAKICAgICBpZiAoW2ZpbGVuYW1lIGxlbmd0aF0g
PT0gMCB8fCBbbGFzdFBhdGhDb21wb25lbnQgaXNFcXVhbFRvU3RyaW5nOkAiLyJdKSB7CiAgICAg
ICAgIC8vIGxhc3RQYXRoQ29tcG9uZW50IGlzIG5vIGdvb2QsIHRyeSB0aGUgaG9zdC4KLSAgICAg
ICAgTlNTdHJpbmcgKmhvc3QgPSBVUkwodXJsKS5ob3N0KCk7CisgICAgICAgIE5TU3RyaW5nICpo
b3N0ID0gVVJMKHVybCkuaG9zdCgpLnRvU3RyaW5nKCk7CiAgICAgICAgIGZpbGVuYW1lID0gZmls
ZW5hbWVCeUZpeGluZ0lsbGVnYWxDaGFyYWN0ZXJzKGhvc3QpOwogICAgICAgICBpZiAoW2ZpbGVu
YW1lIGxlbmd0aF0gPT0gMCkgewogICAgICAgICAgICAgLy8gQ2FuJ3QgbWFrZSBhIGZpbGVuYW1l
IHVzaW5nIHRoaXMgVVJMLCB1c2UgInVua25vd24iLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9DaHJvbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNw
cAkocmV2aXNpb24gMjE4MDE4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMzUsNyArMzM1LDcgQEAgdm9pZCBDaHJvbWU6OnNldFN0YXR1c2Jh
clRleHQoRnJhbWUmIGZyYQogdm9pZCBDaHJvbWU6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNv
bnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgdW5zaWduZWQgbW9kaWZpZXJGbGFncykKIHsKICAg
ICBpZiAocmVzdWx0LmlubmVyTm9kZSgpICYmIHJlc3VsdC5pbm5lck5vZGUoKS0+ZG9jdW1lbnQo
KS5pc0ROU1ByZWZldGNoRW5hYmxlZCgpKQotICAgICAgICBtX3BhZ2UubWFpbkZyYW1lKCkubG9h
ZGVyKCkuY2xpZW50KCkucHJlZmV0Y2hETlMocmVzdWx0LmFic29sdXRlTGlua1VSTCgpLmhvc3Qo
KSk7CisgICAgICAgIG1fcGFnZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5jbGllbnQoKS5wcmVmZXRj
aEROUyhyZXN1bHQuYWJzb2x1dGVMaW5rVVJMKCkuaG9zdCgpLnRvU3RyaW5nKCkpOwogICAgIG1f
Y2xpZW50Lm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KHJlc3VsdCwgbW9kaWZpZXJGbGFncyk7CiAK
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KG1f
cGFnZSwgcmVzdWx0LCBtb2RpZmllckZsYWdzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
TG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24u
Y3BwCShyZXZpc2lvbiAyMTgwMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTQsNyArOTQsNyBAQCBTdHJpbmcgTG9jYXRpb246Omhvc3Ru
YW1lKCkgY29uc3QKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
IAotICAgIHJldHVybiB1cmwoKS5ob3N0KCk7CisgICAgcmV0dXJuIHVybCgpLmhvc3QoKS50b1N0
cmluZygpOwogfQogCiBTdHJpbmcgTG9jYXRpb246OnBvcnQoKSBjb25zdApJbmRleDogU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCShyZXZpc2lvbiAyMTgwMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTE2LDcgKzIxMTYsNyBAQCB2b2lkIFBhZ2U6Om1haW5G
cmFtZUxvYWRTdGFydGVkKGNvbnN0IFVSCiB7CiAgICAgU3RyaW5nIGRvbWFpbjsKICNpZiBFTkFC
TEUoUFVCTElDX1NVRkZJWF9MSVNUKQotICAgIGRvbWFpbiA9IHRvcFByaXZhdGVseUNvbnRyb2xs
ZWREb21haW4oZGVzdGluYXRpb25VUkwuaG9zdCgpKTsKKyAgICBkb21haW4gPSB0b3BQcml2YXRl
bHlDb250cm9sbGVkRG9tYWluKGRlc3RpbmF0aW9uVVJMLmhvc3QoKS50b1N0cmluZygpKTsKICNl
bHNlCiAgICAgVU5VU0VEX1BBUkFNKGRlc3RpbmF0aW9uVVJMKTsKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNb25pdG9yLmNwcAkocmV2aXNpb24gMjE4MDE4
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1vbml0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDgsNyArMTQ4LDcgQEAgc3RhdGljIHZvaWQgcmVwb3J0UGFnZU92ZXJQb3N0
TG9hZFJlc291cgogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0
cmluZyBkb21haW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKGRvY3VtZW50LT51cmwo
KS5ob3N0KCkpOworICAgIFN0cmluZyBkb21haW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9t
YWluKGRvY3VtZW50LT51cmwoKS5ob3N0KCkudG9TdHJpbmcoKSk7CiAgICAgaWYgKGRvbWFpbi5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Q
bHVnSW5DbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdJbkNs
aWVudC5oCShyZXZpc2lvbiAyMTgwMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdJbkNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMyw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFBsdWdJbkNsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhZ2VE
ZXN0cm95ZWQoKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZEF1dG9TdGFydEZyb21Pcmln
aW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydEZy
b21PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9y
aWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgU2Vzc2lvbklEKSA9IDA7CisgICAgdmlydHVh
bCBib29sIHNob3VsZEF1dG9TdGFydEZyb21PcmlnaW4oU3RyaW5nVmlldyBwYWdlT3JpZ2luLCBT
dHJpbmdWaWV3IHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkaWRTdGFydEZyb21PcmlnaW4oU3RyaW5nVmlldyBwYWdlT3JpZ2luLCBT
dHJpbmdWaWV3IHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgU2Vzc2lvbklE
KSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5QbHVnSW5DbGllbnQoKSB7IH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCShyZXZpc2lvbiAyMTgwMTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTAxLDcgKzEwMSw3IEBAIHN0YXRpYyBib29sIHNob3VsZFRyZWF0QXNVbmlxdWVPcmln
aW4oY28KIAogU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0IFVSTCYgdXJsKQog
ICAgIDogbV9wcm90b2NvbCh1cmwucHJvdG9jb2woKS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkg
OiB1cmwucHJvdG9jb2woKS50b1N0cmluZygpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpCi0g
ICAgLCBtX2hvc3QodXJsLmhvc3QoKS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiB1cmwuaG9z
dCgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkpCisgICAgLCBtX2hvc3QodXJsLmhvc3QoKS5p
c051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiB1cmwuaG9zdCgpLnRvU3RyaW5nKCkuY29udmVydFRv
QVNDSUlMb3dlcmNhc2UoKSkKICAgICAsIG1fcG9ydCh1cmwucG9ydCgpKQogewogICAgIC8vIGRv
Y3VtZW50LmRvbWFpbiBzdGFydHMgYXMgbV9ob3N0LCBidXQgY2FuIGJlIHNldCBieSB0aGUgRE9N
LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNw
cAkocmV2aXNpb24gMjE4MDE4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVS
TFBhdHRlcm4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNyArMTI1LDcgQEAgYm9vbCBVc2Vy
Q29udGVudFVSTFBhdHRlcm46Om1hdGNoZXMoY29ucwogCiBib29sIFVzZXJDb250ZW50VVJMUGF0
dGVybjo6bWF0Y2hlc0hvc3QoY29uc3QgVVJMJiB0ZXN0KSBjb25zdAogewotICAgIGNvbnN0IFN0
cmluZyYgaG9zdCA9IHRlc3QuaG9zdCgpOworICAgIFN0cmluZ1ZpZXcgaG9zdCA9IHRlc3QuaG9z
dCgpOwogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGhvc3QsIG1faG9zdCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCkBAIC0xMzgsNyArMTM4LDcgQEAgYm9vbCBVc2VyQ29udGVudFVS
TFBhdHRlcm46Om1hdGNoZXNIb3N0KAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIENo
ZWNrIGlmIHRoZSBkb21haW4gaXMgYSBzdWJkb21haW4gb2Ygb3VyIGhvc3QuCi0gICAgaWYgKCFo
b3N0LmVuZHNXaXRoKG1faG9zdCwgZmFsc2UpKQorICAgIGlmICghaG9zdC50b1N0cmluZygpLmVu
ZHNXaXRoKG1faG9zdCwgZmFsc2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBBU1NF
UlQoaG9zdC5sZW5ndGgoKSA+IG1faG9zdC5sZW5ndGgoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHAJ
KHJldmlzaW9uIDIxODAxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1
cml0eVBvbGljeVNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDEwICs2MywxMCBAQCBi
b29sIENvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZTo6c2NoZW1lCiAKIGJvb2wgQ29udGVudFNl
Y3VyaXR5UG9saWN5U291cmNlOjpob3N0TWF0Y2hlcyhjb25zdCBVUkwmIHVybCkgY29uc3QKIHsK
LSAgICBjb25zdCBTdHJpbmcmIGhvc3QgPSB1cmwuaG9zdCgpOworICAgIFN0cmluZ1ZpZXcgaG9z
dCA9IHVybC5ob3N0KCk7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoaG9zdCwgbV9o
b3N0KSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIG1faG9zdEhhc1dpbGRjYXJk
ICYmIGhvc3QuZW5kc1dpdGgoIi4iICsgbV9ob3N0LCBmYWxzZSk7CisgICAgcmV0dXJuIG1faG9z
dEhhc1dpbGRjYXJkICYmIGhvc3QudG9TdHJpbmcoKS5lbmRzV2l0aCgiLiIgKyBtX2hvc3QsIGZh
bHNlKTsKIAogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAJKHJldmlzaW9uIDIxODAx
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQyNCwxMCArNDI0LDEwIEBAIFN0cmluZ1ZpZXcgVVJMOjpwcm90b2NvbCgpIGNvbnN0CiAgICAg
cmV0dXJuIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZygwLCBtX3NjaGVtZUVuZCk7CiB9
CiAKLVN0cmluZyBVUkw6Omhvc3QoKSBjb25zdAorU3RyaW5nVmlldyBVUkw6Omhvc3QoKSBjb25z
dAogewogICAgIHVuc2lnbmVkIHN0YXJ0ID0gaG9zdFN0YXJ0KCk7Ci0gICAgcmV0dXJuIG1fc3Ry
aW5nLnN1YnN0cmluZyhzdGFydCwgbV9ob3N0RW5kIC0gc3RhcnQpOworICAgIHJldHVybiBTdHJp
bmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoc3RhcnQsIG1faG9zdEVuZCAtIHN0YXJ0KTsKIH0K
IAogc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gVVJMOjpwb3J0KCkgY29uc3QKQEAgLTQ0OCw5ICs0
NDgsOCBAQCBzdGQ6Om9wdGlvbmFsPHVpbnQxNl90PiBVUkw6OnBvcnQoKSBjb25zCiAKIFN0cmlu
ZyBVUkw6Omhvc3RBbmRQb3J0KCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byBwb3J0ID0gdGhpcy0+
cG9ydCgpKQotICAgICAgICByZXR1cm4gaG9zdCgpICsgJzonICsgU3RyaW5nOjpudW1iZXIocG9y
dC52YWx1ZSgpKTsKLSAgICByZXR1cm4gaG9zdCgpOworICAgIHVuc2lnbmVkIHN0YXJ0ID0gaG9z
dFN0YXJ0KCk7CisgICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhzdGFydCwgbV9wb3J0RW5k
IC0gc3RhcnQpOwogfQogCiBTdHJpbmcgVVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3QK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oCShyZXZpc2lvbiAyMTgwMTgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9VUkwuaAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBAIHB1
YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRv
TGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCA9IDEwMjQpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBP
UlQgU3RyaW5nVmlldyBwcm90b2NvbCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBob3N0KCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nVmlldyBob3N0KCkgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCgpIGNv
bnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBob3N0QW5kUG9ydCgpIGNvbnN0OwogICAg
IFdFQkNPUkVfRVhQT1JUIFN0cmluZyBwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3Q7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHAJKHJldmlzaW9u
IDIxODAxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBz
dGF0aWMgYm9vbCBpc0dvb2dsZShjb25zdCBVUkwmIHVybCkKIHsKLSAgICBTdHJpbmcgYmFzZURv
bWFpbiA9IHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4odXJsLmhvc3QoKSk7CisgICAgU3Ry
aW5nIGJhc2VEb21haW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKHVybC5ob3N0KCku
dG9TdHJpbmcoKSk7CiAKICAgICAvLyBPdXIgR29vZ2xlIFVBIGlzICp2ZXJ5KiBjb21wbGljYXRl
ZCB0byBnZXQgcmlnaHQuIFJlYWQKICAgICAvLyBodHRwczovL3dlYmtpdC5vcmcvYi8xNDIwNzQg
Y2FyZWZ1bGx5IGJlZm9yZSBjaGFuZ2luZy4gVGVzdCB0aGF0IEVhcnRoCkBAIC02MCw3ICs2MCw3
IEBAIHN0YXRpYyBib29sIGlzR29vZ2xlKGNvbnN0IFVSTCYgdXJsKQogLy8gdGhhdCB3b3JrcyBp
biBDaHJvbWUgdGhhdCBXZWJLaXQgY2Fubm90IGhhbmRsZS4gUHJlZmVyIG90aGVyIHF1aXJrcyBp
bnN0ZWFkLgogc3RhdGljIGJvb2wgdXJsUmVxdWlyZXNDaHJvbWVCcm93c2VyKGNvbnN0IFVSTCYg
dXJsKQogewotICAgIFN0cmluZyBiYXNlRG9tYWluID0gdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERv
bWFpbih1cmwuaG9zdCgpKTsKKyAgICBTdHJpbmcgYmFzZURvbWFpbiA9IHRvcFByaXZhdGVseUNv
bnRyb2xsZWREb21haW4odXJsLmhvc3QoKS50b1N0cmluZygpKTsKIAogICAgIC8vIE5lZWRlZCBm
b3IgZm9udHMgb24gbWFueSBzaXRlcyB0byB3b3JrIHdpdGggV2ViS2l0LgogICAgIC8vIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDcyOTYKQEAgLTcyLDcgKzcyLDcg
QEAgc3RhdGljIGJvb2wgdXJsUmVxdWlyZXNDaHJvbWVCcm93c2VyKGNvbgogCiBzdGF0aWMgYm9v
bCB1cmxSZXF1aXJlc01hY2ludG9zaFBsYXRmb3JtKGNvbnN0IFVSTCYgdXJsKQogewotICAgIFN0
cmluZyBiYXNlRG9tYWluID0gdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbih1cmwuaG9zdCgp
KTsKKyAgICBTdHJpbmcgYmFzZURvbWFpbiA9IHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4o
dXJsLmhvc3QoKS50b1N0cmluZygpKTsKIAogICAgIC8vIEF0IGxlYXN0IGZpbmFuY2UueWFob28u
Y29tIGRpc3BsYXlzIGEgbW9iaWxlIHZlcnNpb24gd2l0aCBXZWJLaXRHVEsrJ3Mgc3RhbmRhcmQg
dXNlciBhZ2VudC4KICAgICBpZiAoYmFzZURvbWFpbiA9PSAieWFob28uY29tIikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5tbQko
cmV2aXNpb24gMjE4MDE4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdl
bmVyYXRvck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQwLDcgKzI0MCw3IEBAIFN0cmluZyBz
aWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcKIAogICAgIGF1dG8gY2hhbGxlbmdlID0g
Y2hhbGxlbmdlU3RyaW5nLmNvbnRhaW5zT25seUFTQ0lJKCkgPyBjaGFsbGVuZ2VTdHJpbmcuYXNj
aWkoKSA6ICIiOwogCi0gICAgcmV0dXJuIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmlu
ZyhrZXlTaXplLCBjaGFsbGVuZ2UsIGtleWdlbktleWNoYWluSXRlbU5hbWUodXJsLmhvc3QoKSkp
OworICAgIHJldHVybiBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoa2V5U2l6ZSwg
Y2hhbGxlbmdlLCBrZXlnZW5LZXljaGFpbkl0ZW1OYW1lKHVybC5ob3N0KCkudG9TdHJpbmcoKSkp
OwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAkocmV2aXNp
b24gMjE4MDE4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3Jr
U3RvcmFnZVNlc3Npb25DRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NCwxMiArMTc0LDEz
IEBAIFN0cmluZyBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVN0b3IKIAogc3RhdGljIGlu
bGluZSBTdHJpbmcgZ2V0UGFydGl0aW9uaW5nRG9tYWluKGNvbnN0IFVSTCYgdXJsKSAKIHsKKyAg
ICBhdXRvIGhvc3QgPSB1cmwuaG9zdCgpLnRvU3RyaW5nKCk7CiAjaWYgRU5BQkxFKFBVQkxJQ19T
VUZGSVhfTElTVCkKLSAgICBhdXRvIGRvbWFpbiA9IHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21h
aW4odXJsLmhvc3QoKSk7CisgICAgYXV0byBkb21haW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVk
RG9tYWluKGhvc3QpOwogICAgIGlmIChkb21haW4uaXNFbXB0eSgpKQotICAgICAgICBkb21haW4g
PSB1cmwuaG9zdCgpOworICAgICAgICBkb21haW4gPSBob3N0OwogI2Vsc2UKLSAgICBhdXRvIGRv
bWFpbiA9IHVybC5ob3N0KCk7CisgICAgYXV0byBkb21haW4gPSBob3N0OwogI2VuZGlmCiAgICAg
cmV0dXJuIGRvbWFpbjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5j
cHAJKHJldmlzaW9uIDIxODAxOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA5
LDcgKzMwOSw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y3JlYXRlU3RyZWEKICAg
ICBpZiAobV9jb25uZWN0aW9uVHlwZSA9PSBVbmtub3duKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGhvc3QgPSBtX3VybC5ob3N0KCkuY3JlYXRlQ0ZTdHJp
bmcoKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGhvc3QgPSBtX3VybC5ob3N0KCkudG9T
dHJpbmcoKS5jcmVhdGVDRlN0cmluZygpOwogCiAgICAgLy8gQ3JlYXRpbmcgc3RyZWFtcyB0byBm
aW5hbCBkZXN0aW5hdGlvbiwgbm90IHRvIHByb3h5LgogICAgIENGUmVhZFN0cmVhbVJlZiByZWFk
U3RyZWFtID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9T
b3VwTmV0d29ya1Nlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCShyZXZpc2lvbiAyMTgwMTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNz
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA5LDcgKzMwOSw3IEBAIHZvaWQgU291cE5ldHdv
cmtTZXNzaW9uOjpjaGVja1RMU0Vycm9ycygKICAgICB9CiAKICAgICBVUkwgdXJsKHNvdXBfcmVx
dWVzdF9nZXRfdXJpKHNvdXBSZXF1ZXN0KSk7Ci0gICAgYXV0byBpdCA9IGNsaWVudENlcnRpZmlj
YXRlcygpLmZpbmQodXJsLmhvc3QoKSk7CisgICAgYXV0byBpdCA9IGNsaWVudENlcnRpZmljYXRl
cygpLmZpbmQodXJsLmhvc3QoKS50b1N0cmluZygpKTsKICAgICBpZiAoaXQgIT0gY2xpZW50Q2Vy
dGlmaWNhdGVzKCkuZW5kKCkgJiYgaXQtPnZhbHVlLmNvbnRhaW5zKGNlcnRpZmljYXRlKSkgewog
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgICAgICByZXR1cm47CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmNwcAkocmV2aXNpb24gMjE4MDE4
KQorKysgU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgU3RyaW5nIFdvcmtlckxvY2F0aW9uOjpob3N0KCkgY29u
c3QKIAogU3RyaW5nIFdvcmtlckxvY2F0aW9uOjpob3N0bmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fdXJsLmhvc3QoKTsKKyAgICByZXR1cm4gbV91cmwuaG9zdCgpLnRvU3RyaW5nKCk7CiB9
CiAKIFN0cmluZyBXb3JrZXJMb2NhdGlvbjo6cG9ydCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyMTgwMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSw0MyBAQAorMjAxNy0wNi0wOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVSTDo6aG9zdCBzaG91bGQgcmV0dXJuIGEg
U3RyaW5nVmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTczMTkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OmZldGNoRGlza0NhY2hlRW50cmllcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05l
dHdvcmtQcm9jZXNzTWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpvdmVycmlkZVN5c3RlbVByb3hp
ZXMpOgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJVVJMLmg6CisgICAgICAgIChBUEk6OlVSTDo6
aG9zdCk6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6YWRkU2luZ2xl
Q29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmRlbGV0ZUFs
bENvb2tpZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGx1Z2luRGlkUmVjZWl2ZVVzZXJJbnRlcmFj
dGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRl
ci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkluZm9Qcm92aWRlcjo6cG9wdWxhdGVQ
bHVnaW5DYWNoZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkluZm9Qcm92aWRlcjo6cGx1
Z2luTG9hZENsaWVudFBvbGljeUZvckhvc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBsdWdJbkNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdJbkNs
aWVudDo6c2hvdWxkQXV0b1N0YXJ0RnJvbU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBs
dWdJbkNsaWVudDo6ZGlkU3RhcnRGcm9tT3JpZ2luKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6bmVlZHNIaWRkZW5Db250ZW50RWRp
dGFibGVRdWlyayk6CisgICAgICAgIChXZWJLaXQ6Om5lZWRzUGxhaW5UZXh0UXVpcmspOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkZXRlcm1pbmVQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW4p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjptYXRjaGVzUHJpbWFyeVBsdWdJbik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjphZGRDYXNlRm9sZGVkQ2hhcmFjdGVy
cyk6CisgICAgICAgIChXZWJLaXQ6Omhhc2hGb3JQbHVnSW5PcmlnaW4pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQcm9jZXNzOjpzaG91bGRQbHVnSW5BdXRvU3RhcnRGcm9tT3JpZ2luKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGx1Z0luRGlkU3RhcnRGcm9tT3JpZ2luKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6cGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisKIDIwMTctMDYtMDkgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgV1RGOjpGdW5jdGlvbiBp
bnN0ZWFkIG9mIHN0ZDo6ZnVuY3Rpb24gaW4gU3RvcmFnZU1hbmFnZXIKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAJKHJldmlzaW9u
IDIxODAxOCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ1LDcgKzM0NSw3IEBAIHN0YXRpYyB2b2lkIGZldGNo
RGlza0NhY2hlRW50cmllcyhTZXNzaW8KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgYXV0
byB1cmwgPSB0cmF2ZXJzYWxFbnRyeS0+ZW50cnkucmVzcG9uc2UoKS51cmwoKTsKLSAgICAgICAg
ICAgIGF1dG8gcmVzdWx0ID0gb3JpZ2luc0FuZFNpemVzLmFkZCh7dXJsLnByb3RvY29sKCkudG9T
dHJpbmcoKSwgdXJsLmhvc3QoKSwgdXJsLnBvcnQoKX0sIDApOworICAgICAgICAgICAgYXV0byBy
ZXN1bHQgPSBvcmlnaW5zQW5kU2l6ZXMuYWRkKHt1cmwucHJvdG9jb2woKS50b1N0cmluZygpLCB1
cmwuaG9zdCgpLnRvU3RyaW5nKCksIHVybC5wb3J0KCl9LCAwKTsKIAogICAgICAgICAgICAgaWYg
KGZldGNoT3B0aW9ucy5jb250YWlucyhXZWJzaXRlRGF0YUZldGNoT3B0aW9uOjpDb21wdXRlU2l6
ZXMpKQogICAgICAgICAgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgKz0gdHJhdmVyc2Fs
RW50cnktPmVudHJ5LnNvdXJjZVN0b3JhZ2VSZWNvcmQoKS5oZWFkZXIuc2l6ZSgpICsgdHJhdmVy
c2FsRW50cnktPnJlY29yZEluZm8uYm9keVNpemU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFjLm1tCShyZXZpc2lv
biAyMTgwMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1By
b2Nlc3NNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAgc3RhdGljIHZvaWQg
b3ZlcnJpZGVTeXN0ZW1Qcm94aWVzKGNvbnN0IAogICAgIGlmICghaHR0cFByb3h5LmlzTnVsbCgp
KSB7CiAgICAgICAgIFVSTCBodHRwUHJveHlVUkwoVVJMKCksIGh0dHBQcm94eSk7CiAgICAgICAg
IGlmIChodHRwUHJveHlVUkwuaXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICBbcHJveHlTZXR0aW5n
cyBzZXRPYmplY3Q6bnNTdHJpbmdGcm9tV2ViQ29yZVN0cmluZyhodHRwUHJveHlVUkwuaG9zdCgp
KSBmb3JLZXk6KE5TU3RyaW5nICopa0NGTmV0d29ya1Byb3hpZXNIVFRQUHJveHldOworICAgICAg
ICAgICAgW3Byb3h5U2V0dGluZ3Mgc2V0T2JqZWN0Om5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmco
aHR0cFByb3h5VVJMLmhvc3QoKS50b1N0cmluZygpKSBmb3JLZXk6KE5TU3RyaW5nICopa0NGTmV0
d29ya1Byb3hpZXNIVFRQUHJveHldOwogICAgICAgICAgICAgaWYgKGh0dHBQcm94eVVSTC5wb3J0
KCkpIHsKICAgICAgICAgICAgICAgICBOU051bWJlciAqcG9ydCA9IFtOU051bWJlciBudW1iZXJX
aXRoSW50Omh0dHBQcm94eVVSTC5wb3J0KCkudmFsdWUoKV07CiAgICAgICAgICAgICAgICAgW3By
b3h5U2V0dGluZ3Mgc2V0T2JqZWN0OnBvcnQgZm9yS2V5OihOU1N0cmluZyAqKWtDRk5ldHdvcmtQ
cm94aWVzSFRUUFBvcnRdOwpAQCAtODIsNyArODIsNyBAQCBzdGF0aWMgdm9pZCBvdmVycmlkZVN5
c3RlbVByb3hpZXMoY29uc3QgCiAgICAgaWYgKCFodHRwc1Byb3h5LmlzTnVsbCgpKSB7CiAgICAg
ICAgIFVSTCBodHRwc1Byb3h5VVJMKFVSTCgpLCBodHRwc1Byb3h5KTsKICAgICAgICAgaWYgKGh0
dHBzUHJveHlVUkwuaXNWYWxpZCgpKSB7Ci0gICAgICAgICAgICBbcHJveHlTZXR0aW5ncyBzZXRP
YmplY3Q6bnNTdHJpbmdGcm9tV2ViQ29yZVN0cmluZyhodHRwc1Byb3h5VVJMLmhvc3QoKSkgZm9y
S2V5OihOU1N0cmluZyAqKWtDRk5ldHdvcmtQcm94aWVzSFRUUFNQcm94eV07CisgICAgICAgICAg
ICBbcHJveHlTZXR0aW5ncyBzZXRPYmplY3Q6bnNTdHJpbmdGcm9tV2ViQ29yZVN0cmluZyhodHRw
c1Byb3h5VVJMLmhvc3QoKS50b1N0cmluZygpKSBmb3JLZXk6KE5TU3RyaW5nICopa0NGTmV0d29y
a1Byb3hpZXNIVFRQU1Byb3h5XTsKICAgICAgICAgICAgIGlmIChodHRwc1Byb3h5VVJMLnBvcnQo
KSkgewogICAgICAgICAgICAgICAgIE5TTnVtYmVyICpwb3J0ID0gW05TTnVtYmVyIG51bWJlcldp
dGhJbnQ6aHR0cHNQcm94eVVSTC5wb3J0KCkudmFsdWUoKV07CiAgICAgICAgICAgICAgICAgW3By
b3h5U2V0dGluZ3Mgc2V0T2JqZWN0OnBvcnQgZm9yS2V5OihOU1N0cmluZyAqKWtDRk5ldHdvcmtQ
cm94aWVzSFRUUFNQb3J0XTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJVVJM
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElVUkwuaAkocmV2
aXNpb24gMjE4MDE4KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElVUkwuaAkod29y
a2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViVVJMX2gKLSNkZWZpbmUgV2ViVVJMX2gKKyNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCkBAIC02NCw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICBXVEY6OlN0cmluZyBo
b3N0KCkgY29uc3QKICAgICB7CiAgICAgICAgIHBhcnNlVVJMSWZOZWNlc3NhcnkoKTsKLSAgICAg
ICAgcmV0dXJuIG1fcGFyc2VkVVJMLT5pc1ZhbGlkKCkgPyBtX3BhcnNlZFVSTC0+aG9zdCgpIDog
V1RGOjpTdHJpbmcoKTsKKyAgICAgICAgcmV0dXJuIG1fcGFyc2VkVVJMLT5pc1ZhbGlkKCkgPyBt
X3BhcnNlZFVSTC0+aG9zdCgpLnRvU3RyaW5nKCkgOiBXVEY6OlN0cmluZygpOwogICAgIH0KIAog
ICAgIFdURjo6U3RyaW5nIHByb3RvY29sKCkgY29uc3QKQEAgLTEzMCw1ICsxMjksMyBAQCBwcml2
YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBVUkxfaApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9u
L1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAkocmV2aXNpb24gMjE4MDE4KQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03OTQsNyArNzk0LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
YWRkU2luZ2xlQ29vawogCiAgICAgLy8gSW5oZXJpdCB0aGUgZG9tYWluL2hvc3QgZnJvbSB0aGUg
bWFpbiBmcmFtZSdzIFVSTCBpZiBpdCBpcyBub3QgZXhwbGljaXRseSBzZXQuCiAgICAgaWYgKGRv
bWFpbi5pc0VtcHR5KCkpCi0gICAgICAgIGRvbWFpbiA9IGFjdGl2ZVVSTC5ob3N0KCk7CisgICAg
ICAgIGRvbWFpbiA9IGFjdGl2ZVVSTC5ob3N0KCkudG9TdHJpbmcoKTsKIAogICAgIGNvb2tpZS5k
b21haW4gPSBkb21haW47CiAKQEAgLTgzOCw3ICs4MzgsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25T
ZXNzaW9uOjpkZWxldGVBbGxDb29rCiAgICAgQVNTRVJUKGFjdGl2ZVVSTC5pc1ZhbGlkKCkpOwog
CiAgICAgV2ViQ29va2llTWFuYWdlclByb3h5KiBjb29raWVNYW5hZ2VyID0gbV9wcm9jZXNzUG9v
bC0+c3VwcGxlbWVudDxXZWJDb29raWVNYW5hZ2VyUHJveHk+KCk7Ci0gICAgY29va2llTWFuYWdl
ci0+ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKHBhZ2UtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXNz
aW9uSUQoKSwgYWN0aXZlVVJMLmhvc3QoKSk7CisgICAgY29va2llTWFuYWdlci0+ZGVsZXRlQ29v
a2llc0Zvckhvc3RuYW1lKHBhZ2UtPndlYnNpdGVEYXRhU3RvcmUoKS5zZXNzaW9uSUQoKSwgYWN0
aXZlVVJMLmhvc3QoKS50b1N0cmluZygpKTsKIH0KIAogI2lmIFVTRShBUFBLSVQpIHx8IFBMQVRG
T1JNKEdUSykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAko
cmV2aXNpb24gMjE4MDE4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzg5LDcgKzc4OSw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6
Y2xlYXJSZXNvdXJjZUNhY2hlcyhSZXMKICAgICBDcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENh
Y2hlOjpzaW5nbGV0b24oKS5lbXB0eSgpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgYWRkQ2Fz
ZUZvbGRlZENoYXJhY3RlcnMoU3RyaW5nSGFzaGVyJiBoYXNoZXIsIGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQorc3RhdGljIGlubGluZSB2b2lkIGFkZENhc2VGb2xkZWRDaGFyYWN0ZXJzKFN0cmluZ0hh
c2hlciYgaGFzaGVyLCBTdHJpbmdWaWV3IHN0cmluZykKIHsKICAgICBpZiAoc3RyaW5nLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtODAwLDcgKzgwMCw3IEBAIHN0YXRpYyBpbmxpbmUg
dm9pZCBhZGRDYXNlRm9sZGVkQ2hhcmFjdGUKICAgICBoYXNoZXIuYWRkQ2hhcmFjdGVyczxVQ2hh
ciwgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoOjpmb2xkQ2FzZTxVQ2hhcj4+KHN0cmluZy5jaGFy
YWN0ZXJzMTYoKSwgc3RyaW5nLmxlbmd0aCgpKTsKIH0KIAotc3RhdGljIHVuc2lnbmVkIGhhc2hG
b3JQbHVnSW5PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBs
dWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3N0YXRpYyB1bnNpZ25lZCBoYXNo
Rm9yUGx1Z0luT3JpZ2luKFN0cmluZ1ZpZXcgcGFnZU9yaWdpbiwgU3RyaW5nVmlldyBwbHVnaW5P
cmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7CiAgICAgLy8gV2Ugd2FudCB0byBhdm9p
ZCBjb25jYXRlbmF0aW5nIHRoZSBzdHJpbmdzIGFuZCB0aGVuIHRha2luZyB0aGUgaGFzaCwgc2lu
Y2UgdGhhdCBjb3VsZCBsZWFkIHRvIGFuIGV4cGVuc2l2ZSBjb252ZXJzaW9uLgogICAgIC8vIFdl
IGFsc28gd2FudCB0byBhdm9pZCB1c2luZyB0aGUgaGFzaCgpIGZ1bmN0aW9uIGluIFN0cmluZ0lt
cGwgb3IgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoIGJlY2F1c2UgdGhhdCBtYXNrcyBvdXQgYml0
cyBmb3IgdGhlIHVzZSBvZiBmbGFncy4KQEAgLTgzMiw5ICs4MzIsOSBAQCBib29sIFdlYlByb2Nl
c3M6OmlzUGx1Z0luQXV0b1N0YXJ0T3JpZ2luCiAgICAgcmV0dXJuIGN1cnJlbnRUaW1lKCkgPCBp
dC0+dmFsdWU7CiB9CiAKLWJvb2wgV2ViUHJvY2Vzczo6c2hvdWxkUGx1Z0luQXV0b1N0YXJ0RnJv
bU9yaWdpbihXZWJQYWdlJiB3ZWJQYWdlLCBjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0
IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQorYm9vbCBXZWJQ
cm9jZXNzOjpzaG91bGRQbHVnSW5BdXRvU3RhcnRGcm9tT3JpZ2luKFdlYlBhZ2UmIHdlYlBhZ2Us
IFN0cmluZ1ZpZXcgcGFnZU9yaWdpbiwgU3RyaW5nVmlldyBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpCiB7Ci0gICAgaWYgKCFwbHVnaW5PcmlnaW4uaXNFbXB0eSgpICYmIG1f
cGx1Z0luQXV0b1N0YXJ0T3JpZ2lucy5jb250YWlucyhwbHVnaW5PcmlnaW4pKQorICAgIGlmICgh
cGx1Z2luT3JpZ2luLmlzRW1wdHkoKSAmJiBtX3BsdWdJbkF1dG9TdGFydE9yaWdpbnMuY29udGFp
bnMocGx1Z2luT3JpZ2luLnRvU3RyaW5nKCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogI2lm
ZGVmIEVOQUJMRV9QUklNQVJZX1NOQVBTSE9UVEVEX1BMVUdJTl9IRVVSSVNUSUMKQEAgLTg0OSw3
ICs4NDksNyBAQCBib29sIFdlYlByb2Nlc3M6OnNob3VsZFBsdWdJbkF1dG9TdGFydEZyCiAgICAg
cmV0dXJuIGlzUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaChoYXNoRm9yUGx1Z0luT3JpZ2luKHBh
Z2VPcmlnaW4sIHBsdWdpbk9yaWdpbiwgbWltZVR5cGUpLCB3ZWJQYWdlLnNlc3Npb25JRCgpKTsK
IH0KIAotdm9pZCBXZWJQcm9jZXNzOjpwbHVnSW5EaWRTdGFydEZyb21PcmlnaW4oY29uc3QgU3Ry
aW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSwgU2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgV2ViUHJvY2Vzczo6cGx1Z0lu
RGlkU3RhcnRGcm9tT3JpZ2luKFN0cmluZ1ZpZXcgcGFnZU9yaWdpbiwgU3RyaW5nVmlldyBwbHVn
aW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7
CiAgICAgaWYgKHBhZ2VPcmlnaW4uaXNFbXB0eSgpKSB7CiAgICAgICAgIExPRyhQbHVnaW5zLCAi
Tm90IGFkZGluZyBlbXB0eSBwYWdlIG9yaWdpbiIpOwpAQCAtODY4LDcgKzg2OCw3IEBAIHZvaWQg
V2ViUHJvY2Vzczo6cGx1Z0luRGlkU3RhcnRGcm9tT3JpZ2kKICAgICAvLyBpbmNvcnJlY3QgZm9y
IGEgbGl0dGxlIHdoaWxlLgogICAgIG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLmFkZChz
ZXNzaW9uSUQsIEhhc2hNYXA8dW5zaWduZWQsIGRvdWJsZT4oKSkuaXRlcmF0b3ItPnZhbHVlLnNl
dChwbHVnSW5PcmlnaW5IYXNoLCBjdXJyZW50VGltZSgpICsgMzAgKiAxMDAwKTsKIAotICAgIHBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQb29sOjpB
ZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHBhZ2VPcmlnaW4sIHBsdWdJbk9yaWdpbkhhc2gs
IHNlc3Npb25JRCksIDApOworICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVz
c2FnZXM6OldlYlByb2Nlc3NQb29sOjpBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHBhZ2VP
cmlnaW4udG9TdHJpbmcoKSwgcGx1Z0luT3JpZ2luSGFzaCwgc2Vzc2lvbklEKSwgMCk7CiB9CiAK
IHZvaWQgV2ViUHJvY2Vzczo6ZGlkQWRkUGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaCh1bnNpZ25l
ZCBwbHVnSW5PcmlnaW5IYXNoLCBkb3VibGUgZXhwaXJhdGlvblRpbWUsIFNlc3Npb25JRCBzZXNz
aW9uSUQpCkBAIC04OTAsNyArODkwLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpyZXNldFBsdWdJbkF1
dG9TdGFydE9yaQogICAgIG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzLnN3YXAoY29uc3Rf
Y2FzdDxIYXNoTWFwPFNlc3Npb25JRCwgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPj4mPihoYXNo
ZXMpKTsKIH0KIAotdm9pZCBXZWJQcm9jZXNzOjpwbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0
aW9uKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4s
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFNlc3Npb25JRCBzZXNzaW9uSUQpCit2b2lkIFdlYlBy
b2Nlc3M6OnBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24oU3RyaW5nVmlldyBwYWdlT3Jp
Z2luLCBTdHJpbmdWaWV3IHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgU2Vz
c2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBpZiAocGFnZU9yaWdpbi5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShy
ZXZpc2lvbiAyMTgwMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
aAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDkgKzEyOCw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBX
ZWJDb3JlOjpNYWNoU2VuZFJpZ2h0JiBjb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQoKSBjb25z
dCB7IHJldHVybiBtX2NvbXBvc2l0aW5nUmVuZGVyU2VydmVyUG9ydDsgfQogI2VuZGlmCiAKLSAg
ICBib29sIHNob3VsZFBsdWdJbkF1dG9TdGFydEZyb21PcmlnaW4oV2ViUGFnZSYsIGNvbnN0IFN0
cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUpOwotICAgIHZvaWQgcGx1Z0luRGlkU3RhcnRGcm9tT3JpZ2luKGNvbnN0IFN0
cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgbWltZVR5cGUsIFdlYkNvcmU6OlNlc3Npb25JRCk7Ci0gICAgdm9pZCBwbHVnSW5EaWRSZWNl
aXZlVXNlckludGVyYWN0aW9uKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5n
JiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6OlNlc3Npb25J
RCk7CisgICAgYm9vbCBzaG91bGRQbHVnSW5BdXRvU3RhcnRGcm9tT3JpZ2luKFdlYlBhZ2UmLCBT
dHJpbmdWaWV3IHBhZ2VPcmlnaW4sIFN0cmluZ1ZpZXcgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJp
bmcmIG1pbWVUeXBlKTsKKyAgICB2b2lkIHBsdWdJbkRpZFN0YXJ0RnJvbU9yaWdpbihTdHJpbmdW
aWV3IHBhZ2VPcmlnaW4sIFN0cmluZ1ZpZXcgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBXZWJDb3JlOjpTZXNzaW9uSUQpOworICAgIHZvaWQgcGx1Z0luRGlkUmVjZWl2ZVVz
ZXJJbnRlcmFjdGlvbihTdHJpbmdWaWV3IHBhZ2VPcmlnaW4sIFN0cmluZ1ZpZXcgcGx1Z2luT3Jp
Z2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3JlOjpTZXNzaW9uSUQpOwogICAgIHZv
aWQgc2V0UGx1Z2luTG9hZENsaWVudFBvbGljeSh1aW50OF90IHBvbGljeSwgY29uc3QgU3RyaW5n
JiBob3N0LCBjb25zdCBTdHJpbmcmIGJ1bmRsZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdmVy
c2lvblN0cmluZyk7CiAgICAgdm9pZCBjbGVhclBsdWdpbkNsaWVudFBvbGljaWVzKCk7CiAgICAg
dm9pZCByZWZyZXNoUGx1Z2lucygpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkocmV2aXNpb24gMjE4MDE4KQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xODM4LDggKzE4MzgsOCBAQCB2b2lkIFBsdWdpblZpZXc6OnBsdWdpbkRpZFJlY2VpdmVV
c2VySW50CiAgICAgbV9kaWRSZWNlaXZlVXNlckludGVyYWN0aW9uID0gdHJ1ZTsKIAogICAgIEhU
TUxQbHVnSW5JbWFnZUVsZW1lbnQmIHBsdWdJbkltYWdlRWxlbWVudCA9IGRvd25jYXN0PEhUTUxQ
bHVnSW5JbWFnZUVsZW1lbnQ+KCptX3BsdWdpbkVsZW1lbnQpOwotICAgIFN0cmluZyBwYWdlT3Jp
Z2luID0gcGx1Z0luSW1hZ2VFbGVtZW50LmRvY3VtZW50KCkucGFnZSgpLT5tYWluRnJhbWUoKS5k
b2N1bWVudCgpLT5iYXNlVVJMKCkuaG9zdCgpOwotICAgIFN0cmluZyBwbHVnaW5PcmlnaW4gPSBw
bHVnSW5JbWFnZUVsZW1lbnQubG9hZGVkVXJsKCkuaG9zdCgpOworICAgIFN0cmluZ1ZpZXcgcGFn
ZU9yaWdpbiA9IHBsdWdJbkltYWdlRWxlbWVudC5kb2N1bWVudCgpLnBhZ2UoKS0+bWFpbkZyYW1l
KCkuZG9jdW1lbnQoKS0+YmFzZVVSTCgpLmhvc3QoKTsKKyAgICBTdHJpbmdWaWV3IHBsdWdpbk9y
aWdpbiA9IHBsdWdJbkltYWdlRWxlbWVudC5sb2FkZWRVcmwoKS5ob3N0KCk7CiAgICAgU3RyaW5n
IG1pbWVUeXBlID0gcGx1Z0luSW1hZ2VFbGVtZW50LmxvYWRlZE1pbWVUeXBlKCk7CiAKICAgICBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wbHVnSW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKHBh
Z2VPcmlnaW4sIHBsdWdpbk9yaWdpbiwgbWltZVR5cGUsIHBsdWdJbkltYWdlRWxlbWVudC5kb2N1
bWVudCgpLnBhZ2UoKS0+c2Vzc2lvbklEKCkpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAJ
KHJldmlzaW9uIDIxODAxOCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9X
ZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsNyArMTUyLDcg
QEAgdm9pZCBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6OnBvcHVsYXRlUGx1ZwogICAgIH0KIAogI2lm
IFBMQVRGT1JNKE1BQykKLSAgICBTdHJpbmcgcGFnZUhvc3QgPSBwYWdlLm1haW5GcmFtZSgpLmxv
YWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlVVJMKCkuaG9zdCgpOworICAgIFN0cmlu
Z1ZpZXcgcGFnZUhvc3QgPSBwYWdlLm1haW5GcmFtZSgpLmxvYWRlcigpLmRvY3VtZW50TG9hZGVy
KCktPnJlc3BvbnNlVVJMKCkuaG9zdCgpOwogICAgIGZvciAoYXV0byYgaW5mbyA6IG1fY2FjaGVk
UGx1Z2lucykgewogICAgICAgICBpZiAoYXV0byBjbGllbnRQb2xpY3kgPSBwbHVnaW5Mb2FkQ2xp
ZW50UG9saWN5Rm9ySG9zdChwYWdlSG9zdCwgaW5mbykpCiAgICAgICAgICAgICBpbmZvLmNsaWVu
dExvYWRQb2xpY3kgPSAqY2xpZW50UG9saWN5OwpAQCAtMTY0LDkgKzE2NCw5IEBAIHZvaWQgV2Vi
UGx1Z2luSW5mb1Byb3ZpZGVyOjpwb3B1bGF0ZVBsdWcKICNlbmRpZgogCiAjaWYgUExBVEZPUk0o
TUFDKQotc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5PiBXZWJQ
bHVnaW5JbmZvUHJvdmlkZXI6OnBsdWdpbkxvYWRDbGllbnRQb2xpY3lGb3JIb3N0KGNvbnN0IFN0
cmluZyYgaG9zdCwgY29uc3QgV2ViQ29yZTo6UGx1Z2luSW5mbyYgaW5mbykgY29uc3QKK3N0ZDo6
b3B0aW9uYWw8V2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGljeT4gV2ViUGx1Z2luSW5mb1By
b3ZpZGVyOjpwbHVnaW5Mb2FkQ2xpZW50UG9saWN5Rm9ySG9zdChTdHJpbmdWaWV3IGhvc3QsIGNv
bnN0IFdlYkNvcmU6OlBsdWdpbkluZm8mIGluZm8pIGNvbnN0CiB7Ci0gICAgU3RyaW5nIGhvc3RU
b0xvb2tVcCA9IGhvc3Q7CisgICAgU3RyaW5nIGhvc3RUb0xvb2tVcCA9IGhvc3QudG9TdHJpbmco
KTsKICAgICBTdHJpbmcgaWRlbnRpZmllciA9IGluZm8uYnVuZGxlSWRlbnRpZmllcjsKIAogICAg
IGF1dG8gcG9saWNpZXNCeUlkZW50aWZpZXJJdGVyYXRvciA9IG1faG9zdHNUb1BsdWdpbklkZW50
aWZpZXJEYXRhLmZpbmQoaG9zdFRvTG9va1VwKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmgJKHJl
dmlzaW9uIDIxODAxOCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQ
bHVnaW5JbmZvUHJvdmlkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBwcml2
YXRlOgogI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCiAjaWYgUExBVEZP
Uk0oTUFDKQotICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGx1Z2luTG9hZENsaWVudFBvbGlj
eT4gcGx1Z2luTG9hZENsaWVudFBvbGljeUZvckhvc3QoY29uc3QgU3RyaW5nJiwgY29uc3QgV2Vi
Q29yZTo6UGx1Z2luSW5mbyYpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UGx1
Z2luTG9hZENsaWVudFBvbGljeT4gcGx1Z2luTG9hZENsaWVudFBvbGljeUZvckhvc3QoU3RyaW5n
VmlldywgY29uc3QgV2ViQ29yZTo6UGx1Z2luSW5mbyYpIGNvbnN0OwogICAgIFN0cmluZyBsb25n
ZXN0TWF0Y2hlZFdpbGRjYXJkSG9zdEZvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0KSBjb25zdDsK
ICAgICBib29sIHJlcGxhY2VIb3N0V2l0aE1hdGNoZWRXaWxkY2FyZEhvc3QoU3RyaW5nJiBob3N0
LCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5D
bGllbnQuY3BwCShyZXZpc2lvbiAyMTgwMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDEyICs0OCwxMiBAQCB2b2lkIFdlYlBsdWdJbkNsaWVudDo6cGFnZURlc3Ryb3llZCgpCiAgICAg
ZGVsZXRlIHRoaXM7CiB9CiAKLWJvb2wgV2ViUGx1Z0luQ2xpZW50OjpzaG91bGRBdXRvU3RhcnRG
cm9tT3JpZ2luKGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBwbHVnaW5P
cmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCitib29sIFdlYlBsdWdJbkNsaWVudDo6c2hv
dWxkQXV0b1N0YXJ0RnJvbU9yaWdpbihTdHJpbmdWaWV3IHBhZ2VPcmlnaW4sIFN0cmluZ1ZpZXcg
cGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQogewogICAgIHJldHVybiBXZWJQ
cm9jZXNzOjpzaW5nbGV0b24oKS5zaG91bGRQbHVnSW5BdXRvU3RhcnRGcm9tT3JpZ2luKG1fd2Vi
UGFnZSwgcGFnZU9yaWdpbiwgcGx1Z2luT3JpZ2luLCBtaW1lVHlwZSk7CiB9CiAKLXZvaWQgV2Vi
UGx1Z0luQ2xpZW50OjpkaWRTdGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2lu
LCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2Vi
Q29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgV2ViUGx1Z0luQ2xpZW50OjpkaWRTdGFy
dEZyb21PcmlnaW4oU3RyaW5nVmlldyBwYWdlT3JpZ2luLCBTdHJpbmdWaWV3IHBsdWdpbk9yaWdp
biwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCkK
IHsKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wbHVnSW5EaWRTdGFydEZyb21PcmlnaW4o
cGFnZU9yaWdpbiwgcGx1Z2luT3JpZ2luLCBtaW1lVHlwZSwgc2Vzc2lvbklEKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbHVnSW5DbGllbnQuaAkocmV2aXNpb24gMjE4MDE4KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLSNpZm5kZWYgV2ViUGx1Z0luQ2xpZW50X2gKLSNkZWZpbmUgV2ViUGx1Z0luQ2xpZW50
X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnSW5DbGllbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1Nlc3Npb25JRC5oPgpAQCAtNDAsMTIgKzM5LDEwIEBAIHB1YmxpYzoK
IAogcHJpdmF0ZToKICAgICB2b2lkIHBhZ2VEZXN0cm95ZWQoKSBvdmVycmlkZTsKLSAgICBib29s
IHNob3VsZEF1dG9TdGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25z
dCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBkaWRTdGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBj
b25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29y
ZTo6U2Vzc2lvbklEKSBvdmVycmlkZTsKKyAgICBib29sIHNob3VsZEF1dG9TdGFydEZyb21Pcmln
aW4oU3RyaW5nVmlldyBwYWdlT3JpZ2luLCBTdHJpbmdWaWV3IHBsdWdpbk9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRTdGFydEZyb21PcmlnaW4o
U3RyaW5nVmlldyBwYWdlT3JpZ2luLCBTdHJpbmdWaWV3IHBsdWdpbk9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6U2Vzc2lvbklEKSBvdmVycmlkZTsKIAogICAgIFdlYlBh
Z2UmIG1fd2ViUGFnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLyog
V2ViUGx1Z0luQ2xpZW50ICovCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyMTgwMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwMTksNyAr
NTAxOSw3IEBAIHN0YXRpYyBib29sIG5lZWRzSGlkZGVuQ29udGVudEVkaXRhYmxlUXUKICAgICBp
ZiAoIW5lZWRzUXVpcmtzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTdHJpbmcgaG9z
dCA9IHVybC5ob3N0KCk7CisgICAgU3RyaW5nVmlldyBob3N0ID0gdXJsLmhvc3QoKTsKICAgICBT
dHJpbmcgcGF0aCA9IHVybC5wYXRoKCk7CiAgICAgcmV0dXJuIGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKGhvc3QsICJkb2NzLmdvb2dsZS5jb20iKTsKIH0KQEAgLTUwMjksNyArNTAyOSw3
IEBAIHN0YXRpYyBib29sIG5lZWRzUGxhaW5UZXh0UXVpcmsoYm9vbCBuZWUKICAgICBpZiAoIW5l
ZWRzUXVpcmtzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTdHJpbmcgaG9zdCA9IHVy
bC5ob3N0KCk7CisgICAgU3RyaW5nVmlldyBob3N0ID0gdXJsLmhvc3QoKTsKIAogICAgIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShob3N0LCAidHdpdHRlci5jb20iKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC01NTI0LDggKzU1MjQsOCBAQCB2b2lkIFdlYlBhZ2U6OmRldGVy
bWluZVByaW1hcnlTbmFwc2hvdHRlCiAKICAgICBMT0coUGx1Z2lucywgIlByaW1hcnkgUGx1Zy1J
biBEZXRlY3Rpb246IHN1Y2Nlc3MgLSBmb3VuZCBhIGNhbmRpZGF0ZSBwbHVnLWluIC0gaW5mb3Jt
IGl0LiIpOwogICAgIG1fZGlkRmluZFByaW1hcnlTbmFwc2hvdHRlZFBsdWdpbiA9IHRydWU7Ci0g
ICAgbV9wcmltYXJ5UGx1Z0luUGFnZU9yaWdpbiA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1l
bnQoKS0+YmFzZVVSTCgpLmhvc3QoKTsKLSAgICBtX3ByaW1hcnlQbHVnSW5PcmlnaW4gPSBjYW5k
aWRhdGVQbHVnSW4tPmxvYWRlZFVybCgpLmhvc3QoKTsKKyAgICBtX3ByaW1hcnlQbHVnSW5QYWdl
T3JpZ2luID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT5iYXNlVVJMKCkuaG9zdCgp
LnRvU3RyaW5nKCk7CisgICAgbV9wcmltYXJ5UGx1Z0luT3JpZ2luID0gY2FuZGlkYXRlUGx1Z0lu
LT5sb2FkZWRVcmwoKS5ob3N0KCkudG9TdHJpbmcoKTsKICAgICBtX3ByaW1hcnlQbHVnSW5NaW1l
VHlwZSA9IGNhbmRpZGF0ZVBsdWdJbi0+bG9hZGVkTWltZVR5cGUoKTsKIAogICAgIGNhbmRpZGF0
ZVBsdWdJbi0+c2V0SXNQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW4odHJ1ZSk7CkBAIC01NTM5LDcg
KzU1MzksNyBAQCB2b2lkIFdlYlBhZ2U6OnJlc2V0UHJpbWFyeVNuYXBzaG90dGVkUGx1CiAgICAg
bV9oYXNTZWVuUGx1Z2luID0gZmFsc2U7CiB9CiAKLWJvb2wgV2ViUGFnZTo6bWF0Y2hlc1ByaW1h
cnlQbHVnSW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9y
aWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QKK2Jvb2wgV2ViUGFnZTo6bWF0Y2hl
c1ByaW1hcnlQbHVnSW4oU3RyaW5nVmlldyBwYWdlT3JpZ2luLCBTdHJpbmdWaWV3IHBsdWdpbk9y
aWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgY29uc3QKIHsKICAgICBpZiAoIW1fZGlkRmlu
ZFByaW1hcnlTbmFwc2hvdHRlZFBsdWdpbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAy
MTgwMTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC04OTIsNyArODkyLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGV0ZXJt
aW5lUHJpbWFyeVNuYXBzaG90dGVkUGx1Z0luKCk7CiAgICAgdm9pZCBkZXRlcm1pbmVQcmltYXJ5
U25hcHNob3R0ZWRQbHVnSW5UaW1lckZpcmVkKCk7CiAgICAgdm9pZCByZXNldFByaW1hcnlTbmFw
c2hvdHRlZFBsdWdJbigpOwotICAgIGJvb2wgbWF0Y2hlc1ByaW1hcnlQbHVnSW4oY29uc3QgU3Ry
aW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSkgY29uc3Q7CisgICAgYm9vbCBtYXRjaGVzUHJpbWFyeVBsdWdJbihTdHJpbmdW
aWV3IHBhZ2VPcmlnaW4sIFN0cmluZ1ZpZXcgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlKSBjb25zdDsKICAgICBib29sIHBsdWdJbkludGVyc2VjdHNTZWFyY2hSZWN0KFdlYkNv
cmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmIHBsdWdpbkltYWdlRWxlbWVudCk7CiAgICAgYm9v
bCBwbHVnSW5Jc1ByaW1hcnlTaXplKFdlYkNvcmU6OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmIHBs
dWdpbkltYWdlRWxlbWVudCwgdW5zaWduZWQgJnBsdWdpbkFyZWEpOwogI2VuZGlmCkluZGV4OiBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwkocmV2aXNpb24gMjE4MDE4KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxNy0wNi0wOSAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVSTDo6aG9zdCBzaG91bGQgcmV0
dXJuIGEgU3RyaW5nVmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTczMTkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOgor
ICAgICAgICAoV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpob3N0Rm9yVVJMKToKKwogMjAxNy0w
Ni0wOSAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dp
bjY0XSBCdWlsZCBlcnJvciB3aGVuIGNvbXBpbGluZyBQYWludEhvb2tzLmFzbS4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9h
ZFNjaGVkdWxlci5jcHAJKHJldmlzaW9uIDIxODAxOCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViQ29y
ZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjUsOSArNjUsMTAgQEAgV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpIb3N0SW5mb3JtYXRpbwog
ICAgICAgICByZXR1cm4gbV9ub25IVFRQUHJvdG9jb2xIb3N0OwogCiAgICAgbV9ob3N0cy5jaGVj
a0NvbnNpc3RlbmN5KCk7Ci0gICAgU3RyaW5nIGhvc3ROYW1lID0gdXJsLmhvc3QoKTsKKyAgICBT
dHJpbmcgaG9zdE5hbWUgPSB1cmwuaG9zdCgpLnRvU3RyaW5nKCk7CiAgICAgSG9zdEluZm9ybWF0
aW9uKiBob3N0ID0gbV9ob3N0cy5nZXQoaG9zdE5hbWUpOwogICAgIGlmICghaG9zdCAmJiBjcmVh
dGVIb3N0UG9saWN5ID09IENyZWF0ZUlmTm90Rm91bmQpIHsKKyAgICAgICAgLy8gRklYTUU6IFVz
ZSBhIHNtYXJ0IHBvaW50ZXIuCiAgICAgICAgIGhvc3QgPSBuZXcgSG9zdEluZm9ybWF0aW9uKGhv
c3ROYW1lLCBtYXhSZXF1ZXN0c0luRmxpZ2h0UGVySG9zdCk7CiAgICAgICAgIG1faG9zdHMuYWRk
KGhvc3ROYW1lLCBob3N0KTsKICAgICB9CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTgwMjYpCisrKyBUb29scy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxNy0wNi0wOSAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFVSTDo6aG9zdCBz
aG91bGQgcmV0dXJuIGEgU3RyaW5nVmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTczMTkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMLmNwcDoK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpj
aGVja1VSTCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjaGVja1JlbGF0aXZlVVJMKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrVVJMRGlmZmVyZW5jZXMpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6Y2hlY2tSZWxhdGl2ZVVSTERpZmZlcmVuY2VzKToKKwogMjAxNy0wNi0wOSAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIERu
RF0gQWRkIGEgaG9vayB0byBwZXJmb3JtIHR3by1zdGVwIGRyb3BzIGluIGVkaXRhYmxlIGNvbnRl
bnQKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkwuY3BwCShyZXZp
c2lvbiAyMTgwMTgpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCBURVNUX0YoVVJMVGVzdCwgVVJMQ29u
c3RydWN0b3JDb25zdENoYXIpCiAgICAgRVhQRUNUX1RSVUUoa3VybC5pc1ZhbGlkKCkpOwogCiAg
ICAgRVhQRUNUX0VRKGt1cmwucHJvdG9jb2woKSA9PSAiaHR0cCIsIHRydWUpOwotICAgIEVYUEVD
VF9FUShTdHJpbmcoInd3dy5leGFtcGxlLmNvbSIpLCBrdXJsLmhvc3QoKSk7CisgICAgRVhQRUNU
X0VRKFN0cmluZygid3d3LmV4YW1wbGUuY29tIiksIGt1cmwuaG9zdCgpLnRvU3RyaW5nKCkpOwog
ICAgIEVYUEVDVF9UUlVFKCEha3VybC5wb3J0KCkpOwogICAgIEVYUEVDVF9FUSg4MDgwLCBrdXJs
LnBvcnQoKS52YWx1ZSgpKTsKICAgICBFWFBFQ1RfRVEoU3RyaW5nKCJ1c2VybmFtZSIpLCBrdXJs
LnVzZXIoKSk7CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFy
c2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
VVJMUGFyc2VyLmNwcAkocmV2aXNpb24gMjE4MDE4KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBA
Ci3vu78vKgorLyoKICAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyB2b2lk
IGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3QKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5w
cm90b2NvbCwgdXJsLnByb3RvY29sKCkudG9TdHJpbmcoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzLnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNz
d29yZCwgdXJsLnBhc3MoKSkpOwotICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIHVybC5o
b3N0KCkpKTsKKyAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1cmwuaG9zdCgpLnRvU3Ry
aW5nKCkpKTsKICAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZV9vcigw
KSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGF0aCwgdXJsLnBhdGgoKSkpOwogICAgIEVY
UEVDVF9UUlVFKGVxKHBhcnRzLnF1ZXJ5LCB1cmwucXVlcnkoKSkpOwpAQCAtMTIwLDcgKzEyMCw3
IEBAIHN0YXRpYyB2b2lkIGNoZWNrUmVsYXRpdmVVUkwoY29uc3QgU3RyaW4KICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0cy5wcm90b2NvbCwgdXJsLnByb3RvY29sKCkudG9TdHJpbmcoKSkpOwogICAg
IEVYUEVDVF9UUlVFKGVxKHBhcnRzLnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJV
RShlcShwYXJ0cy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOwotICAgIEVYUEVDVF9UUlVFKGVxKHBh
cnRzLmhvc3QsIHVybC5ob3N0KCkpKTsKKyAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1
cmwuaG9zdCgpLnRvU3RyaW5nKCkpKTsKICAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBv
cnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGF0aCwgdXJsLnBh
dGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnF1ZXJ5LCB1cmwucXVlcnkoKSkpOwpA
QCAtMTQ5LDcgKzE0OSw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMRGlmZmVyZW5jZXMoY29uc3Qg
U3QKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wcm90b2NvbCwgdXJsLnByb3RvY29sKCku
dG9TdHJpbmcoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnVzZXIsIHVybC51c2Vy
KCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5wYXNzd29yZCwgdXJsLnBhc3MoKSkp
OwotICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3Lmhvc3QsIHVybC5ob3N0KCkpKTsKKyAgICBF
WFBFQ1RfVFJVRShlcShwYXJ0c05ldy5ob3N0LCB1cmwuaG9zdCgpLnRvU3RyaW5nKCkpKTsKICAg
ICBFWFBFQ1RfRVEocGFydHNOZXcucG9ydCwgdXJsLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAg
RVhQRUNUX1RSVUUoZXEocGFydHNOZXcucGF0aCwgdXJsLnBhdGgoKSkpOwogICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzTmV3LnF1ZXJ5LCB1cmwucXVlcnkoKSkpOwpAQCAtMTc4LDcgKzE3OCw3IEBA
IHN0YXRpYyB2b2lkIGNoZWNrUmVsYXRpdmVVUkxEaWZmZXJlbmNlcygKICAgICBFWFBFQ1RfVFJV
RShlcShwYXJ0c05ldy5wcm90b2NvbCwgdXJsLnByb3RvY29sKCkudG9TdHJpbmcoKSkpOwogICAg
IEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0c05ldy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOwotICAgIEVYUEVDVF9UUlVF
KGVxKHBhcnRzTmV3Lmhvc3QsIHVybC5ob3N0KCkpKTsKKyAgICBFWFBFQ1RfVFJVRShlcShwYXJ0
c05ldy5ob3N0LCB1cmwuaG9zdCgpLnRvU3RyaW5nKCkpKTsKICAgICBFWFBFQ1RfRVEocGFydHNO
ZXcucG9ydCwgdXJsLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFy
dHNOZXcucGF0aCwgdXJsLnBhdGgoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnF1
ZXJ5LCB1cmwucXVlcnkoKSkpOwpAQCAtMjE2LDcgKzIxNiw3IEBAIHN0YXRpYyB2b2lkIGNoZWNr
VVJMKGNvbnN0IFN0cmluZyYgdXJsU3QKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wcm90b2Nv
bCwgdXJsLnByb3RvY29sKCkudG9TdHJpbmcoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRz
LnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXNzd29yZCwg
dXJsLnBhc3MoKSkpOwotICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIHVybC5ob3N0KCkp
KTsKKyAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1cmwuaG9zdCgpLnRvU3RyaW5nKCkp
KTsKICAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52YWx1ZV9vcigwKSk7CiAg
ICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGF0aCwgdXJsLnBhdGgoKSkpOwogICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzLnF1ZXJ5LCB1cmwucXVlcnkoKSkpOwpAQCAtMjQyLDcgKzI0Miw3IEBAIHN0
YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYgdXJsU3QKICAgICBFWFBFQ1RfVFJVRShl
cShwYXJ0cy5wcm90b2NvbCwgdXJsLnByb3RvY29sKCkudG9TdHJpbmcoKSkpOwogICAgIEVYUEVD
VF9UUlVFKGVxKHBhcnRzLnVzZXIsIHVybC51c2VyKCkpKTsKICAgICBFWFBFQ1RfVFJVRShlcShw
YXJ0cy5wYXNzd29yZCwgdXJsLnBhc3MoKSkpOwotICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhv
c3QsIHVybC5ob3N0KCkpKTsKKyAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5ob3N0LCB1cmwuaG9z
dCgpLnRvU3RyaW5nKCkpKTsKICAgICBFWFBFQ1RfRVEocGFydHMucG9ydCwgdXJsLnBvcnQoKS52
YWx1ZV9vcigwKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucGF0aCwgdXJsLnBhdGgoKSkp
OwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnF1ZXJ5LCB1cmwucXVlcnkoKSkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312513</attachid>
            <date>2017-06-09 17:05:49 -0700</date>
            <delta_ts>2018-08-01 13:13:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173192-20170609170641.patch</filename>
            <type>text/plain</type>
            <size>50944</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxODAyOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBACisyMDE3LTA2LTA5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVVJMOjpob3N0
IHNob3VsZCByZXR1cm4gYSBTdHJpbmdWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMxOTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuICBKdXN0IGZld2VyIGNv
cGllcyBhbmQgYWxsb2NhdGlvbnMuCisKKyAgICAgICAgKiBNb2R1bGVzL3BsdWdpbnMvWW91VHVi
ZVBsdWdpblJlcGxhY2VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmlzWW91VHViZVVSTCk6
CisgICAgICAgIChXZWJDb3JlOjpwcm9jZXNzQW5kQ3JlYXRlWW91VHViZVVSTCk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpob3N0TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6
Omhvc3QpOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb246
OnBvcHVsYXRlQ29uZGl0aW9uQ2FjaGVJZk5lZWRlZCk6CisgICAgICAgICogZG9tL0RPTUltcGxl
bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uOjpjcmVh
dGVEb2N1bWVudCk6CisgICAgICAgICogaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MQW5jaG9yRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAg
ICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllckRvY3VtZW50SG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpu
ZWVkc1NlZWtpbmdTdXBwb3J0UXVpcmspOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdl
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojpy
ZXN0YXJ0U2ltaWxhclBsdWdJbnMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdl
RWxlbWVudDo6dXNlckRpZENsaWNrU25hcHNob3QpOgorICAgICAgICAqIGh0bWwvSW1hZ2VEb2N1
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURvY3VtZW50OjpmaW5pc2hlZFBhcnNp
bmcpOgorICAgICAgICAqIGh0bWwvVVJMVXRpbHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlVSTFV0
aWxzPFQ+Ojpob3N0bmFtZSk6CisgICAgICAgICogbG9hZGVyL0xpbmtMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGlua0xvYWRlcjo6bG9hZExpbmspOgorICAgICAgICAqIGxvYWRlci9S
ZXNvdXJjZUxvYWRPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRP
YnNlcnZlcjo6cHJpbWFyeURvbWFpbik6CisgICAgICAgICogbG9hZGVyL21hYy9Mb2FkZXJOU1VS
TEV4dHJhcy5tbToKKyAgICAgICAgKHN1Z2dlc3RlZEZpbGVuYW1lV2l0aE1JTUVUeXBlKToKKyAg
ICAgICAgKiBwYWdlL0Nocm9tZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWU6Om1vdXNl
RGlkTW92ZU92ZXJFbGVtZW50KToKKyAgICAgICAgKiBwYWdlL0xvY2F0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpob3N0bmFtZSk6CisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6Om1haW5GcmFtZUxvYWRTdGFydGVkKToKKyAgICAg
ICAgKiBwYWdlL1BlcmZvcm1hbmNlTW9uaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZXBv
cnRQYWdlT3ZlclBvc3RMb2FkUmVzb3VyY2VUaHJlc2hvbGQpOgorICAgICAgICAqIHBhZ2UvUGx1
Z0luQ2xpZW50Lmg6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAqIHBh
Z2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJDb250
ZW50VVJMUGF0dGVybjo6bWF0Y2hlc0hvc3QpOgorICAgICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRT
ZWN1cml0eVBvbGljeVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50U2VjdXJp
dHlQb2xpY3lTb3VyY2U6Omhvc3RNYXRjaGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9VUkwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VVJMOjpob3N0KToKKyAgICAgICAgKFdlYkNvcmU6OlVSTDo6
aG9zdEFuZFBvcnQpOgorICAgICAgICAqIHBsYXRmb3JtL1VSTC5oOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpzaWduZWRQ
dWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y2YvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0
UGFydGl0aW9uaW5nRG9tYWluKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJl
YW1IYW5kbGVJbXBsOjpjcmVhdGVTdHJlYW1zKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckxv
Y2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckxvY2F0aW9uOjpob3N0bmFtZSk6
CisKIDIwMTctMDYtMDkgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAg
ICAgIEltcGxlbWVudCBXM0MgU2VjdXJlIENvbnRleHRzIERyYWZ0IFNwZWNpZmljYXRpb24KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VU
dWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCShyZXZpc2lvbiAyMTgwMjkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTgxLDcgKzE4MSw3IEBAIHN0YXRpYyBib29sIGhhc0Nhc2VJbnNlbnNpdGl2
ZVByZWZpeChjb24KICAgICAKIHN0YXRpYyBib29sIGlzWW91VHViZVVSTChjb25zdCBVUkwmIHVy
bCkKIHsKLSAgICBTdHJpbmcgaG9zdE5hbWUgPSB1cmwuaG9zdCgpOworICAgIFN0cmluZ1ZpZXcg
aG9zdE5hbWUgPSB1cmwuaG9zdCgpOwogICAgIHJldHVybiBlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShob3N0TmFtZSwgIm0ueW91dHViZS5jb20iKQogICAgICAgICB8fCBlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShob3N0TmFtZSwgInlvdXR1LmJlIikKICAgICAgICAgfHwgZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaG9zdE5hbWUsICJ3d3cueW91dHViZS5jb20iKQpA
QCAtMjA4LDcgKzIwOCw3IEBAIHN0YXRpYyBVUkwgcHJvY2Vzc0FuZENyZWF0ZVlvdVR1YmVVUkwo
Y28KICAgICBpZiAoIWlzWW91VHViZVVSTCh1cmwpKQogICAgICAgICByZXR1cm4gVVJMKCk7CiAK
LSAgICBTdHJpbmcgaG9zdE5hbWUgPSB1cmwuaG9zdCgpOworICAgIFN0cmluZ1ZpZXcgaG9zdE5h
bWUgPSB1cmwuaG9zdCgpOwogICAgIGJvb2wgaXNZb3VUdWJlTW9iaWxlV2ViQXBwVVJMID0gZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoaG9zdE5hbWUsICJtLnlvdXR1YmUuY29tIik7CiAg
ICAgaXNZb3VUdWJlU2hvcnRlbmVkVVJMID0gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uo
aG9zdE5hbWUsICJ5b3V0dS5iZSIpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAkocmV2aXNpb24g
MjE4MDI5KQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIFN0cmlu
ZyBob3N0TmFtZShjb25zdCBVUkwmIHVybCwgYgogewogICAgIEFTU0VSVCh1cmwucHJvdG9jb2xJ
cygid3NzIikgPT0gc2VjdXJlKTsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7Ci0gICAgYnVp
bGRlci5hcHBlbmQodXJsLmhvc3QoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpKTsKKyAgICBi
dWlsZGVyLmFwcGVuZCh1cmwuaG9zdCgpLnRvU3RyaW5nKCkuY29udmVydFRvQVNDSUlMb3dlcmNh
c2UoKSk7CiAgICAgaWYgKHVybC5wb3J0KCkgJiYgKCghc2VjdXJlICYmIHVybC5wb3J0KCkudmFs
dWUoKSAhPSA4MCkgfHwgKHNlY3VyZSAmJiB1cmwucG9ydCgpLnZhbHVlKCkgIT0gNDQzKSkpIHsK
ICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzonKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmROdW1i
ZXIodXJsLnBvcnQoKS52YWx1ZSgpKTsKQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIFdlYlNvY2tl
dEhhbmRzaGFrZTo6c2V0VVJMKGNvbnN0IFVSCiAvLyBGSVhNRTogUmV0dXJuIHR5cGUgc2hvdWxk
IGp1c3QgYmUgU3RyaW5nLCBub3QgY29uc3QgU3RyaW5nLgogY29uc3QgU3RyaW5nIFdlYlNvY2tl
dEhhbmRzaGFrZTo6aG9zdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdXJsLmhvc3QoKS5jb252
ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOworICAgIHJldHVybiBtX3VybC5ob3N0KCkudG9TdHJpbmco
KS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwogfQogCiBjb25zdCBTdHJpbmcmIFdlYlNvY2tl
dEhhbmRzaGFrZTo6Y2xpZW50UHJvdG9jb2woKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbi5jcHAJKHJldmlz
aW9uIDIxODAyOSkKKysrIFNvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBDb250
ZW50RXh0ZW5zaW9uOjpwb3B1bGF0ZUNvbmRpdGlvbgogICAgIGlmIChtX2NhY2hlZFRvcFVSTCAh
PSB0b3BVUkwpIHsKICAgICAgICAgREZBQnl0ZWNvZGVJbnRlcnByZXRlciBpbnRlcnByZXRlciht
X2NvbXBpbGVkRXh0ZW5zaW9uLT50b3BVUkxGaWx0ZXJzQnl0ZWNvZGUoKSwgbV9jb21waWxlZEV4
dGVuc2lvbi0+dG9wVVJMRmlsdGVyc0J5dGVjb2RlTGVuZ3RoKCkpOwogICAgICAgICBjb25zdCB1
aW50MTZfdCBhbGxMb2FkVHlwZXNBbmRSZXNvdXJjZVR5cGVzID0gTG9hZFR5cGVNYXNrIHwgUmVz
b3VyY2VUeXBlTWFzazsKLSAgICAgICAgU3RyaW5nIHN0cmluZyA9IG1fY29tcGlsZWRFeHRlbnNp
b24tPmNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbigpID8gdG9wVVJMLmhvc3QoKSA6IHRvcFVS
TC5zdHJpbmcoKTsKKyAgICAgICAgU3RyaW5nIHN0cmluZyA9IG1fY29tcGlsZWRFeHRlbnNpb24t
PmNvbmRpdGlvbnNBcHBseU9ubHlUb0RvbWFpbigpID8gdG9wVVJMLmhvc3QoKS50b1N0cmluZygp
IDogdG9wVVJMLnN0cmluZygpOwogICAgICAgICBhdXRvIHRvcFVSTEFjdGlvbnMgPSBpbnRlcnBy
ZXRlci5pbnRlcnByZXQoc3RyaW5nLnV0ZjgoKSwgYWxsTG9hZFR5cGVzQW5kUmVzb3VyY2VUeXBl
cyk7CiAgICAgICAgIAogICAgICAgICBtX2NhY2hlZFRvcFVSTEFjdGlvbnMuY2xlYXIoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAkocmV2aXNpb24gMjE4
MDI5KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTkzLDcgKzE5Myw3IEBAIFJlZjxEb2N1bWVudD4gRE9NSW1wbGVtZW50YXRp
b246OmNyZWF0ZUQKICNpZiBFTkFCTEUoVklERU8pCiAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRo
ZSB0eXBlIGNhbiBiZSBwbGF5ZWQgYnkgb3VyIE1lZGlhUGxheWVyLCBpZiBzbyBjcmVhdGUgYSBN
ZWRpYURvY3VtZW50CiAgICAgLy8gS2V5IHN5c3RlbSBpcyBub3QgYXBwbGljYWJsZSBoZXJlLgot
ICAgIERPTUltcGxlbWVudGF0aW9uU3VwcG9ydHNUeXBlQ2xpZW50IGNsaWVudChmcmFtZSAmJiBm
cmFtZS0+c2V0dGluZ3MoKS5uZWVkc1NpdGVTcGVjaWZpY1F1aXJrcygpLCB1cmwuaG9zdCgpKTsK
KyAgICBET01JbXBsZW1lbnRhdGlvblN1cHBvcnRzVHlwZUNsaWVudCBjbGllbnQoZnJhbWUgJiYg
ZnJhbWUtPnNldHRpbmdzKCkubmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSwgdXJsLmhvc3QoKS50
b1N0cmluZygpKTsKICAgICBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7
CiAgICAgcGFyYW1ldGVycy50eXBlID0gQ29udGVudFR5cGUodHlwZSk7CiAgICAgcGFyYW1ldGVy
cy51cmwgPSB1cmw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBbmNob3JFbGVtZW50
LmNwcAkocmV2aXNpb24gMjE4MDI5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9y
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIEhUTUxB
bmNob3JFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjCiAgICAgICAgICAgICBTdHJpbmcgcGFyc2Vk
VVJMID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHZhbHVlKTsKICAgICAgICAg
ICAgIGlmIChkb2N1bWVudCgpLmlzRE5TUHJlZmV0Y2hFbmFibGVkKCkgJiYgZG9jdW1lbnQoKS5m
cmFtZSgpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHByb3RvY29sSXNJbkhUVFBGYW1pbHkocGFy
c2VkVVJMKSB8fCBwYXJzZWRVUkwuc3RhcnRzV2l0aCgiLy8iKSkKLSAgICAgICAgICAgICAgICAg
ICAgZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5wcmVmZXRjaEROUyhkb2N1
bWVudCgpLmNvbXBsZXRlVVJMKHBhcnNlZFVSTCkuaG9zdCgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgZG9jdW1lbnQoKS5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5wcmVmZXRjaEROUyhkb2N1
bWVudCgpLmNvbXBsZXRlVVJMKHBhcnNlZFVSTCkuaG9zdCgpLnRvU3RyaW5nKCkpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGludmFsaWRhdGVDYWNoZWRWaXNpdGVkTGlua0hh
c2goKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2
aXNpb24gMjE4MDI5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjQ2MCw3ICs2NDYwLDcgQEAgYm9vbCBIVE1MTWVkaWFFbGVt
ZW50OjptZWRpYVBsYXllck5lZWRzUwogCiBTdHJpbmcgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQ
bGF5ZXJEb2N1bWVudEhvc3QoKSBjb25zdAogewotICAgIHJldHVybiBkb2N1bWVudCgpLnVybCgp
Lmhvc3QoKTsKKyAgICByZXR1cm4gZG9jdW1lbnQoKS51cmwoKS5ob3N0KCkudG9TdHJpbmcoKTsK
IH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjptZWRpYVBsYXllckVudGVyRnVsbHNjcmVlbigp
CkBAIC03MTA5LDcgKzcxMDksNyBAQCBzdGF0aWMgYm9vbCBuZWVkc1NlZWtpbmdTdXBwb3J0UXVp
cmsoRG9jCiAgICAgaWYgKCFkb2N1bWVudC5zZXR0aW5ncygpLm5lZWRzU2l0ZVNwZWNpZmljUXVp
cmtzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIAotICAgIFN0cmluZyBo
b3N0ID0gZG9jdW1lbnQudG9wRG9jdW1lbnQoKS51cmwoKS5ob3N0KCk7CisgICAgU3RyaW5nVmll
dyBob3N0ID0gZG9jdW1lbnQudG9wRG9jdW1lbnQoKS51cmwoKS5ob3N0KCk7CiAgICAgcmV0dXJu
IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGhvc3QsICJuZXRmbGl4LmNvbSIpIHx8IGhv
c3QuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLm5ldGZsaXguY29tIik7CiB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcAkocmV2
aXNpb24gMjE4MDI5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEwLDcgKzQxMCw3IEBAIHZvaWQgSFRNTFBsdWdJ
bkltYWdlRWxlbWVudDo6cmVzdGFydFNpbWkKICAgICAvLyBSZXN0YXJ0IGFueSBvdGhlciBzbmFw
c2hvdHRlZCBwbHVnaW5zIGluIHRoZSBwYWdlIHdpdGggdGhlIHNhbWUgb3JpZ2luLiBOb3RlIHRo
YXQgdGhleQogICAgIC8vIG1heSBiZSBpbiBkaWZmZXJlbnQgZnJhbWVzLCBzbyB0cmF2ZXJzZSBm
cm9tIHRoZSB0b3Agb2YgdGhlIGRvY3VtZW50LgogCi0gICAgU3RyaW5nIHBsdWdJbk9yaWdpbiA9
IG1fbG9hZGVkVXJsLmhvc3QoKTsKKyAgICBTdHJpbmdWaWV3IHBsdWdJbk9yaWdpbiA9IG1fbG9h
ZGVkVXJsLmhvc3QoKTsKICAgICBTdHJpbmcgbWltZVR5cGUgPSBsb2FkZWRNaW1lVHlwZSgpOwog
ICAgIFZlY3RvcjxSZWY8SFRNTFBsdWdJbkltYWdlRWxlbWVudD4+IHNpbWlsYXJQbHVnaW5zOwog
CkBAIC00NDQsNyArNDQ0LDcgQEAgdm9pZCBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Ojp1c2VyRGlk
Q2xpYwogICAgIGlmIChmb3J3YXJkRXZlbnQpCiAgICAgICAgIG1fcGVuZGluZ0NsaWNrRXZlbnRG
cm9tU25hcHNob3QgPSAmZXZlbnQ7CiAKLSAgICBTdHJpbmcgcGx1Z0luT3JpZ2luID0gbV9sb2Fk
ZWRVcmwuaG9zdCgpOworICAgIFN0cmluZ1ZpZXcgcGx1Z0luT3JpZ2luID0gbV9sb2FkZWRVcmwu
aG9zdCgpOwogICAgIGlmIChkb2N1bWVudCgpLnBhZ2UoKSAmJiAhU2NoZW1lUmVnaXN0cnk6OnNo
b3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbChkb2N1bWVudCgpLnBhZ2UoKS0+bWFpbkZyYW1lKCku
ZG9jdW1lbnQoKS0+YmFzZVVSTCgpLnByb3RvY29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygp
KSAmJiBkb2N1bWVudCgpLnBhZ2UoKS0+c2V0dGluZ3MoKS5hdXRvc3RhcnRPcmlnaW5QbHVnSW5T
bmFwc2hvdHRpbmdFbmFibGVkKCkpCiAgICAgICAgIGRvY3VtZW50KCkucGFnZSgpLT5wbHVnSW5D
bGllbnQoKS0+ZGlkU3RhcnRGcm9tT3JpZ2luKGRvY3VtZW50KCkucGFnZSgpLT5tYWluRnJhbWUo
KS5kb2N1bWVudCgpLT5iYXNlVVJMKCkuaG9zdCgpLCBwbHVnSW5PcmlnaW4sIGxvYWRlZE1pbWVU
eXBlKCksIGRvY3VtZW50KCkucGFnZSgpLT5zZXNzaW9uSUQoKSk7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSW1hZ2VEb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAkocmV2aXNpb24gMjE4MDI5KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9JbWFnZURvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDcgKzE2
Myw3IEBAIHZvaWQgSW1hZ2VEb2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKCkKICAgICAgICAgICAg
IC8vIGJhY2sgb24gdGhlIGhvc3RuYW1lIGlmIHRoZXJlIGlzIG5vIHBhdGguCiAgICAgICAgICAg
ICBTdHJpbmcgbmFtZSA9IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyh1cmwoKS5sYXN0UGF0aENv
bXBvbmVudCgpKTsKICAgICAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgICAg
ICAgICBuYW1lID0gdXJsKCkuaG9zdCgpOworICAgICAgICAgICAgICAgIG5hbWUgPSB1cmwoKS5o
b3N0KCkudG9TdHJpbmcoKTsKICAgICAgICAgICAgIHNldFRpdGxlKGltYWdlVGl0bGUobmFtZSwg
c2l6ZSkpOwogICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmgJKHJldmlzaW9u
IDIxODAyOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvVVJMVXRpbHMuaAkod29ya2luZyBjb3B5
KQpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgVVJMVXRpbHM8VD46OnNldEhvc3QoY29uc3QgU3Ry
aW5nJiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogU3RyaW5nIFVSTFV0aWxzPFQ+Ojpob3N0bmFt
ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhyZWYoKS5ob3N0KCk7CisgICAgcmV0dXJuIGhyZWYo
KS5ob3N0KCkudG9TdHJpbmcoKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvbG9hZGVyL0xpbmtMb2FkZXIuY3BwCShyZXZpc2lvbiAyMTgwMjkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTGlua0xvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0Nyw3
ICsyNDcsNyBAQCBib29sIExpbmtMb2FkZXI6OmxvYWRMaW5rKGNvbnN0IExpbmtSZWxBCiAgICAg
ICAgIC8vIEZJWE1FOiBUaGUgaHJlZiBhdHRyaWJ1dGUgb2YgdGhlIGxpbmsgZWxlbWVudCBjYW4g
YmUgaW4gIi8vaG9zdG5hbWUiIGZvcm0sIGFuZCB3ZSBzaG91bGRuJ3QgYXR0ZW1wdAogICAgICAg
ICAvLyB0byBjb21wbGV0ZSB0aGF0IGFzIFVSTCA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQ4ODU3Pi4KICAgICAgICAgaWYgKGRvY3VtZW50LnNldHRpbmdzKCkuZG5z
UHJlZmV0Y2hpbmdFbmFibGVkKCkgJiYgaHJlZi5pc1ZhbGlkKCkgJiYgIWhyZWYuaXNFbXB0eSgp
ICYmIGRvY3VtZW50LmZyYW1lKCkpCi0gICAgICAgICAgICBkb2N1bWVudC5mcmFtZSgpLT5sb2Fk
ZXIoKS5jbGllbnQoKS5wcmVmZXRjaEROUyhocmVmLmhvc3QoKSk7CisgICAgICAgICAgICBkb2N1
bWVudC5mcmFtZSgpLT5sb2FkZXIoKS5jbGllbnQoKS5wcmVmZXRjaEROUyhocmVmLmhvc3QoKS50
b1N0cmluZygpKTsKICAgICB9CiAKICAgICBpZiAobV9jbGllbnQuc2hvdWxkTG9hZExpbmsoKSkg
ewpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZE9ic2VydmVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkT2JzZXJ2ZXIu
Y3BwCShyZXZpc2lvbiAyMTgwMjkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkT2JzZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODYsNyArNTg2LDcgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRPYnNlcnZlcjo6ZmlyZVNob3VsZFBhcgogCiBTdHJpbmcgUmVzb3VyY2VMb2Fk
T2JzZXJ2ZXI6OnByaW1hcnlEb21haW4oY29uc3QgVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIHBy
aW1hcnlEb21haW4odXJsLmhvc3QoKSk7CisgICAgcmV0dXJuIHByaW1hcnlEb21haW4odXJsLmhv
c3QoKS50b1N0cmluZygpKTsKIH0KIAogU3RyaW5nIFJlc291cmNlTG9hZE9ic2VydmVyOjpwcmlt
YXJ5RG9tYWluKGNvbnN0IFN0cmluZyYgaG9zdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9tYWMvTG9hZGVyTlNVUkxFeHRyYXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL21hYy9Mb2FkZXJOU1VSTEV4dHJhcy5tbQkocmV2aXNpb24gMjE4MDI5KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9Mb2FkZXJOU1VSTEV4dHJhcy5tbQkod29ya2luZyBjb3B5
KQpAQCAtNDksNyArNDksNyBAQCBOU1N0cmluZyAqc3VnZ2VzdGVkRmlsZW5hbWVXaXRoTUlNRVR5
cGUoCiAKICAgICBpZiAoW2ZpbGVuYW1lIGxlbmd0aF0gPT0gMCB8fCBbbGFzdFBhdGhDb21wb25l
bnQgaXNFcXVhbFRvU3RyaW5nOkAiLyJdKSB7CiAgICAgICAgIC8vIGxhc3RQYXRoQ29tcG9uZW50
IGlzIG5vIGdvb2QsIHRyeSB0aGUgaG9zdC4KLSAgICAgICAgTlNTdHJpbmcgKmhvc3QgPSBVUkwo
dXJsKS5ob3N0KCk7CisgICAgICAgIE5TU3RyaW5nICpob3N0ID0gVVJMKHVybCkuaG9zdCgpLnRv
U3RyaW5nKCk7CiAgICAgICAgIGZpbGVuYW1lID0gZmlsZW5hbWVCeUZpeGluZ0lsbGVnYWxDaGFy
YWN0ZXJzKGhvc3QpOwogICAgICAgICBpZiAoW2ZpbGVuYW1lIGxlbmd0aF0gPT0gMCkgewogICAg
ICAgICAgICAgLy8gQ2FuJ3QgbWFrZSBhIGZpbGVuYW1lIHVzaW5nIHRoaXMgVVJMLCB1c2UgInVu
a25vd24iLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAkocmV2aXNpb24gMjE4MDI5KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzUsNyAr
MzM1LDcgQEAgdm9pZCBDaHJvbWU6OnNldFN0YXR1c2JhclRleHQoRnJhbWUmIGZyYQogdm9pZCBD
aHJvbWU6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3Vs
dCwgdW5zaWduZWQgbW9kaWZpZXJGbGFncykKIHsKICAgICBpZiAocmVzdWx0LmlubmVyTm9kZSgp
ICYmIHJlc3VsdC5pbm5lck5vZGUoKS0+ZG9jdW1lbnQoKS5pc0ROU1ByZWZldGNoRW5hYmxlZCgp
KQotICAgICAgICBtX3BhZ2UubWFpbkZyYW1lKCkubG9hZGVyKCkuY2xpZW50KCkucHJlZmV0Y2hE
TlMocmVzdWx0LmFic29sdXRlTGlua1VSTCgpLmhvc3QoKSk7CisgICAgICAgIG1fcGFnZS5tYWlu
RnJhbWUoKS5sb2FkZXIoKS5jbGllbnQoKS5wcmVmZXRjaEROUyhyZXN1bHQuYWJzb2x1dGVMaW5r
VVJMKCkuaG9zdCgpLnRvU3RyaW5nKCkpOwogICAgIG1fY2xpZW50Lm1vdXNlRGlkTW92ZU92ZXJF
bGVtZW50KHJlc3VsdCwgbW9kaWZpZXJGbGFncyk7CiAKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KG1fcGFnZSwgcmVzdWx0LCBtb2RpZmllckZs
YWdzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCShyZXZpc2lvbiAyMTgwMjkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQs
NyArOTQsNyBAQCBTdHJpbmcgTG9jYXRpb246Omhvc3RuYW1lKCkgY29uc3QKICAgICBpZiAoIW1f
ZnJhbWUpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIHJldHVybiB1cmwoKS5ob3N0
KCk7CisgICAgcmV0dXJuIHVybCgpLmhvc3QoKS50b1N0cmluZygpOwogfQogCiBTdHJpbmcgTG9j
YXRpb246OnBvcnQoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiAyMTgw
MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTE2LDcgKzIxMTYsNyBAQCB2b2lkIFBhZ2U6Om1haW5GcmFtZUxvYWRTdGFydGVkKGNvbnN0IFVS
CiB7CiAgICAgU3RyaW5nIGRvbWFpbjsKICNpZiBFTkFCTEUoUFVCTElDX1NVRkZJWF9MSVNUKQot
ICAgIGRvbWFpbiA9IHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4oZGVzdGluYXRpb25VUkwu
aG9zdCgpKTsKKyAgICBkb21haW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKGRlc3Rp
bmF0aW9uVVJMLmhvc3QoKS50b1N0cmluZygpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGRl
c3RpbmF0aW9uVVJMKTsKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZU1vbml0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9y
bWFuY2VNb25pdG9yLmNwcAkocmV2aXNpb24gMjE4MDI5KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9QZXJmb3JtYW5jZU1vbml0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDgsNyArMTQ4LDcg
QEAgc3RhdGljIHZvaWQgcmVwb3J0UGFnZU92ZXJQb3N0TG9hZFJlc291cgogICAgIGlmICghZG9j
dW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBkb21haW4gPSB0b3BQcml2YXRl
bHlDb250cm9sbGVkRG9tYWluKGRvY3VtZW50LT51cmwoKS5ob3N0KCkpOworICAgIFN0cmluZyBk
b21haW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKGRvY3VtZW50LT51cmwoKS5ob3N0
KCkudG9TdHJpbmcoKSk7CiAgICAgaWYgKGRvbWFpbi5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QbHVnSW5DbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdJbkNsaWVudC5oCShyZXZpc2lvbiAyMTgwMjkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BsdWdJbkNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw4ICszMyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFBsdWdJbkNsaWVudCB7
CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhZ2VEZXN0cm95ZWQoKSA9IDA7Ci0gICAgdmly
dHVhbCBib29sIHNob3VsZEF1dG9TdGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBwYWdlT3Jp
Z2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBw
YWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgU2Vzc2lvbklEKSA9IDA7CisgICAgdmlydHVhbCBib29sIHNob3VsZEF1dG9TdGFydEZy
b21PcmlnaW4oU3RyaW5nVmlldyBwYWdlT3JpZ2luLCBTdHJpbmdWaWV3IHBsdWdpbk9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydEZy
b21PcmlnaW4oU3RyaW5nVmlldyBwYWdlT3JpZ2luLCBTdHJpbmdWaWV3IHBsdWdpbk9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgU2Vzc2lvbklEKSA9IDA7CiAKIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIH5QbHVnSW5DbGllbnQoKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2VjdXJpdHlPcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlPcmlnaW4uY3BwCShyZXZpc2lvbiAyMTgwMjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5T3JpZ2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHN0
YXRpYyBib29sIHNob3VsZFRyZWF0QXNQb3RlbnRpb25hbGx5VHIKIAogU2VjdXJpdHlPcmlnaW46
OlNlY3VyaXR5T3JpZ2luKGNvbnN0IFVSTCYgdXJsKQogICAgIDogbV9wcm90b2NvbCB7IHVybC5w
cm90b2NvbCgpLmlzTnVsbCgpID8gZW1wdHlTdHJpbmcoKSA6IHVybC5wcm90b2NvbCgpLnRvU3Ry
aW5nKCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKSB9Ci0gICAgLCBtX2hvc3QgeyB1cmwuaG9z
dCgpLmlzTnVsbCgpID8gZW1wdHlTdHJpbmcoKSA6IHVybC5ob3N0KCkuY29udmVydFRvQVNDSUlM
b3dlcmNhc2UoKSB9CisgICAgLCBtX2hvc3QgeyB1cmwuaG9zdCgpLmlzTnVsbCgpID8gZW1wdHlT
dHJpbmcoKSA6IHVybC5ob3N0KCkudG9TdHJpbmcoKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgp
IH0KICAgICAsIG1fcG9ydCB7IHVybC5wb3J0KCkgfQogewogICAgIC8vIGRvY3VtZW50LmRvbWFp
biBzdGFydHMgYXMgbV9ob3N0LCBidXQgY2FuIGJlIHNldCBieSB0aGUgRE9NLgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAkocmV2aXNpb24g
MjE4MDI5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFVSTFBhdHRlcm4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNyArMTI1LDcgQEAgYm9vbCBVc2VyQ29udGVudFVSTFBh
dHRlcm46Om1hdGNoZXMoY29ucwogCiBib29sIFVzZXJDb250ZW50VVJMUGF0dGVybjo6bWF0Y2hl
c0hvc3QoY29uc3QgVVJMJiB0ZXN0KSBjb25zdAogewotICAgIGNvbnN0IFN0cmluZyYgaG9zdCA9
IHRlc3QuaG9zdCgpOworICAgIFN0cmluZ1ZpZXcgaG9zdCA9IHRlc3QuaG9zdCgpOwogICAgIGlm
IChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKGhvc3QsIG1faG9zdCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCkBAIC0xMzgsNyArMTM4LDcgQEAgYm9vbCBVc2VyQ29udGVudFVSTFBhdHRlcm46Om1h
dGNoZXNIb3N0KAogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIENoZWNrIGlmIHRoZSBk
b21haW4gaXMgYSBzdWJkb21haW4gb2Ygb3VyIGhvc3QuCi0gICAgaWYgKCFob3N0LmVuZHNXaXRo
KG1faG9zdCwgZmFsc2UpKQorICAgIGlmICghaG9zdC50b1N0cmluZygpLmVuZHNXaXRoKG1faG9z
dCwgZmFsc2UpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBBU1NFUlQoaG9zdC5sZW5n
dGgoKSA+IG1faG9zdC5sZW5ndGgoKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9D
b250ZW50U2VjdXJpdHlQb2xpY3lTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNvdXJjZS5jcHAJKHJldmlzaW9uIDIx
ODAyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeVNv
dXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDEwICs2MywxMCBAQCBib29sIENvbnRlbnRT
ZWN1cml0eVBvbGljeVNvdXJjZTo6c2NoZW1lCiAKIGJvb2wgQ29udGVudFNlY3VyaXR5UG9saWN5
U291cmNlOjpob3N0TWF0Y2hlcyhjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKLSAgICBjb25zdCBT
dHJpbmcmIGhvc3QgPSB1cmwuaG9zdCgpOworICAgIFN0cmluZ1ZpZXcgaG9zdCA9IHVybC5ob3N0
KCk7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoaG9zdCwgbV9ob3N0KSkKICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIG1faG9zdEhhc1dpbGRjYXJkICYmIGhvc3QuZW5k
c1dpdGgoIi4iICsgbV9ob3N0LCBmYWxzZSk7CisgICAgcmV0dXJuIG1faG9zdEhhc1dpbGRjYXJk
ICYmIGhvc3QudG9TdHJpbmcoKS5lbmRzV2l0aCgiLiIgKyBtX2hvc3QsIGZhbHNlKTsKIAogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAJKHJldmlzaW9uIDIxODAyOSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyNCwxMCArNDI0
LDEwIEBAIFN0cmluZ1ZpZXcgVVJMOjpwcm90b2NvbCgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmlu
Z1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZygwLCBtX3NjaGVtZUVuZCk7CiB9CiAKLVN0cmluZyBV
Ukw6Omhvc3QoKSBjb25zdAorU3RyaW5nVmlldyBVUkw6Omhvc3QoKSBjb25zdAogewogICAgIHVu
c2lnbmVkIHN0YXJ0ID0gaG9zdFN0YXJ0KCk7Ci0gICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmlu
ZyhzdGFydCwgbV9ob3N0RW5kIC0gc3RhcnQpOworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3Ry
aW5nKS5zdWJzdHJpbmcoc3RhcnQsIG1faG9zdEVuZCAtIHN0YXJ0KTsKIH0KIAogc3RkOjpvcHRp
b25hbDx1aW50MTZfdD4gVVJMOjpwb3J0KCkgY29uc3QKQEAgLTQ0OCw5ICs0NDgsOCBAQCBzdGQ6
Om9wdGlvbmFsPHVpbnQxNl90PiBVUkw6OnBvcnQoKSBjb25zCiAKIFN0cmluZyBVUkw6Omhvc3RB
bmRQb3J0KCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byBwb3J0ID0gdGhpcy0+cG9ydCgpKQotICAg
ICAgICByZXR1cm4gaG9zdCgpICsgJzonICsgU3RyaW5nOjpudW1iZXIocG9ydC52YWx1ZSgpKTsK
LSAgICByZXR1cm4gaG9zdCgpOworICAgIHVuc2lnbmVkIHN0YXJ0ID0gaG9zdFN0YXJ0KCk7Cisg
ICAgcmV0dXJuIG1fc3RyaW5nLnN1YnN0cmluZyhzdGFydCwgbV9wb3J0RW5kIC0gc3RhcnQpOwog
fQogCiBTdHJpbmcgVVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3QKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1VSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1VSTC5oCShyZXZpc2lvbiAyMTgwMjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9VUkwuaAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBTdHJpbmcgc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKHVuc2ln
bmVkIGxlbmd0aCA9IDEwMjQpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nVmll
dyBwcm90b2NvbCgpIGNvbnN0OwotICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBob3N0KCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nVmlldyBob3N0KCkgY29uc3Q7CiAgICAgV0VC
Q09SRV9FWFBPUlQgc3RkOjpvcHRpb25hbDx1aW50MTZfdD4gcG9ydCgpIGNvbnN0OwogICAgIFdF
QkNPUkVfRVhQT1JUIFN0cmluZyBob3N0QW5kUG9ydCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQ
T1JUIFN0cmluZyBwcm90b2NvbEhvc3RBbmRQb3J0KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9Vc2VyQWdlbnRRdWlya3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHAJKHJldmlzaW9uIDIxODAyOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1VzZXJBZ2VudFF1aXJrcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDcgKzM2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgYm9vbCBp
c0dvb2dsZShjb25zdCBVUkwmIHVybCkKIHsKLSAgICBTdHJpbmcgYmFzZURvbWFpbiA9IHRvcFBy
aXZhdGVseUNvbnRyb2xsZWREb21haW4odXJsLmhvc3QoKSk7CisgICAgU3RyaW5nIGJhc2VEb21h
aW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKHVybC5ob3N0KCkudG9TdHJpbmcoKSk7
CiAKICAgICAvLyBPdXIgR29vZ2xlIFVBIGlzICp2ZXJ5KiBjb21wbGljYXRlZCB0byBnZXQgcmln
aHQuIFJlYWQKICAgICAvLyBodHRwczovL3dlYmtpdC5vcmcvYi8xNDIwNzQgY2FyZWZ1bGx5IGJl
Zm9yZSBjaGFuZ2luZy4gVGVzdCB0aGF0IEVhcnRoCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyBi
b29sIGlzR29vZ2xlKGNvbnN0IFVSTCYgdXJsKQogLy8gdGhhdCB3b3JrcyBpbiBDaHJvbWUgdGhh
dCBXZWJLaXQgY2Fubm90IGhhbmRsZS4gUHJlZmVyIG90aGVyIHF1aXJrcyBpbnN0ZWFkLgogc3Rh
dGljIGJvb2wgdXJsUmVxdWlyZXNDaHJvbWVCcm93c2VyKGNvbnN0IFVSTCYgdXJsKQogewotICAg
IFN0cmluZyBiYXNlRG9tYWluID0gdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbih1cmwuaG9z
dCgpKTsKKyAgICBTdHJpbmcgYmFzZURvbWFpbiA9IHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21h
aW4odXJsLmhvc3QoKS50b1N0cmluZygpKTsKIAogICAgIC8vIE5lZWRlZCBmb3IgZm9udHMgb24g
bWFueSBzaXRlcyB0byB3b3JrIHdpdGggV2ViS2l0LgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDcyOTYKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIGJv
b2wgdXJsUmVxdWlyZXNDaHJvbWVCcm93c2VyKGNvbgogCiBzdGF0aWMgYm9vbCB1cmxSZXF1aXJl
c01hY2ludG9zaFBsYXRmb3JtKGNvbnN0IFVSTCYgdXJsKQogewotICAgIFN0cmluZyBiYXNlRG9t
YWluID0gdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbih1cmwuaG9zdCgpKTsKKyAgICBTdHJp
bmcgYmFzZURvbWFpbiA9IHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4odXJsLmhvc3QoKS50
b1N0cmluZygpKTsKIAogICAgIC8vIEF0IGxlYXN0IGZpbmFuY2UueWFob28uY29tIGRpc3BsYXlz
IGEgbW9iaWxlIHZlcnNpb24gd2l0aCBXZWJLaXRHVEsrJ3Mgc3RhbmRhcmQgdXNlciBhZ2VudC4K
ICAgICBpZiAoYmFzZURvbWFpbiA9PSAieWFob28uY29tIikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5tbQkocmV2aXNpb24gMjE4
MDI5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NTTEtleUdlbmVyYXRvck1hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjQwLDcgKzI0MCw3IEBAIFN0cmluZyBzaWduZWRQdWJsaWNL
ZXlBbmRDaGFsbGVuZ2VTdHJpbmcKIAogICAgIGF1dG8gY2hhbGxlbmdlID0gY2hhbGxlbmdlU3Ry
aW5nLmNvbnRhaW5zT25seUFTQ0lJKCkgPyBjaGFsbGVuZ2VTdHJpbmcuYXNjaWkoKSA6ICIiOwog
Ci0gICAgcmV0dXJuIHNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyhrZXlTaXplLCBj
aGFsbGVuZ2UsIGtleWdlbktleWNoYWluSXRlbU5hbWUodXJsLmhvc3QoKSkpOworICAgIHJldHVy
biBzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcoa2V5U2l6ZSwgY2hhbGxlbmdlLCBr
ZXlnZW5LZXljaGFpbkl0ZW1OYW1lKHVybC5ob3N0KCkudG9TdHJpbmcoKSkpOwogfQogCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAkocmV2aXNpb24gMjE4MDI5KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Np
b25DRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NCwxMiArMTc0LDEzIEBAIFN0cmluZyBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVN0b3IKIAogc3RhdGljIGlubGluZSBTdHJpbmcg
Z2V0UGFydGl0aW9uaW5nRG9tYWluKGNvbnN0IFVSTCYgdXJsKSAKIHsKKyAgICBhdXRvIGhvc3Qg
PSB1cmwuaG9zdCgpLnRvU3RyaW5nKCk7CiAjaWYgRU5BQkxFKFBVQkxJQ19TVUZGSVhfTElTVCkK
LSAgICBhdXRvIGRvbWFpbiA9IHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4odXJsLmhvc3Qo
KSk7CisgICAgYXV0byBkb21haW4gPSB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKGhvc3Qp
OwogICAgIGlmIChkb21haW4uaXNFbXB0eSgpKQotICAgICAgICBkb21haW4gPSB1cmwuaG9zdCgp
OworICAgICAgICBkb21haW4gPSBob3N0OwogI2Vsc2UKLSAgICBhdXRvIGRvbWFpbiA9IHVybC5o
b3N0KCk7CisgICAgYXV0byBkb21haW4gPSBob3N0OwogI2VuZGlmCiAgICAgcmV0dXJuIGRvbWFp
bjsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbENGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAJKHJldmlzaW9u
IDIxODAyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbENGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA5LDcgKzMwOSw3IEBA
IHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y3JlYXRlU3RyZWEKICAgICBpZiAobV9jb25u
ZWN0aW9uVHlwZSA9PSBVbmtub3duKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IGhvc3QgPSBtX3VybC5ob3N0KCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGhvc3QgPSBtX3VybC5ob3N0KCkudG9TdHJpbmcoKS5jcmVh
dGVDRlN0cmluZygpOwogCiAgICAgLy8gQ3JlYXRpbmcgc3RyZWFtcyB0byBmaW5hbCBkZXN0aW5h
dGlvbiwgbm90IHRvIHByb3h5LgogICAgIENGUmVhZFN0cmVhbVJlZiByZWFkU3RyZWFtID0gMDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb3VwTmV0d29ya1Nl
c3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9Tb3VwTmV0d29ya1Nlc3Npb24uY3BwCShyZXZpc2lvbiAyMTgwMjkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU291cE5ldHdvcmtTZXNzaW9uLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzA5LDcgKzMwOSw3IEBAIHZvaWQgU291cE5ldHdvcmtTZXNzaW9uOjpj
aGVja1RMU0Vycm9ycygKICAgICB9CiAKICAgICBVUkwgdXJsKHNvdXBfcmVxdWVzdF9nZXRfdXJp
KHNvdXBSZXF1ZXN0KSk7Ci0gICAgYXV0byBpdCA9IGNsaWVudENlcnRpZmljYXRlcygpLmZpbmQo
dXJsLmhvc3QoKSk7CisgICAgYXV0byBpdCA9IGNsaWVudENlcnRpZmljYXRlcygpLmZpbmQodXJs
Lmhvc3QoKS50b1N0cmluZygpKTsKICAgICBpZiAoaXQgIT0gY2xpZW50Q2VydGlmaWNhdGVzKCku
ZW5kKCkgJiYgaXQtPnZhbHVlLmNvbnRhaW5zKGNlcnRpZmljYXRlKSkgewogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcih7IH0pOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckxvY2F0aW9uLmNwcAkocmV2aXNpb24gMjE4MDI5KQorKysgU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJMb2NhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDcgKzQ4LDcgQEAgU3RyaW5nIFdvcmtlckxvY2F0aW9uOjpob3N0KCkgY29uc3QKIAogU3RyaW5n
IFdvcmtlckxvY2F0aW9uOjpob3N0bmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fdXJsLmhv
c3QoKTsKKyAgICByZXR1cm4gbV91cmwuaG9zdCgpLnRvU3RyaW5nKCk7CiB9CiAKIFN0cmluZyBX
b3JrZXJMb2NhdGlvbjo6cG9ydCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTgw
MjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSw0MyBAQAorMjAxNy0wNi0wOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgorCisgICAgICAgIFVSTDo6aG9zdCBzaG91bGQgcmV0dXJuIGEgU3RyaW5nVmlldwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczMTkyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmZldGNoRGlza0Nh
Y2hlRW50cmllcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNz
TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpvdmVycmlkZVN5c3RlbVByb3hpZXMpOgorICAgICAg
ICAqIFNoYXJlZC9BUEkvQVBJVVJMLmg6CisgICAgICAgIChBUEk6OlVSTDo6aG9zdCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6YWRkU2luZ2xlQ29va2llKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViQXV0b21hdGlvblNlc3Npb246OmRlbGV0ZUFsbENvb2tpZXMpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luVmlldzo6cGx1Z2luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbik6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBsdWdpbkluZm9Qcm92aWRlcjo6cG9wdWxhdGVQbHVnaW5DYWNoZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdpbkluZm9Qcm92aWRlcjo6cGx1Z2luTG9hZENsaWVu
dFBvbGljeUZvckhvc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5J
bmZvUHJvdmlkZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
dWdJbkNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdJbkNsaWVudDo6c2hvdWxk
QXV0b1N0YXJ0RnJvbU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBsdWdJbkNsaWVudDo6
ZGlkU3RhcnRGcm9tT3JpZ2luKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBsdWdJbkNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6bmVlZHNIaWRkZW5Db250ZW50RWRpdGFibGVRdWlyayk6
CisgICAgICAgIChXZWJLaXQ6Om5lZWRzUGxhaW5UZXh0UXVpcmspOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpkZXRlcm1pbmVQcmltYXJ5U25hcHNob3R0ZWRQbHVnSW4pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjptYXRjaGVzUHJpbWFyeVBsdWdJbik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3Mu
Y3BwOgorICAgICAgICAoV2ViS2l0OjphZGRDYXNlRm9sZGVkQ2hhcmFjdGVycyk6CisgICAgICAg
IChXZWJLaXQ6Omhhc2hGb3JQbHVnSW5PcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzOjpzaG91bGRQbHVnSW5BdXRvU3RhcnRGcm9tT3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6cGx1Z0luRGlkU3RhcnRGcm9tT3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6cGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisKIDIwMTctMDYtMDkgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgV1RGOjpGdW5jdGlvbiBpbnN0ZWFkIG9mIHN0
ZDo6ZnVuY3Rpb24gaW4gTmV0d29ya1Byb2Nlc3MgY29kZQpJbmRleDogU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAkocmV2aXNpb24gMjE4MDI5
KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNDUsNyArMzQ1LDcgQEAgc3RhdGljIHZvaWQgZmV0Y2hEaXNrQ2Fj
aGVFbnRyaWVzKFNlc3NpbwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBhdXRvIHVybCA9
IHRyYXZlcnNhbEVudHJ5LT5lbnRyeS5yZXNwb25zZSgpLnVybCgpOwotICAgICAgICAgICAgYXV0
byByZXN1bHQgPSBvcmlnaW5zQW5kU2l6ZXMuYWRkKHt1cmwucHJvdG9jb2woKS50b1N0cmluZygp
LCB1cmwuaG9zdCgpLCB1cmwucG9ydCgpfSwgMCk7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9
IG9yaWdpbnNBbmRTaXplcy5hZGQoe3VybC5wcm90b2NvbCgpLnRvU3RyaW5nKCksIHVybC5ob3N0
KCkudG9TdHJpbmcoKSwgdXJsLnBvcnQoKX0sIDApOwogCiAgICAgICAgICAgICBpZiAoZmV0Y2hP
cHRpb25zLmNvbnRhaW5zKFdlYnNpdGVEYXRhRmV0Y2hPcHRpb246OkNvbXB1dGVTaXplcykpCiAg
ICAgICAgICAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSArPSB0cmF2ZXJzYWxFbnRyeS0+
ZW50cnkuc291cmNlU3RvcmFnZVJlY29yZCgpLmhlYWRlci5zaXplKCkgKyB0cmF2ZXJzYWxFbnRy
eS0+cmVjb3JkSW5mby5ib2R5U2l6ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9j
ZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWMubW0JKHJldmlzaW9uIDIxODAy
OSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBzdGF0aWMgdm9pZCBvdmVycmlk
ZVN5c3RlbVByb3hpZXMoY29uc3QgCiAgICAgaWYgKCFodHRwUHJveHkuaXNOdWxsKCkpIHsKICAg
ICAgICAgVVJMIGh0dHBQcm94eVVSTChVUkwoKSwgaHR0cFByb3h5KTsKICAgICAgICAgaWYgKGh0
dHBQcm94eVVSTC5pc1ZhbGlkKCkpIHsKLSAgICAgICAgICAgIFtwcm94eVNldHRpbmdzIHNldE9i
amVjdDpuc1N0cmluZ0Zyb21XZWJDb3JlU3RyaW5nKGh0dHBQcm94eVVSTC5ob3N0KCkpIGZvcktl
eTooTlNTdHJpbmcgKilrQ0ZOZXR3b3JrUHJveGllc0hUVFBQcm94eV07CisgICAgICAgICAgICBb
cHJveHlTZXR0aW5ncyBzZXRPYmplY3Q6bnNTdHJpbmdGcm9tV2ViQ29yZVN0cmluZyhodHRwUHJv
eHlVUkwuaG9zdCgpLnRvU3RyaW5nKCkpIGZvcktleTooTlNTdHJpbmcgKilrQ0ZOZXR3b3JrUHJv
eGllc0hUVFBQcm94eV07CiAgICAgICAgICAgICBpZiAoaHR0cFByb3h5VVJMLnBvcnQoKSkgewog
ICAgICAgICAgICAgICAgIE5TTnVtYmVyICpwb3J0ID0gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6
aHR0cFByb3h5VVJMLnBvcnQoKS52YWx1ZSgpXTsKICAgICAgICAgICAgICAgICBbcHJveHlTZXR0
aW5ncyBzZXRPYmplY3Q6cG9ydCBmb3JLZXk6KE5TU3RyaW5nICopa0NGTmV0d29ya1Byb3hpZXNI
VFRQUG9ydF07CkBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyB2b2lkIG92ZXJyaWRlU3lzdGVtUHJv
eGllcyhjb25zdCAKICAgICBpZiAoIWh0dHBzUHJveHkuaXNOdWxsKCkpIHsKICAgICAgICAgVVJM
IGh0dHBzUHJveHlVUkwoVVJMKCksIGh0dHBzUHJveHkpOwogICAgICAgICBpZiAoaHR0cHNQcm94
eVVSTC5pc1ZhbGlkKCkpIHsKLSAgICAgICAgICAgIFtwcm94eVNldHRpbmdzIHNldE9iamVjdDpu
c1N0cmluZ0Zyb21XZWJDb3JlU3RyaW5nKGh0dHBzUHJveHlVUkwuaG9zdCgpKSBmb3JLZXk6KE5T
U3RyaW5nICopa0NGTmV0d29ya1Byb3hpZXNIVFRQU1Byb3h5XTsKKyAgICAgICAgICAgIFtwcm94
eVNldHRpbmdzIHNldE9iamVjdDpuc1N0cmluZ0Zyb21XZWJDb3JlU3RyaW5nKGh0dHBzUHJveHlV
UkwuaG9zdCgpLnRvU3RyaW5nKCkpIGZvcktleTooTlNTdHJpbmcgKilrQ0ZOZXR3b3JrUHJveGll
c0hUVFBTUHJveHldOwogICAgICAgICAgICAgaWYgKGh0dHBzUHJveHlVUkwucG9ydCgpKSB7CiAg
ICAgICAgICAgICAgICAgTlNOdW1iZXIgKnBvcnQgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aEludDpo
dHRwc1Byb3h5VVJMLnBvcnQoKS52YWx1ZSgpXTsKICAgICAgICAgICAgICAgICBbcHJveHlTZXR0
aW5ncyBzZXRPYmplY3Q6cG9ydCBmb3JLZXk6KE5TU3RyaW5nICopa0NGTmV0d29ya1Byb3hpZXNI
VFRQU1BvcnRdOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElVUkwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSVVSTC5oCShyZXZpc2lvbiAy
MTgwMjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSVVSTC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotI2lmbmRlZiBXZWJVUkxfaAotI2RlZmluZSBXZWJVUkxfaAorI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCIKQEAgLTY0LDcgKzYzLDcgQEAgcHVibGljOgogICAgIFdURjo6U3RyaW5nIGhvc3QoKSBj
b25zdAogICAgIHsKICAgICAgICAgcGFyc2VVUkxJZk5lY2Vzc2FyeSgpOwotICAgICAgICByZXR1
cm4gbV9wYXJzZWRVUkwtPmlzVmFsaWQoKSA/IG1fcGFyc2VkVVJMLT5ob3N0KCkgOiBXVEY6OlN0
cmluZygpOworICAgICAgICByZXR1cm4gbV9wYXJzZWRVUkwtPmlzVmFsaWQoKSA/IG1fcGFyc2Vk
VVJMLT5ob3N0KCkudG9TdHJpbmcoKSA6IFdURjo6U3RyaW5nKCk7CiAgICAgfQogCiAgICAgV1RG
OjpTdHJpbmcgcHJvdG9jb2woKSBjb25zdApAQCAtMTMwLDUgKzEyOSwzIEBAIHByaXZhdGU6CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFVSTF9oCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb24uY3BwCShyZXZpc2lvbiAyMTgwMjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc5NCw3ICs3OTQsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjphZGRTaW5n
bGVDb29rCiAKICAgICAvLyBJbmhlcml0IHRoZSBkb21haW4vaG9zdCBmcm9tIHRoZSBtYWluIGZy
YW1lJ3MgVVJMIGlmIGl0IGlzIG5vdCBleHBsaWNpdGx5IHNldC4KICAgICBpZiAoZG9tYWluLmlz
RW1wdHkoKSkKLSAgICAgICAgZG9tYWluID0gYWN0aXZlVVJMLmhvc3QoKTsKKyAgICAgICAgZG9t
YWluID0gYWN0aXZlVVJMLmhvc3QoKS50b1N0cmluZygpOwogCiAgICAgY29va2llLmRvbWFpbiA9
IGRvbWFpbjsKIApAQCAtODM4LDcgKzgzOCw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246
OmRlbGV0ZUFsbENvb2sKICAgICBBU1NFUlQoYWN0aXZlVVJMLmlzVmFsaWQoKSk7CiAKICAgICBX
ZWJDb29raWVNYW5hZ2VyUHJveHkqIGNvb2tpZU1hbmFnZXIgPSBtX3Byb2Nlc3NQb29sLT5zdXBw
bGVtZW50PFdlYkNvb2tpZU1hbmFnZXJQcm94eT4oKTsKLSAgICBjb29raWVNYW5hZ2VyLT5kZWxl
dGVDb29raWVzRm9ySG9zdG5hbWUocGFnZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgp
LCBhY3RpdmVVUkwuaG9zdCgpKTsKKyAgICBjb29raWVNYW5hZ2VyLT5kZWxldGVDb29raWVzRm9y
SG9zdG5hbWUocGFnZS0+d2Vic2l0ZURhdGFTdG9yZSgpLnNlc3Npb25JRCgpLCBhY3RpdmVVUkwu
aG9zdCgpLnRvU3RyaW5nKCkpOwogfQogCiAjaWYgVVNFKEFQUEtJVCkgfHwgUExBVEZPUk0oR1RL
KQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lv
biAyMTgwMjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03ODksNyArNzg5LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpjbGVhclJl
c291cmNlQ2FjaGVzKFJlcwogICAgIENyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGU6OnNp
bmdsZXRvbigpLmVtcHR5KCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZCBhZGRDYXNlRm9sZGVk
Q2hhcmFjdGVycyhTdHJpbmdIYXNoZXImIGhhc2hlciwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCitz
dGF0aWMgaW5saW5lIHZvaWQgYWRkQ2FzZUZvbGRlZENoYXJhY3RlcnMoU3RyaW5nSGFzaGVyJiBo
YXNoZXIsIFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CkBAIC04MDAsNyArODAwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFk
ZENhc2VGb2xkZWRDaGFyYWN0ZQogICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzPFVDaGFyLCBBU0NJ
SUNhc2VJbnNlbnNpdGl2ZUhhc2g6OmZvbGRDYXNlPFVDaGFyPj4oc3RyaW5nLmNoYXJhY3RlcnMx
NigpLCBzdHJpbmcubGVuZ3RoKCkpOwogfQogCi1zdGF0aWMgdW5zaWduZWQgaGFzaEZvclBsdWdJ
bk9yaWdpbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3Jp
Z2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKQorc3RhdGljIHVuc2lnbmVkIGhhc2hGb3JQbHVn
SW5PcmlnaW4oU3RyaW5nVmlldyBwYWdlT3JpZ2luLCBTdHJpbmdWaWV3IHBsdWdpbk9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAgICAvLyBXZSB3YW50IHRvIGF2b2lkIGNvbmNh
dGVuYXRpbmcgdGhlIHN0cmluZ3MgYW5kIHRoZW4gdGFraW5nIHRoZSBoYXNoLCBzaW5jZSB0aGF0
IGNvdWxkIGxlYWQgdG8gYW4gZXhwZW5zaXZlIGNvbnZlcnNpb24uCiAgICAgLy8gV2UgYWxzbyB3
YW50IHRvIGF2b2lkIHVzaW5nIHRoZSBoYXNoKCkgZnVuY3Rpb24gaW4gU3RyaW5nSW1wbCBvciBB
U0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2ggYmVjYXVzZSB0aGF0IG1hc2tzIG91dCBiaXRzIGZvciB0
aGUgdXNlIG9mIGZsYWdzLgpAQCAtODMyLDkgKzgzMiw5IEBAIGJvb2wgV2ViUHJvY2Vzczo6aXNQ
bHVnSW5BdXRvU3RhcnRPcmlnaW4KICAgICByZXR1cm4gY3VycmVudFRpbWUoKSA8IGl0LT52YWx1
ZTsKIH0KIAotYm9vbCBXZWJQcm9jZXNzOjpzaG91bGRQbHVnSW5BdXRvU3RhcnRGcm9tT3JpZ2lu
KFdlYlBhZ2UmIHdlYlBhZ2UsIGNvbnN0IFN0cmluZyYgcGFnZU9yaWdpbiwgY29uc3QgU3RyaW5n
JiBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCitib29sIFdlYlByb2Nlc3M6
OnNob3VsZFBsdWdJbkF1dG9TdGFydEZyb21PcmlnaW4oV2ViUGFnZSYgd2ViUGFnZSwgU3RyaW5n
VmlldyBwYWdlT3JpZ2luLCBTdHJpbmdWaWV3IHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkKIHsKLSAgICBpZiAoIXBsdWdpbk9yaWdpbi5pc0VtcHR5KCkgJiYgbV9wbHVnSW5B
dXRvU3RhcnRPcmlnaW5zLmNvbnRhaW5zKHBsdWdpbk9yaWdpbikpCisgICAgaWYgKCFwbHVnaW5P
cmlnaW4uaXNFbXB0eSgpICYmIG1fcGx1Z0luQXV0b1N0YXJ0T3JpZ2lucy5jb250YWlucyhwbHVn
aW5PcmlnaW4udG9TdHJpbmcoKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAjaWZkZWYgRU5B
QkxFX1BSSU1BUllfU05BUFNIT1RURURfUExVR0lOX0hFVVJJU1RJQwpAQCAtODQ5LDcgKzg0OSw3
IEBAIGJvb2wgV2ViUHJvY2Vzczo6c2hvdWxkUGx1Z0luQXV0b1N0YXJ0RnIKICAgICByZXR1cm4g
aXNQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKGhhc2hGb3JQbHVnSW5PcmlnaW4ocGFnZU9yaWdp
biwgcGx1Z2luT3JpZ2luLCBtaW1lVHlwZSksIHdlYlBhZ2Uuc2Vzc2lvbklEKCkpOwogfQogCi12
b2lkIFdlYlByb2Nlc3M6OnBsdWdJbkRpZFN0YXJ0RnJvbU9yaWdpbihjb25zdCBTdHJpbmcmIHBh
Z2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlLCBTZXNzaW9uSUQgc2Vzc2lvbklEKQordm9pZCBXZWJQcm9jZXNzOjpwbHVnSW5EaWRTdGFy
dEZyb21PcmlnaW4oU3RyaW5nVmlldyBwYWdlT3JpZ2luLCBTdHJpbmdWaWV3IHBsdWdpbk9yaWdp
biwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgU2Vzc2lvbklEIHNlc3Npb25JRCkKIHsKICAgICBp
ZiAocGFnZU9yaWdpbi5pc0VtcHR5KCkpIHsKICAgICAgICAgTE9HKFBsdWdpbnMsICJOb3QgYWRk
aW5nIGVtcHR5IHBhZ2Ugb3JpZ2luIik7CkBAIC04NjgsNyArODY4LDcgQEAgdm9pZCBXZWJQcm9j
ZXNzOjpwbHVnSW5EaWRTdGFydEZyb21PcmlnaQogICAgIC8vIGluY29ycmVjdCBmb3IgYSBsaXR0
bGUgd2hpbGUuCiAgICAgbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuYWRkKHNlc3Npb25J
RCwgSGFzaE1hcDx1bnNpZ25lZCwgZG91YmxlPigpKS5pdGVyYXRvci0+dmFsdWUuc2V0KHBsdWdJ
bk9yaWdpbkhhc2gsIGN1cnJlbnRUaW1lKCkgKyAzMCAqIDEwMDApOwogCi0gICAgcGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Bvb2w6OkFkZFBsdWdJ
bkF1dG9TdGFydE9yaWdpbkhhc2gocGFnZU9yaWdpbiwgcGx1Z0luT3JpZ2luSGFzaCwgc2Vzc2lv
bklEKSwgMCk7CisgICAgcGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
V2ViUHJvY2Vzc1Bvb2w6OkFkZFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2gocGFnZU9yaWdpbi50
b1N0cmluZygpLCBwbHVnSW5PcmlnaW5IYXNoLCBzZXNzaW9uSUQpLCAwKTsKIH0KIAogdm9pZCBX
ZWJQcm9jZXNzOjpkaWRBZGRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoKHVuc2lnbmVkIHBsdWdJ
bk9yaWdpbkhhc2gsIGRvdWJsZSBleHBpcmF0aW9uVGltZSwgU2Vzc2lvbklEIHNlc3Npb25JRCkK
QEAgLTg5MCw3ICs4OTAsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OnJlc2V0UGx1Z0luQXV0b1N0YXJ0
T3JpCiAgICAgbV9wbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMuc3dhcChjb25zdF9jYXN0PEhh
c2hNYXA8U2Vzc2lvbklELCBIYXNoTWFwPHVuc2lnbmVkLCBkb3VibGU+PiY+KGhhc2hlcykpOwog
fQogCi12b2lkIFdlYlByb2Nlc3M6OnBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24oY29u
c3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgU2Vzc2lvbklEIHNlc3Npb25JRCkKK3ZvaWQgV2ViUHJvY2Vzczo6
cGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihTdHJpbmdWaWV3IHBhZ2VPcmlnaW4sIFN0
cmluZ1ZpZXcgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBTZXNzaW9uSUQg
c2Vzc2lvbklEKQogewogICAgIGlmIChwYWdlT3JpZ2luLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHJldmlzaW9u
IDIxODAyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjgsOSArMTI4LDkgQEAgcHVibGljOgogICAgIGNvbnN0IFdlYkNvcmU6
Ok1hY2hTZW5kUmlnaHQmIGNvbXBvc2l0aW5nUmVuZGVyU2VydmVyUG9ydCgpIGNvbnN0IHsgcmV0
dXJuIG1fY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQb3J0OyB9CiAjZW5kaWYKIAotICAgIGJvb2wg
c2hvdWxkUGx1Z0luQXV0b1N0YXJ0RnJvbU9yaWdpbihXZWJQYWdlJiwgY29uc3QgU3RyaW5nJiBw
YWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSk7Ci0gICAgdm9pZCBwbHVnSW5EaWRTdGFydEZyb21PcmlnaW4oY29uc3QgU3RyaW5nJiBw
YWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgV2ViQ29yZTo6U2Vzc2lvbklEKTsKLSAgICB2b2lkIHBsdWdJbkRpZFJlY2VpdmVVc2Vy
SW50ZXJhY3Rpb24oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdp
bk9yaWdpbiwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgV2ViQ29yZTo6U2Vzc2lvbklEKTsKKyAg
ICBib29sIHNob3VsZFBsdWdJbkF1dG9TdGFydEZyb21PcmlnaW4oV2ViUGFnZSYsIFN0cmluZ1Zp
ZXcgcGFnZU9yaWdpbiwgU3RyaW5nVmlldyBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpOworICAgIHZvaWQgcGx1Z0luRGlkU3RhcnRGcm9tT3JpZ2luKFN0cmluZ1ZpZXcgcGFn
ZU9yaWdpbiwgU3RyaW5nVmlldyBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUs
IFdlYkNvcmU6OlNlc3Npb25JRCk7CisgICAgdm9pZCBwbHVnSW5EaWRSZWNlaXZlVXNlckludGVy
YWN0aW9uKFN0cmluZ1ZpZXcgcGFnZU9yaWdpbiwgU3RyaW5nVmlldyBwbHVnaW5PcmlnaW4sIGNv
bnN0IFN0cmluZyYgbWltZVR5cGUsIFdlYkNvcmU6OlNlc3Npb25JRCk7CiAgICAgdm9pZCBzZXRQ
bHVnaW5Mb2FkQ2xpZW50UG9saWN5KHVpbnQ4X3QgcG9saWN5LCBjb25zdCBTdHJpbmcmIGhvc3Qs
IGNvbnN0IFN0cmluZyYgYnVuZGxlSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uU3Ry
aW5nKTsKICAgICB2b2lkIGNsZWFyUGx1Z2luQ2xpZW50UG9saWNpZXMoKTsKICAgICB2b2lkIHJl
ZnJlc2hQbHVnaW5zKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwCShyZXZpc2lvbiAyMTgwMjkpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4
MzgsOCArMTgzOCw4IEBAIHZvaWQgUGx1Z2luVmlldzo6cGx1Z2luRGlkUmVjZWl2ZVVzZXJJbnQK
ICAgICBtX2RpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24gPSB0cnVlOwogCiAgICAgSFRNTFBsdWdJ
bkltYWdlRWxlbWVudCYgcGx1Z0luSW1hZ2VFbGVtZW50ID0gZG93bmNhc3Q8SFRNTFBsdWdJbklt
YWdlRWxlbWVudD4oKm1fcGx1Z2luRWxlbWVudCk7Ci0gICAgU3RyaW5nIHBhZ2VPcmlnaW4gPSBw
bHVnSW5JbWFnZUVsZW1lbnQuZG9jdW1lbnQoKS5wYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50
KCktPmJhc2VVUkwoKS5ob3N0KCk7Ci0gICAgU3RyaW5nIHBsdWdpbk9yaWdpbiA9IHBsdWdJbklt
YWdlRWxlbWVudC5sb2FkZWRVcmwoKS5ob3N0KCk7CisgICAgU3RyaW5nVmlldyBwYWdlT3JpZ2lu
ID0gcGx1Z0luSW1hZ2VFbGVtZW50LmRvY3VtZW50KCkucGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1
bWVudCgpLT5iYXNlVVJMKCkuaG9zdCgpOworICAgIFN0cmluZ1ZpZXcgcGx1Z2luT3JpZ2luID0g
cGx1Z0luSW1hZ2VFbGVtZW50LmxvYWRlZFVybCgpLmhvc3QoKTsKICAgICBTdHJpbmcgbWltZVR5
cGUgPSBwbHVnSW5JbWFnZUVsZW1lbnQubG9hZGVkTWltZVR5cGUoKTsKIAogICAgIFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLnBsdWdJbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24ocGFnZU9yaWdp
biwgcGx1Z2luT3JpZ2luLCBtaW1lVHlwZSwgcGx1Z0luSW1hZ2VFbGVtZW50LmRvY3VtZW50KCku
cGFnZSgpLT5zZXNzaW9uSUQoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcAkocmV2aXNp
b24gMjE4MDI5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdp
bkluZm9Qcm92aWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw3ICsxNTIsNyBAQCB2b2lk
IFdlYlBsdWdpbkluZm9Qcm92aWRlcjo6cG9wdWxhdGVQbHVnCiAgICAgfQogCiAjaWYgUExBVEZP
Uk0oTUFDKQotICAgIFN0cmluZyBwYWdlSG9zdCA9IHBhZ2UubWFpbkZyYW1lKCkubG9hZGVyKCku
ZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2VVUkwoKS5ob3N0KCk7CisgICAgU3RyaW5nVmlldyBw
YWdlSG9zdCA9IHBhZ2UubWFpbkZyYW1lKCkubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVz
cG9uc2VVUkwoKS5ob3N0KCk7CiAgICAgZm9yIChhdXRvJiBpbmZvIDogbV9jYWNoZWRQbHVnaW5z
KSB7CiAgICAgICAgIGlmIChhdXRvIGNsaWVudFBvbGljeSA9IHBsdWdpbkxvYWRDbGllbnRQb2xp
Y3lGb3JIb3N0KHBhZ2VIb3N0LCBpbmZvKSkKICAgICAgICAgICAgIGluZm8uY2xpZW50TG9hZFBv
bGljeSA9ICpjbGllbnRQb2xpY3k7CkBAIC0xNjQsOSArMTY0LDkgQEAgdm9pZCBXZWJQbHVnaW5J
bmZvUHJvdmlkZXI6OnBvcHVsYXRlUGx1ZwogI2VuZGlmCiAKICNpZiBQTEFURk9STShNQUMpCi1z
dGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlBsdWdpbkxvYWRDbGllbnRQb2xpY3k+IFdlYlBsdWdpbklu
Zm9Qcm92aWRlcjo6cGx1Z2luTG9hZENsaWVudFBvbGljeUZvckhvc3QoY29uc3QgU3RyaW5nJiBo
b3N0LCBjb25zdCBXZWJDb3JlOjpQbHVnaW5JbmZvJiBpbmZvKSBjb25zdAorc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5PiBXZWJQbHVnaW5JbmZvUHJvdmlkZXI6
OnBsdWdpbkxvYWRDbGllbnRQb2xpY3lGb3JIb3N0KFN0cmluZ1ZpZXcgaG9zdCwgY29uc3QgV2Vi
Q29yZTo6UGx1Z2luSW5mbyYgaW5mbykgY29uc3QKIHsKLSAgICBTdHJpbmcgaG9zdFRvTG9va1Vw
ID0gaG9zdDsKKyAgICBTdHJpbmcgaG9zdFRvTG9va1VwID0gaG9zdC50b1N0cmluZygpOwogICAg
IFN0cmluZyBpZGVudGlmaWVyID0gaW5mby5idW5kbGVJZGVudGlmaWVyOwogCiAgICAgYXV0byBw
b2xpY2llc0J5SWRlbnRpZmllckl0ZXJhdG9yID0gbV9ob3N0c1RvUGx1Z2luSWRlbnRpZmllckRh
dGEuZmluZChob3N0VG9Mb29rVXApOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuaAkocmV2aXNpb24g
MjE4MDI5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdpbklu
Zm9Qcm92aWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIHByaXZhdGU6CiAj
ZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKICNpZiBQTEFURk9STShNQUMp
Ci0gICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQbHVnaW5Mb2FkQ2xpZW50UG9saWN5PiBwbHVn
aW5Mb2FkQ2xpZW50UG9saWN5Rm9ySG9zdChjb25zdCBTdHJpbmcmLCBjb25zdCBXZWJDb3JlOjpQ
bHVnaW5JbmZvJikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQbHVnaW5Mb2Fk
Q2xpZW50UG9saWN5PiBwbHVnaW5Mb2FkQ2xpZW50UG9saWN5Rm9ySG9zdChTdHJpbmdWaWV3LCBj
b25zdCBXZWJDb3JlOjpQbHVnaW5JbmZvJikgY29uc3Q7CiAgICAgU3RyaW5nIGxvbmdlc3RNYXRj
aGVkV2lsZGNhcmRIb3N0Rm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QpIGNvbnN0OwogICAgIGJv
b2wgcmVwbGFjZUhvc3RXaXRoTWF0Y2hlZFdpbGRjYXJkSG9zdChTdHJpbmcmIGhvc3QsIGNvbnN0
IFN0cmluZyYgaWRlbnRpZmllcikgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5j
cHAJKHJldmlzaW9uIDIxODAyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViUGx1Z0luQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTIgKzQ4
LDEyIEBAIHZvaWQgV2ViUGx1Z0luQ2xpZW50OjpwYWdlRGVzdHJveWVkKCkKICAgICBkZWxldGUg
dGhpczsKIH0KIAotYm9vbCBXZWJQbHVnSW5DbGllbnQ6OnNob3VsZEF1dG9TdGFydEZyb21Pcmln
aW4oY29uc3QgU3RyaW5nJiBwYWdlT3JpZ2luLCBjb25zdCBTdHJpbmcmIHBsdWdpbk9yaWdpbiwg
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK2Jvb2wgV2ViUGx1Z0luQ2xpZW50OjpzaG91bGRBdXRv
U3RhcnRGcm9tT3JpZ2luKFN0cmluZ1ZpZXcgcGFnZU9yaWdpbiwgU3RyaW5nVmlldyBwbHVnaW5P
cmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCiB7CiAgICAgcmV0dXJuIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnNob3VsZFBsdWdJbkF1dG9TdGFydEZyb21PcmlnaW4obV93ZWJQYWdlLCBw
YWdlT3JpZ2luLCBwbHVnaW5PcmlnaW4sIG1pbWVUeXBlKTsKIH0KIAotdm9pZCBXZWJQbHVnSW5D
bGllbnQ6OmRpZFN0YXJ0RnJvbU9yaWdpbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0
IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3JlOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKQordm9pZCBXZWJQbHVnSW5DbGllbnQ6OmRpZFN0YXJ0RnJvbU9y
aWdpbihTdHJpbmdWaWV3IHBhZ2VPcmlnaW4sIFN0cmluZ1ZpZXcgcGx1Z2luT3JpZ2luLCBjb25z
dCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogewogICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBsdWdJbkRpZFN0YXJ0RnJvbU9yaWdpbihwYWdlT3Jp
Z2luLCBwbHVnaW5PcmlnaW4sIG1pbWVUeXBlLCBzZXNzaW9uSUQpOwogfQpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbHVnSW5DbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
dWdJbkNsaWVudC5oCShyZXZpc2lvbiAyMTgwMjkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsdWdJbkNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Myw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
I2lmbmRlZiBXZWJQbHVnSW5DbGllbnRfaAotI2RlZmluZSBXZWJQbHVnSW5DbGllbnRfaAorI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdJbkNsaWVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU2Vzc2lvbklELmg+CkBAIC00MCwxMiArMzksMTAgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIHZvaWQgcGFnZURlc3Ryb3llZCgpIG92ZXJyaWRlOwotICAgIGJvb2wgc2hvdWxk
QXV0b1N0YXJ0RnJvbU9yaWdpbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSBvdmVycmlkZTsKLSAgICB2
b2lkIGRpZFN0YXJ0RnJvbU9yaWdpbihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0
cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBXZWJDb3JlOjpTZXNz
aW9uSUQpIG92ZXJyaWRlOworICAgIGJvb2wgc2hvdWxkQXV0b1N0YXJ0RnJvbU9yaWdpbihTdHJp
bmdWaWV3IHBhZ2VPcmlnaW4sIFN0cmluZ1ZpZXcgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFN0YXJ0RnJvbU9yaWdpbihTdHJpbmdW
aWV3IHBhZ2VPcmlnaW4sIFN0cmluZ1ZpZXcgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBXZWJDb3JlOjpTZXNzaW9uSUQpIG92ZXJyaWRlOwogCiAgICAgV2ViUGFnZSYgbV93
ZWJQYWdlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvKiBXZWJQbHVn
SW5DbGllbnQgKi8KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAJKHJldmlzaW9uIDIxODAyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAxOSw3ICs1MDE5LDcg
QEAgc3RhdGljIGJvb2wgbmVlZHNIaWRkZW5Db250ZW50RWRpdGFibGVRdQogICAgIGlmICghbmVl
ZHNRdWlya3MpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFN0cmluZyBob3N0ID0gdXJs
Lmhvc3QoKTsKKyAgICBTdHJpbmdWaWV3IGhvc3QgPSB1cmwuaG9zdCgpOwogICAgIFN0cmluZyBw
YXRoID0gdXJsLnBhdGgoKTsKICAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UoaG9zdCwgImRvY3MuZ29vZ2xlLmNvbSIpOwogfQpAQCAtNTAyOSw3ICs1MDI5LDcgQEAgc3Rh
dGljIGJvb2wgbmVlZHNQbGFpblRleHRRdWlyayhib29sIG5lZQogICAgIGlmICghbmVlZHNRdWly
a3MpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFN0cmluZyBob3N0ID0gdXJsLmhvc3Qo
KTsKKyAgICBTdHJpbmdWaWV3IGhvc3QgPSB1cmwuaG9zdCgpOwogCiAgICAgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGhvc3QsICJ0d2l0dGVyLmNvbSIpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTU1MjQsOCArNTUyNCw4IEBAIHZvaWQgV2ViUGFnZTo6ZGV0ZXJtaW5lUHJp
bWFyeVNuYXBzaG90dGUKIAogICAgIExPRyhQbHVnaW5zLCAiUHJpbWFyeSBQbHVnLUluIERldGVj
dGlvbjogc3VjY2VzcyAtIGZvdW5kIGEgY2FuZGlkYXRlIHBsdWctaW4gLSBpbmZvcm0gaXQuIik7
CiAgICAgbV9kaWRGaW5kUHJpbWFyeVNuYXBzaG90dGVkUGx1Z2luID0gdHJ1ZTsKLSAgICBtX3By
aW1hcnlQbHVnSW5QYWdlT3JpZ2luID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT5i
YXNlVVJMKCkuaG9zdCgpOwotICAgIG1fcHJpbWFyeVBsdWdJbk9yaWdpbiA9IGNhbmRpZGF0ZVBs
dWdJbi0+bG9hZGVkVXJsKCkuaG9zdCgpOworICAgIG1fcHJpbWFyeVBsdWdJblBhZ2VPcmlnaW4g
PSBtX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmJhc2VVUkwoKS5ob3N0KCkudG9TdHJp
bmcoKTsKKyAgICBtX3ByaW1hcnlQbHVnSW5PcmlnaW4gPSBjYW5kaWRhdGVQbHVnSW4tPmxvYWRl
ZFVybCgpLmhvc3QoKS50b1N0cmluZygpOwogICAgIG1fcHJpbWFyeVBsdWdJbk1pbWVUeXBlID0g
Y2FuZGlkYXRlUGx1Z0luLT5sb2FkZWRNaW1lVHlwZSgpOwogCiAgICAgY2FuZGlkYXRlUGx1Z0lu
LT5zZXRJc1ByaW1hcnlTbmFwc2hvdHRlZFBsdWdJbih0cnVlKTsKQEAgLTU1MzksNyArNTUzOSw3
IEBAIHZvaWQgV2ViUGFnZTo6cmVzZXRQcmltYXJ5U25hcHNob3R0ZWRQbHUKICAgICBtX2hhc1Nl
ZW5QbHVnaW4gPSBmYWxzZTsKIH0KIAotYm9vbCBXZWJQYWdlOjptYXRjaGVzUHJpbWFyeVBsdWdJ
bihjb25zdCBTdHJpbmcmIHBhZ2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAorYm9vbCBXZWJQYWdlOjptYXRjaGVzUHJpbWFy
eVBsdWdJbihTdHJpbmdWaWV3IHBhZ2VPcmlnaW4sIFN0cmluZ1ZpZXcgcGx1Z2luT3JpZ2luLCBj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKSBjb25zdAogewogICAgIGlmICghbV9kaWRGaW5kUHJpbWFy
eVNuYXBzaG90dGVkUGx1Z2luKQogICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9uIDIxODAyOSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg5Miw3ICs4OTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXRlcm1pbmVQcmlt
YXJ5U25hcHNob3R0ZWRQbHVnSW4oKTsKICAgICB2b2lkIGRldGVybWluZVByaW1hcnlTbmFwc2hv
dHRlZFBsdWdJblRpbWVyRmlyZWQoKTsKICAgICB2b2lkIHJlc2V0UHJpbWFyeVNuYXBzaG90dGVk
UGx1Z0luKCk7Ci0gICAgYm9vbCBtYXRjaGVzUHJpbWFyeVBsdWdJbihjb25zdCBTdHJpbmcmIHBh
Z2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgcGx1Z2luT3JpZ2luLCBjb25zdCBTdHJpbmcmIG1pbWVU
eXBlKSBjb25zdDsKKyAgICBib29sIG1hdGNoZXNQcmltYXJ5UGx1Z0luKFN0cmluZ1ZpZXcgcGFn
ZU9yaWdpbiwgU3RyaW5nVmlldyBwbHVnaW5PcmlnaW4sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
IGNvbnN0OwogICAgIGJvb2wgcGx1Z0luSW50ZXJzZWN0c1NlYXJjaFJlY3QoV2ViQ29yZTo6SFRN
TFBsdWdJbkltYWdlRWxlbWVudCYgcGx1Z2luSW1hZ2VFbGVtZW50KTsKICAgICBib29sIHBsdWdJ
bklzUHJpbWFyeVNpemUoV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudCYgcGx1Z2luSW1h
Z2VFbGVtZW50LCB1bnNpZ25lZCAmcGx1Z2luQXJlYSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyMTgwMjkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDEzIEBACisyMDE3LTA2LTA5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVVJMOjpob3N0IHNob3VsZCByZXR1cm4gYSBT
dHJpbmdWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzMxOTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHA6CisgICAgICAg
IChXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Omhvc3RGb3JVUkwpOgorCiAyMDE3LTA2LTA5ICBQ
ZXIgQXJuZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luNjRdIEJ1
aWxkIGVycm9yIHdoZW4gY29tcGlsaW5nIFBhaW50SG9va3MuYXNtLgpJbmRleDogU291cmNlL1dl
YktpdC9XZWJDb3JlU3VwcG9ydC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViQ29yZVN1cHBvcnQvV2ViUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmNwcAkocmV2aXNpb24gMjE4MDI5KQorKysgU291cmNlL1dlYktpdC9XZWJDb3JlU3VwcG9y
dC9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw5ICs2
NSwxMCBAQCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6Okhvc3RJbmZvcm1hdGlvCiAgICAgICAg
IHJldHVybiBtX25vbkhUVFBQcm90b2NvbEhvc3Q7CiAKICAgICBtX2hvc3RzLmNoZWNrQ29uc2lz
dGVuY3koKTsKLSAgICBTdHJpbmcgaG9zdE5hbWUgPSB1cmwuaG9zdCgpOworICAgIFN0cmluZyBo
b3N0TmFtZSA9IHVybC5ob3N0KCkudG9TdHJpbmcoKTsKICAgICBIb3N0SW5mb3JtYXRpb24qIGhv
c3QgPSBtX2hvc3RzLmdldChob3N0TmFtZSk7CiAgICAgaWYgKCFob3N0ICYmIGNyZWF0ZUhvc3RQ
b2xpY3kgPT0gQ3JlYXRlSWZOb3RGb3VuZCkgeworICAgICAgICAvLyBGSVhNRTogVXNlIGEgc21h
cnQgcG9pbnRlci4KICAgICAgICAgaG9zdCA9IG5ldyBIb3N0SW5mb3JtYXRpb24oaG9zdE5hbWUs
IG1heFJlcXVlc3RzSW5GbGlnaHRQZXJIb3N0KTsKICAgICAgICAgbV9ob3N0cy5hZGQoaG9zdE5h
bWUsIGhvc3QpOwogICAgIH0KSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxODAyOSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE3LTA2LTA5ICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVVJMOjpob3N0IHNob3VsZCBy
ZXR1cm4gYSBTdHJpbmdWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzMxOTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkwuY3BwOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYkNvcmUvVVJMUGFyc2VyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrVVJM
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNoZWNrUmVsYXRpdmVVUkwpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6Y2hlY2tVUkxEaWZmZXJlbmNlcyk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpjaGVja1JlbGF0aXZlVVJMRGlmZmVyZW5jZXMpOgorCiAyMDE3LTA2LTA5ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1MgRG5EXSBBZGQg
YSBob29rIHRvIHBlcmZvcm0gdHdvLXN0ZXAgZHJvcHMgaW4gZWRpdGFibGUgY29udGVudApJbmRl
eDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTC5jcHAJKHJldmlzaW9uIDIx
ODAyOSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkwuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIFRFU1RfRihVUkxUZXN0LCBVUkxDb25zdHJ1Y3Rv
ckNvbnN0Q2hhcikKICAgICBFWFBFQ1RfVFJVRShrdXJsLmlzVmFsaWQoKSk7CiAKICAgICBFWFBF
Q1RfRVEoa3VybC5wcm90b2NvbCgpID09ICJodHRwIiwgdHJ1ZSk7Ci0gICAgRVhQRUNUX0VRKFN0
cmluZygid3d3LmV4YW1wbGUuY29tIiksIGt1cmwuaG9zdCgpKTsKKyAgICBFWFBFQ1RfRVEoU3Ry
aW5nKCJ3d3cuZXhhbXBsZS5jb20iKSwga3VybC5ob3N0KCkudG9TdHJpbmcoKSk7CiAgICAgRVhQ
RUNUX1RSVUUoISFrdXJsLnBvcnQoKSk7CiAgICAgRVhQRUNUX0VRKDgwODAsIGt1cmwucG9ydCgp
LnZhbHVlKCkpOwogICAgIEVYUEVDVF9FUShTdHJpbmcoInVzZXJuYW1lIiksIGt1cmwudXNlcigp
KTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJz
ZXIuY3BwCShyZXZpc2lvbiAyMTgwMjkpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvVVJMUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLe+7vy8q
CisvKgogICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tV
UkwoY29uc3QgU3RyaW5nJiB1cmxTdAogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnByb3RvY29s
LCB1cmwucHJvdG9jb2woKS50b1N0cmluZygpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMu
dXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1
cmwucGFzcygpKSk7Ci0gICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJsLmhvc3QoKSkp
OworICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIHVybC5ob3N0KCkudG9TdHJpbmcoKSkp
OwogICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlX29yKDApKTsKICAg
ICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRoLCB1cmwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RS
VUUoZXEocGFydHMucXVlcnksIHVybC5xdWVyeSgpKSk7CkBAIC0xMjAsNyArMTIwLDcgQEAgc3Rh
dGljIHZvaWQgY2hlY2tSZWxhdGl2ZVVSTChjb25zdCBTdHJpbgogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzLnByb3RvY29sLCB1cmwucHJvdG9jb2woKS50b1N0cmluZygpKSk7CiAgICAgRVhQRUNU
X1RSVUUoZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBh
cnRzLnBhc3N3b3JkLCB1cmwucGFzcygpKSk7Ci0gICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9z
dCwgdXJsLmhvc3QoKSkpOworICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIHVybC5ob3N0
KCkudG9TdHJpbmcoKSkpOwogICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZh
bHVlX29yKDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRoLCB1cmwucGF0aCgpKSk7
CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMucXVlcnksIHVybC5xdWVyeSgpKSk7CkBAIC0xNDks
NyArMTQ5LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkxEaWZmZXJlbmNlcyhjb25zdCBTdAogICAg
IEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnByb3RvY29sLCB1cmwucHJvdG9jb2woKS50b1N0cmlu
ZygpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcudXNlciwgdXJsLnVzZXIoKSkpOwog
ICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3LnBhc3N3b3JkLCB1cmwucGFzcygpKSk7Ci0gICAg
RVhQRUNUX1RSVUUoZXEocGFydHNOZXcuaG9zdCwgdXJsLmhvc3QoKSkpOworICAgIEVYUEVDVF9U
UlVFKGVxKHBhcnRzTmV3Lmhvc3QsIHVybC5ob3N0KCkudG9TdHJpbmcoKSkpOwogICAgIEVYUEVD
VF9FUShwYXJ0c05ldy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBFWFBFQ1Rf
VFJVRShlcShwYXJ0c05ldy5wYXRoLCB1cmwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEo
cGFydHNOZXcucXVlcnksIHVybC5xdWVyeSgpKSk7CkBAIC0xNzgsNyArMTc4LDcgQEAgc3RhdGlj
IHZvaWQgY2hlY2tSZWxhdGl2ZVVSTERpZmZlcmVuY2VzKAogICAgIEVYUEVDVF9UUlVFKGVxKHBh
cnRzTmV3LnByb3RvY29sLCB1cmwucHJvdG9jb2woKS50b1N0cmluZygpKSk7CiAgICAgRVhQRUNU
X1RSVUUoZXEocGFydHNOZXcudXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVx
KHBhcnRzTmV3LnBhc3N3b3JkLCB1cmwucGFzcygpKSk7Ci0gICAgRVhQRUNUX1RSVUUoZXEocGFy
dHNOZXcuaG9zdCwgdXJsLmhvc3QoKSkpOworICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzTmV3Lmhv
c3QsIHVybC5ob3N0KCkudG9TdHJpbmcoKSkpOwogICAgIEVYUEVDVF9FUShwYXJ0c05ldy5wb3J0
LCB1cmwucG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0c05ldy5w
YXRoLCB1cmwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHNOZXcucXVlcnksIHVy
bC5xdWVyeSgpKSk7CkBAIC0yMTYsNyArMjE2LDcgQEAgc3RhdGljIHZvaWQgY2hlY2tVUkwoY29u
c3QgU3RyaW5nJiB1cmxTdAogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnByb3RvY29sLCB1cmwu
cHJvdG9jb2woKS50b1N0cmluZygpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEocGFydHMudXNlciwg
dXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBhc3N3b3JkLCB1cmwucGFz
cygpKSk7Ci0gICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJsLmhvc3QoKSkpOworICAg
IEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIHVybC5ob3N0KCkudG9TdHJpbmcoKSkpOwogICAg
IEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlX29yKDApKTsKICAgICBFWFBF
Q1RfVFJVRShlcShwYXJ0cy5wYXRoLCB1cmwucGF0aCgpKSk7CiAgICAgRVhQRUNUX1RSVUUoZXEo
cGFydHMucXVlcnksIHVybC5xdWVyeSgpKSk7CkBAIC0yNDIsNyArMjQyLDcgQEAgc3RhdGljIHZv
aWQgY2hlY2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdAogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRz
LnByb3RvY29sLCB1cmwucHJvdG9jb2woKS50b1N0cmluZygpKSk7CiAgICAgRVhQRUNUX1RSVUUo
ZXEocGFydHMudXNlciwgdXJsLnVzZXIoKSkpOwogICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLnBh
c3N3b3JkLCB1cmwucGFzcygpKSk7Ci0gICAgRVhQRUNUX1RSVUUoZXEocGFydHMuaG9zdCwgdXJs
Lmhvc3QoKSkpOworICAgIEVYUEVDVF9UUlVFKGVxKHBhcnRzLmhvc3QsIHVybC5ob3N0KCkudG9T
dHJpbmcoKSkpOwogICAgIEVYUEVDVF9FUShwYXJ0cy5wb3J0LCB1cmwucG9ydCgpLnZhbHVlX29y
KDApKTsKICAgICBFWFBFQ1RfVFJVRShlcShwYXJ0cy5wYXRoLCB1cmwucGF0aCgpKSk7CiAgICAg
RVhQRUNUX1RSVUUoZXEocGFydHMucXVlcnksIHVybC5xdWVyeSgpKSk7Cg==
</data>
<flag name="review"
          id="333442"
          type_id="1"
          status="-"
          setter="achristensen"
    />
          </attachment>
      

    </bug>

</bugzilla>