<?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>94260</bug_id>
          
          <creation_ts>2012-08-16 15:42:12 -0700</creation_ts>
          <short_desc>Delete ThemeChromiumMac, use ThemeMac in chromium/mac instead</short_desc>
          <delta_ts>2012-08-16 17:10:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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="Nico Weber">thakis</reporter>
          <assigned_to name="Nico Weber">thakis</assigned_to>
          <cc>avi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>697606</commentid>
    <comment_count>0</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-08-16 15:42:12 -0700</bug_when>
    <thetext>Delete ThemeChromiumMac, use ThemeMac in chromium/mac instead</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697615</commentid>
    <comment_count>1</comment_count>
      <attachid>158929</attachid>
    <who name="Nico Weber">thakis</who>
    <bug_when>2012-08-16 15:45:37 -0700</bug_when>
    <thetext>Created attachment 158929
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697644</commentid>
    <comment_count>2</comment_count>
    <who name="Avi Drissman">avi</who>
    <bug_when>2012-08-16 16:12:31 -0700</bug_when>
    <thetext>The original fork notes the changes:

- The import of FlippedView() and its use as the parent view for cell
   rendering.
 - In updateStates() the code to update the cells&apos; inactive state.
 - In paintButton() the code to save/restore the window&apos;s default button cell.
 - The Snow Leopard focus ring bug fix and its use around every call to
   -[NSButtonCell drawWithFrame:inView:].

You&apos;ve indicated that you&apos;ve verified that all the bugs those were workarounds for now work fine with ThemeMac (no, I have no idea what that default button cell one is). So this LGTM!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697685</commentid>
    <comment_count>3</comment_count>
      <attachid>158929</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-16 16:57:16 -0700</bug_when>
    <thetext>Comment on attachment 158929
Patch

Okiedokie</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697706</commentid>
    <comment_count>4</comment_count>
      <attachid>158929</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-16 17:10:42 -0700</bug_when>
    <thetext>Comment on attachment 158929
Patch

Clearing flags on attachment: 158929

Committed r125830: &lt;http://trac.webkit.org/changeset/125830&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>697707</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-16 17:10:45 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158929</attachid>
            <date>2012-08-16 15:45:37 -0700</date>
            <delta_ts>2012-08-16 17:10:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94260-20120816154508.patch</filename>
            <type>text/plain</type>
            <size>41028</size>
            <attacher name="Nico Weber">thakis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1NzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjdjZWY3NGNhNTA3OThh
