<?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>61574</bug_id>
          
          <creation_ts>2011-05-26 15:57:39 -0700</creation_ts>
          <short_desc>Switch MouseRelatedEvent to use IntPoint</short_desc>
          <delta_ts>2011-06-01 16:32:25 -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>UI Events</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>60318</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Emil A Eklund">eae</reporter>
          <assigned_to name="Emil A Eklund">eae</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>leviw</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>410954</commentid>
    <comment_count>0</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-05-26 15:57:39 -0700</bug_when>
    <thetext>Convert x,y pairs to IntPoint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412751</commentid>
    <comment_count>1</comment_count>
      <attachid>95455</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-05-31 11:05:28 -0700</bug_when>
    <thetext>Created attachment 95455
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412758</commentid>
    <comment_count>2</comment_count>
      <attachid>95455</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-31 11:19:52 -0700</bug_when>
    <thetext>Comment on attachment 95455
Patch

Attachment 95455 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/8753418</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412840</commentid>
    <comment_count>3</comment_count>
      <attachid>95478</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-05-31 13:57:00 -0700</bug_when>
    <thetext>Created attachment 95478
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412972</commentid>
    <comment_count>4</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-05-31 16:25:11 -0700</bug_when>
    <thetext>I guess I&apos;ll need to include &lt;wtf/MathExtras.h&gt;.h instead of &lt;math.h&gt; to make the windows build happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412994</commentid>
    <comment_count>5</comment_count>
      <attachid>95511</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-05-31 16:55:53 -0700</bug_when>
    <thetext>Created attachment 95511
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412997</commentid>
    <comment_count>6</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-05-31 16:57:05 -0700</bug_when>
    <thetext>Hopefully this should make the windows bot happy. Let&apos;s wait and see...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413084</commentid>
    <comment_count>7</comment_count>
      <attachid>95511</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-31 19:28:35 -0700</bug_when>
    <thetext>Comment on attachment 95511
Patch

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

&gt; Source/WebCore/dom/WheelEvent.cpp:46
&gt; +    , m_wheelDelta(IntPoint((int)(wheelTicks.x() * 120), (int)(wheelTicks.y() * 120)))

c++ casts, not c. :)

&gt; Source/WebCore/platform/graphics/IntPoint.h:99
&gt; +        m_x = lroundf((float)m_x * sx);
&gt; +        m_y = lroundf((float)m_y * sy);

Again, c++, not c.  Otherwise fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413519</commentid>
    <comment_count>8</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-06-01 11:09:03 -0700</bug_when>
    <thetext>Thanks Eric. I&apos;ll try to remember to use C++ style casts in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413524</commentid>
    <comment_count>9</comment_count>
      <attachid>95630</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-06-01 11:14:14 -0700</bug_when>
    <thetext>Created attachment 95630
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413742</commentid>
    <comment_count>10</comment_count>
      <attachid>95630</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-06-01 16:19:14 -0700</bug_when>
    <thetext>Comment on attachment 95630
Patch for landing

Clearing flags on attachment: 95630

