<?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>62113</bug_id>
          
          <creation_ts>2011-06-05 23:31:40 -0700</creation_ts>
          <short_desc>[chromium] Delete dead clipboard code.</short_desc>
          <delta_ts>2011-06-06 14:52:57 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Cheng">dcheng</reporter>
          <assigned_to name="Daniel Cheng">dcheng</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>415712</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-06-05 23:31:40 -0700</bug_when>
    <thetext>We never ended up using these new objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415713</commentid>
    <comment_count>1</comment_count>
      <attachid>96065</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-06-05 23:36:24 -0700</bug_when>
    <thetext>Created attachment 96065
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415725</commentid>
    <comment_count>2</comment_count>
      <attachid>96065</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-06 00:32:20 -0700</bug_when>
    <thetext>Comment on attachment 96065
Patch

Attachment 96065 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/8772315</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415870</commentid>
    <comment_count>3</comment_count>
      <attachid>96065</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-06-06 09:52:27 -0700</bug_when>
    <thetext>Comment on attachment 96065
Patch

Yay for deleting code.

Looks like WebKit/chromium/src/WebDragData.cpp includes ChromiumDataObjectLegacy.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415960</commentid>
    <comment_count>4</comment_count>
      <attachid>96112</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-06-06 12:59:04 -0700</bug_when>
    <thetext>Created attachment 96112
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>416031</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-06-06 14:52:57 -0700</bug_when>
    <thetext>Committed r88192: &lt;http://trac.webkit.org/changeset/88192&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96065</attachid>
            <date>2011-06-05 23:36:24 -0700</date>
            <delta_ts>2011-06-06 12:59:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62113-20110605233623.patch</filename>
            <type>text/plain</type>
            <size>32410</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgxMjIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMzdiNzFkZjZjNDgyY2U2
