<?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>131346</bug_id>
          
          <creation_ts>2014-04-07 22:29:56 -0700</creation_ts>
          <short_desc>Fix assertions triggered by CSS calc changes in r166860</short_desc>
          <delta_ts>2015-12-08 14:06:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>d-r</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>998432</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-07 22:29:56 -0700</bug_when>
    <thetext>Fix code paths that use isPercent but don&apos;t handle calculated values</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998435</commentid>
    <comment_count>1</comment_count>
      <attachid>228806</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-07 22:39:52 -0700</bug_when>
    <thetext>Created attachment 228806
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998439</commentid>
    <comment_count>2</comment_count>
      <attachid>228807</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-04-07 22:56:02 -0700</bug_when>
    <thetext>Created attachment 228807
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998493</commentid>
    <comment_count>3</comment_count>
      <attachid>228807</attachid>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2014-04-08 01:20:27 -0700</bug_when>
    <thetext>Comment on attachment 228807
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998500</commentid>
    <comment_count>4</comment_count>
      <attachid>228807</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-08 01:59:13 -0700</bug_when>
    <thetext>Comment on attachment 228807
Patch

Clearing flags on attachment: 228807

Committed r166920: &lt;http://trac.webkit.org/changeset/166920&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998501</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-08 01:59:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147461</commentid>
    <comment_count>6</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-12-08 13:57:22 -0800</bug_when>
    <thetext>Part of the fix for CVE-2014-4410.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228806</attachid>
            <date>2014-04-07 22:39:52 -0700</date>
            <delta_ts>2014-04-07 22:55:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131346-20140407223938.patch</filename>
            <type>text/plain</type>
            <size>27809</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2ODY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTYwMTdjZjMwYWE5N2Vj
ZGM0NTVhNWI4YTJlNDY3MDdjNmQ1ZDE0OS4uMTA0NGRmNGRlMDhkZWI4YWJmOWU3ZDY2MjE3NmEx
ZmViOTY1Njg2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE0LTA0LTA3ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggY29kZSBwYXRocyB0aGF0
IHVzZSBpc1BlcmNlbnQgYnV0IGRvbid0IGhhbmRsZSBjYWxjdWxhdGVkIHZhbHVlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMxMzQ2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4ZXMgYXNzZXJ0aW9u
cyBzZWVuIGluIHJlZ3Jlc3Npb24gdGVzdHMuCisKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmdldEJvcmRlclJhZGl1c0Nv
cm5lclZhbHVlcyk6IFVzZSBpc1BlcmNlbnROb3RDYWxjdWxhdGVkKCkgaW5zdGVhZCBvZgorICAg
ICAgICB0eXBlKCkgPT0gUGVyY2VudDsgbm8gYmVoYXZpb3IgY2hhbmdlLgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUpOiBEaXR0by4KKyAgICAgICAgKFdlYkNv
cmU6OmxpbmVIZWlnaHRGcm9tU3R5bGUpOiBVc2UgaXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgpIGJl
Zm9yZSBjb2RlCisgICAgICAgIHRoYXQgY2FsbHMgcGVyY2VudCgpLCB3aGljaCB3b24ndCB3b3Jr
IGZvciBhIGNhbGN1bGF0ZWQgbGVuZ3RoLgorCisgICAgICAgICogY3NzL0RlcHJlY2F0ZWRTdHls
ZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eUJvcmRlclJhZGl1
czo6YXBwbHlWYWx1ZSk6IFVzZSBpc05lZ2F0aXZlIGFuZCBpc1plcm8gcmF0aGVyCisgICAgICAg
IHRoYW4gY2FsbGluZyB2YWx1ZSgpIHVuY29uZGl0aW9uYWxseS4gU2hvdWxkIG1ha2UgY2FsY3Vs
YXRlZCB2YWx1ZXMgd29yayBiZXR0ZXIuCisKKyAgICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXMxMDBQZXJjZW50KTogVXNlIGlzUGVy
Y2VudE5vdENhbGN1bGF0ZWQoKSBiZWZvcmUgY29kZQorICAgICAgICB0aGF0IGNhbGxzIHBlcmNl
bnQoKSwgd2hpY2ggd29uJ3Qgd29yayBmb3IgYSBjYWxjdWxhdGVkIGxlbmd0aC4KKworICAgICAg
ICAqIHBsYXRmb3JtL0xlbmd0aC5oOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjpwZXJjZW50
KTogQ2hhbmdlIGFzc2VydCB0byBpc1BlcmNlbnROb3RDYWxjdWxhdGVkLCBzaW5jZSB0aGUKKyAg
ICAgICAgdmFsdWUgZnVuY3Rpb24gdGhpcyBjYWxscyBvbmx5IHdvcmtzIGZvciBub24tY2FsY3Vs
YXRlZCB2YWx1ZXMgYW55d2F5LgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjppc1BlcmNlbnRO
b3RDYWxjdWxhdGVkKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6OmlzUGVyY2Vu
dCk6IENoYW5nZWQgdG8gY2FsbCBpc1BlcmNlbnROb3RDYWxjdWxhdGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TGVuZ3RoOjppc1NwZWNpZmllZCk6IENoYW5nZWQgdG8gY2FsbCBpc1BlcmNlbnQuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9y
bU9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0
aW9uOjphcHBseSk6IFVzZSBpc1BlcmNlbnROb3RDYWxjdWxhdGVkKCkKKyAgICAgICAgaW5zdGVh
ZCBvZiB0eXBlKCkgPT0gUGVyY2VudDsgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICog
cmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdXRvVGFi
bGVMYXlvdXQ6OnJlY2FsY0NvbHVtbik6IFVzZSBpc1BlcmNlbnROb3RDYWxjdWxhdGVkKCkKKyAg
ICAgICAgYmVmb3JlIGNvZGUgdGhhdCBjYWxscyB2YWx1ZSgpIG9yIHBlcmNlbnQoKSwgd2hpY2gg
d29uJ3Qgd29yayBmb3IgYSBjYWxjdWxhdGVkIGxlbmd0aC4KKyAgICAgICAgKFdlYkNvcmU6OkF1
dG9UYWJsZUxheW91dDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OkF1dG9UYWJsZUxheW91dDo6Y2FsY0VmZmVjdGl2ZUxvZ2ljYWxXaWR0
aCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QXV0b1RhYmxlTGF5b3V0OjpsYXlvdXQpOiBE
aXR0by4KKyAgICAgICAgKiByZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGaXhlZFRhYmxlTGF5b3V0OjpsYXlvdXQpOiBEaXR0by4KKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQm94TW9kZWxPYmplY3Q6OmNhbGN1bGF0ZUltYWdlSW50cmluc2ljRGltZW5zaW9ucyk6IERp
dHRvLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6dXBkYXRlTG9naWNhbEhlaWdodEZvckNlbGwpOiBEaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6ZGlzdHJpYnV0ZUV4dHJhTG9naWNhbEhlaWdo
dFRvUGVyY2VudFJvd3MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2Vj
dGlvbjo6ZGlzdHJpYnV0ZUV4dHJhTG9naWNhbEhlaWdodFRvUm93cyk6IERpdHRvLgorCisgICAg
ICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnJlcXVpcmVUcmFuc2Zvcm1PcmlnaW4pOiBVc2UgbW9kZXJuIGZvciBsb29wLiBBbHNvIG1hcmtl
ZCBmdW5jdGlvbiBzdGF0aWMsCisgICAgICAgIHNpbmNlIGl0J3MgcHJpdmF0ZSB0byB0aGlzIGZp
bGUuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YXBwbHlUcmFuc2Zvcm0pOiBVc2Ug
aXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgpIGluc3RlYWQgb2YKKyAgICAgICAgdHlwZSgpID09IFBl
cmNlbnQ7IG5vIGJlaGF2aW9yIGNoYW5nZS4gQWxzbyB1c2UgYSBtb2Rlcm4gZm9yIGxvb3AgYW5k
IGF1dG8mIHRvIGF2b2lkCisgICAgICAgIGEgcmVhbGx5IGxvbmcgdHlwZSBuYW1lLgorCisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVJbnRyaW5zaWNSYXRpb0luZm9ybWF0aW9uKTogVXNlIGlz
UGVyY2VudE5vdENhbGN1bGF0ZWQoKQorICAgICAgICBiZWZvcmUgY29kZSB0aGF0IGNhbGxzIHBl
cmNlbnQoKSwgd2hpY2ggd29uJ3Qgd29yayBmb3IgYSBjYWxjdWxhdGVkIGxlbmd0aC4KKwogMjAx
NC0wNC0wNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBz
b21lIGJpbmRpbmdzIGltcHJvdmVtZW50cywgd2l0aCBzbWFsbGVyIGNvZGUgc2l6ZSBmb3IgZXJy
b3IgbWVzc2FnZSBnZW5lcmF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
Q29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGMyOTk4M2EyNjc2ZDFiMGU4Mjg0NTBiYzdj
MDQ2MWY2MjliNzJhZDIuLmVmNTBkODJiYjkxZmU0ZDY1NDNhZDkzZDU1NGZkNWU3ZWU5Yzk0YmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCkBAIC03MDUsMTEgKzcwNSwxMSBAQCBQYXNzUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVl
PiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpjdXJyZW50Q29sb3JPclZhbGlkQ29sb3IoUgogc3Rh
dGljIFBhc3NSZWY8Q1NTVmFsdWVMaXN0PiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZXMoY29u
c3QgTGVuZ3RoU2l6ZSYgcmFkaXVzLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclZp
ZXcqIHJlbmRlclZpZXcpCiB7CiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVT
cGFjZVNlcGFyYXRlZCgpOwotICAgIGlmIChyYWRpdXMud2lkdGgoKS50eXBlKCkgPT0gUGVyY2Vu
dCkKKyAgICBpZiAocmFkaXVzLndpZHRoKCkuaXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgpKQogICAg
ICAgICBsaXN0LmdldCgpLmFwcGVuZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShyYWRpdXMu
d2lkdGgoKS5wZXJjZW50KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkpOwog
ICAgIGVsc2UKICAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1
ZSh2YWx1ZUZvckxlbmd0aChyYWRpdXMud2lkdGgoKSwgMCwgcmVuZGVyVmlldyksIHN0eWxlKSk7
Ci0gICAgaWYgKHJhZGl1cy5oZWlnaHQoKS50eXBlKCkgPT0gUGVyY2VudCkKKyAgICBpZiAocmFk
aXVzLmhlaWdodCgpLmlzUGVyY2VudE5vdENhbGN1bGF0ZWQoKSkKICAgICAgICAgbGlzdC5nZXQo
KS5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUocmFkaXVzLmhlaWdodCgpLnBlcmNl
bnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSk7CiAgICAgZWxzZQogICAg
ICAgICBsaXN0LmdldCgpLmFwcGVuZCh6b29tQWRqdXN0ZWRQaXhlbFZhbHVlKHZhbHVlRm9yTGVu
Z3RoKHJhZGl1cy5oZWlnaHQoKSwgMCwgcmVuZGVyVmlldyksIHN0eWxlKSk7CkBAIC03MTksNyAr
NzE5LDcgQEAgc3RhdGljIFBhc3NSZWY8Q1NTVmFsdWVMaXN0PiBnZXRCb3JkZXJSYWRpdXNDb3Ju
ZXJWYWx1ZXMoY29uc3QgTGVuZ3RoU2l6ZSYgcmFkaXUKIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVl
PiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShjb25zdCBMZW5ndGhTaXplJiByYWRpdXMsIGNv
bnN0IFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyVmlldyogcmVuZGVyVmlldykKIHsKICAgICBp
ZiAocmFkaXVzLndpZHRoKCkgPT0gcmFkaXVzLmhlaWdodCgpKSB7Ci0gICAgICAgIGlmIChyYWRp
dXMud2lkdGgoKS50eXBlKCkgPT0gUGVyY2VudCkKKyAgICAgICAgaWYgKHJhZGl1cy53aWR0aCgp
LmlzUGVyY2VudE5vdENhbGN1bGF0ZWQoKSkKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBv
b2woKS5jcmVhdGVWYWx1ZShyYWRpdXMud2lkdGgoKS5wZXJjZW50KCksIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfUEVSQ0VOVEFHRSk7CiAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZh
bHVlKHZhbHVlRm9yTGVuZ3RoKHJhZGl1cy53aWR0aCgpLCAwLCByZW5kZXJWaWV3KSwgc3R5bGUp
OwogICAgIH0KQEAgLTE0NTIsMTIgKzE0NTIsMTMgQEAgc3RhdGljIFBhc3NSZWY8Q1NTUHJpbWl0
aXZlVmFsdWU+IGxpbmVIZWlnaHRGcm9tU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXIK
ICAgICBMZW5ndGggbGVuZ3RoID0gc3R5bGUtPmxpbmVIZWlnaHQoKTsKICAgICBpZiAobGVuZ3Ro
LmlzTmVnYXRpdmUoKSkKICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZUlkZW50
aWZpZXJWYWx1ZShDU1NWYWx1ZU5vcm1hbCk7Ci0gICAgaWYgKGxlbmd0aC5pc1BlcmNlbnQoKSkK
KyAgICBpZiAobGVuZ3RoLmlzUGVyY2VudE5vdENhbGN1bGF0ZWQoKSkgewogICAgICAgICAvLyBU
aGlzIGlzIGltcGVyZmVjdCwgYmVjYXVzZSBpdCBkb2Vzbid0IGluY2x1ZGUgdGhlIHpvb20gZmFj
dG9yIGFuZCB0aGUgcmVhbCBjb21wdXRhdGlvbgogICAgICAgICAvLyBmb3IgaG93IGhpZ2ggdG8g
YmUgaW4gcGl4ZWxzIGRvZXMgaW5jbHVkZSB0aGluZ3MgbGlrZSBtaW5pbXVtIGZvbnQgc2l6ZSBh
bmQgdGhlIHpvb20gZmFjdG9yLgogICAgICAgICAvLyBPbiB0aGUgb3RoZXIgaGFuZCwgc2luY2Ug
Zm9udC1zaXplIGRvZXNuJ3QgaW5jbHVkZSB0aGUgem9vbSBmYWN0b3IsIHdlIHJlYWxseSBjYW4n
dCBkbwogICAgICAgICAvLyB0aGF0IGhlcmUgZWl0aGVyLgogICAgICAgICByZXR1cm4gem9vbUFk
anVzdGVkUGl4ZWxWYWx1ZShzdGF0aWNfY2FzdDxpbnQ+KGxlbmd0aC5wZXJjZW50KCkgKiBzdHls
ZS0+Zm9udERlc2NyaXB0aW9uKCkuc3BlY2lmaWVkU2l6ZSgpKSAvIDEwMCwgc3R5bGUpOworICAg
IH0KICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShmbG9hdFZhbHVlRm9yTGVuZ3Ro
KGxlbmd0aCwgMCwgcmVuZGVyVmlldyksIHN0eWxlKTsKIH0KIApAQCAtMjE2NCwxMiArMjE2NSwx
MiBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0
eVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydAogICAgICAgICAgICAgaWYgKG1hcmdpblJpZ2h0
LmlzRml4ZWQoKSB8fCAhcmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5pc0JveCgpKQogICAgICAgICAg
ICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3RoKG1hcmdpblJpZ2h0
LCBzdHlsZS5nZXQoKSk7CiAgICAgICAgICAgICBmbG9hdCB2YWx1ZTsKLSAgICAgICAgICAgIGlm
IChtYXJnaW5SaWdodC5pc1BlcmNlbnQoKSB8fCBtYXJnaW5SaWdodC5pc1ZpZXdwb3J0UGVyY2Vu
dGFnZSgpKQorICAgICAgICAgICAgaWYgKG1hcmdpblJpZ2h0LmlzUGVyY2VudCgpIHx8IG1hcmdp
blJpZ2h0LmlzVmlld3BvcnRQZXJjZW50YWdlKCkpIHsKICAgICAgICAgICAgICAgICAvLyBSZW5k
ZXJCb3ggZ2l2ZXMgYSBtYXJnaW5SaWdodCgpIHRoYXQgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4g
dGhlIHJpZ2h0LWVkZ2Ugb2YgdGhlIGNoaWxkIGJveAogICAgICAgICAgICAgICAgIC8vIGFuZCB0
aGUgcmlnaHQtZWRnZSBvZiB0aGUgY29udGFpbmluZyBib3gsIHdoZW4gZGlzcGxheSA9PSBCTE9D
Sy4gTGV0J3MgY2FsY3VsYXRlIHRoZSBhYnNvbHV0ZQogICAgICAgICAgICAgICAgIC8vIHZhbHVl
IG9mIHRoZSBzcGVjaWZpZWQgbWFyZ2luLXJpZ2h0ICUgaW5zdGVhZCBvZiByZWx5aW5nIG9uIFJl
bmRlckJveCdzIG1hcmdpblJpZ2h0KCkgdmFsdWUuCiAgICAgICAgICAgICAgICAgdmFsdWUgPSBt
aW5pbXVtVmFsdWVGb3JMZW5ndGgobWFyZ2luUmlnaHQsIHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+
Y29udGFpbmluZ0Jsb2NrTG9naWNhbFdpZHRoRm9yQ29udGVudCgpLCBtX25vZGUtPmRvY3VtZW50
KCkucmVuZGVyVmlldygpKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgICAgIHZhbHVlID0gdG9SZW5kZXJCb3gocmVuZGVyZXIpLT5tYXJnaW5SaWdo
dCgpOwogICAgICAgICAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUodmFsdWUsIHN0
eWxlLmdldCgpKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0Rl
cHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRT
dHlsZUJ1aWxkZXIuY3BwCmluZGV4IGEyY2RkN2FjNDUxNjVlZGI1YmY3MGM0MmQ2ZjFmNzk0NzIx
YzFkYTUuLjk1NGIxNTk2MDM3MjhlNWJhMjExNDY2YmNhODc0ZDBjY2JhMGU2N2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAKQEAgLTQ0Myw3ICs0
NDMsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgTGVuZ3RoIHJh
ZGl1c1dpZHRoOwotICAgICAgICBMZW5ndGggcmFkaXVzSGVpZ2h0OwogICAgICAgICBpZiAocGFp
ci0+Zmlyc3QoKS0+aXNQZXJjZW50YWdlKCkpCiAgICAgICAgICAgICByYWRpdXNXaWR0aCA9IExl
bmd0aChwYWlyLT5maXJzdCgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKICAgICAgICAg
ZWxzZSBpZiAocGFpci0+Zmlyc3QoKS0+aXNWaWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSkKQEAg
LTQ1Miw2ICs0NTEsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByYWRpdXNXaWR0aCA9IExlbmd0
aChwYWlyLT5maXJzdCgpLT5jc3NDYWxjVmFsdWUoKS0+Y3JlYXRlQ2FsY3VsYXRpb25WYWx1ZShz
dHlsZVJlc29sdmVyLT5zdHlsZSgpLCBzdHlsZVJlc29sdmVyLT5yb290RWxlbWVudFN0eWxlKCks
IHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICByYWRpdXNXaWR0aCA9IHBhaXItPmZpcnN0KCktPmNvbXB1dGVMZW5ndGg8
TGVuZ3RoPihzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCBzdHlsZVJlc29sdmVyLT5yb290RWxlbWVu
dFN0eWxlKCksIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSk7CisKKyAg
ICAgICAgTGVuZ3RoIHJhZGl1c0hlaWdodDsKICAgICAgICAgaWYgKHBhaXItPnNlY29uZCgpLT5p
c1BlcmNlbnRhZ2UoKSkKICAgICAgICAgICAgIHJhZGl1c0hlaWdodCA9IExlbmd0aChwYWlyLT5z
ZWNvbmQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7CiAgICAgICAgIGVsc2UgaWYgKHBh
aXItPnNlY29uZCgpLT5pc1ZpZXdwb3J0UGVyY2VudGFnZUxlbmd0aCgpKQpAQCAtNDYwLDE3ICs0
NjEsMTYgQEAgcHVibGljOgogICAgICAgICAgICAgcmFkaXVzSGVpZ2h0ID0gTGVuZ3RoKHBhaXIt
PnNlY29uZCgpLT5jc3NDYWxjVmFsdWUoKS0+Y3JlYXRlQ2FsY3VsYXRpb25WYWx1ZShzdHlsZVJl
c29sdmVyLT5zdHlsZSgpLCBzdHlsZVJlc29sdmVyLT5yb290RWxlbWVudFN0eWxlKCksIHN0eWxl
UmVzb2x2ZXItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICByYWRpdXNIZWlnaHQgPSBwYWlyLT5zZWNvbmQoKS0+Y29tcHV0ZUxlbmd0aDxMZW5n
dGg+KHN0eWxlUmVzb2x2ZXItPnN0eWxlKCksIHN0eWxlUmVzb2x2ZXItPnJvb3RFbGVtZW50U3R5
bGUoKSwgc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKTsKLSAgICAgICAg
aW50IHdpZHRoID0gcmFkaXVzV2lkdGgudmFsdWUoKTsKLSAgICAgICAgaW50IGhlaWdodCA9IHJh
ZGl1c0hlaWdodC52YWx1ZSgpOwotICAgICAgICBpZiAod2lkdGggPCAwIHx8IGhlaWdodCA8IDAp
CisKKyAgICAgICAgaWYgKHJhZGl1c1dpZHRoLmlzTmVnYXRpdmUoKSB8fCByYWRpdXNIZWlnaHQu
aXNOZWdhdGl2ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoIXdpZHRoKQot
ICAgICAgICAgICAgcmFkaXVzSGVpZ2h0ID0gcmFkaXVzV2lkdGg7IC8vIE51bGwgb3V0IHRoZSBv
dGhlciB2YWx1ZS4KLSAgICAgICAgZWxzZSBpZiAoIWhlaWdodCkKLSAgICAgICAgICAgIHJhZGl1
c1dpZHRoID0gcmFkaXVzSGVpZ2h0OyAvLyBOdWxsIG91dCB0aGUgb3RoZXIgdmFsdWUuCiAKLSAg
ICAgICAgTGVuZ3RoU2l6ZSBzaXplKHJhZGl1c1dpZHRoLCByYWRpdXNIZWlnaHQpOwotICAgICAg
ICBzZXRWYWx1ZShzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCBzaXplKTsKKyAgICAgICAgaWYgKHJh
ZGl1c1dpZHRoLmlzWmVybygpIHx8IHJhZGl1c0hlaWdodC5pc1plcm8oKSkgeworICAgICAgICAg
ICAgcmFkaXVzV2lkdGguc2V0VmFsdWUoRml4ZWQsIDApOworICAgICAgICAgICAgcmFkaXVzSGVp
Z2h0LnNldFZhbHVlKEZpeGVkLCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIHNldFZhbHVlKHN0
eWxlUmVzb2x2ZXItPnN0eWxlKCksIExlbmd0aFNpemUocmFkaXVzV2lkdGgsIHJhZGl1c0hlaWdo
dCkpOwogICAgIH0KICAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3Bw
CmluZGV4IGY0ZGZkMWYzN2E1Y2U0MmNhMmYyOTgyNmJkYTM4YTNlN2M0NjRlZDUuLmQ4MGNhNDQ1
OTAxZGI1YjA3MDA1MTk2YzA3MGQ4ZTVkYzEzMWRkODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtNjEwLDcgKzYxMCw3IEBAIHZvaWQg
SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6Y2hlY2tTaXplQ2hhbmdlRm9yU25hcHNob3R0aW5nKCkK
IAogc3RhdGljIGlubGluZSBib29sIGlzMTAwUGVyY2VudChMZW5ndGggbGVuZ3RoKQogewotICAg
IHJldHVybiBsZW5ndGguaXNQZXJjZW50KCkgJiYgbGVuZ3RoLnBlcmNlbnQoKSA9PSAxMDA7Cisg
ICAgcmV0dXJuIGxlbmd0aC5pc1BlcmNlbnROb3RDYWxjdWxhdGVkKCkgJiYgbGVuZ3RoLnBlcmNl
bnQoKSA9PSAxMDA7CiB9CiAKIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxlbWVudDo6c3ViZnJhbWVM
b2FkZXJXaWxsQ3JlYXRlUGx1Z0luKGNvbnN0IFVSTCYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZW5n
dGguaAppbmRleCBmZjNjOTkyNjFlNGU1ZWFlODc1ZTU1YjUwMGE0YTM4YmU0ZjIzYmJiLi4wMzZj
YTM5MDg1ZThiZDE1MjM2NzM3MzNlZjQwODI5YWRhMjY0Y2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
ZW5ndGguaApAQCAtODQsNiArODQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0ZpeGVkKCkgY29u
c3Q7CiAgICAgYm9vbCBpc01heENvbnRlbnQoKSBjb25zdDsKICAgICBib29sIGlzTWluQ29udGVu
dCgpIGNvbnN0OworICAgIGJvb2wgaXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgpIGNvbnN0OyAvLyBG
SVhNRTogUmVuYW1lIHRvIGlzUGVyY2VudC4KICAgICBib29sIGlzUmVsYXRpdmUoKSBjb25zdDsK
ICAgICBib29sIGlzVW5kZWZpbmVkKCkgY29uc3Q7CiAKQEAgLTk3LDExICs5OCw3IEBAIHB1Ymxp
YzoKICAgICBib29sIGlzUG9zaXRpdmUoKSBjb25zdDsKICAgICBib29sIGlzTmVnYXRpdmUoKSBj
b25zdDsKIAotICAgIC8vIFJldHVybnMgdHJ1ZSBmb3IgYm90aCBQZXJjZW50IGFuZCBDYWxjdWxh
dGVkLgotICAgIC8vIEZJWE1FOiBEb2Vzbid0IHJlYWxseSBzZWVtIE9LIHRvIHJldHVybiB0cnVl
IGZvciBDYWxjdWxhdGVkIGdpdmVuIHRoaXMgZnVuY3Rpb24ncyBuYW1lLAotICAgIC8vIGV2ZW4g
dGhvdWdoIGFsbCBjYWxjdWxhdGVkIHZhbHVlcyBhcmUgdHJlYXRlZCBhcyBwZXJjZW50YWdlcy4g
Q2FsbGVycyBjYW4gdGVsbCBQZXJjZW50Ci0gICAgLy8gZnJvbSBhIENhbGN1bGF0ZWQgYWxyZWFk
eSBieSBsb29raW5nIGF0IHR5cGUsIHNvIHRoaXMgZnVuY3Rpb24gb25seSBoYWxmLWhpZGVzIHRo
ZSBkaXN0aW5jdGlvbi4KLSAgICBib29sIGlzUGVyY2VudCgpIGNvbnN0OworICAgIGJvb2wgaXNQ
ZXJjZW50KCkgY29uc3Q7IC8vIFJldHVybnMgdHJ1ZSBmb3IgYm90aCBQZXJjZW50IGFuZCBDYWxj
dWxhdGVkLiBGSVhNRTogRmluZCBhIGJldHRlciBuYW1lIGZvciB0aGlzLgogCiAgICAgYm9vbCBp
c0ludHJpbnNpYygpIGNvbnN0OwogICAgIGJvb2wgaXNJbnRyaW5zaWNPckF1dG8oKSBjb25zdDsK
QEAgLTI2Miw3ICsyNTksNyBAQCBpbmxpbmUgaW50IExlbmd0aDo6aW50VmFsdWUoKSBjb25zdAog
CiBpbmxpbmUgZmxvYXQgTGVuZ3RoOjpwZXJjZW50KCkgY29uc3QKIHsKLSAgICBBU1NFUlQoaXNQ
ZXJjZW50KCkpOworICAgIEFTU0VSVChpc1BlcmNlbnROb3RDYWxjdWxhdGVkKCkpOwogICAgIHJl
dHVybiB2YWx1ZSgpOwogfQogCkBAIC0zNDEsNiArMzM4LDExIEBAIGlubGluZSBib29sIExlbmd0
aDo6aXNOZWdhdGl2ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1faXNGbG9hdCA/IChtX2Zsb2F0VmFs
dWUgPCAwKSA6IChtX2ludFZhbHVlIDwgMCk7CiB9CiAKK2lubGluZSBib29sIExlbmd0aDo6aXNQ
ZXJjZW50Tm90Q2FsY3VsYXRlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHR5cGUoKSA9PSBQZXJj
ZW50OworfQorCiBpbmxpbmUgYm9vbCBMZW5ndGg6OmlzUmVsYXRpdmUoKSBjb25zdAogewogICAg
IHJldHVybiB0eXBlKCkgPT0gUmVsYXRpdmU7CkBAIC0zNTMsNyArMzU1LDcgQEAgaW5saW5lIGJv
b2wgTGVuZ3RoOjppc1VuZGVmaW5lZCgpIGNvbnN0CiAKIGlubGluZSBib29sIExlbmd0aDo6aXNQ
ZXJjZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gdHlwZSgpID09IFBlcmNlbnQgfHwgaXNDYWxj
dWxhdGVkKCk7CisgICAgcmV0dXJuIGlzUGVyY2VudE5vdENhbGN1bGF0ZWQoKSB8fCBpc0NhbGN1
bGF0ZWQoKTsKIH0KIAogaW5saW5lIGJvb2wgTGVuZ3RoOjppc1Bvc2l0aXZlKCkgY29uc3QKQEAg
LTM5NSw3ICszOTcsNyBAQCBpbmxpbmUgYm9vbCBMZW5ndGg6OmlzSW50cmluc2ljT3JBdXRvKCkg
Y29uc3QKIAogaW5saW5lIGJvb2wgTGVuZ3RoOjppc1NwZWNpZmllZCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGlzRml4ZWQoKSB8fCB0eXBlKCkgPT0gUGVyY2VudCB8fCBpc0NhbGN1bGF0ZWQoKSB8
fCBpc1ZpZXdwb3J0UGVyY2VudGFnZSgpOworICAgIHJldHVybiBpc0ZpeGVkKCkgfHwgaXNQZXJj
ZW50KCkgfHwgaXNWaWV3cG9ydFBlcmNlbnRhZ2UoKTsKIH0KIAogaW5saW5lIGJvb2wgTGVuZ3Ro
Ojppc1NwZWNpZmllZE9ySW50cmluc2ljKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5z
bGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCmluZGV4IDYzY2Y1ODdiMmQ2ZTIwYmJjZDM3NzNmODcy
N2IzNWVhODhhMDdjOTIuLjY5ZTVkODUyNWExMTY0MDQxMWFjZTFiNGI2YzZlM2Y4N2I3YWFhNGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaApAQCAt
NjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBhcHBseShUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFNpemUmIGJvcmRlckJveFNpemUpIGNv
bnN0CiAgICAgewogICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlM2QoeChib3JkZXJCb3hTaXpl
KSwgeShib3JkZXJCb3hTaXplKSwgeihib3JkZXJCb3hTaXplKSk7Ci0gICAgICAgIHJldHVybiBt
X3gudHlwZSgpID09IFBlcmNlbnQgfHwgbV95LnR5cGUoKSA9PSBQZXJjZW50OworICAgICAgICBy
ZXR1cm4gbV94LmlzUGVyY2VudE5vdENhbGN1bGF0ZWQoKSB8fCBtX3kuaXNQZXJjZW50Tm90Q2Fs
Y3VsYXRlZCgpOwogICAgIH0KIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUcmFuc2Zvcm1PcGVy
YXRpb24+IGJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dy
ZXNzLCBib29sIGJsZW5kVG9JZGVudGl0eSA9IGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAKaW5kZXggZGU1ZjA0MTdlMmY0MTc1MTJlZTAzZWMy
YTlhMjk1ODUyOWMxM2QwNi4uNjlhY2I5ODc1YTdmNGI0ZWIyZDY0MjA0MmQ0N2MwZmE4MTZmNTE4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0F1dG9UYWJsZUxheW91dC5jcHAKQEAg
LTEwOCw3ICsxMDgsNyBAQCB2b2lkIEF1dG9UYWJsZUxheW91dDo6cmVjYWxjQ29sdW1uKHVuc2ln
bmVkIGVmZkNvbCkKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgICAgICBjYXNlIFBlcmNlbnQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2hhc1BlcmNl
bnQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxMb2dpY2FsV2lkdGgu
aXNQb3NpdGl2ZSgpICYmICghY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC5pc1BlcmNlbnQoKSB8
fCBjZWxsTG9naWNhbFdpZHRoLnZhbHVlKCkgPiBjb2x1bW5MYXlvdXQubG9naWNhbFdpZHRoLnZh
bHVlKCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxMb2dpY2FsV2lkdGguaXNQ
b3NpdGl2ZSgpICYmICghY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC5pc1BlcmNlbnROb3RDYWxj
dWxhdGVkKCkgfHwgY2VsbExvZ2ljYWxXaWR0aC5wZXJjZW50KCkgPiBjb2x1bW5MYXlvdXQubG9n
aWNhbFdpZHRoLnBlcmNlbnQoKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1u
TGF5b3V0LmxvZ2ljYWxXaWR0aCA9IGNlbGxMb2dpY2FsV2lkdGg7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBSZWxhdGl2ZToKQEAgLTIy
OSw4ICsyMjksOCBAQCB2b2lkIEF1dG9UYWJsZUxheW91dDo6Y29tcHV0ZUludHJpbnNpY0xvZ2lj
YWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluV2lkdGgsIExheW91dAogICAgICAgICBtaW5XaWR0aCAr
PSBtX2xheW91dFN0cnVjdFtpXS5lZmZlY3RpdmVNaW5Mb2dpY2FsV2lkdGg7CiAgICAgICAgIG1h
eFdpZHRoICs9IG1fbGF5b3V0U3RydWN0W2ldLmVmZmVjdGl2ZU1heExvZ2ljYWxXaWR0aDsKICAg
ICAgICAgaWYgKHNjYWxlQ29sdW1ucykgewotICAgICAgICAgICAgaWYgKG1fbGF5b3V0U3RydWN0
W2ldLmVmZmVjdGl2ZUxvZ2ljYWxXaWR0aC5pc1BlcmNlbnQoKSkgewotICAgICAgICAgICAgICAg
IGZsb2F0IHBlcmNlbnQgPSBzdGQ6Om1pbihzdGF0aWNfY2FzdDxmbG9hdD4obV9sYXlvdXRTdHJ1
Y3RbaV0uZWZmZWN0aXZlTG9naWNhbFdpZHRoLnBlcmNlbnQoKSksIHJlbWFpbmluZ1BlcmNlbnQp
OworICAgICAgICAgICAgaWYgKG1fbGF5b3V0U3RydWN0W2ldLmVmZmVjdGl2ZUxvZ2ljYWxXaWR0
aC5pc1BlcmNlbnROb3RDYWxjdWxhdGVkKCkpIHsKKyAgICAgICAgICAgICAgICBmbG9hdCBwZXJj
ZW50ID0gc3RkOjptaW4obV9sYXlvdXRTdHJ1Y3RbaV0uZWZmZWN0aXZlTG9naWNhbFdpZHRoLnBl
cmNlbnQoKSwgcmVtYWluaW5nUGVyY2VudCk7CiAgICAgICAgICAgICAgICAgZmxvYXQgbG9naWNh
bFdpZHRoID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1fbGF5b3V0U3RydWN0W2ldLmVmZmVjdGl2ZU1h
eExvZ2ljYWxXaWR0aCkgKiAxMDAgLyBzdGQ6Om1heChwZXJjZW50LCBlcHNpbG9uKTsKICAgICAg
ICAgICAgICAgICBtYXhQZXJjZW50ID0gc3RkOjptYXgobG9naWNhbFdpZHRoLCAgbWF4UGVyY2Vu
dCk7CiAgICAgICAgICAgICAgICAgcmVtYWluaW5nUGVyY2VudCAtPSBwZXJjZW50OwpAQCAtMzIy
LDcgKzMyMiw3IEBAIGludCBBdXRvVGFibGVMYXlvdXQ6OmNhbGNFZmZlY3RpdmVMb2dpY2FsV2lk
dGgoKQogICAgICAgICAgICAgICAgIC8vICAgPHRyPjx0ZD4xPC90ZD48dGQgY29sc3Bhbj0yPjIt
MzwvdHI+CiAgICAgICAgICAgICAgICAgLy8gICA8dHI+PHRkPjE8L3RkPjx0ZCBjb2xzcGFuPTIg
d2lkdGg9MTAwJT4yLTM8L3RkPjwvdHI+CiAgICAgICAgICAgICAgICAgLy8gPC90YWJsZT4KLSAg
ICAgICAgICAgICAgICBpZiAoIWNvbHVtbkxheW91dC5lZmZlY3RpdmVMb2dpY2FsV2lkdGguaXNQ
ZXJjZW50KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWNvbHVtbkxheW91dC5lZmZlY3RpdmVM
b2dpY2FsV2lkdGguaXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIGNvbHVtbkxheW91dC5lZmZlY3RpdmVMb2dpY2FsV2lkdGggPSBMZW5ndGgoKTsKICAgICAg
ICAgICAgICAgICAgICAgYWxsQ29sc0FyZVBlcmNlbnQgPSBmYWxzZTsKICAgICAgICAgICAgICAg
ICB9IGVsc2UKQEAgLTM0MCw3ICszNDAsNyBAQCBpbnQgQXV0b1RhYmxlTGF5b3V0OjpjYWxjRWZm
ZWN0aXZlTG9naWNhbFdpZHRoKCkKICAgICAgICAgfQogCiAgICAgICAgIC8vIGFkanVzdCB0YWJs
ZSBtYXggd2lkdGggaWYgbmVlZGVkCi0gICAgICAgIGlmIChjZWxsTG9naWNhbFdpZHRoLmlzUGVy
Y2VudCgpKSB7CisgICAgICAgIGlmIChjZWxsTG9naWNhbFdpZHRoLmlzUGVyY2VudE5vdENhbGN1
bGF0ZWQoKSkgewogICAgICAgICAgICAgaWYgKHRvdGFsUGVyY2VudCA+IGNlbGxMb2dpY2FsV2lk
dGgucGVyY2VudCgpIHx8IGFsbENvbHNBcmVQZXJjZW50KSB7CiAgICAgICAgICAgICAgICAgLy8g
Y2FuJ3Qgc2F0aWZ5IHRoaXMgY29uZGl0aW9uLCB0cmVhdCBhcyB2YXJpYWJsZQogICAgICAgICAg
ICAgICAgIGNlbGxMb2dpY2FsV2lkdGggPSBMZW5ndGgoKTsKQEAgLTM4Myw5ICszODMsOSBAQCBp
bnQgQXV0b1RhYmxlTGF5b3V0OjpjYWxjRWZmZWN0aXZlTG9naWNhbFdpZHRoKCkKICAgICAgICAg
ICAgICAgICBpbnQgYWxsb2NhdGVkTWluTG9naWNhbFdpZHRoID0gMDsKICAgICAgICAgICAgICAg
ICBpbnQgYWxsb2NhdGVkTWF4TG9naWNhbFdpZHRoID0gMDsKICAgICAgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIHBvcyA9IGVmZkNvbDsgcG9zIDwgbGFzdENvbDsgKytwb3MpIHsKLSAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKG1fbGF5b3V0U3RydWN0W3Bvc10ubG9naWNhbFdpZHRoLmlzUGVy
Y2VudCgpIHx8IG1fbGF5b3V0U3RydWN0W3Bvc10uZWZmZWN0aXZlTG9naWNhbFdpZHRoLmlzUGVy
Y2VudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG1fbGF5b3V0U3RydWN0W3Bvc10u
bG9naWNhbFdpZHRoLmlzUGVyY2VudE5vdENhbGN1bGF0ZWQoKSB8fCBtX2xheW91dFN0cnVjdFtw
b3NdLmVmZmVjdGl2ZUxvZ2ljYWxXaWR0aC5pc1BlcmNlbnROb3RDYWxjdWxhdGVkKCkpOwogICAg
ICAgICAgICAgICAgICAgICAvLyB8YWxsQ29sc0FyZVBlcmNlbnR8IG1lYW5zIHRoYXQgZWl0aGVy
IHRoZSBsb2dpY2FsV2lkdGggKm9yKiB0aGUgZWZmZWN0aXZlTG9naWNhbFdpZHRoIGFyZSBwZXJj
ZW50cywgaGFuZGxlIGJvdGggb2YgdGhlbSBoZXJlLgotICAgICAgICAgICAgICAgICAgICBmbG9h
dCBwZXJjZW50ID0gbV9sYXlvdXRTdHJ1Y3RbcG9zXS5sb2dpY2FsV2lkdGguaXNQZXJjZW50KCkg
PyBtX2xheW91dFN0cnVjdFtwb3NdLmxvZ2ljYWxXaWR0aC5wZXJjZW50KCkgOiBtX2xheW91dFN0
cnVjdFtwb3NdLmVmZmVjdGl2ZUxvZ2ljYWxXaWR0aC5wZXJjZW50KCk7CisgICAgICAgICAgICAg
ICAgICAgIGZsb2F0IHBlcmNlbnQgPSBtX2xheW91dFN0cnVjdFtwb3NdLmxvZ2ljYWxXaWR0aC5p
c1BlcmNlbnROb3RDYWxjdWxhdGVkKCkgPyBtX2xheW91dFN0cnVjdFtwb3NdLmxvZ2ljYWxXaWR0
aC5wZXJjZW50KCkgOiBtX2xheW91dFN0cnVjdFtwb3NdLmVmZmVjdGl2ZUxvZ2ljYWxXaWR0aC5w
ZXJjZW50KCk7CiAgICAgICAgICAgICAgICAgICAgIGludCBjb2x1bW5NaW5Mb2dpY2FsV2lkdGgg
PSBzdGF0aWNfY2FzdDxpbnQ+KHBlcmNlbnQgKiBjZWxsTWluTG9naWNhbFdpZHRoIC8gdG90YWxQ
ZXJjZW50KTsKICAgICAgICAgICAgICAgICAgICAgaW50IGNvbHVtbk1heExvZ2ljYWxXaWR0aCA9
IHN0YXRpY19jYXN0PGludD4ocGVyY2VudCAqIGNlbGxNYXhMb2dpY2FsV2lkdGggLyB0b3RhbFBl
cmNlbnQpOwogICAgICAgICAgICAgICAgICAgICBtX2xheW91dFN0cnVjdFtwb3NdLmVmZmVjdGl2
ZU1pbkxvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4KG1fbGF5b3V0U3RydWN0W3Bvc10uZWZmZWN0aXZl
TWluTG9naWNhbFdpZHRoLCBjb2x1bW5NaW5Mb2dpY2FsV2lkdGgpOwpAQCAtNjE5LDcgKzYxOSw3
IEBAIHZvaWQgQXV0b1RhYmxlTGF5b3V0OjpsYXlvdXQoKQogICAgIGlmIChhdmFpbGFibGUgPiAw
ICYmIG1faGFzUGVyY2VudCAmJiB0b3RhbFBlcmNlbnQgPCAxMDApIHsKICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBuRWZmQ29sczsgKytpKSB7CiAgICAgICAgICAgICBMZW5ndGgmIGxv
Z2ljYWxXaWR0aCA9IG1fbGF5b3V0U3RydWN0W2ldLmVmZmVjdGl2ZUxvZ2ljYWxXaWR0aDsKLSAg
ICAgICAgICAgIGlmIChsb2dpY2FsV2lkdGguaXNQZXJjZW50KCkpIHsKKyAgICAgICAgICAgIGlm
IChsb2dpY2FsV2lkdGguaXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgpKSB7CiAgICAgICAgICAgICAg
ICAgaW50IGNlbGxMb2dpY2FsV2lkdGggPSBhdmFpbGFibGUgKiBsb2dpY2FsV2lkdGgucGVyY2Vu
dCgpIC8gdG90YWxQZXJjZW50OwogICAgICAgICAgICAgICAgIGF2YWlsYWJsZSAtPSBjZWxsTG9n
aWNhbFdpZHRoOwogICAgICAgICAgICAgICAgIHRvdGFsUGVyY2VudCAtPSBsb2dpY2FsV2lkdGgu
cGVyY2VudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFi
bGVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQu
Y3BwCmluZGV4IGNlY2VhNzIxNTcxNjE4ZDUzZjAwZjFkN2Q1NmU3MzcwYjliYjY5MzkuLmYwOGQy
OWFkNTQ5YjNhMmNlZTlkYzZiYTM3YzBiNzUxMjU3NWNhNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9GaXhlZFRhYmxlTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91dC5jcHAKQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lk
IEZpeGVkVGFibGVMYXlvdXQ6OmxheW91dCgpCiAgICAgICAgIGlmIChtX3dpZHRoW2ldLmlzRml4
ZWQoKSkgewogICAgICAgICAgICAgY2FsY1dpZHRoW2ldID0gbV93aWR0aFtpXS52YWx1ZSgpOwog
ICAgICAgICAgICAgdG90YWxGaXhlZFdpZHRoICs9IGNhbGNXaWR0aFtpXTsKLSAgICAgICAgfSBl
bHNlIGlmIChtX3dpZHRoW2ldLmlzUGVyY2VudCgpKSB7CisgICAgICAgIH0gZWxzZSBpZiAobV93
aWR0aFtpXS5pc1BlcmNlbnROb3RDYWxjdWxhdGVkKCkpIHsKICAgICAgICAgICAgIGNhbGNXaWR0
aFtpXSA9IHZhbHVlRm9yTGVuZ3RoKG1fd2lkdGhbaV0sIHRhYmxlTG9naWNhbFdpZHRoKTsKICAg
ICAgICAgICAgIHRvdGFsUGVyY2VudFdpZHRoICs9IGNhbGNXaWR0aFtpXTsKICAgICAgICAgICAg
IHRvdGFsUGVyY2VudCArPSBtX3dpZHRoW2ldLnBlcmNlbnQoKTsKQEAgLTI1NCw3ICsyNTQsNyBA
QCB2b2lkIEZpeGVkVGFibGVMYXlvdXQ6OmxheW91dCgpCiAgICAgICAgICAgICBpZiAodG90YWxQ
ZXJjZW50KSB7CiAgICAgICAgICAgICAgICAgdG90YWxQZXJjZW50V2lkdGggPSAwOwogICAgICAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuRWZmQ29sczsgaSsrKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChtX3dpZHRoW2ldLmlzUGVyY2VudCgpKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChtX3dpZHRoW2ldLmlzUGVyY2VudE5vdENhbGN1bGF0ZWQoKSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgY2FsY1dpZHRoW2ldID0gbV93aWR0aFtpXS5wZXJjZW50KCkg
KiAodGFibGVMb2dpY2FsV2lkdGggLSB0b3RhbEZpeGVkV2lkdGgpIC8gdG90YWxQZXJjZW50Owog
ICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxQZXJjZW50V2lkdGggKz0gY2FsY1dpZHRoW2ld
OwogICAgICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCBiNjUxMDNiNjVhMTM0YjU2N2JkYzM5YmJj
ZWY0MTcxNWM4NzEyM2ViLi5jNGIyYjJmNjY0MDE5ODQxY2U0M2I5MTYxMzI1ZjAyNzMyMTdkYzVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHAKQEAgLTg5Myw3ICs4OTMsNyBAQCBMYXlvdXRTaXplIFJlbmRlckJveE1vZGVsT2JqZWN0
OjpjYWxjdWxhdGVJbWFnZUludHJpbnNpY0RpbWVuc2lvbnMoU3R5bGVJbWFnZSogaQogICAgIC8v
IHRoYXQgZXN0YWJsaXNoZXMgdGhlIGNvb3JkaW5hdGUgc3lzdGVtIGZvciB0aGUgJ2JhY2tncm91
bmQtcG9zaXRpb24nIHByb3BlcnR5LiAKICAgICAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHVubmVj
ZXNzYXJ5IHJvdW5kaW5nIHdoZW4gbGF5b3V0IGlzIG9mZiBpbnRzOiB3ZWJraXQub3JnL2IvNjM2
NTYKLSAgICBpZiAoaW50cmluc2ljV2lkdGguaXNQZXJjZW50KCkgJiYgaW50cmluc2ljSGVpZ2h0
LmlzUGVyY2VudCgpICYmIGludHJpbnNpY1JhdGlvLmlzRW1wdHkoKSkgeworICAgIGlmIChpbnRy
aW5zaWNXaWR0aC5pc1BlcmNlbnROb3RDYWxjdWxhdGVkKCkgJiYgaW50cmluc2ljSGVpZ2h0Lmlz
UGVyY2VudE5vdENhbGN1bGF0ZWQoKSAmJiBpbnRyaW5zaWNSYXRpby5pc0VtcHR5KCkpIHsKICAg
ICAgICAgLy8gUmVzb2x2ZSB3aWR0aC9oZWlnaHQgcGVyY2VudGFnZXMgYWdhaW5zdCBwb3NpdGlv
bmluZ0FyZWFTaXplLCBvbmx5IGlmIG5vIGludHJpbnNpYyByYXRpbyBpcyBwcm92aWRlZC4KICAg
ICAgICAgZmxvYXQgcmVzb2x2ZWRXaWR0aCA9IHBvc2l0aW9uaW5nQXJlYVNpemUud2lkdGgoKSAq
IGludHJpbnNpY1dpZHRoLnBlcmNlbnQoKSAvIDEwMDsKICAgICAgICAgZmxvYXQgcmVzb2x2ZWRI
ZWlnaHQgPSBwb3NpdGlvbmluZ0FyZWFTaXplLmhlaWdodCgpICogaW50cmluc2ljSGVpZ2h0LnBl
cmNlbnQoKSAvIDEwMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZVNlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
U2VjdGlvbi5jcHAKaW5kZXggZTg0NjkxYmY3YjI1ZGZjODM3ZmYyMGMzYzI4NjQ2Y2E5Y2VmNjc3
Yi4uMWZkZWVjOWUzNTk0ZTlhZjQ3YWQzNzNlZDU2ZTZiYzE4MGNjMDM0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKQEAgLTY1LDEyICs2
NSwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdXBkYXRlTG9naWNhbEhlaWdodEZvckNlbGwoUmVu
ZGVyVGFibGVTZWN0aW9uOjpSb3dTdHJ1Y3QmIHJvdwogICAgICAgICBMZW5ndGggY1Jvd0xvZ2lj
YWxIZWlnaHQgPSByb3cubG9naWNhbEhlaWdodDsKICAgICAgICAgc3dpdGNoIChsb2dpY2FsSGVp
Z2h0LnR5cGUoKSkgewogICAgICAgICBjYXNlIFBlcmNlbnQ6Ci0gICAgICAgICAgICBpZiAoIShj
Um93TG9naWNhbEhlaWdodC5pc1BlcmNlbnQoKSkKLSAgICAgICAgICAgICAgICB8fCAoY1Jvd0xv
Z2ljYWxIZWlnaHQuaXNQZXJjZW50KCkgJiYgY1Jvd0xvZ2ljYWxIZWlnaHQucGVyY2VudCgpIDwg
bG9naWNhbEhlaWdodC5wZXJjZW50KCkpKQorICAgICAgICAgICAgaWYgKCFjUm93TG9naWNhbEhl
aWdodC5pc1BlcmNlbnROb3RDYWxjdWxhdGVkKCkgfHwgY1Jvd0xvZ2ljYWxIZWlnaHQucGVyY2Vu
dCgpIDwgbG9naWNhbEhlaWdodC5wZXJjZW50KCkpCiAgICAgICAgICAgICAgICAgcm93LmxvZ2lj
YWxIZWlnaHQgPSBsb2dpY2FsSGVpZ2h0OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgRml4ZWQ6Ci0gICAgICAgICAgICBpZiAoY1Jvd0xvZ2ljYWxIZWlnaHQudHlwZSgpIDwgUGVy
Y2VudAorICAgICAgICAgICAgaWYgKGNSb3dMb2dpY2FsSGVpZ2h0LmlzQXV0bygpIHx8IGNSb3dM
b2dpY2FsSGVpZ2h0LmlzUmVsYXRpdmUoKQogICAgICAgICAgICAgICAgIHx8IChjUm93TG9naWNh
bEhlaWdodC5pc0ZpeGVkKCkgJiYgY1Jvd0xvZ2ljYWxIZWlnaHQudmFsdWUoKSA8IGxvZ2ljYWxI
ZWlnaHQudmFsdWUoKSkpCiAgICAgICAgICAgICAgICAgcm93LmxvZ2ljYWxIZWlnaHQgPSBsb2dp
Y2FsSGVpZ2h0OwogICAgICAgICAgICAgYnJlYWs7CkBAIC00MzUsNyArNDM0LDcgQEAgdm9pZCBS
ZW5kZXJUYWJsZVNlY3Rpb246OmRpc3RyaWJ1dGVFeHRyYUxvZ2ljYWxIZWlnaHRUb1BlcmNlbnRS
b3dzKGludCYgZXh0cmFMb2cKICAgICB0b3RhbFBlcmNlbnQgPSBzdGQ6Om1pbih0b3RhbFBlcmNl
bnQsIDEwMCk7CiAgICAgaW50IHJvd0hlaWdodCA9IG1fcm93UG9zWzFdIC0gbV9yb3dQb3NbMF07
CiAgICAgZm9yICh1bnNpZ25lZCByID0gMDsgciA8IHRvdGFsUm93czsgKytyKSB7Ci0gICAgICAg
IGlmICh0b3RhbFBlcmNlbnQgPiAwICYmIG1fZ3JpZFtyXS5sb2dpY2FsSGVpZ2h0LmlzUGVyY2Vu
dCgpKSB7CisgICAgICAgIGlmICh0b3RhbFBlcmNlbnQgPiAwICYmIG1fZ3JpZFtyXS5sb2dpY2Fs
SGVpZ2h0LmlzUGVyY2VudE5vdENhbGN1bGF0ZWQoKSkgewogICAgICAgICAgICAgaW50IHRvQWRk
ID0gc3RkOjptaW48aW50PihleHRyYUxvZ2ljYWxIZWlnaHQsICh0b3RhbEhlaWdodCAqIG1fZ3Jp
ZFtyXS5sb2dpY2FsSGVpZ2h0LnBlcmNlbnQoKSAvIDEwMCkgLSByb3dIZWlnaHQpOwogICAgICAg
ICAgICAgLy8gSWYgdG9BZGQgaXMgbmVnYXRpdmUsIHRoZW4gd2UgZG9uJ3Qgd2FudCB0byBzaHJp
bmsgdGhlIHJvdyAodGhpcyBidWcKICAgICAgICAgICAgIC8vIGFmZmVjdGVkIE91dGxvb2sgV2Vi
IEFjY2VzcykuCkBAIC01MDcsNyArNTA2LDcgQEAgaW50IFJlbmRlclRhYmxlU2VjdGlvbjo6ZGlz
dHJpYnV0ZUV4dHJhTG9naWNhbEhlaWdodFRvUm93cyhpbnQgZXh0cmFMb2dpY2FsSGVpZ2gKICAg
ICBmb3IgKHVuc2lnbmVkIHIgPSAwOyByIDwgdG90YWxSb3dzOyByKyspIHsKICAgICAgICAgaWYg
KG1fZ3JpZFtyXS5sb2dpY2FsSGVpZ2h0LmlzQXV0bygpKQogICAgICAgICAgICAgKythdXRvUm93
c0NvdW50OwotICAgICAgICBlbHNlIGlmIChtX2dyaWRbcl0ubG9naWNhbEhlaWdodC5pc1BlcmNl
bnQoKSkKKyAgICAgICAgZWxzZSBpZiAobV9ncmlkW3JdLmxvZ2ljYWxIZWlnaHQuaXNQZXJjZW50
Tm90Q2FsY3VsYXRlZCgpKQogICAgICAgICAgICAgdG90YWxQZXJjZW50ICs9IG1fZ3JpZFtyXS5s
b2dpY2FsSGVpZ2h0LnBlcmNlbnQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDliZWVkNTI0NDM4ODVlODg3ZGMwYmRi
ZjkwNjZlMDUyNWYwNDkzOWQuLjI3MjZmMmMwOGM3MmI4NTc2YjkxYmRiZDU3OWE4MTU1MjBmYmIy
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNw
cApAQCAtOTMyLDcgKzkzMiw3IEBAIGNvbnN0IFN0cmluZyYgUmVuZGVyU3R5bGU6OmNvbnRlbnRB
bHRUZXh0KCkgY29uc3QKICAgICByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fYWx0VGV4
dDsKIH0KIAotaW5saW5lIGJvb2wgcmVxdWlyZVRyYW5zZm9ybU9yaWdpbihjb25zdCBWZWN0b3I8
UmVmUHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4+JiB0cmFuc2Zvcm1PcGVyYXRpb25zLCBSZW5kZXJT
dHlsZTo6QXBwbHlUcmFuc2Zvcm1PcmlnaW4gYXBwbHlPcmlnaW4pCitzdGF0aWMgaW5saW5lIGJv
b2wgcmVxdWlyZVRyYW5zZm9ybU9yaWdpbihjb25zdCBWZWN0b3I8UmVmUHRyPFRyYW5zZm9ybU9w
ZXJhdGlvbj4+JiB0cmFuc2Zvcm1PcGVyYXRpb25zLCBSZW5kZXJTdHlsZTo6QXBwbHlUcmFuc2Zv
cm1PcmlnaW4gYXBwbHlPcmlnaW4pCiB7CiAgICAgLy8gdHJhbnNmb3JtLW9yaWdpbiBicmFja2V0
cyB0aGUgdHJhbnNmb3JtIHdpdGggdHJhbnNsYXRlIG9wZXJhdGlvbnMuCiAgICAgLy8gT3B0aW1p
emUgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZSBvbmx5IHRyYW5zZm9ybSBpcyBhIHRyYW5zbGF0aW9u
LCBzaW5jZSB0aGUgdHJhbnNmb3JtLW9yaWdpbiBpcyBpcnJlbGV2YW50CkBAIC05NDAsOSArOTQw
LDggQEAgaW5saW5lIGJvb2wgcmVxdWlyZVRyYW5zZm9ybU9yaWdpbihjb25zdCBWZWN0b3I8UmVm
UHRyPFRyYW5zZm9ybU9wZXJhdGlvbj4+JiB0cmEKICAgICBpZiAoYXBwbHlPcmlnaW4gIT0gUmVu
ZGVyU3R5bGU6OkluY2x1ZGVUcmFuc2Zvcm1PcmlnaW4pCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIHVuc2lnbmVkIHNpemUgPSB0cmFuc2Zvcm1PcGVyYXRpb25zLnNpemUoKTsKLSAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgIFRyYW5zZm9ybU9w
ZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0eXBlID0gdHJhbnNmb3JtT3BlcmF0aW9uc1tpXS0+dHlw
ZSgpOworICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogdHJhbnNmb3JtT3BlcmF0aW9ucykgewor
ICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHlwZSA9IG9wZXJhdGlv
bi0+dHlwZSgpOwogICAgICAgICBpZiAodHlwZSAhPSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5T
TEFURV9YCiAgICAgICAgICAgICAmJiB0eXBlICE9IFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNM
QVRFX1kKICAgICAgICAgICAgICYmIHR5cGUgIT0gVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xB
VEUgCkBAIC05NTAsMjggKzk0OSwyNyBAQCBpbmxpbmUgYm9vbCByZXF1aXJlVHJhbnNmb3JtT3Jp
Z2luKGNvbnN0IFZlY3RvcjxSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPj4mIHRyYQogICAgICAg
ICAgICAgJiYgdHlwZSAhPSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV8zRCkKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICAKKwogICAgIHJldHVybiBmYWxzZTsKIH0K
IAogdm9pZCBSZW5kZXJTdHlsZTo6YXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgQXBwbHlUcmFuc2Zvcm1P
cmlnaW4gYXBwbHlPcmlnaW4pIGNvbnN0CiB7Ci0gICAgY29uc3QgVmVjdG9yPFJlZlB0cjxUcmFu
c2Zvcm1PcGVyYXRpb24+PiYgdHJhbnNmb3JtT3BlcmF0aW9ucyA9IHJhcmVOb25Jbmhlcml0ZWRE
YXRhLT5tX3RyYW5zZm9ybS0+bV9vcGVyYXRpb25zLm9wZXJhdGlvbnMoKTsKLSAgICBib29sIGFw
cGx5VHJhbnNmb3JtT3JpZ2luID0gcmVxdWlyZVRyYW5zZm9ybU9yaWdpbih0cmFuc2Zvcm1PcGVy
YXRpb25zLCBhcHBseU9yaWdpbik7Ci0gICAgCi0gICAgZmxvYXQgb2Zmc2V0WCA9IHRyYW5zZm9y
bU9yaWdpblgoKS50eXBlKCkgPT0gUGVyY2VudCA/IGJvdW5kaW5nQm94LngoKSA6IDA7Ci0gICAg
ZmxvYXQgb2Zmc2V0WSA9IHRyYW5zZm9ybU9yaWdpblkoKS50eXBlKCkgPT0gUGVyY2VudCA/IGJv
dW5kaW5nQm94LnkoKSA6IDA7Ci0gICAgCisgICAgYXV0byYgb3BlcmF0aW9ucyA9IHJhcmVOb25J
bmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybS0+bV9vcGVyYXRpb25zLm9wZXJhdGlvbnMoKTsKKyAg
ICBib29sIGFwcGx5VHJhbnNmb3JtT3JpZ2luID0gcmVxdWlyZVRyYW5zZm9ybU9yaWdpbihvcGVy
YXRpb25zLCBhcHBseU9yaWdpbik7CisKKyAgICBmbG9hdCBvZmZzZXRYID0gdHJhbnNmb3JtT3Jp
Z2luWCgpLmlzUGVyY2VudE5vdENhbGN1bGF0ZWQoKSA/IGJvdW5kaW5nQm94LngoKSA6IDA7Cisg
ICAgZmxvYXQgb2Zmc2V0WSA9IHRyYW5zZm9ybU9yaWdpblkoKS5pc1BlcmNlbnROb3RDYWxjdWxh
dGVkKCkgPyBib3VuZGluZ0JveC55KCkgOiAwOworCiAgICAgaWYgKGFwcGx5VHJhbnNmb3JtT3Jp
Z2luKSB7CiAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUzZChmbG9hdFZhbHVlRm9yTGVuZ3Ro
KHRyYW5zZm9ybU9yaWdpblgoKSwgYm91bmRpbmdCb3gud2lkdGgoKSkgKyBvZmZzZXRYLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXRWYWx1ZUZvckxlbmd0aCh0cmFuc2Zvcm1P
cmlnaW5ZKCksIGJvdW5kaW5nQm94LmhlaWdodCgpKSArIG9mZnNldFksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW5aKCkpOwogICAgIH0KLSAgICAKLSAgICB1
bnNpZ25lZCBzaXplID0gdHJhbnNmb3JtT3BlcmF0aW9ucy5zaXplKCk7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9uc1tp
XS0+YXBwbHkodHJhbnNmb3JtLCBib3VuZGluZ0JveC5zaXplKCkpOwotICAgIAorCisgICAgZm9y
IChhdXRvJiBvcGVyYXRpb24gOiBvcGVyYXRpb25zKQorICAgICAgICBvcGVyYXRpb24tPmFwcGx5
KHRyYW5zZm9ybSwgYm91bmRpbmdCb3guc2l6ZSgpKTsKKwogICAgIGlmIChhcHBseVRyYW5zZm9y
bU9yaWdpbikgewogICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlM2QoLWZsb2F0VmFsdWVGb3JM
ZW5ndGgodHJhbnNmb3JtT3JpZ2luWCgpLCBib3VuZGluZ0JveC53aWR0aCgpKSAtIG9mZnNldFgs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtZmxvYXRWYWx1ZUZvckxlbmd0aCh0cmFu
c2Zvcm1PcmlnaW5ZKCksIGJvdW5kaW5nQm94LmhlaWdodCgpKSAtIG9mZnNldFksCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAppbmRleCAwNWNkYTE5
MzEyMzE5YWViZjg5OTY2ZjZhMTNlNjg2N2QyNDFlZDcwLi41MzAwMzE0MzJjMjZjNWQ5MTIwMzY4
ODdhYTc5ZWJiODNmNzZjY2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6
OmNvbXB1dGVJbnRyaW5zaWNSYXRpb0luZm9ybWF0aW9uKEZsb2F0U2l6ZSYgaW50cmluc2ljU2l6
ZSwgZAogCiAgICAgLy8gSWYgb3VyIGludHJpbnNpYyBzaXplIGlzIGluIHBlcmNlbnRhZ2UgdW5p
dHMsIHJldHVybiB0aG9zZSB0byB0aGUgY2FsbGVyIHRocm91Z2ggdGhlIGludHJpbnNpY1NpemUu
IE5vdGlmeSB0aGUgY2FsbGVyCiAgICAgLy8gYWJvdXQgdGhlIHNwZWNpYWwgc2l0dWF0aW9uLCBi
eSBzZXR0aW5nIGlzUGVyY2VudGFnZUludHJpbnNpY1NpemU9dHJ1ZSwgc28gaXQga25vd3MgaG93
IHRvIGludGVycHJldCB0aGUgcmV0dXJuIHZhbHVlcy4KLSAgICBpZiAoaW50cmluc2ljV2lkdGhB
dHRyaWJ1dGUuaXNQZXJjZW50KCkgJiYgaW50cmluc2ljSGVpZ2h0QXR0cmlidXRlLmlzUGVyY2Vu
dCgpKSB7CisgICAgaWYgKGludHJpbnNpY1dpZHRoQXR0cmlidXRlLmlzUGVyY2VudE5vdENhbGN1
bGF0ZWQoKSAmJiBpbnRyaW5zaWNIZWlnaHRBdHRyaWJ1dGUuaXNQZXJjZW50Tm90Q2FsY3VsYXRl
ZCgpKSB7CiAgICAgICAgIGlzUGVyY2VudGFnZUludHJpbnNpY1NpemUgPSB0cnVlOwogICAgICAg
ICBpbnRyaW5zaWNTaXplID0gRmxvYXRTaXplKGludHJpbnNpY1dpZHRoQXR0cmlidXRlLnBlcmNl
bnQoKSwgaW50cmluc2ljSGVpZ2h0QXR0cmlidXRlLnBlcmNlbnQoKSk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228807</attachid>
            <date>2014-04-07 22:56:02 -0700</date>
            <delta_ts>2014-04-08 01:59:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131346-20140407225548.patch</filename>
            <type>text/plain</type>
            <size>30456</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2ODY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTYwMTdjZjMwYWE5N2Vj
ZGM0NTVhNWI4YTJlNDY3MDdjNmQ1ZDE0OS4uNGM4MDg5NWJmMDkxMzhlYzFlMDExMmNmNDU3N2Vl
OWZlMDg5YTJmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDE0LTA0LTA3ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBGaXggYXNzZXJ0aW9ucyB0cmln
Z2VyZWQgYnkgQ1NTIGNhbGMgY2hhbmdlcyBpbiByMTY2ODYwCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzEzNDYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWVz
KTogVXNlIGlzUGVyY2VudE5vdENhbGN1bGF0ZWQoKSBpbnN0ZWFkIG9mCisgICAgICAgIHR5cGUo
KSA9PSBQZXJjZW50OyBubyBiZWhhdmlvciBjaGFuZ2UuCisgICAgICAgIChXZWJDb3JlOjpnZXRC
b3JkZXJSYWRpdXNDb3JuZXJWYWx1ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6bGluZUhl
aWdodEZyb21TdHlsZSk6IFVzZSBpc1BlcmNlbnROb3RDYWxjdWxhdGVkKCkgYmVmb3JlIGNvZGUK
KyAgICAgICAgdGhhdCBjYWxscyBwZXJjZW50KCksIHdoaWNoIHdvbid0IHdvcmsgZm9yIGEgY2Fs
Y3VsYXRlZCBsZW5ndGguCisKKyAgICAgICAgKiBjc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Qm9yZGVyUmFkaXVzOjphcHBseVZh
bHVlKTogVXNlIGlzTmVnYXRpdmUgYW5kIGlzWmVybyByYXRoZXIKKyAgICAgICAgdGhhbiBjYWxs
aW5nIHZhbHVlKCkgdW5jb25kaXRpb25hbGx5LiBTaG91bGQgbWFrZSBjYWxjdWxhdGVkIHZhbHVl
cyB3b3JrIGJldHRlci4KKworICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjppczEwMFBlcmNlbnQpOiBVc2UgaXNQZXJjZW50Tm90Q2Fs
Y3VsYXRlZCgpIGJlZm9yZSBjb2RlCisgICAgICAgIHRoYXQgY2FsbHMgcGVyY2VudCgpLCB3aGlj
aCB3b24ndCB3b3JrIGZvciBhIGNhbGN1bGF0ZWQgbGVuZ3RoLgorCisgICAgICAgICogcGxhdGZv
cm0vTGVuZ3RoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbGN1bGF0aW9uVmFsdWVNYXA6OmRl
cmVmKTogVXNlIGFkb3B0UmVmIGhlcmUgaW5zdGVhZCBvZiBjYWxsaW5nIGRlcmVmCisgICAgICAg
IGltbWVkaWF0ZWx5LCBzbyB0aGUgZGVyZWYgd2lsbCBoYXBwZW4gYWZ0ZXIgY2FsbGluZyByZW1v
dmUuIFRoaXMgbWFrZXMgdGhlIGNvZGUKKyAgICAgICAgd29yayBwcm9wZXJseSBldmVuIGlmIGl0
J3MgcmVlbnRlcmVkIGluc2lkZSB0aGUgY2FsY3VsYXRpb24gdmFsdWUncyBkZXN0cnVjdG9yLgor
CisgICAgICAgICogcGxhdGZvcm0vTGVuZ3RoLmg6CisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6
OnBlcmNlbnQpOiBDaGFuZ2UgYXNzZXJ0IHRvIGlzUGVyY2VudE5vdENhbGN1bGF0ZWQsIHNpbmNl
IHRoZQorICAgICAgICB2YWx1ZSBmdW5jdGlvbiB0aGlzIGNhbGxzIG9ubHkgd29ya3MgZm9yIG5v
bi1jYWxjdWxhdGVkIHZhbHVlcyBhbnl3YXkuCisgICAgICAgIChXZWJDb3JlOjpMZW5ndGg6Omlz
UGVyY2VudE5vdENhbGN1bGF0ZWQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6
aXNQZXJjZW50KTogQ2hhbmdlZCB0byBjYWxsIGlzUGVyY2VudE5vdENhbGN1bGF0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpMZW5ndGg6OmlzU3BlY2lmaWVkKTogQ2hhbmdlZCB0byBjYWxsIGlzUGVy
Y2VudC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRl
VHJhbnNmb3JtT3BlcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2xhdGVUcmFuc2Zv
cm1PcGVyYXRpb246OmFwcGx5KTogVXNlIGlzUGVyY2VudE5vdENhbGN1bGF0ZWQoKQorICAgICAg
ICBpbnN0ZWFkIG9mIHR5cGUoKSA9PSBQZXJjZW50OyBubyBiZWhhdmlvciBjaGFuZ2UuCisKKyAg
ICAgICAgKiByZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkF1dG9UYWJsZUxheW91dDo6cmVjYWxjQ29sdW1uKTogVXNlIGlzUGVyY2VudE5vdENhbGN1bGF0
ZWQoKQorICAgICAgICBiZWZvcmUgY29kZSB0aGF0IGNhbGxzIHZhbHVlKCkgb3IgcGVyY2VudCgp
LCB3aGljaCB3b24ndCB3b3JrIGZvciBhIGNhbGN1bGF0ZWQgbGVuZ3RoLgorICAgICAgICAoV2Vi
Q29yZTo6QXV0b1RhYmxlTGF5b3V0Ojpjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6QXV0b1RhYmxlTGF5b3V0OjpjYWxjRWZmZWN0aXZlTG9n
aWNhbFdpZHRoKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBdXRvVGFibGVMYXlvdXQ6Omxh
eW91dCk6IERpdHRvLgorICAgICAgICAqIHJlbmRlcmluZy9GaXhlZFRhYmxlTGF5b3V0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZpeGVkVGFibGVMYXlvdXQ6OmxheW91dCk6IERpdHRvLgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3VsYXRlSW1hZ2VJbnRyaW5zaWNEaW1lbnNp
b25zKTogRGl0dG8uCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVMb2dpY2FsSGVpZ2h0Rm9yQ2VsbCk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpkaXN0cmlidXRlRXh0cmFMb2dp
Y2FsSGVpZ2h0VG9QZXJjZW50Um93cyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGFibGVTZWN0aW9uOjpkaXN0cmlidXRlRXh0cmFMb2dpY2FsSGVpZ2h0VG9Sb3dzKTogRGl0dG8u
CisKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cmVxdWlyZVRyYW5zZm9ybU9yaWdpbik6IFVzZSBtb2Rlcm4gZm9yIGxvb3AuIEFs
c28gbWFya2VkIGZ1bmN0aW9uIHN0YXRpYywKKyAgICAgICAgc2luY2UgaXQncyBwcml2YXRlIHRv
IHRoaXMgZmlsZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjphcHBseVRyYW5zZm9y
bSk6IFVzZSBpc1BlcmNlbnROb3RDYWxjdWxhdGVkKCkgaW5zdGVhZCBvZgorICAgICAgICB0eXBl
KCkgPT0gUGVyY2VudDsgbm8gYmVoYXZpb3IgY2hhbmdlLiBBbHNvIHVzZSBhIG1vZGVybiBmb3Ig
bG9vcCBhbmQgYXV0byYgdG8gYXZvaWQKKyAgICAgICAgYSByZWFsbHkgbG9uZyB0eXBlIG5hbWUu
CisKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZUludHJpbnNpY1JhdGlvSW5mb3JtYXRpb24p
OiBVc2UgaXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgpCisgICAgICAgIGJlZm9yZSBjb2RlIHRoYXQg
Y2FsbHMgcGVyY2VudCgpLCB3aGljaCB3b24ndCB3b3JrIGZvciBhIGNhbGN1bGF0ZWQgbGVuZ3Ro
LgorCisgICAgICAgICogcGxhdGZvcm0vTGVuZ3RoLmg6CisgICAgICAgIChXZWJDb3JlOjpMZW5n
dGg6OnBlcmNlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGVuZ3RoOjppc1BlcmNlbnROb3RDYWxj
dWxhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okxlbmd0aDo6aXNQZXJjZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Okxlbmd0aDo6aXNTcGVjaWZpZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmg6CisgICAgICAgIChX
ZWJDb3JlOjpUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmFwcGx5KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1dG9UYWJs
ZUxheW91dDo6cmVjYWxjQ29sdW1uKToKKyAgICAgICAgKFdlYkNvcmU6OkF1dG9UYWJsZUxheW91
dDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMpOgorICAgICAgICAoV2ViQ29yZTo6QXV0
b1RhYmxlTGF5b3V0OjpjYWxjRWZmZWN0aXZlTG9naWNhbFdpZHRoKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1dG9UYWJsZUxheW91dDo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvRml4ZWRU
YWJsZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaXhlZFRhYmxlTGF5b3V0OjpsYXlv
dXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3VsYXRlSW1hZ2VJbnRyaW5z
aWNEaW1lbnNpb25zKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUxvZ2ljYWxIZWlnaHRGb3JDZWxsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6ZGlzdHJpYnV0ZUV4dHJhTG9naWNhbEhl
aWdodFRvUGVyY2VudFJvd3MpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9u
OjpkaXN0cmlidXRlRXh0cmFMb2dpY2FsSGVpZ2h0VG9Sb3dzKToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVxdWlyZVRyYW5z
Zm9ybU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6YXBwbHlUcmFuc2Zv
cm0pOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdSb290Ojpjb21wdXRlSW50cmluc2ljUmF0aW9JbmZvcm1hdGlv
bik6CisKIDIwMTQtMDQtMDYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIE1ha2Ugc29tZSBiaW5kaW5ncyBpbXByb3ZlbWVudHMsIHdpdGggc21hbGxlciBjb2RlIHNp
emUgZm9yIGVycm9yIG1lc3NhZ2UgZ2VuZXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCBjMjk5ODNhMjY3NmQxYjBl
ODI4NDUwYmM3YzA0NjFmNjI5YjcyYWQyLi5lZjUwZDgyYmI5MWZlNGQ2NTQzYWQ5M2Q1NTRmZDVl
N2VlOWM5NGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmNwcApAQCAtNzA1LDExICs3MDUsMTEgQEAgUGFzc1JlZlB0cjxDU1NQcmlt
aXRpdmVWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Y3VycmVudENvbG9yT3JWYWxpZENv
bG9yKFIKIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlTGlzdD4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVy
VmFsdWVzKGNvbnN0IExlbmd0aFNpemUmIHJhZGl1cywgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxl
LCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQogewogICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVlTGlz
dDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKLSAgICBpZiAocmFkaXVzLndpZHRoKCkudHlwZSgp
ID09IFBlcmNlbnQpCisgICAgaWYgKHJhZGl1cy53aWR0aCgpLmlzUGVyY2VudE5vdENhbGN1bGF0
ZWQoKSkKICAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFs
dWUocmFkaXVzLndpZHRoKCkucGVyY2VudCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNF
TlRBR0UpKTsKICAgICBlbHNlCiAgICAgICAgIGxpc3QuZ2V0KCkuYXBwZW5kKHpvb21BZGp1c3Rl
ZFBpeGVsVmFsdWUodmFsdWVGb3JMZW5ndGgocmFkaXVzLndpZHRoKCksIDAsIHJlbmRlclZpZXcp
LCBzdHlsZSkpOwotICAgIGlmIChyYWRpdXMuaGVpZ2h0KCkudHlwZSgpID09IFBlcmNlbnQpCisg
ICAgaWYgKHJhZGl1cy5oZWlnaHQoKS5pc1BlcmNlbnROb3RDYWxjdWxhdGVkKCkpCiAgICAgICAg
IGxpc3QuZ2V0KCkuYXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHJhZGl1cy5oZWln
aHQoKS5wZXJjZW50KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkpOwogICAg
IGVsc2UKICAgICAgICAgbGlzdC5nZXQoKS5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSh2
YWx1ZUZvckxlbmd0aChyYWRpdXMuaGVpZ2h0KCksIDAsIHJlbmRlclZpZXcpLCBzdHlsZSkpOwpA
QCAtNzE5LDcgKzcxOSw3IEBAIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlTGlzdD4gZ2V0Qm9yZGVy
UmFkaXVzQ29ybmVyVmFsdWVzKGNvbnN0IExlbmd0aFNpemUmIHJhZGl1CiBzdGF0aWMgUGFzc1Jl
ZjxDU1NWYWx1ZT4gZ2V0Qm9yZGVyUmFkaXVzQ29ybmVyVmFsdWUoY29uc3QgTGVuZ3RoU2l6ZSYg
cmFkaXVzLCBjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcp
CiB7CiAgICAgaWYgKHJhZGl1cy53aWR0aCgpID09IHJhZGl1cy5oZWlnaHQoKSkgewotICAgICAg
ICBpZiAocmFkaXVzLndpZHRoKCkudHlwZSgpID09IFBlcmNlbnQpCisgICAgICAgIGlmIChyYWRp
dXMud2lkdGgoKS5pc1BlcmNlbnROb3RDYWxjdWxhdGVkKCkpCiAgICAgICAgICAgICByZXR1cm4g
Y3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUocmFkaXVzLndpZHRoKCkucGVyY2VudCgpLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpOwogICAgICAgICByZXR1cm4gem9vbUFkanVz
dGVkUGl4ZWxWYWx1ZSh2YWx1ZUZvckxlbmd0aChyYWRpdXMud2lkdGgoKSwgMCwgcmVuZGVyVmll
dyksIHN0eWxlKTsKICAgICB9CkBAIC0xNDUyLDEyICsxNDUyLDEzIEBAIHN0YXRpYyBQYXNzUmVm
PENTU1ByaW1pdGl2ZVZhbHVlPiBsaW5lSGVpZ2h0RnJvbVN0eWxlKFJlbmRlclN0eWxlKiBzdHls
ZSwgUmVuZGVyCiAgICAgTGVuZ3RoIGxlbmd0aCA9IHN0eWxlLT5saW5lSGVpZ2h0KCk7CiAgICAg
aWYgKGxlbmd0aC5pc05lZ2F0aXZlKCkpCiAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2woKS5j
cmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpOwotICAgIGlmIChsZW5ndGguaXNQ
ZXJjZW50KCkpCisgICAgaWYgKGxlbmd0aC5pc1BlcmNlbnROb3RDYWxjdWxhdGVkKCkpIHsKICAg
ICAgICAgLy8gVGhpcyBpcyBpbXBlcmZlY3QsIGJlY2F1c2UgaXQgZG9lc24ndCBpbmNsdWRlIHRo
ZSB6b29tIGZhY3RvciBhbmQgdGhlIHJlYWwgY29tcHV0YXRpb24KICAgICAgICAgLy8gZm9yIGhv
dyBoaWdoIHRvIGJlIGluIHBpeGVscyBkb2VzIGluY2x1ZGUgdGhpbmdzIGxpa2UgbWluaW11bSBm
b250IHNpemUgYW5kIHRoZSB6b29tIGZhY3Rvci4KICAgICAgICAgLy8gT24gdGhlIG90aGVyIGhh
bmQsIHNpbmNlIGZvbnQtc2l6ZSBkb2Vzbid0IGluY2x1ZGUgdGhlIHpvb20gZmFjdG9yLCB3ZSBy
ZWFsbHkgY2FuJ3QgZG8KICAgICAgICAgLy8gdGhhdCBoZXJlIGVpdGhlci4KICAgICAgICAgcmV0
dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoc3RhdGljX2Nhc3Q8aW50PihsZW5ndGgucGVyY2Vu
dCgpICogc3R5bGUtPmZvbnREZXNjcmlwdGlvbigpLnNwZWNpZmllZFNpemUoKSkgLyAxMDAsIHN0
eWxlKTsKKyAgICB9CiAgICAgcmV0dXJuIHpvb21BZGp1c3RlZFBpeGVsVmFsdWUoZmxvYXRWYWx1
ZUZvckxlbmd0aChsZW5ndGgsIDAsIHJlbmRlclZpZXcpLCBzdHlsZSk7CiB9CiAKQEAgLTIxNjQs
MTIgKzIxNjUsMTIgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rv
cjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnQKICAgICAgICAgICAgIGlmICht
YXJnaW5SaWdodC5pc0ZpeGVkKCkgfHwgIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNCb3goKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gem9vbUFkanVzdGVkUGl4ZWxWYWx1ZUZvckxlbmd0aCht
YXJnaW5SaWdodCwgc3R5bGUuZ2V0KCkpOwogICAgICAgICAgICAgZmxvYXQgdmFsdWU7Ci0gICAg
ICAgICAgICBpZiAobWFyZ2luUmlnaHQuaXNQZXJjZW50KCkgfHwgbWFyZ2luUmlnaHQuaXNWaWV3
cG9ydFBlcmNlbnRhZ2UoKSkKKyAgICAgICAgICAgIGlmIChtYXJnaW5SaWdodC5pc1BlcmNlbnQo
KSB8fCBtYXJnaW5SaWdodC5pc1ZpZXdwb3J0UGVyY2VudGFnZSgpKSB7CiAgICAgICAgICAgICAg
ICAgLy8gUmVuZGVyQm94IGdpdmVzIGEgbWFyZ2luUmlnaHQoKSB0aGF0IGlzIHRoZSBkaXN0YW5j
ZSBiZXR3ZWVuIHRoZSByaWdodC1lZGdlIG9mIHRoZSBjaGlsZCBib3gKICAgICAgICAgICAgICAg
ICAvLyBhbmQgdGhlIHJpZ2h0LWVkZ2Ugb2YgdGhlIGNvbnRhaW5pbmcgYm94LCB3aGVuIGRpc3Bs
YXkgPT0gQkxPQ0suIExldCdzIGNhbGN1bGF0ZSB0aGUgYWJzb2x1dGUKICAgICAgICAgICAgICAg
ICAvLyB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIG1hcmdpbi1yaWdodCAlIGluc3RlYWQgb2YgcmVs
eWluZyBvbiBSZW5kZXJCb3gncyBtYXJnaW5SaWdodCgpIHZhbHVlLgogICAgICAgICAgICAgICAg
IHZhbHVlID0gbWluaW11bVZhbHVlRm9yTGVuZ3RoKG1hcmdpblJpZ2h0LCB0b1JlbmRlckJveChy
ZW5kZXJlciktPmNvbnRhaW5pbmdCbG9ja0xvZ2ljYWxXaWR0aEZvckNvbnRlbnQoKSwgbV9ub2Rl
LT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKSk7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRvUmVuZGVyQm94KHJlbmRlcmVyKS0+
bWFyZ2luUmlnaHQoKTsKICAgICAgICAgICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVl
KHZhbHVlLCBzdHlsZS5nZXQoKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9E
ZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcAppbmRleCBhMmNkZDdhYzQ1MTY1ZWRiNWJmNzBjNDJk
NmYxZjc5NDcyMWMxZGE1Li45NTRiMTU5NjAzNzI4ZTViYTIxMTQ2NmJjYTg3NGQwY2NiYTBlNjdm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwCkBA
IC00NDMsNyArNDQzLDYgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IExlbmd0aCByYWRpdXNXaWR0aDsKLSAgICAgICAgTGVuZ3RoIHJhZGl1c0hlaWdodDsKICAgICAg
ICAgaWYgKHBhaXItPmZpcnN0KCktPmlzUGVyY2VudGFnZSgpKQogICAgICAgICAgICAgcmFkaXVz
V2lkdGggPSBMZW5ndGgocGFpci0+Zmlyc3QoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2VudCk7
CiAgICAgICAgIGVsc2UgaWYgKHBhaXItPmZpcnN0KCktPmlzVmlld3BvcnRQZXJjZW50YWdlTGVu
Z3RoKCkpCkBAIC00NTIsNiArNDUxLDggQEAgcHVibGljOgogICAgICAgICAgICAgcmFkaXVzV2lk
dGggPSBMZW5ndGgocGFpci0+Zmlyc3QoKS0+Y3NzQ2FsY1ZhbHVlKCktPmNyZWF0ZUNhbGN1bGF0
aW9uVmFsdWUoc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgc3R5bGVSZXNvbHZlci0+cm9vdEVsZW1l
bnRTdHlsZSgpLCBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgcmFkaXVzV2lkdGggPSBwYWlyLT5maXJzdCgpLT5jb21w
dXRlTGVuZ3RoPExlbmd0aD4oc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgc3R5bGVSZXNvbHZlci0+
cm9vdEVsZW1lbnRTdHlsZSgpLCBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5lZmZlY3RpdmVab29t
KCkpOworCisgICAgICAgIExlbmd0aCByYWRpdXNIZWlnaHQ7CiAgICAgICAgIGlmIChwYWlyLT5z
ZWNvbmQoKS0+aXNQZXJjZW50YWdlKCkpCiAgICAgICAgICAgICByYWRpdXNIZWlnaHQgPSBMZW5n
dGgocGFpci0+c2Vjb25kKCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpOwogICAgICAgICBl
bHNlIGlmIChwYWlyLT5zZWNvbmQoKS0+aXNWaWV3cG9ydFBlcmNlbnRhZ2VMZW5ndGgoKSkKQEAg
LTQ2MCwxNyArNDYxLDE2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJhZGl1c0hlaWdodCA9IExl
bmd0aChwYWlyLT5zZWNvbmQoKS0+Y3NzQ2FsY1ZhbHVlKCktPmNyZWF0ZUNhbGN1bGF0aW9uVmFs
dWUoc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgc3R5bGVSZXNvbHZlci0+cm9vdEVsZW1lbnRTdHls
ZSgpLCBzdHlsZVJlc29sdmVyLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgcmFkaXVzSGVpZ2h0ID0gcGFpci0+c2Vjb25kKCktPmNvbXB1dGVM
ZW5ndGg8TGVuZ3RoPihzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCBzdHlsZVJlc29sdmVyLT5yb290
RWxlbWVudFN0eWxlKCksIHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSk7
Ci0gICAgICAgIGludCB3aWR0aCA9IHJhZGl1c1dpZHRoLnZhbHVlKCk7Ci0gICAgICAgIGludCBo
ZWlnaHQgPSByYWRpdXNIZWlnaHQudmFsdWUoKTsKLSAgICAgICAgaWYgKHdpZHRoIDwgMCB8fCBo
ZWlnaHQgPCAwKQorCisgICAgICAgIGlmIChyYWRpdXNXaWR0aC5pc05lZ2F0aXZlKCkgfHwgcmFk
aXVzSGVpZ2h0LmlzTmVnYXRpdmUoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYg
KCF3aWR0aCkKLSAgICAgICAgICAgIHJhZGl1c0hlaWdodCA9IHJhZGl1c1dpZHRoOyAvLyBOdWxs
IG91dCB0aGUgb3RoZXIgdmFsdWUuCi0gICAgICAgIGVsc2UgaWYgKCFoZWlnaHQpCi0gICAgICAg
ICAgICByYWRpdXNXaWR0aCA9IHJhZGl1c0hlaWdodDsgLy8gTnVsbCBvdXQgdGhlIG90aGVyIHZh
bHVlLgogCi0gICAgICAgIExlbmd0aFNpemUgc2l6ZShyYWRpdXNXaWR0aCwgcmFkaXVzSGVpZ2h0
KTsKLSAgICAgICAgc2V0VmFsdWUoc3R5bGVSZXNvbHZlci0+c3R5bGUoKSwgc2l6ZSk7CisgICAg
ICAgIGlmIChyYWRpdXNXaWR0aC5pc1plcm8oKSB8fCByYWRpdXNIZWlnaHQuaXNaZXJvKCkpIHsK
KyAgICAgICAgICAgIHJhZGl1c1dpZHRoLnNldFZhbHVlKEZpeGVkLCAwKTsKKyAgICAgICAgICAg
IHJhZGl1c0hlaWdodC5zZXRWYWx1ZShGaXhlZCwgMCk7CisgICAgICAgIH0KKworICAgICAgICBz
ZXRWYWx1ZShzdHlsZVJlc29sdmVyLT5zdHlsZSgpLCBMZW5ndGhTaXplKHJhZGl1c1dpZHRoLCBy
YWRpdXNIZWlnaHQpKTsKICAgICB9CiAgICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVI
YW5kbGVyKCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5JbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VF
bGVtZW50LmNwcAppbmRleCBmNGRmZDFmMzdhNWNlNDJjYTJmMjk4MjZiZGEzOGEzZTdjNDY0ZWQ1
Li5kODBjYTQ0NTkwMWRiNWIwNzAwNTE5NmMwNzBkOGU1ZGMxMzFkZDg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKQEAgLTYxMCw3ICs2MTAs
NyBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6OmNoZWNrU2l6ZUNoYW5nZUZvclNuYXBz
aG90dGluZygpCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpczEwMFBlcmNlbnQoTGVuZ3RoIGxlbmd0
aCkKIHsKLSAgICByZXR1cm4gbGVuZ3RoLmlzUGVyY2VudCgpICYmIGxlbmd0aC5wZXJjZW50KCkg
PT0gMTAwOworICAgIHJldHVybiBsZW5ndGguaXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgpICYmIGxl
bmd0aC5wZXJjZW50KCkgPT0gMTAwOwogfQogCiB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQ6
OnN1YmZyYW1lTG9hZGVyV2lsbENyZWF0ZVBsdWdJbihjb25zdCBVUkwmIHVybCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9MZW5ndGguY3BwCmluZGV4IDgyMTJmN2I0ZmRiNjcxYzdjNGFhZjJmNWMxZmM5OWQ0
ZGFhZDk3NmYuLjY2OTkyYWU4NzhiMDVjOTVhZTYyYTBmMDIzMTQyMWNiZWE1OGNmNzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIGlubGluZSB1bnNp
Z25lZCBDYWxjdWxhdGlvblZhbHVlTWFwOjppbnNlcnQoUGFzc1JlZjxDYWxjdWxhdGlvblZhbHVl
PiB2YWx1ZSkKIHsKICAgICBBU1NFUlQobV9uZXh0QXZhaWxhYmxlSGFuZGxlKTsKIAotICAgIC8v
IFRoZSBsZWFrUmVmIGJlbG93IGlzIGJhbGFuY2VkIGJ5IHRoZSBkZXJlZiBpbiB0aGUgZGVyZWYg
bWVtYmVyIGZ1bmN0aW9uLgorICAgIC8vIFRoZSBsZWFrUmVmIGJlbG93IGlzIGJhbGFuY2VkIGJ5
IHRoZSBhZG9wdFJlZiBpbiB0aGUgZGVyZWYgbWVtYmVyIGZ1bmN0aW9uLgogICAgIEVudHJ5IGxl
YWtlZFZhbHVlID0gdmFsdWUubGVha1JlZigpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgbW9ub3Rv
bmljYWxseSBpbmNyZWFzaW5nIGhhbmRsZSBnZW5lcmF0aW9uIHNjaGVtZSBpcyBwb3RlbnRpYWxs
eSB3YXN0ZWZ1bApAQCAtMjMxLDggKzIzMSw5IEBAIGlubGluZSB2b2lkIENhbGN1bGF0aW9uVmFs
dWVNYXA6OmRlcmVmKHVuc2lnbmVkIGhhbmRsZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAot
ICAgIC8vIFRoZSBkZXJlZiBiZWxvdyBpcyBiYWxhbmNlZCBieSB0aGUgbGVha1JlZiBpbiB0aGUg
aW5zZXJ0IG1lbWJlciBmdW5jdGlvbi4KLSAgICBpdC0+dmFsdWUudmFsdWUtPmRlcmVmKCk7Cisg
ICAgLy8gVGhlIGFkb3B0UmVmIGhlcmUgaXMgYmFsYW5jZWQgYnkgdGhlIGxlYWtSZWYgaW4gdGhl
IGluc2VydCBtZW1iZXIgZnVuY3Rpb24uCisgICAgUmVmPENhbGN1bGF0aW9uVmFsdWU+IHZhbHVl
IHsgYWRvcHRSZWYoKml0LT52YWx1ZS52YWx1ZSkgfTsKKwogICAgIG1fbWFwLnJlbW92ZShpdCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgKaW5kZXggZmYzYzk5MjYxZTRlNWVhZTg3NWU1
NWI1MDBhNGEzOGJlNGYyM2JiYi4uMDM2Y2EzOTA4NWU4YmQxNTIzNjczNzMzZWY0MDgyOWFkYTI2
NGNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmgKQEAgLTg0LDYgKzg0LDcgQEAgcHVibGlj
OgogICAgIGJvb2wgaXNGaXhlZCgpIGNvbnN0OwogICAgIGJvb2wgaXNNYXhDb250ZW50KCkgY29u
c3Q7CiAgICAgYm9vbCBpc01pbkNvbnRlbnQoKSBjb25zdDsKKyAgICBib29sIGlzUGVyY2VudE5v
dENhbGN1bGF0ZWQoKSBjb25zdDsgLy8gRklYTUU6IFJlbmFtZSB0byBpc1BlcmNlbnQuCiAgICAg
Ym9vbCBpc1JlbGF0aXZlKCkgY29uc3Q7CiAgICAgYm9vbCBpc1VuZGVmaW5lZCgpIGNvbnN0Owog
CkBAIC05NywxMSArOTgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1Bvc2l0aXZlKCkgY29uc3Q7
CiAgICAgYm9vbCBpc05lZ2F0aXZlKCkgY29uc3Q7CiAKLSAgICAvLyBSZXR1cm5zIHRydWUgZm9y
IGJvdGggUGVyY2VudCBhbmQgQ2FsY3VsYXRlZC4KLSAgICAvLyBGSVhNRTogRG9lc24ndCByZWFs
bHkgc2VlbSBPSyB0byByZXR1cm4gdHJ1ZSBmb3IgQ2FsY3VsYXRlZCBnaXZlbiB0aGlzIGZ1bmN0
aW9uJ3MgbmFtZSwKLSAgICAvLyBldmVuIHRob3VnaCBhbGwgY2FsY3VsYXRlZCB2YWx1ZXMgYXJl
IHRyZWF0ZWQgYXMgcGVyY2VudGFnZXMuIENhbGxlcnMgY2FuIHRlbGwgUGVyY2VudAotICAgIC8v
IGZyb20gYSBDYWxjdWxhdGVkIGFscmVhZHkgYnkgbG9va2luZyBhdCB0eXBlLCBzbyB0aGlzIGZ1
bmN0aW9uIG9ubHkgaGFsZi1oaWRlcyB0aGUgZGlzdGluY3Rpb24uCi0gICAgYm9vbCBpc1BlcmNl
bnQoKSBjb25zdDsKKyAgICBib29sIGlzUGVyY2VudCgpIGNvbnN0OyAvLyBSZXR1cm5zIHRydWUg
Zm9yIGJvdGggUGVyY2VudCBhbmQgQ2FsY3VsYXRlZC4gRklYTUU6IEZpbmQgYSBiZXR0ZXIgbmFt
ZSBmb3IgdGhpcy4KIAogICAgIGJvb2wgaXNJbnRyaW5zaWMoKSBjb25zdDsKICAgICBib29sIGlz
SW50cmluc2ljT3JBdXRvKCkgY29uc3Q7CkBAIC0yNjIsNyArMjU5LDcgQEAgaW5saW5lIGludCBM
ZW5ndGg6OmludFZhbHVlKCkgY29uc3QKIAogaW5saW5lIGZsb2F0IExlbmd0aDo6cGVyY2VudCgp
IGNvbnN0CiB7Ci0gICAgQVNTRVJUKGlzUGVyY2VudCgpKTsKKyAgICBBU1NFUlQoaXNQZXJjZW50
Tm90Q2FsY3VsYXRlZCgpKTsKICAgICByZXR1cm4gdmFsdWUoKTsKIH0KIApAQCAtMzQxLDYgKzMz
OCwxMSBAQCBpbmxpbmUgYm9vbCBMZW5ndGg6OmlzTmVnYXRpdmUoKSBjb25zdAogICAgIHJldHVy
biBtX2lzRmxvYXQgPyAobV9mbG9hdFZhbHVlIDwgMCkgOiAobV9pbnRWYWx1ZSA8IDApOwogfQog
CitpbmxpbmUgYm9vbCBMZW5ndGg6OmlzUGVyY2VudE5vdENhbGN1bGF0ZWQoKSBjb25zdAorewor
ICAgIHJldHVybiB0eXBlKCkgPT0gUGVyY2VudDsKK30KKwogaW5saW5lIGJvb2wgTGVuZ3RoOjpp
c1JlbGF0aXZlKCkgY29uc3QKIHsKICAgICByZXR1cm4gdHlwZSgpID09IFJlbGF0aXZlOwpAQCAt
MzUzLDcgKzM1NSw3IEBAIGlubGluZSBib29sIExlbmd0aDo6aXNVbmRlZmluZWQoKSBjb25zdAog
CiBpbmxpbmUgYm9vbCBMZW5ndGg6OmlzUGVyY2VudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHR5
cGUoKSA9PSBQZXJjZW50IHx8IGlzQ2FsY3VsYXRlZCgpOworICAgIHJldHVybiBpc1BlcmNlbnRO
b3RDYWxjdWxhdGVkKCkgfHwgaXNDYWxjdWxhdGVkKCk7CiB9CiAKIGlubGluZSBib29sIExlbmd0
aDo6aXNQb3NpdGl2ZSgpIGNvbnN0CkBAIC0zOTUsNyArMzk3LDcgQEAgaW5saW5lIGJvb2wgTGVu
Z3RoOjppc0ludHJpbnNpY09yQXV0bygpIGNvbnN0CiAKIGlubGluZSBib29sIExlbmd0aDo6aXNT
cGVjaWZpZWQoKSBjb25zdAogewotICAgIHJldHVybiBpc0ZpeGVkKCkgfHwgdHlwZSgpID09IFBl
cmNlbnQgfHwgaXNDYWxjdWxhdGVkKCkgfHwgaXNWaWV3cG9ydFBlcmNlbnRhZ2UoKTsKKyAgICBy
ZXR1cm4gaXNGaXhlZCgpIHx8IGlzUGVyY2VudCgpIHx8IGlzVmlld3BvcnRQZXJjZW50YWdlKCk7
CiB9CiAKIGlubGluZSBib29sIExlbmd0aDo6aXNTcGVjaWZpZWRPckludHJpbnNpYygpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaAppbmRleCA2
M2NmNTg3YjJkNmUyMGJiY2QzNzczZjg3MjdiMzVlYTg4YTA3YzkyLi42OWU1ZDg1MjVhMTE2NDA0
MTFhY2UxYjRiNmM2ZTNmODdiN2FhYTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNsYXRl
VHJhbnNmb3JtT3BlcmF0aW9uLmgKQEAgLTY4LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIGJvb2wgYXBwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxv
YXRTaXplJiBib3JkZXJCb3hTaXplKSBjb25zdAogICAgIHsKICAgICAgICAgdHJhbnNmb3JtLnRy
YW5zbGF0ZTNkKHgoYm9yZGVyQm94U2l6ZSksIHkoYm9yZGVyQm94U2l6ZSksIHooYm9yZGVyQm94
U2l6ZSkpOwotICAgICAgICByZXR1cm4gbV94LnR5cGUoKSA9PSBQZXJjZW50IHx8IG1feS50eXBl
KCkgPT0gUGVyY2VudDsKKyAgICAgICAgcmV0dXJuIG1feC5pc1BlcmNlbnROb3RDYWxjdWxhdGVk
KCkgfHwgbV95LmlzUGVyY2VudE5vdENhbGN1bGF0ZWQoKTsKICAgICB9CiAKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPiBibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVy
YXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvSWRlbnRpdHkgPSBmYWxz
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQXV0b1RhYmxlTGF5b3V0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9BdXRvVGFibGVMYXlvdXQuY3BwCmluZGV4
IGRlNWYwNDE3ZTJmNDE3NTEyZWUwM2VjMmE5YTI5NTg1MjljMTNkMDYuLjY5YWNiOTg3NWE3ZjRi
NGViMmQ2NDIwNDJkNDdjMGZhODE2ZjUxODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9BdXRvVGFibGVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9BdXRvVGFibGVMYXlvdXQuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBBdXRvVGFibGVM
YXlvdXQ6OnJlY2FsY0NvbHVtbih1bnNpZ25lZCBlZmZDb2wpCiAgICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBQZXJjZW50OgogICAgICAgICAg
ICAgICAgICAgICAgICAgbV9oYXNQZXJjZW50ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChjZWxsTG9naWNhbFdpZHRoLmlzUG9zaXRpdmUoKSAmJiAoIWNvbHVtbkxheW91dC5s
b2dpY2FsV2lkdGguaXNQZXJjZW50KCkgfHwgY2VsbExvZ2ljYWxXaWR0aC52YWx1ZSgpID4gY29s
dW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC52YWx1ZSgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChjZWxsTG9naWNhbFdpZHRoLmlzUG9zaXRpdmUoKSAmJiAoIWNvbHVtbkxheW91dC5sb2dp
Y2FsV2lkdGguaXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgpIHx8IGNlbGxMb2dpY2FsV2lkdGgucGVy
Y2VudCgpID4gY29sdW1uTGF5b3V0LmxvZ2ljYWxXaWR0aC5wZXJjZW50KCkpKQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbHVtbkxheW91dC5sb2dpY2FsV2lkdGggPSBjZWxsTG9naWNh
bFdpZHRoOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgUmVsYXRpdmU6CkBAIC0yMjksOCArMjI5LDggQEAgdm9pZCBBdXRvVGFibGVMYXlv
dXQ6OmNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKExheW91dFVuaXQmIG1pbldpZHRoLCBM
YXlvdXQKICAgICAgICAgbWluV2lkdGggKz0gbV9sYXlvdXRTdHJ1Y3RbaV0uZWZmZWN0aXZlTWlu
TG9naWNhbFdpZHRoOwogICAgICAgICBtYXhXaWR0aCArPSBtX2xheW91dFN0cnVjdFtpXS5lZmZl
Y3RpdmVNYXhMb2dpY2FsV2lkdGg7CiAgICAgICAgIGlmIChzY2FsZUNvbHVtbnMpIHsKLSAgICAg
ICAgICAgIGlmIChtX2xheW91dFN0cnVjdFtpXS5lZmZlY3RpdmVMb2dpY2FsV2lkdGguaXNQZXJj
ZW50KCkpIHsKLSAgICAgICAgICAgICAgICBmbG9hdCBwZXJjZW50ID0gc3RkOjptaW4oc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KG1fbGF5b3V0U3RydWN0W2ldLmVmZmVjdGl2ZUxvZ2ljYWxXaWR0aC5wZXJj
ZW50KCkpLCByZW1haW5pbmdQZXJjZW50KTsKKyAgICAgICAgICAgIGlmIChtX2xheW91dFN0cnVj
dFtpXS5lZmZlY3RpdmVMb2dpY2FsV2lkdGguaXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgpKSB7Cisg
ICAgICAgICAgICAgICAgZmxvYXQgcGVyY2VudCA9IHN0ZDo6bWluKG1fbGF5b3V0U3RydWN0W2ld
LmVmZmVjdGl2ZUxvZ2ljYWxXaWR0aC5wZXJjZW50KCksIHJlbWFpbmluZ1BlcmNlbnQpOwogICAg
ICAgICAgICAgICAgIGZsb2F0IGxvZ2ljYWxXaWR0aCA9IHN0YXRpY19jYXN0PGZsb2F0PihtX2xh
eW91dFN0cnVjdFtpXS5lZmZlY3RpdmVNYXhMb2dpY2FsV2lkdGgpICogMTAwIC8gc3RkOjptYXgo
cGVyY2VudCwgZXBzaWxvbik7CiAgICAgICAgICAgICAgICAgbWF4UGVyY2VudCA9IHN0ZDo6bWF4
KGxvZ2ljYWxXaWR0aCwgIG1heFBlcmNlbnQpOwogICAgICAgICAgICAgICAgIHJlbWFpbmluZ1Bl
cmNlbnQgLT0gcGVyY2VudDsKQEAgLTMyMiw3ICszMjIsNyBAQCBpbnQgQXV0b1RhYmxlTGF5b3V0
OjpjYWxjRWZmZWN0aXZlTG9naWNhbFdpZHRoKCkKICAgICAgICAgICAgICAgICAvLyAgIDx0cj48
dGQ+MTwvdGQ+PHRkIGNvbHNwYW49Mj4yLTM8L3RyPgogICAgICAgICAgICAgICAgIC8vICAgPHRy
Pjx0ZD4xPC90ZD48dGQgY29sc3Bhbj0yIHdpZHRoPTEwMCU+Mi0zPC90ZD48L3RyPgogICAgICAg
ICAgICAgICAgIC8vIDwvdGFibGU+Ci0gICAgICAgICAgICAgICAgaWYgKCFjb2x1bW5MYXlvdXQu
ZWZmZWN0aXZlTG9naWNhbFdpZHRoLmlzUGVyY2VudCgpKSB7CisgICAgICAgICAgICAgICAgaWYg
KCFjb2x1bW5MYXlvdXQuZWZmZWN0aXZlTG9naWNhbFdpZHRoLmlzUGVyY2VudE5vdENhbGN1bGF0
ZWQoKSkgewogICAgICAgICAgICAgICAgICAgICBjb2x1bW5MYXlvdXQuZWZmZWN0aXZlTG9naWNh
bFdpZHRoID0gTGVuZ3RoKCk7CiAgICAgICAgICAgICAgICAgICAgIGFsbENvbHNBcmVQZXJjZW50
ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgfSBlbHNlCkBAIC0zNDAsNyArMzQwLDcgQEAgaW50
IEF1dG9UYWJsZUxheW91dDo6Y2FsY0VmZmVjdGl2ZUxvZ2ljYWxXaWR0aCgpCiAgICAgICAgIH0K
IAogICAgICAgICAvLyBhZGp1c3QgdGFibGUgbWF4IHdpZHRoIGlmIG5lZWRlZAotICAgICAgICBp
ZiAoY2VsbExvZ2ljYWxXaWR0aC5pc1BlcmNlbnQoKSkgeworICAgICAgICBpZiAoY2VsbExvZ2lj
YWxXaWR0aC5pc1BlcmNlbnROb3RDYWxjdWxhdGVkKCkpIHsKICAgICAgICAgICAgIGlmICh0b3Rh
bFBlcmNlbnQgPiBjZWxsTG9naWNhbFdpZHRoLnBlcmNlbnQoKSB8fCBhbGxDb2xzQXJlUGVyY2Vu
dCkgewogICAgICAgICAgICAgICAgIC8vIGNhbid0IHNhdGlmeSB0aGlzIGNvbmRpdGlvbiwgdHJl
YXQgYXMgdmFyaWFibGUKICAgICAgICAgICAgICAgICBjZWxsTG9naWNhbFdpZHRoID0gTGVuZ3Ro
KCk7CkBAIC0zODMsOSArMzgzLDkgQEAgaW50IEF1dG9UYWJsZUxheW91dDo6Y2FsY0VmZmVjdGl2
ZUxvZ2ljYWxXaWR0aCgpCiAgICAgICAgICAgICAgICAgaW50IGFsbG9jYXRlZE1pbkxvZ2ljYWxX
aWR0aCA9IDA7CiAgICAgICAgICAgICAgICAgaW50IGFsbG9jYXRlZE1heExvZ2ljYWxXaWR0aCA9
IDA7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBwb3MgPSBlZmZDb2w7IHBvcyA8IGxh
c3RDb2w7ICsrcG9zKSB7Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChtX2xheW91dFN0cnVj
dFtwb3NdLmxvZ2ljYWxXaWR0aC5pc1BlcmNlbnQoKSB8fCBtX2xheW91dFN0cnVjdFtwb3NdLmVm
ZmVjdGl2ZUxvZ2ljYWxXaWR0aC5pc1BlcmNlbnQoKSk7CisgICAgICAgICAgICAgICAgICAgIEFT
U0VSVChtX2xheW91dFN0cnVjdFtwb3NdLmxvZ2ljYWxXaWR0aC5pc1BlcmNlbnROb3RDYWxjdWxh
dGVkKCkgfHwgbV9sYXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3RpdmVMb2dpY2FsV2lkdGguaXNQZXJj
ZW50Tm90Q2FsY3VsYXRlZCgpKTsKICAgICAgICAgICAgICAgICAgICAgLy8gfGFsbENvbHNBcmVQ
ZXJjZW50fCBtZWFucyB0aGF0IGVpdGhlciB0aGUgbG9naWNhbFdpZHRoICpvciogdGhlIGVmZmVj
dGl2ZUxvZ2ljYWxXaWR0aCBhcmUgcGVyY2VudHMsIGhhbmRsZSBib3RoIG9mIHRoZW0gaGVyZS4K
LSAgICAgICAgICAgICAgICAgICAgZmxvYXQgcGVyY2VudCA9IG1fbGF5b3V0U3RydWN0W3Bvc10u
bG9naWNhbFdpZHRoLmlzUGVyY2VudCgpID8gbV9sYXlvdXRTdHJ1Y3RbcG9zXS5sb2dpY2FsV2lk
dGgucGVyY2VudCgpIDogbV9sYXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3RpdmVMb2dpY2FsV2lkdGgu
cGVyY2VudCgpOworICAgICAgICAgICAgICAgICAgICBmbG9hdCBwZXJjZW50ID0gbV9sYXlvdXRT
dHJ1Y3RbcG9zXS5sb2dpY2FsV2lkdGguaXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgpID8gbV9sYXlv
dXRTdHJ1Y3RbcG9zXS5sb2dpY2FsV2lkdGgucGVyY2VudCgpIDogbV9sYXlvdXRTdHJ1Y3RbcG9z
XS5lZmZlY3RpdmVMb2dpY2FsV2lkdGgucGVyY2VudCgpOwogICAgICAgICAgICAgICAgICAgICBp
bnQgY29sdW1uTWluTG9naWNhbFdpZHRoID0gc3RhdGljX2Nhc3Q8aW50PihwZXJjZW50ICogY2Vs
bE1pbkxvZ2ljYWxXaWR0aCAvIHRvdGFsUGVyY2VudCk7CiAgICAgICAgICAgICAgICAgICAgIGlu
dCBjb2x1bW5NYXhMb2dpY2FsV2lkdGggPSBzdGF0aWNfY2FzdDxpbnQ+KHBlcmNlbnQgKiBjZWxs
TWF4TG9naWNhbFdpZHRoIC8gdG90YWxQZXJjZW50KTsKICAgICAgICAgICAgICAgICAgICAgbV9s
YXlvdXRTdHJ1Y3RbcG9zXS5lZmZlY3RpdmVNaW5Mb2dpY2FsV2lkdGggPSBzdGQ6Om1heChtX2xh
eW91dFN0cnVjdFtwb3NdLmVmZmVjdGl2ZU1pbkxvZ2ljYWxXaWR0aCwgY29sdW1uTWluTG9naWNh
bFdpZHRoKTsKQEAgLTYxOSw3ICs2MTksNyBAQCB2b2lkIEF1dG9UYWJsZUxheW91dDo6bGF5b3V0
KCkKICAgICBpZiAoYXZhaWxhYmxlID4gMCAmJiBtX2hhc1BlcmNlbnQgJiYgdG90YWxQZXJjZW50
IDwgMTAwKSB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbkVmZkNvbHM7ICsraSkg
ewogICAgICAgICAgICAgTGVuZ3RoJiBsb2dpY2FsV2lkdGggPSBtX2xheW91dFN0cnVjdFtpXS5l
ZmZlY3RpdmVMb2dpY2FsV2lkdGg7Ci0gICAgICAgICAgICBpZiAobG9naWNhbFdpZHRoLmlzUGVy
Y2VudCgpKSB7CisgICAgICAgICAgICBpZiAobG9naWNhbFdpZHRoLmlzUGVyY2VudE5vdENhbGN1
bGF0ZWQoKSkgewogICAgICAgICAgICAgICAgIGludCBjZWxsTG9naWNhbFdpZHRoID0gYXZhaWxh
YmxlICogbG9naWNhbFdpZHRoLnBlcmNlbnQoKSAvIHRvdGFsUGVyY2VudDsKICAgICAgICAgICAg
ICAgICBhdmFpbGFibGUgLT0gY2VsbExvZ2ljYWxXaWR0aDsKICAgICAgICAgICAgICAgICB0b3Rh
bFBlcmNlbnQgLT0gbG9naWNhbFdpZHRoLnBlcmNlbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9GaXhlZFRhYmxlTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9GaXhlZFRhYmxlTGF5b3V0LmNwcAppbmRleCBjZWNlYTcyMTU3MTYxOGQ1M2YwMGYx
ZDdkNTZlNzM3MGI5YmI2OTM5Li5mMDhkMjlhZDU0OWIzYTJjZWU5ZGM2YmEzN2MwYjc1MTI1NzVj
YTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvRml4ZWRUYWJsZUxheW91
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpeGVkVGFibGVMYXlvdXQuY3Bw
CkBAIC0yMjUsNyArMjI1LDcgQEAgdm9pZCBGaXhlZFRhYmxlTGF5b3V0OjpsYXlvdXQoKQogICAg
ICAgICBpZiAobV93aWR0aFtpXS5pc0ZpeGVkKCkpIHsKICAgICAgICAgICAgIGNhbGNXaWR0aFtp
XSA9IG1fd2lkdGhbaV0udmFsdWUoKTsKICAgICAgICAgICAgIHRvdGFsRml4ZWRXaWR0aCArPSBj
YWxjV2lkdGhbaV07Ci0gICAgICAgIH0gZWxzZSBpZiAobV93aWR0aFtpXS5pc1BlcmNlbnQoKSkg
eworICAgICAgICB9IGVsc2UgaWYgKG1fd2lkdGhbaV0uaXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgp
KSB7CiAgICAgICAgICAgICBjYWxjV2lkdGhbaV0gPSB2YWx1ZUZvckxlbmd0aChtX3dpZHRoW2ld
LCB0YWJsZUxvZ2ljYWxXaWR0aCk7CiAgICAgICAgICAgICB0b3RhbFBlcmNlbnRXaWR0aCArPSBj
YWxjV2lkdGhbaV07CiAgICAgICAgICAgICB0b3RhbFBlcmNlbnQgKz0gbV93aWR0aFtpXS5wZXJj
ZW50KCk7CkBAIC0yNTQsNyArMjU0LDcgQEAgdm9pZCBGaXhlZFRhYmxlTGF5b3V0OjpsYXlvdXQo
KQogICAgICAgICAgICAgaWYgKHRvdGFsUGVyY2VudCkgewogICAgICAgICAgICAgICAgIHRvdGFs
UGVyY2VudFdpZHRoID0gMDsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbkVmZkNvbHM7IGkrKykgewotICAgICAgICAgICAgICAgICAgICBpZiAobV93aWR0aFtpXS5p
c1BlcmNlbnQoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAobV93aWR0aFtpXS5pc1BlcmNl
bnROb3RDYWxjdWxhdGVkKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGNXaWR0aFtp
XSA9IG1fd2lkdGhbaV0ucGVyY2VudCgpICogKHRhYmxlTG9naWNhbFdpZHRoIC0gdG90YWxGaXhl
ZFdpZHRoKSAvIHRvdGFsUGVyY2VudDsKICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsUGVy
Y2VudFdpZHRoICs9IGNhbGNXaWR0aFtpXTsKICAgICAgICAgICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXgg
YjY1MTAzYjY1YTEzNGI1NjdiZGMzOWJiY2VmNDE3MTVjODcxMjNlYi4uYzRiMmIyZjY2NDAxOTg0
MWNlNDNiOTE2MTMyNWYwMjczMjE3ZGM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC04OTMsNyArODkzLDcgQEAgTGF5b3V0
U2l6ZSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y2FsY3VsYXRlSW1hZ2VJbnRyaW5zaWNEaW1lbnNp
b25zKFN0eWxlSW1hZ2UqIGkKICAgICAvLyB0aGF0IGVzdGFibGlzaGVzIHRoZSBjb29yZGluYXRl
IHN5c3RlbSBmb3IgdGhlICdiYWNrZ3JvdW5kLXBvc2l0aW9uJyBwcm9wZXJ0eS4gCiAgICAgCiAg
ICAgLy8gRklYTUU6IFJlbW92ZSB1bm5lY2Vzc2FyeSByb3VuZGluZyB3aGVuIGxheW91dCBpcyBv
ZmYgaW50czogd2Via2l0Lm9yZy9iLzYzNjU2Ci0gICAgaWYgKGludHJpbnNpY1dpZHRoLmlzUGVy
Y2VudCgpICYmIGludHJpbnNpY0hlaWdodC5pc1BlcmNlbnQoKSAmJiBpbnRyaW5zaWNSYXRpby5p
c0VtcHR5KCkpIHsKKyAgICBpZiAoaW50cmluc2ljV2lkdGguaXNQZXJjZW50Tm90Q2FsY3VsYXRl
ZCgpICYmIGludHJpbnNpY0hlaWdodC5pc1BlcmNlbnROb3RDYWxjdWxhdGVkKCkgJiYgaW50cmlu
c2ljUmF0aW8uaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFJlc29sdmUgd2lkdGgvaGVpZ2h0IHBl
cmNlbnRhZ2VzIGFnYWluc3QgcG9zaXRpb25pbmdBcmVhU2l6ZSwgb25seSBpZiBubyBpbnRyaW5z
aWMgcmF0aW8gaXMgcHJvdmlkZWQuCiAgICAgICAgIGZsb2F0IHJlc29sdmVkV2lkdGggPSBwb3Np
dGlvbmluZ0FyZWFTaXplLndpZHRoKCkgKiBpbnRyaW5zaWNXaWR0aC5wZXJjZW50KCkgLyAxMDA7
CiAgICAgICAgIGZsb2F0IHJlc29sdmVkSGVpZ2h0ID0gcG9zaXRpb25pbmdBcmVhU2l6ZS5oZWln
aHQoKSAqIGludHJpbnNpY0hlaWdodC5wZXJjZW50KCkgLyAxMDA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCmluZGV4IGU4NDY5MWJmN2IyNWRm
YzgzN2ZmMjBjM2MyODY0NmNhOWNlZjY3N2IuLjFmZGVlYzllMzU5NGU5YWY0N2FkMzczZWQ1NmU2
YmMxODBjYzAzNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZVNlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uY3BwCkBAIC02NSwxMiArNjUsMTEgQEAgc3RhdGljIGlubGluZSB2b2lkIHVwZGF0
ZUxvZ2ljYWxIZWlnaHRGb3JDZWxsKFJlbmRlclRhYmxlU2VjdGlvbjo6Um93U3RydWN0JiByb3cK
ICAgICAgICAgTGVuZ3RoIGNSb3dMb2dpY2FsSGVpZ2h0ID0gcm93LmxvZ2ljYWxIZWlnaHQ7CiAg
ICAgICAgIHN3aXRjaCAobG9naWNhbEhlaWdodC50eXBlKCkpIHsKICAgICAgICAgY2FzZSBQZXJj
ZW50OgotICAgICAgICAgICAgaWYgKCEoY1Jvd0xvZ2ljYWxIZWlnaHQuaXNQZXJjZW50KCkpCi0g
ICAgICAgICAgICAgICAgfHwgKGNSb3dMb2dpY2FsSGVpZ2h0LmlzUGVyY2VudCgpICYmIGNSb3dM
b2dpY2FsSGVpZ2h0LnBlcmNlbnQoKSA8IGxvZ2ljYWxIZWlnaHQucGVyY2VudCgpKSkKKyAgICAg
ICAgICAgIGlmICghY1Jvd0xvZ2ljYWxIZWlnaHQuaXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgpIHx8
IGNSb3dMb2dpY2FsSGVpZ2h0LnBlcmNlbnQoKSA8IGxvZ2ljYWxIZWlnaHQucGVyY2VudCgpKQog
ICAgICAgICAgICAgICAgIHJvdy5sb2dpY2FsSGVpZ2h0ID0gbG9naWNhbEhlaWdodDsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEZpeGVkOgotICAgICAgICAgICAgaWYgKGNSb3dM
b2dpY2FsSGVpZ2h0LnR5cGUoKSA8IFBlcmNlbnQKKyAgICAgICAgICAgIGlmIChjUm93TG9naWNh
bEhlaWdodC5pc0F1dG8oKSB8fCBjUm93TG9naWNhbEhlaWdodC5pc1JlbGF0aXZlKCkKICAgICAg
ICAgICAgICAgICB8fCAoY1Jvd0xvZ2ljYWxIZWlnaHQuaXNGaXhlZCgpICYmIGNSb3dMb2dpY2Fs
SGVpZ2h0LnZhbHVlKCkgPCBsb2dpY2FsSGVpZ2h0LnZhbHVlKCkpKQogICAgICAgICAgICAgICAg
IHJvdy5sb2dpY2FsSGVpZ2h0ID0gbG9naWNhbEhlaWdodDsKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtNDM1LDcgKzQzNCw3IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpkaXN0cmlidXRlRXh0
cmFMb2dpY2FsSGVpZ2h0VG9QZXJjZW50Um93cyhpbnQmIGV4dHJhTG9nCiAgICAgdG90YWxQZXJj
ZW50ID0gc3RkOjptaW4odG90YWxQZXJjZW50LCAxMDApOwogICAgIGludCByb3dIZWlnaHQgPSBt
X3Jvd1Bvc1sxXSAtIG1fcm93UG9zWzBdOwogICAgIGZvciAodW5zaWduZWQgciA9IDA7IHIgPCB0
b3RhbFJvd3M7ICsrcikgewotICAgICAgICBpZiAodG90YWxQZXJjZW50ID4gMCAmJiBtX2dyaWRb
cl0ubG9naWNhbEhlaWdodC5pc1BlcmNlbnQoKSkgeworICAgICAgICBpZiAodG90YWxQZXJjZW50
ID4gMCAmJiBtX2dyaWRbcl0ubG9naWNhbEhlaWdodC5pc1BlcmNlbnROb3RDYWxjdWxhdGVkKCkp
IHsKICAgICAgICAgICAgIGludCB0b0FkZCA9IHN0ZDo6bWluPGludD4oZXh0cmFMb2dpY2FsSGVp
Z2h0LCAodG90YWxIZWlnaHQgKiBtX2dyaWRbcl0ubG9naWNhbEhlaWdodC5wZXJjZW50KCkgLyAx
MDApIC0gcm93SGVpZ2h0KTsKICAgICAgICAgICAgIC8vIElmIHRvQWRkIGlzIG5lZ2F0aXZlLCB0
aGVuIHdlIGRvbid0IHdhbnQgdG8gc2hyaW5rIHRoZSByb3cgKHRoaXMgYnVnCiAgICAgICAgICAg
ICAvLyBhZmZlY3RlZCBPdXRsb29rIFdlYiBBY2Nlc3MpLgpAQCAtNTA3LDcgKzUwNiw3IEBAIGlu
dCBSZW5kZXJUYWJsZVNlY3Rpb246OmRpc3RyaWJ1dGVFeHRyYUxvZ2ljYWxIZWlnaHRUb1Jvd3Mo
aW50IGV4dHJhTG9naWNhbEhlaWdoCiAgICAgZm9yICh1bnNpZ25lZCByID0gMDsgciA8IHRvdGFs
Um93czsgcisrKSB7CiAgICAgICAgIGlmIChtX2dyaWRbcl0ubG9naWNhbEhlaWdodC5pc0F1dG8o
KSkKICAgICAgICAgICAgICsrYXV0b1Jvd3NDb3VudDsKLSAgICAgICAgZWxzZSBpZiAobV9ncmlk
W3JdLmxvZ2ljYWxIZWlnaHQuaXNQZXJjZW50KCkpCisgICAgICAgIGVsc2UgaWYgKG1fZ3JpZFty
XS5sb2dpY2FsSGVpZ2h0LmlzUGVyY2VudE5vdENhbGN1bGF0ZWQoKSkKICAgICAgICAgICAgIHRv
dGFsUGVyY2VudCArPSBtX2dyaWRbcl0ubG9naWNhbEhlaWdodC5wZXJjZW50KCk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRl
eCA5YmVlZDUyNDQzODg1ZTg4N2RjMGJkYmY5MDY2ZTA1MjVmMDQ5MzlkLi4yNzI2ZjJjMDhjNzJi
ODU3NmI5MWJkYmQ1NzlhODE1NTIwZmJiMjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTkzMiw3ICs5MzIsNyBAQCBjb25zdCBTdHJp
bmcmIFJlbmRlclN0eWxlOjpjb250ZW50QWx0VGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX2FsdFRleHQ7CiB9CiAKLWlubGluZSBib29sIHJlcXVpcmVUcmFu
c2Zvcm1PcmlnaW4oY29uc3QgVmVjdG9yPFJlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+PiYgdHJh
bnNmb3JtT3BlcmF0aW9ucywgUmVuZGVyU3R5bGU6OkFwcGx5VHJhbnNmb3JtT3JpZ2luIGFwcGx5
T3JpZ2luKQorc3RhdGljIGlubGluZSBib29sIHJlcXVpcmVUcmFuc2Zvcm1PcmlnaW4oY29uc3Qg
VmVjdG9yPFJlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+PiYgdHJhbnNmb3JtT3BlcmF0aW9ucywg
UmVuZGVyU3R5bGU6OkFwcGx5VHJhbnNmb3JtT3JpZ2luIGFwcGx5T3JpZ2luKQogewogICAgIC8v
IHRyYW5zZm9ybS1vcmlnaW4gYnJhY2tldHMgdGhlIHRyYW5zZm9ybSB3aXRoIHRyYW5zbGF0ZSBv
cGVyYXRpb25zLgogICAgIC8vIE9wdGltaXplIGZvciB0aGUgY2FzZSB3aGVyZSB0aGUgb25seSB0
cmFuc2Zvcm0gaXMgYSB0cmFuc2xhdGlvbiwgc2luY2UgdGhlIHRyYW5zZm9ybS1vcmlnaW4gaXMg
aXJyZWxldmFudApAQCAtOTQwLDkgKzk0MCw4IEBAIGlubGluZSBib29sIHJlcXVpcmVUcmFuc2Zv
cm1PcmlnaW4oY29uc3QgVmVjdG9yPFJlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+PiYgdHJhCiAg
ICAgaWYgKGFwcGx5T3JpZ2luICE9IFJlbmRlclN0eWxlOjpJbmNsdWRlVHJhbnNmb3JtT3JpZ2lu
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICB1bnNpZ25lZCBzaXplID0gdHJhbnNmb3Jt
T3BlcmF0aW9ucy5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsr
aSkgewotICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHlwZSA9IHRy
YW5zZm9ybU9wZXJhdGlvbnNbaV0tPnR5cGUoKTsKKyAgICBmb3IgKGF1dG8mIG9wZXJhdGlvbiA6
IHRyYW5zZm9ybU9wZXJhdGlvbnMpIHsKKyAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVy
YXRpb25UeXBlIHR5cGUgPSBvcGVyYXRpb24tPnR5cGUoKTsKICAgICAgICAgaWYgKHR5cGUgIT0g
VHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWAogICAgICAgICAgICAgJiYgdHlwZSAhPSBU
cmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9ZCiAgICAgICAgICAgICAmJiB0eXBlICE9IFRy
YW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFIApAQCAtOTUwLDI4ICs5NDksMjcgQEAgaW5saW5l
IGJvb2wgcmVxdWlyZVRyYW5zZm9ybU9yaWdpbihjb25zdCBWZWN0b3I8UmVmUHRyPFRyYW5zZm9y
bU9wZXJhdGlvbj4+JiB0cmEKICAgICAgICAgICAgICYmIHR5cGUgIT0gVHJhbnNmb3JtT3BlcmF0
aW9uOjpUUkFOU0xBVEVfM0QpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0gICAg
CisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNm
b3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgYm91
bmRpbmdCb3gsIEFwcGx5VHJhbnNmb3JtT3JpZ2luIGFwcGx5T3JpZ2luKSBjb25zdAogewotICAg
IGNvbnN0IFZlY3RvcjxSZWZQdHI8VHJhbnNmb3JtT3BlcmF0aW9uPj4mIHRyYW5zZm9ybU9wZXJh
dGlvbnMgPSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0tPm1fb3BlcmF0aW9ucy5v
cGVyYXRpb25zKCk7Ci0gICAgYm9vbCBhcHBseVRyYW5zZm9ybU9yaWdpbiA9IHJlcXVpcmVUcmFu
c2Zvcm1PcmlnaW4odHJhbnNmb3JtT3BlcmF0aW9ucywgYXBwbHlPcmlnaW4pOwotICAgIAotICAg
IGZsb2F0IG9mZnNldFggPSB0cmFuc2Zvcm1PcmlnaW5YKCkudHlwZSgpID09IFBlcmNlbnQgPyBi
b3VuZGluZ0JveC54KCkgOiAwOwotICAgIGZsb2F0IG9mZnNldFkgPSB0cmFuc2Zvcm1PcmlnaW5Z
KCkudHlwZSgpID09IFBlcmNlbnQgPyBib3VuZGluZ0JveC55KCkgOiAwOwotICAgIAorICAgIGF1
dG8mIG9wZXJhdGlvbnMgPSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0tPm1fb3Bl
cmF0aW9ucy5vcGVyYXRpb25zKCk7CisgICAgYm9vbCBhcHBseVRyYW5zZm9ybU9yaWdpbiA9IHJl
cXVpcmVUcmFuc2Zvcm1PcmlnaW4ob3BlcmF0aW9ucywgYXBwbHlPcmlnaW4pOworCisgICAgZmxv
YXQgb2Zmc2V0WCA9IHRyYW5zZm9ybU9yaWdpblgoKS5pc1BlcmNlbnROb3RDYWxjdWxhdGVkKCkg
PyBib3VuZGluZ0JveC54KCkgOiAwOworICAgIGZsb2F0IG9mZnNldFkgPSB0cmFuc2Zvcm1Pcmln
aW5ZKCkuaXNQZXJjZW50Tm90Q2FsY3VsYXRlZCgpID8gYm91bmRpbmdCb3gueSgpIDogMDsKKwog
ICAgIGlmIChhcHBseVRyYW5zZm9ybU9yaWdpbikgewogICAgICAgICB0cmFuc2Zvcm0udHJhbnNs
YXRlM2QoZmxvYXRWYWx1ZUZvckxlbmd0aCh0cmFuc2Zvcm1PcmlnaW5YKCksIGJvdW5kaW5nQm94
LndpZHRoKCkpICsgb2Zmc2V0WCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0
VmFsdWVGb3JMZW5ndGgodHJhbnNmb3JtT3JpZ2luWSgpLCBib3VuZGluZ0JveC5oZWlnaHQoKSkg
KyBvZmZzZXRZLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtT3JpZ2lu
WigpKTsKICAgICB9Ci0gICAgCi0gICAgdW5zaWduZWQgc2l6ZSA9IHRyYW5zZm9ybU9wZXJhdGlv
bnMuc2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAg
ICAgIHRyYW5zZm9ybU9wZXJhdGlvbnNbaV0tPmFwcGx5KHRyYW5zZm9ybSwgYm91bmRpbmdCb3gu
c2l6ZSgpKTsKLSAgICAKKworICAgIGZvciAoYXV0byYgb3BlcmF0aW9uIDogb3BlcmF0aW9ucykK
KyAgICAgICAgb3BlcmF0aW9uLT5hcHBseSh0cmFuc2Zvcm0sIGJvdW5kaW5nQm94LnNpemUoKSk7
CisKICAgICBpZiAoYXBwbHlUcmFuc2Zvcm1PcmlnaW4pIHsKICAgICAgICAgdHJhbnNmb3JtLnRy
YW5zbGF0ZTNkKC1mbG9hdFZhbHVlRm9yTGVuZ3RoKHRyYW5zZm9ybU9yaWdpblgoKSwgYm91bmRp
bmdCb3gud2lkdGgoKSkgLSBvZmZzZXRYLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LWZsb2F0VmFsdWVGb3JMZW5ndGgodHJhbnNmb3JtT3JpZ2luWSgpLCBib3VuZGluZ0JveC5oZWln
aHQoKSkgLSBvZmZzZXRZLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUm9vdC5jcHAKaW5kZXggMDVjZGExOTMxMjMxOWFlYmY4OTk2NmY2YTEzZTY4NjdkMjQxZWQ3
MC4uNTMwMDMxNDMyYzI2YzVkOTEyMDM2ODg3YWE3OWViYjgzZjc2Y2NiMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCkBAIC0xMTMsNyArMTEz
LDcgQEAgdm9pZCBSZW5kZXJTVkdSb290Ojpjb21wdXRlSW50cmluc2ljUmF0aW9JbmZvcm1hdGlv
bihGbG9hdFNpemUmIGludHJpbnNpY1NpemUsIGQKIAogICAgIC8vIElmIG91ciBpbnRyaW5zaWMg
c2l6ZSBpcyBpbiBwZXJjZW50YWdlIHVuaXRzLCByZXR1cm4gdGhvc2UgdG8gdGhlIGNhbGxlciB0
aHJvdWdoIHRoZSBpbnRyaW5zaWNTaXplLiBOb3RpZnkgdGhlIGNhbGxlcgogICAgIC8vIGFib3V0
IHRoZSBzcGVjaWFsIHNpdHVhdGlvbiwgYnkgc2V0dGluZyBpc1BlcmNlbnRhZ2VJbnRyaW5zaWNT
aXplPXRydWUsIHNvIGl0IGtub3dzIGhvdyB0byBpbnRlcnByZXQgdGhlIHJldHVybiB2YWx1ZXMu
Ci0gICAgaWYgKGludHJpbnNpY1dpZHRoQXR0cmlidXRlLmlzUGVyY2VudCgpICYmIGludHJpbnNp
Y0hlaWdodEF0dHJpYnV0ZS5pc1BlcmNlbnQoKSkgeworICAgIGlmIChpbnRyaW5zaWNXaWR0aEF0
dHJpYnV0ZS5pc1BlcmNlbnROb3RDYWxjdWxhdGVkKCkgJiYgaW50cmluc2ljSGVpZ2h0QXR0cmli
dXRlLmlzUGVyY2VudE5vdENhbGN1bGF0ZWQoKSkgewogICAgICAgICBpc1BlcmNlbnRhZ2VJbnRy
aW5zaWNTaXplID0gdHJ1ZTsKICAgICAgICAgaW50cmluc2ljU2l6ZSA9IEZsb2F0U2l6ZShpbnRy
aW5zaWNXaWR0aEF0dHJpYnV0ZS5wZXJjZW50KCksIGludHJpbnNpY0hlaWdodEF0dHJpYnV0ZS5w
ZXJjZW50KCkpOwogICAgIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>