Committed r87865: &lt;http://trac.webkit.org/changeset/87865&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413743</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-06-01 16:19:20 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413748</commentid>
    <comment_count>12</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-06-01 16:32:25 -0700</bug_when>
    <thetext>*** Bug 61575 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95455</attachid>
            <date>2011-05-31 11:05:28 -0700</date>
            <delta_ts>2011-05-31 11:21:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61574-20110531110527.patch</filename>
            <type>text/plain</type>
            <size>23532</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg3NTg1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTEtMDUtMzEgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFN3aXRjaCBNb3VzZVJlbGF0ZWRFdmVudCB0byB1c2UgSW50UG9p
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxNTc0
CisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGRvbS9N
b3VzZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2ltdWxhdGVkTW91c2VFdmVudDo6U2ltdWxhdGVkTW91c2VFdmVudCk6Cisg
ICAgICAgICogZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1v
dXNlUmVsYXRlZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpj
b250ZW50c0xvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojpp
bml0Q29vcmRpbmF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZlbnQ6OmNv
bXB1dGVQYWdlTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZlbnQ6
OmNvbXB1dGVSZWxhdGl2ZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRl
ZEV2ZW50OjpsYXllclgpOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZlbnQ6Omxh
eWVyWSk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6b2Zmc2V0WCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6b2Zmc2V0WSk6CisgICAgICAgIChX
ZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6cGFnZUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojp4KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRl
ZEV2ZW50Ojp5KToKKyAgICAgICAgKiBkb20vTW91c2VSZWxhdGVkRXZlbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50OjpzY3JlZW5YKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vdXNlUmVsYXRlZEV2ZW50OjpzY3JlZW5ZKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVs
YXRlZEV2ZW50OjpzY3JlZW5Mb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0
ZWRFdmVudDo6Y2xpZW50WCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6
Y2xpZW50WSk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6Y2xpZW50TG9j
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZlbnQ6OnBhZ2VYKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50OjpwYWdlWSk6CisgICAgICAgIChXZWJD
b3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6YWJzb2x1dGVMb2NhdGlvbik6CisgICAgICAgICogZG9t
L1doZWVsRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudDo6V2hlZWxFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50Ojppbml0V2hlZWxFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50RGlzcGF0Y2hNZWRpYXRvcjo6V2hlZWxFdmVudERpc3Bh
dGNoTWVkaWF0b3IpOgorICAgICAgICAqIGRvbS9XaGVlbEV2ZW50Lmg6CisgICAgICAgIChXZWJD
b3JlOjpXaGVlbEV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudDo6
d2hlZWxEZWx0YSk6CisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50Ojp3aGVlbERlbHRhWCk6
CisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50Ojp3aGVlbERlbHRhWSk6CisgICAgICAgIChX
ZWJDb3JlOjpXaGVlbEV2ZW50OjpyYXdEZWx0YVgpOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxF
dmVudDo6cmF3RGVsdGFZKToKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnQ6OmlzSG9yaXpv
bnRhbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkludFBvaW50OjpzY2FsZSk6CisKIDIwMTEtMDUtMjcgIFN0ZXBoYW5pZSBMZXdp
cyAgPHNsZXdpc0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vTW91c2VFdmVudC5jcHAJKHJldmlzaW9uIDg3NTg1KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL01vdXNlRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCw4ICs1NCw4IEBAIE1vdXNl
RXZlbnQ6Ok1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW4KICAgICAgICAgICAgICAgICAgICAg
ICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5
LAogICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCBidXR0b24sIFBhc3NSZWZQ
dHI8RXZlbnRUYXJnZXQ+IHJlbGF0ZWRUYXJnZXQsCiAgICAgICAgICAgICAgICAgICAgICAgIFBh
c3NSZWZQdHI8Q2xpcGJvYXJkPiBjbGlwYm9hcmQsIGJvb2wgaXNTaW11bGF0ZWQpCi0gICAgOiBN
b3VzZVJlbGF0ZWRFdmVudChldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywg
ZGV0YWlsLCBzY3JlZW5YLCBzY3JlZW5ZLAotICAgICAgICAgICAgICAgICAgICAgICAgcGFnZVgs
IHBhZ2VZLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCBpc1NpbXVsYXRlZCkK
KyAgICA6IE1vdXNlUmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxl
LCB2aWV3LCBkZXRhaWwsIEludFBvaW50KHNjcmVlblgsIHNjcmVlblkpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgSW50UG9pbnQocGFnZVgsIHBhZ2VZKSwgY3RybEtleSwgYWx0S2V5LCBzaGlm
dEtleSwgbWV0YUtleSwgaXNTaW11bGF0ZWQpCiAgICAgLCBtX2J1dHRvbihidXR0b24gPT0gKHVu
c2lnbmVkIHNob3J0KS0xID8gMCA6IGJ1dHRvbikKICAgICAsIG1fYnV0dG9uRG93bihidXR0b24g
IT0gKHVuc2lnbmVkIHNob3J0KS0xKQogICAgICwgbV9yZWxhdGVkVGFyZ2V0KHJlbGF0ZWRUYXJn
ZXQpCkBAIC03Nyw4ICs3Nyw3IEBAIHZvaWQgTW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQoY29u
c3QgQXQKIAogICAgIGluaXRVSUV2ZW50KHR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmll
dywgZGV0YWlsKTsKIAotICAgIG1fc2NyZWVuWCA9IHNjcmVlblg7Ci0gICAgbV9zY3JlZW5ZID0g
c2NyZWVuWTsKKyAgICBtX3NjcmVlbkxvY2F0aW9uID0gSW50UG9pbnQoc2NyZWVuWCwgc2NyZWVu
WSk7CiAgICAgbV9jdHJsS2V5ID0gY3RybEtleTsKICAgICBtX2FsdEtleSA9IGFsdEtleTsKICAg
ICBtX3NoaWZ0S2V5ID0gc2hpZnRLZXk7CkBAIC04Nyw3ICs4Niw3IEBAIHZvaWQgTW91c2VFdmVu
dDo6aW5pdE1vdXNlRXZlbnQoY29uc3QgQXQKICAgICBtX2J1dHRvbkRvd24gPSBidXR0b24gIT0g
KHVuc2lnbmVkIHNob3J0KS0xOwogICAgIG1fcmVsYXRlZFRhcmdldCA9IHJlbGF0ZWRUYXJnZXQ7
CiAKLSAgICBpbml0Q29vcmRpbmF0ZXMoY2xpZW50WCwgY2xpZW50WSk7CisgICAgaW5pdENvb3Jk
aW5hdGVzKEludFBvaW50KGNsaWVudFgsIGNsaWVudFkpKTsKIAogICAgIC8vIEZJWE1FOiBtX2lz
U2ltdWxhdGVkIGlzIG5vdCBzZXQgdG8gZmFsc2UgaGVyZS4KICAgICAvLyBGSVhNRTogbV9jbGlw
Ym9hcmQgaXMgbm90IHNldCB0byAwIGhlcmUuCkBAIC0xNTMsOSArMTUyLDggQEAgU2ltdWxhdGVk
TW91c2VFdmVudDo6U2ltdWxhdGVkTW91c2VFdmVudAogCiAgICAgaWYgKHRoaXMtPnVuZGVybHlp
bmdFdmVudCgpICYmIHRoaXMtPnVuZGVybHlpbmdFdmVudCgpLT5pc01vdXNlRXZlbnQoKSkgewog
ICAgICAgICBNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0gc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+
KHRoaXMtPnVuZGVybHlpbmdFdmVudCgpKTsKLSAgICAgICAgbV9zY3JlZW5YID0gbW91c2VFdmVu
dC0+c2NyZWVuWCgpOwotICAgICAgICBtX3NjcmVlblkgPSBtb3VzZUV2ZW50LT5zY3JlZW5ZKCk7
Ci0gICAgICAgIGluaXRDb29yZGluYXRlcyhtb3VzZUV2ZW50LT5jbGllbnRYKCksIG1vdXNlRXZl
bnQtPmNsaWVudFkoKSk7CisgICAgICAgIG1fc2NyZWVuTG9jYXRpb24gPSBtb3VzZUV2ZW50LT5z
Y3JlZW5Mb2NhdGlvbigpOworICAgICAgICBpbml0Q29vcmRpbmF0ZXMobW91c2VFdmVudC0+Y2xp
ZW50TG9jYXRpb24oKSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTW91
c2VSZWxhdGVkRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3Vz
ZVJlbGF0ZWRFdmVudC5jcHAJKHJldmlzaW9uIDg3NTg1KQorKysgU291cmNlL1dlYkNvcmUvZG9t
L01vdXNlUmVsYXRlZEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNTcgKzMzLDMwIEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIE1vdXNlUmVsYXRlZEV2ZW50OjpNb3VzZVJlbGF0ZWRF
dmVudCgpCi0gICAgOiBtX3NjcmVlblgoMCkKLSAgICAsIG1fc2NyZWVuWSgwKQotICAgICwgbV9j
bGllbnRYKDApCi0gICAgLCBtX2NsaWVudFkoMCkKLSAgICAsIG1fcGFnZVgoMCkKLSAgICAsIG1f
cGFnZVkoMCkKLSAgICAsIG1fbGF5ZXJYKDApCi0gICAgLCBtX2xheWVyWSgwKQotICAgICwgbV9v
ZmZzZXRYKDApCi0gICAgLCBtX29mZnNldFkoMCkKLSAgICAsIG1faXNTaW11bGF0ZWQoZmFsc2Up
CisgICAgOiBtX2lzU2ltdWxhdGVkKGZhbHNlKQogICAgICwgbV9oYXNDYWNoZWRSZWxhdGl2ZVBv
c2l0aW9uKGZhbHNlKQogewogfQogCi1zdGF0aWMgaW50IGNvbnRlbnRzWChBYnN0cmFjdFZpZXcq
IGFic3RyYWN0VmlldykKK3N0YXRpYyBJbnRTaXplIGNvbnRlbnRzU2Nyb2xsT2Zmc2V0KEFic3Ry
YWN0VmlldyogYWJzdHJhY3RWaWV3KQogewogICAgIGlmICghYWJzdHJhY3RWaWV3KQotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIEludFNpemUoKTsKICAgICBGcmFtZSogZnJhbWUg
PSBhYnN0cmFjdFZpZXctPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBJbnRTaXplKCk7CiAgICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcg
PSBmcmFtZS0+dmlldygpOwogICAgIGlmICghZnJhbWVWaWV3KQotICAgICAgICByZXR1cm4gMDsK
LSAgICByZXR1cm4gZnJhbWVWaWV3LT5zY3JvbGxYKCkgLyBmcmFtZS0+cGFnZVpvb21GYWN0b3Io
KTsKLX0KLQotc3RhdGljIGludCBjb250ZW50c1koQWJzdHJhY3RWaWV3KiBhYnN0cmFjdFZpZXcp
Ci17Ci0gICAgaWYgKCFhYnN0cmFjdFZpZXcpCi0gICAgICAgIHJldHVybiAwOwotICAgIEZyYW1l
KiBmcmFtZSA9IGFic3RyYWN0Vmlldy0+ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAg
ICByZXR1cm4gMDsKLSAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCk7Ci0g
ICAgaWYgKCFmcmFtZVZpZXcpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBmcmFtZVZp
ZXctPnNjcm9sbFkoKSAvIGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpOworICAgICAgICByZXR1cm4g
SW50U2l6ZSgpOworICAgIHJldHVybiBJbnRTaXplKGZyYW1lVmlldy0+c2Nyb2xsWCgpIC8gZnJh
bWUtPnBhZ2Vab29tRmFjdG9yKCksCisgICAgICAgIGZyYW1lVmlldy0+c2Nyb2xsWSgpIC8gZnJh
bWUtPnBhZ2Vab29tRmFjdG9yKCkpOwogfQogCiBNb3VzZVJlbGF0ZWRFdmVudDo6TW91c2VSZWxh
dGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiBhYnN0cmFjdFZpZXcsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRldGFpbCwgaW50IHNjcmVl
blgsIGludCBzY3JlZW5ZLCBpbnQgd2luZG93WCwgaW50IHdpbmRvd1ksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRldGFpbCwgY29uc3QgSW50UG9pbnQmIHNjcmVl
bkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgd2luZG93TG9jYXRpb24sCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBz
aGlmdEtleSwgYm9vbCBtZXRhS2V5LCBib29sIGlzU2ltdWxhdGVkKQogICAgIDogVUlFdmVudFdp
dGhLZXlTdGF0ZShldmVudFR5cGUsIGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgYWJzdHJhY3RWaWV3
LCBkZXRhaWwsIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXkpCi0gICAgLCBtX3Nj
cmVlblgoc2NyZWVuWCkKLSAgICAsIG1fc2NyZWVuWShzY3JlZW5ZKQotICAgICwgbV9jbGllbnRY
KDApCi0gICAgLCBtX2NsaWVudFkoMCkKLSAgICAsIG1fcGFnZVgoMCkKLSAgICAsIG1fcGFnZVko
MCkKKyAgICAsIG1fc2NyZWVuTG9jYXRpb24oc2NyZWVuTG9jYXRpb24pCiAgICAgLCBtX2lzU2lt
dWxhdGVkKGlzU2ltdWxhdGVkKQogewogICAgIEludFBvaW50IGFkanVzdGVkUGFnZUxvY2F0aW9u
OwpAQCAtOTMsMjMgKzY2LDIyIEBAIE1vdXNlUmVsYXRlZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVu
dChjb24KICAgICBpZiAoZnJhbWUgJiYgIWlzU2ltdWxhdGVkKSB7CiAgICAgICAgIGlmIChGcmFt
ZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCkpIHsKICAgICAgICAgICAgIHNjcm9sbFBv
c2l0aW9uID0gZnJhbWVWaWV3LT5zY3JvbGxQb3NpdGlvbigpOwotICAgICAgICAgICAgYWRqdXN0
ZWRQYWdlTG9jYXRpb24gPSBmcmFtZVZpZXctPndpbmRvd1RvQ29udGVudHMoSW50UG9pbnQod2lu
ZG93WCwgd2luZG93WSkpOworICAgICAgICAgICAgYWRqdXN0ZWRQYWdlTG9jYXRpb24gPSBmcmFt
ZVZpZXctPndpbmRvd1RvQ29udGVudHMod2luZG93TG9jYXRpb24pOwogICAgICAgICAgICAgZmxv
YXQgcGFnZVpvb20gPSBmcmFtZS0+cGFnZVpvb21GYWN0b3IoKTsKICAgICAgICAgICAgIGlmIChw
YWdlWm9vbSAhPSAxLjBmKSB7CiAgICAgICAgICAgICAgICAgLy8gQWRqdXN0IG91ciBwYWdlWCBh
bmQgcGFnZVkgdG8gYWNjb3VudCBmb3IgdGhlIHBhZ2Ugem9vbS4KLSAgICAgICAgICAgICAgICBh
ZGp1c3RlZFBhZ2VMb2NhdGlvbi5zZXRYKGxyb3VuZGYoYWRqdXN0ZWRQYWdlTG9jYXRpb24ueCgp
IC8gcGFnZVpvb20pKTsKLSAgICAgICAgICAgICAgICBhZGp1c3RlZFBhZ2VMb2NhdGlvbi5zZXRZ
KGxyb3VuZGYoYWRqdXN0ZWRQYWdlTG9jYXRpb24ueSgpIC8gcGFnZVpvb20pKTsKKyAgICAgICAg
ICAgICAgICBhZGp1c3RlZFBhZ2VMb2NhdGlvbi5zY2FsZSgxIC8gcGFnZVpvb20sIDEgLyBwYWdl
Wm9vbSk7CisKKyAgICAgICAgICAgICAgICAvLyBGSVhNRTogQ2hhbmdlIHRoaXMgdG8gdXNlIGZs
b2F0IG1hdGggYW5kIHByb3BlciByb3VuZGluZyAob3IKKyAgICAgICAgICAgICAgICAvLyBiZXR0
ZXIgeWV0LCB1c2UgSW50UG9pbnQ6OnNjYWxlKS4KICAgICAgICAgICAgICAgICBzY3JvbGxQb3Np
dGlvbi5zZXRYKHNjcm9sbFBvc2l0aW9uLngoKSAvIHBhZ2Vab29tKTsKICAgICAgICAgICAgICAg
ICBzY3JvbGxQb3NpdGlvbi5zZXRZKHNjcm9sbFBvc2l0aW9uLnkoKSAvIHBhZ2Vab29tKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAgIEludFBvaW50IGNsaWVudExvY2F0
aW9uKGFkanVzdGVkUGFnZUxvY2F0aW9uIC0gc2Nyb2xsUG9zaXRpb24pOwotICAgIG1fY2xpZW50
WCA9IGNsaWVudExvY2F0aW9uLngoKTsKLSAgICBtX2NsaWVudFkgPSBjbGllbnRMb2NhdGlvbi55
KCk7Ci0gICAgbV9wYWdlWCA9IGFkanVzdGVkUGFnZUxvY2F0aW9uLngoKTsKLSAgICBtX3BhZ2VZ
ID0gYWRqdXN0ZWRQYWdlTG9jYXRpb24ueSgpOworICAgIG1fY2xpZW50TG9jYXRpb24gPSBhZGp1
c3RlZFBhZ2VMb2NhdGlvbiAtIHRvU2l6ZShzY3JvbGxQb3NpdGlvbik7CisgICAgbV9wYWdlTG9j
YXRpb24gPSBhZGp1c3RlZFBhZ2VMb2NhdGlvbjsKIAogICAgIGluaXRDb29yZGluYXRlcygpOwog
fQpAQCAtMTE4LDI3ICs5MCwyMiBAQCB2b2lkIE1vdXNlUmVsYXRlZEV2ZW50Ojppbml0Q29vcmRp
bmF0ZXMoCiB7CiAgICAgLy8gU2V0IHVwIGluaXRpYWwgdmFsdWVzIGZvciBjb29yZGluYXRlcy4K
ICAgICAvLyBDb3JyZWN0IHZhbHVlcyBhcmUgY29tcHV0ZWQgbGF6aWx5LCBzZWUgY29tcHV0ZVJl
bGF0aXZlUG9zaXRpb24uCi0gICAgbV9sYXllclggPSBtX3BhZ2VYOwotICAgIG1fbGF5ZXJZID0g
bV9wYWdlWTsKLSAgICBtX29mZnNldFggPSBtX3BhZ2VYOwotICAgIG1fb2Zmc2V0WSA9IG1fcGFn
ZVk7CisgICAgbV9sYXllckxvY2F0aW9uID0gbV9wYWdlTG9jYXRpb247CisgICAgbV9vZmZzZXRM
b2NhdGlvbiA9IG1fcGFnZUxvY2F0aW9uOwogCiAgICAgY29tcHV0ZVBhZ2VMb2NhdGlvbigpOwog
ICAgIG1faGFzQ2FjaGVkUmVsYXRpdmVQb3NpdGlvbiA9IGZhbHNlOwogfQogCi12b2lkIE1vdXNl
UmVsYXRlZEV2ZW50Ojppbml0Q29vcmRpbmF0ZXMoaW50IGNsaWVudFgsIGludCBjbGllbnRZKQor
dm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6aW5pdENvb3JkaW5hdGVzKGNvbnN0IEludFBvaW50JiBj
bGllbnRMb2NhdGlvbikKIHsKICAgICAvLyBTZXQgdXAgaW5pdGlhbCB2YWx1ZXMgZm9yIGNvb3Jk
aW5hdGVzLgogICAgIC8vIENvcnJlY3QgdmFsdWVzIGFyZSBjb21wdXRlZCBsYXppbHksIHNlZSBj
b21wdXRlUmVsYXRpdmVQb3NpdGlvbi4KLSAgICBtX2NsaWVudFggPSBjbGllbnRYOwotICAgIG1f
Y2xpZW50WSA9IGNsaWVudFk7Ci0gICAgbV9wYWdlWCA9IGNsaWVudFggKyBjb250ZW50c1godmll
dygpKTsKLSAgICBtX3BhZ2VZID0gY2xpZW50WSArIGNvbnRlbnRzWSh2aWV3KCkpOwotICAgIG1f
bGF5ZXJYID0gbV9wYWdlWDsKLSAgICBtX2xheWVyWSA9IG1fcGFnZVk7Ci0gICAgbV9vZmZzZXRY
ID0gbV9wYWdlWDsKLSAgICBtX29mZnNldFkgPSBtX3BhZ2VZOworICAgIG1fY2xpZW50TG9jYXRp
b24gPSBjbGllbnRMb2NhdGlvbjsKKyAgICBtX3BhZ2VMb2NhdGlvbiA9IGNsaWVudExvY2F0aW9u
ICsgY29udGVudHNTY3JvbGxPZmZzZXQodmlldygpKTsKKworICAgIG1fbGF5ZXJMb2NhdGlvbiA9
IG1fcGFnZUxvY2F0aW9uOworICAgIG1fb2Zmc2V0TG9jYXRpb24gPSBtX3BhZ2VMb2NhdGlvbjsK
IAogICAgIGNvbXB1dGVQYWdlTG9jYXRpb24oKTsKICAgICBtX2hhc0NhY2hlZFJlbGF0aXZlUG9z
aXRpb24gPSBmYWxzZTsKQEAgLTE3MywyNSArMTQwLDI0IEBAIHZvaWQgTW91c2VSZWxhdGVkRXZl
bnQ6OmNvbXB1dGVSZWxhdGl2ZVAKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gQ29tcHV0ZSBj
b29yZGluYXRlcyB0aGF0IGFyZSBiYXNlZCBvbiB0aGUgdGFyZ2V0LgotICAgIG1fbGF5ZXJYID0g
bV9wYWdlWDsKLSAgICBtX2xheWVyWSA9IG1fcGFnZVk7Ci0gICAgbV9vZmZzZXRYID0gbV9wYWdl
WDsKLSAgICBtX29mZnNldFkgPSBtX3BhZ2VZOworICAgIG1fbGF5ZXJMb2NhdGlvbiA9IG1fcGFn
ZUxvY2F0aW9uOworICAgIG1fb2Zmc2V0TG9jYXRpb24gPSBtX3BhZ2VMb2NhdGlvbjsKIAogICAg
IC8vIE11c3QgaGF2ZSBhbiB1cGRhdGVkIHJlbmRlciB0cmVlIGZvciB0aGlzIG1hdGggdG8gd29y
ayBjb3JyZWN0bHkuCiAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVJZk5l
ZWRlZCgpOwogCi0gICAgLy8gQWRqdXN0IG9mZnNldFgvWSB0byBiZSByZWxhdGl2ZSB0byB0aGUg
dGFyZ2V0J3MgcG9zaXRpb24uCisgICAgLy8gQWRqdXN0IG9mZnNldExvY2F0aW9uIHRvIGJlIHJl
bGF0aXZlIHRvIHRoZSB0YXJnZXQncyBwb3NpdGlvbi4KICAgICBpZiAoIWlzU2ltdWxhdGVkKCkp
IHsKICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogciA9IHRhcmdldE5vZGUtPnJlbmRlcmVyKCkp
IHsKICAgICAgICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQb3MgPSByLT5hYnNvbHV0ZVRvTG9jYWwo
YWJzb2x1dGVMb2NhdGlvbigpLCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgICAgICBmbG9hdCB6b29t
RmFjdG9yID0gcGFnZVpvb21GYWN0b3IodGhpcyk7Ci0gICAgICAgICAgICBtX29mZnNldFggPSBs
cm91bmRmKGxvY2FsUG9zLngoKSAvIHpvb21GYWN0b3IpOwotICAgICAgICAgICAgbV9vZmZzZXRZ
ID0gbHJvdW5kZihsb2NhbFBvcy55KCkgLyB6b29tRmFjdG9yKTsKKyAgICAgICAgICAgIG1fb2Zm
c2V0TG9jYXRpb24gPSByb3VuZGVkSW50UG9pbnQobG9jYWxQb3MpOworICAgICAgICAgICAgZmxv
YXQgc2NhbGVGYWN0b3IgPSAxIC8gcGFnZVpvb21GYWN0b3IodGhpcyk7CisgICAgICAgICAgICBp
ZiAoc2NhbGVGYWN0b3IgIT0gMS4wZikKKyAgICAgICAgICAgICAgICBtX29mZnNldExvY2F0aW9u
LnNjYWxlKHNjYWxlRmFjdG9yLCBzY2FsZUZhY3Rvcik7CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICAvLyBBZGp1c3QgbGF5ZXJYL1kgdG8gYmUgcmVsYXRpdmUgdG8gdGhlIGxheWVyLgorICAgIC8v
IEFkanVzdCBsYXllckxvY2F0aW9uIHRvIGJlIHJlbGF0aXZlIHRvIHRoZSBsYXllci4KICAgICAv
LyBGSVhNRTogV2UncmUgcHJldHR5IHN1cmUgdGhpcyBpcyB0aGUgd3JvbmcgZGVmaW5pdGlvbiBv
ZiAibGF5ZXIuIgogICAgIC8vIE91ciBSZW5kZXJMYXllciBpcyBhIG1vcmUgbW9kZXJuIGNvbmNl
cHQsIGFuZCBsYXllclgvWSBpcyBzb21lCiAgICAgLy8gb3RoZXIgbm90aW9uIGFib3V0IGdyb3Vw
cyBvZiBlbGVtZW50cyAobGVmdCBvdmVyIGZyb20gdGhlIE5ldHNjYXBlIDQgZGF5cz8pOwpAQCAt
MjA0LDkgKzE3MCw3IEBAIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OmNvbXB1dGVSZWxhdGl2ZVAK
ICAgICBpZiAobiAmJiAobGF5ZXIgPSBuLT5yZW5kZXJlcigpLT5lbmNsb3NpbmdMYXllcigpKSkg
ewogICAgICAgICBsYXllci0+dXBkYXRlTGF5ZXJQb3NpdGlvbigpOwogICAgICAgICBmb3IgKDsg
bGF5ZXI7IGxheWVyID0gbGF5ZXItPnBhcmVudCgpKSB7Ci0gICAgICAgICAgICBjb25zdCBJbnRQ
b2ludCYgbG9jYXRpb24gPSBsYXllci0+bG9jYXRpb24oKTsKLSAgICAgICAgICAgIG1fbGF5ZXJY
IC09IGxvY2F0aW9uLngoKTsKLSAgICAgICAgICAgIG1fbGF5ZXJZIC09IGxvY2F0aW9uLnkoKTsK
KyAgICAgICAgICAgIG1fbGF5ZXJMb2NhdGlvbiAtPSB0b1NpemUobGF5ZXItPmxvY2F0aW9uKCkp
OwogICAgICAgICB9CiAgICAgfQogCkBAIC0yMTcsNTIgKzE4MSw1NyBAQCBpbnQgTW91c2VSZWxh
dGVkRXZlbnQ6OmxheWVyWCgpCiB7CiAgICAgaWYgKCFtX2hhc0NhY2hlZFJlbGF0aXZlUG9zaXRp
b24pCiAgICAgICAgIGNvbXB1dGVSZWxhdGl2ZVBvc2l0aW9uKCk7Ci0gICAgcmV0dXJuIG1fbGF5
ZXJYOworICAgIHJldHVybiBtX2xheWVyTG9jYXRpb24ueCgpOwogfQogCiBpbnQgTW91c2VSZWxh
dGVkRXZlbnQ6OmxheWVyWSgpCiB7CiAgICAgaWYgKCFtX2hhc0NhY2hlZFJlbGF0aXZlUG9zaXRp
b24pCiAgICAgICAgIGNvbXB1dGVSZWxhdGl2ZVBvc2l0aW9uKCk7Ci0gICAgcmV0dXJuIG1fbGF5
ZXJZOworICAgIHJldHVybiBtX2xheWVyTG9jYXRpb24ueSgpOwogfQogCiBpbnQgTW91c2VSZWxh
dGVkRXZlbnQ6Om9mZnNldFgoKQogewogICAgIGlmICghbV9oYXNDYWNoZWRSZWxhdGl2ZVBvc2l0
aW9uKQogICAgICAgICBjb21wdXRlUmVsYXRpdmVQb3NpdGlvbigpOwotICAgIHJldHVybiBtX29m
ZnNldFg7CisgICAgcmV0dXJuIG1fb2Zmc2V0TG9jYXRpb24ueCgpOwogfQogCiBpbnQgTW91c2VS
ZWxhdGVkRXZlbnQ6Om9mZnNldFkoKQogewogICAgIGlmICghbV9oYXNDYWNoZWRSZWxhdGl2ZVBv
c2l0aW9uKQogICAgICAgICBjb21wdXRlUmVsYXRpdmVQb3NpdGlvbigpOwotICAgIHJldHVybiBt
X29mZnNldFk7CisgICAgcmV0dXJuIG1fb2Zmc2V0TG9jYXRpb24ueSgpOwogfQogCiBpbnQgTW91
c2VSZWxhdGVkRXZlbnQ6OnBhZ2VYKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wYWdlWDsKKyAg
ICByZXR1cm4gbV9wYWdlTG9jYXRpb24ueCgpOwogfQogCiBpbnQgTW91c2VSZWxhdGVkRXZlbnQ6
OnBhZ2VZKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wYWdlWTsKKyAgICByZXR1cm4gbV9wYWdl
TG9jYXRpb24ueSgpOworfQorCitjb25zdCBJbnRQb2ludCYgTW91c2VSZWxhdGVkRXZlbnQ6OnBh
Z2VMb2NhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcGFnZUxvY2F0aW9uOwogfQogCiBp
bnQgTW91c2VSZWxhdGVkRXZlbnQ6OngoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBUaGlzIGlz
IG5vdCBjb3JyZWN0LgogICAgIC8vIFNlZSBNaWNyb3NvZnQgZG9jdW1lbnRhdGlvbiBhbmQgPGh0
dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvZG9tL3czY19ldmVudHMuaHRtbD4uCi0gICAgcmV0dXJu
IG1fY2xpZW50WDsKKyAgICByZXR1cm4gbV9jbGllbnRMb2NhdGlvbi54KCk7CiB9CiAKIGludCBN
b3VzZVJlbGF0ZWRFdmVudDo6eSgpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90
IGNvcnJlY3QuCiAgICAgLy8gU2VlIE1pY3Jvc29mdCBkb2N1bWVudGF0aW9uIGFuZCA8aHR0cDov
L3d3dy5xdWlya3Ntb2RlLm9yZy9kb20vdzNjX2V2ZW50cy5odG1sPi4KLSAgICByZXR1cm4gbV9j
bGllbnRZOworICAgIHJldHVybiBtX2NsaWVudExvY2F0aW9uLnkoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmgJ
KHJldmlzaW9uIDg3NTg1KQorKysgU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEwICszNCwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgcHVibGljOgogICAgICAgICAvLyBOb3RlIHRoYXQgdGhlc2UgdmFsdWVzIGFyZSBhZGp1
c3RlZCB0byBjb3VudGVyIHRoZSBlZmZlY3RzIG9mIHpvb20sIHNvIHRoYXQgdmFsdWVzCiAgICAg
ICAgIC8vIGV4cG9zZWQgdmlhIERPTSBBUElzIGFyZSBpbnZhcmlhbnQgdW5kZXIgem9vbWluZy4K
LSAgICAgICAgaW50IHNjcmVlblgoKSBjb25zdCB7IHJldHVybiBtX3NjcmVlblg7IH0KLSAgICAg
ICAgaW50IHNjcmVlblkoKSBjb25zdCB7IHJldHVybiBtX3NjcmVlblk7IH0KLSAgICAgICAgaW50
IGNsaWVudFgoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudFg7IH0KLSAgICAgICAgaW50IGNsaWVu
dFkoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudFk7IH0KKyAgICAgICAgaW50IHNjcmVlblgoKSBj
b25zdCB7IHJldHVybiBtX3NjcmVlbkxvY2F0aW9uLngoKTsgfQorICAgICAgICBpbnQgc2NyZWVu
WSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyZWVuTG9jYXRpb24ueSgpOyB9CisgICAgICAgIGNvbnN0
IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2NyZWVuTG9jYXRp
b247IH0KKyAgICAgICAgaW50IGNsaWVudFgoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudExvY2F0
aW9uLngoKTsgfQorICAgICAgICBpbnQgY2xpZW50WSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50
TG9jYXRpb24ueSgpOyB9CisgICAgICAgIGNvbnN0IEludFBvaW50JiBjbGllbnRMb2NhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50TG9jYXRpb247IH0KICAgICAgICAgaW50IGxheWVyWCgp
OwogICAgICAgICBpbnQgbGF5ZXJZKCk7CiAgICAgICAgIGludCBvZmZzZXRYKCk7CkBAIC00NSw0
MCArNDcsMzYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzU2ltdWxhdGVk
KCkgY29uc3QgeyByZXR1cm4gbV9pc1NpbXVsYXRlZDsgfQogICAgICAgICB2aXJ0dWFsIGludCBw
YWdlWCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGludCBwYWdlWSgpIGNvbnN0OworICAgICAg
ICB2aXJ0dWFsIGNvbnN0IEludFBvaW50JiBwYWdlTG9jYXRpb24oKSBjb25zdDsKICAgICAgICAg
aW50IHgoKSBjb25zdDsKICAgICAgICAgaW50IHkoKSBjb25zdDsKIAogICAgICAgICAvLyBQYWdl
IHBvaW50IGluICJhYnNvbHV0ZSIgY29vcmRpbmF0ZXMgKGkuZS4gcG9zdC16b29tZWQsIHBhZ2Ut
cmVsYXRpdmUgY29vcmRzLAogICAgICAgICAvLyB1c2FibGUgd2l0aCBSZW5kZXJPYmplY3Q6OmFi
c29sdXRlVG9Mb2NhbCkuCi0gICAgICAgIEludFBvaW50IGFic29sdXRlTG9jYXRpb24oKSBjb25z
dCB7IHJldHVybiBtX2Fic29sdXRlTG9jYXRpb247IH0KKyAgICAgICAgY29uc3QgSW50UG9pbnQm
IGFic29sdXRlTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2Fic29sdXRlTG9jYXRpb247IH0K
ICAgICAgICAgdm9pZCBzZXRBYnNvbHV0ZUxvY2F0aW9uKGNvbnN0IEludFBvaW50JiBwKSB7IG1f
YWJzb2x1dGVMb2NhdGlvbiA9IHA7IH0KICAgICAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIE1v
dXNlUmVsYXRlZEV2ZW50KCk7CiAgICAgICAgIE1vdXNlUmVsYXRlZEV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0
cjxBYnN0cmFjdFZpZXc+LAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGV0YWlsLCBp
bnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbnQgZGV0YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRp
b24sIGNvbnN0IEludFBvaW50JiB3aW5kb3dMb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRh
S2V5LCBib29sIGlzU2ltdWxhdGVkID0gZmFsc2UpOwogCiAgICAgICAgIHZvaWQgaW5pdENvb3Jk
aW5hdGVzKCk7Ci0gICAgICAgIHZvaWQgaW5pdENvb3JkaW5hdGVzKGludCBjbGllbnRYLCBpbnQg
Y2xpZW50WSk7CisgICAgICAgIHZvaWQgaW5pdENvb3JkaW5hdGVzKGNvbnN0IEludFBvaW50JiBj
bGllbnRMb2NhdGlvbik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZWNlaXZlZFRhcmdldCgpOwog
CiAgICAgICAgIHZvaWQgY29tcHV0ZVBhZ2VMb2NhdGlvbigpOwogICAgICAgICB2b2lkIGNvbXB1
dGVSZWxhdGl2ZVBvc2l0aW9uKCk7CiAgICAgICAgIAogICAgICAgICAvLyBFeHBvc2UgdGhlc2Ug
c28gTW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQgY2FuIHNldCB0aGVtLgotICAgICAgICBpbnQg
bV9zY3JlZW5YOwotICAgICAgICBpbnQgbV9zY3JlZW5ZOwotICAgICAgICBpbnQgbV9jbGllbnRY
OwotICAgICAgICBpbnQgbV9jbGllbnRZOworICAgICAgICBJbnRQb2ludCBtX3NjcmVlbkxvY2F0
aW9uOworICAgICAgICBJbnRQb2ludCBtX2NsaWVudExvY2F0aW9uOwogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgaW50IG1fcGFnZVg7Ci0gICAgICAgIGludCBtX3BhZ2VZOwotICAgICAgICBpbnQg
bV9sYXllclg7Ci0gICAgICAgIGludCBtX2xheWVyWTsKLSAgICAgICAgaW50IG1fb2Zmc2V0WDsK
LSAgICAgICAgaW50IG1fb2Zmc2V0WTsKKyAgICAgICAgSW50UG9pbnQgbV9wYWdlTG9jYXRpb247
CisgICAgICAgIEludFBvaW50IG1fbGF5ZXJMb2NhdGlvbjsKKyAgICAgICAgSW50UG9pbnQgbV9v
ZmZzZXRMb2NhdGlvbjsKICAgICAgICAgSW50UG9pbnQgbV9hYnNvbHV0ZUxvY2F0aW9uOwogICAg
ICAgICBib29sIG1faXNTaW11bGF0ZWQ7CiAgICAgICAgIGJvb2wgbV9oYXNDYWNoZWRSZWxhdGl2
ZVBvc2l0aW9uOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcAkocmV2aXNpb24gODc1
ODUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDI1ICszMiwxOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXaGVlbEV2ZW50OjpX
aGVlbEV2ZW50KCkKLSAgICA6IG1fd2hlZWxEZWx0YVgoMCkKLSAgICAsIG1fd2hlZWxEZWx0YVko
MCkKLSAgICAsIG1fcmF3RGVsdGFYKDApCi0gICAgLCBtX3Jhd0RlbHRhWSgwKQotICAgICwgbV9n
cmFudWxhcml0eShQaXhlbCkKKyAgICA6IG1fZ3JhbnVsYXJpdHkoUGl4ZWwpCiB7CiB9CiAKLVdo
ZWVsRXZlbnQ6OldoZWVsRXZlbnQoZmxvYXQgd2hlZWxUaWNrc1gsIGZsb2F0IHdoZWVsVGlja3NZ
LCBmbG9hdCByYXdEZWx0YVgsIGZsb2F0IHJhd0RlbHRhWSwKK1doZWVsRXZlbnQ6OldoZWVsRXZl
bnQoY29uc3QgRmxvYXRQb2ludCYgd2hlZWxUaWNrcywgY29uc3QgRmxvYXRQb2ludCYgcmF3RGVs
dGEsCiAgICAgICAgICAgICAgICAgICAgICAgIEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBQYXNz
UmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgaW50IHNj
cmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYg
cGFnZUxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICBib29sIGN0cmxLZXksIGJvb2wg
YWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCiAgICAgOiBNb3VzZVJlbGF0ZWRF
dmVudChldmVudE5hbWVzKCkubW91c2V3aGVlbEV2ZW50LAotICAgICAgICAgICAgICAgICAgICAg
ICAgdHJ1ZSwgdHJ1ZSwgdmlldywgMCwgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLAor
ICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwgdHJ1ZSwgdmlldywgMCwgc2NyZWVuTG9jYXRp
b24sIHBhZ2VMb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgIGN0cmxLZXksIGFsdEtl
eSwgc2hpZnRLZXksIG1ldGFLZXkpCi0gICAgLCBtX3doZWVsRGVsdGFYKGxyb3VuZGYod2hlZWxU
aWNrc1ggKiAxMjApKQotICAgICwgbV93aGVlbERlbHRhWShscm91bmRmKHdoZWVsVGlja3NZICog
MTIwKSkgLy8gTm9ybWFsaXplIHRvIHRoZSBXaW5kb3dzIDEyMCBtdWx0aXBsZQotICAgICwgbV9y
YXdEZWx0YVgocmF3RGVsdGFYKQotICAgICwgbV9yYXdEZWx0YVkocmF3RGVsdGFZKQorICAgICwg
bV93aGVlbERlbHRhKEludFBvaW50KChpbnQpKHdoZWVsVGlja3MueCgpICogMTIwKSwgKGludCko
d2hlZWxUaWNrcy55KCkgKiAxMjApKSkKKyAgICAsIG1fcmF3RGVsdGEocm91bmRlZEludFBvaW50
KHJhd0RlbHRhKSkKICAgICAsIG1fZ3JhbnVsYXJpdHkoZ3JhbnVsYXJpdHkpCiB7CiB9CkBAIC02
NCwyMiArNTgsMTkgQEAgdm9pZCBXaGVlbEV2ZW50Ojppbml0V2hlZWxFdmVudChpbnQgcmF3RAog
ICAgIAogICAgIGluaXRVSUV2ZW50KGV2ZW50TmFtZXMoKS5tb3VzZXdoZWVsRXZlbnQsIHRydWUs
IHRydWUsIHZpZXcsIDApOwogICAgIAotICAgIG1fc2NyZWVuWCA9IHNjcmVlblg7Ci0gICAgbV9z
Y3JlZW5ZID0gc2NyZWVuWTsKKyAgICBtX3NjcmVlbkxvY2F0aW9uID0gSW50UG9pbnQoc2NyZWVu
WCwgc2NyZWVuWSk7CiAgICAgbV9jdHJsS2V5ID0gY3RybEtleTsKICAgICBtX2FsdEtleSA9IGFs
dEtleTsKICAgICBtX3NoaWZ0S2V5ID0gc2hpZnRLZXk7CiAgICAgbV9tZXRhS2V5ID0gbWV0YUtl
eTsKICAgICAKICAgICAvLyBOb3JtYWxpemUgdG8gdGhlIFdpbmRvd3MgMTIwIG11bHRpcGxlCi0g
ICAgbV93aGVlbERlbHRhWCA9IHJhd0RlbHRhWCAqIDEyMDsKLSAgICBtX3doZWVsRGVsdGFZID0g
cmF3RGVsdGFZICogMTIwOworICAgIG1fd2hlZWxEZWx0YSA9IEludFBvaW50KHJhd0RlbHRhWCAq
IDEyMCwgcmF3RGVsdGFZICogMTIwKTsKICAgICAKLSAgICBtX3Jhd0RlbHRhWCA9IHJhd0RlbHRh
WDsKLSAgICBtX3Jhd0RlbHRhWSA9IHJhd0RlbHRhWTsKKyAgICBtX3Jhd0RlbHRhID0gSW50UG9p
bnQocmF3RGVsdGFYLCByYXdEZWx0YVkpOwogICAgIG1fZ3JhbnVsYXJpdHkgPSBQaXhlbDsKICAg
ICAKLSAgICBpbml0Q29vcmRpbmF0ZXMocGFnZVgsIHBhZ2VZKTsKKyAgICBpbml0Q29vcmRpbmF0
ZXMoSW50UG9pbnQocGFnZVgsIHBhZ2VZKSk7CiB9CiAKIHZvaWQgV2hlZWxFdmVudDo6aW5pdFdl
YktpdFdoZWVsRXZlbnQoaW50IHJhd0RlbHRhWCwgaW50IHJhd0RlbHRhWSwgUGFzc1JlZlB0cjxB
YnN0cmFjdFZpZXc+IHZpZXcsCkBAIC0xMDUsOCArOTYsOCBAQCBXaGVlbEV2ZW50RGlzcGF0Y2hN
ZWRpYXRvcjo6V2hlZWxFdmVudERpCiAgICAgaWYgKCEoZXZlbnQuZGVsdGFYKCkgfHwgZXZlbnQu
ZGVsdGFZKCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZXRFdmVudChXaGVlbEV2ZW50Ojpj
cmVhdGUoZXZlbnQud2hlZWxUaWNrc1goKSwgZXZlbnQud2hlZWxUaWNrc1koKSwgZXZlbnQuZGVs
dGFYKCksIGV2ZW50LmRlbHRhWSgpLCBncmFudWxhcml0eShldmVudCksCi0gICAgICAgIHZpZXcs
IGV2ZW50Lmdsb2JhbFgoKSwgZXZlbnQuZ2xvYmFsWSgpLCBldmVudC54KCksIGV2ZW50LnkoKSwg
ZXZlbnQuY3RybEtleSgpLCBldmVudC5hbHRLZXkoKSwgZXZlbnQuc2hpZnRLZXkoKSwgZXZlbnQu
bWV0YUtleSgpKSk7CisgICAgc2V0RXZlbnQoV2hlZWxFdmVudDo6Y3JlYXRlKEZsb2F0UG9pbnQo
ZXZlbnQud2hlZWxUaWNrc1goKSwgZXZlbnQud2hlZWxUaWNrc1koKSksIEZsb2F0UG9pbnQoZXZl
bnQuZGVsdGFYKCksIGV2ZW50LmRlbHRhWSgpKSwgZ3JhbnVsYXJpdHkoZXZlbnQpLAorICAgICAg
ICB2aWV3LCBJbnRQb2ludChldmVudC5nbG9iYWxYKCksIGV2ZW50Lmdsb2JhbFkoKSksIEludFBv
aW50KGV2ZW50LngoKSwgZXZlbnQueSgpKSwgZXZlbnQuY3RybEtleSgpLCBldmVudC5hbHRLZXko
KSwgZXZlbnQuc2hpZnRLZXkoKSwgZXZlbnQubWV0YUtleSgpKSk7CiAKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vV2hlZWxFdmVudC5oCShyZXZpc2lvbiA4NzU4NSkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9XaGVlbEV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNpZm5kZWYg
V2hlZWxFdmVudF9oCiAjZGVmaW5lIFdoZWVsRXZlbnRfaAogCisjaW5jbHVkZSAiRmxvYXRQb2lu
dC5oIgogI2luY2x1ZGUgIk1vdXNlUmVsYXRlZEV2ZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTM3LDE0ICszOCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHsKICAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2hlZWxFdmVudCk7CiAgICAgICAgIH0KLSAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2hlZWxFdmVudD4gY3JlYXRlKGZsb2F0IHdoZWVsVGlj
a3NYLCBmbG9hdCB3aGVlbFRpY2tzWSwKLSAgICAgICAgICAgIGZsb2F0IHJhd0RlbHRhWCwgZmxv
YXQgcmF3RGVsdGFZLCBHcmFudWxhcml0eSBncmFudWxhcml0eSwgUGFzc1JlZlB0cjxBYnN0cmFj
dFZpZXc+IHZpZXcsCi0gICAgICAgICAgICBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBw
YWdlWCwgaW50IHBhZ2VZLAorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXaGVlbEV2ZW50PiBj
cmVhdGUoY29uc3QgRmxvYXRQb2ludCYgd2hlZWxUaWNrcywKKyAgICAgICAgICAgIGNvbnN0IEZs
b2F0UG9pbnQmIHJhd0RlbHRhLCBHcmFudWxhcml0eSBncmFudWxhcml0eSwgUGFzc1JlZlB0cjxB
YnN0cmFjdFZpZXc+IHZpZXcsCisgICAgICAgICAgICBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9j
YXRpb24sIGNvbnN0IEludFBvaW50JiBwYWdlTG9jYXRpb24sCiAgICAgICAgICAgICBib29sIGN0
cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXkpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2hlZWxFdmVudCh3aGVlbFRpY2tz
WCwgd2hlZWxUaWNrc1ksIHJhd0RlbHRhWCwgcmF3RGVsdGFZLAotICAgICAgICAgICAgICAgIGdy
YW51bGFyaXR5LCB2aWV3LCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdlWCwgcGFnZVksCi0gICAgICAg
ICAgICAgICAgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSkpOworICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXaGVlbEV2ZW50KHdoZWVsVGlja3MsIHJhd0RlbHRhLCBn
cmFudWxhcml0eSwgdmlldywKKyAgICAgICAgICAgICAgICBzY3JlZW5Mb2NhdGlvbiwgcGFnZUxv
Y2F0aW9uLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5KSk7CiAgICAgICAgIH0K
IAogICAgICAgICB2b2lkIGluaXRXaGVlbEV2ZW50KGludCByYXdEZWx0YVgsIGludCByYXdEZWx0
YVksIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiwKQEAgLTU1LDMwICs1NSwyNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNjcmVl
blgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5
LCBib29sIG1ldGFLZXkpOwogCi0gICAgICAgIGludCB3aGVlbERlbHRhKCkgY29uc3QgeyBpZiAo
bV93aGVlbERlbHRhWSA9PSAwKSByZXR1cm4gbV93aGVlbERlbHRhWDsgcmV0dXJuIG1fd2hlZWxE
ZWx0YVk7IH0KLSAgICAgICAgaW50IHdoZWVsRGVsdGFYKCkgY29uc3QgeyByZXR1cm4gbV93aGVl
bERlbHRhWDsgfQotICAgICAgICBpbnQgd2hlZWxEZWx0YVkoKSBjb25zdCB7IHJldHVybiBtX3do
ZWVsRGVsdGFZOyB9Ci0gICAgICAgIGludCByYXdEZWx0YVgoKSBjb25zdCB7IHJldHVybiBtX3Jh
d0RlbHRhWDsgfQotICAgICAgICBpbnQgcmF3RGVsdGFZKCkgY29uc3QgeyByZXR1cm4gbV9yYXdE
ZWx0YVk7IH0KKyAgICAgICAgaW50IHdoZWVsRGVsdGEoKSBjb25zdCB7IHJldHVybiBtX3doZWVs
RGVsdGEueSgpID8gbV93aGVlbERlbHRhLnkoKSA6IG1fd2hlZWxEZWx0YS54KCk7IH0KKyAgICAg
ICAgaW50IHdoZWVsRGVsdGFYKCkgY29uc3QgeyByZXR1cm4gbV93aGVlbERlbHRhLngoKTsgfQor
ICAgICAgICBpbnQgd2hlZWxEZWx0YVkoKSBjb25zdCB7IHJldHVybiBtX3doZWVsRGVsdGEueSgp
OyB9CisgICAgICAgIGludCByYXdEZWx0YVgoKSBjb25zdCB7IHJldHVybiBtX3Jhd0RlbHRhLngo
KTsgfQorICAgICAgICBpbnQgcmF3RGVsdGFZKCkgY29uc3QgeyByZXR1cm4gbV9yYXdEZWx0YS55
KCk7IH0KICAgICAgICAgR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkoKSBjb25zdCB7IHJldHVybiBt
X2dyYW51bGFyaXR5OyB9CiAKICAgICAgICAgLy8gTmVlZGVkIGZvciBPYmplY3RpdmUtQyBsZWdh
Y3kgc3VwcG9ydAotICAgICAgICBib29sIGlzSG9yaXpvbnRhbCgpIGNvbnN0IHsgcmV0dXJuIG1f
d2hlZWxEZWx0YVg7IH0KKyAgICAgICAgYm9vbCBpc0hvcml6b250YWwoKSBjb25zdCB7IHJldHVy
biBtX3doZWVsRGVsdGEueCgpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBXaGVlbEV2ZW50
KCk7Ci0gICAgICAgIFdoZWVsRXZlbnQoZmxvYXQgd2hlZWxUaWNrc1gsIGZsb2F0IHdoZWVsVGlj
a3NZLCBmbG9hdCByYXdEZWx0YVgsIGZsb2F0IHJhd0RlbHRhWSwKKyAgICAgICAgV2hlZWxFdmVu
dChjb25zdCBGbG9hdFBvaW50JiB3aGVlbFRpY2tzLCBjb25zdCBGbG9hdFBvaW50JiByYXdEZWx0
YSwKICAgICAgICAgICAgICAgICAgICBHcmFudWxhcml0eSBncmFudWxhcml0eSwgUGFzc1JlZlB0
cjxBYnN0cmFjdFZpZXc+LAotICAgICAgICAgICAgICAgICAgIGludCBzY3JlZW5YLCBpbnQgc2Ny
ZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksCisgICAgICAgICAgICAgICAgICAgY29uc3QgSW50
UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgcGFnZUxvY2F0aW9uLAogICAg
ICAgICAgICAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXks
IGJvb2wgbWV0YUtleSk7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzV2hlZWxFdmVudCgpIGNv
bnN0OwotICAgICAgICAKLSAgICAgICAgaW50IG1fd2hlZWxEZWx0YVg7Ci0gICAgICAgIGludCBt
X3doZWVsRGVsdGFZOwogCi0gICAgICAgIGludCBtX3Jhd0RlbHRhWDsKLSAgICAgICAgaW50IG1f
cmF3RGVsdGFZOworICAgICAgICBJbnRQb2ludCBtX3doZWVsRGVsdGE7CisgICAgICAgIEludFBv
aW50IG1fcmF3RGVsdGE7CiAgICAgICAgIEdyYW51bGFyaXR5IG1fZ3JhbnVsYXJpdHk7CiAgICAg
fTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5o
CShyZXZpc2lvbiA4NzU4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lu
dFBvaW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDExIEBAIHB1YmxpYzoKICAgICB2
b2lkIG1vdmUoY29uc3QgSW50U2l6ZSYgcykgeyBtb3ZlKHMud2lkdGgoKSwgcy5oZWlnaHQoKSk7
IH0gCiAgICAgdm9pZCBtb3ZlKGNvbnN0IEludFBvaW50JiBvZmZzZXQpIHsgbW92ZShvZmZzZXQu
eCgpLCBvZmZzZXQueSgpKTsgfQogICAgIHZvaWQgbW92ZShpbnQgZHgsIGludCBkeSkgeyBtX3gg
Kz0gZHg7IG1feSArPSBkeTsgfQorICAgIHZvaWQgc2NhbGUoZmxvYXQgc3gsIGZsb2F0IHN5KQor
ICAgIHsKKyAgICAgICAgbV94ID0gbHJvdW5kZigoZmxvYXQpbV94ICogc3gpOworICAgICAgICBt
X3kgPSBscm91bmRmKChmbG9hdCltX3kgKiBzeSk7CisgICAgfQogICAgIAogICAgIEludFBvaW50
IGV4cGFuZGVkVG8oY29uc3QgSW50UG9pbnQmIG90aGVyKSBjb25zdAogICAgIHsK
</data>
<flag name="commit-queue"
          id="88950"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95478</attachid>
            <date>2011-05-31 13:57:00 -0700</date>
            <delta_ts>2011-05-31 16:55:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61574-20110531135658.patch</filename>
            <type>text/plain</type>
            <size>25138</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg3NzQ4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTYgQEAKKzIwMTEtMDUtMzEgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFN3aXRjaCBNb3VzZVJlbGF0ZWRFdmVudCB0byB1c2UgSW50UG9p
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxNTc0
CisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGRvbS9N
b3VzZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2ltdWxhdGVkTW91c2VFdmVudDo6U2ltdWxhdGVkTW91c2VFdmVudCk6Cisg
ICAgICAgICogZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1v
dXNlUmVsYXRlZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpj
b250ZW50c1Njcm9sbE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVu
dDo6aW5pdENvb3JkaW5hdGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50
Ojpjb21wdXRlUmVsYXRpdmVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0
ZWRFdmVudDo6bGF5ZXJYKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojps
YXllclkpOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZlbnQ6Om9mZnNldFgpOgor
ICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZlbnQ6Om9mZnNldFkpOgorICAgICAgICAo
V2ViQ29yZTo6TW91c2VSZWxhdGVkRXZlbnQ6OnBhZ2VYKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
dXNlUmVsYXRlZEV2ZW50OjpwYWdlWSk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRF
dmVudDo6cGFnZUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50
Ojp4KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojp5KToKKyAgICAgICAg
KiBkb20vTW91c2VSZWxhdGVkRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRl
ZEV2ZW50OjpzY3JlZW5YKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojpz
Y3JlZW5ZKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50OjpzY3JlZW5Mb2Nh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6Y2xpZW50WCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6Y2xpZW50WSk6CisgICAgICAgIChX
ZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6Y2xpZW50TG9jYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6TW91c2VSZWxhdGVkRXZlbnQ6OmFic29sdXRlTG9jYXRpb24pOgorICAgICAgICAqIGRv
bS9Ub3VjaEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoRXZlbnQ6OlRvdWNoRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hFdmVudDo6aW5pdFRvdWNoRXZlbnQpOgorICAg
ICAgICAqIGRvbS9XaGVlbEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnQ6
OldoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudDo6aW5pdFdoZWVsRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudERpc3BhdGNoTWVkaWF0b3I6OldoZWVs
RXZlbnREaXNwYXRjaE1lZGlhdG9yKToKKyAgICAgICAgKiBkb20vV2hlZWxFdmVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldo
ZWVsRXZlbnQ6OndoZWVsRGVsdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudDo6d2hl
ZWxEZWx0YVgpOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudDo6d2hlZWxEZWx0YVkpOgor
ICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudDo6cmF3RGVsdGFYKToKKyAgICAgICAgKFdlYkNv
cmU6OldoZWVsRXZlbnQ6OnJhd0RlbHRhWSk6CisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50
Ojppc0hvcml6b250YWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpJbnRQb2ludDo6c2NhbGUpOgorCiAyMDExLTA1LTMxICBKdXN0
aW4gTm92b3NhZCAgPGp1bm92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBT
dGVwaGVuIFdoaXRlLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAkocmV2aXNpb24g
ODc3NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU0LDggKzU0LDggQEAgTW91c2VFdmVudDo6TW91c2VFdmVudChjb25zdCBBdG9taWNT
dHJpbgogICAgICAgICAgICAgICAgICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBi
b29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksCiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2ln
bmVkIHNob3J0IGJ1dHRvbiwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gcmVsYXRlZFRhcmdldCwK
ICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IGNsaXBib2FyZCwg
Ym9vbCBpc1NpbXVsYXRlZCkKLSAgICA6IE1vdXNlUmVsYXRlZEV2ZW50KGV2ZW50VHlwZSwgY2Fu
QnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3LCBkZXRhaWwsIHNjcmVlblgsIHNjcmVlblksCi0gICAg
ICAgICAgICAgICAgICAgICAgICBwYWdlWCwgcGFnZVksIGN0cmxLZXksIGFsdEtleSwgc2hpZnRL
ZXksIG1ldGFLZXksIGlzU2ltdWxhdGVkKQorICAgIDogTW91c2VSZWxhdGVkRXZlbnQoZXZlbnRU
eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCwgSW50UG9pbnQoc2NyZWVu
WCwgc2NyZWVuWSksCisgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChwYWdlWCwgcGFn
ZVkpLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5LCBpc1NpbXVsYXRlZCkKICAg
ICAsIG1fYnV0dG9uKGJ1dHRvbiA9PSAodW5zaWduZWQgc2hvcnQpLTEgPyAwIDogYnV0dG9uKQog
ICAgICwgbV9idXR0b25Eb3duKGJ1dHRvbiAhPSAodW5zaWduZWQgc2hvcnQpLTEpCiAgICAgLCBt
X3JlbGF0ZWRUYXJnZXQocmVsYXRlZFRhcmdldCkKQEAgLTc3LDggKzc3LDcgQEAgdm9pZCBNb3Vz
ZUV2ZW50Ojppbml0TW91c2VFdmVudChjb25zdCBBdAogCiAgICAgaW5pdFVJRXZlbnQodHlwZSwg
Y2FuQnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3LCBkZXRhaWwpOwogCi0gICAgbV9zY3JlZW5YID0g
c2NyZWVuWDsKLSAgICBtX3NjcmVlblkgPSBzY3JlZW5ZOworICAgIG1fc2NyZWVuTG9jYXRpb24g
PSBJbnRQb2ludChzY3JlZW5YLCBzY3JlZW5ZKTsKICAgICBtX2N0cmxLZXkgPSBjdHJsS2V5Owog
ICAgIG1fYWx0S2V5ID0gYWx0S2V5OwogICAgIG1fc2hpZnRLZXkgPSBzaGlmdEtleTsKQEAgLTg3
LDcgKzg2LDcgQEAgdm9pZCBNb3VzZUV2ZW50Ojppbml0TW91c2VFdmVudChjb25zdCBBdAogICAg
IG1fYnV0dG9uRG93biA9IGJ1dHRvbiAhPSAodW5zaWduZWQgc2hvcnQpLTE7CiAgICAgbV9yZWxh
dGVkVGFyZ2V0ID0gcmVsYXRlZFRhcmdldDsKIAotICAgIGluaXRDb29yZGluYXRlcyhjbGllbnRY
LCBjbGllbnRZKTsKKyAgICBpbml0Q29vcmRpbmF0ZXMoSW50UG9pbnQoY2xpZW50WCwgY2xpZW50
WSkpOwogCiAgICAgLy8gRklYTUU6IG1faXNTaW11bGF0ZWQgaXMgbm90IHNldCB0byBmYWxzZSBo
ZXJlLgogICAgIC8vIEZJWE1FOiBtX2NsaXBib2FyZCBpcyBub3Qgc2V0IHRvIDAgaGVyZS4KQEAg
LTE1Myw5ICsxNTIsOCBAQCBTaW11bGF0ZWRNb3VzZUV2ZW50OjpTaW11bGF0ZWRNb3VzZUV2ZW50
CiAKICAgICBpZiAodGhpcy0+dW5kZXJseWluZ0V2ZW50KCkgJiYgdGhpcy0+dW5kZXJseWluZ0V2
ZW50KCktPmlzTW91c2VFdmVudCgpKSB7CiAgICAgICAgIE1vdXNlRXZlbnQqIG1vdXNlRXZlbnQg
PSBzdGF0aWNfY2FzdDxNb3VzZUV2ZW50Kj4odGhpcy0+dW5kZXJseWluZ0V2ZW50KCkpOwotICAg
ICAgICBtX3NjcmVlblggPSBtb3VzZUV2ZW50LT5zY3JlZW5YKCk7Ci0gICAgICAgIG1fc2NyZWVu
WSA9IG1vdXNlRXZlbnQtPnNjcmVlblkoKTsKLSAgICAgICAgaW5pdENvb3JkaW5hdGVzKG1vdXNl
RXZlbnQtPmNsaWVudFgoKSwgbW91c2VFdmVudC0+Y2xpZW50WSgpKTsKKyAgICAgICAgbV9zY3Jl
ZW5Mb2NhdGlvbiA9IG1vdXNlRXZlbnQtPnNjcmVlbkxvY2F0aW9uKCk7CisgICAgICAgIGluaXRD
b29yZGluYXRlcyhtb3VzZUV2ZW50LT5jbGllbnRMb2NhdGlvbigpKTsKICAgICB9CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcAkocmV2aXNpb24gODc3
NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw1NyArMzMsMzAgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogTW91c2VS
ZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KCkKLSAgICA6IG1fc2NyZWVuWCgwKQotICAg
ICwgbV9zY3JlZW5ZKDApCi0gICAgLCBtX2NsaWVudFgoMCkKLSAgICAsIG1fY2xpZW50WSgwKQot
ICAgICwgbV9wYWdlWCgwKQotICAgICwgbV9wYWdlWSgwKQotICAgICwgbV9sYXllclgoMCkKLSAg
ICAsIG1fbGF5ZXJZKDApCi0gICAgLCBtX29mZnNldFgoMCkKLSAgICAsIG1fb2Zmc2V0WSgwKQot
ICAgICwgbV9pc1NpbXVsYXRlZChmYWxzZSkKKyAgICA6IG1faXNTaW11bGF0ZWQoZmFsc2UpCiAg
ICAgLCBtX2hhc0NhY2hlZFJlbGF0aXZlUG9zaXRpb24oZmFsc2UpCiB7CiB9CiAKLXN0YXRpYyBp
bnQgY29udGVudHNYKEFic3RyYWN0VmlldyogYWJzdHJhY3RWaWV3KQorc3RhdGljIEludFNpemUg
Y29udGVudHNTY3JvbGxPZmZzZXQoQWJzdHJhY3RWaWV3KiBhYnN0cmFjdFZpZXcpCiB7CiAgICAg
aWYgKCFhYnN0cmFjdFZpZXcpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gSW50
U2l6ZSgpOwogICAgIEZyYW1lKiBmcmFtZSA9IGFic3RyYWN0Vmlldy0+ZnJhbWUoKTsKICAgICBp
ZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIEludFNpemUoKTsK
ICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCk7CiAgICAgaWYgKCFmcmFt
ZVZpZXcpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBmcmFtZVZpZXctPnNjcm9sbFgo
KSAvIGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpOwotfQotCi1zdGF0aWMgaW50IGNvbnRlbnRzWShB
YnN0cmFjdFZpZXcqIGFic3RyYWN0VmlldykKLXsKLSAgICBpZiAoIWFic3RyYWN0VmlldykKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgRnJhbWUqIGZyYW1lID0gYWJzdHJhY3RWaWV3LT5mcmFtZSgp
OwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybiAwOwotICAgIEZyYW1lVmlldyogZnJh
bWVWaWV3ID0gZnJhbWUtPnZpZXcoKTsKLSAgICBpZiAoIWZyYW1lVmlldykKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgcmV0dXJuIGZyYW1lVmlldy0+c2Nyb2xsWSgpIC8gZnJhbWUtPnBhZ2Vab29t
RmFjdG9yKCk7CisgICAgICAgIHJldHVybiBJbnRTaXplKCk7CisgICAgcmV0dXJuIEludFNpemUo
ZnJhbWVWaWV3LT5zY3JvbGxYKCkgLyBmcmFtZS0+cGFnZVpvb21GYWN0b3IoKSwKKyAgICAgICAg
ZnJhbWVWaWV3LT5zY3JvbGxZKCkgLyBmcmFtZS0+cGFnZVpvb21GYWN0b3IoKSk7CiB9CiAKIE1v
dXNlUmVsYXRlZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxBYnN0
cmFjdFZpZXc+IGFic3RyYWN0VmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgZGV0YWlsLCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCB3aW5kb3dYLCBp
bnQgd2luZG93WSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGV0
YWlsLCBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24sIGNvbnN0IEludFBvaW50JiB3aW5k
b3dMb2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGN0
cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIGJvb2wgaXNT
aW11bGF0ZWQpCiAgICAgOiBVSUV2ZW50V2l0aEtleVN0YXRlKGV2ZW50VHlwZSwgY2FuQnViYmxl
LCBjYW5jZWxhYmxlLCBhYnN0cmFjdFZpZXcsIGRldGFpbCwgY3RybEtleSwgYWx0S2V5LCBzaGlm
dEtleSwgbWV0YUtleSkKLSAgICAsIG1fc2NyZWVuWChzY3JlZW5YKQotICAgICwgbV9zY3JlZW5Z
KHNjcmVlblkpCi0gICAgLCBtX2NsaWVudFgoMCkKLSAgICAsIG1fY2xpZW50WSgwKQotICAgICwg
bV9wYWdlWCgwKQotICAgICwgbV9wYWdlWSgwKQorICAgICwgbV9zY3JlZW5Mb2NhdGlvbihzY3Jl
ZW5Mb2NhdGlvbikKICAgICAsIG1faXNTaW11bGF0ZWQoaXNTaW11bGF0ZWQpCiB7CiAgICAgSW50
UG9pbnQgYWRqdXN0ZWRQYWdlTG9jYXRpb247CkBAIC05MywyMyArNjYsMjIgQEAgTW91c2VSZWxh
dGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KGNvbgogICAgIGlmIChmcmFtZSAmJiAhaXNTaW11
bGF0ZWQpIHsKICAgICAgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWUtPnZpZXco
KSkgewogICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb24gPSBmcmFtZVZpZXctPnNjcm9sbFBvc2l0
aW9uKCk7Ci0gICAgICAgICAgICBhZGp1c3RlZFBhZ2VMb2NhdGlvbiA9IGZyYW1lVmlldy0+d2lu
ZG93VG9Db250ZW50cyhJbnRQb2ludCh3aW5kb3dYLCB3aW5kb3dZKSk7CisgICAgICAgICAgICBh
ZGp1c3RlZFBhZ2VMb2NhdGlvbiA9IGZyYW1lVmlldy0+d2luZG93VG9Db250ZW50cyh3aW5kb3dM
b2NhdGlvbik7CiAgICAgICAgICAgICBmbG9hdCBwYWdlWm9vbSA9IGZyYW1lLT5wYWdlWm9vbUZh
Y3RvcigpOwogICAgICAgICAgICAgaWYgKHBhZ2Vab29tICE9IDEuMGYpIHsKICAgICAgICAgICAg
ICAgICAvLyBBZGp1c3Qgb3VyIHBhZ2VYIGFuZCBwYWdlWSB0byBhY2NvdW50IGZvciB0aGUgcGFn
ZSB6b29tLgotICAgICAgICAgICAgICAgIGFkanVzdGVkUGFnZUxvY2F0aW9uLnNldFgobHJvdW5k
ZihhZGp1c3RlZFBhZ2VMb2NhdGlvbi54KCkgLyBwYWdlWm9vbSkpOwotICAgICAgICAgICAgICAg
IGFkanVzdGVkUGFnZUxvY2F0aW9uLnNldFkobHJvdW5kZihhZGp1c3RlZFBhZ2VMb2NhdGlvbi55
KCkgLyBwYWdlWm9vbSkpOworICAgICAgICAgICAgICAgIGFkanVzdGVkUGFnZUxvY2F0aW9uLnNj
YWxlKDEgLyBwYWdlWm9vbSwgMSAvIHBhZ2Vab29tKTsKKworICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBDaGFuZ2UgdGhpcyB0byB1c2UgZmxvYXQgbWF0aCBhbmQgcHJvcGVyIHJvdW5kaW5nIChv
cgorICAgICAgICAgICAgICAgIC8vIGJldHRlciB5ZXQsIHVzZSBJbnRQb2ludDo6c2NhbGUpLgog
ICAgICAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uLnNldFgoc2Nyb2xsUG9zaXRpb24ueCgpIC8g
cGFnZVpvb20pOwogICAgICAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uLnNldFkoc2Nyb2xsUG9z
aXRpb24ueSgpIC8gcGFnZVpvb20pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgSW50UG9pbnQgY2xpZW50TG9jYXRpb24oYWRqdXN0ZWRQYWdlTG9jYXRpb24gLSBzY3Jv
bGxQb3NpdGlvbik7Ci0gICAgbV9jbGllbnRYID0gY2xpZW50TG9jYXRpb24ueCgpOwotICAgIG1f
Y2xpZW50WSA9IGNsaWVudExvY2F0aW9uLnkoKTsKLSAgICBtX3BhZ2VYID0gYWRqdXN0ZWRQYWdl
TG9jYXRpb24ueCgpOwotICAgIG1fcGFnZVkgPSBhZGp1c3RlZFBhZ2VMb2NhdGlvbi55KCk7Cisg
ICAgbV9jbGllbnRMb2NhdGlvbiA9IGFkanVzdGVkUGFnZUxvY2F0aW9uIC0gdG9TaXplKHNjcm9s
bFBvc2l0aW9uKTsKKyAgICBtX3BhZ2VMb2NhdGlvbiA9IGFkanVzdGVkUGFnZUxvY2F0aW9uOwog
CiAgICAgaW5pdENvb3JkaW5hdGVzKCk7CiB9CkBAIC0xMTgsMjcgKzkwLDIyIEBAIHZvaWQgTW91
c2VSZWxhdGVkRXZlbnQ6OmluaXRDb29yZGluYXRlcygKIHsKICAgICAvLyBTZXQgdXAgaW5pdGlh
bCB2YWx1ZXMgZm9yIGNvb3JkaW5hdGVzLgogICAgIC8vIENvcnJlY3QgdmFsdWVzIGFyZSBjb21w
dXRlZCBsYXppbHksIHNlZSBjb21wdXRlUmVsYXRpdmVQb3NpdGlvbi4KLSAgICBtX2xheWVyWCA9
IG1fcGFnZVg7Ci0gICAgbV9sYXllclkgPSBtX3BhZ2VZOwotICAgIG1fb2Zmc2V0WCA9IG1fcGFn
ZVg7Ci0gICAgbV9vZmZzZXRZID0gbV9wYWdlWTsKKyAgICBtX2xheWVyTG9jYXRpb24gPSBtX3Bh
Z2VMb2NhdGlvbjsKKyAgICBtX29mZnNldExvY2F0aW9uID0gbV9wYWdlTG9jYXRpb247CiAKICAg
ICBjb21wdXRlUGFnZUxvY2F0aW9uKCk7CiAgICAgbV9oYXNDYWNoZWRSZWxhdGl2ZVBvc2l0aW9u
ID0gZmFsc2U7CiB9CiAKLXZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OmluaXRDb29yZGluYXRlcyhp
bnQgY2xpZW50WCwgaW50IGNsaWVudFkpCit2b2lkIE1vdXNlUmVsYXRlZEV2ZW50Ojppbml0Q29v
cmRpbmF0ZXMoY29uc3QgSW50UG9pbnQmIGNsaWVudExvY2F0aW9uKQogewogICAgIC8vIFNldCB1
cCBpbml0aWFsIHZhbHVlcyBmb3IgY29vcmRpbmF0ZXMuCiAgICAgLy8gQ29ycmVjdCB2YWx1ZXMg
YXJlIGNvbXB1dGVkIGxhemlseSwgc2VlIGNvbXB1dGVSZWxhdGl2ZVBvc2l0aW9uLgotICAgIG1f
Y2xpZW50WCA9IGNsaWVudFg7Ci0gICAgbV9jbGllbnRZID0gY2xpZW50WTsKLSAgICBtX3BhZ2VY
ID0gY2xpZW50WCArIGNvbnRlbnRzWCh2aWV3KCkpOwotICAgIG1fcGFnZVkgPSBjbGllbnRZICsg
Y29udGVudHNZKHZpZXcoKSk7Ci0gICAgbV9sYXllclggPSBtX3BhZ2VYOwotICAgIG1fbGF5ZXJZ
ID0gbV9wYWdlWTsKLSAgICBtX29mZnNldFggPSBtX3BhZ2VYOwotICAgIG1fb2Zmc2V0WSA9IG1f
cGFnZVk7CisgICAgbV9jbGllbnRMb2NhdGlvbiA9IGNsaWVudExvY2F0aW9uOworICAgIG1fcGFn
ZUxvY2F0aW9uID0gY2xpZW50TG9jYXRpb24gKyBjb250ZW50c1Njcm9sbE9mZnNldCh2aWV3KCkp
OworCisgICAgbV9sYXllckxvY2F0aW9uID0gbV9wYWdlTG9jYXRpb247CisgICAgbV9vZmZzZXRM
b2NhdGlvbiA9IG1fcGFnZUxvY2F0aW9uOwogCiAgICAgY29tcHV0ZVBhZ2VMb2NhdGlvbigpOwog
ICAgIG1faGFzQ2FjaGVkUmVsYXRpdmVQb3NpdGlvbiA9IGZhbHNlOwpAQCAtMTczLDI1ICsxNDAs
MjQgQEAgdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVJlbGF0aXZlUAogICAgICAgICBy
ZXR1cm47CiAKICAgICAvLyBDb21wdXRlIGNvb3JkaW5hdGVzIHRoYXQgYXJlIGJhc2VkIG9uIHRo
ZSB0YXJnZXQuCi0gICAgbV9sYXllclggPSBtX3BhZ2VYOwotICAgIG1fbGF5ZXJZID0gbV9wYWdl
WTsKLSAgICBtX29mZnNldFggPSBtX3BhZ2VYOwotICAgIG1fb2Zmc2V0WSA9IG1fcGFnZVk7Cisg
ICAgbV9sYXllckxvY2F0aW9uID0gbV9wYWdlTG9jYXRpb247CisgICAgbV9vZmZzZXRMb2NhdGlv
biA9IG1fcGFnZUxvY2F0aW9uOwogCiAgICAgLy8gTXVzdCBoYXZlIGFuIHVwZGF0ZWQgcmVuZGVy
IHRyZWUgZm9yIHRoaXMgbWF0aCB0byB3b3JrIGNvcnJlY3RseS4KICAgICB0YXJnZXROb2RlLT5k
b2N1bWVudCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAKLSAgICAvLyBBZGp1c3Qgb2Zmc2V0
WC9ZIHRvIGJlIHJlbGF0aXZlIHRvIHRoZSB0YXJnZXQncyBwb3NpdGlvbi4KKyAgICAvLyBBZGp1
c3Qgb2Zmc2V0TG9jYXRpb24gdG8gYmUgcmVsYXRpdmUgdG8gdGhlIHRhcmdldCdzIHBvc2l0aW9u
LgogICAgIGlmICghaXNTaW11bGF0ZWQoKSkgewogICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBy
ID0gdGFyZ2V0Tm9kZS0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAgRmxvYXRQb2ludCBsb2Nh
bFBvcyA9IHItPmFic29sdXRlVG9Mb2NhbChhYnNvbHV0ZUxvY2F0aW9uKCksIGZhbHNlLCB0cnVl
KTsKLSAgICAgICAgICAgIGZsb2F0IHpvb21GYWN0b3IgPSBwYWdlWm9vbUZhY3Rvcih0aGlzKTsK
LSAgICAgICAgICAgIG1fb2Zmc2V0WCA9IGxyb3VuZGYobG9jYWxQb3MueCgpIC8gem9vbUZhY3Rv
cik7Ci0gICAgICAgICAgICBtX29mZnNldFkgPSBscm91bmRmKGxvY2FsUG9zLnkoKSAvIHpvb21G
YWN0b3IpOworICAgICAgICAgICAgbV9vZmZzZXRMb2NhdGlvbiA9IHJvdW5kZWRJbnRQb2ludChs
b2NhbFBvcyk7CisgICAgICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IDEgLyBwYWdlWm9vbUZh
Y3Rvcih0aGlzKTsKKyAgICAgICAgICAgIGlmIChzY2FsZUZhY3RvciAhPSAxLjBmKQorICAgICAg
ICAgICAgICAgIG1fb2Zmc2V0TG9jYXRpb24uc2NhbGUoc2NhbGVGYWN0b3IsIHNjYWxlRmFjdG9y
KTsKICAgICAgICAgfQogICAgIH0KIAotICAgIC8vIEFkanVzdCBsYXllclgvWSB0byBiZSByZWxh
dGl2ZSB0byB0aGUgbGF5ZXIuCisgICAgLy8gQWRqdXN0IGxheWVyTG9jYXRpb24gdG8gYmUgcmVs
YXRpdmUgdG8gdGhlIGxheWVyLgogICAgIC8vIEZJWE1FOiBXZSdyZSBwcmV0dHkgc3VyZSB0aGlz
IGlzIHRoZSB3cm9uZyBkZWZpbml0aW9uIG9mICJsYXllci4iCiAgICAgLy8gT3VyIFJlbmRlckxh
eWVyIGlzIGEgbW9yZSBtb2Rlcm4gY29uY2VwdCwgYW5kIGxheWVyWC9ZIGlzIHNvbWUKICAgICAv
LyBvdGhlciBub3Rpb24gYWJvdXQgZ3JvdXBzIG9mIGVsZW1lbnRzIChsZWZ0IG92ZXIgZnJvbSB0
aGUgTmV0c2NhcGUgNCBkYXlzPyk7CkBAIC0yMDQsOSArMTcwLDcgQEAgdm9pZCBNb3VzZVJlbGF0
ZWRFdmVudDo6Y29tcHV0ZVJlbGF0aXZlUAogICAgIGlmIChuICYmIChsYXllciA9IG4tPnJlbmRl
cmVyKCktPmVuY2xvc2luZ0xheWVyKCkpKSB7CiAgICAgICAgIGxheWVyLT51cGRhdGVMYXllclBv
c2l0aW9uKCk7CiAgICAgICAgIGZvciAoOyBsYXllcjsgbGF5ZXIgPSBsYXllci0+cGFyZW50KCkp
IHsKLSAgICAgICAgICAgIGNvbnN0IEludFBvaW50JiBsb2NhdGlvbiA9IGxheWVyLT5sb2NhdGlv
bigpOwotICAgICAgICAgICAgbV9sYXllclggLT0gbG9jYXRpb24ueCgpOwotICAgICAgICAgICAg
bV9sYXllclkgLT0gbG9jYXRpb24ueSgpOworICAgICAgICAgICAgbV9sYXllckxvY2F0aW9uIC09
IHRvU2l6ZShsYXllci0+bG9jYXRpb24oKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIxNyw1
MiArMTgxLDU3IEBAIGludCBNb3VzZVJlbGF0ZWRFdmVudDo6bGF5ZXJYKCkKIHsKICAgICBpZiAo
IW1faGFzQ2FjaGVkUmVsYXRpdmVQb3NpdGlvbikKICAgICAgICAgY29tcHV0ZVJlbGF0aXZlUG9z
aXRpb24oKTsKLSAgICByZXR1cm4gbV9sYXllclg7CisgICAgcmV0dXJuIG1fbGF5ZXJMb2NhdGlv
bi54KCk7CiB9CiAKIGludCBNb3VzZVJlbGF0ZWRFdmVudDo6bGF5ZXJZKCkKIHsKICAgICBpZiAo
IW1faGFzQ2FjaGVkUmVsYXRpdmVQb3NpdGlvbikKICAgICAgICAgY29tcHV0ZVJlbGF0aXZlUG9z
aXRpb24oKTsKLSAgICByZXR1cm4gbV9sYXllclk7CisgICAgcmV0dXJuIG1fbGF5ZXJMb2NhdGlv
bi55KCk7CiB9CiAKIGludCBNb3VzZVJlbGF0ZWRFdmVudDo6b2Zmc2V0WCgpCiB7CiAgICAgaWYg
KCFtX2hhc0NhY2hlZFJlbGF0aXZlUG9zaXRpb24pCiAgICAgICAgIGNvbXB1dGVSZWxhdGl2ZVBv
c2l0aW9uKCk7Ci0gICAgcmV0dXJuIG1fb2Zmc2V0WDsKKyAgICByZXR1cm4gbV9vZmZzZXRMb2Nh
dGlvbi54KCk7CiB9CiAKIGludCBNb3VzZVJlbGF0ZWRFdmVudDo6b2Zmc2V0WSgpCiB7CiAgICAg
aWYgKCFtX2hhc0NhY2hlZFJlbGF0aXZlUG9zaXRpb24pCiAgICAgICAgIGNvbXB1dGVSZWxhdGl2
ZVBvc2l0aW9uKCk7Ci0gICAgcmV0dXJuIG1fb2Zmc2V0WTsKKyAgICByZXR1cm4gbV9vZmZzZXRM
b2NhdGlvbi55KCk7CiB9CiAKIGludCBNb3VzZVJlbGF0ZWRFdmVudDo6cGFnZVgoKSBjb25zdAog
ewotICAgIHJldHVybiBtX3BhZ2VYOworICAgIHJldHVybiBtX3BhZ2VMb2NhdGlvbi54KCk7CiB9
CiAKIGludCBNb3VzZVJlbGF0ZWRFdmVudDo6cGFnZVkoKSBjb25zdAogewotICAgIHJldHVybiBt
X3BhZ2VZOworICAgIHJldHVybiBtX3BhZ2VMb2NhdGlvbi55KCk7Cit9CisKK2NvbnN0IEludFBv
aW50JiBNb3VzZVJlbGF0ZWRFdmVudDo6cGFnZUxvY2F0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9wYWdlTG9jYXRpb247CiB9CiAKIGludCBNb3VzZVJlbGF0ZWRFdmVudDo6eCgpIGNvbnN0
CiB7CiAgICAgLy8gRklYTUU6IFRoaXMgaXMgbm90IGNvcnJlY3QuCiAgICAgLy8gU2VlIE1pY3Jv
c29mdCBkb2N1bWVudGF0aW9uIGFuZCA8aHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9kb20vdzNj
X2V2ZW50cy5odG1sPi4KLSAgICByZXR1cm4gbV9jbGllbnRYOworICAgIHJldHVybiBtX2NsaWVu
dExvY2F0aW9uLngoKTsKIH0KIAogaW50IE1vdXNlUmVsYXRlZEV2ZW50Ojp5KCkgY29uc3QKIHsK
ICAgICAvLyBGSVhNRTogVGhpcyBpcyBub3QgY29ycmVjdC4KICAgICAvLyBTZWUgTWljcm9zb2Z0
IGRvY3VtZW50YXRpb24gYW5kIDxodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2RvbS93M2NfZXZl
bnRzLmh0bWw+LgotICAgIHJldHVybiBtX2NsaWVudFk7CisgICAgcmV0dXJuIG1fY2xpZW50TG9j
YXRpb24ueSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuaAkocmV2aXNpb24gODc3NDMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTAgKzM0
LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6CiAgICAgICAgIC8vIE5vdGUg
dGhhdCB0aGVzZSB2YWx1ZXMgYXJlIGFkanVzdGVkIHRvIGNvdW50ZXIgdGhlIGVmZmVjdHMgb2Yg
em9vbSwgc28gdGhhdCB2YWx1ZXMKICAgICAgICAgLy8gZXhwb3NlZCB2aWEgRE9NIEFQSXMgYXJl
IGludmFyaWFudCB1bmRlciB6b29taW5nLgotICAgICAgICBpbnQgc2NyZWVuWCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2NyZWVuWDsgfQotICAgICAgICBpbnQgc2NyZWVuWSgpIGNvbnN0IHsgcmV0dXJu
IG1fc2NyZWVuWTsgfQotICAgICAgICBpbnQgY2xpZW50WCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xp
ZW50WDsgfQotICAgICAgICBpbnQgY2xpZW50WSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpZW50WTsg
fQorICAgICAgICBpbnQgc2NyZWVuWCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyZWVuTG9jYXRpb24u
eCgpOyB9CisgICAgICAgIGludCBzY3JlZW5ZKCkgY29uc3QgeyByZXR1cm4gbV9zY3JlZW5Mb2Nh
dGlvbi55KCk7IH0KKyAgICAgICAgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9zY3JlZW5Mb2NhdGlvbjsgfQorICAgICAgICBpbnQgY2xpZW50WCgpIGNv
bnN0IHsgcmV0dXJuIG1fY2xpZW50TG9jYXRpb24ueCgpOyB9CisgICAgICAgIGludCBjbGllbnRZ
KCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRMb2NhdGlvbi55KCk7IH0KKyAgICAgICAgY29uc3Qg
SW50UG9pbnQmIGNsaWVudExvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRMb2NhdGlv
bjsgfQogICAgICAgICBpbnQgbGF5ZXJYKCk7CiAgICAgICAgIGludCBsYXllclkoKTsKICAgICAg
ICAgaW50IG9mZnNldFgoKTsKQEAgLTQ1LDQwICs0NywzNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIGJvb2wgaXNTaW11bGF0ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzU2ltdWxhdGVk
OyB9CiAgICAgICAgIHZpcnR1YWwgaW50IHBhZ2VYKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwg
aW50IHBhZ2VZKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgY29uc3QgSW50UG9pbnQmIHBhZ2VM
b2NhdGlvbigpIGNvbnN0OwogICAgICAgICBpbnQgeCgpIGNvbnN0OwogICAgICAgICBpbnQgeSgp
IGNvbnN0OwogCiAgICAgICAgIC8vIFBhZ2UgcG9pbnQgaW4gImFic29sdXRlIiBjb29yZGluYXRl
cyAoaS5lLiBwb3N0LXpvb21lZCwgcGFnZS1yZWxhdGl2ZSBjb29yZHMsCiAgICAgICAgIC8vIHVz
YWJsZSB3aXRoIFJlbmRlck9iamVjdDo6YWJzb2x1dGVUb0xvY2FsKS4KLSAgICAgICAgSW50UG9p
bnQgYWJzb2x1dGVMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fYWJzb2x1dGVMb2NhdGlvbjsg
fQorICAgICAgICBjb25zdCBJbnRQb2ludCYgYWJzb2x1dGVMb2NhdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fYWJzb2x1dGVMb2NhdGlvbjsgfQogICAgICAgICB2b2lkIHNldEFic29sdXRlTG9jYXRp
b24oY29uc3QgSW50UG9pbnQmIHApIHsgbV9hYnNvbHV0ZUxvY2F0aW9uID0gcDsgfQogICAgIAog
ICAgIHByb3RlY3RlZDoKICAgICAgICAgTW91c2VSZWxhdGVkRXZlbnQoKTsKICAgICAgICAgTW91
c2VSZWxhdGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwg
Ym9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBh
Z2VYLCBpbnQgcGFnZVksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXRhaWwsIGNv
bnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIHdpbmRvd0xvY2F0
aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5
LCBib29sIHNoaWZ0S2V5LCBib29sIG1ldGFLZXksIGJvb2wgaXNTaW11bGF0ZWQgPSBmYWxzZSk7
CiAKICAgICAgICAgdm9pZCBpbml0Q29vcmRpbmF0ZXMoKTsKLSAgICAgICAgdm9pZCBpbml0Q29v
cmRpbmF0ZXMoaW50IGNsaWVudFgsIGludCBjbGllbnRZKTsKKyAgICAgICAgdm9pZCBpbml0Q29v
cmRpbmF0ZXMoY29uc3QgSW50UG9pbnQmIGNsaWVudExvY2F0aW9uKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIHJlY2VpdmVkVGFyZ2V0KCk7CiAKICAgICAgICAgdm9pZCBjb21wdXRlUGFnZUxvY2F0
aW9uKCk7CiAgICAgICAgIHZvaWQgY29tcHV0ZVJlbGF0aXZlUG9zaXRpb24oKTsKICAgICAgICAg
CiAgICAgICAgIC8vIEV4cG9zZSB0aGVzZSBzbyBNb3VzZUV2ZW50Ojppbml0TW91c2VFdmVudCBj
YW4gc2V0IHRoZW0uCi0gICAgICAgIGludCBtX3NjcmVlblg7Ci0gICAgICAgIGludCBtX3NjcmVl
blk7Ci0gICAgICAgIGludCBtX2NsaWVudFg7Ci0gICAgICAgIGludCBtX2NsaWVudFk7CisgICAg
ICAgIEludFBvaW50IG1fc2NyZWVuTG9jYXRpb247CisgICAgICAgIEludFBvaW50IG1fY2xpZW50
TG9jYXRpb247CiAKICAgICBwcml2YXRlOgotICAgICAgICBpbnQgbV9wYWdlWDsKLSAgICAgICAg
aW50IG1fcGFnZVk7Ci0gICAgICAgIGludCBtX2xheWVyWDsKLSAgICAgICAgaW50IG1fbGF5ZXJZ
OwotICAgICAgICBpbnQgbV9vZmZzZXRYOwotICAgICAgICBpbnQgbV9vZmZzZXRZOworICAgICAg
ICBJbnRQb2ludCBtX3BhZ2VMb2NhdGlvbjsKKyAgICAgICAgSW50UG9pbnQgbV9sYXllckxvY2F0
aW9uOworICAgICAgICBJbnRQb2ludCBtX29mZnNldExvY2F0aW9uOwogICAgICAgICBJbnRQb2lu
dCBtX2Fic29sdXRlTG9jYXRpb247CiAgICAgICAgIGJvb2wgbV9pc1NpbXVsYXRlZDsKICAgICAg
ICAgYm9vbCBtX2hhc0NhY2hlZFJlbGF0aXZlUG9zaXRpb247CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vVG91Y2hFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Rv
dWNoRXZlbnQuY3BwCShyZXZpc2lvbiA4Nzc0MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ub3Vj
aEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsOCArNDAsOCBAQCBUb3VjaEV2ZW50OjpU
b3VjaEV2ZW50KFRvdWNoTGlzdCogdG91Y2hlCiAgICAgICAgIFRvdWNoTGlzdCogY2hhbmdlZFRv
dWNoZXMsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgCiAgICAgICAgIFBhc3NSZWZQdHI8QWJz
dHJhY3RWaWV3PiB2aWV3LCBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50
IHBhZ2VZLAogICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5
LCBib29sIG1ldGFLZXkpCi0gICAgOiBNb3VzZVJlbGF0ZWRFdmVudCh0eXBlLCB0cnVlLCB0cnVl
LCB2aWV3LCAwLCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdlWCwgcGFnZVksCi0gICAgICAgICAgICAg
ICAgICAgICAgICBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5KQorICAgIDogTW91
c2VSZWxhdGVkRXZlbnQodHlwZSwgdHJ1ZSwgdHJ1ZSwgdmlldywgMCwgSW50UG9pbnQoc2NyZWVu
WCwgc2NyZWVuWSksCisgICAgICAgICAgICAgICAgICAgICAgICBJbnRQb2ludChwYWdlWCwgcGFn
ZVkpLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5KQogICAgICwgbV90b3VjaGVz
KHRvdWNoZXMpCiAgICAgLCBtX3RhcmdldFRvdWNoZXModGFyZ2V0VG91Y2hlcykKICAgICAsIG1f
Y2hhbmdlZFRvdWNoZXMoY2hhbmdlZFRvdWNoZXMpCkBAIC02NSwxMyArNjUsMTIgQEAgdm9pZCBU
b3VjaEV2ZW50Ojppbml0VG91Y2hFdmVudChUb3VjaExpcwogICAgIG1fdG91Y2hlcyA9IHRvdWNo
ZXM7CiAgICAgbV90YXJnZXRUb3VjaGVzID0gdGFyZ2V0VG91Y2hlczsKICAgICBtX2NoYW5nZWRU
b3VjaGVzID0gY2hhbmdlZFRvdWNoZXM7Ci0gICAgbV9zY3JlZW5YID0gc2NyZWVuWDsKLSAgICBt
X3NjcmVlblkgPSBzY3JlZW5ZOworICAgIG1fc2NyZWVuTG9jYXRpb24gPSBJbnRQb2ludChzY3Jl
ZW5YLCBzY3JlZW5ZKTsKICAgICBtX2N0cmxLZXkgPSBjdHJsS2V5OwogICAgIG1fYWx0S2V5ID0g
YWx0S2V5OwogICAgIG1fc2hpZnRLZXkgPSBzaGlmdEtleTsKICAgICBtX21ldGFLZXkgPSBtZXRh
S2V5OwotICAgIGluaXRDb29yZGluYXRlcyhjbGllbnRYLCBjbGllbnRZKTsKKyAgICBpbml0Q29v
cmRpbmF0ZXMoSW50UG9pbnQoY2xpZW50WCwgY2xpZW50WSkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCShyZXZpc2lvbiA4Nzc0
MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzIsMjUgKzMyLDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdoZWVsRXZlbnQ6Oldo
ZWVsRXZlbnQoKQotICAgIDogbV93aGVlbERlbHRhWCgwKQotICAgICwgbV93aGVlbERlbHRhWSgw
KQotICAgICwgbV9yYXdEZWx0YVgoMCkKLSAgICAsIG1fcmF3RGVsdGFZKDApCi0gICAgLCBtX2dy
YW51bGFyaXR5KFBpeGVsKQorICAgIDogbV9ncmFudWxhcml0eShQaXhlbCkKIHsKIH0KIAotV2hl
ZWxFdmVudDo6V2hlZWxFdmVudChmbG9hdCB3aGVlbFRpY2tzWCwgZmxvYXQgd2hlZWxUaWNrc1ks
IGZsb2F0IHJhd0RlbHRhWCwgZmxvYXQgcmF3RGVsdGFZLAorV2hlZWxFdmVudDo6V2hlZWxFdmVu
dChjb25zdCBGbG9hdFBvaW50JiB3aGVlbFRpY2tzLCBjb25zdCBGbG9hdFBvaW50JiByYXdEZWx0
YSwKICAgICAgICAgICAgICAgICAgICAgICAgR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFBhc3NS
ZWZQdHI8QWJzdHJhY3RWaWV3PiB2aWV3LAotICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2Ny
ZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLAorICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24sIGNvbnN0IEludFBvaW50JiBw
YWdlTG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBh
bHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSkKICAgICA6IE1vdXNlUmVsYXRlZEV2
ZW50KGV2ZW50TmFtZXMoKS5tb3VzZXdoZWVsRXZlbnQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICB0cnVlLCB0cnVlLCB2aWV3LCAwLCBzY3JlZW5YLCBzY3JlZW5ZLCBwYWdlWCwgcGFnZVksCisg
ICAgICAgICAgICAgICAgICAgICAgICB0cnVlLCB0cnVlLCB2aWV3LCAwLCBzY3JlZW5Mb2NhdGlv
biwgcGFnZUxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgY3RybEtleSwgYWx0S2V5
LCBzaGlmdEtleSwgbWV0YUtleSkKLSAgICAsIG1fd2hlZWxEZWx0YVgobHJvdW5kZih3aGVlbFRp
Y2tzWCAqIDEyMCkpCi0gICAgLCBtX3doZWVsRGVsdGFZKGxyb3VuZGYod2hlZWxUaWNrc1kgKiAx
MjApKSAvLyBOb3JtYWxpemUgdG8gdGhlIFdpbmRvd3MgMTIwIG11bHRpcGxlCi0gICAgLCBtX3Jh
d0RlbHRhWChyYXdEZWx0YVgpCi0gICAgLCBtX3Jhd0RlbHRhWShyYXdEZWx0YVkpCisgICAgLCBt
X3doZWVsRGVsdGEoSW50UG9pbnQoKGludCkod2hlZWxUaWNrcy54KCkgKiAxMjApLCAoaW50KSh3
aGVlbFRpY2tzLnkoKSAqIDEyMCkpKQorICAgICwgbV9yYXdEZWx0YShyb3VuZGVkSW50UG9pbnQo
cmF3RGVsdGEpKQogICAgICwgbV9ncmFudWxhcml0eShncmFudWxhcml0eSkKIHsKIH0KQEAgLTY0
LDIyICs1OCwxOSBAQCB2b2lkIFdoZWVsRXZlbnQ6OmluaXRXaGVlbEV2ZW50KGludCByYXdECiAg
ICAgCiAgICAgaW5pdFVJRXZlbnQoZXZlbnROYW1lcygpLm1vdXNld2hlZWxFdmVudCwgdHJ1ZSwg
dHJ1ZSwgdmlldywgMCk7CiAgICAgCi0gICAgbV9zY3JlZW5YID0gc2NyZWVuWDsKLSAgICBtX3Nj
cmVlblkgPSBzY3JlZW5ZOworICAgIG1fc2NyZWVuTG9jYXRpb24gPSBJbnRQb2ludChzY3JlZW5Y
LCBzY3JlZW5ZKTsKICAgICBtX2N0cmxLZXkgPSBjdHJsS2V5OwogICAgIG1fYWx0S2V5ID0gYWx0
S2V5OwogICAgIG1fc2hpZnRLZXkgPSBzaGlmdEtleTsKICAgICBtX21ldGFLZXkgPSBtZXRhS2V5
OwogICAgIAogICAgIC8vIE5vcm1hbGl6ZSB0byB0aGUgV2luZG93cyAxMjAgbXVsdGlwbGUKLSAg
ICBtX3doZWVsRGVsdGFYID0gcmF3RGVsdGFYICogMTIwOwotICAgIG1fd2hlZWxEZWx0YVkgPSBy
YXdEZWx0YVkgKiAxMjA7CisgICAgbV93aGVlbERlbHRhID0gSW50UG9pbnQocmF3RGVsdGFYICog
MTIwLCByYXdEZWx0YVkgKiAxMjApOwogICAgIAotICAgIG1fcmF3RGVsdGFYID0gcmF3RGVsdGFY
OwotICAgIG1fcmF3RGVsdGFZID0gcmF3RGVsdGFZOworICAgIG1fcmF3RGVsdGEgPSBJbnRQb2lu
dChyYXdEZWx0YVgsIHJhd0RlbHRhWSk7CiAgICAgbV9ncmFudWxhcml0eSA9IFBpeGVsOwogICAg
IAotICAgIGluaXRDb29yZGluYXRlcyhwYWdlWCwgcGFnZVkpOworICAgIGluaXRDb29yZGluYXRl
cyhJbnRQb2ludChwYWdlWCwgcGFnZVkpKTsKIH0KIAogdm9pZCBXaGVlbEV2ZW50Ojppbml0V2Vi
S2l0V2hlZWxFdmVudChpbnQgcmF3RGVsdGFYLCBpbnQgcmF3RGVsdGFZLCBQYXNzUmVmUHRyPEFi
c3RyYWN0Vmlldz4gdmlldywKQEAgLTEwNSw4ICs5Niw4IEBAIFdoZWVsRXZlbnREaXNwYXRjaE1l
ZGlhdG9yOjpXaGVlbEV2ZW50RGkKICAgICBpZiAoIShldmVudC5kZWx0YVgoKSB8fCBldmVudC5k
ZWx0YVkoKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNldEV2ZW50KFdoZWVsRXZlbnQ6OmNy
ZWF0ZShldmVudC53aGVlbFRpY2tzWCgpLCBldmVudC53aGVlbFRpY2tzWSgpLCBldmVudC5kZWx0
YVgoKSwgZXZlbnQuZGVsdGFZKCksIGdyYW51bGFyaXR5KGV2ZW50KSwKLSAgICAgICAgdmlldywg
ZXZlbnQuZ2xvYmFsWCgpLCBldmVudC5nbG9iYWxZKCksIGV2ZW50LngoKSwgZXZlbnQueSgpLCBl
dmVudC5jdHJsS2V5KCksIGV2ZW50LmFsdEtleSgpLCBldmVudC5zaGlmdEtleSgpLCBldmVudC5t
ZXRhS2V5KCkpKTsKKyAgICBzZXRFdmVudChXaGVlbEV2ZW50OjpjcmVhdGUoRmxvYXRQb2ludChl
dmVudC53aGVlbFRpY2tzWCgpLCBldmVudC53aGVlbFRpY2tzWSgpKSwgRmxvYXRQb2ludChldmVu
dC5kZWx0YVgoKSwgZXZlbnQuZGVsdGFZKCkpLCBncmFudWxhcml0eShldmVudCksCisgICAgICAg
IHZpZXcsIEludFBvaW50KGV2ZW50Lmdsb2JhbFgoKSwgZXZlbnQuZ2xvYmFsWSgpKSwgSW50UG9p
bnQoZXZlbnQueCgpLCBldmVudC55KCkpLCBldmVudC5jdHJsS2V5KCksIGV2ZW50LmFsdEtleSgp
LCBldmVudC5zaGlmdEtleSgpLCBldmVudC5tZXRhS2V5KCkpKTsKIAogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9XaGVlbEV2ZW50LmgJKHJldmlzaW9uIDg3NzQzKQorKysgU291cmNlL1dlYkNvcmUvZG9t
L1doZWVsRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAogI2lmbmRlZiBX
aGVlbEV2ZW50X2gKICNkZWZpbmUgV2hlZWxFdmVudF9oCiAKKyNpbmNsdWRlICJGbG9hdFBvaW50
LmgiCiAjaW5jbHVkZSAiTW91c2VSZWxhdGVkRXZlbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpAQCAtMzcsMTQgKzM4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgewogICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXaGVlbEV2ZW50KTsKICAgICAgICAgfQotICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXaGVlbEV2ZW50PiBjcmVhdGUoZmxvYXQgd2hlZWxUaWNr
c1gsIGZsb2F0IHdoZWVsVGlja3NZLAotICAgICAgICAgICAgZmxvYXQgcmF3RGVsdGFYLCBmbG9h
dCByYXdEZWx0YVksIEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBQYXNzUmVmUHRyPEFic3RyYWN0
Vmlldz4gdmlldywKLSAgICAgICAgICAgIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBh
Z2VYLCBpbnQgcGFnZVksCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdoZWVsRXZlbnQ+IGNy
ZWF0ZShjb25zdCBGbG9hdFBvaW50JiB3aGVlbFRpY2tzLAorICAgICAgICAgICAgY29uc3QgRmxv
YXRQb2ludCYgcmF3RGVsdGEsIEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBQYXNzUmVmUHRyPEFi
c3RyYWN0Vmlldz4gdmlldywKKyAgICAgICAgICAgIGNvbnN0IEludFBvaW50JiBzY3JlZW5Mb2Nh
dGlvbiwgY29uc3QgSW50UG9pbnQmIHBhZ2VMb2NhdGlvbiwKICAgICAgICAgICAgIGJvb2wgY3Ry
bEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSkKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXaGVlbEV2ZW50KHdoZWVsVGlja3NY
LCB3aGVlbFRpY2tzWSwgcmF3RGVsdGFYLCByYXdEZWx0YVksCi0gICAgICAgICAgICAgICAgZ3Jh
bnVsYXJpdHksIHZpZXcsIHNjcmVlblgsIHNjcmVlblksIHBhZ2VYLCBwYWdlWSwKLSAgICAgICAg
ICAgICAgICBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5KSk7CisgICAgICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFdoZWVsRXZlbnQod2hlZWxUaWNrcywgcmF3RGVsdGEsIGdy
YW51bGFyaXR5LCB2aWV3LAorICAgICAgICAgICAgICAgIHNjcmVlbkxvY2F0aW9uLCBwYWdlTG9j
YXRpb24sIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXkpKTsKICAgICAgICAgfQog
CiAgICAgICAgIHZvaWQgaW5pdFdoZWVsRXZlbnQoaW50IHJhd0RlbHRhWCwgaW50IHJhd0RlbHRh
WSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+LApAQCAtNTUsMzAgKzU1LDI3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2NyZWVu
WCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXks
IGJvb2wgbWV0YUtleSk7CiAKLSAgICAgICAgaW50IHdoZWVsRGVsdGEoKSBjb25zdCB7IGlmICht
X3doZWVsRGVsdGFZID09IDApIHJldHVybiBtX3doZWVsRGVsdGFYOyByZXR1cm4gbV93aGVlbERl
bHRhWTsgfQotICAgICAgICBpbnQgd2hlZWxEZWx0YVgoKSBjb25zdCB7IHJldHVybiBtX3doZWVs
RGVsdGFYOyB9Ci0gICAgICAgIGludCB3aGVlbERlbHRhWSgpIGNvbnN0IHsgcmV0dXJuIG1fd2hl
ZWxEZWx0YVk7IH0KLSAgICAgICAgaW50IHJhd0RlbHRhWCgpIGNvbnN0IHsgcmV0dXJuIG1fcmF3
RGVsdGFYOyB9Ci0gICAgICAgIGludCByYXdEZWx0YVkoKSBjb25zdCB7IHJldHVybiBtX3Jhd0Rl
bHRhWTsgfQorICAgICAgICBpbnQgd2hlZWxEZWx0YSgpIGNvbnN0IHsgcmV0dXJuIG1fd2hlZWxE
ZWx0YS55KCkgPyBtX3doZWVsRGVsdGEueSgpIDogbV93aGVlbERlbHRhLngoKTsgfQorICAgICAg
ICBpbnQgd2hlZWxEZWx0YVgoKSBjb25zdCB7IHJldHVybiBtX3doZWVsRGVsdGEueCgpOyB9Cisg
ICAgICAgIGludCB3aGVlbERlbHRhWSgpIGNvbnN0IHsgcmV0dXJuIG1fd2hlZWxEZWx0YS55KCk7
IH0KKyAgICAgICAgaW50IHJhd0RlbHRhWCgpIGNvbnN0IHsgcmV0dXJuIG1fcmF3RGVsdGEueCgp
OyB9CisgICAgICAgIGludCByYXdEZWx0YVkoKSBjb25zdCB7IHJldHVybiBtX3Jhd0RlbHRhLnko
KTsgfQogICAgICAgICBHcmFudWxhcml0eSBncmFudWxhcml0eSgpIGNvbnN0IHsgcmV0dXJuIG1f
Z3JhbnVsYXJpdHk7IH0KIAogICAgICAgICAvLyBOZWVkZWQgZm9yIE9iamVjdGl2ZS1DIGxlZ2Fj
eSBzdXBwb3J0Ci0gICAgICAgIGJvb2wgaXNIb3Jpem9udGFsKCkgY29uc3QgeyByZXR1cm4gbV93
aGVlbERlbHRhWDsgfQorICAgICAgICBib29sIGlzSG9yaXpvbnRhbCgpIGNvbnN0IHsgcmV0dXJu
IG1fd2hlZWxEZWx0YS54KCk7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIFdoZWVsRXZlbnQo
KTsKLSAgICAgICAgV2hlZWxFdmVudChmbG9hdCB3aGVlbFRpY2tzWCwgZmxvYXQgd2hlZWxUaWNr
c1ksIGZsb2F0IHJhd0RlbHRhWCwgZmxvYXQgcmF3RGVsdGFZLAorICAgICAgICBXaGVlbEV2ZW50
KGNvbnN0IEZsb2F0UG9pbnQmIHdoZWVsVGlja3MsIGNvbnN0IEZsb2F0UG9pbnQmIHJhd0RlbHRh
LAogICAgICAgICAgICAgICAgICAgIEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBQYXNzUmVmUHRy
PEFic3RyYWN0Vmlldz4sCi0gICAgICAgICAgICAgICAgICAgaW50IHNjcmVlblgsIGludCBzY3Jl
ZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBJbnRQ
b2ludCYgc2NyZWVuTG9jYXRpb24sIGNvbnN0IEludFBvaW50JiBwYWdlTG9jYXRpb24sCiAgICAg
ICAgICAgICAgICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwg
Ym9vbCBtZXRhS2V5KTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNXaGVlbEV2ZW50KCkgY29u
c3Q7Ci0gICAgICAgIAotICAgICAgICBpbnQgbV93aGVlbERlbHRhWDsKLSAgICAgICAgaW50IG1f
d2hlZWxEZWx0YVk7CiAKLSAgICAgICAgaW50IG1fcmF3RGVsdGFYOwotICAgICAgICBpbnQgbV9y
YXdEZWx0YVk7CisgICAgICAgIEludFBvaW50IG1fd2hlZWxEZWx0YTsKKyAgICAgICAgSW50UG9p
bnQgbV9yYXdEZWx0YTsKICAgICAgICAgR3JhbnVsYXJpdHkgbV9ncmFudWxhcml0eTsKICAgICB9
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmgJ
KHJldmlzaW9uIDg3NzQzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50
UG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBJbnRQb2lu
dF9oCiAKICNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSA8bWF0aC5oPgogCiAjaWYgUExB
VEZPUk0oUVQpCiAjaW5jbHVkZSA8UURhdGFTdHJlYW0+CkBAIC05Miw2ICs5MywxMSBAQCBwdWJs
aWM6CiAgICAgdm9pZCBtb3ZlKGNvbnN0IEludFNpemUmIHMpIHsgbW92ZShzLndpZHRoKCksIHMu
aGVpZ2h0KCkpOyB9IAogICAgIHZvaWQgbW92ZShjb25zdCBJbnRQb2ludCYgb2Zmc2V0KSB7IG1v
dmUob2Zmc2V0LngoKSwgb2Zmc2V0LnkoKSk7IH0KICAgICB2b2lkIG1vdmUoaW50IGR4LCBpbnQg
ZHkpIHsgbV94ICs9IGR4OyBtX3kgKz0gZHk7IH0KKyAgICB2b2lkIHNjYWxlKGZsb2F0IHN4LCBm
bG9hdCBzeSkKKyAgICB7CisgICAgICAgIG1feCA9IGxyb3VuZGYoKGZsb2F0KW1feCAqIHN4KTsK
KyAgICAgICAgbV95ID0gbHJvdW5kZigoZmxvYXQpbV95ICogc3kpOworICAgIH0KICAgICAKICAg
ICBJbnRQb2ludCBleHBhbmRlZFRvKGNvbnN0IEludFBvaW50JiBvdGhlcikgY29uc3QKICAgICB7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95511</attachid>
            <date>2011-05-31 16:55:53 -0700</date>
            <delta_ts>2011-06-01 11:14:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61574-20110531165552.patch</filename>
            <type>text/plain</type>
            <size>25144</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg3NzU4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTYgQEAKKzIwMTEtMDUtMzEgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFN3aXRjaCBNb3VzZVJlbGF0ZWRFdmVudCB0byB1c2UgSW50UG9p
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxNTc0
CisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGRvbS9N
b3VzZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2ltdWxhdGVkTW91c2VFdmVudDo6U2ltdWxhdGVkTW91c2VFdmVudCk6Cisg
ICAgICAgICogZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1v
dXNlUmVsYXRlZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpj
b250ZW50c1Njcm9sbE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVu
dDo6aW5pdENvb3JkaW5hdGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50
Ojpjb21wdXRlUmVsYXRpdmVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0
ZWRFdmVudDo6bGF5ZXJYKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojps
YXllclkpOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZlbnQ6Om9mZnNldFgpOgor
ICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZlbnQ6Om9mZnNldFkpOgorICAgICAgICAo
V2ViQ29yZTo6TW91c2VSZWxhdGVkRXZlbnQ6OnBhZ2VYKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
dXNlUmVsYXRlZEV2ZW50OjpwYWdlWSk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRF
dmVudDo6cGFnZUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50
Ojp4KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojp5KToKKyAgICAgICAg
KiBkb20vTW91c2VSZWxhdGVkRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRl
ZEV2ZW50OjpzY3JlZW5YKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojpz
Y3JlZW5ZKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50OjpzY3JlZW5Mb2Nh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6Y2xpZW50WCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6Y2xpZW50WSk6CisgICAgICAgIChX
ZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6Y2xpZW50TG9jYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6TW91c2VSZWxhdGVkRXZlbnQ6OmFic29sdXRlTG9jYXRpb24pOgorICAgICAgICAqIGRv
bS9Ub3VjaEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoRXZlbnQ6OlRvdWNoRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hFdmVudDo6aW5pdFRvdWNoRXZlbnQpOgorICAg
ICAgICAqIGRvbS9XaGVlbEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnQ6
OldoZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudDo6aW5pdFdoZWVsRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudERpc3BhdGNoTWVkaWF0b3I6OldoZWVs
RXZlbnREaXNwYXRjaE1lZGlhdG9yKToKKyAgICAgICAgKiBkb20vV2hlZWxFdmVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Oldo
ZWVsRXZlbnQ6OndoZWVsRGVsdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudDo6d2hl
ZWxEZWx0YVgpOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudDo6d2hlZWxEZWx0YVkpOgor
ICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudDo6cmF3RGVsdGFYKToKKyAgICAgICAgKFdlYkNv
cmU6OldoZWVsRXZlbnQ6OnJhd0RlbHRhWSk6CisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50
Ojppc0hvcml6b250YWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpJbnRQb2ludDo6c2NhbGUpOgorCiAyMDExLTA1LTMxICBCLkou
IFdldmVyICA8c2t5bGluZWRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFk
YW0gQmFydGguCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCShyZXZpc2lvbiA4Nzc1
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTQsOCArNTQsOCBAQCBNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
CiAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wg
c2hpZnRLZXksIGJvb2wgbWV0YUtleSwKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
c2hvcnQgYnV0dG9uLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiByZWxhdGVkVGFyZ2V0LAogICAg
ICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPENsaXBib2FyZD4gY2xpcGJvYXJkLCBib29s
IGlzU2ltdWxhdGVkKQotICAgIDogTW91c2VSZWxhdGVkRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJi
bGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCwgc2NyZWVuWCwgc2NyZWVuWSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHBhZ2VYLCBwYWdlWSwgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwg
bWV0YUtleSwgaXNTaW11bGF0ZWQpCisgICAgOiBNb3VzZVJlbGF0ZWRFdmVudChldmVudFR5cGUs
IGNhbkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsLCBJbnRQb2ludChzY3JlZW5YLCBz
Y3JlZW5ZKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KHBhZ2VYLCBwYWdlWSks
IGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGlzU2ltdWxhdGVkKQogICAgICwg
bV9idXR0b24oYnV0dG9uID09ICh1bnNpZ25lZCBzaG9ydCktMSA/IDAgOiBidXR0b24pCiAgICAg
LCBtX2J1dHRvbkRvd24oYnV0dG9uICE9ICh1bnNpZ25lZCBzaG9ydCktMSkKICAgICAsIG1fcmVs
YXRlZFRhcmdldChyZWxhdGVkVGFyZ2V0KQpAQCAtNzcsOCArNzcsNyBAQCB2b2lkIE1vdXNlRXZl
bnQ6OmluaXRNb3VzZUV2ZW50KGNvbnN0IEF0CiAKICAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5C
dWJibGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCk7CiAKLSAgICBtX3NjcmVlblggPSBzY3Jl
ZW5YOwotICAgIG1fc2NyZWVuWSA9IHNjcmVlblk7CisgICAgbV9zY3JlZW5Mb2NhdGlvbiA9IElu
dFBvaW50KHNjcmVlblgsIHNjcmVlblkpOwogICAgIG1fY3RybEtleSA9IGN0cmxLZXk7CiAgICAg
bV9hbHRLZXkgPSBhbHRLZXk7CiAgICAgbV9zaGlmdEtleSA9IHNoaWZ0S2V5OwpAQCAtODcsNyAr
ODYsNyBAQCB2b2lkIE1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50KGNvbnN0IEF0CiAgICAgbV9i
dXR0b25Eb3duID0gYnV0dG9uICE9ICh1bnNpZ25lZCBzaG9ydCktMTsKICAgICBtX3JlbGF0ZWRU
YXJnZXQgPSByZWxhdGVkVGFyZ2V0OwogCi0gICAgaW5pdENvb3JkaW5hdGVzKGNsaWVudFgsIGNs
aWVudFkpOworICAgIGluaXRDb29yZGluYXRlcyhJbnRQb2ludChjbGllbnRYLCBjbGllbnRZKSk7
CiAKICAgICAvLyBGSVhNRTogbV9pc1NpbXVsYXRlZCBpcyBub3Qgc2V0IHRvIGZhbHNlIGhlcmUu
CiAgICAgLy8gRklYTUU6IG1fY2xpcGJvYXJkIGlzIG5vdCBzZXQgdG8gMCBoZXJlLgpAQCAtMTUz
LDkgKzE1Miw4IEBAIFNpbXVsYXRlZE1vdXNlRXZlbnQ6OlNpbXVsYXRlZE1vdXNlRXZlbnQKIAog
ICAgIGlmICh0aGlzLT51bmRlcmx5aW5nRXZlbnQoKSAmJiB0aGlzLT51bmRlcmx5aW5nRXZlbnQo
KS0+aXNNb3VzZUV2ZW50KCkpIHsKICAgICAgICAgTW91c2VFdmVudCogbW91c2VFdmVudCA9IHN0
YXRpY19jYXN0PE1vdXNlRXZlbnQqPih0aGlzLT51bmRlcmx5aW5nRXZlbnQoKSk7Ci0gICAgICAg
IG1fc2NyZWVuWCA9IG1vdXNlRXZlbnQtPnNjcmVlblgoKTsKLSAgICAgICAgbV9zY3JlZW5ZID0g
bW91c2VFdmVudC0+c2NyZWVuWSgpOwotICAgICAgICBpbml0Q29vcmRpbmF0ZXMobW91c2VFdmVu
dC0+Y2xpZW50WCgpLCBtb3VzZUV2ZW50LT5jbGllbnRZKCkpOworICAgICAgICBtX3NjcmVlbkxv
Y2F0aW9uID0gbW91c2VFdmVudC0+c2NyZWVuTG9jYXRpb24oKTsKKyAgICAgICAgaW5pdENvb3Jk
aW5hdGVzKG1vdXNlRXZlbnQtPmNsaWVudExvY2F0aW9uKCkpOwogICAgIH0KIH0KIApJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwCShyZXZpc2lvbiA4Nzc1OCkK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDU3ICszMywzMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBNb3VzZVJlbGF0
ZWRFdmVudDo6TW91c2VSZWxhdGVkRXZlbnQoKQotICAgIDogbV9zY3JlZW5YKDApCi0gICAgLCBt
X3NjcmVlblkoMCkKLSAgICAsIG1fY2xpZW50WCgwKQotICAgICwgbV9jbGllbnRZKDApCi0gICAg
LCBtX3BhZ2VYKDApCi0gICAgLCBtX3BhZ2VZKDApCi0gICAgLCBtX2xheWVyWCgwKQotICAgICwg
bV9sYXllclkoMCkKLSAgICAsIG1fb2Zmc2V0WCgwKQotICAgICwgbV9vZmZzZXRZKDApCi0gICAg
LCBtX2lzU2ltdWxhdGVkKGZhbHNlKQorICAgIDogbV9pc1NpbXVsYXRlZChmYWxzZSkKICAgICAs
IG1faGFzQ2FjaGVkUmVsYXRpdmVQb3NpdGlvbihmYWxzZSkKIHsKIH0KIAotc3RhdGljIGludCBj
b250ZW50c1goQWJzdHJhY3RWaWV3KiBhYnN0cmFjdFZpZXcpCitzdGF0aWMgSW50U2l6ZSBjb250
ZW50c1Njcm9sbE9mZnNldChBYnN0cmFjdFZpZXcqIGFic3RyYWN0VmlldykKIHsKICAgICBpZiAo
IWFic3RyYWN0VmlldykKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBJbnRTaXpl
KCk7CiAgICAgRnJhbWUqIGZyYW1lID0gYWJzdHJhY3RWaWV3LT5mcmFtZSgpOwogICAgIGlmICgh
ZnJhbWUpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gSW50U2l6ZSgpOwogICAg
IEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWUtPnZpZXcoKTsKICAgICBpZiAoIWZyYW1lVmll
dykKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGZyYW1lVmlldy0+c2Nyb2xsWCgpIC8g
ZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCk7Ci19Ci0KLXN0YXRpYyBpbnQgY29udGVudHNZKEFic3Ry
YWN0VmlldyogYWJzdHJhY3RWaWV3KQotewotICAgIGlmICghYWJzdHJhY3RWaWV3KQotICAgICAg
ICByZXR1cm4gMDsKLSAgICBGcmFtZSogZnJhbWUgPSBhYnN0cmFjdFZpZXctPmZyYW1lKCk7Ci0g
ICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgRnJhbWVWaWV3KiBmcmFtZVZp
ZXcgPSBmcmFtZS0+dmlldygpOwotICAgIGlmICghZnJhbWVWaWV3KQotICAgICAgICByZXR1cm4g
MDsKLSAgICByZXR1cm4gZnJhbWVWaWV3LT5zY3JvbGxZKCkgLyBmcmFtZS0+cGFnZVpvb21GYWN0
b3IoKTsKKyAgICAgICAgcmV0dXJuIEludFNpemUoKTsKKyAgICByZXR1cm4gSW50U2l6ZShmcmFt
ZVZpZXctPnNjcm9sbFgoKSAvIGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpLAorICAgICAgICBmcmFt
ZVZpZXctPnNjcm9sbFkoKSAvIGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpKTsKIH0KIAogTW91c2VS
ZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPEFic3RyYWN0
Vmlldz4gYWJzdHJhY3RWaWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGludCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHdpbmRvd1gsIGludCB3
aW5kb3dZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXRhaWws
IGNvbnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIHdpbmRvd0xv
Y2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY3RybEtl
eSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgYm9vbCBpc1NpbXVs
YXRlZCkKICAgICA6IFVJRXZlbnRXaXRoS2V5U3RhdGUoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNh
bmNlbGFibGUsIGFic3RyYWN0VmlldywgZGV0YWlsLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5
LCBtZXRhS2V5KQotICAgICwgbV9zY3JlZW5YKHNjcmVlblgpCi0gICAgLCBtX3NjcmVlblkoc2Ny
ZWVuWSkKLSAgICAsIG1fY2xpZW50WCgwKQotICAgICwgbV9jbGllbnRZKDApCi0gICAgLCBtX3Bh
Z2VYKDApCi0gICAgLCBtX3BhZ2VZKDApCisgICAgLCBtX3NjcmVlbkxvY2F0aW9uKHNjcmVlbkxv
Y2F0aW9uKQogICAgICwgbV9pc1NpbXVsYXRlZChpc1NpbXVsYXRlZCkKIHsKICAgICBJbnRQb2lu
dCBhZGp1c3RlZFBhZ2VMb2NhdGlvbjsKQEAgLTkzLDIzICs2NiwyMiBAQCBNb3VzZVJlbGF0ZWRF
dmVudDo6TW91c2VSZWxhdGVkRXZlbnQoY29uCiAgICAgaWYgKGZyYW1lICYmICFpc1NpbXVsYXRl
ZCkgewogICAgICAgICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygpKSB7
CiAgICAgICAgICAgICBzY3JvbGxQb3NpdGlvbiA9IGZyYW1lVmlldy0+c2Nyb2xsUG9zaXRpb24o
KTsKLSAgICAgICAgICAgIGFkanVzdGVkUGFnZUxvY2F0aW9uID0gZnJhbWVWaWV3LT53aW5kb3dU
b0NvbnRlbnRzKEludFBvaW50KHdpbmRvd1gsIHdpbmRvd1kpKTsKKyAgICAgICAgICAgIGFkanVz
dGVkUGFnZUxvY2F0aW9uID0gZnJhbWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKHdpbmRvd0xvY2F0
aW9uKTsKICAgICAgICAgICAgIGZsb2F0IHBhZ2Vab29tID0gZnJhbWUtPnBhZ2Vab29tRmFjdG9y
KCk7CiAgICAgICAgICAgICBpZiAocGFnZVpvb20gIT0gMS4wZikgewogICAgICAgICAgICAgICAg
IC8vIEFkanVzdCBvdXIgcGFnZVggYW5kIHBhZ2VZIHRvIGFjY291bnQgZm9yIHRoZSBwYWdlIHpv
b20uCi0gICAgICAgICAgICAgICAgYWRqdXN0ZWRQYWdlTG9jYXRpb24uc2V0WChscm91bmRmKGFk
anVzdGVkUGFnZUxvY2F0aW9uLngoKSAvIHBhZ2Vab29tKSk7Ci0gICAgICAgICAgICAgICAgYWRq
dXN0ZWRQYWdlTG9jYXRpb24uc2V0WShscm91bmRmKGFkanVzdGVkUGFnZUxvY2F0aW9uLnkoKSAv
IHBhZ2Vab29tKSk7CisgICAgICAgICAgICAgICAgYWRqdXN0ZWRQYWdlTG9jYXRpb24uc2NhbGUo
MSAvIHBhZ2Vab29tLCAxIC8gcGFnZVpvb20pOworCisgICAgICAgICAgICAgICAgLy8gRklYTUU6
IENoYW5nZSB0aGlzIHRvIHVzZSBmbG9hdCBtYXRoIGFuZCBwcm9wZXIgcm91bmRpbmcgKG9yCisg
ICAgICAgICAgICAgICAgLy8gYmV0dGVyIHlldCwgdXNlIEludFBvaW50OjpzY2FsZSkuCiAgICAg
ICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb24uc2V0WChzY3JvbGxQb3NpdGlvbi54KCkgLyBwYWdl
Wm9vbSk7CiAgICAgICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb24uc2V0WShzY3JvbGxQb3NpdGlv
bi55KCkgLyBwYWdlWm9vbSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBJbnRQb2ludCBjbGllbnRMb2NhdGlvbihhZGp1c3RlZFBhZ2VMb2NhdGlvbiAtIHNjcm9sbFBv
c2l0aW9uKTsKLSAgICBtX2NsaWVudFggPSBjbGllbnRMb2NhdGlvbi54KCk7Ci0gICAgbV9jbGll
bnRZID0gY2xpZW50TG9jYXRpb24ueSgpOwotICAgIG1fcGFnZVggPSBhZGp1c3RlZFBhZ2VMb2Nh
dGlvbi54KCk7Ci0gICAgbV9wYWdlWSA9IGFkanVzdGVkUGFnZUxvY2F0aW9uLnkoKTsKKyAgICBt
X2NsaWVudExvY2F0aW9uID0gYWRqdXN0ZWRQYWdlTG9jYXRpb24gLSB0b1NpemUoc2Nyb2xsUG9z
aXRpb24pOworICAgIG1fcGFnZUxvY2F0aW9uID0gYWRqdXN0ZWRQYWdlTG9jYXRpb247CiAKICAg
ICBpbml0Q29vcmRpbmF0ZXMoKTsKIH0KQEAgLTExOCwyNyArOTAsMjIgQEAgdm9pZCBNb3VzZVJl
bGF0ZWRFdmVudDo6aW5pdENvb3JkaW5hdGVzKAogewogICAgIC8vIFNldCB1cCBpbml0aWFsIHZh
bHVlcyBmb3IgY29vcmRpbmF0ZXMuCiAgICAgLy8gQ29ycmVjdCB2YWx1ZXMgYXJlIGNvbXB1dGVk
IGxhemlseSwgc2VlIGNvbXB1dGVSZWxhdGl2ZVBvc2l0aW9uLgotICAgIG1fbGF5ZXJYID0gbV9w
YWdlWDsKLSAgICBtX2xheWVyWSA9IG1fcGFnZVk7Ci0gICAgbV9vZmZzZXRYID0gbV9wYWdlWDsK
LSAgICBtX29mZnNldFkgPSBtX3BhZ2VZOworICAgIG1fbGF5ZXJMb2NhdGlvbiA9IG1fcGFnZUxv
Y2F0aW9uOworICAgIG1fb2Zmc2V0TG9jYXRpb24gPSBtX3BhZ2VMb2NhdGlvbjsKIAogICAgIGNv
bXB1dGVQYWdlTG9jYXRpb24oKTsKICAgICBtX2hhc0NhY2hlZFJlbGF0aXZlUG9zaXRpb24gPSBm
YWxzZTsKIH0KIAotdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6aW5pdENvb3JkaW5hdGVzKGludCBj
bGllbnRYLCBpbnQgY2xpZW50WSkKK3ZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OmluaXRDb29yZGlu
YXRlcyhjb25zdCBJbnRQb2ludCYgY2xpZW50TG9jYXRpb24pCiB7CiAgICAgLy8gU2V0IHVwIGlu
aXRpYWwgdmFsdWVzIGZvciBjb29yZGluYXRlcy4KICAgICAvLyBDb3JyZWN0IHZhbHVlcyBhcmUg
Y29tcHV0ZWQgbGF6aWx5LCBzZWUgY29tcHV0ZVJlbGF0aXZlUG9zaXRpb24uCi0gICAgbV9jbGll
bnRYID0gY2xpZW50WDsKLSAgICBtX2NsaWVudFkgPSBjbGllbnRZOwotICAgIG1fcGFnZVggPSBj
bGllbnRYICsgY29udGVudHNYKHZpZXcoKSk7Ci0gICAgbV9wYWdlWSA9IGNsaWVudFkgKyBjb250
ZW50c1kodmlldygpKTsKLSAgICBtX2xheWVyWCA9IG1fcGFnZVg7Ci0gICAgbV9sYXllclkgPSBt
X3BhZ2VZOwotICAgIG1fb2Zmc2V0WCA9IG1fcGFnZVg7Ci0gICAgbV9vZmZzZXRZID0gbV9wYWdl
WTsKKyAgICBtX2NsaWVudExvY2F0aW9uID0gY2xpZW50TG9jYXRpb247CisgICAgbV9wYWdlTG9j
YXRpb24gPSBjbGllbnRMb2NhdGlvbiArIGNvbnRlbnRzU2Nyb2xsT2Zmc2V0KHZpZXcoKSk7CisK
KyAgICBtX2xheWVyTG9jYXRpb24gPSBtX3BhZ2VMb2NhdGlvbjsKKyAgICBtX29mZnNldExvY2F0
aW9uID0gbV9wYWdlTG9jYXRpb247CiAKICAgICBjb21wdXRlUGFnZUxvY2F0aW9uKCk7CiAgICAg
bV9oYXNDYWNoZWRSZWxhdGl2ZVBvc2l0aW9uID0gZmFsc2U7CkBAIC0xNzMsMjUgKzE0MCwyNCBA
QCB2b2lkIE1vdXNlUmVsYXRlZEV2ZW50Ojpjb21wdXRlUmVsYXRpdmVQCiAgICAgICAgIHJldHVy
bjsKIAogICAgIC8vIENvbXB1dGUgY29vcmRpbmF0ZXMgdGhhdCBhcmUgYmFzZWQgb24gdGhlIHRh
cmdldC4KLSAgICBtX2xheWVyWCA9IG1fcGFnZVg7Ci0gICAgbV9sYXllclkgPSBtX3BhZ2VZOwot
ICAgIG1fb2Zmc2V0WCA9IG1fcGFnZVg7Ci0gICAgbV9vZmZzZXRZID0gbV9wYWdlWTsKKyAgICBt
X2xheWVyTG9jYXRpb24gPSBtX3BhZ2VMb2NhdGlvbjsKKyAgICBtX29mZnNldExvY2F0aW9uID0g
bV9wYWdlTG9jYXRpb247CiAKICAgICAvLyBNdXN0IGhhdmUgYW4gdXBkYXRlZCByZW5kZXIgdHJl
ZSBmb3IgdGhpcyBtYXRoIHRvIHdvcmsgY29ycmVjdGx5LgogICAgIHRhcmdldE5vZGUtPmRvY3Vt
ZW50KCktPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKIAotICAgIC8vIEFkanVzdCBvZmZzZXRYL1kg
dG8gYmUgcmVsYXRpdmUgdG8gdGhlIHRhcmdldCdzIHBvc2l0aW9uLgorICAgIC8vIEFkanVzdCBv
ZmZzZXRMb2NhdGlvbiB0byBiZSByZWxhdGl2ZSB0byB0aGUgdGFyZ2V0J3MgcG9zaXRpb24uCiAg
ICAgaWYgKCFpc1NpbXVsYXRlZCgpKSB7CiAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHIgPSB0
YXJnZXROb2RlLT5yZW5kZXJlcigpKSB7CiAgICAgICAgICAgICBGbG9hdFBvaW50IGxvY2FsUG9z
ID0gci0+YWJzb2x1dGVUb0xvY2FsKGFic29sdXRlTG9jYXRpb24oKSwgZmFsc2UsIHRydWUpOwot
ICAgICAgICAgICAgZmxvYXQgem9vbUZhY3RvciA9IHBhZ2Vab29tRmFjdG9yKHRoaXMpOwotICAg
ICAgICAgICAgbV9vZmZzZXRYID0gbHJvdW5kZihsb2NhbFBvcy54KCkgLyB6b29tRmFjdG9yKTsK
LSAgICAgICAgICAgIG1fb2Zmc2V0WSA9IGxyb3VuZGYobG9jYWxQb3MueSgpIC8gem9vbUZhY3Rv
cik7CisgICAgICAgICAgICBtX29mZnNldExvY2F0aW9uID0gcm91bmRlZEludFBvaW50KGxvY2Fs
UG9zKTsKKyAgICAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gMSAvIHBhZ2Vab29tRmFjdG9y
KHRoaXMpOworICAgICAgICAgICAgaWYgKHNjYWxlRmFjdG9yICE9IDEuMGYpCisgICAgICAgICAg
ICAgICAgbV9vZmZzZXRMb2NhdGlvbi5zY2FsZShzY2FsZUZhY3Rvciwgc2NhbGVGYWN0b3IpOwog
ICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gQWRqdXN0IGxheWVyWC9ZIHRvIGJlIHJlbGF0aXZl
IHRvIHRoZSBsYXllci4KKyAgICAvLyBBZGp1c3QgbGF5ZXJMb2NhdGlvbiB0byBiZSByZWxhdGl2
ZSB0byB0aGUgbGF5ZXIuCiAgICAgLy8gRklYTUU6IFdlJ3JlIHByZXR0eSBzdXJlIHRoaXMgaXMg
dGhlIHdyb25nIGRlZmluaXRpb24gb2YgImxheWVyLiIKICAgICAvLyBPdXIgUmVuZGVyTGF5ZXIg
aXMgYSBtb3JlIG1vZGVybiBjb25jZXB0LCBhbmQgbGF5ZXJYL1kgaXMgc29tZQogICAgIC8vIG90
aGVyIG5vdGlvbiBhYm91dCBncm91cHMgb2YgZWxlbWVudHMgKGxlZnQgb3ZlciBmcm9tIHRoZSBO
ZXRzY2FwZSA0IGRheXM/KTsKQEAgLTIwNCw5ICsxNzAsNyBAQCB2b2lkIE1vdXNlUmVsYXRlZEV2
ZW50Ojpjb21wdXRlUmVsYXRpdmVQCiAgICAgaWYgKG4gJiYgKGxheWVyID0gbi0+cmVuZGVyZXIo
KS0+ZW5jbG9zaW5nTGF5ZXIoKSkpIHsKICAgICAgICAgbGF5ZXItPnVwZGF0ZUxheWVyUG9zaXRp
b24oKTsKICAgICAgICAgZm9yICg7IGxheWVyOyBsYXllciA9IGxheWVyLT5wYXJlbnQoKSkgewot
ICAgICAgICAgICAgY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uID0gbGF5ZXItPmxvY2F0aW9uKCk7
Ci0gICAgICAgICAgICBtX2xheWVyWCAtPSBsb2NhdGlvbi54KCk7Ci0gICAgICAgICAgICBtX2xh
eWVyWSAtPSBsb2NhdGlvbi55KCk7CisgICAgICAgICAgICBtX2xheWVyTG9jYXRpb24gLT0gdG9T
aXplKGxheWVyLT5sb2NhdGlvbigpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjE3LDUyICsx
ODEsNTcgQEAgaW50IE1vdXNlUmVsYXRlZEV2ZW50OjpsYXllclgoKQogewogICAgIGlmICghbV9o
YXNDYWNoZWRSZWxhdGl2ZVBvc2l0aW9uKQogICAgICAgICBjb21wdXRlUmVsYXRpdmVQb3NpdGlv
bigpOwotICAgIHJldHVybiBtX2xheWVyWDsKKyAgICByZXR1cm4gbV9sYXllckxvY2F0aW9uLngo
KTsKIH0KIAogaW50IE1vdXNlUmVsYXRlZEV2ZW50OjpsYXllclkoKQogewogICAgIGlmICghbV9o
YXNDYWNoZWRSZWxhdGl2ZVBvc2l0aW9uKQogICAgICAgICBjb21wdXRlUmVsYXRpdmVQb3NpdGlv
bigpOwotICAgIHJldHVybiBtX2xheWVyWTsKKyAgICByZXR1cm4gbV9sYXllckxvY2F0aW9uLnko
KTsKIH0KIAogaW50IE1vdXNlUmVsYXRlZEV2ZW50OjpvZmZzZXRYKCkKIHsKICAgICBpZiAoIW1f
aGFzQ2FjaGVkUmVsYXRpdmVQb3NpdGlvbikKICAgICAgICAgY29tcHV0ZVJlbGF0aXZlUG9zaXRp
b24oKTsKLSAgICByZXR1cm4gbV9vZmZzZXRYOworICAgIHJldHVybiBtX29mZnNldExvY2F0aW9u
LngoKTsKIH0KIAogaW50IE1vdXNlUmVsYXRlZEV2ZW50OjpvZmZzZXRZKCkKIHsKICAgICBpZiAo
IW1faGFzQ2FjaGVkUmVsYXRpdmVQb3NpdGlvbikKICAgICAgICAgY29tcHV0ZVJlbGF0aXZlUG9z
aXRpb24oKTsKLSAgICByZXR1cm4gbV9vZmZzZXRZOworICAgIHJldHVybiBtX29mZnNldExvY2F0
aW9uLnkoKTsKIH0KIAogaW50IE1vdXNlUmVsYXRlZEV2ZW50OjpwYWdlWCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fcGFnZVg7CisgICAgcmV0dXJuIG1fcGFnZUxvY2F0aW9uLngoKTsKIH0KIAog
aW50IE1vdXNlUmVsYXRlZEV2ZW50OjpwYWdlWSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGFn
ZVk7CisgICAgcmV0dXJuIG1fcGFnZUxvY2F0aW9uLnkoKTsKK30KKworY29uc3QgSW50UG9pbnQm
IE1vdXNlUmVsYXRlZEV2ZW50OjpwYWdlTG9jYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBt
X3BhZ2VMb2NhdGlvbjsKIH0KIAogaW50IE1vdXNlUmVsYXRlZEV2ZW50Ojp4KCkgY29uc3QKIHsK
ICAgICAvLyBGSVhNRTogVGhpcyBpcyBub3QgY29ycmVjdC4KICAgICAvLyBTZWUgTWljcm9zb2Z0
IGRvY3VtZW50YXRpb24gYW5kIDxodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2RvbS93M2NfZXZl
bnRzLmh0bWw+LgotICAgIHJldHVybiBtX2NsaWVudFg7CisgICAgcmV0dXJuIG1fY2xpZW50TG9j
YXRpb24ueCgpOwogfQogCiBpbnQgTW91c2VSZWxhdGVkRXZlbnQ6OnkoKSBjb25zdAogewogICAg
IC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBjb3JyZWN0LgogICAgIC8vIFNlZSBNaWNyb3NvZnQgZG9j
dW1lbnRhdGlvbiBhbmQgPGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvZG9tL3czY19ldmVudHMu
aHRtbD4uCi0gICAgcmV0dXJuIG1fY2xpZW50WTsKKyAgICByZXR1cm4gbV9jbGllbnRMb2NhdGlv
bi55KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Nb3VzZVJlbGF0ZWRFdmVudC5oCShyZXZpc2lvbiA4Nzc1OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMCArMzQsMTIg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgLy8gTm90ZSB0aGF0
IHRoZXNlIHZhbHVlcyBhcmUgYWRqdXN0ZWQgdG8gY291bnRlciB0aGUgZWZmZWN0cyBvZiB6b29t
LCBzbyB0aGF0IHZhbHVlcwogICAgICAgICAvLyBleHBvc2VkIHZpYSBET00gQVBJcyBhcmUgaW52
YXJpYW50IHVuZGVyIHpvb21pbmcuCi0gICAgICAgIGludCBzY3JlZW5YKCkgY29uc3QgeyByZXR1
cm4gbV9zY3JlZW5YOyB9Ci0gICAgICAgIGludCBzY3JlZW5ZKCkgY29uc3QgeyByZXR1cm4gbV9z
Y3JlZW5ZOyB9Ci0gICAgICAgIGludCBjbGllbnRYKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRY
OyB9Ci0gICAgICAgIGludCBjbGllbnRZKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRZOyB9Cisg
ICAgICAgIGludCBzY3JlZW5YKCkgY29uc3QgeyByZXR1cm4gbV9zY3JlZW5Mb2NhdGlvbi54KCk7
IH0KKyAgICAgICAgaW50IHNjcmVlblkoKSBjb25zdCB7IHJldHVybiBtX3NjcmVlbkxvY2F0aW9u
LnkoKTsgfQorICAgICAgICBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24oKSBjb25zdCB7
IHJldHVybiBtX3NjcmVlbkxvY2F0aW9uOyB9CisgICAgICAgIGludCBjbGllbnRYKCkgY29uc3Qg
eyByZXR1cm4gbV9jbGllbnRMb2NhdGlvbi54KCk7IH0KKyAgICAgICAgaW50IGNsaWVudFkoKSBj
b25zdCB7IHJldHVybiBtX2NsaWVudExvY2F0aW9uLnkoKTsgfQorICAgICAgICBjb25zdCBJbnRQ
b2ludCYgY2xpZW50TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NsaWVudExvY2F0aW9uOyB9
CiAgICAgICAgIGludCBsYXllclgoKTsKICAgICAgICAgaW50IGxheWVyWSgpOwogICAgICAgICBp
bnQgb2Zmc2V0WCgpOwpAQCAtNDUsNDAgKzQ3LDM2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgYm9vbCBpc1NpbXVsYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTaW11bGF0ZWQ7IH0K
ICAgICAgICAgdmlydHVhbCBpbnQgcGFnZVgoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBpbnQg
cGFnZVkoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBjb25zdCBJbnRQb2ludCYgcGFnZUxvY2F0
aW9uKCkgY29uc3Q7CiAgICAgICAgIGludCB4KCkgY29uc3Q7CiAgICAgICAgIGludCB5KCkgY29u
c3Q7CiAKICAgICAgICAgLy8gUGFnZSBwb2ludCBpbiAiYWJzb2x1dGUiIGNvb3JkaW5hdGVzIChp
LmUuIHBvc3Qtem9vbWVkLCBwYWdlLXJlbGF0aXZlIGNvb3JkcywKICAgICAgICAgLy8gdXNhYmxl
IHdpdGggUmVuZGVyT2JqZWN0OjphYnNvbHV0ZVRvTG9jYWwpLgotICAgICAgICBJbnRQb2ludCBh
YnNvbHV0ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZUxvY2F0aW9uOyB9Cisg
ICAgICAgIGNvbnN0IEludFBvaW50JiBhYnNvbHV0ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9hYnNvbHV0ZUxvY2F0aW9uOyB9CiAgICAgICAgIHZvaWQgc2V0QWJzb2x1dGVMb2NhdGlvbihj
b25zdCBJbnRQb2ludCYgcCkgeyBtX2Fic29sdXRlTG9jYXRpb24gPSBwOyB9CiAgICAgCiAgICAg
cHJvdGVjdGVkOgogICAgICAgICBNb3VzZVJlbGF0ZWRFdmVudCgpOwogICAgICAgICBNb3VzZVJl
bGF0ZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29s
IGNhbmNlbGFibGUsIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgs
IGludCBwYWdlWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRldGFpbCwgY29uc3Qg
SW50UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgd2luZG93TG9jYXRpb24s
CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJv
b2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgYm9vbCBpc1NpbXVsYXRlZCA9IGZhbHNlKTsKIAog
ICAgICAgICB2b2lkIGluaXRDb29yZGluYXRlcygpOwotICAgICAgICB2b2lkIGluaXRDb29yZGlu
YXRlcyhpbnQgY2xpZW50WCwgaW50IGNsaWVudFkpOworICAgICAgICB2b2lkIGluaXRDb29yZGlu
YXRlcyhjb25zdCBJbnRQb2ludCYgY2xpZW50TG9jYXRpb24pOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgcmVjZWl2ZWRUYXJnZXQoKTsKIAogICAgICAgICB2b2lkIGNvbXB1dGVQYWdlTG9jYXRpb24o
KTsKICAgICAgICAgdm9pZCBjb21wdXRlUmVsYXRpdmVQb3NpdGlvbigpOwogICAgICAgICAKICAg
ICAgICAgLy8gRXhwb3NlIHRoZXNlIHNvIE1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50IGNhbiBz
ZXQgdGhlbS4KLSAgICAgICAgaW50IG1fc2NyZWVuWDsKLSAgICAgICAgaW50IG1fc2NyZWVuWTsK
LSAgICAgICAgaW50IG1fY2xpZW50WDsKLSAgICAgICAgaW50IG1fY2xpZW50WTsKKyAgICAgICAg
SW50UG9pbnQgbV9zY3JlZW5Mb2NhdGlvbjsKKyAgICAgICAgSW50UG9pbnQgbV9jbGllbnRMb2Nh
dGlvbjsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGludCBtX3BhZ2VYOwotICAgICAgICBpbnQg
bV9wYWdlWTsKLSAgICAgICAgaW50IG1fbGF5ZXJYOwotICAgICAgICBpbnQgbV9sYXllclk7Ci0g
ICAgICAgIGludCBtX29mZnNldFg7Ci0gICAgICAgIGludCBtX29mZnNldFk7CisgICAgICAgIElu
dFBvaW50IG1fcGFnZUxvY2F0aW9uOworICAgICAgICBJbnRQb2ludCBtX2xheWVyTG9jYXRpb247
CisgICAgICAgIEludFBvaW50IG1fb2Zmc2V0TG9jYXRpb247CiAgICAgICAgIEludFBvaW50IG1f
YWJzb2x1dGVMb2NhdGlvbjsKICAgICAgICAgYm9vbCBtX2lzU2ltdWxhdGVkOwogICAgICAgICBi
b29sIG1faGFzQ2FjaGVkUmVsYXRpdmVQb3NpdGlvbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Ub3VjaEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hF
dmVudC5jcHAJKHJldmlzaW9uIDg3NzU4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZl
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCw4IEBAIFRvdWNoRXZlbnQ6OlRvdWNo
RXZlbnQoVG91Y2hMaXN0KiB0b3VjaGUKICAgICAgICAgVG91Y2hMaXN0KiBjaGFuZ2VkVG91Y2hl
cywgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCAKICAgICAgICAgUGFzc1JlZlB0cjxBYnN0cmFj
dFZpZXc+IHZpZXcsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFn
ZVksCiAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJv
b2wgbWV0YUtleSkKLSAgICA6IE1vdXNlUmVsYXRlZEV2ZW50KHR5cGUsIHRydWUsIHRydWUsIHZp
ZXcsIDAsIHNjcmVlblgsIHNjcmVlblksIHBhZ2VYLCBwYWdlWSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXkpCisgICAgOiBNb3VzZVJl
bGF0ZWRFdmVudCh0eXBlLCB0cnVlLCB0cnVlLCB2aWV3LCAwLCBJbnRQb2ludChzY3JlZW5YLCBz
Y3JlZW5ZKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KHBhZ2VYLCBwYWdlWSks
IGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXkpCiAgICAgLCBtX3RvdWNoZXModG91
Y2hlcykKICAgICAsIG1fdGFyZ2V0VG91Y2hlcyh0YXJnZXRUb3VjaGVzKQogICAgICwgbV9jaGFu
Z2VkVG91Y2hlcyhjaGFuZ2VkVG91Y2hlcykKQEAgLTY1LDEzICs2NSwxMiBAQCB2b2lkIFRvdWNo
RXZlbnQ6OmluaXRUb3VjaEV2ZW50KFRvdWNoTGlzCiAgICAgbV90b3VjaGVzID0gdG91Y2hlczsK
ICAgICBtX3RhcmdldFRvdWNoZXMgPSB0YXJnZXRUb3VjaGVzOwogICAgIG1fY2hhbmdlZFRvdWNo
ZXMgPSBjaGFuZ2VkVG91Y2hlczsKLSAgICBtX3NjcmVlblggPSBzY3JlZW5YOwotICAgIG1fc2Ny
ZWVuWSA9IHNjcmVlblk7CisgICAgbV9zY3JlZW5Mb2NhdGlvbiA9IEludFBvaW50KHNjcmVlblgs
IHNjcmVlblkpOwogICAgIG1fY3RybEtleSA9IGN0cmxLZXk7CiAgICAgbV9hbHRLZXkgPSBhbHRL
ZXk7CiAgICAgbV9zaGlmdEtleSA9IHNoaWZ0S2V5OwogICAgIG1fbWV0YUtleSA9IG1ldGFLZXk7
Ci0gICAgaW5pdENvb3JkaW5hdGVzKGNsaWVudFgsIGNsaWVudFkpOworICAgIGluaXRDb29yZGlu
YXRlcyhJbnRQb2ludChjbGllbnRYLCBjbGllbnRZKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAJKHJldmlzaW9uIDg3NzU4KQor
KysgU291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MiwyNSArMzIsMTkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV2hlZWxFdmVudDo6V2hlZWxF
dmVudCgpCi0gICAgOiBtX3doZWVsRGVsdGFYKDApCi0gICAgLCBtX3doZWVsRGVsdGFZKDApCi0g
ICAgLCBtX3Jhd0RlbHRhWCgwKQotICAgICwgbV9yYXdEZWx0YVkoMCkKLSAgICAsIG1fZ3JhbnVs
YXJpdHkoUGl4ZWwpCisgICAgOiBtX2dyYW51bGFyaXR5KFBpeGVsKQogewogfQogCi1XaGVlbEV2
ZW50OjpXaGVlbEV2ZW50KGZsb2F0IHdoZWVsVGlja3NYLCBmbG9hdCB3aGVlbFRpY2tzWSwgZmxv
YXQgcmF3RGVsdGFYLCBmbG9hdCByYXdEZWx0YVksCitXaGVlbEV2ZW50OjpXaGVlbEV2ZW50KGNv
bnN0IEZsb2F0UG9pbnQmIHdoZWVsVGlja3MsIGNvbnN0IEZsb2F0UG9pbnQmIHJhd0RlbHRhLAog
ICAgICAgICAgICAgICAgICAgICAgICBHcmFudWxhcml0eSBncmFudWxhcml0eSwgUGFzc1JlZlB0
cjxBYnN0cmFjdFZpZXc+IHZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgIGludCBzY3JlZW5Y
LCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksCisgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIHBhZ2VM
b2NhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtl
eSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5KQogICAgIDogTW91c2VSZWxhdGVkRXZlbnQo
ZXZlbnROYW1lcygpLm1vdXNld2hlZWxFdmVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRy
dWUsIHRydWUsIHZpZXcsIDAsIHNjcmVlblgsIHNjcmVlblksIHBhZ2VYLCBwYWdlWSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRydWUsIHRydWUsIHZpZXcsIDAsIHNjcmVlbkxvY2F0aW9uLCBw
YWdlTG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICBjdHJsS2V5LCBhbHRLZXksIHNo
aWZ0S2V5LCBtZXRhS2V5KQotICAgICwgbV93aGVlbERlbHRhWChscm91bmRmKHdoZWVsVGlja3NY
ICogMTIwKSkKLSAgICAsIG1fd2hlZWxEZWx0YVkobHJvdW5kZih3aGVlbFRpY2tzWSAqIDEyMCkp
IC8vIE5vcm1hbGl6ZSB0byB0aGUgV2luZG93cyAxMjAgbXVsdGlwbGUKLSAgICAsIG1fcmF3RGVs
dGFYKHJhd0RlbHRhWCkKLSAgICAsIG1fcmF3RGVsdGFZKHJhd0RlbHRhWSkKKyAgICAsIG1fd2hl
ZWxEZWx0YShJbnRQb2ludCgoaW50KSh3aGVlbFRpY2tzLngoKSAqIDEyMCksIChpbnQpKHdoZWVs
VGlja3MueSgpICogMTIwKSkpCisgICAgLCBtX3Jhd0RlbHRhKHJvdW5kZWRJbnRQb2ludChyYXdE
ZWx0YSkpCiAgICAgLCBtX2dyYW51bGFyaXR5KGdyYW51bGFyaXR5KQogewogfQpAQCAtNjQsMjIg
KzU4LDE5IEBAIHZvaWQgV2hlZWxFdmVudDo6aW5pdFdoZWVsRXZlbnQoaW50IHJhd0QKICAgICAK
ICAgICBpbml0VUlFdmVudChldmVudE5hbWVzKCkubW91c2V3aGVlbEV2ZW50LCB0cnVlLCB0cnVl
LCB2aWV3LCAwKTsKICAgICAKLSAgICBtX3NjcmVlblggPSBzY3JlZW5YOwotICAgIG1fc2NyZWVu
WSA9IHNjcmVlblk7CisgICAgbV9zY3JlZW5Mb2NhdGlvbiA9IEludFBvaW50KHNjcmVlblgsIHNj
cmVlblkpOwogICAgIG1fY3RybEtleSA9IGN0cmxLZXk7CiAgICAgbV9hbHRLZXkgPSBhbHRLZXk7
CiAgICAgbV9zaGlmdEtleSA9IHNoaWZ0S2V5OwogICAgIG1fbWV0YUtleSA9IG1ldGFLZXk7CiAg
ICAgCiAgICAgLy8gTm9ybWFsaXplIHRvIHRoZSBXaW5kb3dzIDEyMCBtdWx0aXBsZQotICAgIG1f
d2hlZWxEZWx0YVggPSByYXdEZWx0YVggKiAxMjA7Ci0gICAgbV93aGVlbERlbHRhWSA9IHJhd0Rl
bHRhWSAqIDEyMDsKKyAgICBtX3doZWVsRGVsdGEgPSBJbnRQb2ludChyYXdEZWx0YVggKiAxMjAs
IHJhd0RlbHRhWSAqIDEyMCk7CiAgICAgCi0gICAgbV9yYXdEZWx0YVggPSByYXdEZWx0YVg7Ci0g
ICAgbV9yYXdEZWx0YVkgPSByYXdEZWx0YVk7CisgICAgbV9yYXdEZWx0YSA9IEludFBvaW50KHJh
d0RlbHRhWCwgcmF3RGVsdGFZKTsKICAgICBtX2dyYW51bGFyaXR5ID0gUGl4ZWw7CiAgICAgCi0g
ICAgaW5pdENvb3JkaW5hdGVzKHBhZ2VYLCBwYWdlWSk7CisgICAgaW5pdENvb3JkaW5hdGVzKElu
dFBvaW50KHBhZ2VYLCBwYWdlWSkpOwogfQogCiB2b2lkIFdoZWVsRXZlbnQ6OmluaXRXZWJLaXRX
aGVlbEV2ZW50KGludCByYXdEZWx0YVgsIGludCByYXdEZWx0YVksIFBhc3NSZWZQdHI8QWJzdHJh
Y3RWaWV3PiB2aWV3LApAQCAtMTA1LDggKzk2LDggQEAgV2hlZWxFdmVudERpc3BhdGNoTWVkaWF0
b3I6OldoZWVsRXZlbnREaQogICAgIGlmICghKGV2ZW50LmRlbHRhWCgpIHx8IGV2ZW50LmRlbHRh
WSgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2V0RXZlbnQoV2hlZWxFdmVudDo6Y3JlYXRl
KGV2ZW50LndoZWVsVGlja3NYKCksIGV2ZW50LndoZWVsVGlja3NZKCksIGV2ZW50LmRlbHRhWCgp
LCBldmVudC5kZWx0YVkoKSwgZ3JhbnVsYXJpdHkoZXZlbnQpLAotICAgICAgICB2aWV3LCBldmVu
dC5nbG9iYWxYKCksIGV2ZW50Lmdsb2JhbFkoKSwgZXZlbnQueCgpLCBldmVudC55KCksIGV2ZW50
LmN0cmxLZXkoKSwgZXZlbnQuYWx0S2V5KCksIGV2ZW50LnNoaWZ0S2V5KCksIGV2ZW50Lm1ldGFL
ZXkoKSkpOworICAgIHNldEV2ZW50KFdoZWVsRXZlbnQ6OmNyZWF0ZShGbG9hdFBvaW50KGV2ZW50
LndoZWVsVGlja3NYKCksIGV2ZW50LndoZWVsVGlja3NZKCkpLCBGbG9hdFBvaW50KGV2ZW50LmRl
bHRhWCgpLCBldmVudC5kZWx0YVkoKSksIGdyYW51bGFyaXR5KGV2ZW50KSwKKyAgICAgICAgdmll
dywgSW50UG9pbnQoZXZlbnQuZ2xvYmFsWCgpLCBldmVudC5nbG9iYWxZKCkpLCBJbnRQb2ludChl
dmVudC54KCksIGV2ZW50LnkoKSksIGV2ZW50LmN0cmxLZXkoKSwgZXZlbnQuYWx0S2V5KCksIGV2
ZW50LnNoaWZ0S2V5KCksIGV2ZW50Lm1ldGFLZXkoKSkpOwogCiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L1doZWVsRXZlbnQuaAkocmV2aXNpb24gODc3NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vV2hl
ZWxFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjaWZuZGVmIFdoZWVs
RXZlbnRfaAogI2RlZmluZSBXaGVlbEV2ZW50X2gKIAorI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIK
ICNpbmNsdWRlICJNb3VzZVJlbGF0ZWRFdmVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC0zNywxNCArMzgsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB7CiAgICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdoZWVsRXZlbnQpOwogICAgICAgICB9Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdoZWVsRXZlbnQ+IGNyZWF0ZShmbG9hdCB3aGVlbFRpY2tzWCwg
ZmxvYXQgd2hlZWxUaWNrc1ksCi0gICAgICAgICAgICBmbG9hdCByYXdEZWx0YVgsIGZsb2F0IHJh
d0RlbHRhWSwgR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3
PiB2aWV3LAotICAgICAgICAgICAgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgs
IGludCBwYWdlWSwKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2hlZWxFdmVudD4gY3JlYXRl
KGNvbnN0IEZsb2F0UG9pbnQmIHdoZWVsVGlja3MsCisgICAgICAgICAgICBjb25zdCBGbG9hdFBv
aW50JiByYXdEZWx0YSwgR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFBhc3NSZWZQdHI8QWJzdHJh
Y3RWaWV3PiB2aWV3LAorICAgICAgICAgICAgY29uc3QgSW50UG9pbnQmIHNjcmVlbkxvY2F0aW9u
LCBjb25zdCBJbnRQb2ludCYgcGFnZUxvY2F0aW9uLAogICAgICAgICAgICAgYm9vbCBjdHJsS2V5
LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5KQogICAgICAgICB7Ci0g
ICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdoZWVsRXZlbnQod2hlZWxUaWNrc1gsIHdo
ZWVsVGlja3NZLCByYXdEZWx0YVgsIHJhd0RlbHRhWSwKLSAgICAgICAgICAgICAgICBncmFudWxh
cml0eSwgdmlldywgc2NyZWVuWCwgc2NyZWVuWSwgcGFnZVgsIHBhZ2VZLAotICAgICAgICAgICAg
ICAgIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXkpKTsKKyAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV2hlZWxFdmVudCh3aGVlbFRpY2tzLCByYXdEZWx0YSwgZ3JhbnVs
YXJpdHksIHZpZXcsCisgICAgICAgICAgICAgICAgc2NyZWVuTG9jYXRpb24sIHBhZ2VMb2NhdGlv
biwgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0YUtleSkpOwogICAgICAgICB9CiAKICAg
ICAgICAgdm9pZCBpbml0V2hlZWxFdmVudChpbnQgcmF3RGVsdGFYLCBpbnQgcmF3RGVsdGFZLCBQ
YXNzUmVmUHRyPEFic3RyYWN0Vmlldz4sCkBAIC01NSwzMCArNTUsMjcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzY3JlZW5YLCBp
bnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwgYm9vbCBzaGlmdEtleSwgYm9v
bCBtZXRhS2V5KTsKIAotICAgICAgICBpbnQgd2hlZWxEZWx0YSgpIGNvbnN0IHsgaWYgKG1fd2hl
ZWxEZWx0YVkgPT0gMCkgcmV0dXJuIG1fd2hlZWxEZWx0YVg7IHJldHVybiBtX3doZWVsRGVsdGFZ
OyB9Ci0gICAgICAgIGludCB3aGVlbERlbHRhWCgpIGNvbnN0IHsgcmV0dXJuIG1fd2hlZWxEZWx0
YVg7IH0KLSAgICAgICAgaW50IHdoZWVsRGVsdGFZKCkgY29uc3QgeyByZXR1cm4gbV93aGVlbERl
bHRhWTsgfQotICAgICAgICBpbnQgcmF3RGVsdGFYKCkgY29uc3QgeyByZXR1cm4gbV9yYXdEZWx0
YVg7IH0KLSAgICAgICAgaW50IHJhd0RlbHRhWSgpIGNvbnN0IHsgcmV0dXJuIG1fcmF3RGVsdGFZ
OyB9CisgICAgICAgIGludCB3aGVlbERlbHRhKCkgY29uc3QgeyByZXR1cm4gbV93aGVlbERlbHRh
LnkoKSA/IG1fd2hlZWxEZWx0YS55KCkgOiBtX3doZWVsRGVsdGEueCgpOyB9CisgICAgICAgIGlu
dCB3aGVlbERlbHRhWCgpIGNvbnN0IHsgcmV0dXJuIG1fd2hlZWxEZWx0YS54KCk7IH0KKyAgICAg
ICAgaW50IHdoZWVsRGVsdGFZKCkgY29uc3QgeyByZXR1cm4gbV93aGVlbERlbHRhLnkoKTsgfQor
ICAgICAgICBpbnQgcmF3RGVsdGFYKCkgY29uc3QgeyByZXR1cm4gbV9yYXdEZWx0YS54KCk7IH0K
KyAgICAgICAgaW50IHJhd0RlbHRhWSgpIGNvbnN0IHsgcmV0dXJuIG1fcmF3RGVsdGEueSgpOyB9
CiAgICAgICAgIEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KCkgY29uc3QgeyByZXR1cm4gbV9ncmFu
dWxhcml0eTsgfQogCiAgICAgICAgIC8vIE5lZWRlZCBmb3IgT2JqZWN0aXZlLUMgbGVnYWN5IHN1
cHBvcnQKLSAgICAgICAgYm9vbCBpc0hvcml6b250YWwoKSBjb25zdCB7IHJldHVybiBtX3doZWVs
RGVsdGFYOyB9CisgICAgICAgIGJvb2wgaXNIb3Jpem9udGFsKCkgY29uc3QgeyByZXR1cm4gbV93
aGVlbERlbHRhLngoKTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgV2hlZWxFdmVudCgpOwot
ICAgICAgICBXaGVlbEV2ZW50KGZsb2F0IHdoZWVsVGlja3NYLCBmbG9hdCB3aGVlbFRpY2tzWSwg
ZmxvYXQgcmF3RGVsdGFYLCBmbG9hdCByYXdEZWx0YVksCisgICAgICAgIFdoZWVsRXZlbnQoY29u
c3QgRmxvYXRQb2ludCYgd2hlZWxUaWNrcywgY29uc3QgRmxvYXRQb2ludCYgcmF3RGVsdGEsCiAg
ICAgICAgICAgICAgICAgICAgR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHksIFBhc3NSZWZQdHI8QWJz
dHJhY3RWaWV3PiwKLSAgICAgICAgICAgICAgICAgICBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblks
IGludCBwYWdlWCwgaW50IHBhZ2VZLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFBvaW50
JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIHBhZ2VMb2NhdGlvbiwKICAgICAgICAg
ICAgICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBib29s
IG1ldGFLZXkpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1doZWVsRXZlbnQoKSBjb25zdDsK
LSAgICAgICAgCi0gICAgICAgIGludCBtX3doZWVsRGVsdGFYOwotICAgICAgICBpbnQgbV93aGVl
bERlbHRhWTsKIAotICAgICAgICBpbnQgbV9yYXdEZWx0YVg7Ci0gICAgICAgIGludCBtX3Jhd0Rl
bHRhWTsKKyAgICAgICAgSW50UG9pbnQgbV93aGVlbERlbHRhOworICAgICAgICBJbnRQb2ludCBt
X3Jhd0RlbHRhOwogICAgICAgICBHcmFudWxhcml0eSBtX2dyYW51bGFyaXR5OwogICAgIH07CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaAkocmV2
aXNpb24gODc3NTgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2lu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEludFBvaW50X2gK
IAogI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCiAj
aWYgUExBVEZPUk0oUVQpCiAjaW5jbHVkZSA8UURhdGFTdHJlYW0+CkBAIC05Miw2ICs5MywxMSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBtb3ZlKGNvbnN0IEludFNpemUmIHMpIHsgbW92ZShzLndpZHRo
KCksIHMuaGVpZ2h0KCkpOyB9IAogICAgIHZvaWQgbW92ZShjb25zdCBJbnRQb2ludCYgb2Zmc2V0
KSB7IG1vdmUob2Zmc2V0LngoKSwgb2Zmc2V0LnkoKSk7IH0KICAgICB2b2lkIG1vdmUoaW50IGR4
LCBpbnQgZHkpIHsgbV94ICs9IGR4OyBtX3kgKz0gZHk7IH0KKyAgICB2b2lkIHNjYWxlKGZsb2F0
IHN4LCBmbG9hdCBzeSkKKyAgICB7CisgICAgICAgIG1feCA9IGxyb3VuZGYoKGZsb2F0KW1feCAq
IHN4KTsKKyAgICAgICAgbV95ID0gbHJvdW5kZigoZmxvYXQpbV95ICogc3kpOworICAgIH0KICAg
ICAKICAgICBJbnRQb2ludCBleHBhbmRlZFRvKGNvbnN0IEludFBvaW50JiBvdGhlcikgY29uc3QK
ICAgICB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95630</attachid>
            <date>2011-06-01 11:14:14 -0700</date>
            <delta_ts>2011-06-01 16:19:14 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-61574-20110601111413.patch</filename>
            <type>text/plain</type>
            <size>25189</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg3NzU4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTYgQEAKKzIwMTEtMDYtMDEgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2Vp
