<?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>96026</bug_id>
          
          <creation_ts>2012-09-06 14:27:09 -0700</creation_ts>
          <short_desc>Parcel up logic related to sticky positioning into a Constraints class that will later be used for threaded scrolling</short_desc>
          <delta_ts>2012-09-06 16:20:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>andersca</cc>
    
    <cc>eric</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jamesr</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>skyostil</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>713706</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-09-06 14:27:09 -0700</bug_when>
    <thetext>Parcel up logic related to sticky positioning into a Constraints class that will later be used for threaded scrolling</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713758</commentid>
    <comment_count>1</comment_count>
      <attachid>162602</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-09-06 15:17:26 -0700</bug_when>
    <thetext>Created attachment 162602
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713776</commentid>
    <comment_count>2</comment_count>
      <attachid>162602</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-06 15:42:47 -0700</bug_when>
    <thetext>Comment on attachment 162602
Patch

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

Looks pretty good.  Could you add the new files to the other build systems (evil cackle here).  For chromium it&apos;s pretty easy, just add them to the big-ass &apos;webcore_files&apos; list in Source/WebCore/WebCore.gypi

&gt; Source/WebCore/ChangeLog:22
&gt; +        FixedPositionViewportConstraints is not yet used.

If I was writing this, I&apos;d hold off on landing FixedPositionViewportConstraints until it was used and tested. Checked-in-but-dead code has a nasty habit of bitrotting.

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:25509
&gt; +				0F605AED15F94848004DF0C0 /* ScrollingConstraints.h in Headers */,

should these be sorted?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713787</commentid>
    <comment_count>3</comment_count>
      <attachid>162602</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-09-06 15:56:30 -0700</bug_when>
    <thetext>Comment on attachment 162602
Patch

r-, need to add the new files to other build systems</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713793</commentid>
    <comment_count>4</comment_count>
      <attachid>162610</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-09-06 16:03:53 -0700</bug_when>
    <thetext>Created attachment 162610
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713795</commentid>
    <comment_count>5</comment_count>
      <attachid>162610</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-06 16:04:42 -0700</bug_when>
    <thetext>Comment on attachment 162610
Patch

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

&gt; Source/WebCore/CMakeLists.txt:1735
&gt; +    page/scrolling/ScrollingConstraints.cpp
&gt; +    page/scrolling/ScrollingConstraints.cpp

don&apos;t need both - looks like convention here is not to list the headers so just nuke one line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713796</commentid>
    <comment_count>6</comment_count>
      <attachid>162610</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-06 16:05:38 -0700</bug_when>
    <thetext>Comment on attachment 162610
Patch

Otherwise looks good, R=me.  I&apos;d probably let the EWS bots finish, or land and if you&apos;re in a hurry to land watch out for bustages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713797</commentid>
    <comment_count>7</comment_count>
      <attachid>162611</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-09-06 16:06:08 -0700</bug_when>
    <thetext>Created attachment 162611
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713800</commentid>
    <comment_count>8</comment_count>
      <attachid>162611</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-09-06 16:08:35 -0700</bug_when>
    <thetext>Comment on attachment 162611
Patch

Forward James&apos;s r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713821</commentid>
    <comment_count>9</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-09-06 16:20:50 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/127795</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162602</attachid>
            <date>2012-09-06 15:17:26 -0700</date>
            <delta_ts>2012-09-06 16:03:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96026-20120906151709.patch</filename>
            <type>text/plain</type>
            <size>26454</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTAzNjAwZWE3MGM1YzBl
