<?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>96710</bug_id>
          
          <creation_ts>2012-09-13 17:22:11 -0700</creation_ts>
          <short_desc>The collapsing border code needs direction-aware border getters</short_desc>
          <delta_ts>2012-09-19 17:58:40 -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>Tables</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>79272</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Julien Chaffraix">jchaffraix</assigned_to>
          <cc>bdakin</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>robert</cc>
    
    <cc>shezbaig.wk</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>720142</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-09-13 17:22:11 -0700</bug_when>
    <thetext>Currently most of the code makes the assumption that cells have the same alignment as their section. This is wrong and caused bug 79272.

Example from RenderTableCell::computeCollapsedStartBorder:
 
CollapsedBorderValue prevCellBorder = CollapsedBorderValue(prevCell-&gt;style()-&gt;borderEnd(), includeColor ? prevCell-&gt;style()-&gt;visitedDependentColor(endColorProperty) : Color(), BCELL);

This assumes that |prevCell| has the same direction as |this| or this will pick up the wrong border.

The idea of this refactoring is to introduce some new direction-aware function to get adjoining borders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721269</commentid>
    <comment_count>1</comment_count>
      <attachid>164253</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-09-14 17:17:21 -0700</bug_when>
    <thetext>Created attachment 164253
Proposed refactoring. Introduce several new helper functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723047</commentid>
    <comment_count>2</comment_count>
      <attachid>164620</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-09-18 14:20:51 -0700</bug_when>
    <thetext>Created attachment 164620
Proposed change 2. Forgot to update the column code too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723107</commentid>
    <comment_count>3</comment_count>
      <attachid>164620</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-18 15:42:45 -0700</bug_when>
    <thetext>Comment on attachment 164620
Proposed change 2. Forgot to update the column code too.

Attachment 164620 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13897299</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723658</commentid>
    <comment_count>4</comment_count>
      <attachid>164756</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-09-19 10:51:53 -0700</bug_when>
    <thetext>Created attachment 164756
v3: Fixed Mac build, removed unused parameter in RenderTableCol functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723814</commentid>
    <comment_count>5</comment_count>
      <attachid>164756</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-09-19 14:09:53 -0700</bug_when>
    <thetext>Comment on attachment 164756
v3: Fixed Mac build, removed unused parameter in RenderTableCol functions.

I find the names all very similar, but different in subtle ways. I couldn&apos;t think of any better names though. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724009</commentid>
    <comment_count>6</comment_count>
      <attachid>164756</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-09-19 17:47:35 -0700</bug_when>
    <thetext>Comment on attachment 164756
v3: Fixed Mac build, removed unused parameter in RenderTableCol functions.

Thanks Ojan! The Qt bots are b0rken, based on previous patches not breaking Qt, this patch should be fine to land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724016</commentid>
    <comment_count>7</comment_count>
      <attachid>164756</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-19 17:58:36 -0700</bug_when>
    <thetext>Comment on attachment 164756
v3: Fixed Mac build, removed unused parameter in RenderTableCol functions.

Clearing flags on attachment: 164756

Committed r129078: &lt;http://trac.webkit.org/changeset/129078&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>724017</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-19 17:58:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164253</attachid>
            <date>2012-09-14 17:17:21 -0700</date>
            <delta_ts>2012-09-18 14:20:48 -0700</delta_ts>
            <desc>Proposed refactoring. Introduce several new helper functions.</desc>
            <filename>bug-96710-20120914171652.patch</filename>
            <type>text/plain</type>
            <size>15304</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NjU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjBlMWU2MWY4YzNhZTJh
