<?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>160630</bug_id>
          
          <creation_ts>2016-08-05 23:34:58 -0700</creation_ts>
          <short_desc>Fix some minor problems in the StringImpl header</short_desc>
          <delta_ts>2017-11-24 18:45:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1218219</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-05 23:34:58 -0700</bug_when>
    <thetext>Fix some minor problems in the StringImpl header</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218220</commentid>
    <comment_count>1</comment_count>
      <attachid>285483</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-05 23:50:36 -0700</bug_when>
    <thetext>Created attachment 285483
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218221</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-08-05 23:51:33 -0700</bug_when>
    <thetext>Brady, notice the false positives from check-webkit-style here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218223</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-05 23:53:12 -0700</bug_when>
    <thetext>Attachment 285483 did not pass style-queue:


ERROR: Source/WTF/wtf/text/StringImpl.h:670:  &apos;simplifyWhiteSpace&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedCodeUnitMatchFunction&apos;.  [readability/naming/protected] [4]
ERROR: Source/WTF/wtf/text/StringImpl.h:672:  &apos;stripLeadingAndTrailingCharacters&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedCodeUnitMatchFunction&apos;.  [readability/naming/protected] [4]
ERROR: Source/WTF/wtf/text/StringImpl.h:673:  &apos;removeCharacters&apos; is incorrectly named. It should be named &apos;protector&apos; or &apos;protectedCodeUnitMatchFunction&apos;.  [readability/naming/protected] [4]
Total errors found: 3 in 27 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>1221906</commentid>
    <comment_count>4</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-08-22 11:13:30 -0700</bug_when>
    <thetext>Windows error:

C:\cygwin\home\buildbot\WebKit\Source\WebKit\win\WebCoreSupport\WebChromeClient.cpp)
C:\cygwin\home\buildbot\WebKit\Source\WebKit\win\WebView.cpp(3758): error C2065: &apos;TextCaseSensitive&apos;: undeclared identifier [C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\Source\WebKit\WebKit.vcxproj]
C:\cygwin\home\buildbot\WebKit\Source\WebKit\win\WebView.cpp(3758): error C2065: &apos;TextCaseInsensitive&apos;: undeclared identifier [C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\Source\WebKit\WebKit.vcxproj]
C:\cygwin\home\buildbot\WebKit\Source\WebKit\win\WebView.cpp(3758): error C2660: &apos;WebCore::Page::markAllMatchesForText&apos;: function does not take 3 arguments [C:\cygwin\home\buildbot\WebKit\WebKitBuild\Release\Source\WebKit\WebKit.vcxproj]
  WebEditorClient.cpp

It looks like WebChromeClient.cpp and WebView.cpp need to know that &apos;TextCaseSensitivity&apos; was moved to JavascriptCore/yarr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221907</commentid>
    <comment_count>5</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-08-22 11:14:05 -0700</bug_when>
    <thetext>The GTK build failures looks like the device ran out of space, not due to a problem with this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221908</commentid>
    <comment_count>6</comment_count>
      <attachid>285483</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-08-22 11:16:22 -0700</bug_when>
    <thetext>Comment on attachment 285483
Patch

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

The patch breaks the Windows build. r- to correct that problem.

&gt; Source/JavaScriptCore/ChangeLog:15
&gt; +        the only place it is used.

It looks like you need to make similar RegularExpression -&gt; JSC::Yarr::RegularExpression changes in the Windows code, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221909</commentid>
    <comment_count>7</comment_count>
      <attachid>285483</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2016-08-22 11:17:03 -0700</bug_when>
    <thetext>Comment on attachment 285483
Patch

Actually, r+ but please fix the JSC::Yarr namespacing in the Windows code before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374668</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-11-24 18:44:53 -0800</bug_when>
    <thetext>Committed r225144: &lt;https://trac.webkit.org/changeset/225144&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1374669</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-24 18:45:28 -0800</bug_when>
    <thetext>&lt;rdar://problem/35685297&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285483</attachid>
            <date>2016-08-05 23:50:36 -0700</date>
            <delta_ts>2016-08-22 11:17:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160630-20160805234908.patch</filename>
            <type>text/plain</type>
            <size>57896</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