ZGVsLgorCisgICAgICAgIFN3aXRjaCBNb3VzZVJlbGF0ZWRFdmVudCB0byB1c2UgSW50UG9pbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxNTc0CisK
KyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGRvbS9Nb3Vz
ZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlRXZlbnQ6Ok1vdXNlRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6TW91c2VFdmVudDo6aW5pdE1vdXNlRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U2ltdWxhdGVkTW91c2VFdmVudDo6U2ltdWxhdGVkTW91c2VFdmVudCk6CisgICAg
ICAgICogZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNl
UmVsYXRlZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpjb250
ZW50c1Njcm9sbE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6
aW5pdENvb3JkaW5hdGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojpj
b21wdXRlUmVsYXRpdmVQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRF
dmVudDo6bGF5ZXJYKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50OjpsYXll
clkpOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZlbnQ6Om9mZnNldFgpOgorICAg
ICAgICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZlbnQ6Om9mZnNldFkpOgorICAgICAgICAoV2Vi
Q29yZTo6TW91c2VSZWxhdGVkRXZlbnQ6OnBhZ2VYKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNl
UmVsYXRlZEV2ZW50OjpwYWdlWSk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVu
dDo6cGFnZUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojp4
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50Ojp5KToKKyAgICAgICAgKiBk
b20vTW91c2VSZWxhdGVkRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2
ZW50OjpzY3JlZW5YKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50OjpzY3Jl
ZW5ZKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vdXNlUmVsYXRlZEV2ZW50OjpzY3JlZW5Mb2NhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6Y2xpZW50WCk6CisgICAg
ICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6Y2xpZW50WSk6CisgICAgICAgIChXZWJD
b3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6Y2xpZW50TG9jYXRpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6TW91c2VSZWxhdGVkRXZlbnQ6OmFic29sdXRlTG9jYXRpb24pOgorICAgICAgICAqIGRvbS9U
b3VjaEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRvdWNoRXZlbnQ6OlRvdWNoRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6VG91Y2hFdmVudDo6aW5pdFRvdWNoRXZlbnQpOgorICAgICAg
ICAqIGRvbS9XaGVlbEV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldoZWVsRXZlbnQ6Oldo
ZWVsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudDo6aW5pdFdoZWVsRXZlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudERpc3BhdGNoTWVkaWF0b3I6OldoZWVsRXZl
bnREaXNwYXRjaE1lZGlhdG9yKToKKyAgICAgICAgKiBkb20vV2hlZWxFdmVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6V2hlZWxFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldoZWVs
RXZlbnQ6OndoZWVsRGVsdGEpOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudDo6d2hlZWxE
ZWx0YVgpOgorICAgICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudDo6d2hlZWxEZWx0YVkpOgorICAg
ICAgICAoV2ViQ29yZTo6V2hlZWxFdmVudDo6cmF3RGVsdGFYKToKKyAgICAgICAgKFdlYkNvcmU6
OldoZWVsRXZlbnQ6OnJhd0RlbHRhWSk6CisgICAgICAgIChXZWJDb3JlOjpXaGVlbEV2ZW50Ojpp
c0hvcml6b250YWwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ludFBvaW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnRQb2ludDo6c2NhbGUpOgorCiAyMDExLTA1LTMxICBCLkouIFdl
dmVyICA8c2t5bGluZWRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0g
QmFydGguCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTW91c2VFdmVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01vdXNlRXZlbnQuY3BwCShyZXZpc2lvbiA4Nzc1OCkK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZUV2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTQsOCArNTQsOCBAQCBNb3VzZUV2ZW50OjpNb3VzZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluCiAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hp
ZnRLZXksIGJvb2wgbWV0YUtleSwKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgc2hv
cnQgYnV0dG9uLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0PiByZWxhdGVkVGFyZ2V0LAogICAgICAg
ICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPENsaXBib2FyZD4gY2xpcGJvYXJkLCBib29sIGlz
U2ltdWxhdGVkKQotICAgIDogTW91c2VSZWxhdGVkRXZlbnQoZXZlbnRUeXBlLCBjYW5CdWJibGUs
IGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCwgc2NyZWVuWCwgc2NyZWVuWSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHBhZ2VYLCBwYWdlWSwgY3RybEtleSwgYWx0S2V5LCBzaGlmdEtleSwgbWV0
YUtleSwgaXNTaW11bGF0ZWQpCisgICAgOiBNb3VzZVJlbGF0ZWRFdmVudChldmVudFR5cGUsIGNh
bkJ1YmJsZSwgY2FuY2VsYWJsZSwgdmlldywgZGV0YWlsLCBJbnRQb2ludChzY3JlZW5YLCBzY3Jl
ZW5ZKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KHBhZ2VYLCBwYWdlWSksIGN0
cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksIGlzU2ltdWxhdGVkKQogICAgICwgbV9i
dXR0b24oYnV0dG9uID09ICh1bnNpZ25lZCBzaG9ydCktMSA/IDAgOiBidXR0b24pCiAgICAgLCBt
X2J1dHRvbkRvd24oYnV0dG9uICE9ICh1bnNpZ25lZCBzaG9ydCktMSkKICAgICAsIG1fcmVsYXRl
ZFRhcmdldChyZWxhdGVkVGFyZ2V0KQpAQCAtNzcsOCArNzcsNyBAQCB2b2lkIE1vdXNlRXZlbnQ6
OmluaXRNb3VzZUV2ZW50KGNvbnN0IEF0CiAKICAgICBpbml0VUlFdmVudCh0eXBlLCBjYW5CdWJi
bGUsIGNhbmNlbGFibGUsIHZpZXcsIGRldGFpbCk7CiAKLSAgICBtX3NjcmVlblggPSBzY3JlZW5Y
OwotICAgIG1fc2NyZWVuWSA9IHNjcmVlblk7CisgICAgbV9zY3JlZW5Mb2NhdGlvbiA9IEludFBv
aW50KHNjcmVlblgsIHNjcmVlblkpOwogICAgIG1fY3RybEtleSA9IGN0cmxLZXk7CiAgICAgbV9h
bHRLZXkgPSBhbHRLZXk7CiAgICAgbV9zaGlmdEtleSA9IHNoaWZ0S2V5OwpAQCAtODcsNyArODYs
NyBAQCB2b2lkIE1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50KGNvbnN0IEF0CiAgICAgbV9idXR0
b25Eb3duID0gYnV0dG9uICE9ICh1bnNpZ25lZCBzaG9ydCktMTsKICAgICBtX3JlbGF0ZWRUYXJn
ZXQgPSByZWxhdGVkVGFyZ2V0OwogCi0gICAgaW5pdENvb3JkaW5hdGVzKGNsaWVudFgsIGNsaWVu
dFkpOworICAgIGluaXRDb29yZGluYXRlcyhJbnRQb2ludChjbGllbnRYLCBjbGllbnRZKSk7CiAK
ICAgICAvLyBGSVhNRTogbV9pc1NpbXVsYXRlZCBpcyBub3Qgc2V0IHRvIGZhbHNlIGhlcmUuCiAg
ICAgLy8gRklYTUU6IG1fY2xpcGJvYXJkIGlzIG5vdCBzZXQgdG8gMCBoZXJlLgpAQCAtMTUzLDkg
KzE1Miw4IEBAIFNpbXVsYXRlZE1vdXNlRXZlbnQ6OlNpbXVsYXRlZE1vdXNlRXZlbnQKIAogICAg
IGlmICh0aGlzLT51bmRlcmx5aW5nRXZlbnQoKSAmJiB0aGlzLT51bmRlcmx5aW5nRXZlbnQoKS0+
aXNNb3VzZUV2ZW50KCkpIHsKICAgICAgICAgTW91c2VFdmVudCogbW91c2VFdmVudCA9IHN0YXRp
Y19jYXN0PE1vdXNlRXZlbnQqPih0aGlzLT51bmRlcmx5aW5nRXZlbnQoKSk7Ci0gICAgICAgIG1f
c2NyZWVuWCA9IG1vdXNlRXZlbnQtPnNjcmVlblgoKTsKLSAgICAgICAgbV9zY3JlZW5ZID0gbW91
c2VFdmVudC0+c2NyZWVuWSgpOwotICAgICAgICBpbml0Q29vcmRpbmF0ZXMobW91c2VFdmVudC0+
Y2xpZW50WCgpLCBtb3VzZUV2ZW50LT5jbGllbnRZKCkpOworICAgICAgICBtX3NjcmVlbkxvY2F0
aW9uID0gbW91c2VFdmVudC0+c2NyZWVuTG9jYXRpb24oKTsKKyAgICAgICAgaW5pdENvb3JkaW5h
dGVzKG1vdXNlRXZlbnQtPmNsaWVudExvY2F0aW9uKCkpOwogICAgIH0KIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwCShyZXZpc2lvbiA4Nzc1OCkKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDU3ICszMywzMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBNb3VzZVJlbGF0ZWRF
dmVudDo6TW91c2VSZWxhdGVkRXZlbnQoKQotICAgIDogbV9zY3JlZW5YKDApCi0gICAgLCBtX3Nj
cmVlblkoMCkKLSAgICAsIG1fY2xpZW50WCgwKQotICAgICwgbV9jbGllbnRZKDApCi0gICAgLCBt
X3BhZ2VYKDApCi0gICAgLCBtX3BhZ2VZKDApCi0gICAgLCBtX2xheWVyWCgwKQotICAgICwgbV9s
YXllclkoMCkKLSAgICAsIG1fb2Zmc2V0WCgwKQotICAgICwgbV9vZmZzZXRZKDApCi0gICAgLCBt
X2lzU2ltdWxhdGVkKGZhbHNlKQorICAgIDogbV9pc1NpbXVsYXRlZChmYWxzZSkKICAgICAsIG1f
aGFzQ2FjaGVkUmVsYXRpdmVQb3NpdGlvbihmYWxzZSkKIHsKIH0KIAotc3RhdGljIGludCBjb250
ZW50c1goQWJzdHJhY3RWaWV3KiBhYnN0cmFjdFZpZXcpCitzdGF0aWMgSW50U2l6ZSBjb250ZW50
c1Njcm9sbE9mZnNldChBYnN0cmFjdFZpZXcqIGFic3RyYWN0VmlldykKIHsKICAgICBpZiAoIWFi
c3RyYWN0VmlldykKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBJbnRTaXplKCk7
CiAgICAgRnJhbWUqIGZyYW1lID0gYWJzdHJhY3RWaWV3LT5mcmFtZSgpOwogICAgIGlmICghZnJh
bWUpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gSW50U2l6ZSgpOwogICAgIEZy
YW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWUtPnZpZXcoKTsKICAgICBpZiAoIWZyYW1lVmlldykK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGZyYW1lVmlldy0+c2Nyb2xsWCgpIC8gZnJh
bWUtPnBhZ2Vab29tRmFjdG9yKCk7Ci19Ci0KLXN0YXRpYyBpbnQgY29udGVudHNZKEFic3RyYWN0
VmlldyogYWJzdHJhY3RWaWV3KQotewotICAgIGlmICghYWJzdHJhY3RWaWV3KQotICAgICAgICBy
ZXR1cm4gMDsKLSAgICBGcmFtZSogZnJhbWUgPSBhYnN0cmFjdFZpZXctPmZyYW1lKCk7Ci0gICAg
aWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgRnJhbWVWaWV3KiBmcmFtZVZpZXcg
PSBmcmFtZS0+dmlldygpOwotICAgIGlmICghZnJhbWVWaWV3KQotICAgICAgICByZXR1cm4gMDsK
LSAgICByZXR1cm4gZnJhbWVWaWV3LT5zY3JvbGxZKCkgLyBmcmFtZS0+cGFnZVpvb21GYWN0b3Io
KTsKKyAgICAgICAgcmV0dXJuIEludFNpemUoKTsKKyAgICByZXR1cm4gSW50U2l6ZShmcmFtZVZp
ZXctPnNjcm9sbFgoKSAvIGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpLAorICAgICAgICBmcmFtZVZp
ZXctPnNjcm9sbFkoKSAvIGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpKTsKIH0KIAogTW91c2VSZWxh
dGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
LCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNzUmVmUHRyPEFic3RyYWN0Vmll
dz4gYWJzdHJhY3RWaWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBkZXRhaWwsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHdpbmRvd1gsIGludCB3aW5k
b3dZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXRhaWwsIGNv
bnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIHdpbmRvd0xvY2F0
aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY3RybEtleSwg
Ym9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSwgYm9vbCBpc1NpbXVsYXRl
ZCkKICAgICA6IFVJRXZlbnRXaXRoS2V5U3RhdGUoZXZlbnRUeXBlLCBjYW5CdWJibGUsIGNhbmNl
bGFibGUsIGFic3RyYWN0VmlldywgZGV0YWlsLCBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBt
ZXRhS2V5KQotICAgICwgbV9zY3JlZW5YKHNjcmVlblgpCi0gICAgLCBtX3NjcmVlblkoc2NyZWVu
WSkKLSAgICAsIG1fY2xpZW50WCgwKQotICAgICwgbV9jbGllbnRZKDApCi0gICAgLCBtX3BhZ2VY
KDApCi0gICAgLCBtX3BhZ2VZKDApCisgICAgLCBtX3NjcmVlbkxvY2F0aW9uKHNjcmVlbkxvY2F0
aW9uKQogICAgICwgbV9pc1NpbXVsYXRlZChpc1NpbXVsYXRlZCkKIHsKICAgICBJbnRQb2ludCBh
ZGp1c3RlZFBhZ2VMb2NhdGlvbjsKQEAgLTkzLDIzICs2NiwyMiBAQCBNb3VzZVJlbGF0ZWRFdmVu
dDo6TW91c2VSZWxhdGVkRXZlbnQoY29uCiAgICAgaWYgKGZyYW1lICYmICFpc1NpbXVsYXRlZCkg
ewogICAgICAgICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygpKSB7CiAg
ICAgICAgICAgICBzY3JvbGxQb3NpdGlvbiA9IGZyYW1lVmlldy0+c2Nyb2xsUG9zaXRpb24oKTsK
LSAgICAgICAgICAgIGFkanVzdGVkUGFnZUxvY2F0aW9uID0gZnJhbWVWaWV3LT53aW5kb3dUb0Nv
bnRlbnRzKEludFBvaW50KHdpbmRvd1gsIHdpbmRvd1kpKTsKKyAgICAgICAgICAgIGFkanVzdGVk
UGFnZUxvY2F0aW9uID0gZnJhbWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKHdpbmRvd0xvY2F0aW9u
KTsKICAgICAgICAgICAgIGZsb2F0IHBhZ2Vab29tID0gZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCk7
CiAgICAgICAgICAgICBpZiAocGFnZVpvb20gIT0gMS4wZikgewogICAgICAgICAgICAgICAgIC8v
IEFkanVzdCBvdXIgcGFnZVggYW5kIHBhZ2VZIHRvIGFjY291bnQgZm9yIHRoZSBwYWdlIHpvb20u
Ci0gICAgICAgICAgICAgICAgYWRqdXN0ZWRQYWdlTG9jYXRpb24uc2V0WChscm91bmRmKGFkanVz
dGVkUGFnZUxvY2F0aW9uLngoKSAvIHBhZ2Vab29tKSk7Ci0gICAgICAgICAgICAgICAgYWRqdXN0
ZWRQYWdlTG9jYXRpb24uc2V0WShscm91bmRmKGFkanVzdGVkUGFnZUxvY2F0aW9uLnkoKSAvIHBh
Z2Vab29tKSk7CisgICAgICAgICAgICAgICAgYWRqdXN0ZWRQYWdlTG9jYXRpb24uc2NhbGUoMSAv
IHBhZ2Vab29tLCAxIC8gcGFnZVpvb20pOworCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IENo
YW5nZSB0aGlzIHRvIHVzZSBmbG9hdCBtYXRoIGFuZCBwcm9wZXIgcm91bmRpbmcgKG9yCisgICAg
ICAgICAgICAgICAgLy8gYmV0dGVyIHlldCwgdXNlIEludFBvaW50OjpzY2FsZSkuCiAgICAgICAg
ICAgICAgICAgc2Nyb2xsUG9zaXRpb24uc2V0WChzY3JvbGxQb3NpdGlvbi54KCkgLyBwYWdlWm9v
bSk7CiAgICAgICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb24uc2V0WShzY3JvbGxQb3NpdGlvbi55
KCkgLyBwYWdlWm9vbSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBJ
bnRQb2ludCBjbGllbnRMb2NhdGlvbihhZGp1c3RlZFBhZ2VMb2NhdGlvbiAtIHNjcm9sbFBvc2l0
aW9uKTsKLSAgICBtX2NsaWVudFggPSBjbGllbnRMb2NhdGlvbi54KCk7Ci0gICAgbV9jbGllbnRZ
ID0gY2xpZW50TG9jYXRpb24ueSgpOwotICAgIG1fcGFnZVggPSBhZGp1c3RlZFBhZ2VMb2NhdGlv
bi54KCk7Ci0gICAgbV9wYWdlWSA9IGFkanVzdGVkUGFnZUxvY2F0aW9uLnkoKTsKKyAgICBtX2Ns
aWVudExvY2F0aW9uID0gYWRqdXN0ZWRQYWdlTG9jYXRpb24gLSB0b1NpemUoc2Nyb2xsUG9zaXRp
b24pOworICAgIG1fcGFnZUxvY2F0aW9uID0gYWRqdXN0ZWRQYWdlTG9jYXRpb247CiAKICAgICBp
bml0Q29vcmRpbmF0ZXMoKTsKIH0KQEAgLTExOCwyNyArOTAsMjIgQEAgdm9pZCBNb3VzZVJlbGF0
ZWRFdmVudDo6aW5pdENvb3JkaW5hdGVzKAogewogICAgIC8vIFNldCB1cCBpbml0aWFsIHZhbHVl
cyBmb3IgY29vcmRpbmF0ZXMuCiAgICAgLy8gQ29ycmVjdCB2YWx1ZXMgYXJlIGNvbXB1dGVkIGxh
emlseSwgc2VlIGNvbXB1dGVSZWxhdGl2ZVBvc2l0aW9uLgotICAgIG1fbGF5ZXJYID0gbV9wYWdl
WDsKLSAgICBtX2xheWVyWSA9IG1fcGFnZVk7Ci0gICAgbV9vZmZzZXRYID0gbV9wYWdlWDsKLSAg
ICBtX29mZnNldFkgPSBtX3BhZ2VZOworICAgIG1fbGF5ZXJMb2NhdGlvbiA9IG1fcGFnZUxvY2F0
aW9uOworICAgIG1fb2Zmc2V0TG9jYXRpb24gPSBtX3BhZ2VMb2NhdGlvbjsKIAogICAgIGNvbXB1
dGVQYWdlTG9jYXRpb24oKTsKICAgICBtX2hhc0NhY2hlZFJlbGF0aXZlUG9zaXRpb24gPSBmYWxz
ZTsKIH0KIAotdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6aW5pdENvb3JkaW5hdGVzKGludCBjbGll
bnRYLCBpbnQgY2xpZW50WSkKK3ZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OmluaXRDb29yZGluYXRl
cyhjb25zdCBJbnRQb2ludCYgY2xpZW50TG9jYXRpb24pCiB7CiAgICAgLy8gU2V0IHVwIGluaXRp
YWwgdmFsdWVzIGZvciBjb29yZGluYXRlcy4KICAgICAvLyBDb3JyZWN0IHZhbHVlcyBhcmUgY29t
cHV0ZWQgbGF6aWx5LCBzZWUgY29tcHV0ZVJlbGF0aXZlUG9zaXRpb24uCi0gICAgbV9jbGllbnRY
ID0gY2xpZW50WDsKLSAgICBtX2NsaWVudFkgPSBjbGllbnRZOwotICAgIG1fcGFnZVggPSBjbGll
bnRYICsgY29udGVudHNYKHZpZXcoKSk7Ci0gICAgbV9wYWdlWSA9IGNsaWVudFkgKyBjb250ZW50
c1kodmlldygpKTsKLSAgICBtX2xheWVyWCA9IG1fcGFnZVg7Ci0gICAgbV9sYXllclkgPSBtX3Bh
Z2VZOwotICAgIG1fb2Zmc2V0WCA9IG1fcGFnZVg7Ci0gICAgbV9vZmZzZXRZID0gbV9wYWdlWTsK
KyAgICBtX2NsaWVudExvY2F0aW9uID0gY2xpZW50TG9jYXRpb247CisgICAgbV9wYWdlTG9jYXRp
b24gPSBjbGllbnRMb2NhdGlvbiArIGNvbnRlbnRzU2Nyb2xsT2Zmc2V0KHZpZXcoKSk7CisKKyAg
ICBtX2xheWVyTG9jYXRpb24gPSBtX3BhZ2VMb2NhdGlvbjsKKyAgICBtX29mZnNldExvY2F0aW9u
ID0gbV9wYWdlTG9jYXRpb247CiAKICAgICBjb21wdXRlUGFnZUxvY2F0aW9uKCk7CiAgICAgbV9o
YXNDYWNoZWRSZWxhdGl2ZVBvc2l0aW9uID0gZmFsc2U7CkBAIC0xNzMsMjUgKzE0MCwyNCBAQCB2
b2lkIE1vdXNlUmVsYXRlZEV2ZW50Ojpjb21wdXRlUmVsYXRpdmVQCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIENvbXB1dGUgY29vcmRpbmF0ZXMgdGhhdCBhcmUgYmFzZWQgb24gdGhlIHRhcmdl
dC4KLSAgICBtX2xheWVyWCA9IG1fcGFnZVg7Ci0gICAgbV9sYXllclkgPSBtX3BhZ2VZOwotICAg
IG1fb2Zmc2V0WCA9IG1fcGFnZVg7Ci0gICAgbV9vZmZzZXRZID0gbV9wYWdlWTsKKyAgICBtX2xh
eWVyTG9jYXRpb24gPSBtX3BhZ2VMb2NhdGlvbjsKKyAgICBtX29mZnNldExvY2F0aW9uID0gbV9w
YWdlTG9jYXRpb247CiAKICAgICAvLyBNdXN0IGhhdmUgYW4gdXBkYXRlZCByZW5kZXIgdHJlZSBm
b3IgdGhpcyBtYXRoIHRvIHdvcmsgY29ycmVjdGx5LgogICAgIHRhcmdldE5vZGUtPmRvY3VtZW50
KCktPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKIAotICAgIC8vIEFkanVzdCBvZmZzZXRYL1kgdG8g
YmUgcmVsYXRpdmUgdG8gdGhlIHRhcmdldCdzIHBvc2l0aW9uLgorICAgIC8vIEFkanVzdCBvZmZz
ZXRMb2NhdGlvbiB0byBiZSByZWxhdGl2ZSB0byB0aGUgdGFyZ2V0J3MgcG9zaXRpb24uCiAgICAg
aWYgKCFpc1NpbXVsYXRlZCgpKSB7CiAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHIgPSB0YXJn
ZXROb2RlLT5yZW5kZXJlcigpKSB7CiAgICAgICAgICAgICBGbG9hdFBvaW50IGxvY2FsUG9zID0g
ci0+YWJzb2x1dGVUb0xvY2FsKGFic29sdXRlTG9jYXRpb24oKSwgZmFsc2UsIHRydWUpOwotICAg
ICAgICAgICAgZmxvYXQgem9vbUZhY3RvciA9IHBhZ2Vab29tRmFjdG9yKHRoaXMpOwotICAgICAg
ICAgICAgbV9vZmZzZXRYID0gbHJvdW5kZihsb2NhbFBvcy54KCkgLyB6b29tRmFjdG9yKTsKLSAg
ICAgICAgICAgIG1fb2Zmc2V0WSA9IGxyb3VuZGYobG9jYWxQb3MueSgpIC8gem9vbUZhY3Rvcik7
CisgICAgICAgICAgICBtX29mZnNldExvY2F0aW9uID0gcm91bmRlZEludFBvaW50KGxvY2FsUG9z
KTsKKyAgICAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gMSAvIHBhZ2Vab29tRmFjdG9yKHRo
aXMpOworICAgICAgICAgICAgaWYgKHNjYWxlRmFjdG9yICE9IDEuMGYpCisgICAgICAgICAgICAg
ICAgbV9vZmZzZXRMb2NhdGlvbi5zY2FsZShzY2FsZUZhY3Rvciwgc2NhbGVGYWN0b3IpOwogICAg
ICAgICB9CiAgICAgfQogCi0gICAgLy8gQWRqdXN0IGxheWVyWC9ZIHRvIGJlIHJlbGF0aXZlIHRv
IHRoZSBsYXllci4KKyAgICAvLyBBZGp1c3QgbGF5ZXJMb2NhdGlvbiB0byBiZSByZWxhdGl2ZSB0
byB0aGUgbGF5ZXIuCiAgICAgLy8gRklYTUU6IFdlJ3JlIHByZXR0eSBzdXJlIHRoaXMgaXMgdGhl
IHdyb25nIGRlZmluaXRpb24gb2YgImxheWVyLiIKICAgICAvLyBPdXIgUmVuZGVyTGF5ZXIgaXMg
YSBtb3JlIG1vZGVybiBjb25jZXB0LCBhbmQgbGF5ZXJYL1kgaXMgc29tZQogICAgIC8vIG90aGVy
IG5vdGlvbiBhYm91dCBncm91cHMgb2YgZWxlbWVudHMgKGxlZnQgb3ZlciBmcm9tIHRoZSBOZXRz
Y2FwZSA0IGRheXM/KTsKQEAgLTIwNCw5ICsxNzAsNyBAQCB2b2lkIE1vdXNlUmVsYXRlZEV2ZW50
Ojpjb21wdXRlUmVsYXRpdmVQCiAgICAgaWYgKG4gJiYgKGxheWVyID0gbi0+cmVuZGVyZXIoKS0+
ZW5jbG9zaW5nTGF5ZXIoKSkpIHsKICAgICAgICAgbGF5ZXItPnVwZGF0ZUxheWVyUG9zaXRpb24o
KTsKICAgICAgICAgZm9yICg7IGxheWVyOyBsYXllciA9IGxheWVyLT5wYXJlbnQoKSkgewotICAg
ICAgICAgICAgY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uID0gbGF5ZXItPmxvY2F0aW9uKCk7Ci0g
ICAgICAgICAgICBtX2xheWVyWCAtPSBsb2NhdGlvbi54KCk7Ci0gICAgICAgICAgICBtX2xheWVy
WSAtPSBsb2NhdGlvbi55KCk7CisgICAgICAgICAgICBtX2xheWVyTG9jYXRpb24gLT0gdG9TaXpl
KGxheWVyLT5sb2NhdGlvbigpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjE3LDUyICsxODEs
NTcgQEAgaW50IE1vdXNlUmVsYXRlZEV2ZW50OjpsYXllclgoKQogewogICAgIGlmICghbV9oYXND
YWNoZWRSZWxhdGl2ZVBvc2l0aW9uKQogICAgICAgICBjb21wdXRlUmVsYXRpdmVQb3NpdGlvbigp
OwotICAgIHJldHVybiBtX2xheWVyWDsKKyAgICByZXR1cm4gbV9sYXllckxvY2F0aW9uLngoKTsK
IH0KIAogaW50IE1vdXNlUmVsYXRlZEV2ZW50OjpsYXllclkoKQogewogICAgIGlmICghbV9oYXND
YWNoZWRSZWxhdGl2ZVBvc2l0aW9uKQogICAgICAgICBjb21wdXRlUmVsYXRpdmVQb3NpdGlvbigp
OwotICAgIHJldHVybiBtX2xheWVyWTsKKyAgICByZXR1cm4gbV9sYXllckxvY2F0aW9uLnkoKTsK
IH0KIAogaW50IE1vdXNlUmVsYXRlZEV2ZW50OjpvZmZzZXRYKCkKIHsKICAgICBpZiAoIW1faGFz
Q2FjaGVkUmVsYXRpdmVQb3NpdGlvbikKICAgICAgICAgY29tcHV0ZVJlbGF0aXZlUG9zaXRpb24o
KTsKLSAgICByZXR1cm4gbV9vZmZzZXRYOworICAgIHJldHVybiBtX29mZnNldExvY2F0aW9uLngo
KTsKIH0KIAogaW50IE1vdXNlUmVsYXRlZEV2ZW50OjpvZmZzZXRZKCkKIHsKICAgICBpZiAoIW1f
aGFzQ2FjaGVkUmVsYXRpdmVQb3NpdGlvbikKICAgICAgICAgY29tcHV0ZVJlbGF0aXZlUG9zaXRp
b24oKTsKLSAgICByZXR1cm4gbV9vZmZzZXRZOworICAgIHJldHVybiBtX29mZnNldExvY2F0aW9u
LnkoKTsKIH0KIAogaW50IE1vdXNlUmVsYXRlZEV2ZW50OjpwYWdlWCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fcGFnZVg7CisgICAgcmV0dXJuIG1fcGFnZUxvY2F0aW9uLngoKTsKIH0KIAogaW50
IE1vdXNlUmVsYXRlZEV2ZW50OjpwYWdlWSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGFnZVk7
CisgICAgcmV0dXJuIG1fcGFnZUxvY2F0aW9uLnkoKTsKK30KKworY29uc3QgSW50UG9pbnQmIE1v
dXNlUmVsYXRlZEV2ZW50OjpwYWdlTG9jYXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX3Bh
Z2VMb2NhdGlvbjsKIH0KIAogaW50IE1vdXNlUmVsYXRlZEV2ZW50Ojp4KCkgY29uc3QKIHsKICAg
ICAvLyBGSVhNRTogVGhpcyBpcyBub3QgY29ycmVjdC4KICAgICAvLyBTZWUgTWljcm9zb2Z0IGRv
Y3VtZW50YXRpb24gYW5kIDxodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2RvbS93M2NfZXZlbnRz
Lmh0bWw+LgotICAgIHJldHVybiBtX2NsaWVudFg7CisgICAgcmV0dXJuIG1fY2xpZW50TG9jYXRp
b24ueCgpOwogfQogCiBpbnQgTW91c2VSZWxhdGVkRXZlbnQ6OnkoKSBjb25zdAogewogICAgIC8v
IEZJWE1FOiBUaGlzIGlzIG5vdCBjb3JyZWN0LgogICAgIC8vIFNlZSBNaWNyb3NvZnQgZG9jdW1l
bnRhdGlvbiBhbmQgPGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvZG9tL3czY19ldmVudHMuaHRt
bD4uCi0gICAgcmV0dXJuIG1fY2xpZW50WTsKKyAgICByZXR1cm4gbV9jbGllbnRMb2NhdGlvbi55
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Nb3VzZVJlbGF0ZWRFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9N
b3VzZVJlbGF0ZWRFdmVudC5oCShyZXZpc2lvbiA4Nzc1OCkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Nb3VzZVJlbGF0ZWRFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMCArMzQsMTIgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHB1YmxpYzoKICAgICAgICAgLy8gTm90ZSB0aGF0IHRo
ZXNlIHZhbHVlcyBhcmUgYWRqdXN0ZWQgdG8gY291bnRlciB0aGUgZWZmZWN0cyBvZiB6b29tLCBz
byB0aGF0IHZhbHVlcwogICAgICAgICAvLyBleHBvc2VkIHZpYSBET00gQVBJcyBhcmUgaW52YXJp
YW50IHVuZGVyIHpvb21pbmcuCi0gICAgICAgIGludCBzY3JlZW5YKCkgY29uc3QgeyByZXR1cm4g
bV9zY3JlZW5YOyB9Ci0gICAgICAgIGludCBzY3JlZW5ZKCkgY29uc3QgeyByZXR1cm4gbV9zY3Jl
ZW5ZOyB9Ci0gICAgICAgIGludCBjbGllbnRYKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRYOyB9
Ci0gICAgICAgIGludCBjbGllbnRZKCkgY29uc3QgeyByZXR1cm4gbV9jbGllbnRZOyB9CisgICAg
ICAgIGludCBzY3JlZW5YKCkgY29uc3QgeyByZXR1cm4gbV9zY3JlZW5Mb2NhdGlvbi54KCk7IH0K
KyAgICAgICAgaW50IHNjcmVlblkoKSBjb25zdCB7IHJldHVybiBtX3NjcmVlbkxvY2F0aW9uLnko
KTsgfQorICAgICAgICBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX3NjcmVlbkxvY2F0aW9uOyB9CisgICAgICAgIGludCBjbGllbnRYKCkgY29uc3QgeyBy
ZXR1cm4gbV9jbGllbnRMb2NhdGlvbi54KCk7IH0KKyAgICAgICAgaW50IGNsaWVudFkoKSBjb25z
dCB7IHJldHVybiBtX2NsaWVudExvY2F0aW9uLnkoKTsgfQorICAgICAgICBjb25zdCBJbnRQb2lu
dCYgY2xpZW50TG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NsaWVudExvY2F0aW9uOyB9CiAg
ICAgICAgIGludCBsYXllclgoKTsKICAgICAgICAgaW50IGxheWVyWSgpOwogICAgICAgICBpbnQg
b2Zmc2V0WCgpOwpAQCAtNDUsNDAgKzQ3LDM2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgYm9vbCBpc1NpbXVsYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNTaW11bGF0ZWQ7IH0KICAg
ICAgICAgdmlydHVhbCBpbnQgcGFnZVgoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBpbnQgcGFn
ZVkoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBjb25zdCBJbnRQb2ludCYgcGFnZUxvY2F0aW9u
KCkgY29uc3Q7CiAgICAgICAgIGludCB4KCkgY29uc3Q7CiAgICAgICAgIGludCB5KCkgY29uc3Q7
CiAKICAgICAgICAgLy8gUGFnZSBwb2ludCBpbiAiYWJzb2x1dGUiIGNvb3JkaW5hdGVzIChpLmUu
IHBvc3Qtem9vbWVkLCBwYWdlLXJlbGF0aXZlIGNvb3JkcywKICAgICAgICAgLy8gdXNhYmxlIHdp
dGggUmVuZGVyT2JqZWN0OjphYnNvbHV0ZVRvTG9jYWwpLgotICAgICAgICBJbnRQb2ludCBhYnNv
bHV0ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hYnNvbHV0ZUxvY2F0aW9uOyB9CisgICAg
ICAgIGNvbnN0IEludFBvaW50JiBhYnNvbHV0ZUxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9h
YnNvbHV0ZUxvY2F0aW9uOyB9CiAgICAgICAgIHZvaWQgc2V0QWJzb2x1dGVMb2NhdGlvbihjb25z
dCBJbnRQb2ludCYgcCkgeyBtX2Fic29sdXRlTG9jYXRpb24gPSBwOyB9CiAgICAgCiAgICAgcHJv
dGVjdGVkOgogICAgICAgICBNb3VzZVJlbGF0ZWRFdmVudCgpOwogICAgICAgICBNb3VzZVJlbGF0
ZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNh
bmNlbGFibGUsIFBhc3NSZWZQdHI8QWJzdHJhY3RWaWV3PiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW50IGRldGFpbCwgaW50IHNjcmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGlu
dCBwYWdlWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRldGFpbCwgY29uc3QgSW50
UG9pbnQmIHNjcmVlbkxvY2F0aW9uLCBjb25zdCBJbnRQb2ludCYgd2luZG93TG9jYXRpb24sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wg
c2hpZnRLZXksIGJvb2wgbWV0YUtleSwgYm9vbCBpc1NpbXVsYXRlZCA9IGZhbHNlKTsKIAogICAg
ICAgICB2b2lkIGluaXRDb29yZGluYXRlcygpOwotICAgICAgICB2b2lkIGluaXRDb29yZGluYXRl
cyhpbnQgY2xpZW50WCwgaW50IGNsaWVudFkpOworICAgICAgICB2b2lkIGluaXRDb29yZGluYXRl
cyhjb25zdCBJbnRQb2ludCYgY2xpZW50TG9jYXRpb24pOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
cmVjZWl2ZWRUYXJnZXQoKTsKIAogICAgICAgICB2b2lkIGNvbXB1dGVQYWdlTG9jYXRpb24oKTsK
ICAgICAgICAgdm9pZCBjb21wdXRlUmVsYXRpdmVQb3NpdGlvbigpOwogICAgICAgICAKICAgICAg
ICAgLy8gRXhwb3NlIHRoZXNlIHNvIE1vdXNlRXZlbnQ6OmluaXRNb3VzZUV2ZW50IGNhbiBzZXQg
dGhlbS4KLSAgICAgICAgaW50IG1fc2NyZWVuWDsKLSAgICAgICAgaW50IG1fc2NyZWVuWTsKLSAg
ICAgICAgaW50IG1fY2xpZW50WDsKLSAgICAgICAgaW50IG1fY2xpZW50WTsKKyAgICAgICAgSW50
UG9pbnQgbV9zY3JlZW5Mb2NhdGlvbjsKKyAgICAgICAgSW50UG9pbnQgbV9jbGllbnRMb2NhdGlv
bjsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGludCBtX3BhZ2VYOwotICAgICAgICBpbnQgbV9w
YWdlWTsKLSAgICAgICAgaW50IG1fbGF5ZXJYOwotICAgICAgICBpbnQgbV9sYXllclk7Ci0gICAg
ICAgIGludCBtX29mZnNldFg7Ci0gICAgICAgIGludCBtX29mZnNldFk7CisgICAgICAgIEludFBv
aW50IG1fcGFnZUxvY2F0aW9uOworICAgICAgICBJbnRQb2ludCBtX2xheWVyTG9jYXRpb247Cisg
ICAgICAgIEludFBvaW50IG1fb2Zmc2V0TG9jYXRpb247CiAgICAgICAgIEludFBvaW50IG1fYWJz
b2x1dGVMb2NhdGlvbjsKICAgICAgICAgYm9vbCBtX2lzU2ltdWxhdGVkOwogICAgICAgICBib29s
IG1faGFzQ2FjaGVkUmVsYXRpdmVQb3NpdGlvbjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9U
b3VjaEV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vVG91Y2hFdmVu
dC5jcHAJKHJldmlzaW9uIDg3NzU4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL1RvdWNoRXZlbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw4ICs0MCw4IEBAIFRvdWNoRXZlbnQ6OlRvdWNoRXZl
bnQoVG91Y2hMaXN0KiB0b3VjaGUKICAgICAgICAgVG91Y2hMaXN0KiBjaGFuZ2VkVG91Y2hlcywg
Y29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCAKICAgICAgICAgUGFzc1JlZlB0cjxBYnN0cmFjdFZp
ZXc+IHZpZXcsIGludCBzY3JlZW5YLCBpbnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVks
CiAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wg
bWV0YUtleSkKLSAgICA6IE1vdXNlUmVsYXRlZEV2ZW50KHR5cGUsIHRydWUsIHRydWUsIHZpZXcs
IDAsIHNjcmVlblgsIHNjcmVlblksIHBhZ2VYLCBwYWdlWSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXkpCisgICAgOiBNb3VzZVJlbGF0
ZWRFdmVudCh0eXBlLCB0cnVlLCB0cnVlLCB2aWV3LCAwLCBJbnRQb2ludChzY3JlZW5YLCBzY3Jl
ZW5ZKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEludFBvaW50KHBhZ2VYLCBwYWdlWSksIGN0
cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXkpCiAgICAgLCBtX3RvdWNoZXModG91Y2hl
cykKICAgICAsIG1fdGFyZ2V0VG91Y2hlcyh0YXJnZXRUb3VjaGVzKQogICAgICwgbV9jaGFuZ2Vk
VG91Y2hlcyhjaGFuZ2VkVG91Y2hlcykKQEAgLTY1LDEzICs2NSwxMiBAQCB2b2lkIFRvdWNoRXZl
bnQ6OmluaXRUb3VjaEV2ZW50KFRvdWNoTGlzCiAgICAgbV90b3VjaGVzID0gdG91Y2hlczsKICAg
ICBtX3RhcmdldFRvdWNoZXMgPSB0YXJnZXRUb3VjaGVzOwogICAgIG1fY2hhbmdlZFRvdWNoZXMg
PSBjaGFuZ2VkVG91Y2hlczsKLSAgICBtX3NjcmVlblggPSBzY3JlZW5YOwotICAgIG1fc2NyZWVu
WSA9IHNjcmVlblk7CisgICAgbV9zY3JlZW5Mb2NhdGlvbiA9IEludFBvaW50KHNjcmVlblgsIHNj
cmVlblkpOwogICAgIG1fY3RybEtleSA9IGN0cmxLZXk7CiAgICAgbV9hbHRLZXkgPSBhbHRLZXk7
CiAgICAgbV9zaGlmdEtleSA9IHNoaWZ0S2V5OwogICAgIG1fbWV0YUtleSA9IG1ldGFLZXk7Ci0g
ICAgaW5pdENvb3JkaW5hdGVzKGNsaWVudFgsIGNsaWVudFkpOworICAgIGluaXRDb29yZGluYXRl
cyhJbnRQb2ludChjbGllbnRYLCBjbGllbnRZKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5jcHAJKHJldmlzaW9uIDg3NzU4KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwy
NSArMzIsMTkgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV2hlZWxFdmVudDo6V2hlZWxFdmVu
dCgpCi0gICAgOiBtX3doZWVsRGVsdGFYKDApCi0gICAgLCBtX3doZWVsRGVsdGFZKDApCi0gICAg
LCBtX3Jhd0RlbHRhWCgwKQotICAgICwgbV9yYXdEZWx0YVkoMCkKLSAgICAsIG1fZ3JhbnVsYXJp
dHkoUGl4ZWwpCisgICAgOiBtX2dyYW51bGFyaXR5KFBpeGVsKQogewogfQogCi1XaGVlbEV2ZW50
OjpXaGVlbEV2ZW50KGZsb2F0IHdoZWVsVGlja3NYLCBmbG9hdCB3aGVlbFRpY2tzWSwgZmxvYXQg
cmF3RGVsdGFYLCBmbG9hdCByYXdEZWx0YVksCitXaGVlbEV2ZW50OjpXaGVlbEV2ZW50KGNvbnN0
IEZsb2F0UG9pbnQmIHdoZWVsVGlja3MsIGNvbnN0IEZsb2F0UG9pbnQmIHJhd0RlbHRhLAogICAg
ICAgICAgICAgICAgICAgICAgICBHcmFudWxhcml0eSBncmFudWxhcml0eSwgUGFzc1JlZlB0cjxB
YnN0cmFjdFZpZXc+IHZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgIGludCBzY3JlZW5YLCBp
bnQgc2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksCisgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEludFBvaW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIHBhZ2VMb2Nh
dGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwg
Ym9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5KQogICAgIDogTW91c2VSZWxhdGVkRXZlbnQoZXZl
bnROYW1lcygpLm1vdXNld2hlZWxFdmVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRydWUs
IHRydWUsIHZpZXcsIDAsIHNjcmVlblgsIHNjcmVlblksIHBhZ2VYLCBwYWdlWSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHRydWUsIHRydWUsIHZpZXcsIDAsIHNjcmVlbkxvY2F0aW9uLCBwYWdl
TG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0
S2V5LCBtZXRhS2V5KQotICAgICwgbV93aGVlbERlbHRhWChscm91bmRmKHdoZWVsVGlja3NYICog
MTIwKSkKLSAgICAsIG1fd2hlZWxEZWx0YVkobHJvdW5kZih3aGVlbFRpY2tzWSAqIDEyMCkpIC8v
IE5vcm1hbGl6ZSB0byB0aGUgV2luZG93cyAxMjAgbXVsdGlwbGUKLSAgICAsIG1fcmF3RGVsdGFY
KHJhd0RlbHRhWCkKLSAgICAsIG1fcmF3RGVsdGFZKHJhd0RlbHRhWSkKKyAgICAsIG1fd2hlZWxE
ZWx0YShJbnRQb2ludChzdGF0aWNfY2FzdDxpbnQ+KHdoZWVsVGlja3MueCgpICogMTIwKSwgc3Rh
dGljX2Nhc3Q8aW50Pih3aGVlbFRpY2tzLnkoKSAqIDEyMCkpKQorICAgICwgbV9yYXdEZWx0YShy
b3VuZGVkSW50UG9pbnQocmF3RGVsdGEpKQogICAgICwgbV9ncmFudWxhcml0eShncmFudWxhcml0
eSkKIHsKIH0KQEAgLTY0LDIyICs1OCwxOSBAQCB2b2lkIFdoZWVsRXZlbnQ6OmluaXRXaGVlbEV2
ZW50KGludCByYXdECiAgICAgCiAgICAgaW5pdFVJRXZlbnQoZXZlbnROYW1lcygpLm1vdXNld2hl
ZWxFdmVudCwgdHJ1ZSwgdHJ1ZSwgdmlldywgMCk7CiAgICAgCi0gICAgbV9zY3JlZW5YID0gc2Ny
ZWVuWDsKLSAgICBtX3NjcmVlblkgPSBzY3JlZW5ZOworICAgIG1fc2NyZWVuTG9jYXRpb24gPSBJ
bnRQb2ludChzY3JlZW5YLCBzY3JlZW5ZKTsKICAgICBtX2N0cmxLZXkgPSBjdHJsS2V5OwogICAg
IG1fYWx0S2V5ID0gYWx0S2V5OwogICAgIG1fc2hpZnRLZXkgPSBzaGlmdEtleTsKICAgICBtX21l
dGFLZXkgPSBtZXRhS2V5OwogICAgIAogICAgIC8vIE5vcm1hbGl6ZSB0byB0aGUgV2luZG93cyAx
MjAgbXVsdGlwbGUKLSAgICBtX3doZWVsRGVsdGFYID0gcmF3RGVsdGFYICogMTIwOwotICAgIG1f
d2hlZWxEZWx0YVkgPSByYXdEZWx0YVkgKiAxMjA7CisgICAgbV93aGVlbERlbHRhID0gSW50UG9p
bnQocmF3RGVsdGFYICogMTIwLCByYXdEZWx0YVkgKiAxMjApOwogICAgIAotICAgIG1fcmF3RGVs
dGFYID0gcmF3RGVsdGFYOwotICAgIG1fcmF3RGVsdGFZID0gcmF3RGVsdGFZOworICAgIG1fcmF3
RGVsdGEgPSBJbnRQb2ludChyYXdEZWx0YVgsIHJhd0RlbHRhWSk7CiAgICAgbV9ncmFudWxhcml0
eSA9IFBpeGVsOwogICAgIAotICAgIGluaXRDb29yZGluYXRlcyhwYWdlWCwgcGFnZVkpOworICAg
IGluaXRDb29yZGluYXRlcyhJbnRQb2ludChwYWdlWCwgcGFnZVkpKTsKIH0KIAogdm9pZCBXaGVl
bEV2ZW50Ojppbml0V2ViS2l0V2hlZWxFdmVudChpbnQgcmF3RGVsdGFYLCBpbnQgcmF3RGVsdGFZ
LCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywKQEAgLTEwNSw4ICs5Niw4IEBAIFdoZWVs
RXZlbnREaXNwYXRjaE1lZGlhdG9yOjpXaGVlbEV2ZW50RGkKICAgICBpZiAoIShldmVudC5kZWx0
YVgoKSB8fCBldmVudC5kZWx0YVkoKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNldEV2ZW50
KFdoZWVsRXZlbnQ6OmNyZWF0ZShldmVudC53aGVlbFRpY2tzWCgpLCBldmVudC53aGVlbFRpY2tz
WSgpLCBldmVudC5kZWx0YVgoKSwgZXZlbnQuZGVsdGFZKCksIGdyYW51bGFyaXR5KGV2ZW50KSwK
LSAgICAgICAgdmlldywgZXZlbnQuZ2xvYmFsWCgpLCBldmVudC5nbG9iYWxZKCksIGV2ZW50Lngo
KSwgZXZlbnQueSgpLCBldmVudC5jdHJsS2V5KCksIGV2ZW50LmFsdEtleSgpLCBldmVudC5zaGlm
dEtleSgpLCBldmVudC5tZXRhS2V5KCkpKTsKKyAgICBzZXRFdmVudChXaGVlbEV2ZW50OjpjcmVh
dGUoRmxvYXRQb2ludChldmVudC53aGVlbFRpY2tzWCgpLCBldmVudC53aGVlbFRpY2tzWSgpKSwg
RmxvYXRQb2ludChldmVudC5kZWx0YVgoKSwgZXZlbnQuZGVsdGFZKCkpLCBncmFudWxhcml0eShl
dmVudCksCisgICAgICAgIHZpZXcsIEludFBvaW50KGV2ZW50Lmdsb2JhbFgoKSwgZXZlbnQuZ2xv
YmFsWSgpKSwgSW50UG9pbnQoZXZlbnQueCgpLCBldmVudC55KCkpLCBldmVudC5jdHJsS2V5KCks
IGV2ZW50LmFsdEtleSgpLCBldmVudC5zaGlmdEtleSgpLCBldmVudC5tZXRhS2V5KCkpKTsKIAog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vV2hlZWxFdmVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9XaGVlbEV2ZW50LmgJKHJldmlzaW9uIDg3NzU4KQorKysgU291
cmNlL1dlYkNvcmUvZG9tL1doZWVsRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQs
NyBAQAogI2lmbmRlZiBXaGVlbEV2ZW50X2gKICNkZWZpbmUgV2hlZWxFdmVudF9oCiAKKyNpbmNs
dWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiTW91c2VSZWxhdGVkRXZlbnQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtMzcsMTQgKzM4LDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXaGVlbEV2ZW50KTsK
ICAgICAgICAgfQotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXaGVlbEV2ZW50PiBjcmVhdGUo
ZmxvYXQgd2hlZWxUaWNrc1gsIGZsb2F0IHdoZWVsVGlja3NZLAotICAgICAgICAgICAgZmxvYXQg
cmF3RGVsdGFYLCBmbG9hdCByYXdEZWx0YVksIEdyYW51bGFyaXR5IGdyYW51bGFyaXR5LCBQYXNz
UmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywKLSAgICAgICAgICAgIGludCBzY3JlZW5YLCBpbnQg
c2NyZWVuWSwgaW50IHBhZ2VYLCBpbnQgcGFnZVksCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFdoZWVsRXZlbnQ+IGNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiB3aGVlbFRpY2tzLAorICAgICAg
ICAgICAgY29uc3QgRmxvYXRQb2ludCYgcmF3RGVsdGEsIEdyYW51bGFyaXR5IGdyYW51bGFyaXR5
LCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4gdmlldywKKyAgICAgICAgICAgIGNvbnN0IEludFBv
aW50JiBzY3JlZW5Mb2NhdGlvbiwgY29uc3QgSW50UG9pbnQmIHBhZ2VMb2NhdGlvbiwKICAgICAg
ICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXksIGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0
YUtleSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXaGVlbEV2
ZW50KHdoZWVsVGlja3NYLCB3aGVlbFRpY2tzWSwgcmF3RGVsdGFYLCByYXdEZWx0YVksCi0gICAg
ICAgICAgICAgICAgZ3JhbnVsYXJpdHksIHZpZXcsIHNjcmVlblgsIHNjcmVlblksIHBhZ2VYLCBw
YWdlWSwKLSAgICAgICAgICAgICAgICBjdHJsS2V5LCBhbHRLZXksIHNoaWZ0S2V5LCBtZXRhS2V5
KSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdoZWVsRXZlbnQod2hlZWxUaWNr
cywgcmF3RGVsdGEsIGdyYW51bGFyaXR5LCB2aWV3LAorICAgICAgICAgICAgICAgIHNjcmVlbkxv
Y2F0aW9uLCBwYWdlTG9jYXRpb24sIGN0cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXkp
KTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgaW5pdFdoZWVsRXZlbnQoaW50IHJhd0RlbHRh
WCwgaW50IHJhd0RlbHRhWSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+LApAQCAtNTUsMzAgKzU1
LDI3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbnQgc2NyZWVuWCwgaW50IHNjcmVlblksIGludCBwYWdlWCwgaW50IHBhZ2VZLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY3RybEtleSwgYm9vbCBhbHRLZXks
IGJvb2wgc2hpZnRLZXksIGJvb2wgbWV0YUtleSk7CiAKLSAgICAgICAgaW50IHdoZWVsRGVsdGEo
KSBjb25zdCB7IGlmIChtX3doZWVsRGVsdGFZID09IDApIHJldHVybiBtX3doZWVsRGVsdGFYOyBy
ZXR1cm4gbV93aGVlbERlbHRhWTsgfQotICAgICAgICBpbnQgd2hlZWxEZWx0YVgoKSBjb25zdCB7
IHJldHVybiBtX3doZWVsRGVsdGFYOyB9Ci0gICAgICAgIGludCB3aGVlbERlbHRhWSgpIGNvbnN0
IHsgcmV0dXJuIG1fd2hlZWxEZWx0YVk7IH0KLSAgICAgICAgaW50IHJhd0RlbHRhWCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmF3RGVsdGFYOyB9Ci0gICAgICAgIGludCByYXdEZWx0YVkoKSBjb25zdCB7
IHJldHVybiBtX3Jhd0RlbHRhWTsgfQorICAgICAgICBpbnQgd2hlZWxEZWx0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fd2hlZWxEZWx0YS55KCkgPyBtX3doZWVsRGVsdGEueSgpIDogbV93aGVlbERlbHRh
LngoKTsgfQorICAgICAgICBpbnQgd2hlZWxEZWx0YVgoKSBjb25zdCB7IHJldHVybiBtX3doZWVs
RGVsdGEueCgpOyB9CisgICAgICAgIGludCB3aGVlbERlbHRhWSgpIGNvbnN0IHsgcmV0dXJuIG1f
d2hlZWxEZWx0YS55KCk7IH0KKyAgICAgICAgaW50IHJhd0RlbHRhWCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmF3RGVsdGEueCgpOyB9CisgICAgICAgIGludCByYXdEZWx0YVkoKSBjb25zdCB7IHJldHVy
biBtX3Jhd0RlbHRhLnkoKTsgfQogICAgICAgICBHcmFudWxhcml0eSBncmFudWxhcml0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fZ3JhbnVsYXJpdHk7IH0KIAogICAgICAgICAvLyBOZWVkZWQgZm9yIE9i
amVjdGl2ZS1DIGxlZ2FjeSBzdXBwb3J0Ci0gICAgICAgIGJvb2wgaXNIb3Jpem9udGFsKCkgY29u
c3QgeyByZXR1cm4gbV93aGVlbERlbHRhWDsgfQorICAgICAgICBib29sIGlzSG9yaXpvbnRhbCgp
IGNvbnN0IHsgcmV0dXJuIG1fd2hlZWxEZWx0YS54KCk7IH0KIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIFdoZWVsRXZlbnQoKTsKLSAgICAgICAgV2hlZWxFdmVudChmbG9hdCB3aGVlbFRpY2tzWCwg
ZmxvYXQgd2hlZWxUaWNrc1ksIGZsb2F0IHJhd0RlbHRhWCwgZmxvYXQgcmF3RGVsdGFZLAorICAg
ICAgICBXaGVlbEV2ZW50KGNvbnN0IEZsb2F0UG9pbnQmIHdoZWVsVGlja3MsIGNvbnN0IEZsb2F0
UG9pbnQmIHJhd0RlbHRhLAogICAgICAgICAgICAgICAgICAgIEdyYW51bGFyaXR5IGdyYW51bGFy
aXR5LCBQYXNzUmVmUHRyPEFic3RyYWN0Vmlldz4sCi0gICAgICAgICAgICAgICAgICAgaW50IHNj
cmVlblgsIGludCBzY3JlZW5ZLCBpbnQgcGFnZVgsIGludCBwYWdlWSwKKyAgICAgICAgICAgICAg
ICAgICBjb25zdCBJbnRQb2ludCYgc2NyZWVuTG9jYXRpb24sIGNvbnN0IEludFBvaW50JiBwYWdl
TG9jYXRpb24sCiAgICAgICAgICAgICAgICAgICAgYm9vbCBjdHJsS2V5LCBib29sIGFsdEtleSwg
Ym9vbCBzaGlmdEtleSwgYm9vbCBtZXRhS2V5KTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNX
aGVlbEV2ZW50KCkgY29uc3Q7Ci0gICAgICAgIAotICAgICAgICBpbnQgbV93aGVlbERlbHRhWDsK
LSAgICAgICAgaW50IG1fd2hlZWxEZWx0YVk7CiAKLSAgICAgICAgaW50IG1fcmF3RGVsdGFYOwot
ICAgICAgICBpbnQgbV9yYXdEZWx0YVk7CisgICAgICAgIEludFBvaW50IG1fd2hlZWxEZWx0YTsK
KyAgICAgICAgSW50UG9pbnQgbV9yYXdEZWx0YTsKICAgICAgICAgR3JhbnVsYXJpdHkgbV9ncmFu
dWxhcml0eTsKICAgICB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbnRQb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ludFBvaW50LmgJKHJldmlzaW9uIDg3NzU4KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW50UG9pbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAog
I2RlZmluZSBJbnRQb2ludF9oCiAKICNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSA8d3Rm
L01hdGhFeHRyYXMuaD4KIAogI2lmIFBMQVRGT1JNKFFUKQogI2luY2x1ZGUgPFFEYXRhU3RyZWFt
PgpAQCAtOTIsNiArOTMsMTEgQEAgcHVibGljOgogICAgIHZvaWQgbW92ZShjb25zdCBJbnRTaXpl
JiBzKSB7IG1vdmUocy53aWR0aCgpLCBzLmhlaWdodCgpKTsgfSAKICAgICB2b2lkIG1vdmUoY29u
c3QgSW50UG9pbnQmIG9mZnNldCkgeyBtb3ZlKG9mZnNldC54KCksIG9mZnNldC55KCkpOyB9CiAg
ICAgdm9pZCBtb3ZlKGludCBkeCwgaW50IGR5KSB7IG1feCArPSBkeDsgbV95ICs9IGR5OyB9Cisg
ICAgdm9pZCBzY2FsZShmbG9hdCBzeCwgZmxvYXQgc3kpCisgICAgeworICAgICAgICBtX3ggPSBs
cm91bmRmKHN0YXRpY19jYXN0PGZsb2F0PihtX3ggKiBzeCkpOworICAgICAgICBtX3kgPSBscm91
bmRmKHN0YXRpY19jYXN0PGZsb2F0PihtX3kgKiBzeSkpOworICAgIH0KICAgICAKICAgICBJbnRQ
b2ludCBleHBhbmRlZFRvKGNvbnN0IEludFBvaW50JiBvdGhlcikgY29uc3QKICAgICB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>