OGYxY2M3MzgyOGQ1NTQ1OGVjNzFkM2NjNC4uZmExNDBlNjBiZDkzYjFhYzA4ZTgxOTU5MGRkYWUw
MzFhZDBkOTgwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA4LTE2ICBOaWNv
IFdlYmVyICA8dGhha2lzQGNocm9taXVtLm9yZz4KKworICAgICAgICBEZWxldGUgVGhlbWVDaHJv
bWl1bU1hYywgdXNlIFRoZW1lTWFjIGluIGNocm9taXVtL21hYyBpbnN0ZWFkCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDI2MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZW1lQ2hyb21pdW1NYWMgd2Fz
IGludHJvZHVjZWQgd2hlbiBUaGVtZU1hYyBhc3N1bWVkIHRoYXQgYW4KKyAgICAgICAgaW4tcHJv
Y2VzcyBDb2NvYSB2aWV3IGV4aXN0ZWQuIFdpdGggV2ViS2l0MiwgdGhhdCdzIG5vIGxvbmdlciB0
cnVlLAorICAgICAgICBhbmQgdGhlIGZpbGVzIGNhbiBub3cgYmUgbWVyZ2VkLgorCisgICAgICAg
IE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lw
OgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9U
aGVtZUNocm9taXVtTWFjLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
VGhlbWVDaHJvbWl1bU1hYy5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGhl
bWVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpwYWludFN0ZXBwZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VGhlbWVNYWM6OmVuc3VyZWRWaWV3KToKKwogMjAxMi0wOC0xNSAgR3JlZ2cgVGF2YXJl
cyAgPGdtYW5AZ29vZ2xlLmNvbT4KIAogICAgICAgICBNYXJrIFNraWEgYW5kIENvbXBvc2l0b3Ig
Q29udGV4dHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUu
Z3lwIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKaW5kZXggNDRjNDI4
ZmUyMGQwMzUwMDFjNmRmMjE5NGNiNzYwOTE0NzBlNjYxMi4uN2RhOTRkOGJlYjhkNDlkYTY3ZGIx
OTM0MDFmNWFlMDBhM2RiOWY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXAvV2ViQ29yZS5neXAKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5n
eXAKQEAgLTE0NTAsNiArMTQ1MCw3IEBACiAgICAgICAgICAgICAgICMgc3VjaCBhczoKICAgICAg
ICAgICAgICAgIyBjb20uZ29vZ2xlLkNocm9tZVtdIG9iamNbXTogQ2xhc3MgU2Nyb2xsYmFyUHJl
ZnNPYnNlcnZlciBpcyBpbXBsZW1lbnRlZCBpbiBib3RoIC4uLi9Hb29nbGUgQ2hyb21lLmFwcC9D
b250ZW50cy9WZXJzaW9ucy8uLi4vR29vZ2xlIENocm9tZSBIZWxwZXIuYXBwL0NvbnRlbnRzL01h
Y09TLy4uLy4uLy4uL0dvb2dsZSBDaHJvbWUgRnJhbWV3b3JrLmZyYW1ld29yay9Hb29nbGUgQ2hy
b21lIEZyYW1ld29yayBhbmQgL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvV2ViS2l0LmZyYW1l
d29yay9WZXJzaW9ucy9BL0ZyYW1ld29ya3MvV2ViQ29yZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9X
ZWJDb3JlLiBPbmUgb2YgdGhlIHR3byB3aWxsIGJlIHVzZWQuIFdoaWNoIG9uZSBpcyB1bmRlZmlu
ZWQuCiAgICAgICAgICAgICAgICdXZWJDYXNjYWRlTGlzdD1DaHJvbWl1bVdlYkNvcmVPYmpDV2Vi
Q2FzY2FkZUxpc3QnLAorICAgICAgICAgICAgICAnV2ViQ29yZUZsaXBwZWRWaWV3PUNocm9taXVt
V2ViQ29yZU9iakNXZWJDb3JlRmxpcHBlZFZpZXcnLAogICAgICAgICAgICAgICAnV2ViU2Nyb2xs
YmFyUHJlZnNPYnNlcnZlcj1DaHJvbWl1bVdlYkNvcmVPYmpDV2ViU2Nyb2xsYmFyUHJlZnNPYnNl
cnZlcicsCiAgICAgICAgICAgICAgICdXZWJDb3JlUmVuZGVyVGhlbWVOb3RpZmljYXRpb25PYnNl
cnZlcj1DaHJvbWl1bVdlYkNvcmVPYmpDV2ViQ29yZVJlbmRlclRoZW1lTm90aWZpY2F0aW9uT2Jz
ZXJ2ZXInLAogICAgICAgICAgICAgICAnV2ViRm9udENhY2hlPUNocm9taXVtV2ViQ29yZU9iakNX
ZWJGb250Q2FjaGUnLApAQCAtMTczNSw2ICsxNzM2LDggQEAKICAgICAgICAgICAgIFsnaW5jbHVk
ZScsICdwbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWNcXC5tbSQnXSwKICAgICAgICAgICAg
IFsnaW5jbHVkZScsICdwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWNcXC5tbSQnXSwKICAg
ICAgICAgICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9tYWMvU2Nyb2xsRWxhc3RpY2l0eUNvbnRy
b2xsZXJcXC5tbSQnXSwKKyAgICAgICAgICAgIFsnaW5jbHVkZScsICdwbGF0Zm9ybS9tYWMvVGhl
bWVNYWNcXC5oJCddLAorICAgICAgICAgICAgWydpbmNsdWRlJywgJ3BsYXRmb3JtL21hYy9UaGVt
ZU1hY1xcLm1tJCddLAogICAgICAgICAgICAgWydpbmNsdWRlJywgJ3BsYXRmb3JtL21hYy9XZWJD
b3JlU3lzdGVtSW50ZXJmYWNlXFwubW0kJ10sCiAgICAgICAgICAgICBbJ2luY2x1ZGUnLCAncGxh
dGZvcm0vbWFjL1dlYkNvcmVUZXh0UmVuZGVyZXJcXC5tbSQnXSwKICAgICAgICAgICAgIFsnaW5j
bHVkZScsICdwbGF0Zm9ybS90ZXh0L21hYy9TaGFwZUFyYWJpY1xcLmMkJ10sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKaW5kZXggMTA2M2YwOTE4YzU5ZmVkMGM2OTdjMGY2NGQ1MDc0MDRmMTk2MjIwNS4uZDIzYmM4
MWUxZjE3ZWFhYWNkOGQ3OTJkNDVlYzlhODYyYWE3NGRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
MzQ0Myw4ICszNDQzLDYgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9TdWRkZW5U
ZXJtaW5hdGlvbkNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0v
U3lzdGVtVGltZUNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0v
VGVtcG9yYXJ5TGlua1N0dWJzLmNwcCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0v
VGhlbWVDaHJvbWl1bU1hYy5oJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9UaGVt
ZUNocm9taXVtTWFjLm1tJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9UcmFjZUV2
ZW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Zpc2l0ZWRMaW5rc0Nocm9t
aXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vV2lkZ2V0Q2hyb21pdW0u
Y3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1RoZW1l
Q2hyb21pdW1NYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1RoZW1lQ2hy
b21pdW1NYWMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTU4MGQxZDVmOTc3ZmEw
ODM1NzVjMTQ4ZWIwZDgyYTQzYjUwMjRlOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9UaGVtZUNo
cm9taXVtTWFjLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBUaGVtZUNocm9taXVtTWFj
X2gKLSNkZWZpbmUgVGhlbWVDaHJvbWl1bU1hY19oCi0KLSNpbmNsdWRlICJUaGVtZS5oIgotCi0v
LyBUaGlzIGZpbGUgKGFuZCBpdHMgYXNzb2NpYXRlZCAubW0gZmlsZSkgaXMgYSBjbG9uZSBvZiBU
aGVtZU1hYy5oLiBTZWUKLS8vIHRoZSAubW0gZmlsZSBmb3IgZGV0YWlscy4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBUaGVtZUNocm9taXVtTWFjIDogcHVibGljIFRoZW1lIHsKLXB1
YmxpYzoKLSAgICBUaGVtZUNocm9taXVtTWFjKCkgeyB9Ci0gICAgdmlydHVhbCB+VGhlbWVDaHJv
bWl1bU1hYygpIHsgfQotICAgIAotICAgIHZpcnR1YWwgaW50IGJhc2VsaW5lUG9zaXRpb25BZGp1
c3RtZW50KENvbnRyb2xQYXJ0KSBjb25zdDsKLQotICAgIHZpcnR1YWwgRm9udERlc2NyaXB0aW9u
IGNvbnRyb2xGb250KENvbnRyb2xQYXJ0LCBjb25zdCBGb250JiwgZmxvYXQgem9vbUZhY3Rvcikg
Y29uc3Q7Ci0gICAgCi0gICAgdmlydHVhbCBMZW5ndGhTaXplIGNvbnRyb2xTaXplKENvbnRyb2xQ
YXJ0LCBjb25zdCBGb250JiwgY29uc3QgTGVuZ3RoU2l6ZSYsIGZsb2F0IHpvb21GYWN0b3IpIGNv
bnN0OwotICAgIHZpcnR1YWwgTGVuZ3RoU2l6ZSBtaW5pbXVtQ29udHJvbFNpemUoQ29udHJvbFBh
cnQsIGNvbnN0IEZvbnQmLCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdDsKLQotICAgIHZpcnR1YWwg
TGVuZ3RoQm94IGNvbnRyb2xQYWRkaW5nKENvbnRyb2xQYXJ0LCBjb25zdCBGb250JiwgY29uc3Qg
TGVuZ3RoQm94JiB6b29tZWRCb3gsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0OwotICAgIHZpcnR1
YWwgTGVuZ3RoQm94IGNvbnRyb2xCb3JkZXIoQ29udHJvbFBhcnQsIGNvbnN0IEZvbnQmLCBjb25z
dCBMZW5ndGhCb3gmIHpvb21lZEJveCwgZmxvYXQgem9vbUZhY3RvcikgY29uc3Q7Ci0KLSAgICB2
aXJ0dWFsIGJvb2wgY29udHJvbFJlcXVpcmVzUHJlV2hpdGVTcGFjZShDb250cm9sUGFydCBwYXJ0
KSBjb25zdCB7IHJldHVybiBwYXJ0ID09IFB1c2hCdXR0b25QYXJ0OyB9Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnQoQ29udHJvbFBhcnQsIENvbnRyb2xTdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IEludFJlY3QmLCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KikgY29uc3Q7Ci0g
ICAgdmlydHVhbCB2b2lkIGluZmxhdGVDb250cm9sUGFpbnRSZWN0KENvbnRyb2xQYXJ0LCBDb250
cm9sU3RhdGVzLCBJbnRSZWN0JiwgZmxvYXQgem9vbUZhY3RvcikgY29uc3Q7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBUaGVtZUNocm9taXVtTWFjX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1RoZW1lQ2hyb21pdW1NYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9UaGVtZUNocm9taXVtTWFjLm1t
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzE4ZDA1NGFkZWNjMDllMTJmZGUwNTZm
NmM5MGE1NjRlMGNlNmQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1RoZW1lQ2hyb21pdW1NYWMu
bW0KKysrIC9kZXYvbnVsbApAQCAtMSw4MTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJUaGVt
ZUNocm9taXVtTWFjLmgiCi0KLSNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgotI2ltcG9ydCAi
R3JhcGhpY3NDb250ZXh0LmgiCi0jaW1wb3J0ICJMb2NhbEN1cnJlbnRHcmFwaGljc0NvbnRleHQu
aCIKLSNpbXBvcnQgIlNjcm9sbFZpZXcuaCIKLSNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZh
Y2UuaCIKLSNpbXBvcnQgPENhcmJvbi9DYXJib24uaD4KLSNpbXBvcnQgPG9iamMvcnVudGltZS5o
PgotI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEuaCIKLSNpbmNsdWRlICJza2lhL2V4dC9z
a2lhX3V0aWxzX21hYy5oIgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLQotdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKLQotLy8gVGhpcyBmaWxlIChhbmQgaXRzIGFzc29jaWF0ZWQgLmggZmls
ZSkgaXMgYSBjbG9uZSBvZiBUaGVtZU1hYy5tbS4KLS8vIEJlY2F1c2UgdGhlIG9yaWdpbmFsIGZp
bGUgaXMgZGVzaWduZWQgdG8gcnVuIGluLXByb2Nlc3MgaW5zaWRlIGEgQ29jb2EgdmlldywKLS8v
IHdlIG11c3QgbWFpbnRhaW4gYSBmb3JrLiBQbGVhc2UgbWFpbnRhaW4gdGhpcyBmaWxlIGJ5IHBl
cmZvcm1pbmcgcGFyYWxsZWwKLS8vIGNoYW5nZXMgdG8gaXQuCi0vLwotLy8gVGhlIG9ubHkgY2hh
bmdlcyBmcm9tIFRoZW1lTWFjIHNob3VsZCBiZToKLS8vIC0gVGhlIGNsYXNzbmFtZSBjaGFuZ2Ug
ZnJvbSBUaGVtZU1hYyB0byBUaGVtZUNocm9taXVtTWFjLgotLy8gLSBUaGUgaW1wb3J0IG9mIEZs
aXBwZWRWaWV3KCkgYW5kIGl0cyB1c2UgYXMgdGhlIHBhcmVudCB2aWV3IGZvciBjZWxsCi0vLyAg
IHJlbmRlcmluZy4KLS8vIC0gSW4gdXBkYXRlU3RhdGVzKCkgdGhlIGNvZGUgdG8gdXBkYXRlIHRo
ZSBjZWxscycgaW5hY3RpdmUgc3RhdGUuCi0vLyAtIEluIHBhaW50QnV0dG9uKCkgdGhlIGNvZGUg
dG8gc2F2ZS9yZXN0b3JlIHRoZSB3aW5kb3cncyBkZWZhdWx0IGJ1dHRvbiBjZWxsLgotLy8gLSBU
aGUgU25vdyBMZW9wYXJkIGZvY3VzIHJpbmcgYnVnIGZpeCBhbmQgaXRzIHVzZSBhcm91bmQgZXZl
cnkgY2FsbCB0bwotLy8gICAtW05TQnV0dG9uQ2VsbCBkcmF3V2l0aEZyYW1lOmluVmlldzpdLgot
Ly8KLS8vIEZvciBhbGwgb3RoZXIgZGlmZmVyZW5jZXMsIGlmIGl0IHdhcyBpbnRyb2R1Y2VkIGlu
IHRoaXMgZmlsZSwgdGhlbiB0aGUKLS8vIG1haW50YWluZXIgZm9yZ290IHRvIGluY2x1ZGUgaXQg
aW4gdGhlIGxpc3Q7IG90aGVyd2lzZSBpdCBpcyBhbiB1cGRhdGUgdGhhdAotLy8gc2hvdWxkIGhh
dmUgYmVlbiBhcHBsaWVkIHRvIHRoaXMgZmlsZSBidXQgd2FzIG5vdC4KLQotLy8gRklYTUU6IERl
ZmF1bHQgYnV0dG9ucyByZWFsbHkgc2hvdWxkIGJlIG1vcmUgbGlrZSBwdXNoIGJ1dHRvbnMgYW5k
IG5vdCBsaWtlIGJ1dHRvbnMuCi0KLS8vIC0tLSBTVEFSVCBmaXggZm9yIFNub3cgTGVvcGFyZCBm
b2N1cyByaW5nIGJ1ZyAtLS0KLQotLy8gVGhlcmUgaXMgYSBidWcgaW4gdGhlIENvY29hIGZvY3Vz
IHJpbmcgZHJhd2luZyBjb2RlLiBUaGUgY29kZSBjYWxscyArW05TVmlldwotLy8gZm9jdXNWaWV3
XSAodG8gZ2V0IHRoZSBjdXJyZW50bHkgZm9jdXNlZCB2aWV3KSBhbmQgdGhlbiBjYWxscyBhbiBO
U1JlY3QtCi0vLyByZXR1cm5pbmcgbWV0aG9kIG9uIHRoYXQgdmlldyB0byBvYnRhaW4gYSBjbGlw
cGluZyByZWN0LiBIb3dldmVyLCBpZiB0aGVyZSBpcwotLy8gbm8gZm9jdXNlZCB2aWV3IChhcyB0
aGVyZSB3b24ndCBiZSBpZiB0aGUgZGVzdGluYXRpb24gaXMgYSBjb250ZXh0KSwgdGhlIHJlY3QK
LS8vIHJldHVybmVkIGZyb20gdGhlIG1ldGhvZCBpbnZvY2F0aW9uIG9uIG5pbCBpcyBnYXJiYWdl
LgotLy8KLS8vIFRoZSBnYXJiYWdlIGZvcnR1bmF0ZWx5IGRvZXMgbm90IGNsaXAgdGhlIGZvY3Vz
IHJpbmcgb24gTGVvcGFyZCwgYnV0Ci0vLyB1bmZvcnR1bmF0ZWx5IGRvZXMgc28gb24gU25vdyBM
ZW9wYXJkLiBUaGVyZWZvcmUsIGlmIGEgcnVudGltZSB0ZXN0IHNob3dzCi0vLyB0aGF0IGZvY3Vz
IHJpbmcgZHJhd2luZyBmYWlscywgd2Ugc3dpenpsZSBOU1ZpZXcgdG8gZW5zdXJlIGl0IHJldHVy
bnMgYSB2YWxpZAotLy8gdmlldyB3aXRoIGEgdmFsaWQgY2xpcHBpbmcgcmVjdGFuZ2xlLgotLy8K
LS8vIEZJWE1FOiBBZnRlciB0aGUgcmVmZXJlbmNlZCBidWcgaXMgZml4ZWQgb24gYWxsIHN1cHBv
cnRlZCBwbGF0Zm9ybXMsIHJlbW92ZQotLy8gdGhpcyBjb2RlLgotLy8KLS8vIFJlZmVyZW5jZXM6
Ci0vLyAgPGh0dHA6Ly9jcmJ1Zy5jb20vMjc0OTM+Ci0vLyAgPHJkYXI6Ly9wcm9ibGVtLzc2MDQw
NTE+ICg8aHR0cDovL29wZW5yYWRhci5hcHBzcG90LmNvbS83NjA0MDUxPikKLQotQGludGVyZmFj
ZSBUQ01WaXNpYmxlVmlldyA6IE5TVmlldwotCi1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBUQ01W
aXNpYmxlVmlldwotCi0tIChzdHJ1Y3QgQ0dSZWN0KV9mb2N1c1JpbmdWaXNpYmxlUmVjdAotewot
ICAgIHJldHVybiBDR1JlY3RaZXJvOwotfQotCi0tIChpZClfZm9jdXNSaW5nQ2xpcEFuY2VzdG9y
Ci17Ci0gICAgcmV0dXJuIHNlbGY7Ci19Ci0KLUBlbmQKLQotQGludGVyZmFjZSBOU1ZpZXcgKFRD
TUludGVycG9zaW5nKQotKyAoTlNWaWV3ICopVENNSW50ZXJwb3NpbmdfZm9jdXNWaWV3OwotQGVu
ZAotCi1uYW1lc3BhY2UgRm9jdXNJbmRpY2F0aW9uRml4IHsKLQotYm9vbCBjdXJyZW50T1NIYXNT
ZXRGb2N1c1JpbmdTdHlsZUluQml0bWFwQnVnKCkKLXsKLSAgICBVSW50MzIgcGl4ZWwgPSAwOwot
ICAgIFVJbnQzMiogcGl4ZWxQbGFuZSA9ICZwaXhlbDsKLSAgICBVSW50MzIqKiBwaXhlbFBsYW5l
cyA9ICZwaXhlbFBsYW5lOwotICAgIE5TQml0bWFwSW1hZ2VSZXAgKmJpdG1hcCA9IFtbTlNCaXRt
YXBJbWFnZVJlcCBhbGxvY10gaW5pdFdpdGhCaXRtYXBEYXRhUGxhbmVzOihVSW50OCoqKXBpeGVs
UGxhbmVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBpeGVsc1dpZGU6MQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaXhlbHNI
aWdoOjEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYml0c1BlclNhbXBsZTo4Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVzUGVyUGl4
ZWw6NAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGhhc0FscGhhOllFUwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUGxh
bmFyOk5PCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29sb3JTcGFjZU5hbWU6TlNDYWxpYnJhdGVkUkdCQ29sb3JTcGFj
ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYml0bWFwRm9ybWF0Ok5TQWxwaGFGaXJzdEJpdG1hcEZvcm1hdAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJ5dGVzUGVyUm93OjQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpdHNQZXJQaXhlbDozMl07Ci0g
ICAgW05TR3JhcGhpY3NDb250ZXh0IHNhdmVHcmFwaGljc1N0YXRlXTsKLSAgICBbTlNHcmFwaGlj
c0NvbnRleHQgc2V0Q3VycmVudENvbnRleHQ6W05TR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29u
dGV4dFdpdGhCaXRtYXBJbWFnZVJlcDpiaXRtYXBdXTsKLSAgICBOU1NldEZvY3VzUmluZ1N0eWxl
KE5TRm9jdXNSaW5nT25seSk7Ci0gICAgTlNSZWN0RmlsbChOU01ha2VSZWN0KDAsIDAsIDEsIDEp
KTsKLSAgICBbTlNHcmFwaGljc0NvbnRleHQgcmVzdG9yZUdyYXBoaWNzU3RhdGVdOwotICAgIFti
aXRtYXAgcmVsZWFzZV07Ci0KLSAgICByZXR1cm4gIXBpeGVsOwotfQotCi1ib29sIHN3aXp6bGVG
b2N1c1ZpZXcoKQotewotICAgIGlmICghY3VycmVudE9TSGFzU2V0Rm9jdXNSaW5nU3R5bGVJbkJp
dG1hcEJ1ZygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBDbGFzcyBuc3ZpZXcgPSBb
TlNWaWV3IGNsYXNzXTsKLSAgICBNZXRob2QgbTEgPSBjbGFzc19nZXRDbGFzc01ldGhvZChuc3Zp
ZXcsIEBzZWxlY3Rvcihmb2N1c1ZpZXcpKTsKLSAgICBNZXRob2QgbTIgPSBjbGFzc19nZXRDbGFz
c01ldGhvZChuc3ZpZXcsIEBzZWxlY3RvcihUQ01JbnRlcnBvc2luZ19mb2N1c1ZpZXcpKTsKLSAg
ICBpZiAobTEgJiYgbTIpIHsKLSAgICAgICAgbWV0aG9kX2V4Y2hhbmdlSW1wbGVtZW50YXRpb25z
KG0xLCBtMik7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxz
ZTsKLX0KLQotc3RhdGljIGJvb2wgaW50ZXJwb3NlID0gZmFsc2U7Ci0KLS8vIEEgY2xhc3MgdG8g
cmVzdHJpY3QgdGhlIGFtb3VudCBvZiB0aW1lIHNwZW50IG1lc3Npbmcgd2l0aCBpbnRlcnBvc2lu
Zy4gSXQKLS8vIG9ubHkgc3RhY2tzIG9uZS1kZWVwLgotY2xhc3MgU2NvcGVkRml4ZXIgewotcHVi
bGljOgotICAgIFNjb3BlZEZpeGVyKCkKLSAgICB7Ci0gICAgICAgIHN0YXRpYyBib29sIHN3aXp6
bGVkID0gc3dpenpsZUZvY3VzVmlldygpOwotICAgICAgICBpbnRlcnBvc2UgPSBzd2l6emxlZDsK
LSAgICB9Ci0KLSAgICB+U2NvcGVkRml4ZXIoKQotICAgIHsKLSAgICAgICAgaW50ZXJwb3NlID0g
ZmFsc2U7Ci0gICAgfQotfTsKLQotfSAgLy8gbmFtZXNwYWNlIEZvY3VzSW5kaWNhdGlvbkZpeAot
Ci1AaW1wbGVtZW50YXRpb24gTlNWaWV3IChUQ01JbnRlcnBvc2luZykKLQotKyAoTlNWaWV3ICop
VENNSW50ZXJwb3NpbmdfZm9jdXNWaWV3Ci17Ci0gICAgTlNWaWV3ICp2aWV3ID0gW3NlbGYgVENN
SW50ZXJwb3NpbmdfZm9jdXNWaWV3XTsgIC8vIGNhbGwgb3JpZ2luYWwgKHdhcyBzd2l6emxlZCkK
LSAgICBpZiAoIXZpZXcgJiYgRm9jdXNJbmRpY2F0aW9uRml4OjppbnRlcnBvc2UpIHsKLSAgICAg
ICAgc3RhdGljIFRDTVZpc2libGVWaWV3KiBmaXhlZFZpZXcgPSBbW1RDTVZpc2libGVWaWV3IGFs
bG9jXSBpbml0XTsKLSAgICAgICAgdmlldyA9IGZpeGVkVmlldzsKLSAgICB9Ci0KLSAgICByZXR1
cm4gdmlldzsKLX0KLQotQGVuZAotCi0vLyAtLS0gRU5EIGZpeCBmb3IgU25vdyBMZW9wYXJkIGZv
Y3VzIHJpbmcgYnVnIC0tLQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIFBpY2sgdXAgdXRp
bGl0eSBmdW5jdGlvbiBmcm9tIFJlbmRlclRoZW1lQ2hyb21pdW1NYWMuCi1leHRlcm4gTlNWaWV3
KiBGbGlwcGVkVmlldygpOwotCi1lbnVtIHsKLSAgICB0b3BNYXJnaW4sCi0gICAgcmlnaHRNYXJn
aW4sCi0gICAgYm90dG9tTWFyZ2luLAotICAgIGxlZnRNYXJnaW4KLX07Ci0KLVRoZW1lKiBwbGF0
Zm9ybVRoZW1lKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFRoZW1lQ2hyb21pdW1NYWMs
IHRoZW1lTWFjLCAoKSk7Ci0gICAgcmV0dXJuICZ0aGVtZU1hYzsKLX0KLQotLy8gSGVscGVyIGZ1
bmN0aW9ucyB1c2VkIGJ5IGEgYnVuY2ggb2YgZGlmZmVyZW50IGNvbnRyb2wgcGFydHMuCi0KLXN0
YXRpYyBOU0NvbnRyb2xTaXplIGNvbnRyb2xTaXplRm9yRm9udChjb25zdCBGb250JiBmb250KQot
ewotICAgIGludCBmb250U2l6ZSA9IGZvbnQucGl4ZWxTaXplKCk7Ci0gICAgaWYgKGZvbnRTaXpl
ID49IDE2KQotICAgICAgICByZXR1cm4gTlNSZWd1bGFyQ29udHJvbFNpemU7Ci0gICAgaWYgKGZv
bnRTaXplID49IDExKQotICAgICAgICByZXR1cm4gTlNTbWFsbENvbnRyb2xTaXplOwotICAgIHJl
dHVybiBOU01pbmlDb250cm9sU2l6ZTsKLX0KLQotc3RhdGljIExlbmd0aFNpemUgc2l6ZUZyb21O
U0NvbnRyb2xTaXplKE5TQ29udHJvbFNpemUgbnNDb250cm9sU2l6ZSwgY29uc3QgTGVuZ3RoU2l6
ZSYgem9vbWVkU2l6ZSwgZmxvYXQgem9vbUZhY3RvciwgY29uc3QgSW50U2l6ZSogc2l6ZXMpCi17
Ci0gICAgSW50U2l6ZSBjb250cm9sU2l6ZSA9IHNpemVzW25zQ29udHJvbFNpemVdOwotICAgIGlm
ICh6b29tRmFjdG9yICE9IDEuMGYpCi0gICAgICAgIGNvbnRyb2xTaXplID0gSW50U2l6ZShjb250
cm9sU2l6ZS53aWR0aCgpICogem9vbUZhY3RvciwgY29udHJvbFNpemUuaGVpZ2h0KCkgKiB6b29t
RmFjdG9yKTsKLSAgICBMZW5ndGhTaXplIHJlc3VsdCA9IHpvb21lZFNpemU7Ci0gICAgaWYgKHpv
b21lZFNpemUud2lkdGgoKS5pc0ludHJpbnNpY09yQXV0bygpICYmIGNvbnRyb2xTaXplLndpZHRo
KCkgPiAwKQotICAgICAgICByZXN1bHQuc2V0V2lkdGgoTGVuZ3RoKGNvbnRyb2xTaXplLndpZHRo
KCksIEZpeGVkKSk7Ci0gICAgaWYgKHpvb21lZFNpemUuaGVpZ2h0KCkuaXNJbnRyaW5zaWNPckF1
dG8oKSAmJiBjb250cm9sU2l6ZS5oZWlnaHQoKSA+IDApCi0gICAgICAgIHJlc3VsdC5zZXRIZWln
aHQoTGVuZ3RoKGNvbnRyb2xTaXplLmhlaWdodCgpLCBGaXhlZCkpOwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLXN0YXRpYyBMZW5ndGhTaXplIHNpemVGcm9tRm9udChjb25zdCBGb250JiBmb250
LCBjb25zdCBMZW5ndGhTaXplJiB6b29tZWRTaXplLCBmbG9hdCB6b29tRmFjdG9yLCBjb25zdCBJ
bnRTaXplKiBzaXplcykKLXsKLSAgICByZXR1cm4gc2l6ZUZyb21OU0NvbnRyb2xTaXplKGNvbnRy
b2xTaXplRm9yRm9udChmb250KSwgem9vbWVkU2l6ZSwgem9vbUZhY3Rvciwgc2l6ZXMpOwotfQot
Ci1zdGF0aWMgQ29udHJvbFNpemUgY29udHJvbFNpemVGcm9tUGl4ZWxTaXplKGNvbnN0IEludFNp
emUqIHNpemVzLCBjb25zdCBJbnRTaXplJiBtaW5ab29tZWRTaXplLCBmbG9hdCB6b29tRmFjdG9y
KQotewotICAgIGlmIChtaW5ab29tZWRTaXplLndpZHRoKCkgPj0gc3RhdGljX2Nhc3Q8aW50Pihz
aXplc1tOU1JlZ3VsYXJDb250cm9sU2l6ZV0ud2lkdGgoKSAqIHpvb21GYWN0b3IpICYmCi0gICAg
ICAgIG1pblpvb21lZFNpemUuaGVpZ2h0KCkgPj0gc3RhdGljX2Nhc3Q8aW50PihzaXplc1tOU1Jl
Z3VsYXJDb250cm9sU2l6ZV0uaGVpZ2h0KCkgKiB6b29tRmFjdG9yKSkKLSAgICAgICAgcmV0dXJu
IE5TUmVndWxhckNvbnRyb2xTaXplOwotICAgIGlmIChtaW5ab29tZWRTaXplLndpZHRoKCkgPj0g
c3RhdGljX2Nhc3Q8aW50PihzaXplc1tOU1NtYWxsQ29udHJvbFNpemVdLndpZHRoKCkgKiB6b29t
RmFjdG9yKSAmJgotICAgICAgICBtaW5ab29tZWRTaXplLmhlaWdodCgpID49IHN0YXRpY19jYXN0
PGludD4oc2l6ZXNbTlNTbWFsbENvbnRyb2xTaXplXS5oZWlnaHQoKSAqIHpvb21GYWN0b3IpKQot
ICAgICAgICByZXR1cm4gTlNTbWFsbENvbnRyb2xTaXplOwotICAgIHJldHVybiBOU01pbmlDb250
cm9sU2l6ZTsKLX0KLQotc3RhdGljIHZvaWQgc2V0Q29udHJvbFNpemUoTlNDZWxsKiBjZWxsLCBj
b25zdCBJbnRTaXplKiBzaXplcywgY29uc3QgSW50U2l6ZSYgbWluWm9vbWVkU2l6ZSwgZmxvYXQg
em9vbUZhY3RvcikKLXsKLSAgICBDb250cm9sU2l6ZSBzaXplID0gY29udHJvbFNpemVGcm9tUGl4
ZWxTaXplKHNpemVzLCBtaW5ab29tZWRTaXplLCB6b29tRmFjdG9yKTsKLSAgICBpZiAoc2l6ZSAh
PSBbY2VsbCBjb250cm9sU2l6ZV0pIC8vIE9ubHkgdXBkYXRlIGlmIHdlIGhhdmUgdG8sIHNpbmNl
IEFwcEtpdCBkb2VzIHdvcmsgZXZlbiBpZiB0aGUgc2l6ZSBpcyB0aGUgc2FtZS4KLSAgICAgICAg
W2NlbGwgc2V0Q29udHJvbFNpemU6KE5TQ29udHJvbFNpemUpc2l6ZV07Ci19Ci0KLXN0YXRpYyB2
b2lkIHVwZGF0ZVN0YXRlcyhOU0NlbGwqIGNlbGwsIENvbnRyb2xTdGF0ZXMgc3RhdGVzKQotewot
ICAgIC8vIEhvdmVyIHN0YXRlIGlzIG5vdCBzdXBwb3J0ZWQgYnkgQXF1YS4KLQotICAgIC8vIFBy
ZXNzZWQgc3RhdGUKLSAgICBib29sIG9sZFByZXNzZWQgPSBbY2VsbCBpc0hpZ2hsaWdodGVkXTsK
LSAgICBib29sIHByZXNzZWQgPSBzdGF0ZXMgJiBQcmVzc2VkU3RhdGU7Ci0gICAgaWYgKHByZXNz
ZWQgIT0gb2xkUHJlc3NlZCkKLSAgICAgICAgW2NlbGwgc2V0SGlnaGxpZ2h0ZWQ6cHJlc3NlZF07
Ci0KLSAgICAvLyBFbmFibGVkIHN0YXRlCi0gICAgYm9vbCBvbGRFbmFibGVkID0gW2NlbGwgaXNF
bmFibGVkXTsKLSAgICBib29sIGVuYWJsZWQgPSBzdGF0ZXMgJiBFbmFibGVkU3RhdGU7Ci0gICAg
aWYgKGVuYWJsZWQgIT0gb2xkRW5hYmxlZCkKLSAgICAgICAgW2NlbGwgc2V0RW5hYmxlZDplbmFi
bGVkXTsKLQotICAgIC8vIEZvY3VzZWQgc3RhdGUKLSAgICBib29sIG9sZEZvY3VzZWQgPSBbY2Vs
bCBzaG93c0ZpcnN0UmVzcG9uZGVyXTsKLSAgICBib29sIGZvY3VzZWQgPSBzdGF0ZXMgJiBGb2N1
c1N0YXRlOwotICAgIGlmIChmb2N1c2VkICE9IG9sZEZvY3VzZWQpCi0gICAgICAgIFtjZWxsIHNl
dFNob3dzRmlyc3RSZXNwb25kZXI6Zm9jdXNlZF07Ci0KLSAgICAvLyBDaGVja2VkIGFuZCBJbmRl
dGVybWluYXRlCi0gICAgYm9vbCBvbGRJbmRldGVybWluYXRlID0gW2NlbGwgc3RhdGVdID09IE5T
TWl4ZWRTdGF0ZTsKLSAgICBib29sIGluZGV0ZXJtaW5hdGUgPSAoc3RhdGVzICYgSW5kZXRlcm1p
bmF0ZVN0YXRlKTsKLSAgICBib29sIGNoZWNrZWQgPSBzdGF0ZXMgJiBDaGVja2VkU3RhdGU7Ci0g
ICAgYm9vbCBvbGRDaGVja2VkID0gW2NlbGwgc3RhdGVdID09IE5TT25TdGF0ZTsKLSAgICBpZiAo
b2xkSW5kZXRlcm1pbmF0ZSAhPSBpbmRldGVybWluYXRlIHx8IGNoZWNrZWQgIT0gb2xkQ2hlY2tl
ZCkKLSAgICAgICAgW2NlbGwgc2V0U3RhdGU6aW5kZXRlcm1pbmF0ZSA/IE5TTWl4ZWRTdGF0ZSA6
IChjaGVja2VkID8gTlNPblN0YXRlIDogTlNPZmZTdGF0ZSldOwotCi0gICAgLy8gV2luZG93IElu
YWN0aXZlIHN0YXRlCi0gICAgTlNDb250cm9sVGludCBvbGRUaW50ID0gW2NlbGwgY29udHJvbFRp
bnRdOwotICAgIGJvb2wgd2luZG93SW5hY3RpdmUgPSAoc3RhdGVzICYgV2luZG93SW5hY3RpdmVT
dGF0ZSk7Ci0gICAgTlNDb250cm9sVGludCB0aW50ID0gd2luZG93SW5hY3RpdmUgPyBzdGF0aWNf
Y2FzdDxOU0NvbnRyb2xUaW50PihOU0NsZWFyQ29udHJvbFRpbnQpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgOiBbTlNDb2xvciBjdXJyZW50Q29udHJvbFRpbnRdOwot
ICAgIGlmICh0aW50ICE9IG9sZFRpbnQpCi0gICAgICAgIFtjZWxsIHNldENvbnRyb2xUaW50OnRp
bnRdOwotfQotCi1zdGF0aWMgVGhlbWVEcmF3U3RhdGUgY29udmVydENvbnRyb2xTdGF0ZXNUb1Ro
ZW1lRHJhd1N0YXRlKFRoZW1lQnV0dG9uS2luZCBraW5kLCBDb250cm9sU3RhdGVzIHN0YXRlcykK
LXsKLSAgICBpZiAoc3RhdGVzICYgUmVhZE9ubHlTdGF0ZSkKLSAgICAgICAgcmV0dXJuIGtUaGVt
ZVN0YXRlVW5hdmFpbGFibGVJbmFjdGl2ZTsKLSAgICBpZiAoIShzdGF0ZXMgJiBFbmFibGVkU3Rh
dGUpKQotICAgICAgICByZXR1cm4ga1RoZW1lU3RhdGVVbmF2YWlsYWJsZUluYWN0aXZlOwotCi0g
ICAgLy8gRG8gbm90IHByb2Nlc3MgUHJlc3NlZFN0YXRlIGlmICFFbmFibGVkU3RhdGUgb3IgUmVh
ZE9ubHlTdGF0ZS4KLSAgICBpZiAoc3RhdGVzICYgUHJlc3NlZFN0YXRlKSB7Ci0gICAgICAgIGlm
IChraW5kID09IGtUaGVtZUluY0RlY0J1dHRvbiB8fCBraW5kID09IGtUaGVtZUluY0RlY0J1dHRv
blNtYWxsIHx8IGtpbmQgPT0ga1RoZW1lSW5jRGVjQnV0dG9uTWluaSkKLSAgICAgICAgICAgIHJl
dHVybiBzdGF0ZXMgJiBTcGluVXBTdGF0ZSA/IGtUaGVtZVN0YXRlUHJlc3NlZFVwIDoga1RoZW1l
U3RhdGVQcmVzc2VkRG93bjsKLSAgICAgICAgcmV0dXJuIGtUaGVtZVN0YXRlUHJlc3NlZDsKLSAg
ICB9Ci0gICAgcmV0dXJuIGtUaGVtZVN0YXRlQWN0aXZlOwotfQotCi1zdGF0aWMgSW50UmVjdCBp
bmZsYXRlUmVjdChjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBjb25zdCBJbnRTaXplJiB6b29t
ZWRTaXplLCBjb25zdCBpbnQqIG1hcmdpbnMsIGZsb2F0IHpvb21GYWN0b3IpCi17Ci0gICAgLy8g
T25seSBkbyB0aGUgaW5mbGF0aW9uIGlmIHRoZSBhdmFpbGFibGUgd2lkdGgvaGVpZ2h0IGFyZSB0
b28gc21hbGwuICBPdGhlcndpc2UgdHJ5IHRvCi0gICAgLy8gZml0IHRoZSBnbG93L2NoZWNrIHNw
YWNlIGludG8gdGhlIGF2YWlsYWJsZSBib3gncyB3aWR0aC9oZWlnaHQuCi0gICAgaW50IHdpZHRo
RGVsdGEgPSB6b29tZWRSZWN0LndpZHRoKCkgLSAoem9vbWVkU2l6ZS53aWR0aCgpICsgbWFyZ2lu
c1tsZWZ0TWFyZ2luXSAqIHpvb21GYWN0b3IgKyBtYXJnaW5zW3JpZ2h0TWFyZ2luXSAqIHpvb21G
YWN0b3IpOwotICAgIGludCBoZWlnaHREZWx0YSA9IHpvb21lZFJlY3QuaGVpZ2h0KCkgLSAoem9v
bWVkU2l6ZS5oZWlnaHQoKSArIG1hcmdpbnNbdG9wTWFyZ2luXSAqIHpvb21GYWN0b3IgKyBtYXJn
aW5zW2JvdHRvbU1hcmdpbl0gKiB6b29tRmFjdG9yKTsKLSAgICBJbnRSZWN0IHJlc3VsdCh6b29t
ZWRSZWN0KTsKLSAgICBpZiAod2lkdGhEZWx0YSA8IDApIHsKLSAgICAgICAgcmVzdWx0LnNldFgo
cmVzdWx0LngoKSAtIG1hcmdpbnNbbGVmdE1hcmdpbl0gKiB6b29tRmFjdG9yKTsKLSAgICAgICAg
cmVzdWx0LnNldFdpZHRoKHJlc3VsdC53aWR0aCgpIC0gd2lkdGhEZWx0YSk7Ci0gICAgfQotICAg
IGlmIChoZWlnaHREZWx0YSA8IDApIHsKLSAgICAgICAgcmVzdWx0LnNldFkocmVzdWx0LnkoKSAt
IG1hcmdpbnNbdG9wTWFyZ2luXSAqIHpvb21GYWN0b3IpOwotICAgICAgICByZXN1bHQuc2V0SGVp
Z2h0KHJlc3VsdC5oZWlnaHQoKSAtIGhlaWdodERlbHRhKTsKLSAgICB9Ci0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotLy8gQ2hlY2tib3hlcwotCi1zdGF0aWMgY29uc3QgSW50U2l6ZSogY2hlY2ti
b3hTaXplcygpCi17Ci0gICAgc3RhdGljIGNvbnN0IEludFNpemUgc2l6ZXNbM10gPSB7IEludFNp
emUoMTQsIDE0KSwgSW50U2l6ZSgxMiwgMTIpLCBJbnRTaXplKDEwLCAxMCkgfTsKLSAgICByZXR1
cm4gc2l6ZXM7Ci19Ci0KLXN0YXRpYyBjb25zdCBpbnQqIGNoZWNrYm94TWFyZ2lucyhOU0NvbnRy
b2xTaXplIGNvbnRyb2xTaXplKQotewotICAgIHN0YXRpYyBjb25zdCBpbnQgbWFyZ2luc1szXVs0
XSA9Ci0gICAgewotICAgICAgICB7IDMsIDQsIDQsIDIgfSwKLSAgICAgICAgeyA0LCAzLCAzLCAz
IH0sCi0gICAgICAgIHsgNCwgMywgMywgMyB9LAotICAgIH07Ci0gICAgcmV0dXJuIG1hcmdpbnNb
Y29udHJvbFNpemVdOwotfQotCi1zdGF0aWMgTGVuZ3RoU2l6ZSBjaGVja2JveFNpemUoY29uc3Qg
Rm9udCYgZm9udCwgY29uc3QgTGVuZ3RoU2l6ZSYgem9vbWVkU2l6ZSwgZmxvYXQgem9vbUZhY3Rv
cikKLXsKLSAgICAvLyBJZiB0aGUgd2lkdGggYW5kIGhlaWdodCBhcmUgYm90aCBzcGVjaWZpZWQs
IHRoZW4gd2UgaGF2ZSBub3RoaW5nIHRvIGRvLgotICAgIGlmICghem9vbWVkU2l6ZS53aWR0aCgp
LmlzSW50cmluc2ljT3JBdXRvKCkgJiYgIXpvb21lZFNpemUuaGVpZ2h0KCkuaXNJbnRyaW5zaWNP
ckF1dG8oKSkKLSAgICAgICAgcmV0dXJuIHpvb21lZFNpemU7Ci0KLSAgICAvLyBVc2UgdGhlIGZv
bnQgc2l6ZSB0byBkZXRlcm1pbmUgdGhlIGludHJpbnNpYyB3aWR0aCBvZiB0aGUgY29udHJvbC4K
LSAgICByZXR1cm4gc2l6ZUZyb21Gb250KGZvbnQsIHpvb21lZFNpemUsIHpvb21GYWN0b3IsIGNo
ZWNrYm94U2l6ZXMoKSk7Ci19Ci0KLXN0YXRpYyBOU0J1dHRvbkNlbGwgKmNoZWNrYm94KENvbnRy
b2xTdGF0ZXMgc3RhdGVzLCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFj
dG9yKQotewotICAgIHN0YXRpYyBOU0J1dHRvbkNlbGwgKmNoZWNrYm94Q2VsbDsKLSAgICBpZiAo
IWNoZWNrYm94Q2VsbCkgewotICAgICAgICBjaGVja2JveENlbGwgPSBbW05TQnV0dG9uQ2VsbCBh
bGxvY10gaW5pdF07Ci0gICAgICAgIFtjaGVja2JveENlbGwgc2V0QnV0dG9uVHlwZTpOU1N3aXRj
aEJ1dHRvbl07Ci0gICAgICAgIFtjaGVja2JveENlbGwgc2V0VGl0bGU6bmlsXTsKLSAgICAgICAg
W2NoZWNrYm94Q2VsbCBzZXRBbGxvd3NNaXhlZFN0YXRlOllFU107Ci0gICAgICAgIFtjaGVja2Jv
eENlbGwgc2V0Rm9jdXNSaW5nVHlwZTpOU0ZvY3VzUmluZ1R5cGVFeHRlcmlvcl07Ci0gICAgfQot
Ci0gICAgLy8gU2V0IHRoZSBjb250cm9sIHNpemUgYmFzZWQgb2ZmIHRoZSByZWN0YW5nbGUgd2Un
cmUgcGFpbnRpbmcgaW50by4KLSAgICBzZXRDb250cm9sU2l6ZShjaGVja2JveENlbGwsIGNoZWNr
Ym94U2l6ZXMoKSwgem9vbWVkUmVjdC5zaXplKCksIHpvb21GYWN0b3IpOwotCi0gICAgLy8gVXBk
YXRlIHRoZSB2YXJpb3VzIHN0YXRlcyB3ZSByZXNwb25kIHRvLgotICAgIHVwZGF0ZVN0YXRlcyhj
aGVja2JveENlbGwsIHN0YXRlcyk7Ci0KLSAgICByZXR1cm4gY2hlY2tib3hDZWxsOwotfQotCi0v
LyBGSVhNRTogU2hhcmUgbW9yZSBjb2RlIHdpdGggcmFkaW8gYnV0dG9ucy4KLXN0YXRpYyB2b2lk
IHBhaW50Q2hlY2tib3goQ29udHJvbFN0YXRlcyBzdGF0ZXMsIEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvciwgU2Nyb2xs
Vmlldyogc2Nyb2xsVmlldykKLXsKLSAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLQot
ICAgIC8vIERldGVybWluZSB0aGUgd2lkdGggYW5kIGhlaWdodCBuZWVkZWQgZm9yIHRoZSBjb250
cm9sIGFuZCBwcmVwYXJlIHRoZSBjZWxsIGZvciBwYWludGluZy4KLSAgICBOU0J1dHRvbkNlbGwg
KmNoZWNrYm94Q2VsbCA9IGNoZWNrYm94KHN0YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3Rvcik7
Ci0gICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChjb250ZXh0KTsK
LQotICAgIGNvbnRleHQtPnNhdmUoKTsKLQotICAgIE5TQ29udHJvbFNpemUgY29udHJvbFNpemUg
PSBbY2hlY2tib3hDZWxsIGNvbnRyb2xTaXplXTsKLSAgICBJbnRTaXplIHpvb21lZFNpemUgPSBj
aGVja2JveFNpemVzKClbY29udHJvbFNpemVdOwotICAgIHpvb21lZFNpemUuc2V0V2lkdGgoem9v
bWVkU2l6ZS53aWR0aCgpICogem9vbUZhY3Rvcik7Ci0gICAgem9vbWVkU2l6ZS5zZXRIZWlnaHQo
em9vbWVkU2l6ZS5oZWlnaHQoKSAqIHpvb21GYWN0b3IpOwotICAgIEludFJlY3QgaW5mbGF0ZWRS
ZWN0ID0gaW5mbGF0ZVJlY3Qoem9vbWVkUmVjdCwgem9vbWVkU2l6ZSwgY2hlY2tib3hNYXJnaW5z
KGNvbnRyb2xTaXplKSwgem9vbUZhY3Rvcik7Ci0KLSAgICBpZiAoem9vbUZhY3RvciAhPSAxLjBm
KSB7Ci0gICAgICAgIGluZmxhdGVkUmVjdC5zZXRXaWR0aChpbmZsYXRlZFJlY3Qud2lkdGgoKSAv
IHpvb21GYWN0b3IpOwotICAgICAgICBpbmZsYXRlZFJlY3Quc2V0SGVpZ2h0KGluZmxhdGVkUmVj
dC5oZWlnaHQoKSAvIHpvb21GYWN0b3IpOwotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoaW5m
bGF0ZWRSZWN0LngoKSwgaW5mbGF0ZWRSZWN0LnkoKSk7Ci0gICAgICAgIGNvbnRleHQtPnNjYWxl
KEZsb2F0U2l6ZSh6b29tRmFjdG9yLCB6b29tRmFjdG9yKSk7Ci0gICAgICAgIGNvbnRleHQtPnRy
YW5zbGF0ZSgtaW5mbGF0ZWRSZWN0LngoKSwgLWluZmxhdGVkUmVjdC55KCkpOwotICAgIH0KLQot
ICAgIHsKLSAgICAgICAgRm9jdXNJbmRpY2F0aW9uRml4OjpTY29wZWRGaXhlciBmaXg7Ci0gICAg
ICAgIFtjaGVja2JveENlbGwgZHJhd1dpdGhGcmFtZTpOU1JlY3QoaW5mbGF0ZWRSZWN0KSBpblZp
ZXc6RmxpcHBlZFZpZXcoKV07Ci0gICAgfQotICAgIFtjaGVja2JveENlbGwgc2V0Q29udHJvbFZp
ZXc6bmlsXTsKLQotICAgIGNvbnRleHQtPnJlc3RvcmUoKTsKLQotICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlMKLX0KLQotLy8gUmFkaW8gQnV0dG9ucwotCi1zdGF0aWMgY29uc3QgSW50U2l6
ZSogcmFkaW9TaXplcygpCi17Ci0gICAgc3RhdGljIGNvbnN0IEludFNpemUgc2l6ZXNbM10gPSB7
IEludFNpemUoMTQsIDE1KSwgSW50U2l6ZSgxMiwgMTMpLCBJbnRTaXplKDEwLCAxMCkgfTsKLSAg
ICByZXR1cm4gc2l6ZXM7Ci19Ci0KLXN0YXRpYyBjb25zdCBpbnQqIHJhZGlvTWFyZ2lucyhOU0Nv
bnRyb2xTaXplIGNvbnRyb2xTaXplKQotewotICAgIHN0YXRpYyBjb25zdCBpbnQgbWFyZ2luc1sz
XVs0XSA9Ci0gICAgewotICAgICAgICB7IDIsIDIsIDQsIDIgfSwKLSAgICAgICAgeyAzLCAyLCAz
LCAyIH0sCi0gICAgICAgIHsgMSwgMCwgMiwgMCB9LAotICAgIH07Ci0gICAgcmV0dXJuIG1hcmdp
bnNbY29udHJvbFNpemVdOwotfQotCi1zdGF0aWMgTGVuZ3RoU2l6ZSByYWRpb1NpemUoY29uc3Qg
Rm9udCYgZm9udCwgY29uc3QgTGVuZ3RoU2l6ZSYgem9vbWVkU2l6ZSwgZmxvYXQgem9vbUZhY3Rv
cikKLXsKLSAgICAvLyBJZiB0aGUgd2lkdGggYW5kIGhlaWdodCBhcmUgYm90aCBzcGVjaWZpZWQs
IHRoZW4gd2UgaGF2ZSBub3RoaW5nIHRvIGRvLgotICAgIGlmICghem9vbWVkU2l6ZS53aWR0aCgp
LmlzSW50cmluc2ljT3JBdXRvKCkgJiYgIXpvb21lZFNpemUuaGVpZ2h0KCkuaXNJbnRyaW5zaWNP
ckF1dG8oKSkKLSAgICAgICAgcmV0dXJuIHpvb21lZFNpemU7Ci0KLSAgICAvLyBVc2UgdGhlIGZv
bnQgc2l6ZSB0byBkZXRlcm1pbmUgdGhlIGludHJpbnNpYyB3aWR0aCBvZiB0aGUgY29udHJvbC4K
LSAgICByZXR1cm4gc2l6ZUZyb21Gb250KGZvbnQsIHpvb21lZFNpemUsIHpvb21GYWN0b3IsIHJh
ZGlvU2l6ZXMoKSk7Ci19Ci0KLXN0YXRpYyBOU0J1dHRvbkNlbGwgKnJhZGlvKENvbnRyb2xTdGF0
ZXMgc3RhdGVzLCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yKQot
ewotICAgIHN0YXRpYyBOU0J1dHRvbkNlbGwgKnJhZGlvQ2VsbDsKLSAgICBpZiAoIXJhZGlvQ2Vs
bCkgewotICAgICAgICByYWRpb0NlbGwgPSBbW05TQnV0dG9uQ2VsbCBhbGxvY10gaW5pdF07Ci0g
ICAgICAgIFtyYWRpb0NlbGwgc2V0QnV0dG9uVHlwZTpOU1JhZGlvQnV0dG9uXTsKLSAgICAgICAg
W3JhZGlvQ2VsbCBzZXRUaXRsZTpuaWxdOwotICAgICAgICBbcmFkaW9DZWxsIHNldEZvY3VzUmlu
Z1R5cGU6TlNGb2N1c1JpbmdUeXBlRXh0ZXJpb3JdOwotICAgIH0KLQotICAgIC8vIFNldCB0aGUg
Y29udHJvbCBzaXplIGJhc2VkIG9mZiB0aGUgcmVjdGFuZ2xlIHdlJ3JlIHBhaW50aW5nIGludG8u
Ci0gICAgc2V0Q29udHJvbFNpemUocmFkaW9DZWxsLCByYWRpb1NpemVzKCksIHpvb21lZFJlY3Qu
c2l6ZSgpLCB6b29tRmFjdG9yKTsKLQotICAgIC8vIFVwZGF0ZSB0aGUgdmFyaW91cyBzdGF0ZXMg
d2UgcmVzcG9uZCB0by4KLSAgICB1cGRhdGVTdGF0ZXMocmFkaW9DZWxsLCBzdGF0ZXMpOwotCi0g
ICAgcmV0dXJuIHJhZGlvQ2VsbDsKLX0KLQotc3RhdGljIHZvaWQgcGFpbnRSYWRpbyhDb250cm9s
U3RhdGVzIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiB6
b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KiBzY3JvbGxWaWV3KQotewot
ICAgIC8vIERldGVybWluZSB0aGUgd2lkdGggYW5kIGhlaWdodCBuZWVkZWQgZm9yIHRoZSBjb250
cm9sIGFuZCBwcmVwYXJlIHRoZSBjZWxsIGZvciBwYWludGluZy4KLSAgICBOU0J1dHRvbkNlbGwg
KnJhZGlvQ2VsbCA9IHJhZGlvKHN0YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3Rvcik7Ci0gICAg
TG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChjb250ZXh0KTsKLQotICAg
IGNvbnRleHQtPnNhdmUoKTsKLQotICAgIE5TQ29udHJvbFNpemUgY29udHJvbFNpemUgPSBbcmFk
aW9DZWxsIGNvbnRyb2xTaXplXTsKLSAgICBJbnRTaXplIHpvb21lZFNpemUgPSByYWRpb1NpemVz
KClbY29udHJvbFNpemVdOwotICAgIHpvb21lZFNpemUuc2V0V2lkdGgoem9vbWVkU2l6ZS53aWR0
aCgpICogem9vbUZhY3Rvcik7Ci0gICAgem9vbWVkU2l6ZS5zZXRIZWlnaHQoem9vbWVkU2l6ZS5o
ZWlnaHQoKSAqIHpvb21GYWN0b3IpOwotICAgIEludFJlY3QgaW5mbGF0ZWRSZWN0ID0gaW5mbGF0
ZVJlY3Qoem9vbWVkUmVjdCwgem9vbWVkU2l6ZSwgcmFkaW9NYXJnaW5zKGNvbnRyb2xTaXplKSwg
em9vbUZhY3Rvcik7Ci0KLSAgICBpZiAoem9vbUZhY3RvciAhPSAxLjBmKSB7Ci0gICAgICAgIGlu
ZmxhdGVkUmVjdC5zZXRXaWR0aChpbmZsYXRlZFJlY3Qud2lkdGgoKSAvIHpvb21GYWN0b3IpOwot
ICAgICAgICBpbmZsYXRlZFJlY3Quc2V0SGVpZ2h0KGluZmxhdGVkUmVjdC5oZWlnaHQoKSAvIHpv
b21GYWN0b3IpOwotICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoaW5mbGF0ZWRSZWN0LngoKSwg
aW5mbGF0ZWRSZWN0LnkoKSk7Ci0gICAgICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSh6b29t
RmFjdG9yLCB6b29tRmFjdG9yKSk7Ci0gICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZSgtaW5mbGF0
ZWRSZWN0LngoKSwgLWluZmxhdGVkUmVjdC55KCkpOwotICAgIH0KLQotICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUwotICAgIHsKLSAgICAgICAgRm9jdXNJbmRpY2F0aW9uRml4OjpTY29w
ZWRGaXhlciBmaXg7Ci0gICAgICAgIFtyYWRpb0NlbGwgZHJhd1dpdGhGcmFtZTpOU1JlY3QoaW5m
bGF0ZWRSZWN0KSBpblZpZXc6RmxpcHBlZFZpZXcoKV07Ci0gICAgfQotICAgIFtyYWRpb0NlbGwg
c2V0Q29udHJvbFZpZXc6bmlsXTsKLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAg
ICBjb250ZXh0LT5yZXN0b3JlKCk7Ci19Ci0KLS8vIEJ1dHRvbnMKLQotLy8gQnV0dG9ucyByZWFs
bHkgb25seSBjb25zdHJhaW4gaGVpZ2h0LiBUaGV5IHJlc3BlY3Qgd2lkdGguCi1zdGF0aWMgY29u
c3QgSW50U2l6ZSogYnV0dG9uU2l6ZXMoKQotewotICAgIHN0YXRpYyBjb25zdCBJbnRTaXplIHNp
emVzWzNdID0geyBJbnRTaXplKDAsIDIxKSwgSW50U2l6ZSgwLCAxOCksIEludFNpemUoMCwgMTUp
IH07Ci0gICAgcmV0dXJuIHNpemVzOwotfQotCi1zdGF0aWMgY29uc3QgaW50KiBidXR0b25NYXJn
aW5zKE5TQ29udHJvbFNpemUgY29udHJvbFNpemUpCi17Ci0gICAgc3RhdGljIGNvbnN0IGludCBt
YXJnaW5zWzNdWzRdID0KLSAgICB7Ci0gICAgICAgIHsgNCwgNiwgNywgNiB9LAotICAgICAgICB7
IDQsIDUsIDYsIDUgfSwKLSAgICAgICAgeyAwLCAxLCAxLCAxIH0sCi0gICAgfTsKLSAgICByZXR1
cm4gbWFyZ2luc1tjb250cm9sU2l6ZV07Ci19Ci0KLXN0YXRpYyB2b2lkIHNldHVwQnV0dG9uQ2Vs
bChOU0J1dHRvbkNlbGwgKiZidXR0b25DZWxsLCBDb250cm9sUGFydCBwYXJ0LCBDb250cm9sU3Rh
dGVzIHN0YXRlcywgY29uc3QgSW50UmVjdCYgem9vbWVkUmVjdCwgZmxvYXQgem9vbUZhY3RvcikK
LXsKLSAgICBpZiAoIWJ1dHRvbkNlbGwpIHsKLSAgICAgICAgYnV0dG9uQ2VsbCA9IFtbTlNCdXR0
b25DZWxsIGFsbG9jXSBpbml0XTsKLSAgICAgICAgW2J1dHRvbkNlbGwgc2V0VGl0bGU6bmlsXTsK
LSAgICAgICAgW2J1dHRvbkNlbGwgc2V0QnV0dG9uVHlwZTpOU01vbWVudGFyeVB1c2hJbkJ1dHRv
bl07Ci0gICAgICAgIGlmIChzdGF0ZXMgJiBEZWZhdWx0U3RhdGUpCi0gICAgICAgICAgICBbYnV0
dG9uQ2VsbCBzZXRLZXlFcXVpdmFsZW50OkAiXHIiXTsKLSAgICB9Ci0KLSAgICAvLyBTZXQgdGhl
IGNvbnRyb2wgc2l6ZSBiYXNlZCBvZmYgdGhlIHJlY3RhbmdsZSB3ZSdyZSBwYWludGluZyBpbnRv
LgotICAgIGNvbnN0IEludFNpemUqIHNpemVzID0gYnV0dG9uU2l6ZXMoKTsKLSAgICBpZiAocGFy
dCA9PSBTcXVhcmVCdXR0b25QYXJ0IHx8IHpvb21lZFJlY3QuaGVpZ2h0KCkgPiBidXR0b25TaXpl
cygpW05TUmVndWxhckNvbnRyb2xTaXplXS5oZWlnaHQoKSAqIHpvb21GYWN0b3IpIHsKLSAgICAg
ICAgLy8gVXNlIHRoZSBzcXVhcmUgYnV0dG9uCi0gICAgICAgIGlmIChbYnV0dG9uQ2VsbCBiZXpl
bFN0eWxlXSAhPSBOU1NoYWRvd2xlc3NTcXVhcmVCZXplbFN0eWxlKQotICAgICAgICAgICAgW2J1
dHRvbkNlbGwgc2V0QmV6ZWxTdHlsZTpOU1NoYWRvd2xlc3NTcXVhcmVCZXplbFN0eWxlXTsKLSAg
ICB9IGVsc2UgaWYgKFtidXR0b25DZWxsIGJlemVsU3R5bGVdICE9IE5TUm91bmRlZEJlemVsU3R5
bGUpCi0gICAgICAgIFtidXR0b25DZWxsIHNldEJlemVsU3R5bGU6TlNSb3VuZGVkQmV6ZWxTdHls
ZV07Ci0KLSAgICBzZXRDb250cm9sU2l6ZShidXR0b25DZWxsLCBzaXplcywgem9vbWVkUmVjdC5z
aXplKCksIHpvb21GYWN0b3IpOwotCi0gICAgLy8gVXBkYXRlIHRoZSB2YXJpb3VzIHN0YXRlcyB3
ZSByZXNwb25kIHRvLgotICAgIHVwZGF0ZVN0YXRlcyhidXR0b25DZWxsLCBzdGF0ZXMpOwotfQot
Ci1zdGF0aWMgTlNCdXR0b25DZWxsICpidXR0b24oQ29udHJvbFBhcnQgcGFydCwgQ29udHJvbFN0
YXRlcyBzdGF0ZXMsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3Ip
Ci17Ci0gICAgYm9vbCBpc0RlZmF1bHQgPSBzdGF0ZXMgJiBEZWZhdWx0U3RhdGU7Ci0gICAgc3Rh
dGljIE5TQnV0dG9uQ2VsbCAqY2VsbHNbMl07Ci0gICAgc2V0dXBCdXR0b25DZWxsKGNlbGxzW2lz
RGVmYXVsdF0sIHBhcnQsIHN0YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3Rvcik7Ci0gICAgcmV0
dXJuIGNlbGxzW2lzRGVmYXVsdF07Ci19Ci0KLXN0YXRpYyB2b2lkIHBhaW50QnV0dG9uKENvbnRy
b2xQYXJ0IHBhcnQsIENvbnRyb2xTdGF0ZXMgc3RhdGVzLCBHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0IHpvb21GYWN0b3IsIFNjcm9sbFZp
ZXcqIHNjcm9sbFZpZXcpCi17Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0KLSAg
ICAvLyBEZXRlcm1pbmUgdGhlIHdpZHRoIGFuZCBoZWlnaHQgbmVlZGVkIGZvciB0aGUgY29udHJv
bCBhbmQgcHJlcGFyZSB0aGUgY2VsbCBmb3IgcGFpbnRpbmcuCi0gICAgTlNCdXR0b25DZWxsICpi
dXR0b25DZWxsID0gYnV0dG9uKHBhcnQsIHN0YXRlcywgem9vbWVkUmVjdCwgem9vbUZhY3Rvcik7
Ci0gICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2FsQ29udGV4dChjb250ZXh0KTsK
LQotICAgIE5TQ29udHJvbFNpemUgY29udHJvbFNpemUgPSBbYnV0dG9uQ2VsbCBjb250cm9sU2l6
ZV07Ci0gICAgSW50U2l6ZSB6b29tZWRTaXplID0gYnV0dG9uU2l6ZXMoKVtjb250cm9sU2l6ZV07
Ci0gICAgem9vbWVkU2l6ZS5zZXRXaWR0aCh6b29tZWRSZWN0LndpZHRoKCkpOyAvLyBCdXR0b25z
IGRvbid0IGV2ZXIgY29uc3RyYWluIHdpZHRoLCBzbyB0aGUgem9vbWVkIHdpZHRoIGNhbiBqdXN0
IGJlIGhvbm9yZWQuCi0gICAgem9vbWVkU2l6ZS5zZXRIZWlnaHQoem9vbWVkU2l6ZS5oZWlnaHQo
KSAqIHpvb21GYWN0b3IpOwotICAgIEludFJlY3QgaW5mbGF0ZWRSZWN0ID0gem9vbWVkUmVjdDsK
LSAgICBpZiAoW2J1dHRvbkNlbGwgYmV6ZWxTdHlsZV0gPT0gTlNSb3VuZGVkQmV6ZWxTdHlsZSkg
ewotICAgICAgICAvLyBDZW50ZXIgdGhlIGJ1dHRvbiB3aXRoaW4gdGhlIGF2YWlsYWJsZSBzcGFj
ZS4KLSAgICAgICAgaWYgKGluZmxhdGVkUmVjdC5oZWlnaHQoKSA+IHpvb21lZFNpemUuaGVpZ2h0
KCkpIHsKLSAgICAgICAgICAgIGluZmxhdGVkUmVjdC5zZXRZKGluZmxhdGVkUmVjdC55KCkgKyAo
aW5mbGF0ZWRSZWN0LmhlaWdodCgpIC0gem9vbWVkU2l6ZS5oZWlnaHQoKSkgLyAyKTsKLSAgICAg
ICAgICAgIGluZmxhdGVkUmVjdC5zZXRIZWlnaHQoem9vbWVkU2l6ZS5oZWlnaHQoKSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICAvLyBOb3cgaW5mbGF0ZSBpdCB0byBhY2NvdW50IGZvciB0aGUgc2hh
ZG93LgotICAgICAgICBpbmZsYXRlZFJlY3QgPSBpbmZsYXRlUmVjdChpbmZsYXRlZFJlY3QsIHpv
b21lZFNpemUsIGJ1dHRvbk1hcmdpbnMoY29udHJvbFNpemUpLCB6b29tRmFjdG9yKTsKLQotICAg
ICAgICBpZiAoem9vbUZhY3RvciAhPSAxLjBmKSB7Ci0gICAgICAgICAgICBpbmZsYXRlZFJlY3Qu
c2V0V2lkdGgoaW5mbGF0ZWRSZWN0LndpZHRoKCkgLyB6b29tRmFjdG9yKTsKLSAgICAgICAgICAg
IGluZmxhdGVkUmVjdC5zZXRIZWlnaHQoaW5mbGF0ZWRSZWN0LmhlaWdodCgpIC8gem9vbUZhY3Rv
cik7Ci0gICAgICAgICAgICBjb250ZXh0LT50cmFuc2xhdGUoaW5mbGF0ZWRSZWN0LngoKSwgaW5m
bGF0ZWRSZWN0LnkoKSk7Ci0gICAgICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoem9v
bUZhY3Rvciwgem9vbUZhY3RvcikpOwotICAgICAgICAgICAgY29udGV4dC0+dHJhbnNsYXRlKC1p
bmZsYXRlZFJlY3QueCgpLCAtaW5mbGF0ZWRSZWN0LnkoKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICB7Ci0gICAgICAgIExvY2FsQ3VycmVudEdyYXBoaWNzQ29udGV4dCBsb2NhbENvbnRleHQo
Y29udGV4dCk7Ci0gICAgICAgIEZvY3VzSW5kaWNhdGlvbkZpeDo6U2NvcGVkRml4ZXIgZml4Owot
ICAgICAgICBbYnV0dG9uQ2VsbCBkcmF3V2l0aEZyYW1lOk5TUmVjdChpbmZsYXRlZFJlY3QpIGlu
VmlldzpGbGlwcGVkVmlldygpXTsKLSAgICB9Ci0gICAgW2J1dHRvbkNlbGwgc2V0Q29udHJvbFZp
ZXc6bmlsXTsKLQotICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKLX0KLQotLy8gU3RlcHBl
cgotCi1zdGF0aWMgY29uc3QgSW50U2l6ZSogc3RlcHBlclNpemVzKCkKLXsKLSAgICBzdGF0aWMg
Y29uc3QgSW50U2l6ZSBzaXplc1szXSA9IHsgSW50U2l6ZSgxOSwgMjcpLCBJbnRTaXplKDE1LCAy
MiksIEludFNpemUoMTMsIDE1KSB9OwotICAgIHJldHVybiBzaXplczsKLX0KLQotLy8gV2UgZG9u
J3QgdXNlIGNvbnRyb2xTaXplRm9yRm9udCgpIGZvciBzdGVwcGVycyBiZWNhdXNlIHRoZSBzdGVw
cGVyIGhlaWdodAotLy8gc2hvdWxkIGJlIGVxdWFsIHRvIG9yIGxlc3MgdGhhbiB0aGUgY29ycmVz
cG9uZGluZyB0ZXh0IGZpZWxkIGhlaWdodCwKLXN0YXRpYyBOU0NvbnRyb2xTaXplIHN0ZXBwZXJD
b250cm9sU2l6ZUZvckZvbnQoY29uc3QgRm9udCYgZm9udCkKLXsKLSAgICBpbnQgZm9udFNpemUg
PSBmb250LnBpeGVsU2l6ZSgpOwotICAgIGlmIChmb250U2l6ZSA+PSAxOCkKLSAgICAgICAgcmV0
dXJuIE5TUmVndWxhckNvbnRyb2xTaXplOwotICAgIGlmIChmb250U2l6ZSA+PSAxMykKLSAgICAg
ICAgcmV0dXJuIE5TU21hbGxDb250cm9sU2l6ZTsKLSAgICByZXR1cm4gTlNNaW5pQ29udHJvbFNp
emU7Ci19Ci0KLXN0YXRpYyB2b2lkIHBhaW50U3RlcHBlcihDb250cm9sU3RhdGVzIHN0YXRlcywg
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9h
dCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3KikKLXsKLSAgICAvLyBXZSBkb24ndCB1c2UgTlNTdGVw
cGVyQ2VsbCBiZWNhdXNlIHRoZXJlIGFyZSBubyB3YXlzIHRvIGRyYXcgYW4KLSAgICAvLyBOU1N0
ZXBwZXJDZWxsIHdpdGggdGhlIHVwIGJ1dHRvbiBoaWdobGlnaHRlZC4KLQotICAgIEhJVGhlbWVC
dXR0b25EcmF3SW5mbyBkcmF3SW5mbzsKLSAgICBkcmF3SW5mby52ZXJzaW9uID0gMDsKLSAgICBk
cmF3SW5mby5zdGF0ZSA9IGNvbnZlcnRDb250cm9sU3RhdGVzVG9UaGVtZURyYXdTdGF0ZShrVGhl
bWVJbmNEZWNCdXR0b24sIHN0YXRlcyk7Ci0gICAgZHJhd0luZm8uYWRvcm5tZW50ID0ga1RoZW1l
QWRvcm5tZW50RGVmYXVsdDsKLSAgICBDb250cm9sU2l6ZSBjb250cm9sU2l6ZSA9IGNvbnRyb2xT
aXplRnJvbVBpeGVsU2l6ZShzdGVwcGVyU2l6ZXMoKSwgem9vbWVkUmVjdC5zaXplKCksIHpvb21G
YWN0b3IpOwotICAgIGlmIChjb250cm9sU2l6ZSA9PSBOU1NtYWxsQ29udHJvbFNpemUpCi0gICAg
ICAgIGRyYXdJbmZvLmtpbmQgPSBrVGhlbWVJbmNEZWNCdXR0b25TbWFsbDsKLSAgICBlbHNlIGlm
IChjb250cm9sU2l6ZSA9PSBOU01pbmlDb250cm9sU2l6ZSkKLSAgICAgICAgZHJhd0luZm8ua2lu
ZCA9IGtUaGVtZUluY0RlY0J1dHRvbk1pbmk7Ci0gICAgZWxzZQotICAgICAgICBkcmF3SW5mby5r
aW5kID0ga1RoZW1lSW5jRGVjQnV0dG9uOwotCi0gICAgSW50UmVjdCByZWN0KHpvb21lZFJlY3Qp
OwotICAgIGNvbnRleHQtPnNhdmUoKTsKLSAgICBpZiAoem9vbUZhY3RvciAhPSAxLjBmKSB7Ci0g
ICAgICAgIHJlY3Quc2V0V2lkdGgocmVjdC53aWR0aCgpIC8gem9vbUZhY3Rvcik7Ci0gICAgICAg
IHJlY3Quc2V0SGVpZ2h0KHJlY3QuaGVpZ2h0KCkgLyB6b29tRmFjdG9yKTsKLSAgICAgICAgY29u
dGV4dC0+dHJhbnNsYXRlKHJlY3QueCgpLCByZWN0LnkoKSk7Ci0gICAgICAgIGNvbnRleHQtPnNj
YWxlKEZsb2F0U2l6ZSh6b29tRmFjdG9yLCB6b29tRmFjdG9yKSk7Ci0gICAgICAgIGNvbnRleHQt
PnRyYW5zbGF0ZSgtcmVjdC54KCksIC1yZWN0LnkoKSk7Ci0gICAgfQotICAgIENHUmVjdCBib3Vu
ZHMocmVjdCk7Ci0gICAgQ0dSZWN0IGJhY2tncm91bmRCb3VuZHM7Ci0gICAgSElUaGVtZUdldEJ1
dHRvbkJhY2tncm91bmRCb3VuZHMoJmJvdW5kcywgJmRyYXdJbmZvLCAmYmFja2dyb3VuZEJvdW5k
cyk7Ci0gICAgLy8gQ2VudGVyIHRoZSBzdGVwcGVyIHJlY3RhbmdsZSBpbiB0aGUgc3BlY2lmaWVk
IGFyZWEuCi0gICAgYmFja2dyb3VuZEJvdW5kcy5vcmlnaW4ueCA9IGJvdW5kcy5vcmlnaW4ueCAr
IChib3VuZHMuc2l6ZS53aWR0aCAtIGJhY2tncm91bmRCb3VuZHMuc2l6ZS53aWR0aCkgLyAyOwot
ICAgIGlmIChiYWNrZ3JvdW5kQm91bmRzLnNpemUuaGVpZ2h0IDwgYm91bmRzLnNpemUuaGVpZ2h0
KSB7Ci0gICAgICAgIGludCBoZWlnaHREaWZmID0gY2xhbXBUb0ludGVnZXIoYm91bmRzLnNpemUu
aGVpZ2h0IC0gYmFja2dyb3VuZEJvdW5kcy5zaXplLmhlaWdodCk7Ci0gICAgICAgIGJhY2tncm91
bmRCb3VuZHMub3JpZ2luLnkgPSBib3VuZHMub3JpZ2luLnkgKyAoaGVpZ2h0RGlmZiAvIDIpICsg
MTsKLSAgICB9Ci0gICAgZ2Z4OjpTa2lhQml0TG9ja2VyIGJpdExvY2tlcihjb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCkpOwotICAgIENHQ29udGV4dFJlZiBjZ0NvbnRleHQgPSBi
aXRMb2NrZXIuY2dDb250ZXh0KCk7Ci0gICAgSElUaGVtZURyYXdCdXR0b24oJmJhY2tncm91bmRC
b3VuZHMsICZkcmF3SW5mbywgY2dDb250ZXh0LCBrSElUaGVtZU9yaWVudGF0aW9uTm9ybWFsLCAw
KTsKLSAgICBjb250ZXh0LT5yZXN0b3JlKCk7Ci19Ci0KLS8vIFRoZW1lIG92ZXJyaWRlcwotCi1p
bnQgVGhlbWVDaHJvbWl1bU1hYzo6YmFzZWxpbmVQb3NpdGlvbkFkanVzdG1lbnQoQ29udHJvbFBh
cnQgcGFydCkgY29uc3QKLXsKLSAgICBpZiAocGFydCA9PSBDaGVja2JveFBhcnQgfHwgcGFydCA9
PSBSYWRpb1BhcnQpCi0gICAgICAgIHJldHVybiAtMjsKLSAgICByZXR1cm4gVGhlbWU6OmJhc2Vs
aW5lUG9zaXRpb25BZGp1c3RtZW50KHBhcnQpOwotfQotCi1Gb250RGVzY3JpcHRpb24gVGhlbWVD
aHJvbWl1bU1hYzo6Y29udHJvbEZvbnQoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgRm9udCYgZm9u
dCwgZmxvYXQgem9vbUZhY3RvcikgY29uc3QKLXsKLSAgICBzd2l0Y2ggKHBhcnQpIHsKLSAgICAg
ICAgY2FzZSBQdXNoQnV0dG9uUGFydDogewotICAgICAgICAgICAgRm9udERlc2NyaXB0aW9uIGZv
bnREZXNjcmlwdGlvbjsKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRJc0Fic29sdXRl
U2l6ZSh0cnVlKTsKLSAgICAgICAgICAgIGZvbnREZXNjcmlwdGlvbi5zZXRHZW5lcmljRmFtaWx5
KEZvbnREZXNjcmlwdGlvbjo6U2VyaWZGYW1pbHkpOwotCi0gICAgICAgICAgICBOU0ZvbnQqIG5z
Rm9udCA9IFtOU0ZvbnQgc3lzdGVtRm9udE9mU2l6ZTpbTlNGb250IHN5c3RlbUZvbnRTaXplRm9y
Q29udHJvbFNpemU6Y29udHJvbFNpemVGb3JGb250KGZvbnQpXV07Ci0gICAgICAgICAgICBmb250
RGVzY3JpcHRpb24uZmlyc3RGYW1pbHkoKS5zZXRGYW1pbHkoW25zRm9udCBmYW1pbHlOYW1lXSk7
Ci0gICAgICAgICAgICBmb250RGVzY3JpcHRpb24uc2V0Q29tcHV0ZWRTaXplKFtuc0ZvbnQgcG9p
bnRTaXplXSAqIHpvb21GYWN0b3IpOwotICAgICAgICAgICAgZm9udERlc2NyaXB0aW9uLnNldFNw
ZWNpZmllZFNpemUoW25zRm9udCBwb2ludFNpemVdICogem9vbUZhY3Rvcik7Ci0gICAgICAgICAg
ICByZXR1cm4gZm9udERlc2NyaXB0aW9uOwotICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICByZXR1cm4gVGhlbWU6OmNvbnRyb2xGb250KHBhcnQsIGZvbnQsIHpvb21GYWN0
b3IpOwotICAgIH0KLX0KLQotTGVuZ3RoU2l6ZSBUaGVtZUNocm9taXVtTWFjOjpjb250cm9sU2l6
ZShDb250cm9sUGFydCBwYXJ0LCBjb25zdCBGb250JiBmb250LCBjb25zdCBMZW5ndGhTaXplJiB6
b29tZWRTaXplLCBmbG9hdCB6b29tRmFjdG9yKSBjb25zdAotewotICAgIHN3aXRjaCAocGFydCkg
ewotICAgICAgICBjYXNlIENoZWNrYm94UGFydDoKLSAgICAgICAgICAgIHJldHVybiBjaGVja2Jv
eFNpemUoZm9udCwgem9vbWVkU2l6ZSwgem9vbUZhY3Rvcik7Ci0gICAgICAgIGNhc2UgUmFkaW9Q
YXJ0OgotICAgICAgICAgICAgcmV0dXJuIHJhZGlvU2l6ZShmb250LCB6b29tZWRTaXplLCB6b29t
RmFjdG9yKTsKLSAgICAgICAgY2FzZSBQdXNoQnV0dG9uUGFydDoKLSAgICAgICAgICAgIC8vIEhl
aWdodCBpcyByZXNldCB0byBhdXRvIHNvIHRoYXQgc3BlY2lmaWVkIGhlaWdodHMgY2FuIGJlIGln
bm9yZWQuCi0gICAgICAgICAgICByZXR1cm4gc2l6ZUZyb21Gb250KGZvbnQsIExlbmd0aFNpemUo
em9vbWVkU2l6ZS53aWR0aCgpLCBMZW5ndGgoKSksIHpvb21GYWN0b3IsIGJ1dHRvblNpemVzKCkp
OwotICAgICAgICBjYXNlIElubmVyU3BpbkJ1dHRvblBhcnQ6Ci0gICAgICAgICAgICBpZiAoIXpv
b21lZFNpemUud2lkdGgoKS5pc0ludHJpbnNpY09yQXV0bygpICYmICF6b29tZWRTaXplLmhlaWdo
dCgpLmlzSW50cmluc2ljT3JBdXRvKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHpvb21lZFNp
emU7Ci0gICAgICAgICAgICByZXR1cm4gc2l6ZUZyb21OU0NvbnRyb2xTaXplKHN0ZXBwZXJDb250
cm9sU2l6ZUZvckZvbnQoZm9udCksIHpvb21lZFNpemUsIHpvb21GYWN0b3IsIHN0ZXBwZXJTaXpl
cygpKTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiB6b29tZWRTaXplOwot
ICAgIH0KLX0KLQotTGVuZ3RoU2l6ZSBUaGVtZUNocm9taXVtTWFjOjptaW5pbXVtQ29udHJvbFNp
emUoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgRm9udCYgZm9udCwgZmxvYXQgem9vbUZhY3Rvcikg
Y29uc3QKLXsKLSAgICBzd2l0Y2ggKHBhcnQpIHsKLSAgICAgICAgY2FzZSBTcXVhcmVCdXR0b25Q
YXJ0OgotICAgICAgICBjYXNlIERlZmF1bHRCdXR0b25QYXJ0OgotICAgICAgICBjYXNlIEJ1dHRv
blBhcnQ6Ci0gICAgICAgICAgICByZXR1cm4gTGVuZ3RoU2l6ZShMZW5ndGgoMCwgRml4ZWQpLCBM
ZW5ndGgoc3RhdGljX2Nhc3Q8aW50PigxNSAqIHpvb21GYWN0b3IpLCBGaXhlZCkpOwotICAgICAg
ICBjYXNlIElubmVyU3BpbkJ1dHRvblBhcnQ6IHsKLSAgICAgICAgICAgIEludFNpemUgYmFzZSA9
IHN0ZXBwZXJTaXplcygpW05TTWluaUNvbnRyb2xTaXplXTsKLSAgICAgICAgICAgIHJldHVybiBM
ZW5ndGhTaXplKExlbmd0aChzdGF0aWNfY2FzdDxpbnQ+KGJhc2Uud2lkdGgoKSAqIHpvb21GYWN0
b3IpLCBGaXhlZCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGgoc3RhdGlj
X2Nhc3Q8aW50PihiYXNlLmhlaWdodCgpICogem9vbUZhY3RvciksIEZpeGVkKSk7Ci0gICAgICAg
IH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBUaGVtZTo6bWluaW11bUNv
bnRyb2xTaXplKHBhcnQsIGZvbnQsIHpvb21GYWN0b3IpOwotICAgIH0KLX0KLQotTGVuZ3RoQm94
IFRoZW1lQ2hyb21pdW1NYWM6OmNvbnRyb2xCb3JkZXIoQ29udHJvbFBhcnQgcGFydCwgY29uc3Qg
Rm9udCYgZm9udCwgY29uc3QgTGVuZ3RoQm94JiB6b29tZWRCb3gsIGZsb2F0IHpvb21GYWN0b3Ip
IGNvbnN0Ci17Ci0gICAgc3dpdGNoIChwYXJ0KSB7Ci0gICAgICAgIGNhc2UgU3F1YXJlQnV0dG9u
UGFydDoKLSAgICAgICAgY2FzZSBEZWZhdWx0QnV0dG9uUGFydDoKLSAgICAgICAgY2FzZSBCdXR0
b25QYXJ0OgotICAgICAgICAgICAgcmV0dXJuIExlbmd0aEJveCgwLCB6b29tZWRCb3gucmlnaHQo
KS52YWx1ZSgpLCAwLCB6b29tZWRCb3gubGVmdCgpLnZhbHVlKCkpOwotICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgcmV0dXJuIFRoZW1lOjpjb250cm9sQm9yZGVyKHBhcnQsIGZvbnQsIHpv
b21lZEJveCwgem9vbUZhY3Rvcik7Ci0gICAgfQotfQotCi1MZW5ndGhCb3ggVGhlbWVDaHJvbWl1
bU1hYzo6Y29udHJvbFBhZGRpbmcoQ29udHJvbFBhcnQgcGFydCwgY29uc3QgRm9udCYgZm9udCwg
Y29uc3QgTGVuZ3RoQm94JiB6b29tZWRCb3gsIGZsb2F0IHpvb21GYWN0b3IpIGNvbnN0Ci17Ci0g
ICAgc3dpdGNoIChwYXJ0KSB7Ci0gICAgICAgIGNhc2UgUHVzaEJ1dHRvblBhcnQ6IHsKLSAgICAg
ICAgICAgIC8vIEp1c3QgdXNlIDhweC4gIEFwcEtpdCB3YW50cyB0byB1c2UgMTFweCBmb3IgbWlu
aSBidXR0b25zLCBidXQgdGhhdCBwYWRkaW5nIGlzIGp1c3QgdG9vIGxhcmdlCi0gICAgICAgICAg
ICAvLyBmb3IgcmVhbC13b3JsZCBXZWIgc2l0ZXMgKGNyZWF0aW5nIGEgaHVnZSBuZWNlc3Nhcnkg
bWluaW11bSB3aWR0aCBmb3IgYnV0dG9ucyB3aG9zZSBzcGFjZSBpcwotICAgICAgICAgICAgLy8g
YnkgZGVmaW5pdGlvbiBjb25zdHJhaW5lZCwgc2luY2Ugd2Ugc2VsZWN0IG1pbmkgb25seSBmb3Ig
c21hbGwgY3JhbXBlZCBlbnZpcm9ubWVudHMuCi0gICAgICAgICAgICAvLyBUaGlzIGFsc28gZ3Vh
cmFudGVlcyB0aGUgSFRNTCA8YnV0dG9uPiB3aWxsIG1hdGNoIG91ciByZW5kZXJpbmcgYnkgZGVm
YXVsdCwgc2luY2Ugd2UncmUgdXNpbmcgYSBjb25zaXN0ZW50Ci0gICAgICAgICAgICAvLyBwYWRk
aW5nLgotICAgICAgICAgICAgY29uc3QgaW50IHBhZGRpbmcgPSA4ICogem9vbUZhY3RvcjsKLSAg
ICAgICAgICAgIHJldHVybiBMZW5ndGhCb3goMCwgcGFkZGluZywgMCwgcGFkZGluZyk7Ci0gICAg
ICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBUaGVtZTo6Y29udHJv
bFBhZGRpbmcocGFydCwgZm9udCwgem9vbWVkQm94LCB6b29tRmFjdG9yKTsKLSAgICB9Ci19Ci0K
LXZvaWQgVGhlbWVDaHJvbWl1bU1hYzo6aW5mbGF0ZUNvbnRyb2xQYWludFJlY3QoQ29udHJvbFBh
cnQgcGFydCwgQ29udHJvbFN0YXRlcyBzdGF0ZXMsIEludFJlY3QmIHpvb21lZFJlY3QsIGZsb2F0
IHpvb21GYWN0b3IpIGNvbnN0Ci17Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCi0g
ICAgc3dpdGNoIChwYXJ0KSB7Ci0gICAgICAgIGNhc2UgQ2hlY2tib3hQYXJ0OiB7Ci0gICAgICAg
ICAgICAvLyBXZSBpbmZsYXRlIHRoZSByZWN0IGFzIG5lZWRlZCB0byBhY2NvdW50IGZvciBwYWRk
aW5nIGluY2x1ZGVkIGluIHRoZSBjZWxsIHRvIGFjY29tbW9kYXRlIHRoZSBjaGVja2JveAotICAg
ICAgICAgICAgLy8gc2hhZG93IiBhbmQgdGhlIGNoZWNrLiAgV2UgZG9uJ3QgY29uc2lkZXIgdGhp
cyBwYXJ0IG9mIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRyb2wgaW4gV2ViS2l0LgotICAgICAgICAg
ICAgTlNDZWxsICpjZWxsID0gY2hlY2tib3goc3RhdGVzLCB6b29tZWRSZWN0LCB6b29tRmFjdG9y
KTsKLSAgICAgICAgICAgIE5TQ29udHJvbFNpemUgY29udHJvbFNpemUgPSBbY2VsbCBjb250cm9s
U2l6ZV07Ci0gICAgICAgICAgICBJbnRTaXplIHpvb21lZFNpemUgPSBjaGVja2JveFNpemVzKClb
Y29udHJvbFNpemVdOwotICAgICAgICAgICAgem9vbWVkU2l6ZS5zZXRIZWlnaHQoem9vbWVkU2l6
ZS5oZWlnaHQoKSAqIHpvb21GYWN0b3IpOwotICAgICAgICAgICAgem9vbWVkU2l6ZS5zZXRXaWR0
aCh6b29tZWRTaXplLndpZHRoKCkgKiB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIHpvb21lZFJl
Y3QgPSBpbmZsYXRlUmVjdCh6b29tZWRSZWN0LCB6b29tZWRTaXplLCBjaGVja2JveE1hcmdpbnMo
Y29udHJvbFNpemUpLCB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgUmFkaW9QYXJ0OiB7Ci0gICAgICAgICAgICAvLyBXZSBpbmZsYXRlIHRo
ZSByZWN0IGFzIG5lZWRlZCB0byBhY2NvdW50IGZvciBwYWRkaW5nIGluY2x1ZGVkIGluIHRoZSBj
ZWxsIHRvIGFjY29tbW9kYXRlIHRoZSByYWRpbyBidXR0b24KLSAgICAgICAgICAgIC8vIHNoYWRv
dyIuICBXZSBkb24ndCBjb25zaWRlciB0aGlzIHBhcnQgb2YgdGhlIGJvdW5kcyBvZiB0aGUgY29u
dHJvbCBpbiBXZWJLaXQuCi0gICAgICAgICAgICBOU0NlbGwgKmNlbGwgPSByYWRpbyhzdGF0ZXMs
IHpvb21lZFJlY3QsIHpvb21GYWN0b3IpOwotICAgICAgICAgICAgTlNDb250cm9sU2l6ZSBjb250
cm9sU2l6ZSA9IFtjZWxsIGNvbnRyb2xTaXplXTsKLSAgICAgICAgICAgIEludFNpemUgem9vbWVk
U2l6ZSA9IHJhZGlvU2l6ZXMoKVtjb250cm9sU2l6ZV07Ci0gICAgICAgICAgICB6b29tZWRTaXpl
LnNldEhlaWdodCh6b29tZWRTaXplLmhlaWdodCgpICogem9vbUZhY3Rvcik7Ci0gICAgICAgICAg
ICB6b29tZWRTaXplLnNldFdpZHRoKHpvb21lZFNpemUud2lkdGgoKSAqIHpvb21GYWN0b3IpOwot
ICAgICAgICAgICAgem9vbWVkUmVjdCA9IGluZmxhdGVSZWN0KHpvb21lZFJlY3QsIHpvb21lZFNp
emUsIHJhZGlvTWFyZ2lucyhjb250cm9sU2l6ZSksIHpvb21GYWN0b3IpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBQdXNoQnV0dG9uUGFydDoKLSAgICAgICAg
Y2FzZSBEZWZhdWx0QnV0dG9uUGFydDoKLSAgICAgICAgY2FzZSBCdXR0b25QYXJ0OiB7Ci0gICAg
ICAgICAgICBOU0J1dHRvbkNlbGwgKmNlbGwgPSBidXR0b24ocGFydCwgc3RhdGVzLCB6b29tZWRS
ZWN0LCB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIE5TQ29udHJvbFNpemUgY29udHJvbFNpemUg
PSBbY2VsbCBjb250cm9sU2l6ZV07Ci0KLSAgICAgICAgICAgIC8vIFdlIGluZmxhdGUgdGhlIHJl
Y3QgYXMgbmVlZGVkIHRvIGFjY291bnQgZm9yIHRoZSBBcXVhIGJ1dHRvbidzIHNoYWRvdy4KLSAg
ICAgICAgICAgIGlmIChbY2VsbCBiZXplbFN0eWxlXSA9PSBOU1JvdW5kZWRCZXplbFN0eWxlKSB7
Ci0gICAgICAgICAgICAgICAgSW50U2l6ZSB6b29tZWRTaXplID0gYnV0dG9uU2l6ZXMoKVtjb250
cm9sU2l6ZV07Ci0gICAgICAgICAgICAgICAgem9vbWVkU2l6ZS5zZXRIZWlnaHQoem9vbWVkU2l6
ZS5oZWlnaHQoKSAqIHpvb21GYWN0b3IpOwotICAgICAgICAgICAgICAgIHpvb21lZFNpemUuc2V0
V2lkdGgoem9vbWVkUmVjdC53aWR0aCgpKTsgLy8gQnV0dG9ucyBkb24ndCBldmVyIGNvbnN0cmFp
biB3aWR0aCwgc28gdGhlIHpvb21lZCB3aWR0aCBjYW4ganVzdCBiZSBob25vcmVkLgotICAgICAg
ICAgICAgICAgIHpvb21lZFJlY3QgPSBpbmZsYXRlUmVjdCh6b29tZWRSZWN0LCB6b29tZWRTaXpl
LCBidXR0b25NYXJnaW5zKGNvbnRyb2xTaXplKSwgem9vbUZhY3Rvcik7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIElubmVyU3BpbkJ1
dHRvblBhcnQ6IHsKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgc3RlcHBlck1hcmdpbls0
XSA9IHsgMCwgMCwgMCwgMCB9OwotICAgICAgICAgICAgQ29udHJvbFNpemUgY29udHJvbFNpemUg
PSBjb250cm9sU2l6ZUZyb21QaXhlbFNpemUoc3RlcHBlclNpemVzKCksIHpvb21lZFJlY3Quc2l6
ZSgpLCB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIEludFNpemUgem9vbWVkU2l6ZSA9IHN0ZXBw
ZXJTaXplcygpW2NvbnRyb2xTaXplXTsKLSAgICAgICAgICAgIHpvb21lZFNpemUuc2V0SGVpZ2h0
KHpvb21lZFNpemUuaGVpZ2h0KCkgKiB6b29tRmFjdG9yKTsKLSAgICAgICAgICAgIHpvb21lZFNp
emUuc2V0V2lkdGgoem9vbWVkU2l6ZS53aWR0aCgpICogem9vbUZhY3Rvcik7Ci0gICAgICAgICAg
ICB6b29tZWRSZWN0ID0gaW5mbGF0ZVJlY3Qoem9vbWVkUmVjdCwgem9vbWVkU2l6ZSwgc3RlcHBl
ck1hcmdpbiwgem9vbUZhY3Rvcik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlMKLX0KLQotdm9pZCBUaGVtZUNocm9taXVtTWFjOjpwYWludChDb250cm9s
UGFydCBwYXJ0LCBDb250cm9sU3RhdGVzIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiB6b29tZWRSZWN0LCBmbG9hdCB6b29tRmFjdG9yLCBTY3JvbGxWaWV3
KiBzY3JvbGxWaWV3KSBjb25zdAotewotICAgIHN3aXRjaCAocGFydCkgewotICAgICAgICBjYXNl
IENoZWNrYm94UGFydDoKLSAgICAgICAgICAgIHBhaW50Q2hlY2tib3goc3RhdGVzLCBjb250ZXh0
LCB6b29tZWRSZWN0LCB6b29tRmFjdG9yLCBzY3JvbGxWaWV3KTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIFJhZGlvUGFydDoKLSAgICAgICAgICAgIHBhaW50UmFkaW8oc3RhdGVz
LCBjb250ZXh0LCB6b29tZWRSZWN0LCB6b29tRmFjdG9yLCBzY3JvbGxWaWV3KTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIFB1c2hCdXR0b25QYXJ0OgotICAgICAgICBjYXNlIERl
ZmF1bHRCdXR0b25QYXJ0OgotICAgICAgICBjYXNlIEJ1dHRvblBhcnQ6Ci0gICAgICAgIGNhc2Ug
U3F1YXJlQnV0dG9uUGFydDoKLSAgICAgICAgICAgIHBhaW50QnV0dG9uKHBhcnQsIHN0YXRlcywg
Y29udGV4dCwgem9vbWVkUmVjdCwgem9vbUZhY3Rvciwgc2Nyb2xsVmlldyk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBJbm5lclNwaW5CdXR0b25QYXJ0OgotICAgICAgICAgICAg
cGFpbnRTdGVwcGVyKHN0YXRlcywgY29udGV4dCwgem9vbWVkUmVjdCwgem9vbUZhY3Rvciwgc2Ny
b2xsVmlldyk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgIH0KLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1RoZW1lTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1RoZW1l
TWFjLm1tCmluZGV4IDM0YTljZmYzZmE5ZTlhMDA4MmYzNzQ2MmY0NjE2NmMyNjQ5MWQ3Y2MuLjdh
NGY5NDVjZGViMjE2NzM2MzQ2ZjZmNzI1NDk5MmMxODAyNjE1NTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0KQEAgLTU1MiwxOSArNTUyLDIzIEBAIHN0YXRpYyB2b2lk
IHBhaW50U3RlcHBlcihDb250cm9sU3RhdGVzIHN0YXRlcywgR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBJCiAgICAgICAgIGludCBoZWlnaHREaWZmID0gY2xhbXBUb0ludGVnZXIoYm91
bmRzLnNpemUuaGVpZ2h0IC0gYmFja2dyb3VuZEJvdW5kcy5zaXplLmhlaWdodCk7CiAgICAgICAg
IGJhY2tncm91bmRCb3VuZHMub3JpZ2luLnkgPSBib3VuZHMub3JpZ2luLnkgKyAoaGVpZ2h0RGlm
ZiAvIDIpICsgMTsKICAgICB9Ci0gICAgSElUaGVtZURyYXdCdXR0b24oJmJhY2tncm91bmRCb3Vu
ZHMsICZkcmF3SW5mbywgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIGtISVRoZW1lT3JpZW50
YXRpb25Ob3JtYWwsIDApOworCisgICAgTG9jYWxDdXJyZW50R3JhcGhpY3NDb250ZXh0IGxvY2Fs
Q29udGV4dChjb250ZXh0KTsKKyAgICBISVRoZW1lRHJhd0J1dHRvbigmYmFja2dyb3VuZEJvdW5k
cywgJmRyYXdJbmZvLCBsb2NhbENvbnRleHQuY2dDb250ZXh0KCksIGtISVRoZW1lT3JpZW50YXRp
b25Ob3JtYWwsIDApOwogfQogCiAvLyBUaGlzIHdpbGwgZW5zdXJlIHRoYXQgd2UgYWx3YXlzIHJl
dHVybiBhIHZhbGlkIE5TVmlldywgZXZlbiBpZiBTY3JvbGxWaWV3IGRvZXNuJ3QgaGF2ZSBhbiBh
c3NvY2lhdGVkIGRvY3VtZW50IE5TVmlldy4KIC8vIElmIHRoZSBTY3JvbGxWaWV3IGRvZXNuJ3Qg
aGF2ZSBhbiBOU1ZpZXcsIHdlIHdpbGwgcmV0dXJuIGEgZmFrZSBOU1ZpZXcgd2hvc2Ugc29sZSBw
dXJwb3NlIGlzIHRvIHRlbGwgQXBwS2l0IHRoYXQgaXQncyBmbGlwcGVkLgogTlNWaWV3ICpUaGVt
ZU1hYzo6ZW5zdXJlZFZpZXcoU2Nyb2xsVmlldyogc2Nyb2xsVmlldykKIHsKKyNpZiAhUExBVEZP
Uk0oQ0hST01JVU0pCiAgICAgaWYgKE5TVmlldyAqZG9jdW1lbnRWaWV3ID0gc2Nyb2xsVmlldy0+
ZG9jdW1lbnRWaWV3KCkpCiAgICAgICAgIHJldHVybiBkb2N1bWVudFZpZXc7CisjZW5kaWYKICAg
ICAKICAgICAvLyBVc2UgYSBmYWtlIGZsaXBwZWQgdmlldy4KICAgICBzdGF0aWMgTlNWaWV3ICpm
bGlwcGVkVmlldyA9IFtbV2ViQ29yZUZsaXBwZWRWaWV3IGFsbG9jXSBpbml0XTsKLSAgICBbZmxp
cHBlZFZpZXcgc2V0RnJhbWVTaXplOnNjcm9sbFZpZXctPmNvbnRlbnRzU2l6ZSgpXTsKKyAgICBb
ZmxpcHBlZFZpZXcgc2V0RnJhbWVTaXplOk5TU2l6ZUZyb21DR1NpemUoc2Nyb2xsVmlldy0+Y29u
dGVudHNTaXplKCkpXTsKIAogICAgIHJldHVybiBmbGlwcGVkVmlldzsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>