ZTkzOWFlMmYxOTAzOGZlYjk1NDU1YjNjMWQzOTAwY2FmMTAwYWJlLi43MDg3ZjJjOGUxODljNjg0
NzE1MDM3ZWZmZDhlM2IyZjZjNDUwOWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxNi0wOC0wNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgRml4IHNvbWUgbWlub3IgcHJvYmxlbXMgaW4gdGhlIFN0cmluZ0ltcGwgaGVhZGVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA2MzAK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcDogUmVtb3ZlZCBhIGxvdCBvZiB1bm5lZWRl
ZCBleHBsaWNpdAorICAgICAgICBZYXJyIG5hbWVzcGFjaW5nIHNpbmNlIHdlIHVzZSAidXNpbmcg
bmFtZXNwYWNlIiBpbiB0aGlzIGZpbGUuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjptYXRjaGVzKTog
VXBkYXRlIHNpbmNlIFRleHRDYXNlU2Vuc2l0aXZpdHkgd2FzIG1vdmVkIGludG8gSlNDOjpZYXJy
LgorCisgICAgICAgICogeWFyci9SZWd1bGFyRXhwcmVzc2lvbi5oOiBNb3ZlZCBUZXh0Q2FzZVNl
bnNpdGl2aXR5IGhlcmUgZnJvbSBXVEYgc2luY2UgdGhpcyBpcworICAgICAgICB0aGUgb25seSBw
bGFjZSBpdCBpcyB1c2VkLgorCiAyMDE2LTA4LTA1ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxs
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIDMyLWJpdCBKU0MgdGVzdCBmYWlsdXJlOiBzdHJlc3Mv
aW5zdGFuY2VvZi1sYXRlLWNvbnN0YW50LWZvbGRpbmcuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggYmNkOTgxNDFmZjhjYTIy
NWQwMmQ0YjQzNmI1NWE5MjZjMWQ3YWM0NS4uMTUxM2RiNzViNTI4MDYxOWRhODBjOTJhNzg4ZWRl
ZGU2NzdjOTlhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxNi0wOC0wNSAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHNvbWUgbWlub3IgcHJvYmxlbXMgaW4g
dGhlIFN0cmluZ0ltcGwgaGVhZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjA2MzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oOiBVcGRhdGUgc2luY2UgQ2hh
cmFjdGVyTWF0Y2hGdW5jdGlvblB0ciBpcyBub3cKKyAgICAgICAgQ29kZVVuaXRNYXRjaEZ1bmN0
aW9uLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nQ29tbW9uLmg6IEFkZGVkIENvZGVVbml0
TWF0Y2hGdW5jdGlvbiwgd2hpY2ggcmVwbGFjZXMKKyAgICAgICAgQ2hhcmFjdGVyTWF0Y2hGdW5j
dGlvblB0ci4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAo
V1RGOjpTdHJpbmdJbXBsOjpzdHJpcE1hdGNoZWRDaGFyYWN0ZXJzKTogQ2hhbmdlZCB0ZW1wbGF0
ZSBhcmd1bWVudCBuYW1lCisgICAgICAgIHRvIENvZGVVbml0UHJlZGljYXRlIHRvIGhlbHAgbWFr
ZSBpdCBjbGVhciB0aGlzIHdvcmtzIG9uIGNvZGUgdW5pdHMsIG5vdAorICAgICAgICBjb2RlIHBv
aW50cy4KKyAgICAgICAgKFdURjo6VUNoYXJQcmVkaWNhdGUpOiBEZWxldGVkLgorICAgICAgICAo
V1RGOjpTcGFjZU9yTmV3bGluZVByZWRpY2F0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlN0
cmluZ0ltcGw6OnN0cmlwV2hpdGVTcGFjZSk6IFJlbW92ZWQgdW5uZWVkZWQgdXNlIG9mIHByZWRp
Y2F0ZSBjbGFzcyB0bworICAgICAgICB0dXJuIGEgZnVuY3Rpb24gaW50byBhIGZ1bmN0b3I7IGZ1
bmN0aW9ucyBhbHJlYWR5IHdvcmsgZmluZSBhcyBmdW5jdG9ycyB3aXRob3V0CisgICAgICAgIGEg
Y2xhc3Mgd3JhcHBpbmcgdGhlbS4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6c3RyaXBMZWFk
aW5nQW5kVHJhaWxpbmdDaGFyYWN0ZXJzKTogRGl0dG8uIEFsc28gcmVuYW1lZAorICAgICAgICBm
cm9tIHN0cmlwV2hpdGVTcGFjZSwgc2luY2UgaXQgc3RyaXBzIGFyYml0cmFyeSBjaGFyYWN0ZXJz
LgorICAgICAgICAoV1RGOjpTdHJpbmdJbXBsOjpyZW1vdmVDaGFyYWN0ZXJzKTogRml4ZWQgdmFy
aW91cyBtaW5vciBzdHlsZSBpc3N1ZXMgYW5kCisgICAgICAgIHVwZGF0ZWQgdG8gbmV3IHR5cGUg
bmFtZS4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6c2ltcGxpZnlNYXRjaGVkQ2hhcmFjdGVy
c1RvU3BhY2UpOiBEaXR0by4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6c2ltcGxpZnlXaGl0
ZVNwYWNlKTogTW9yZSBvZiB0aGUgc2FtZS4KKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Zmlu
ZCk6IERpdHRvLgorCisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOiBSZW1vdmVkIHVu
bmVlZGVkIGluY2x1ZGUgb2YgdWNoYXIuaCwgc2luY2UgaXQncworICAgICAgICBpbmNsdWRlZCBi
eSBTdHJpbmdDb21tb24uaC4gUmVtb3ZlZCBUZXh0Q2FzZVNlbnNpdGl2aXR5LCB1bnVzZWQgZXhj
ZXB0IGluIFlhcnIsCisgICAgICAgIENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIgYW5kIElzV2hp
dGVTcGFjZUZ1bmN0aW9uUHRyLCBib3RoIHJlcGxhY2VkIGJ5CisgICAgICAgIENvZGVVbml0TWF0
Y2hGdW5jdGlvbi4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaDogVXNlIENvZGVV
bml0TWF0Y2hGdW5jdGlvbiBpbnN0ZWFkIG9mIENoYXJhY3Rlck1hdGNoRnVuY3Rpb24uCisKKyAg
ICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmc6OnN0
cmlwTGVhZGluZ0FuZFRyYWlsaW5nQ2hhcmFjdGVycyk6IFVwZGF0ZWQgZnVuY3Rpb24gbmFtZSBh
bmQgdHlwZS4KKyAgICAgICAgKFdURjo6U3RyaW5nOjpzaW1wbGlmeVdoaXRlU3BhY2UpOiBVcGRh
dGVkIHR5cGUuCisgICAgICAgIChXVEY6OlN0cmluZzo6cmVtb3ZlQ2hhcmFjdGVycyk6IFVwZGF0
ZWQgdHlwZS4KKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDogRGl0dG8uCisKIDIwMTYt
MDgtMDUgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAg
RGVsZXRlIG91dCBvZiBkYXRlIFdBU00gY29kZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmODI0MjRhOWFlODI1
OGQxMDg4MTA0MGU1NGZlNTQzMjVhZDQ0MzY3Li5jZjAzODZmYjQ0ZjkxZjBkOWQ2OTgxMTI1YjMz
OTlmMzA2MTQzNWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTYtMDgtMDUgIERh
cmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBzb21lIG1pbm9yIHBy
b2JsZW1zIGluIHRoZSBTdHJpbmdJbXBsIGhlYWRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNjMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodG1sL0Jhc2VUZXh0SW5wdXRUeXBlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkJhc2VUZXh0SW5wdXRUeXBlOjpwYXR0ZXJuTWlzbWF0Y2gpOiBVcGRh
dGVkIHNpbmNlCisgICAgICAgIFRleHRDYXNlU2Vuc2l0aXZlIGlzIG5vdyBpbiB0aGUgWWFyciBu
YW1lc3BhY2UuCisgICAgICAgICogaHRtbC9FbWFpbElucHV0VHlwZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjppc1ZhbGlkRW1haWxBZGRyZXNzKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1M
T3B0aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6
dGV4dCk6IFVzZSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMKKyAgICAgICAgaW5z
dGVhZCBvZiBjYWxsaW5nIHRoZSBnZW5lcmFsIHB1cnBvc2Ugb25lIGFuZCBwYXNzaW5nIGlzSFRN
TFNwYWNlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9wdGlvbkVsZW1lbnQ6OnZhbHVlKTogRGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uRWxlbWVudDo6bGFiZWwpOiBEaXR0by4K
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzZWxlY3RvcnNGcm9tU291cmNlKTogVXBkYXRlZCBmb3IgWWFyciBuYW1lc3BhY2Uu
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpkaWRCZWdpbkRvY3VtZW50KTogVXNlIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5n
SFRNTFNwYWNlcworICAgICAgICBpbnN0ZWFkIG9mIGNhbGxpbmcgdGhlIGdlbmVyYWwgcHVycG9z
ZSBvbmUgYW5kIHBhc3NpbmcgaXNIVE1MU3BhY2UuCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVSZWdFeHBGb3JMYWJlbHMpOiBVcGRhdGVkIGZvciBZ
YXJyIG5hbWVzcGFjZS4KKyAgICAgICAgKFdlYkNvcmU6Om1hdGNoTGFiZWxzQWdhaW5zdFN0cmlu
Zyk6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL1VSTC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpVUkw6OmluaXQpOiBVcGRhdGVkIHRvIHVzZSB0aGUgbmV3IG5hbWUsCisgICAgICAgIHN0cmlw
TGVhZGluZ0FuZFRyYWlsaW5nQ2hhcmFjdGVycy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vQ0RNUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OnZhbGlkS2V5U3lzdGVtUkUpOiBVcGRhdGVkIGZvciBZYXJyIG5hbWVzcGFjZS4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0M0RPcGVu
R0xDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldFVu
bWFuZ2xlZEluZm9Mb2cpOiBEaXR0by4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBQ
YXJzZXJzLmg6CisgICAgICAgIChXZWJDb3JlOjpzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUVFBT
cGFjZXMpOiBVcGRhdGVkIHRvIHVzZSB0aGUKKyAgICAgICAgbmV3IG5hbWUsIHN0cmlwTGVhZGlu
Z0FuZFRyYWlsaW5nQ2hhcmFjdGVycy4KKwogMjAxNi0wOC0wNSAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFsaWduIFJhbmdlLmluc2VydE5vZGUoKSBpbnB1dCB2
YWxpZGF0aW9uIHdpdGggdGhlIHNwZWNpZmljYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAxZTUx
NDM4ODQ0YjZkOGY2OGY0MDcyYTY2ZTY3YTMzNWUyZjZlN2IyLi42MDBkMzg0MjEzZTA2MzlhNGU1
N2U0ZGNjYzkwNmJkYjQ2NGQwZjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTYtMDgtMDUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEZp
eCBzb21lIG1pbm9yIHByb2JsZW1zIGluIHRoZSBTdHJpbmdJbXBsIGhlYWRlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNjMwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxS
ZXByZXNlbnRhdGlvbi5tbTogVXBkYXRlZCBmb3IgWWFyciBuYW1lc3BhY2UuCisKIDIwMTYtMDgt
MDIgIEVucmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAogICAgICAgICBBbGxvdyBi
dWlsZGluZyB3aXRoIGNvbnRlbnQgZmlsdGVyaW5nIGRpc2FibGVkLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDQ5
ODMzMWYyMGI0M2FmYzIwYTY3ODUwZWZmZDY0NDcyZWNmOTQwYmUuLmRjMjlmMTE5NzhkZTExYzRh
ZWJjM2Y1M2NiNTk0MmE5ZWUyNWNlMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAx
Ni0wOC0wNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgRml4IHNv
bWUgbWlub3IgcHJvYmxlbXMgaW4gdGhlIFN0cmluZ0ltcGwgaGVhZGVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjA2MzAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsYXRmb3JtL21hYy9TdHJpbmdV
dGlsaXRpZXMubW06CisgICAgICAgIChXZWJLaXQ6OnN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmlu
Zyk6IFVwZGF0ZWQgZm9yIFlhcnIgbmFtZXNwYWNlLgorCiAyMDE2LTA4LTA1ICBDb21taXQgUXVl
dWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMjA0MTk1LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAKaW5kZXggN2Y0NTA0MjM1NmJkNGRj
NTNmZDhkMGQ3OTQ4MWQ4MGQ0OWRjY2ZjZS4uNGE3YmY1YjY5MDNkMWY5NWZkNTJkMDVmZmNhYTgw
ZmVkNjVlMzc5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9D
b250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwCkBAIC03NCw3ICs3NCw3IEBAIFRleHRQ
b3NpdGlvbiB0ZXh0UG9zaXRpb25Gcm9tT2Zmc2V0KHNpemVfdCBvZmZzZXQsIGNvbnN0IFZlY3Rv
cjxzaXplX3Q+JiBsaW5lRW5kCiAgICAgcmV0dXJuIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVy
Ojpmcm9tWmVyb0Jhc2VkSW50KGxpbmVJbmRleCksIE9yZGluYWxOdW1iZXI6OmZyb21aZXJvQmFz
ZWRJbnQoY29sdW1uKSk7CiB9CiAKLXN0YXRpYyBWZWN0b3I8c3RkOjpwYWlyPHNpemVfdCwgU3Ry
aW5nPj4gZ2V0UmVndWxhckV4cHJlc3Npb25NYXRjaGVzQnlMaW5lcyhjb25zdCBKU0M6OllhcnI6
OlJlZ3VsYXJFeHByZXNzaW9uJiByZWdleCwgY29uc3QgU3RyaW5nJiB0ZXh0KQorc3RhdGljIFZl
Y3RvcjxzdGQ6OnBhaXI8c2l6ZV90LCBTdHJpbmc+PiBnZXRSZWd1bGFyRXhwcmVzc2lvbk1hdGNo
ZXNCeUxpbmVzKGNvbnN0IFJlZ3VsYXJFeHByZXNzaW9uJiByZWdleCwgY29uc3QgU3RyaW5nJiB0
ZXh0KQogewogICAgIFZlY3RvcjxzdGQ6OnBhaXI8c2l6ZV90LCBTdHJpbmc+PiByZXN1bHQ7CiAg
ICAgaWYgKHRleHQuaXNFbXB0eSgpKQpAQCAtMTI4LDEzICsxMjgsMTIgQEAgc3RhdGljIFJlZjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPiBidWlsZE9iamVj
dEZvclNlYXJjaE0KICAgICAgICAgLnJlbGVhc2UoKTsKIH0KIAotSlNDOjpZYXJyOjpSZWd1bGFy
RXhwcmVzc2lvbiBjcmVhdGVTZWFyY2hSZWdleChjb25zdCBTdHJpbmcmIHF1ZXJ5LCBib29sIGNh
c2VTZW5zaXRpdmUsIGJvb2wgaXNSZWdleCkKK1JlZ3VsYXJFeHByZXNzaW9uIGNyZWF0ZVNlYXJj
aFJlZ2V4KGNvbnN0IFN0cmluZyYgcXVlcnksIGJvb2wgY2FzZVNlbnNpdGl2ZSwgYm9vbCBpc1Jl
Z2V4KQogewotICAgIFN0cmluZyByZWdleFNvdXJjZSA9IGlzUmVnZXggPyBxdWVyeSA6IGNyZWF0
ZVNlYXJjaFJlZ2V4U291cmNlKHF1ZXJ5KTsKLSAgICByZXR1cm4gSlNDOjpZYXJyOjpSZWd1bGFy
RXhwcmVzc2lvbihyZWdleFNvdXJjZSwgY2FzZVNlbnNpdGl2ZSA/IFRleHRDYXNlU2Vuc2l0aXZl
IDogVGV4dENhc2VJbnNlbnNpdGl2ZSk7CisgICAgcmV0dXJuIHsgaXNSZWdleCA/IHF1ZXJ5IDog
Y3JlYXRlU2VhcmNoUmVnZXhTb3VyY2UocXVlcnkpLCBjYXNlU2Vuc2l0aXZlID8gVGV4dENhc2VT
ZW5zaXRpdmUgOiBUZXh0Q2FzZUluc2Vuc2l0aXZlIH07CiB9CiAKLWludCBjb3VudFJlZ3VsYXJF
eHByZXNzaW9uTWF0Y2hlcyhjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uJiByZWdl
eCwgY29uc3QgU3RyaW5nJiBjb250ZW50KQoraW50IGNvdW50UmVndWxhckV4cHJlc3Npb25NYXRj
aGVzKGNvbnN0IFJlZ3VsYXJFeHByZXNzaW9uJiByZWdleCwgY29uc3QgU3RyaW5nJiBjb250ZW50
KQogewogICAgIGlmIChjb250ZW50LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0x
NTcsNyArMTU2LDcgQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PgogewogICAgIFJlZjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNl
YXJjaE1hdGNoPj4gcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD46OmNyZWF0ZSgpOwogCi0gICAg
SlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiByZWdleCA9IENvbnRlbnRTZWFyY2hVdGlsaXRp
ZXM6OmNyZWF0ZVNlYXJjaFJlZ2V4KHF1ZXJ5LCBjYXNlU2Vuc2l0aXZlLCBpc1JlZ2V4KTsKKyAg
ICBSZWd1bGFyRXhwcmVzc2lvbiByZWdleCA9IENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmNyZWF0
ZVNlYXJjaFJlZ2V4KHF1ZXJ5LCBjYXNlU2Vuc2l0aXZlLCBpc1JlZ2V4KTsKICAgICBWZWN0b3I8
c3RkOjpwYWlyPHNpemVfdCwgU3RyaW5nPj4gbWF0Y2hlcyA9IGdldFJlZ3VsYXJFeHByZXNzaW9u
TWF0Y2hlc0J5TGluZXMocmVnZXgsIHRleHQpOwogCiAgICAgZm9yIChjb25zdCBhdXRvJiBtYXRj
aCA6IG1hdGNoZXMpIHsKQEAgLTE3OCwxNyArMTc3LDE3IEBAIHN0YXRpYyBTdHJpbmcgZmluZE1h
Z2ljQ29tbWVudChjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGNvbnN0IFN0cmluZyYgcGF0dGVyblN0
cmluCiB7CiAgICAgQVNTRVJUKCFjb250ZW50LmlzTnVsbCgpKTsKICAgICBjb25zdCBjaGFyKiBl
cnJvciA9IG51bGxwdHI7Ci0gICAgSlNDOjpZYXJyOjpZYXJyUGF0dGVybiBwYXR0ZXJuKHBhdHRl
cm5TdHJpbmcsIEpTQzo6UmVnRXhwRmxhZ3M6OkZsYWdNdWx0aWxpbmUsICZlcnJvcik7CisgICAg
WWFyclBhdHRlcm4gcGF0dGVybihwYXR0ZXJuU3RyaW5nLCBKU0M6OlJlZ0V4cEZsYWdzOjpGbGFn
TXVsdGlsaW5lLCAmZXJyb3IpOwogICAgIEFTU0VSVCghZXJyb3IpOwogICAgIEJ1bXBQb2ludGVy
QWxsb2NhdG9yIHJlZ2V4QWxsb2NhdG9yOwotICAgIGF1dG8gYnl0ZWNvZGVQYXR0ZXJuID0gSlND
OjpZYXJyOjpieXRlQ29tcGlsZShwYXR0ZXJuLCAmcmVnZXhBbGxvY2F0b3IpOworICAgIGF1dG8g
Ynl0ZWNvZGVQYXR0ZXJuID0gYnl0ZUNvbXBpbGUocGF0dGVybiwgJnJlZ2V4QWxsb2NhdG9yKTsK
ICAgICBBU1NFUlQoYnl0ZWNvZGVQYXR0ZXJuKTsKIAogICAgIEFTU0VSVChwYXR0ZXJuLm1fbnVt
U3VicGF0dGVybnMgPT0gMSk7CiAgICAgVmVjdG9yPGludCwgND4gbWF0Y2hlczsKICAgICBtYXRj
aGVzLnJlc2l6ZSg0KTsKLSAgICB1bnNpZ25lZCByZXN1bHQgPSBKU0M6OllhcnI6OmludGVycHJl
dChieXRlY29kZVBhdHRlcm4uZ2V0KCksIGNvbnRlbnQsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8dW5z
aWduZWQqPihtYXRjaGVzLmRhdGEoKSkpOwotICAgIGlmIChyZXN1bHQgPT0gSlNDOjpZYXJyOjpv
ZmZzZXROb01hdGNoKQorICAgIHVuc2lnbmVkIHJlc3VsdCA9IGludGVycHJldChieXRlY29kZVBh
dHRlcm4uZ2V0KCksIGNvbnRlbnQsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQqPihtYXRj
aGVzLmRhdGEoKSkpOworICAgIGlmIChyZXN1bHQgPT0gb2Zmc2V0Tm9NYXRjaCkKICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwogCiAgICAgQVNTRVJUKG1hdGNoZXNbMl0gPiAwICYmIG1hdGNoZXNb
M10gPiAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggMmM5YThkMmY2
YzIwZWIxMDk4ZDE2MTJiNWQ5MTI4NjQzNDBjMGJjZC4uMTA3NzMyNWVlZmU0NzMzOTBiODI5ZWI5
NWE2YjgzYzk4YjBiNDZkMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAg
LTIxNiw3ICsyMTYsNyBAQCBzdGF0aWMgUmVmPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RG
b3JCcmVha3BvaW50Q29va2llKGNvbnN0IFN0cmluZyYgdXJsLCBpbgogc3RhdGljIGJvb2wgbWF0
Y2hlcyhjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBib29sIGlzUmVn
ZXgpCiB7CiAgICAgaWYgKGlzUmVnZXgpIHsKLSAgICAgICAgSlNDOjpZYXJyOjpSZWd1bGFyRXhw
cmVzc2lvbiByZWdleChwYXR0ZXJuLCBUZXh0Q2FzZVNlbnNpdGl2ZSk7CisgICAgICAgIEpTQzo6
WWFycjo6UmVndWxhckV4cHJlc3Npb24gcmVnZXgocGF0dGVybiwgSlNDOjpZYXJyOjpUZXh0Q2Fz
ZVNlbnNpdGl2ZSk7CiAgICAgICAgIHJldHVybiByZWdleC5tYXRjaCh1cmwpICE9IC0xOwogICAg
IH0KICAgICByZXR1cm4gdXJsID09IHBhdHRlcm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9SZWd1bGFyRXhwcmVzc2lvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3lhcnIvUmVndWxhckV4cHJlc3Npb24uaAppbmRleCAzMjk4ZjBiZDhiZWZjODU1MWQxMjQzMDA2
YjdkNmJiOWIwNzhmNzFmLi44ZDk1M2FjNWIyYTM4ODg0NjhiYzc5YzljMjU0ZTNlMmNhODgwYjVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9SZWd1bGFyRXhwcmVzc2lv
bi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmgK
QEAgLTIzLDE3ICsyMywxNCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFJlZ3Vs
YXJFeHByZXNzaW9uX2gKLSNkZWZpbmUgUmVndWxhckV4cHJlc3Npb25faAorI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBZYXJyIHsKIAotZW51bSBNdWx0aWxpbmVNb2RlIHsKLSAgICBNdWx0aWxpbmVEaXNh
YmxlZCwKLSAgICBNdWx0aWxpbmVFbmFibGVkCi19OworZW51bSBUZXh0Q2FzZVNlbnNpdGl2aXR5
IHsgVGV4dENhc2VTZW5zaXRpdmUsIFRleHRDYXNlSW5zZW5zaXRpdmUgfTsKK2VudW0gTXVsdGls
aW5lTW9kZSB7IE11bHRpbGluZURpc2FibGVkLCBNdWx0aWxpbmVFbmFibGVkIH07CiAKIGNsYXNz
IEpTX0VYUE9SVF9QUklWQVRFIFJlZ3VsYXJFeHByZXNzaW9uIHsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKQEAgLTU4LDUgKzU1LDMgQEAgcHJpdmF0ZToKIHZvaWQgSlNfRVhQT1JUX1BS
SVZBVEUgcmVwbGFjZShTdHJpbmcmLCBjb25zdCBSZWd1bGFyRXhwcmVzc2lvbiYsIGNvbnN0IFN0
cmluZyYpOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6WWFycgotCi0jZW5kaWYgLy8gUmVndWxh
ckV4cHJlc3Npb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNTdHJp
bmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKaW5kZXggMDA3ZGNhNzgx
OGNhZjk4ZDU1NDY5ZDQzN2MyOGRmMGExYTJkNDA0Ni4uNjNlZGNkYjQ4MzVkNDY5NGU5NDllZTE1
MDllMWE2MDJiZjkyODEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNT
dHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCkBAIC0xMjks
NyArMTI5LDcgQEAgcHVibGljOgogICAgICAgICB7IHJldHVybiBtX3N0cmluZy5maW5kSWdub3Jp
bmdBU0NJSUNhc2Uocyk7IH0KICAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0
IFN0cmluZyYgcywgdW5zaWduZWQgc3RhcnRPZmZzZXQpIGNvbnN0CiAgICAgICAgIHsgcmV0dXJu
IG1fc3RyaW5nLmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzLCBzdGFydE9mZnNldCk7IH0KLSAgICBz
aXplX3QgZmluZChDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyIG1hdGNoRnVuY3Rpb24sIHVuc2ln
bmVkIHN0YXJ0ID0gMCkgY29uc3QKKyAgICBzaXplX3QgZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rp
b24gbWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdAogICAgICAgICB7IHJl
dHVybiBtX3N0cmluZy5maW5kKG1hdGNoRnVuY3Rpb24sIHN0YXJ0KTsgfQogCiAgICAgYm9vbCBz
dGFydHNXaXRoKGNvbnN0IFN0cmluZyYgcykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nQ29tbW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0NvbW1v
bi5oCmluZGV4IGQzNWQ4OTA1ZGU0ODc4OWJkMTliMDBhYTA3YzZhYmIwNzhmOGU5MmEuLjQ3ZGVj
NjMzYWNlZTk4ZWFlM2E3Njk3ZTdiMzZkMzdkMDI3YjA2Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nQ29tbW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdDb21tb24uaApAQCAtMjMsMTQgKzIzLDE1IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBTdHJpbmdDb21tb25faAotI2RlZmluZSBTdHJpbmdD
b21tb25faAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx1bmljb2RlL3VjaGFyLmg+CiAjaW5j
bHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKK3VzaW5nIENvZGVV
bml0TWF0Y2hGdW5jdGlvbiA9IGJvb2wgKCopKFVDaGFyKTsKKwogdGVtcGxhdGU8dHlwZW5hbWUg
Q2hhcmFjdGVyVHlwZUEsIHR5cGVuYW1lIENoYXJhY3RlclR5cGVCPiBib29sIGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UoY29uc3QgQ2hhcmFjdGVyVHlwZUEqLCBjb25zdCBDaGFyYWN0ZXJUeXBlQios
IHVuc2lnbmVkIGxlbmd0aCk7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlQSwgdHlw
ZW5hbWUgQ2hhcmFjdGVyVHlwZUI+IGJvb2wgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBD
aGFyYWN0ZXJUeXBlQSosIHVuc2lnbmVkIGxlbmd0aEEsIGNvbnN0IENoYXJhY3RlclR5cGVCKiwg
dW5zaWduZWQgbGVuZ3RoQik7CiAKQEAgLTY1Miw1ICs2NTMsMyBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBTdHJpbmdDbGFzcywgdW5zaWduZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBzdGFydHNXaXRoTGV0
dGVyc0lnbgogCiB1c2luZyBXVEY6OmVxdWFsSWdub3JpbmdBU0NJSUNhc2U7CiB1c2luZyBXVEY6
OmVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlOwotCi0jZW5kaWYgLy8gU3RyaW5nQ29tbW9u
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IGM4ZDUzNTkwN2I3YjU2ZjBlMjlj
MWRlYzdhMGE1NTY1MTJlZDA1ZjcuLmM2NDE2NzYyZDlhNTk3NzY0NDZkMWU2ZDZhZGZiOGU3YjVm
YTY1NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtNzQzLDggKzc0Myw3IEBA
IFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpCiAg
ICAgcmV0dXJuIGNvbnZlcnRBU0NJSUNhc2U8Q2FzZUNvbnZlcnRUeXBlOjpVcHBlcj4oKnRoaXMs
IG1fZGF0YTE2LCBtX2xlbmd0aCk7CiB9CiAKLXRlbXBsYXRlIDxjbGFzcyBVQ2hhclByZWRpY2F0
ZT4KLWlubGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6c3RyaXBNYXRjaGVkQ2hhcmFj
dGVycyhVQ2hhclByZWRpY2F0ZSBwcmVkaWNhdGUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlVW5p
dFByZWRpY2F0ZT4gaW5saW5lIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpzdHJpcE1hdGNo
ZWRDaGFyYWN0ZXJzKENvZGVVbml0UHJlZGljYXRlIHByZWRpY2F0ZSkKIHsKICAgICBpZiAoIW1f
bGVuZ3RoKQogICAgICAgICByZXR1cm4gKnRoaXM7CkBAIC03NzEsMTI2ICs3NzAsMTAxIEBAIGlu
bGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6c3RyaXBNYXRjaGVkQ2hhcmFjdGVycyhV
Q2hhclByZWRpY2F0ZSBwcmVkaWNhCiAgICAgcmV0dXJuIGNyZWF0ZShtX2RhdGExNiArIHN0YXJ0
LCBlbmQgKyAxIC0gc3RhcnQpOwogfQogCi1jbGFzcyBVQ2hhclByZWRpY2F0ZSB7Ci1wdWJsaWM6
Ci0gICAgaW5saW5lIFVDaGFyUHJlZGljYXRlKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIgZnVu
Y3Rpb24pOiBtX2Z1bmN0aW9uKGZ1bmN0aW9uKSB7IH0KLQotICAgIGlubGluZSBib29sIG9wZXJh
dG9yKCkoVUNoYXIgY2gpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9mdW5jdGlvbihj
aCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIGNvbnN0IENoYXJhY3Rlck1hdGNoRnVuY3Rpb25Q
dHIgbV9mdW5jdGlvbjsKLX07Ci0KLWNsYXNzIFNwYWNlT3JOZXdsaW5lUHJlZGljYXRlIHsKLXB1
YmxpYzoKLSAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcigpKFVDaGFyIGNoKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIGlzU3BhY2VPck5ld2xpbmUoY2gpOwotICAgIH0KLX07Ci0KIFJlZjxT
dHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpzdHJpcFdoaXRlU3BhY2UoKQogewotICAgIHJldHVybiBz
dHJpcE1hdGNoZWRDaGFyYWN0ZXJzKFNwYWNlT3JOZXdsaW5lUHJlZGljYXRlKCkpOworICAgIHJl
dHVybiBzdHJpcE1hdGNoZWRDaGFyYWN0ZXJzKGlzU3BhY2VPck5ld2xpbmUpOwogfQogCi1SZWY8
U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6c3RyaXBXaGl0ZVNwYWNlKElzV2hpdGVTcGFjZUZ1bmN0
aW9uUHRyIGlzV2hpdGVTcGFjZSkKK1JlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpzdHJpcExl
YWRpbmdBbmRUcmFpbGluZ0NoYXJhY3RlcnMoQ29kZVVuaXRNYXRjaEZ1bmN0aW9uIHByZWRpY2F0
ZSkKIHsKLSAgICByZXR1cm4gc3RyaXBNYXRjaGVkQ2hhcmFjdGVycyhVQ2hhclByZWRpY2F0ZShp
c1doaXRlU3BhY2UpKTsKKyAgICByZXR1cm4gc3RyaXBNYXRjaGVkQ2hhcmFjdGVycyhwcmVkaWNh
dGUpOwogfQogCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1BTFdBWVNfSU5MSU5FIFJl
ZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZW1vdmVDaGFyYWN0ZXJzKGNvbnN0IENoYXJUeXBl
KiBjaGFyYWN0ZXJzLCBDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uUHRyIGZpbmRNYXRjaCkKK3RlbXBs
YXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBBTFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJbXBs
PiBTdHJpbmdJbXBsOjpyZW1vdmVDaGFyYWN0ZXJzKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJh
Y3RlcnMsIENvZGVVbml0TWF0Y2hGdW5jdGlvbiBmaW5kTWF0Y2gpCiB7Ci0gICAgY29uc3QgQ2hh
clR5cGUqIGZyb20gPSBjaGFyYWN0ZXJzOwotICAgIGNvbnN0IENoYXJUeXBlKiBmcm9tZW5kID0g
ZnJvbSArIG1fbGVuZ3RoOwotICAgIAorICAgIGF1dG8qIGZyb20gPSBjaGFyYWN0ZXJzOworICAg
IGF1dG8qIGZyb21FbmQgPSBmcm9tICsgbV9sZW5ndGg7CisKICAgICAvLyBBc3N1bWUgdGhlIGNv
bW1vbiBjYXNlIHdpbGwgbm90IHJlbW92ZSBhbnkgY2hhcmFjdGVycwotICAgIHdoaWxlIChmcm9t
ICE9IGZyb21lbmQgJiYgIWZpbmRNYXRjaCgqZnJvbSkpCisgICAgd2hpbGUgKGZyb20gIT0gZnJv
bUVuZCAmJiAhZmluZE1hdGNoKCpmcm9tKSkKICAgICAgICAgKytmcm9tOwotICAgIGlmIChmcm9t
ID09IGZyb21lbmQpCisgICAgaWYgKGZyb20gPT0gZnJvbUVuZCkKICAgICAgICAgcmV0dXJuICp0
aGlzOwotICAgIAotICAgIFN0cmluZ0J1ZmZlcjxDaGFyVHlwZT4gZGF0YShtX2xlbmd0aCk7Ci0g
ICAgQ2hhclR5cGUqIHRvID0gZGF0YS5jaGFyYWN0ZXJzKCk7CisKKyAgICBTdHJpbmdCdWZmZXI8
Q2hhcmFjdGVyVHlwZT4gZGF0YShtX2xlbmd0aCk7CisgICAgYXV0byogdG8gPSBkYXRhLmNoYXJh
Y3RlcnMoKTsKICAgICB1bnNpZ25lZCBvdXRjID0gZnJvbSAtIGNoYXJhY3RlcnM7Ci0gICAgCisK
ICAgICBpZiAob3V0YykKLSAgICAgICAgbWVtY3B5KHRvLCBjaGFyYWN0ZXJzLCBvdXRjICogc2l6
ZW9mKENoYXJUeXBlKSk7CisgICAgICAgIG1lbWNweSh0bywgY2hhcmFjdGVycywgb3V0YyAqIHNp
emVvZihDaGFyYWN0ZXJUeXBlKSk7CiAKLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICB3aGls
ZSAoZnJvbSAhPSBmcm9tZW5kICYmIGZpbmRNYXRjaCgqZnJvbSkpCisgICAgZG8geworICAgICAg
ICB3aGlsZSAoZnJvbSAhPSBmcm9tRW5kICYmIGZpbmRNYXRjaCgqZnJvbSkpCiAgICAgICAgICAg
ICArK2Zyb207Ci0gICAgICAgIHdoaWxlIChmcm9tICE9IGZyb21lbmQgJiYgIWZpbmRNYXRjaCgq
ZnJvbSkpCisgICAgICAgIHdoaWxlIChmcm9tICE9IGZyb21FbmQgJiYgIWZpbmRNYXRjaCgqZnJv
bSkpCiAgICAgICAgICAgICB0b1tvdXRjKytdID0gKmZyb20rKzsKLSAgICAgICAgaWYgKGZyb20g
PT0gZnJvbWVuZCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KKyAgICB9IHdoaWxlIChmcm9t
ICE9IGZyb21FbmQpOwogCiAgICAgZGF0YS5zaHJpbmsob3V0Yyk7CiAKICAgICByZXR1cm4gYWRv
cHQoZGF0YSk7CiB9CiAKLVJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpyZW1vdmVDaGFyYWN0
ZXJzKENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIgZmluZE1hdGNoKQorUmVmPFN0cmluZ0ltcGw+
IFN0cmluZ0ltcGw6OnJlbW92ZUNoYXJhY3RlcnMoQ29kZVVuaXRNYXRjaEZ1bmN0aW9uIGZpbmRN
YXRjaCkKIHsKICAgICBpZiAoaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiByZW1vdmVDaGFyYWN0
ZXJzKGNoYXJhY3RlcnM4KCksIGZpbmRNYXRjaCk7CiAgICAgcmV0dXJuIHJlbW92ZUNoYXJhY3Rl
cnMoY2hhcmFjdGVyczE2KCksIGZpbmRNYXRjaCk7CiB9CiAKLXRlbXBsYXRlIDx0eXBlbmFtZSBD
aGFyVHlwZSwgY2xhc3MgVUNoYXJQcmVkaWNhdGU+Ci1pbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0
cmluZ0ltcGw6OnNpbXBsaWZ5TWF0Y2hlZENoYXJhY3RlcnNUb1NwYWNlKFVDaGFyUHJlZGljYXRl
IHByZWRpY2F0ZSkKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIGNsYXNzIFVDaGFy
UHJlZGljYXRlPiBpbmxpbmUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnNpbXBsaWZ5TWF0
Y2hlZENoYXJhY3RlcnNUb1NwYWNlKFVDaGFyUHJlZGljYXRlIHByZWRpY2F0ZSkKIHsKLSAgICBT
dHJpbmdCdWZmZXI8Q2hhclR5cGU+IGRhdGEobV9sZW5ndGgpOworICAgIFN0cmluZ0J1ZmZlcjxD
aGFyYWN0ZXJUeXBlPiBkYXRhKG1fbGVuZ3RoKTsKIAotICAgIGNvbnN0IENoYXJUeXBlKiBmcm9t
ID0gY2hhcmFjdGVyczxDaGFyVHlwZT4oKTsKLSAgICBjb25zdCBDaGFyVHlwZSogZnJvbWVuZCA9
IGZyb20gKyBtX2xlbmd0aDsKKyAgICBhdXRvKiBmcm9tID0gY2hhcmFjdGVyczxDaGFyYWN0ZXJU
eXBlPigpOworICAgIGF1dG8qIGZyb21FbmQgPSBmcm9tICsgbV9sZW5ndGg7CiAgICAgaW50IG91
dGMgPSAwOwogICAgIGJvb2wgY2hhbmdlZFRvU3BhY2UgPSBmYWxzZTsKICAgICAKLSAgICBDaGFy
VHlwZSogdG8gPSBkYXRhLmNoYXJhY3RlcnMoKTsKKyAgICBhdXRvKiB0byA9IGRhdGEuY2hhcmFj
dGVycygpOwogICAgIAogICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIHdoaWxlIChmcm9tICE9
IGZyb21lbmQgJiYgcHJlZGljYXRlKCpmcm9tKSkgeworICAgICAgICB3aGlsZSAoZnJvbSAhPSBm
cm9tRW5kICYmIHByZWRpY2F0ZSgqZnJvbSkpIHsKICAgICAgICAgICAgIGlmICgqZnJvbSAhPSAn
ICcpCiAgICAgICAgICAgICAgICAgY2hhbmdlZFRvU3BhY2UgPSB0cnVlOwogICAgICAgICAgICAg
Kytmcm9tOwogICAgICAgICB9Ci0gICAgICAgIHdoaWxlIChmcm9tICE9IGZyb21lbmQgJiYgIXBy
ZWRpY2F0ZSgqZnJvbSkpCisgICAgICAgIHdoaWxlIChmcm9tICE9IGZyb21FbmQgJiYgIXByZWRp
Y2F0ZSgqZnJvbSkpCiAgICAgICAgICAgICB0b1tvdXRjKytdID0gKmZyb20rKzsKLSAgICAgICAg
aWYgKGZyb20gIT0gZnJvbWVuZCkKKyAgICAgICAgaWYgKGZyb20gIT0gZnJvbUVuZCkKICAgICAg
ICAgICAgIHRvW291dGMrK10gPSAnICc7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGJyZWFr
OwogICAgIH0KLSAgICAKLSAgICBpZiAob3V0YyA+IDAgJiYgdG9bb3V0YyAtIDFdID09ICcgJykK
KworICAgIGlmIChvdXRjICYmIHRvW291dGMgLSAxXSA9PSAnICcpCiAgICAgICAgIC0tb3V0YzsK
LSAgICAKKwogICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ob3V0YykgPT0gbV9sZW5ndGgg
JiYgIWNoYW5nZWRUb1NwYWNlKQogICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgCisKICAgICBk
YXRhLnNocmluayhvdXRjKTsKLSAgICAKKwogICAgIHJldHVybiBhZG9wdChkYXRhKTsKIH0KIAog
UmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OnNpbXBsaWZ5V2hpdGVTcGFjZSgpCiB7CiAgICAg
aWYgKGlzOEJpdCgpKQotICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6c2ltcGxpZnlNYXRjaGVk
Q2hhcmFjdGVyc1RvU3BhY2U8TENoYXI+KFNwYWNlT3JOZXdsaW5lUHJlZGljYXRlKCkpOwotICAg
IHJldHVybiBTdHJpbmdJbXBsOjpzaW1wbGlmeU1hdGNoZWRDaGFyYWN0ZXJzVG9TcGFjZTxVQ2hh
cj4oU3BhY2VPck5ld2xpbmVQcmVkaWNhdGUoKSk7CisgICAgICAgIHJldHVybiBTdHJpbmdJbXBs
OjpzaW1wbGlmeU1hdGNoZWRDaGFyYWN0ZXJzVG9TcGFjZTxMQ2hhcj4oaXNTcGFjZU9yTmV3bGlu
ZSk7CisgICAgcmV0dXJuIFN0cmluZ0ltcGw6OnNpbXBsaWZ5TWF0Y2hlZENoYXJhY3RlcnNUb1Nw
YWNlPFVDaGFyPihpc1NwYWNlT3JOZXdsaW5lKTsKIH0KIAotUmVmPFN0cmluZ0ltcGw+IFN0cmlu
Z0ltcGw6OnNpbXBsaWZ5V2hpdGVTcGFjZShJc1doaXRlU3BhY2VGdW5jdGlvblB0ciBpc1doaXRl
U3BhY2UpCitSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6c2ltcGxpZnlXaGl0ZVNwYWNlKENv
ZGVVbml0TWF0Y2hGdW5jdGlvbiBpc1doaXRlU3BhY2UpCiB7CiAgICAgaWYgKGlzOEJpdCgpKQot
ICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6c2ltcGxpZnlNYXRjaGVkQ2hhcmFjdGVyc1RvU3Bh
Y2U8TENoYXI+KFVDaGFyUHJlZGljYXRlKGlzV2hpdGVTcGFjZSkpOwotICAgIHJldHVybiBTdHJp
bmdJbXBsOjpzaW1wbGlmeU1hdGNoZWRDaGFyYWN0ZXJzVG9TcGFjZTxVQ2hhcj4oVUNoYXJQcmVk
aWNhdGUoaXNXaGl0ZVNwYWNlKSk7CisgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjpzaW1wbGlm
eU1hdGNoZWRDaGFyYWN0ZXJzVG9TcGFjZTxMQ2hhcj4oaXNXaGl0ZVNwYWNlKTsKKyAgICByZXR1
cm4gU3RyaW5nSW1wbDo6c2ltcGxpZnlNYXRjaGVkQ2hhcmFjdGVyc1RvU3BhY2U8VUNoYXI+KGlz
V2hpdGVTcGFjZSk7CiB9CiAKIGludCBTdHJpbmdJbXBsOjp0b0ludFN0cmljdChib29sKiBvaywg
aW50IGJhc2UpCkBAIC0xMDI1LDcgKzk5OSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBlcXVhbENv
bXBhdGliaWxpdHlDYXNlbGVzcyhjb25zdCBVQ2hhciogYSwgY29uc3QgVUNoYXIqIGIsIHVuCiAg
ICAgcmV0dXJuICF1X21lbWNhc2VjbXAoYSwgYiwgbGVuZ3RoLCBVX0ZPTERfQ0FTRV9ERUZBVUxU
KTsKIH0KIAotc2l6ZV90IFN0cmluZ0ltcGw6OmZpbmQoQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0
ciBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCkKK3NpemVfdCBTdHJpbmdJbXBsOjpmaW5k
KENvZGVVbml0TWF0Y2hGdW5jdGlvbiBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCkKIHsK
ICAgICBpZiAoaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBXVEY6OmZpbmQoY2hhcmFjdGVyczgo
KSwgbV9sZW5ndGgsIG1hdGNoRnVuY3Rpb24sIHN0YXJ0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBs
LmgKaW5kZXggNmI4MGVkY2JiZGUxNDA0MDA5ODZlMTNhYjM0Mzk3NGI2NzdiNmYzOC4uNDQ4MGYy
YjNjYzMzOGRjOWI1MTA3ZjgyZWMxZDZmOTA4MmM1Mzg4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJ
bXBsLmgKQEAgLTI0LDcgKzI0LDYgQEAKICNkZWZpbmUgU3RyaW5nSW1wbF9oCiAKICNpbmNsdWRl
IDxsaW1pdHMuaD4KLSNpbmNsdWRlIDx1bmljb2RlL3VjaGFyLmg+CiAjaW5jbHVkZSA8dW5pY29k
ZS91c3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgpAQCAtNjUsMTQgKzY0LDYgQEAgdGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIFJl
dGFpblB0cjsKIAogdGVtcGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBIYXNoQW5kQ2hhcmFjdGVyc1Ry
YW5zbGF0b3I7CiAKLWVudW0gVGV4dENhc2VTZW5zaXRpdml0eSB7Ci0gICAgVGV4dENhc2VTZW5z
aXRpdmUsCi0gICAgVGV4dENhc2VJbnNlbnNpdGl2ZQotfTsKLQotdHlwZWRlZiBib29sICgqQ2hh
cmFjdGVyTWF0Y2hGdW5jdGlvblB0cikoVUNoYXIpOwotdHlwZWRlZiBib29sICgqSXNXaGl0ZVNw
YWNlRnVuY3Rpb25QdHIpKFVDaGFyKTsKLQogLy8gRGVmaW5lIFNUUklOR19TVEFUUyB0byAxIHR1
cm4gb24gcnVuIHRpbWUgc3RhdGlzdGljcyBvZiBzdHJpbmcgc2l6ZXMgYW5kIG1lbW9yeSB1c2Fn
ZQogI2RlZmluZSBTVFJJTkdfU1RBVFMgMAogCkBAIC0xMzAsNiArMTIxLDcgQEAgc3RydWN0IFN0
cmluZ1N0YXRzIHsKIAogY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoU3RyaW5nSW1wbCk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworCiAgICAgZnJpZW5kIHN0
cnVjdCBXVEY6OkNTdHJpbmdUcmFuc2xhdG9yOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+IGZyaWVuZCBzdHJ1Y3QgV1RGOjpIYXNoQW5kQ2hhcmFjdGVyc1RyYW5zbGF0b3I7
CiAgICAgZnJpZW5kIHN0cnVjdCBXVEY6Okhhc2hBbmRVVEY4Q2hhcmFjdGVyc1RyYW5zbGF0b3I7
CkBAIC0xMzksMTMgKzEzMSwxMCBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICBmcmllbmQgc3Ry
dWN0IFdURjo6VUNoYXJCdWZmZXJUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxM
SW50OjpEYXRhOwogICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
LSAgICAKKyAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nSW1wbD47CisKIHBy
aXZhdGU6Ci0gICAgZW51bSBCdWZmZXJPd25lcnNoaXAgewotICAgICAgICBCdWZmZXJJbnRlcm5h
bCwKLSAgICAgICAgQnVmZmVyT3duZWQsCi0gICAgICAgIEJ1ZmZlclN1YnN0cmluZywKLSAgICB9
OworICAgIGVudW0gQnVmZmVyT3duZXJzaGlwIHsgQnVmZmVySW50ZXJuYWwsIEJ1ZmZlck93bmVk
LCBCdWZmZXJTdWJzdHJpbmcgfTsKIAogICAgIC8vIFRoZSBib3R0b20gNiBiaXRzIGluIHRoZSBo
YXNoIGFyZSBmbGFncy4KICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc19mbGFnQ291bnQgPSA2
OwpAQCAtMTY5LDcgKzE1OCw2IEBAIHByaXZhdGU6CiAgICAgLy8gVXNlZCB0byBjb25zdHJ1Y3Qg
c3RhdGljIHN0cmluZ3MsIHdoaWNoIGhhdmUgYW4gc3BlY2lhbCByZWZDb3VudCB0aGF0IGNhbiBu
ZXZlciBoaXQgemVyby4KICAgICAvLyBUaGlzIG1lYW5zIHRoYXQgdGhlIHN0YXRpYyBzdHJpbmcg
d2lsbCBuZXZlciBiZSBkZXN0cm95ZWQsIHdoaWNoIGlzIGltcG9ydGFudCBiZWNhdXNlCiAgICAg
Ly8gc3RhdGljIHN0cmluZ3Mgd2lsbCBiZSBzaGFyZWQgYWNyb3NzIHRocmVhZHMgJiByZWYtY291
bnRlZCBpbiBhIG5vbi10aHJlYWRzYWZlIG1hbm5lci4KLSAgICBmcmllbmQgY2xhc3MgTmV2ZXJE
ZXN0cm95ZWQ8U3RyaW5nSW1wbD47CiAgICAgZW51bSBDb25zdHJ1Y3RFbXB0eVN0cmluZ1RhZyB7
IENvbnN0cnVjdEVtcHR5U3RyaW5nIH07CiAgICAgU3RyaW5nSW1wbChDb25zdHJ1Y3RFbXB0eVN0
cmluZ1RhZykKICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRGbGFnSXNTdGF0aWNTdHJp
bmcpCkBAIC0xODUsOSArMTczLDggQEAgcHJpdmF0ZToKICAgICAgICAgaGFzaCgpOwogICAgIH0K
IAotICAgIC8vIEZJWE1FOiB0aGVyZSBoYXMgdG8gYmUgYSBsZXNzIGhhY2t5IHdheSB0byBkbyB0
aGlzLgotICAgIGVudW0gRm9yY2U4Qml0IHsgRm9yY2U4Qml0Q29uc3RydWN0b3IgfTsKICAgICAv
LyBDcmVhdGUgYSBub3JtYWwgOC1iaXQgc3RyaW5nIHdpdGggaW50ZXJuYWwgc3RvcmFnZSAoQnVm
ZmVySW50ZXJuYWwpCisgICAgZW51bSBGb3JjZThCaXQgeyBGb3JjZThCaXRDb25zdHJ1Y3RvciB9
OwogICAgIFN0cmluZ0ltcGwodW5zaWduZWQgbGVuZ3RoLCBGb3JjZThCaXQpCiAgICAgICAgIDog
bV9yZWZDb3VudChzX3JlZkNvdW50SW5jcmVtZW50KQogICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0
aCkKQEAgLTI5OCw4ICsyODUsOCBAQCBwcml2YXRlOgogICAgICAgICBTVFJJTkdfU1RBVFNfQURE
XzE2QklUX1NUUklORzIobV9sZW5ndGgsIHRydWUpOwogICAgIH0KIAotICAgIGVudW0gQ3JlYXRl
U3ltYm9sVGFnIHsgQ3JlYXRlU3ltYm9sIH07CiAgICAgLy8gVXNlZCB0byBjcmVhdGUgbmV3IHN5
bWJvbCBzdHJpbmdzIHRoYXQgaG9sZHMgZXhpc3RpbmcgOC1iaXQgW1tEZXNjcmlwdGlvbl1dIHN0
cmluZyBhcyBhIHN1YnN0cmluZyBidWZmZXIgKEJ1ZmZlclN1YnN0cmluZykuCisgICAgZW51bSBD
cmVhdGVTeW1ib2xUYWcgeyBDcmVhdGVTeW1ib2wgfTsKICAgICBTdHJpbmdJbXBsKENyZWF0ZVN5
bWJvbFRhZywgY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgUmVmPFN0
cmluZ0ltcGw+JiYgYmFzZSkKICAgICAgICAgOiBtX3JlZkNvdW50KHNfcmVmQ291bnRJbmNyZW1l
bnQpCiAgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQpAQCAtMzQxLDggKzMyOCw3IEBAIHB1Ymxp
YzoKICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVh
dGUoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIFdURl9FWFBPUlRfU1RSSU5H
X0FQSSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZShjb25zdCBMQ2hhciosIHVuc2lnbmVk
IGxlbmd0aCk7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBSZWY8U3RyaW5nSW1w
bD4gY3JlYXRlOEJpdElmUG9zc2libGUoY29uc3QgVUNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwot
ICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KLSAgICBzdGF0aWMgUmVmPFN0cmlu
Z0ltcGw+IGNyZWF0ZThCaXRJZlBvc3NpYmxlKGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2Fw
YWNpdHk+JiB2ZWN0b3IpCisgICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PiBzdGF0
aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZThCaXRJZlBvc3NpYmxlKGNvbnN0IFZlY3RvcjxVQ2hh
ciwgaW5saW5lQ2FwYWNpdHk+JiB2ZWN0b3IpCiAgICAgewogICAgICAgICByZXR1cm4gY3JlYXRl
OEJpdElmUG9zc2libGUodmVjdG9yLmRhdGEoKSwgdmVjdG9yLnNpemUoKSk7CiAgICAgfQpAQCAt
MzY4LDEzICszNTQsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyAo
Tm90TnVsbCwgc3RyaW5nSW1wbCkgU3RyaW5nSW1wbChyZXAubV9kYXRhMTYgKyBvZmZzZXQsIGxl
bmd0aCwgKm93bmVyUmVwKSk7CiAgICAgfQogCi0gICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFj
dGVyc0NvdW50PgotICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVh
dGVGcm9tTGl0ZXJhbChjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0NvdW50XSkK
KyAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJzU2l6ZT4gQUxXQVlTX0lOTElORSBzdGF0
aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0IGNoYXIgKCZjaGFyYWN0
ZXJzKVtjaGFyYWN0ZXJzU2l6ZV0pCiAgICAgewotICAgICAgICBDT01QSUxFX0FTU0VSVChjaGFy
YWN0ZXJzQ291bnQgPiAxLCBTdHJpbmdJbXBsRnJvbUxpdGVyYWxOb3RFbXB0eSk7Ci0gICAgICAg
IENPTVBJTEVfQVNTRVJUKChjaGFyYWN0ZXJzQ291bnQgLSAxIDw9ICgodW5zaWduZWQofjApIC0g
c2l6ZW9mKFN0cmluZ0ltcGwpKSAvIHNpemVvZihMQ2hhcikpKSwgU3RyaW5nSW1wbEZyb21MaXRl
cmFsQ2Fubm90T3ZlcmZsb3cpOworICAgICAgICBDT01QSUxFX0FTU0VSVChjaGFyYWN0ZXJzU2l6
ZSA+IDEsIFN0cmluZ0ltcGxGcm9tTGl0ZXJhbE5vdEVtcHR5KTsKKyAgICAgICAgQ09NUElMRV9B
U1NFUlQoKGNoYXJhY3RlcnNTaXplIC0gMSA8PSAoKHVuc2lnbmVkKH4wKSAtIHNpemVvZihTdHJp
bmdJbXBsKSkgLyBzaXplb2YoTENoYXIpKSksIFN0cmluZ0ltcGxGcm9tTGl0ZXJhbENhbm5vdE92
ZXJmbG93KTsKIAotICAgICAgICByZXR1cm4gY3JlYXRlV2l0aG91dENvcHlpbmcocmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNoYXJhY3RlcnMpLCBjaGFyYWN0ZXJzQ291bnQgLSAxKTsK
KyAgICAgICAgcmV0dXJuIGNyZWF0ZVdpdGhvdXRDb3B5aW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPihjaGFyYWN0ZXJzKSwgY2hhcmFjdGVyc1NpemUgLSAxKTsKICAgICB9CiAKICAg
ICAvLyBGSVhNRTogVHJhbnNpdGlvbiBvZmYgb2YgdGhlc2UgZnVuY3Rpb25zIHRvIGNyZWF0ZVdp
dGhvdXRDb3B5aW5nIGluc3RlYWQuCkBAIC0zODYsMjUgKzM3MSwyMyBAQCBwdWJsaWM6CiAKICAg
ICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmlu
aXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgTENoYXIqJiBkYXRhKTsKICAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVVbmluaXRpYWxpemVkKHVu
c2lnbmVkIGxlbmd0aCwgVUNoYXIqJiBkYXRhKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
c3RhdGljIEFMV0FZU19JTkxJTkUgUmVmUHRyPFN0cmluZ0ltcGw+IHRyeUNyZWF0ZVVuaW5pdGlh
bGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBUKiYgb3V0cHV0KQorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJhY3RlclR5cGU+IHN0YXRpYyBBTFdBWVNfSU5MSU5FIFJlZlB0cjxTdHJpbmdJbXBsPiB0
cnlDcmVhdGVVbmluaXRpYWxpemVkKHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVyVHlwZSomIG91
dHB1dCkKICAgICB7CiAgICAgICAgIGlmICghbGVuZ3RoKSB7CiAgICAgICAgICAgICBvdXRwdXQg
PSBudWxscHRyOwogICAgICAgICAgICAgcmV0dXJuIGVtcHR5KCk7CiAgICAgICAgIH0KLQotICAg
ICAgICBpZiAobGVuZ3RoID4gKChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkg
LSBzaXplb2YoU3RyaW5nSW1wbCkpIC8gc2l6ZW9mKFQpKSkgeworICAgICAgICBpZiAobGVuZ3Ro
ID4gKChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgLSBzaXplb2YoU3RyaW5n
SW1wbCkpIC8gc2l6ZW9mKENoYXJhY3RlclR5cGUpKSkgewogICAgICAgICAgICAgb3V0cHV0ID0g
bnVsbHB0cjsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9Ci0gICAgICAg
IFN0cmluZ0ltcGwqIHJlc3VsdEltcGw7Ci0gICAgICAgIGlmICghdHJ5RmFzdE1hbGxvYyhhbGxv
Y2F0aW9uU2l6ZTxUPihsZW5ndGgpKS5nZXRWYWx1ZShyZXN1bHRJbXBsKSkgeworICAgICAgICBT
dHJpbmdJbXBsKiByZXN1bHQ7CisgICAgICAgIGlmICghdHJ5RmFzdE1hbGxvYyhhbGxvY2F0aW9u
U2l6ZTxDaGFyYWN0ZXJUeXBlPihsZW5ndGgpKS5nZXRWYWx1ZShyZXN1bHQpKSB7CiAgICAgICAg
ICAgICBvdXRwdXQgPSBudWxscHRyOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
ICAgIH0KLSAgICAgICAgb3V0cHV0ID0gcmVzdWx0SW1wbC0+dGFpbFBvaW50ZXI8VD4oKTsKLQot
ICAgICAgICByZXR1cm4gY29uc3RydWN0SW50ZXJuYWw8VD4ocmVzdWx0SW1wbCwgbGVuZ3RoKTsK
KyAgICAgICAgb3V0cHV0ID0gcmVzdWx0LT50YWlsUG9pbnRlcjxDaGFyYWN0ZXJUeXBlPigpOwor
ICAgICAgICByZXR1cm4gY29uc3RydWN0SW50ZXJuYWw8Q2hhcmFjdGVyVHlwZT4ocmVzdWx0LCBs
ZW5ndGgpOwogICAgIH0KIAogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgUmVmPFN5
bWJvbEltcGw+IGNyZWF0ZU51bGxTeW1ib2woKTsKQEAgLTQyMyw4ICs0MDYsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIHVuc2lnbmVkIG1hc2tTdHJpbmdLaW5kKCkgeyByZXR1cm4gc19oYXNoTWFz
a1N0cmluZ0tpbmQ7IH0KICAgICBzdGF0aWMgdW5zaWduZWQgZGF0YU9mZnNldCgpIHsgcmV0dXJu
IE9CSkVDVF9PRkZTRVRPRihTdHJpbmdJbXBsLCBtX2RhdGE4KTsgfQogCi0gICAgdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhclR5cGUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZs
b3dIYW5kbGVyPgotICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gYWRvcHQoVmVjdG9yPENoYXJU
eXBlLCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiYgdmVjdG9yKQorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5h
bWUgT3ZlcmZsb3dIYW5kbGVyPiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGFkb3B0KFZlY3RvcjxD
aGFyYWN0ZXJUeXBlLCBpbmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiYgdmVjdG9yKQog
ICAgIHsKICAgICAgICAgaWYgKHNpemVfdCBzaXplID0gdmVjdG9yLnNpemUoKSkgewogICAgICAg
ICAgICAgQVNTRVJUKHZlY3Rvci5kYXRhKCkpOwpAQCAtNDQ1LDggKzQyNyw3IEBAIHB1YmxpYzoK
ICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzOCgpIGNvbnN0IHsgQVNT
RVJUKGlzOEJpdCgpKTsgcmV0dXJuIG1fZGF0YTg7IH0KICAgICBBTFdBWVNfSU5MSU5FIGNvbnN0
IFVDaGFyKiBjaGFyYWN0ZXJzMTYoKSBjb25zdCB7IEFTU0VSVCghaXM4Qml0KCkpOyByZXR1cm4g
bV9kYXRhMTY7IH0KIAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLSAgICBBTFdB
WVNfSU5MSU5FIGNvbnN0IENoYXJUeXBlICpjaGFyYWN0ZXJzKCkgY29uc3Q7CisgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBjb25zdCBDaGFyYWN0ZXJU
eXBlKiBjaGFyYWN0ZXJzKCkgY29uc3Q7CiAKICAgICBzaXplX3QgY29zdCgpIGNvbnN0CiAgICAg
ewpAQCAtNjA0LDggKzU4NSw4IEBAIHB1YmxpYzoKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
dGF0aWMgU3RyaW5nSW1wbCogZW1wdHkoKTsKIAotICAgIC8vIEZJWE1FOiBEb2VzIHRoaXMgcmVh
bGx5IGJlbG9uZyBpbiBTdHJpbmdJbXBsPwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0
aWMgdm9pZCBjb3B5Q2hhcnMoVCogZGVzdGluYXRpb24sIGNvbnN0IFQqIHNvdXJjZSwgdW5zaWdu
ZWQgbnVtQ2hhcmFjdGVycykKKyAgICAvLyBGSVhNRTogRG9lcyB0aGlzIHJlYWxseSBiZWxvbmcg
YXMgYSBTdHJpbmdJbXBsIGNsYXNzIG1lbWJlcj8KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBzdGF0aWMgdm9pZCBjb3B5Q2hhcnMoQ2hhcmFjdGVyVHlwZSogZGVzdGluYXRp
b24sIGNvbnN0IENoYXJhY3RlclR5cGUqIHNvdXJjZSwgdW5zaWduZWQgbnVtQ2hhcmFjdGVycykK
ICAgICB7CiAgICAgICAgIGlmIChudW1DaGFyYWN0ZXJzID09IDEpIHsKICAgICAgICAgICAgICpk
ZXN0aW5hdGlvbiA9ICpzb3VyY2U7CkBAIC02MTUsNyArNTk2LDcgQEAgcHVibGljOgogICAgICAg
ICBpZiAobnVtQ2hhcmFjdGVycyA8PSBzX2NvcHlDaGFyc0lubGluZUN1dE9mZikgewogICAgICAg
ICAgICAgdW5zaWduZWQgaSA9IDA7CiAjaWYgKENQVShYODYpIHx8IENQVShYODZfNjQpKQotICAg
ICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhcnNQZXJJbnQgPSBzaXplb2YodWludDMyX3QpIC8g
c2l6ZW9mKFQpOworICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhcnNQZXJJbnQgPSBzaXpl
b2YodWludDMyX3QpIC8gc2l6ZW9mKENoYXJhY3RlclR5cGUpOwogCiAgICAgICAgICAgICBpZiAo
bnVtQ2hhcmFjdGVycyA+IGNoYXJzUGVySW50KSB7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQg
c3RvcENvdW50ID0gbnVtQ2hhcmFjdGVycyAmIH4oY2hhcnNQZXJJbnQgLSAxKTsKQEAgLTYyOSw3
ICs2MTAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBmb3IgKDsgaSA8IG51bUNoYXJhY3RlcnM7
ICsraSkKICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbltpXSA9IHNvdXJjZVtpXTsKICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICBtZW1jcHkoZGVzdGluYXRpb24sIHNvdXJjZSwgbnVtQ2hh
cmFjdGVycyAqIHNpemVvZihUKSk7CisgICAgICAgICAgICBtZW1jcHkoZGVzdGluYXRpb24sIHNv
dXJjZSwgbnVtQ2hhcmFjdGVycyAqIHNpemVvZihDaGFyYWN0ZXJUeXBlKSk7CiAgICAgfQogCiAg
ICAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBjb3B5Q2hhcnMoVUNoYXIqIGRlc3RpbmF0aW9u
LCBjb25zdCBMQ2hhciogc291cmNlLCB1bnNpZ25lZCBudW1DaGFyYWN0ZXJzKQpAQCAtNjM4LDEy
ICs2MTksMTIgQEAgcHVibGljOgogICAgICAgICAgICAgZGVzdGluYXRpb25baV0gPSBzb3VyY2Vb
aV07CiAgICAgfQogCi0gICAgLy8gU29tZSBzdHJpbmcgZmVhdHVyZXMsIGxpa2UgcmVmY291bnRp
bmcgYW5kIHRoZSBhdG9taWNpdHkgZmxhZywgYXJlIG5vdAorICAgIC8vIFNvbWUgc3RyaW5nIGZl
YXR1cmVzLCBsaWtlIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgdGhlIGF0b21pY2l0eSBmbGFnLCBh
cmUgbm90CiAgICAgLy8gdGhyZWFkLXNhZmUuIFdlIGFjaGlldmUgdGhyZWFkIHNhZmV0eSBieSBp
c29sYXRpb24sIGdpdmluZyBlYWNoIHRocmVhZAogICAgIC8vIGl0cyBvd24gY29weSBvZiB0aGUg
c3RyaW5nLgogICAgIFJlZjxTdHJpbmdJbXBsPiBpc29sYXRlZENvcHkoKSBjb25zdDsKIAotICAg
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBSZWY8U3RyaW5nSW1wbD4gc3Vic3RyaW5nKHVuc2lnbmVk
IHBvcywgdW5zaWduZWQgbGVuID0gVUlOVF9NQVgpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSBSZWY8U3RyaW5nSW1wbD4gc3Vic3RyaW5nKHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCBs
ZW5ndGggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwogCiAgICAgVUNo
YXIgYXQodW5zaWduZWQgaSkgY29uc3QKICAgICB7CkBAIC02ODUsMTggKzY2NiwxNiBAQCBwdWJs
aWM6CiAgICAgUmVmPFN0cmluZ0ltcGw+IGZvbGRDYXNlKCk7CiAKICAgICBSZWY8U3RyaW5nSW1w
bD4gc3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgUmVmPFN0cmluZ0ltcGw+IHN0cmlwV2hpdGVTcGFj
ZShJc1doaXRlU3BhY2VGdW5jdGlvblB0cik7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFJl
ZjxTdHJpbmdJbXBsPiBzaW1wbGlmeVdoaXRlU3BhY2UoKTsKLSAgICBSZWY8U3RyaW5nSW1wbD4g
c2ltcGxpZnlXaGl0ZVNwYWNlKElzV2hpdGVTcGFjZUZ1bmN0aW9uUHRyKTsKKyAgICBSZWY8U3Ry
aW5nSW1wbD4gc2ltcGxpZnlXaGl0ZVNwYWNlKENvZGVVbml0TWF0Y2hGdW5jdGlvbik7CiAKLSAg
ICBSZWY8U3RyaW5nSW1wbD4gcmVtb3ZlQ2hhcmFjdGVycyhDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9u
UHRyKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci0gICAgQUxXQVlTX0lOTElO
RSBSZWY8U3RyaW5nSW1wbD4gcmVtb3ZlQ2hhcmFjdGVycyhjb25zdCBDaGFyVHlwZSogY2hhcmFj
dGVycywgQ2hhcmFjdGVyTWF0Y2hGdW5jdGlvblB0cik7CisgICAgUmVmPFN0cmluZ0ltcGw+IHN0
cmlwTGVhZGluZ0FuZFRyYWlsaW5nQ2hhcmFjdGVycyhDb2RlVW5pdE1hdGNoRnVuY3Rpb24pOwor
ICAgIFJlZjxTdHJpbmdJbXBsPiByZW1vdmVDaGFyYWN0ZXJzKENvZGVVbml0TWF0Y2hGdW5jdGlv
bik7CiAKICAgICBzaXplX3QgZmluZChMQ2hhciBjaGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0g
MCk7CiAgICAgc2l6ZV90IGZpbmQoY2hhciBjaGFyYWN0ZXIsIHVuc2lnbmVkIHN0YXJ0ID0gMCk7
CiAgICAgc2l6ZV90IGZpbmQoVUNoYXIgY2hhcmFjdGVyLCB1bnNpZ25lZCBzdGFydCA9IDApOwot
ICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3QgZmluZChDaGFyYWN0ZXJNYXRjaEZ1bmN0
aW9uUHRyLCB1bnNpZ25lZCBpbmRleCA9IDApOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBz
aXplX3QgZmluZChDb2RlVW5pdE1hdGNoRnVuY3Rpb24sIHVuc2lnbmVkIGluZGV4ID0gMCk7CiAg
ICAgc2l6ZV90IGZpbmQoY29uc3QgTENoYXIqLCB1bnNpZ25lZCBpbmRleCA9IDApOwogICAgIEFM
V0FZU19JTkxJTkUgc2l6ZV90IGZpbmQoY29uc3QgY2hhciogcywgdW5zaWduZWQgaW5kZXggPSAw
KSB7IHJldHVybiBmaW5kKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihzKSwgaW5kZXgp
OyB9CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHNpemVfdCBmaW5kKFN0cmluZ0ltcGwqKTsK
QEAgLTcwOSw5ICs2ODgsOSBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHNp
emVfdCBmaW5kSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgU3RyaW5nSW1wbCopIGNvbnN0OwogICAg
IFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlDYXNlKGNvbnN0
IFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3Q7CiAKLSAgICBXVEZfRVhQ
T1JUX1NUUklOR19BUEkgc2l6ZV90IHJldmVyc2VGaW5kKFVDaGFyLCB1bnNpZ25lZCBpbmRleCA9
IFVJTlRfTUFYKTsKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc2l6ZV90IHJldmVyc2VGaW5k
KFN0cmluZ0ltcGwqLCB1bnNpZ25lZCBpbmRleCA9IFVJTlRfTUFYKTsKLSAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgc2l6ZV90IHJldmVyc2VGaW5kSWdub3JpbmdDYXNlKFN0cmluZ0ltcGwqLCB1
bnNpZ25lZCBpbmRleCA9IFVJTlRfTUFYKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc2l6
ZV90IHJldmVyc2VGaW5kKFVDaGFyLCB1bnNpZ25lZCBpbmRleCA9IHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHNpemVfdCBy
ZXZlcnNlRmluZChTdHJpbmdJbXBsKiwgdW5zaWduZWQgaW5kZXggPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVuc2lnbmVkPjo6bWF4KCkpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzaXplX3Qg
cmV2ZXJzZUZpbmRJZ25vcmluZ0Nhc2UoU3RyaW5nSW1wbCosIHVuc2lnbmVkIGluZGV4ID0gc3Rk
OjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKIAogICAgIFdURl9FWFBPUlRfU1RS
SU5HX0FQSSBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nSW1wbCopIGNvbnN0OwogICAgIFdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIHN0YXJ0c1dpdGgoY29uc3QgU3RyaW5nSW1wbCYpIGNv
bnN0OwpAQCAtODUyLDEzICs4MzEsMTQgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTxDYXNlQ29u
dmVydFR5cGUgdHlwZSwgdHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gc3RhdGljIFJlZjxTdHJpbmdJ
bXBsPiBjb252ZXJ0QVNDSUlDYXNlKFN0cmluZ0ltcGwmLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiwg
dW5zaWduZWQpOwogCiAgICAgQnVmZmVyT3duZXJzaGlwIGJ1ZmZlck93bmVyc2hpcCgpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJ1ZmZlck93bmVyc2hpcD4obV9oYXNoQW5kRmxhZ3MgJiBz
X2hhc2hNYXNrQnVmZmVyT3duZXJzaGlwKTsgfQotICAgIHRlbXBsYXRlIDxjbGFzcyBVQ2hhclBy
ZWRpY2F0ZT4gUmVmPFN0cmluZ0ltcGw+IHN0cmlwTWF0Y2hlZENoYXJhY3RlcnMoVUNoYXJQcmVk
aWNhdGUpOwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZSwgY2xhc3MgVUNoYXJQcmVk
aWNhdGU+IFJlZjxTdHJpbmdJbXBsPiBzaW1wbGlmeU1hdGNoZWRDaGFyYWN0ZXJzVG9TcGFjZShV
Q2hhclByZWRpY2F0ZSk7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPiBzdGF0aWMg
UmVmPFN0cmluZ0ltcGw+IGNvbnN0cnVjdEludGVybmFsKFN0cmluZ0ltcGwqLCB1bnNpZ25lZCk7
Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+
IGNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbCh1bnNpZ25lZCwgQ2hhclR5cGUqJik7Ci0gICAg
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0
ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KHVuc2lnbmVkLCBDaGFyVHlwZSomKTsKLSAg
ICB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gcmVh
bGxvY2F0ZUludGVybmFsKFJlZjxTdHJpbmdJbXBsPiYmLCB1bnNpZ25lZCwgQ2hhclR5cGUqJik7
Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlPiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+
IGNyZWF0ZUludGVybmFsKGNvbnN0IENoYXJUeXBlKiwgdW5zaWduZWQpOworICAgIHRlbXBsYXRl
PGNsYXNzIENvZGVVbml0UHJlZGljYXRlPiBSZWY8U3RyaW5nSW1wbD4gc3RyaXBNYXRjaGVkQ2hh
cmFjdGVycyhDb2RlVW5pdFByZWRpY2F0ZSk7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4gQUxXQVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gcmVtb3ZlQ2hhcmFjdGVycyhj
b25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCBDb2RlVW5pdE1hdGNoRnVuY3Rpb24pOwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUsIGNsYXNzIENvZGVVbml0UHJlZGlj
YXRlPiBSZWY8U3RyaW5nSW1wbD4gc2ltcGxpZnlNYXRjaGVkQ2hhcmFjdGVyc1RvU3BhY2UoQ29k
ZVVuaXRQcmVkaWNhdGUpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHN0
YXRpYyBSZWY8U3RyaW5nSW1wbD4gY29uc3RydWN0SW50ZXJuYWwoU3RyaW5nSW1wbCosIHVuc2ln
bmVkKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgUmVmPFN0
cmluZ0ltcGw+IGNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbCh1bnNpZ25lZCwgQ2hhcmFjdGVy
VHlwZSomKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPiBzdGF0aWMgUmVm
PFN0cmluZ0ltcGw+IGNyZWF0ZVVuaW5pdGlhbGl6ZWRJbnRlcm5hbE5vbkVtcHR5KHVuc2lnbmVk
LCBDaGFyYWN0ZXJUeXBlKiYpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
IHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gcmVhbGxvY2F0ZUludGVybmFsKFJlZjxTdHJpbmdJbXBs
PiYmLCB1bnNpZ25lZCwgQ2hhcmFjdGVyVHlwZSomKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUludGVybmFsKGNvbnN0
IENoYXJhY3RlclR5cGUqLCB1bnNpZ25lZCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIE5FVkVS
X0lOTElORSB1bnNpZ25lZCBoYXNoU2xvd0Nhc2UoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgc3RhdGljIHVuc2lnbmVkIG5leHRIYXNoRm9yU3ltYm9sKCk7CiAgICAgV1RGX0VYUE9S
VF9QUklWQVRFIHN0YXRpYyBTdHJpbmdJbXBsKiBudWxsKCk7CkBAIC05MDcsMjcgKzg4NywyMyBA
QCBwcml2YXRlOgogc3RhdGljX2Fzc2VydChzaXplb2YoU3RyaW5nSW1wbCkgPT0gc2l6ZW9mKFN0
cmluZ0ltcGw6OlN0YXRpY0FTQ0lJTGl0ZXJhbCksICIiKTsKIAogI2lmICFBU1NFUlRfRElTQUJM
RUQKKwogLy8gU3RyaW5nSW1wbHMgY3JlYXRlZCBmcm9tIFN0YXRpY0FTQ0lJTGl0ZXJhbCB3aWxs
IEFTU0VSVAogLy8gaW4gdGhlIGdlbmVyaWMgVmFsdWVDaGVjazxUPjo6Y2hlY2tDb25zaXN0ZW5j
eQogLy8gYXMgdGhleSBhcmUgbm90IGFsbG9jYXRlZCBieSBmYXN0TWFsbG9jLgogLy8gV2UgZG9u
J3QgY3VycmVudGx5IGhhdmUgYW55IHdheSB0byBkZXRlY3QgdGhhdCBjYXNlCiAvLyBzbyB3ZSBp
Z25vcmUgdGhlIGNvbnNpc3RlbmN5IGNoZWNrIGZvciBhbGwgU3RyaW5nSW1wbCouCi10ZW1wbGF0
ZTw+IHN0cnVjdAotVmFsdWVDaGVjazxTdHJpbmdJbXBsKj4gewordGVtcGxhdGU8PiBzdHJ1Y3Qg
VmFsdWVDaGVjazxTdHJpbmdJbXBsKj4gewogICAgIHN0YXRpYyB2b2lkIGNoZWNrQ29uc2lzdGVu
Y3koY29uc3QgU3RyaW5nSW1wbCopIHsgfQogfTsKLSNlbmRpZgogCi10ZW1wbGF0ZSA8PgotQUxX
QVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y29uc3RydWN0SW50ZXJuYWw8
TENoYXI+KFN0cmluZ0ltcGwqIGltcGwsIHVuc2lnbmVkIGxlbmd0aCkgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyAoTm90TnVsbCwgaW1wbCkgU3RyaW5nSW1wbChsZW5ndGgsIEZvcmNlOEJpdENvbnN0
cnVjdG9yKSk7IH0KLXRlbXBsYXRlIDw+Ci1BTFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBT
dHJpbmdJbXBsOjpjb25zdHJ1Y3RJbnRlcm5hbDxVQ2hhcj4oU3RyaW5nSW1wbCogaW1wbCwgdW5z
aWduZWQgbGVuZ3RoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBpbXBsKSBTdHJp
bmdJbXBsKGxlbmd0aCkpOyB9CisjZW5kaWYKIAotdGVtcGxhdGUgPD4KLUFMV0FZU19JTkxJTkUg
Y29uc3QgTENoYXIqIFN0cmluZ0ltcGw6OmNoYXJhY3RlcnM8TENoYXI+KCkgY29uc3QgeyByZXR1
cm4gY2hhcmFjdGVyczgoKTsgfQordGVtcGxhdGU8PiBBTFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJ
bXBsPiBTdHJpbmdJbXBsOjpjb25zdHJ1Y3RJbnRlcm5hbDxMQ2hhcj4oU3RyaW5nSW1wbCogaW1w
bCwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBpbXBs
KSBTdHJpbmdJbXBsKGxlbmd0aCwgRm9yY2U4Qml0Q29uc3RydWN0b3IpKTsgfQordGVtcGxhdGU8
PiBBTFdBWVNfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjb25zdHJ1Y3RJbnRl
cm5hbDxVQ2hhcj4oU3RyaW5nSW1wbCogaW1wbCwgdW5zaWduZWQgbGVuZ3RoKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IChOb3ROdWxsLCBpbXBsKSBTdHJpbmdJbXBsKGxlbmd0aCkpOyB9CiAKLXRl
bXBsYXRlIDw+Ci1BTFdBWVNfSU5MSU5FIGNvbnN0IFVDaGFyKiBTdHJpbmdJbXBsOjpjaGFyYWN0
ZXJzPFVDaGFyPigpIGNvbnN0IHsgcmV0dXJuIGNoYXJhY3RlcnMxNigpOyB9Cit0ZW1wbGF0ZTw+
IEFMV0FZU19JTkxJTkUgY29uc3QgTENoYXIqIFN0cmluZ0ltcGw6OmNoYXJhY3RlcnM8TENoYXI+
KCkgY29uc3QgeyByZXR1cm4gY2hhcmFjdGVyczgoKTsgfQordGVtcGxhdGU8PiBBTFdBWVNfSU5M
SU5FIGNvbnN0IFVDaGFyKiBTdHJpbmdJbXBsOjpjaGFyYWN0ZXJzPFVDaGFyPigpIGNvbnN0IHsg
cmV0dXJuIGNoYXJhY3RlcnMxNigpOyB9CiAKIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBib29sIGVx
dWFsKGNvbnN0IFN0cmluZ0ltcGwqLCBjb25zdCBTdHJpbmdJbXBsKik7CiBXVEZfRVhQT1JUX1NU
UklOR19BUEkgYm9vbCBlcXVhbChjb25zdCBTdHJpbmdJbXBsKiwgY29uc3QgTENoYXIqKTsKQEAg
LTk1Miw3ICs5MjgsNyBAQCBXVEZfRVhQT1JUX1NUUklOR19BUEkgYm9vbCBlcXVhbElnbm9yaW5n
QVNDSUlDYXNlTm9uTnVsbChjb25zdCBTdHJpbmdJbXBsKiwgY29ucwogdGVtcGxhdGU8dW5zaWdu
ZWQgbGVuZ3RoPiBib29sIGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFN0cmlu
Z0ltcGwmLCBjb25zdCBjaGFyICgmbG93ZXJjYXNlTGV0dGVycylbbGVuZ3RoXSk7CiB0ZW1wbGF0
ZTx1bnNpZ25lZCBsZW5ndGg+IGJvb2wgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29u
c3QgU3RyaW5nSW1wbCosIGNvbnN0IGNoYXIgKCZsb3dlcmNhc2VMZXR0ZXJzKVtsZW5ndGhdKTsK
IAotaW5saW5lIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgsIENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIgbWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQg
aW5kZXggPSAwKQoraW5saW5lIHNpemVfdCBmaW5kKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1
bnNpZ25lZCBsZW5ndGgsIENvZGVVbml0TWF0Y2hGdW5jdGlvbiBtYXRjaEZ1bmN0aW9uLCB1bnNp
Z25lZCBpbmRleCA9IDApCiB7CiAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7CiAgICAgICAg
IGlmIChtYXRjaEZ1bmN0aW9uKGNoYXJhY3RlcnNbaW5kZXhdKSkKQEAgLTk2Miw3ICs5MzgsNyBA
QCBpbmxpbmUgc2l6ZV90IGZpbmQoY29uc3QgTENoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxl
bmd0aCwgQ2hhcmFjdGVyTWF0Y2hGdW5jdAogICAgIHJldHVybiBub3RGb3VuZDsKIH0KIAotaW5s
aW5lIHNpemVfdCBmaW5kKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgs
IENoYXJhY3Rlck1hdGNoRnVuY3Rpb25QdHIgbWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgaW5kZXgg
PSAwKQoraW5saW5lIHNpemVfdCBmaW5kKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25l
ZCBsZW5ndGgsIENvZGVVbml0TWF0Y2hGdW5jdGlvbiBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBp
bmRleCA9IDApCiB7CiAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7CiAgICAgICAgIGlmICht
YXRjaEZ1bmN0aW9uKGNoYXJhY3RlcnNbaW5kZXhdKSkKQEAgLTk3Miw4ICs5NDgsNyBAQCBpbmxp
bmUgc2l6ZV90IGZpbmQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwg
Q2hhcmFjdGVyTWF0Y2hGdW5jdAogICAgIHJldHVybiBub3RGb3VuZDsKIH0KIAotdGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLWlubGluZSBzaXplX3QgcmV2ZXJzZUZpbmRMaW5lVGVy
bWluYXRvcihjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgs
IHVuc2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPiBpbmxpbmUgc2l6ZV90IHJldmVyc2VGaW5kTGluZVRlcm1pbmF0b3IoY29uc3QgQ2hhcmFj
dGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCBpbmRleCA9IHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKIHsKICAgICBpZiAoIWxlbmd0aCkK
ICAgICAgICAgcmV0dXJuIG5vdEZvdW5kOwpAQCAtOTg4LDggKzk2Myw3IEBAIGlubGluZSBzaXpl
X3QgcmV2ZXJzZUZpbmRMaW5lVGVybWluYXRvcihjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0
ZXJzLCB1bnNpZ25lCiAgICAgcmV0dXJuIGluZGV4OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPgotaW5saW5lIHNpemVfdCByZXZlcnNlRmluZChjb25zdCBDaGFyYWN0ZXJU
eXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIENoYXJhY3RlclR5cGUgbWF0Y2hDaGFy
YWN0ZXIsIHVuc2lnbmVkIGluZGV4ID0gVUlOVF9NQVgpCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPiBpbmxpbmUgc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IENoYXJhY3RlclR5cGUq
IGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgQ2hhcmFjdGVyVHlwZSBtYXRjaENoYXJhY3Rl
ciwgdW5zaWduZWQgaW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkp
CiB7CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBub3RGb3VuZDsKQEAgLTEwMDIs
MTIgKzk3NiwxMiBAQCBpbmxpbmUgc2l6ZV90IHJldmVyc2VGaW5kKGNvbnN0IENoYXJhY3RlclR5
cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgQ2hhcgogICAgIHJldHVybiBpbmRleDsK
IH0KIAotQUxXQVlTX0lOTElORSBzaXplX3QgcmV2ZXJzZUZpbmQoY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnMsIHVuc2lnbmVkIGxlbmd0aCwgTENoYXIgbWF0Y2hDaGFyYWN0ZXIsIHVuc2lnbmVkIGlu
ZGV4ID0gVUlOVF9NQVgpCitBTFdBWVNfSU5MSU5FIHNpemVfdCByZXZlcnNlRmluZChjb25zdCBV
Q2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBMQ2hhciBtYXRjaENoYXJhY3Rlciwg
dW5zaWduZWQgaW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCiB7
CiAgICAgcmV0dXJuIHJldmVyc2VGaW5kKGNoYXJhY3RlcnMsIGxlbmd0aCwgc3RhdGljX2Nhc3Q8
VUNoYXI+KG1hdGNoQ2hhcmFjdGVyKSwgaW5kZXgpOwogfQogCi1pbmxpbmUgc2l6ZV90IHJldmVy
c2VGaW5kKGNvbnN0IExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFVDaGFyIG1h
dGNoQ2hhcmFjdGVyLCB1bnNpZ25lZCBpbmRleCA9IFVJTlRfTUFYKQoraW5saW5lIHNpemVfdCBy
ZXZlcnNlRmluZChjb25zdCBMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBVQ2hh
ciBtYXRjaENoYXJhY3RlciwgdW5zaWduZWQgaW5kZXggPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVu
c2lnbmVkPjo6bWF4KCkpCiB7CiAgICAgaWYgKG1hdGNoQ2hhcmFjdGVyICYgfjB4RkYpCiAgICAg
ICAgIHJldHVybiBub3RGb3VuZDsKQEAgLTEwMzgsOCArMTAxMiw3IEBAIHRlbXBsYXRlPHNpemVf
dCBpbmxpbmVDYXBhY2l0eT4gaW5saW5lIGJvb2wgZXF1YWxJZ25vcmluZ051bGxpdHkoY29uc3Qg
VmVjdG9yPFVDCiAgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdOdWxsaXR5KGEuZGF0YSgpLCBhLnNp
emUoKSwgYik7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGUxLCB0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlMj4KLWlubGluZSBpbnQgY29kZVBvaW50Q29tcGFyZSh1bnNpZ25lZCBs
MSwgdW5zaWduZWQgbDIsIGNvbnN0IENoYXJhY3RlclR5cGUxKiBjMSwgY29uc3QgQ2hhcmFjdGVy
VHlwZTIqIGMyKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZTEsIHR5cGVuYW1lIENo
YXJhY3RlclR5cGUyPiBpbmxpbmUgaW50IGNvZGVQb2ludENvbXBhcmUodW5zaWduZWQgbDEsIHVu
c2lnbmVkIGwyLCBjb25zdCBDaGFyYWN0ZXJUeXBlMSogYzEsIGNvbnN0IENoYXJhY3RlclR5cGUy
KiBjMikKIHsKICAgICBjb25zdCB1bnNpZ25lZCBsbWluID0gbDEgPCBsMiA/IGwxIDogbDI7CiAg
ICAgdW5zaWduZWQgcG9zID0gMDsKQEAgLTEwOTMsMTUgKzEwNjYsMTMgQEAgaW5saW5lIGludCBj
b2RlUG9pbnRDb21wYXJlKGNvbnN0IFN0cmluZ0ltcGwqIHN0cmluZzEsIGNvbnN0IFN0cmluZ0lt
cGwqIHN0cmluZzIKICAgICByZXR1cm4gY29kZVBvaW50Q29tcGFyZTE2KHN0cmluZzEsIHN0cmlu
ZzIpOwogfQogCi1pbmxpbmUgYm9vbCBpc1NwYWNlT3JOZXdsaW5lKFVDaGFyIGMpCitpbmxpbmUg
Ym9vbCBpc1NwYWNlT3JOZXdsaW5lKFVDaGFyIGNoYXJhY3RlcikKIHsKLSAgICAvLyBVc2UgaXNB
U0NJSVNwYWNlKCkgZm9yIGJhc2ljIExhdGluLTEuCi0gICAgLy8gVGhpcyB3aWxsIGluY2x1ZGUg
bmV3bGluZXMsIHdoaWNoIGFyZW4ndCBpbmNsdWRlZCBpbiBVbmljb2RlIERpcldTLgotICAgIHJl
dHVybiBjIDw9IDB4N0YgPyBpc0FTQ0lJU3BhY2UoYykgOiB1X2NoYXJEaXJlY3Rpb24oYykgPT0g
VV9XSElURV9TUEFDRV9ORVVUUkFMOworICAgIC8vIFVzZSBpc0FTQ0lJU3BhY2UoKSBmb3IgYWxs
IExhdGluLTEgY2hhcmFjdGVycy4gVGhpcyB3aWxsIGluY2x1ZGUgbmV3bGluZXMsIHdoaWNoIGFy
ZW4ndCBpbmNsdWRlZCBpbiBVbmljb2RlIERpcldTLgorICAgIHJldHVybiBjaGFyYWN0ZXIgPD0g
MHhGRiA/IGlzQVNDSUlTcGFjZShjaGFyYWN0ZXIpIDogdV9jaGFyRGlyZWN0aW9uKGNoYXJhY3Rl
cikgPT0gVV9XSElURV9TUEFDRV9ORVVUUkFMOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgotaW5saW5lIHVuc2lnbmVkIGxlbmd0aE9mTnVsbFRlcm1pbmF0ZWRTdHJpbmco
Y29uc3QgQ2hhcmFjdGVyVHlwZSogc3RyaW5nKQordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4gaW5saW5lIHVuc2lnbmVkIGxlbmd0aE9mTnVsbFRlcm1pbmF0ZWRTdHJpbmcoY29uc3Qg
Q2hhcmFjdGVyVHlwZSogc3RyaW5nKQogewogICAgIEFTU0VSVChzdHJpbmcpOwogICAgIHNpemVf
dCBsZW5ndGggPSAwOwpAQCAtMTE3Myw4ICsxMTQ0LDUgQEAgdGVtcGxhdGU8dW5zaWduZWQgbGVu
Z3RoPiBpbmxpbmUgYm9vbCBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShjb25zdCBTdHJp
bmcKIAogdXNpbmcgV1RGOjpTdHJpbmdJbXBsOwogdXNpbmcgV1RGOjplcXVhbDsKLXVzaW5nIFdU
Rjo6VGV4dENhc2VTZW5zaXRpdml0eTsKLXVzaW5nIFdURjo6VGV4dENhc2VTZW5zaXRpdmU7Ci11
c2luZyBXVEY6OlRleHRDYXNlSW5zZW5zaXRpdmU7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z1ZpZXcuaAppbmRleCA3Y2ZkOWY5NjBkMjdmNDcwYTQyOWNiNWRkMmIyYzBjM2E3NjI4NDIzLi45
ZTI4YzVmYzg2MmFkZjVmZWZjMTdjZDdiNTZlMWY5MjkzYjc2YzU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ1ZpZXcuaApAQCAtNDUsOCArNDUsNiBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAotdXNpbmcg
Q2hhcmFjdGVyTWF0Y2hGdW5jdGlvbiA9IGJvb2wgKCopKFVDaGFyKTsKLQogLy8gU3RyaW5nVmll
dyBpcyBhIG5vbi1vd25pbmcgcmVmZXJlbmNlIHRvIGEgc3RyaW5nLCBzaW1pbGFyIHRvIHRoZSBw
cm9wb3NlZCBzdGQ6OnN0cmluZ192aWV3LgogCiBjbGFzcyBTdHJpbmdWaWV3IHsKQEAgLTExNSw3
ICsxMTMsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nVmlldyBzdWJzdHJpbmcodW5zaWduZWQgc3Rh
cnQsIHVuc2lnbmVkIGxlbmd0aCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgo
KSkgY29uc3Q7CiAKICAgICBzaXplX3QgZmluZChVQ2hhciwgdW5zaWduZWQgc3RhcnQgPSAwKSBj
b25zdDsKLSAgICBzaXplX3QgZmluZChDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBz
dGFydCA9IDApIGNvbnN0OworICAgIHNpemVfdCBmaW5kKENvZGVVbml0TWF0Y2hGdW5jdGlvbiwg
dW5zaWduZWQgc3RhcnQgPSAwKSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBz
aXplX3QgZmluZChTdHJpbmdWaWV3LCB1bnNpZ25lZCBzdGFydCkgY29uc3Q7CiAKQEAgLTUxMSw3
ICs1MDksNyBAQCBpbmxpbmUgc2l6ZV90IFN0cmluZ1ZpZXc6OmZpbmQoVUNoYXIgY2hhcmFjdGVy
LCB1bnNpZ25lZCBzdGFydCkgY29uc3QKICAgICByZXR1cm4gV1RGOjpmaW5kKGNoYXJhY3RlcnMx
NigpLCBtX2xlbmd0aCwgY2hhcmFjdGVyLCBzdGFydCk7CiB9CiAKLWlubGluZSBzaXplX3QgU3Ry
aW5nVmlldzo6ZmluZChDaGFyYWN0ZXJNYXRjaEZ1bmN0aW9uIG1hdGNoRnVuY3Rpb24sIHVuc2ln
bmVkIHN0YXJ0KSBjb25zdAoraW5saW5lIHNpemVfdCBTdHJpbmdWaWV3OjpmaW5kKENvZGVVbml0
TWF0Y2hGdW5jdGlvbiBtYXRjaEZ1bmN0aW9uLCB1bnNpZ25lZCBzdGFydCkgY29uc3QKIHsKICAg
ICBpZiAoaXM4Qml0KCkpCiAgICAgICAgIHJldHVybiBXVEY6OmZpbmQoY2hhcmFjdGVyczgoKSwg
bV9sZW5ndGgsIG1hdGNoRnVuY3Rpb24sIHN0YXJ0KTsKQEAgLTgxNiw0ICs4MTQsNCBAQCB1c2lu
ZyBXVEY6OmFwcGVuZDsKIHVzaW5nIFdURjo6ZXF1YWw7CiB1c2luZyBXVEY6OlN0cmluZ1ZpZXc7
CiAKLSNlbmRpZiAvLyBTdHJpbmdWaWV3X2gKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
Y3BwCmluZGV4IGZiNjA0MDA4NDRhZWQwYWVmYTUzODJlZjc0ZTIzN2M0MWE0NjAwOWIuLmMzZWJh
Y2E0NTk5MWEwMzFlMTBhZTY4MmNlZDJiOTkzNjE1YmY4ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0
cmluZy5jcHAKQEAgLTM4NiwxMSArMzg2LDExIEBAIFN0cmluZyBTdHJpbmc6OnN0cmlwV2hpdGVT
cGFjZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1faW1wbC0+c3RyaXBXaGl0ZVNwYWNlKCk7CiB9CiAK
LVN0cmluZyBTdHJpbmc6OnN0cmlwV2hpdGVTcGFjZShJc1doaXRlU3BhY2VGdW5jdGlvblB0ciBp
c1doaXRlU3BhY2UpIGNvbnN0CitTdHJpbmcgU3RyaW5nOjpzdHJpcExlYWRpbmdBbmRUcmFpbGlu
Z0NoYXJhY3RlcnMoQ29kZVVuaXRNYXRjaEZ1bmN0aW9uIHByZWRpY2F0ZSkgY29uc3QKIHsKICAg
ICBpZiAoIW1faW1wbCkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIHJldHVybiBtX2lt
cGwtPnN0cmlwV2hpdGVTcGFjZShpc1doaXRlU3BhY2UpOworICAgIHJldHVybiBtX2ltcGwtPnN0
cmlwTGVhZGluZ0FuZFRyYWlsaW5nQ2hhcmFjdGVycyhwcmVkaWNhdGUpOwogfQogCiBTdHJpbmcg
U3RyaW5nOjpzaW1wbGlmeVdoaXRlU3BhY2UoKSBjb25zdApAQCAtNDAwLDE0ICs0MDAsMTQgQEAg
U3RyaW5nIFN0cmluZzo6c2ltcGxpZnlXaGl0ZVNwYWNlKCkgY29uc3QKICAgICByZXR1cm4gbV9p
bXBsLT5zaW1wbGlmeVdoaXRlU3BhY2UoKTsKIH0KIAotU3RyaW5nIFN0cmluZzo6c2ltcGxpZnlX
aGl0ZVNwYWNlKElzV2hpdGVTcGFjZUZ1bmN0aW9uUHRyIGlzV2hpdGVTcGFjZSkgY29uc3QKK1N0
cmluZyBTdHJpbmc6OnNpbXBsaWZ5V2hpdGVTcGFjZShDb2RlVW5pdE1hdGNoRnVuY3Rpb24gaXNX
aGl0ZVNwYWNlKSBjb25zdAogewogICAgIGlmICghbV9pbXBsKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAgICAgcmV0dXJuIG1faW1wbC0+c2ltcGxpZnlXaGl0ZVNwYWNlKGlzV2hpdGVTcGFj
ZSk7CiB9CiAKLVN0cmluZyBTdHJpbmc6OnJlbW92ZUNoYXJhY3RlcnMoQ2hhcmFjdGVyTWF0Y2hG
dW5jdGlvblB0ciBmaW5kTWF0Y2gpIGNvbnN0CitTdHJpbmcgU3RyaW5nOjpyZW1vdmVDaGFyYWN0
ZXJzKENvZGVVbml0TWF0Y2hGdW5jdGlvbiBmaW5kTWF0Y2gpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X2ltcGwpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmlu
ZGV4IGE5NDkxYWQ0Y2VjNzFjNzQwNzE3ZTI5OTMxNGM0ZjdkY2YzMTkzZmUuLmRkNGJiMzQyN2Jm
OWYxMDIxMDMzYWQwZDBiMzYxYmUxY2E3YmZkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApA
QCAtMjI1LDcgKzIyNSw3IEBAIHB1YmxpYzoKICAgICBzaXplX3QgZmluZElnbm9yaW5nQVNDSUlD
YXNlKGNvbnN0IFN0cmluZyYgc3RyLCB1bnNpZ25lZCBzdGFydE9mZnNldCkgY29uc3QKICAgICAg
ICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyLmlt
cGwoKSwgc3RhcnRPZmZzZXQpIDogbm90Rm91bmQ7IH0KIAotICAgIHNpemVfdCBmaW5kKENoYXJh
Y3Rlck1hdGNoRnVuY3Rpb25QdHIgbWF0Y2hGdW5jdGlvbiwgdW5zaWduZWQgc3RhcnQgPSAwKSBj
b25zdAorICAgIHNpemVfdCBmaW5kKENvZGVVbml0TWF0Y2hGdW5jdGlvbiBtYXRjaEZ1bmN0aW9u
LCB1bnNpZ25lZCBzdGFydCA9IDApIGNvbnN0CiAgICAgICAgIHsgcmV0dXJuIG1faW1wbCA/IG1f
aW1wbC0+ZmluZChtYXRjaEZ1bmN0aW9uLCBzdGFydCkgOiBub3RGb3VuZDsgfQogICAgIHNpemVf
dCBmaW5kKGNvbnN0IExDaGFyKiBzdHIsIHVuc2lnbmVkIHN0YXJ0ID0gMCkgY29uc3QKICAgICAg
ICAgeyByZXR1cm4gbV9pbXBsID8gbV9pbXBsLT5maW5kKHN0ciwgc3RhcnQpIDogbm90Rm91bmQ7
IH0KQEAgLTMzNSwxMSArMzM1LDExIEBAIHB1YmxpYzoKICAgICBXVEZfRVhQT1JUX1NUUklOR19B
UEkgU3RyaW5nIGNvbnZlcnRUb1VwcGVyY2FzZVdpdGhMb2NhbGUoY29uc3QgQXRvbWljU3RyaW5n
JiBsb2NhbGVJZGVudGlmaWVyKSBjb25zdDsKIAogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBT
dHJpbmcgc3RyaXBXaGl0ZVNwYWNlKCkgY29uc3Q7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IFN0cmluZyBzdHJpcFdoaXRlU3BhY2UoSXNXaGl0ZVNwYWNlRnVuY3Rpb25QdHIpIGNvbnN0Owog
ICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBTdHJpbmcgc2ltcGxpZnlXaGl0ZVNwYWNlKCkgY29u
c3Q7Ci0gICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFN0cmluZyBzaW1wbGlmeVdoaXRlU3BhY2Uo
SXNXaGl0ZVNwYWNlRnVuY3Rpb25QdHIpIGNvbnN0OworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQ
SSBTdHJpbmcgc2ltcGxpZnlXaGl0ZVNwYWNlKENvZGVVbml0TWF0Y2hGdW5jdGlvbikgY29uc3Q7
CiAKLSAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgU3RyaW5nIHJlbW92ZUNoYXJhY3RlcnMoQ2hh
cmFjdGVyTWF0Y2hGdW5jdGlvblB0cikgY29uc3Q7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IFN0cmluZyBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0NoYXJhY3RlcnMoQ29kZVVuaXRNYXRjaEZ1
bmN0aW9uKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgU3RyaW5nIHJlbW92ZUNo
YXJhY3RlcnMoQ29kZVVuaXRNYXRjaEZ1bmN0aW9uKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxib29s
IGlzU3BlY2lhbENoYXJhY3RlcihVQ2hhcik+IGJvb2wgaXNBbGxTcGVjaWFsQ2hhcmFjdGVycygp
IGNvbnN0OwogCiAgICAgLy8gUmV0dXJucyB0aGUgc3RyaW5nIHdpdGggY2FzZSBmb2xkZWQgZm9y
IGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQmFzZVRleHRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlVGV4
dElucHV0VHlwZS5jcHAKaW5kZXggNTZkNjcwOTczMDcyZmFhZGM0MzY1NWQxYzA1Y2MxYWNhZmQ5
ZWZkYy4uNDk3M2JlZDIwMjZjMjExOGRkMWVjZTM2ODcyMGM1NWI2Y2UzOGI2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlVGV4dElucHV0VHlwZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9CYXNlVGV4dElucHV0VHlwZS5jcHAKQEAgLTQwLDEyICs0MCwxMiBAQCBi
b29sIEJhc2VUZXh0SW5wdXRUeXBlOjppc1RleHRUeXBlKCkgY29uc3QKIGJvb2wgQmFzZVRleHRJ
bnB1dFR5cGU6OnBhdHRlcm5NaXNtYXRjaChjb25zdCBTdHJpbmcmIHZhbHVlKSBjb25zdAogewog
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcmF3UGF0dGVybiA9IGVsZW1lbnQoKS5hdHRyaWJ1dGVX
aXRob3V0U3luY2hyb25pemF0aW9uKHBhdHRlcm5BdHRyKTsKLSAgICBpZiAocmF3UGF0dGVybi5p
c051bGwoKSB8fCB2YWx1ZS5pc0VtcHR5KCkgfHwgIUpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Np
b24ocmF3UGF0dGVybiwgVGV4dENhc2VTZW5zaXRpdmUpLmlzVmFsaWQoKSkKKyAgICBpZiAocmF3
UGF0dGVybi5pc051bGwoKSB8fCB2YWx1ZS5pc0VtcHR5KCkgfHwgIUpTQzo6WWFycjo6UmVndWxh
ckV4cHJlc3Npb24ocmF3UGF0dGVybiwgSlNDOjpZYXJyOjpUZXh0Q2FzZVNlbnNpdGl2ZSkuaXNW
YWxpZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgU3RyaW5nIHBhdHRlcm4gPSAiXig/
OiIgKyByYXdQYXR0ZXJuICsgIikkIjsKICAgICBpbnQgbWF0Y2hMZW5ndGggPSAwOwogICAgIGlu
dCB2YWx1ZUxlbmd0aCA9IHZhbHVlLmxlbmd0aCgpOwotICAgIGludCBtYXRjaE9mZnNldCA9IEpT
Qzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24ocGF0dGVybiwgVGV4dENhc2VTZW5zaXRpdmUpLm1h
dGNoKHZhbHVlLCAwLCAmbWF0Y2hMZW5ndGgpOworICAgIGludCBtYXRjaE9mZnNldCA9IEpTQzo6
WWFycjo6UmVndWxhckV4cHJlc3Npb24ocGF0dGVybiwgSlNDOjpZYXJyOjpUZXh0Q2FzZVNlbnNp
dGl2ZSkubWF0Y2godmFsdWUsIDAsICZtYXRjaExlbmd0aCk7CiAgICAgcmV0dXJuIG1hdGNoT2Zm
c2V0IHx8IG1hdGNoTGVuZ3RoICE9IHZhbHVlTGVuZ3RoOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0VtYWlsSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RW1haWxJbnB1dFR5cGUuY3BwCmluZGV4IGU2ZTAxOTQ0ZTg1MmQ0NGQxZmIxNDc5N2ZmMTVkNzI0
NWVmZWMwNjguLjUxNDAzMzZhNmZlYThmY2FjZTcxMDBkZDY4M2NiN2Q0YjA3ZTVlMjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRW1haWxJbnB1dFR5cGUuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHN0YXRp
YyBib29sIGlzVmFsaWRFbWFpbEFkZHJlc3MoY29uc3QgU3RyaW5nJiBhZGRyZXNzKQogICAgIGlm
ICghYWRkcmVzc0xlbmd0aCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24+IHJlZ0V4cChl
bWFpbFBhdHRlcm4sIFRleHRDYXNlSW5zZW5zaXRpdmUpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uPiByZWdFeHAoZW1haWxQYXR0
ZXJuLCBKU0M6OllhcnI6OlRleHRDYXNlSW5zZW5zaXRpdmUpOwogCiAgICAgaW50IG1hdGNoTGVu
Z3RoOwogICAgIGludCBtYXRjaE9mZnNldCA9IHJlZ0V4cC5nZXQoKS5tYXRjaChhZGRyZXNzLCAw
LCAmbWF0Y2hMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0
aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNw
cAppbmRleCAwYTMzYTYxNTRjMDAyYTIyY2Y1MzgzOGFiYmYyYzY1ZjBjMTFlYjU3Li5jZGRmMjhm
MWI3ZWIyMTNjM2JkNTQ2NmU4NmJiODQ5MTE3YzM2YmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPcHRpb25FbGVtZW50LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIFN0cmluZyBIVE1MT3B0
aW9uRWxlbWVudDo6dGV4dCgpIGNvbnN0CiAKICAgICAvLyBGSVhNRTogSXMgZGlzcGxheVN0cmlu
Z01vZGlmaWVkQnlFbmNvZGluZyBoZWxwZnVsIGhlcmU/CiAgICAgLy8gSWYgaXQncyBjb3JyZWN0
IGhlcmUsIHRoZW4gaXNuJ3QgaXQgbmVlZGVkIGluIHRoZSB2YWx1ZSBhbmQgbGFiZWwgZnVuY3Rp
b25zIHRvbz8KLSAgICByZXR1cm4gZG9jdW1lbnQoKS5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVu
Y29kaW5nKHRleHQpLnN0cmlwV2hpdGVTcGFjZShpc0hUTUxTcGFjZSkuc2ltcGxpZnlXaGl0ZVNw
YWNlKGlzSFRNTFNwYWNlKTsKKyAgICByZXR1cm4gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1M
U3BhY2VzKGRvY3VtZW50KCkuZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyh0ZXh0KSku
c2ltcGxpZnlXaGl0ZVNwYWNlKGlzSFRNTFNwYWNlKTsKIH0KIAogdm9pZCBIVE1MT3B0aW9uRWxl
bWVudDo6c2V0VGV4dChjb25zdCBTdHJpbmcgJnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAt
MTk3LDcgKzE5Nyw3IEBAIFN0cmluZyBIVE1MT3B0aW9uRWxlbWVudDo6dmFsdWUoKSBjb25zdAog
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUgPSBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25p
emF0aW9uKHZhbHVlQXR0cik7CiAgICAgaWYgKCF2YWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0
dXJuIHZhbHVlOwotICAgIHJldHVybiBjb2xsZWN0T3B0aW9uSW5uZXJUZXh0KCkuc3RyaXBXaGl0
ZVNwYWNlKGlzSFRNTFNwYWNlKS5zaW1wbGlmeVdoaXRlU3BhY2UoaXNIVE1MU3BhY2UpOworICAg
IHJldHVybiBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMoY29sbGVjdE9wdGlvbklu
bmVyVGV4dCgpKS5zaW1wbGlmeVdoaXRlU3BhY2UoaXNIVE1MU3BhY2UpOwogfQogCiB2b2lkIEhU
TUxPcHRpb25FbGVtZW50OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQpAQCAtMjc0LDgg
KzI3NCw4IEBAIFN0cmluZyBIVE1MT3B0aW9uRWxlbWVudDo6bGFiZWwoKSBjb25zdAogewogICAg
IFN0cmluZyBsYWJlbCA9IGF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24obGFiZWxBdHRy
KTsKICAgICBpZiAoIWxhYmVsLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gbGFiZWwuc3RyaXBX
aGl0ZVNwYWNlKGlzSFRNTFNwYWNlKTsKLSAgICByZXR1cm4gY29sbGVjdE9wdGlvbklubmVyVGV4
dCgpLnN0cmlwV2hpdGVTcGFjZShpc0hUTUxTcGFjZSkuc2ltcGxpZnlXaGl0ZVNwYWNlKGlzSFRN
TFNwYWNlKTsKKyAgICAgICAgcmV0dXJuIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNl
cyhsYWJlbCk7CisgICAgcmV0dXJuIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhj
b2xsZWN0T3B0aW9uSW5uZXJUZXh0KCkpLnNpbXBsaWZ5V2hpdGVTcGFjZShpc0hUTUxTcGFjZSk7
CiB9CiAKIHZvaWQgSFRNTE9wdGlvbkVsZW1lbnQ6OnNldExhYmVsKGNvbnN0IFN0cmluZyYgbGFi
ZWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVT
aGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5j
cHAKaW5kZXggNDI5YmFlOTFhN2E0NGUyYjhkMTlhNTRmODc5YjY5MjU2MDBjYzM1Yy4uOTk2NzAx
ZmJjNmZiYzUwZTc5MDY4YjgyMDRmYmY5NzRiMjc1YTJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtODc3LDcgKzg3Nyw3IEBA
IHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTZWxlY3Rvcj4gYnVpbGRP
YmplY3RGb3JTZWxlY3RvckhlbHBlcihjCiAKIHN0YXRpYyBSZWY8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTZWxlY3Rvcj4+IHNlbGVjdG9y
c0Zyb21Tb3VyY2UoY29uc3QgQ1NTUnVsZVNvdXJjZURhdGEqIHNvdXJjZURhdGEsIGNvbnN0IFN0
cmluZyYgc2hlZXRUZXh0LCBjb25zdCBDU1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCwgRWxl
bWVudCogZWxlbWVudCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SlNDOjpZYXJyOjpS
ZWd1bGFyRXhwcmVzc2lvbj4gY29tbWVudCgiL1xcKlteXSo/XFwqLyIsIFRleHRDYXNlU2Vuc2l0
aXZlLCBKU0M6OllhcnI6Ok11bHRpbGluZUVuYWJsZWQpOworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uPiBjb21tZW50KCIvXFwqW15dKj9cXCov
IiwgSlNDOjpZYXJyOjpUZXh0Q2FzZVNlbnNpdGl2ZSwgSlNDOjpZYXJyOjpNdWx0aWxpbmVFbmFi
bGVkKTsKIAogICAgIGF1dG8gcmVzdWx0ID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTZWxlY3Rvcj46OmNyZWF0ZSgpOwogICAgIGNvbnN0
IENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IHNlbGVjdG9yTGlzdC5maXJzdCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggOGU3NTA2OTY3YWI5YjE0Njk4MDE5MjFjODFl
MDVlMmJjMGYyMjY1Yi4uMGE0ODdmMDYwN2YxMDI4NDM1OTQxZjA3ZTk4ZDllNmVkZmUyMzcyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC03MDksNyArNzA5LDcgQEAg
dm9pZCBGcmFtZUxvYWRlcjo6ZGlkQmVnaW5Eb2N1bWVudChib29sIGRpc3BhdGNoKQogICAgICAg
ICBpZiAoIWhlYWRlckNvbnRlbnRMYW5ndWFnZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIHNp
emVfdCBjb21tYUluZGV4ID0gaGVhZGVyQ29udGVudExhbmd1YWdlLmZpbmQoJywnKTsKICAgICAg
ICAgICAgIGhlYWRlckNvbnRlbnRMYW5ndWFnZS50cnVuY2F0ZShjb21tYUluZGV4KTsgLy8gbm90
Rm91bmQgPT0gLTEgPT0gZG9uJ3QgdHJ1bmNhdGUKLSAgICAgICAgICAgIGhlYWRlckNvbnRlbnRM
YW5ndWFnZSA9IGhlYWRlckNvbnRlbnRMYW5ndWFnZS5zdHJpcFdoaXRlU3BhY2UoaXNIVE1MU3Bh
Y2UpOworICAgICAgICAgICAgaGVhZGVyQ29udGVudExhbmd1YWdlID0gc3RyaXBMZWFkaW5nQW5k
VHJhaWxpbmdIVE1MU3BhY2VzKGhlYWRlckNvbnRlbnRMYW5ndWFnZSk7CiAgICAgICAgICAgICBp
ZiAoIWhlYWRlckNvbnRlbnRMYW5ndWFnZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgbV9m
cmFtZS5kb2N1bWVudCgpLT5zZXRDb250ZW50TGFuZ3VhZ2UoaGVhZGVyQ29udGVudExhbmd1YWdl
KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCBjM2E2YTFlMWJkYzE2Y2VkNjVk
MGI4ZDVmNjk4MzE2NzhhNzJiZjNkLi41NjVlN2QxYWE4MWUxZDk0MzQzNDBmMzNlZDZjZWYxM2Jk
MmEzNWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtMzA4LDcgKzMwOCw3IEBAIHN0YXRpYyBK
U0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIGNyZWF0ZVJlZ0V4cEZvckxhYmVscyhjb25zdCBW
ZWN0b3I8U3RyaW5nPiYKICAgICAvLyBSRVZJRVctIHZlcnNpb24gb2YgdGhpcyBjYWxsIGluIEZy
YW1lTWFjLm1tIGNhY2hlcyBiYXNlZCBvbiB0aGUgTlNBcnJheSBwdHJzIGJlaW5nCiAgICAgLy8g
dGhlIHNhbWUgYWNyb3NzIGNhbGxzLiAgV2UgY2FuJ3QgZG8gdGhhdC4KIAotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uPiB3b3JkUmVnRXhwKCJc
XHciLCBUZXh0Q2FzZVNlbnNpdGl2ZSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEpTQzo6
WWFycjo6UmVndWxhckV4cHJlc3Npb24+IHdvcmRSZWdFeHAoIlxcdyIsIEpTQzo6WWFycjo6VGV4
dENhc2VTZW5zaXRpdmUpOwogICAgIFN0cmluZ0J1aWxkZXIgcGF0dGVybjsKICAgICBwYXR0ZXJu
LmFwcGVuZCgnKCcpOwogICAgIHVuc2lnbmVkIGludCBudW1MYWJlbHMgPSBsYWJlbHMuc2l6ZSgp
OwpAQCAtMzM1LDcgKzMzNSw3IEBAIHN0YXRpYyBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9u
IGNyZWF0ZVJlZ0V4cEZvckxhYmVscyhjb25zdCBWZWN0b3I8U3RyaW5nPiYKICAgICAgICAgICAg
IHBhdHRlcm4uYXBwZW5kTGl0ZXJhbCgiXFxiIik7CiAgICAgfQogICAgIHBhdHRlcm4uYXBwZW5k
KCcpJyk7Ci0gICAgcmV0dXJuIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24ocGF0dGVybi50
b1N0cmluZygpLCBUZXh0Q2FzZUluc2Vuc2l0aXZlKTsKKyAgICByZXR1cm4gSlNDOjpZYXJyOjpS
ZWd1bGFyRXhwcmVzc2lvbihwYXR0ZXJuLnRvU3RyaW5nKCksIEpTQzo6WWFycjo6VGV4dENhc2VJ
bnNlbnNpdGl2ZSk7CiB9CiAKIFN0cmluZyBGcmFtZTo6c2VhcmNoRm9yTGFiZWxzQWJvdmVDZWxs
KGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24mIHJlZ0V4cCwgSFRNTFRhYmxlQ2Vs
bEVsZW1lbnQqIGNlbGwsIHNpemVfdCogcmVzdWx0RGlzdGFuY2VGcm9tU3RhcnRPZkNlbGwpCkBA
IC00MzksNyArNDM5LDcgQEAgc3RhdGljIFN0cmluZyBtYXRjaExhYmVsc0FnYWluc3RTdHJpbmco
Y29uc3QgVmVjdG9yPFN0cmluZz4mIGxhYmVscywgY29uc3QgU3RyaW4KICAgICBTdHJpbmcgbXV0
YWJsZVN0cmluZ1RvTWF0Y2ggPSBzdHJpbmdUb01hdGNoOwogCiAgICAgLy8gTWFrZSBudW1iZXJz
IGFuZCBfJ3MgaW4gZmllbGQgbmFtZXMgYmVoYXZlIGxpa2Ugd29yZCBib3VuZGFyaWVzLCBlLmcu
LCAiYWRkcmVzczIiCi0gICAgcmVwbGFjZShtdXRhYmxlU3RyaW5nVG9NYXRjaCwgSlNDOjpZYXJy
OjpSZWd1bGFyRXhwcmVzc2lvbigiXFxkIiwgVGV4dENhc2VTZW5zaXRpdmUpLCAiICIpOworICAg
IHJlcGxhY2UobXV0YWJsZVN0cmluZ1RvTWF0Y2gsIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Np
b24oIlxcZCIsIEpTQzo6WWFycjo6VGV4dENhc2VTZW5zaXRpdmUpLCAiICIpOwogICAgIG11dGFi
bGVTdHJpbmdUb01hdGNoLnJlcGxhY2UoJ18nLCAnICcpOwogICAgIAogICAgIEpTQzo6WWFycjo6
UmVndWxhckV4cHJlc3Npb24gcmVnRXhwID0gY3JlYXRlUmVnRXhwRm9yTGFiZWxzKGxhYmVscyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vVVJMLmNwcAppbmRleCAyODJkNjY1NWQ3ZjFjMTNkMmQ2ZTYzNGRjZGJl
YTVhOTJkZmRjYmNhLi5jOWUzYzQ4MDgxODJiMGNhOWY2NTZmZTEyZDI0N2ZlYzJmZDIwZjQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9VUkwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1VSTC5jcHAKQEAgLTQ3OSw3ICs0NzksNyBAQCB2b2lkIFVSTDo6aW5p
dChjb25zdCBVUkwmIGJhc2UsIGNvbnN0IFN0cmluZyYgcmVsYXRpdmUsIGNvbnN0IFRleHRFbmNv
ZGluZyYgZW5jbwogICAgIH0KIAogICAgIC8vIEdldCByaWQgb2YgbGVhZGluZyBhbmQgdHJhaWxp
bmcgd2hpdGVzcGFjZSBhbmQgY29udHJvbCBjaGFyYWN0ZXJzLgotICAgIFN0cmluZyByZWwgPSBy
ZWxhdGl2ZS5zdHJpcFdoaXRlU3BhY2Uoc2hvdWxkVHJpbUZyb21VUkwpOworICAgIFN0cmluZyBy
ZWwgPSByZWxhdGl2ZS5zdHJpcExlYWRpbmdBbmRUcmFpbGluZ0NoYXJhY3RlcnMoc2hvdWxkVHJp
bUZyb21VUkwpOwogCiAgICAgLy8gR2V0IHJpZCBvZiBhbnkgdGFicyBhbmQgbmV3bGluZXMuCiAg
ICAgcmVsID0gcmVsLnJlbW92ZUNoYXJhY3RlcnMoaXNUYWJOZXdsaW5lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9DRE1Qcml2YXRl
TWVkaWFTb3VyY2VBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KaW5kZXggMTNmZDRm
M2FkNmQ1ZDIzMTNlMjNlN2QwZDgzMmJjMzk5MDExOWU4OC4uMjgwZWQxMjczMDI1YzMyNmI0MWE1
N2I2Yzk2ZTVmZTQ2YjNiYWI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0NETVByaXZh
dGVNZWRpYVNvdXJjZUFWRk9iakMubW0KQEAgLTQ0LDcgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBzdGF0aWMgUmVndWxhckV4cHJlc3Npb24mIHZhbGlkS2V5U3lzdGVtUkUoKQogewot
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWd1bGFyRXhwcmVzc2lvbj4ga2V5U3lzdGVtUkUo
Il5jb21cXC5hcHBsZVxcLmZwc1xcLlsyM11fXFxkKyg/OixcXGQrKSokIiwgVGV4dENhc2VJbnNl
bnNpdGl2ZSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZ3VsYXJFeHByZXNzaW9uPiBr
ZXlTeXN0ZW1SRSgiXmNvbVxcLmFwcGxlXFwuZnBzXFwuWzIzXV9cXGQrKD86LFxcZCspKiQiLCBK
U0M6OllhcnI6OlRleHRDYXNlSW5zZW5zaXRpdmUpOwogICAgIHJldHVybiBrZXlTeXN0ZW1SRTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAKaW5k
ZXggMTcyYTczMmU3MjQzZWM5MmVhMDIxYzcwNGIwMzcwY2U3ODk5OTcxYy4uODkwMDE5NTA5NWEy
M2ZkNTEyOGM2OTlhYzY0M2FlNDZmMWNiODBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3ND
b250ZXh0M0RPcGVuR0xDb21tb24uY3BwCkBAIC0xNTI5LDcgKzE1MjksNyBAQCBTdHJpbmcgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldFVubWFuZ2xlZEluZm9Mb2coUGxhdGZvcm0zRE9iamVjdCBzaGFk
ZXJzWzJdLCBHQzNEcwogewogICAgIExPRyhXZWJHTCwgIldhczogJXMiLCBsb2cudXRmOCgpLmRh
dGEoKSk7CiAKLSAgICBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIHJlZ0V4cCgid2ViZ2xf
WzAxMjM0NTY3ODlhYmNkZWZBQkNERUZdKyIsIFRleHRDYXNlU2Vuc2l0aXZlKTsKKyAgICBKU0M6
OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIHJlZ0V4cCgid2ViZ2xfWzAxMjM0NTY3ODlhYmNkZWZB
QkNERUZdKyIsIEpTQzo6WWFycjo6VGV4dENhc2VTZW5zaXRpdmUpOwogCiAgICAgU3RyaW5nQnVp
bGRlciBwcm9jZXNzZWRMb2c7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0hUVFBQYXJzZXJzLmgKaW5kZXggNjI1MmRiMjMxYjRkNzAwMjE0M2Y5YzQ0OWE2NDdhNTRh
ZjkyZjYyOS4uMGViMmQ1YTJiYzU0MTFmNWRlYzE0NzRkOTI4NDMzY2I0MDgyN2I2NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaApAQCAtMjgsOCAr
MjgsNyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEhUVFBQYXJzZXJzX2gKLSNkZWZp
bmUgSFRUUFBhcnNlcnNfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CkBAIC0xMTksOSArMTE4LDcgQEAgaW5saW5lIGJv
b2wgaXNIVFRQU3BhY2UoVUNoYXIgY2hhcmFjdGVyKQogLy8gU3RyaXAgbGVhZGluZyBhbmQgdHJh
aWxpbmcgd2hpdGVzcGFjZSBhcyBkZWZpbmVkIGluIGh0dHBzOi8vZmV0Y2guc3BlYy53aGF0d2cu
b3JnLyNjb25jZXB0LWhlYWRlci12YWx1ZS1ub3JtYWxpemUuCiBpbmxpbmUgU3RyaW5nIHN0cmlw
TGVhZGluZ0FuZFRyYWlsaW5nSFRUUFNwYWNlcyhjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAg
ICByZXR1cm4gc3RyaW5nLnN0cmlwV2hpdGVTcGFjZShpc0hUVFBTcGFjZSk7CisgICAgcmV0dXJu
IHN0cmluZy5zdHJpcExlYWRpbmdBbmRUcmFpbGluZ0NoYXJhY3RlcnMoaXNIVFRQU3BhY2UpOwog
fQogCiB9Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJIVE1MUmVwcmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhU
TUxSZXByZXNlbnRhdGlvbi5tbQppbmRleCAxOThlZDVmMjM4NGQ3OGYzOGEwMDYwNjgwODE2ZGRl
NmZkY2RhZjZlLi5lN2QyNWVjNzk2NGUzYTE4OTk5NTk0NjNjNGI1NWQ3OTVmZjI0Mjc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5t
bQpAQCAtNjgsNyArNjgsMTAgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOworCiB1c2luZyBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9u
OwordXNpbmcgSlNDOjpZYXJyOjpUZXh0Q2FzZUluc2Vuc2l0aXZlOwordXNpbmcgSlNDOjpZYXJy
OjpUZXh0Q2FzZVNlbnNpdGl2ZTsKIAogQGludGVyZmFjZSBXZWJIVE1MUmVwcmVzZW50YXRpb25Q
cml2YXRlIDogTlNPYmplY3QgewogQHB1YmxpYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
UGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
L21hYy9TdHJpbmdVdGlsaXRpZXMubW0KaW5kZXggMWI2MDM0ZjJjYzFiMWQ4NmNjNDEzMmExOGZh
ZGY0YzdiY2Y1NzQ0Yi4uZjYxNTNlZjA2ZGU5OTc4ZGMwM2Q3NjhjYjViODM3ZTVjZjVmOGNmOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCkBA
IC02NSw3ICs2NSw3IEBAIHN0YXRpYyBTdHJpbmcgd2lsZGNhcmRSZWdleFBhdHRlcm5TdHJpbmco
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiAKIGJvb2wgc3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5n
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBTdHJpbmcmIHdpbGRjYXJkU3RyaW5nKQogewot
ICAgIHJldHVybiBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uKHdpbGRjYXJkUmVnZXhQYXR0
ZXJuU3RyaW5nKHdpbGRjYXJkU3RyaW5nKSwgVGV4dENhc2VJbnNlbnNpdGl2ZSkubWF0Y2goc3Ry
aW5nKSAhPSAtMTsKKyAgICByZXR1cm4gSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbih3aWxk
Y2FyZFJlZ2V4UGF0dGVyblN0cmluZyh3aWxkY2FyZFN0cmluZyksIEpTQzo6WWFycjo6VGV4dENh
c2VJbnNlbnNpdGl2ZSkubWF0Y2goc3RyaW5nKSAhPSAtMTsKIH0KIAogI2lmIEVOQUJMRShURUxF
UEhPTkVfTlVNQkVSX0RFVEVDVElPTikgJiYgUExBVEZPUk0oTUFDKQo=
</data>
<flag name="review"
          id="309116"
          type_id="1"
          status="+"
          setter="bfulgham"
    />
    <flag name="commit-queue"
          id="309117"
          type_id="3"
          status="-"
          setter="bfulgham"
    />
          </attachment>
      

    </bug>

</bugzilla>