<?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>64833</bug_id>
          
          <creation_ts>2011-07-19 15:50:35 -0700</creation_ts>
          <short_desc>Bring Int/Float graphics classes closer to parity</short_desc>
          <delta_ts>2011-07-20 16:18:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>63567</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Levi Weintraub">leviw</reporter>
          <assigned_to name="Levi Weintraub">leviw</assigned_to>
          <cc>eae</cc>
    
    <cc>eric</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>439527</commentid>
    <comment_count>0</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-07-19 15:50:35 -0700</bug_when>
    <thetext>There are still some inconsistencies between IntPoint/FloatPoint, RoundedRect using floats, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439532</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-07-19 15:58:08 -0700</bug_when>
    <thetext>Why don&apos;t we use template classes for Point/Rect/Size?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439536</commentid>
    <comment_count>2</comment_count>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-07-19 16:04:29 -0700</bug_when>
    <thetext>For one, there are various overloads and implicit conversions that make sense to do from int-&gt;float but not the other way around. Functions like isZero would also need specialization for floats.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439540</commentid>
    <comment_count>3</comment_count>
      <attachid>101405</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-07-19 16:09:36 -0700</bug_when>
    <thetext>Created attachment 101405
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439994</commentid>
    <comment_count>4</comment_count>
      <attachid>101405</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-07-20 13:51:26 -0700</bug_when>
    <thetext>Comment on attachment 101405
Patch

I think this is good.  It might be worth investigating sharing more code between IntPoint/FloatPoint, but at a glance it doesn&apos;t seem trivial.  We could handle a lot of cases with partial specialization.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440038</commentid>
    <comment_count>5</comment_count>
      <attachid>101405</attachid>
    <who name="Levi Weintraub">leviw</who>
    <bug_when>2011-07-20 14:56:30 -0700</bug_when>
    <thetext>Comment on attachment 101405
Patch

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440099</commentid>
    <comment_count>6</comment_count>
      <attachid>101405</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-20 16:18:41 -0700</bug_when>
    <thetext>Comment on attachment 101405
Patch

Clearing flags on attachment: 101405

Committed r91417: &lt;http://trac.webkit.org/changeset/91417&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>440100</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-20 16:18:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101405</attachid>
            <date>2011-07-19 16:09:36 -0700</date>
            <delta_ts>2011-07-20 16:18:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-64833-20110719160935.patch</filename>
            <type>text/plain</type>
            <size>23840</size>
            <attacher name="Levi Weintraub">leviw</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkxMzE0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTEtMDctMTkgIExldmkgV2Vp
bnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEJyaW5nIEludC9GbG9hdCBn
cmFwaGljcyBjbGFzc2VzIGNsb3NlciB0byBwYXJpdHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0ODMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gcHJlcGFyYXRpb24gb2Ygc3dpdGNoaW5nIHRvIEZs
b2F0aW5nIHBvaW50IGRhdGEgc3RydWN0dXJlcywgYnJpbmdpbmcgdGhlCisgICAgICAgIGZ1bmN0
aW9uYWxpdHkgYW5kIG1ldGhvZCBuYW1lcyBvZiB0aGUgSW50L0Zsb2F0IGdyYXBoaWNzIGNsYXNz
ZXMgY2xvc2UgdG9nZXRoZXIuCisKKyAgICAgICAgQWxzbyBmaXhpbmcgc29tZSBjb21waWxlciBl
cnJvcnMgd2hlbiB1c2luZyBGbG9hdHMgZm9yIGxheW91dCB1bml0cyBhbG9uZyB0aGUgd2F5Lgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gZnVuY3Rpb25hbGl0eSBjaGFuZ2UuCisKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmNv
bnZlcnRGcm9tUmVuZGVyZXIpOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6d2hlZWxFdmVudCk6CisgICAgICAgICogcGxh
dGZvcm0vU2Nyb2xsVmlldy5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6Y29udmVy
dENoaWxkVG9TZWxmKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OmNvbnZlcnRTZWxm
VG9DaGlsZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oOgorICAg
ICAgICAoV2ViQ29yZTo6b3BlcmF0b3ItKTogQWRkaW5nIGEgc2luZ2xlLXBhcmFtZXRlciB2ZXJz
aW9uLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGbG9hdFNpemU6OmlzWmVybyk6IEFkZGluZyBpc1plcm8gdGhhdCB1c2VzIGVw
c2lsb24gZm9yIGZsb2F0cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFNpemUu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5oOgorICAgICAgICAoV2Vi
Q29yZTo6SW50UG9pbnQ6Om1vdmVCeSk6IFJlbmFtaW5nIEludFBvaW50IHZlcnNpb24gdG8gbW92
ZUJ5IHRvIG1pcnJvciBGbG9hdFBvaW50LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1Jv
dW5kZWRSZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJvdW5kZWRSZWN0OjpSYWRpaTo6ZXhw
YW5kKTogU3dpdGNoaW5nIHRvIHNwZWNpZmljIHRlbXBsYXRpemVkIG1heC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGaWx0ZXJFZmZlY3Q6OnJlcXVlc3RlZFJlZ2lvbk9mSW5wdXRJbWFnZURhdGEpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6IE1vdmluZyBvdXRzdGFuZGluZyBJbnQq
IGZ1bmN0aW9ucyB0byBMYXlvdXQgdW5pdHMuCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9j
azo6cGFpbnRDb250aW51YXRpb25PdXRsaW5lcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9jazo6bG9naWNhbFJlY3RUb1BoeXNpY2FsUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3g6OnBvc2l0aW9uRm9yUG9pbnQpOgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6c3Vi
dHJhY3RDYXB0aW9uUmVjdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUYWJsZUNlbGw6OnN0eWxlT3JDb2xMb2dpY2FsV2lkdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGFibGVDZWxsOjpzZXRPdmVycmlkZVNpemVGcm9tUm93SGVpZ2h0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6cGFpbnRDb2xsYXBzZWRCb3JkZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpwYWludEJhY2tncm91bmRzQmVoaW5k
Q2VsbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJWaWV3Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJWaWV3Ojpw
dXNoTGF5b3V0U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0U3RhdGVNYWludGFpbmVy
OjpMYXlvdXRTdGF0ZU1haW50YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0U3RhdGVN
YWludGFpbmVyOjpwdXNoKToKKyAgICAgICAgKiByZW5kZXJpbmcvUm9vdElubGluZUJveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjpwYWRkZWRMYXlvdXRPdmVyZmxvd1Jl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6c2V0QXNjZW50QW5kRGVzY2VudCk6CisgICAgICAgICog
cmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaDoKKwogMjAxMS0wNy0xOSAgRGFuIEJlcm5zdGVpbiAg
PG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIE5vdGhpbmcgcHJpbnRlZCB3aGVuIHNwZWNpZnlp
bmcgYSB2ZXJ5IGxhcmdlIG1heGltdW0gbGF5b3V0IHdpZHRoCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZVZpZXcuY3BwCShyZXZpc2lvbiA5MTIyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcwMyw3ICsyNzAzLDcgQEAgSW50UG9pbnQg
RnJhbWVWaWV3Ojpjb252ZXJ0RnJvbVJlbmRlcmVyKAogICAgIEludFBvaW50IHBvaW50ID0gcm91
bmRlZEludFBvaW50KHJlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGUocmVuZGVyZXJQb2ludCwgZmFs
c2UsIHRydWUgLyogdXNlIHRyYW5zZm9ybXMgKi8pKTsKIAogICAgIC8vIENvbnZlcnQgZnJvbSBw
YWdlICgiYWJzb2x1dGUiKSB0byBGcmFtZVZpZXcgY29vcmRpbmF0ZXMuCi0gICAgcG9pbnQubW92
ZSgtc2Nyb2xsUG9zaXRpb24oKSk7CisgICAgcG9pbnQubW92ZUJ5KC1zY3JvbGxQb3NpdGlvbigp
KTsKICAgICByZXR1cm4gcG9pbnQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFZpZXcuY3BwCShyZXZpc2lvbiA5MTIyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQyLDcgKzExNDIsNyBAQCBJbnRQ
b2ludCBTY3JvbGxWaWV3Ojpjb252ZXJ0RnJvbVNjcm9sbGJhCiB7CiAgICAgLy8gU2Nyb2xsYmFy
cyB3b24ndCBiZSB0cmFuc2Zvcm1lZCB3aXRoaW4gdXMKICAgICBJbnRQb2ludCBuZXdQb2ludCA9
IGxvY2FsUG9pbnQ7Ci0gICAgbmV3UG9pbnQubW92ZShzY3JvbGxiYXItPmxvY2F0aW9uKCkpOwor
ICAgIG5ld1BvaW50Lm1vdmVCeShzY3JvbGxiYXItPmxvY2F0aW9uKCkpOwogICAgIHJldHVybiBu
ZXdQb2ludDsKIH0KIApAQCAtMTE1MCw3ICsxMTUwLDcgQEAgSW50UG9pbnQgU2Nyb2xsVmlldzo6
Y29udmVydEZyb21Db250YWluaQogewogICAgIEludFBvaW50IG5ld1BvaW50ID0gcGFyZW50UG9p
bnQ7CiAgICAgLy8gU2Nyb2xsYmFycyB3b24ndCBiZSB0cmFuc2Zvcm1lZCB3aXRoaW4gdXMKLSAg
ICBuZXdQb2ludC5tb3ZlKC1zY3JvbGxiYXItPmxvY2F0aW9uKCkpOworICAgIG5ld1BvaW50Lm1v
dmVCeSgtc2Nyb2xsYmFyLT5sb2NhdGlvbigpKTsKICAgICByZXR1cm4gbmV3UG9pbnQ7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgJKHJldmlzaW9uIDkxMjIzKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNDMsNyArMjQzLDcgQEAgcHVibGljOgogICAgICAgICBJbnRQb2ludCBuZXdQb2ludCA9IHBv
aW50OwogICAgICAgICBpZiAoIWlzU2Nyb2xsVmlld1Njcm9sbGJhcihjaGlsZCkpCiAgICAgICAg
ICAgICBuZXdQb2ludCA9IHBvaW50IC0gc2Nyb2xsT2Zmc2V0KCk7Ci0gICAgICAgIG5ld1BvaW50
Lm1vdmUoY2hpbGQtPmxvY2F0aW9uKCkpOworICAgICAgICBuZXdQb2ludC5tb3ZlQnkoY2hpbGQt
PmxvY2F0aW9uKCkpOwogICAgICAgICByZXR1cm4gbmV3UG9pbnQ7CiAgICAgfQogCkBAIC0yNTIs
NyArMjUyLDcgQEAgcHVibGljOgogICAgICAgICBJbnRQb2ludCBuZXdQb2ludCA9IHBvaW50Owog
ICAgICAgICBpZiAoIWlzU2Nyb2xsVmlld1Njcm9sbGJhcihjaGlsZCkpCiAgICAgICAgICAgICBu
ZXdQb2ludCA9IHBvaW50ICsgc2Nyb2xsT2Zmc2V0KCk7Ci0gICAgICAgIG5ld1BvaW50Lm1vdmUo
LWNoaWxkLT5sb2NhdGlvbigpKTsKKyAgICAgICAgbmV3UG9pbnQubW92ZUJ5KC1jaGlsZC0+bG9j
YXRpb24oKSk7CiAgICAgICAgIHJldHVybiBuZXdQb2ludDsKICAgICB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50LmgJKHJldmlzaW9uIDkx
MjIzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMTIsNiArMjEyLDExIEBAIGlubGluZSBGbG9hdFBvaW50IG9wZXJh
dG9yLShjb25zdCBGbG9hdFAKICAgICByZXR1cm4gRmxvYXRQb2ludChhLngoKSAtIGIud2lkdGgo
KSwgYS55KCkgLSBiLmhlaWdodCgpKTsKIH0KIAoraW5saW5lIEZsb2F0UG9pbnQgb3BlcmF0b3It
KGNvbnN0IEZsb2F0UG9pbnQmIGEpCit7CisgICAgcmV0dXJuIEZsb2F0UG9pbnQoLWEueCgpLCAt
YS55KCkpOworfQorCiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZsb2F0UG9pbnQmIGEs
IGNvbnN0IEZsb2F0UG9pbnQmIGIpCiB7CiAgICAgcmV0dXJuIGEueCgpID09IGIueCgpICYmIGEu
eSgpID09IGIueSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxv
YXRTaXplLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9GbG9hdFNpemUuY3BwCShyZXZpc2lvbiA5MTIyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Zsb2F0U2l6ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDEx
IEBACiAKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJJbnRTaXplLmgi
CisjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPG1hdGguaD4KIAordXNpbmcgbmFtZXNwYWNl
IHN0ZDsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBGbG9hdFNpemU6OkZsb2F0U2l6ZShjb25z
dCBJbnRTaXplJiBzaXplKSA6IG1fd2lkdGgoc2l6ZS53aWR0aCgpKSwgbV9oZWlnaHQoc2l6ZS5o
ZWlnaHQoKSkKQEAgLTQyLDYgKzQ1LDExIEBAIGZsb2F0IEZsb2F0U2l6ZTo6ZGlhZ29uYWxMZW5n
dGgoKSBjb25zdAogICAgIHJldHVybiBzcXJ0ZihkaWFnb25hbExlbmd0aFNxdWFyZWQoKSk7CiB9
CiAKK2Jvb2wgRmxvYXRTaXplOjppc1plcm8oKSBjb25zdAoreworICAgIHJldHVybiBmYWJzKG1f
d2lkdGgpIDwgbnVtZXJpY19saW1pdHM8ZmxvYXQ+OjplcHNpbG9uKCkgJiYgZmFicyhtX2hlaWdo
dCkgPCBudW1lcmljX2xpbWl0czxmbG9hdD46OmVwc2lsb24oKTsKK30KKwogRmxvYXRTaXplIEZs
b2F0U2l6ZTo6bmFycm93UHJlY2lzaW9uKGRvdWJsZSB3aWR0aCwgZG91YmxlIGhlaWdodCkKIHsK
ICAgICByZXR1cm4gRmxvYXRTaXplKG5hcnJvd1ByZWNpc2lvblRvRmxvYXQod2lkdGgpLCBuYXJy
b3dQcmVjaXNpb25Ub0Zsb2F0KGhlaWdodCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgJKHJldmlzaW9uIDkxMjIzKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTYy
LDYgKzYyLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SGVpZ2h0KGZsb2F0IGhlaWdodCkgeyBt
X2hlaWdodCA9IGhlaWdodDsgfQogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4g
bV93aWR0aCA8PSAwIHx8IG1faGVpZ2h0IDw9IDA7IH0KKyAgICBib29sIGlzWmVybygpIGNvbnN0
OwogCiAgICAgZmxvYXQgYXNwZWN0UmF0aW8oKSBjb25zdCB7IHJldHVybiBtX3dpZHRoIC8gbV9o
ZWlnaHQ7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9p
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQ
b2ludC5oCShyZXZpc2lvbiA5MTIyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ludFBvaW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0WShpbnQgeSkgeyBtX3kgPSB5OyB9CiAKICAgICB2b2lkIG1vdmUoY29uc3Qg
SW50U2l6ZSYgcykgeyBtb3ZlKHMud2lkdGgoKSwgcy5oZWlnaHQoKSk7IH0gCi0gICAgdm9pZCBt
b3ZlKGNvbnN0IEludFBvaW50JiBvZmZzZXQpIHsgbW92ZShvZmZzZXQueCgpLCBvZmZzZXQueSgp
KTsgfQorICAgIHZvaWQgbW92ZUJ5KGNvbnN0IEludFBvaW50JiBvZmZzZXQpIHsgbW92ZShvZmZz
ZXQueCgpLCBvZmZzZXQueSgpKTsgfQogICAgIHZvaWQgbW92ZShpbnQgZHgsIGludCBkeSkgeyBt
X3ggKz0gZHg7IG1feSArPSBkeTsgfQogICAgIHZvaWQgc2NhbGUoZmxvYXQgc3gsIGZsb2F0IHN5
KQogICAgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JvdW5kZWRS
ZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9S
b3VuZGVkUmVjdC5jcHAJKHJldmlzaW9uIDkxMjIzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUm91bmRlZFJlY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSwxNyArNjEs
MTcgQEAgdm9pZCBSb3VuZGVkUmVjdDo6UmFkaWk6OnNjYWxlKGZsb2F0IGZhYwogCiB2b2lkIFJv
dW5kZWRSZWN0OjpSYWRpaTo6ZXhwYW5kKExheW91dFVuaXQgdG9wV2lkdGgsIExheW91dFVuaXQg
Ym90dG9tV2lkdGgsIExheW91dFVuaXQgbGVmdFdpZHRoLCBMYXlvdXRVbml0IHJpZ2h0V2lkdGgp
CiB7Ci0gICAgbV90b3BMZWZ0LnNldFdpZHRoKG1heCgwLCBtX3RvcExlZnQud2lkdGgoKSArIGxl
ZnRXaWR0aCkpOwotICAgIG1fdG9wTGVmdC5zZXRIZWlnaHQobWF4KDAsIG1fdG9wTGVmdC5oZWln
aHQoKSArIHRvcFdpZHRoKSk7CisgICAgbV90b3BMZWZ0LnNldFdpZHRoKG1heDxMYXlvdXRVbml0
PigwLCBtX3RvcExlZnQud2lkdGgoKSArIGxlZnRXaWR0aCkpOworICAgIG1fdG9wTGVmdC5zZXRI
ZWlnaHQobWF4PExheW91dFVuaXQ+KDAsIG1fdG9wTGVmdC5oZWlnaHQoKSArIHRvcFdpZHRoKSk7
CiAKLSAgICBtX3RvcFJpZ2h0LnNldFdpZHRoKG1heCgwLCBtX3RvcFJpZ2h0LndpZHRoKCkgKyBy
aWdodFdpZHRoKSk7Ci0gICAgbV90b3BSaWdodC5zZXRIZWlnaHQobWF4KDAsIG1fdG9wUmlnaHQu
aGVpZ2h0KCkgKyB0b3BXaWR0aCkpOworICAgIG1fdG9wUmlnaHQuc2V0V2lkdGgobWF4PExheW91
dFVuaXQ+KDAsIG1fdG9wUmlnaHQud2lkdGgoKSArIHJpZ2h0V2lkdGgpKTsKKyAgICBtX3RvcFJp
Z2h0LnNldEhlaWdodChtYXg8TGF5b3V0VW5pdD4oMCwgbV90b3BSaWdodC5oZWlnaHQoKSArIHRv
cFdpZHRoKSk7CiAKLSAgICBtX2JvdHRvbUxlZnQuc2V0V2lkdGgobWF4KDAsIG1fYm90dG9tTGVm
dC53aWR0aCgpICsgbGVmdFdpZHRoKSk7Ci0gICAgbV9ib3R0b21MZWZ0LnNldEhlaWdodChtYXgo
MCwgbV9ib3R0b21MZWZ0LmhlaWdodCgpICsgYm90dG9tV2lkdGgpKTsKKyAgICBtX2JvdHRvbUxl
ZnQuc2V0V2lkdGgobWF4PExheW91dFVuaXQ+KDAsIG1fYm90dG9tTGVmdC53aWR0aCgpICsgbGVm
dFdpZHRoKSk7CisgICAgbV9ib3R0b21MZWZ0LnNldEhlaWdodChtYXg8TGF5b3V0VW5pdD4oMCwg
bV9ib3R0b21MZWZ0LmhlaWdodCgpICsgYm90dG9tV2lkdGgpKTsKIAotICAgIG1fYm90dG9tUmln
aHQuc2V0V2lkdGgobWF4KDAsIG1fYm90dG9tUmlnaHQud2lkdGgoKSArIHJpZ2h0V2lkdGgpKTsK
LSAgICBtX2JvdHRvbVJpZ2h0LnNldEhlaWdodChtYXgoMCwgbV9ib3R0b21SaWdodC5oZWlnaHQo
KSArIGJvdHRvbVdpZHRoKSk7CisgICAgbV9ib3R0b21SaWdodC5zZXRXaWR0aChtYXg8TGF5b3V0
VW5pdD4oMCwgbV9ib3R0b21SaWdodC53aWR0aCgpICsgcmlnaHRXaWR0aCkpOworICAgIG1fYm90
dG9tUmlnaHQuc2V0SGVpZ2h0KG1heDxMYXlvdXRVbml0PigwLCBtX2JvdHRvbVJpZ2h0LmhlaWdo
dCgpICsgYm90dG9tV2lkdGgpKTsKIH0KIAogdm9pZCBSb3VuZGVkUmVjdDo6aW5mbGF0ZVdpdGhS
YWRpaShMYXlvdXRVbml0IHNpemUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3QuY3BwCShyZXZpc2lvbiA5
MTIyMykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
RWZmZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBJbnRSZWN0IEZpbHRl
ckVmZmVjdDo6cmVxdWVzdGVkUmVnaW9uT2ZJCiB7CiAgICAgQVNTRVJUKGhhc1Jlc3VsdCgpKTsK
ICAgICBJbnRQb2ludCBsb2NhdGlvbiA9IG1fYWJzb2x1dGVQYWludFJlY3QubG9jYXRpb24oKTsK
LSAgICBsb2NhdGlvbi5tb3ZlKC1lZmZlY3RSZWN0LmxvY2F0aW9uKCkpOworICAgIGxvY2F0aW9u
Lm1vdmVCeSgtZWZmZWN0UmVjdC5sb2NhdGlvbigpKTsKICAgICByZXR1cm4gSW50UmVjdChsb2Nh
dGlvbiwgbV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogfQogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAJKHJldmlzaW9uIDkxMjIzKQorKysgU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcw
MSw3ICsyNzAxLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6cGFpbnRDb250aW51YXRpb25PdXRsaQog
ICAgICAgICBSZW5kZXJJbmxpbmUqIGZsb3cgPSAqaXQ7CiAgICAgICAgIFJlbmRlckJsb2NrKiBi
bG9jayA9IGZsb3ctPmNvbnRhaW5pbmdCbG9jaygpOwogICAgICAgICBmb3IgKCA7IGJsb2NrICYm
IGJsb2NrICE9IHRoaXM7IGJsb2NrID0gYmxvY2stPmNvbnRhaW5pbmdCbG9jaygpKQotICAgICAg
ICAgICAgYWNjdW11bGF0ZWRQYWludE9mZnNldC5tb3ZlKGJsb2NrLT5sb2NhdGlvbigpKTsKKyAg
ICAgICAgICAgIGFjY3VtdWxhdGVkUGFpbnRPZmZzZXQubW92ZUJ5KGJsb2NrLT5sb2NhdGlvbigp
KTsKICAgICAgICAgQVNTRVJUKGJsb2NrKTsgICAKICAgICAgICAgZmxvdy0+cGFpbnRPdXRsaW5l
KGluZm8uY29udGV4dCwgYWNjdW11bGF0ZWRQYWludE9mZnNldCk7CiAgICAgfQpAQCAtMjgwNywx
MyArMjgwNywxMyBAQCBzdGF0aWMgaW50IGlubGluZURpcmVjdGlvbk9mZnNldChSZW5kZXJCCiAg
ICAgcmV0dXJuIHJvb3RCbG9jay0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IG9mZnNldEZy
b21Sb290QmxvY2sud2lkdGgoKSA6IG9mZnNldEZyb21Sb290QmxvY2suaGVpZ2h0KCk7CiB9CiAK
LUludFJlY3QgUmVuZGVyQmxvY2s6OmxvZ2ljYWxSZWN0VG9QaHlzaWNhbFJlY3QoY29uc3QgSW50
UG9pbnQmIHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIGNvbnN0IEludFJlY3QmIGxvZ2ljYWxS
ZWN0KQorTGF5b3V0UmVjdCBSZW5kZXJCbG9jazo6bG9naWNhbFJlY3RUb1BoeXNpY2FsUmVjdChj
b25zdCBMYXlvdXRQb2ludCYgcm9vdEJsb2NrUGh5c2ljYWxQb3NpdGlvbiwgY29uc3QgTGF5b3V0
UmVjdCYgbG9naWNhbFJlY3QpCiB7Ci0gICAgSW50UmVjdCByZXN1bHQ7CisgICAgTGF5b3V0UmVj
dCByZXN1bHQ7CiAgICAgaWYgKGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpCiAgICAgICAgIHJl
c3VsdCA9IGxvZ2ljYWxSZWN0OwogICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gSW50UmVjdChs
b2dpY2FsUmVjdC55KCksIGxvZ2ljYWxSZWN0LngoKSwgbG9naWNhbFJlY3QuaGVpZ2h0KCksIGxv
Z2ljYWxSZWN0LndpZHRoKCkpOworICAgICAgICByZXN1bHQgPSBMYXlvdXRSZWN0KGxvZ2ljYWxS
ZWN0LnkoKSwgbG9naWNhbFJlY3QueCgpLCBsb2dpY2FsUmVjdC5oZWlnaHQoKSwgbG9naWNhbFJl
Y3Qud2lkdGgoKSk7CiAgICAgZmxpcEZvcldyaXRpbmdNb2RlKHJlc3VsdCk7CiAgICAgcmVzdWx0
Lm1vdmVCeShyb290QmxvY2tQaHlzaWNhbFBvc2l0aW9uKTsKICAgICByZXR1cm4gcmVzdWx0OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgJKHJldmlzaW9uIDkxMjIz
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE0MSw3ICsxNDEsNyBAQCBwdWJsaWM6CiAgICAgTGF5b3V0UmVjdCBsb2dpY2FsUmln
aHRTZWxlY3Rpb25HYXAoUmVuZGVyQmxvY2sqIHJvb3RCbG9jaywgY29uc3QgTGF5b3V0UG9pbnQm
IHJvb3RCbG9ja1BoeXNpY2FsUG9zaXRpb24sIGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21S
b290QmxvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVy
T2JqZWN0KiBzZWxPYmosIExheW91dFVuaXQgbG9naWNhbFJpZ2h0LCBMYXlvdXRVbml0IGxvZ2lj
YWxUb3AsIExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgY29uc3QgUGFpbnRJbmZvKik7CiAgICAg
dm9pZCBnZXRTZWxlY3Rpb25HYXBJbmZvKFNlbGVjdGlvblN0YXRlLCBib29sJiBsZWZ0R2FwLCBi
b29sJiByaWdodEdhcCk7Ci0gICAgSW50UmVjdCBsb2dpY2FsUmVjdFRvUGh5c2ljYWxSZWN0KGNv
bnN0IEludFBvaW50JiBwaHlzaWNhbFBvc2l0aW9uLCBjb25zdCBJbnRSZWN0JiBsb2dpY2FsUmVj
dCk7CisgICAgTGF5b3V0UmVjdCBsb2dpY2FsUmVjdFRvUGh5c2ljYWxSZWN0KGNvbnN0IExheW91
dFBvaW50JiBwaHlzaWNhbFBvc2l0aW9uLCBjb25zdCBMYXlvdXRSZWN0JiBsb2dpY2FsUmVjdCk7
CiAgICAgICAgIAogICAgIC8vIEhlbHBlciBtZXRob2RzIGZvciBjb21wdXRpbmcgbGluZSBjb3Vu
dHMgYW5kIGhlaWdodHMgZm9yIGxpbmUgY291bnRzLgogICAgIFJvb3RJbmxpbmVCb3gqIGxpbmVB
dEluZGV4KGludCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAko
cmV2aXNpb24gOTEyMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzExMyw3ICszMTEzLDcgQEAgVmlzaWJsZVBvc2l0aW9uIFJl
bmRlckJveDo6cG9zaXRpb25Gb3JQbwogICAgIFJlbmRlckJveCogY2xvc2VzdFJlbmRlcmVyID0g
MDsKICAgICBMYXlvdXRQb2ludCBhZGp1c3RlZFBvaW50ID0gcG9pbnQ7CiAgICAgaWYgKGlzVGFi
bGVSb3coKSkKLSAgICAgICAgYWRqdXN0ZWRQb2ludC5tb3ZlKGxvY2F0aW9uKCkpOworICAgICAg
ICBhZGp1c3RlZFBvaW50Lm1vdmVCeShsb2NhdGlvbigpKTsKIAogICAgIGZvciAoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJPYmplY3QgPSBmaXJzdENoaWxkKCk7IHJlbmRlck9iamVjdDsgcmVuZGVyT2Jq
ZWN0ID0gcmVuZGVyT2JqZWN0LT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGlmICgoIXJlbmRl
ck9iamVjdC0+Zmlyc3RDaGlsZCgpICYmICFyZW5kZXJPYmplY3QtPmlzSW5saW5lKCkgJiYgIXJl
bmRlck9iamVjdC0+aXNCbG9ja0Zsb3coKSApCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUYWJsZS5jcHAJKHJldmlzaW9uIDkxMjIzKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMxLDEyICs1MzEsMTIg
QEAgdm9pZCBSZW5kZXJUYWJsZTo6cGFpbnRPYmplY3QoUGFpbnRJbmZvJgogICAgICAgICBwYWlu
dE91dGxpbmUocGFpbnRJbmZvLmNvbnRleHQsIExheW91dFJlY3QocGFpbnRPZmZzZXQsIHNpemUo
KSkpOwogfQogCi12b2lkIFJlbmRlclRhYmxlOjpzdWJ0cmFjdENhcHRpb25SZWN0KEludFJlY3Qm
IHJlY3QpIGNvbnN0Cit2b2lkIFJlbmRlclRhYmxlOjpzdWJ0cmFjdENhcHRpb25SZWN0KExheW91
dFJlY3QmIHJlY3QpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NhcHRpb24pCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGludCBjYXB0aW9uTG9naWNhbEhlaWdodCA9IG1fY2FwdGlvbi0+bG9naWNhbEhl
aWdodCgpICsgbV9jYXB0aW9uLT5tYXJnaW5CZWZvcmUoKSArIG1fY2FwdGlvbi0+bWFyZ2luQWZ0
ZXIoKTsKKyAgICBMYXlvdXRVbml0IGNhcHRpb25Mb2dpY2FsSGVpZ2h0ID0gbV9jYXB0aW9uLT5s
b2dpY2FsSGVpZ2h0KCkgKyBtX2NhcHRpb24tPm1hcmdpbkJlZm9yZSgpICsgbV9jYXB0aW9uLT5t
YXJnaW5BZnRlcigpOwogICAgIGJvb2wgY2FwdGlvbklzQmVmb3JlID0gKG1fY2FwdGlvbi0+c3R5
bGUoKS0+Y2FwdGlvblNpZGUoKSAhPSBDQVBCT1RUT00pIF4gc3R5bGUoKS0+aXNGbGlwcGVkQmxv
Y2tzV3JpdGluZ01vZGUoKTsKICAgICBpZiAoc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSkgewogICAgICAgICByZWN0LnNldEhlaWdodChyZWN0LmhlaWdodCgpIC0gY2FwdGlvbkxv
Z2ljYWxIZWlnaHQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmgJ
KHJldmlzaW9uIDkxMjIzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNiw4ICsyMTYsOCBAQCBwcml2YXRlOgogCiAgICAgdmly
dHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAgICAgdmly
dHVhbCB2b2lkIHBhaW50T2JqZWN0KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7Ci0g
ICAgdmlydHVhbCB2b2lkIHBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiwgY29uc3QgSW50
UG9pbnQmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRNYXNrKFBhaW50SW5mbyYsIGNvbnN0IElu
dFBvaW50Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZv
JiwgY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRNYXNrKFBhaW50
SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIGxheW91dCgpOwog
ICAgIHZpcnR1YWwgdm9pZCBjb21wdXRlUHJlZmVycmVkTG9naWNhbFdpZHRocygpOwogICAgIHZp
cnR1YWwgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1
bHQmLCBjb25zdCBMYXlvdXRQb2ludCYgcG9pbnRJbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9p
bnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKTsKQEAgLTIzNSw3ICsyMzUsNyBA
QCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGFkZE92ZXJmbG93RnJvbUNoaWxkcmVuKCk7
CiAKLSAgICB2b2lkIHN1YnRyYWN0Q2FwdGlvblJlY3QoSW50UmVjdCYpIGNvbnN0OworICAgIHZv
aWQgc3VidHJhY3RDYXB0aW9uUmVjdChMYXlvdXRSZWN0JikgY29uc3Q7CiAKICAgICB2b2lkIHJl
Y2FsY0NhcHRpb24oUmVuZGVyQmxvY2sqKSBjb25zdDsKICAgICB2b2lkIHJlY2FsY1NlY3Rpb25z
KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVD
ZWxsLmNwcAkocmV2aXNpb24gOTEyMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVDZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE1LDcgKzExNSw3IEBAIExlbmd0
aCBSZW5kZXJUYWJsZUNlbGw6OnN0eWxlT3JDb2xMb2dpY2EKICAgICAgICAgLy8gUGVyY2VudGFn
ZXMgZG9uJ3QgbmVlZCB0byBiZSBoYW5kbGVkIHNpbmNlIHRoZXkncmUgYWx3YXlzIHRyZWF0ZWQg
dGhpcyB3YXkgKGV2ZW4gd2hlbiBzcGVjaWZpZWQgb24gdGhlIGNlbGxzKS4KICAgICAgICAgLy8g
U2VlIEJ1Z3ppbGxhIGJ1ZyA4MTI2IGZvciBkZXRhaWxzLgogICAgICAgICBpZiAoY29sV2lkdGhT
dW0uaXNGaXhlZCgpICYmIGNvbFdpZHRoU3VtLnZhbHVlKCkgPiAwKQotICAgICAgICAgICAgY29s
V2lkdGhTdW0gPSBMZW5ndGgobWF4KDAsIGNvbFdpZHRoU3VtLnZhbHVlKCkgLSBib3JkZXJBbmRQ
YWRkaW5nTG9naWNhbFdpZHRoKCkpLCBGaXhlZCk7CisgICAgICAgICAgICBjb2xXaWR0aFN1bSA9
IExlbmd0aChtYXg8TGF5b3V0VW5pdD4oMCwgY29sV2lkdGhTdW0udmFsdWUoKSAtIGJvcmRlckFu
ZFBhZGRpbmdMb2dpY2FsV2lkdGgoKSksIEZpeGVkKTsKICAgICAgICAgcmV0dXJuIGNvbFdpZHRo
U3VtOwogICAgIH0KIApAQCAtMjE1LDcgKzIxNSw3IEBAIExheW91dFVuaXQgUmVuZGVyVGFibGVD
ZWxsOjpwYWRkaW5nQWZ0ZXIKIHZvaWQgUmVuZGVyVGFibGVDZWxsOjpzZXRPdmVycmlkZVNpemVG
cm9tUm93SGVpZ2h0KGludCByb3dIZWlnaHQpCiB7CiAgICAgY2xlYXJJbnRyaW5zaWNQYWRkaW5n
KCk7Ci0gICAgUmVuZGVyQmxvY2s6OnNldE92ZXJyaWRlU2l6ZShMYXlvdXRTaXplKDAsIG1heCgw
LCByb3dIZWlnaHQgLSBib3JkZXJCZWZvcmUoKSAtIHBhZGRpbmdCZWZvcmUoKSAtIGJvcmRlckFm
dGVyKCkgLSBwYWRkaW5nQWZ0ZXIoKSkpKTsKKyAgICBSZW5kZXJCbG9jazo6c2V0T3ZlcnJpZGVT
aXplKExheW91dFNpemUoMCwgbWF4PExheW91dFVuaXQ+KDAsIHJvd0hlaWdodCAtIGJvcmRlckJl
Zm9yZSgpIC0gcGFkZGluZ0JlZm9yZSgpIC0gYm9yZGVyQWZ0ZXIoKSAtIHBhZGRpbmdBZnRlcigp
KSkpOwogfQogCiBMYXlvdXRTaXplIFJlbmRlclRhYmxlQ2VsbDo6b2Zmc2V0RnJvbUNvbnRhaW5l
cihSZW5kZXJPYmplY3QqIG8sIGNvbnN0IExheW91dFBvaW50JiBwb2ludCkgY29uc3QKQEAgLTkx
Miw3ICs5MTIsNyBAQCB2b2lkIFJlbmRlclRhYmxlQ2VsbDo6c29ydEJvcmRlclN0eWxlcyhDCiAg
ICAgICAgIGNvbXBhcmVCb3JkZXJTdHlsZXNGb3JRU29ydCk7CiB9CiAKLXZvaWQgUmVuZGVyVGFi
bGVDZWxsOjpwYWludENvbGxhcHNlZEJvcmRlcihHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29u
dGV4dCwgY29uc3QgSW50UmVjdCYgcGFpbnRSZWN0KQordm9pZCBSZW5kZXJUYWJsZUNlbGw6OnBh
aW50Q29sbGFwc2VkQm9yZGVyKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25z
dCBMYXlvdXRSZWN0JiBwYWludFJlY3QpCiB7CiAgICAgaWYgKCF0YWJsZSgpLT5jdXJyZW50Qm9y
ZGVyU3R5bGUoKSB8fCBncmFwaGljc0NvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtOTc4LDcgKzk3OCw3IEBAIHZvaWQgUmVuZGVyVGFibGVDZWxsOjpwYWlu
dEJhY2tncm91bmRzQmUKIAogICAgIExheW91dFBvaW50IGFkanVzdGVkUGFpbnRPZmZzZXQgPSBw
YWludE9mZnNldDsKICAgICBpZiAoYmFja2dyb3VuZE9iamVjdCAhPSB0aGlzKQotICAgICAgICBh
ZGp1c3RlZFBhaW50T2Zmc2V0Lm1vdmUobG9jYXRpb24oKSk7CisgICAgICAgIGFkanVzdGVkUGFp
bnRPZmZzZXQubW92ZUJ5KGxvY2F0aW9uKCkpOwogCiAgICAgQ29sb3IgYyA9IGJhY2tncm91bmRP
YmplY3QtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91
bmRDb2xvcik7CiAgICAgY29uc3QgRmlsbExheWVyKiBiZ0xheWVyID0gYmFja2dyb3VuZE9iamVj
dC0+c3R5bGUoKS0+YmFja2dyb3VuZExheWVycygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAkocmV2aXNpb24gOTEyMjMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDcg
Kzk2LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFBhaW50SW5mbyYsIGNv
bnN0IExheW91dFBvaW50Jik7CiAKLSAgICB2b2lkIHBhaW50QmFja2dyb3VuZHNCZWhpbmRDZWxs
KFBhaW50SW5mbyYsIGNvbnN0IEludFBvaW50JiwgUmVuZGVyT2JqZWN0KiBiYWNrZ3JvdW5kT2Jq
ZWN0KTsKKyAgICB2b2lkIHBhaW50QmFja2dyb3VuZHNCZWhpbmRDZWxsKFBhaW50SW5mbyYsIGNv
bnN0IExheW91dFBvaW50JiwgUmVuZGVyT2JqZWN0KiBiYWNrZ3JvdW5kT2JqZWN0KTsKIAogICAg
IGludCBjZWxsQmFzZWxpbmVQb3NpdGlvbigpIGNvbnN0OwogCkBAIC0xNTAsNyArMTUwLDcgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIEludFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFp
bnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIpOwogICAgIHZpcnR1YWwg
dm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRD
b250YWluZXIsIEludFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpOwogCi0gICAgdm9pZCBwYWlu
dENvbGxhcHNlZEJvcmRlcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jik7CisgICAg
dm9pZCBwYWludENvbGxhcHNlZEJvcmRlcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlvdXRS
ZWN0Jik7CiAKICAgICBpbnQgbV9yb3c7CiAgICAgaW50IG1fY29sdW1uOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCShyZXZpc2lvbiA5MTIyMykKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Myw3ICsx
NzMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUmVuZGVyQmxvY2sqIGNvbnRhaW5pbmdCbG9j
aygpIGNvbnN0OwogCiAgICAgLy8gVGhlc2UgZnVuY3Rpb25zIG1heSBvbmx5IGJlIGFjY2Vzc2Vk
IGJ5IExheW91dFN0YXRlTWFpbnRhaW5lci4KLSAgICBib29sIHB1c2hMYXlvdXRTdGF0ZShSZW5k
ZXJCb3gqIHJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiBvZmZzZXQsIGludCBwYWdlSGVpZ2h0ID0g
MCwgYm9vbCBwYWdlSGVpZ2h0Q2hhbmdlZCA9IGZhbHNlLCBDb2x1bW5JbmZvKiBjb2xJbmZvID0g
MCkKKyAgICBib29sIHB1c2hMYXlvdXRTdGF0ZShSZW5kZXJCb3gqIHJlbmRlcmVyLCBjb25zdCBM
YXlvdXRTaXplJiBvZmZzZXQsIExheW91dFVuaXQgcGFnZUhlaWdodCA9IDAsIGJvb2wgcGFnZUhl
aWdodENoYW5nZWQgPSBmYWxzZSwgQ29sdW1uSW5mbyogY29sSW5mbyA9IDApCiAgICAgewogICAg
ICAgICAvLyBXZSBwdXNoIExheW91dFN0YXRlIGV2ZW4gaWYgbGF5b3V0U3RhdGUgaXMgZGlzYWJs
ZWQgYmVjYXVzZSBpdCBzdG9yZXMgbGF5b3V0RGVsdGEgdG9vLgogICAgICAgICBpZiAoIWRvaW5n
RnVsbFJlcGFpbnQoKSB8fCByZW5kZXJlci0+aGFzQ29sdW1ucygpIHx8IG1fbGF5b3V0U3RhdGUt
PmlzUGFnaW5hdGVkKCkpIHsKQEAgLTI2Niw3ICsyNjYsNyBAQCBjbGFzcyBMYXlvdXRTdGF0ZU1h
aW50YWluZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExheW91dFN0YXRlTWFpbnRhaW5l
cik7CiBwdWJsaWM6CiAgICAgLy8gY3RvciB0byBwdXNoIG5vdwotICAgIExheW91dFN0YXRlTWFp
bnRhaW5lcihSZW5kZXJWaWV3KiB2aWV3LCBSZW5kZXJCb3gqIHJvb3QsIEludFNpemUgb2Zmc2V0
LCBib29sIGRpc2FibGVTdGF0ZSA9IGZhbHNlLCBpbnQgcGFnZUhlaWdodCA9IDAsIGJvb2wgcGFn
ZUhlaWdodENoYW5nZWQgPSBmYWxzZSwgQ29sdW1uSW5mbyogY29sSW5mbyA9IDApCisgICAgTGF5
b3V0U3RhdGVNYWludGFpbmVyKFJlbmRlclZpZXcqIHZpZXcsIFJlbmRlckJveCogcm9vdCwgTGF5
b3V0U2l6ZSBvZmZzZXQsIGJvb2wgZGlzYWJsZVN0YXRlID0gZmFsc2UsIExheW91dFVuaXQgcGFn
ZUhlaWdodCA9IDAsIGJvb2wgcGFnZUhlaWdodENoYW5nZWQgPSBmYWxzZSwgQ29sdW1uSW5mbyog
Y29sSW5mbyA9IDApCiAgICAgICAgIDogbV92aWV3KHZpZXcpCiAgICAgICAgICwgbV9kaXNhYmxl
ZChkaXNhYmxlU3RhdGUpCiAgICAgICAgICwgbV9kaWRTdGFydChmYWxzZSkKQEAgLTI5MSw3ICsy
OTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChtX2RpZFN0YXJ0ID09IG1fZGlkRW5kKTsg
ICAvLyBpZiB0aGlzIGZpcmVzLCBpdCBtZWFucyB0aGF0IHNvbWVvbmUgZGlkIGEgcHVzaCgpLCBi
dXQgZm9yZ290IHRvIHBvcCgpLgogICAgIH0KIAotICAgIHZvaWQgcHVzaChSZW5kZXJCb3gqIHJv
b3QsIEludFNpemUgb2Zmc2V0LCBpbnQgcGFnZUhlaWdodCA9IDAsIGJvb2wgcGFnZUhlaWdodENo
YW5nZWQgPSBmYWxzZSwgQ29sdW1uSW5mbyogY29sSW5mbyA9IDApCisgICAgdm9pZCBwdXNoKFJl
bmRlckJveCogcm9vdCwgTGF5b3V0U2l6ZSBvZmZzZXQsIExheW91dFVuaXQgcGFnZUhlaWdodCA9
IDAsIGJvb2wgcGFnZUhlaWdodENoYW5nZWQgPSBmYWxzZSwgQ29sdW1uSW5mbyogY29sSW5mbyA9
IDApCiAgICAgewogICAgICAgICBBU1NFUlQoIW1fZGlkU3RhcnQpOwogICAgICAgICAvLyBXZSBw
dXNoIHN0YXRlIGV2ZW4gaWYgZGlzYWJsZWQsIGJlY2F1c2Ugd2Ugc3RpbGwgbmVlZCB0byBzdG9y
ZSBsYXlvdXREZWx0YQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVC
b3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290SW5saW5l
Qm94LmNwcAkocmV2aXNpb24gOTEyMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9v
dElubGluZUJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzMiwyOCArNTMyLDI5IEBAIHZvaWQg
Um9vdElubGluZUJveDo6YXR0YWNoTGluZUJveFRvUmVuZGUKICAgICBibG9jaygpLT5saW5lQm94
ZXMoKS0+YXR0YWNoTGluZUJveCh0aGlzKTsKIH0KIAotSW50UmVjdCBSb290SW5saW5lQm94Ojpw
YWRkZWRMYXlvdXRPdmVyZmxvd1JlY3QoaW50IGVuZFBhZGRpbmcpIGNvbnN0CitMYXlvdXRSZWN0
IFJvb3RJbmxpbmVCb3g6OnBhZGRlZExheW91dE92ZXJmbG93UmVjdChMYXlvdXRVbml0IGVuZFBh
ZGRpbmcpIGNvbnN0CiB7Ci0gICAgSW50UmVjdCBsaW5lTGF5b3V0T3ZlcmZsb3cgPSBsYXlvdXRP
dmVyZmxvd1JlY3QobGluZVRvcCgpLCBsaW5lQm90dG9tKCkpOworICAgIExheW91dFJlY3QgbGlu
ZUxheW91dE92ZXJmbG93ID0gbGF5b3V0T3ZlcmZsb3dSZWN0KGxpbmVUb3AoKSwgbGluZUJvdHRv
bSgpKTsKICAgICBpZiAoIWVuZFBhZGRpbmcpCiAgICAgICAgIHJldHVybiBsaW5lTGF5b3V0T3Zl
cmZsb3c7CiAgICAgCisgICAgLy8gRklYTUU6IEF1ZGl0IHdoZXRoZXIgdG8gdXNlIHBpeGVsIHNu
YXBwZWQgdmFsdWVzIHdoZW4gbm90IHVzaW5nIGludGVnZXJzIGZvciBsYXlvdXQ6IGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzY1NgogICAgIGlmIChpc0hvcml6b250
YWwoKSkgewogICAgICAgICBpZiAoaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQotICAgICAgICAg
ICAgbGluZUxheW91dE92ZXJmbG93LnNoaWZ0TWF4WEVkZ2VUbyhtYXgobGluZUxheW91dE92ZXJm
bG93Lm1heFgoKSwgcGl4ZWxTbmFwcGVkTG9naWNhbFJpZ2h0KCkgKyBlbmRQYWRkaW5nKSk7Cisg
ICAgICAgICAgICBsaW5lTGF5b3V0T3ZlcmZsb3cuc2hpZnRNYXhYRWRnZVRvKG1heDxMYXlvdXRV
bml0PihsaW5lTGF5b3V0T3ZlcmZsb3cubWF4WCgpLCBwaXhlbFNuYXBwZWRMb2dpY2FsUmlnaHQo
KSArIGVuZFBhZGRpbmcpKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbGluZUxheW91dE92
ZXJmbG93LnNoaWZ0WEVkZ2VUbyhtaW4obGluZUxheW91dE92ZXJmbG93LngoKSwgcGl4ZWxTbmFw
cGVkTG9naWNhbExlZnQoKSAtIGVuZFBhZGRpbmcpKTsKKyAgICAgICAgICAgIGxpbmVMYXlvdXRP
dmVyZmxvdy5zaGlmdFhFZGdlVG8obWluPExheW91dFVuaXQ+KGxpbmVMYXlvdXRPdmVyZmxvdy54
KCksIHBpeGVsU25hcHBlZExvZ2ljYWxMZWZ0KCkgLSBlbmRQYWRkaW5nKSk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgaWYgKGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkKLSAgICAgICAgICAgIGxp
bmVMYXlvdXRPdmVyZmxvdy5zaGlmdE1heFlFZGdlVG8obWF4KGxpbmVMYXlvdXRPdmVyZmxvdy5t
YXhZKCksIHBpeGVsU25hcHBlZExvZ2ljYWxSaWdodCgpICsgZW5kUGFkZGluZykpOworICAgICAg
ICAgICAgbGluZUxheW91dE92ZXJmbG93LnNoaWZ0TWF4WUVkZ2VUbyhtYXg8TGF5b3V0VW5pdD4o
bGluZUxheW91dE92ZXJmbG93Lm1heFkoKSwgcGl4ZWxTbmFwcGVkTG9naWNhbFJpZ2h0KCkgKyBl
bmRQYWRkaW5nKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxpbmVMYXlvdXRPdmVyZmxv
dy5zaGlmdFlFZGdlVG8obWluKGxpbmVMYXlvdXRPdmVyZmxvdy55KCksIHBpeGVsU25hcHBlZExv
Z2ljYWxMZWZ0KCkgLSBlbmRQYWRkaW5nKSk7CisgICAgICAgICAgICBsaW5lTGF5b3V0T3ZlcmZs
b3cuc2hpZnRZRWRnZVRvKG1pbjxMYXlvdXRVbml0PihsaW5lTGF5b3V0T3ZlcmZsb3cueSgpLCBw
aXhlbFNuYXBwZWRMb2dpY2FsTGVmdCgpIC0gZW5kUGFkZGluZykpOwogICAgIH0KICAgICAKICAg
ICByZXR1cm4gbGluZUxheW91dE92ZXJmbG93OwogfQogCi1zdGF0aWMgdm9pZCBzZXRBc2NlbnRB
bmREZXNjZW50KGludCYgYXNjZW50LCBpbnQmIGRlc2NlbnQsIGludCBuZXdBc2NlbnQsIGludCBu
ZXdEZXNjZW50LCBib29sJiBhc2NlbnREZXNjZW50U2V0KQorc3RhdGljIHZvaWQgc2V0QXNjZW50
QW5kRGVzY2VudChMYXlvdXRVbml0JiBhc2NlbnQsIExheW91dFVuaXQmIGRlc2NlbnQsIExheW91
dFVuaXQgbmV3QXNjZW50LCBMYXlvdXRVbml0IG5ld0Rlc2NlbnQsIGJvb2wmIGFzY2VudERlc2Nl
bnRTZXQpCiB7CiAgICAgaWYgKCFhc2NlbnREZXNjZW50U2V0KSB7CiAgICAgICAgIGFzY2VudERl
c2NlbnRTZXQgPSB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxp
bmVCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGlu
ZUJveC5oCShyZXZpc2lvbiA5MTIyMykKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Sb290
SW5saW5lQm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw3ICsxMzgsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBoYXNBbm5vdGF0aW9uc0JlZm9yZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzQW5ub3Rh
dGlvbnNCZWZvcmU7IH0KICAgICBib29sIGhhc0Fubm90YXRpb25zQWZ0ZXIoKSBjb25zdCB7IHJl
dHVybiBtX2hhc0Fubm90YXRpb25zQWZ0ZXI7IH0KIAotICAgIEludFJlY3QgcGFkZGVkTGF5b3V0
T3ZlcmZsb3dSZWN0KGludCBlbmRQYWRkaW5nKSBjb25zdDsKKyAgICBMYXlvdXRSZWN0IHBhZGRl
ZExheW91dE92ZXJmbG93UmVjdChMYXlvdXRVbml0IGVuZFBhZGRpbmcpIGNvbnN0OwogCiAgICAg
dm9pZCBhc2NlbnRBbmREZXNjZW50Rm9yQm94KElubGluZUJveCosIEdseXBoT3ZlcmZsb3dBbmRG
YWxsYmFja0ZvbnRzTWFwJiwgTGF5b3V0VW5pdCYgYXNjZW50LCBMYXlvdXRVbml0JiBkZXNjZW50
LCBib29sJiBhZmZlY3RzQXNjZW50LCBib29sJiBhZmZlY3RzRGVzY2VudCkgY29uc3Q7CiAgICAg
TGF5b3V0VW5pdCB2ZXJ0aWNhbFBvc2l0aW9uRm9yQm94KElubGluZUJveCosIFZlcnRpY2FsUG9z
aXRpb25DYWNoZSYpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>