NTdkYWYzMTM1M2Q5ODQ0YWQxNDFmMTMyMy4uZjBiM2I3MGZmNzUyZWQxNjIxMjk5MzcxZGE1ZDZh
MWNlYTk2Y2UwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDcxIEBACiAyMDEyLTA5LTA2ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCisgICAgICAgIFBhcmNlbCB1cCBs
b2dpYyByZWxhdGVkIHRvIHN0aWNreSBwb3NpdGlvbmluZyBpbnRvIGEgQ29uc3RyYWludHMgY2xh
c3MgdGhhdCB3aWxsIGxhdGVyIGJlIHVzZWQgZm9yIHRocmVhZGVkIHNjcm9sbGluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYwMjYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMYXkgc29tZSBncm91bmR3
b3JrIGZvciB0aHJlYWRlZCBzY3JvbGxpbmcgd2l0aCBmaXhlZCBwb3NpdGlvbiBhbmQgc3RpY2t5
CisgICAgICAgIHBvc2l0aW9uIG9iamVjdHMsIGJ5IHBhY2thZ2luZyB1cCBsb2dpYyByZWxhdGVk
IHRvIGhvdyB0byByZXBvc2l0aW9uCisgICAgICAgIGZpeGVkIGFuZCBzdGlja3kgdGhpbmdzIG9u
IHZpZXdwb3J0IGNoYW5nZXMgaW50byAiY29uc3RyYWludHMiIGNsYXNzZXMuCisgICAgICAgIAor
ICAgICAgICBTY3JvbGxpbmdDb25zdHJhaW50cyBjb250YWlucyBhICdWaWV3cG9ydENvbnN0cmFp
bnRzJyBiYXNlIGNsYXNzCisgICAgICAgIHRoYXQgaXMgc3ViY2xhc3NlZCBmb3IgZml4ZWQgYW5k
IHN0aWNreSBwb3NpdGlvbi4gVGhlc2UgY2xhc3NlcyBzdG9yZQorICAgICAgICBkYXRhIGFib3V0
IHRoZSBjb25zdHJhaW50cyB0aGF0IGdvdmVybiB0aGUgcG9zaXRpb24gb2YgYW4gb2JqZWN0IG91
dHNpZGUKKyAgICAgICAgb2YgdGhlIHJlbmRlciB0cmVlLCBhbmQga25vdyBob3cgdG8gY29tcHV0
ZSBhIG5ldyBwb3NpdGlvbiB3aGVuIHRoZQorICAgICAgICB2aWV3cG9ydCBjaGFuZ2VzIHVzaW5n
IG9ubHkgZGF0YSBpbiB0aGUgY2xhc3MuCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGNo
YW5nZXMgUmVuZGVyQm94TW9kZWxPYmplY3QgdG8gdXNlIHRoZSBTdGlja3lQb3NpdGlvblZpZXdw
b3J0Q29uc3RyYWludHMKKyAgICAgICAgY2xhc3MgZm9yIGNvbXB1dGluZyBzdGljayBvZmZzZXRz
IGF0IGxheW91dCB0aW1lLiBJbiB0aGUgZnV0dXJlLCB3ZSdsbCBoYXZlCisgICAgICAgIHRoZSBz
Y3JvbGxpbmcgdHJlZSBzdG9yZSBjb3BpZXMgb2YgdGhlIGNvbnN0cmFpbnQgZGF0YSBmb3IgdGhy
ZWFkZWQgc2Nyb2xsaW5nLgorICAgICAgICAKKyAgICAgICAgRml4ZWRQb3NpdGlvblZpZXdwb3J0
Q29uc3RyYWludHMgaXMgbm90IHlldCB1c2VkLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nv
bnN0cmFpbnRzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGaXhlZFBvc2l0aW9uVmll
d3BvcnRDb25zdHJhaW50czo6bGF5ZXJQb3NpdGlvbkZvclZpZXdwb3J0UmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM6OmNvbXB1dGVTdGlj
a3lPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0
cmFpbnRzOjpsYXllclBvc2l0aW9uRm9yVmlld3BvcnRSZWN0KToKKyAgICAgICAgKiBwYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdDb25zdHJhaW50cy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlZpZXdwb3J0Q29uc3RyYWludHM6OlZpZXdwb3J0Q29uc3RyYWludHMpOgorICAgICAgICAoV2Vi
Q29yZTo6Vmlld3BvcnRDb25zdHJhaW50czo6flZpZXdwb3J0Q29uc3RyYWludHMpOgorICAgICAg
ICAoV2ViQ29yZTo6Vmlld3BvcnRDb25zdHJhaW50czo6YW5jaG9yRWRnZXMpOgorICAgICAgICAo
V2ViQ29yZTo6Vmlld3BvcnRDb25zdHJhaW50czo6aGFzQW5jaG9yRWRnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWV3cG9ydENvbnN0cmFpbnRzOjphZGRBbmNob3JFZGdlKToKKyAgICAgICAgKFdl
YkNvcmU6OlZpZXdwb3J0Q29uc3RyYWludHM6OmFsaWdubWVudE9mZnNldCk6CisgICAgICAgIChX
ZWJDb3JlOjpWaWV3cG9ydENvbnN0cmFpbnRzOjpzZXRBbGlnbm1lbnRPZmZzZXQpOgorICAgICAg
ICAoRml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6
Rml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM6OnZpZXdQb3J0UmVjdEF0TGFzdExheW91
dCk6CisgICAgICAgIChXZWJDb3JlOjpGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czo6
c2V0Vmlld1BvcnRSZWN0QXRMYXN0TGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpeGVkUG9z
aXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOjpsYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOjpzZXRMYXll
clBvc2l0aW9uQXRMYXN0TGF5b3V0KToKKyAgICAgICAgKFN0aWNreVBvc2l0aW9uVmlld3BvcnRD
b25zdHJhaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29u
c3RyYWludHM6OlN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cyk6CisgICAgICAgIChX
ZWJDb3JlOjpTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM6OnN0aWNreU9mZnNldEF0
TGFzdExheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29u
c3RyYWludHM6OnNldFN0aWNreU9mZnNldEF0TGFzdExheW91dCk6CisgICAgICAgIChXZWJDb3Jl
OjpTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM6OmxheWVyUG9zaXRpb25BdExhc3RM
YXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFp
bnRzOjpzZXRMYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0
aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czo6bGVmdE9mZnNldCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM6OnJpZ2h0T2Zmc2V0KToK
KyAgICAgICAgKFdlYkNvcmU6OlN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czo6dG9w
T2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJh
aW50czo6Ym90dG9tT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0aWNreVBvc2l0aW9uVmll
d3BvcnRDb25zdHJhaW50czo6c2V0TGVmdE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTdGlj
a3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM6OnNldFJpZ2h0T2Zmc2V0KToKKyAgICAgICAg
KFdlYkNvcmU6OlN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czo6c2V0VG9wT2Zmc2V0
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czo6
c2V0Qm90dG9tT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0aWNreVBvc2l0aW9uVmlld3Bv
cnRDb25zdHJhaW50czo6c2V0QWJzb2x1dGVDb250YWluaW5nQmxvY2tSZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czo6c2V0QWJzb2x1dGVT
dGlja3lCb3hSZWN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmNvbXB1dGVTdGlj
a3lQb3NpdGlvbkNvbnN0cmFpbnRzKTogRmlsbCBvdXQKKyAgICAgICAgZGF0YSBpbiB0aGUgc3Vw
cGxpZWQgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzIGluc3RhbmNlLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OnN0aWNreVBvc2l0aW9uT2Zmc2V0KTog
Q3JlYXRlIGEKKyAgICAgICAgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzIG9iamVj
dCBvbiB0aGUgc3RhY2sgYW5kIHVzZSBpdCB0bworICAgICAgICBjb21wdXRlIHRoZSBzdGlja3kg
b2Zmc2V0LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oOgorICAg
ICAgICAoUmVuZGVyQm94TW9kZWxPYmplY3QpOgorCisyMDEyLTA5LTA2ICBTaW1vbiBGcmFzZXIg
IDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCiAgICAgICAgIE1vdmUgUmVuZGVyVmlldzo6c2V0
Rml4ZWRQb3NpdGlvbmVkT2JqZWN0c05lZWRMYXlvdXQgdG8gRnJhbWVWaWV3CiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjAxNwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTNlYzM0
ODQ3ZDE2MjFmYWNhZmU0ZDE0NmJiODlmNmQzNzBhNzQ2MC4uYWMwM2FjM2ZiZjM4OGY0MDliZGFi
NmRlMTIwNzJlNjAwYmEzOWQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjYyLDYgKzI2Miw4IEBACiAJCTBGNTgwRkFGMTQ5
ODAwRDQwMEZCNUJEOCAvKiBBbmltYXRpb25VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTgwRkFFMTQ5ODAwRDQwMEZCNUJEOCAvKiBB
bmltYXRpb25VdGlsaXRpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjVCN0E1NDEwRjY1RDdBMDAzNzYzMDIgLyogUmVuZGVyRW1iZWRkZWRP
YmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY1QjdBNTIxMEY2NUQ3QTAwMzc2MzAyIC8qIFJlbmRlckVtYmVkZGVkT2JqZWN0LmNwcCAqLzsg
fTsKIAkJMEY1QjdBNTUxMEY2NUQ3QTAwMzc2MzAyIC8qIFJlbmRlckVtYmVkZGVkT2JqZWN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVCN0E1MzEw
RjY1RDdBMDAzNzYzMDIgLyogUmVuZGVyRW1iZWRkZWRPYmplY3QuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjYwNUFFQzE1Rjk0ODQ4MDA0REYw
QzAgLyogU2Nyb2xsaW5nQ29uc3RyYWludHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MDVBRUExNUY5NDg0ODAwNERGMEMwIC8qIFNjcm9sbGlu
Z0NvbnN0cmFpbnRzLmNwcCAqLzsgfTsKKwkJMEY2MDVBRUQxNUY5NDg0ODAwNERGMEMwIC8qIFNj
cm9sbGluZ0NvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjYwNUFFQjE1Rjk0ODQ4MDA0REYwQzAgLyogU2Nyb2xsaW5nQ29uc3RyYWlu
dHMuaCAqLzsgfTsKIAkJMEZDRjMzMjQwRjJCOTcxNTAwNEI2Nzk1IC8qIENvbG9yQ0cuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDRjMzMjMwRjJC
OTcxNTAwNEI2Nzk1IC8qIENvbG9yQ0cuY3BwICovOyB9OwogCQkwRkNGMzMyQzBGMkI5QTI1MDA0
QjY3OTUgLyogV2ViVGlsZWRMYXllci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGQ0YzMzI4MEYyQjlBMjUwMDRCNjc5NSAvKiBXZWJUaWxlZExheWVy
Lm1tICovOyB9OwogCQkwRkNGMzMyRDBGMkI5QTI1MDA0QjY3OTUgLyogV2ViVGlsZWRMYXllci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDRjMzMjkw
RjJCOUEyNTAwNEI2Nzk1IC8qIFdlYlRpbGVkTGF5ZXIuaCAqLzsgfTsKQEAgLTcyODEsNiArNzI4
Myw4IEBACiAJCTBGNTgwRkFFMTQ5ODAwRDQwMEZCNUJEOCAvKiBBbmltYXRpb25VdGlsaXRpZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQW5pbWF0aW9uVXRpbGl0aWVzLmg7
IHBhdGggPSBhbmltYXRpb24vQW5pbWF0aW9uVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNUI3QTUyMTBGNjVEN0EwMDM3NjMwMiAvKiBSZW5kZXJFbWJlZGRlZE9i
amVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJFbWJl
ZGRlZE9iamVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUI3QTUzMTBG
NjVEN0EwMDM3NjMwMiAvKiBSZW5kZXJFbWJlZGRlZE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZW5kZXJFbWJlZGRlZE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjYwNUFFQTE1Rjk0ODQ4MDA0REYwQzAgLyogU2Nyb2xsaW5nQ29uc3Ry
YWludHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsaW5n
Q29uc3RyYWludHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjYwNUFFQjE1
Rjk0ODQ4MDA0REYwQzAgLyogU2Nyb2xsaW5nQ29uc3RyYWludHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nQ29uc3RyYWludHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEZDRjMzMjMwRjJCOTcxNTAwNEI2Nzk1IC8qIENvbG9yQ0cuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29sb3JDRy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQ0YzMzI4MEYyQjlBMjUwMDRCNjc5NSAvKiBXZWJUaWxl
ZExheWVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViVGls
ZWRMYXllci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDRjMzMjkwRjJCOUEy
NTAwNEI2Nzk1IC8qIFdlYlRpbGVkTGF5ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViVGlsZWRMYXllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ1
NDIsNiArMTQ1NDYsOCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJ
CQkxQUY2MkVFMjE0REEyMkE3MDA0MTU1NkMgLyogbWFjICovLAorCQkJCTBGNjA1QUVBMTVGOTQ4
NDgwMDRERjBDMCAvKiBTY3JvbGxpbmdDb25zdHJhaW50cy5jcHAgKi8sCisJCQkJMEY2MDVBRUIx
NUY5NDg0ODAwNERGMEMwIC8qIFNjcm9sbGluZ0NvbnN0cmFpbnRzLmggKi8sCiAJCQkJMUFGNjJF
RTQxNERBMjJBNzAwNDE1NTZDIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCAqLywKIAkJCQkx
QUY2MkVFNTE0REEyMkE3MDA0MTU1NkMgLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCAqLywKIAkJ
CQkzODY2QUYzNzE0RjFDMTcxMDAyODNENjggLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3JOb25lLmNw
cCAqLywKQEAgLTI1NTAwLDYgKzI1NTA2LDcgQEAKIAkJCQlGQkQ2QUY4QTE1RUYyNURGMDA4Qjcx
MTAgLyogQmFzaWNTaGFwZUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkJENkFGOEMx
NUVGMjYwNDAwOEI3MTEwIC8qIEJhc2ljU2hhcGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk3NkYy
RTJFQzE1Rjc0Q0VGMDA1RkY2NjQgLyogUmVuZGVyRGlhbG9nLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRjYwNUFFRDE1Rjk0ODQ4MDA0REYwQzAgLyogU2Nyb2xsaW5nQ29uc3RyYWludHMuaCBpbiBI
ZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpAQCAtMjg1OTEsNiArMjg1OTgsNyBAQAogCQkJCTM3N0EzQTkwMTVFRkNFOUIw
MDU5RjVDNyAvKiBCaXRtYXBJbWFnZUNHLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRDhBNUYw
MTVGNTZGMkMwMDk4RDA3MSAvKiBUZXh0QnJlYWtJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3NkYyRTJFQjE1Rjc0Q0VGMDA1RkY2NjQgLyogUmVuZGVyRGlhbG9nLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTBGNjA1QUVDMTVGOTQ4NDgwMDRERjBDMCAvKiBTY3JvbGxpbmdDb25zdHJh
aW50cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNDdmZDFiNjAz
ZTU2MTc0MWU1YjViMWE3ZTEzOTljMWRhY2VkYjYzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuY3BwCkBAIC0wLDAg
KzEsMTAxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNj
cm9sbGluZ0NvbnN0cmFpbnRzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRmxvYXRQb2lu
dCBGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czo6bGF5ZXJQb3NpdGlvbkZvclZpZXdw
b3J0UmVjdChjb25zdCBGbG9hdFJlY3QmIHZpZXdwb3J0UmVjdCkgY29uc3QKK3sKKyAgICBGbG9h
dFNpemUgb2Zmc2V0OworICAgIAorICAgIGlmIChoYXNBbmNob3JFZGdlKEFuY2hvckVkZ2VMZWZ0
KSkKKyAgICAgICAgb2Zmc2V0LnNldFdpZHRoKHZpZXdwb3J0UmVjdC54KCkgLSBtX3ZpZXdQb3J0
UmVjdEF0TGFzdExheW91dC54KCkpOworICAgIGVsc2UgaWYgKGhhc0FuY2hvckVkZ2UoQW5jaG9y
RWRnZVJpZ2h0KSkKKyAgICAgICAgb2Zmc2V0LnNldFdpZHRoKHZpZXdwb3J0UmVjdC5tYXhYKCkg
LSBtX3ZpZXdQb3J0UmVjdEF0TGFzdExheW91dC5tYXhYKCkpOworCisgICAgaWYgKGhhc0FuY2hv
ckVkZ2UoQW5jaG9yRWRnZVRvcCkpCisgICAgICAgIG9mZnNldC5zZXRIZWlnaHQodmlld3BvcnRS
ZWN0LnkoKSAtIG1fdmlld1BvcnRSZWN0QXRMYXN0TGF5b3V0LnkoKSk7CisgICAgZWxzZSBpZiAo
aGFzQW5jaG9yRWRnZShBbmNob3JFZGdlQm90dG9tKSkKKyAgICAgICAgb2Zmc2V0LnNldEhlaWdo
dCh2aWV3cG9ydFJlY3QubWF4WSgpIC0gbV92aWV3UG9ydFJlY3RBdExhc3RMYXlvdXQubWF4WSgp
KTsKKworICAgIHJldHVybiBtX2xheWVyUG9zaXRpb25BdExhc3RMYXlvdXQgKyBvZmZzZXQ7Cit9
CisKK0Zsb2F0U2l6ZSBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM6OmNvbXB1dGVT
dGlja3lPZmZzZXQoY29uc3QgRmxvYXRSZWN0JiB2aWV3cG9ydFJlY3QpIGNvbnN0Cit7CisgICAg
RmxvYXRSZWN0IGJveFJlY3QgPSBtX2Fic29sdXRlU3RpY2t5Qm94UmVjdDsKKyAgICAKKyAgICBp
ZiAoaGFzQW5jaG9yRWRnZShBbmNob3JFZGdlUmlnaHQpKSB7CisgICAgICAgIGZsb2F0IHJpZ2h0
TGltaXQgPSB2aWV3cG9ydFJlY3QubWF4WCgpIC0gbV9yaWdodE9mZnNldDsKKyAgICAgICAgZmxv
YXQgcmlnaHREZWx0YSA9IHN0ZDo6bWluPGZsb2F0PigwLCByaWdodExpbWl0IC0gbV9hYnNvbHV0
ZVN0aWNreUJveFJlY3QubWF4WCgpKTsKKyAgICAgICAgZmxvYXQgYXZhaWxhYmxlU3BhY2UgPSBz
dGQ6Om1pbjxmbG9hdD4oMCwgbV9hYnNvbHV0ZUNvbnRhaW5pbmdCbG9ja1JlY3QueCgpIC0gbV9h
YnNvbHV0ZVN0aWNreUJveFJlY3QueCgpKTsKKyAgICAgICAgaWYgKHJpZ2h0RGVsdGEgPCBhdmFp
bGFibGVTcGFjZSkKKyAgICAgICAgICAgIHJpZ2h0RGVsdGEgPSBhdmFpbGFibGVTcGFjZTsKKwor
ICAgICAgICBib3hSZWN0Lm1vdmUocmlnaHREZWx0YSwgMCk7CisgICAgfQorCisgICAgaWYgKGhh
c0FuY2hvckVkZ2UoQW5jaG9yRWRnZUxlZnQpKSB7CisgICAgICAgIGZsb2F0IGxlZnRMaW1pdCA9
IHZpZXdwb3J0UmVjdC54KCkgKyBtX2xlZnRPZmZzZXQ7CisgICAgICAgIGZsb2F0IGxlZnREZWx0
YSA9IHN0ZDo6bWF4PGZsb2F0PigwLCBsZWZ0TGltaXQgLSBtX2Fic29sdXRlU3RpY2t5Qm94UmVj
dC54KCkpOworICAgICAgICBmbG9hdCBhdmFpbGFibGVTcGFjZSA9IHN0ZDo6bWF4PGZsb2F0Pigw
LCBtX2Fic29sdXRlQ29udGFpbmluZ0Jsb2NrUmVjdC5tYXhYKCkgLSBtX2Fic29sdXRlU3RpY2t5
Qm94UmVjdC5tYXhYKCkpOworICAgICAgICBpZiAobGVmdERlbHRhID4gYXZhaWxhYmxlU3BhY2Up
CisgICAgICAgICAgICBsZWZ0RGVsdGEgPSBhdmFpbGFibGVTcGFjZTsKKworICAgICAgICBib3hS
ZWN0Lm1vdmUobGVmdERlbHRhLCAwKTsKKyAgICB9CisgICAgCisgICAgaWYgKGhhc0FuY2hvckVk
Z2UoQW5jaG9yRWRnZUJvdHRvbSkpIHsKKyAgICAgICAgZmxvYXQgYm90dG9tTGltaXQgPSB2aWV3
cG9ydFJlY3QubWF4WSgpIC0gbV9ib3R0b21PZmZzZXQ7CisgICAgICAgIGZsb2F0IGJvdHRvbURl
bHRhID0gc3RkOjptaW48ZmxvYXQ+KDAsIGJvdHRvbUxpbWl0IC0gbV9hYnNvbHV0ZVN0aWNreUJv
eFJlY3QubWF4WSgpKTsKKyAgICAgICAgZmxvYXQgYXZhaWxhYmxlU3BhY2UgPSBzdGQ6Om1pbjxm
bG9hdD4oMCwgbV9hYnNvbHV0ZUNvbnRhaW5pbmdCbG9ja1JlY3QueSgpIC0gbV9hYnNvbHV0ZVN0
aWNreUJveFJlY3QueSgpKTsKKyAgICAgICAgaWYgKGJvdHRvbURlbHRhIDwgYXZhaWxhYmxlU3Bh
Y2UpCisgICAgICAgICAgICBib3R0b21EZWx0YSA9IGF2YWlsYWJsZVNwYWNlOworCisgICAgICAg
IGJveFJlY3QubW92ZSgwLCBib3R0b21EZWx0YSk7CisgICAgfQorCisgICAgaWYgKGhhc0FuY2hv
ckVkZ2UoQW5jaG9yRWRnZVRvcCkpIHsKKyAgICAgICAgZmxvYXQgdG9wTGltaXQgPSB2aWV3cG9y
dFJlY3QueSgpICsgbV90b3BPZmZzZXQ7CisgICAgICAgIGZsb2F0IHRvcERlbHRhID0gc3RkOjpt
YXg8ZmxvYXQ+KDAsIHRvcExpbWl0IC0gbV9hYnNvbHV0ZVN0aWNreUJveFJlY3QueSgpKTsKKyAg
ICAgICAgZmxvYXQgYXZhaWxhYmxlU3BhY2UgPSBzdGQ6Om1heDxmbG9hdD4oMCwgbV9hYnNvbHV0
ZUNvbnRhaW5pbmdCbG9ja1JlY3QubWF4WSgpIC0gbV9hYnNvbHV0ZVN0aWNreUJveFJlY3QubWF4
WSgpKTsKKyAgICAgICAgaWYgKHRvcERlbHRhID4gYXZhaWxhYmxlU3BhY2UpCisgICAgICAgICAg
ICB0b3BEZWx0YSA9IGF2YWlsYWJsZVNwYWNlOworCisgICAgICAgIGJveFJlY3QubW92ZSgwLCB0
b3BEZWx0YSk7CisgICAgfQorCisgICAgcmV0dXJuIGJveFJlY3QubG9jYXRpb24oKSAtIG1fYWJz
b2x1dGVTdGlja3lCb3hSZWN0LmxvY2F0aW9uKCk7Cit9CisKK0Zsb2F0UG9pbnQgU3RpY2t5UG9z
aXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOjpsYXllclBvc2l0aW9uRm9yVmlld3BvcnRSZWN0KGNv
bnN0IEZsb2F0UmVjdCYgdmlld3BvcnRSZWN0KSBjb25zdAoreworICAgIEZsb2F0U2l6ZSBvZmZz
ZXQgPSBjb21wdXRlU3RpY2t5T2Zmc2V0KHZpZXdwb3J0UmVjdCk7CisgICAgcmV0dXJuIG1fbGF5
ZXJQb3NpdGlvbkF0TGFzdExheW91dCArIG9mZnNldCAtIG1fc3RpY2t5T2Zmc2V0QXRMYXN0TGF5
b3V0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb25zdHJhaW50cy5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTIx
YmFmNjcwMTM1YjQ5ZjA3MjdmMTdjOGZjODdiNzllZjQ4MjZlCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuaApAQCAt
MCwwICsxLDEzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2Nyb2xsaW5nQ29uc3RyYWludHNf
aAorI2RlZmluZSBTY3JvbGxpbmdDb25zdHJhaW50c19oCisKKyNpbmNsdWRlICJGbG9hdFJlY3Qu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBWaWV3cG9ydENvbnN0cmFpbnRzIHsK
K3B1YmxpYzoKKyAgICBlbnVtIENvbnN0cmFpbnRUeXBlIHsKKyAgICAgICAgRml4ZWRQb3NpdGlv
bkNvbnN0YWludCwKKyAgICAgICAgU3RpY2t5UG9zaXRpb25Db25zdHJhaW50CisgICAgfTsKKwor
ICAgIGVudW0gQW5jaG9yRWRnZUZsYWdzIHsKKyAgICAgICAgQW5jaG9yRWRnZUxlZnQgPSAxIDw8
IDAsCisgICAgICAgIEFuY2hvckVkZ2VSaWdodCA9IDEgPDwgMSwKKyAgICAgICAgQW5jaG9yRWRn
ZVRvcCA9IDEgPDwgMiwKKyAgICAgICAgQW5jaG9yRWRnZUJvdHRvbSA9IDEgPDwgMworICAgIH07
CisgICAgdHlwZWRlZiB1bnNpZ25lZCBBbmNob3JFZGdlczsKKyAgICAKKyAgICBWaWV3cG9ydENv
bnN0cmFpbnRzKCkKKyAgICAgICAgOiBtX2FuY2hvckVkZ2VzKDApCisgICAgeyB9CisKKyAgICB2
aXJ0dWFsIH5WaWV3cG9ydENvbnN0cmFpbnRzKCkgeyB9CisgICAgCisgICAgdmlydHVhbCBDb25z
dHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSgpIGNvbnN0ID0gMDsKKyAgICAKKyAgICBBbmNob3JF
ZGdlcyBhbmNob3JFZGdlcygpIGNvbnN0IHsgcmV0dXJuIG1fYW5jaG9yRWRnZXM7IH0KKyAgICBi
b29sIGhhc0FuY2hvckVkZ2UoQW5jaG9yRWRnZUZsYWdzIGZsYWcpIGNvbnN0IHsgcmV0dXJuIG1f
YW5jaG9yRWRnZXMgJiBmbGFnOyB9CisgICAgdm9pZCBhZGRBbmNob3JFZGdlKEFuY2hvckVkZ2VG
bGFncyBlZGdlRmxhZykgeyBtX2FuY2hvckVkZ2VzIHw9IGVkZ2VGbGFnOyB9CisgICAgCisgICAg
RmxvYXRTaXplIGFsaWdubWVudE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxpZ25tZW50T2Zm
c2V0OyB9CisgICAgdm9pZCBzZXRBbGlnbm1lbnRPZmZzZXQoY29uc3QgRmxvYXRTaXplJiBvZmZz
ZXQpIHsgbV9hbGlnbm1lbnRPZmZzZXQgPSBvZmZzZXQ7IH0KKworcHJvdGVjdGVkOgorICAgIEZs
b2F0U2l6ZSBtX2FsaWdubWVudE9mZnNldDsKKyAgICBBbmNob3JFZGdlcyBtX2FuY2hvckVkZ2Vz
OworfTsKKworY2xhc3MgRml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMgOiBwdWJsaWMg
Vmlld3BvcnRDb25zdHJhaW50cyB7CitwdWJsaWM6CisgICAgdmlydHVhbCBDb25zdHJhaW50VHlw
ZSBjb25zdHJhaW50VHlwZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIEZpeGVkUG9zaXRpb25D
b25zdGFpbnQ7IH07CisKKyAgICBGbG9hdFBvaW50IGxheWVyUG9zaXRpb25Gb3JWaWV3cG9ydFJl
Y3QoY29uc3QgRmxvYXRSZWN0JiB2aWV3cG9ydFJlY3QpIGNvbnN0OworCisgICAgY29uc3QgRmxv
YXRSZWN0JiB2aWV3UG9ydFJlY3RBdExhc3RMYXlvdXQoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdQ
b3J0UmVjdEF0TGFzdExheW91dDsgfQorICAgIHZvaWQgc2V0Vmlld1BvcnRSZWN0QXRMYXN0TGF5
b3V0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgeyBtX3ZpZXdQb3J0UmVjdEF0TGFzdExheW91dCA9
IHJlY3Q7IH0KKworICAgIGNvbnN0IEZsb2F0UG9pbnQmIGxheWVyUG9zaXRpb25BdExhc3RMYXlv
dXQoKSBjb25zdCB7IHJldHVybiBtX2xheWVyUG9zaXRpb25BdExhc3RMYXlvdXQ7IH0KKyAgICB2
b2lkIHNldExheWVyUG9zaXRpb25BdExhc3RMYXlvdXQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQp
IHsgbV9sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0ID0gcG9pbnQ7IH0KKworcHJpdmF0ZToKKyAg
ICBGbG9hdFJlY3QgbV92aWV3UG9ydFJlY3RBdExhc3RMYXlvdXQ7CisgICAgRmxvYXRQb2ludCBt
X2xheWVyUG9zaXRpb25BdExhc3RMYXlvdXQ7Cit9OworCitjbGFzcyBTdGlja3lQb3NpdGlvblZp
ZXdwb3J0Q29uc3RyYWludHMgOiBwdWJsaWMgVmlld3BvcnRDb25zdHJhaW50cyB7CitwdWJsaWM6
CisgICAgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzKCkKKyAgICAgICAgOiBtX2xl
ZnRPZmZzZXQoMCkKKyAgICAgICAgLCBtX3JpZ2h0T2Zmc2V0KDApCisgICAgICAgICwgbV90b3BP
ZmZzZXQoMCkKKyAgICAgICAgLCBtX2JvdHRvbU9mZnNldCgwKQorICAgIHsgfQorCisgICAgdmly
dHVhbCBDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIFN0aWNreVBvc2l0aW9uQ29uc3RyYWludDsgfTsKKyAgICBGbG9hdFNpemUgY29tcHV0ZVN0
aWNreU9mZnNldChjb25zdCBGbG9hdFJlY3QmIHZpZXdwb3J0UmVjdCkgY29uc3Q7CisKKyAgICBj
b25zdCBGbG9hdFNpemUgc3RpY2t5T2Zmc2V0QXRMYXN0TGF5b3V0KCkgY29uc3QgeyByZXR1cm4g
bV9zdGlja3lPZmZzZXRBdExhc3RMYXlvdXQ7IH0KKyAgICB2b2lkIHNldFN0aWNreU9mZnNldEF0
TGFzdExheW91dChjb25zdCBGbG9hdFNpemUmIG9mZnNldCkgeyBtX3N0aWNreU9mZnNldEF0TGFz
dExheW91dCA9IG9mZnNldDsgfQorCisgICAgRmxvYXRQb2ludCBsYXllclBvc2l0aW9uRm9yVmll
d3BvcnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgdmlld3BvcnRSZWN0KSBjb25zdDsKKworICAgIGNv
bnN0IEZsb2F0UG9pbnQmIGxheWVyUG9zaXRpb25BdExhc3RMYXlvdXQoKSBjb25zdCB7IHJldHVy
biBtX2xheWVyUG9zaXRpb25BdExhc3RMYXlvdXQ7IH0KKyAgICB2b2lkIHNldExheWVyUG9zaXRp
b25BdExhc3RMYXlvdXQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQpIHsgbV9sYXllclBvc2l0aW9u
QXRMYXN0TGF5b3V0ID0gcG9pbnQ7IH0KKworICAgIGZsb2F0IGxlZnRPZmZzZXQoKSBjb25zdCB7
IHJldHVybiBtX2xlZnRPZmZzZXQ7IH0KKyAgICBmbG9hdCByaWdodE9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmlnaHRPZmZzZXQ7IH0KKyAgICBmbG9hdCB0b3BPZmZzZXQoKSBjb25zdCB7IHJl
dHVybiBtX3RvcE9mZnNldDsgfQorICAgIGZsb2F0IGJvdHRvbU9mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fYm90dG9tT2Zmc2V0OyB9CisKKyAgICB2b2lkIHNldExlZnRPZmZzZXQoZmxvYXQgb2Zm
c2V0KSB7IG1fbGVmdE9mZnNldCA9IG9mZnNldDsgfQorICAgIHZvaWQgc2V0UmlnaHRPZmZzZXQo
ZmxvYXQgb2Zmc2V0KSB7IG1fcmlnaHRPZmZzZXQgPSBvZmZzZXQ7IH0KKyAgICB2b2lkIHNldFRv
cE9mZnNldChmbG9hdCBvZmZzZXQpIHsgbV90b3BPZmZzZXQgPSBvZmZzZXQ7IH0KKyAgICB2b2lk
IHNldEJvdHRvbU9mZnNldChmbG9hdCBvZmZzZXQpIHsgbV9ib3R0b21PZmZzZXQgPSBvZmZzZXQ7
IH0KKworICAgIHZvaWQgc2V0QWJzb2x1dGVDb250YWluaW5nQmxvY2tSZWN0KGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCkgeyBtX2Fic29sdXRlQ29udGFpbmluZ0Jsb2NrUmVjdCA9IHJlY3Q7IH0KKyAg
ICB2b2lkIHNldEFic29sdXRlU3RpY2t5Qm94UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpIHsg
bV9hYnNvbHV0ZVN0aWNreUJveFJlY3QgPSByZWN0OyB9CisKK3ByaXZhdGU6CisgICAgZmxvYXQg
bV9sZWZ0T2Zmc2V0OworICAgIGZsb2F0IG1fcmlnaHRPZmZzZXQ7CisgICAgZmxvYXQgbV90b3BP
ZmZzZXQ7CisgICAgZmxvYXQgbV9ib3R0b21PZmZzZXQ7CisgICAgRmxvYXRSZWN0IG1fYWJzb2x1
dGVDb250YWluaW5nQmxvY2tSZWN0OworICAgIEZsb2F0UmVjdCBtX2Fic29sdXRlU3RpY2t5Qm94
UmVjdDsKKyAgICBGbG9hdFNpemUgbV9zdGlja3lPZmZzZXRBdExhc3RMYXlvdXQ7CisgICAgRmxv
YXRQb2ludCBtX2xheWVyUG9zaXRpb25BdExhc3RMYXlvdXQ7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBTY3JvbGxpbmdDb25zdHJhaW50c19oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAppbmRleCBlNWMx
YTA5YmM5OTkyMTQxNDg3MGE1YTVkZTcxMjdhNGRhMGRjZTE5Li44ZGVlZGRmMzhiNjQyNTA0Mjg3
N2EwZmM5MjdkYjBhZjU4ZmUyYWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJS
ZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRl
clZpZXcuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdDb25zdHJhaW50cy5oIgogI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtU3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvQ3Vy
cmVudFRpbWUuaD4KQEAgLTU3MywxMSArNTc0LDEwIEBAIExheW91dFBvaW50IFJlbmRlckJveE1v
ZGVsT2JqZWN0OjphZGp1c3RlZFBvc2l0aW9uUmVsYXRpdmVUb09mZnNldFBhcmVudChjb25zdCBM
CiAgICAgcmV0dXJuIHJlZmVyZW5jZVBvaW50OwogfQogCi1MYXlvdXRTaXplIFJlbmRlckJveE1v
ZGVsT2JqZWN0OjpzdGlja3lQb3NpdGlvbk9mZnNldCgpIGNvbnN0Cit2b2lkIFJlbmRlckJveE1v
ZGVsT2JqZWN0Ojpjb21wdXRlU3RpY2t5UG9zaXRpb25Db25zdHJhaW50cyhTdGlja3lQb3NpdGlv
blZpZXdwb3J0Q29uc3RyYWludHMmIGNvbnN0cmFpbnRzLCBjb25zdCBGbG9hdFJlY3QmIHZpZXdw
b3J0UmVjdCkgY29uc3QKIHsKICAgICBSZW5kZXJCbG9jayogY29udGFpbmluZ0Jsb2NrID0gdGhp
cy0+Y29udGFpbmluZ0Jsb2NrKCk7CiAKLSAgICBMYXlvdXRSZWN0IHZpZXdwb3J0UmVjdCA9IHZp
ZXcoKS0+ZnJhbWVWaWV3KCktPnZpc2libGVDb250ZW50UmVjdCgpOwogICAgIExheW91dFJlY3Qg
Y29udGFpbmVyQ29udGVudFJlY3QgPSBjb250YWluaW5nQmxvY2stPmNvbnRlbnRCb3hSZWN0KCk7
CiAKICAgICBMYXlvdXRVbml0IG1pbkxlZnRNYXJnaW4gPSBtaW5pbXVtVmFsdWVGb3JMZW5ndGgo
c3R5bGUoKS0+bWFyZ2luTGVmdCgpLCBjb250YWluaW5nQmxvY2stPmF2YWlsYWJsZUxvZ2ljYWxX
aWR0aCgpLCB2aWV3KCkpOwpAQCAtNTg4LDcgKzU4OCw3IEBAIExheW91dFNpemUgUmVuZGVyQm94
TW9kZWxPYmplY3Q6OnN0aWNreVBvc2l0aW9uT2Zmc2V0KCkgY29uc3QKICAgICAvLyBDb21wdXRl
IHRoZSBjb250YWluZXItcmVsYXRpdmUgYXJlYSB3aXRoaW4gd2hpY2ggdGhlIHN0aWNreSBlbGVt
ZW50IGlzIGFsbG93ZWQgdG8gbW92ZS4KICAgICBjb250YWluZXJDb250ZW50UmVjdC5tb3ZlKG1p
bkxlZnRNYXJnaW4sIG1pblRvcE1hcmdpbik7CiAgICAgY29udGFpbmVyQ29udGVudFJlY3QuY29u
dHJhY3QobWluTGVmdE1hcmdpbiArIG1pblJpZ2h0TWFyZ2luLCBtaW5Ub3BNYXJnaW4gKyBtaW5C
b3R0b21NYXJnaW4pOwotICAgIEZsb2F0UmVjdCBhYnNDb250YWluZXJDb250ZW50UmVjdCA9IGNv
bnRhaW5pbmdCbG9jay0+bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QoY29udGFpbmVyQ29u
dGVudFJlY3QpKS5ib3VuZGluZ0JveCgpOworICAgIGNvbnN0cmFpbnRzLnNldEFic29sdXRlQ29u
dGFpbmluZ0Jsb2NrUmVjdChjb250YWluaW5nQmxvY2stPmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxv
YXRSZWN0KGNvbnRhaW5lckNvbnRlbnRSZWN0KSkuYm91bmRpbmdCb3goKSk7CiAKICAgICBMYXlv
dXRSZWN0IHN0aWNreUJveFJlY3QgPSBmcmFtZVJlY3RGb3JTdGlja3lQb3NpdGlvbmluZygpOwog
ICAgIExheW91dFJlY3QgZmxpcHBlZFN0aWNreUJveFJlY3QgPSBzdGlja3lCb3hSZWN0OwpAQCAt
NTk5LDUzICs1OTksMzggQEAgTGF5b3V0U2l6ZSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c3RpY2t5
UG9zaXRpb25PZmZzZXQoKSBjb25zdAogICAgIEZsb2F0UmVjdCBhYnNDb250YWluZXJGcmFtZSA9
IGNvbnRhaW5pbmdCbG9jay0+bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3QoRmxvYXRQb2lu
dCgpLCBjb250YWluaW5nQmxvY2stPnNpemUoKSkpLmJvdW5kaW5nQm94KCk7CiAgICAgLy8gV2Ug
Y2FuJ3QgY2FsbCBsb2NhbFRvQWJzb2x1dGUgb24gfHRoaXN8IGJlY2F1c2UgdGhhdCB3aWxsIHJl
Y3VyLiBGSVhNRTogRm9yIG5vdywgYXNzdW1lIHRoYXQgfHRoaXN8IGlzIG5vdCB0cmFuc2Zvcm1l
ZC4KICAgICBGbG9hdFJlY3QgYWJzb2x1dGVTdGlja3lCb3hSZWN0KGFic0NvbnRhaW5lckZyYW1l
LmxvY2F0aW9uKCkgKyBzdGlja3lMb2NhdGlvbiwgZmxpcHBlZFN0aWNreUJveFJlY3Quc2l6ZSgp
KTsKKyAgICBjb25zdHJhaW50cy5zZXRBYnNvbHV0ZVN0aWNreUJveFJlY3QoYWJzb2x1dGVTdGlj
a3lCb3hSZWN0KTsKIAotICAgIEZsb2F0UG9pbnQgb3JpZ2luYWxMb2NhdGlvbiA9IGFic29sdXRl
U3RpY2t5Qm94UmVjdC5sb2NhdGlvbigpOworICAgIGlmICghc3R5bGUoKS0+bGVmdCgpLmlzQXV0
bygpKSB7CisgICAgICAgIGNvbnN0cmFpbnRzLnNldExlZnRPZmZzZXQodmFsdWVGb3JMZW5ndGgo
c3R5bGUoKS0+bGVmdCgpLCB2aWV3cG9ydFJlY3Qud2lkdGgoKSwgdmlldygpKSk7CisgICAgICAg
IGNvbnN0cmFpbnRzLmFkZEFuY2hvckVkZ2UoVmlld3BvcnRDb25zdHJhaW50czo6QW5jaG9yRWRn
ZUxlZnQpOworICAgIH0KIAotICAgIC8vIEhvcml6b250YWwgcG9zaXRpb24uCiAgICAgaWYgKCFz
dHlsZSgpLT5yaWdodCgpLmlzQXV0bygpKSB7Ci0gICAgICAgIExheW91dFVuaXQgcmlnaHRMaW1p
dCA9IHZpZXdwb3J0UmVjdC5tYXhYKCkgLSB2YWx1ZUZvckxlbmd0aChzdHlsZSgpLT5yaWdodCgp
LCB2aWV3cG9ydFJlY3Qud2lkdGgoKSwgdmlldygpKTsKLSAgICAgICAgTGF5b3V0VW5pdCByaWdo
dERlbHRhID0gbWluPGZsb2F0PigwLCByaWdodExpbWl0LnRvRmxvYXQoKSAtIGFic29sdXRlU3Rp
Y2t5Qm94UmVjdC5tYXhYKCkpOwotICAgICAgICBMYXlvdXRVbml0IGF2YWlsYWJsZVNwYWNlID0g
bWluPGZsb2F0PigwLCBhYnNDb250YWluZXJDb250ZW50UmVjdC54KCkgLSBhYnNvbHV0ZVN0aWNr
eUJveFJlY3QueCgpKTsKLSAgICAgICAgaWYgKHJpZ2h0RGVsdGEgPCBhdmFpbGFibGVTcGFjZSkK
LSAgICAgICAgICAgIHJpZ2h0RGVsdGEgPSBhdmFpbGFibGVTcGFjZTsKLQotICAgICAgICBhYnNv
bHV0ZVN0aWNreUJveFJlY3QubW92ZShyaWdodERlbHRhLCAwKTsKKyAgICAgICAgY29uc3RyYWlu
dHMuc2V0UmlnaHRPZmZzZXQodmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+cmlnaHQoKSwgdmlld3Bv
cnRSZWN0LndpZHRoKCksIHZpZXcoKSkpOworICAgICAgICBjb25zdHJhaW50cy5hZGRBbmNob3JF
ZGdlKFZpZXdwb3J0Q29uc3RyYWludHM6OkFuY2hvckVkZ2VSaWdodCk7CiAgICAgfQogCi0gICAg
aWYgKCFzdHlsZSgpLT5sZWZ0KCkuaXNBdXRvKCkpIHsKLSAgICAgICAgTGF5b3V0VW5pdCBsZWZ0
TGltaXQgPSB2aWV3cG9ydFJlY3QueCgpICsgdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+bGVmdCgp
LCB2aWV3cG9ydFJlY3Qud2lkdGgoKSwgdmlldygpKTsKLSAgICAgICAgTGF5b3V0VW5pdCBsZWZ0
RGVsdGEgPSBtYXg8ZmxvYXQ+KDAsIGxlZnRMaW1pdC50b0Zsb2F0KCkgLSBhYnNvbHV0ZVN0aWNr
eUJveFJlY3QueCgpKTsKLSAgICAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVTcGFjZSA9IG1heDxm
bG9hdD4oMCwgYWJzQ29udGFpbmVyQ29udGVudFJlY3QubWF4WCgpIC0gYWJzb2x1dGVTdGlja3lC
b3hSZWN0Lm1heFgoKSk7Ci0gICAgICAgIGlmIChsZWZ0RGVsdGEgPiBhdmFpbGFibGVTcGFjZSkK
LSAgICAgICAgICAgIGxlZnREZWx0YSA9IGF2YWlsYWJsZVNwYWNlOwotCi0gICAgICAgIGFic29s
dXRlU3RpY2t5Qm94UmVjdC5tb3ZlKGxlZnREZWx0YSwgMCk7CisgICAgaWYgKCFzdHlsZSgpLT50
b3AoKS5pc0F1dG8oKSkgeworICAgICAgICBjb25zdHJhaW50cy5zZXRUb3BPZmZzZXQodmFsdWVG
b3JMZW5ndGgoc3R5bGUoKS0+dG9wKCksIHZpZXdwb3J0UmVjdC5oZWlnaHQoKSwgdmlldygpKSk7
CisgICAgICAgIGNvbnN0cmFpbnRzLmFkZEFuY2hvckVkZ2UoVmlld3BvcnRDb25zdHJhaW50czo6
QW5jaG9yRWRnZVRvcCk7CiAgICAgfQogCi0gICAgLy8gVmVydGljYWwgcG9zaXRpb24uCiAgICAg
aWYgKCFzdHlsZSgpLT5ib3R0b20oKS5pc0F1dG8oKSkgewotICAgICAgICBMYXlvdXRVbml0IGJv
dHRvbUxpbWl0ID0gdmlld3BvcnRSZWN0Lm1heFkoKSAtIHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkt
PmJvdHRvbSgpLCB2aWV3cG9ydFJlY3QuaGVpZ2h0KCksIHZpZXcoKSk7Ci0gICAgICAgIExheW91
dFVuaXQgYm90dG9tRGVsdGEgPSBtaW48ZmxvYXQ+KDAsIGJvdHRvbUxpbWl0LnRvRmxvYXQoKSAt
IGFic29sdXRlU3RpY2t5Qm94UmVjdC5tYXhZKCkpOwotICAgICAgICBMYXlvdXRVbml0IGF2YWls
YWJsZVNwYWNlID0gbWluPGZsb2F0PigwLCBhYnNDb250YWluZXJDb250ZW50UmVjdC55KCkgLSBh
YnNvbHV0ZVN0aWNreUJveFJlY3QueSgpKTsKLSAgICAgICAgaWYgKGJvdHRvbURlbHRhIDwgYXZh
aWxhYmxlU3BhY2UpCi0gICAgICAgICAgICBib3R0b21EZWx0YSA9IGF2YWlsYWJsZVNwYWNlOwot
Ci0gICAgICAgIGFic29sdXRlU3RpY2t5Qm94UmVjdC5tb3ZlKDAsIGJvdHRvbURlbHRhKTsKKyAg
ICAgICAgY29uc3RyYWludHMuc2V0Qm90dG9tT2Zmc2V0KHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCkt
PmJvdHRvbSgpLCB2aWV3cG9ydFJlY3QuaGVpZ2h0KCksIHZpZXcoKSkpOworICAgICAgICBjb25z
dHJhaW50cy5hZGRBbmNob3JFZGdlKFZpZXdwb3J0Q29uc3RyYWludHM6OkFuY2hvckVkZ2VCb3R0
b20pOwogICAgIH0KK30KIAotICAgIGlmICghc3R5bGUoKS0+dG9wKCkuaXNBdXRvKCkpIHsKLSAg
ICAgICAgTGF5b3V0VW5pdCB0b3BMaW1pdCA9IHZpZXdwb3J0UmVjdC55KCkgKyB2YWx1ZUZvckxl
bmd0aChzdHlsZSgpLT50b3AoKSwgdmlld3BvcnRSZWN0LmhlaWdodCgpLCB2aWV3KCkpOwotICAg
ICAgICBMYXlvdXRVbml0IHRvcERlbHRhID0gbWF4PGZsb2F0PigwLCB0b3BMaW1pdC50b0Zsb2F0
KCkgLSBhYnNvbHV0ZVN0aWNreUJveFJlY3QueSgpKTsKLSAgICAgICAgTGF5b3V0VW5pdCBhdmFp
bGFibGVTcGFjZSA9IG1heDxmbG9hdD4oMCwgYWJzQ29udGFpbmVyQ29udGVudFJlY3QubWF4WSgp
IC0gYWJzb2x1dGVTdGlja3lCb3hSZWN0Lm1heFkoKSk7Ci0gICAgICAgIGlmICh0b3BEZWx0YSA+
IGF2YWlsYWJsZVNwYWNlKQotICAgICAgICAgICAgdG9wRGVsdGEgPSBhdmFpbGFibGVTcGFjZTsK
K0xheW91dFNpemUgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnN0aWNreVBvc2l0aW9uT2Zmc2V0KCkg
Y29uc3QKK3sKKyAgICBMYXlvdXRSZWN0IHZpZXdwb3J0UmVjdCA9IHZpZXcoKS0+ZnJhbWVWaWV3
KCktPnZpc2libGVDb250ZW50UmVjdCgpOwogCi0gICAgICAgIGFic29sdXRlU3RpY2t5Qm94UmVj
dC5tb3ZlKDAsIHRvcERlbHRhKTsKLSAgICB9CisgICAgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENv
bnN0cmFpbnRzIGNvbnN0cmFpbnRzOworICAgIGNvbXB1dGVTdGlja3lQb3NpdGlvbkNvbnN0cmFp
bnRzKGNvbnN0cmFpbnRzLCB2aWV3cG9ydFJlY3QpOwogICAgIAogICAgIC8vIFRoZSBzdGlja3kg
b2Zmc2V0IGlzIHBoeXNpY2FsLCBzbyB3ZSBjYW4ganVzdCByZXR1cm4gdGhlIGRlbHRhIGNvbXB1
dGVkIGluIGFic29sdXRlIGNvb3JkcyAodGhvdWdoIGl0IG1heSBiZSB3cm9uZyB3aXRoIHRyYW5z
Zm9ybXMpLgotICAgIHJldHVybiByb3VuZGVkTGF5b3V0U2l6ZShhYnNvbHV0ZVN0aWNreUJveFJl
Y3QubG9jYXRpb24oKSAtIG9yaWdpbmFsTG9jYXRpb24pOworICAgIHJldHVybiBMYXlvdXRTaXpl
KGNvbnN0cmFpbnRzLmNvbXB1dGVTdGlja3lPZmZzZXQodmlld3BvcnRSZWN0KSk7CiB9CiAKIExh
eW91dFNpemUgUmVuZGVyQm94TW9kZWxPYmplY3Q6Om9mZnNldEZvckluRmxvd1Bvc2l0aW9uKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2Rl
bE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmgKaW5kZXggZmE2MDZhZWJhM2RmMTJhMzRkOTIyY2VjMmYxYTk3ZTJjZDYyZDNjYi4uNmVlMzU0
YzlhYzg5MmRmODk3YzlhZWNiMTMzZGUwYjExOWZkYWJhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKQEAgLTUxLDYgKzUxLDcgQEAgZW51
bSBDb250ZW50Q2hhbmdlVHlwZSB7CiB9OwogCiBjbGFzcyBLZXlmcmFtZUxpc3Q7CitjbGFzcyBT
dGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM7CiAKIC8vIFRoaXMgY2xhc3MgaXMgdGhl
IGJhc2UgZm9yIGFsbCBvYmplY3RzIHRoYXQgYWRoZXJlIHRvIHRoZSBDU1MgYm94IG1vZGVsIGFz
IGRlc2NyaWJlZAogLy8gYXQgaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvYm94Lmh0bWwKQEAg
LTYzLDYgKzY0LDcgQEAgcHVibGljOgogICAgIExheW91dFNpemUgcmVsYXRpdmVQb3NpdGlvbk9m
ZnNldCgpIGNvbnN0OwogICAgIExheW91dFNpemUgcmVsYXRpdmVQb3NpdGlvbkxvZ2ljYWxPZmZz
ZXQoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8g
cmVsYXRpdmVQb3NpdGlvbk9mZnNldCgpIDogcmVsYXRpdmVQb3NpdGlvbk9mZnNldCgpLnRyYW5z
cG9zZWRTaXplKCk7IH0KIAorICAgIHZvaWQgY29tcHV0ZVN0aWNreVBvc2l0aW9uQ29uc3RyYWlu
dHMoU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzJiwgY29uc3QgRmxvYXRSZWN0JiB2
aWV3cG9ydFJlY3QpIGNvbnN0OwogICAgIExheW91dFNpemUgc3RpY2t5UG9zaXRpb25PZmZzZXQo
KSBjb25zdDsKICAgICBMYXlvdXRTaXplIHN0aWNreVBvc2l0aW9uTG9naWNhbE9mZnNldCgpIGNv
bnN0IHsgcmV0dXJuIHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgPyBzdGlja3lQ
b3NpdGlvbk9mZnNldCgpIDogc3RpY2t5UG9zaXRpb25PZmZzZXQoKS50cmFuc3Bvc2VkU2l6ZSgp
OyB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162610</attachid>
            <date>2012-09-06 16:03:53 -0700</date>
            <delta_ts>2012-09-06 16:06:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96026-20120906160336.patch</filename>
            <type>text/plain</type>
            <size>27937</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTAzNjAwZWE3MGM1YzBl
