<?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>246078</bug_id>
          
          <creation_ts>2022-10-05 05:41:05 -0700</creation_ts>
          <short_desc>[LFC][Integration] Only maintain one LayoutState per render tree</short_desc>
          <delta_ts>2022-10-07 10:40:36 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Antti Koivisto">koivisto</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1903393</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-10-05 05:41:05 -0700</bug_when>
    <thetext>LayoutState describes the whole layout. We should only have one per tree instead of one per formatting context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1903394</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-10-05 05:44:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/100804461&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1903395</commentid>
    <comment_count>2</comment_count>
      <attachid>462809</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-10-05 05:49:00 -0700</bug_when>
    <thetext>Created attachment 462809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1904063</commentid>
    <comment_count>3</comment_count>
      <attachid>462867</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-10-07 09:12:07 -0700</bug_when>
    <thetext>Created attachment 462867
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1904081</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-10-07 10:40:32 -0700</bug_when>
    <thetext>Committed 255277@main (c227d6059a2e): &lt;https://commits.webkit.org/255277@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 462867.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>462809</attachid>
            <date>2022-10-05 05:49:00 -0700</date>
            <delta_ts>2022-10-07 09:12:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-246078-20221005154857.patch</filename>
            <type>text/plain</type>
            <size>25663</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">RnJvbSBhYzBkNDg3NjUzODRmZTk0NzRjOTk2YWExMWZkOTNjOTQ0MTQwYTQwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnR0aSBLb2l2aXN0byA8YW50dGlAYXBwbGUuY29tPgpEYXRl