OGUyMjE3ZTQ1M2ZlMWJlODY1YzZlNWM0Li44MDVlZjMyZmZkYzNmNzJkMzYwMTBkOGYwYjgxZDEz
NGE2ODdjNTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDYtMDUgIERhbmll
bCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW2Nocm9taXVtXSBEZWxldGUgZGVhZCBjbGlwYm9hcmQg
Y29kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYy
MTEzCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoaXMgY2hhbmdlIG9ubHkgZGVsZXRl
ZCB1bnVzZWQgY29kZS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bURhdGFPYmplY3RMZWdhY3kuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtRGF0YU9iamVjdExlZ2FjeS5oOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1JlYWRhYmxlRGF0YU9iamVjdC5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUmVhZGFibGVEYXRhT2JqZWN0
Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vV3JpdGFibGVEYXRhT2Jq
ZWN0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Xcml0YWJsZURh
dGFPYmplY3QuaDogUmVtb3ZlZC4KKwogMjAxMS0wNi0wNCAgRXJpYyBTZWlkZWwgIDxlcmljQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCAwNWNhMTNmNjJmMWE0NGY3ZTQ5NTAzNWY2ZWY1YTZmMjViMTU1YzY5Li5hMDZlMGQx
MTE2ZTJmNTA5NDUxOWZjNDNmNzY2ODM5MTEzZjdjYTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0z
Nzg0LDggKzM3ODQsNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNG
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRhT2JqZWN0
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRhT2JqZWN0
LmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtRGF0YU9iamVjdExl
Z2FjeS5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtRGF0YU9i
amVjdExlZ2FjeS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRD
aHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENo
cm9taXVtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9t
aXVtTGludXguY3BwJywKQEAgLTM4MzMsOCArMzgzMSw2IEBACiAgICAgICAgICAgICAncGxhdGZv
cm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9j
aHJvbWl1bS9Qb3B1cE1lbnVQcml2YXRlLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9t
aXVtL1JlYWRhYmxlRGF0YU9iamVjdC5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9t
aXVtL1JlYWRhYmxlRGF0YU9iamVjdC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1
bS9TU0xLZXlHZW5lcmF0b3JDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2No
cm9taXVtL1Njcm9sbGJhck92ZXJsYXlVdGlsaXRpZXNDaHJvbWl1bU1hYy5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJPdmVybGF5VXRpbGl0aWVzQ2hyb21pdW1N
YWMubW0nLApAQCAtMzg1OCw4ICszODU0LDYgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJv
bWl1bS9UaGVtZUNocm9taXVtTWFjLm1tJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1
bS9UcmFjZUV2ZW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1dpZGdldENo
cm9taXVtLmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vV3JpdGFibGVEYXRh
T2JqZWN0LmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vV3JpdGFibGVEYXRh
T2JqZWN0LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2NvY29hL0tleUV2ZW50Q29jb2EuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vY29jb2EvS2V5RXZlbnRDb2NvYS5tbScsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZWZsL0NsaXBib2FyZEVmbC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRhT2JqZWN0TGVnYWN5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtRGF0YU9iamVjdExlZ2Fj
eS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyZTQ3ZTJlNzBkOWU0NjFlYjU4
MjE3OTNjOThlNzE3ZTVhMWMxYTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRh
T2JqZWN0TGVnYWN5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0OSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChjKSAyMDA4LCAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqIAotICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDaHJvbWl1bURhdGFPYmplY3RMZWdhY3ku
aCIKLQotI2luY2x1ZGUgIkNsaXBib2FyZE1pbWVUeXBlcy5oIgotI2luY2x1ZGUgIlBhc3RlYm9h
cmQuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUJyaWRnZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLS8vIFBlciBSRkMgMjQ4MywgdGhlIGxpbmUgc2VwYXJhdG9yIGZvciAidGV4dC8uLi4iIE1J
TUUgdHlwZXMgaXMgQ1ItTEYuCi1zdGF0aWMgY2hhciBjb25zdCogY29uc3QgdGV4dE1JTUVUeXBl
TGluZVNlcGFyYXRvciA9ICJcclxuIjsKLQotdm9pZCBDaHJvbWl1bURhdGFPYmplY3RMZWdhY3k6
OmNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpCi17Ci0gICAgaWYgKHR5cGUgPT0gbWltZVR5
cGVUZXh0UGxhaW4pIHsKLSAgICAgICAgbV9wbGFpblRleHQgPSAiIjsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmICh0eXBlID09IG1pbWVUeXBlVVJMIHx8IHR5cGUgPT0gbWltZVR5
cGVUZXh0VVJJTGlzdCkgewotICAgICAgICBtX3VyaUxpc3QgPSAiIjsKLSAgICAgICAgbV91cmwg
PSBLVVJMKCk7Ci0gICAgICAgIG1fdXJsVGl0bGUgPSAiIjsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmICh0eXBlID09IG1pbWVUeXBlVGV4dEhUTUwpIHsKLSAgICAgICAgbV90ZXh0
SHRtbCA9ICIiOwotICAgICAgICBtX2h0bWxCYXNlVXJsID0gS1VSTCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKHR5cGUgPT0gbWltZVR5cGVEb3dubG9hZFVSTCkgewotICAg
ICAgICBtX2Rvd25sb2FkTWV0YWRhdGEgPSAiIjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0K
LQotdm9pZCBDaHJvbWl1bURhdGFPYmplY3RMZWdhY3k6OmNsZWFyQWxsKCkKLXsKLSAgICBjbGVh
ckFsbEV4Y2VwdEZpbGVzKCk7Ci0gICAgbV9maWxlbmFtZXMuY2xlYXIoKTsKLX0KLQotdm9pZCBD
aHJvbWl1bURhdGFPYmplY3RMZWdhY3k6OmNsZWFyQWxsRXhjZXB0RmlsZXMoKQotewotICAgIG1f
dXJsVGl0bGUgPSAiIjsKLSAgICBtX3VybCA9IEtVUkwoKTsKLSAgICBtX3VyaUxpc3QgPSAiIjsK
LSAgICBtX2Rvd25sb2FkTWV0YWRhdGEgPSAiIjsKLSAgICBtX2ZpbGVFeHRlbnNpb24gPSAiIjsK
LSAgICBtX3BsYWluVGV4dCA9ICIiOwotICAgIG1fdGV4dEh0bWwgPSAiIjsKLSAgICBtX2h0bWxC
YXNlVXJsID0gS1VSTCgpOwotICAgIG1fZmlsZUNvbnRlbnRGaWxlbmFtZSA9ICIiOwotICAgIGlm
IChtX2ZpbGVDb250ZW50KQotICAgICAgICBtX2ZpbGVDb250ZW50LT5jbGVhcigpOwotfQotCi1i
b29sIENocm9taXVtRGF0YU9iamVjdExlZ2FjeTo6aGFzRGF0YSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuICFtX3VybC5pc0VtcHR5KCkKLSAgICAgICAgfHwgIW1fdXJpTGlzdC5pc0VtcHR5KCkKLSAg
ICAgICAgfHwgIW1fZG93bmxvYWRNZXRhZGF0YS5pc0VtcHR5KCkKLSAgICAgICAgfHwgIW1fZmls
ZUV4dGVuc2lvbi5pc0VtcHR5KCkKLSAgICAgICAgfHwgIW1fZmlsZW5hbWVzLmlzRW1wdHkoKQot
ICAgICAgICB8fCAhbV9wbGFpblRleHQuaXNFbXB0eSgpCi0gICAgICAgIHx8ICFtX3RleHRIdG1s
LmlzRW1wdHkoKQotICAgICAgICB8fCBtX2ZpbGVDb250ZW50OwotfQotCi1IYXNoU2V0PFN0cmlu
Zz4gQ2hyb21pdW1EYXRhT2JqZWN0TGVnYWN5Ojp0eXBlcygpIGNvbnN0Ci17Ci0gICAgLy8gVGhp
cyBpcyBjdXJyZW50bHkgYnJva2VuIGZvciBwYXN0ZWJvYXJkIGV2ZW50cywgYW5kIGFsd2F5cyBo
YXMgYmVlbi4KLSAgICBIYXNoU2V0PFN0cmluZz4gcmVzdWx0czsKLQotICAgIGlmICghbV9wbGFp
blRleHQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHJlc3VsdHMuYWRkKG1pbWVUeXBlVGV4dCk7Ci0g
ICAgICAgIHJlc3VsdHMuYWRkKG1pbWVUeXBlVGV4dFBsYWluKTsKLSAgICB9Ci0KLSAgICBpZiAo
bV91cmwuaXNWYWxpZCgpKQotICAgICAgICByZXN1bHRzLmFkZChtaW1lVHlwZVVSTCk7Ci0KLSAg
ICBpZiAoIW1fdXJpTGlzdC5pc0VtcHR5KCkpCi0gICAgICAgIHJlc3VsdHMuYWRkKG1pbWVUeXBl
VGV4dFVSSUxpc3QpOwotCi0gICAgaWYgKCFtX3RleHRIdG1sLmlzRW1wdHkoKSkKLSAgICAgICAg
cmVzdWx0cy5hZGQobWltZVR5cGVUZXh0SFRNTCk7Ci0KLSAgICBpZiAoIW1fZmlsZW5hbWVzLmlz
RW1wdHkoKSkKLSAgICAgICAgcmVzdWx0cy5hZGQoIkZpbGVzIik7Ci0KLSAgICByZXR1cm4gcmVz
dWx0czsKLX0KLQotU3RyaW5nIENocm9taXVtRGF0YU9iamVjdExlZ2FjeTo6Z2V0RGF0YShjb25z
dCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpCi17Ci0gICAgaWYgKHR5cGUgPT0gbWltZVR5
cGVUZXh0UGxhaW4pIHsKLSAgICAgICAgaWYgKG1fY2xpcGJvYXJkVHlwZSA9PSBDbGlwYm9hcmQ6
OkNvcHlBbmRQYXN0ZSkgewotICAgICAgICAgICAgUGFzdGVib2FyZFByaXZhdGU6OkNsaXBib2Fy
ZEJ1ZmZlciBidWZmZXIgPQotICAgICAgICAgICAgICAgIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0
ZWJvYXJkKCktPmlzU2VsZWN0aW9uTW9kZSgpID8KLSAgICAgICAgICAgICAgICBQYXN0ZWJvYXJk
UHJpdmF0ZTo6U2VsZWN0aW9uQnVmZmVyIDoKLSAgICAgICAgICAgICAgICBQYXN0ZWJvYXJkUHJp
dmF0ZTo6U3RhbmRhcmRCdWZmZXI7Ci0gICAgICAgICAgICBTdHJpbmcgdGV4dCA9IFBsYXRmb3Jt
QnJpZGdlOjpjbGlwYm9hcmRSZWFkUGxhaW5UZXh0KGJ1ZmZlcik7Ci0gICAgICAgICAgICBzdWNj
ZXNzID0gIXRleHQuaXNFbXB0eSgpOwotICAgICAgICAgICAgcmV0dXJuIHRleHQ7Ci0gICAgICAg
IH0KLSAgICAgICAgc3VjY2VzcyA9ICFtX3BsYWluVGV4dC5pc0VtcHR5KCk7Ci0gICAgICAgIHJl
dHVybiBtX3BsYWluVGV4dDsKLSAgICB9Ci0KLSAgICBpZiAodHlwZSA9PSBtaW1lVHlwZVVSTCkg
ewotICAgICAgICBzdWNjZXNzID0gIW1fdXJsLmlzRW1wdHkoKTsKLSAgICAgICAgcmV0dXJuIG1f
dXJsLnN0cmluZygpOwotICAgIH0KLQotICAgIGlmICh0eXBlID09IG1pbWVUeXBlVGV4dFVSSUxp
c3QpIHsKLSAgICAgICAgc3VjY2VzcyA9ICFtX3VyaUxpc3QuaXNFbXB0eSgpOwotICAgICAgICBy
ZXR1cm4gbV91cmlMaXN0OwotICAgIH0KLQotICAgIGlmICh0eXBlID09IG1pbWVUeXBlVGV4dEhU
TUwpIHsKLSAgICAgICAgaWYgKG1fY2xpcGJvYXJkVHlwZSA9PSBDbGlwYm9hcmQ6OkNvcHlBbmRQ
YXN0ZSkgewotICAgICAgICAgICAgUGFzdGVib2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZlciBi
dWZmZXIgPQotICAgICAgICAgICAgICAgIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCkt
PmlzU2VsZWN0aW9uTW9kZSgpID8KLSAgICAgICAgICAgICAgICBQYXN0ZWJvYXJkUHJpdmF0ZTo6
U2VsZWN0aW9uQnVmZmVyIDoKLSAgICAgICAgICAgICAgICBQYXN0ZWJvYXJkUHJpdmF0ZTo6U3Rh
bmRhcmRCdWZmZXI7Ci0gICAgICAgICAgICBTdHJpbmcgaHRtbFRleHQ7Ci0gICAgICAgICAgICBL
VVJMIHNvdXJjZVVSTDsKLSAgICAgICAgICAgIFBsYXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRSZWFk
SFRNTChidWZmZXIsICZodG1sVGV4dCwgJnNvdXJjZVVSTCk7Ci0gICAgICAgICAgICBzdWNjZXNz
ID0gIWh0bWxUZXh0LmlzRW1wdHkoKTsKLSAgICAgICAgICAgIHJldHVybiBodG1sVGV4dDsKLSAg
ICAgICAgfQotICAgICAgICBzdWNjZXNzID0gIW1fdGV4dEh0bWwuaXNFbXB0eSgpOwotICAgICAg
ICByZXR1cm4gbV90ZXh0SHRtbDsKLSAgICB9Ci0KLSAgICBpZiAodHlwZSA9PSBtaW1lVHlwZURv
d25sb2FkVVJMKSB7Ci0gICAgICAgIHN1Y2Nlc3MgPSAhbV9kb3dubG9hZE1ldGFkYXRhLmlzRW1w
dHkoKTsKLSAgICAgICAgcmV0dXJuIG1fZG93bmxvYWRNZXRhZGF0YTsKLSAgICB9Ci0KLSAgICBz
dWNjZXNzID0gZmFsc2U7Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1ib29sIENocm9taXVt
RGF0YU9iamVjdExlZ2FjeTo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgZGF0YSkKLXsKLSAgICBpZiAodHlwZSA9PSBtaW1lVHlwZVRleHRQbGFpbikgewotICAgICAg
ICBtX3BsYWluVGV4dCA9IGRhdGE7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAg
IGlmICh0eXBlID09IG1pbWVUeXBlVVJMIHx8IHR5cGUgPT0gbWltZVR5cGVUZXh0VVJJTGlzdCkg
ewotICAgICAgICBtX3VybCA9IEtVUkwoKTsKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gdXJpTGlz
dDsKLSAgICAgICAgLy8gTGluZSBzZXBhcmF0b3IgaXMgXHJcbiBwZXIgUkZDIDI0ODMgLSBob3dl
dmVyLCBmb3IgY29tcGF0aWJpbGl0eQotICAgICAgICAvLyByZWFzb25zIHdlIGFsc28gYWxsb3cg
anVzdCBcbiBoZXJlLgotICAgICAgICBkYXRhLnNwbGl0KCdcbicsIHVyaUxpc3QpOwotICAgICAg
ICAvLyBQcm9jZXNzIHRoZSBpbnB1dCBhbmQgY29weSB0aGUgZmlyc3QgdmFsaWQgVVJMIGludG8g
dGhlIHVybCBtZW1iZXIuCi0gICAgICAgIC8vIEluIGNhc2Ugbm8gVVJMcyBjYW4gYmUgZm91bmQs
IHN1YnNlcXVlbnQgY2FsbHMgdG8gZ2V0RGF0YSgiVVJMIikKLSAgICAgICAgLy8gd2lsbCBnZXQg
YW4gZW1wdHkgc3RyaW5nLiBUaGlzIGlzIGluIGxpbmUgd2l0aCB0aGUgSFRNTDUgc3BlYyAoc2Vl
Ci0gICAgICAgIC8vICJUaGUgRHJhZ0V2ZW50IGFuZCBEYXRhVHJhbnNmZXIgaW50ZXJmYWNlcyIp
LgotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHVyaUxpc3Quc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgICAgIFN0cmluZyYgbGluZSA9IHVyaUxpc3RbaV07Ci0gICAgICAgICAgICBsaW5l
ID0gbGluZS5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICAgICAgICAgIGlmIChsaW5lLmlzRW1wdHko
KSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChsaW5lWzBdID09
ICcjJykKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIEtVUkwgdXJsID0g
S1VSTChQYXJzZWRVUkxTdHJpbmcsIGxpbmUpOwotICAgICAgICAgICAgaWYgKHVybC5pc1ZhbGlk
KCkpIHsKLSAgICAgICAgICAgICAgICBtX3VybCA9IHVybDsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBtX3VyaUxpc3QgPSBkYXRhOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBpZiAodHlwZSA9PSBtaW1lVHlwZVRl
eHRIVE1MKSB7Ci0gICAgICAgIG1fdGV4dEh0bWwgPSBkYXRhOwotICAgICAgICBtX2h0bWxCYXNl
VXJsID0gS1VSTCgpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBpZiAodHlw
ZSA9PSBtaW1lVHlwZURvd25sb2FkVVJMKSB7Ci0gICAgICAgIG1fZG93bmxvYWRNZXRhZGF0YSA9
IGRhdGE7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotQ2hyb21pdW1EYXRhT2JqZWN0TGVnYWN5OjpDaHJvbWl1bURhdGFPYmplY3RMZWdhY3ko
Q2xpcGJvYXJkOjpDbGlwYm9hcmRUeXBlIGNsaXBib2FyZFR5cGUpCi0gICAgOiBtX2NsaXBib2Fy
ZFR5cGUoY2xpcGJvYXJkVHlwZSkKLXsKLX0KLQotQ2hyb21pdW1EYXRhT2JqZWN0TGVnYWN5OjpD
aHJvbWl1bURhdGFPYmplY3RMZWdhY3koY29uc3QgQ2hyb21pdW1EYXRhT2JqZWN0TGVnYWN5JiBv
dGhlcikKLSAgICA6IFJlZkNvdW50ZWQ8Q2hyb21pdW1EYXRhT2JqZWN0TGVnYWN5PigpCi0gICAg
LCBtX2NsaXBib2FyZFR5cGUob3RoZXIubV9jbGlwYm9hcmRUeXBlKQotICAgICwgbV91cmxUaXRs
ZShvdGhlci5tX3VybFRpdGxlKQotICAgICwgbV9kb3dubG9hZE1ldGFkYXRhKG90aGVyLm1fZG93
bmxvYWRNZXRhZGF0YSkKLSAgICAsIG1fZmlsZUV4dGVuc2lvbihvdGhlci5tX2ZpbGVFeHRlbnNp
b24pCi0gICAgLCBtX2ZpbGVuYW1lcyhvdGhlci5tX2ZpbGVuYW1lcykKLSAgICAsIG1fcGxhaW5U
ZXh0KG90aGVyLm1fcGxhaW5UZXh0KQotICAgICwgbV90ZXh0SHRtbChvdGhlci5tX3RleHRIdG1s
KQotICAgICwgbV9odG1sQmFzZVVybChvdGhlci5tX2h0bWxCYXNlVXJsKQotICAgICwgbV9maWxl
Q29udGVudEZpbGVuYW1lKG90aGVyLm1fZmlsZUNvbnRlbnRGaWxlbmFtZSkKLSAgICAsIG1fdXJs
KG90aGVyLm1fdXJsKQotICAgICwgbV91cmlMaXN0KG90aGVyLm1fdXJpTGlzdCkKLXsKLSAgICBp
ZiAob3RoZXIubV9maWxlQ29udGVudC5nZXQoKSkKLSAgICAgICAgbV9maWxlQ29udGVudCA9IG90
aGVyLm1fZmlsZUNvbnRlbnQtPmNvcHkoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRh
T2JqZWN0TGVnYWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1
bURhdGFPYmplY3RMZWdhY3kuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTViZTdh
YTQyOWRlOTdhNzMyNWY4ZWZmMDhhY2Q1ZThhY2M3N2QwNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9DaHJvbWl1bURhdGFPYmplY3RMZWdhY3kuaAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDA4LCAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqIAotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpZm5kZWYgQ2hyb21pdW1EYXRhT2JqZWN0TGVnYWN5X2gKLSNkZWZpbmUg
Q2hyb21pdW1EYXRhT2JqZWN0TGVnYWN5X2gKLQotI2luY2x1ZGUgIkNsaXBib2FyZC5oIgotI2lu
Y2x1ZGUgIktVUkwuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gQSBkYXRhIG9iamVjdCBmb3Ig
aG9sZGluZyBkYXRhIHRoYXQgd291bGQgYmUgaW4gYSBjbGlwYm9hcmQgb3IgbW92ZWQKLS8vIGR1
cmluZyBhIGRyYWctbi1kcm9wIG9wZXJhdGlvbi4gIFRoaXMgaXMgdGhlIGRhdGEgdGhhdCBXZWJD
b3JlIGlzIGF3YXJlCi0vLyBvZiBhbmQgaXMgbm90IHNwZWNpZmljIHRvIGEgcGxhdGZvcm0uCi1j
bGFzcyBDaHJvbWl1bURhdGFPYmplY3RMZWdhY3kgOiBwdWJsaWMgUmVmQ291bnRlZDxDaHJvbWl1
bURhdGFPYmplY3RMZWdhY3k+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDaHJv
bWl1bURhdGFPYmplY3RMZWdhY3k+IGNyZWF0ZShDbGlwYm9hcmQ6OkNsaXBib2FyZFR5cGUgY2xp
cGJvYXJkVHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2hyb21pdW1E
YXRhT2JqZWN0TGVnYWN5KGNsaXBib2FyZFR5cGUpKTsKLSAgICB9Ci0KLSAgICBQYXNzUmVmUHRy
PENocm9taXVtRGF0YU9iamVjdExlZ2FjeT4gY29weSgpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IENocm9taXVtRGF0YU9iamVjdExlZ2FjeSgqdGhpcykpOwotICAg
IH0KLQotICAgIHZvaWQgY2xlYXJEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSk7Ci0gICAgdm9pZCBj
bGVhckFsbCgpOwotICAgIHZvaWQgY2xlYXJBbGxFeGNlcHRGaWxlcygpOwotCi0gICAgYm9vbCBo
YXNEYXRhKCkgY29uc3Q7Ci0KLSAgICBIYXNoU2V0PFN0cmluZz4gdHlwZXMoKSBjb25zdDsKLSAg
ICBTdHJpbmcgZ2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpOwotICAg
IGJvb2wgc2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk7Ci0K
LSAgICAvLyBTcGVjaWFsIGhhbmRsZXJzIGZvciBVUkwvSFRNTCBtZXRhZGF0YS4KLSAgICBTdHJp
bmcgdXJsVGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3VybFRpdGxlOyB9Ci0gICAgdm9pZCBzZXRV
cmxUaXRsZShjb25zdCBTdHJpbmcmIHVybFRpdGxlKSB7IG1fdXJsVGl0bGUgPSB1cmxUaXRsZTsg
fQotICAgIEtVUkwgaHRtbEJhc2VVcmwoKSBjb25zdCB7IHJldHVybiBtX2h0bWxCYXNlVXJsOyB9
Ci0gICAgdm9pZCBzZXRIdG1sQmFzZVVybChjb25zdCBLVVJMJiB1cmwpIHsgbV9odG1sQmFzZVVy
bCA9IHVybDsgfQotCi0gICAgLy8gVXNlZCB0byBoYW5kbGUgZmlsZXMgYmVpbmcgZHJhZ2dlZCBp
bi4KLSAgICBib29sIGNvbnRhaW5zRmlsZW5hbWVzKCkgY29uc3QgeyByZXR1cm4gIW1fZmlsZW5h
bWVzLmlzRW1wdHkoKTsgfQotICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVuYW1lcygpIGNvbnN0IHsg
cmV0dXJuIG1fZmlsZW5hbWVzOyB9Ci0gICAgdm9pZCBzZXRGaWxlbmFtZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGZpbGVuYW1lcykgeyBtX2ZpbGVuYW1lcyA9IGZpbGVuYW1lczsgfQotCi0gICAg
Ly8gVXNlZCB0byBoYW5kbGUgZmlsZXMgKGltYWdlcykgYmVpbmcgZHJhZ2dlZCBvdXQuCi0gICAg
U3RyaW5nIGZpbGVFeHRlbnNpb24oKSBjb25zdCB7IHJldHVybiBtX2ZpbGVFeHRlbnNpb247IH0K
LSAgICB2b2lkIHNldEZpbGVFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKSB7
IG1fZmlsZUV4dGVuc2lvbiA9IGZpbGVFeHRlbnNpb247IH0KLSAgICBTdHJpbmcgZmlsZUNvbnRl
bnRGaWxlbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZUNvbnRlbnRGaWxlbmFtZTsgfQotICAg
IHZvaWQgc2V0RmlsZUNvbnRlbnRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVDb250ZW50Rmls
ZW5hbWUpIHsgbV9maWxlQ29udGVudEZpbGVuYW1lID0gZmlsZUNvbnRlbnRGaWxlbmFtZTsgfQot
ICAgIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaWxlQ29udGVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fZmlsZUNvbnRlbnQ7IH0KLSAgICB2b2lkIHNldEZpbGVDb250ZW50KFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiBmaWxlQ29udGVudCkgeyBtX2ZpbGVDb250ZW50ID0gZmlsZUNvbnRlbnQ7IH0K
LQotcHJpdmF0ZToKLSAgICBDaHJvbWl1bURhdGFPYmplY3RMZWdhY3koQ2xpcGJvYXJkOjpDbGlw
Ym9hcmRUeXBlKTsKLSAgICBDaHJvbWl1bURhdGFPYmplY3RMZWdhY3koY29uc3QgQ2hyb21pdW1E
YXRhT2JqZWN0TGVnYWN5Jik7Ci0KLSAgICBDbGlwYm9hcmQ6OkNsaXBib2FyZFR5cGUgbV9jbGlw
Ym9hcmRUeXBlOwotCi0gICAgU3RyaW5nIG1fdXJsVGl0bGU7Ci0KLSAgICBTdHJpbmcgbV9kb3du
bG9hZE1ldGFkYXRhOwotCi0gICAgU3RyaW5nIG1fZmlsZUV4dGVuc2lvbjsKLSAgICBWZWN0b3I8
U3RyaW5nPiBtX2ZpbGVuYW1lczsKLQotICAgIFN0cmluZyBtX3BsYWluVGV4dDsKLQotICAgIFN0
cmluZyBtX3RleHRIdG1sOwotICAgIEtVUkwgbV9odG1sQmFzZVVybDsKLQotICAgIFN0cmluZyBt
X2ZpbGVDb250ZW50RmlsZW5hbWU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9maWxlQ29u
dGVudDsKLQotICAgIC8vIFRoZXNlIHR3byBhcmUgbGlua2VkLiBTZXR0aW5nIG1fdXJsIHdpbGwg
c2V0IG1fdXJpTGlzdCB0byB0aGUgc2FtZQotICAgIC8vIHN0cmluZyB2YWx1ZTsgc2V0dGluZyBt
X3VyaUxpc3Qgd2lsbCBjYXVzZSBpdHMgY29udGVudHMgdG8gYmUgcGFyc2VkCi0gICAgLy8gYWNj
b3JkaW5nIHRvIFJGQyAyNDgzIGFuZCB0aGUgZmlyc3QgVVJMIGZvdW5kIHdpbGwgYmUgc2V0IGlu
IG1fdXJsLgotICAgIEtVUkwgbV91cmw7Ci0gICAgU3RyaW5nIG1fdXJpTGlzdDsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9SZWFkYWJsZURhdGFPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vUmVhZGFibGVEYXRhT2JqZWN0LmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZGJmNDczOTBkNjlmOWJjNzVmNzYxMDZiYjJhZjA1NTNjNDI3Njhj
Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9SZWFkYWJsZURhdGFPYmplY3QuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMTM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVh
ZGFibGVEYXRhT2JqZWN0LmgiCi0KLSNpbmNsdWRlICJDbGlwYm9hcmRNaW1lVHlwZXMuaCIKLSNp
bmNsdWRlICJQYXN0ZWJvYXJkLmgiCi0jaW5jbHVkZSAiUGFzdGVib2FyZFByaXZhdGUuaCIKLSNp
bmNsdWRlICJQbGF0Zm9ybUJyaWRnZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRp
YyBQYXN0ZWJvYXJkUHJpdmF0ZTo6Q2xpcGJvYXJkQnVmZmVyIGNsaXBib2FyZEJ1ZmZlcihDbGlw
Ym9hcmQ6OkNsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlwZSkKLXsKLSAgICByZXR1cm4gY2xpcGJv
YXJkVHlwZSA9PSBDbGlwYm9hcmQ6OkRyYWdBbmREcm9wID8gUGFzdGVib2FyZFByaXZhdGU6OkRy
YWdCdWZmZXIgOiBQYXN0ZWJvYXJkUHJpdmF0ZTo6U3RhbmRhcmRCdWZmZXI7Ci19Ci0KLVBhc3NS
ZWZQdHI8UmVhZGFibGVEYXRhT2JqZWN0PiBSZWFkYWJsZURhdGFPYmplY3Q6OmNyZWF0ZShDbGlw
Ym9hcmQ6OkNsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlwZSkKLXsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFJlYWRhYmxlRGF0YU9iamVjdChjbGlwYm9hcmRUeXBlKSk7Ci19Ci0KLVJlYWRhYmxl
RGF0YU9iamVjdDo6UmVhZGFibGVEYXRhT2JqZWN0KENsaXBib2FyZDo6Q2xpcGJvYXJkVHlwZSBj
bGlwYm9hcmRUeXBlKQotICAgIDogbV9jbGlwYm9hcmRUeXBlKGNsaXBib2FyZFR5cGUpCi0gICAg
LCBtX2NvbnRhaW5zRmlsZW5hbWVzKGZhbHNlKQotICAgICwgbV9pc1R5cGVDYWNoZUluaXRpYWxp
emVkKGZhbHNlKQotewotfQotCi1ib29sIFJlYWRhYmxlRGF0YU9iamVjdDo6aGFzRGF0YSgpIGNv
bnN0Ci17Ci0gICAgZW5zdXJlVHlwZUNhY2hlSW5pdGlhbGl6ZWQoKTsKLSAgICByZXR1cm4gIW1f
dHlwZXMuaXNFbXB0eSgpIHx8IG1fY29udGFpbnNGaWxlbmFtZXM7Ci19Ci0KLUhhc2hTZXQ8U3Ry
aW5nPiBSZWFkYWJsZURhdGFPYmplY3Q6OnR5cGVzKCkgY29uc3QKLXsKLSAgICBlbnN1cmVUeXBl
Q2FjaGVJbml0aWFsaXplZCgpOwotICAgIHJldHVybiBtX3R5cGVzOwotfQotCi1TdHJpbmcgUmVh
ZGFibGVEYXRhT2JqZWN0OjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2Vl
ZGVkKSBjb25zdAotewotICAgIFN0cmluZyBkYXRhOwotICAgIFN0cmluZyBpZ25vcmVkTWV0YWRh
dGE7Ci0gICAgLy8gU2luY2UgdGhlIENocm9taXVtLXNpZGUgYnJpZGdlIGlzbid0IGNvbXBsZXRl
IHlldCwgd2Ugc3BlY2lhbCBjYXNlIHRoaXMKLSAgICAvLyBmb3IgY29weS1hbmQtcGFzdGUsIHNp
bmNlIHRoYXQgY29kZSBwYXRoIG5vIGxvbmdlciB1c2VzCi0gICAgLy8gQ2hyb21pdW1EYXRhT2Jq
ZWN0TGVnYWN5LgotICAgIGlmIChtX2NsaXBib2FyZFR5cGUgPT0gQ2xpcGJvYXJkOjpDb3B5QW5k
UGFzdGUpIHsKLSAgICAgICAgaWYgKHR5cGUgPT0gbWltZVR5cGVUZXh0UGxhaW4pIHsKLSAgICAg
ICAgICAgIFBhc3RlYm9hcmRQcml2YXRlOjpDbGlwYm9hcmRCdWZmZXIgYnVmZmVyID0KLSAgICAg
ICAgICAgICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5pc1NlbGVjdGlvbk1v
ZGUoKSA/Ci0gICAgICAgICAgICAgICAgUGFzdGVib2FyZFByaXZhdGU6OlNlbGVjdGlvbkJ1ZmZl
ciA6Ci0gICAgICAgICAgICAgICAgUGFzdGVib2FyZFByaXZhdGU6OlN0YW5kYXJkQnVmZmVyOwot
ICAgICAgICAgICAgZGF0YSA9IFBsYXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRSZWFkUGxhaW5UZXh0
KGJ1ZmZlcik7Ci0gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBtaW1lVHlwZVRleHRIVE1MKSB7
Ci0gICAgICAgICAgICBQYXN0ZWJvYXJkUHJpdmF0ZTo6Q2xpcGJvYXJkQnVmZmVyIGJ1ZmZlciA9
Ci0gICAgICAgICAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+aXNTZWxl
Y3Rpb25Nb2RlKCkgPwotICAgICAgICAgICAgICAgIFBhc3RlYm9hcmRQcml2YXRlOjpTZWxlY3Rp
b25CdWZmZXIgOgotICAgICAgICAgICAgICAgIFBhc3RlYm9hcmRQcml2YXRlOjpTdGFuZGFyZEJ1
ZmZlcjsKLSAgICAgICAgICAgIEtVUkwgaWdub3JlZFNvdXJjZVVSTDsKLSAgICAgICAgICAgIFBs
YXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRSZWFkSFRNTChidWZmZXIsICZkYXRhLCAmaWdub3JlZFNv
dXJjZVVSTCk7Ci0gICAgICAgIH0KLSAgICAgICAgc3VjY2VlZGVkID0gIWRhdGEuaXNFbXB0eSgp
OwotICAgICAgICByZXR1cm4gZGF0YTsKLSAgICB9Ci0gICAgc3VjY2VlZGVkID0gUGxhdGZvcm1C
cmlkZ2U6OmNsaXBib2FyZFJlYWREYXRhKAotICAgICAgICBjbGlwYm9hcmRCdWZmZXIobV9jbGlw
Ym9hcmRUeXBlKSwgdHlwZSwgZGF0YSwgaWdub3JlZE1ldGFkYXRhKTsKLSAgICByZXR1cm4gZGF0
YTsKLX0KLQotU3RyaW5nIFJlYWRhYmxlRGF0YU9iamVjdDo6dXJsVGl0bGUoKSBjb25zdAotewot
ICAgIFN0cmluZyBpZ25vcmVkRGF0YTsKLSAgICBTdHJpbmcgdXJsVGl0bGU7Ci0gICAgUGxhdGZv
cm1CcmlkZ2U6OmNsaXBib2FyZFJlYWREYXRhKAotICAgICAgICBjbGlwYm9hcmRCdWZmZXIobV9j
bGlwYm9hcmRUeXBlKSwgbWltZVR5cGVUZXh0VVJJTGlzdCwgaWdub3JlZERhdGEsIHVybFRpdGxl
KTsKLSAgICByZXR1cm4gdXJsVGl0bGU7Ci19Ci0KLUtVUkwgUmVhZGFibGVEYXRhT2JqZWN0Ojpo
dG1sQmFzZVVybCgpIGNvbnN0Ci17Ci0gICAgU3RyaW5nIGlnbm9yZWREYXRhOwotICAgIFN0cmlu
ZyBodG1sQmFzZVVybDsKLSAgICBQbGF0Zm9ybUJyaWRnZTo6Y2xpcGJvYXJkUmVhZERhdGEoCi0g
ICAgICAgIGNsaXBib2FyZEJ1ZmZlcihtX2NsaXBib2FyZFR5cGUpLCBtaW1lVHlwZVRleHRIVE1M
LCBpZ25vcmVkRGF0YSwgaHRtbEJhc2VVcmwpOwotICAgIHJldHVybiBLVVJMKFBhcnNlZFVSTFN0
cmluZywgaHRtbEJhc2VVcmwpOwotfQotCi1ib29sIFJlYWRhYmxlRGF0YU9iamVjdDo6Y29udGFp
bnNGaWxlbmFtZXMoKSBjb25zdAotewotICAgIGVuc3VyZVR5cGVDYWNoZUluaXRpYWxpemVkKCk7
Ci0gICAgcmV0dXJuIG1fY29udGFpbnNGaWxlbmFtZXM7Ci19Ci0KLVZlY3RvcjxTdHJpbmc+IFJl
YWRhYmxlRGF0YU9iamVjdDo6ZmlsZW5hbWVzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gUGxhdGZv
cm1CcmlkZ2U6OmNsaXBib2FyZFJlYWRGaWxlbmFtZXMoY2xpcGJvYXJkQnVmZmVyKG1fY2xpcGJv
YXJkVHlwZSkpOwotfQotCi12b2lkIFJlYWRhYmxlRGF0YU9iamVjdDo6ZW5zdXJlVHlwZUNhY2hl
SW5pdGlhbGl6ZWQoKSBjb25zdAotewotICAgIGlmIChtX2lzVHlwZUNhY2hlSW5pdGlhbGl6ZWQp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIG1fdHlwZXMgPSBQbGF0Zm9ybUJyaWRnZTo6Y2xpcGJv
YXJkUmVhZEF2YWlsYWJsZVR5cGVzKAotICAgICAgICBjbGlwYm9hcmRCdWZmZXIobV9jbGlwYm9h
cmRUeXBlKSwgJm1fY29udGFpbnNGaWxlbmFtZXMpOwotICAgIG1faXNUeXBlQ2FjaGVJbml0aWFs
aXplZCA9IHRydWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1JlYWRhYmxlRGF0YU9iamVjdC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUmVhZGFibGVEYXRhT2JqZWN0LmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyN2UwZWQzNDFjOGM1ZGVjMjg3MjQwNTZmMTAwMDZj
ZDZjMWJkOTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUmVhZGFibGVEYXRhT2JqZWN0LmgKKysr
IC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBSZWFkYWJsZURhdGFPYmplY3RfaAot
I2RlZmluZSBSZWFkYWJsZURhdGFPYmplY3RfaAotCi0jaW5jbHVkZSAiQ2xpcGJvYXJkLmgiCi0j
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBV
c2VkIGZvciBvbmUgd2F5IGNvbW11bmljYXRpb24gb2YgZHJhZy9kcm9wIGFuZCBjb3B5L3Bhc3Rl
IGRhdGEgZnJvbSB0aGUKLS8vIGJyb3dzZXIgdG8gdGhlIHJlbmRlcmVyLgotY2xhc3MgUmVhZGFi
bGVEYXRhT2JqZWN0IDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZGFibGVEYXRhT2JqZWN0PiB7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UmVhZGFibGVEYXRhT2JqZWN0PiBjcmVhdGUo
Q2xpcGJvYXJkOjpDbGlwYm9hcmRUeXBlKTsKLQotICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0Owot
ICAgIEhhc2hTZXQ8U3RyaW5nPiB0eXBlcygpIGNvbnN0OwotICAgIFN0cmluZyBnZXREYXRhKGNv
bnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2VlZGVkKSBjb25zdDsKLQotICAgIFN0cmluZyB1
cmxUaXRsZSgpIGNvbnN0OwotICAgIEtVUkwgaHRtbEJhc2VVcmwoKSBjb25zdDsKLQotICAgIGJv
b2wgY29udGFpbnNGaWxlbmFtZXMoKSBjb25zdDsKLSAgICBWZWN0b3I8U3RyaW5nPiBmaWxlbmFt
ZXMoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBSZWFkYWJsZURhdGFPYmplY3Qo
Q2xpcGJvYXJkOjpDbGlwYm9hcmRUeXBlKTsKLQotICAgIC8vIFRoaXMgaXNuJ3QgYWx3YXlzIGNv
bnN0Li4uIGJ1dCBtb3N0IG9mIHRoZSB0aW1lIGl0IGlzLgotICAgIHZvaWQgZW5zdXJlVHlwZUNh
Y2hlSW5pdGlhbGl6ZWQoKSBjb25zdDsKLQotICAgIENsaXBib2FyZDo6Q2xpcGJvYXJkVHlwZSBt
X2NsaXBib2FyZFR5cGU7Ci0KLSAgICAvLyBUbyBhdm9pZCBtYWtpbmcgYSBsb3Qgb2YgSVBDIGNh
bGxzIGZvciBlYWNoIGRyYWcgZXZlbnQsIHdlIGNhY2hlIHNvbWUKLSAgICAvLyB2YWx1ZXMgaW4g
dGhlIHJlbmRlcmVyLgotICAgIG11dGFibGUgSGFzaFNldDxTdHJpbmc+IG1fdHlwZXM7Ci0gICAg
bXV0YWJsZSBib29sIG1fY29udGFpbnNGaWxlbmFtZXM7Ci0gICAgbXV0YWJsZSBib29sIG1faXNU
eXBlQ2FjaGVJbml0aWFsaXplZDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Xcml0YWJs
ZURhdGFPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vV3JpdGFi
bGVEYXRhT2JqZWN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFhYzdkOTFl
ZjZiZTEzYjQ3YTAwYjA1MzkzYjQ4ODMyNGNmMTBiMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9X
cml0YWJsZURhdGFPYmplY3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBk
aXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXcml0YWJsZURhdGFPYmplY3QuaCIKLQotI2luY2x1
ZGUgIkNsaXBib2FyZE1pbWVUeXBlcy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtQnJpZGdlLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUGFzc1JlZlB0cjxXcml0YWJsZURhdGFPYmplY3Q+IFdy
aXRhYmxlRGF0YU9iamVjdDo6Y3JlYXRlKENsaXBib2FyZDo6Q2xpcGJvYXJkVHlwZSBjbGlwYm9h
cmRUeXBlKQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV3JpdGFibGVEYXRhT2JqZWN0KGNs
aXBib2FyZFR5cGUpKTsKLX0KLQotV3JpdGFibGVEYXRhT2JqZWN0OjpXcml0YWJsZURhdGFPYmpl
Y3QoQ2xpcGJvYXJkOjpDbGlwYm9hcmRUeXBlIGNsaXBib2FyZFR5cGUpCi0gICAgOiBtX2NsaXBi
b2FyZFR5cGUoY2xpcGJvYXJkVHlwZSkKLXsKLX0KLQotdm9pZCBXcml0YWJsZURhdGFPYmplY3Q6
OmNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpCi17Ci0gICAgbV9kYXRhTWFwLnJlbW92ZSh0
eXBlKTsKLSAgICBpZiAodHlwZSA9PSBtaW1lVHlwZVRleHRVUklMaXN0KQotICAgICAgICBtX3Vy
bFRpdGxlID0gIiI7Ci0gICAgZWxzZSBpZiAodHlwZSA9PSBtaW1lVHlwZVRleHRIVE1MKQotICAg
ICAgICBtX2h0bWxCYXNlVVJMID0gS1VSTCgpOwotfQotCi12b2lkIFdyaXRhYmxlRGF0YU9iamVj
dDo6Y2xlYXJBbGxFeGNlcHRGaWxlcygpCi17Ci0gICAgLy8gRklYTUU6IFRoZSBzcGVjIGRvZXMg
bm90IHByb3ZpZGUgYSB3YXkgdG8gcG9wdWxhdGUgRmlsZUxpc3QgY3VycmVudGx5LiBJbgotICAg
IC8vIGZhY3QsIHRoZSBzcGVjIGV4cGxpY2l0bHkgc3RhdGVzIHRoYXQgZHJhZ2dpbmcgZmlsZXMg
Y2FuIG9ubHkgaGFwcGVuIGZyb20KLSAgICAvLyBvdXRzaWRlIGEgYnJvd3NpbmcgY29udGV4dC4K
LSAgICBjbGVhckFsbCgpOwotfQotCi12b2lkIFdyaXRhYmxlRGF0YU9iamVjdDo6Y2xlYXJBbGwo
KQotewotICAgIG1fZGF0YU1hcC5jbGVhcigpOwotICAgIG1fdXJsVGl0bGUgPSAiIjsKLSAgICBt
X2h0bWxCYXNlVVJMID0gS1VSTCgpOwotICAgIG1fZmlsZUNvbnRlbnRGaWxlbmFtZSA9ICIiOwot
ICAgIGlmIChtX2ZpbGVDb250ZW50KQotICAgICAgICBtX2ZpbGVDb250ZW50LT5jbGVhcigpOwot
ICAgIG1fZmlsZUV4dGVuc2lvbiA9ICIiOwotfQotCi1ib29sIFdyaXRhYmxlRGF0YU9iamVjdDo6
c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKLXsKLSAgICBp
ZiAobV9jbGlwYm9hcmRUeXBlID09IENsaXBib2FyZDo6Q29weUFuZFBhc3RlKSB7Ci0gICAgICAg
IC8vIEZJWE1FOiBUaGlzIGlzIGN1cnJlbnRseSB1bmltcGxlbWVudGVkIG9uIHRoZSBDaHJvbWl1
bS1zaWRlLiBUaGlzIGlzCi0gICAgICAgIC8vICJva2F5IiBmb3Igbm93IHNpbmNlIHRoZSBvcmln
aW5hbCBpbXBsZW1lbnRhdGlvbiBkaWRuJ3Qgc3VwcG9ydCBpdAotICAgICAgICAvLyBhbnl3YXku
IEdvaW5nIGZvcndhcmQsIHRoaXMgaXMgc29tZXRoaW5nIHdlJ2xsIG5lZWQgdG8gZml4IHRob3Vn
aC4KLSAgICAgICAgUGxhdGZvcm1CcmlkZ2U6OmNsaXBib2FyZFdyaXRlRGF0YSh0eXBlLCBkYXRh
LCAiIik7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBtX2RhdGFNYXAuc2V0KHR5
cGUsIGRhdGEpOwotICAgIGlmICh0eXBlID09IG1pbWVUeXBlVGV4dFVSSUxpc3QpCi0gICAgICAg
IG1fdXJsVGl0bGUgPSAiIjsKLSAgICBlbHNlIGlmICh0eXBlID09IG1pbWVUeXBlVGV4dEhUTUwp
Ci0gICAgICAgIG1faHRtbEJhc2VVUkwgPSBLVVJMKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1dyaXRhYmxlRGF0YU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vV3JpdGFibGVEYXRhT2JqZWN0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGM0NzVkMTU2YjU1MWI5YjUzNzUwZWE1NTFjMjhmNGFiNmJkMGIyNWMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vV3JpdGFibGVEYXRhT2JqZWN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw4
OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6
Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBXcml0YWJsZURhdGFPYmplY3RfaAotI2RlZmluZSBXcml0YWJsZURh
dGFPYmplY3RfaAotCi0jaW5jbHVkZSAiQ2xpcGJvYXJkLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgot
I2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0j
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gVXNlZCBmb3Igb25lIHdheSBjb21tdW5pY2F0aW9u
IG9mIGRyYWcvZHJvcCBhbmQgY29weS9wYXN0ZSBkYXRhIGZyb20gdGhlCi0vLyByZW5kZXJlciB0
byB0aGUgYnJvd3Nlci4gVGhpcyBpcyBpbnRlbnRlZGVkIHRvIGJlIHVzZWQgaW4gZHJhZ3N0YXJ0
L2NvcHkvY3V0Ci0vLyBldmVudHMuIER1ZSB0byBzaG9ydGNvbWluZ3MsIHdyaXRlcyB0byB0aGUg
cGFzdGVib2FyZCBjYW5ub3QgYmUgcGVyZm9ybWVkCi0vLyBhdG9taWNhbGx5LgotY2xhc3MgV3Jp
dGFibGVEYXRhT2JqZWN0IDogcHVibGljIFJlZkNvdW50ZWQ8V3JpdGFibGVEYXRhT2JqZWN0PiB7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V3JpdGFibGVEYXRhT2JqZWN0PiBjcmVh
dGUoQ2xpcGJvYXJkOjpDbGlwYm9hcmRUeXBlKTsKLQotICAgIHZvaWQgY2xlYXJEYXRhKGNvbnN0
IFN0cmluZyYgdHlwZSk7Ci0gICAgdm9pZCBjbGVhckFsbEV4Y2VwdEZpbGVzKCk7Ci0gICAgdm9p
ZCBjbGVhckFsbCgpOwotICAgIGJvb2wgc2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0
IFN0cmluZyYgZGF0YSk7Ci0KLSAgICB2b2lkIHNldFVybFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0
bGUpIHsgbV91cmxUaXRsZSA9IHRpdGxlOyB9Ci0gICAgdm9pZCBzZXRIdG1sQmFzZVVybChjb25z
dCBLVVJMJiBiYXNlVVJMKSB7IG1faHRtbEJhc2VVUkwgPSBiYXNlVVJMOyB9Ci0KLSAgICAvLyBV
c2VkIGZvciB0cmFuc2ZlcnJpbmcgZHJhZyBkYXRhIGZyb20gdGhlIHJlbmRlcmVyIHRvIHRoZSBi
cm93c2VyLgotICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGRhdGFNYXAoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGFNYXA7IH0KLSAgICBTdHJpbmcgdXJsVGl0bGUoKSBjb25zdCB7IHJldHVybiBt
X3VybFRpdGxlOyB9Ci0gICAgS1VSTCBodG1sQmFzZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1faHRt
bEJhc2VVUkw7IH0KLQotICAgIFN0cmluZyBmaWxlRXh0ZW5zaW9uKCkgY29uc3QgeyByZXR1cm4g
bV9maWxlRXh0ZW5zaW9uOyB9Ci0gICAgU3RyaW5nIGZpbGVDb250ZW50RmlsZW5hbWUoKSBjb25z
dCB7IHJldHVybiBtX2ZpbGVDb250ZW50RmlsZW5hbWU7IH0KLSAgICBQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZmlsZUNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVDb250ZW50OyB9Ci0g
ICAgdm9pZCBzZXRGaWxlRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZmlsZUV4dGVuc2lvbikgeyBt
X2ZpbGVFeHRlbnNpb24gPSBmaWxlRXh0ZW5zaW9uOyB9Ci0gICAgdm9pZCBzZXRGaWxlQ29udGVu
dEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZUNvbnRlbnRGaWxlbmFtZSkgeyBtX2ZpbGVDb250
ZW50RmlsZW5hbWUgPSBmaWxlQ29udGVudEZpbGVuYW1lOyB9Ci0gICAgdm9pZCBzZXRGaWxlQ29u
dGVudChQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmlsZUNvbnRlbnQpIHsgbV9maWxlQ29udGVu
dCA9IGZpbGVDb250ZW50OyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgV3JpdGFibGVEYXRh
T2JqZWN0KENsaXBib2FyZDo6Q2xpcGJvYXJkVHlwZSk7Ci0KLSAgICBDbGlwYm9hcmQ6OkNsaXBi
b2FyZFR5cGUgbV9jbGlwYm9hcmRUeXBlOwotCi0gICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4g
bV9kYXRhTWFwOwotICAgIFN0cmluZyBtX3VybFRpdGxlOwotICAgIEtVUkwgbV9odG1sQmFzZVVS
TDsKLSAgICBTdHJpbmcgbV9maWxlRXh0ZW5zaW9uOwotICAgIFN0cmluZyBtX2ZpbGVDb250ZW50
RmlsZW5hbWU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9maWxlQ29udGVudDsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96112</attachid>
            <date>2011-06-06 12:59:04 -0700</date>
            <delta_ts>2011-06-06 14:04:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62113-20110606125903.patch</filename>
            <type>text/plain</type>
            <size>33489</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODgxMjIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMzdiNzFkZjZjNDgyY2U2
OGUyMjE3ZTQ1M2ZlMWJlODY1YzZlNWM0Li5lNWNhMTZhZWM0YzY1ZTExMmE3YTBjYTZjZjEwZjZi
Y2JkYzM3YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDYtMDYgIERhbmll
bCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW2Nocm9taXVtXSBEZWxldGUgZGVhZCBjbGlwYm9hcmQg
Y29kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYy
MTEzCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoaXMgY2hhbmdlIG9ubHkgZGVsZXRl
ZCB1bnVzZWQgY29kZS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bURhdGFPYmplY3RMZWdhY3kuY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtRGF0YU9iamVjdExlZ2FjeS5oOiBSZW1v
dmVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1JlYWRhYmxlRGF0YU9iamVjdC5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUmVhZGFibGVEYXRhT2JqZWN0
Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vV3JpdGFibGVEYXRhT2Jq
ZWN0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9Xcml0YWJsZURh
dGFPYmplY3QuaDogUmVtb3ZlZC4KKwogMjAxMS0wNi0wNCAgRXJpYyBTZWlkZWwgIDxlcmljQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQppbmRleCAwNWNhMTNmNjJmMWE0NGY3ZTQ5NTAzNWY2ZWY1YTZmMjViMTU1YzY5Li5hMDZlMGQx
MTE2ZTJmNTA5NDUxOWZjNDNmNzY2ODM5MTEzZjdjYTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0z
Nzg0LDggKzM3ODQsNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2NmL1NoYXJlZEJ1ZmZlckNG
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRhT2JqZWN0
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRhT2JqZWN0
LmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtRGF0YU9iamVjdExl
Z2FjeS5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtRGF0YU9i
amVjdExlZ2FjeS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRD
aHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENo
cm9taXVtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9t
aXVtTGludXguY3BwJywKQEAgLTM4MzMsOCArMzgzMSw2IEBACiAgICAgICAgICAgICAncGxhdGZv
cm0vY2hyb21pdW0vUG9wdXBNZW51Q2hyb21pdW0uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9jaHJvbWl1bS9Qb3B1cE1lbnVDaHJvbWl1bS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9j
aHJvbWl1bS9Qb3B1cE1lbnVQcml2YXRlLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9t
aXVtL1JlYWRhYmxlRGF0YU9iamVjdC5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9t
aXVtL1JlYWRhYmxlRGF0YU9iamVjdC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1
bS9TU0xLZXlHZW5lcmF0b3JDaHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2No
cm9taXVtL1Njcm9sbGJhck92ZXJsYXlVdGlsaXRpZXNDaHJvbWl1bU1hYy5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJPdmVybGF5VXRpbGl0aWVzQ2hyb21pdW1N
YWMubW0nLApAQCAtMzg1OCw4ICszODU0LDYgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJv
bWl1bS9UaGVtZUNocm9taXVtTWFjLm1tJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1
bS9UcmFjZUV2ZW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1dpZGdldENo
cm9taXVtLmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vV3JpdGFibGVEYXRh
T2JqZWN0LmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vV3JpdGFibGVEYXRh
T2JqZWN0LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2NvY29hL0tleUV2ZW50Q29jb2EuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vY29jb2EvS2V5RXZlbnRDb2NvYS5tbScsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZWZsL0NsaXBib2FyZEVmbC5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRhT2JqZWN0TGVnYWN5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtRGF0YU9iamVjdExlZ2Fj
eS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyZTQ3ZTJlNzBkOWU0NjFlYjU4
MjE3OTNjOThlNzE3ZTVhMWMxYTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRh
T2JqZWN0TGVnYWN5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI0OSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChjKSAyMDA4LCAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqIAotICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICogCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJDaHJvbWl1bURhdGFPYmplY3RMZWdhY3ku
aCIKLQotI2luY2x1ZGUgIkNsaXBib2FyZE1pbWVUeXBlcy5oIgotI2luY2x1ZGUgIlBhc3RlYm9h
cmQuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUJyaWRnZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLS8vIFBlciBSRkMgMjQ4MywgdGhlIGxpbmUgc2VwYXJhdG9yIGZvciAidGV4dC8uLi4iIE1J
TUUgdHlwZXMgaXMgQ1ItTEYuCi1zdGF0aWMgY2hhciBjb25zdCogY29uc3QgdGV4dE1JTUVUeXBl
TGluZVNlcGFyYXRvciA9ICJcclxuIjsKLQotdm9pZCBDaHJvbWl1bURhdGFPYmplY3RMZWdhY3k6
OmNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpCi17Ci0gICAgaWYgKHR5cGUgPT0gbWltZVR5
cGVUZXh0UGxhaW4pIHsKLSAgICAgICAgbV9wbGFpblRleHQgPSAiIjsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmICh0eXBlID09IG1pbWVUeXBlVVJMIHx8IHR5cGUgPT0gbWltZVR5
cGVUZXh0VVJJTGlzdCkgewotICAgICAgICBtX3VyaUxpc3QgPSAiIjsKLSAgICAgICAgbV91cmwg
PSBLVVJMKCk7Ci0gICAgICAgIG1fdXJsVGl0bGUgPSAiIjsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmICh0eXBlID09IG1pbWVUeXBlVGV4dEhUTUwpIHsKLSAgICAgICAgbV90ZXh0
SHRtbCA9ICIiOwotICAgICAgICBtX2h0bWxCYXNlVXJsID0gS1VSTCgpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKHR5cGUgPT0gbWltZVR5cGVEb3dubG9hZFVSTCkgewotICAg
ICAgICBtX2Rvd25sb2FkTWV0YWRhdGEgPSAiIjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLX0K
LQotdm9pZCBDaHJvbWl1bURhdGFPYmplY3RMZWdhY3k6OmNsZWFyQWxsKCkKLXsKLSAgICBjbGVh
ckFsbEV4Y2VwdEZpbGVzKCk7Ci0gICAgbV9maWxlbmFtZXMuY2xlYXIoKTsKLX0KLQotdm9pZCBD
aHJvbWl1bURhdGFPYmplY3RMZWdhY3k6OmNsZWFyQWxsRXhjZXB0RmlsZXMoKQotewotICAgIG1f
dXJsVGl0bGUgPSAiIjsKLSAgICBtX3VybCA9IEtVUkwoKTsKLSAgICBtX3VyaUxpc3QgPSAiIjsK
LSAgICBtX2Rvd25sb2FkTWV0YWRhdGEgPSAiIjsKLSAgICBtX2ZpbGVFeHRlbnNpb24gPSAiIjsK
LSAgICBtX3BsYWluVGV4dCA9ICIiOwotICAgIG1fdGV4dEh0bWwgPSAiIjsKLSAgICBtX2h0bWxC
YXNlVXJsID0gS1VSTCgpOwotICAgIG1fZmlsZUNvbnRlbnRGaWxlbmFtZSA9ICIiOwotICAgIGlm
IChtX2ZpbGVDb250ZW50KQotICAgICAgICBtX2ZpbGVDb250ZW50LT5jbGVhcigpOwotfQotCi1i
b29sIENocm9taXVtRGF0YU9iamVjdExlZ2FjeTo6aGFzRGF0YSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuICFtX3VybC5pc0VtcHR5KCkKLSAgICAgICAgfHwgIW1fdXJpTGlzdC5pc0VtcHR5KCkKLSAg
ICAgICAgfHwgIW1fZG93bmxvYWRNZXRhZGF0YS5pc0VtcHR5KCkKLSAgICAgICAgfHwgIW1fZmls
ZUV4dGVuc2lvbi5pc0VtcHR5KCkKLSAgICAgICAgfHwgIW1fZmlsZW5hbWVzLmlzRW1wdHkoKQot
ICAgICAgICB8fCAhbV9wbGFpblRleHQuaXNFbXB0eSgpCi0gICAgICAgIHx8ICFtX3RleHRIdG1s
LmlzRW1wdHkoKQotICAgICAgICB8fCBtX2ZpbGVDb250ZW50OwotfQotCi1IYXNoU2V0PFN0cmlu
Zz4gQ2hyb21pdW1EYXRhT2JqZWN0TGVnYWN5Ojp0eXBlcygpIGNvbnN0Ci17Ci0gICAgLy8gVGhp
cyBpcyBjdXJyZW50bHkgYnJva2VuIGZvciBwYXN0ZWJvYXJkIGV2ZW50cywgYW5kIGFsd2F5cyBo
YXMgYmVlbi4KLSAgICBIYXNoU2V0PFN0cmluZz4gcmVzdWx0czsKLQotICAgIGlmICghbV9wbGFp
blRleHQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHJlc3VsdHMuYWRkKG1pbWVUeXBlVGV4dCk7Ci0g
ICAgICAgIHJlc3VsdHMuYWRkKG1pbWVUeXBlVGV4dFBsYWluKTsKLSAgICB9Ci0KLSAgICBpZiAo
bV91cmwuaXNWYWxpZCgpKQotICAgICAgICByZXN1bHRzLmFkZChtaW1lVHlwZVVSTCk7Ci0KLSAg
ICBpZiAoIW1fdXJpTGlzdC5pc0VtcHR5KCkpCi0gICAgICAgIHJlc3VsdHMuYWRkKG1pbWVUeXBl
VGV4dFVSSUxpc3QpOwotCi0gICAgaWYgKCFtX3RleHRIdG1sLmlzRW1wdHkoKSkKLSAgICAgICAg
cmVzdWx0cy5hZGQobWltZVR5cGVUZXh0SFRNTCk7Ci0KLSAgICBpZiAoIW1fZmlsZW5hbWVzLmlz
RW1wdHkoKSkKLSAgICAgICAgcmVzdWx0cy5hZGQoIkZpbGVzIik7Ci0KLSAgICByZXR1cm4gcmVz
dWx0czsKLX0KLQotU3RyaW5nIENocm9taXVtRGF0YU9iamVjdExlZ2FjeTo6Z2V0RGF0YShjb25z
dCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpCi17Ci0gICAgaWYgKHR5cGUgPT0gbWltZVR5
cGVUZXh0UGxhaW4pIHsKLSAgICAgICAgaWYgKG1fY2xpcGJvYXJkVHlwZSA9PSBDbGlwYm9hcmQ6
OkNvcHlBbmRQYXN0ZSkgewotICAgICAgICAgICAgUGFzdGVib2FyZFByaXZhdGU6OkNsaXBib2Fy
ZEJ1ZmZlciBidWZmZXIgPQotICAgICAgICAgICAgICAgIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0
ZWJvYXJkKCktPmlzU2VsZWN0aW9uTW9kZSgpID8KLSAgICAgICAgICAgICAgICBQYXN0ZWJvYXJk
UHJpdmF0ZTo6U2VsZWN0aW9uQnVmZmVyIDoKLSAgICAgICAgICAgICAgICBQYXN0ZWJvYXJkUHJp
dmF0ZTo6U3RhbmRhcmRCdWZmZXI7Ci0gICAgICAgICAgICBTdHJpbmcgdGV4dCA9IFBsYXRmb3Jt
QnJpZGdlOjpjbGlwYm9hcmRSZWFkUGxhaW5UZXh0KGJ1ZmZlcik7Ci0gICAgICAgICAgICBzdWNj
ZXNzID0gIXRleHQuaXNFbXB0eSgpOwotICAgICAgICAgICAgcmV0dXJuIHRleHQ7Ci0gICAgICAg
IH0KLSAgICAgICAgc3VjY2VzcyA9ICFtX3BsYWluVGV4dC5pc0VtcHR5KCk7Ci0gICAgICAgIHJl
dHVybiBtX3BsYWluVGV4dDsKLSAgICB9Ci0KLSAgICBpZiAodHlwZSA9PSBtaW1lVHlwZVVSTCkg
ewotICAgICAgICBzdWNjZXNzID0gIW1fdXJsLmlzRW1wdHkoKTsKLSAgICAgICAgcmV0dXJuIG1f
dXJsLnN0cmluZygpOwotICAgIH0KLQotICAgIGlmICh0eXBlID09IG1pbWVUeXBlVGV4dFVSSUxp
c3QpIHsKLSAgICAgICAgc3VjY2VzcyA9ICFtX3VyaUxpc3QuaXNFbXB0eSgpOwotICAgICAgICBy
ZXR1cm4gbV91cmlMaXN0OwotICAgIH0KLQotICAgIGlmICh0eXBlID09IG1pbWVUeXBlVGV4dEhU
TUwpIHsKLSAgICAgICAgaWYgKG1fY2xpcGJvYXJkVHlwZSA9PSBDbGlwYm9hcmQ6OkNvcHlBbmRQ
YXN0ZSkgewotICAgICAgICAgICAgUGFzdGVib2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZlciBi
dWZmZXIgPQotICAgICAgICAgICAgICAgIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCkt
PmlzU2VsZWN0aW9uTW9kZSgpID8KLSAgICAgICAgICAgICAgICBQYXN0ZWJvYXJkUHJpdmF0ZTo6
U2VsZWN0aW9uQnVmZmVyIDoKLSAgICAgICAgICAgICAgICBQYXN0ZWJvYXJkUHJpdmF0ZTo6U3Rh
bmRhcmRCdWZmZXI7Ci0gICAgICAgICAgICBTdHJpbmcgaHRtbFRleHQ7Ci0gICAgICAgICAgICBL
VVJMIHNvdXJjZVVSTDsKLSAgICAgICAgICAgIFBsYXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRSZWFk
SFRNTChidWZmZXIsICZodG1sVGV4dCwgJnNvdXJjZVVSTCk7Ci0gICAgICAgICAgICBzdWNjZXNz
ID0gIWh0bWxUZXh0LmlzRW1wdHkoKTsKLSAgICAgICAgICAgIHJldHVybiBodG1sVGV4dDsKLSAg
ICAgICAgfQotICAgICAgICBzdWNjZXNzID0gIW1fdGV4dEh0bWwuaXNFbXB0eSgpOwotICAgICAg
ICByZXR1cm4gbV90ZXh0SHRtbDsKLSAgICB9Ci0KLSAgICBpZiAodHlwZSA9PSBtaW1lVHlwZURv
d25sb2FkVVJMKSB7Ci0gICAgICAgIHN1Y2Nlc3MgPSAhbV9kb3dubG9hZE1ldGFkYXRhLmlzRW1w
dHkoKTsKLSAgICAgICAgcmV0dXJuIG1fZG93bmxvYWRNZXRhZGF0YTsKLSAgICB9Ci0KLSAgICBz
dWNjZXNzID0gZmFsc2U7Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCi1ib29sIENocm9taXVt
RGF0YU9iamVjdExlZ2FjeTo6c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgZGF0YSkKLXsKLSAgICBpZiAodHlwZSA9PSBtaW1lVHlwZVRleHRQbGFpbikgewotICAgICAg
ICBtX3BsYWluVGV4dCA9IGRhdGE7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAg
IGlmICh0eXBlID09IG1pbWVUeXBlVVJMIHx8IHR5cGUgPT0gbWltZVR5cGVUZXh0VVJJTGlzdCkg
ewotICAgICAgICBtX3VybCA9IEtVUkwoKTsKLSAgICAgICAgVmVjdG9yPFN0cmluZz4gdXJpTGlz
dDsKLSAgICAgICAgLy8gTGluZSBzZXBhcmF0b3IgaXMgXHJcbiBwZXIgUkZDIDI0ODMgLSBob3dl
dmVyLCBmb3IgY29tcGF0aWJpbGl0eQotICAgICAgICAvLyByZWFzb25zIHdlIGFsc28gYWxsb3cg
anVzdCBcbiBoZXJlLgotICAgICAgICBkYXRhLnNwbGl0KCdcbicsIHVyaUxpc3QpOwotICAgICAg
ICAvLyBQcm9jZXNzIHRoZSBpbnB1dCBhbmQgY29weSB0aGUgZmlyc3QgdmFsaWQgVVJMIGludG8g
dGhlIHVybCBtZW1iZXIuCi0gICAgICAgIC8vIEluIGNhc2Ugbm8gVVJMcyBjYW4gYmUgZm91bmQs
IHN1YnNlcXVlbnQgY2FsbHMgdG8gZ2V0RGF0YSgiVVJMIikKLSAgICAgICAgLy8gd2lsbCBnZXQg
YW4gZW1wdHkgc3RyaW5nLiBUaGlzIGlzIGluIGxpbmUgd2l0aCB0aGUgSFRNTDUgc3BlYyAoc2Vl
Ci0gICAgICAgIC8vICJUaGUgRHJhZ0V2ZW50IGFuZCBEYXRhVHJhbnNmZXIgaW50ZXJmYWNlcyIp
LgotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHVyaUxpc3Quc2l6ZSgpOyArK2kpIHsK
LSAgICAgICAgICAgIFN0cmluZyYgbGluZSA9IHVyaUxpc3RbaV07Ci0gICAgICAgICAgICBsaW5l
ID0gbGluZS5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICAgICAgICAgIGlmIChsaW5lLmlzRW1wdHko
KSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChsaW5lWzBdID09
ICcjJykKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIEtVUkwgdXJsID0g
S1VSTChQYXJzZWRVUkxTdHJpbmcsIGxpbmUpOwotICAgICAgICAgICAgaWYgKHVybC5pc1ZhbGlk
KCkpIHsKLSAgICAgICAgICAgICAgICBtX3VybCA9IHVybDsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBtX3VyaUxpc3QgPSBkYXRhOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBpZiAodHlwZSA9PSBtaW1lVHlwZVRl
eHRIVE1MKSB7Ci0gICAgICAgIG1fdGV4dEh0bWwgPSBkYXRhOwotICAgICAgICBtX2h0bWxCYXNl
VXJsID0gS1VSTCgpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBpZiAodHlw
ZSA9PSBtaW1lVHlwZURvd25sb2FkVVJMKSB7Ci0gICAgICAgIG1fZG93bmxvYWRNZXRhZGF0YSA9
IGRhdGE7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotQ2hyb21pdW1EYXRhT2JqZWN0TGVnYWN5OjpDaHJvbWl1bURhdGFPYmplY3RMZWdhY3ko
Q2xpcGJvYXJkOjpDbGlwYm9hcmRUeXBlIGNsaXBib2FyZFR5cGUpCi0gICAgOiBtX2NsaXBib2Fy
ZFR5cGUoY2xpcGJvYXJkVHlwZSkKLXsKLX0KLQotQ2hyb21pdW1EYXRhT2JqZWN0TGVnYWN5OjpD
aHJvbWl1bURhdGFPYmplY3RMZWdhY3koY29uc3QgQ2hyb21pdW1EYXRhT2JqZWN0TGVnYWN5JiBv
dGhlcikKLSAgICA6IFJlZkNvdW50ZWQ8Q2hyb21pdW1EYXRhT2JqZWN0TGVnYWN5PigpCi0gICAg
LCBtX2NsaXBib2FyZFR5cGUob3RoZXIubV9jbGlwYm9hcmRUeXBlKQotICAgICwgbV91cmxUaXRs
ZShvdGhlci5tX3VybFRpdGxlKQotICAgICwgbV9kb3dubG9hZE1ldGFkYXRhKG90aGVyLm1fZG93
bmxvYWRNZXRhZGF0YSkKLSAgICAsIG1fZmlsZUV4dGVuc2lvbihvdGhlci5tX2ZpbGVFeHRlbnNp
b24pCi0gICAgLCBtX2ZpbGVuYW1lcyhvdGhlci5tX2ZpbGVuYW1lcykKLSAgICAsIG1fcGxhaW5U
ZXh0KG90aGVyLm1fcGxhaW5UZXh0KQotICAgICwgbV90ZXh0SHRtbChvdGhlci5tX3RleHRIdG1s
KQotICAgICwgbV9odG1sQmFzZVVybChvdGhlci5tX2h0bWxCYXNlVXJsKQotICAgICwgbV9maWxl
Q29udGVudEZpbGVuYW1lKG90aGVyLm1fZmlsZUNvbnRlbnRGaWxlbmFtZSkKLSAgICAsIG1fdXJs
KG90aGVyLm1fdXJsKQotICAgICwgbV91cmlMaXN0KG90aGVyLm1fdXJpTGlzdCkKLXsKLSAgICBp
ZiAob3RoZXIubV9maWxlQ29udGVudC5nZXQoKSkKLSAgICAgICAgbV9maWxlQ29udGVudCA9IG90
aGVyLm1fZmlsZUNvbnRlbnQtPmNvcHkoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRh
T2JqZWN0TGVnYWN5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1
bURhdGFPYmplY3RMZWdhY3kuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTViZTdh
YTQyOWRlOTdhNzMyNWY4ZWZmMDhhY2Q1ZThhY2M3N2QwNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9DaHJvbWl1bURhdGFPYmplY3RMZWdhY3kuaAorKysgL2Rldi9udWxsCkBAIC0xLDExOSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDA4LCAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICogCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1l
dDoKLSAqIAotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
ICogCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpZm5kZWYgQ2hyb21pdW1EYXRhT2JqZWN0TGVnYWN5X2gKLSNkZWZpbmUg
Q2hyb21pdW1EYXRhT2JqZWN0TGVnYWN5X2gKLQotI2luY2x1ZGUgIkNsaXBib2FyZC5oIgotI2lu
Y2x1ZGUgIktVUkwuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gQSBkYXRhIG9iamVjdCBmb3Ig
aG9sZGluZyBkYXRhIHRoYXQgd291bGQgYmUgaW4gYSBjbGlwYm9hcmQgb3IgbW92ZWQKLS8vIGR1
cmluZyBhIGRyYWctbi1kcm9wIG9wZXJhdGlvbi4gIFRoaXMgaXMgdGhlIGRhdGEgdGhhdCBXZWJD
b3JlIGlzIGF3YXJlCi0vLyBvZiBhbmQgaXMgbm90IHNwZWNpZmljIHRvIGEgcGxhdGZvcm0uCi1j
bGFzcyBDaHJvbWl1bURhdGFPYmplY3RMZWdhY3kgOiBwdWJsaWMgUmVmQ291bnRlZDxDaHJvbWl1
bURhdGFPYmplY3RMZWdhY3k+IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDaHJv
bWl1bURhdGFPYmplY3RMZWdhY3k+IGNyZWF0ZShDbGlwYm9hcmQ6OkNsaXBib2FyZFR5cGUgY2xp
cGJvYXJkVHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2hyb21pdW1E
YXRhT2JqZWN0TGVnYWN5KGNsaXBib2FyZFR5cGUpKTsKLSAgICB9Ci0KLSAgICBQYXNzUmVmUHRy
PENocm9taXVtRGF0YU9iamVjdExlZ2FjeT4gY29weSgpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IENocm9taXVtRGF0YU9iamVjdExlZ2FjeSgqdGhpcykpOwotICAg
IH0KLQotICAgIHZvaWQgY2xlYXJEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSk7Ci0gICAgdm9pZCBj
bGVhckFsbCgpOwotICAgIHZvaWQgY2xlYXJBbGxFeGNlcHRGaWxlcygpOwotCi0gICAgYm9vbCBo
YXNEYXRhKCkgY29uc3Q7Ci0KLSAgICBIYXNoU2V0PFN0cmluZz4gdHlwZXMoKSBjb25zdDsKLSAg
ICBTdHJpbmcgZ2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2Nlc3MpOwotICAg
IGJvb2wgc2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSk7Ci0K
LSAgICAvLyBTcGVjaWFsIGhhbmRsZXJzIGZvciBVUkwvSFRNTCBtZXRhZGF0YS4KLSAgICBTdHJp
bmcgdXJsVGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3VybFRpdGxlOyB9Ci0gICAgdm9pZCBzZXRV
cmxUaXRsZShjb25zdCBTdHJpbmcmIHVybFRpdGxlKSB7IG1fdXJsVGl0bGUgPSB1cmxUaXRsZTsg
fQotICAgIEtVUkwgaHRtbEJhc2VVcmwoKSBjb25zdCB7IHJldHVybiBtX2h0bWxCYXNlVXJsOyB9
Ci0gICAgdm9pZCBzZXRIdG1sQmFzZVVybChjb25zdCBLVVJMJiB1cmwpIHsgbV9odG1sQmFzZVVy
bCA9IHVybDsgfQotCi0gICAgLy8gVXNlZCB0byBoYW5kbGUgZmlsZXMgYmVpbmcgZHJhZ2dlZCBp
bi4KLSAgICBib29sIGNvbnRhaW5zRmlsZW5hbWVzKCkgY29uc3QgeyByZXR1cm4gIW1fZmlsZW5h
bWVzLmlzRW1wdHkoKTsgfQotICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVuYW1lcygpIGNvbnN0IHsg
cmV0dXJuIG1fZmlsZW5hbWVzOyB9Ci0gICAgdm9pZCBzZXRGaWxlbmFtZXMoY29uc3QgVmVjdG9y
PFN0cmluZz4mIGZpbGVuYW1lcykgeyBtX2ZpbGVuYW1lcyA9IGZpbGVuYW1lczsgfQotCi0gICAg
Ly8gVXNlZCB0byBoYW5kbGUgZmlsZXMgKGltYWdlcykgYmVpbmcgZHJhZ2dlZCBvdXQuCi0gICAg
U3RyaW5nIGZpbGVFeHRlbnNpb24oKSBjb25zdCB7IHJldHVybiBtX2ZpbGVFeHRlbnNpb247IH0K
LSAgICB2b2lkIHNldEZpbGVFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBmaWxlRXh0ZW5zaW9uKSB7
IG1fZmlsZUV4dGVuc2lvbiA9IGZpbGVFeHRlbnNpb247IH0KLSAgICBTdHJpbmcgZmlsZUNvbnRl
bnRGaWxlbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZUNvbnRlbnRGaWxlbmFtZTsgfQotICAg
IHZvaWQgc2V0RmlsZUNvbnRlbnRGaWxlbmFtZShjb25zdCBTdHJpbmcmIGZpbGVDb250ZW50Rmls
ZW5hbWUpIHsgbV9maWxlQ29udGVudEZpbGVuYW1lID0gZmlsZUNvbnRlbnRGaWxlbmFtZTsgfQot
ICAgIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBmaWxlQ29udGVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fZmlsZUNvbnRlbnQ7IH0KLSAgICB2b2lkIHNldEZpbGVDb250ZW50KFBhc3NSZWZQdHI8U2hh
cmVkQnVmZmVyPiBmaWxlQ29udGVudCkgeyBtX2ZpbGVDb250ZW50ID0gZmlsZUNvbnRlbnQ7IH0K
LQotcHJpdmF0ZToKLSAgICBDaHJvbWl1bURhdGFPYmplY3RMZWdhY3koQ2xpcGJvYXJkOjpDbGlw
Ym9hcmRUeXBlKTsKLSAgICBDaHJvbWl1bURhdGFPYmplY3RMZWdhY3koY29uc3QgQ2hyb21pdW1E
YXRhT2JqZWN0TGVnYWN5Jik7Ci0KLSAgICBDbGlwYm9hcmQ6OkNsaXBib2FyZFR5cGUgbV9jbGlw
Ym9hcmRUeXBlOwotCi0gICAgU3RyaW5nIG1fdXJsVGl0bGU7Ci0KLSAgICBTdHJpbmcgbV9kb3du
bG9hZE1ldGFkYXRhOwotCi0gICAgU3RyaW5nIG1fZmlsZUV4dGVuc2lvbjsKLSAgICBWZWN0b3I8
U3RyaW5nPiBtX2ZpbGVuYW1lczsKLQotICAgIFN0cmluZyBtX3BsYWluVGV4dDsKLQotICAgIFN0
cmluZyBtX3RleHRIdG1sOwotICAgIEtVUkwgbV9odG1sQmFzZVVybDsKLQotICAgIFN0cmluZyBt
X2ZpbGVDb250ZW50RmlsZW5hbWU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9maWxlQ29u
dGVudDsKLQotICAgIC8vIFRoZXNlIHR3byBhcmUgbGlua2VkLiBTZXR0aW5nIG1fdXJsIHdpbGwg
c2V0IG1fdXJpTGlzdCB0byB0aGUgc2FtZQotICAgIC8vIHN0cmluZyB2YWx1ZTsgc2V0dGluZyBt
X3VyaUxpc3Qgd2lsbCBjYXVzZSBpdHMgY29udGVudHMgdG8gYmUgcGFyc2VkCi0gICAgLy8gYWNj
b3JkaW5nIHRvIFJGQyAyNDgzIGFuZCB0aGUgZmlyc3QgVVJMIGZvdW5kIHdpbGwgYmUgc2V0IGlu
IG1fdXJsLgotICAgIEtVUkwgbV91cmw7Ci0gICAgU3RyaW5nIG1fdXJpTGlzdDsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9SZWFkYWJsZURhdGFPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vUmVhZGFibGVEYXRhT2JqZWN0LmNwcApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZGJmNDczOTBkNjlmOWJjNzVmNzYxMDZiYjJhZjA1NTNjNDI3Njhj
Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9SZWFkYWJsZURhdGFPYmplY3QuY3BwCisrKyAvZGV2
L251bGwKQEAgLTEsMTM5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVh
ZGFibGVEYXRhT2JqZWN0LmgiCi0KLSNpbmNsdWRlICJDbGlwYm9hcmRNaW1lVHlwZXMuaCIKLSNp
bmNsdWRlICJQYXN0ZWJvYXJkLmgiCi0jaW5jbHVkZSAiUGFzdGVib2FyZFByaXZhdGUuaCIKLSNp
bmNsdWRlICJQbGF0Zm9ybUJyaWRnZS5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRp
YyBQYXN0ZWJvYXJkUHJpdmF0ZTo6Q2xpcGJvYXJkQnVmZmVyIGNsaXBib2FyZEJ1ZmZlcihDbGlw
Ym9hcmQ6OkNsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlwZSkKLXsKLSAgICByZXR1cm4gY2xpcGJv
YXJkVHlwZSA9PSBDbGlwYm9hcmQ6OkRyYWdBbmREcm9wID8gUGFzdGVib2FyZFByaXZhdGU6OkRy
YWdCdWZmZXIgOiBQYXN0ZWJvYXJkUHJpdmF0ZTo6U3RhbmRhcmRCdWZmZXI7Ci19Ci0KLVBhc3NS
ZWZQdHI8UmVhZGFibGVEYXRhT2JqZWN0PiBSZWFkYWJsZURhdGFPYmplY3Q6OmNyZWF0ZShDbGlw
Ym9hcmQ6OkNsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlwZSkKLXsKLSAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFJlYWRhYmxlRGF0YU9iamVjdChjbGlwYm9hcmRUeXBlKSk7Ci19Ci0KLVJlYWRhYmxl
RGF0YU9iamVjdDo6UmVhZGFibGVEYXRhT2JqZWN0KENsaXBib2FyZDo6Q2xpcGJvYXJkVHlwZSBj
bGlwYm9hcmRUeXBlKQotICAgIDogbV9jbGlwYm9hcmRUeXBlKGNsaXBib2FyZFR5cGUpCi0gICAg
LCBtX2NvbnRhaW5zRmlsZW5hbWVzKGZhbHNlKQotICAgICwgbV9pc1R5cGVDYWNoZUluaXRpYWxp
emVkKGZhbHNlKQotewotfQotCi1ib29sIFJlYWRhYmxlRGF0YU9iamVjdDo6aGFzRGF0YSgpIGNv
bnN0Ci17Ci0gICAgZW5zdXJlVHlwZUNhY2hlSW5pdGlhbGl6ZWQoKTsKLSAgICByZXR1cm4gIW1f
dHlwZXMuaXNFbXB0eSgpIHx8IG1fY29udGFpbnNGaWxlbmFtZXM7Ci19Ci0KLUhhc2hTZXQ8U3Ry
aW5nPiBSZWFkYWJsZURhdGFPYmplY3Q6OnR5cGVzKCkgY29uc3QKLXsKLSAgICBlbnN1cmVUeXBl
Q2FjaGVJbml0aWFsaXplZCgpOwotICAgIHJldHVybiBtX3R5cGVzOwotfQotCi1TdHJpbmcgUmVh
ZGFibGVEYXRhT2JqZWN0OjpnZXREYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2Vl
ZGVkKSBjb25zdAotewotICAgIFN0cmluZyBkYXRhOwotICAgIFN0cmluZyBpZ25vcmVkTWV0YWRh
dGE7Ci0gICAgLy8gU2luY2UgdGhlIENocm9taXVtLXNpZGUgYnJpZGdlIGlzbid0IGNvbXBsZXRl
IHlldCwgd2Ugc3BlY2lhbCBjYXNlIHRoaXMKLSAgICAvLyBmb3IgY29weS1hbmQtcGFzdGUsIHNp
bmNlIHRoYXQgY29kZSBwYXRoIG5vIGxvbmdlciB1c2VzCi0gICAgLy8gQ2hyb21pdW1EYXRhT2Jq
ZWN0TGVnYWN5LgotICAgIGlmIChtX2NsaXBib2FyZFR5cGUgPT0gQ2xpcGJvYXJkOjpDb3B5QW5k
UGFzdGUpIHsKLSAgICAgICAgaWYgKHR5cGUgPT0gbWltZVR5cGVUZXh0UGxhaW4pIHsKLSAgICAg
ICAgICAgIFBhc3RlYm9hcmRQcml2YXRlOjpDbGlwYm9hcmRCdWZmZXIgYnVmZmVyID0KLSAgICAg
ICAgICAgICAgICBQYXN0ZWJvYXJkOjpnZW5lcmFsUGFzdGVib2FyZCgpLT5pc1NlbGVjdGlvbk1v
ZGUoKSA/Ci0gICAgICAgICAgICAgICAgUGFzdGVib2FyZFByaXZhdGU6OlNlbGVjdGlvbkJ1ZmZl
ciA6Ci0gICAgICAgICAgICAgICAgUGFzdGVib2FyZFByaXZhdGU6OlN0YW5kYXJkQnVmZmVyOwot
ICAgICAgICAgICAgZGF0YSA9IFBsYXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRSZWFkUGxhaW5UZXh0
KGJ1ZmZlcik7Ci0gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBtaW1lVHlwZVRleHRIVE1MKSB7
Ci0gICAgICAgICAgICBQYXN0ZWJvYXJkUHJpdmF0ZTo6Q2xpcGJvYXJkQnVmZmVyIGJ1ZmZlciA9
Ci0gICAgICAgICAgICAgICAgUGFzdGVib2FyZDo6Z2VuZXJhbFBhc3RlYm9hcmQoKS0+aXNTZWxl
Y3Rpb25Nb2RlKCkgPwotICAgICAgICAgICAgICAgIFBhc3RlYm9hcmRQcml2YXRlOjpTZWxlY3Rp
b25CdWZmZXIgOgotICAgICAgICAgICAgICAgIFBhc3RlYm9hcmRQcml2YXRlOjpTdGFuZGFyZEJ1
ZmZlcjsKLSAgICAgICAgICAgIEtVUkwgaWdub3JlZFNvdXJjZVVSTDsKLSAgICAgICAgICAgIFBs
YXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRSZWFkSFRNTChidWZmZXIsICZkYXRhLCAmaWdub3JlZFNv
dXJjZVVSTCk7Ci0gICAgICAgIH0KLSAgICAgICAgc3VjY2VlZGVkID0gIWRhdGEuaXNFbXB0eSgp
OwotICAgICAgICByZXR1cm4gZGF0YTsKLSAgICB9Ci0gICAgc3VjY2VlZGVkID0gUGxhdGZvcm1C
cmlkZ2U6OmNsaXBib2FyZFJlYWREYXRhKAotICAgICAgICBjbGlwYm9hcmRCdWZmZXIobV9jbGlw
Ym9hcmRUeXBlKSwgdHlwZSwgZGF0YSwgaWdub3JlZE1ldGFkYXRhKTsKLSAgICByZXR1cm4gZGF0
YTsKLX0KLQotU3RyaW5nIFJlYWRhYmxlRGF0YU9iamVjdDo6dXJsVGl0bGUoKSBjb25zdAotewot
ICAgIFN0cmluZyBpZ25vcmVkRGF0YTsKLSAgICBTdHJpbmcgdXJsVGl0bGU7Ci0gICAgUGxhdGZv
cm1CcmlkZ2U6OmNsaXBib2FyZFJlYWREYXRhKAotICAgICAgICBjbGlwYm9hcmRCdWZmZXIobV9j
bGlwYm9hcmRUeXBlKSwgbWltZVR5cGVUZXh0VVJJTGlzdCwgaWdub3JlZERhdGEsIHVybFRpdGxl
KTsKLSAgICByZXR1cm4gdXJsVGl0bGU7Ci19Ci0KLUtVUkwgUmVhZGFibGVEYXRhT2JqZWN0Ojpo
dG1sQmFzZVVybCgpIGNvbnN0Ci17Ci0gICAgU3RyaW5nIGlnbm9yZWREYXRhOwotICAgIFN0cmlu
ZyBodG1sQmFzZVVybDsKLSAgICBQbGF0Zm9ybUJyaWRnZTo6Y2xpcGJvYXJkUmVhZERhdGEoCi0g
ICAgICAgIGNsaXBib2FyZEJ1ZmZlcihtX2NsaXBib2FyZFR5cGUpLCBtaW1lVHlwZVRleHRIVE1M
LCBpZ25vcmVkRGF0YSwgaHRtbEJhc2VVcmwpOwotICAgIHJldHVybiBLVVJMKFBhcnNlZFVSTFN0
cmluZywgaHRtbEJhc2VVcmwpOwotfQotCi1ib29sIFJlYWRhYmxlRGF0YU9iamVjdDo6Y29udGFp
bnNGaWxlbmFtZXMoKSBjb25zdAotewotICAgIGVuc3VyZVR5cGVDYWNoZUluaXRpYWxpemVkKCk7
Ci0gICAgcmV0dXJuIG1fY29udGFpbnNGaWxlbmFtZXM7Ci19Ci0KLVZlY3RvcjxTdHJpbmc+IFJl
YWRhYmxlRGF0YU9iamVjdDo6ZmlsZW5hbWVzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gUGxhdGZv
cm1CcmlkZ2U6OmNsaXBib2FyZFJlYWRGaWxlbmFtZXMoY2xpcGJvYXJkQnVmZmVyKG1fY2xpcGJv
YXJkVHlwZSkpOwotfQotCi12b2lkIFJlYWRhYmxlRGF0YU9iamVjdDo6ZW5zdXJlVHlwZUNhY2hl
SW5pdGlhbGl6ZWQoKSBjb25zdAotewotICAgIGlmIChtX2lzVHlwZUNhY2hlSW5pdGlhbGl6ZWQp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIG1fdHlwZXMgPSBQbGF0Zm9ybUJyaWRnZTo6Y2xpcGJv
YXJkUmVhZEF2YWlsYWJsZVR5cGVzKAotICAgICAgICBjbGlwYm9hcmRCdWZmZXIobV9jbGlwYm9h
cmRUeXBlKSwgJm1fY29udGFpbnNGaWxlbmFtZXMpOwotICAgIG1faXNUeXBlQ2FjaGVJbml0aWFs
aXplZCA9IHRydWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1JlYWRhYmxlRGF0YU9iamVjdC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUmVhZGFibGVEYXRhT2JqZWN0LmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyN2UwZWQzNDFjOGM1ZGVjMjg3MjQwNTZmMTAwMDZj
ZDZjMWJkOTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUmVhZGFibGVEYXRhT2JqZWN0LmgKKysr
IC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
LSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBSZWFkYWJsZURhdGFPYmplY3RfaAot
I2RlZmluZSBSZWFkYWJsZURhdGFPYmplY3RfaAotCi0jaW5jbHVkZSAiQ2xpcGJvYXJkLmgiCi0j
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBV
c2VkIGZvciBvbmUgd2F5IGNvbW11bmljYXRpb24gb2YgZHJhZy9kcm9wIGFuZCBjb3B5L3Bhc3Rl
IGRhdGEgZnJvbSB0aGUKLS8vIGJyb3dzZXIgdG8gdGhlIHJlbmRlcmVyLgotY2xhc3MgUmVhZGFi
bGVEYXRhT2JqZWN0IDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZGFibGVEYXRhT2JqZWN0PiB7Ci1w
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UmVhZGFibGVEYXRhT2JqZWN0PiBjcmVhdGUo
Q2xpcGJvYXJkOjpDbGlwYm9hcmRUeXBlKTsKLQotICAgIGJvb2wgaGFzRGF0YSgpIGNvbnN0Owot
ICAgIEhhc2hTZXQ8U3RyaW5nPiB0eXBlcygpIGNvbnN0OwotICAgIFN0cmluZyBnZXREYXRhKGNv
bnN0IFN0cmluZyYgdHlwZSwgYm9vbCYgc3VjY2VlZGVkKSBjb25zdDsKLQotICAgIFN0cmluZyB1
cmxUaXRsZSgpIGNvbnN0OwotICAgIEtVUkwgaHRtbEJhc2VVcmwoKSBjb25zdDsKLQotICAgIGJv
b2wgY29udGFpbnNGaWxlbmFtZXMoKSBjb25zdDsKLSAgICBWZWN0b3I8U3RyaW5nPiBmaWxlbmFt
ZXMoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBSZWFkYWJsZURhdGFPYmplY3Qo
Q2xpcGJvYXJkOjpDbGlwYm9hcmRUeXBlKTsKLQotICAgIC8vIFRoaXMgaXNuJ3QgYWx3YXlzIGNv
bnN0Li4uIGJ1dCBtb3N0IG9mIHRoZSB0aW1lIGl0IGlzLgotICAgIHZvaWQgZW5zdXJlVHlwZUNh
Y2hlSW5pdGlhbGl6ZWQoKSBjb25zdDsKLQotICAgIENsaXBib2FyZDo6Q2xpcGJvYXJkVHlwZSBt
X2NsaXBib2FyZFR5cGU7Ci0KLSAgICAvLyBUbyBhdm9pZCBtYWtpbmcgYSBsb3Qgb2YgSVBDIGNh
bGxzIGZvciBlYWNoIGRyYWcgZXZlbnQsIHdlIGNhY2hlIHNvbWUKLSAgICAvLyB2YWx1ZXMgaW4g
dGhlIHJlbmRlcmVyLgotICAgIG11dGFibGUgSGFzaFNldDxTdHJpbmc+IG1fdHlwZXM7Ci0gICAg
bXV0YWJsZSBib29sIG1fY29udGFpbnNGaWxlbmFtZXM7Ci0gICAgbXV0YWJsZSBib29sIG1faXNU
eXBlQ2FjaGVJbml0aWFsaXplZDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Xcml0YWJs
ZURhdGFPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vV3JpdGFi
bGVEYXRhT2JqZWN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFhYzdkOTFl
ZjZiZTEzYjQ3YTAwYjA1MzkzYjQ4ODMyNGNmMTBiMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9X
cml0YWJsZURhdGFPYmplY3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBk
aXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXcml0YWJsZURhdGFPYmplY3QuaCIKLQotI2luY2x1
ZGUgIkNsaXBib2FyZE1pbWVUeXBlcy5oIgotI2luY2x1ZGUgIlBsYXRmb3JtQnJpZGdlLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUGFzc1JlZlB0cjxXcml0YWJsZURhdGFPYmplY3Q+IFdy
aXRhYmxlRGF0YU9iamVjdDo6Y3JlYXRlKENsaXBib2FyZDo6Q2xpcGJvYXJkVHlwZSBjbGlwYm9h
cmRUeXBlKQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV3JpdGFibGVEYXRhT2JqZWN0KGNs
aXBib2FyZFR5cGUpKTsKLX0KLQotV3JpdGFibGVEYXRhT2JqZWN0OjpXcml0YWJsZURhdGFPYmpl
Y3QoQ2xpcGJvYXJkOjpDbGlwYm9hcmRUeXBlIGNsaXBib2FyZFR5cGUpCi0gICAgOiBtX2NsaXBi
b2FyZFR5cGUoY2xpcGJvYXJkVHlwZSkKLXsKLX0KLQotdm9pZCBXcml0YWJsZURhdGFPYmplY3Q6
OmNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5cGUpCi17Ci0gICAgbV9kYXRhTWFwLnJlbW92ZSh0
eXBlKTsKLSAgICBpZiAodHlwZSA9PSBtaW1lVHlwZVRleHRVUklMaXN0KQotICAgICAgICBtX3Vy
bFRpdGxlID0gIiI7Ci0gICAgZWxzZSBpZiAodHlwZSA9PSBtaW1lVHlwZVRleHRIVE1MKQotICAg
ICAgICBtX2h0bWxCYXNlVVJMID0gS1VSTCgpOwotfQotCi12b2lkIFdyaXRhYmxlRGF0YU9iamVj
dDo6Y2xlYXJBbGxFeGNlcHRGaWxlcygpCi17Ci0gICAgLy8gRklYTUU6IFRoZSBzcGVjIGRvZXMg
bm90IHByb3ZpZGUgYSB3YXkgdG8gcG9wdWxhdGUgRmlsZUxpc3QgY3VycmVudGx5LiBJbgotICAg
IC8vIGZhY3QsIHRoZSBzcGVjIGV4cGxpY2l0bHkgc3RhdGVzIHRoYXQgZHJhZ2dpbmcgZmlsZXMg
Y2FuIG9ubHkgaGFwcGVuIGZyb20KLSAgICAvLyBvdXRzaWRlIGEgYnJvd3NpbmcgY29udGV4dC4K
LSAgICBjbGVhckFsbCgpOwotfQotCi12b2lkIFdyaXRhYmxlRGF0YU9iamVjdDo6Y2xlYXJBbGwo
KQotewotICAgIG1fZGF0YU1hcC5jbGVhcigpOwotICAgIG1fdXJsVGl0bGUgPSAiIjsKLSAgICBt
X2h0bWxCYXNlVVJMID0gS1VSTCgpOwotICAgIG1fZmlsZUNvbnRlbnRGaWxlbmFtZSA9ICIiOwot
ICAgIGlmIChtX2ZpbGVDb250ZW50KQotICAgICAgICBtX2ZpbGVDb250ZW50LT5jbGVhcigpOwot
ICAgIG1fZmlsZUV4dGVuc2lvbiA9ICIiOwotfQotCi1ib29sIFdyaXRhYmxlRGF0YU9iamVjdDo6
c2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSkKLXsKLSAgICBp
ZiAobV9jbGlwYm9hcmRUeXBlID09IENsaXBib2FyZDo6Q29weUFuZFBhc3RlKSB7Ci0gICAgICAg
IC8vIEZJWE1FOiBUaGlzIGlzIGN1cnJlbnRseSB1bmltcGxlbWVudGVkIG9uIHRoZSBDaHJvbWl1
bS1zaWRlLiBUaGlzIGlzCi0gICAgICAgIC8vICJva2F5IiBmb3Igbm93IHNpbmNlIHRoZSBvcmln
aW5hbCBpbXBsZW1lbnRhdGlvbiBkaWRuJ3Qgc3VwcG9ydCBpdAotICAgICAgICAvLyBhbnl3YXku
IEdvaW5nIGZvcndhcmQsIHRoaXMgaXMgc29tZXRoaW5nIHdlJ2xsIG5lZWQgdG8gZml4IHRob3Vn
aC4KLSAgICAgICAgUGxhdGZvcm1CcmlkZ2U6OmNsaXBib2FyZFdyaXRlRGF0YSh0eXBlLCBkYXRh
LCAiIik7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBtX2RhdGFNYXAuc2V0KHR5
cGUsIGRhdGEpOwotICAgIGlmICh0eXBlID09IG1pbWVUeXBlVGV4dFVSSUxpc3QpCi0gICAgICAg
IG1fdXJsVGl0bGUgPSAiIjsKLSAgICBlbHNlIGlmICh0eXBlID09IG1pbWVUeXBlVGV4dEhUTUwp
Ci0gICAgICAgIG1faHRtbEJhc2VVUkwgPSBLVVJMKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1dyaXRhYmxlRGF0YU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vV3JpdGFibGVEYXRhT2JqZWN0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGM0NzVkMTU2YjU1MWI5YjUzNzUwZWE1NTFjMjhmNGFiNmJkMGIyNWMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vV3JpdGFibGVEYXRhT2JqZWN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw4
OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6
Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
LSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBXcml0YWJsZURhdGFPYmplY3RfaAotI2RlZmluZSBXcml0YWJsZURh
dGFPYmplY3RfaAotCi0jaW5jbHVkZSAiQ2xpcGJvYXJkLmgiCi0jaW5jbHVkZSAiS1VSTC5oIgot
I2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0j
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gVXNlZCBmb3Igb25lIHdheSBjb21tdW5pY2F0aW9u
IG9mIGRyYWcvZHJvcCBhbmQgY29weS9wYXN0ZSBkYXRhIGZyb20gdGhlCi0vLyByZW5kZXJlciB0
byB0aGUgYnJvd3Nlci4gVGhpcyBpcyBpbnRlbnRlZGVkIHRvIGJlIHVzZWQgaW4gZHJhZ3N0YXJ0
L2NvcHkvY3V0Ci0vLyBldmVudHMuIER1ZSB0byBzaG9ydGNvbWluZ3MsIHdyaXRlcyB0byB0aGUg
cGFzdGVib2FyZCBjYW5ub3QgYmUgcGVyZm9ybWVkCi0vLyBhdG9taWNhbGx5LgotY2xhc3MgV3Jp
dGFibGVEYXRhT2JqZWN0IDogcHVibGljIFJlZkNvdW50ZWQ8V3JpdGFibGVEYXRhT2JqZWN0PiB7
Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V3JpdGFibGVEYXRhT2JqZWN0PiBjcmVh
dGUoQ2xpcGJvYXJkOjpDbGlwYm9hcmRUeXBlKTsKLQotICAgIHZvaWQgY2xlYXJEYXRhKGNvbnN0
IFN0cmluZyYgdHlwZSk7Ci0gICAgdm9pZCBjbGVhckFsbEV4Y2VwdEZpbGVzKCk7Ci0gICAgdm9p
ZCBjbGVhckFsbCgpOwotICAgIGJvb2wgc2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0
IFN0cmluZyYgZGF0YSk7Ci0KLSAgICB2b2lkIHNldFVybFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0
bGUpIHsgbV91cmxUaXRsZSA9IHRpdGxlOyB9Ci0gICAgdm9pZCBzZXRIdG1sQmFzZVVybChjb25z
dCBLVVJMJiBiYXNlVVJMKSB7IG1faHRtbEJhc2VVUkwgPSBiYXNlVVJMOyB9Ci0KLSAgICAvLyBV
c2VkIGZvciB0cmFuc2ZlcnJpbmcgZHJhZyBkYXRhIGZyb20gdGhlIHJlbmRlcmVyIHRvIHRoZSBi
cm93c2VyLgotICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGRhdGFNYXAoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGFNYXA7IH0KLSAgICBTdHJpbmcgdXJsVGl0bGUoKSBjb25zdCB7IHJldHVybiBt
X3VybFRpdGxlOyB9Ci0gICAgS1VSTCBodG1sQmFzZVVSTCgpIGNvbnN0IHsgcmV0dXJuIG1faHRt
bEJhc2VVUkw7IH0KLQotICAgIFN0cmluZyBmaWxlRXh0ZW5zaW9uKCkgY29uc3QgeyByZXR1cm4g
bV9maWxlRXh0ZW5zaW9uOyB9Ci0gICAgU3RyaW5nIGZpbGVDb250ZW50RmlsZW5hbWUoKSBjb25z
dCB7IHJldHVybiBtX2ZpbGVDb250ZW50RmlsZW5hbWU7IH0KLSAgICBQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gZmlsZUNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2ZpbGVDb250ZW50OyB9Ci0g
ICAgdm9pZCBzZXRGaWxlRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZmlsZUV4dGVuc2lvbikgeyBt
X2ZpbGVFeHRlbnNpb24gPSBmaWxlRXh0ZW5zaW9uOyB9Ci0gICAgdm9pZCBzZXRGaWxlQ29udGVu
dEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgZmlsZUNvbnRlbnRGaWxlbmFtZSkgeyBtX2ZpbGVDb250
ZW50RmlsZW5hbWUgPSBmaWxlQ29udGVudEZpbGVuYW1lOyB9Ci0gICAgdm9pZCBzZXRGaWxlQ29u
dGVudChQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZmlsZUNvbnRlbnQpIHsgbV9maWxlQ29udGVu
dCA9IGZpbGVDb250ZW50OyB9Ci0KLXByaXZhdGU6Ci0gICAgZXhwbGljaXQgV3JpdGFibGVEYXRh
T2JqZWN0KENsaXBib2FyZDo6Q2xpcGJvYXJkVHlwZSk7Ci0KLSAgICBDbGlwYm9hcmQ6OkNsaXBi
b2FyZFR5cGUgbV9jbGlwYm9hcmRUeXBlOwotCi0gICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4g
bV9kYXRhTWFwOwotICAgIFN0cmluZyBtX3VybFRpdGxlOwotICAgIEtVUkwgbV9odG1sQmFzZVVS
TDsKLSAgICBTdHJpbmcgbV9maWxlRXh0ZW5zaW9uOwotICAgIFN0cmluZyBtX2ZpbGVDb250ZW50
RmlsZW5hbWU7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9maWxlQ29udGVudDsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IDBiMGFhMGNiN2MzNTFiN2Q1YzM5Y2Q2YjNlYjI1MjViYTkzNTNkMTAuLmQ1NjJiYmNj
YWE3ZWUwODNkMjIzM2I5MjFhYTkzYjFjNmM5ZjVhOWQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDYtMDYgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgW2Nocm9taXVtXSBEZWxldGUgZGVhZCBjbGlwYm9hcmQgY29kZS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyMTEzCisKKyAgICAgICAgKiBz
cmMvV2ViRHJhZ0RhdGEuY3BwOgorCiAyMDExLTA2LTA0ICBOaWNvIFdlYmVyICA8dGhha2lzQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBKYW1lcyBSb2JpbnNvbi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRyYWdEYXRhLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRyYWdEYXRhLmNwcAppbmRleCAwYzFkYzRmMWFjOGJm
ZGJiNGE3NDlmYWU2ZGIyODkzOTE3ZGVhZTg0Li5iYTAxYzU5Y2RmODBkYjRkNDljYjA0ZTE4NDlj
YWJlODI2MTcxNDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJE
cmFnRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRHJhZ0RhdGEu
Y3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiV2ViRHJhZ0RhdGEuaCIKIAogI2luY2x1
ZGUgIkNocm9taXVtRGF0YU9iamVjdC5oIgotI2luY2x1ZGUgIkNocm9taXVtRGF0YU9iamVjdExl
Z2FjeS5oIgogI2luY2x1ZGUgIkNsaXBib2FyZE1pbWVUeXBlcy5oIgogI2luY2x1ZGUgIldlYkRh
dGEuaCIKICNpbmNsdWRlICJXZWJTdHJpbmcuaCIK
</data>
<flag name="review"
          id="89737"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>