NTdkYWYzMTM1M2Q5ODQ0YWQxNDFmMTMyMy4uZGIzMWY4MjJlNWQzYjQyZGQ2N2U5ZjZjNjAzN2Zh
NjYyMjMyOGJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY4IEBACiAyMDEyLTA5LTA2ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCisgICAgICAgIFBhcmNlbCB1cCBs
b2dpYyByZWxhdGVkIHRvIHN0aWNreSBwb3NpdGlvbmluZyBpbnRvIGEgQ29uc3RyYWludHMgY2xh
c3MgdGhhdCB3aWxsIGxhdGVyIGJlIHVzZWQgZm9yIHRocmVhZGVkIHNjcm9sbGluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYwMjYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMYXkgc29tZSBncm91bmR3
b3JrIGZvciB0aHJlYWRlZCBzY3JvbGxpbmcgd2l0aCBmaXhlZCBwb3NpdGlvbiBhbmQgc3RpY2t5
CisgICAgICAgIHBvc2l0aW9uIG9iamVjdHMsIGJ5IHBhY2thZ2luZyB1cCBsb2dpYyByZWxhdGVk
IHRvIGhvdyB0byByZXBvc2l0aW9uCisgICAgICAgIGZpeGVkIGFuZCBzdGlja3kgdGhpbmdzIG9u
IHZpZXdwb3J0IGNoYW5nZXMgaW50byAiY29uc3RyYWludHMiIGNsYXNzZXMuCisgICAgICAgIAor
ICAgICAgICBTY3JvbGxpbmdDb25zdHJhaW50cyBjb250YWlucyBhICdWaWV3cG9ydENvbnN0cmFp
bnRzJyBiYXNlIGNsYXNzCisgICAgICAgIHRoYXQgaXMgc3ViY2xhc3NlZCBmb3Igc3RpY2t5IHBv
c2l0aW9uLiBUaGVzZSBjbGFzc2VzIHN0b3JlCisgICAgICAgIGRhdGEgYWJvdXQgdGhlIGNvbnN0
cmFpbnRzIHRoYXQgZ292ZXJuIHRoZSBwb3NpdGlvbiBvZiBhbiBvYmplY3Qgb3V0c2lkZQorICAg
ICAgICBvZiB0aGUgcmVuZGVyIHRyZWUsIGFuZCBrbm93IGhvdyB0byBjb21wdXRlIGEgbmV3IHBv
c2l0aW9uIHdoZW4gdGhlCisgICAgICAgIHZpZXdwb3J0IGNoYW5nZXMgdXNpbmcgb25seSBkYXRh
IGluIHRoZSBjbGFzcy4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBSZW5k
ZXJCb3hNb2RlbE9iamVjdCB0byB1c2UgdGhlIFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJh
aW50cworICAgICAgICBjbGFzcyBmb3IgY29tcHV0aW5nIHN0aWNrIG9mZnNldHMgYXQgbGF5b3V0
IHRpbWUuIEluIHRoZSBmdXR1cmUsIHdlJ2xsIGhhdmUKKyAgICAgICAgdGhlIHNjcm9sbGluZyB0
cmVlIHN0b3JlIGNvcGllcyBvZiB0aGUgY29uc3RyYWludCBkYXRhIGZvciB0aHJlYWRlZCBzY3Jv
bGxpbmcuCisgICAgICAgIAorICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgU2Nyb2xsaW5n
Q29uc3RyYWludHMuKiB0byB0aGUgYnVpbGQuCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bTogRGl0dG8KKyAgICAgICAgKiBUYXJnZXQucHJpOiBEaXR0bworICAgICAgICAqIFdlYkNvcmUu
Z3lwaTogRGl0dG8KKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogRGl0
dG8KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvCisg
ICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czo6Y29t
cHV0ZVN0aWNreU9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTdGlja3lQb3NpdGlvblZpZXdw
b3J0Q29uc3RyYWludHM6OmxheWVyUG9zaXRpb25Gb3JWaWV3cG9ydFJlY3QpOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6Vmlld3BvcnRDb25zdHJhaW50czo6Vmlld3BvcnRDb25zdHJhaW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbnN0cmFpbnRzOjp+Vmlld3BvcnRDb25zdHJhaW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbnN0cmFpbnRzOjphbmNob3JFZGdlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbnN0cmFpbnRzOjpoYXNBbmNob3JFZGdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0Q29uc3RyYWludHM6OmFkZEFuY2hvckVkZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25zdHJhaW50czo6YWxpZ25tZW50T2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0Q29uc3RyYWludHM6OnNldEFsaWdubWVudE9mZnNldCk6
CisgICAgICAgIChTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMpOgorICAgICAgICAo
V2ViQ29yZTo6U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOjpTdGlja3lQb3NpdGlv
blZpZXdwb3J0Q29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6U3RpY2t5UG9zaXRpb25W
aWV3cG9ydENvbnN0cmFpbnRzOjpzdGlja3lPZmZzZXRBdExhc3RMYXlvdXQpOgorICAgICAgICAo
V2ViQ29yZTo6U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOjpzZXRTdGlja3lPZmZz
ZXRBdExhc3RMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6U3RpY2t5UG9zaXRpb25WaWV3cG9y
dENvbnN0cmFpbnRzOjpsYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KToKKyAgICAgICAgKFdlYkNv
cmU6OlN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czo6c2V0TGF5ZXJQb3NpdGlvbkF0
TGFzdExheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29u
c3RyYWludHM6OmxlZnRPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U3RpY2t5UG9zaXRpb25W
aWV3cG9ydENvbnN0cmFpbnRzOjpyaWdodE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTdGlj
a3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM6OnRvcE9mZnNldCk6CisgICAgICAgIChXZWJD
b3JlOjpTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM6OmJvdHRvbU9mZnNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM6OnNldExl
ZnRPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0
cmFpbnRzOjpzZXRSaWdodE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTdGlja3lQb3NpdGlv
blZpZXdwb3J0Q29uc3RyYWludHM6OnNldFRvcE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpT
dGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM6OnNldEJvdHRvbU9mZnNldCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM6OnNldEFic29s
dXRlQ29udGFpbmluZ0Jsb2NrUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTdGlja3lQb3NpdGlv
blZpZXdwb3J0Q29uc3RyYWludHM6OnNldEFic29sdXRlU3RpY2t5Qm94UmVjdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlU3RpY2t5UG9zaXRpb25Db25zdHJhaW50cyk6
IEZpbGwgb3V0CisgICAgICAgIGRhdGEgaW4gdGhlIHN1cHBsaWVkIFN0aWNreVBvc2l0aW9uVmll
d3BvcnRDb25zdHJhaW50cyBpbnN0YW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1v
ZGVsT2JqZWN0OjpzdGlja3lQb3NpdGlvbk9mZnNldCk6IENyZWF0ZSBhCisgICAgICAgIFN0aWNr
eVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cyBvYmplY3Qgb24gdGhlIHN0YWNrIGFuZCB1c2Ug
aXQgdG8KKyAgICAgICAgY29tcHV0ZSB0aGUgc3RpY2t5IG9mZnNldC4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKFJlbmRlckJveE1vZGVsT2Jq
ZWN0KToKKworMjAxMi0wOS0wNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KKwogICAgICAgICBNb3ZlIFJlbmRlclZpZXc6OnNldEZpeGVkUG9zaXRpb25lZE9iamVjdHNO
ZWVkTGF5b3V0IHRvIEZyYW1lVmlldwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTYwMTcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAzNTVjNmNlZWYw
NGUwMmFhYjY0Y2IwN2I1YmExNTIwNWU5ODdlN2Y4Li44ZWVkYmE0YmFiZmZlMzBiODY3MTVmZmI4
ZmJkNjcwMWYyN2UwYjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTczMSw2ICsxNzMxLDgg
QEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHBhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0
aW9uLmNwcAogICAgIHBhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcAogCisgICAg
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuY3BwCisgICAgcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuY3BwCiAgICAgcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuY3BwCiAgICAgcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JO
b25lLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAyZGYzNWVkNGJhOWYx
ZDI3YjU2YTE2YWUzMzk5MmM5YmVjZTNhOWE5Li5lZmEwMGI3ZTFiNDM4YzZjN2Y2NTU4YTI4ZjQ4
Yzc3MTJhZjRhOTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQwMzAsNiAr
NDAzMCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9Qcmlu
dENvbnRleHQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9TY3JlZW4uY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wYWdlL1NjcmVlbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdDb25zdHJhaW50cy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ0NvbnN0cmFpbnRzLmggXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOb25lLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA1OWE1MjI1
YzIwYjE2YTcxODA2YzdjMzE0NTQ2YjczMmY1OWNmMjM0Li40OGYyZmEwNTcxMDYyYjIyMjZiYjhi
ZTlhZTExMmRhMjE5ZmU5N2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTg5Myw2ICs4OTMsNyBAQCBTT1VS
Q0VTICs9IFwKICAgICBwYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcCBcCiAgICAgcGFnZS9Qcmlu
dENvbnRleHQuY3BwIFwKICAgICBwYWdlL1NjcmVlbi5jcHAgXAorICAgIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ0NvbnN0cmFpbnRzLmNwcCBcCiAgICAgcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuY3BwIFwKICAgICBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRv
ck5vbmUuY3BwIFwKICAgICBwYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
aW5kZXggNTNlMWQwNDM2YjBmODAyYjgwNDMwZTY5MWRmZjhmNWFhMTBhYzc0NS4uYzgxMTZkYjQ5
ZTA3ZjFlZWU2ZGU4MTU2Y2Q3MmU1N2I5NDU0OTU2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzIy
MCw2ICszMjIwLDggQEAKICAgICAgICAgICAgICdwYWdlL21hYy9QYWdlTWFjLmNwcCcsCiAgICAg
ICAgICAgICAncGFnZS9xdC9EcmFnQ29udHJvbGxlclF0LmNwcCcsCiAgICAgICAgICAgICAncGFn
ZS9xdC9FdmVudEhhbmRsZXJRdC5jcHAnLAorICAgICAgICAgICAgJ3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ0NvbnN0cmFpbnRzLmNwcCcsCisgICAgICAgICAgICAncGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nQ29uc3RyYWludHMuaCcsCiAgICAgICAgICAgICAncGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuY3BwJywKICAgICAgICAgICAgICdwYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdDb29yZGluYXRvci5oJywKICAgICAgICAgICAgICdwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
aHJlYWQuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKaW5kZXggMWZmN2MyN2I4MjM4NjQ1OTZlZDMwYTE2NDA1NzQ2NDZmOTViMGQzYi4uOGNmMDhj
Yzg2ZTA5NDM5Y2Q4MmI3MTU3YmZlMjQwMDJjMzdhMTY2NSAxMDA3NTUKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI3MjgzLDYgKzI3MjgzLDE0IEBACiAJ
CQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2Vcc2Ny
b2xsaW5nXFNjcm9sbGluZ0NvbnN0cmFpbnRzLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8
RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxzY3JvbGxpbmdcU2Nyb2xsaW5nQ29uc3Ry
YWludHMuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGFnZVxzY3JvbGxpbmdcU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIgogCQkJCT4KIAkJCTwv
RmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA1M2VjMzQ4NDdkMTYyMWZhY2FmZTRkMTQ2YmI4OWY2ZDM3MGE3NDYwLi5hYzAz
YWMzZmJmMzg4ZjQwOWJkYWI2ZGUxMjA3MmU2MDBiYTM5ZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNjIsNiArMjYyLDgg
QEAKIAkJMEY1ODBGQUYxNDk4MDBENDAwRkI1QkQ4IC8qIEFuaW1hdGlvblV0aWxpdGllcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1ODBGQUUxNDk4
MDBENDAwRkI1QkQ4IC8qIEFuaW1hdGlvblV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNUI3QTU0MTBGNjVEN0EwMDM3NjMwMiAv
KiBSZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjVCN0E1MjEwRjY1RDdBMDAzNzYzMDIgLyogUmVuZGVyRW1iZWRk
ZWRPYmplY3QuY3BwICovOyB9OwogCQkwRjVCN0E1NTEwRjY1RDdBMDAzNzYzMDIgLyogUmVuZGVy
RW1iZWRkZWRPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNUI3QTUzMTBGNjVEN0EwMDM3NjMwMiAvKiBSZW5kZXJFbWJlZGRlZE9iamVjdC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNjA1
QUVDMTVGOTQ4NDgwMDRERjBDMCAvKiBTY3JvbGxpbmdDb25zdHJhaW50cy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYwNUFFQTE1Rjk0ODQ4MDA0
REYwQzAgLyogU2Nyb2xsaW5nQ29uc3RyYWludHMuY3BwICovOyB9OworCQkwRjYwNUFFRDE1Rjk0
ODQ4MDA0REYwQzAgLyogU2Nyb2xsaW5nQ29uc3RyYWludHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjA1QUVCMTVGOTQ4NDgwMDRERjBDMCAvKiBT
Y3JvbGxpbmdDb25zdHJhaW50cy5oICovOyB9OwogCQkwRkNGMzMyNDBGMkI5NzE1MDA0QjY3OTUg
LyogQ29sb3JDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkNGMzMyMzBGMkI5NzE1MDA0QjY3OTUgLyogQ29sb3JDRy5jcHAgKi87IH07CiAJCTBG
Q0YzMzJDMEYyQjlBMjUwMDRCNjc5NSAvKiBXZWJUaWxlZExheWVyLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDRjMzMjgwRjJCOUEyNTAwNEI2Nzk1
IC8qIFdlYlRpbGVkTGF5ZXIubW0gKi87IH07CiAJCTBGQ0YzMzJEMEYyQjlBMjUwMDRCNjc5NSAv
KiBXZWJUaWxlZExheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRkNGMzMyOTBGMkI5QTI1MDA0QjY3OTUgLyogV2ViVGlsZWRMYXllci5oICovOyB9
OwpAQCAtNzI4MSw2ICs3MjgzLDggQEAKIAkJMEY1ODBGQUUxNDk4MDBENDAwRkI1QkQ4IC8qIEFu
aW1hdGlvblV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBbmlt
YXRpb25VdGlsaXRpZXMuaDsgcGF0aCA9IGFuaW1hdGlvbi9BbmltYXRpb25VdGlsaXRpZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1QjdBNTIxMEY2NUQ3QTAwMzc2MzAyIC8q
IFJlbmRlckVtYmVkZGVkT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlbmRlckVtYmVkZGVkT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY1QjdBNTMxMEY2NUQ3QTAwMzc2MzAyIC8qIFJlbmRlckVtYmVkZGVkT2JqZWN0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckVtYmVkZGVkT2JqZWN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNjA1QUVBMTVGOTQ4NDgwMDRERjBDMCAv
KiBTY3JvbGxpbmdDb25zdHJhaW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTY3JvbGxpbmdDb25zdHJhaW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGNjA1QUVCMTVGOTQ4NDgwMDRERjBDMCAvKiBTY3JvbGxpbmdDb25zdHJhaW50cy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdDb25zdHJhaW50cy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkNGMzMyMzBGMkI5NzE1MDA0QjY3OTUg
LyogQ29sb3JDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb2xv
ckNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDRjMzMjgwRjJCOUEyNTAw
NEI2Nzk1IC8qIFdlYlRpbGVkTGF5ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJUaWxlZExheWVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkNGMzMyOTBGMkI5QTI1MDA0QjY3OTUgLyogV2ViVGlsZWRMYXllci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJUaWxlZExheWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNDU0Miw2ICsxNDU0Niw4IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAogCQkJCTFBRjYyRUUyMTREQTIyQTcwMDQxNTU2QyAvKiBtYWMgKi8sCisJ
CQkJMEY2MDVBRUExNUY5NDg0ODAwNERGMEMwIC8qIFNjcm9sbGluZ0NvbnN0cmFpbnRzLmNwcCAq
LywKKwkJCQkwRjYwNUFFQjE1Rjk0ODQ4MDA0REYwQzAgLyogU2Nyb2xsaW5nQ29uc3RyYWludHMu
aCAqLywKIAkJCQkxQUY2MkVFNDE0REEyMkE3MDA0MTU1NkMgLyogU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuY3BwICovLAogCQkJCTFBRjYyRUU1MTREQTIyQTcwMDQxNTU2QyAvKiBTY3JvbGxpbmdDb29y
ZGluYXRvci5oICovLAogCQkJCTM4NjZBRjM3MTRGMUMxNzEwMDI4M0Q2OCAvKiBTY3JvbGxpbmdD
b29yZGluYXRvck5vbmUuY3BwICovLApAQCAtMjU1MDAsNiArMjU1MDYsNyBAQAogCQkJCUZCRDZB
RjhBMTVFRjI1REYwMDhCNzExMCAvKiBCYXNpY1NoYXBlRnVuY3Rpb25zLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGQkQ2QUY4QzE1RUYyNjA0MDA4QjcxMTAgLyogQmFzaWNTaGFwZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTc2RjJFMkVDMTVGNzRDRUYwMDVGRjY2NCAvKiBSZW5kZXJEaWFsb2cuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGNjA1QUVEMTVGOTQ4NDgwMDRERjBDMCAvKiBTY3JvbGxpbmdD
b25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yODU5MSw2ICsyODU5OCw3IEBACiAJCQkJ
Mzc3QTNBOTAxNUVGQ0U5QjAwNTlGNUM3IC8qIEJpdG1hcEltYWdlQ0cuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQkNEOEE1RjAxNUY1NkYyQzAwOThEMDcxIC8qIFRleHRCcmVha0l0ZXJhdG9yLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTc2RjJFMkVCMTVGNzRDRUYwMDVGRjY2NCAvKiBSZW5kZXJE
aWFsb2cuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY2MDVBRUMxNUY5NDg0ODAwNERGMEMwIC8q
IFNjcm9sbGluZ0NvbnN0cmFpbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmI5NGVlNjI3OTJlNWNjYmFlZTk2MzhhOGYzY2IzZTI1MDhmMWVmMmYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb25zdHJh
aW50cy5jcHAKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJTY3JvbGxpbmdDb25zdHJhaW50cy5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0Zsb2F0U2l6ZSBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM6OmNvbXB1
dGVTdGlja3lPZmZzZXQoY29uc3QgRmxvYXRSZWN0JiB2aWV3cG9ydFJlY3QpIGNvbnN0Cit7Cisg
ICAgRmxvYXRSZWN0IGJveFJlY3QgPSBtX2Fic29sdXRlU3RpY2t5Qm94UmVjdDsKKyAgICAKKyAg
ICBpZiAoaGFzQW5jaG9yRWRnZShBbmNob3JFZGdlUmlnaHQpKSB7CisgICAgICAgIGZsb2F0IHJp
Z2h0TGltaXQgPSB2aWV3cG9ydFJlY3QubWF4WCgpIC0gbV9yaWdodE9mZnNldDsKKyAgICAgICAg
ZmxvYXQgcmlnaHREZWx0YSA9IHN0ZDo6bWluPGZsb2F0PigwLCByaWdodExpbWl0IC0gbV9hYnNv
bHV0ZVN0aWNreUJveFJlY3QubWF4WCgpKTsKKyAgICAgICAgZmxvYXQgYXZhaWxhYmxlU3BhY2Ug
PSBzdGQ6Om1pbjxmbG9hdD4oMCwgbV9hYnNvbHV0ZUNvbnRhaW5pbmdCbG9ja1JlY3QueCgpIC0g
bV9hYnNvbHV0ZVN0aWNreUJveFJlY3QueCgpKTsKKyAgICAgICAgaWYgKHJpZ2h0RGVsdGEgPCBh
dmFpbGFibGVTcGFjZSkKKyAgICAgICAgICAgIHJpZ2h0RGVsdGEgPSBhdmFpbGFibGVTcGFjZTsK
KworICAgICAgICBib3hSZWN0Lm1vdmUocmlnaHREZWx0YSwgMCk7CisgICAgfQorCisgICAgaWYg
KGhhc0FuY2hvckVkZ2UoQW5jaG9yRWRnZUxlZnQpKSB7CisgICAgICAgIGZsb2F0IGxlZnRMaW1p
dCA9IHZpZXdwb3J0UmVjdC54KCkgKyBtX2xlZnRPZmZzZXQ7CisgICAgICAgIGZsb2F0IGxlZnRE
ZWx0YSA9IHN0ZDo6bWF4PGZsb2F0PigwLCBsZWZ0TGltaXQgLSBtX2Fic29sdXRlU3RpY2t5Qm94
UmVjdC54KCkpOworICAgICAgICBmbG9hdCBhdmFpbGFibGVTcGFjZSA9IHN0ZDo6bWF4PGZsb2F0
PigwLCBtX2Fic29sdXRlQ29udGFpbmluZ0Jsb2NrUmVjdC5tYXhYKCkgLSBtX2Fic29sdXRlU3Rp
Y2t5Qm94UmVjdC5tYXhYKCkpOworICAgICAgICBpZiAobGVmdERlbHRhID4gYXZhaWxhYmxlU3Bh
Y2UpCisgICAgICAgICAgICBsZWZ0RGVsdGEgPSBhdmFpbGFibGVTcGFjZTsKKworICAgICAgICBi
b3hSZWN0Lm1vdmUobGVmdERlbHRhLCAwKTsKKyAgICB9CisgICAgCisgICAgaWYgKGhhc0FuY2hv
ckVkZ2UoQW5jaG9yRWRnZUJvdHRvbSkpIHsKKyAgICAgICAgZmxvYXQgYm90dG9tTGltaXQgPSB2
aWV3cG9ydFJlY3QubWF4WSgpIC0gbV9ib3R0b21PZmZzZXQ7CisgICAgICAgIGZsb2F0IGJvdHRv
bURlbHRhID0gc3RkOjptaW48ZmxvYXQ+KDAsIGJvdHRvbUxpbWl0IC0gbV9hYnNvbHV0ZVN0aWNr
eUJveFJlY3QubWF4WSgpKTsKKyAgICAgICAgZmxvYXQgYXZhaWxhYmxlU3BhY2UgPSBzdGQ6Om1p
bjxmbG9hdD4oMCwgbV9hYnNvbHV0ZUNvbnRhaW5pbmdCbG9ja1JlY3QueSgpIC0gbV9hYnNvbHV0
ZVN0aWNreUJveFJlY3QueSgpKTsKKyAgICAgICAgaWYgKGJvdHRvbURlbHRhIDwgYXZhaWxhYmxl
U3BhY2UpCisgICAgICAgICAgICBib3R0b21EZWx0YSA9IGF2YWlsYWJsZVNwYWNlOworCisgICAg
ICAgIGJveFJlY3QubW92ZSgwLCBib3R0b21EZWx0YSk7CisgICAgfQorCisgICAgaWYgKGhhc0Fu
Y2hvckVkZ2UoQW5jaG9yRWRnZVRvcCkpIHsKKyAgICAgICAgZmxvYXQgdG9wTGltaXQgPSB2aWV3
cG9ydFJlY3QueSgpICsgbV90b3BPZmZzZXQ7CisgICAgICAgIGZsb2F0IHRvcERlbHRhID0gc3Rk
OjptYXg8ZmxvYXQ+KDAsIHRvcExpbWl0IC0gbV9hYnNvbHV0ZVN0aWNreUJveFJlY3QueSgpKTsK
KyAgICAgICAgZmxvYXQgYXZhaWxhYmxlU3BhY2UgPSBzdGQ6Om1heDxmbG9hdD4oMCwgbV9hYnNv
bHV0ZUNvbnRhaW5pbmdCbG9ja1JlY3QubWF4WSgpIC0gbV9hYnNvbHV0ZVN0aWNreUJveFJlY3Qu
bWF4WSgpKTsKKyAgICAgICAgaWYgKHRvcERlbHRhID4gYXZhaWxhYmxlU3BhY2UpCisgICAgICAg
ICAgICB0b3BEZWx0YSA9IGF2YWlsYWJsZVNwYWNlOworCisgICAgICAgIGJveFJlY3QubW92ZSgw
LCB0b3BEZWx0YSk7CisgICAgfQorCisgICAgcmV0dXJuIGJveFJlY3QubG9jYXRpb24oKSAtIG1f
YWJzb2x1dGVTdGlja3lCb3hSZWN0LmxvY2F0aW9uKCk7Cit9CisKK0Zsb2F0UG9pbnQgU3RpY2t5
UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOjpsYXllclBvc2l0aW9uRm9yVmlld3BvcnRSZWN0
KGNvbnN0IEZsb2F0UmVjdCYgdmlld3BvcnRSZWN0KSBjb25zdAoreworICAgIEZsb2F0U2l6ZSBv
ZmZzZXQgPSBjb21wdXRlU3RpY2t5T2Zmc2V0KHZpZXdwb3J0UmVjdCk7CisgICAgcmV0dXJuIG1f
bGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCArIG9mZnNldCAtIG1fc3RpY2t5T2Zmc2V0QXRMYXN0
TGF5b3V0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb25zdHJhaW50cy5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
OGJlNDA4Yzg5ZGFkODdjZWVmOTA5NTQxNDExMTNmOWVlMjZiZDg0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuaApA
QCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2Nyb2xsaW5nQ29uc3RyYWlu
dHNfaAorI2RlZmluZSBTY3JvbGxpbmdDb25zdHJhaW50c19oCisKKyNpbmNsdWRlICJGbG9hdFJl
Y3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBWaWV3cG9ydENvbnN0cmFpbnRzIGNs
YXNzZXMgZW5jYXBzdWxhdGUgZGF0YSBhbmQgbG9naWMgcmVxdWlyZWQgdG8gcmVwb3NpdGlvbiBl
bGVtZW50cyB3aG9zZSBsYXlvdXQKKy8vIGRlcGVuZHMgb24gdGhlIHZpZXdwb3J0IHJlY3QgKHBv
c2l0aW9ucyBmaXhlZCBhbmQgc3RpY2t5KSwgd2hlbiBzY3JvbGxpbmcgYW5kIHpvb21pbmcuCitj
bGFzcyBWaWV3cG9ydENvbnN0cmFpbnRzIHsKK3B1YmxpYzoKKyAgICBlbnVtIENvbnN0cmFpbnRU
eXBlIHsKKyAgICAgICAgRml4ZWRQb3NpdGlvbkNvbnN0YWludCwKKyAgICAgICAgU3RpY2t5UG9z
aXRpb25Db25zdHJhaW50CisgICAgfTsKKworICAgIGVudW0gQW5jaG9yRWRnZUZsYWdzIHsKKyAg
ICAgICAgQW5jaG9yRWRnZUxlZnQgPSAxIDw8IDAsCisgICAgICAgIEFuY2hvckVkZ2VSaWdodCA9
IDEgPDwgMSwKKyAgICAgICAgQW5jaG9yRWRnZVRvcCA9IDEgPDwgMiwKKyAgICAgICAgQW5jaG9y
RWRnZUJvdHRvbSA9IDEgPDwgMworICAgIH07CisgICAgdHlwZWRlZiB1bnNpZ25lZCBBbmNob3JF
ZGdlczsKKyAgICAKKyAgICBWaWV3cG9ydENvbnN0cmFpbnRzKCkKKyAgICAgICAgOiBtX2FuY2hv
ckVkZ2VzKDApCisgICAgeyB9CisKKyAgICB2aXJ0dWFsIH5WaWV3cG9ydENvbnN0cmFpbnRzKCkg
eyB9CisgICAgCisgICAgdmlydHVhbCBDb25zdHJhaW50VHlwZSBjb25zdHJhaW50VHlwZSgpIGNv
bnN0ID0gMDsKKyAgICAKKyAgICBBbmNob3JFZGdlcyBhbmNob3JFZGdlcygpIGNvbnN0IHsgcmV0
dXJuIG1fYW5jaG9yRWRnZXM7IH0KKyAgICBib29sIGhhc0FuY2hvckVkZ2UoQW5jaG9yRWRnZUZs
YWdzIGZsYWcpIGNvbnN0IHsgcmV0dXJuIG1fYW5jaG9yRWRnZXMgJiBmbGFnOyB9CisgICAgdm9p
ZCBhZGRBbmNob3JFZGdlKEFuY2hvckVkZ2VGbGFncyBlZGdlRmxhZykgeyBtX2FuY2hvckVkZ2Vz
IHw9IGVkZ2VGbGFnOyB9CisgICAgCisgICAgRmxvYXRTaXplIGFsaWdubWVudE9mZnNldCgpIGNv
bnN0IHsgcmV0dXJuIG1fYWxpZ25tZW50T2Zmc2V0OyB9CisgICAgdm9pZCBzZXRBbGlnbm1lbnRP
ZmZzZXQoY29uc3QgRmxvYXRTaXplJiBvZmZzZXQpIHsgbV9hbGlnbm1lbnRPZmZzZXQgPSBvZmZz
ZXQ7IH0KKworcHJvdGVjdGVkOgorICAgIEZsb2F0U2l6ZSBtX2FsaWdubWVudE9mZnNldDsKKyAg
ICBBbmNob3JFZGdlcyBtX2FuY2hvckVkZ2VzOworfTsKKworY2xhc3MgU3RpY2t5UG9zaXRpb25W
aWV3cG9ydENvbnN0cmFpbnRzIDogcHVibGljIFZpZXdwb3J0Q29uc3RyYWludHMgeworcHVibGlj
OgorICAgIFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cygpCisgICAgICAgIDogbV9s
ZWZ0T2Zmc2V0KDApCisgICAgICAgICwgbV9yaWdodE9mZnNldCgwKQorICAgICAgICAsIG1fdG9w
T2Zmc2V0KDApCisgICAgICAgICwgbV9ib3R0b21PZmZzZXQoMCkKKyAgICB7IH0KKworICAgIHZp
cnR1YWwgQ29uc3RyYWludFR5cGUgY29uc3RyYWludFR5cGUoKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiBTdGlja3lQb3NpdGlvbkNvbnN0cmFpbnQ7IH07CisgICAgRmxvYXRTaXplIGNvbXB1dGVT
dGlja3lPZmZzZXQoY29uc3QgRmxvYXRSZWN0JiB2aWV3cG9ydFJlY3QpIGNvbnN0OworCisgICAg
Y29uc3QgRmxvYXRTaXplIHN0aWNreU9mZnNldEF0TGFzdExheW91dCgpIGNvbnN0IHsgcmV0dXJu
IG1fc3RpY2t5T2Zmc2V0QXRMYXN0TGF5b3V0OyB9CisgICAgdm9pZCBzZXRTdGlja3lPZmZzZXRB
dExhc3RMYXlvdXQoY29uc3QgRmxvYXRTaXplJiBvZmZzZXQpIHsgbV9zdGlja3lPZmZzZXRBdExh
c3RMYXlvdXQgPSBvZmZzZXQ7IH0KKworICAgIEZsb2F0UG9pbnQgbGF5ZXJQb3NpdGlvbkZvclZp
ZXdwb3J0UmVjdChjb25zdCBGbG9hdFJlY3QmIHZpZXdwb3J0UmVjdCkgY29uc3Q7CisKKyAgICBj
b25zdCBGbG9hdFBvaW50JiBsYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KCkgY29uc3QgeyByZXR1
cm4gbV9sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0OyB9CisgICAgdm9pZCBzZXRMYXllclBvc2l0
aW9uQXRMYXN0TGF5b3V0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSB7IG1fbGF5ZXJQb3NpdGlv
bkF0TGFzdExheW91dCA9IHBvaW50OyB9CisKKyAgICBmbG9hdCBsZWZ0T2Zmc2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9sZWZ0T2Zmc2V0OyB9CisgICAgZmxvYXQgcmlnaHRPZmZzZXQoKSBjb25zdCB7
IHJldHVybiBtX3JpZ2h0T2Zmc2V0OyB9CisgICAgZmxvYXQgdG9wT2Zmc2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV90b3BPZmZzZXQ7IH0KKyAgICBmbG9hdCBib3R0b21PZmZzZXQoKSBjb25zdCB7IHJl
dHVybiBtX2JvdHRvbU9mZnNldDsgfQorCisgICAgdm9pZCBzZXRMZWZ0T2Zmc2V0KGZsb2F0IG9m
ZnNldCkgeyBtX2xlZnRPZmZzZXQgPSBvZmZzZXQ7IH0KKyAgICB2b2lkIHNldFJpZ2h0T2Zmc2V0
KGZsb2F0IG9mZnNldCkgeyBtX3JpZ2h0T2Zmc2V0ID0gb2Zmc2V0OyB9CisgICAgdm9pZCBzZXRU
b3BPZmZzZXQoZmxvYXQgb2Zmc2V0KSB7IG1fdG9wT2Zmc2V0ID0gb2Zmc2V0OyB9CisgICAgdm9p
ZCBzZXRCb3R0b21PZmZzZXQoZmxvYXQgb2Zmc2V0KSB7IG1fYm90dG9tT2Zmc2V0ID0gb2Zmc2V0
OyB9CisKKyAgICB2b2lkIHNldEFic29sdXRlQ29udGFpbmluZ0Jsb2NrUmVjdChjb25zdCBGbG9h
dFJlY3QmIHJlY3QpIHsgbV9hYnNvbHV0ZUNvbnRhaW5pbmdCbG9ja1JlY3QgPSByZWN0OyB9Cisg
ICAgdm9pZCBzZXRBYnNvbHV0ZVN0aWNreUJveFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KSB7
IG1fYWJzb2x1dGVTdGlja3lCb3hSZWN0ID0gcmVjdDsgfQorCitwcml2YXRlOgorICAgIGZsb2F0
IG1fbGVmdE9mZnNldDsKKyAgICBmbG9hdCBtX3JpZ2h0T2Zmc2V0OworICAgIGZsb2F0IG1fdG9w
T2Zmc2V0OworICAgIGZsb2F0IG1fYm90dG9tT2Zmc2V0OworICAgIEZsb2F0UmVjdCBtX2Fic29s
dXRlQ29udGFpbmluZ0Jsb2NrUmVjdDsKKyAgICBGbG9hdFJlY3QgbV9hYnNvbHV0ZVN0aWNreUJv
eFJlY3Q7CisgICAgRmxvYXRTaXplIG1fc3RpY2t5T2Zmc2V0QXRMYXN0TGF5b3V0OworICAgIEZs
b2F0UG9pbnQgbV9sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0OworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2Nyb2xsaW5nQ29uc3RyYWludHNfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggZTVj
MWEwOWJjOTk5MjE0MTQ4NzBhNWE1ZGU3MTI3YTRkYTBkY2UxOS4uOGRlZWRkZjM4YjY0MjUwNDI4
NzdhMGZjOTI3ZGIwYWY1OGZlMmFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAi
UmVuZGVySW5saW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5k
ZXJWaWV3LmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nQ29uc3RyYWludHMuaCIKICNpbmNsdWRlICJT
ZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybVN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0N1
cnJlbnRUaW1lLmg+CkBAIC01NzMsMTEgKzU3NCwxMCBAQCBMYXlvdXRQb2ludCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6YWRqdXN0ZWRQb3NpdGlvblJlbGF0aXZlVG9PZmZzZXRQYXJlbnQoY29uc3Qg
TAogICAgIHJldHVybiByZWZlcmVuY2VQb2ludDsKIH0KIAotTGF5b3V0U2l6ZSBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6c3RpY2t5UG9zaXRpb25PZmZzZXQoKSBjb25zdAordm9pZCBSZW5kZXJCb3hN
b2RlbE9iamVjdDo6Y29tcHV0ZVN0aWNreVBvc2l0aW9uQ29uc3RyYWludHMoU3RpY2t5UG9zaXRp
b25WaWV3cG9ydENvbnN0cmFpbnRzJiBjb25zdHJhaW50cywgY29uc3QgRmxvYXRSZWN0JiB2aWV3
cG9ydFJlY3QpIGNvbnN0CiB7CiAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9jayA9IHRo
aXMtPmNvbnRhaW5pbmdCbG9jaygpOwogCi0gICAgTGF5b3V0UmVjdCB2aWV3cG9ydFJlY3QgPSB2
aWV3KCktPmZyYW1lVmlldygpLT52aXNpYmxlQ29udGVudFJlY3QoKTsKICAgICBMYXlvdXRSZWN0
IGNvbnRhaW5lckNvbnRlbnRSZWN0ID0gY29udGFpbmluZ0Jsb2NrLT5jb250ZW50Qm94UmVjdCgp
OwogCiAgICAgTGF5b3V0VW5pdCBtaW5MZWZ0TWFyZ2luID0gbWluaW11bVZhbHVlRm9yTGVuZ3Ro
KHN0eWxlKCktPm1hcmdpbkxlZnQoKSwgY29udGFpbmluZ0Jsb2NrLT5hdmFpbGFibGVMb2dpY2Fs
V2lkdGgoKSwgdmlldygpKTsKQEAgLTU4OCw3ICs1ODgsNyBAQCBMYXlvdXRTaXplIFJlbmRlckJv
eE1vZGVsT2JqZWN0OjpzdGlja3lQb3NpdGlvbk9mZnNldCgpIGNvbnN0CiAgICAgLy8gQ29tcHV0
ZSB0aGUgY29udGFpbmVyLXJlbGF0aXZlIGFyZWEgd2l0aGluIHdoaWNoIHRoZSBzdGlja3kgZWxl
bWVudCBpcyBhbGxvd2VkIHRvIG1vdmUuCiAgICAgY29udGFpbmVyQ29udGVudFJlY3QubW92ZSht
aW5MZWZ0TWFyZ2luLCBtaW5Ub3BNYXJnaW4pOwogICAgIGNvbnRhaW5lckNvbnRlbnRSZWN0LmNv
bnRyYWN0KG1pbkxlZnRNYXJnaW4gKyBtaW5SaWdodE1hcmdpbiwgbWluVG9wTWFyZ2luICsgbWlu
Qm90dG9tTWFyZ2luKTsKLSAgICBGbG9hdFJlY3QgYWJzQ29udGFpbmVyQ29udGVudFJlY3QgPSBj
b250YWluaW5nQmxvY2stPmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KGNvbnRhaW5lckNv
bnRlbnRSZWN0KSkuYm91bmRpbmdCb3goKTsKKyAgICBjb25zdHJhaW50cy5zZXRBYnNvbHV0ZUNv
bnRhaW5pbmdCbG9ja1JlY3QoY29udGFpbmluZ0Jsb2NrLT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZs
b2F0UmVjdChjb250YWluZXJDb250ZW50UmVjdCkpLmJvdW5kaW5nQm94KCkpOwogCiAgICAgTGF5
b3V0UmVjdCBzdGlja3lCb3hSZWN0ID0gZnJhbWVSZWN0Rm9yU3RpY2t5UG9zaXRpb25pbmcoKTsK
ICAgICBMYXlvdXRSZWN0IGZsaXBwZWRTdGlja3lCb3hSZWN0ID0gc3RpY2t5Qm94UmVjdDsKQEAg
LTU5OSw1MyArNTk5LDM4IEBAIExheW91dFNpemUgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnN0aWNr
eVBvc2l0aW9uT2Zmc2V0KCkgY29uc3QKICAgICBGbG9hdFJlY3QgYWJzQ29udGFpbmVyRnJhbWUg
PSBjb250YWluaW5nQmxvY2stPmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0KEZsb2F0UG9p
bnQoKSwgY29udGFpbmluZ0Jsb2NrLT5zaXplKCkpKS5ib3VuZGluZ0JveCgpOwogICAgIC8vIFdl
IGNhbid0IGNhbGwgbG9jYWxUb0Fic29sdXRlIG9uIHx0aGlzfCBiZWNhdXNlIHRoYXQgd2lsbCBy
ZWN1ci4gRklYTUU6IEZvciBub3csIGFzc3VtZSB0aGF0IHx0aGlzfCBpcyBub3QgdHJhbnNmb3Jt
ZWQuCiAgICAgRmxvYXRSZWN0IGFic29sdXRlU3RpY2t5Qm94UmVjdChhYnNDb250YWluZXJGcmFt
ZS5sb2NhdGlvbigpICsgc3RpY2t5TG9jYXRpb24sIGZsaXBwZWRTdGlja3lCb3hSZWN0LnNpemUo
KSk7CisgICAgY29uc3RyYWludHMuc2V0QWJzb2x1dGVTdGlja3lCb3hSZWN0KGFic29sdXRlU3Rp
Y2t5Qm94UmVjdCk7CiAKLSAgICBGbG9hdFBvaW50IG9yaWdpbmFsTG9jYXRpb24gPSBhYnNvbHV0
ZVN0aWNreUJveFJlY3QubG9jYXRpb24oKTsKKyAgICBpZiAoIXN0eWxlKCktPmxlZnQoKS5pc0F1
dG8oKSkgeworICAgICAgICBjb25zdHJhaW50cy5zZXRMZWZ0T2Zmc2V0KHZhbHVlRm9yTGVuZ3Ro
KHN0eWxlKCktPmxlZnQoKSwgdmlld3BvcnRSZWN0LndpZHRoKCksIHZpZXcoKSkpOworICAgICAg
ICBjb25zdHJhaW50cy5hZGRBbmNob3JFZGdlKFZpZXdwb3J0Q29uc3RyYWludHM6OkFuY2hvckVk
Z2VMZWZ0KTsKKyAgICB9CiAKLSAgICAvLyBIb3Jpem9udGFsIHBvc2l0aW9uLgogICAgIGlmICgh
c3R5bGUoKS0+cmlnaHQoKS5pc0F1dG8oKSkgewotICAgICAgICBMYXlvdXRVbml0IHJpZ2h0TGlt
aXQgPSB2aWV3cG9ydFJlY3QubWF4WCgpIC0gdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+cmlnaHQo
KSwgdmlld3BvcnRSZWN0LndpZHRoKCksIHZpZXcoKSk7Ci0gICAgICAgIExheW91dFVuaXQgcmln
aHREZWx0YSA9IG1pbjxmbG9hdD4oMCwgcmlnaHRMaW1pdC50b0Zsb2F0KCkgLSBhYnNvbHV0ZVN0
aWNreUJveFJlY3QubWF4WCgpKTsKLSAgICAgICAgTGF5b3V0VW5pdCBhdmFpbGFibGVTcGFjZSA9
IG1pbjxmbG9hdD4oMCwgYWJzQ29udGFpbmVyQ29udGVudFJlY3QueCgpIC0gYWJzb2x1dGVTdGlj
a3lCb3hSZWN0LngoKSk7Ci0gICAgICAgIGlmIChyaWdodERlbHRhIDwgYXZhaWxhYmxlU3BhY2Up
Ci0gICAgICAgICAgICByaWdodERlbHRhID0gYXZhaWxhYmxlU3BhY2U7Ci0KLSAgICAgICAgYWJz
b2x1dGVTdGlja3lCb3hSZWN0Lm1vdmUocmlnaHREZWx0YSwgMCk7CisgICAgICAgIGNvbnN0cmFp
bnRzLnNldFJpZ2h0T2Zmc2V0KHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPnJpZ2h0KCksIHZpZXdw
b3J0UmVjdC53aWR0aCgpLCB2aWV3KCkpKTsKKyAgICAgICAgY29uc3RyYWludHMuYWRkQW5jaG9y
RWRnZShWaWV3cG9ydENvbnN0cmFpbnRzOjpBbmNob3JFZGdlUmlnaHQpOwogICAgIH0KIAotICAg
IGlmICghc3R5bGUoKS0+bGVmdCgpLmlzQXV0bygpKSB7Ci0gICAgICAgIExheW91dFVuaXQgbGVm
dExpbWl0ID0gdmlld3BvcnRSZWN0LngoKSArIHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPmxlZnQo
KSwgdmlld3BvcnRSZWN0LndpZHRoKCksIHZpZXcoKSk7Ci0gICAgICAgIExheW91dFVuaXQgbGVm
dERlbHRhID0gbWF4PGZsb2F0PigwLCBsZWZ0TGltaXQudG9GbG9hdCgpIC0gYWJzb2x1dGVTdGlj
a3lCb3hSZWN0LngoKSk7Ci0gICAgICAgIExheW91dFVuaXQgYXZhaWxhYmxlU3BhY2UgPSBtYXg8
ZmxvYXQ+KDAsIGFic0NvbnRhaW5lckNvbnRlbnRSZWN0Lm1heFgoKSAtIGFic29sdXRlU3RpY2t5
Qm94UmVjdC5tYXhYKCkpOwotICAgICAgICBpZiAobGVmdERlbHRhID4gYXZhaWxhYmxlU3BhY2Up
Ci0gICAgICAgICAgICBsZWZ0RGVsdGEgPSBhdmFpbGFibGVTcGFjZTsKLQotICAgICAgICBhYnNv
bHV0ZVN0aWNreUJveFJlY3QubW92ZShsZWZ0RGVsdGEsIDApOworICAgIGlmICghc3R5bGUoKS0+
dG9wKCkuaXNBdXRvKCkpIHsKKyAgICAgICAgY29uc3RyYWludHMuc2V0VG9wT2Zmc2V0KHZhbHVl
Rm9yTGVuZ3RoKHN0eWxlKCktPnRvcCgpLCB2aWV3cG9ydFJlY3QuaGVpZ2h0KCksIHZpZXcoKSkp
OworICAgICAgICBjb25zdHJhaW50cy5hZGRBbmNob3JFZGdlKFZpZXdwb3J0Q29uc3RyYWludHM6
OkFuY2hvckVkZ2VUb3ApOwogICAgIH0KIAotICAgIC8vIFZlcnRpY2FsIHBvc2l0aW9uLgogICAg
IGlmICghc3R5bGUoKS0+Ym90dG9tKCkuaXNBdXRvKCkpIHsKLSAgICAgICAgTGF5b3V0VW5pdCBi
b3R0b21MaW1pdCA9IHZpZXdwb3J0UmVjdC5tYXhZKCkgLSB2YWx1ZUZvckxlbmd0aChzdHlsZSgp
LT5ib3R0b20oKSwgdmlld3BvcnRSZWN0LmhlaWdodCgpLCB2aWV3KCkpOwotICAgICAgICBMYXlv
dXRVbml0IGJvdHRvbURlbHRhID0gbWluPGZsb2F0PigwLCBib3R0b21MaW1pdC50b0Zsb2F0KCkg
LSBhYnNvbHV0ZVN0aWNreUJveFJlY3QubWF4WSgpKTsKLSAgICAgICAgTGF5b3V0VW5pdCBhdmFp
bGFibGVTcGFjZSA9IG1pbjxmbG9hdD4oMCwgYWJzQ29udGFpbmVyQ29udGVudFJlY3QueSgpIC0g
YWJzb2x1dGVTdGlja3lCb3hSZWN0LnkoKSk7Ci0gICAgICAgIGlmIChib3R0b21EZWx0YSA8IGF2
YWlsYWJsZVNwYWNlKQotICAgICAgICAgICAgYm90dG9tRGVsdGEgPSBhdmFpbGFibGVTcGFjZTsK
LQotICAgICAgICBhYnNvbHV0ZVN0aWNreUJveFJlY3QubW92ZSgwLCBib3R0b21EZWx0YSk7Cisg
ICAgICAgIGNvbnN0cmFpbnRzLnNldEJvdHRvbU9mZnNldCh2YWx1ZUZvckxlbmd0aChzdHlsZSgp
LT5ib3R0b20oKSwgdmlld3BvcnRSZWN0LmhlaWdodCgpLCB2aWV3KCkpKTsKKyAgICAgICAgY29u
c3RyYWludHMuYWRkQW5jaG9yRWRnZShWaWV3cG9ydENvbnN0cmFpbnRzOjpBbmNob3JFZGdlQm90
dG9tKTsKICAgICB9Cit9CiAKLSAgICBpZiAoIXN0eWxlKCktPnRvcCgpLmlzQXV0bygpKSB7Ci0g
ICAgICAgIExheW91dFVuaXQgdG9wTGltaXQgPSB2aWV3cG9ydFJlY3QueSgpICsgdmFsdWVGb3JM
ZW5ndGgoc3R5bGUoKS0+dG9wKCksIHZpZXdwb3J0UmVjdC5oZWlnaHQoKSwgdmlldygpKTsKLSAg
ICAgICAgTGF5b3V0VW5pdCB0b3BEZWx0YSA9IG1heDxmbG9hdD4oMCwgdG9wTGltaXQudG9GbG9h
dCgpIC0gYWJzb2x1dGVTdGlja3lCb3hSZWN0LnkoKSk7Ci0gICAgICAgIExheW91dFVuaXQgYXZh
aWxhYmxlU3BhY2UgPSBtYXg8ZmxvYXQ+KDAsIGFic0NvbnRhaW5lckNvbnRlbnRSZWN0Lm1heFko
KSAtIGFic29sdXRlU3RpY2t5Qm94UmVjdC5tYXhZKCkpOwotICAgICAgICBpZiAodG9wRGVsdGEg
PiBhdmFpbGFibGVTcGFjZSkKLSAgICAgICAgICAgIHRvcERlbHRhID0gYXZhaWxhYmxlU3BhY2U7
CitMYXlvdXRTaXplIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzdGlja3lQb3NpdGlvbk9mZnNldCgp
IGNvbnN0Cit7CisgICAgTGF5b3V0UmVjdCB2aWV3cG9ydFJlY3QgPSB2aWV3KCktPmZyYW1lVmll
dygpLT52aXNpYmxlQ29udGVudFJlY3QoKTsKIAotICAgICAgICBhYnNvbHV0ZVN0aWNreUJveFJl
Y3QubW92ZSgwLCB0b3BEZWx0YSk7Ci0gICAgfQorICAgIFN0aWNreVBvc2l0aW9uVmlld3BvcnRD
b25zdHJhaW50cyBjb25zdHJhaW50czsKKyAgICBjb21wdXRlU3RpY2t5UG9zaXRpb25Db25zdHJh
aW50cyhjb25zdHJhaW50cywgdmlld3BvcnRSZWN0KTsKICAgICAKICAgICAvLyBUaGUgc3RpY2t5
IG9mZnNldCBpcyBwaHlzaWNhbCwgc28gd2UgY2FuIGp1c3QgcmV0dXJuIHRoZSBkZWx0YSBjb21w
dXRlZCBpbiBhYnNvbHV0ZSBjb29yZHMgKHRob3VnaCBpdCBtYXkgYmUgd3Jvbmcgd2l0aCB0cmFu
c2Zvcm1zKS4KLSAgICByZXR1cm4gcm91bmRlZExheW91dFNpemUoYWJzb2x1dGVTdGlja3lCb3hS
ZWN0LmxvY2F0aW9uKCkgLSBvcmlnaW5hbExvY2F0aW9uKTsKKyAgICByZXR1cm4gTGF5b3V0U2l6
ZShjb25zdHJhaW50cy5jb21wdXRlU3RpY2t5T2Zmc2V0KHZpZXdwb3J0UmVjdCkpOwogfQogCiBM
YXlvdXRTaXplIFJlbmRlckJveE1vZGVsT2JqZWN0OjpvZmZzZXRGb3JJbkZsb3dQb3NpdGlvbigp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5oCmluZGV4IGZhNjA2YWViYTNkZjEyYTM0ZDkyMmNlYzJmMWE5N2UyY2Q2MmQzY2IuLjZlZTM1
NGM5YWM4OTJkZjg5N2M5YWVjYjEzM2RlMGIxMTlmZGFiYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCkBAIC01MSw2ICs1MSw3IEBAIGVu
dW0gQ29udGVudENoYW5nZVR5cGUgewogfTsKIAogY2xhc3MgS2V5ZnJhbWVMaXN0OworY2xhc3Mg
U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOwogCiAvLyBUaGlzIGNsYXNzIGlzIHRo
ZSBiYXNlIGZvciBhbGwgb2JqZWN0cyB0aGF0IGFkaGVyZSB0byB0aGUgQ1NTIGJveCBtb2RlbCBh
cyBkZXNjcmliZWQKIC8vIGF0IGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL2JveC5odG1sCkBA
IC02Myw2ICs2NCw3IEBAIHB1YmxpYzoKICAgICBMYXlvdXRTaXplIHJlbGF0aXZlUG9zaXRpb25P
ZmZzZXQoKSBjb25zdDsKICAgICBMYXlvdXRTaXplIHJlbGF0aXZlUG9zaXRpb25Mb2dpY2FsT2Zm
c2V0KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/
IHJlbGF0aXZlUG9zaXRpb25PZmZzZXQoKSA6IHJlbGF0aXZlUG9zaXRpb25PZmZzZXQoKS50cmFu
c3Bvc2VkU2l6ZSgpOyB9CiAKKyAgICB2b2lkIGNvbXB1dGVTdGlja3lQb3NpdGlvbkNvbnN0cmFp
bnRzKFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cyYsIGNvbnN0IEZsb2F0UmVjdCYg
dmlld3BvcnRSZWN0KSBjb25zdDsKICAgICBMYXlvdXRTaXplIHN0aWNreVBvc2l0aW9uT2Zmc2V0
KCkgY29uc3Q7CiAgICAgTGF5b3V0U2l6ZSBzdGlja3lQb3NpdGlvbkxvZ2ljYWxPZmZzZXQoKSBj
b25zdCB7IHJldHVybiBzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpID8gc3RpY2t5
UG9zaXRpb25PZmZzZXQoKSA6IHN0aWNreVBvc2l0aW9uT2Zmc2V0KCkudHJhbnNwb3NlZFNpemUo
KTsgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162611</attachid>
            <date>2012-09-06 16:06:08 -0700</date>
            <delta_ts>2012-09-06 16:08:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96026-20120906160552.patch</filename>
            <type>text/plain</type>
            <size>27892</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTAzNjAwZWE3MGM1YzBl