MzliYTk4YTgwMmZkNjhkODI0MjZmYjliMS4uMDljNGY5MDc5NTdlNDhhYWVlMDU4MDdmMGJiZmY2
NGNlZmI0NzU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTA5LTEzICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFRoZSBjb2xs
YXBzaW5nIGJvcmRlciBjb2RlIG5lZWRzIGRpcmVjdGlvbi1hd2FyZSBib3JkZXIgZ2V0dGVycwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY3MTAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHJlZmFj
dG9yaW5nIGlzIG5lZWRlZCB0byBleHRlbmQgb3VyIGNvbGxhcHNpbmcgYm9yZGVyIHN1cHBvcnQg
Zm9yIG1peGVkIGRpcmVjdGlvbmFsaXR5CisgICAgICAgIGF0IHRoZSB0YWJsZSBjZWxsIGxldmVs
ICh3ZSBjdXJyZW50bHkgd3JvbmdseSBpZ25vcmUgYW55IGRpcmVjdGlvbiBiZWxvdyB0aGUgcm93
LWdyb3VwKS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckJveDo6aGFzU2FtZURpcmVjdGlvbkFzKToKKyAgICAgICAgQWRkZWQgdGhp
cyBoZWxwZXIgZnVuY3Rpb24uIEZvciBub3csIGl0J3Mgb25seSB1c2VkIHRvIGNvbXBhcmUgYWdh
aW5zdAorICAgICAgICB0aGUgdGFibGUgZGlyZWN0aW9uIGJ1dCB3ZSB3aWxsIHJldXNlIGl0IHRv
IGNvbXBhcmUgY3VycmVudCBjZWxsIGRpcmVjdGlvbgorICAgICAgICBhZ2FpbnN0IHRoZSBvdGhl
ciB0YWJsZSBwYXJ0cy4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZTo6dGFibGVTdGFydEJvcmRlckFkam9pbmluZ0Nl
bGwpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OnRhYmxlRW5kQm9yZGVyQWRqb2lu
aW5nQ2VsbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246OmZpcnN0Um93Q2VsbEFkam9pbmlu
Z1RhYmxlU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpmaXJz
dFJvd0NlbGxBZGpvaW5pbmdUYWJsZUVuZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRh
YmxlQ2VsbC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVDZWxsOjpib3JkZXJBZGpv
aW5pbmdUYWJsZVN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6Ym9y
ZGVyQWRqb2luaW5nVGFibGVFbmQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNl
Y3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6Ym9yZGVyQWRq
b2luaW5nVGFibGVTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246
OmJvcmRlckFkam9pbmluZ1RhYmxlRW5kKToKKyAgICAgICAgVXBkYXRlZCB0aG9zZSBjYWxsIHNp
dGVzIHRvIHVzZSBSZW5kZXJCb3g6Omhhc1NhbWVEaXJlY3Rpb25Bcy4KKworICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFi
bGVDZWxsOjpjb21wdXRlQ29sbGFwc2VkU3RhcnRCb3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGFibGVDZWxsOjpjb21wdXRlQ29sbGFwc2VkRW5kQm9yZGVyKToKKyAgICAgICAgVXBk
YXRlZCB0aGlzIGZ1bmN0aW9uIHRvIHVzZSB0aGUgbmV3IGRpcmVjdGlvbiBhd2FyZSBmdW5jdGlv
bnMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmJvcmRlckFkam9pbmluZ05leHRDZWxsKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6Ym9yZGVyQWRqb2luaW5nUHJldmlvdXNDZWxs
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGFibGVSb3c6OmJvcmRlckFkam9pbmluZ1N0YXJ0Q2VsbCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUYWJsZVJvdzo6Ym9yZGVyQWRqb2luaW5nRW5kQ2VsbCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJUYWJsZVJvdzo6Ym9yZGVyQWRqb2luaW5nVGFibGVTdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUYWJsZVJvdzo6Ym9yZGVyQWRqb2luaW5nVGFibGVFbmQpOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGFibGVTZWN0aW9uOjpib3JkZXJBZGpvaW5pbmdTdGFydENlbGwpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpib3JkZXJBZGpvaW5pbmdFbmRDZWxsKToKKyAgICAgICAg
TmV3IGRpcmVjdGlvbiBhd2FyZSBmdW5jdGlvbnMuIEZvciBub3csIHRoZXkgZG9uJ3QgY2hlY2sg
ZGlyZWN0aW9uYWxpdHkKKyAgICAgICAgdG8gbWF0Y2ggdGhlIGV4aXN0aW5nIGJlaGF2aW9yLgor
CiAyMDEyLTA5LTE0ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJFR1JFU1NJT046IHRyYW5zaXRpb24gZG9lc27igJl0IGFsd2F5cyBvdmVycmlkZSB0
cmFuc2l0aW9uLXByb3BlcnR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXgg
ZWVjNTJkYThiMWZkYzYwMzA1YWFiMzk2OTg5NDRkZmFmNzMzZTBhZS4uYjg0NTFkZTk3Nzk3MDFm
N2E2Yzg5NmIyYTY3Yjk0MGM4YWRhZDNkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
b3guaApAQCAtNTQyLDYgKzU0Miw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCisgICAgYm9vbCBoYXNTYW1lRGlyZWN0aW9uQXMoY29uc3QgUmVuZGVyQm94KiBvYmplY3Qp
IGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmRpcmVjdGlvbigpID09IG9iamVjdC0+c3R5bGUoKS0+
ZGlyZWN0aW9uKCk7IH0KKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0
cm95ZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRh
YmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKaW5kZXgg
OWIyNDczMDZhZTY1MjA5MDYxYTlkYTk0MzBkNDVlZGNlZTUwNGQ2Yi4uYmUwMDQ2NjExZjU1N2Iy
OTkzMTYwNzRkMzMwNzkwOWE2OWVkNTExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGUuY3BwCkBAIC0xMzE2LDcgKzEzMTYsNyBAQCBSZW5kZXJUYWJsZSogUmVuZGVyVGFi
bGU6OmNyZWF0ZUFub255bW91c1dpdGhQYXJlbnRSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3Qq
CiBjb25zdCBCb3JkZXJWYWx1ZSYgUmVuZGVyVGFibGU6OnRhYmxlU3RhcnRCb3JkZXJBZGpvaW5p
bmdDZWxsKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCogY2VsbCkgY29uc3QKIHsKICAgICBBU1NFUlQo
Y2VsbC0+aXNGaXJzdE9yTGFzdENlbGxJblJvdygpKTsKLSAgICBpZiAoY2VsbC0+c2VjdGlvbigp
LT5oYXNTYW1lRGlyZWN0aW9uQXNUYWJsZSgpKQorICAgIGlmIChoYXNTYW1lRGlyZWN0aW9uQXMo
Y2VsbC0+c2VjdGlvbigpKSkKICAgICAgICAgcmV0dXJuIHN0eWxlKCktPmJvcmRlclN0YXJ0KCk7
CiAKICAgICByZXR1cm4gc3R5bGUoKS0+Ym9yZGVyRW5kKCk7CkBAIC0xMzI1LDcgKzEzMjUsNyBA
QCBjb25zdCBCb3JkZXJWYWx1ZSYgUmVuZGVyVGFibGU6OnRhYmxlU3RhcnRCb3JkZXJBZGpvaW5p
bmdDZWxsKGNvbnN0IFJlbmRlclRhYmxlQwogY29uc3QgQm9yZGVyVmFsdWUmIFJlbmRlclRhYmxl
Ojp0YWJsZUVuZEJvcmRlckFkam9pbmluZ0NlbGwoY29uc3QgUmVuZGVyVGFibGVDZWxsKiBjZWxs
KSBjb25zdAogewogICAgIEFTU0VSVChjZWxsLT5pc0ZpcnN0T3JMYXN0Q2VsbEluUm93KCkpOwot
ICAgIGlmIChjZWxsLT5zZWN0aW9uKCktPmhhc1NhbWVEaXJlY3Rpb25Bc1RhYmxlKCkpCisgICAg
aWYgKGhhc1NhbWVEaXJlY3Rpb25BcyhjZWxsLT5zZWN0aW9uKCkpKQogICAgICAgICByZXR1cm4g
c3R5bGUoKS0+Ym9yZGVyRW5kKCk7CiAKICAgICByZXR1cm4gc3R5bGUoKS0+Ym9yZGVyU3RhcnQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKaW5kZXgg
ZTQ5YWMxMGFmMzhmODk5NmY4NWQyM2NlOWRhZTc1ODk0MjE5MGY4OC4uZTQ0ZjNkZGNlNDVhNDUx
NDkxZTcyNjcxNWY5YThlY2ViYmFhZjQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRhYmxlQ2VsbC5jcHAKQEAgLTQyMiwxOCArNDIyLDE4IEBAIENvbGxhcHNlZEJvcmRl
clZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29tcHV0ZUNvbGxhcHNlZFN0YXJ0Qm9yZGVyKEluY2x1
ZGVCb3JkZXJDCiAKICAgICAvLyAoMikgVGhlIGVuZCBib3JkZXIgb2YgdGhlIHByZWNlZGluZyBj
ZWxsLgogICAgIGlmIChSZW5kZXJUYWJsZUNlbGwqIHByZXZDZWxsID0gdGFibGUtPmNlbGxCZWZv
cmUodGhpcykpIHsKLSAgICAgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgcHJldkNlbGxCb3JkZXIg
PSBDb2xsYXBzZWRCb3JkZXJWYWx1ZShwcmV2Q2VsbC0+c3R5bGUoKS0+Ym9yZGVyRW5kKCksIGlu
Y2x1ZGVDb2xvciA/IHByZXZDZWxsLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoZW5k
Q29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCQ0VMTCk7CisgICAgICAgIENvbGxhcHNlZEJvcmRl
clZhbHVlIHByZXZDZWxsQm9yZGVyID0gQ29sbGFwc2VkQm9yZGVyVmFsdWUocHJldkNlbGwtPmJv
cmRlckFkam9pbmluZ05leHRDZWxsKHRoaXMpLCBpbmNsdWRlQ29sb3IgPyBwcmV2Q2VsbC0+c3R5
bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGVuZENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwg
QkNFTEwpOwogICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocHJldkNlbGxCb3JkZXIsIHJl
c3VsdCk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9IGVsc2UgaWYgKGlzU3RhcnRDb2x1bW4pIHsKICAgICAgICAgLy8gKDMp
IE91ciByb3cncyBzdGFydCBib3JkZXIuCi0gICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihy
ZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKHBhcmVudCgpLT5zdHlsZSgpLT5ib3JkZXJTdGFy
dCgpLCBpbmNsdWRlQ29sb3IgPyBwYXJlbnQoKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENv
bG9yKHN0YXJ0Q29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCUk9XKSk7CisgICAgICAgIHJlc3Vs
dCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKHJvdygpLT5ib3Jk
ZXJBZGpvaW5pbmdTdGFydENlbGwodGhpcyksIGluY2x1ZGVDb2xvciA/IHBhcmVudCgpLT5zdHls
ZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3RhcnRDb2xvclByb3BlcnR5KSA6IENvbG9yKCks
IEJST1cpKTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwotICAgICAgICAKKwogICAgICAgICAvLyAoNCkgT3VyIHJvdyBncm91cCdzIHN0
YXJ0IGJvcmRlci4KLSAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFw
c2VkQm9yZGVyVmFsdWUoc2VjdGlvbigpLT5zdHlsZSgpLT5ib3JkZXJTdGFydCgpLCBpbmNsdWRl
Q29sb3IgPyBzZWN0aW9uKCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdGFydENv
bG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQlJPV0dST1VQKSk7CisgICAgICAgIHJlc3VsdCA9IGNo
b29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKHNlY3Rpb24oKS0+Ym9yZGVy
QWRqb2luaW5nU3RhcnRDZWxsKHRoaXMpLCBpbmNsdWRlQ29sb3IgPyBzZWN0aW9uKCktPnN0eWxl
KCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdGFydENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwg
QlJPV0dST1VQKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC00OTUsMTkgKzQ5NSwxOSBAQCBDb2xsYXBzZWRCb3Jk
ZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbXB1dGVDb2xsYXBzZWRFbmRCb3JkZXIoSW5jbHVk
ZUJvcmRlckNvbAogICAgIGlmICghaXNFbmRDb2x1bW4pIHsKICAgICAgICAgUmVuZGVyVGFibGVD
ZWxsKiBuZXh0Q2VsbCA9IHRhYmxlLT5jZWxsQWZ0ZXIodGhpcyk7CiAgICAgICAgIGlmIChuZXh0
Q2VsbCAmJiBuZXh0Q2VsbC0+c3R5bGUoKSkgewotICAgICAgICAgICAgQ29sbGFwc2VkQm9yZGVy
VmFsdWUgc3RhcnRCb3JkZXIgPSBDb2xsYXBzZWRCb3JkZXJWYWx1ZShuZXh0Q2VsbC0+c3R5bGUo
KS0+Ym9yZGVyU3RhcnQoKSwgaW5jbHVkZUNvbG9yID8gbmV4dENlbGwtPnN0eWxlKCktPnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihzdGFydENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQkNFTEwpOwor
ICAgICAgICAgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgc3RhcnRCb3JkZXIgPSBDb2xsYXBzZWRC
b3JkZXJWYWx1ZShuZXh0Q2VsbC0+Ym9yZGVyQWRqb2luaW5nUHJldmlvdXNDZWxsKHRoaXMpLCBp
bmNsdWRlQ29sb3IgPyBuZXh0Q2VsbC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHN0
YXJ0Q29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCQ0VMTCk7CiAgICAgICAgICAgICByZXN1bHQg
PSBjaG9vc2VCb3JkZXIocmVzdWx0LCBzdGFydEJvcmRlcik7CiAgICAgICAgICAgICBpZiAoIXJl
c3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9
CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gKDMpIE91ciByb3cncyBlbmQgYm9yZGVyLgotICAg
ICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShw
YXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyRW5kKCksIGluY2x1ZGVDb2xvciA/IHBhcmVudCgpLT5z
dHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoZW5kQ29sb3JQcm9wZXJ0eSkgOiBDb2xvcigp
LCBCUk9XKSk7CisgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNl
ZEJvcmRlclZhbHVlKHJvdygpLT5ib3JkZXJBZGpvaW5pbmdFbmRDZWxsKHRoaXMpLCBpbmNsdWRl
Q29sb3IgPyBwYXJlbnQoKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGVuZENvbG9y
UHJvcGVydHkpIDogQ29sb3IoKSwgQlJPVykpOwogICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMo
KSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIAogICAgICAgICAvLyAoNCkg
T3VyIHJvdyBncm91cCdzIGVuZCBib3JkZXIuCi0gICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRl
cihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKHNlY3Rpb24oKS0+c3R5bGUoKS0+Ym9yZGVy
RW5kKCksIGluY2x1ZGVDb2xvciA/IHNlY3Rpb24oKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVu
dENvbG9yKGVuZENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQlJPV0dST1VQKSk7CisgICAgICAg
IHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKHNlY3Rp
b24oKS0+Ym9yZGVyQWRqb2luaW5nRW5kQ2VsbCh0aGlzKSwgaW5jbHVkZUNvbG9yID8gc2VjdGlv
bigpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoZW5kQ29sb3JQcm9wZXJ0eSkgOiBD
b2xvcigpLCBCUk9XR1JPVVApKTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZUNlbGwuaAppbmRleCBmMGNiMzNlNTFjYTU4MGQyNTYwZGUzMDBlM2Q3NDZjMDE1
MjM1OTRhLi45OTk0YWRhZGZmYTRhMDA3MWRlMDg4YzU2YTU2ZGI4MzUyNTMzZjJlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCkBAIC0xNDQsNyArMTQ0LDcg
QEAgcHVibGljOgogICAgIGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJBZGpvaW5pbmdUYWJsZVN0
YXJ0KCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChpc0ZpcnN0T3JMYXN0Q2VsbEluUm93
KCkpOwotICAgICAgICBpZiAoc2VjdGlvbigpLT5oYXNTYW1lRGlyZWN0aW9uQXNUYWJsZSgpKQor
ICAgICAgICBpZiAoc2VjdGlvbigpLT5oYXNTYW1lRGlyZWN0aW9uQXModGFibGUoKSkpCiAgICAg
ICAgICAgICByZXR1cm4gc3R5bGUoKS0+Ym9yZGVyU3RhcnQoKTsKIAogICAgICAgICByZXR1cm4g
c3R5bGUoKS0+Ym9yZGVyRW5kKCk7CkBAIC0xNTMsMTIgKzE1MywyNCBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgQm9yZGVyVmFsdWUmIGJvcmRlckFkam9pbmluZ1RhYmxlRW5kKCkgY29uc3QKICAgICB7
CiAgICAgICAgIEFTU0VSVChpc0ZpcnN0T3JMYXN0Q2VsbEluUm93KCkpOwotICAgICAgICBpZiAo
c2VjdGlvbigpLT5oYXNTYW1lRGlyZWN0aW9uQXNUYWJsZSgpKQorICAgICAgICBpZiAoc2VjdGlv
bigpLT5oYXNTYW1lRGlyZWN0aW9uQXModGFibGUoKSkpCiAgICAgICAgICAgICByZXR1cm4gc3R5
bGUoKS0+Ym9yZGVyRW5kKCk7CiAKICAgICAgICAgcmV0dXJuIHN0eWxlKCktPmJvcmRlclN0YXJ0
KCk7CiAgICAgfQogCisgICAgY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRlckFkam9pbmluZ05leHRD
ZWxsKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCopCisgICAgeworICAgICAgICAvLyBGSVhNRTogaHR0
cHM6Ly93ZWJraXQub3JnL2IvNzkyNzIgLSBBZGQgc3VwcG9ydCBmb3IgbWl4ZWQgZGlyZWN0aW9u
YWxpdHkgYXQgdGhlIGNlbGwgbGV2ZWwuCisgICAgICAgIHJldHVybiBzdHlsZSgpLT5ib3JkZXJF
bmQoKTsKKyAgICB9CisKKyAgICBjb25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVyQWRqb2luaW5nUHJl
dmlvdXNDZWxsKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCopCisgICAgeworICAgICAgICAvLyBGSVhN
RTogaHR0cHM6Ly93ZWJraXQub3JnL2IvNzkyNzIgLSBBZGQgc3VwcG9ydCBmb3IgbWl4ZWQgZGly
ZWN0aW9uYWxpdHkgYXQgdGhlIGNlbGwgbGV2ZWwuCisgICAgICAgIHJldHVybiBzdHlsZSgpLT5i
b3JkZXJTdGFydCgpOworICAgIH0KKwogI2lmbmRlZiBOREVCVUcKICAgICBib29sIGlzRmlyc3RP
ckxhc3RDZWxsSW5Sb3coKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVSb3cuY3BwCmluZGV4IDJiODNmYWE1YTQ4Njk2YTViMzdjMjIxOWUzMjY1MDEx
NjA1NDQ3MmYuLjFmMmJkMDY4OWExNTE0MGM5ZjA4MWE5YTM0NjIyZTQ0Y2M5NDRkZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcApAQCAtODIsNiArODIs
MjAgQEAgdm9pZCBSZW5kZXJUYWJsZVJvdzo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNl
IGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGQKICAgICB9CiB9CiAKK2NvbnN0IEJvcmRlclZh
bHVlJiBSZW5kZXJUYWJsZVJvdzo6Ym9yZGVyQWRqb2luaW5nU3RhcnRDZWxsKGNvbnN0IFJlbmRl
clRhYmxlQ2VsbCogY2VsbCkgY29uc3QKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGNlbGwsICF0YWJs
ZSgpLT5jZWxsQmVmb3JlKGNlbGwpKTsKKyAgICAvLyBGSVhNRTogaHR0cHM6Ly93ZWJraXQub3Jn
L2IvNzkyNzIgLSBBZGQgc3VwcG9ydCBmb3IgbWl4ZWQgZGlyZWN0aW9uYWxpdHkgYXQgdGhlIGNl
bGwgbGV2ZWwuCisgICAgcmV0dXJuIHN0eWxlKCktPmJvcmRlclN0YXJ0KCk7Cit9CisKK2NvbnN0
IEJvcmRlclZhbHVlJiBSZW5kZXJUYWJsZVJvdzo6Ym9yZGVyQWRqb2luaW5nRW5kQ2VsbChjb25z
dCBSZW5kZXJUYWJsZUNlbGwqIGNlbGwpIGNvbnN0Cit7CisgICAgQVNTRVJUX1VOVVNFRChjZWxs
LCAhdGFibGUoKS0+Y2VsbEFmdGVyKGNlbGwpKTsKKyAgICAvLyBGSVhNRTogaHR0cHM6Ly93ZWJr
aXQub3JnL2IvNzkyNzIgLSBBZGQgc3VwcG9ydCBmb3IgbWl4ZWQgZGlyZWN0aW9uYWxpdHkgYXQg
dGhlIGNlbGwgbGV2ZWwuCisgICAgcmV0dXJuIHN0eWxlKCktPmJvcmRlckVuZCgpOworfQorCiB2
b2lkIFJlbmRlclRhYmxlUm93OjphZGRDaGlsZChSZW5kZXJPYmplY3QqIGNoaWxkLCBSZW5kZXJP
YmplY3QqIGJlZm9yZUNoaWxkKQogewogICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCBhcHBlbmQg
dGhpbmdzIGFmdGVyIDphZnRlci1nZW5lcmF0ZWQgY29udGVudCBpZiB3ZSBoYXZlIGl0LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cuaAppbmRleCAwMTM2YzU4YTJmMmE0
NDI0YWFkOTllNmM0NDY3N2E3ZGJmZDYyNDE3Li4xMmY4MzNiYWYwZjA2NTcwNTI4Yjc3ZWI2OTRi
MTY0NTc2OTNkOGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGFibGVSb3cuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVSb3cu
aApAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBCb3JkZXJWYWx1ZSYgYm9y
ZGVyQWRqb2luaW5nVGFibGVTdGFydCgpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoc2VjdGlv
bigpLT5oYXNTYW1lRGlyZWN0aW9uQXNUYWJsZSgpKQorICAgICAgICBpZiAoc2VjdGlvbigpLT5o
YXNTYW1lRGlyZWN0aW9uQXModGFibGUoKSkpCiAgICAgICAgICAgICByZXR1cm4gc3R5bGUoKS0+
Ym9yZGVyU3RhcnQoKTsKIAogICAgICAgICByZXR1cm4gc3R5bGUoKS0+Ym9yZGVyRW5kKCk7CkBA
IC03NiwxMiArNzYsMTUgQEAgcHVibGljOgogCiAgICAgY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRl
ckFkam9pbmluZ1RhYmxlRW5kKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChzZWN0aW9uKCkt
Pmhhc1NhbWVEaXJlY3Rpb25Bc1RhYmxlKCkpCisgICAgICAgIGlmIChzZWN0aW9uKCktPmhhc1Nh
bWVEaXJlY3Rpb25Bcyh0YWJsZSgpKSkKICAgICAgICAgICAgIHJldHVybiBzdHlsZSgpLT5ib3Jk
ZXJFbmQoKTsKIAogICAgICAgICByZXR1cm4gc3R5bGUoKS0+Ym9yZGVyU3RhcnQoKTsKICAgICB9
CiAKKyAgICBjb25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVyQWRqb2luaW5nU3RhcnRDZWxsKGNvbnN0
IFJlbmRlclRhYmxlQ2VsbCopIGNvbnN0OworICAgIGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJB
ZGpvaW5pbmdFbmRDZWxsKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCopIGNvbnN0OworCiBwcml2YXRl
OgogICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0KiB2aXJ0dWFsQ2hpbGRyZW4oKSB7
IHJldHVybiBjaGlsZHJlbigpOyB9CiAgICAgdmlydHVhbCBjb25zdCBSZW5kZXJPYmplY3RDaGls
ZExpc3QqIHZpcnR1YWxDaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIGNoaWxkcmVuKCk7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKaW5kZXgg
OGYwODQ3NzlhOWQxOWU0Y2EyOGNjZWM1ZWVlMjU3OTFiYzNlNGRmNi4uZWI2OTQ4OTIxNjkzMmY4
ODEyZDM3MTVmOWVjNTFjZjE1NTE1NGJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAKQEAgLTEzMTcsMTUgKzEzMTcsMjkgQEAgdW5zaWdu
ZWQgUmVuZGVyVGFibGVTZWN0aW9uOjpudW1Db2x1bW5zKCkgY29uc3QKICAgICByZXR1cm4gcmVz
dWx0ICsgMTsKIH0KIAorY29uc3QgQm9yZGVyVmFsdWUmIFJlbmRlclRhYmxlU2VjdGlvbjo6Ym9y
ZGVyQWRqb2luaW5nU3RhcnRDZWxsKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCogY2VsbCkgY29uc3QK
K3sKKyAgICBBU1NFUlRfVU5VU0VEKGNlbGwsICF0YWJsZSgpLT5jZWxsQmVmb3JlKGNlbGwpKTsK
KyAgICAvLyBGSVhNRTogaHR0cHM6Ly93ZWJraXQub3JnL2IvNzkyNzIgLSBBZGQgc3VwcG9ydCBm
b3IgbWl4ZWQgZGlyZWN0aW9uYWxpdHkgYXQgdGhlIGNlbGwgbGV2ZWwuCisgICAgcmV0dXJuIHN0
eWxlKCktPmJvcmRlclN0YXJ0KCk7Cit9CisKK2NvbnN0IEJvcmRlclZhbHVlJiBSZW5kZXJUYWJs
ZVNlY3Rpb246OmJvcmRlckFkam9pbmluZ0VuZENlbGwoY29uc3QgUmVuZGVyVGFibGVDZWxsKiBj
ZWxsKSBjb25zdAoreworICAgIEFTU0VSVF9VTlVTRUQoY2VsbCwgIXRhYmxlKCktPmNlbGxBZnRl
cihjZWxsKSk7CisgICAgLy8gRklYTUU6IGh0dHBzOi8vd2Via2l0Lm9yZy9iLzc5MjcyIC0gQWRk
IHN1cHBvcnQgZm9yIG1peGVkIGRpcmVjdGlvbmFsaXR5IGF0IHRoZSBjZWxsIGxldmVsLgorICAg
IHJldHVybiBzdHlsZSgpLT5ib3JkZXJFbmQoKTsKK30KKwogY29uc3QgUmVuZGVyVGFibGVDZWxs
KiBSZW5kZXJUYWJsZVNlY3Rpb246OmZpcnN0Um93Q2VsbEFkam9pbmluZ1RhYmxlU3RhcnQoKSBj
b25zdAogewotICAgIHVuc2lnbmVkIGFkam9pbmluZ1N0YXJ0Q2VsbENvbHVtbkluZGV4ID0gaGFz
U2FtZURpcmVjdGlvbkFzVGFibGUoKSA/IDAgOiB0YWJsZSgpLT5sYXN0Q29sdW1uSW5kZXgoKTsK
KyAgICB1bnNpZ25lZCBhZGpvaW5pbmdTdGFydENlbGxDb2x1bW5JbmRleCA9IGhhc1NhbWVEaXJl
Y3Rpb25Bcyh0YWJsZSgpKSA/IDAgOiB0YWJsZSgpLT5sYXN0Q29sdW1uSW5kZXgoKTsKICAgICBy
ZXR1cm4gY2VsbEF0KDAsIGFkam9pbmluZ1N0YXJ0Q2VsbENvbHVtbkluZGV4KS5wcmltYXJ5Q2Vs
bCgpOwogfQogCiBjb25zdCBSZW5kZXJUYWJsZUNlbGwqIFJlbmRlclRhYmxlU2VjdGlvbjo6Zmly
c3RSb3dDZWxsQWRqb2luaW5nVGFibGVFbmQoKSBjb25zdAogewotICAgIHVuc2lnbmVkIGFkam9p
bmluZ0VuZENlbGxDb2x1bW5JbmRleCA9IGhhc1NhbWVEaXJlY3Rpb25Bc1RhYmxlKCkgPyB0YWJs
ZSgpLT5sYXN0Q29sdW1uSW5kZXgoKSA6IDA7CisgICAgdW5zaWduZWQgYWRqb2luaW5nRW5kQ2Vs
bENvbHVtbkluZGV4ID0gaGFzU2FtZURpcmVjdGlvbkFzKHRhYmxlKCkpID8gdGFibGUoKS0+bGFz
dENvbHVtbkluZGV4KCkgOiAwOwogICAgIHJldHVybiBjZWxsQXQoMCwgYWRqb2luaW5nRW5kQ2Vs
bENvbHVtbkluZGV4KS5wcmltYXJ5Q2VsbCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgKaW5kZXggNzA1NDkzOGU5NzdkMGExYzhjZWE2NzZm
OWUzMjE3OTE3NWY4NWRlOS4uY2UyMWE5ZWYxMjk3MmRjYmZkYzQwYTJiZGZmNTJjNmIzOTlkODdh
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaApA
QCAtMTE3LDE0ICsxMTcsOSBAQCBwdWJsaWM6CiAgICAgICAgIExlbmd0aCBsb2dpY2FsSGVpZ2h0
OwogICAgIH07CiAKLSAgICBib29sIGhhc1NhbWVEaXJlY3Rpb25Bc1RhYmxlKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiB0YWJsZSgpLT5zdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBzdHls
ZSgpLT5kaXJlY3Rpb24oKTsKLSAgICB9Ci0KICAgICBjb25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVy
QWRqb2luaW5nVGFibGVTdGFydCgpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoaGFzU2FtZURp
cmVjdGlvbkFzVGFibGUoKSkKKyAgICAgICAgaWYgKGhhc1NhbWVEaXJlY3Rpb25Bcyh0YWJsZSgp
KSkKICAgICAgICAgICAgIHJldHVybiBzdHlsZSgpLT5ib3JkZXJTdGFydCgpOwogCiAgICAgICAg
IHJldHVybiBzdHlsZSgpLT5ib3JkZXJFbmQoKTsKQEAgLTEzMiwxMiArMTI3LDE1IEBAIHB1Ymxp
YzoKIAogICAgIGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJBZGpvaW5pbmdUYWJsZUVuZCgpIGNv
bnN0CiAgICAgewotICAgICAgICBpZiAoaGFzU2FtZURpcmVjdGlvbkFzVGFibGUoKSkKKyAgICAg
ICAgaWYgKGhhc1NhbWVEaXJlY3Rpb25Bcyh0YWJsZSgpKSkKICAgICAgICAgICAgIHJldHVybiBz
dHlsZSgpLT5ib3JkZXJFbmQoKTsKIAogICAgICAgICByZXR1cm4gc3R5bGUoKS0+Ym9yZGVyU3Rh
cnQoKTsKICAgICB9CiAKKyAgICBjb25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVyQWRqb2luaW5nU3Rh
cnRDZWxsKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCopIGNvbnN0OworICAgIGNvbnN0IEJvcmRlclZh
bHVlJiBib3JkZXJBZGpvaW5pbmdFbmRDZWxsKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCopIGNvbnN0
OworCiAgICAgY29uc3QgUmVuZGVyVGFibGVDZWxsKiBmaXJzdFJvd0NlbGxBZGpvaW5pbmdUYWJs
ZVN0YXJ0KCkgY29uc3Q7CiAgICAgY29uc3QgUmVuZGVyVGFibGVDZWxsKiBmaXJzdFJvd0NlbGxB
ZGpvaW5pbmdUYWJsZUVuZCgpIGNvbnN0OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164620</attachid>
            <date>2012-09-18 14:20:51 -0700</date>
            <delta_ts>2012-09-19 10:51:51 -0700</delta_ts>
            <desc>Proposed change 2. Forgot to update the column code too.</desc>
            <filename>bug-96710-20120918142018.patch</filename>
            <type>text/plain</type>
            <size>22458</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4OTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDM4NGRkZGVkNWIzMDg4