OiBXZWQsIDUgT2N0IDIwMjIgMTU6NDQ6NTUgKzAzMDAKU3ViamVjdDogW1BBVENIXSBbTEZDXVtJ
bnRlZ3JhdGlvbl0gT25seSBtYWludGFpbiBvbmUgTGF5b3V0U3RhdGUgcGVyIHJlbmRlcgogdHJl
ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ2MDc4IHJkYXI6Ly8x
MDA4MDQ0NjEKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKTGF5b3V0U3RhdGUgZGVzY3Jp
YmVzIHRoZSB3aG9sZSBsYXlvdXQuIFdlIHNob3VsZCBvbmx5IGhhdmUgb25lIHBlciB0cmVlIGlu
c3RlYWQgb2Ygb25lIHBlciBmb3JtYXR0aW5nIGNvbnRleHQuCgoqIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHA6CihXZWJDb3JlOjpEb2N1bWVudDo6c2V0Q29tcGF0aWJpbGl0eU1vZGUp
OgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUuY3BwOgooV2ViQ29yZTo6
TGF5b3V0OjpGb3JtYXR0aW5nU3RhdGU6OmJveEdlb21ldHJ5KToKKiBTb3VyY2UvV2ViQ29yZS9s
YXlvdXQvTGF5b3V0U3RhdGUuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6TGF5
b3V0U3RhdGUpOgooV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6dXBkYXRlUXVpcmtzTW9k
ZSk6CihXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpmb3JtYXR0aW5nU3RhdGVGb3JGb3Jt
YXR0aW5nQ29udGV4dCBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpmb3Jt
YXR0aW5nU3RhdGVGb3JJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCBjb25zdCk6CihXZWJDb3JlOjpM
YXlvdXQ6OkxheW91dFN0YXRlOjplbnN1cmVJbmxpbmVGb3JtYXR0aW5nU3RhdGUpOgooV2ViQ29y
ZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6ZGVzdHJveUlubGluZUZvcm1hdHRpbmdTdGF0ZSk6CihX
ZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpzZXRJc0ludGVncmF0ZWRSb290Qm94Rmlyc3RD
aGlsZCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmg6CihX
ZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjppc0ludGVncmF0ZWRSb290Qm94Rmlyc3RDaGls
ZCBjb25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcDoKKFdlYkNvcmU6OkxheW91
dDo6SW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRlZFRleHRJbmRlbnQgY29uc3QpOgoq
IFNvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRy
ZWUuY3BwOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkJveFRyZWU6OkJveFRyZWUpOgoq
IFNvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRp
b25MaW5lTGF5b3V0LmNwcDoKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0
OjpMaW5lTGF5b3V0KToKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0Ojp+
TGluZUxheW91dCk6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6dXBk
YXRlTGlzdE1hcmtlckRpbWVuc2lvbnMpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246Okxp
bmVMYXlvdXQ6OnVwZGF0ZUxheW91dEJveERpbWVuc2lvbnMpOgooV2ViQ29yZTo6TGF5b3V0SW50
ZWdyYXRpb246OkxpbmVMYXlvdXQ6OnVwZGF0ZUxpbmVCcmVha0JveERpbWVuc2lvbnMpOgooV2Vi
Q29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OnVwZGF0ZUlubGluZUJveERpbWVu
c2lvbnMpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OmxheW91dCk6
CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6Y29uc3RydWN0Q29udGVu
dCk6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6dXBkYXRlRm9ybWF0
dGluZ1Jvb3RHZW9tZXRyeUFuZEludmFsaWRhdGUpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRp
b246OkxpbmVMYXlvdXQ6OnByZXBhcmVMYXlvdXRTdGF0ZSk6CihXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6TGluZUxheW91dDo6cHJlcGFyZUZsb2F0aW5nU3RhdGUpOgoqIFNvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0
Lmg6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6bGF5b3V0U3RhdGUp
OgoqIFNvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oOgooV2ViQ29y
ZTo6TGF5b3V0OjpCb3g6OmlzRmlyc3RDaGlsZEZvckludGVncmF0aW9uIGNvbnN0KToKKFdlYkNv
cmU6OkxheW91dDo6Qm94OjpzZXRJc0ZpcnN0Q2hpbGRGb3JJbnRlZ3JhdGlvbik6CiogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgooV2ViQ29yZTo6UmVuZGVyVmlldzo6
UmVuZGVyVmlldyk6CihXZWJDb3JlOjpSZW5kZXJWaWV3OjpsYXlvdXQpOgooV2ViQ29yZTo6UmVu
ZGVyVmlldzo6ZW5zdXJlTGF5b3V0U3RhdGUpOgooV2ViQ29yZTo6UmVuZGVyVmlldzo6dXBkYXRl
UXVpcmtzTW9kZSk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKLS0t
CiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwICAgICAgICAgICAgICAgfCAgMyArKwog
U291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdTdGF0ZS5jcHAgICAgIHwgIDIgKy0KIFNv
dXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAgICAgICAgICB8IDQwICsrKysrKy0t
LS0tLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5oICAgICAgICAg
ICB8ICA4ICsrLS0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCAgICAg
ICB8ICA1ICstLQogLi4uL2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQm94VHJlZS5jcHAg
IHwgIDEgKwogLi4uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwICAgIHwg
MjcgKysrKysrLS0tLS0tLQogLi4uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQu
aCAgICAgIHwgIDUgKystCiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRC
b3guaCAgfCAgMyArKwogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwICAg
ICAgIHwgMTggKysrKysrKystCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5o
ICAgICAgICAgfCAgNCArKwogMTEgZmlsZXMgY2hhbmdlZCwgNjUgaW5zZXJ0aW9ucygrKSwgNTEg
ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggY2M3ODFkNTk1MDRhLi4x
M2RjZDdhM2FhMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtOTEwLDYgKzkxMCw5IEBA
IHZvaWQgRG9jdW1lbnQ6OnNldENvbXBhdGliaWxpdHlNb2RlKERvY3VtZW50Q29tcGF0aWJpbGl0
eU1vZGUgbW9kZSkKICAgICAgICAgZXh0ZW5zaW9uU3R5bGVTaGVldHMoKS5jbGVhclBhZ2VVc2Vy
U2hlZXQoKTsKICAgICAgICAgZXh0ZW5zaW9uU3R5bGVTaGVldHMoKS5pbnZhbGlkYXRlSW5qZWN0
ZWRTdHlsZVNoZWV0Q2FjaGUoKTsKICAgICB9CisKKyAgICBpZiAocmVuZGVyVmlldygpKQorICAg
ICAgICByZW5kZXJWaWV3KCktPnVwZGF0ZVF1aXJrc01vZGUoKTsKIH0KIAogU3RyaW5nIERvY3Vt
ZW50Ojpjb21wYXRNb2RlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9Gb3JtYXR0aW5nU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdT
dGF0ZS5jcHAKaW5kZXggZjE2YzVhYjk0MWYxLi4wNTVlMGQzMjRiOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUuY3BwCkBAIC01MCw3ICs1MCw3IEBAIEJveEdlb21l
dHJ5JiBGb3JtYXR0aW5nU3RhdGU6OmJveEdlb21ldHJ5KGNvbnN0IEJveCYgbGF5b3V0Qm94KQog
ewogICAgIC8vIFNob3VsZCBuZXZlciBuZWVkIHRvIG11dGF0ZSBhIGRpc3BsYXkgYm94IG91dHNp
ZGUgb2YgdGhlIGZvcm1hdHRpbmcgY29udGV4dCwgdW5sZXNzIHdlIGFyZSB0cnlpbmcKICAgICAv
LyB0byBjb21wdXRlIHRoZSBzdGF0aWMgcG9zaXRpb24gb2YgYW4gb3V0LW9mLWZsb3cgYm94Lgot
ICAgIEFTU0VSVCgobGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIGlzSW5saW5l
Rm9ybWF0dGluZ1N0YXRlKCkpIHx8ICZsYXlvdXRTdGF0ZSgpLmZvcm1hdHRpbmdTdGF0ZUZvckZv
cm1hdHRpbmdDb250ZXh0KEZvcm1hdHRpbmdDb250ZXh0Ojpmb3JtYXR0aW5nQ29udGV4dFJvb3Qo
bGF5b3V0Qm94KSkgPT0gdGhpcyk7CisgICAgQVNTRVJUKChsYXlvdXRCb3guaXNPdXRPZkZsb3dQ
b3NpdGlvbmVkKCkgJiYgaXNJbmxpbmVGb3JtYXR0aW5nU3RhdGUoKSkgfHwgbGF5b3V0Qm94Lmlz
SW5saW5lSW50ZWdyYXRpb25Sb290KCkgfHwgJmxheW91dFN0YXRlKCkuZm9ybWF0dGluZ1N0YXRl
Rm9yRm9ybWF0dGluZ0NvbnRleHQoRm9ybWF0dGluZ0NvbnRleHQ6OmZvcm1hdHRpbmdDb250ZXh0
Um9vdChsYXlvdXRCb3gpKSA9PSB0aGlzKTsKICAgICAvLyBBbm9ueW1vdXMgdGV4dCB3cmFwcGVy
cyBkbyBub3QgbmVlZCB0byBjb21wdXRlIGJveCBnZW9tZXRyeS4gVGhleSBpbml0aWF0ZSBpbmxp
bmUgcnVucy4KICAgICBBU1NFUlQoIWxheW91dEJveC5pc0lubGluZVRleHRCb3goKSk7CiAgICAg
cmV0dXJuIGxheW91dFN0YXRlKCkuZW5zdXJlR2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwCmluZGV4IDBmYzQ3YmQyMTY3ZS4uY2Y4ZjYx
NWQ4ZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAKQEAgLTUxLDYgKzUx
LDEzIEBAIExheW91dFN0YXRlOjpMYXlvdXRTdGF0ZShjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQs
IGNvbnN0IEVsZW1lbnRCb3gmIHJvb3RDb250YWluCiAgICAgLy8gSXQgbWFrZXMgYWJzb2x1dGVs
eSBubyBzZW5zZSB0byBjb25zdHJ1Y3QgYSBkZWRpY2F0ZWQgbGF5b3V0IHN0YXRlIGZvciBhIG5v
bi1mb3JtYXR0aW5nIGNvbnRleHQgcm9vdCAobGF5b3V0IHdvdWxkIGJlIGEgbm8tb3ApLgogICAg
IEFTU0VSVChyb290KCkuZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKTsKIAorICAgIHVw
ZGF0ZVF1aXJrc01vZGUoZG9jdW1lbnQpOworfQorCitMYXlvdXRTdGF0ZTo6fkxheW91dFN0YXRl
KCkgPSBkZWZhdWx0OworCit2b2lkIExheW91dFN0YXRlOjp1cGRhdGVRdWlya3NNb2RlKGNvbnN0
IERvY3VtZW50JiBkb2N1bWVudCkKK3sKICAgICBhdXRvIHF1aXJrc01vZGUgPSBbJl0gewogICAg
ICAgICBpZiAoZG9jdW1lbnQuaW5MaW1pdGVkUXVpcmtzTW9kZSgpKQogICAgICAgICAgICAgcmV0
dXJuIExheW91dFN0YXRlOjpRdWlya3NNb2RlOjpMaW1pdGVkOwpAQCAtNjEsOCArNjgsNiBAQCBM
YXlvdXRTdGF0ZTo6TGF5b3V0U3RhdGUoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBF
bGVtZW50Qm94JiByb290Q29udGFpbgogICAgIHNldFF1aXJrc01vZGUocXVpcmtzTW9kZSgpKTsK
IH0KIAotTGF5b3V0U3RhdGU6On5MYXlvdXRTdGF0ZSgpID0gZGVmYXVsdDsKLQogQm94R2VvbWV0
cnkmIExheW91dFN0YXRlOjpnZW9tZXRyeUZvclJvb3RCb3goKQogewogICAgIHJldHVybiBlbnN1
cmVHZW9tZXRyeUZvckJveChyb290KCkpOwpAQCAtOTYsMTEgKzEwMSw2IEBAIEZvcm1hdHRpbmdT
dGF0ZSYgTGF5b3V0U3RhdGU6OmZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdDb250ZXh0KGNv
bnN0IEVsZW1lbnRCCiB7CiAgICAgQVNTRVJUKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxp
c2hlc0Zvcm1hdHRpbmdDb250ZXh0KCkpOwogCi0gICAgaWYgKGlzSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHRJbnRlZ3JhdGlvbigpKSB7Ci0gICAgICAgIEFTU0VSVCgmZm9ybWF0dGluZ0NvbnRleHRS
b290ID09IG1fcm9vdENvbnRhaW5lci5wdHIoKSk7Ci0gICAgICAgIHJldHVybiAqbV9yb290SW5s
aW5lRm9ybWF0dGluZ1N0YXRlRm9ySW50ZWdyYXRpb247Ci0gICAgfQotCiAgICAgaWYgKGlzRmxl
eEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb24oKSkgewogICAgICAgICBBU1NFUlQoJmZvcm1h
dHRpbmdDb250ZXh0Um9vdCA9PSBtX3Jvb3RDb250YWluZXIucHRyKCkpOwogICAgICAgICByZXR1
cm4gKm1fcm9vdEZsZXhGb3JtYXR0aW5nU3RhdGVGb3JJbnRlZ3JhdGlvbjsKQEAgLTEyNSwxMSAr
MTI1LDYgQEAgSW5saW5lRm9ybWF0dGluZ1N0YXRlJiBMYXlvdXRTdGF0ZTo6Zm9ybWF0dGluZ1N0
YXRlRm9ySW5saW5lRm9ybWF0dGluZ0NvbnRleHQoY28KIHsKICAgICBBU1NFUlQoaW5saW5lRm9y
bWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSk7
CiAKLSAgICBpZiAoaXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uKCkpIHsKLSAg
ICAgICAgQVNTRVJUKCZpbmxpbmVGb3JtYXR0aW5nQ29udGV4dFJvb3QgPT0gbV9yb290Q29udGFp
bmVyLnB0cigpKTsKLSAgICAgICAgcmV0dXJuICptX3Jvb3RJbmxpbmVGb3JtYXR0aW5nU3RhdGVG
b3JJbnRlZ3JhdGlvbjsKLSAgICB9Ci0KICAgICByZXR1cm4gKm1faW5saW5lRm9ybWF0dGluZ1N0
YXRlcy5nZXQoJmlubGluZUZvcm1hdHRpbmdDb250ZXh0Um9vdCk7CiB9CiAKQEAgLTE2NSw3ICsx
NjAsNyBAQCBJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjplbnN1cmVJbmxpbmVG
b3JtYXR0aW5nU3RhdGUoY29uc3QgRWxlbWVudEJveAogICAgICAgICAvLyBJZiB0aGUgYmxvY2sg
Y29udGFpbmVyIGJveCB0aGF0IGluaXRpYXRlcyB0aGlzIGlubGluZSBmb3JtYXR0aW5nIGNvbnRl
eHQgYWxzbyBlc3RhYmxpc2hlcyBhIGJsb2NrIGNvbnRleHQsIHRoZSBmbG9hdHMgb3V0c2lkZSBv
ZiB0aGUgZm9ybWF0dGluZyByb290CiAgICAgICAgIC8vIHNob3VsZCBub3QgaW50ZXJmZXJlIHdp
dGggdGhlIGNvbnRlbnQgaW5zaWRlLgogICAgICAgICAvLyA8ZGl2IHN0eWxlPSJmbG9hdDogbGVm
dCI+PC9kaXY+PGRpdiBzdHlsZT0ib3ZlcmZsb3c6IGhpZGRlbiI+IDwtIGlzIGEgbm9uLWludHJ1
c2l2ZSBmbG9hdCwgYmVjYXVzZSBvdmVyZmxvdzogaGlkZGVuIHRyaWdnZXJzIG5ldyBibG9jayBm
b3JtYXR0aW5nIGNvbnRleHQuPC9kaXY+Ci0gICAgICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dFJv
b3QuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkpCisgICAgICAgIGlmIChmb3Jt
YXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkgfHwg
Zm9ybWF0dGluZ0NvbnRleHRSb290LmlzSW5saW5lSW50ZWdyYXRpb25Sb290KCkpCiAgICAgICAg
ICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KEZsb2F0aW5nU3Rh
dGU6OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ0NvbnRleHRSb290KSwgKnRoaXMpOwogCiAgICAg
ICAgIC8vIE90aGVyd2lzZSwgdGhlIGZvcm1hdHRpbmcgY29udGV4dCBpbmhlcml0cyB0aGUgZmxv
YXRzIGZyb20gdGhlIHBhcmVudCBmb3JtYXR0aW5nIGNvbnRleHQuCkBAIC0xODEsMTQgKzE3Niw2
IEBAIElubGluZUZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmVuc3VyZUlubGluZUZvcm1h
dHRpbmdTdGF0ZShjb25zdCBFbGVtZW50Qm94CiAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPElu
bGluZUZvcm1hdHRpbmdTdGF0ZT4ocGFyZW50Rm9ybWF0dGluZ1N0YXRlKCkuZmxvYXRpbmdTdGF0
ZSgpLCAqdGhpcyk7CiAgICAgfTsKIAotICAgIGlmIChpc0lubGluZUZvcm1hdHRpbmdDb250ZXh0
SW50ZWdyYXRpb24oKSkgewotICAgICAgICBpZiAoIW1fcm9vdElubGluZUZvcm1hdHRpbmdTdGF0
ZUZvckludGVncmF0aW9uKSB7Ci0gICAgICAgICAgICBBU1NFUlQoJmZvcm1hdHRpbmdDb250ZXh0
Um9vdCA9PSBtX3Jvb3RDb250YWluZXIucHRyKCkpOwotICAgICAgICAgICAgbV9yb290SW5saW5l
Rm9ybWF0dGluZ1N0YXRlRm9ySW50ZWdyYXRpb24gPSBtYWtlVW5pcXVlPElubGluZUZvcm1hdHRp
bmdTdGF0ZT4oRmxvYXRpbmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nQ29udGV4dFJv
b3QpLCAqdGhpcyk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuICptX3Jvb3RJbmxpbmVGb3Jt
YXR0aW5nU3RhdGVGb3JJbnRlZ3JhdGlvbjsKLSAgICB9Ci0KICAgICByZXR1cm4gKm1faW5saW5l
Rm9ybWF0dGluZ1N0YXRlcy5lbnN1cmUoJmZvcm1hdHRpbmdDb250ZXh0Um9vdCwgY3JlYXRlKS5p
dGVyYXRvci0+dmFsdWU7CiB9CiAKQEAgLTIzNSw2ICsyMjIsMTEgQEAgRmxleEZvcm1hdHRpbmdT
dGF0ZSYgTGF5b3V0U3RhdGU6OmVuc3VyZUZsZXhGb3JtYXR0aW5nU3RhdGUoY29uc3QgRWxlbWVu
dEJveCYgZm8KICAgICByZXR1cm4gKm1fZmxleEZvcm1hdHRpbmdTdGF0ZXMuZW5zdXJlKCZmb3Jt
YXR0aW5nQ29udGV4dFJvb3QsIGNyZWF0ZSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCit2b2lkIExh
eW91dFN0YXRlOjpkZXN0cm95SW5saW5lRm9ybWF0dGluZ1N0YXRlKGNvbnN0IEVsZW1lbnRCb3gm
IGZvcm1hdHRpbmdDb250ZXh0Um9vdCkKK3sKKyAgICBtX2lubGluZUZvcm1hdHRpbmdTdGF0ZXMu
cmVtb3ZlKCZmb3JtYXR0aW5nQ29udGV4dFJvb3QpOworfQorCiB2b2lkIExheW91dFN0YXRlOjpz
ZXRWaWV3cG9ydFNpemUoY29uc3QgTGF5b3V0U2l6ZSYgdmlld3BvcnRTaXplKQogewogICAgIEFT
U0VSVChpc0lubGluZUZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb24oKSk7CkBAIC0yNDcsMTIg
KzIzOSw2IEBAIExheW91dFNpemUgTGF5b3V0U3RhdGU6OnZpZXdwb3J0U2l6ZSgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fdmlld3BvcnRTaXplOwogfQogCi12b2lkIExheW91dFN0YXRlOjpzZXRJc0lu
dGVncmF0ZWRSb290Qm94Rmlyc3RDaGlsZChib29sIHZhbHVlKQotewotICAgIEFTU0VSVChpc0lu
bGluZUZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb24oKSk7Ci0gICAgbV9pc0ludGVncmF0ZWRS
b290Qm94Rmlyc3RDaGlsZCA9IHZhbHVlID8gSXNJbnRlZ3JhdGVkUm9vdEJveEZpcnN0Q2hpbGQ6
OlllcyA6IElzSW50ZWdyYXRlZFJvb3RCb3hGaXJzdENoaWxkOjpObzsKLX0KLQogYm9vbCBMYXlv
dXRTdGF0ZTo6c2hvdWxkSWdub3JlVHJhaWxpbmdMZXR0ZXJTcGFjaW5nKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gaXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9MYXlvdXRTdGF0ZS5oCmluZGV4IDNiOGI0OWFkNjVjOS4uYzY3OTc0NzI2NjlmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuaApAQCAtNTQsNiArNTQsOCBAQCBwdWJsaWM6
CiAgICAgTGF5b3V0U3RhdGUoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBFbGVtZW50Qm94JiByb290
Q29udGFpbmVyLCBzdGQ6Om9wdGlvbmFsPEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25UeXBl
PiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgfkxheW91dFN0YXRlKCk7CiAKKyAgICB2b2lkIHVwZGF0
ZVF1aXJrc01vZGUoY29uc3QgRG9jdW1lbnQmKTsKKwogICAgIElubGluZUZvcm1hdHRpbmdTdGF0
ZSYgZW5zdXJlSW5saW5lRm9ybWF0dGluZ1N0YXRlKGNvbnN0IEVsZW1lbnRCb3gmIGZvcm1hdHRp
bmdDb250ZXh0Um9vdCk7CiAgICAgQmxvY2tGb3JtYXR0aW5nU3RhdGUmIGVuc3VyZUJsb2NrRm9y
bWF0dGluZ1N0YXRlKGNvbnN0IEVsZW1lbnRCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCk7CiAg
ICAgVGFibGVGb3JtYXR0aW5nU3RhdGUmIGVuc3VyZVRhYmxlRm9ybWF0dGluZ1N0YXRlKGNvbnN0
IEVsZW1lbnRCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCk7CkBAIC02Niw2ICs2OCw4IEBAIHB1
YmxpYzoKIAogICAgIEZvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGlu
Z0NvbnRleHQoY29uc3QgRWxlbWVudEJveCYgZm9ybWF0dGluZ1Jvb3QpIGNvbnN0OwogCisgICAg
dm9pZCBkZXN0cm95SW5saW5lRm9ybWF0dGluZ1N0YXRlKGNvbnN0IEVsZW1lbnRCb3gmIGZvcm1h
dHRpbmdDb250ZXh0Um9vdCk7CisKICAgICBib29sIGhhc0Zvcm1hdHRpbmdTdGF0ZShjb25zdCBF
bGVtZW50Qm94JiBmb3JtYXR0aW5nUm9vdCkgY29uc3Q7CiAgICAgYm9vbCBoYXNJbmxpbmVGb3Jt
YXR0aW5nU3RhdGUoY29uc3QgRWxlbWVudEJveCYgZm9ybWF0dGluZ1Jvb3QpIGNvbnN0IHsgcmV0
dXJuIG1faW5saW5lRm9ybWF0dGluZ1N0YXRlcy5jb250YWlucygmZm9ybWF0dGluZ1Jvb3QpOyB9
CiAKQEAgLTkzLDkgKzk3LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRWaWV3cG9ydFNpemUo
Y29uc3QgTGF5b3V0U2l6ZSYpOwogICAgIExheW91dFNpemUgdmlld3BvcnRTaXplKCkgY29uc3Q7
Ci0gICAgZW51bSBJc0ludGVncmF0ZWRSb290Qm94Rmlyc3RDaGlsZCB7IFllcywgTm8sIE5vdEFw
cGxpY2FibGUgfTsKLSAgICBJc0ludGVncmF0ZWRSb290Qm94Rmlyc3RDaGlsZCBpc0ludGVncmF0
ZWRSb290Qm94Rmlyc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbnRlZ3JhdGVkUm9vdEJv
eEZpcnN0Q2hpbGQ7IH0KLSAgICB2b2lkIHNldElzSW50ZWdyYXRlZFJvb3RCb3hGaXJzdENoaWxk
KGJvb2wpOwogICAgIGJvb2wgc2hvdWxkSWdub3JlVHJhaWxpbmdMZXR0ZXJTcGFjaW5nKCkgY29u
c3Q7CiAgICAgYm9vbCBzaG91bGROb3RTeW50aGVzaXplSW5saW5lQmxvY2tCYXNlbGluZSgpIGNv
bnN0OwogCkBAIC0xMjIsNyArMTIzLDYgQEAgcHJpdmF0ZToKICAgICAvLyBMRkMgaW50ZWdyYXRp
b24gb25seS4KICAgICBzdGQ6Om9wdGlvbmFsPEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25U
eXBlPiBtX2Zvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25UeXBlOwogICAgIExheW91dFNpemUg
bV92aWV3cG9ydFNpemU7Ci0gICAgSXNJbnRlZ3JhdGVkUm9vdEJveEZpcnN0Q2hpbGQgbV9pc0lu
dGVncmF0ZWRSb290Qm94Rmlyc3RDaGlsZCB7IElzSW50ZWdyYXRlZFJvb3RCb3hGaXJzdENoaWxk
OjpOb3RBcHBsaWNhYmxlIH07CiB9OwogCiBpbmxpbmUgYm9vbCBMYXlvdXRTdGF0ZTo6aGFzQm94
R2VvbWV0cnkoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5n
R2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9p
bmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAppbmRleCA0ZjMzNWQ1YjFhMGYuLjU4
OWJlODU1Y2YxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdD
b250ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5n
R2VvbWV0cnkuY3BwCkBAIC0xNjUsMTEgKzE2NSwxMCBAQCBJbmxpbmVMYXlvdXRVbml0IElubGlu
ZUZvcm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRUZXh0SW5kZW50KElzSW50cmluc2ljV2lkdGhN
bwogICAgIGlmICghcHJldmlvdXNMaW5lRW5kc1dpdGhMaW5lQnJlYWspIHsKICAgICAgICAgc2hv
dWxkSW5kZW50ID0gIXJvb3QuaXNBbm9ueW1vdXMoKTsKICAgICAgICAgaWYgKHJvb3QuaXNBbm9u
eW1vdXMoKSkgewotICAgICAgICAgICAgYXV0byBpc0ludGVncmF0ZWRSb290Qm94Rmlyc3RDaGls
ZCA9IGxheW91dFN0YXRlKCkuaXNJbnRlZ3JhdGVkUm9vdEJveEZpcnN0Q2hpbGQoKTsKLSAgICAg
ICAgICAgIGlmIChpc0ludGVncmF0ZWRSb290Qm94Rmlyc3RDaGlsZCA9PSBMYXlvdXRTdGF0ZTo6
SXNJbnRlZ3JhdGVkUm9vdEJveEZpcnN0Q2hpbGQ6Ok5vdEFwcGxpY2FibGUpCisgICAgICAgICAg
ICBpZiAoIXJvb3QuaXNJbmxpbmVJbnRlZ3JhdGlvblJvb3QoKSkKICAgICAgICAgICAgICAgICBz
aG91bGRJbmRlbnQgPSByb290LnBhcmVudCgpLmZpcnN0SW5GbG93Q2hpbGQoKSA9PSAmcm9vdDsK
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzaG91bGRJbmRlbnQgPSBpc0ludGVn
cmF0ZWRSb290Qm94Rmlyc3RDaGlsZCA9PSBMYXlvdXRTdGF0ZTo6SXNJbnRlZ3JhdGVkUm9vdEJv
eEZpcnN0Q2hpbGQ6OlllczsKKyAgICAgICAgICAgICAgICBzaG91bGRJbmRlbnQgPSByb290Lmlz
Rmlyc3RDaGlsZEZvckludGVncmF0aW9uKCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UKICAgICAg
ICAgc2hvdWxkSW5kZW50ID0gcm9vdC5zdHlsZSgpLnRleHRJbmRlbnRMaW5lKCkgPT0gVGV4dElu
ZGVudExpbmU6OkVhY2hMaW5lICYmICpwcmV2aW91c0xpbmVFbmRzV2l0aExpbmVCcmVhazsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvbkJveFRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91
dEludGVncmF0aW9uQm94VHJlZS5jcHAKaW5kZXggZjFiM2RjYTM0YTRmLi4wYzdiMmI0ZDJiZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRl
Z3JhdGlvbkJveFRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlv
bi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuY3BwCkBAIC05Nyw2ICs5Nyw3IEBAIEJveFRyZWU6
OkJveFRyZWUoUmVuZGVyQmxvY2smIHJvb3RSZW5kZXJlcikKIAogICAgIGlmIChpczxSZW5kZXJC
bG9ja0Zsb3c+KHJvb3RSZW5kZXJlcikpIHsKICAgICAgICAgcm9vdEJveC0+c2V0SXNJbmxpbmVJ
bnRlZ3JhdGlvblJvb3QoKTsKKyAgICAgICAgcm9vdEJveC0+c2V0SXNGaXJzdENoaWxkRm9ySW50
ZWdyYXRpb24ocm9vdFJlbmRlcmVyLnBhcmVudCgpLT5maXJzdENoaWxkKCkgPT0gJnJvb3RSZW5k
ZXJlcik7CiAgICAgICAgIGJ1aWxkVHJlZUZvcklubGluZUNvbnRlbnQoKTsKICAgICB9IGVsc2Ug
aWYgKGlzPFJlbmRlckZsZXhpYmxlQm94Pihyb290UmVuZGVyZXIpKQogICAgICAgICBidWlsZFRy
ZWVGb3JGbGV4Q29udGVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVM
YXlvdXQuY3BwCmluZGV4IDk1YzFkNzhkM2NmNC4uY2VlOTIwNmFlYjAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9u
TGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lu
bGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCkBAIC03MCwxNSArNzAsMTUgQEAg
bmFtZXNwYWNlIExheW91dEludGVncmF0aW9uIHsKIAogTGluZUxheW91dDo6TGluZUxheW91dChS
ZW5kZXJCbG9ja0Zsb3cmIGZsb3cpCiAgICAgOiBtX2JveFRyZWUoZmxvdykKLSAgICAsIG1fbGF5
b3V0U3RhdGUoZmxvdy5kb2N1bWVudCgpLCByb290TGF5b3V0Qm94KCksIExheW91dDo6TGF5b3V0
U3RhdGU6OkZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25UeXBlOjpJbmxpbmUpCi0gICAgLCBt
X2lubGluZUZvcm1hdHRpbmdTdGF0ZShtX2xheW91dFN0YXRlLmVuc3VyZUlubGluZUZvcm1hdHRp
bmdTdGF0ZShyb290TGF5b3V0Qm94KCkpKQorICAgICwgbV9sYXlvdXRTdGF0ZShmbG93LnZpZXco
KS5lbnN1cmVMYXlvdXRTdGF0ZSgpKQorICAgICwgbV9pbmxpbmVGb3JtYXR0aW5nU3RhdGUobGF5
b3V0U3RhdGUoKS5lbnN1cmVJbmxpbmVGb3JtYXR0aW5nU3RhdGUocm9vdExheW91dEJveCgpKSkK
IHsKLSAgICBtX2xheW91dFN0YXRlLnNldElzSW50ZWdyYXRlZFJvb3RCb3hGaXJzdENoaWxkKGZs
b3cucGFyZW50KCktPmZpcnN0Q2hpbGQoKSA9PSAmZmxvdyk7CiB9CiAKIExpbmVMYXlvdXQ6On5M
aW5lTGF5b3V0KCkKIHsKICAgICBjbGVhcklubGluZUNvbnRlbnQoKTsKKyAgICBsYXlvdXRTdGF0
ZSgpLmRlc3Ryb3lJbmxpbmVGb3JtYXR0aW5nU3RhdGUocm9vdExheW91dEJveCgpKTsKIH0KIAog
UmVuZGVyQmxvY2tGbG93KiBMaW5lTGF5b3V0OjpibG9ja0NvbnRhaW5lcihSZW5kZXJPYmplY3Qm
IHJlbmRlcmVyKQpAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgTGluZUxheW91dDo6dXBkYXRlTGlz
dE1hcmtlckRpbWVuc2lvbnMoY29uc3QgUmVuZGVyTGlzdE1hcmtlciYgbGlzdE1hcmtlcikKIAog
ICAgIGF1dG8mIGxheW91dEJveCA9IG1fYm94VHJlZS5sYXlvdXRCb3hGb3JSZW5kZXJlcihsaXN0
TWFya2VyKTsKICAgICBpZiAobGF5b3V0Qm94LmlzTGlzdE1hcmtlck91dHNpZGUoKSkgewotICAg
ICAgICBhdXRvJiByb290R2VvbWV0cnkgPSBtX2xheW91dFN0YXRlLmdlb21ldHJ5Rm9yUm9vdEJv
eCgpOworICAgICAgICBhdXRvJiByb290R2VvbWV0cnkgPSBtX2lubGluZUZvcm1hdHRpbmdTdGF0
ZS5ib3hHZW9tZXRyeShyb290TGF5b3V0Qm94KCkpOwogICAgICAgICBhdXRvJiBsaXN0TWFya2Vy
R2VvbWV0cnkgPSBtX2lubGluZUZvcm1hdHRpbmdTdGF0ZS5ib3hHZW9tZXRyeShsYXlvdXRCb3gp
OwogICAgICAgICBhdXRvIGhvcml6b250YWxNYXJnaW4gPSBsaXN0TWFya2VyR2VvbWV0cnkuaG9y
aXpvbnRhbE1hcmdpbigpOwogICAgICAgICBhdXRvIG91dHNpZGVPZmZzZXQgPSByb290R2VvbWV0
cnkucGFkZGluZ1N0YXJ0KCkudmFsdWVfb3IoMF9sdSkgKyByb290R2VvbWV0cnkuYm9yZGVyU3Rh
cnQoKTsKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIExpbmVMYXlvdXQ6OnVwZGF0ZUxheW91dEJv
eERpbWVuc2lvbnMoY29uc3QgUmVuZGVyQm94JiByZXBsYWNlZE9ySW5saW5lQmxvYwogewogICAg
IGF1dG8mIGxheW91dEJveCA9IG1fYm94VHJlZS5sYXlvdXRCb3hGb3JSZW5kZXJlcihyZXBsYWNl
ZE9ySW5saW5lQmxvY2spOwogCi0gICAgYXV0byYgcmVwbGFjZWRCb3hHZW9tZXRyeSA9IG1fbGF5
b3V0U3RhdGUuZW5zdXJlR2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKKyAgICBhdXRvJiByZXBs
YWNlZEJveEdlb21ldHJ5ID0gbGF5b3V0U3RhdGUoKS5lbnN1cmVHZW9tZXRyeUZvckJveChsYXlv
dXRCb3gpOwogICAgIGF1dG8gc2Nyb2xsYmFyU2l6ZSA9IHNjcm9sbGJhckxvZ2ljYWxTaXplKHJl
cGxhY2VkT3JJbmxpbmVCbG9jayk7CiAgICAgcmVwbGFjZWRCb3hHZW9tZXRyeS5zZXRIb3Jpem9u
dGFsU3BhY2VGb3JTY3JvbGxiYXIoc2Nyb2xsYmFyU2l6ZS53aWR0aCgpKTsKICAgICByZXBsYWNl
ZEJveEdlb21ldHJ5LnNldFZlcnRpY2FsU3BhY2VGb3JTY3JvbGxiYXIoc2Nyb2xsYmFyU2l6ZS5o
ZWlnaHQoKSk7CkBAIC0zMjYsNyArMzI2LDcgQEAgdm9pZCBMaW5lTGF5b3V0Ojp1cGRhdGVMYXlv
dXRCb3hEaW1lbnNpb25zKGNvbnN0IFJlbmRlckJveCYgcmVwbGFjZWRPcklubGluZUJsb2MKIHZv
aWQgTGluZUxheW91dDo6dXBkYXRlTGluZUJyZWFrQm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJM
aW5lQnJlYWsmIGxpbmVCcmVha0JveCkKIHsKICAgICAvLyBUaGlzIGlzIGp1c3QgYSBib3ggZ2Vv
bWV0cnkgcmVzZXQgKHNlZSBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29u
dGVudCkuCi0gICAgYXV0byYgYm94R2VvbWV0cnkgPSBtX2xheW91dFN0YXRlLmVuc3VyZUdlb21l
dHJ5Rm9yQm94KG1fYm94VHJlZS5sYXlvdXRCb3hGb3JSZW5kZXJlcihsaW5lQnJlYWtCb3gpKTsK
KyAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGxheW91dFN0YXRlKCkuZW5zdXJlR2VvbWV0cnlGb3JC
b3gobV9ib3hUcmVlLmxheW91dEJveEZvclJlbmRlcmVyKGxpbmVCcmVha0JveCkpOwogCiAgICAg
Ym94R2VvbWV0cnkuc2V0SG9yaXpvbnRhbE1hcmdpbih7IH0pOwogICAgIGJveEdlb21ldHJ5LnNl
dEJvcmRlcih7IH0pOwpAQCAtMzM3LDcgKzMzNyw3IEBAIHZvaWQgTGluZUxheW91dDo6dXBkYXRl
TGluZUJyZWFrQm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJMaW5lQnJlYWsmIGxpbmVCcmVha0Jv
CiAKIHZvaWQgTGluZUxheW91dDo6dXBkYXRlSW5saW5lQm94RGltZW5zaW9ucyhjb25zdCBSZW5k
ZXJJbmxpbmUmIHJlbmRlcklubGluZSkKIHsKLSAgICBhdXRvJiBib3hHZW9tZXRyeSA9IG1fbGF5
b3V0U3RhdGUuZW5zdXJlR2VvbWV0cnlGb3JCb3gobV9ib3hUcmVlLmxheW91dEJveEZvclJlbmRl
cmVyKHJlbmRlcklubGluZSkpOworICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gbGF5b3V0U3RhdGUo
KS5lbnN1cmVHZW9tZXRyeUZvckJveChtX2JveFRyZWUubGF5b3V0Qm94Rm9yUmVuZGVyZXIocmVu
ZGVySW5saW5lKSk7CiAKICAgICAvLyBDaGVjayBpZiB0aGlzIHJlbmRlcmVyIGlzIHBhcnQgb2Yg
YSBjb250aW51YXRpb24gYW5kIGFkanVzdCBob3Jpem9udGFsIG1hcmdpbi9ib3JkZXIvcGFkZGlu
ZyBhY2NvcmRpbmdseS4KICAgICBhdXRvIHNob3VsZE5vdFJldGFpbkJvcmRlclBhZGRpbmdBbmRN
YXJnaW5TdGFydCA9IHJlbmRlcklubGluZS5pc0NvbnRpbnVhdGlvbigpOwpAQCAtMzg2LDcgKzM4
Niw3IEBAIHZvaWQgTGluZUxheW91dDo6bGF5b3V0KCkKICAgICAvLyBGSVhNRTogRG8gbm90IGNs
ZWFyIHRoZSBsaW5lcyBhbmQgYm94ZXMgaGVyZSB1bmNvbmRpdGlvbmFsbHksIGJ1dCBjb25zdWx0
IHdpdGggdGhlIGRhbWFnZSBvYmplY3QgaW5zdGVhZC4KICAgICBjbGVhcklubGluZUNvbnRlbnQo
KTsKIAotICAgIGF1dG8mIHJvb3RHZW9tZXRyeSA9IG1fbGF5b3V0U3RhdGUuZ2VvbWV0cnlGb3JC
b3gocm9vdExheW91dEJveCk7CisgICAgYXV0byYgcm9vdEdlb21ldHJ5ID0gbGF5b3V0U3RhdGUo
KS5nZW9tZXRyeUZvckJveChyb290TGF5b3V0Qm94KTsKICAgICBhdXRvIGlubGluZUZvcm1hdHRp
bmdDb250ZXh0ID0gTGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCB7IHJvb3RMYXlvdXRC
b3gsIG1faW5saW5lRm9ybWF0dGluZ1N0YXRlLCBtX2xpbmVEYW1hZ2UuZ2V0KCkgfTsKIAogICAg
IGF1dG8gaG9yaXpvbnRhbENvbnN0cmFpbnRzID0gTGF5b3V0OjpIb3Jpem9udGFsQ29uc3RyYWlu
dHMgeyByb290R2VvbWV0cnkuY29udGVudEJveExlZnQoKSwgcm9vdEdlb21ldHJ5LmNvbnRlbnRC
b3hXaWR0aCgpIH07CkBAIC00MDQsNyArNDA0LDcgQEAgdm9pZCBMaW5lTGF5b3V0Ojpjb25zdHJ1
Y3RDb250ZW50KCkKICAgICBpbmxpbmVDb250ZW50QnVpbGRlci5idWlsZChtX2lubGluZUZvcm1h
dHRpbmdTdGF0ZSwgZW5zdXJlSW5saW5lQ29udGVudCgpKTsKICAgICBBU1NFUlQobV9pbmxpbmVD
b250ZW50KTsKIAotICAgIGF1dG8mIHJvb3RHZW9tZXRyeSA9IG1fbGF5b3V0U3RhdGUuZ2VvbWV0
cnlGb3JSb290Qm94KCk7CisgICAgYXV0byYgcm9vdEdlb21ldHJ5ID0gbV9pbmxpbmVGb3JtYXR0
aW5nU3RhdGUuYm94R2VvbWV0cnkocm9vdExheW91dEJveCgpKTsKICAgICBhdXRvJiBibG9ja0Zs
b3cgPSBmbG93KCk7CiAgICAgYXV0byYgcm9vdFN0eWxlID0gYmxvY2tGbG93LnN0eWxlKCk7CiAg
ICAgYXV0byBpc0xlZnRUb1JpZ2h0RmxvYXRpbmdTdGF0ZUlubGluZURpcmVjdGlvbiA9IG1faW5s
aW5lRm9ybWF0dGluZ1N0YXRlLmZsb2F0aW5nU3RhdGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9u
KCk7CkBAIC00NzYsMTAgKzQ3NiwxMCBAQCB2b2lkIExpbmVMYXlvdXQ6OnVwZGF0ZUZvcm1hdHRp
bmdSb290R2VvbWV0cnlBbmRJbnZhbGlkYXRlKCkKICAgICAgICAgcm9vdC5zZXRWZXJ0aWNhbE1h
cmdpbih7IH0pOwogICAgIH07CiAgICAgYXV0byYgcm9vdExheW91dEJveCA9IHRoaXMtPnJvb3RM
YXlvdXRCb3goKTsKLSAgICBpZiAoIW1fbGF5b3V0U3RhdGUuaGFzQm94R2VvbWV0cnkocm9vdExh
eW91dEJveCkpCi0gICAgICAgIHJldHVybiB1cGRhdGVHZW9tZXRyeShtX2xheW91dFN0YXRlLmVu
c3VyZUdlb21ldHJ5Rm9yQm94KHJvb3RMYXlvdXRCb3gpKTsKKyAgICBpZiAoIWxheW91dFN0YXRl
KCkuaGFzQm94R2VvbWV0cnkocm9vdExheW91dEJveCkpCisgICAgICAgIHJldHVybiB1cGRhdGVH
ZW9tZXRyeShsYXlvdXRTdGF0ZSgpLmVuc3VyZUdlb21ldHJ5Rm9yQm94KHJvb3RMYXlvdXRCb3gp
KTsKIAotICAgIGF1dG8mIHJvb3RHZW9tZXRyeSA9IG1fbGF5b3V0U3RhdGUuZ2VvbWV0cnlGb3JS
b290Qm94KCk7CisgICAgYXV0byYgcm9vdEdlb21ldHJ5ID0gbV9pbmxpbmVGb3JtYXR0aW5nU3Rh
dGUuYm94R2VvbWV0cnkocm9vdExheW91dEJveCk7CiAgICAgYXV0byBuZXdMb2dpY2FsV2lkdGgg
PSBmbG93LmNvbnRlbnRMb2dpY2FsV2lkdGgoKTsKICAgICBpZiAobmV3TG9naWNhbFdpZHRoICE9
IHJvb3RHZW9tZXRyeS5jb250ZW50Qm94V2lkdGgoKSkKICAgICAgICAgTGF5b3V0OjpJbmxpbmVJ
bnZhbGlkYXRpb24oZW5zdXJlTGluZURhbWFnZSgpKS5ob3Jpem9udGFsQ29uc3RyYWludENoYW5n
ZWQoKTsKQEAgLTQ4OCw3ICs0ODgsNiBAQCB2b2lkIExpbmVMYXlvdXQ6OnVwZGF0ZUZvcm1hdHRp
bmdSb290R2VvbWV0cnlBbmRJbnZhbGlkYXRlKCkKIAogdm9pZCBMaW5lTGF5b3V0OjpwcmVwYXJl
TGF5b3V0U3RhdGUoKQogewotICAgIG1fbGF5b3V0U3RhdGUuc2V0Vmlld3BvcnRTaXplKGZsb3co
KS5mcmFtZSgpLnZpZXcoKS0+c2l6ZSgpKTsKIH0KIAogdm9pZCBMaW5lTGF5b3V0OjpwcmVwYXJl
RmxvYXRpbmdTdGF0ZSgpCkBAIC00OTksNyArNDk4LDcgQEAgdm9pZCBMaW5lTGF5b3V0OjpwcmVw
YXJlRmxvYXRpbmdTdGF0ZSgpCiAgICAgaWYgKCFmbG93KCkuY29udGFpbnNGbG9hdHMoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byYgcm9vdEdlb21ldHJ5ID0gbV9sYXlvdXRTdGF0ZS5n
ZW9tZXRyeUZvclJvb3RCb3goKTsKKyAgICBhdXRvJiByb290R2VvbWV0cnkgPSBtX2lubGluZUZv
cm1hdHRpbmdTdGF0ZS5ib3hHZW9tZXRyeShyb290TGF5b3V0Qm94KCkpOwogICAgIGF1dG8gaXNI
b3Jpem9udGFsV3JpdGluZ01vZGUgPSBmbG93KCkuY29udGFpbmluZ0Jsb2NrKCkgPyBmbG93KCku
Y29udGFpbmluZ0Jsb2NrKCktPnN0eWxlKCkuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA6IHRy
dWU7CiAgICAgYXV0byBmbG9hdGluZ1N0YXRlSXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiA9
IGZsb3coKS5jb250YWluaW5nQmxvY2soKSA/IGZsb3coKS5jb250YWluaW5nQmxvY2soKS0+c3R5
bGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgOiB0cnVlOwogICAgIGZsb2F0aW5nU3RhdGUu
c2V0SXNMZWZ0VG9SaWdodERpcmVjdGlvbihmbG9hdGluZ1N0YXRlSXNMZWZ0VG9SaWdodElubGlu
ZURpcmVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRp
b24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5oIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaApp
bmRleCBiMjU0MDQxMWE2MDEuLmYzNmNlODQ5NzBkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dElu
dGVncmF0aW9uTGluZUxheW91dC5oCkBAIC0xMzAsNyArMTMwLDEwIEBAIHByaXZhdGU6CiAgICAg
SW5saW5lQ29udGVudCYgZW5zdXJlSW5saW5lQ29udGVudCgpOwogICAgIHZvaWQgdXBkYXRlTGF5
b3V0Qm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJCb3gmKTsKIAorICAgIExheW91dDo6TGF5b3V0
U3RhdGUmIGxheW91dFN0YXRlKCkgeyByZXR1cm4gKm1fbGF5b3V0U3RhdGU7IH0KKwogICAgIExh
eW91dDo6SW5saW5lRGFtYWdlJiBlbnN1cmVMaW5lRGFtYWdlKCk7CisgICAgCiAKICAgICBjb25z
dCBMYXlvdXQ6OkVsZW1lbnRCb3gmIHJvb3RMYXlvdXRCb3goKSBjb25zdDsKICAgICBMYXlvdXQ6
OkVsZW1lbnRCb3gmIHJvb3RMYXlvdXRCb3goKTsKQEAgLTEzOCw3ICsxNDEsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgcmVsZWFzZUNhY2hlcygpOwogCiAgICAgQm94VHJlZSBtX2JveFRyZWU7Ci0g
ICAgTGF5b3V0OjpMYXlvdXRTdGF0ZSBtX2xheW91dFN0YXRlOworICAgIFdlYWtQdHI8TGF5b3V0
OjpMYXlvdXRTdGF0ZT4gbV9sYXlvdXRTdGF0ZTsKICAgICBMYXlvdXQ6OklubGluZUZvcm1hdHRp
bmdTdGF0ZSYgbV9pbmxpbmVGb3JtYXR0aW5nU3RhdGU7CiAgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIGJlIHBhcnQgb2YgTGF5b3V0U3RhdGUuCiAgICAgc3RkOjp1bmlxdWVfcHRyPExheW91dDo6
SW5saW5lRGFtYWdlPiBtX2xpbmVEYW1hZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlv
dXR0cmVlL0xheW91dEJveC5oCmluZGV4IDJlODRiN2M2ZTU0ZS4uMGNjNzk0YTZkMDJhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3guaApAQCAtMTM5LDYg
KzEzOSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzUmVwbGFjZWRCb3goKSBjb25zdCB7IHJldHVy
biBtX25vZGVUeXBlID09IE5vZGVUeXBlOjpSZXBsYWNlZEVsZW1lbnQgfHwgbV9ub2RlVHlwZSA9
PSBOb2RlVHlwZTo6SW1hZ2UgfHwgbV9ub2RlVHlwZSA9PSBOb2RlVHlwZTo6TGlzdE1hcmtlcjsg
fQogCiAgICAgYm9vbCBpc0lubGluZUludGVncmF0aW9uUm9vdCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNJbmxpbmVJbnRlZ3JhdGlvblJvb3Q7IH0KKyAgICBib29sIGlzRmlyc3RDaGlsZEZvckludGVn
cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pc0ZpcnN0Q2hpbGRGb3JJbnRlZ3JhdGlvbjsgfQog
CiAgICAgY29uc3QgRWxlbWVudEJveCYgcGFyZW50KCkgY29uc3QgeyByZXR1cm4gKm1fcGFyZW50
OyB9CiAgICAgY29uc3QgQm94KiBuZXh0U2libGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dFNp
YmxpbmcuZ2V0KCk7IH0KQEAgLTE3Myw2ICsxNzQsNyBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRp
b25hbDxMYXlvdXRVbml0PiBjb2x1bW5XaWR0aCgpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRJc0lu
bGluZUludGVncmF0aW9uUm9vdCgpIHsgbV9pc0lubGluZUludGVncmF0aW9uUm9vdCA9IHRydWU7
IH0KKyAgICB2b2lkIHNldElzRmlyc3RDaGlsZEZvckludGVncmF0aW9uKGJvb2wgdmFsdWUpIHsg
bV9pc0ZpcnN0Q2hpbGRGb3JJbnRlZ3JhdGlvbiA9IHZhbHVlOyB9CiAKICAgICBib29sIGNhbkNh
Y2hlRm9yTGF5b3V0U3RhdGUoY29uc3QgTGF5b3V0U3RhdGUmKSBjb25zdDsKICAgICBCb3hHZW9t
ZXRyeSogY2FjaGVkR2VvbWV0cnlGb3JMYXlvdXRTdGF0ZShjb25zdCBMYXlvdXRTdGF0ZSYpIGNv
bnN0OwpAQCAtMjE5LDYgKzIyMSw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9iYXNlVHlw
ZUZsYWdzIDogNDsgLy8gT3B0aW9uU2V0PEJhc2VUeXBlRmxhZz4KICAgICBib29sIG1faGFzUmFy
ZURhdGEgOiAxIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNJbmxpbmVJbnRlZ3JhdGlvblJvb3Qg
OiAxIHsgZmFsc2UgfTsKKyAgICBib29sIG1faXNGaXJzdENoaWxkRm9ySW50ZWdyYXRpb24gOiAx
IHsgZmFsc2UgfTsKIAogICAgIENoZWNrZWRQdHI8RWxlbWVudEJveD4gbV9wYXJlbnQ7CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXggOWY1NWUxNDRjMTc3
Li45N2YwMDZkMzdjMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAi
SW1hZ2VRdWFsaXR5Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkxheW91dEluaXRpYWxDb250YWlu
aW5nQmxvY2suaCIKKyNpbmNsdWRlICJMYXlvdXRTdGF0ZS5oIgogI2luY2x1ZGUgIk5vZGVUcmF2
ZXJzYWwuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyRGVzY2VuZGFudEl0
ZXJhdG9yLmgiCkBAIC02NSw3ICs2Niw3IEBAIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChS
ZW5kZXJWaWV3KTsKIFJlbmRlclZpZXc6OlJlbmRlclZpZXcoRG9jdW1lbnQmIGRvY3VtZW50LCBS
ZW5kZXJTdHlsZSYmIHN0eWxlKQogICAgIDogUmVuZGVyQmxvY2tGbG93KGRvY3VtZW50LCBXVEZN
b3ZlKHN0eWxlKSkKICAgICAsIG1fZnJhbWVWaWV3KCpkb2N1bWVudC52aWV3KCkpCi0gICAgLCBt
X2luaXRpYWxDb250YWluaW5nQmxvY2soV1RGOjptYWtlVW5pcXVlUmVmPExheW91dDo6SW5pdGlh
bENvbnRhaW5pbmdCbG9jaz4oUmVuZGVyU3R5bGU6OmNsb25lKHRoaXMtPnN0eWxlKCkpKSkKKyAg
ICAsIG1faW5pdGlhbENvbnRhaW5pbmdCbG9jayhtYWtlVW5pcXVlUmVmPExheW91dDo6SW5pdGlh
bENvbnRhaW5pbmdCbG9jaz4oUmVuZGVyU3R5bGU6OmNsb25lKHRoaXMtPnN0eWxlKCkpKSkKICAg
ICAsIG1fc2VsZWN0aW9uKCp0aGlzKQogICAgICwgbV9sYXp5UmVwYWludFRpbWVyKCp0aGlzLCAm
UmVuZGVyVmlldzo6bGF6eVJlcGFpbnRUaW1lckZpcmVkKQogewpAQCAtMTgyLDYgKzE4Myw4IEBA
IHZvaWQgUmVuZGVyVmlldzo6bGF5b3V0KCkKICAgICBpZiAoIW5lZWRzTGF5b3V0KCkpCiAgICAg
ICAgIHJldHVybjsKIAorICAgIGVuc3VyZUxheW91dFN0YXRlKCkuc2V0Vmlld3BvcnRTaXplKGZy
YW1lVmlldygpLnNpemUoKSk7CisKICAgICBMYXlvdXRTdGF0ZU1haW50YWluZXIgc3RhdGVQdXNo
ZXIoKnRoaXMsIHsgfSwgZmFsc2UsIHZhbHVlT3JEZWZhdWx0KG1fcGFnZUxvZ2ljYWxTaXplKS5o
ZWlnaHQoKSwgbV9wYWdlTG9naWNhbEhlaWdodENoYW5nZWQpOwogCiAgICAgbV9wYWdlTG9naWNh
bEhlaWdodENoYW5nZWQgPSBmYWxzZTsKQEAgLTE5NCw2ICsxOTcsMTkgQEAgdm9pZCBSZW5kZXJW
aWV3OjpsYXlvdXQoKQogICAgIGNsZWFyTmVlZHNMYXlvdXQoKTsKIH0KIAorTGF5b3V0OjpMYXlv
dXRTdGF0ZSYgUmVuZGVyVmlldzo6ZW5zdXJlTGF5b3V0U3RhdGUoKQoreworICAgIGlmICghbV9s
YXlvdXRTdGF0ZSkKKyAgICAgICAgbV9sYXlvdXRTdGF0ZSA9IG1ha2VVbmlxdWU8TGF5b3V0OjpM
YXlvdXRTdGF0ZT4oZG9jdW1lbnQoKSwgbV9pbml0aWFsQ29udGFpbmluZ0Jsb2NrLmdldCgpLCBM
YXlvdXQ6OkxheW91dFN0YXRlOjpGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uVHlwZTo6SW5s
aW5lKTsKKyAgICByZXR1cm4gKm1fbGF5b3V0U3RhdGU7Cit9CisKK3ZvaWQgUmVuZGVyVmlldzo6
dXBkYXRlUXVpcmtzTW9kZSgpCit7CisgICAgaWYgKG1fbGF5b3V0U3RhdGUpCisgICAgICAgIG1f
bGF5b3V0U3RhdGUtPnVwZGF0ZVF1aXJrc01vZGUoZG9jdW1lbnQoKSk7Cit9CisKIExheW91dFVu
aXQgUmVuZGVyVmlldzo6cGFnZU9yVmlld0xvZ2ljYWxIZWlnaHQoKSBjb25zdAogewogICAgIGlm
IChzaG91bGRVc2VQcmludGluZ0xheW91dCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZXcuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWV3LmgKaW5kZXggOTgwZmY5ODgxM2VlLi44MzRhMjA4ZmIyYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtNDAsNiArNDAsNyBAQCBjbGFzcyBSZW5kZXJRdW90ZTsK
IAogbmFtZXNwYWNlIExheW91dCB7CiBjbGFzcyBJbml0aWFsQ29udGFpbmluZ0Jsb2NrOworY2xh
c3MgTGF5b3V0U3RhdGU7CiB9CiAKIGNsYXNzIFJlbmRlclZpZXcgZmluYWwgOiBwdWJsaWMgUmVu
ZGVyQmxvY2tGbG93IHsKQEAgLTc1LDYgKzc2LDggQEAgcHVibGljOgogCiAgICAgTGF5b3V0OjpJ
bml0aWFsQ29udGFpbmluZ0Jsb2NrJiBpbml0aWFsQ29udGFpbmluZ0Jsb2NrKCkgeyByZXR1cm4g
bV9pbml0aWFsQ29udGFpbmluZ0Jsb2NrLmdldCgpOyB9CiAgICAgY29uc3QgTGF5b3V0OjpJbml0
aWFsQ29udGFpbmluZ0Jsb2NrJiBpbml0aWFsQ29udGFpbmluZ0Jsb2NrKCkgY29uc3QgeyByZXR1
cm4gbV9pbml0aWFsQ29udGFpbmluZ0Jsb2NrLmdldCgpOyB9CisgICAgTGF5b3V0OjpMYXlvdXRT
dGF0ZSYgZW5zdXJlTGF5b3V0U3RhdGUoKTsKKyAgICB2b2lkIHVwZGF0ZVF1aXJrc01vZGUoKTsK
IAogICAgIGJvb2wgbmVlZHNSZXBhaW50SGFja0FmdGVyQ29tcG9zaXRpbmdMYXllclVwZGF0ZUZv
ckRlYnVnT3ZlcmxheXNPbmx5KCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc1JlcGFpbnRIYWNrQWZ0
ZXJDb21wb3NpdGluZ0xheWVyVXBkYXRlRm9yRGVidWdPdmVybGF5c09ubHk7IH07CiAgICAgdm9p
ZCBzZXROZWVkc1JlcGFpbnRIYWNrQWZ0ZXJDb21wb3NpdGluZ0xheWVyVXBkYXRlRm9yRGVidWdP
dmVybGF5c09ubHkoYm9vbCB2YWx1ZSA9IHRydWUpIHsgbV9uZWVkc1JlcGFpbnRIYWNrQWZ0ZXJD
b21wb3NpdGluZ0xheWVyVXBkYXRlRm9yRGVidWdPdmVybGF5c09ubHkgPSB2YWx1ZTsgfQpAQCAt
MjMyLDYgKzIzNSw3IEBAIHByaXZhdGU6CiAgICAgdWludDY0X3QgbV9yZW5kZXJlckNvdW50IHsg
MSB9OwogCiAgICAgVW5pcXVlUmVmPExheW91dDo6SW5pdGlhbENvbnRhaW5pbmdCbG9jaz4gbV9p
bml0aWFsQ29udGFpbmluZ0Jsb2NrOworICAgIHN0ZDo6dW5pcXVlX3B0cjxMYXlvdXQ6OkxheW91
dFN0YXRlPiBtX2xheW91dFN0YXRlOwogCiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8UmVn
aW9uPiBtX2FjY3VtdWxhdGVkUmVwYWludFJlZ2lvbjsKICAgICBTZWxlY3Rpb25SYW5nZURhdGEg
bV9zZWxlY3Rpb247Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>462867</attachid>
            <date>2022-10-07 09:12:07 -0700</date>
            <delta_ts>2022-10-07 10:40:33 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-246078-20221007191205.patch</filename>
            <type>text/plain</type>
            <size>25710</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">RnJvbSAyMDJlMzFkYzJjMzBmOGMxZTZmYTQ3N2UxY2NjMWEzMGQ2OGQwNDY1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnR0aSBLb2l2aXN0byA8YW50dGlAYXBwbGUuY29tPgpEYXRl