NTdkYWYzMTM1M2Q5ODQ0YWQxNDFmMTMyMy4uZGIzMWY4MjJlNWQzYjQyZGQ2N2U5ZjZjNjAzN2Zh
NjYyMjMyOGJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY4IEBACiAyMDEyLTA5LTA2ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCisgICAgICAgIFBhcmNlbCB1cCBs
b2dpYyByZWxhdGVkIHRvIHN0aWNreSBwb3NpdGlvbmluZyBpbnRvIGEgQ29uc3RyYWludHMgY2xh
c3MgdGhhdCB3aWxsIGxhdGVyIGJlIHVzZWQgZm9yIHRocmVhZGVkIHNjcm9sbGluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTYwMjYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBMYXkgc29tZSBncm91bmR3
b3JrIGZvciB0aHJlYWRlZCBzY3JvbGxpbmcgd2l0aCBmaXhlZCBwb3NpdGlvbiBhbmQgc3RpY2t5
CisgICAgICAgIHBvc2l0aW9uIG9iamVjdHMsIGJ5IHBhY2thZ2luZyB1cCBsb2dpYyByZWxhdGVk
IHRvIGhvdyB0byByZXBvc2l0aW9uCisgICAgICAgIGZpeGVkIGFuZCBzdGlja3kgdGhpbmdzIG9u
IHZpZXdwb3J0IGNoYW5nZXMgaW50byAiY29uc3RyYWludHMiIGNsYXNzZXMuCisgICAgICAgIAor
ICAgICAgICBTY3JvbGxpbmdDb25zdHJhaW50cyBjb250YWlucyBhICdWaWV3cG9ydENvbnN0cmFp
bnRzJyBiYXNlIGNsYXNzCisgICAgICAgIHRoYXQgaXMgc3ViY2xhc3NlZCBmb3Igc3RpY2t5IHBv
c2l0aW9uLiBUaGVzZSBjbGFzc2VzIHN0b3JlCisgICAgICAgIGRhdGEgYWJvdXQgdGhlIGNvbnN0
cmFpbnRzIHRoYXQgZ292ZXJuIHRoZSBwb3NpdGlvbiBvZiBhbiBvYmplY3Qgb3V0c2lkZQorICAg
ICAgICBvZiB0aGUgcmVuZGVyIHRyZWUsIGFuZCBrbm93IGhvdyB0byBjb21wdXRlIGEgbmV3IHBv
c2l0aW9uIHdoZW4gdGhlCisgICAgICAgIHZpZXdwb3J0IGNoYW5nZXMgdXNpbmcgb25seSBkYXRh
IGluIHRoZSBjbGFzcy4KKyAgICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBSZW5k
ZXJCb3hNb2RlbE9iamVjdCB0byB1c2UgdGhlIFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJh
aW50cworICAgICAgICBjbGFzcyBmb3IgY29tcHV0aW5nIHN0aWNrIG9mZnNldHMgYXQgbGF5b3V0
IHRpbWUuIEluIHRoZSBmdXR1cmUsIHdlJ2xsIGhhdmUKKyAgICAgICAgdGhlIHNjcm9sbGluZyB0
cmVlIHN0b3JlIGNvcGllcyBvZiB0aGUgY29uc3RyYWludCBkYXRhIGZvciB0aHJlYWRlZCBzY3Jv
bGxpbmcuCisgICAgICAgIAorICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGQgU2Nyb2xsaW5n
Q29uc3RyYWludHMuKiB0byB0aGUgYnVpbGQuCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5h
bTogRGl0dG8KKyAgICAgICAgKiBUYXJnZXQucHJpOiBEaXR0bworICAgICAgICAqIFdlYkNvcmUu
Z3lwaTogRGl0dG8KKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogRGl0
dG8KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvCisg
ICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czo6Y29t
cHV0ZVN0aWNreU9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTdGlja3lQb3NpdGlvblZpZXdw
b3J0Q29uc3RyYWludHM6OmxheWVyUG9zaXRpb25Gb3JWaWV3cG9ydFJlY3QpOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6Vmlld3BvcnRDb25zdHJhaW50czo6Vmlld3BvcnRDb25zdHJhaW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbnN0cmFpbnRzOjp+Vmlld3BvcnRDb25zdHJhaW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbnN0cmFpbnRzOjphbmNob3JFZGdlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbnN0cmFpbnRzOjpoYXNBbmNob3JFZGdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0Q29uc3RyYWludHM6OmFkZEFuY2hvckVkZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25zdHJhaW50czo6YWxpZ25tZW50T2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0Q29uc3RyYWludHM6OnNldEFsaWdubWVudE9mZnNldCk6
CisgICAgICAgIChTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMpOgorICAgICAgICAo
V2ViQ29yZTo6U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOjpTdGlja3lQb3NpdGlv
blZpZXdwb3J0Q29uc3RyYWludHMpOgorICAgICAgICAoV2ViQ29yZTo6U3RpY2t5UG9zaXRpb25W
aWV3cG9ydENvbnN0cmFpbnRzOjpzdGlja3lPZmZzZXRBdExhc3RMYXlvdXQpOgorICAgICAgICAo
V2ViQ29yZTo6U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOjpzZXRTdGlja3lPZmZz
ZXRBdExhc3RMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6U3RpY2t5UG9zaXRpb25WaWV3cG9y
dENvbnN0cmFpbnRzOjpsYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KToKKyAgICAgICAgKFdlYkNv
cmU6OlN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czo6c2V0TGF5ZXJQb3NpdGlvbkF0
TGFzdExheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29u
c3RyYWludHM6OmxlZnRPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U3RpY2t5UG9zaXRpb25W
aWV3cG9ydENvbnN0cmFpbnRzOjpyaWdodE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTdGlj
a3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM6OnRvcE9mZnNldCk6CisgICAgICAgIChXZWJD
b3JlOjpTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM6OmJvdHRvbU9mZnNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM6OnNldExl
ZnRPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0
cmFpbnRzOjpzZXRSaWdodE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTdGlja3lQb3NpdGlv
blZpZXdwb3J0Q29uc3RyYWludHM6OnNldFRvcE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpT
dGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM6OnNldEJvdHRvbU9mZnNldCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM6OnNldEFic29s
dXRlQ29udGFpbmluZ0Jsb2NrUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTdGlja3lQb3NpdGlv
blZpZXdwb3J0Q29uc3RyYWludHM6OnNldEFic29sdXRlU3RpY2t5Qm94UmVjdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveE1vZGVsT2JqZWN0Ojpjb21wdXRlU3RpY2t5UG9zaXRpb25Db25zdHJhaW50cyk6
IEZpbGwgb3V0CisgICAgICAgIGRhdGEgaW4gdGhlIHN1cHBsaWVkIFN0aWNreVBvc2l0aW9uVmll
d3BvcnRDb25zdHJhaW50cyBpbnN0YW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveE1v
ZGVsT2JqZWN0OjpzdGlja3lQb3NpdGlvbk9mZnNldCk6IENyZWF0ZSBhCisgICAgICAgIFN0aWNr
eVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cyBvYmplY3Qgb24gdGhlIHN0YWNrIGFuZCB1c2Ug
aXQgdG8KKyAgICAgICAgY29tcHV0ZSB0aGUgc3RpY2t5IG9mZnNldC4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaDoKKyAgICAgICAgKFJlbmRlckJveE1vZGVsT2Jq
ZWN0KToKKworMjAxMi0wOS0wNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KKwogICAgICAgICBNb3ZlIFJlbmRlclZpZXc6OnNldEZpeGVkUG9zaXRpb25lZE9iamVjdHNO
ZWVkTGF5b3V0IHRvIEZyYW1lVmlldwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTYwMTcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAzNTVjNmNlZWYw
NGUwMmFhYjY0Y2IwN2I1YmExNTIwNWU5ODdlN2Y4Li4wYTllOTQ4OTk2OTI5ZTdiNzcwNDE5MjBi
NjQ5MzBkYjQ0Y2I0M2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTczMSw2ICsxNzMxLDcg
QEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHBhZ2UvYW5pbWF0aW9uL0ltcGxpY2l0QW5pbWF0
aW9uLmNwcAogICAgIHBhZ2UvYW5pbWF0aW9uL0tleWZyYW1lQW5pbWF0aW9uLmNwcAogCisgICAg
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuY3BwCiAgICAgcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCiAgICAgcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3JOb25lLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAy
ZGYzNWVkNGJhOWYxZDI3YjU2YTE2YWUzMzk5MmM5YmVjZTNhOWE5Li5lZmEwMGI3ZTFiNDM4YzZj
N2Y2NTU4YTI4ZjQ4Yzc3MTJhZjRhOTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
QEAgLTQwMzAsNiArNDAzMCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNv
cmUvcGFnZS9QcmludENvbnRleHQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9TY3JlZW4uY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9wYWdlL1NjcmVlbi5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdDb25zdHJhaW50cy5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmggXAogCVNvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBcCiAJU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3JOb25lLmNwcCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpp
bmRleCA1OWE1MjI1YzIwYjE2YTcxODA2YzdjMzE0NTQ2YjczMmY1OWNmMjM0Li40OGYyZmEwNTcx
MDYyYjIyMjZiYjhiZTlhZTExMmRhMjE5ZmU5N2JlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTg5Myw2ICs4
OTMsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBwYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNwcCBcCiAg
ICAgcGFnZS9QcmludENvbnRleHQuY3BwIFwKICAgICBwYWdlL1NjcmVlbi5jcHAgXAorICAgIHBh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmNwcCBcCiAgICAgcGFnZS9zY3JvbGxp
bmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIFwKICAgICBwYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdDb29yZGluYXRvck5vbmUuY3BwIFwKICAgICBwYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKaW5kZXggNTNlMWQwNDM2YjBmODAyYjgwNDMwZTY5MWRmZjhmNWFhMTBhYzc0
NS4uYzgxMTZkYjQ5ZTA3ZjFlZWU2ZGU4MTU2Y2Q3MmU1N2I5NDU0OTU2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQpAQCAtMzIyMCw2ICszMjIwLDggQEAKICAgICAgICAgICAgICdwYWdlL21hYy9QYWdlTWFj
LmNwcCcsCiAgICAgICAgICAgICAncGFnZS9xdC9EcmFnQ29udHJvbGxlclF0LmNwcCcsCiAgICAg
ICAgICAgICAncGFnZS9xdC9FdmVudEhhbmRsZXJRdC5jcHAnLAorICAgICAgICAgICAgJ3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmNwcCcsCisgICAgICAgICAgICAncGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuaCcsCiAgICAgICAgICAgICAncGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwJywKICAgICAgICAgICAgICdwYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oJywKICAgICAgICAgICAgICdwYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUaHJlYWQuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oKaW5kZXggMWZmN2MyN2I4MjM4NjQ1OTZlZDMwYTE2NDA1NzQ2NDZmOTVi
MGQzYi4uOGNmMDhjYzg2ZTA5NDM5Y2Q4MmI3MTU3YmZlMjQwMDJjMzdhMTY2NSAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTI3MjgzLDYgKzI3
MjgzLDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHBhZ2Vcc2Nyb2xsaW5nXFNjcm9sbGluZ0NvbnN0cmFpbnRzLmNwcCIKKwkJCQk+CisJCQk8
L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxzY3JvbGxpbmdcU2Ny
b2xsaW5nQ29uc3RyYWludHMuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJl
bGF0aXZlUGF0aD0iLi5ccGFnZVxzY3JvbGxpbmdcU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIgog
CQkJCT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA1M2VjMzQ4NDdkMTYyMWZhY2FmZTRkMTQ2YmI4OWY2ZDM3
MGE3NDYwLi5hYzAzYWMzZmJmMzg4ZjQwOWJkYWI2ZGUxMjA3MmU2MDBiYTM5ZDQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0y
NjIsNiArMjYyLDggQEAKIAkJMEY1ODBGQUYxNDk4MDBENDAwRkI1QkQ4IC8qIEFuaW1hdGlvblV0
aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY1ODBGQUUxNDk4MDBENDAwRkI1QkQ4IC8qIEFuaW1hdGlvblV0aWxpdGllcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNUI3QTU0MTBGNjVE
N0EwMDM3NjMwMiAvKiBSZW5kZXJFbWJlZGRlZE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVCN0E1MjEwRjY1RDdBMDAzNzYzMDIgLyog
UmVuZGVyRW1iZWRkZWRPYmplY3QuY3BwICovOyB9OwogCQkwRjVCN0E1NTEwRjY1RDdBMDAzNzYz
MDIgLyogUmVuZGVyRW1iZWRkZWRPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUI3QTUzMTBGNjVEN0EwMDM3NjMwMiAvKiBSZW5kZXJFbWJl
ZGRlZE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGNjA1QUVDMTVGOTQ4NDgwMDRERjBDMCAvKiBTY3JvbGxpbmdDb25zdHJhaW50cy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYwNUFF
QTE1Rjk0ODQ4MDA0REYwQzAgLyogU2Nyb2xsaW5nQ29uc3RyYWludHMuY3BwICovOyB9OworCQkw
RjYwNUFFRDE1Rjk0ODQ4MDA0REYwQzAgLyogU2Nyb2xsaW5nQ29uc3RyYWludHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjA1QUVCMTVGOTQ4NDgw
MDRERjBDMCAvKiBTY3JvbGxpbmdDb25zdHJhaW50cy5oICovOyB9OwogCQkwRkNGMzMyNDBGMkI5
NzE1MDA0QjY3OTUgLyogQ29sb3JDRy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRkNGMzMyMzBGMkI5NzE1MDA0QjY3OTUgLyogQ29sb3JDRy5jcHAg
Ki87IH07CiAJCTBGQ0YzMzJDMEYyQjlBMjUwMDRCNjc5NSAvKiBXZWJUaWxlZExheWVyLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDRjMzMjgwRjJC
OUEyNTAwNEI2Nzk1IC8qIFdlYlRpbGVkTGF5ZXIubW0gKi87IH07CiAJCTBGQ0YzMzJEMEYyQjlB
MjUwMDRCNjc5NSAvKiBXZWJUaWxlZExheWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRkNGMzMyOTBGMkI5QTI1MDA0QjY3OTUgLyogV2ViVGlsZWRM
YXllci5oICovOyB9OwpAQCAtNzI4MSw2ICs3MjgzLDggQEAKIAkJMEY1ODBGQUUxNDk4MDBENDAw
RkI1QkQ4IC8qIEFuaW1hdGlvblV0aWxpdGllcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBBbmltYXRpb25VdGlsaXRpZXMuaDsgcGF0aCA9IGFuaW1hdGlvbi9BbmltYXRpb25V
dGlsaXRpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1QjdBNTIxMEY2NUQ3
QTAwMzc2MzAyIC8qIFJlbmRlckVtYmVkZGVkT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlckVtYmVkZGVkT2JqZWN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY1QjdBNTMxMEY2NUQ3QTAwMzc2MzAyIC8qIFJlbmRlckVtYmVk
ZGVkT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlckVtYmVk
ZGVkT2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNjA1QUVBMTVGOTQ4
NDgwMDRERjBDMCAvKiBTY3JvbGxpbmdDb25zdHJhaW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxpbmdDb25zdHJhaW50cy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGNjA1QUVCMTVGOTQ4NDgwMDRERjBDMCAvKiBTY3JvbGxpbmdD
b25zdHJhaW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdD
b25zdHJhaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkNGMzMyMzBGMkI5
NzE1MDA0QjY3OTUgLyogQ29sb3JDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBDb2xvckNHLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDRjMz
MjgwRjJCOUEyNTAwNEI2Nzk1IC8qIFdlYlRpbGVkTGF5ZXIubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJUaWxlZExheWVyLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRkNGMzMyOTBGMkI5QTI1MDA0QjY3OTUgLyogV2ViVGlsZWRMYXllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJUaWxlZExheWVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDU0Miw2ICsxNDU0Niw4IEBACiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTFBRjYyRUUyMTREQTIyQTcwMDQxNTU2QyAv
KiBtYWMgKi8sCisJCQkJMEY2MDVBRUExNUY5NDg0ODAwNERGMEMwIC8qIFNjcm9sbGluZ0NvbnN0
cmFpbnRzLmNwcCAqLywKKwkJCQkwRjYwNUFFQjE1Rjk0ODQ4MDA0REYwQzAgLyogU2Nyb2xsaW5n
Q29uc3RyYWludHMuaCAqLywKIAkJCQkxQUY2MkVFNDE0REEyMkE3MDA0MTU1NkMgLyogU2Nyb2xs
aW5nQ29vcmRpbmF0b3IuY3BwICovLAogCQkJCTFBRjYyRUU1MTREQTIyQTcwMDQxNTU2QyAvKiBT
Y3JvbGxpbmdDb29yZGluYXRvci5oICovLAogCQkJCTM4NjZBRjM3MTRGMUMxNzEwMDI4M0Q2OCAv
KiBTY3JvbGxpbmdDb29yZGluYXRvck5vbmUuY3BwICovLApAQCAtMjU1MDAsNiArMjU1MDYsNyBA
QAogCQkJCUZCRDZBRjhBMTVFRjI1REYwMDhCNzExMCAvKiBCYXNpY1NoYXBlRnVuY3Rpb25zLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlGQkQ2QUY4QzE1RUYyNjA0MDA4QjcxMTAgLyogQmFzaWNTaGFw
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTc2RjJFMkVDMTVGNzRDRUYwMDVGRjY2NCAvKiBSZW5k
ZXJEaWFsb2cuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNjA1QUVEMTVGOTQ4NDgwMDRERjBDMCAv
KiBTY3JvbGxpbmdDb25zdHJhaW50cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yODU5MSw2ICsyODU5
OCw3IEBACiAJCQkJMzc3QTNBOTAxNUVGQ0U5QjAwNTlGNUM3IC8qIEJpdG1hcEltYWdlQ0cuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkNEOEE1RjAxNUY1NkYyQzAwOThEMDcxIC8qIFRleHRCcmVh
a0l0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc2RjJFMkVCMTVGNzRDRUYwMDVGRjY2
NCAvKiBSZW5kZXJEaWFsb2cuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY2MDVBRUMxNUY5NDg0
ODAwNERGMEMwIC8qIFNjcm9sbGluZ0NvbnN0cmFpbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWlu
dHMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWlu
dHMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI5NGVlNjI3OTJlNWNjYmFlZTk2MzhhOGYzY2IzZTI1MDhmMWVm
MmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdDb25zdHJhaW50cy5jcHAKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTY3JvbGxpbmdDb25zdHJhaW50cy5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK0Zsb2F0U2l6ZSBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3Ry
YWludHM6OmNvbXB1dGVTdGlja3lPZmZzZXQoY29uc3QgRmxvYXRSZWN0JiB2aWV3cG9ydFJlY3Qp
IGNvbnN0Cit7CisgICAgRmxvYXRSZWN0IGJveFJlY3QgPSBtX2Fic29sdXRlU3RpY2t5Qm94UmVj
dDsKKyAgICAKKyAgICBpZiAoaGFzQW5jaG9yRWRnZShBbmNob3JFZGdlUmlnaHQpKSB7CisgICAg
ICAgIGZsb2F0IHJpZ2h0TGltaXQgPSB2aWV3cG9ydFJlY3QubWF4WCgpIC0gbV9yaWdodE9mZnNl
dDsKKyAgICAgICAgZmxvYXQgcmlnaHREZWx0YSA9IHN0ZDo6bWluPGZsb2F0PigwLCByaWdodExp
bWl0IC0gbV9hYnNvbHV0ZVN0aWNreUJveFJlY3QubWF4WCgpKTsKKyAgICAgICAgZmxvYXQgYXZh
aWxhYmxlU3BhY2UgPSBzdGQ6Om1pbjxmbG9hdD4oMCwgbV9hYnNvbHV0ZUNvbnRhaW5pbmdCbG9j
a1JlY3QueCgpIC0gbV9hYnNvbHV0ZVN0aWNreUJveFJlY3QueCgpKTsKKyAgICAgICAgaWYgKHJp
Z2h0RGVsdGEgPCBhdmFpbGFibGVTcGFjZSkKKyAgICAgICAgICAgIHJpZ2h0RGVsdGEgPSBhdmFp
bGFibGVTcGFjZTsKKworICAgICAgICBib3hSZWN0Lm1vdmUocmlnaHREZWx0YSwgMCk7CisgICAg
fQorCisgICAgaWYgKGhhc0FuY2hvckVkZ2UoQW5jaG9yRWRnZUxlZnQpKSB7CisgICAgICAgIGZs
b2F0IGxlZnRMaW1pdCA9IHZpZXdwb3J0UmVjdC54KCkgKyBtX2xlZnRPZmZzZXQ7CisgICAgICAg
IGZsb2F0IGxlZnREZWx0YSA9IHN0ZDo6bWF4PGZsb2F0PigwLCBsZWZ0TGltaXQgLSBtX2Fic29s
dXRlU3RpY2t5Qm94UmVjdC54KCkpOworICAgICAgICBmbG9hdCBhdmFpbGFibGVTcGFjZSA9IHN0
ZDo6bWF4PGZsb2F0PigwLCBtX2Fic29sdXRlQ29udGFpbmluZ0Jsb2NrUmVjdC5tYXhYKCkgLSBt
X2Fic29sdXRlU3RpY2t5Qm94UmVjdC5tYXhYKCkpOworICAgICAgICBpZiAobGVmdERlbHRhID4g
YXZhaWxhYmxlU3BhY2UpCisgICAgICAgICAgICBsZWZ0RGVsdGEgPSBhdmFpbGFibGVTcGFjZTsK
KworICAgICAgICBib3hSZWN0Lm1vdmUobGVmdERlbHRhLCAwKTsKKyAgICB9CisgICAgCisgICAg
aWYgKGhhc0FuY2hvckVkZ2UoQW5jaG9yRWRnZUJvdHRvbSkpIHsKKyAgICAgICAgZmxvYXQgYm90
dG9tTGltaXQgPSB2aWV3cG9ydFJlY3QubWF4WSgpIC0gbV9ib3R0b21PZmZzZXQ7CisgICAgICAg
IGZsb2F0IGJvdHRvbURlbHRhID0gc3RkOjptaW48ZmxvYXQ+KDAsIGJvdHRvbUxpbWl0IC0gbV9h
YnNvbHV0ZVN0aWNreUJveFJlY3QubWF4WSgpKTsKKyAgICAgICAgZmxvYXQgYXZhaWxhYmxlU3Bh
Y2UgPSBzdGQ6Om1pbjxmbG9hdD4oMCwgbV9hYnNvbHV0ZUNvbnRhaW5pbmdCbG9ja1JlY3QueSgp
IC0gbV9hYnNvbHV0ZVN0aWNreUJveFJlY3QueSgpKTsKKyAgICAgICAgaWYgKGJvdHRvbURlbHRh
IDwgYXZhaWxhYmxlU3BhY2UpCisgICAgICAgICAgICBib3R0b21EZWx0YSA9IGF2YWlsYWJsZVNw
YWNlOworCisgICAgICAgIGJveFJlY3QubW92ZSgwLCBib3R0b21EZWx0YSk7CisgICAgfQorCisg
ICAgaWYgKGhhc0FuY2hvckVkZ2UoQW5jaG9yRWRnZVRvcCkpIHsKKyAgICAgICAgZmxvYXQgdG9w
TGltaXQgPSB2aWV3cG9ydFJlY3QueSgpICsgbV90b3BPZmZzZXQ7CisgICAgICAgIGZsb2F0IHRv
cERlbHRhID0gc3RkOjptYXg8ZmxvYXQ+KDAsIHRvcExpbWl0IC0gbV9hYnNvbHV0ZVN0aWNreUJv
eFJlY3QueSgpKTsKKyAgICAgICAgZmxvYXQgYXZhaWxhYmxlU3BhY2UgPSBzdGQ6Om1heDxmbG9h
dD4oMCwgbV9hYnNvbHV0ZUNvbnRhaW5pbmdCbG9ja1JlY3QubWF4WSgpIC0gbV9hYnNvbHV0ZVN0
aWNreUJveFJlY3QubWF4WSgpKTsKKyAgICAgICAgaWYgKHRvcERlbHRhID4gYXZhaWxhYmxlU3Bh
Y2UpCisgICAgICAgICAgICB0b3BEZWx0YSA9IGF2YWlsYWJsZVNwYWNlOworCisgICAgICAgIGJv
eFJlY3QubW92ZSgwLCB0b3BEZWx0YSk7CisgICAgfQorCisgICAgcmV0dXJuIGJveFJlY3QubG9j
YXRpb24oKSAtIG1fYWJzb2x1dGVTdGlja3lCb3hSZWN0LmxvY2F0aW9uKCk7Cit9CisKK0Zsb2F0
UG9pbnQgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOjpsYXllclBvc2l0aW9uRm9y
Vmlld3BvcnRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgdmlld3BvcnRSZWN0KSBjb25zdAoreworICAg
IEZsb2F0U2l6ZSBvZmZzZXQgPSBjb21wdXRlU3RpY2t5T2Zmc2V0KHZpZXdwb3J0UmVjdCk7Cisg
ICAgcmV0dXJuIG1fbGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCArIG9mZnNldCAtIG1fc3RpY2t5
T2Zmc2V0QXRMYXN0TGF5b3V0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb25zdHJhaW50cy5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lOGJlNDA4Yzg5ZGFkODdjZWVmOTA5NTQxNDExMTNmOWVlMjZiZDg0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29u
c3RyYWludHMuaApAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU2Nyb2xs
aW5nQ29uc3RyYWludHNfaAorI2RlZmluZSBTY3JvbGxpbmdDb25zdHJhaW50c19oCisKKyNpbmNs
dWRlICJGbG9hdFJlY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBWaWV3cG9ydENv
bnN0cmFpbnRzIGNsYXNzZXMgZW5jYXBzdWxhdGUgZGF0YSBhbmQgbG9naWMgcmVxdWlyZWQgdG8g
cmVwb3NpdGlvbiBlbGVtZW50cyB3aG9zZSBsYXlvdXQKKy8vIGRlcGVuZHMgb24gdGhlIHZpZXdw
b3J0IHJlY3QgKHBvc2l0aW9ucyBmaXhlZCBhbmQgc3RpY2t5KSwgd2hlbiBzY3JvbGxpbmcgYW5k
IHpvb21pbmcuCitjbGFzcyBWaWV3cG9ydENvbnN0cmFpbnRzIHsKK3B1YmxpYzoKKyAgICBlbnVt
IENvbnN0cmFpbnRUeXBlIHsKKyAgICAgICAgRml4ZWRQb3NpdGlvbkNvbnN0YWludCwKKyAgICAg
ICAgU3RpY2t5UG9zaXRpb25Db25zdHJhaW50CisgICAgfTsKKworICAgIGVudW0gQW5jaG9yRWRn
ZUZsYWdzIHsKKyAgICAgICAgQW5jaG9yRWRnZUxlZnQgPSAxIDw8IDAsCisgICAgICAgIEFuY2hv
ckVkZ2VSaWdodCA9IDEgPDwgMSwKKyAgICAgICAgQW5jaG9yRWRnZVRvcCA9IDEgPDwgMiwKKyAg
ICAgICAgQW5jaG9yRWRnZUJvdHRvbSA9IDEgPDwgMworICAgIH07CisgICAgdHlwZWRlZiB1bnNp
Z25lZCBBbmNob3JFZGdlczsKKyAgICAKKyAgICBWaWV3cG9ydENvbnN0cmFpbnRzKCkKKyAgICAg
ICAgOiBtX2FuY2hvckVkZ2VzKDApCisgICAgeyB9CisKKyAgICB2aXJ0dWFsIH5WaWV3cG9ydENv
bnN0cmFpbnRzKCkgeyB9CisgICAgCisgICAgdmlydHVhbCBDb25zdHJhaW50VHlwZSBjb25zdHJh
aW50VHlwZSgpIGNvbnN0ID0gMDsKKyAgICAKKyAgICBBbmNob3JFZGdlcyBhbmNob3JFZGdlcygp
IGNvbnN0IHsgcmV0dXJuIG1fYW5jaG9yRWRnZXM7IH0KKyAgICBib29sIGhhc0FuY2hvckVkZ2Uo
QW5jaG9yRWRnZUZsYWdzIGZsYWcpIGNvbnN0IHsgcmV0dXJuIG1fYW5jaG9yRWRnZXMgJiBmbGFn
OyB9CisgICAgdm9pZCBhZGRBbmNob3JFZGdlKEFuY2hvckVkZ2VGbGFncyBlZGdlRmxhZykgeyBt
X2FuY2hvckVkZ2VzIHw9IGVkZ2VGbGFnOyB9CisgICAgCisgICAgRmxvYXRTaXplIGFsaWdubWVu
dE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fYWxpZ25tZW50T2Zmc2V0OyB9CisgICAgdm9pZCBz
ZXRBbGlnbm1lbnRPZmZzZXQoY29uc3QgRmxvYXRTaXplJiBvZmZzZXQpIHsgbV9hbGlnbm1lbnRP
ZmZzZXQgPSBvZmZzZXQ7IH0KKworcHJvdGVjdGVkOgorICAgIEZsb2F0U2l6ZSBtX2FsaWdubWVu
dE9mZnNldDsKKyAgICBBbmNob3JFZGdlcyBtX2FuY2hvckVkZ2VzOworfTsKKworY2xhc3MgU3Rp
Y2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzIDogcHVibGljIFZpZXdwb3J0Q29uc3RyYWlu
dHMgeworcHVibGljOgorICAgIFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cygpCisg
ICAgICAgIDogbV9sZWZ0T2Zmc2V0KDApCisgICAgICAgICwgbV9yaWdodE9mZnNldCgwKQorICAg
ICAgICAsIG1fdG9wT2Zmc2V0KDApCisgICAgICAgICwgbV9ib3R0b21PZmZzZXQoMCkKKyAgICB7
IH0KKworICAgIHZpcnR1YWwgQ29uc3RyYWludFR5cGUgY29uc3RyYWludFR5cGUoKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiBTdGlja3lQb3NpdGlvbkNvbnN0cmFpbnQ7IH07CisgICAgRmxvYXRT
aXplIGNvbXB1dGVTdGlja3lPZmZzZXQoY29uc3QgRmxvYXRSZWN0JiB2aWV3cG9ydFJlY3QpIGNv
bnN0OworCisgICAgY29uc3QgRmxvYXRTaXplIHN0aWNreU9mZnNldEF0TGFzdExheW91dCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RpY2t5T2Zmc2V0QXRMYXN0TGF5b3V0OyB9CisgICAgdm9pZCBzZXRT
dGlja3lPZmZzZXRBdExhc3RMYXlvdXQoY29uc3QgRmxvYXRTaXplJiBvZmZzZXQpIHsgbV9zdGlj
a3lPZmZzZXRBdExhc3RMYXlvdXQgPSBvZmZzZXQ7IH0KKworICAgIEZsb2F0UG9pbnQgbGF5ZXJQ
b3NpdGlvbkZvclZpZXdwb3J0UmVjdChjb25zdCBGbG9hdFJlY3QmIHZpZXdwb3J0UmVjdCkgY29u
c3Q7CisKKyAgICBjb25zdCBGbG9hdFBvaW50JiBsYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KCkg
Y29uc3QgeyByZXR1cm4gbV9sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0OyB9CisgICAgdm9pZCBz
ZXRMYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KSB7IG1f
bGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCA9IHBvaW50OyB9CisKKyAgICBmbG9hdCBsZWZ0T2Zm
c2V0KCkgY29uc3QgeyByZXR1cm4gbV9sZWZ0T2Zmc2V0OyB9CisgICAgZmxvYXQgcmlnaHRPZmZz
ZXQoKSBjb25zdCB7IHJldHVybiBtX3JpZ2h0T2Zmc2V0OyB9CisgICAgZmxvYXQgdG9wT2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gbV90b3BPZmZzZXQ7IH0KKyAgICBmbG9hdCBib3R0b21PZmZzZXQo
KSBjb25zdCB7IHJldHVybiBtX2JvdHRvbU9mZnNldDsgfQorCisgICAgdm9pZCBzZXRMZWZ0T2Zm
c2V0KGZsb2F0IG9mZnNldCkgeyBtX2xlZnRPZmZzZXQgPSBvZmZzZXQ7IH0KKyAgICB2b2lkIHNl
dFJpZ2h0T2Zmc2V0KGZsb2F0IG9mZnNldCkgeyBtX3JpZ2h0T2Zmc2V0ID0gb2Zmc2V0OyB9Cisg
ICAgdm9pZCBzZXRUb3BPZmZzZXQoZmxvYXQgb2Zmc2V0KSB7IG1fdG9wT2Zmc2V0ID0gb2Zmc2V0
OyB9CisgICAgdm9pZCBzZXRCb3R0b21PZmZzZXQoZmxvYXQgb2Zmc2V0KSB7IG1fYm90dG9tT2Zm
c2V0ID0gb2Zmc2V0OyB9CisKKyAgICB2b2lkIHNldEFic29sdXRlQ29udGFpbmluZ0Jsb2NrUmVj
dChjb25zdCBGbG9hdFJlY3QmIHJlY3QpIHsgbV9hYnNvbHV0ZUNvbnRhaW5pbmdCbG9ja1JlY3Qg
PSByZWN0OyB9CisgICAgdm9pZCBzZXRBYnNvbHV0ZVN0aWNreUJveFJlY3QoY29uc3QgRmxvYXRS
ZWN0JiByZWN0KSB7IG1fYWJzb2x1dGVTdGlja3lCb3hSZWN0ID0gcmVjdDsgfQorCitwcml2YXRl
OgorICAgIGZsb2F0IG1fbGVmdE9mZnNldDsKKyAgICBmbG9hdCBtX3JpZ2h0T2Zmc2V0OworICAg
IGZsb2F0IG1fdG9wT2Zmc2V0OworICAgIGZsb2F0IG1fYm90dG9tT2Zmc2V0OworICAgIEZsb2F0
UmVjdCBtX2Fic29sdXRlQ29udGFpbmluZ0Jsb2NrUmVjdDsKKyAgICBGbG9hdFJlY3QgbV9hYnNv
bHV0ZVN0aWNreUJveFJlY3Q7CisgICAgRmxvYXRTaXplIG1fc3RpY2t5T2Zmc2V0QXRMYXN0TGF5
b3V0OworICAgIEZsb2F0UG9pbnQgbV9sYXllclBvc2l0aW9uQXRMYXN0TGF5b3V0OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2Nyb2xsaW5nQ29uc3RyYWludHNf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5j
cHAKaW5kZXggZTVjMWEwOWJjOTk5MjE0MTQ4NzBhNWE1ZGU3MTI3YTRkYTBkY2UxOS4uOGRlZWRk
ZjM4YjY0MjUwNDI4NzdhMGZjOTI3ZGIwYWY1OGZlMmFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC0zNyw2ICszNyw3IEBA
CiAjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNp
bmNsdWRlICJSZW5kZXJWaWV3LmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nQ29uc3RyYWludHMuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybVN0YXRlLmgiCiAjaW5j
bHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC01NzMsMTEgKzU3NCwxMCBAQCBMYXlvdXRQb2lu
dCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6YWRqdXN0ZWRQb3NpdGlvblJlbGF0aXZlVG9PZmZzZXRQ
YXJlbnQoY29uc3QgTAogICAgIHJldHVybiByZWZlcmVuY2VQb2ludDsKIH0KIAotTGF5b3V0U2l6
ZSBSZW5kZXJCb3hNb2RlbE9iamVjdDo6c3RpY2t5UG9zaXRpb25PZmZzZXQoKSBjb25zdAordm9p
ZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6Y29tcHV0ZVN0aWNreVBvc2l0aW9uQ29uc3RyYWludHMo
U3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzJiBjb25zdHJhaW50cywgY29uc3QgRmxv
YXRSZWN0JiB2aWV3cG9ydFJlY3QpIGNvbnN0CiB7CiAgICAgUmVuZGVyQmxvY2sqIGNvbnRhaW5p
bmdCbG9jayA9IHRoaXMtPmNvbnRhaW5pbmdCbG9jaygpOwogCi0gICAgTGF5b3V0UmVjdCB2aWV3
cG9ydFJlY3QgPSB2aWV3KCktPmZyYW1lVmlldygpLT52aXNpYmxlQ29udGVudFJlY3QoKTsKICAg
ICBMYXlvdXRSZWN0IGNvbnRhaW5lckNvbnRlbnRSZWN0ID0gY29udGFpbmluZ0Jsb2NrLT5jb250
ZW50Qm94UmVjdCgpOwogCiAgICAgTGF5b3V0VW5pdCBtaW5MZWZ0TWFyZ2luID0gbWluaW11bVZh
bHVlRm9yTGVuZ3RoKHN0eWxlKCktPm1hcmdpbkxlZnQoKSwgY29udGFpbmluZ0Jsb2NrLT5hdmFp
bGFibGVMb2dpY2FsV2lkdGgoKSwgdmlldygpKTsKQEAgLTU4OCw3ICs1ODgsNyBAQCBMYXlvdXRT
aXplIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzdGlja3lQb3NpdGlvbk9mZnNldCgpIGNvbnN0CiAg
ICAgLy8gQ29tcHV0ZSB0aGUgY29udGFpbmVyLXJlbGF0aXZlIGFyZWEgd2l0aGluIHdoaWNoIHRo
ZSBzdGlja3kgZWxlbWVudCBpcyBhbGxvd2VkIHRvIG1vdmUuCiAgICAgY29udGFpbmVyQ29udGVu
dFJlY3QubW92ZShtaW5MZWZ0TWFyZ2luLCBtaW5Ub3BNYXJnaW4pOwogICAgIGNvbnRhaW5lckNv
bnRlbnRSZWN0LmNvbnRyYWN0KG1pbkxlZnRNYXJnaW4gKyBtaW5SaWdodE1hcmdpbiwgbWluVG9w
TWFyZ2luICsgbWluQm90dG9tTWFyZ2luKTsKLSAgICBGbG9hdFJlY3QgYWJzQ29udGFpbmVyQ29u
dGVudFJlY3QgPSBjb250YWluaW5nQmxvY2stPmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRSZWN0
KGNvbnRhaW5lckNvbnRlbnRSZWN0KSkuYm91bmRpbmdCb3goKTsKKyAgICBjb25zdHJhaW50cy5z
ZXRBYnNvbHV0ZUNvbnRhaW5pbmdCbG9ja1JlY3QoY29udGFpbmluZ0Jsb2NrLT5sb2NhbFRvQWJz
b2x1dGVRdWFkKEZsb2F0UmVjdChjb250YWluZXJDb250ZW50UmVjdCkpLmJvdW5kaW5nQm94KCkp
OwogCiAgICAgTGF5b3V0UmVjdCBzdGlja3lCb3hSZWN0ID0gZnJhbWVSZWN0Rm9yU3RpY2t5UG9z
aXRpb25pbmcoKTsKICAgICBMYXlvdXRSZWN0IGZsaXBwZWRTdGlja3lCb3hSZWN0ID0gc3RpY2t5
Qm94UmVjdDsKQEAgLTU5OSw1MyArNTk5LDM4IEBAIExheW91dFNpemUgUmVuZGVyQm94TW9kZWxP
YmplY3Q6OnN0aWNreVBvc2l0aW9uT2Zmc2V0KCkgY29uc3QKICAgICBGbG9hdFJlY3QgYWJzQ29u
dGFpbmVyRnJhbWUgPSBjb250YWluaW5nQmxvY2stPmxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRS
ZWN0KEZsb2F0UG9pbnQoKSwgY29udGFpbmluZ0Jsb2NrLT5zaXplKCkpKS5ib3VuZGluZ0JveCgp
OwogICAgIC8vIFdlIGNhbid0IGNhbGwgbG9jYWxUb0Fic29sdXRlIG9uIHx0aGlzfCBiZWNhdXNl
IHRoYXQgd2lsbCByZWN1ci4gRklYTUU6IEZvciBub3csIGFzc3VtZSB0aGF0IHx0aGlzfCBpcyBu
b3QgdHJhbnNmb3JtZWQuCiAgICAgRmxvYXRSZWN0IGFic29sdXRlU3RpY2t5Qm94UmVjdChhYnND
b250YWluZXJGcmFtZS5sb2NhdGlvbigpICsgc3RpY2t5TG9jYXRpb24sIGZsaXBwZWRTdGlja3lC
b3hSZWN0LnNpemUoKSk7CisgICAgY29uc3RyYWludHMuc2V0QWJzb2x1dGVTdGlja3lCb3hSZWN0
KGFic29sdXRlU3RpY2t5Qm94UmVjdCk7CiAKLSAgICBGbG9hdFBvaW50IG9yaWdpbmFsTG9jYXRp
b24gPSBhYnNvbHV0ZVN0aWNreUJveFJlY3QubG9jYXRpb24oKTsKKyAgICBpZiAoIXN0eWxlKCkt
PmxlZnQoKS5pc0F1dG8oKSkgeworICAgICAgICBjb25zdHJhaW50cy5zZXRMZWZ0T2Zmc2V0KHZh
bHVlRm9yTGVuZ3RoKHN0eWxlKCktPmxlZnQoKSwgdmlld3BvcnRSZWN0LndpZHRoKCksIHZpZXco
KSkpOworICAgICAgICBjb25zdHJhaW50cy5hZGRBbmNob3JFZGdlKFZpZXdwb3J0Q29uc3RyYWlu
dHM6OkFuY2hvckVkZ2VMZWZ0KTsKKyAgICB9CiAKLSAgICAvLyBIb3Jpem9udGFsIHBvc2l0aW9u
LgogICAgIGlmICghc3R5bGUoKS0+cmlnaHQoKS5pc0F1dG8oKSkgewotICAgICAgICBMYXlvdXRV
bml0IHJpZ2h0TGltaXQgPSB2aWV3cG9ydFJlY3QubWF4WCgpIC0gdmFsdWVGb3JMZW5ndGgoc3R5
bGUoKS0+cmlnaHQoKSwgdmlld3BvcnRSZWN0LndpZHRoKCksIHZpZXcoKSk7Ci0gICAgICAgIExh
eW91dFVuaXQgcmlnaHREZWx0YSA9IG1pbjxmbG9hdD4oMCwgcmlnaHRMaW1pdC50b0Zsb2F0KCkg
LSBhYnNvbHV0ZVN0aWNreUJveFJlY3QubWF4WCgpKTsKLSAgICAgICAgTGF5b3V0VW5pdCBhdmFp
bGFibGVTcGFjZSA9IG1pbjxmbG9hdD4oMCwgYWJzQ29udGFpbmVyQ29udGVudFJlY3QueCgpIC0g
YWJzb2x1dGVTdGlja3lCb3hSZWN0LngoKSk7Ci0gICAgICAgIGlmIChyaWdodERlbHRhIDwgYXZh
aWxhYmxlU3BhY2UpCi0gICAgICAgICAgICByaWdodERlbHRhID0gYXZhaWxhYmxlU3BhY2U7Ci0K
LSAgICAgICAgYWJzb2x1dGVTdGlja3lCb3hSZWN0Lm1vdmUocmlnaHREZWx0YSwgMCk7CisgICAg
ICAgIGNvbnN0cmFpbnRzLnNldFJpZ2h0T2Zmc2V0KHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPnJp
Z2h0KCksIHZpZXdwb3J0UmVjdC53aWR0aCgpLCB2aWV3KCkpKTsKKyAgICAgICAgY29uc3RyYWlu
dHMuYWRkQW5jaG9yRWRnZShWaWV3cG9ydENvbnN0cmFpbnRzOjpBbmNob3JFZGdlUmlnaHQpOwog
ICAgIH0KIAotICAgIGlmICghc3R5bGUoKS0+bGVmdCgpLmlzQXV0bygpKSB7Ci0gICAgICAgIExh
eW91dFVuaXQgbGVmdExpbWl0ID0gdmlld3BvcnRSZWN0LngoKSArIHZhbHVlRm9yTGVuZ3RoKHN0
eWxlKCktPmxlZnQoKSwgdmlld3BvcnRSZWN0LndpZHRoKCksIHZpZXcoKSk7Ci0gICAgICAgIExh
eW91dFVuaXQgbGVmdERlbHRhID0gbWF4PGZsb2F0PigwLCBsZWZ0TGltaXQudG9GbG9hdCgpIC0g
YWJzb2x1dGVTdGlja3lCb3hSZWN0LngoKSk7Ci0gICAgICAgIExheW91dFVuaXQgYXZhaWxhYmxl
U3BhY2UgPSBtYXg8ZmxvYXQ+KDAsIGFic0NvbnRhaW5lckNvbnRlbnRSZWN0Lm1heFgoKSAtIGFi
c29sdXRlU3RpY2t5Qm94UmVjdC5tYXhYKCkpOwotICAgICAgICBpZiAobGVmdERlbHRhID4gYXZh
aWxhYmxlU3BhY2UpCi0gICAgICAgICAgICBsZWZ0RGVsdGEgPSBhdmFpbGFibGVTcGFjZTsKLQot
ICAgICAgICBhYnNvbHV0ZVN0aWNreUJveFJlY3QubW92ZShsZWZ0RGVsdGEsIDApOworICAgIGlm
ICghc3R5bGUoKS0+dG9wKCkuaXNBdXRvKCkpIHsKKyAgICAgICAgY29uc3RyYWludHMuc2V0VG9w
T2Zmc2V0KHZhbHVlRm9yTGVuZ3RoKHN0eWxlKCktPnRvcCgpLCB2aWV3cG9ydFJlY3QuaGVpZ2h0
KCksIHZpZXcoKSkpOworICAgICAgICBjb25zdHJhaW50cy5hZGRBbmNob3JFZGdlKFZpZXdwb3J0
Q29uc3RyYWludHM6OkFuY2hvckVkZ2VUb3ApOwogICAgIH0KIAotICAgIC8vIFZlcnRpY2FsIHBv
c2l0aW9uLgogICAgIGlmICghc3R5bGUoKS0+Ym90dG9tKCkuaXNBdXRvKCkpIHsKLSAgICAgICAg
TGF5b3V0VW5pdCBib3R0b21MaW1pdCA9IHZpZXdwb3J0UmVjdC5tYXhZKCkgLSB2YWx1ZUZvckxl
bmd0aChzdHlsZSgpLT5ib3R0b20oKSwgdmlld3BvcnRSZWN0LmhlaWdodCgpLCB2aWV3KCkpOwot
ICAgICAgICBMYXlvdXRVbml0IGJvdHRvbURlbHRhID0gbWluPGZsb2F0PigwLCBib3R0b21MaW1p
dC50b0Zsb2F0KCkgLSBhYnNvbHV0ZVN0aWNreUJveFJlY3QubWF4WSgpKTsKLSAgICAgICAgTGF5
b3V0VW5pdCBhdmFpbGFibGVTcGFjZSA9IG1pbjxmbG9hdD4oMCwgYWJzQ29udGFpbmVyQ29udGVu
dFJlY3QueSgpIC0gYWJzb2x1dGVTdGlja3lCb3hSZWN0LnkoKSk7Ci0gICAgICAgIGlmIChib3R0
b21EZWx0YSA8IGF2YWlsYWJsZVNwYWNlKQotICAgICAgICAgICAgYm90dG9tRGVsdGEgPSBhdmFp
bGFibGVTcGFjZTsKLQotICAgICAgICBhYnNvbHV0ZVN0aWNreUJveFJlY3QubW92ZSgwLCBib3R0
b21EZWx0YSk7CisgICAgICAgIGNvbnN0cmFpbnRzLnNldEJvdHRvbU9mZnNldCh2YWx1ZUZvckxl
bmd0aChzdHlsZSgpLT5ib3R0b20oKSwgdmlld3BvcnRSZWN0LmhlaWdodCgpLCB2aWV3KCkpKTsK
KyAgICAgICAgY29uc3RyYWludHMuYWRkQW5jaG9yRWRnZShWaWV3cG9ydENvbnN0cmFpbnRzOjpB
bmNob3JFZGdlQm90dG9tKTsKICAgICB9Cit9CiAKLSAgICBpZiAoIXN0eWxlKCktPnRvcCgpLmlz
QXV0bygpKSB7Ci0gICAgICAgIExheW91dFVuaXQgdG9wTGltaXQgPSB2aWV3cG9ydFJlY3QueSgp
ICsgdmFsdWVGb3JMZW5ndGgoc3R5bGUoKS0+dG9wKCksIHZpZXdwb3J0UmVjdC5oZWlnaHQoKSwg
dmlldygpKTsKLSAgICAgICAgTGF5b3V0VW5pdCB0b3BEZWx0YSA9IG1heDxmbG9hdD4oMCwgdG9w
TGltaXQudG9GbG9hdCgpIC0gYWJzb2x1dGVTdGlja3lCb3hSZWN0LnkoKSk7Ci0gICAgICAgIExh
eW91dFVuaXQgYXZhaWxhYmxlU3BhY2UgPSBtYXg8ZmxvYXQ+KDAsIGFic0NvbnRhaW5lckNvbnRl
bnRSZWN0Lm1heFkoKSAtIGFic29sdXRlU3RpY2t5Qm94UmVjdC5tYXhZKCkpOwotICAgICAgICBp
ZiAodG9wRGVsdGEgPiBhdmFpbGFibGVTcGFjZSkKLSAgICAgICAgICAgIHRvcERlbHRhID0gYXZh
aWxhYmxlU3BhY2U7CitMYXlvdXRTaXplIFJlbmRlckJveE1vZGVsT2JqZWN0OjpzdGlja3lQb3Np
dGlvbk9mZnNldCgpIGNvbnN0Cit7CisgICAgTGF5b3V0UmVjdCB2aWV3cG9ydFJlY3QgPSB2aWV3
KCktPmZyYW1lVmlldygpLT52aXNpYmxlQ29udGVudFJlY3QoKTsKIAotICAgICAgICBhYnNvbHV0
ZVN0aWNreUJveFJlY3QubW92ZSgwLCB0b3BEZWx0YSk7Ci0gICAgfQorICAgIFN0aWNreVBvc2l0
aW9uVmlld3BvcnRDb25zdHJhaW50cyBjb25zdHJhaW50czsKKyAgICBjb21wdXRlU3RpY2t5UG9z
aXRpb25Db25zdHJhaW50cyhjb25zdHJhaW50cywgdmlld3BvcnRSZWN0KTsKICAgICAKICAgICAv
LyBUaGUgc3RpY2t5IG9mZnNldCBpcyBwaHlzaWNhbCwgc28gd2UgY2FuIGp1c3QgcmV0dXJuIHRo
ZSBkZWx0YSBjb21wdXRlZCBpbiBhYnNvbHV0ZSBjb29yZHMgKHRob3VnaCBpdCBtYXkgYmUgd3Jv
bmcgd2l0aCB0cmFuc2Zvcm1zKS4KLSAgICByZXR1cm4gcm91bmRlZExheW91dFNpemUoYWJzb2x1
dGVTdGlja3lCb3hSZWN0LmxvY2F0aW9uKCkgLSBvcmlnaW5hbExvY2F0aW9uKTsKKyAgICByZXR1
cm4gTGF5b3V0U2l6ZShjb25zdHJhaW50cy5jb21wdXRlU3RpY2t5T2Zmc2V0KHZpZXdwb3J0UmVj
dCkpOwogfQogCiBMYXlvdXRTaXplIFJlbmRlckJveE1vZGVsT2JqZWN0OjpvZmZzZXRGb3JJbkZs
b3dQb3NpdGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3hNb2RlbE9iamVjdC5oCmluZGV4IGZhNjA2YWViYTNkZjEyYTM0ZDkyMmNlYzJmMWE5N2UyY2Q2
MmQzY2IuLjZlZTM1NGM5YWM4OTJkZjg5N2M5YWVjYjEzM2RlMGIxMTlmZGFiYTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCkBAIC01MSw2
ICs1MSw3IEBAIGVudW0gQ29udGVudENoYW5nZVR5cGUgewogfTsKIAogY2xhc3MgS2V5ZnJhbWVM
aXN0OworY2xhc3MgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOwogCiAvLyBUaGlz
IGNsYXNzIGlzIHRoZSBiYXNlIGZvciBhbGwgb2JqZWN0cyB0aGF0IGFkaGVyZSB0byB0aGUgQ1NT
IGJveCBtb2RlbCBhcyBkZXNjcmliZWQKIC8vIGF0IGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIx
L2JveC5odG1sCkBAIC02Myw2ICs2NCw3IEBAIHB1YmxpYzoKICAgICBMYXlvdXRTaXplIHJlbGF0
aXZlUG9zaXRpb25PZmZzZXQoKSBjb25zdDsKICAgICBMYXlvdXRTaXplIHJlbGF0aXZlUG9zaXRp
b25Mb2dpY2FsT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS0+aXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKSA/IHJlbGF0aXZlUG9zaXRpb25PZmZzZXQoKSA6IHJlbGF0aXZlUG9zaXRpb25P
ZmZzZXQoKS50cmFuc3Bvc2VkU2l6ZSgpOyB9CiAKKyAgICB2b2lkIGNvbXB1dGVTdGlja3lQb3Np
dGlvbkNvbnN0cmFpbnRzKFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cyYsIGNvbnN0
IEZsb2F0UmVjdCYgdmlld3BvcnRSZWN0KSBjb25zdDsKICAgICBMYXlvdXRTaXplIHN0aWNreVBv
c2l0aW9uT2Zmc2V0KCkgY29uc3Q7CiAgICAgTGF5b3V0U2l6ZSBzdGlja3lQb3NpdGlvbkxvZ2lj
YWxPZmZzZXQoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9k
ZSgpID8gc3RpY2t5UG9zaXRpb25PZmZzZXQoKSA6IHN0aWNreVBvc2l0aW9uT2Zmc2V0KCkudHJh
bnNwb3NlZFNpemUoKTsgfQogCg==
</data>
<flag name="review"
          id="173776"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>