NjgzZjE0MjEwYTcyNzQzNzE5ODU2NTdlZi4uYWNlYzM1NjM3NmVjMmM0YTNhMmJkZDRiNmFiNDQ4
ZTZhZDg0NDZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTA5LTE4ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFRoZSBjb2xs
YXBzaW5nIGJvcmRlciBjb2RlIG5lZWRzIGRpcmVjdGlvbi1hd2FyZSBib3JkZXIgZ2V0dGVycwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY3MTAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHJlZmFj
dG9yaW5nIGlzIG5lZWRlZCB0byBleHRlbmQgb3VyIGNvbGxhcHNpbmcgYm9yZGVyIHN1cHBvcnQg
Zm9yIG1peGVkIGRpcmVjdGlvbmFsaXR5CisgICAgICAgIGF0IHRoZSB0YWJsZSBjZWxsIGxldmVs
ICh3ZSBjdXJyZW50bHkgd3JvbmdseSBpZ25vcmUgYW55IGRpcmVjdGlvbiBiZWxvdyB0aGUgcm93
LWdyb3VwKS4gRm9yCisgICAgICAgIG5vdywgdGhlIG5ldyBoZWxwZXJzIGFyZSBkdW1iIGFuZCBy
ZXR1cm4gZXhhY3RseSB0aGUgb2xkIHJlc3VsdCBidXQgdGhleSB3aWxsIGJlIG1hZGUKKyAgICAg
ICAgZGlyZWN0aW9uLWF3YXJlIGluIGEgZm9sbG93LXVwIGNoYW5nZS4KKworICAgICAgICBSZWZh
Y3RvcmluZyBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckJveC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpoYXNTYW1lRGlyZWN0
aW9uQXMpOgorICAgICAgICBBZGRlZCB0aGlzIGhlbHBlciBmdW5jdGlvbi4gRm9yIG5vdywgaXQn
cyBvbmx5IHVzZWQgdG8gY29tcGFyZSBhZ2FpbnN0CisgICAgICAgIHRoZSB0YWJsZSBkaXJlY3Rp
b24gYnV0IHdlIHdpbGwgcmV1c2UgaXQgdG8gY29tcGFyZSB0aGUgY3VycmVudCBjZWxsCisgICAg
ICAgIGRpcmVjdGlvbiBhZ2FpbnN0IHRoZSBvdGhlciB0YWJsZSBwYXJ0cy4KKworICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRh
YmxlQ2VsbDo6Y29tcHV0ZUNvbGxhcHNlZFN0YXJ0Qm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlQ2VsbDo6Y29tcHV0ZUNvbGxhcHNlZEVuZEJvcmRlcik6CisgICAgICAgIFRy
YW5zaXRpb25lZCB0aG9zZSAyIGZ1bmN0aW9ucyB0byB1c2luZyB0aGUgbmV3IGRpcmVjdGlvbi1h
d2FyZSBmdW5jdGlvbnMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OnRhYmxlU3RhcnRCb3JkZXJBZGpvaW5pbmdD
ZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjp0YWJsZUVuZEJvcmRlckFkam9p
bmluZ0NlbGwpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpmaXJzdFJvd0NlbGxBZGpvaW5p
bmdUYWJsZVN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6Zmly
c3RSb3dDZWxsQWRqb2luaW5nVGFibGVFbmQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
YWJsZUNlbGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6Ym9yZGVyQWRq
b2luaW5nVGFibGVTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmJv
cmRlckFkam9pbmluZ1RhYmxlRW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVT
ZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246OmJvcmRlckFk
am9pbmluZ1RhYmxlU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9u
Ojpib3JkZXJBZGpvaW5pbmdUYWJsZUVuZCk6CisgICAgICAgIFVwZGF0ZWQgdGhvc2UgY2FsbCBz
aXRlcyB0byB1c2UgUmVuZGVyQm94OjpoYXNTYW1lRGlyZWN0aW9uQXMuCisKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZUNlbGw6OmJvcmRlckFkam9pbmluZ05leHRDZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRhYmxlQ2VsbDo6Ym9yZGVyQWRqb2luaW5nUHJldmlvdXNDZWxsKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVD
b2w6OmJvcmRlckFkam9pbmluZ0NlbGxTdGFydEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUYWJsZUNvbDo6Ym9yZGVyQWRqb2luaW5nQ2VsbEVuZEJvcmRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUYWJsZUNvbDo6Ym9yZGVyQWRqb2luaW5nQ2VsbEJlZm9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNvbDo6Ym9yZGVyQWRqb2luaW5nQ2VsbEFmdGVyKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGFibGVSb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVSb3c6
OmJvcmRlckFkam9pbmluZ1N0YXJ0Q2VsbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZVJvdzo6Ym9yZGVyQWRqb2luaW5nRW5kQ2VsbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRhYmxlUm93Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVJvdzo6Ym9yZGVyQWRq
b2luaW5nVGFibGVTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVJvdzo6Ym9y
ZGVyQWRqb2luaW5nVGFibGVFbmQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNl
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpib3JkZXJB
ZGpvaW5pbmdTdGFydENlbGwpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9u
Ojpib3JkZXJBZGpvaW5pbmdFbmRDZWxsKToKKyAgICAgICAgTmV3IGRpcmVjdGlvbi1hd2FyZSBm
dW5jdGlvbnMuIEFkZGVkIHNvbWUgQVNTRVJUIHRvIGVuc3VyZQorICAgICAgICB3ZSBkb24ndCBj
YWxsIHRoZW0gd2l0aCB0aGUgd3JvbmcgcGFyYW1ldGVycy4KKwogMjAxMi0wOS0xOCAgQm8gTGl1
ICA8Ym9saXVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmVydCAxMjg3ODAsIDEyODY3Niwg
MTI4NjQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggNDBkZmUxNTM5MTU1
MzA0MmNjM2U1Mjc1MDc0MDcwNTdiOTgwZDcxYS4uOGI1ODBlMTEyYzMxY2EwNmI0NWVmZjMwMmZi
M2JiNjAwY2YyZDQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtNTQz
LDYgKzU0Myw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgYm9v
bCBoYXNTYW1lRGlyZWN0aW9uQXMoY29uc3QgUmVuZGVyQm94KiBvYmplY3QpIGNvbnN0IHsgcmV0
dXJuIHN0eWxlKCktPmRpcmVjdGlvbigpID09IG9iamVjdC0+c3R5bGUoKS0+ZGlyZWN0aW9uKCk7
IH0KKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAKaW5kZXggOWIyNDczMDZhZTY1
MjA5MDYxYTlkYTk0MzBkNDVlZGNlZTUwNGQ2Yi4uYmUwMDQ2NjExZjU1N2IyOTkzMTYwNzRkMzMw
NzkwOWE2OWVkNTExNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3Bw
CkBAIC0xMzE2LDcgKzEzMTYsNyBAQCBSZW5kZXJUYWJsZSogUmVuZGVyVGFibGU6OmNyZWF0ZUFu
b255bW91c1dpdGhQYXJlbnRSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QqCiBjb25zdCBCb3Jk
ZXJWYWx1ZSYgUmVuZGVyVGFibGU6OnRhYmxlU3RhcnRCb3JkZXJBZGpvaW5pbmdDZWxsKGNvbnN0
IFJlbmRlclRhYmxlQ2VsbCogY2VsbCkgY29uc3QKIHsKICAgICBBU1NFUlQoY2VsbC0+aXNGaXJz
dE9yTGFzdENlbGxJblJvdygpKTsKLSAgICBpZiAoY2VsbC0+c2VjdGlvbigpLT5oYXNTYW1lRGly
ZWN0aW9uQXNUYWJsZSgpKQorICAgIGlmIChoYXNTYW1lRGlyZWN0aW9uQXMoY2VsbC0+c2VjdGlv
bigpKSkKICAgICAgICAgcmV0dXJuIHN0eWxlKCktPmJvcmRlclN0YXJ0KCk7CiAKICAgICByZXR1
cm4gc3R5bGUoKS0+Ym9yZGVyRW5kKCk7CkBAIC0xMzI1LDcgKzEzMjUsNyBAQCBjb25zdCBCb3Jk
ZXJWYWx1ZSYgUmVuZGVyVGFibGU6OnRhYmxlU3RhcnRCb3JkZXJBZGpvaW5pbmdDZWxsKGNvbnN0
IFJlbmRlclRhYmxlQwogY29uc3QgQm9yZGVyVmFsdWUmIFJlbmRlclRhYmxlOjp0YWJsZUVuZEJv
cmRlckFkam9pbmluZ0NlbGwoY29uc3QgUmVuZGVyVGFibGVDZWxsKiBjZWxsKSBjb25zdAogewog
ICAgIEFTU0VSVChjZWxsLT5pc0ZpcnN0T3JMYXN0Q2VsbEluUm93KCkpOwotICAgIGlmIChjZWxs
LT5zZWN0aW9uKCktPmhhc1NhbWVEaXJlY3Rpb25Bc1RhYmxlKCkpCisgICAgaWYgKGhhc1NhbWVE
aXJlY3Rpb25BcyhjZWxsLT5zZWN0aW9uKCkpKQogICAgICAgICByZXR1cm4gc3R5bGUoKS0+Ym9y
ZGVyRW5kKCk7CiAKICAgICByZXR1cm4gc3R5bGUoKS0+Ym9yZGVyU3RhcnQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKaW5kZXggZTQ5YWMxMGFmMzhm
ODk5NmY4NWQyM2NlOWRhZTc1ODk0MjE5MGY4OC4uOGUwY2Q2ZWYyYWZkODAyNGZiMDE0Y2M5ZWU1
M2FlYWVlNjAyNTIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q2VsbC5jcHAKQEAgLTQyMiwxOCArNDIyLDE4IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRl
clRhYmxlQ2VsbDo6Y29tcHV0ZUNvbGxhcHNlZFN0YXJ0Qm9yZGVyKEluY2x1ZGVCb3JkZXJDCiAK
ICAgICAvLyAoMikgVGhlIGVuZCBib3JkZXIgb2YgdGhlIHByZWNlZGluZyBjZWxsLgogICAgIGlm
IChSZW5kZXJUYWJsZUNlbGwqIHByZXZDZWxsID0gdGFibGUtPmNlbGxCZWZvcmUodGhpcykpIHsK
LSAgICAgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgcHJldkNlbGxCb3JkZXIgPSBDb2xsYXBzZWRC
b3JkZXJWYWx1ZShwcmV2Q2VsbC0+c3R5bGUoKS0+Ym9yZGVyRW5kKCksIGluY2x1ZGVDb2xvciA/
IHByZXZDZWxsLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoZW5kQ29sb3JQcm9wZXJ0
eSkgOiBDb2xvcigpLCBCQ0VMTCk7CisgICAgICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIHByZXZD
ZWxsQm9yZGVyID0gQ29sbGFwc2VkQm9yZGVyVmFsdWUocHJldkNlbGwtPmJvcmRlckFkam9pbmlu
Z0NlbGxBZnRlcih0aGlzKSwgaW5jbHVkZUNvbG9yID8gcHJldkNlbGwtPnN0eWxlKCktPnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihlbmRDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJDRUxMKTsKICAg
ICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHByZXZDZWxsQm9yZGVyLCByZXN1bHQpOwogICAg
ICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfSBlbHNlIGlmIChpc1N0YXJ0Q29sdW1uKSB7CiAgICAgICAgIC8vICgzKSBPdXIgcm93J3Mg
c3RhcnQgYm9yZGVyLgotICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xs
YXBzZWRCb3JkZXJWYWx1ZShwYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyU3RhcnQoKSwgaW5jbHVk
ZUNvbG9yID8gcGFyZW50KCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdGFydENv
bG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQlJPVykpOworICAgICAgICByZXN1bHQgPSBjaG9vc2VC
b3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShyb3coKS0+Ym9yZGVyQWRqb2luaW5n
U3RhcnRDZWxsKHRoaXMpLCBpbmNsdWRlQ29sb3IgPyBwYXJlbnQoKS0+c3R5bGUoKS0+dmlzaXRl
ZERlcGVuZGVudENvbG9yKHN0YXJ0Q29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCUk9XKSk7CiAg
ICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
LSAgICAgICAgCisKICAgICAgICAgLy8gKDQpIE91ciByb3cgZ3JvdXAncyBzdGFydCBib3JkZXIu
Ci0gICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZh
bHVlKHNlY3Rpb24oKS0+c3R5bGUoKS0+Ym9yZGVyU3RhcnQoKSwgaW5jbHVkZUNvbG9yID8gc2Vj
dGlvbigpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3RhcnRDb2xvclByb3BlcnR5
KSA6IENvbG9yKCksIEJST1dHUk9VUCkpOworICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIo
cmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShzZWN0aW9uKCktPmJvcmRlckFkam9pbmluZ1N0
YXJ0Q2VsbCh0aGlzKSwgaW5jbHVkZUNvbG9yID8gc2VjdGlvbigpLT5zdHlsZSgpLT52aXNpdGVk
RGVwZW5kZW50Q29sb3Ioc3RhcnRDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJST1dHUk9VUCkp
OwogICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQpAQCAtNDQzLDExICs0NDMsMTEgQEAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgUmVu
ZGVyVGFibGVDZWxsOjpjb21wdXRlQ29sbGFwc2VkU3RhcnRCb3JkZXIoSW5jbHVkZUJvcmRlckMK
ICAgICBib29sIGVuZENvbEVkZ2U7CiAgICAgUmVuZGVyVGFibGVDb2wqIGNvbEVsdCA9IHRhYmxl
LT5jb2xFbGVtZW50KGNvbCgpLCAmc3RhcnRDb2xFZGdlLCAmZW5kQ29sRWRnZSk7CiAgICAgaWYg
KGNvbEVsdCAmJiBzdGFydENvbEVkZ2UpIHsKLSAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVy
KHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoY29sRWx0LT5zdHlsZSgpLT5ib3JkZXJTdGFy
dCgpLCBpbmNsdWRlQ29sb3IgPyBjb2xFbHQtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xv
cihzdGFydENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQkNPTCkpOworICAgICAgICByZXN1bHQg
PSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShjb2xFbHQtPmJvcmRl
ckFkam9pbmluZ0NlbGxTdGFydEJvcmRlcih0aGlzKSwgaW5jbHVkZUNvbG9yID8gY29sRWx0LT5z
dHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3RhcnRDb2xvclByb3BlcnR5KSA6IENvbG9y
KCksIEJDT0wpKTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgICAgICBpZiAoUmVuZGVyVGFibGVDb2wqIGVuY2xvc2luZ0NvbHVt
bkdyb3VwID0gY29sRWx0LT5lbmNsb3NpbmdDb2x1bW5Hcm91cElmQWRqYWNlbnRCZWZvcmUoKSkg
ewotICAgICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9y
ZGVyVmFsdWUoZW5jbG9zaW5nQ29sdW1uR3JvdXAtPnN0eWxlKCktPmJvcmRlclN0YXJ0KCksIGlu
Y2x1ZGVDb2xvciA/IGVuY2xvc2luZ0NvbHVtbkdyb3VwLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5k
ZW50Q29sb3Ioc3RhcnRDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJDT0xHUk9VUCkpOworICAg
ICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFs
dWUoZW5jbG9zaW5nQ29sdW1uR3JvdXAtPmJvcmRlckFkam9pbmluZ0NlbGxTdGFydEJvcmRlcih0
aGlzKSwgaW5jbHVkZUNvbG9yID8gZW5jbG9zaW5nQ29sdW1uR3JvdXAtPnN0eWxlKCktPnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihzdGFydENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQkNPTEdST1VQ
KSk7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgICAgICB9CkBAIC00NTcsNyArNDU3LDcgQEAgQ29sbGFwc2VkQm9y
ZGVyVmFsdWUgUmVuZGVyVGFibGVDZWxsOjpjb21wdXRlQ29sbGFwc2VkU3RhcnRCb3JkZXIoSW5j
bHVkZUJvcmRlckMKICAgICBpZiAoIWlzU3RhcnRDb2x1bW4pIHsKICAgICAgICAgY29sRWx0ID0g
dGFibGUtPmNvbEVsZW1lbnQoY29sKCkgLTEsICZzdGFydENvbEVkZ2UsICZlbmRDb2xFZGdlKTsK
ICAgICAgICAgaWYgKGNvbEVsdCAmJiBlbmRDb2xFZGdlKSB7Ci0gICAgICAgICAgICBDb2xsYXBz
ZWRCb3JkZXJWYWx1ZSBlbmRCb3JkZXIgPSBDb2xsYXBzZWRCb3JkZXJWYWx1ZShjb2xFbHQtPnN0
eWxlKCktPmJvcmRlckVuZCgpLCBpbmNsdWRlQ29sb3IgPyBjb2xFbHQtPnN0eWxlKCktPnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihlbmRDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJDT0wpOworICAg
ICAgICAgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgZW5kQm9yZGVyID0gQ29sbGFwc2VkQm9yZGVy
VmFsdWUoY29sRWx0LT5ib3JkZXJBZGpvaW5pbmdDZWxsQWZ0ZXIodGhpcyksIGluY2x1ZGVDb2xv
ciA/IGNvbEVsdC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGVuZENvbG9yUHJvcGVy
dHkpIDogQ29sb3IoKSwgQkNPTCk7CiAgICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIo
ZW5kQm9yZGVyLCByZXN1bHQpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTQ5NSwxOSArNDk1LDE5IEBAIENvbGxh
cHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29tcHV0ZUNvbGxhcHNlZEVuZEJvcmRl
cihJbmNsdWRlQm9yZGVyQ29sCiAgICAgaWYgKCFpc0VuZENvbHVtbikgewogICAgICAgICBSZW5k
ZXJUYWJsZUNlbGwqIG5leHRDZWxsID0gdGFibGUtPmNlbGxBZnRlcih0aGlzKTsKICAgICAgICAg
aWYgKG5leHRDZWxsICYmIG5leHRDZWxsLT5zdHlsZSgpKSB7Ci0gICAgICAgICAgICBDb2xsYXBz
ZWRCb3JkZXJWYWx1ZSBzdGFydEJvcmRlciA9IENvbGxhcHNlZEJvcmRlclZhbHVlKG5leHRDZWxs
LT5zdHlsZSgpLT5ib3JkZXJTdGFydCgpLCBpbmNsdWRlQ29sb3IgPyBuZXh0Q2VsbC0+c3R5bGUo
KS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHN0YXJ0Q29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBC
Q0VMTCk7CisgICAgICAgICAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBzdGFydEJvcmRlciA9IENv
bGxhcHNlZEJvcmRlclZhbHVlKG5leHRDZWxsLT5ib3JkZXJBZGpvaW5pbmdDZWxsQmVmb3JlKHRo
aXMpLCBpbmNsdWRlQ29sb3IgPyBuZXh0Q2VsbC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENv
bG9yKHN0YXJ0Q29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCQ0VMTCk7CiAgICAgICAgICAgICBy
ZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBzdGFydEJvcmRlcik7CiAgICAgICAgICAgICBp
ZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
ICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gKDMpIE91ciByb3cncyBlbmQgYm9yZGVy
LgotICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJW
YWx1ZShwYXJlbnQoKS0+c3R5bGUoKS0+Ym9yZGVyRW5kKCksIGluY2x1ZGVDb2xvciA/IHBhcmVu
dCgpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoZW5kQ29sb3JQcm9wZXJ0eSkgOiBD
b2xvcigpLCBCUk9XKSk7CisgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENv
bGxhcHNlZEJvcmRlclZhbHVlKHJvdygpLT5ib3JkZXJBZGpvaW5pbmdFbmRDZWxsKHRoaXMpLCBp
bmNsdWRlQ29sb3IgPyBwYXJlbnQoKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGVu
ZENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQlJPVykpOwogICAgICAgICBpZiAoIXJlc3VsdC5l
eGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIAogICAgICAgICAv
LyAoNCkgT3VyIHJvdyBncm91cCdzIGVuZCBib3JkZXIuCi0gICAgICAgIHJlc3VsdCA9IGNob29z
ZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKHNlY3Rpb24oKS0+c3R5bGUoKS0+
Ym9yZGVyRW5kKCksIGluY2x1ZGVDb2xvciA/IHNlY3Rpb24oKS0+c3R5bGUoKS0+dmlzaXRlZERl
cGVuZGVudENvbG9yKGVuZENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQlJPV0dST1VQKSk7Cisg
ICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVl
KHNlY3Rpb24oKS0+Ym9yZGVyQWRqb2luaW5nRW5kQ2VsbCh0aGlzKSwgaW5jbHVkZUNvbG9yID8g
c2VjdGlvbigpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoZW5kQ29sb3JQcm9wZXJ0
eSkgOiBDb2xvcigpLCBCUk9XR1JPVVApKTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkp
CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTUxNywxMSArNTE3LDExIEBA
IENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29tcHV0ZUNvbGxhcHNlZEVu
ZEJvcmRlcihJbmNsdWRlQm9yZGVyQ29sCiAgICAgYm9vbCBlbmRDb2xFZGdlOwogICAgIFJlbmRl
clRhYmxlQ29sKiBjb2xFbHQgPSB0YWJsZS0+Y29sRWxlbWVudChjb2woKSArIGNvbFNwYW4oKSAt
IDEsICZzdGFydENvbEVkZ2UsICZlbmRDb2xFZGdlKTsKICAgICBpZiAoY29sRWx0ICYmIGVuZENv
bEVkZ2UpIHsKLSAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2Vk
Qm9yZGVyVmFsdWUoY29sRWx0LT5zdHlsZSgpLT5ib3JkZXJFbmQoKSwgaW5jbHVkZUNvbG9yID8g
Y29sRWx0LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoZW5kQ29sb3JQcm9wZXJ0eSkg
OiBDb2xvcigpLCBCQ09MKSk7CisgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQs
IENvbGxhcHNlZEJvcmRlclZhbHVlKGNvbEVsdC0+Ym9yZGVyQWRqb2luaW5nQ2VsbEVuZEJvcmRl
cih0aGlzKSwgaW5jbHVkZUNvbG9yID8gY29sRWx0LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50
Q29sb3IoZW5kQ29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCQ09MKSk7CiAgICAgICAgIGlmICgh
cmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgaWYg
KFJlbmRlclRhYmxlQ29sKiBlbmNsb3NpbmdDb2x1bW5Hcm91cCA9IGNvbEVsdC0+ZW5jbG9zaW5n
Q29sdW1uR3JvdXBJZkFkamFjZW50QWZ0ZXIoKSkgewotICAgICAgICAgICAgcmVzdWx0ID0gY2hv
b3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoZW5jbG9zaW5nQ29sdW1uR3Jv
dXAtPnN0eWxlKCktPmJvcmRlckVuZCgpLCBpbmNsdWRlQ29sb3IgPyBlbmNsb3NpbmdDb2x1bW5H
cm91cC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGVuZENvbG9yUHJvcGVydHkpIDog
Q29sb3IoKSwgQkNPTEdST1VQKSk7CisgICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIo
cmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShlbmNsb3NpbmdDb2x1bW5Hcm91cC0+Ym9yZGVy
QWRqb2luaW5nQ2VsbEVuZEJvcmRlcih0aGlzKSwgaW5jbHVkZUNvbG9yID8gZW5jbG9zaW5nQ29s
dW1uR3JvdXAtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihlbmRDb2xvclByb3BlcnR5
KSA6IENvbG9yKCksIEJDT0xHUk9VUCkpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3Rz
KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQpAQCAtNTMxLDcg
KzUzMSw3IEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29tcHV0ZUNv
bGxhcHNlZEVuZEJvcmRlcihJbmNsdWRlQm9yZGVyQ29sCiAgICAgaWYgKCFpc0VuZENvbHVtbikg
ewogICAgICAgICBjb2xFbHQgPSB0YWJsZS0+Y29sRWxlbWVudChjb2woKSArIGNvbFNwYW4oKSwg
JnN0YXJ0Q29sRWRnZSwgJmVuZENvbEVkZ2UpOwogICAgICAgICBpZiAoY29sRWx0ICYmIHN0YXJ0
Q29sRWRnZSkgewotICAgICAgICAgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgc3RhcnRCb3JkZXIg
PSBDb2xsYXBzZWRCb3JkZXJWYWx1ZShjb2xFbHQtPnN0eWxlKCktPmJvcmRlclN0YXJ0KCksIGlu
Y2x1ZGVDb2xvciA/IGNvbEVsdC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHN0YXJ0
Q29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCQ09MKTsKKyAgICAgICAgICAgIENvbGxhcHNlZEJv
cmRlclZhbHVlIHN0YXJ0Qm9yZGVyID0gQ29sbGFwc2VkQm9yZGVyVmFsdWUoY29sRWx0LT5ib3Jk
ZXJBZGpvaW5pbmdDZWxsQmVmb3JlKHRoaXMpLCBpbmNsdWRlQ29sb3IgPyBjb2xFbHQtPnN0eWxl
KCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdGFydENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwg
QkNPTCk7CiAgICAgICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBzdGFydEJv
cmRlcik7CiAgICAgICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlQ2VsbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2Vs
bC5oCmluZGV4IGYwY2IzM2U1MWNhNTgwZDI1NjBkZTMwMGUzZDc0NmMwMTUyMzU5NGEuLjcxM2Yy
YzBhYTAzNDdkNTA1YWVmZGJlYTllMWM3MTM3OWJmNWI0ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKQEAgLTE0NCw3ICsxNDQsNyBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRlckFkam9pbmluZ1RhYmxlU3RhcnQoKSBjb25zdAog
ICAgIHsKICAgICAgICAgQVNTRVJUKGlzRmlyc3RPckxhc3RDZWxsSW5Sb3coKSk7Ci0gICAgICAg
IGlmIChzZWN0aW9uKCktPmhhc1NhbWVEaXJlY3Rpb25Bc1RhYmxlKCkpCisgICAgICAgIGlmIChz
ZWN0aW9uKCktPmhhc1NhbWVEaXJlY3Rpb25Bcyh0YWJsZSgpKSkKICAgICAgICAgICAgIHJldHVy
biBzdHlsZSgpLT5ib3JkZXJTdGFydCgpOwogCiAgICAgICAgIHJldHVybiBzdHlsZSgpLT5ib3Jk
ZXJFbmQoKTsKQEAgLTE1MywxMiArMTUzLDI2IEBAIHB1YmxpYzoKICAgICBjb25zdCBCb3JkZXJW
YWx1ZSYgYm9yZGVyQWRqb2luaW5nVGFibGVFbmQoKSBjb25zdAogICAgIHsKICAgICAgICAgQVNT
RVJUKGlzRmlyc3RPckxhc3RDZWxsSW5Sb3coKSk7Ci0gICAgICAgIGlmIChzZWN0aW9uKCktPmhh
c1NhbWVEaXJlY3Rpb25Bc1RhYmxlKCkpCisgICAgICAgIGlmIChzZWN0aW9uKCktPmhhc1NhbWVE
aXJlY3Rpb25Bcyh0YWJsZSgpKSkKICAgICAgICAgICAgIHJldHVybiBzdHlsZSgpLT5ib3JkZXJF
bmQoKTsKIAogICAgICAgICByZXR1cm4gc3R5bGUoKS0+Ym9yZGVyU3RhcnQoKTsKICAgICB9CiAK
KyAgICBjb25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVyQWRqb2luaW5nQ2VsbEJlZm9yZShjb25zdCBS
ZW5kZXJUYWJsZUNlbGwqIGNlbGwpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGNlbGws
IHRhYmxlKCktPmNlbGxBZnRlcihjZWxsKSA9PSB0aGlzKTsKKyAgICAgICAgLy8gRklYTUU6IGh0
dHBzOi8vd2Via2l0Lm9yZy9iLzc5MjcyIC0gQWRkIHN1cHBvcnQgZm9yIG1peGVkIGRpcmVjdGlv
bmFsaXR5IGF0IHRoZSBjZWxsIGxldmVsLgorICAgICAgICByZXR1cm4gc3R5bGUoKS0+Ym9yZGVy
U3RhcnQoKTsKKyAgICB9CisKKyAgICBjb25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVyQWRqb2luaW5n
Q2VsbEFmdGVyKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCogY2VsbCkKKyAgICB7CisgICAgICAgIEFT
U0VSVF9VTlVTRUQoY2VsbCwgdGFibGUoKS0+Y2VsbEJlZm9yZShjZWxsKSA9PSB0aGlzKTsKKyAg
ICAgICAgLy8gRklYTUU6IGh0dHBzOi8vd2Via2l0Lm9yZy9iLzc5MjcyIC0gQWRkIHN1cHBvcnQg
Zm9yIG1peGVkIGRpcmVjdGlvbmFsaXR5IGF0IHRoZSBjZWxsIGxldmVsLgorICAgICAgICByZXR1
cm4gc3R5bGUoKS0+Ym9yZGVyRW5kKCk7CisgICAgfQorCiAjaWZuZGVmIE5ERUJVRwogICAgIGJv
b2wgaXNGaXJzdE9yTGFzdENlbGxJblJvdygpIGNvbnN0CiAgICAgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHAKaW5kZXggN2M1ZTllZDEwY2Y1NTA5ZWZiMDEx
ZDg4Y2JlYTBkMGUwM2EwMzZjNC4uNGU5OGRhNzFiNjcxNzVjNDA3YmQ5NjFiODQ4YWQ3ZTUyMDg5
MDNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29s
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwCkBA
IC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFRh
YmxlQ29sRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclRhYmxlLmgiCisjaW5jbHVkZSAiUmVu
ZGVyVGFibGVDZWxsLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTYyLDQgKzE2Mywy
NiBAQCBSZW5kZXJUYWJsZUNvbCogUmVuZGVyVGFibGVDb2w6Om5leHRDb2x1bW4oKSBjb25zdAog
ICAgIHJldHVybiB0b1JlbmRlclRhYmxlQ29sKG5leHQpOwogfQogCitjb25zdCBCb3JkZXJWYWx1
ZSYgUmVuZGVyVGFibGVDb2w6OmJvcmRlckFkam9pbmluZ0NlbGxTdGFydEJvcmRlcihjb25zdCBS
ZW5kZXJUYWJsZUNlbGwqIGNlbGwpIGNvbnN0Cit7CisgICAgcmV0dXJuIHN0eWxlKCktPmJvcmRl
clN0YXJ0KCk7Cit9CisKK2NvbnN0IEJvcmRlclZhbHVlJiBSZW5kZXJUYWJsZUNvbDo6Ym9yZGVy
QWRqb2luaW5nQ2VsbEVuZEJvcmRlcihjb25zdCBSZW5kZXJUYWJsZUNlbGwqIGNlbGwpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHN0eWxlKCktPmJvcmRlckVuZCgpOworfQorCitjb25zdCBCb3JkZXJW
YWx1ZSYgUmVuZGVyVGFibGVDb2w6OmJvcmRlckFkam9pbmluZ0NlbGxCZWZvcmUoY29uc3QgUmVu
ZGVyVGFibGVDZWxsKiBjZWxsKSBjb25zdAoreworICAgIEFTU0VSVF9VTlVTRUQoY2VsbCwgdGFi
bGUoKS0+Y29sRWxlbWVudChjZWxsLT5jb2woKSArIGNlbGwtPmNvbFNwYW4oKSkgPT0gdGhpcyk7
CisgICAgcmV0dXJuIHN0eWxlKCktPmJvcmRlclN0YXJ0KCk7Cit9CisKK2NvbnN0IEJvcmRlclZh
bHVlJiBSZW5kZXJUYWJsZUNvbDo6Ym9yZGVyQWRqb2luaW5nQ2VsbEFmdGVyKGNvbnN0IFJlbmRl
clRhYmxlQ2VsbCogY2VsbCkgY29uc3QKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGNlbGwsIHRhYmxl
KCktPmNvbEVsZW1lbnQoY2VsbC0+Y29sKCkgLSAxKSA9PSB0aGlzKTsKKyAgICByZXR1cm4gc3R5
bGUoKS0+Ym9yZGVyRW5kKCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZUNvbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlQ29sLmgKaW5kZXggODg3YWZkNmM4NWEwYzVhODY1ZmEzYjE1MzZiMWUwZmM0MDM0M2Uz
OS4uNjFmOGZhMzQ2MmM0Y2UwYWMzZjExNjUxMmExYTJlZmJhN2RjNTRkOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVuZGVyVGFibGU7CitjbGFzcyBSZW5kZXJUYWJsZUNl
bGw7CiAKIGNsYXNzIFJlbmRlclRhYmxlQ29sIDogcHVibGljIFJlbmRlckJveCB7CiBwdWJsaWM6
CkBAIC02Nyw2ICs2OCwxMSBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0aGUgbmV4dCBjb2x1
bW4gb3IgY29sdW1uLWdyb3VwLgogICAgIFJlbmRlclRhYmxlQ29sKiBuZXh0Q29sdW1uKCkgY29u
c3Q7CiAKKyAgICBjb25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVyQWRqb2luaW5nQ2VsbFN0YXJ0Qm9y
ZGVyKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCopIGNvbnN0OworICAgIGNvbnN0IEJvcmRlclZhbHVl
JiBib3JkZXJBZGpvaW5pbmdDZWxsRW5kQm9yZGVyKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCopIGNv
bnN0OworICAgIGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJBZGpvaW5pbmdDZWxsQmVmb3JlKGNv
bnN0IFJlbmRlclRhYmxlQ2VsbCopIGNvbnN0OworICAgIGNvbnN0IEJvcmRlclZhbHVlJiBib3Jk
ZXJBZGpvaW5pbmdDZWxsQWZ0ZXIoY29uc3QgUmVuZGVyVGFibGVDZWxsKikgY29uc3Q7CisKIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIHZpcnR1YWxDaGlsZHJl
bigpIHsgcmV0dXJuIGNoaWxkcmVuKCk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVj
dENoaWxkTGlzdCogdmlydHVhbENoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gY2hpbGRyZW4oKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAKaW5kZXggMmI4
M2ZhYTVhNDg2OTZhNWIzN2MyMjE5ZTMyNjUwMTE2MDU0NDcyZi4uMWYyYmQwNjg5YTE1MTQwYzlm
MDgxYTlhMzQ2MjJlNDRjYzk0NGRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRhYmxlUm93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVSb3cuY3BwCkBAIC04Miw2ICs4MiwyMCBAQCB2b2lkIFJlbmRlclRhYmxlUm93Ojpz
dHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9s
ZAogICAgIH0KIH0KIAorY29uc3QgQm9yZGVyVmFsdWUmIFJlbmRlclRhYmxlUm93Ojpib3JkZXJB
ZGpvaW5pbmdTdGFydENlbGwoY29uc3QgUmVuZGVyVGFibGVDZWxsKiBjZWxsKSBjb25zdAorewor
ICAgIEFTU0VSVF9VTlVTRUQoY2VsbCwgIXRhYmxlKCktPmNlbGxCZWZvcmUoY2VsbCkpOworICAg
IC8vIEZJWE1FOiBodHRwczovL3dlYmtpdC5vcmcvYi83OTI3MiAtIEFkZCBzdXBwb3J0IGZvciBt
aXhlZCBkaXJlY3Rpb25hbGl0eSBhdCB0aGUgY2VsbCBsZXZlbC4KKyAgICByZXR1cm4gc3R5bGUo
KS0+Ym9yZGVyU3RhcnQoKTsKK30KKworY29uc3QgQm9yZGVyVmFsdWUmIFJlbmRlclRhYmxlUm93
Ojpib3JkZXJBZGpvaW5pbmdFbmRDZWxsKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCogY2VsbCkgY29u
c3QKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGNlbGwsICF0YWJsZSgpLT5jZWxsQWZ0ZXIoY2VsbCkp
OworICAgIC8vIEZJWE1FOiBodHRwczovL3dlYmtpdC5vcmcvYi83OTI3MiAtIEFkZCBzdXBwb3J0
IGZvciBtaXhlZCBkaXJlY3Rpb25hbGl0eSBhdCB0aGUgY2VsbCBsZXZlbC4KKyAgICByZXR1cm4g
c3R5bGUoKS0+Ym9yZGVyRW5kKCk7Cit9CisKIHZvaWQgUmVuZGVyVGFibGVSb3c6OmFkZENoaWxk
KFJlbmRlck9iamVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpCiB7CiAgICAg
Ly8gTWFrZSBzdXJlIHdlIGRvbid0IGFwcGVuZCB0aGluZ3MgYWZ0ZXIgOmFmdGVyLWdlbmVyYXRl
ZCBjb250ZW50IGlmIHdlIGhhdmUgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
YWJsZVJvdy5oCmluZGV4IDAxMzZjNThhMmYyYTQ0MjRhYWQ5OWU2YzQ0Njc3YTdkYmZkNjI0MTcu
LjEyZjgzM2JhZjBmMDY1NzA1MjhiNzdlYjY5NGIxNjQ1NzY5M2Q4Y2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoK
IAogICAgIGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJBZGpvaW5pbmdUYWJsZVN0YXJ0KCkgY29u
c3QKICAgICB7Ci0gICAgICAgIGlmIChzZWN0aW9uKCktPmhhc1NhbWVEaXJlY3Rpb25Bc1RhYmxl
KCkpCisgICAgICAgIGlmIChzZWN0aW9uKCktPmhhc1NhbWVEaXJlY3Rpb25Bcyh0YWJsZSgpKSkK
ICAgICAgICAgICAgIHJldHVybiBzdHlsZSgpLT5ib3JkZXJTdGFydCgpOwogCiAgICAgICAgIHJl
dHVybiBzdHlsZSgpLT5ib3JkZXJFbmQoKTsKQEAgLTc2LDEyICs3NiwxNSBAQCBwdWJsaWM6CiAK
ICAgICBjb25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVyQWRqb2luaW5nVGFibGVFbmQoKSBjb25zdAog
ICAgIHsKLSAgICAgICAgaWYgKHNlY3Rpb24oKS0+aGFzU2FtZURpcmVjdGlvbkFzVGFibGUoKSkK
KyAgICAgICAgaWYgKHNlY3Rpb24oKS0+aGFzU2FtZURpcmVjdGlvbkFzKHRhYmxlKCkpKQogICAg
ICAgICAgICAgcmV0dXJuIHN0eWxlKCktPmJvcmRlckVuZCgpOwogCiAgICAgICAgIHJldHVybiBz
dHlsZSgpLT5ib3JkZXJTdGFydCgpOwogICAgIH0KIAorICAgIGNvbnN0IEJvcmRlclZhbHVlJiBi
b3JkZXJBZGpvaW5pbmdTdGFydENlbGwoY29uc3QgUmVuZGVyVGFibGVDZWxsKikgY29uc3Q7Cisg
ICAgY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRlckFkam9pbmluZ0VuZENlbGwoY29uc3QgUmVuZGVy
VGFibGVDZWxsKikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3RD
aGlsZExpc3QqIHZpcnR1YWxDaGlsZHJlbigpIHsgcmV0dXJuIGNoaWxkcmVuKCk7IH0KICAgICB2
aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdENoaWxkTGlzdCogdmlydHVhbENoaWxkcmVuKCkgY29u
c3QgeyByZXR1cm4gY2hpbGRyZW4oKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVTZWN0aW9uLmNwcAppbmRleCA4ZjA4NDc3OWE5ZDE5ZTRjYTI4Y2NlYzVlZWUy
NTc5MWJjM2U0ZGY2Li5lYjY5NDg5MjE2OTMyZjg4MTJkMzcxNWY5ZWM1MWNmMTU1MTU0YmE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcApA
QCAtMTMxNywxNSArMTMxNywyOSBAQCB1bnNpZ25lZCBSZW5kZXJUYWJsZVNlY3Rpb246Om51bUNv
bHVtbnMoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQgKyAxOwogfQogCitjb25zdCBCb3JkZXJW
YWx1ZSYgUmVuZGVyVGFibGVTZWN0aW9uOjpib3JkZXJBZGpvaW5pbmdTdGFydENlbGwoY29uc3Qg
UmVuZGVyVGFibGVDZWxsKiBjZWxsKSBjb25zdAoreworICAgIEFTU0VSVF9VTlVTRUQoY2VsbCwg
IXRhYmxlKCktPmNlbGxCZWZvcmUoY2VsbCkpOworICAgIC8vIEZJWE1FOiBodHRwczovL3dlYmtp
dC5vcmcvYi83OTI3MiAtIEFkZCBzdXBwb3J0IGZvciBtaXhlZCBkaXJlY3Rpb25hbGl0eSBhdCB0
aGUgY2VsbCBsZXZlbC4KKyAgICByZXR1cm4gc3R5bGUoKS0+Ym9yZGVyU3RhcnQoKTsKK30KKwor
Y29uc3QgQm9yZGVyVmFsdWUmIFJlbmRlclRhYmxlU2VjdGlvbjo6Ym9yZGVyQWRqb2luaW5nRW5k
Q2VsbChjb25zdCBSZW5kZXJUYWJsZUNlbGwqIGNlbGwpIGNvbnN0Cit7CisgICAgQVNTRVJUX1VO
VVNFRChjZWxsLCAhdGFibGUoKS0+Y2VsbEFmdGVyKGNlbGwpKTsKKyAgICAvLyBGSVhNRTogaHR0
cHM6Ly93ZWJraXQub3JnL2IvNzkyNzIgLSBBZGQgc3VwcG9ydCBmb3IgbWl4ZWQgZGlyZWN0aW9u
YWxpdHkgYXQgdGhlIGNlbGwgbGV2ZWwuCisgICAgcmV0dXJuIHN0eWxlKCktPmJvcmRlckVuZCgp
OworfQorCiBjb25zdCBSZW5kZXJUYWJsZUNlbGwqIFJlbmRlclRhYmxlU2VjdGlvbjo6Zmlyc3RS
b3dDZWxsQWRqb2luaW5nVGFibGVTdGFydCgpIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgYWRqb2lu
aW5nU3RhcnRDZWxsQ29sdW1uSW5kZXggPSBoYXNTYW1lRGlyZWN0aW9uQXNUYWJsZSgpID8gMCA6
IHRhYmxlKCktPmxhc3RDb2x1bW5JbmRleCgpOworICAgIHVuc2lnbmVkIGFkam9pbmluZ1N0YXJ0
Q2VsbENvbHVtbkluZGV4ID0gaGFzU2FtZURpcmVjdGlvbkFzKHRhYmxlKCkpID8gMCA6IHRhYmxl
KCktPmxhc3RDb2x1bW5JbmRleCgpOwogICAgIHJldHVybiBjZWxsQXQoMCwgYWRqb2luaW5nU3Rh
cnRDZWxsQ29sdW1uSW5kZXgpLnByaW1hcnlDZWxsKCk7CiB9CiAKIGNvbnN0IFJlbmRlclRhYmxl
Q2VsbCogUmVuZGVyVGFibGVTZWN0aW9uOjpmaXJzdFJvd0NlbGxBZGpvaW5pbmdUYWJsZUVuZCgp
IGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgYWRqb2luaW5nRW5kQ2VsbENvbHVtbkluZGV4ID0gaGFz
U2FtZURpcmVjdGlvbkFzVGFibGUoKSA/IHRhYmxlKCktPmxhc3RDb2x1bW5JbmRleCgpIDogMDsK
KyAgICB1bnNpZ25lZCBhZGpvaW5pbmdFbmRDZWxsQ29sdW1uSW5kZXggPSBoYXNTYW1lRGlyZWN0
aW9uQXModGFibGUoKSkgPyB0YWJsZSgpLT5sYXN0Q29sdW1uSW5kZXgoKSA6IDA7CiAgICAgcmV0
dXJuIGNlbGxBdCgwLCBhZGpvaW5pbmdFbmRDZWxsQ29sdW1uSW5kZXgpLnByaW1hcnlDZWxsKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNl
Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaApp
bmRleCA3MDU0OTM4ZTk3N2QwYTFjOGNlYTY3NmY5ZTMyMTc5MTc1Zjg1ZGU5Li5jZTIxYTllZjEy
OTcyZGNiZmRjNDBhMmJkZmY1MmM2YjM5OWQ4N2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5oCkBAIC0xMTcsMTQgKzExNyw5IEBAIHB1YmxpYzoK
ICAgICAgICAgTGVuZ3RoIGxvZ2ljYWxIZWlnaHQ7CiAgICAgfTsKIAotICAgIGJvb2wgaGFzU2Ft
ZURpcmVjdGlvbkFzVGFibGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlKCkt
PnN0eWxlKCktPmRpcmVjdGlvbigpID09IHN0eWxlKCktPmRpcmVjdGlvbigpOwotICAgIH0KLQog
ICAgIGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJBZGpvaW5pbmdUYWJsZVN0YXJ0KCkgY29uc3QK
ICAgICB7Ci0gICAgICAgIGlmIChoYXNTYW1lRGlyZWN0aW9uQXNUYWJsZSgpKQorICAgICAgICBp
ZiAoaGFzU2FtZURpcmVjdGlvbkFzKHRhYmxlKCkpKQogICAgICAgICAgICAgcmV0dXJuIHN0eWxl
KCktPmJvcmRlclN0YXJ0KCk7CiAKICAgICAgICAgcmV0dXJuIHN0eWxlKCktPmJvcmRlckVuZCgp
OwpAQCAtMTMyLDEyICsxMjcsMTUgQEAgcHVibGljOgogCiAgICAgY29uc3QgQm9yZGVyVmFsdWUm
IGJvcmRlckFkam9pbmluZ1RhYmxlRW5kKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChoYXNT
YW1lRGlyZWN0aW9uQXNUYWJsZSgpKQorICAgICAgICBpZiAoaGFzU2FtZURpcmVjdGlvbkFzKHRh
YmxlKCkpKQogICAgICAgICAgICAgcmV0dXJuIHN0eWxlKCktPmJvcmRlckVuZCgpOwogCiAgICAg
ICAgIHJldHVybiBzdHlsZSgpLT5ib3JkZXJTdGFydCgpOwogICAgIH0KIAorICAgIGNvbnN0IEJv
cmRlclZhbHVlJiBib3JkZXJBZGpvaW5pbmdTdGFydENlbGwoY29uc3QgUmVuZGVyVGFibGVDZWxs
KikgY29uc3Q7CisgICAgY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRlckFkam9pbmluZ0VuZENlbGwo
Y29uc3QgUmVuZGVyVGFibGVDZWxsKikgY29uc3Q7CisKICAgICBjb25zdCBSZW5kZXJUYWJsZUNl
bGwqIGZpcnN0Um93Q2VsbEFkam9pbmluZ1RhYmxlU3RhcnQoKSBjb25zdDsKICAgICBjb25zdCBS
ZW5kZXJUYWJsZUNlbGwqIGZpcnN0Um93Q2VsbEFkam9pbmluZ1RhYmxlRW5kKCkgY29uc3Q7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164756</attachid>
            <date>2012-09-19 10:51:53 -0700</date>
            <delta_ts>2012-09-19 17:58:36 -0700</delta_ts>
            <desc>v3: Fixed Mac build, removed unused parameter in RenderTableCol functions.</desc>
            <filename>bug-96710-20120919105119.patch</filename>
            <type>text/plain</type>
            <size>22506</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MDEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmJhNGU2YjgxYmJlZjgx