OiBXZWQsIDUgT2N0IDIwMjIgMTU6NDQ6NTUgKzAzMDAKU3ViamVjdDogW1BBVENIXSBbTEZDXVtJ
bnRlZ3JhdGlvbl0gT25seSBtYWludGFpbiBvbmUgTGF5b3V0U3RhdGUgcGVyIHJlbmRlcgogdHJl
ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQ2MDc4IHJkYXI6Ly8x
MDA4MDQ0NjEKClJldmlld2VkIGJ5IEFsYW4gQnVqdGFzLgoKTGF5b3V0U3RhdGUgZGVzY3JpYmVz
IHRoZSB3aG9sZSBsYXlvdXQuIFdlIHNob3VsZCBvbmx5IGhhdmUgb25lIHBlciB0cmVlIGluc3Rl
YWQgb2Ygb25lIHBlciBmb3JtYXR0aW5nIGNvbnRleHQuCgoqIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHA6CihXZWJDb3JlOjpEb2N1bWVudDo6c2V0Q29tcGF0aWJpbGl0eU1vZGUpOgoq
IFNvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUuY3BwOgooV2ViQ29yZTo6TGF5
b3V0OjpGb3JtYXR0aW5nU3RhdGU6OmJveEdlb21ldHJ5KToKKiBTb3VyY2UvV2ViQ29yZS9sYXlv
dXQvTGF5b3V0U3RhdGUuY3BwOgooV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6TGF5b3V0
U3RhdGUpOgooV2ViQ29yZTo6TGF5b3V0OjpMYXlvdXRTdGF0ZTo6dXBkYXRlUXVpcmtzTW9kZSk6
CihXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpmb3JtYXR0aW5nU3RhdGVGb3JGb3JtYXR0
aW5nQ29udGV4dCBjb25zdCk6CihXZWJDb3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpmb3JtYXR0
aW5nU3RhdGVGb3JJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCBjb25zdCk6CihXZWJDb3JlOjpMYXlv
dXQ6OkxheW91dFN0YXRlOjplbnN1cmVJbmxpbmVGb3JtYXR0aW5nU3RhdGUpOgooV2ViQ29yZTo6
TGF5b3V0OjpMYXlvdXRTdGF0ZTo6ZGVzdHJveUlubGluZUZvcm1hdHRpbmdTdGF0ZSk6CihXZWJD
b3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjpzZXRJc0ludGVncmF0ZWRSb290Qm94Rmlyc3RDaGls
ZCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvbGF5b3V0L0xheW91dFN0YXRlLmg6CihXZWJD
b3JlOjpMYXlvdXQ6OkxheW91dFN0YXRlOjppc0ludGVncmF0ZWRSb290Qm94Rmlyc3RDaGlsZCBj
b25zdCk6IERlbGV0ZWQuCiogU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0
cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcDoKKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5Ojpjb21wdXRlZFRleHRJbmRlbnQgY29uc3QpOgoqIFNv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUu
Y3BwOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkJveFRyZWU6OkJveFRyZWUpOgoqIFNv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25M
aW5lTGF5b3V0LmNwcDoKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0OjpM
aW5lTGF5b3V0KToKKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpMaW5lTGF5b3V0Ojp+TGlu
ZUxheW91dCk6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6dXBkYXRl
TGlzdE1hcmtlckRpbWVuc2lvbnMpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVM
YXlvdXQ6OnVwZGF0ZUxheW91dEJveERpbWVuc2lvbnMpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdy
YXRpb246OkxpbmVMYXlvdXQ6OnVwZGF0ZUxpbmVCcmVha0JveERpbWVuc2lvbnMpOgooV2ViQ29y
ZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OnVwZGF0ZUlubGluZUJveERpbWVuc2lv
bnMpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OkxpbmVMYXlvdXQ6OmxheW91dCk6CihX
ZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6Y29uc3RydWN0Q29udGVudCk6
CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6dXBkYXRlRm9ybWF0dGlu
Z1Jvb3RHZW9tZXRyeUFuZEludmFsaWRhdGUpOgooV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OkxpbmVMYXlvdXQ6OnByZXBhcmVMYXlvdXRTdGF0ZSk6CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3Jh
dGlvbjo6TGluZUxheW91dDo6cHJlcGFyZUZsb2F0aW5nU3RhdGUpOgoqIFNvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9pbmxpbmUvTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0Lmg6
CihXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6TGluZUxheW91dDo6bGF5b3V0U3RhdGUpOgoq
IFNvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oOgooV2ViQ29yZTo6
TGF5b3V0OjpCb3g6OmlzRmlyc3RDaGlsZEZvckludGVncmF0aW9uIGNvbnN0KToKKFdlYkNvcmU6
OkxheW91dDo6Qm94OjpzZXRJc0ZpcnN0Q2hpbGRGb3JJbnRlZ3JhdGlvbik6CiogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwOgooV2ViQ29yZTo6UmVuZGVyVmlldzo6UmVu
ZGVyVmlldyk6CihXZWJDb3JlOjpSZW5kZXJWaWV3OjpsYXlvdXQpOgooV2ViQ29yZTo6UmVuZGVy
Vmlldzo6ZW5zdXJlTGF5b3V0U3RhdGUpOgooV2ViQ29yZTo6UmVuZGVyVmlldzo6dXBkYXRlUXVp
cmtzTW9kZSk6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKLS0tCiBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwICAgICAgICAgICAgICAgfCAgMyArKwogU291
cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdTdGF0ZS5jcHAgICAgIHwgIDIgKy0KIFNvdXJj
ZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAgICAgICAgICB8IDQwICsrKysrKy0tLS0t
LS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5oICAgICAgICAgICB8
ICA4ICsrLS0KIC4uLi9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcCAgICAgICB8
ICA1ICstLQogLi4uL2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uQm94VHJlZS5jcHAgIHwg
IDEgKwogLi4uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwICAgIHwgMjcg
KysrKysrLS0tLS0tLQogLi4uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaCAg
ICAgIHwgIDUgKystCiBTb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRCb3gu
aCAgfCAgMyArKwogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwICAgICAg
IHwgMTggKysrKysrKystCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oICAg
ICAgICAgfCAgNCArKwogMTEgZmlsZXMgY2hhbmdlZCwgNjUgaW5zZXJ0aW9ucygrKSwgNTEgZGVs
ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggMTk0ZTc1ZTc5MjlmLi5kNDM2
MzE2Yzk1NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtOTEwLDYgKzkxMCw5IEBAIHZv
aWQgRG9jdW1lbnQ6OnNldENvbXBhdGliaWxpdHlNb2RlKERvY3VtZW50Q29tcGF0aWJpbGl0eU1v
ZGUgbW9kZSkKICAgICAgICAgZXh0ZW5zaW9uU3R5bGVTaGVldHMoKS5jbGVhclBhZ2VVc2VyU2hl
ZXQoKTsKICAgICAgICAgZXh0ZW5zaW9uU3R5bGVTaGVldHMoKS5pbnZhbGlkYXRlSW5qZWN0ZWRT
dHlsZVNoZWV0Q2FjaGUoKTsKICAgICB9CisKKyAgICBpZiAocmVuZGVyVmlldygpKQorICAgICAg
ICByZW5kZXJWaWV3KCktPnVwZGF0ZVF1aXJrc01vZGUoKTsKIH0KIAogU3RyaW5nIERvY3VtZW50
Ojpjb21wYXRNb2RlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9G
b3JtYXR0aW5nU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdTdGF0
ZS5jcHAKaW5kZXggZjE2YzVhYjk0MWYxLi4wNTVlMGQzMjRiOWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nU3RhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9Gb3JtYXR0aW5nU3RhdGUuY3BwCkBAIC01MCw3ICs1MCw3IEBAIEJveEdlb21ldHJ5
JiBGb3JtYXR0aW5nU3RhdGU6OmJveEdlb21ldHJ5KGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewog
ICAgIC8vIFNob3VsZCBuZXZlciBuZWVkIHRvIG11dGF0ZSBhIGRpc3BsYXkgYm94IG91dHNpZGUg
b2YgdGhlIGZvcm1hdHRpbmcgY29udGV4dCwgdW5sZXNzIHdlIGFyZSB0cnlpbmcKICAgICAvLyB0
byBjb21wdXRlIHRoZSBzdGF0aWMgcG9zaXRpb24gb2YgYW4gb3V0LW9mLWZsb3cgYm94LgotICAg
IEFTU0VSVCgobGF5b3V0Qm94LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmIGlzSW5saW5lRm9y
bWF0dGluZ1N0YXRlKCkpIHx8ICZsYXlvdXRTdGF0ZSgpLmZvcm1hdHRpbmdTdGF0ZUZvckZvcm1h
dHRpbmdDb250ZXh0KEZvcm1hdHRpbmdDb250ZXh0Ojpmb3JtYXR0aW5nQ29udGV4dFJvb3QobGF5
b3V0Qm94KSkgPT0gdGhpcyk7CisgICAgQVNTRVJUKChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3Np
dGlvbmVkKCkgJiYgaXNJbmxpbmVGb3JtYXR0aW5nU3RhdGUoKSkgfHwgbGF5b3V0Qm94LmlzSW5s
aW5lSW50ZWdyYXRpb25Sb290KCkgfHwgJmxheW91dFN0YXRlKCkuZm9ybWF0dGluZ1N0YXRlRm9y
Rm9ybWF0dGluZ0NvbnRleHQoRm9ybWF0dGluZ0NvbnRleHQ6OmZvcm1hdHRpbmdDb250ZXh0Um9v
dChsYXlvdXRCb3gpKSA9PSB0aGlzKTsKICAgICAvLyBBbm9ueW1vdXMgdGV4dCB3cmFwcGVycyBk
byBub3QgbmVlZCB0byBjb21wdXRlIGJveCBnZW9tZXRyeS4gVGhleSBpbml0aWF0ZSBpbmxpbmUg
cnVucy4KICAgICBBU1NFUlQoIWxheW91dEJveC5pc0lubGluZVRleHRCb3goKSk7CiAgICAgcmV0
dXJuIGxheW91dFN0YXRlKCkuZW5zdXJlR2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwCmluZGV4IDBmYzQ3YmQyMTY3ZS4uY2Y4ZjYxNWQ4
ZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRTdGF0ZS5jcHAKQEAgLTUxLDYgKzUxLDEz
IEBAIExheW91dFN0YXRlOjpMYXlvdXRTdGF0ZShjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IEVsZW1lbnRCb3gmIHJvb3RDb250YWluCiAgICAgLy8gSXQgbWFrZXMgYWJzb2x1dGVseSBu
byBzZW5zZSB0byBjb25zdHJ1Y3QgYSBkZWRpY2F0ZWQgbGF5b3V0IHN0YXRlIGZvciBhIG5vbi1m
b3JtYXR0aW5nIGNvbnRleHQgcm9vdCAobGF5b3V0IHdvdWxkIGJlIGEgbm8tb3ApLgogICAgIEFT
U0VSVChyb290KCkuZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKTsKIAorICAgIHVwZGF0
ZVF1aXJrc01vZGUoZG9jdW1lbnQpOworfQorCitMYXlvdXRTdGF0ZTo6fkxheW91dFN0YXRlKCkg
PSBkZWZhdWx0OworCit2b2lkIExheW91dFN0YXRlOjp1cGRhdGVRdWlya3NNb2RlKGNvbnN0IERv
Y3VtZW50JiBkb2N1bWVudCkKK3sKICAgICBhdXRvIHF1aXJrc01vZGUgPSBbJl0gewogICAgICAg
ICBpZiAoZG9jdW1lbnQuaW5MaW1pdGVkUXVpcmtzTW9kZSgpKQogICAgICAgICAgICAgcmV0dXJu
IExheW91dFN0YXRlOjpRdWlya3NNb2RlOjpMaW1pdGVkOwpAQCAtNjEsOCArNjgsNiBAQCBMYXlv
dXRTdGF0ZTo6TGF5b3V0U3RhdGUoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBFbGVt
ZW50Qm94JiByb290Q29udGFpbgogICAgIHNldFF1aXJrc01vZGUocXVpcmtzTW9kZSgpKTsKIH0K
IAotTGF5b3V0U3RhdGU6On5MYXlvdXRTdGF0ZSgpID0gZGVmYXVsdDsKLQogQm94R2VvbWV0cnkm
IExheW91dFN0YXRlOjpnZW9tZXRyeUZvclJvb3RCb3goKQogewogICAgIHJldHVybiBlbnN1cmVH
ZW9tZXRyeUZvckJveChyb290KCkpOwpAQCAtOTYsMTEgKzEwMSw2IEBAIEZvcm1hdHRpbmdTdGF0
ZSYgTGF5b3V0U3RhdGU6OmZvcm1hdHRpbmdTdGF0ZUZvckZvcm1hdHRpbmdDb250ZXh0KGNvbnN0
IEVsZW1lbnRCCiB7CiAgICAgQVNTRVJUKGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hl
c0Zvcm1hdHRpbmdDb250ZXh0KCkpOwogCi0gICAgaWYgKGlzSW5saW5lRm9ybWF0dGluZ0NvbnRl
eHRJbnRlZ3JhdGlvbigpKSB7Ci0gICAgICAgIEFTU0VSVCgmZm9ybWF0dGluZ0NvbnRleHRSb290
ID09IG1fcm9vdENvbnRhaW5lci5wdHIoKSk7Ci0gICAgICAgIHJldHVybiAqbV9yb290SW5saW5l
Rm9ybWF0dGluZ1N0YXRlRm9ySW50ZWdyYXRpb247Ci0gICAgfQotCiAgICAgaWYgKGlzRmxleEZv
cm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb24oKSkgewogICAgICAgICBBU1NFUlQoJmZvcm1hdHRp
bmdDb250ZXh0Um9vdCA9PSBtX3Jvb3RDb250YWluZXIucHRyKCkpOwogICAgICAgICByZXR1cm4g
Km1fcm9vdEZsZXhGb3JtYXR0aW5nU3RhdGVGb3JJbnRlZ3JhdGlvbjsKQEAgLTEyNSwxMSArMTI1
LDYgQEAgSW5saW5lRm9ybWF0dGluZ1N0YXRlJiBMYXlvdXRTdGF0ZTo6Zm9ybWF0dGluZ1N0YXRl
Rm9ySW5saW5lRm9ybWF0dGluZ0NvbnRleHQoY28KIHsKICAgICBBU1NFUlQoaW5saW5lRm9ybWF0
dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSk7CiAK
LSAgICBpZiAoaXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uKCkpIHsKLSAgICAg
ICAgQVNTRVJUKCZpbmxpbmVGb3JtYXR0aW5nQ29udGV4dFJvb3QgPT0gbV9yb290Q29udGFpbmVy
LnB0cigpKTsKLSAgICAgICAgcmV0dXJuICptX3Jvb3RJbmxpbmVGb3JtYXR0aW5nU3RhdGVGb3JJ
bnRlZ3JhdGlvbjsKLSAgICB9Ci0KICAgICByZXR1cm4gKm1faW5saW5lRm9ybWF0dGluZ1N0YXRl
cy5nZXQoJmlubGluZUZvcm1hdHRpbmdDb250ZXh0Um9vdCk7CiB9CiAKQEAgLTE2NSw3ICsxNjAs
NyBAQCBJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIExheW91dFN0YXRlOjplbnN1cmVJbmxpbmVGb3Jt
YXR0aW5nU3RhdGUoY29uc3QgRWxlbWVudEJveAogICAgICAgICAvLyBJZiB0aGUgYmxvY2sgY29u
dGFpbmVyIGJveCB0aGF0IGluaXRpYXRlcyB0aGlzIGlubGluZSBmb3JtYXR0aW5nIGNvbnRleHQg
YWxzbyBlc3RhYmxpc2hlcyBhIGJsb2NrIGNvbnRleHQsIHRoZSBmbG9hdHMgb3V0c2lkZSBvZiB0
aGUgZm9ybWF0dGluZyByb290CiAgICAgICAgIC8vIHNob3VsZCBub3QgaW50ZXJmZXJlIHdpdGgg
dGhlIGNvbnRlbnQgaW5zaWRlLgogICAgICAgICAvLyA8ZGl2IHN0eWxlPSJmbG9hdDogbGVmdCI+
PC9kaXY+PGRpdiBzdHlsZT0ib3ZlcmZsb3c6IGhpZGRlbiI+IDwtIGlzIGEgbm9uLWludHJ1c2l2
ZSBmbG9hdCwgYmVjYXVzZSBvdmVyZmxvdzogaGlkZGVuIHRyaWdnZXJzIG5ldyBibG9jayBmb3Jt
YXR0aW5nIGNvbnRleHQuPC9kaXY+Ci0gICAgICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dFJvb3Qu
ZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkpCisgICAgICAgIGlmIChmb3JtYXR0
aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNCbG9ja0Zvcm1hdHRpbmdDb250ZXh0KCkgfHwgZm9y
bWF0dGluZ0NvbnRleHRSb290LmlzSW5saW5lSW50ZWdyYXRpb25Sb290KCkpCiAgICAgICAgICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KEZsb2F0aW5nU3RhdGU6
OmNyZWF0ZSgqdGhpcywgZm9ybWF0dGluZ0NvbnRleHRSb290KSwgKnRoaXMpOwogCiAgICAgICAg
IC8vIE90aGVyd2lzZSwgdGhlIGZvcm1hdHRpbmcgY29udGV4dCBpbmhlcml0cyB0aGUgZmxvYXRz
IGZyb20gdGhlIHBhcmVudCBmb3JtYXR0aW5nIGNvbnRleHQuCkBAIC0xODEsMTQgKzE3Niw2IEBA
IElubGluZUZvcm1hdHRpbmdTdGF0ZSYgTGF5b3V0U3RhdGU6OmVuc3VyZUlubGluZUZvcm1hdHRp
bmdTdGF0ZShjb25zdCBFbGVtZW50Qm94CiAgICAgICAgIHJldHVybiBtYWtlVW5pcXVlPElubGlu
ZUZvcm1hdHRpbmdTdGF0ZT4ocGFyZW50Rm9ybWF0dGluZ1N0YXRlKCkuZmxvYXRpbmdTdGF0ZSgp
LCAqdGhpcyk7CiAgICAgfTsKIAotICAgIGlmIChpc0lubGluZUZvcm1hdHRpbmdDb250ZXh0SW50
ZWdyYXRpb24oKSkgewotICAgICAgICBpZiAoIW1fcm9vdElubGluZUZvcm1hdHRpbmdTdGF0ZUZv
ckludGVncmF0aW9uKSB7Ci0gICAgICAgICAgICBBU1NFUlQoJmZvcm1hdHRpbmdDb250ZXh0Um9v
dCA9PSBtX3Jvb3RDb250YWluZXIucHRyKCkpOwotICAgICAgICAgICAgbV9yb290SW5saW5lRm9y
bWF0dGluZ1N0YXRlRm9ySW50ZWdyYXRpb24gPSBtYWtlVW5pcXVlPElubGluZUZvcm1hdHRpbmdT
dGF0ZT4oRmxvYXRpbmdTdGF0ZTo6Y3JlYXRlKCp0aGlzLCBmb3JtYXR0aW5nQ29udGV4dFJvb3Qp
LCAqdGhpcyk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuICptX3Jvb3RJbmxpbmVGb3JtYXR0
aW5nU3RhdGVGb3JJbnRlZ3JhdGlvbjsKLSAgICB9Ci0KICAgICByZXR1cm4gKm1faW5saW5lRm9y
bWF0dGluZ1N0YXRlcy5lbnN1cmUoJmZvcm1hdHRpbmdDb250ZXh0Um9vdCwgY3JlYXRlKS5pdGVy
YXRvci0+dmFsdWU7CiB9CiAKQEAgLTIzNSw2ICsyMjIsMTEgQEAgRmxleEZvcm1hdHRpbmdTdGF0
ZSYgTGF5b3V0U3RhdGU6OmVuc3VyZUZsZXhGb3JtYXR0aW5nU3RhdGUoY29uc3QgRWxlbWVudEJv
eCYgZm8KICAgICByZXR1cm4gKm1fZmxleEZvcm1hdHRpbmdTdGF0ZXMuZW5zdXJlKCZmb3JtYXR0
aW5nQ29udGV4dFJvb3QsIGNyZWF0ZSkuaXRlcmF0b3ItPnZhbHVlOwogfQogCit2b2lkIExheW91
dFN0YXRlOjpkZXN0cm95SW5saW5lRm9ybWF0dGluZ1N0YXRlKGNvbnN0IEVsZW1lbnRCb3gmIGZv
cm1hdHRpbmdDb250ZXh0Um9vdCkKK3sKKyAgICBtX2lubGluZUZvcm1hdHRpbmdTdGF0ZXMucmVt
b3ZlKCZmb3JtYXR0aW5nQ29udGV4dFJvb3QpOworfQorCiB2b2lkIExheW91dFN0YXRlOjpzZXRW
aWV3cG9ydFNpemUoY29uc3QgTGF5b3V0U2l6ZSYgdmlld3BvcnRTaXplKQogewogICAgIEFTU0VS
VChpc0lubGluZUZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb24oKSk7CkBAIC0yNDcsMTIgKzIz
OSw2IEBAIExheW91dFNpemUgTGF5b3V0U3RhdGU6OnZpZXdwb3J0U2l6ZSgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fdmlld3BvcnRTaXplOwogfQogCi12b2lkIExheW91dFN0YXRlOjpzZXRJc0ludGVn
cmF0ZWRSb290Qm94Rmlyc3RDaGlsZChib29sIHZhbHVlKQotewotICAgIEFTU0VSVChpc0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb24oKSk7Ci0gICAgbV9pc0ludGVncmF0ZWRSb290
Qm94Rmlyc3RDaGlsZCA9IHZhbHVlID8gSXNJbnRlZ3JhdGVkUm9vdEJveEZpcnN0Q2hpbGQ6Olll
cyA6IElzSW50ZWdyYXRlZFJvb3RCb3hGaXJzdENoaWxkOjpObzsKLX0KLQogYm9vbCBMYXlvdXRT
dGF0ZTo6c2hvdWxkSWdub3JlVHJhaWxpbmdMZXR0ZXJTcGFjaW5nKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gaXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dEludGVncmF0aW9uKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9MYXlvdXRTdGF0ZS5oCmluZGV4IDNiOGI0OWFkNjVjOS4uYzY3OTc0NzI2NjlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvTGF5b3V0U3RhdGUuaApAQCAtNTQsNiArNTQsOCBAQCBwdWJsaWM6CiAg
ICAgTGF5b3V0U3RhdGUoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBFbGVtZW50Qm94JiByb290Q29u
dGFpbmVyLCBzdGQ6Om9wdGlvbmFsPEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25UeXBlPiA9
IHN0ZDo6bnVsbG9wdCk7CiAgICAgfkxheW91dFN0YXRlKCk7CiAKKyAgICB2b2lkIHVwZGF0ZVF1
aXJrc01vZGUoY29uc3QgRG9jdW1lbnQmKTsKKwogICAgIElubGluZUZvcm1hdHRpbmdTdGF0ZSYg
ZW5zdXJlSW5saW5lRm9ybWF0dGluZ1N0YXRlKGNvbnN0IEVsZW1lbnRCb3gmIGZvcm1hdHRpbmdD
b250ZXh0Um9vdCk7CiAgICAgQmxvY2tGb3JtYXR0aW5nU3RhdGUmIGVuc3VyZUJsb2NrRm9ybWF0
dGluZ1N0YXRlKGNvbnN0IEVsZW1lbnRCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCk7CiAgICAg
VGFibGVGb3JtYXR0aW5nU3RhdGUmIGVuc3VyZVRhYmxlRm9ybWF0dGluZ1N0YXRlKGNvbnN0IEVs
ZW1lbnRCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCk7CkBAIC02Niw2ICs2OCw4IEBAIHB1Ymxp
YzoKIAogICAgIEZvcm1hdHRpbmdTdGF0ZSYgZm9ybWF0dGluZ1N0YXRlRm9yRm9ybWF0dGluZ0Nv
bnRleHQoY29uc3QgRWxlbWVudEJveCYgZm9ybWF0dGluZ1Jvb3QpIGNvbnN0OwogCisgICAgdm9p
ZCBkZXN0cm95SW5saW5lRm9ybWF0dGluZ1N0YXRlKGNvbnN0IEVsZW1lbnRCb3gmIGZvcm1hdHRp
bmdDb250ZXh0Um9vdCk7CisKICAgICBib29sIGhhc0Zvcm1hdHRpbmdTdGF0ZShjb25zdCBFbGVt
ZW50Qm94JiBmb3JtYXR0aW5nUm9vdCkgY29uc3Q7CiAgICAgYm9vbCBoYXNJbmxpbmVGb3JtYXR0
aW5nU3RhdGUoY29uc3QgRWxlbWVudEJveCYgZm9ybWF0dGluZ1Jvb3QpIGNvbnN0IHsgcmV0dXJu
IG1faW5saW5lRm9ybWF0dGluZ1N0YXRlcy5jb250YWlucygmZm9ybWF0dGluZ1Jvb3QpOyB9CiAK
QEAgLTkzLDkgKzk3LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRWaWV3cG9ydFNpemUoY29u
c3QgTGF5b3V0U2l6ZSYpOwogICAgIExheW91dFNpemUgdmlld3BvcnRTaXplKCkgY29uc3Q7Ci0g
ICAgZW51bSBJc0ludGVncmF0ZWRSb290Qm94Rmlyc3RDaGlsZCB7IFllcywgTm8sIE5vdEFwcGxp
Y2FibGUgfTsKLSAgICBJc0ludGVncmF0ZWRSb290Qm94Rmlyc3RDaGlsZCBpc0ludGVncmF0ZWRS
b290Qm94Rmlyc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbnRlZ3JhdGVkUm9vdEJveEZp
cnN0Q2hpbGQ7IH0KLSAgICB2b2lkIHNldElzSW50ZWdyYXRlZFJvb3RCb3hGaXJzdENoaWxkKGJv
b2wpOwogICAgIGJvb2wgc2hvdWxkSWdub3JlVHJhaWxpbmdMZXR0ZXJTcGFjaW5nKCkgY29uc3Q7
CiAgICAgYm9vbCBzaG91bGROb3RTeW50aGVzaXplSW5saW5lQmxvY2tCYXNlbGluZSgpIGNvbnN0
OwogCkBAIC0xMjIsNyArMTIzLDYgQEAgcHJpdmF0ZToKICAgICAvLyBMRkMgaW50ZWdyYXRpb24g
b25seS4KICAgICBzdGQ6Om9wdGlvbmFsPEZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25UeXBl
PiBtX2Zvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25UeXBlOwogICAgIExheW91dFNpemUgbV92
aWV3cG9ydFNpemU7Ci0gICAgSXNJbnRlZ3JhdGVkUm9vdEJveEZpcnN0Q2hpbGQgbV9pc0ludGVn
cmF0ZWRSb290Qm94Rmlyc3RDaGlsZCB7IElzSW50ZWdyYXRlZFJvb3RCb3hGaXJzdENoaWxkOjpO
b3RBcHBsaWNhYmxlIH07CiB9OwogCiBpbmxpbmUgYm9vbCBMYXlvdXRTdGF0ZTo6aGFzQm94R2Vv
bWV0cnkoY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2Vv
bWV0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxp
bmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAppbmRleCA0ZjMzNWQ1YjFhMGYuLjU4OWJl
ODU1Y2YxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250
ZXh0cy9pbmxpbmUvSW5saW5lRm9ybWF0dGluZ0dlb21ldHJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nR2Vv
bWV0cnkuY3BwCkBAIC0xNjUsMTEgKzE2NSwxMCBAQCBJbmxpbmVMYXlvdXRVbml0IElubGluZUZv
cm1hdHRpbmdHZW9tZXRyeTo6Y29tcHV0ZWRUZXh0SW5kZW50KElzSW50cmluc2ljV2lkdGhNbwog
ICAgIGlmICghcHJldmlvdXNMaW5lRW5kc1dpdGhMaW5lQnJlYWspIHsKICAgICAgICAgc2hvdWxk
SW5kZW50ID0gIXJvb3QuaXNBbm9ueW1vdXMoKTsKICAgICAgICAgaWYgKHJvb3QuaXNBbm9ueW1v
dXMoKSkgewotICAgICAgICAgICAgYXV0byBpc0ludGVncmF0ZWRSb290Qm94Rmlyc3RDaGlsZCA9
IGxheW91dFN0YXRlKCkuaXNJbnRlZ3JhdGVkUm9vdEJveEZpcnN0Q2hpbGQoKTsKLSAgICAgICAg
ICAgIGlmIChpc0ludGVncmF0ZWRSb290Qm94Rmlyc3RDaGlsZCA9PSBMYXlvdXRTdGF0ZTo6SXNJ
bnRlZ3JhdGVkUm9vdEJveEZpcnN0Q2hpbGQ6Ok5vdEFwcGxpY2FibGUpCisgICAgICAgICAgICBp
ZiAoIXJvb3QuaXNJbmxpbmVJbnRlZ3JhdGlvblJvb3QoKSkKICAgICAgICAgICAgICAgICBzaG91
bGRJbmRlbnQgPSByb290LnBhcmVudCgpLmZpcnN0SW5GbG93Q2hpbGQoKSA9PSAmcm9vdDsKICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzaG91bGRJbmRlbnQgPSBpc0ludGVncmF0
ZWRSb290Qm94Rmlyc3RDaGlsZCA9PSBMYXlvdXRTdGF0ZTo6SXNJbnRlZ3JhdGVkUm9vdEJveEZp
cnN0Q2hpbGQ6OlllczsKKyAgICAgICAgICAgICAgICBzaG91bGRJbmRlbnQgPSByb290LmlzRmly
c3RDaGlsZEZvckludGVncmF0aW9uKCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UKICAgICAgICAg
c2hvdWxkSW5kZW50ID0gcm9vdC5zdHlsZSgpLnRleHRJbmRlbnRMaW5lKCkgPT0gVGV4dEluZGVu
dExpbmU6OkVhY2hMaW5lICYmICpwcmV2aW91c0xpbmVFbmRzV2l0aExpbmVCcmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlv
bkJveFRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dElu
dGVncmF0aW9uQm94VHJlZS5jcHAKaW5kZXggNTgzMzM4MTBkMjkyLi4xOTA4ZmIzOWYwZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3Jh
dGlvbkJveFRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9M
YXlvdXRJbnRlZ3JhdGlvbkJveFRyZWUuY3BwCkBAIC05Myw2ICs5Myw3IEBAIEJveFRyZWU6OkJv
eFRyZWUoUmVuZGVyQmxvY2smIHJvb3RSZW5kZXJlcikKIAogICAgIGlmIChpczxSZW5kZXJCbG9j
a0Zsb3c+KHJvb3RSZW5kZXJlcikpIHsKICAgICAgICAgcm9vdEJveC0+c2V0SXNJbmxpbmVJbnRl
Z3JhdGlvblJvb3QoKTsKKyAgICAgICAgcm9vdEJveC0+c2V0SXNGaXJzdENoaWxkRm9ySW50ZWdy
YXRpb24ocm9vdFJlbmRlcmVyLnBhcmVudCgpLT5maXJzdENoaWxkKCkgPT0gJnJvb3RSZW5kZXJl
cik7CiAgICAgICAgIGJ1aWxkVHJlZUZvcklubGluZUNvbnRlbnQoKTsKICAgICB9IGVsc2UgaWYg
KGlzPFJlbmRlckZsZXhpYmxlQm94Pihyb290UmVuZGVyZXIpKQogICAgICAgICBidWlsZFRyZWVG
b3JGbGV4Q29udGVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVn
cmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlv
dXQuY3BwCmluZGV4IDY0YTZhNWE5MjhmZi4uOGI1ZTc2OTIzM2QxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVncmF0aW9uTGlu
ZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL2lubGlu
ZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuY3BwCkBAIC03MSwxNSArNzEsMTUgQEAgbmFt
ZXNwYWNlIExheW91dEludGVncmF0aW9uIHsKIAogTGluZUxheW91dDo6TGluZUxheW91dChSZW5k
ZXJCbG9ja0Zsb3cmIGZsb3cpCiAgICAgOiBtX2JveFRyZWUoZmxvdykKLSAgICAsIG1fbGF5b3V0
U3RhdGUoZmxvdy5kb2N1bWVudCgpLCByb290TGF5b3V0Qm94KCksIExheW91dDo6TGF5b3V0U3Rh
dGU6OkZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25UeXBlOjpJbmxpbmUpCi0gICAgLCBtX2lu
bGluZUZvcm1hdHRpbmdTdGF0ZShtX2xheW91dFN0YXRlLmVuc3VyZUlubGluZUZvcm1hdHRpbmdT
dGF0ZShyb290TGF5b3V0Qm94KCkpKQorICAgICwgbV9sYXlvdXRTdGF0ZShmbG93LnZpZXcoKS5l
bnN1cmVMYXlvdXRTdGF0ZSgpKQorICAgICwgbV9pbmxpbmVGb3JtYXR0aW5nU3RhdGUobGF5b3V0
U3RhdGUoKS5lbnN1cmVJbmxpbmVGb3JtYXR0aW5nU3RhdGUocm9vdExheW91dEJveCgpKSkKIHsK
LSAgICBtX2xheW91dFN0YXRlLnNldElzSW50ZWdyYXRlZFJvb3RCb3hGaXJzdENoaWxkKGZsb3cu
cGFyZW50KCktPmZpcnN0Q2hpbGQoKSA9PSAmZmxvdyk7CiB9CiAKIExpbmVMYXlvdXQ6On5MaW5l
TGF5b3V0KCkKIHsKICAgICBjbGVhcklubGluZUNvbnRlbnQoKTsKKyAgICBsYXlvdXRTdGF0ZSgp
LmRlc3Ryb3lJbmxpbmVGb3JtYXR0aW5nU3RhdGUocm9vdExheW91dEJveCgpKTsKIH0KIAogUmVu
ZGVyQmxvY2tGbG93KiBMaW5lTGF5b3V0OjpibG9ja0NvbnRhaW5lcihSZW5kZXJPYmplY3QmIHJl
bmRlcmVyKQpAQCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgTGluZUxheW91dDo6dXBkYXRlTGlzdE1h
cmtlckRpbWVuc2lvbnMoY29uc3QgUmVuZGVyTGlzdE1hcmtlciYgbGlzdE1hcmtlcikKIAogICAg
IGF1dG8mIGxheW91dEJveCA9IG1fYm94VHJlZS5sYXlvdXRCb3hGb3JSZW5kZXJlcihsaXN0TWFy
a2VyKTsKICAgICBpZiAobGF5b3V0Qm94LmlzTGlzdE1hcmtlck91dHNpZGUoKSkgewotICAgICAg
ICBhdXRvJiByb290R2VvbWV0cnkgPSBtX2xheW91dFN0YXRlLmdlb21ldHJ5Rm9yUm9vdEJveCgp
OworICAgICAgICBhdXRvJiByb290R2VvbWV0cnkgPSBtX2lubGluZUZvcm1hdHRpbmdTdGF0ZS5i
b3hHZW9tZXRyeShyb290TGF5b3V0Qm94KCkpOwogICAgICAgICBhdXRvJiBsaXN0TWFya2VyR2Vv
bWV0cnkgPSBtX2lubGluZUZvcm1hdHRpbmdTdGF0ZS5ib3hHZW9tZXRyeShsYXlvdXRCb3gpOwog
ICAgICAgICBhdXRvIGhvcml6b250YWxNYXJnaW4gPSBsaXN0TWFya2VyR2VvbWV0cnkuaG9yaXpv
bnRhbE1hcmdpbigpOwogICAgICAgICBhdXRvIG91dHNpZGVPZmZzZXQgPSByb290R2VvbWV0cnku
cGFkZGluZ1N0YXJ0KCkudmFsdWVfb3IoMF9sdSkgKyByb290R2VvbWV0cnkuYm9yZGVyU3RhcnQo
KTsKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIExpbmVMYXlvdXQ6OnVwZGF0ZUxheW91dEJveERp
bWVuc2lvbnMoY29uc3QgUmVuZGVyQm94JiByZXBsYWNlZE9ySW5saW5lQmxvYwogewogICAgIGF1
dG8mIGxheW91dEJveCA9IG1fYm94VHJlZS5sYXlvdXRCb3hGb3JSZW5kZXJlcihyZXBsYWNlZE9y
SW5saW5lQmxvY2spOwogCi0gICAgYXV0byYgcmVwbGFjZWRCb3hHZW9tZXRyeSA9IG1fbGF5b3V0
U3RhdGUuZW5zdXJlR2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKKyAgICBhdXRvJiByZXBsYWNl
ZEJveEdlb21ldHJ5ID0gbGF5b3V0U3RhdGUoKS5lbnN1cmVHZW9tZXRyeUZvckJveChsYXlvdXRC
b3gpOwogICAgIGF1dG8gc2Nyb2xsYmFyU2l6ZSA9IHNjcm9sbGJhckxvZ2ljYWxTaXplKHJlcGxh
Y2VkT3JJbmxpbmVCbG9jayk7CiAgICAgcmVwbGFjZWRCb3hHZW9tZXRyeS5zZXRIb3Jpem9udGFs
U3BhY2VGb3JTY3JvbGxiYXIoc2Nyb2xsYmFyU2l6ZS53aWR0aCgpKTsKICAgICByZXBsYWNlZEJv
eEdlb21ldHJ5LnNldFZlcnRpY2FsU3BhY2VGb3JTY3JvbGxiYXIoc2Nyb2xsYmFyU2l6ZS5oZWln
aHQoKSk7CkBAIC0zMjcsNyArMzI3LDcgQEAgdm9pZCBMaW5lTGF5b3V0Ojp1cGRhdGVMYXlvdXRC
b3hEaW1lbnNpb25zKGNvbnN0IFJlbmRlckJveCYgcmVwbGFjZWRPcklubGluZUJsb2MKIHZvaWQg
TGluZUxheW91dDo6dXBkYXRlTGluZUJyZWFrQm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJMaW5l
QnJlYWsmIGxpbmVCcmVha0JveCkKIHsKICAgICAvLyBUaGlzIGlzIGp1c3QgYSBib3ggZ2VvbWV0
cnkgcmVzZXQgKHNlZSBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGF5b3V0SW5GbG93Q29udGVu
dCkuCi0gICAgYXV0byYgYm94R2VvbWV0cnkgPSBtX2xheW91dFN0YXRlLmVuc3VyZUdlb21ldHJ5
Rm9yQm94KG1fYm94VHJlZS5sYXlvdXRCb3hGb3JSZW5kZXJlcihsaW5lQnJlYWtCb3gpKTsKKyAg
ICBhdXRvJiBib3hHZW9tZXRyeSA9IGxheW91dFN0YXRlKCkuZW5zdXJlR2VvbWV0cnlGb3JCb3go
bV9ib3hUcmVlLmxheW91dEJveEZvclJlbmRlcmVyKGxpbmVCcmVha0JveCkpOwogCiAgICAgYm94
R2VvbWV0cnkuc2V0SG9yaXpvbnRhbE1hcmdpbih7IH0pOwogICAgIGJveEdlb21ldHJ5LnNldEJv
cmRlcih7IH0pOwpAQCAtMzM4LDcgKzMzOCw3IEBAIHZvaWQgTGluZUxheW91dDo6dXBkYXRlTGlu
ZUJyZWFrQm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJMaW5lQnJlYWsmIGxpbmVCcmVha0JvCiAK
IHZvaWQgTGluZUxheW91dDo6dXBkYXRlSW5saW5lQm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJJ
bmxpbmUmIHJlbmRlcklubGluZSkKIHsKLSAgICBhdXRvJiBib3hHZW9tZXRyeSA9IG1fbGF5b3V0
U3RhdGUuZW5zdXJlR2VvbWV0cnlGb3JCb3gobV9ib3hUcmVlLmxheW91dEJveEZvclJlbmRlcmVy
KHJlbmRlcklubGluZSkpOworICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gbGF5b3V0U3RhdGUoKS5l
bnN1cmVHZW9tZXRyeUZvckJveChtX2JveFRyZWUubGF5b3V0Qm94Rm9yUmVuZGVyZXIocmVuZGVy
SW5saW5lKSk7CiAKICAgICAvLyBDaGVjayBpZiB0aGlzIHJlbmRlcmVyIGlzIHBhcnQgb2YgYSBj
b250aW51YXRpb24gYW5kIGFkanVzdCBob3Jpem9udGFsIG1hcmdpbi9ib3JkZXIvcGFkZGluZyBh
Y2NvcmRpbmdseS4KICAgICBhdXRvIHNob3VsZE5vdFJldGFpbkJvcmRlclBhZGRpbmdBbmRNYXJn
aW5TdGFydCA9IHJlbmRlcklubGluZS5pc0NvbnRpbnVhdGlvbigpOwpAQCAtMzg3LDcgKzM4Nyw3
IEBAIHZvaWQgTGluZUxheW91dDo6bGF5b3V0KCkKICAgICAvLyBGSVhNRTogRG8gbm90IGNsZWFy
IHRoZSBsaW5lcyBhbmQgYm94ZXMgaGVyZSB1bmNvbmRpdGlvbmFsbHksIGJ1dCBjb25zdWx0IHdp
dGggdGhlIGRhbWFnZSBvYmplY3QgaW5zdGVhZC4KICAgICBjbGVhcklubGluZUNvbnRlbnQoKTsK
IAotICAgIGF1dG8mIHJvb3RHZW9tZXRyeSA9IG1fbGF5b3V0U3RhdGUuZ2VvbWV0cnlGb3JCb3go
cm9vdExheW91dEJveCk7CisgICAgYXV0byYgcm9vdEdlb21ldHJ5ID0gbGF5b3V0U3RhdGUoKS5n
ZW9tZXRyeUZvckJveChyb290TGF5b3V0Qm94KTsKICAgICBhdXRvIGlubGluZUZvcm1hdHRpbmdD
b250ZXh0ID0gTGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCB7IHJvb3RMYXlvdXRCb3gs
IG1faW5saW5lRm9ybWF0dGluZ1N0YXRlLCBtX2xpbmVEYW1hZ2UuZ2V0KCkgfTsKIAogICAgIGF1
dG8gaG9yaXpvbnRhbENvbnN0cmFpbnRzID0gTGF5b3V0OjpIb3Jpem9udGFsQ29uc3RyYWludHMg
eyByb290R2VvbWV0cnkuY29udGVudEJveExlZnQoKSwgcm9vdEdlb21ldHJ5LmNvbnRlbnRCb3hX
aWR0aCgpIH07CkBAIC00MDUsNyArNDA1LDcgQEAgdm9pZCBMaW5lTGF5b3V0Ojpjb25zdHJ1Y3RD
b250ZW50KCkKICAgICBpbmxpbmVDb250ZW50QnVpbGRlci5idWlsZChtX2lubGluZUZvcm1hdHRp
bmdTdGF0ZSwgZW5zdXJlSW5saW5lQ29udGVudCgpKTsKICAgICBBU1NFUlQobV9pbmxpbmVDb250
ZW50KTsKIAotICAgIGF1dG8mIHJvb3RHZW9tZXRyeSA9IG1fbGF5b3V0U3RhdGUuZ2VvbWV0cnlG
b3JSb290Qm94KCk7CisgICAgYXV0byYgcm9vdEdlb21ldHJ5ID0gbV9pbmxpbmVGb3JtYXR0aW5n
U3RhdGUuYm94R2VvbWV0cnkocm9vdExheW91dEJveCgpKTsKICAgICBhdXRvJiBibG9ja0Zsb3cg
PSBmbG93KCk7CiAgICAgYXV0byYgcm9vdFN0eWxlID0gYmxvY2tGbG93LnN0eWxlKCk7CiAgICAg
YXV0byBpc0xlZnRUb1JpZ2h0RmxvYXRpbmdTdGF0ZUlubGluZURpcmVjdGlvbiA9IG1faW5saW5l
Rm9ybWF0dGluZ1N0YXRlLmZsb2F0aW5nU3RhdGUoKS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCk7
CkBAIC00NzcsMTAgKzQ3NywxMCBAQCB2b2lkIExpbmVMYXlvdXQ6OnVwZGF0ZUZvcm1hdHRpbmdS
b290R2VvbWV0cnlBbmRJbnZhbGlkYXRlKCkKICAgICAgICAgcm9vdC5zZXRWZXJ0aWNhbE1hcmdp
bih7IH0pOwogICAgIH07CiAgICAgYXV0byYgcm9vdExheW91dEJveCA9IHRoaXMtPnJvb3RMYXlv
dXRCb3goKTsKLSAgICBpZiAoIW1fbGF5b3V0U3RhdGUuaGFzQm94R2VvbWV0cnkocm9vdExheW91
dEJveCkpCi0gICAgICAgIHJldHVybiB1cGRhdGVHZW9tZXRyeShtX2xheW91dFN0YXRlLmVuc3Vy
ZUdlb21ldHJ5Rm9yQm94KHJvb3RMYXlvdXRCb3gpKTsKKyAgICBpZiAoIWxheW91dFN0YXRlKCku
aGFzQm94R2VvbWV0cnkocm9vdExheW91dEJveCkpCisgICAgICAgIHJldHVybiB1cGRhdGVHZW9t
ZXRyeShsYXlvdXRTdGF0ZSgpLmVuc3VyZUdlb21ldHJ5Rm9yQm94KHJvb3RMYXlvdXRCb3gpKTsK
IAotICAgIGF1dG8mIHJvb3RHZW9tZXRyeSA9IG1fbGF5b3V0U3RhdGUuZ2VvbWV0cnlGb3JSb290
Qm94KCk7CisgICAgYXV0byYgcm9vdEdlb21ldHJ5ID0gbV9pbmxpbmVGb3JtYXR0aW5nU3RhdGUu
Ym94R2VvbWV0cnkocm9vdExheW91dEJveCk7CiAgICAgYXV0byBuZXdMb2dpY2FsV2lkdGggPSBm
bG93LmNvbnRlbnRMb2dpY2FsV2lkdGgoKTsKICAgICBpZiAobmV3TG9naWNhbFdpZHRoICE9IHJv
b3RHZW9tZXRyeS5jb250ZW50Qm94V2lkdGgoKSkKICAgICAgICAgTGF5b3V0OjpJbmxpbmVJbnZh
bGlkYXRpb24oZW5zdXJlTGluZURhbWFnZSgpKS5ob3Jpem9udGFsQ29uc3RyYWludENoYW5nZWQo
KTsKQEAgLTQ4OSw3ICs0ODksNiBAQCB2b2lkIExpbmVMYXlvdXQ6OnVwZGF0ZUZvcm1hdHRpbmdS
b290R2VvbWV0cnlBbmRJbnZhbGlkYXRlKCkKIAogdm9pZCBMaW5lTGF5b3V0OjpwcmVwYXJlTGF5
b3V0U3RhdGUoKQogewotICAgIG1fbGF5b3V0U3RhdGUuc2V0Vmlld3BvcnRTaXplKGZsb3coKS5m
cmFtZSgpLnZpZXcoKS0+c2l6ZSgpKTsKIH0KIAogdm9pZCBMaW5lTGF5b3V0OjpwcmVwYXJlRmxv
YXRpbmdTdGF0ZSgpCkBAIC01MDAsNyArNDk5LDcgQEAgdm9pZCBMaW5lTGF5b3V0OjpwcmVwYXJl
RmxvYXRpbmdTdGF0ZSgpCiAgICAgaWYgKCFmbG93KCkuY29udGFpbnNGbG9hdHMoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgYXV0byYgcm9vdEdlb21ldHJ5ID0gbV9sYXlvdXRTdGF0ZS5nZW9t
ZXRyeUZvclJvb3RCb3goKTsKKyAgICBhdXRvJiByb290R2VvbWV0cnkgPSBtX2lubGluZUZvcm1h
dHRpbmdTdGF0ZS5ib3hHZW9tZXRyeShyb290TGF5b3V0Qm94KCkpOwogICAgIGF1dG8gaXNIb3Jp
em9udGFsV3JpdGluZ01vZGUgPSBmbG93KCkuY29udGFpbmluZ0Jsb2NrKCkgPyBmbG93KCkuY29u
dGFpbmluZ0Jsb2NrKCktPnN0eWxlKCkuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA6IHRydWU7
CiAgICAgYXV0byBmbG9hdGluZ1N0YXRlSXNMZWZ0VG9SaWdodElubGluZURpcmVjdGlvbiA9IGZs
b3coKS5jb250YWluaW5nQmxvY2soKSA/IGZsb3coKS5jb250YWluaW5nQmxvY2soKS0+c3R5bGUo
KS5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgOiB0cnVlOwogICAgIGZsb2F0aW5nU3RhdGUuc2V0
SXNMZWZ0VG9SaWdodERpcmVjdGlvbihmbG9hdGluZ1N0YXRlSXNMZWZ0VG9SaWdodElubGluZURp
cmVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
aW5saW5lL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaAppbmRl
eCAxZGI0OTJlOTQ4NWUuLmUwMzVkYWQ0YTgxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ludGVncmF0aW9uL2lubGluZS9MYXlvdXRJbnRlZ3JhdGlvbkxpbmVMYXlvdXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vaW5saW5lL0xheW91dEludGVn
cmF0aW9uTGluZUxheW91dC5oCkBAIC0xMzIsNyArMTMyLDEwIEBAIHByaXZhdGU6CiAgICAgSW5s
aW5lQ29udGVudCYgZW5zdXJlSW5saW5lQ29udGVudCgpOwogICAgIHZvaWQgdXBkYXRlTGF5b3V0
Qm94RGltZW5zaW9ucyhjb25zdCBSZW5kZXJCb3gmKTsKIAorICAgIExheW91dDo6TGF5b3V0U3Rh
dGUmIGxheW91dFN0YXRlKCkgeyByZXR1cm4gKm1fbGF5b3V0U3RhdGU7IH0KKwogICAgIExheW91
dDo6SW5saW5lRGFtYWdlJiBlbnN1cmVMaW5lRGFtYWdlKCk7CisgICAgCiAKICAgICBjb25zdCBM
YXlvdXQ6OkVsZW1lbnRCb3gmIHJvb3RMYXlvdXRCb3goKSBjb25zdDsKICAgICBMYXlvdXQ6OkVs
ZW1lbnRCb3gmIHJvb3RMYXlvdXRCb3goKTsKQEAgLTE0Miw3ICsxNDUsNyBAQCBwcml2YXRlOgog
ICAgIExheW91dFVuaXQgcGh5c2ljYWxCYXNlbGluZUZvckxpbmUoTGF5b3V0SW50ZWdyYXRpb246
OkxpbmUmKSBjb25zdDsKICAgICAKICAgICBCb3hUcmVlIG1fYm94VHJlZTsKLSAgICBMYXlvdXQ6
OkxheW91dFN0YXRlIG1fbGF5b3V0U3RhdGU7CisgICAgV2Vha1B0cjxMYXlvdXQ6OkxheW91dFN0
YXRlPiBtX2xheW91dFN0YXRlOwogICAgIExheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlJiBt
X2lubGluZUZvcm1hdHRpbmdTdGF0ZTsKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcGFy
dCBvZiBMYXlvdXRTdGF0ZS4KICAgICBzdGQ6OnVuaXF1ZV9wdHI8TGF5b3V0OjpJbmxpbmVEYW1h
Z2U+IG1fbGluZURhbWFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlv
dXR0cmVlL0xheW91dEJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5
b3V0Qm94LmgKaW5kZXggMmU4NGI3YzZlNTRlLi4wY2M3OTRhNmQwMmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dEJveC5oCkBAIC0xMzksNiArMTM5LDcgQEAg
cHVibGljOgogICAgIGJvb2wgaXNSZXBsYWNlZEJveCgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZVR5
cGUgPT0gTm9kZVR5cGU6OlJlcGxhY2VkRWxlbWVudCB8fCBtX25vZGVUeXBlID09IE5vZGVUeXBl
OjpJbWFnZSB8fCBtX25vZGVUeXBlID09IE5vZGVUeXBlOjpMaXN0TWFya2VyOyB9CiAKICAgICBi
b29sIGlzSW5saW5lSW50ZWdyYXRpb25Sb290KCkgY29uc3QgeyByZXR1cm4gbV9pc0lubGluZUlu
dGVncmF0aW9uUm9vdDsgfQorICAgIGJvb2wgaXNGaXJzdENoaWxkRm9ySW50ZWdyYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX2lzRmlyc3RDaGlsZEZvckludGVncmF0aW9uOyB9CiAKICAgICBjb25z
dCBFbGVtZW50Qm94JiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiAqbV9wYXJlbnQ7IH0KICAgICBj
b25zdCBCb3gqIG5leHRTaWJsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9uZXh0U2libGluZy5nZXQo
KTsgfQpAQCAtMTczLDYgKzE3NCw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPExheW91
dFVuaXQ+IGNvbHVtbldpZHRoKCkgY29uc3Q7CiAKICAgICB2b2lkIHNldElzSW5saW5lSW50ZWdy
YXRpb25Sb290KCkgeyBtX2lzSW5saW5lSW50ZWdyYXRpb25Sb290ID0gdHJ1ZTsgfQorICAgIHZv
aWQgc2V0SXNGaXJzdENoaWxkRm9ySW50ZWdyYXRpb24oYm9vbCB2YWx1ZSkgeyBtX2lzRmlyc3RD
aGlsZEZvckludGVncmF0aW9uID0gdmFsdWU7IH0KIAogICAgIGJvb2wgY2FuQ2FjaGVGb3JMYXlv
dXRTdGF0ZShjb25zdCBMYXlvdXRTdGF0ZSYpIGNvbnN0OwogICAgIEJveEdlb21ldHJ5KiBjYWNo
ZWRHZW9tZXRyeUZvckxheW91dFN0YXRlKGNvbnN0IExheW91dFN0YXRlJikgY29uc3Q7CkBAIC0y
MTksNiArMjIxLDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBtX2Jhc2VUeXBlRmxhZ3MgOiA0
OyAvLyBPcHRpb25TZXQ8QmFzZVR5cGVGbGFnPgogICAgIGJvb2wgbV9oYXNSYXJlRGF0YSA6IDEg
eyBmYWxzZSB9OwogICAgIGJvb2wgbV9pc0lubGluZUludGVncmF0aW9uUm9vdCA6IDEgeyBmYWxz
ZSB9OworICAgIGJvb2wgbV9pc0ZpcnN0Q2hpbGRGb3JJbnRlZ3JhdGlvbiA6IDEgeyBmYWxzZSB9
OwogCiAgICAgQ2hlY2tlZFB0cjxFbGVtZW50Qm94PiBtX3BhcmVudDsKICAgICAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCA5ZjU1ZTE0NGMxNzcuLjk3ZjAwNmQz
N2MwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcApAQCAtMzUsNiAr
MzUsNyBAQAogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbWFnZVF1YWxp
dHlDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiTGF5b3V0SW5pdGlhbENvbnRhaW5pbmdCbG9jay5o
IgorI2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5oIgog
I2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJEZXNjZW5kYW50SXRlcmF0b3IuaCIK
QEAgLTY1LDcgKzY2LDcgQEAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFJlbmRlclZpZXcp
OwogUmVuZGVyVmlldzo6UmVuZGVyVmlldyhEb2N1bWVudCYgZG9jdW1lbnQsIFJlbmRlclN0eWxl
JiYgc3R5bGUpCiAgICAgOiBSZW5kZXJCbG9ja0Zsb3coZG9jdW1lbnQsIFdURk1vdmUoc3R5bGUp
KQogICAgICwgbV9mcmFtZVZpZXcoKmRvY3VtZW50LnZpZXcoKSkKLSAgICAsIG1faW5pdGlhbENv
bnRhaW5pbmdCbG9jayhXVEY6Om1ha2VVbmlxdWVSZWY8TGF5b3V0OjpJbml0aWFsQ29udGFpbmlu
Z0Jsb2NrPihSZW5kZXJTdHlsZTo6Y2xvbmUodGhpcy0+c3R5bGUoKSkpKQorICAgICwgbV9pbml0
aWFsQ29udGFpbmluZ0Jsb2NrKG1ha2VVbmlxdWVSZWY8TGF5b3V0OjpJbml0aWFsQ29udGFpbmlu
Z0Jsb2NrPihSZW5kZXJTdHlsZTo6Y2xvbmUodGhpcy0+c3R5bGUoKSkpKQogICAgICwgbV9zZWxl
Y3Rpb24oKnRoaXMpCiAgICAgLCBtX2xhenlSZXBhaW50VGltZXIoKnRoaXMsICZSZW5kZXJWaWV3
OjpsYXp5UmVwYWludFRpbWVyRmlyZWQpCiB7CkBAIC0xODIsNiArMTgzLDggQEAgdm9pZCBSZW5k
ZXJWaWV3OjpsYXlvdXQoKQogICAgIGlmICghbmVlZHNMYXlvdXQoKSkKICAgICAgICAgcmV0dXJu
OwogCisgICAgZW5zdXJlTGF5b3V0U3RhdGUoKS5zZXRWaWV3cG9ydFNpemUoZnJhbWVWaWV3KCku
c2l6ZSgpKTsKKwogICAgIExheW91dFN0YXRlTWFpbnRhaW5lciBzdGF0ZVB1c2hlcigqdGhpcywg
eyB9LCBmYWxzZSwgdmFsdWVPckRlZmF1bHQobV9wYWdlTG9naWNhbFNpemUpLmhlaWdodCgpLCBt
X3BhZ2VMb2dpY2FsSGVpZ2h0Q2hhbmdlZCk7CiAKICAgICBtX3BhZ2VMb2dpY2FsSGVpZ2h0Q2hh
bmdlZCA9IGZhbHNlOwpAQCAtMTk0LDYgKzE5NywxOSBAQCB2b2lkIFJlbmRlclZpZXc6OmxheW91
dCgpCiAgICAgY2xlYXJOZWVkc0xheW91dCgpOwogfQogCitMYXlvdXQ6OkxheW91dFN0YXRlJiBS
ZW5kZXJWaWV3OjplbnN1cmVMYXlvdXRTdGF0ZSgpCit7CisgICAgaWYgKCFtX2xheW91dFN0YXRl
KQorICAgICAgICBtX2xheW91dFN0YXRlID0gbWFrZVVuaXF1ZTxMYXlvdXQ6OkxheW91dFN0YXRl
Pihkb2N1bWVudCgpLCBtX2luaXRpYWxDb250YWluaW5nQmxvY2suZ2V0KCksIExheW91dDo6TGF5
b3V0U3RhdGU6OkZvcm1hdHRpbmdDb250ZXh0SW50ZWdyYXRpb25UeXBlOjpJbmxpbmUpOworICAg
IHJldHVybiAqbV9sYXlvdXRTdGF0ZTsKK30KKwordm9pZCBSZW5kZXJWaWV3Ojp1cGRhdGVRdWly
a3NNb2RlKCkKK3sKKyAgICBpZiAobV9sYXlvdXRTdGF0ZSkKKyAgICAgICAgbV9sYXlvdXRTdGF0
ZS0+dXBkYXRlUXVpcmtzTW9kZShkb2N1bWVudCgpKTsKK30KKwogTGF5b3V0VW5pdCBSZW5kZXJW
aWV3OjpwYWdlT3JWaWV3TG9naWNhbEhlaWdodCgpIGNvbnN0CiB7CiAgICAgaWYgKHNob3VsZFVz
ZVByaW50aW5nTGF5b3V0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAppbmRl
eCA5ODBmZjk4ODEzZWUuLjgzNGEyMDhmYjJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclZpZXcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5oCkBAIC00MCw2ICs0MCw3IEBAIGNsYXNzIFJlbmRlclF1b3RlOwogCiBuYW1lc3Bh
Y2UgTGF5b3V0IHsKIGNsYXNzIEluaXRpYWxDb250YWluaW5nQmxvY2s7CitjbGFzcyBMYXlvdXRT
dGF0ZTsKIH0KIAogY2xhc3MgUmVuZGVyVmlldyBmaW5hbCA6IHB1YmxpYyBSZW5kZXJCbG9ja0Zs
b3cgewpAQCAtNzUsNiArNzYsOCBAQCBwdWJsaWM6CiAKICAgICBMYXlvdXQ6OkluaXRpYWxDb250
YWluaW5nQmxvY2smIGluaXRpYWxDb250YWluaW5nQmxvY2soKSB7IHJldHVybiBtX2luaXRpYWxD
b250YWluaW5nQmxvY2suZ2V0KCk7IH0KICAgICBjb25zdCBMYXlvdXQ6OkluaXRpYWxDb250YWlu
aW5nQmxvY2smIGluaXRpYWxDb250YWluaW5nQmxvY2soKSBjb25zdCB7IHJldHVybiBtX2luaXRp
YWxDb250YWluaW5nQmxvY2suZ2V0KCk7IH0KKyAgICBMYXlvdXQ6OkxheW91dFN0YXRlJiBlbnN1
cmVMYXlvdXRTdGF0ZSgpOworICAgIHZvaWQgdXBkYXRlUXVpcmtzTW9kZSgpOwogCiAgICAgYm9v
bCBuZWVkc1JlcGFpbnRIYWNrQWZ0ZXJDb21wb3NpdGluZ0xheWVyVXBkYXRlRm9yRGVidWdPdmVy
bGF5c09ubHkoKSBjb25zdCB7IHJldHVybiBtX25lZWRzUmVwYWludEhhY2tBZnRlckNvbXBvc2l0
aW5nTGF5ZXJVcGRhdGVGb3JEZWJ1Z092ZXJsYXlzT25seTsgfTsKICAgICB2b2lkIHNldE5lZWRz
UmVwYWludEhhY2tBZnRlckNvbXBvc2l0aW5nTGF5ZXJVcGRhdGVGb3JEZWJ1Z092ZXJsYXlzT25s
eShib29sIHZhbHVlID0gdHJ1ZSkgeyBtX25lZWRzUmVwYWludEhhY2tBZnRlckNvbXBvc2l0aW5n
TGF5ZXJVcGRhdGVGb3JEZWJ1Z092ZXJsYXlzT25seSA9IHZhbHVlOyB9CkBAIC0yMzIsNiArMjM1
LDcgQEAgcHJpdmF0ZToKICAgICB1aW50NjRfdCBtX3JlbmRlcmVyQ291bnQgeyAxIH07CiAKICAg
ICBVbmlxdWVSZWY8TGF5b3V0OjpJbml0aWFsQ29udGFpbmluZ0Jsb2NrPiBtX2luaXRpYWxDb250
YWluaW5nQmxvY2s7CisgICAgc3RkOjp1bmlxdWVfcHRyPExheW91dDo6TGF5b3V0U3RhdGU+IG1f
bGF5b3V0U3RhdGU7CiAKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxSZWdpb24+IG1fYWNj
dW11bGF0ZWRSZXBhaW50UmVnaW9uOwogICAgIFNlbGVjdGlvblJhbmdlRGF0YSBtX3NlbGVjdGlv
bjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>