OGI1MDZkMzBkYzBiMTY2Yzg4YmE1ODNjMy4uNzYyMDQ2Y2Y4MmFlYzgxNjA3NDY1MGNjYzQwMTc2
ZjBlY2JkZWM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTA5LTE5ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFRoZSBjb2xs
YXBzaW5nIGJvcmRlciBjb2RlIG5lZWRzIGRpcmVjdGlvbi1hd2FyZSBib3JkZXIgZ2V0dGVycwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY3MTAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHJlZmFj
dG9yaW5nIGlzIG5lZWRlZCB0byBleHRlbmQgb3VyIGNvbGxhcHNpbmcgYm9yZGVyIHN1cHBvcnQg
Zm9yIG1peGVkIGRpcmVjdGlvbmFsaXR5CisgICAgICAgIGF0IHRoZSB0YWJsZSBjZWxsIGxldmVs
ICh3ZSBjdXJyZW50bHkgd3JvbmdseSBpZ25vcmUgYW55IGRpcmVjdGlvbiBiZWxvdyB0aGUgcm93
LWdyb3VwKS4gRm9yCisgICAgICAgIG5vdywgdGhlIG5ldyBoZWxwZXJzIGFyZSBkdW1iIGFuZCBy
ZXR1cm4gZXhhY3RseSB0aGUgb2xkIHJlc3VsdCBidXQgdGhleSB3aWxsIGJlIG1hZGUKKyAgICAg
ICAgZGlyZWN0aW9uLWF3YXJlIGluIGEgZm9sbG93LXVwIGNoYW5nZS4KKworICAgICAgICBSZWZh
Y3RvcmluZyBjb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckJveC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpoYXNTYW1lRGlyZWN0
aW9uQXMpOgorICAgICAgICBBZGRlZCB0aGlzIGhlbHBlciBmdW5jdGlvbi4gRm9yIG5vdywgaXQn
cyBvbmx5IHVzZWQgdG8gY29tcGFyZSBhZ2FpbnN0CisgICAgICAgIHRoZSB0YWJsZSBkaXJlY3Rp
b24gYnV0IHdlIHdpbGwgcmV1c2UgaXQgdG8gY29tcGFyZSB0aGUgY3VycmVudCBjZWxsCisgICAg
ICAgIGRpcmVjdGlvbiBhZ2FpbnN0IHRoZSBvdGhlciB0YWJsZSBwYXJ0cy4KKworICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRh
YmxlQ2VsbDo6Y29tcHV0ZUNvbGxhcHNlZFN0YXJ0Qm9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlQ2VsbDo6Y29tcHV0ZUNvbGxhcHNlZEVuZEJvcmRlcik6CisgICAgICAgIFRy
YW5zaXRpb25lZCB0aG9zZSAyIGZ1bmN0aW9ucyB0byB1c2luZyB0aGUgbmV3IGRpcmVjdGlvbi1h
d2FyZSBmdW5jdGlvbnMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OnRhYmxlU3RhcnRCb3JkZXJBZGpvaW5pbmdD
ZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlOjp0YWJsZUVuZEJvcmRlckFkam9p
bmluZ0NlbGwpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpmaXJzdFJvd0NlbGxBZGpvaW5p
bmdUYWJsZVN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6Zmly
c3RSb3dDZWxsQWRqb2luaW5nVGFibGVFbmQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJU
YWJsZUNlbGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6Ym9yZGVyQWRq
b2luaW5nVGFibGVTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OmJv
cmRlckFkam9pbmluZ1RhYmxlRW5kKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVT
ZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246OmJvcmRlckFk
am9pbmluZ1RhYmxlU3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9u
Ojpib3JkZXJBZGpvaW5pbmdUYWJsZUVuZCk6CisgICAgICAgIFVwZGF0ZWQgdGhvc2UgY2FsbCBz
aXRlcyB0byB1c2UgUmVuZGVyQm94OjpoYXNTYW1lRGlyZWN0aW9uQXMuCisKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZUNlbGw6OmJvcmRlckFkam9pbmluZ05leHRDZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clRhYmxlQ2VsbDo6Ym9yZGVyQWRqb2luaW5nUHJldmlvdXNDZWxsKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVD
b2w6OmJvcmRlckFkam9pbmluZ0NlbGxTdGFydEJvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUYWJsZUNvbDo6Ym9yZGVyQWRqb2luaW5nQ2VsbEVuZEJvcmRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUYWJsZUNvbDo6Ym9yZGVyQWRqb2luaW5nQ2VsbEJlZm9yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNvbDo6Ym9yZGVyQWRqb2luaW5nQ2VsbEFmdGVyKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuaDoKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyVGFibGVSb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVSb3c6
OmJvcmRlckFkam9pbmluZ1N0YXJ0Q2VsbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJs
ZVJvdzo6Ym9yZGVyQWRqb2luaW5nRW5kQ2VsbCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clRhYmxlUm93Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVJvdzo6Ym9yZGVyQWRq
b2luaW5nVGFibGVTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVJvdzo6Ym9y
ZGVyQWRqb2luaW5nVGFibGVFbmQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUYWJsZVNl
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpib3JkZXJB
ZGpvaW5pbmdTdGFydENlbGwpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9u
Ojpib3JkZXJBZGpvaW5pbmdFbmRDZWxsKToKKyAgICAgICAgTmV3IGRpcmVjdGlvbi1hd2FyZSBm
dW5jdGlvbnMuIEFkZGVkIHNvbWUgQVNTRVJUIHRvIGVuc3VyZQorICAgICAgICB3ZSBkb24ndCBj
YWxsIHRoZW0gd2l0aCB0aGUgd3JvbmcgcGFyYW1ldGVycy4KKwogMjAxMi0wOS0xOSAgSm9uYXRo
YW4gRG9uZyAgPGpvbmF0aGFuLmRvbmdAdG9yY2htb2JpbGUuY29tLmNuPgogCiAgICAgICAgIFtC
bGFja0JlcnJ5XSBBZGQgZnVuY3Rpb24gcGxheWVySWQoKSBpbiBjbGFzcyBQYWdlQ2xpZW50Qmxh
Y2tCZXJyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IDQwZGZlMTUzOTE1
NTMwNDJjYzNlNTI3NTA3NDA3MDU3Yjk4MGQ3MWEuLjhiNTgwZTExMmMzMWNhMDZiNDVlZmYzMDJm
YjNiYjYwMGNmMmQ0NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKQEAgLTU0
Myw2ICs1NDMsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIGJv
b2wgaGFzU2FtZURpcmVjdGlvbkFzKGNvbnN0IFJlbmRlckJveCogb2JqZWN0KSBjb25zdCB7IHJl
dHVybiBzdHlsZSgpLT5kaXJlY3Rpb24oKSA9PSBvYmplY3QtPnN0eWxlKCktPmRpcmVjdGlvbigp
OyB9CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGUuY3BwCmluZGV4IDliMjQ3MzA2YWU2
NTIwOTA2MWE5ZGE5NDMwZDQ1ZWRjZWU1MDRkNmIuLmJlMDA0NjYxMWY1NTdiMjk5MzE2MDc0ZDMz
MDc5MDlhNjllZDUxMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlLmNw
cApAQCAtMTMxNiw3ICsxMzE2LDcgQEAgUmVuZGVyVGFibGUqIFJlbmRlclRhYmxlOjpjcmVhdGVB
bm9ueW1vdXNXaXRoUGFyZW50UmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KgogY29uc3QgQm9y
ZGVyVmFsdWUmIFJlbmRlclRhYmxlOjp0YWJsZVN0YXJ0Qm9yZGVyQWRqb2luaW5nQ2VsbChjb25z
dCBSZW5kZXJUYWJsZUNlbGwqIGNlbGwpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGNlbGwtPmlzRmly
c3RPckxhc3RDZWxsSW5Sb3coKSk7Ci0gICAgaWYgKGNlbGwtPnNlY3Rpb24oKS0+aGFzU2FtZURp
cmVjdGlvbkFzVGFibGUoKSkKKyAgICBpZiAoaGFzU2FtZURpcmVjdGlvbkFzKGNlbGwtPnNlY3Rp
b24oKSkpCiAgICAgICAgIHJldHVybiBzdHlsZSgpLT5ib3JkZXJTdGFydCgpOwogCiAgICAgcmV0
dXJuIHN0eWxlKCktPmJvcmRlckVuZCgpOwpAQCAtMTMyNSw3ICsxMzI1LDcgQEAgY29uc3QgQm9y
ZGVyVmFsdWUmIFJlbmRlclRhYmxlOjp0YWJsZVN0YXJ0Qm9yZGVyQWRqb2luaW5nQ2VsbChjb25z
dCBSZW5kZXJUYWJsZUMKIGNvbnN0IEJvcmRlclZhbHVlJiBSZW5kZXJUYWJsZTo6dGFibGVFbmRC
b3JkZXJBZGpvaW5pbmdDZWxsKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCogY2VsbCkgY29uc3QKIHsK
ICAgICBBU1NFUlQoY2VsbC0+aXNGaXJzdE9yTGFzdENlbGxJblJvdygpKTsKLSAgICBpZiAoY2Vs
bC0+c2VjdGlvbigpLT5oYXNTYW1lRGlyZWN0aW9uQXNUYWJsZSgpKQorICAgIGlmIChoYXNTYW1l
RGlyZWN0aW9uQXMoY2VsbC0+c2VjdGlvbigpKSkKICAgICAgICAgcmV0dXJuIHN0eWxlKCktPmJv
cmRlckVuZCgpOwogCiAgICAgcmV0dXJuIHN0eWxlKCktPmJvcmRlclN0YXJ0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuY3BwCmluZGV4IGU0OWFjMTBhZjM4
Zjg5OTZmODVkMjNjZTlkYWU3NTg5NDIxOTBmODguLjhlMGNkNmVmMmFmZDgwMjRmYjAxNGNjOWVl
NTNhZWFlZTYwMjUyMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZUNlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZUNlbGwuY3BwCkBAIC00MjIsMTggKzQyMiwxOCBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5k
ZXJUYWJsZUNlbGw6OmNvbXB1dGVDb2xsYXBzZWRTdGFydEJvcmRlcihJbmNsdWRlQm9yZGVyQwog
CiAgICAgLy8gKDIpIFRoZSBlbmQgYm9yZGVyIG9mIHRoZSBwcmVjZWRpbmcgY2VsbC4KICAgICBp
ZiAoUmVuZGVyVGFibGVDZWxsKiBwcmV2Q2VsbCA9IHRhYmxlLT5jZWxsQmVmb3JlKHRoaXMpKSB7
Ci0gICAgICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIHByZXZDZWxsQm9yZGVyID0gQ29sbGFwc2Vk
Qm9yZGVyVmFsdWUocHJldkNlbGwtPnN0eWxlKCktPmJvcmRlckVuZCgpLCBpbmNsdWRlQ29sb3Ig
PyBwcmV2Q2VsbC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGVuZENvbG9yUHJvcGVy
dHkpIDogQ29sb3IoKSwgQkNFTEwpOworICAgICAgICBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBwcmV2
Q2VsbEJvcmRlciA9IENvbGxhcHNlZEJvcmRlclZhbHVlKHByZXZDZWxsLT5ib3JkZXJBZGpvaW5p
bmdDZWxsQWZ0ZXIodGhpcyksIGluY2x1ZGVDb2xvciA/IHByZXZDZWxsLT5zdHlsZSgpLT52aXNp
dGVkRGVwZW5kZW50Q29sb3IoZW5kQ29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCQ0VMTCk7CiAg
ICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihwcmV2Q2VsbEJvcmRlciwgcmVzdWx0KTsKICAg
ICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0gZWxzZSBpZiAoaXNTdGFydENvbHVtbikgewogICAgICAgICAvLyAoMykgT3VyIHJvdydz
IHN0YXJ0IGJvcmRlci4KLSAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29s
bGFwc2VkQm9yZGVyVmFsdWUocGFyZW50KCktPnN0eWxlKCktPmJvcmRlclN0YXJ0KCksIGluY2x1
ZGVDb2xvciA/IHBhcmVudCgpLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3RhcnRD
b2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJST1cpKTsKKyAgICAgICAgcmVzdWx0ID0gY2hvb3Nl
Qm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUocm93KCktPmJvcmRlckFkam9pbmlu
Z1N0YXJ0Q2VsbCh0aGlzKSwgaW5jbHVkZUNvbG9yID8gcGFyZW50KCktPnN0eWxlKCktPnZpc2l0
ZWREZXBlbmRlbnRDb2xvcihzdGFydENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQlJPVykpOwog
ICAgICAgICBpZiAoIXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
Ci0gICAgICAgIAorCiAgICAgICAgIC8vICg0KSBPdXIgcm93IGdyb3VwJ3Mgc3RhcnQgYm9yZGVy
LgotICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJW
YWx1ZShzZWN0aW9uKCktPnN0eWxlKCktPmJvcmRlclN0YXJ0KCksIGluY2x1ZGVDb2xvciA/IHNl
Y3Rpb24oKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHN0YXJ0Q29sb3JQcm9wZXJ0
eSkgOiBDb2xvcigpLCBCUk9XR1JPVVApKTsKKyAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVy
KHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoc2VjdGlvbigpLT5ib3JkZXJBZGpvaW5pbmdT
dGFydENlbGwodGhpcyksIGluY2x1ZGVDb2xvciA/IHNlY3Rpb24oKS0+c3R5bGUoKS0+dmlzaXRl
ZERlcGVuZGVudENvbG9yKHN0YXJ0Q29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCUk9XR1JPVVAp
KTsKICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KQEAgLTQ0MywxMSArNDQzLDExIEBAIENvbGxhcHNlZEJvcmRlclZhbHVlIFJl
bmRlclRhYmxlQ2VsbDo6Y29tcHV0ZUNvbGxhcHNlZFN0YXJ0Qm9yZGVyKEluY2x1ZGVCb3JkZXJD
CiAgICAgYm9vbCBlbmRDb2xFZGdlOwogICAgIFJlbmRlclRhYmxlQ29sKiBjb2xFbHQgPSB0YWJs
ZS0+Y29sRWxlbWVudChjb2woKSwgJnN0YXJ0Q29sRWRnZSwgJmVuZENvbEVkZ2UpOwogICAgIGlm
IChjb2xFbHQgJiYgc3RhcnRDb2xFZGdlKSB7Ci0gICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRl
cihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKGNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyU3Rh
cnQoKSwgaW5jbHVkZUNvbG9yID8gY29sRWx0LT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29s
b3Ioc3RhcnRDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJDT0wpKTsKKyAgICAgICAgcmVzdWx0
ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoY29sRWx0LT5ib3Jk
ZXJBZGpvaW5pbmdDZWxsU3RhcnRCb3JkZXIodGhpcyksIGluY2x1ZGVDb2xvciA/IGNvbEVsdC0+
c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKHN0YXJ0Q29sb3JQcm9wZXJ0eSkgOiBDb2xv
cigpLCBCQ09MKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQogICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICAgICAgaWYgKFJlbmRlclRhYmxlQ29sKiBlbmNsb3NpbmdDb2x1
bW5Hcm91cCA9IGNvbEVsdC0+ZW5jbG9zaW5nQ29sdW1uR3JvdXBJZkFkamFjZW50QmVmb3JlKCkp
IHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJv
cmRlclZhbHVlKGVuY2xvc2luZ0NvbHVtbkdyb3VwLT5zdHlsZSgpLT5ib3JkZXJTdGFydCgpLCBp
bmNsdWRlQ29sb3IgPyBlbmNsb3NpbmdDb2x1bW5Hcm91cC0+c3R5bGUoKS0+dmlzaXRlZERlcGVu
ZGVudENvbG9yKHN0YXJ0Q29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCQ09MR1JPVVApKTsKKyAg
ICAgICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZh
bHVlKGVuY2xvc2luZ0NvbHVtbkdyb3VwLT5ib3JkZXJBZGpvaW5pbmdDZWxsU3RhcnRCb3JkZXIo
dGhpcyksIGluY2x1ZGVDb2xvciA/IGVuY2xvc2luZ0NvbHVtbkdyb3VwLT5zdHlsZSgpLT52aXNp
dGVkRGVwZW5kZW50Q29sb3Ioc3RhcnRDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJDT0xHUk9V
UCkpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQpAQCAtNDU3LDcgKzQ1Nyw3IEBAIENvbGxhcHNlZEJv
cmRlclZhbHVlIFJlbmRlclRhYmxlQ2VsbDo6Y29tcHV0ZUNvbGxhcHNlZFN0YXJ0Qm9yZGVyKElu
Y2x1ZGVCb3JkZXJDCiAgICAgaWYgKCFpc1N0YXJ0Q29sdW1uKSB7CiAgICAgICAgIGNvbEVsdCA9
IHRhYmxlLT5jb2xFbGVtZW50KGNvbCgpIC0xLCAmc3RhcnRDb2xFZGdlLCAmZW5kQ29sRWRnZSk7
CiAgICAgICAgIGlmIChjb2xFbHQgJiYgZW5kQ29sRWRnZSkgewotICAgICAgICAgICAgQ29sbGFw
c2VkQm9yZGVyVmFsdWUgZW5kQm9yZGVyID0gQ29sbGFwc2VkQm9yZGVyVmFsdWUoY29sRWx0LT5z
dHlsZSgpLT5ib3JkZXJFbmQoKSwgaW5jbHVkZUNvbG9yID8gY29sRWx0LT5zdHlsZSgpLT52aXNp
dGVkRGVwZW5kZW50Q29sb3IoZW5kQ29sb3JQcm9wZXJ0eSkgOiBDb2xvcigpLCBCQ09MKTsKKyAg
ICAgICAgICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIGVuZEJvcmRlciA9IENvbGxhcHNlZEJvcmRl
clZhbHVlKGNvbEVsdC0+Ym9yZGVyQWRqb2luaW5nQ2VsbEFmdGVyKHRoaXMpLCBpbmNsdWRlQ29s
b3IgPyBjb2xFbHQtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihlbmRDb2xvclByb3Bl
cnR5KSA6IENvbG9yKCksIEJDT0wpOwogICAgICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVy
KGVuZEJvcmRlciwgcmVzdWx0KTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygpKQog
ICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC00OTUsMTkgKzQ5NSwxOSBAQCBDb2xs
YXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbXB1dGVDb2xsYXBzZWRFbmRCb3Jk
ZXIoSW5jbHVkZUJvcmRlckNvbAogICAgIGlmICghaXNFbmRDb2x1bW4pIHsKICAgICAgICAgUmVu
ZGVyVGFibGVDZWxsKiBuZXh0Q2VsbCA9IHRhYmxlLT5jZWxsQWZ0ZXIodGhpcyk7CiAgICAgICAg
IGlmIChuZXh0Q2VsbCAmJiBuZXh0Q2VsbC0+c3R5bGUoKSkgewotICAgICAgICAgICAgQ29sbGFw
c2VkQm9yZGVyVmFsdWUgc3RhcnRCb3JkZXIgPSBDb2xsYXBzZWRCb3JkZXJWYWx1ZShuZXh0Q2Vs
bC0+c3R5bGUoKS0+Ym9yZGVyU3RhcnQoKSwgaW5jbHVkZUNvbG9yID8gbmV4dENlbGwtPnN0eWxl
KCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdGFydENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwg
QkNFTEwpOworICAgICAgICAgICAgQ29sbGFwc2VkQm9yZGVyVmFsdWUgc3RhcnRCb3JkZXIgPSBD
b2xsYXBzZWRCb3JkZXJWYWx1ZShuZXh0Q2VsbC0+Ym9yZGVyQWRqb2luaW5nQ2VsbEJlZm9yZSh0
aGlzKSwgaW5jbHVkZUNvbG9yID8gbmV4dENlbGwtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRD
b2xvcihzdGFydENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQkNFTEwpOwogICAgICAgICAgICAg
cmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgc3RhcnRCb3JkZXIpOwogICAgICAgICAgICAg
aWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vICgzKSBPdXIgcm93J3MgZW5kIGJvcmRl
ci4KLSAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVy
VmFsdWUocGFyZW50KCktPnN0eWxlKCktPmJvcmRlckVuZCgpLCBpbmNsdWRlQ29sb3IgPyBwYXJl
bnQoKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGVuZENvbG9yUHJvcGVydHkpIDog
Q29sb3IoKSwgQlJPVykpOworICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBD
b2xsYXBzZWRCb3JkZXJWYWx1ZShyb3coKS0+Ym9yZGVyQWRqb2luaW5nRW5kQ2VsbCh0aGlzKSwg
aW5jbHVkZUNvbG9yID8gcGFyZW50KCktPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihl
bmRDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJST1cpKTsKICAgICAgICAgaWYgKCFyZXN1bHQu
ZXhpc3RzKCkpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAKICAgICAgICAg
Ly8gKDQpIE91ciByb3cgZ3JvdXAncyBlbmQgYm9yZGVyLgotICAgICAgICByZXN1bHQgPSBjaG9v
c2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShzZWN0aW9uKCktPnN0eWxlKCkt
PmJvcmRlckVuZCgpLCBpbmNsdWRlQ29sb3IgPyBzZWN0aW9uKCktPnN0eWxlKCktPnZpc2l0ZWRE
ZXBlbmRlbnRDb2xvcihlbmRDb2xvclByb3BlcnR5KSA6IENvbG9yKCksIEJST1dHUk9VUCkpOwor
ICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0LCBDb2xsYXBzZWRCb3JkZXJWYWx1
ZShzZWN0aW9uKCktPmJvcmRlckFkam9pbmluZ0VuZENlbGwodGhpcyksIGluY2x1ZGVDb2xvciA/
IHNlY3Rpb24oKS0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGVuZENvbG9yUHJvcGVy
dHkpIDogQ29sb3IoKSwgQlJPV0dST1VQKSk7CiAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0cygp
KQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC01MTcsMTEgKzUxNywxMSBA
QCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbXB1dGVDb2xsYXBzZWRF
bmRCb3JkZXIoSW5jbHVkZUJvcmRlckNvbAogICAgIGJvb2wgZW5kQ29sRWRnZTsKICAgICBSZW5k
ZXJUYWJsZUNvbCogY29sRWx0ID0gdGFibGUtPmNvbEVsZW1lbnQoY29sKCkgKyBjb2xTcGFuKCkg
LSAxLCAmc3RhcnRDb2xFZGdlLCAmZW5kQ29sRWRnZSk7CiAgICAgaWYgKGNvbEVsdCAmJiBlbmRD
b2xFZGdlKSB7Ci0gICAgICAgIHJlc3VsdCA9IGNob29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNl
ZEJvcmRlclZhbHVlKGNvbEVsdC0+c3R5bGUoKS0+Ym9yZGVyRW5kKCksIGluY2x1ZGVDb2xvciA/
IGNvbEVsdC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVudENvbG9yKGVuZENvbG9yUHJvcGVydHkp
IDogQ29sb3IoKSwgQkNPTCkpOworICAgICAgICByZXN1bHQgPSBjaG9vc2VCb3JkZXIocmVzdWx0
LCBDb2xsYXBzZWRCb3JkZXJWYWx1ZShjb2xFbHQtPmJvcmRlckFkam9pbmluZ0NlbGxFbmRCb3Jk
ZXIodGhpcyksIGluY2x1ZGVDb2xvciA/IGNvbEVsdC0+c3R5bGUoKS0+dmlzaXRlZERlcGVuZGVu
dENvbG9yKGVuZENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQkNPTCkpOwogICAgICAgICBpZiAo
IXJlc3VsdC5leGlzdHMoKSkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIGlm
IChSZW5kZXJUYWJsZUNvbCogZW5jbG9zaW5nQ29sdW1uR3JvdXAgPSBjb2xFbHQtPmVuY2xvc2lu
Z0NvbHVtbkdyb3VwSWZBZGphY2VudEFmdGVyKCkpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGNo
b29zZUJvcmRlcihyZXN1bHQsIENvbGxhcHNlZEJvcmRlclZhbHVlKGVuY2xvc2luZ0NvbHVtbkdy
b3VwLT5zdHlsZSgpLT5ib3JkZXJFbmQoKSwgaW5jbHVkZUNvbG9yID8gZW5jbG9zaW5nQ29sdW1u
R3JvdXAtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihlbmRDb2xvclByb3BlcnR5KSA6
IENvbG9yKCksIEJDT0xHUk9VUCkpOworICAgICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVy
KHJlc3VsdCwgQ29sbGFwc2VkQm9yZGVyVmFsdWUoZW5jbG9zaW5nQ29sdW1uR3JvdXAtPmJvcmRl
ckFkam9pbmluZ0NlbGxFbmRCb3JkZXIodGhpcyksIGluY2x1ZGVDb2xvciA/IGVuY2xvc2luZ0Nv
bHVtbkdyb3VwLT5zdHlsZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3IoZW5kQ29sb3JQcm9wZXJ0
eSkgOiBDb2xvcigpLCBCQ09MR1JPVVApKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0LmV4aXN0
cygpKQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KQEAgLTUzMSw3
ICs1MzEsNyBAQCBDb2xsYXBzZWRCb3JkZXJWYWx1ZSBSZW5kZXJUYWJsZUNlbGw6OmNvbXB1dGVD
b2xsYXBzZWRFbmRCb3JkZXIoSW5jbHVkZUJvcmRlckNvbAogICAgIGlmICghaXNFbmRDb2x1bW4p
IHsKICAgICAgICAgY29sRWx0ID0gdGFibGUtPmNvbEVsZW1lbnQoY29sKCkgKyBjb2xTcGFuKCks
ICZzdGFydENvbEVkZ2UsICZlbmRDb2xFZGdlKTsKICAgICAgICAgaWYgKGNvbEVsdCAmJiBzdGFy
dENvbEVkZ2UpIHsKLSAgICAgICAgICAgIENvbGxhcHNlZEJvcmRlclZhbHVlIHN0YXJ0Qm9yZGVy
ID0gQ29sbGFwc2VkQm9yZGVyVmFsdWUoY29sRWx0LT5zdHlsZSgpLT5ib3JkZXJTdGFydCgpLCBp
bmNsdWRlQ29sb3IgPyBjb2xFbHQtPnN0eWxlKCktPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihzdGFy
dENvbG9yUHJvcGVydHkpIDogQ29sb3IoKSwgQkNPTCk7CisgICAgICAgICAgICBDb2xsYXBzZWRC
b3JkZXJWYWx1ZSBzdGFydEJvcmRlciA9IENvbGxhcHNlZEJvcmRlclZhbHVlKGNvbEVsdC0+Ym9y
ZGVyQWRqb2luaW5nQ2VsbEJlZm9yZSh0aGlzKSwgaW5jbHVkZUNvbG9yID8gY29sRWx0LT5zdHls
ZSgpLT52aXNpdGVkRGVwZW5kZW50Q29sb3Ioc3RhcnRDb2xvclByb3BlcnR5KSA6IENvbG9yKCks
IEJDT0wpOwogICAgICAgICAgICAgcmVzdWx0ID0gY2hvb3NlQm9yZGVyKHJlc3VsdCwgc3RhcnRC
b3JkZXIpOwogICAgICAgICAgICAgaWYgKCFyZXN1bHQuZXhpc3RzKCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZUNlbGwuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNl
bGwuaAppbmRleCBmMGNiMzNlNTFjYTU4MGQyNTYwZGUzMDBlM2Q3NDZjMDE1MjM1OTRhLi43MTNm
MmMwYWEwMzQ3ZDUwNWFlZmRiZWE5ZTFjNzEzNzliZjViNGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCkBAIC0xNDQsNyArMTQ0LDcgQEAgcHVibGljOgog
ICAgIGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJBZGpvaW5pbmdUYWJsZVN0YXJ0KCkgY29uc3QK
ICAgICB7CiAgICAgICAgIEFTU0VSVChpc0ZpcnN0T3JMYXN0Q2VsbEluUm93KCkpOwotICAgICAg
ICBpZiAoc2VjdGlvbigpLT5oYXNTYW1lRGlyZWN0aW9uQXNUYWJsZSgpKQorICAgICAgICBpZiAo
c2VjdGlvbigpLT5oYXNTYW1lRGlyZWN0aW9uQXModGFibGUoKSkpCiAgICAgICAgICAgICByZXR1
cm4gc3R5bGUoKS0+Ym9yZGVyU3RhcnQoKTsKIAogICAgICAgICByZXR1cm4gc3R5bGUoKS0+Ym9y
ZGVyRW5kKCk7CkBAIC0xNTMsMTIgKzE1MywyNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgQm9yZGVy
VmFsdWUmIGJvcmRlckFkam9pbmluZ1RhYmxlRW5kKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFT
U0VSVChpc0ZpcnN0T3JMYXN0Q2VsbEluUm93KCkpOwotICAgICAgICBpZiAoc2VjdGlvbigpLT5o
YXNTYW1lRGlyZWN0aW9uQXNUYWJsZSgpKQorICAgICAgICBpZiAoc2VjdGlvbigpLT5oYXNTYW1l
RGlyZWN0aW9uQXModGFibGUoKSkpCiAgICAgICAgICAgICByZXR1cm4gc3R5bGUoKS0+Ym9yZGVy
RW5kKCk7CiAKICAgICAgICAgcmV0dXJuIHN0eWxlKCktPmJvcmRlclN0YXJ0KCk7CiAgICAgfQog
CisgICAgY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRlckFkam9pbmluZ0NlbGxCZWZvcmUoY29uc3Qg
UmVuZGVyVGFibGVDZWxsKiBjZWxsKQorICAgIHsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChjZWxs
LCB0YWJsZSgpLT5jZWxsQWZ0ZXIoY2VsbCkgPT0gdGhpcyk7CisgICAgICAgIC8vIEZJWE1FOiBo
dHRwczovL3dlYmtpdC5vcmcvYi83OTI3MiAtIEFkZCBzdXBwb3J0IGZvciBtaXhlZCBkaXJlY3Rp
b25hbGl0eSBhdCB0aGUgY2VsbCBsZXZlbC4KKyAgICAgICAgcmV0dXJuIHN0eWxlKCktPmJvcmRl
clN0YXJ0KCk7CisgICAgfQorCisgICAgY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRlckFkam9pbmlu
Z0NlbGxBZnRlcihjb25zdCBSZW5kZXJUYWJsZUNlbGwqIGNlbGwpCisgICAgeworICAgICAgICBB
U1NFUlRfVU5VU0VEKGNlbGwsIHRhYmxlKCktPmNlbGxCZWZvcmUoY2VsbCkgPT0gdGhpcyk7Cisg
ICAgICAgIC8vIEZJWE1FOiBodHRwczovL3dlYmtpdC5vcmcvYi83OTI3MiAtIEFkZCBzdXBwb3J0
IGZvciBtaXhlZCBkaXJlY3Rpb25hbGl0eSBhdCB0aGUgY2VsbCBsZXZlbC4KKyAgICAgICAgcmV0
dXJuIHN0eWxlKCktPmJvcmRlckVuZCgpOworICAgIH0KKwogI2lmbmRlZiBOREVCVUcKICAgICBi
b29sIGlzRmlyc3RPckxhc3RDZWxsSW5Sb3coKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNvbC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDb2wuY3BwCmluZGV4IDdjNWU5ZWQxMGNmNTUwOWVmYjAx
MWQ4OGNiZWEwZDBlMDNhMDM2YzQuLmJhZjE5MTQzMTljZGZkYmMzODZkZDZmMGYzMTE5ZTg2ZWE3
MDllMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNv
bC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmNwcApA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxU
YWJsZUNvbEVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZS5oIgorI2luY2x1ZGUgIlJl
bmRlclRhYmxlQ2VsbC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE2Miw0ICsxNjMs
MjYgQEAgUmVuZGVyVGFibGVDb2wqIFJlbmRlclRhYmxlQ29sOjpuZXh0Q29sdW1uKCkgY29uc3QK
ICAgICByZXR1cm4gdG9SZW5kZXJUYWJsZUNvbChuZXh0KTsKIH0KIAorY29uc3QgQm9yZGVyVmFs
dWUmIFJlbmRlclRhYmxlQ29sOjpib3JkZXJBZGpvaW5pbmdDZWxsU3RhcnRCb3JkZXIoY29uc3Qg
UmVuZGVyVGFibGVDZWxsKikgY29uc3QKK3sKKyAgICByZXR1cm4gc3R5bGUoKS0+Ym9yZGVyU3Rh
cnQoKTsKK30KKworY29uc3QgQm9yZGVyVmFsdWUmIFJlbmRlclRhYmxlQ29sOjpib3JkZXJBZGpv
aW5pbmdDZWxsRW5kQm9yZGVyKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCopIGNvbnN0Cit7CisgICAg
cmV0dXJuIHN0eWxlKCktPmJvcmRlckVuZCgpOworfQorCitjb25zdCBCb3JkZXJWYWx1ZSYgUmVu
ZGVyVGFibGVDb2w6OmJvcmRlckFkam9pbmluZ0NlbGxCZWZvcmUoY29uc3QgUmVuZGVyVGFibGVD
ZWxsKiBjZWxsKSBjb25zdAoreworICAgIEFTU0VSVF9VTlVTRUQoY2VsbCwgdGFibGUoKS0+Y29s
RWxlbWVudChjZWxsLT5jb2woKSArIGNlbGwtPmNvbFNwYW4oKSkgPT0gdGhpcyk7CisgICAgcmV0
dXJuIHN0eWxlKCktPmJvcmRlclN0YXJ0KCk7Cit9CisKK2NvbnN0IEJvcmRlclZhbHVlJiBSZW5k
ZXJUYWJsZUNvbDo6Ym9yZGVyQWRqb2luaW5nQ2VsbEFmdGVyKGNvbnN0IFJlbmRlclRhYmxlQ2Vs
bCogY2VsbCkgY29uc3QKK3sKKyAgICBBU1NFUlRfVU5VU0VEKGNlbGwsIHRhYmxlKCktPmNvbEVs
ZW1lbnQoY2VsbC0+Y29sKCkgLSAxKSA9PSB0aGlzKTsKKyAgICByZXR1cm4gc3R5bGUoKS0+Ym9y
ZGVyRW5kKCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZUNvbC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29s
LmgKaW5kZXggODg3YWZkNmM4NWEwYzVhODY1ZmEzYjE1MzZiMWUwZmM0MDM0M2UzOS4uNjFmOGZh
MzQ2MmM0Y2UwYWMzZjExNjUxMmExYTJlZmJhN2RjNTRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlQ29sLmgKQEAgLTMxLDYgKzMxLDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgUmVuZGVyVGFibGU7CitjbGFzcyBSZW5kZXJUYWJsZUNlbGw7CiAKIGNs
YXNzIFJlbmRlclRhYmxlQ29sIDogcHVibGljIFJlbmRlckJveCB7CiBwdWJsaWM6CkBAIC02Nyw2
ICs2OCwxMSBAQCBwdWJsaWM6CiAgICAgLy8gUmV0dXJucyB0aGUgbmV4dCBjb2x1bW4gb3IgY29s
dW1uLWdyb3VwLgogICAgIFJlbmRlclRhYmxlQ29sKiBuZXh0Q29sdW1uKCkgY29uc3Q7CiAKKyAg
ICBjb25zdCBCb3JkZXJWYWx1ZSYgYm9yZGVyQWRqb2luaW5nQ2VsbFN0YXJ0Qm9yZGVyKGNvbnN0
IFJlbmRlclRhYmxlQ2VsbCopIGNvbnN0OworICAgIGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJB
ZGpvaW5pbmdDZWxsRW5kQm9yZGVyKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCopIGNvbnN0OworICAg
IGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJBZGpvaW5pbmdDZWxsQmVmb3JlKGNvbnN0IFJlbmRl
clRhYmxlQ2VsbCopIGNvbnN0OworICAgIGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJBZGpvaW5p
bmdDZWxsQWZ0ZXIoY29uc3QgUmVuZGVyVGFibGVDZWxsKikgY29uc3Q7CisKIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBSZW5kZXJPYmplY3RDaGlsZExpc3QqIHZpcnR1YWxDaGlsZHJlbigpIHsgcmV0
dXJuIGNoaWxkcmVuKCk7IH0KICAgICB2aXJ0dWFsIGNvbnN0IFJlbmRlck9iamVjdENoaWxkTGlz
dCogdmlydHVhbENoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gY2hpbGRyZW4oKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlUm93LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5jcHAKaW5kZXggMmI4M2ZhYTVhNDg2
OTZhNWIzN2MyMjE5ZTMyNjUwMTE2MDU0NDcyZi4uMWYyYmQwNjg5YTE1MTQwYzlmMDgxYTlhMzQ2
MjJlNDRjYzk0NGRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlUm93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVS
b3cuY3BwCkBAIC04Miw2ICs4MiwyMCBAQCB2b2lkIFJlbmRlclRhYmxlUm93OjpzdHlsZURpZENo
YW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZAogICAgIH0K
IH0KIAorY29uc3QgQm9yZGVyVmFsdWUmIFJlbmRlclRhYmxlUm93Ojpib3JkZXJBZGpvaW5pbmdT
dGFydENlbGwoY29uc3QgUmVuZGVyVGFibGVDZWxsKiBjZWxsKSBjb25zdAoreworICAgIEFTU0VS
VF9VTlVTRUQoY2VsbCwgIXRhYmxlKCktPmNlbGxCZWZvcmUoY2VsbCkpOworICAgIC8vIEZJWE1F
OiBodHRwczovL3dlYmtpdC5vcmcvYi83OTI3MiAtIEFkZCBzdXBwb3J0IGZvciBtaXhlZCBkaXJl
Y3Rpb25hbGl0eSBhdCB0aGUgY2VsbCBsZXZlbC4KKyAgICByZXR1cm4gc3R5bGUoKS0+Ym9yZGVy
U3RhcnQoKTsKK30KKworY29uc3QgQm9yZGVyVmFsdWUmIFJlbmRlclRhYmxlUm93Ojpib3JkZXJB
ZGpvaW5pbmdFbmRDZWxsKGNvbnN0IFJlbmRlclRhYmxlQ2VsbCogY2VsbCkgY29uc3QKK3sKKyAg
ICBBU1NFUlRfVU5VU0VEKGNlbGwsICF0YWJsZSgpLT5jZWxsQWZ0ZXIoY2VsbCkpOworICAgIC8v
IEZJWE1FOiBodHRwczovL3dlYmtpdC5vcmcvYi83OTI3MiAtIEFkZCBzdXBwb3J0IGZvciBtaXhl
ZCBkaXJlY3Rpb25hbGl0eSBhdCB0aGUgY2VsbCBsZXZlbC4KKyAgICByZXR1cm4gc3R5bGUoKS0+
Ym9yZGVyRW5kKCk7Cit9CisKIHZvaWQgUmVuZGVyVGFibGVSb3c6OmFkZENoaWxkKFJlbmRlck9i
amVjdCogY2hpbGQsIFJlbmRlck9iamVjdCogYmVmb3JlQ2hpbGQpCiB7CiAgICAgLy8gTWFrZSBz
dXJlIHdlIGRvbid0IGFwcGVuZCB0aGluZ3MgYWZ0ZXIgOmFmdGVyLWdlbmVyYXRlZCBjb250ZW50
IGlmIHdlIGhhdmUgaXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGFibGVSb3cuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5o
CmluZGV4IDAxMzZjNThhMmYyYTQ0MjRhYWQ5OWU2YzQ0Njc3YTdkYmZkNjI0MTcuLjEyZjgzM2Jh
ZjBmMDY1NzA1MjhiNzdlYjY5NGIxNjQ1NzY5M2Q4Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVJvdy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUYWJsZVJvdy5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKIAogICAgIGNv
bnN0IEJvcmRlclZhbHVlJiBib3JkZXJBZGpvaW5pbmdUYWJsZVN0YXJ0KCkgY29uc3QKICAgICB7
Ci0gICAgICAgIGlmIChzZWN0aW9uKCktPmhhc1NhbWVEaXJlY3Rpb25Bc1RhYmxlKCkpCisgICAg
ICAgIGlmIChzZWN0aW9uKCktPmhhc1NhbWVEaXJlY3Rpb25Bcyh0YWJsZSgpKSkKICAgICAgICAg
ICAgIHJldHVybiBzdHlsZSgpLT5ib3JkZXJTdGFydCgpOwogCiAgICAgICAgIHJldHVybiBzdHls
ZSgpLT5ib3JkZXJFbmQoKTsKQEAgLTc2LDEyICs3NiwxNSBAQCBwdWJsaWM6CiAKICAgICBjb25z
dCBCb3JkZXJWYWx1ZSYgYm9yZGVyQWRqb2luaW5nVGFibGVFbmQoKSBjb25zdAogICAgIHsKLSAg
ICAgICAgaWYgKHNlY3Rpb24oKS0+aGFzU2FtZURpcmVjdGlvbkFzVGFibGUoKSkKKyAgICAgICAg
aWYgKHNlY3Rpb24oKS0+aGFzU2FtZURpcmVjdGlvbkFzKHRhYmxlKCkpKQogICAgICAgICAgICAg
cmV0dXJuIHN0eWxlKCktPmJvcmRlckVuZCgpOwogCiAgICAgICAgIHJldHVybiBzdHlsZSgpLT5i
b3JkZXJTdGFydCgpOwogICAgIH0KIAorICAgIGNvbnN0IEJvcmRlclZhbHVlJiBib3JkZXJBZGpv
aW5pbmdTdGFydENlbGwoY29uc3QgUmVuZGVyVGFibGVDZWxsKikgY29uc3Q7CisgICAgY29uc3Qg
Qm9yZGVyVmFsdWUmIGJvcmRlckFkam9pbmluZ0VuZENlbGwoY29uc3QgUmVuZGVyVGFibGVDZWxs
KikgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCBSZW5kZXJPYmplY3RDaGlsZExpc3Qq
IHZpcnR1YWxDaGlsZHJlbigpIHsgcmV0dXJuIGNoaWxkcmVuKCk7IH0KICAgICB2aXJ0dWFsIGNv
bnN0IFJlbmRlck9iamVjdENoaWxkTGlzdCogdmlydHVhbENoaWxkcmVuKCkgY29uc3QgeyByZXR1
cm4gY2hpbGRyZW4oKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlU2VjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFi
bGVTZWN0aW9uLmNwcAppbmRleCA4ZjA4NDc3OWE5ZDE5ZTRjYTI4Y2NlYzVlZWUyNTc5MWJjM2U0
ZGY2Li5lYjY5NDg5MjE2OTMyZjg4MTJkMzcxNWY5ZWM1MWNmMTU1MTU0YmE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcApAQCAtMTMxNywx
NSArMTMxNywyOSBAQCB1bnNpZ25lZCBSZW5kZXJUYWJsZVNlY3Rpb246Om51bUNvbHVtbnMoKSBj
b25zdAogICAgIHJldHVybiByZXN1bHQgKyAxOwogfQogCitjb25zdCBCb3JkZXJWYWx1ZSYgUmVu
ZGVyVGFibGVTZWN0aW9uOjpib3JkZXJBZGpvaW5pbmdTdGFydENlbGwoY29uc3QgUmVuZGVyVGFi
bGVDZWxsKiBjZWxsKSBjb25zdAoreworICAgIEFTU0VSVF9VTlVTRUQoY2VsbCwgIXRhYmxlKCkt
PmNlbGxCZWZvcmUoY2VsbCkpOworICAgIC8vIEZJWE1FOiBodHRwczovL3dlYmtpdC5vcmcvYi83
OTI3MiAtIEFkZCBzdXBwb3J0IGZvciBtaXhlZCBkaXJlY3Rpb25hbGl0eSBhdCB0aGUgY2VsbCBs
ZXZlbC4KKyAgICByZXR1cm4gc3R5bGUoKS0+Ym9yZGVyU3RhcnQoKTsKK30KKworY29uc3QgQm9y
ZGVyVmFsdWUmIFJlbmRlclRhYmxlU2VjdGlvbjo6Ym9yZGVyQWRqb2luaW5nRW5kQ2VsbChjb25z
dCBSZW5kZXJUYWJsZUNlbGwqIGNlbGwpIGNvbnN0Cit7CisgICAgQVNTRVJUX1VOVVNFRChjZWxs
LCAhdGFibGUoKS0+Y2VsbEFmdGVyKGNlbGwpKTsKKyAgICAvLyBGSVhNRTogaHR0cHM6Ly93ZWJr
aXQub3JnL2IvNzkyNzIgLSBBZGQgc3VwcG9ydCBmb3IgbWl4ZWQgZGlyZWN0aW9uYWxpdHkgYXQg
dGhlIGNlbGwgbGV2ZWwuCisgICAgcmV0dXJuIHN0eWxlKCktPmJvcmRlckVuZCgpOworfQorCiBj
b25zdCBSZW5kZXJUYWJsZUNlbGwqIFJlbmRlclRhYmxlU2VjdGlvbjo6Zmlyc3RSb3dDZWxsQWRq
b2luaW5nVGFibGVTdGFydCgpIGNvbnN0CiB7Ci0gICAgdW5zaWduZWQgYWRqb2luaW5nU3RhcnRD
ZWxsQ29sdW1uSW5kZXggPSBoYXNTYW1lRGlyZWN0aW9uQXNUYWJsZSgpID8gMCA6IHRhYmxlKCkt
Pmxhc3RDb2x1bW5JbmRleCgpOworICAgIHVuc2lnbmVkIGFkam9pbmluZ1N0YXJ0Q2VsbENvbHVt
bkluZGV4ID0gaGFzU2FtZURpcmVjdGlvbkFzKHRhYmxlKCkpID8gMCA6IHRhYmxlKCktPmxhc3RD
b2x1bW5JbmRleCgpOwogICAgIHJldHVybiBjZWxsQXQoMCwgYWRqb2luaW5nU3RhcnRDZWxsQ29s
dW1uSW5kZXgpLnByaW1hcnlDZWxsKCk7CiB9CiAKIGNvbnN0IFJlbmRlclRhYmxlQ2VsbCogUmVu
ZGVyVGFibGVTZWN0aW9uOjpmaXJzdFJvd0NlbGxBZGpvaW5pbmdUYWJsZUVuZCgpIGNvbnN0CiB7
Ci0gICAgdW5zaWduZWQgYWRqb2luaW5nRW5kQ2VsbENvbHVtbkluZGV4ID0gaGFzU2FtZURpcmVj
dGlvbkFzVGFibGUoKSA/IHRhYmxlKCktPmxhc3RDb2x1bW5JbmRleCgpIDogMDsKKyAgICB1bnNp
Z25lZCBhZGpvaW5pbmdFbmRDZWxsQ29sdW1uSW5kZXggPSBoYXNTYW1lRGlyZWN0aW9uQXModGFi
bGUoKSkgPyB0YWJsZSgpLT5sYXN0Q29sdW1uSW5kZXgoKSA6IDA7CiAgICAgcmV0dXJuIGNlbGxB
dCgwLCBhZGpvaW5pbmdFbmRDZWxsQ29sdW1uSW5kZXgpLnByaW1hcnlDZWxsKCk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uaAppbmRleCA3MDU0
OTM4ZTk3N2QwYTFjOGNlYTY3NmY5ZTMyMTc5MTc1Zjg1ZGU5Li5jZTIxYTllZjEyOTcyZGNiZmRj
NDBhMmJkZmY1MmM2YjM5OWQ4N2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVTZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRhYmxlU2VjdGlvbi5oCkBAIC0xMTcsMTQgKzExNyw5IEBAIHB1YmxpYzoKICAgICAgICAg
TGVuZ3RoIGxvZ2ljYWxIZWlnaHQ7CiAgICAgfTsKIAotICAgIGJvb2wgaGFzU2FtZURpcmVjdGlv
bkFzVGFibGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHRhYmxlKCktPnN0eWxlKCkt
PmRpcmVjdGlvbigpID09IHN0eWxlKCktPmRpcmVjdGlvbigpOwotICAgIH0KLQogICAgIGNvbnN0
IEJvcmRlclZhbHVlJiBib3JkZXJBZGpvaW5pbmdUYWJsZVN0YXJ0KCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIGlmIChoYXNTYW1lRGlyZWN0aW9uQXNUYWJsZSgpKQorICAgICAgICBpZiAoaGFzU2Ft
ZURpcmVjdGlvbkFzKHRhYmxlKCkpKQogICAgICAgICAgICAgcmV0dXJuIHN0eWxlKCktPmJvcmRl
clN0YXJ0KCk7CiAKICAgICAgICAgcmV0dXJuIHN0eWxlKCktPmJvcmRlckVuZCgpOwpAQCAtMTMy
LDEyICsxMjcsMTUgQEAgcHVibGljOgogCiAgICAgY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRlckFk
am9pbmluZ1RhYmxlRW5kKCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChoYXNTYW1lRGlyZWN0
aW9uQXNUYWJsZSgpKQorICAgICAgICBpZiAoaGFzU2FtZURpcmVjdGlvbkFzKHRhYmxlKCkpKQog
ICAgICAgICAgICAgcmV0dXJuIHN0eWxlKCktPmJvcmRlckVuZCgpOwogCiAgICAgICAgIHJldHVy
biBzdHlsZSgpLT5ib3JkZXJTdGFydCgpOwogICAgIH0KIAorICAgIGNvbnN0IEJvcmRlclZhbHVl
JiBib3JkZXJBZGpvaW5pbmdTdGFydENlbGwoY29uc3QgUmVuZGVyVGFibGVDZWxsKikgY29uc3Q7
CisgICAgY29uc3QgQm9yZGVyVmFsdWUmIGJvcmRlckFkam9pbmluZ0VuZENlbGwoY29uc3QgUmVu
ZGVyVGFibGVDZWxsKikgY29uc3Q7CisKICAgICBjb25zdCBSZW5kZXJUYWJsZUNlbGwqIGZpcnN0
Um93Q2VsbEFkam9pbmluZ1RhYmxlU3RhcnQoKSBjb25zdDsKICAgICBjb25zdCBSZW5kZXJUYWJs
ZUNlbGwqIGZpcnN0Um93Q2VsbEFkam9pbmluZ1RhYmxlRW5kKCkgY29uc3Q7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>