<?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>71249</bug_id>
          
          <creation_ts>2011-10-31 15:54:59 -0700</creation_ts>
          <short_desc>Switch RenderObject to layout abstraction</short_desc>
          <delta_ts>2011-11-01 16:02:43 -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="Emil A Eklund">eae</reporter>
          <assigned_to name="Emil A Eklund">eae</assigned_to>
          <cc>darin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>493563</commentid>
    <comment_count>0</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-10-31 15:54:59 -0700</bug_when>
    <thetext>Switch RenderObject to layout type abstraction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493567</commentid>
    <comment_count>1</comment_count>
      <attachid>113097</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-10-31 15:56:40 -0700</bug_when>
    <thetext>Created attachment 113097
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493585</commentid>
    <comment_count>2</comment_count>
      <attachid>113097</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-31 16:06:51 -0700</bug_when>
    <thetext>Comment on attachment 113097
Patch

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

&gt; Source/WebCore/rendering/RenderObject.cpp:794
&gt; +    int width = roundf((side == BSTop || side == BSBottom ? y2 - y1 : x2 - x1));

The round function specifically takes a “float” so is not appropriate to round a LayoutUnit to an int. If LayoutUnit was a double or int it would be quite inefficient!

&gt; Source/WebCore/rendering/RenderObject.h:1052
&gt; -inline int adjustForAbsoluteZoom(int value, RenderObject* renderer)
&gt; +inline float adjustForAbsoluteZoom(int value, RenderObject* renderer)

I think this change should be landed separately with its own review and rationale.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493625</commentid>
    <comment_count>3</comment_count>
      <attachid>113107</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-10-31 16:47:53 -0700</bug_when>
    <thetext>Created attachment 113107
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493626</commentid>
    <comment_count>4</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-10-31 16:49:12 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; The round function specifically takes a “float” so is not appropriate to round a LayoutUnit to an int. If LayoutUnit was a double or int it would be quite inefficient!

Good catch, I should have caught that. Thanks!

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderObject.h:1052
&gt; &gt; -inline int adjustForAbsoluteZoom(int value, RenderObject* renderer)
&gt; &gt; +inline float adjustForAbsoluteZoom(int value, RenderObject* renderer)
&gt; 
&gt; I think this change should be landed separately with its own review and rationale.

Reverted this change, leaving it for later.

Please take another look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493629</commentid>
    <comment_count>5</comment_count>
      <attachid>113107</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-31 16:51:14 -0700</bug_when>
    <thetext>Comment on attachment 113107
Patch

Patch looks good, but does not apply in the EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493666</commentid>
    <comment_count>6</comment_count>
      <attachid>113115</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-10-31 17:32:53 -0700</bug_when>
    <thetext>Created attachment 113115
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493727</commentid>
    <comment_count>7</comment_count>
      <attachid>113115</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2011-10-31 20:28:13 -0700</bug_when>
    <thetext>Comment on attachment 113115
Patch

Attachment 113115 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/10241949</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494005</commentid>
    <comment_count>8</comment_count>
      <attachid>113191</attachid>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-11-01 10:38:41 -0700</bug_when>
    <thetext>Created attachment 113191
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494008</commentid>
    <comment_count>9</comment_count>
    <who name="Emil A Eklund">eae</who>
    <bug_when>2011-11-01 10:41:55 -0700</bug_when>
    <thetext>Thanks Darin!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494254</commentid>
    <comment_count>10</comment_count>
      <attachid>113191</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-01 16:02:37 -0700</bug_when>
    <thetext>Comment on attachment 113191
Patch

Clearing flags on attachment: 113191

Committed r99008: &lt;http://trac.webkit.org/changeset/99008&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494256</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-01 16:02:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113097</attachid>
            <date>2011-10-31 15:56:40 -0700</date>
            <delta_ts>2011-10-31 16:47:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71249-20111031155639.patch</filename>
            <type>text/plain</type>
            <size>18790</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4ODkzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMTAtMzEgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN3aXRjaCBSZW5kZXJPYmplY3Qg
dG8gbGF5b3V0IGFic3RyYWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MTI0OQorCisgICAgICAgIFN3aXRjaCBSZW5kZXJPYmplY3QgdG8gTGF5
b3V0UmVjdC9TaXplL1BvaW50IGFic3RyYWN0aW9uLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpk
cmF3TGluZUZvckJveFNpZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphZGRQ
REZVUkxSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphYnNvbHV0ZUZv
Y3VzUmluZ1F1YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWRkQWJzb2x1
dGVSZWN0Rm9yTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpyZXBhaW50
QWZ0ZXJMYXlvdXRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNv
bXB1dGVSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnZp
ZXdSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6bWFwTG9jYWxUb0NvbnRh
aW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmxvY2FsQ2FyZXRSZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWRkRGFzaGJvYXJkUmVnaW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om1heGltYWxPdXRsaW5lU2l6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFkanVzdFJlY3RGb3JPdXRsaW5lQW5kU2hhZG93
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1z
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWJzb2x1dGVDbGlwcGVkT3ZlcmZs
b3dSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y29tcHV0ZUFic29sdXRl
UmVwYWludFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphYnNvbHV0ZU91
dGxpbmVCb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpvdXRsaW5lQm91
bmRzRm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RGb3JBYnNvbHV0ZVpvb20p
OgorCiAyMDExLTEwLTMxICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFVwZGF0ZSBYTUxIdHRwUmVxdWVzdC5zZW5kIGlkbCBkZWNsYXJhdGlvbiB0
byBtYXRjaCBpbXBsZW1lbnRhdGlvbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiA5ODg2MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03ODcsMTEgKzc4NywxMSBA
QCBib29sIFJlbmRlck9iamVjdDo6bXVzdFJlcGFpbnRCYWNrZ3JvdW5kCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi12b2lkIFJlbmRlck9iamVjdDo6ZHJhd0xpbmVGb3JCb3hTaWRlKEdyYXBoaWNz
Q29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgeDEsIGludCB5MSwgaW50IHgyLCBpbnQgeTIs
Cit2b2lkIFJlbmRlck9iamVjdDo6ZHJhd0xpbmVGb3JCb3hTaWRlKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBMYXlvdXRVbml0IHgxLCBMYXlvdXRVbml0IHkxLCBMYXlvdXRVbml0
IHgyLCBMYXlvdXRVbml0IHkyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBCb3hTaWRlIHNpZGUsIENvbG9yIGNvbG9yLCBFQm9yZGVyU3R5bGUgc3R5bGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhZGphY2VudFdpZHRoMSwgaW50IGFk
amFjZW50V2lkdGgyLCBib29sIGFudGlhbGlhcykKIHsKLSAgICBpbnQgd2lkdGggPSAoc2lkZSA9
PSBCU1RvcCB8fCBzaWRlID09IEJTQm90dG9tID8geTIgLSB5MSA6IHgyIC0geDEpOworICAgIGlu
dCB3aWR0aCA9IHJvdW5kZigoc2lkZSA9PSBCU1RvcCB8fCBzaWRlID09IEJTQm90dG9tID8geTIg
LSB5MSA6IHgyIC0geDEpKTsKIAogICAgIGlmIChzdHlsZSA9PSBET1VCTEUgJiYgd2lkdGggPCAz
KQogICAgICAgICBzdHlsZSA9IFNPTElEOwpAQCAtOTYyLDcgKzk2Miw3IEBAIHZvaWQgUmVuZGVy
T2JqZWN0OjpkcmF3TGluZUZvckJveFNpZGUoR3IKICAgICAgICAgICAgICAgICAvLyB0aGlzIG1h
dHRlcnMgZm9yIHJlY3RzIGluIHRyYW5zZm9ybWVkIGNvbnRleHRzLgogICAgICAgICAgICAgICAg
IGJvb2wgd2FzQW50aWFsaWFzZWQgPSBncmFwaGljc0NvbnRleHQtPnNob3VsZEFudGlhbGlhcygp
OwogICAgICAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0U2hvdWxkQW50aWFsaWFzKGFu
dGlhbGlhcyk7Ci0gICAgICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3UmVjdChJbnRS
ZWN0KHgxLCB5MSwgeDIgLSB4MSwgeTIgLSB5MSkpOworICAgICAgICAgICAgICAgIGdyYXBoaWNz
Q29udGV4dC0+ZHJhd1JlY3QoZW5jbG9zaW5nSW50UmVjdChMYXlvdXRSZWN0KHgxLCB5MSwgeDIg
LSB4MSwgeTIgLSB5MSkpKTsKICAgICAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldFNo
b3VsZEFudGlhbGlhcyh3YXNBbnRpYWxpYXNlZCk7CiAgICAgICAgICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5zZXRTdHJva2VTdHlsZShvbGRTdHJva2VTdHlsZSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTA5Nyw3ICsxMDk3LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnBhaW50Rm9j
dXNSaW5nKEdyYXBoaQogICAgICAgICBhZGRQREZVUkxSZWN0KGNvbnRleHQsIHVuaW9uUmVjdChm
b2N1c1JpbmdSZWN0cykpOwogfSAgICAgICAgCiAKLXZvaWQgUmVuZGVyT2JqZWN0OjphZGRQREZV
UkxSZWN0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3Zv
aWQgUmVuZGVyT2JqZWN0OjphZGRQREZVUkxSZWN0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKIHsKICAgICBpZiAocmVjdC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTExMDcsNyArMTEwNyw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjphZGRQ
REZVUkxSZWN0KEdyYXBoaWMKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGhyZWYgPSBzdGF0aWNf
Y2FzdDxFbGVtZW50Kj4obiktPmdldEF0dHJpYnV0ZShocmVmQXR0cik7CiAgICAgaWYgKGhyZWYu
aXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBjb250ZXh0LT5zZXRVUkxGb3JSZWN0KG4t
PmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKGhyZWYpLCByZWN0KTsKKyAgICBjb250ZXh0LT5zZXRV
UkxGb3JSZWN0KG4tPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKGhyZWYpLCBlbmNsb3NpbmdJbnRS
ZWN0KHJlY3QpKTsKIH0KIAogdm9pZCBSZW5kZXJPYmplY3Q6OnBhaW50T3V0bGluZShHcmFwaGlj
c0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnRSZWN0KQpA
QCAtMTE2Myw3ICsxMTYzLDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnBhaW50T3V0bGluZShHcmFw
aGljcwogICAgICAgICBncmFwaGljc0NvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiB9
CiAKLUludFJlY3QgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChib29sIHVz
ZVRyYW5zZm9ybXMpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlck9iamVjdDo6YWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3QoYm9vbCB1c2VUcmFuc2Zvcm1zKSBjb25zdAogewogICAgIGlmICh1c2VUcmFu
c2Zvcm1zKSB7CiAgICAgICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1YWRzOwpAQCAtMTE3MywyMSAr
MTE3MywyMSBAQCBJbnRSZWN0IFJlbmRlck9iamVjdDo6YWJzb2x1dGVCb3VuZGluZ0JvCiAgICAg
ICAgIGlmICghbikKICAgICAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CiAgICAgCi0gICAgICAg
IEludFJlY3QgcmVzdWx0ID0gcXVhZHNbMF0uZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKKyAgICAg
ICAgTGF5b3V0UmVjdCByZXN1bHQgPSBxdWFkc1swXS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpOwog
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IG47ICsraSkKICAgICAgICAgICAgIHJlc3Vs
dC51bml0ZShxdWFkc1tpXS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpKTsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9CiAKICAgICBGbG9hdFBvaW50IGFic1BvcyA9IGxvY2FsVG9BYnNvbHV0
ZSgpOwotICAgIFZlY3RvcjxJbnRSZWN0PiByZWN0czsKLSAgICBhYnNvbHV0ZVJlY3RzKHJlY3Rz
LCBmbG9vcmVkTGF5b3V0UG9pbnQoYWJzUG9zKSk7CisgICAgVmVjdG9yPExheW91dFJlY3Q+IHJl
Y3RzOworICAgIGFic29sdXRlUmVjdHMocmVjdHMsIHJvdW5kZWRMYXlvdXRQb2ludChhYnNQb3Mp
KTsKIAogICAgIHNpemVfdCBuID0gcmVjdHMuc2l6ZSgpOwogICAgIGlmICghbikKLSAgICAgICAg
cmV0dXJuIEludFJlY3QoKTsKKyAgICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKIAotICAgIElu
dFJlY3QgcmVzdWx0ID0gcmVjdHNbMF07CisgICAgTGF5b3V0UmVjdCByZXN1bHQgPSByZWN0c1sw
XTsKICAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IG47ICsraSkKICAgICAgICAgcmVzdWx0LnVu
aXRlKHJlY3RzW2ldKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTE5NSwyMiArMTE5NSwyMiBA
QCBJbnRSZWN0IFJlbmRlck9iamVjdDo6YWJzb2x1dGVCb3VuZGluZ0JvCiAKIHZvaWQgUmVuZGVy
T2JqZWN0OjphYnNvbHV0ZUZvY3VzUmluZ1F1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykK
IHsKLSAgICBWZWN0b3I8SW50UmVjdD4gcmVjdHM7CisgICAgVmVjdG9yPExheW91dFJlY3Q+IHJl
Y3RzOwogICAgIC8vIEZJWE1FOiBhZGRGb2N1c1JpbmdSZWN0cygpIG5lZWRzIHRvIGJlIHBhc3Nl
ZCB0aGlzIHRyYW5zZm9ybS11bmF3YXJlCiAgICAgLy8gbG9jYWxUb0Fic29sdXRlKCkgb2Zmc2V0
IGhlcmUgYmVjYXVzZSBSZW5kZXJJbmxpbmU6OmFkZEZvY3VzUmluZ1JlY3RzKCkKICAgICAvLyBp
bXBsaWNpdGx5IGFzc3VtZXMgdGhhdC4gVGhpcyBkb2Vzbid0IHdvcmsgY29ycmVjdGx5IHdpdGgg
dHJhbnNmb3JtZWQKICAgICAvLyBkZXNjZW5kYW50cy4KICAgICBGbG9hdFBvaW50IGFic29sdXRl
UG9pbnQgPSBsb2NhbFRvQWJzb2x1dGUoKTsKLSAgICBhZGRGb2N1c1JpbmdSZWN0cyhyZWN0cywg
Zmxvb3JlZEludFBvaW50KGFic29sdXRlUG9pbnQpKTsKKyAgICBhZGRGb2N1c1JpbmdSZWN0cyhy
ZWN0cywgZmxvb3JlZExheW91dFBvaW50KGFic29sdXRlUG9pbnQpKTsKICAgICBzaXplX3QgY291
bnQgPSByZWN0cy5zaXplKCk7IAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsr
aSkgewotICAgICAgICBJbnRSZWN0IHJlY3QgPSByZWN0c1tpXTsKKyAgICAgICAgTGF5b3V0UmVj
dCByZWN0ID0gcmVjdHNbaV07CiAgICAgICAgIHJlY3QubW92ZSgtYWJzb2x1dGVQb2ludC54KCks
IC1hYnNvbHV0ZVBvaW50LnkoKSk7CiAgICAgICAgIHF1YWRzLmFwcGVuZChsb2NhbFRvQWJzb2x1
dGVRdWFkKEZsb2F0UXVhZChyZWN0KSkpOwogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJPYmplY3Q6
OmFkZEFic29sdXRlUmVjdEZvckxheWVyKEludFJlY3QmIHJlc3VsdCkKK3ZvaWQgUmVuZGVyT2Jq
ZWN0OjphZGRBYnNvbHV0ZVJlY3RGb3JMYXllcihMYXlvdXRSZWN0JiByZXN1bHQpCiB7CiAgICAg
aWYgKGhhc0xheWVyKCkpCiAgICAgICAgIHJlc3VsdC51bml0ZShhYnNvbHV0ZUJvdW5kaW5nQm94
UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpKTsKQEAgLTEzOTksOSArMTM5OSw5IEBAIGJvb2wgUmVu
ZGVyT2JqZWN0OjpyZXBhaW50QWZ0ZXJMYXlvdXRJZk4KICAgICAgICAgTGF5b3V0VW5pdCBzaGFk
b3dSaWdodDsKICAgICAgICAgc3R5bGUoKS0+Z2V0Qm94U2hhZG93SG9yaXpvbnRhbEV4dGVudChz
aGFkb3dMZWZ0LCBzaGFkb3dSaWdodCk7CiAKLSAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJSaWdo
dCA9IGlzQm94KCkgPyB0b1JlbmRlckJveCh0aGlzKS0+Ym9yZGVyUmlnaHQoKSA6IDA7Ci0gICAg
ICAgIExheW91dFVuaXQgYm94V2lkdGggPSBpc0JveCgpID8gdG9SZW5kZXJCb3godGhpcyktPndp
ZHRoKCkgOiAwOwotICAgICAgICBMYXlvdXRVbml0IGJvcmRlcldpZHRoID0gbWF4KC1vdXRsaW5l
U3R5bGUtPm91dGxpbmVPZmZzZXQoKSwgbWF4KGJvcmRlclJpZ2h0LCBtYXgoc3R5bGUoKS0+Ym9y
ZGVyVG9wUmlnaHRSYWRpdXMoKS53aWR0aCgpLmNhbGNWYWx1ZShib3hXaWR0aCksIHN0eWxlKCkt
PmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkud2lkdGgoKS5jYWxjVmFsdWUoYm94V2lkdGgpKSkp
ICsgbWF4KG93LCBzaGFkb3dSaWdodCk7CisgICAgICAgIExheW91dFVuaXQgYm9yZGVyUmlnaHQg
PSBpc0JveCgpID8gdG9SZW5kZXJCb3godGhpcyktPmJvcmRlclJpZ2h0KCkgOiBMYXlvdXRVbml0
KDApOworICAgICAgICBMYXlvdXRVbml0IGJveFdpZHRoID0gaXNCb3goKSA/IHRvUmVuZGVyQm94
KHRoaXMpLT53aWR0aCgpIDogTGF5b3V0VW5pdCgwKTsKKyAgICAgICAgTGF5b3V0VW5pdCBib3Jk
ZXJXaWR0aCA9IG1heDxMYXlvdXRVbml0Pigtb3V0bGluZVN0eWxlLT5vdXRsaW5lT2Zmc2V0KCks
IG1heChib3JkZXJSaWdodCwgbWF4PExheW91dFVuaXQ+KHN0eWxlKCktPmJvcmRlclRvcFJpZ2h0
UmFkaXVzKCkud2lkdGgoKS5jYWxjVmFsdWUoYm94V2lkdGgpLCBzdHlsZSgpLT5ib3JkZXJCb3R0
b21SaWdodFJhZGl1cygpLndpZHRoKCkuY2FsY1ZhbHVlKGJveFdpZHRoKSkpKSArIG1heChvdywg
c2hhZG93UmlnaHQpOwogICAgICAgICBMYXlvdXRSZWN0IHJpZ2h0UmVjdChuZXdPdXRsaW5lQm94
LngoKSArIG1pbihuZXdPdXRsaW5lQm94LndpZHRoKCksIG9sZE91dGxpbmVCb3gud2lkdGgoKSkg
LSBib3JkZXJXaWR0aCwKICAgICAgICAgICAgIG5ld091dGxpbmVCb3gueSgpLAogICAgICAgICAg
ICAgd2lkdGggKyBib3JkZXJXaWR0aCwKQEAgLTE0MTgsOSArMTQxOCw5IEBAIGJvb2wgUmVuZGVy
T2JqZWN0OjpyZXBhaW50QWZ0ZXJMYXlvdXRJZk4KICAgICAgICAgTGF5b3V0VW5pdCBzaGFkb3dC
b3R0b207CiAgICAgICAgIHN0eWxlKCktPmdldEJveFNoYWRvd1ZlcnRpY2FsRXh0ZW50KHNoYWRv
d1RvcCwgc2hhZG93Qm90dG9tKTsKIAotICAgICAgICBMYXlvdXRVbml0IGJvcmRlckJvdHRvbSA9
IGlzQm94KCkgPyB0b1JlbmRlckJveCh0aGlzKS0+Ym9yZGVyQm90dG9tKCkgOiAwOwotICAgICAg
ICBMYXlvdXRVbml0IGJveEhlaWdodCA9IGlzQm94KCkgPyB0b1JlbmRlckJveCh0aGlzKS0+aGVp
Z2h0KCkgOiAwOwotICAgICAgICBMYXlvdXRVbml0IGJvcmRlckhlaWdodCA9IG1heCgtb3V0bGlu
ZVN0eWxlLT5vdXRsaW5lT2Zmc2V0KCksIG1heChib3JkZXJCb3R0b20sIG1heChzdHlsZSgpLT5i
b3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKGJveEhlaWdodCksIHN0
eWxlKCktPmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKGJveEhl
aWdodCkpKSkgKyBtYXgob3csIHNoYWRvd0JvdHRvbSk7CisgICAgICAgIExheW91dFVuaXQgYm9y
ZGVyQm90dG9tID0gaXNCb3goKSA/IHRvUmVuZGVyQm94KHRoaXMpLT5ib3JkZXJCb3R0b20oKSA6
IExheW91dFVuaXQoMCk7CisgICAgICAgIExheW91dFVuaXQgYm94SGVpZ2h0ID0gaXNCb3goKSA/
IHRvUmVuZGVyQm94KHRoaXMpLT5oZWlnaHQoKSA6IExheW91dFVuaXQoMCk7CisgICAgICAgIExh
eW91dFVuaXQgYm9yZGVySGVpZ2h0ID0gbWF4PExheW91dFVuaXQ+KC1vdXRsaW5lU3R5bGUtPm91
dGxpbmVPZmZzZXQoKSwgbWF4KGJvcmRlckJvdHRvbSwgbWF4PExheW91dFVuaXQ+KHN0eWxlKCkt
PmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS5oZWlnaHQoKS5jYWxjVmFsdWUoYm94SGVpZ2h0KSwg
c3R5bGUoKS0+Ym9yZGVyQm90dG9tUmlnaHRSYWRpdXMoKS5oZWlnaHQoKS5jYWxjVmFsdWUoYm94
SGVpZ2h0KSkpKSArIG1heChvdywgc2hhZG93Qm90dG9tKTsKICAgICAgICAgTGF5b3V0UmVjdCBi
b3R0b21SZWN0KG5ld091dGxpbmVCb3gueCgpLAogICAgICAgICAgICAgbWluKG5ld091dGxpbmVC
b3gubWF4WSgpLCBvbGRPdXRsaW5lQm94Lm1heFkoKSkgLSBib3JkZXJIZWlnaHQsCiAgICAgICAg
ICAgICBtYXgobmV3T3V0bGluZUJveC53aWR0aCgpLCBvbGRPdXRsaW5lQm94LndpZHRoKCkpLApA
QCAtMTQ2Myw3ICsxNDYzLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJPYmplY3Q6OmNsaXBwZWRPdmVy
ZmxvdwogICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CiB9CiAKLXZvaWQgUmVuZGVyT2JqZWN0Ojpj
b21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIEludFJlY3QmIHJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0Cit2b2lkIFJlbmRlck9iamVjdDo6
Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyLCBMYXlvdXRSZWN0JiByZWN0LCBib29sIGZpeGVkKSBjb25zdAogewogICAgIGlmIChyZXBh
aW50Q29udGFpbmVyID09IHRoaXMpCiAgICAgICAgIHJldHVybjsKQEAgLTE0ODEsMTAgKzE0ODEs
MTAgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmNvbXB1dGVSZWN0Rm9yUmVwYWludAogICAgICAgICAg
ICAgLy8gYW55d2F5IGlmIGl0cyBzaXplIGRvZXMgY2hhbmdlLgogICAgICAgICAgICAgUmVuZGVy
Qm94KiBib3hQYXJlbnQgPSB0b1JlbmRlckJveChvKTsKIAotICAgICAgICAgICAgSW50UmVjdCBy
ZXBhaW50UmVjdChyZWN0KTsKKyAgICAgICAgICAgIExheW91dFJlY3QgcmVwYWludFJlY3QocmVj
dCk7CiAgICAgICAgICAgICByZXBhaW50UmVjdC5tb3ZlKC1ib3hQYXJlbnQtPmxheWVyKCktPnNj
cm9sbGVkQ29udGVudE9mZnNldCgpKTsgLy8gRm9yIG92ZXJmbG93OmF1dG8vc2Nyb2xsL2hpZGRl
bi4KIAotICAgICAgICAgICAgSW50UmVjdCBib3hSZWN0KEludFBvaW50KCksIGJveFBhcmVudC0+
bGF5ZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIExheW91dFJlY3QgYm94UmVjdChMYXlvdXRQ
b2ludCgpLCBib3hQYXJlbnQtPmxheWVyKCktPnNpemUoKSk7CiAgICAgICAgICAgICByZWN0ID0g
aW50ZXJzZWN0aW9uKHJlcGFpbnRSZWN0LCBib3hSZWN0KTsKICAgICAgICAgICAgIGlmIChyZWN0
LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0xOTQxLDcgKzE5NDEsNyBA
QCB2b2lkIFJlbmRlck9iamVjdDo6dXBkYXRlSW1hZ2UoU3R5bGVJbWFnCiAgICAgfQogfQogCi1J
bnRSZWN0IFJlbmRlck9iamVjdDo6dmlld1JlY3QoKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJP
YmplY3Q6OnZpZXdSZWN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gdmlldygpLT52aWV3UmVjdCgp
OwogfQpAQCAtMTk3MywxMiArMTk3MywxMiBAQCB2b2lkIFJlbmRlck9iamVjdDo6bWFwTG9jYWxU
b0NvbnRhaW5lcihSCiAgICAgaWYgKCFvKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbnRQb2lu
dCBjZW50ZXJQb2ludCA9IHJvdW5kZWRJbnRQb2ludCh0cmFuc2Zvcm1TdGF0ZS5tYXBwZWRQb2lu
dCgpKTsKKyAgICBMYXlvdXRQb2ludCBjZW50ZXJQb2ludCA9IHJvdW5kZWRMYXlvdXRQb2ludCh0
cmFuc2Zvcm1TdGF0ZS5tYXBwZWRQb2ludCgpKTsKICAgICBpZiAoby0+aXNCb3goKSAmJiBvLT5z
dHlsZSgpLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9kZSgpKQotICAgICAgICB0cmFuc2Zvcm1T
dGF0ZS5tb3ZlKHRvUmVuZGVyQm94KG8pLT5mbGlwRm9yV3JpdGluZ01vZGVJbmNsdWRpbmdDb2x1
bW5zKHJvdW5kZWRJbnRQb2ludCh0cmFuc2Zvcm1TdGF0ZS5tYXBwZWRQb2ludCgpKSkgLSBjZW50
ZXJQb2ludCk7CisgICAgICAgIHRyYW5zZm9ybVN0YXRlLm1vdmUodG9SZW5kZXJCb3gobyktPmZs
aXBGb3JXcml0aW5nTW9kZUluY2x1ZGluZ0NvbHVtbnMocm91bmRlZExheW91dFBvaW50KHRyYW5z
Zm9ybVN0YXRlLm1hcHBlZFBvaW50KCkpKSAtIGNlbnRlclBvaW50KTsKIAotICAgIEludFNpemUg
Y29sdW1uT2Zmc2V0OwotICAgIG8tPmFkanVzdEZvckNvbHVtbnMoY29sdW1uT2Zmc2V0LCByb3Vu
ZGVkSW50UG9pbnQodHJhbnNmb3JtU3RhdGUubWFwcGVkUG9pbnQoKSkpOworICAgIExheW91dFNp
emUgY29sdW1uT2Zmc2V0OworICAgIG8tPmFkanVzdEZvckNvbHVtbnMoY29sdW1uT2Zmc2V0LCBy
b3VuZGVkTGF5b3V0UG9pbnQodHJhbnNmb3JtU3RhdGUubWFwcGVkUG9pbnQoKSkpOwogICAgIGlm
ICghY29sdW1uT2Zmc2V0LmlzWmVybygpKQogICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5tb3ZlKGNv
bHVtbk9mZnNldCk7CiAKQEAgLTIwODEsMTIgKzIwODEsMTIgQEAgTGF5b3V0U2l6ZSBSZW5kZXJP
YmplY3Q6Om9mZnNldEZyb21BbmNlcwogICAgIHJldHVybiBvZmZzZXQ7CiB9CiAKLUludFJlY3Qg
UmVuZGVyT2JqZWN0Ojpsb2NhbENhcmV0UmVjdChJbmxpbmVCb3gqLCBpbnQsIGludCogZXh0cmFX
aWR0aFRvRW5kT2ZMaW5lKQorTGF5b3V0UmVjdCBSZW5kZXJPYmplY3Q6OmxvY2FsQ2FyZXRSZWN0
KElubGluZUJveCosIGludCwgTGF5b3V0VW5pdCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKQogewog
ICAgIGlmIChleHRyYVdpZHRoVG9FbmRPZkxpbmUpCiAgICAgICAgICpleHRyYVdpZHRoVG9FbmRP
ZkxpbmUgPSAwOwogCi0gICAgcmV0dXJuIEludFJlY3QoKTsKKyAgICByZXR1cm4gTGF5b3V0UmVj
dCgpOwogfQogCiBSZW5kZXJWaWV3KiBSZW5kZXJPYmplY3Q6OnZpZXcoKSBjb25zdApAQCAtMjQ3
OSwxMiArMjQ3OSwxMiBAQCB2b2lkIFJlbmRlck9iamVjdDo6YWRkRGFzaGJvYXJkUmVnaW9ucyhW
CiAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgICAgU3R5bGVEYXNoYm9h
cmRSZWdpb24gc3R5bGVSZWdpb24gPSBzdHlsZVJlZ2lvbnNbaV07CiAKLSAgICAgICAgaW50IHcg
PSBib3gtPndpZHRoKCk7Ci0gICAgICAgIGludCBoID0gYm94LT5oZWlnaHQoKTsKKyAgICAgICAg
TGF5b3V0VW5pdCB3ID0gYm94LT53aWR0aCgpOworICAgICAgICBMYXlvdXRVbml0IGggPSBib3gt
PmhlaWdodCgpOwogCiAgICAgICAgIERhc2hib2FyZFJlZ2lvblZhbHVlIHJlZ2lvbjsKICAgICAg
ICAgcmVnaW9uLmxhYmVsID0gc3R5bGVSZWdpb24ubGFiZWw7Ci0gICAgICAgIHJlZ2lvbi5ib3Vu
ZHMgPSBJbnRSZWN0KHN0eWxlUmVnaW9uLm9mZnNldC5sZWZ0KCkudmFsdWUoKSwKKyAgICAgICAg
cmVnaW9uLmJvdW5kcyA9IExheW91dFJlY3Qoc3R5bGVSZWdpb24ub2Zmc2V0LmxlZnQoKS52YWx1
ZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZVJlZ2lvbi5vZmZzZXQu
dG9wKCkudmFsdWUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdyAtIHN0eWxl
UmVnaW9uLm9mZnNldC5sZWZ0KCkudmFsdWUoKSAtIHN0eWxlUmVnaW9uLm9mZnNldC5yaWdodCgp
LnZhbHVlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggLSBzdHlsZVJlZ2lv
bi5vZmZzZXQudG9wKCkudmFsdWUoKSAtIHN0eWxlUmVnaW9uLm9mZnNldC5ib3R0b20oKS52YWx1
ZSgpKTsKQEAgLTI1MzcsNyArMjUzNyw3IEBAIGJvb2wgUmVuZGVyT2JqZWN0Ojp3aWxsUmVuZGVy
SW1hZ2UoQ2FjaGUKICAgICByZXR1cm4gIWRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkgJiYgIWRv
Y3VtZW50KCktPnZpZXcoKS0+aXNPZmZzY3JlZW4oKTsKIH0KIAotaW50IFJlbmRlck9iamVjdDo6
bWF4aW1hbE91dGxpbmVTaXplKFBhaW50UGhhc2UgcCkgY29uc3QKK0xheW91dFVuaXQgUmVuZGVy
T2JqZWN0OjptYXhpbWFsT3V0bGluZVNpemUoUGFpbnRQaGFzZSBwKSBjb25zdAogewogICAgIGlm
IChwICE9IFBhaW50UGhhc2VPdXRsaW5lICYmIHAgIT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5lICYm
IHAgIT0gUGFpbnRQaGFzZUNoaWxkT3V0bGluZXMpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjU3
Myw5ICsyNTczLDkgQEAgaW50IFJlbmRlck9iamVjdDo6bmV4dE9mZnNldChpbnQgY3VycmVudAog
ICAgIHJldHVybiBjdXJyZW50ICsgMTsKIH0KIAotdm9pZCBSZW5kZXJPYmplY3Q6OmFkanVzdFJl
Y3RGb3JPdXRsaW5lQW5kU2hhZG93KEludFJlY3QmIHJlY3QpIGNvbnN0Cit2b2lkIFJlbmRlck9i
amVjdDo6YWRqdXN0UmVjdEZvck91dGxpbmVBbmRTaGFkb3coTGF5b3V0UmVjdCYgcmVjdCkgY29u
c3QKIHsKLSAgICBpbnQgb3V0bGluZVNpemUgPSBvdXRsaW5lU3R5bGVGb3JSZXBhaW50KCktPm91
dGxpbmVTaXplKCk7CisgICAgTGF5b3V0VW5pdCBvdXRsaW5lU2l6ZSA9IG91dGxpbmVTdHlsZUZv
clJlcGFpbnQoKS0+b3V0bGluZVNpemUoKTsKICAgICBpZiAoY29uc3QgU2hhZG93RGF0YSogYm94
U2hhZG93ID0gc3R5bGUoKS0+Ym94U2hhZG93KCkpIHsKICAgICAgICAgYm94U2hhZG93LT5hZGp1
c3RSZWN0Rm9yU2hhZG93KHJlY3QsIG91dGxpbmVTaXplKTsKICAgICAgICAgcmV0dXJuOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkocmV2aXNpb24gOTg4NjEp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwOSw4ICsxMDksOCBAQCBzdHJ1Y3QgRGFzaGJvYXJkUmVnaW9uVmFsdWUgewogICAg
IH0KIAogICAgIFN0cmluZyBsYWJlbDsKLSAgICBJbnRSZWN0IGJvdW5kczsKLSAgICBJbnRSZWN0
IGNsaXA7CisgICAgTGF5b3V0UmVjdCBib3VuZHM7CisgICAgTGF5b3V0UmVjdCBjbGlwOwogICAg
IGludCB0eXBlOwogfTsKICNlbmRpZgpAQCAtMjQ0LDcgKzI0NCw3IEBAIHByb3RlY3RlZDoKICAg
ICB9CiAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiBwcml2
YXRlOgotICAgIHZvaWQgYWRkQWJzb2x1dGVSZWN0Rm9yTGF5ZXIoSW50UmVjdCYgcmVzdWx0KTsK
KyAgICB2b2lkIGFkZEFic29sdXRlUmVjdEZvckxheWVyKExheW91dFJlY3QmIHJlc3VsdCk7CiAg
ICAgdm9pZCBzZXRMYXllck5lZWRzRnVsbFJlcGFpbnQoKTsKIAogcHVibGljOgpAQCAtNjQ2LDgg
KzY0Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0b3I8
TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0IHsgfQogCiAgICAgLy8gRklY
TUU6IHVzZVRyYW5zZm9ybXMgc2hvdWxkIGdvIGF3YXkgZXZlbnR1YWxseQotICAgIEludFJlY3Qg
YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoYm9vbCB1c2VUcmFuc2Zvcm0gPSB0cnVlKSBjb25zdDsK
LSAgICBJbnRSZWN0IGFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCkg
Y29uc3QgeyByZXR1cm4gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoZmFsc2UpOyB9CisgICAgTGF5
b3V0UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChib29sIHVzZVRyYW5zZm9ybSA9IHRydWUp
IGNvbnN0OworICAgIExheW91dFJlY3QgYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmluZ1Ry
YW5zZm9ybXMoKSBjb25zdCB7IHJldHVybiBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChmYWxzZSk7
IH0KIAogICAgIC8vIEJ1aWxkIGFuIGFycmF5IG9mIHF1YWRzIGluIGFic29sdXRlIGNvb3JkcyBm
b3IgbGluZSBib3hlcwogICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9h
dFF1YWQ+JiwgYm9vbCogLyp3YXNGaXhlZCovID0gMCkgY29uc3QgeyB9CkBAIC03MDQsNyArNzA0
LDcgQEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJucyB0aGUgcmVjdCB0aGF0IHNob3VsZCBiZSBy
ZXBhaW50ZWQgd2hlbmV2ZXIgdGhpcyBvYmplY3QgY2hhbmdlcy4gIFRoZSByZWN0IGlzIGluIHRo
ZSB2aWV3J3MKICAgICAvLyBjb29yZGluYXRlIHNwYWNlLiAgVGhpcyBtZXRob2QgZGVhbHMgd2l0
aCBvdXRsaW5lcyBhbmQgb3ZlcmZsb3cuCi0gICAgSW50UmVjdCBhYnNvbHV0ZUNsaXBwZWRPdmVy
Zmxvd1JlY3QoKSBjb25zdAorICAgIExheW91dFJlY3QgYWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dS
ZWN0KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9y
UmVwYWludCgwKTsKICAgICB9CkBAIC03MTMsMTMgKzcxMywxMyBAQCBwdWJsaWM6CiAKICAgICAv
LyBHaXZlbiBhIHJlY3QgaW4gdGhlIG9iamVjdCdzIGNvb3JkaW5hdGUgc3BhY2UsIGNvbXB1dGUg
YSByZWN0IHN1aXRhYmxlIGZvciByZXBhaW50aW5nCiAgICAgLy8gdGhhdCByZWN0IGluIHZpZXcg
Y29vcmRpbmF0ZXMuCi0gICAgdm9pZCBjb21wdXRlQWJzb2x1dGVSZXBhaW50UmVjdChJbnRSZWN0
JiByLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0CisgICAgdm9pZCBjb21wdXRlQWJzb2x1dGVS
ZXBhaW50UmVjdChMYXlvdXRSZWN0JiByLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0CiAgICAg
ewogICAgICAgICByZXR1cm4gY29tcHV0ZVJlY3RGb3JSZXBhaW50KDAsIHIsIGZpeGVkKTsKICAg
ICB9CiAgICAgLy8gR2l2ZW4gYSByZWN0IGluIHRoZSBvYmplY3QncyBjb29yZGluYXRlIHNwYWNl
LCBjb21wdXRlIGEgcmVjdCBzdWl0YWJsZSBmb3IgcmVwYWludGluZwogICAgIC8vIHRoYXQgcmVj
dCBpbiB0aGUgY29vcmRpbmF0ZSBzcGFjZSBvZiByZXBhaW50Q29udGFpbmVyLgotICAgIHZpcnR1
YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFp
bnRDb250YWluZXIsIEludFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OworICAgIHZp
cnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0Owog
CiAgICAgLy8gSWYgbXVsdGlwbGUtY29sdW1uIGxheW91dCByZXN1bHRzIGluIGFwcGx5aW5nIGFu
IG9mZnNldCB0byB0aGUgZ2l2ZW4gcG9pbnQsIGFkZCB0aGUgc2FtZQogICAgIC8vIG9mZnNldCB0
byB0aGUgZ2l2ZW4gc2l6ZS4KQEAgLTczNSw3ICs3MzUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBo
YXNSZWZsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9oYXNSZWZsZWN0aW9uOyB9CiAKICAgICAv
LyBBcHBsaWVkIGFzIGEgInNsb3AiIHRvIGRpcnR5IHJlY3QgY2hlY2tzIGR1cmluZyB0aGUgb3V0
bGluZSBwYWludGluZyBwaGFzZSdzIGRpcnR5LXJlY3QgY2hlY2tzLgotICAgIGludCBtYXhpbWFs
T3V0bGluZVNpemUoUGFpbnRQaGFzZSkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBtYXhpbWFsT3V0
bGluZVNpemUoUGFpbnRQaGFzZSkgY29uc3Q7CiAKICAgICB2b2lkIHNldEhhc01hcmt1cFRydW5j
YXRpb24oYm9vbCBiID0gdHJ1ZSkgeyBtX2hhc01hcmt1cFRydW5jYXRpb24gPSBiOyB9CiAgICAg
Ym9vbCBoYXNNYXJrdXBUcnVuY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9oYXNNYXJrdXBUcnVu
Y2F0aW9uOyB9CkBAIC03ODAsNyArNzgwLDcgQEAgcHVibGljOgogICAgICAqIEBwYXJhbSBleHRy
YVdpZHRoVG9FbmRPZkxpbmUgb3B0aW9uYWwgb3V0IGFyZyB0byBnaXZlIGV4dHJhIHdpZHRoIHRv
IGVuZCBvZiBsaW5lIC0KICAgICAgKiB1c2VmdWwgZm9yIGNoYXJhY3RlciByYW5nZSByZWN0IGNv
bXB1dGF0aW9ucwogICAgICAqLwotICAgIHZpcnR1YWwgSW50UmVjdCBsb2NhbENhcmV0UmVjdChJ
bmxpbmVCb3gqLCBpbnQgY2FyZXRPZmZzZXQsIGludCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5lID0g
MCk7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IGxvY2FsQ2FyZXRSZWN0KElubGluZUJveCosIGlu
dCBjYXJldE9mZnNldCwgTGF5b3V0VW5pdCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5lID0gMCk7CiAK
ICAgICBib29sIGlzTWFyZ2luQmVmb3JlUXVpcmsoKSBjb25zdCB7IHJldHVybiBtX21hcmdpbkJl
Zm9yZVF1aXJrOyB9CiAgICAgYm9vbCBpc01hcmdpbkFmdGVyUXVpcmsoKSBjb25zdCB7IHJldHVy
biBtX21hcmdpbkFmdGVyUXVpcms7IH0KQEAgLTg0Myw3ICs4NDMsNyBAQCBwdWJsaWM6CiAgICAg
CiAgICAgdmlydHVhbCB2b2lkIGFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYs
IGNvbnN0IExheW91dFBvaW50JikgeyB9OwogCi0gICAgSW50UmVjdCBhYnNvbHV0ZU91dGxpbmVC
b3VuZHMoKSBjb25zdAorICAgIExheW91dFJlY3QgYWJzb2x1dGVPdXRsaW5lQm91bmRzKCkgY29u
c3QKICAgICB7CiAgICAgICAgIHJldHVybiBvdXRsaW5lQm91bmRzRm9yUmVwYWludCgwKTsKICAg
ICB9CkBAIC04NTUsMjEgKzg1NSwyMSBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHN0
eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxl
KTsKICAgICB2b2lkIHByb3BhZ2F0ZVN0eWxlVG9Bbm9ueW1vdXNDaGlsZHJlbihib29sIGJsb2Nr
Q2hpbGRyZW5Pbmx5ID0gZmFsc2UpOwogCi0gICAgdm9pZCBkcmF3TGluZUZvckJveFNpZGUoR3Jh
cGhpY3NDb250ZXh0KiwgaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50IHkyLCBCb3hTaWRlLAor
ICAgIHZvaWQgZHJhd0xpbmVGb3JCb3hTaWRlKEdyYXBoaWNzQ29udGV4dCosIExheW91dFVuaXQg
eDEsIExheW91dFVuaXQgeTEsIExheW91dFVuaXQgeDIsIExheW91dFVuaXQgeTIsIEJveFNpZGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3IsIEVCb3JkZXJTdHlsZSwgaW50IGFk
amJ3MSwgaW50IGFkamJ3MiwgYm9vbCBhbnRpYWxpYXMgPSBmYWxzZSk7CiAKICAgICB2b2lkIHBh
aW50Rm9jdXNSaW5nKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFBvaW50JiwgUmVuZGVy
U3R5bGUqKTsKICAgICB2b2lkIHBhaW50T3V0bGluZShHcmFwaGljc0NvbnRleHQqLCBjb25zdCBM
YXlvdXRSZWN0Jik7Ci0gICAgdm9pZCBhZGRQREZVUkxSZWN0KEdyYXBoaWNzQ29udGV4dCosIGNv
bnN0IEludFJlY3QmKTsKKyAgICB2b2lkIGFkZFBERlVSTFJlY3QoR3JhcGhpY3NDb250ZXh0Kiwg
Y29uc3QgTGF5b3V0UmVjdCYpOwogCi0gICAgdmlydHVhbCBJbnRSZWN0IHZpZXdSZWN0KCkgY29u
c3Q7CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IHZpZXdSZWN0KCkgY29uc3Q7CiAKLSAgICB2b2lk
IGFkanVzdFJlY3RGb3JPdXRsaW5lQW5kU2hhZG93KEludFJlY3QmKSBjb25zdDsKKyAgICB2b2lk
IGFkanVzdFJlY3RGb3JPdXRsaW5lQW5kU2hhZG93KExheW91dFJlY3QmKSBjb25zdDsKIAogICAg
IHZpcnR1YWwgdm9pZCB3aWxsQmVEZXN0cm95ZWQoKTsKICAgICB2b2lkIGFyZW5hRGVsZXRlKFJl
bmRlckFyZW5hKiwgdm9pZCogb2JqZWN0QmFzZSk7CiAKLSAgICB2aXJ0dWFsIEludFJlY3Qgb3V0
bGluZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIC8qcmVwYWludENvbnRh
aW5lciovLCBJbnRQb2ludCogLypjYWNoZWRPZmZzZXRUb1JlcGFpbnRDb250YWluZXIqLyA9IDAp
IGNvbnN0IHsgcmV0dXJuIEludFJlY3QoKTsgfQorICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBvdXRs
aW5lQm91bmRzRm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogLypyZXBhaW50Q29udGFp
bmVyKi8sIExheW91dFBvaW50KiAvKmNhY2hlZE9mZnNldFRvUmVwYWludENvbnRhaW5lciovID0g
MCkgY29uc3QgeyByZXR1cm4gTGF5b3V0UmVjdCgpOyB9CiAKIHByaXZhdGU6CiAgICAgUmVuZGVy
U3R5bGUqIGZpcnN0TGluZVN0eWxlU2xvd0Nhc2UoKSBjb25zdDsKQEAgLTEwNDksNyArMTA0OSw3
IEBAIGlubGluZSB2b2lkIG1ha2VNYXRyaXhSZW5kZXJhYmxlKFRyYW5zZm8KICNlbmRpZgogfQog
Ci1pbmxpbmUgaW50IGFkanVzdEZvckFic29sdXRlWm9vbShpbnQgdmFsdWUsIFJlbmRlck9iamVj
dCogcmVuZGVyZXIpCitpbmxpbmUgZmxvYXQgYWRqdXN0Rm9yQWJzb2x1dGVab29tKGludCB2YWx1
ZSwgUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKICAgICByZXR1cm4gYWRqdXN0Rm9yQWJzb2x1
dGVab29tKHZhbHVlLCByZW5kZXJlci0+c3R5bGUoKSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113107</attachid>
            <date>2011-10-31 16:47:53 -0700</date>
            <delta_ts>2011-10-31 17:32:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71249-20111031164753.patch</filename>
            <type>text/plain</type>
            <size>17881</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4OTA5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMTAtMzEgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN3aXRjaCBSZW5kZXJPYmplY3Qg
dG8gbGF5b3V0IGFic3RyYWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MTI0OQorCisgICAgICAgIFN3aXRjaCBSZW5kZXJPYmplY3QgdG8gTGF5
b3V0UmVjdC9TaXplL1BvaW50IGFic3RyYWN0aW9uLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4g
CisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlck9iamVjdDo6ZHJhd0xpbmVGb3JCb3hTaWRlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlck9iamVjdDo6YWRkUERGVVJMUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJP
YmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck9iamVjdDo6YWJzb2x1dGVGb2N1c1JpbmdRdWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJPYmplY3Q6OmFkZEFic29sdXRlUmVjdEZvckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck9iamVjdDo6cmVwYWludEFmdGVyTGF5b3V0SWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyT2JqZWN0Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyT2JqZWN0Ojp2aWV3UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmpl
Y3Q6Om1hcExvY2FsVG9Db250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0
Ojpsb2NhbENhcmV0UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFkZERh
c2hib2FyZFJlZ2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjptYXhpbWFs
T3V0bGluZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphZGp1c3RSZWN0
Rm9yT3V0bGluZUFuZFNoYWRvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm94UmVj
dElnbm9yaW5nVHJhbnNmb3Jtcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFi
c29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmpl
Y3Q6OmNvbXB1dGVBYnNvbHV0ZVJlcGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck9iamVjdDo6YWJzb2x1dGVPdXRsaW5lQm91bmRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck9iamVjdDo6b3V0bGluZUJvdW5kc0ZvclJlcGFpbnQpOgorCiAyMDExLTEwLTMxICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIG5lZWQgZm9yIHZpcnR1YWwg
SlNPYmplY3Q6OnVud3JhcHBlZE9iamVjdApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDk4NjEzKQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc4Nyw3ICs3ODcsNyBA
QCBib29sIFJlbmRlck9iamVjdDo6bXVzdFJlcGFpbnRCYWNrZ3JvdW5kCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi12b2lkIFJlbmRlck9iamVjdDo6ZHJhd0xpbmVGb3JCb3hTaWRlKEdyYXBoaWNz
Q29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgeDEsIGludCB5MSwgaW50IHgyLCBpbnQgeTIs
Cit2b2lkIFJlbmRlck9iamVjdDo6ZHJhd0xpbmVGb3JCb3hTaWRlKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBMYXlvdXRVbml0IHgxLCBMYXlvdXRVbml0IHkxLCBMYXlvdXRVbml0
IHgyLCBMYXlvdXRVbml0IHkyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBCb3hTaWRlIHNpZGUsIENvbG9yIGNvbG9yLCBFQm9yZGVyU3R5bGUgc3R5bGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhZGphY2VudFdpZHRoMSwgaW50IGFk
amFjZW50V2lkdGgyLCBib29sIGFudGlhbGlhcykKIHsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIHZv
aWQgUmVuZGVyT2JqZWN0OjpwYWludEZvY3VzUmluZyhHcmFwaGkKICAgICAgICAgYWRkUERGVVJM
UmVjdChjb250ZXh0LCB1bmlvblJlY3QoZm9jdXNSaW5nUmVjdHMpKTsKIH0gICAgICAgIAogCi12
b2lkIFJlbmRlck9iamVjdDo6YWRkUERGVVJMUmVjdChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFJlbmRlck9iamVjdDo6YWRkUERGVVJMUmVjdChH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91dFJlY3QmIHJlY3QpCiB7CiAgICAg
aWYgKHJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC0xMTA3LDcgKzExMDcsNyBA
QCB2b2lkIFJlbmRlck9iamVjdDo6YWRkUERGVVJMUmVjdChHcmFwaGljCiAgICAgY29uc3QgQXRv
bWljU3RyaW5nJiBocmVmID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pLT5nZXRBdHRyaWJ1dGUo
aHJlZkF0dHIpOwogICAgIGlmIChocmVmLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47Ci0gICAg
Y29udGV4dC0+c2V0VVJMRm9yUmVjdChuLT5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTChocmVmKSwg
cmVjdCk7CisgICAgY29udGV4dC0+c2V0VVJMRm9yUmVjdChuLT5kb2N1bWVudCgpLT5jb21wbGV0
ZVVSTChocmVmKSwgZW5jbG9zaW5nSW50UmVjdChyZWN0KSk7CiB9CiAKIHZvaWQgUmVuZGVyT2Jq
ZWN0OjpwYWludE91dGxpbmUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IExheW91dFJlY3QmIHBhaW50UmVjdCkKQEAgLTExNjMsNyArMTE2Myw3IEBAIHZvaWQgUmVuZGVy
T2JqZWN0OjpwYWludE91dGxpbmUoR3JhcGhpY3MKICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5l
bmRUcmFuc3BhcmVuY3lMYXllcigpOwogfQogCi1JbnRSZWN0IFJlbmRlck9iamVjdDo6YWJzb2x1
dGVCb3VuZGluZ0JveFJlY3QoYm9vbCB1c2VUcmFuc2Zvcm1zKSBjb25zdAorTGF5b3V0UmVjdCBS
ZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0KGJvb2wgdXNlVHJhbnNmb3Jtcykg
Y29uc3QKIHsKICAgICBpZiAodXNlVHJhbnNmb3JtcykgewogICAgICAgICBWZWN0b3I8RmxvYXRR
dWFkPiBxdWFkczsKQEAgLTExNzMsMjEgKzExNzMsMjEgQEAgSW50UmVjdCBSZW5kZXJPYmplY3Q6
OmFic29sdXRlQm91bmRpbmdCbwogICAgICAgICBpZiAoIW4pCiAgICAgICAgICAgICByZXR1cm4g
SW50UmVjdCgpOwogICAgIAotICAgICAgICBJbnRSZWN0IHJlc3VsdCA9IHF1YWRzWzBdLmVuY2xv
c2luZ0JvdW5kaW5nQm94KCk7CisgICAgICAgIExheW91dFJlY3QgcmVzdWx0ID0gcXVhZHNbMF0u
ZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBu
OyArK2kpCiAgICAgICAgICAgICByZXN1bHQudW5pdGUocXVhZHNbaV0uZW5jbG9zaW5nQm91bmRp
bmdCb3goKSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAgICAgRmxvYXRQb2lu
dCBhYnNQb3MgPSBsb2NhbFRvQWJzb2x1dGUoKTsKLSAgICBWZWN0b3I8SW50UmVjdD4gcmVjdHM7
CisgICAgVmVjdG9yPExheW91dFJlY3Q+IHJlY3RzOwogICAgIGFic29sdXRlUmVjdHMocmVjdHMs
IGZsb29yZWRMYXlvdXRQb2ludChhYnNQb3MpKTsKIAogICAgIHNpemVfdCBuID0gcmVjdHMuc2l6
ZSgpOwogICAgIGlmICghbikKLSAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKKyAgICAgICAgcmV0
dXJuIExheW91dFJlY3QoKTsKIAotICAgIEludFJlY3QgcmVzdWx0ID0gcmVjdHNbMF07CisgICAg
TGF5b3V0UmVjdCByZXN1bHQgPSByZWN0c1swXTsKICAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8
IG47ICsraSkKICAgICAgICAgcmVzdWx0LnVuaXRlKHJlY3RzW2ldKTsKICAgICByZXR1cm4gcmVz
dWx0OwpAQCAtMTE5NSwyMiArMTE5NSwyMiBAQCBJbnRSZWN0IFJlbmRlck9iamVjdDo6YWJzb2x1
dGVCb3VuZGluZ0JvCiAKIHZvaWQgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUZvY3VzUmluZ1F1YWRz
KFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcykKIHsKLSAgICBWZWN0b3I8SW50UmVjdD4gcmVjdHM7
CisgICAgVmVjdG9yPExheW91dFJlY3Q+IHJlY3RzOwogICAgIC8vIEZJWE1FOiBhZGRGb2N1c1Jp
bmdSZWN0cygpIG5lZWRzIHRvIGJlIHBhc3NlZCB0aGlzIHRyYW5zZm9ybS11bmF3YXJlCiAgICAg
Ly8gbG9jYWxUb0Fic29sdXRlKCkgb2Zmc2V0IGhlcmUgYmVjYXVzZSBSZW5kZXJJbmxpbmU6OmFk
ZEZvY3VzUmluZ1JlY3RzKCkKICAgICAvLyBpbXBsaWNpdGx5IGFzc3VtZXMgdGhhdC4gVGhpcyBk
b2Vzbid0IHdvcmsgY29ycmVjdGx5IHdpdGggdHJhbnNmb3JtZWQKICAgICAvLyBkZXNjZW5kYW50
cy4KICAgICBGbG9hdFBvaW50IGFic29sdXRlUG9pbnQgPSBsb2NhbFRvQWJzb2x1dGUoKTsKLSAg
ICBhZGRGb2N1c1JpbmdSZWN0cyhyZWN0cywgZmxvb3JlZEludFBvaW50KGFic29sdXRlUG9pbnQp
KTsKKyAgICBhZGRGb2N1c1JpbmdSZWN0cyhyZWN0cywgZmxvb3JlZExheW91dFBvaW50KGFic29s
dXRlUG9pbnQpKTsKICAgICBzaXplX3QgY291bnQgPSByZWN0cy5zaXplKCk7IAogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBJbnRSZWN0IHJlY3QgPSBy
ZWN0c1tpXTsKKyAgICAgICAgTGF5b3V0UmVjdCByZWN0ID0gcmVjdHNbaV07CiAgICAgICAgIHJl
Y3QubW92ZSgtYWJzb2x1dGVQb2ludC54KCksIC1hYnNvbHV0ZVBvaW50LnkoKSk7CiAgICAgICAg
IHF1YWRzLmFwcGVuZChsb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UXVhZChyZWN0KSkpOwogICAg
IH0KIH0KIAotdm9pZCBSZW5kZXJPYmplY3Q6OmFkZEFic29sdXRlUmVjdEZvckxheWVyKEludFJl
Y3QmIHJlc3VsdCkKK3ZvaWQgUmVuZGVyT2JqZWN0OjphZGRBYnNvbHV0ZVJlY3RGb3JMYXllcihM
YXlvdXRSZWN0JiByZXN1bHQpCiB7CiAgICAgaWYgKGhhc0xheWVyKCkpCiAgICAgICAgIHJlc3Vs
dC51bml0ZShhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpKTsKQEAg
LTEzOTksOSArMTM5OSw5IEBAIGJvb2wgUmVuZGVyT2JqZWN0OjpyZXBhaW50QWZ0ZXJMYXlvdXRJ
Zk4KICAgICAgICAgTGF5b3V0VW5pdCBzaGFkb3dSaWdodDsKICAgICAgICAgc3R5bGUoKS0+Z2V0
Qm94U2hhZG93SG9yaXpvbnRhbEV4dGVudChzaGFkb3dMZWZ0LCBzaGFkb3dSaWdodCk7CiAKLSAg
ICAgICAgTGF5b3V0VW5pdCBib3JkZXJSaWdodCA9IGlzQm94KCkgPyB0b1JlbmRlckJveCh0aGlz
KS0+Ym9yZGVyUmlnaHQoKSA6IDA7Ci0gICAgICAgIExheW91dFVuaXQgYm94V2lkdGggPSBpc0Jv
eCgpID8gdG9SZW5kZXJCb3godGhpcyktPndpZHRoKCkgOiAwOwotICAgICAgICBMYXlvdXRVbml0
IGJvcmRlcldpZHRoID0gbWF4KC1vdXRsaW5lU3R5bGUtPm91dGxpbmVPZmZzZXQoKSwgbWF4KGJv
cmRlclJpZ2h0LCBtYXgoc3R5bGUoKS0+Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKS53aWR0aCgpLmNh
bGNWYWx1ZShib3hXaWR0aCksIHN0eWxlKCktPmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkud2lk
dGgoKS5jYWxjVmFsdWUoYm94V2lkdGgpKSkpICsgbWF4KG93LCBzaGFkb3dSaWdodCk7CisgICAg
ICAgIExheW91dFVuaXQgYm9yZGVyUmlnaHQgPSBpc0JveCgpID8gdG9SZW5kZXJCb3godGhpcykt
PmJvcmRlclJpZ2h0KCkgOiBMYXlvdXRVbml0KDApOworICAgICAgICBMYXlvdXRVbml0IGJveFdp
ZHRoID0gaXNCb3goKSA/IHRvUmVuZGVyQm94KHRoaXMpLT53aWR0aCgpIDogTGF5b3V0VW5pdCgw
KTsKKyAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJXaWR0aCA9IG1heDxMYXlvdXRVbml0Pigtb3V0
bGluZVN0eWxlLT5vdXRsaW5lT2Zmc2V0KCksIG1heChib3JkZXJSaWdodCwgbWF4PExheW91dFVu
aXQ+KHN0eWxlKCktPmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGgoKS5jYWxjVmFsdWUoYm94
V2lkdGgpLCBzdHlsZSgpLT5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLndpZHRoKCkuY2FsY1Zh
bHVlKGJveFdpZHRoKSkpKSArIG1heChvdywgc2hhZG93UmlnaHQpOwogICAgICAgICBMYXlvdXRS
ZWN0IHJpZ2h0UmVjdChuZXdPdXRsaW5lQm94LngoKSArIG1pbihuZXdPdXRsaW5lQm94LndpZHRo
KCksIG9sZE91dGxpbmVCb3gud2lkdGgoKSkgLSBib3JkZXJXaWR0aCwKICAgICAgICAgICAgIG5l
d091dGxpbmVCb3gueSgpLAogICAgICAgICAgICAgd2lkdGggKyBib3JkZXJXaWR0aCwKQEAgLTE0
MTgsOSArMTQxOCw5IEBAIGJvb2wgUmVuZGVyT2JqZWN0OjpyZXBhaW50QWZ0ZXJMYXlvdXRJZk4K
ICAgICAgICAgTGF5b3V0VW5pdCBzaGFkb3dCb3R0b207CiAgICAgICAgIHN0eWxlKCktPmdldEJv
eFNoYWRvd1ZlcnRpY2FsRXh0ZW50KHNoYWRvd1RvcCwgc2hhZG93Qm90dG9tKTsKIAotICAgICAg
ICBMYXlvdXRVbml0IGJvcmRlckJvdHRvbSA9IGlzQm94KCkgPyB0b1JlbmRlckJveCh0aGlzKS0+
Ym9yZGVyQm90dG9tKCkgOiAwOwotICAgICAgICBMYXlvdXRVbml0IGJveEhlaWdodCA9IGlzQm94
KCkgPyB0b1JlbmRlckJveCh0aGlzKS0+aGVpZ2h0KCkgOiAwOwotICAgICAgICBMYXlvdXRVbml0
IGJvcmRlckhlaWdodCA9IG1heCgtb3V0bGluZVN0eWxlLT5vdXRsaW5lT2Zmc2V0KCksIG1heChi
b3JkZXJCb3R0b20sIG1heChzdHlsZSgpLT5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkuaGVpZ2h0
KCkuY2FsY1ZhbHVlKGJveEhlaWdodCksIHN0eWxlKCktPmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVz
KCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKGJveEhlaWdodCkpKSkgKyBtYXgob3csIHNoYWRvd0JvdHRv
bSk7CisgICAgICAgIExheW91dFVuaXQgYm9yZGVyQm90dG9tID0gaXNCb3goKSA/IHRvUmVuZGVy
Qm94KHRoaXMpLT5ib3JkZXJCb3R0b20oKSA6IExheW91dFVuaXQoMCk7CisgICAgICAgIExheW91
dFVuaXQgYm94SGVpZ2h0ID0gaXNCb3goKSA/IHRvUmVuZGVyQm94KHRoaXMpLT5oZWlnaHQoKSA6
IExheW91dFVuaXQoMCk7CisgICAgICAgIExheW91dFVuaXQgYm9yZGVySGVpZ2h0ID0gbWF4PExh
eW91dFVuaXQ+KC1vdXRsaW5lU3R5bGUtPm91dGxpbmVPZmZzZXQoKSwgbWF4KGJvcmRlckJvdHRv
bSwgbWF4PExheW91dFVuaXQ+KHN0eWxlKCktPmJvcmRlckJvdHRvbUxlZnRSYWRpdXMoKS5oZWln
aHQoKS5jYWxjVmFsdWUoYm94SGVpZ2h0KSwgc3R5bGUoKS0+Ym9yZGVyQm90dG9tUmlnaHRSYWRp
dXMoKS5oZWlnaHQoKS5jYWxjVmFsdWUoYm94SGVpZ2h0KSkpKSArIG1heChvdywgc2hhZG93Qm90
dG9tKTsKICAgICAgICAgTGF5b3V0UmVjdCBib3R0b21SZWN0KG5ld091dGxpbmVCb3gueCgpLAog
ICAgICAgICAgICAgbWluKG5ld091dGxpbmVCb3gubWF4WSgpLCBvbGRPdXRsaW5lQm94Lm1heFko
KSkgLSBib3JkZXJIZWlnaHQsCiAgICAgICAgICAgICBtYXgobmV3T3V0bGluZUJveC53aWR0aCgp
LCBvbGRPdXRsaW5lQm94LndpZHRoKCkpLApAQCAtMTQ2Myw3ICsxNDYzLDcgQEAgSW50UmVjdCBS
ZW5kZXJPYmplY3Q6OmNsaXBwZWRPdmVyZmxvd1JlYwogICAgIHJldHVybiBJbnRSZWN0KCk7CiB9
CiAKLXZvaWQgUmVuZGVyT2JqZWN0Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9k
ZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEludFJlY3QmIHJlY3QsIGJvb2wgZml4ZWQpIGNv
bnN0Cit2b2lkIFJlbmRlck9iamVjdDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1v
ZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiByZWN0LCBib29sIGZpeGVk
KSBjb25zdAogewogICAgIGlmIChyZXBhaW50Q29udGFpbmVyID09IHRoaXMpCiAgICAgICAgIHJl
dHVybjsKQEAgLTE0ODEsMTAgKzE0ODEsMTAgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OmNvbXB1dGVS
ZWN0Rm9yUmVwYWludAogICAgICAgICAgICAgLy8gYW55d2F5IGlmIGl0cyBzaXplIGRvZXMgY2hh
bmdlLgogICAgICAgICAgICAgUmVuZGVyQm94KiBib3hQYXJlbnQgPSB0b1JlbmRlckJveChvKTsK
IAotICAgICAgICAgICAgSW50UmVjdCByZXBhaW50UmVjdChyZWN0KTsKKyAgICAgICAgICAgIExh
eW91dFJlY3QgcmVwYWludFJlY3QocmVjdCk7CiAgICAgICAgICAgICByZXBhaW50UmVjdC5tb3Zl
KC1ib3hQYXJlbnQtPmxheWVyKCktPnNjcm9sbGVkQ29udGVudE9mZnNldCgpKTsgLy8gRm9yIG92
ZXJmbG93OmF1dG8vc2Nyb2xsL2hpZGRlbi4KIAotICAgICAgICAgICAgSW50UmVjdCBib3hSZWN0
KEludFBvaW50KCksIGJveFBhcmVudC0+bGF5ZXIoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIExh
eW91dFJlY3QgYm94UmVjdChMYXlvdXRQb2ludCgpLCBib3hQYXJlbnQtPmxheWVyKCktPnNpemUo
KSk7CiAgICAgICAgICAgICByZWN0ID0gaW50ZXJzZWN0aW9uKHJlcGFpbnRSZWN0LCBib3hSZWN0
KTsKICAgICAgICAgICAgIGlmIChyZWN0LmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICByZXR1
cm47CkBAIC0xOTQxLDcgKzE5NDEsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6dXBkYXRlSW1hZ2Uo
U3R5bGVJbWFnCiAgICAgfQogfQogCi1JbnRSZWN0IFJlbmRlck9iamVjdDo6dmlld1JlY3QoKSBj
b25zdAorTGF5b3V0UmVjdCBSZW5kZXJPYmplY3Q6OnZpZXdSZWN0KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gdmlldygpLT52aWV3UmVjdCgpOwogfQpAQCAtMTk3MywxMiArMTk3MywxMiBAQCB2b2lk
IFJlbmRlck9iamVjdDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSCiAgICAgaWYgKCFvKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBJbnRQb2ludCBjZW50ZXJQb2ludCA9IHJvdW5kZWRJbnRQb2ludCh0
cmFuc2Zvcm1TdGF0ZS5tYXBwZWRQb2ludCgpKTsKKyAgICBMYXlvdXRQb2ludCBjZW50ZXJQb2lu
dCA9IHJvdW5kZWRMYXlvdXRQb2ludCh0cmFuc2Zvcm1TdGF0ZS5tYXBwZWRQb2ludCgpKTsKICAg
ICBpZiAoby0+aXNCb3goKSAmJiBvLT5zdHlsZSgpLT5pc0ZsaXBwZWRCbG9ja3NXcml0aW5nTW9k
ZSgpKQotICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5tb3ZlKHRvUmVuZGVyQm94KG8pLT5mbGlwRm9y
V3JpdGluZ01vZGVJbmNsdWRpbmdDb2x1bW5zKHJvdW5kZWRJbnRQb2ludCh0cmFuc2Zvcm1TdGF0
ZS5tYXBwZWRQb2ludCgpKSkgLSBjZW50ZXJQb2ludCk7CisgICAgICAgIHRyYW5zZm9ybVN0YXRl
Lm1vdmUodG9SZW5kZXJCb3gobyktPmZsaXBGb3JXcml0aW5nTW9kZUluY2x1ZGluZ0NvbHVtbnMo
cm91bmRlZExheW91dFBvaW50KHRyYW5zZm9ybVN0YXRlLm1hcHBlZFBvaW50KCkpKSAtIGNlbnRl
clBvaW50KTsKIAotICAgIEludFNpemUgY29sdW1uT2Zmc2V0OwotICAgIG8tPmFkanVzdEZvckNv
bHVtbnMoY29sdW1uT2Zmc2V0LCByb3VuZGVkSW50UG9pbnQodHJhbnNmb3JtU3RhdGUubWFwcGVk
UG9pbnQoKSkpOworICAgIExheW91dFNpemUgY29sdW1uT2Zmc2V0OworICAgIG8tPmFkanVzdEZv
ckNvbHVtbnMoY29sdW1uT2Zmc2V0LCByb3VuZGVkTGF5b3V0UG9pbnQodHJhbnNmb3JtU3RhdGUu
bWFwcGVkUG9pbnQoKSkpOwogICAgIGlmICghY29sdW1uT2Zmc2V0LmlzWmVybygpKQogICAgICAg
ICB0cmFuc2Zvcm1TdGF0ZS5tb3ZlKGNvbHVtbk9mZnNldCk7CiAKQEAgLTIwODEsMTIgKzIwODEs
MTIgQEAgTGF5b3V0U2l6ZSBSZW5kZXJPYmplY3Q6Om9mZnNldEZyb21BbmNlcwogICAgIHJldHVy
biBvZmZzZXQ7CiB9CiAKLUludFJlY3QgUmVuZGVyT2JqZWN0Ojpsb2NhbENhcmV0UmVjdChJbmxp
bmVCb3gqLCBpbnQsIGludCogZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKQorTGF5b3V0UmVjdCBSZW5k
ZXJPYmplY3Q6OmxvY2FsQ2FyZXRSZWN0KElubGluZUJveCosIGludCwgTGF5b3V0VW5pdCogZXh0
cmFXaWR0aFRvRW5kT2ZMaW5lKQogewogICAgIGlmIChleHRyYVdpZHRoVG9FbmRPZkxpbmUpCiAg
ICAgICAgICpleHRyYVdpZHRoVG9FbmRPZkxpbmUgPSAwOwogCi0gICAgcmV0dXJuIEludFJlY3Qo
KTsKKyAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwogfQogCiBSZW5kZXJWaWV3KiBSZW5kZXJPYmpl
Y3Q6OnZpZXcoKSBjb25zdApAQCAtMjQ3OSwxNSArMjQ3OSwxNSBAQCB2b2lkIFJlbmRlck9iamVj
dDo6YWRkRGFzaGJvYXJkUmVnaW9ucyhWCiAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKysp
IHsKICAgICAgICAgU3R5bGVEYXNoYm9hcmRSZWdpb24gc3R5bGVSZWdpb24gPSBzdHlsZVJlZ2lv
bnNbaV07CiAKLSAgICAgICAgaW50IHcgPSBib3gtPndpZHRoKCk7Ci0gICAgICAgIGludCBoID0g
Ym94LT5oZWlnaHQoKTsKKyAgICAgICAgTGF5b3V0VW5pdCB3ID0gYm94LT53aWR0aCgpOworICAg
ICAgICBMYXlvdXRVbml0IGggPSBib3gtPmhlaWdodCgpOwogCiAgICAgICAgIERhc2hib2FyZFJl
Z2lvblZhbHVlIHJlZ2lvbjsKICAgICAgICAgcmVnaW9uLmxhYmVsID0gc3R5bGVSZWdpb24ubGFi
ZWw7Ci0gICAgICAgIHJlZ2lvbi5ib3VuZHMgPSBJbnRSZWN0KHN0eWxlUmVnaW9uLm9mZnNldC5s
ZWZ0KCkudmFsdWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVSZWdp
b24ub2Zmc2V0LnRvcCgpLnZhbHVlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHcgLSBzdHlsZVJlZ2lvbi5vZmZzZXQubGVmdCgpLnZhbHVlKCkgLSBzdHlsZVJlZ2lvbi5vZmZz
ZXQucmlnaHQoKS52YWx1ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoIC0g
c3R5bGVSZWdpb24ub2Zmc2V0LnRvcCgpLnZhbHVlKCkgLSBzdHlsZVJlZ2lvbi5vZmZzZXQuYm90
dG9tKCkudmFsdWUoKSk7CisgICAgICAgIHJlZ2lvbi5ib3VuZHMgPSBMYXlvdXRSZWN0KHN0eWxl
UmVnaW9uLm9mZnNldC5sZWZ0KCkudmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3R5bGVSZWdpb24ub2Zmc2V0LnRvcCgpLnZhbHVlKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHcgLSBzdHlsZVJlZ2lvbi5vZmZzZXQubGVmdCgpLnZhbHVl
KCkgLSBzdHlsZVJlZ2lvbi5vZmZzZXQucmlnaHQoKS52YWx1ZSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBoIC0gc3R5bGVSZWdpb24ub2Zmc2V0LnRvcCgpLnZhbHVlKCkg
LSBzdHlsZVJlZ2lvbi5vZmZzZXQuYm90dG9tKCkudmFsdWUoKSk7CiAgICAgICAgIHJlZ2lvbi50
eXBlID0gc3R5bGVSZWdpb24udHlwZTsKIAogICAgICAgICByZWdpb24uY2xpcCA9IHJlZ2lvbi5i
b3VuZHM7CkBAIC0yNTM3LDcgKzI1MzcsNyBAQCBib29sIFJlbmRlck9iamVjdDo6d2lsbFJlbmRl
ckltYWdlKENhY2hlCiAgICAgcmV0dXJuICFkb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpICYmICFk
b2N1bWVudCgpLT52aWV3KCktPmlzT2Zmc2NyZWVuKCk7CiB9CiAKLWludCBSZW5kZXJPYmplY3Q6
Om1heGltYWxPdXRsaW5lU2l6ZShQYWludFBoYXNlIHApIGNvbnN0CitMYXlvdXRVbml0IFJlbmRl
ck9iamVjdDo6bWF4aW1hbE91dGxpbmVTaXplKFBhaW50UGhhc2UgcCkgY29uc3QKIHsKICAgICBp
ZiAocCAhPSBQYWludFBoYXNlT3V0bGluZSAmJiBwICE9IFBhaW50UGhhc2VTZWxmT3V0bGluZSAm
JiBwICE9IFBhaW50UGhhc2VDaGlsZE91dGxpbmVzKQogICAgICAgICByZXR1cm4gMDsKQEAgLTI1
NzMsOSArMjU3Myw5IEBAIGludCBSZW5kZXJPYmplY3Q6Om5leHRPZmZzZXQoaW50IGN1cnJlbnQK
ICAgICByZXR1cm4gY3VycmVudCArIDE7CiB9CiAKLXZvaWQgUmVuZGVyT2JqZWN0OjphZGp1c3RS
ZWN0Rm9yT3V0bGluZUFuZFNoYWRvdyhJbnRSZWN0JiByZWN0KSBjb25zdAordm9pZCBSZW5kZXJP
YmplY3Q6OmFkanVzdFJlY3RGb3JPdXRsaW5lQW5kU2hhZG93KExheW91dFJlY3QmIHJlY3QpIGNv
bnN0CiB7Ci0gICAgaW50IG91dGxpbmVTaXplID0gb3V0bGluZVN0eWxlRm9yUmVwYWludCgpLT5v
dXRsaW5lU2l6ZSgpOworICAgIExheW91dFVuaXQgb3V0bGluZVNpemUgPSBvdXRsaW5lU3R5bGVG
b3JSZXBhaW50KCktPm91dGxpbmVTaXplKCk7CiAgICAgaWYgKGNvbnN0IFNoYWRvd0RhdGEqIGJv
eFNoYWRvdyA9IHN0eWxlKCktPmJveFNoYWRvdygpKSB7CiAgICAgICAgIGJveFNoYWRvdy0+YWRq
dXN0UmVjdEZvclNoYWRvdyhyZWN0LCBvdXRsaW5lU2l6ZSk7CiAgICAgICAgIHJldHVybjsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDk4NjEz
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDksOCArMTA5LDggQEAgc3RydWN0IERhc2hib2FyZFJlZ2lvblZhbHVlIHsKICAg
ICB9CiAKICAgICBTdHJpbmcgbGFiZWw7Ci0gICAgSW50UmVjdCBib3VuZHM7Ci0gICAgSW50UmVj
dCBjbGlwOworICAgIExheW91dFJlY3QgYm91bmRzOworICAgIExheW91dFJlY3QgY2xpcDsKICAg
ICBpbnQgdHlwZTsKIH07CiAjZW5kaWYKQEAgLTI0NCw3ICsyNDQsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgfQogICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogcHJp
dmF0ZToKLSAgICB2b2lkIGFkZEFic29sdXRlUmVjdEZvckxheWVyKEludFJlY3QmIHJlc3VsdCk7
CisgICAgdm9pZCBhZGRBYnNvbHV0ZVJlY3RGb3JMYXllcihMYXlvdXRSZWN0JiByZXN1bHQpOwog
ICAgIHZvaWQgc2V0TGF5ZXJOZWVkc0Z1bGxSZXBhaW50KCk7CiAKIHB1YmxpYzoKQEAgLTY0Niw4
ICs2NDYsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9y
PExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdCB7IH0KIAogICAgIC8vIEZJ
WE1FOiB1c2VUcmFuc2Zvcm1zIHNob3VsZCBnbyBhd2F5IGV2ZW50dWFsbHkKLSAgICBJbnRSZWN0
IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KGJvb2wgdXNlVHJhbnNmb3JtID0gdHJ1ZSkgY29uc3Q7
Ci0gICAgSW50UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3Jtcygp
IGNvbnN0IHsgcmV0dXJuIGFic29sdXRlQm91bmRpbmdCb3hSZWN0KGZhbHNlKTsgfQorICAgIExh
eW91dFJlY3QgYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoYm9vbCB1c2VUcmFuc2Zvcm0gPSB0cnVl
KSBjb25zdDsKKyAgICBMYXlvdXRSZWN0IGFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdU
cmFuc2Zvcm1zKCkgY29uc3QgeyByZXR1cm4gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoZmFsc2Up
OyB9CiAKICAgICAvLyBCdWlsZCBhbiBhcnJheSBvZiBxdWFkcyBpbiBhYnNvbHV0ZSBjb29yZHMg
Zm9yIGxpbmUgYm94ZXMKICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8Rmxv
YXRRdWFkPiYsIGJvb2wqIC8qd2FzRml4ZWQqLyA9IDApIGNvbnN0IHsgfQpAQCAtNzA0LDcgKzcw
NCw3IEBAIHB1YmxpYzoKIAogICAgIC8vIFJldHVybnMgdGhlIHJlY3QgdGhhdCBzaG91bGQgYmUg
cmVwYWludGVkIHdoZW5ldmVyIHRoaXMgb2JqZWN0IGNoYW5nZXMuICBUaGUgcmVjdCBpcyBpbiB0
aGUgdmlldydzCiAgICAgLy8gY29vcmRpbmF0ZSBzcGFjZS4gIFRoaXMgbWV0aG9kIGRlYWxzIHdp
dGggb3V0bGluZXMgYW5kIG92ZXJmbG93LgotICAgIEludFJlY3QgYWJzb2x1dGVDbGlwcGVkT3Zl
cmZsb3dSZWN0KCkgY29uc3QKKyAgICBMYXlvdXRSZWN0IGFic29sdXRlQ2xpcHBlZE92ZXJmbG93
UmVjdCgpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gY2xpcHBlZE92ZXJmbG93UmVjdEZv
clJlcGFpbnQoMCk7CiAgICAgfQpAQCAtNzEzLDEzICs3MTMsMTMgQEAgcHVibGljOgogCiAgICAg
Ly8gR2l2ZW4gYSByZWN0IGluIHRoZSBvYmplY3QncyBjb29yZGluYXRlIHNwYWNlLCBjb21wdXRl
IGEgcmVjdCBzdWl0YWJsZSBmb3IgcmVwYWludGluZwogICAgIC8vIHRoYXQgcmVjdCBpbiB2aWV3
IGNvb3JkaW5hdGVzLgotICAgIHZvaWQgY29tcHV0ZUFic29sdXRlUmVwYWludFJlY3QoSW50UmVj
dCYgciwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdAorICAgIHZvaWQgY29tcHV0ZUFic29sdXRl
UmVwYWludFJlY3QoTGF5b3V0UmVjdCYgciwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdAogICAg
IHsKICAgICAgICAgcmV0dXJuIGNvbXB1dGVSZWN0Rm9yUmVwYWludCgwLCByLCBmaXhlZCk7CiAg
ICAgfQogICAgIC8vIEdpdmVuIGEgcmVjdCBpbiB0aGUgb2JqZWN0J3MgY29vcmRpbmF0ZSBzcGFj
ZSwgY29tcHV0ZSBhIHJlY3Qgc3VpdGFibGUgZm9yIHJlcGFpbnRpbmcKICAgICAvLyB0aGF0IHJl
Y3QgaW4gdGhlIGNvb3JkaW5hdGUgc3BhY2Ugb2YgcmVwYWludENvbnRhaW5lci4KLSAgICB2aXJ0
dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyLCBJbnRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKKyAgICB2
aXJ0dWFsIHZvaWQgY29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiBy
ZXBhaW50Q29udGFpbmVyLCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsK
IAogICAgIC8vIElmIG11bHRpcGxlLWNvbHVtbiBsYXlvdXQgcmVzdWx0cyBpbiBhcHBseWluZyBh
biBvZmZzZXQgdG8gdGhlIGdpdmVuIHBvaW50LCBhZGQgdGhlIHNhbWUKICAgICAvLyBvZmZzZXQg
dG8gdGhlIGdpdmVuIHNpemUuCkBAIC03MzUsNyArNzM1LDcgQEAgcHVibGljOgogICAgIGJvb2wg
aGFzUmVmbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmVmbGVjdGlvbjsgfQogCiAgICAg
Ly8gQXBwbGllZCBhcyBhICJzbG9wIiB0byBkaXJ0eSByZWN0IGNoZWNrcyBkdXJpbmcgdGhlIG91
dGxpbmUgcGFpbnRpbmcgcGhhc2UncyBkaXJ0eS1yZWN0IGNoZWNrcy4KLSAgICBpbnQgbWF4aW1h
bE91dGxpbmVTaXplKFBhaW50UGhhc2UpIGNvbnN0OworICAgIExheW91dFVuaXQgbWF4aW1hbE91
dGxpbmVTaXplKFBhaW50UGhhc2UpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRIYXNNYXJrdXBUcnVu
Y2F0aW9uKGJvb2wgYiA9IHRydWUpIHsgbV9oYXNNYXJrdXBUcnVuY2F0aW9uID0gYjsgfQogICAg
IGJvb2wgaGFzTWFya3VwVHJ1bmNhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzTWFya3VwVHJ1
bmNhdGlvbjsgfQpAQCAtNzgwLDcgKzc4MCw3IEBAIHB1YmxpYzoKICAgICAgKiBAcGFyYW0gZXh0
cmFXaWR0aFRvRW5kT2ZMaW5lIG9wdGlvbmFsIG91dCBhcmcgdG8gZ2l2ZSBleHRyYSB3aWR0aCB0
byBlbmQgb2YgbGluZSAtCiAgICAgICogdXNlZnVsIGZvciBjaGFyYWN0ZXIgcmFuZ2UgcmVjdCBj
b21wdXRhdGlvbnMKICAgICAgKi8KLSAgICB2aXJ0dWFsIEludFJlY3QgbG9jYWxDYXJldFJlY3Qo
SW5saW5lQm94KiwgaW50IGNhcmV0T2Zmc2V0LCBpbnQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSA9
IDApOworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBsb2NhbENhcmV0UmVjdChJbmxpbmVCb3gqLCBp
bnQgY2FyZXRPZmZzZXQsIExheW91dFVuaXQqIGV4dHJhV2lkdGhUb0VuZE9mTGluZSA9IDApOwog
CiAgICAgYm9vbCBpc01hcmdpbkJlZm9yZVF1aXJrKCkgY29uc3QgeyByZXR1cm4gbV9tYXJnaW5C
ZWZvcmVRdWlyazsgfQogICAgIGJvb2wgaXNNYXJnaW5BZnRlclF1aXJrKCkgY29uc3QgeyByZXR1
cm4gbV9tYXJnaW5BZnRlclF1aXJrOyB9CkBAIC04NDMsNyArODQzLDcgQEAgcHVibGljOgogICAg
IAogICAgIHZpcnR1YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4m
LCBjb25zdCBMYXlvdXRQb2ludCYpIHsgfTsKIAotICAgIEludFJlY3QgYWJzb2x1dGVPdXRsaW5l
Qm91bmRzKCkgY29uc3QKKyAgICBMYXlvdXRSZWN0IGFic29sdXRlT3V0bGluZUJvdW5kcygpIGNv
bnN0CiAgICAgewogICAgICAgICByZXR1cm4gb3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoMCk7CiAg
ICAgfQpAQCAtODU1LDIxICs4NTUsMjEgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBz
dHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHls
ZSk7CiAgICAgdm9pZCBwcm9wYWdhdGVTdHlsZVRvQW5vbnltb3VzQ2hpbGRyZW4oYm9vbCBibG9j
a0NoaWxkcmVuT25seSA9IGZhbHNlKTsKIAotICAgIHZvaWQgZHJhd0xpbmVGb3JCb3hTaWRlKEdy
YXBoaWNzQ29udGV4dCosIGludCB4MSwgaW50IHkxLCBpbnQgeDIsIGludCB5MiwgQm94U2lkZSwK
KyAgICB2b2lkIGRyYXdMaW5lRm9yQm94U2lkZShHcmFwaGljc0NvbnRleHQqLCBMYXlvdXRVbml0
IHgxLCBMYXlvdXRVbml0IHkxLCBMYXlvdXRVbml0IHgyLCBMYXlvdXRVbml0IHkyLCBCb3hTaWRl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yLCBFQm9yZGVyU3R5bGUsIGludCBh
ZGpidzEsIGludCBhZGpidzIsIGJvb2wgYW50aWFsaWFzID0gZmFsc2UpOwogCiAgICAgdm9pZCBw
YWludEZvY3VzUmluZyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlvdXRQb2ludCYsIFJlbmRl
clN0eWxlKik7CiAgICAgdm9pZCBwYWludE91dGxpbmUoR3JhcGhpY3NDb250ZXh0KiwgY29uc3Qg
TGF5b3V0UmVjdCYpOwotICAgIHZvaWQgYWRkUERGVVJMUmVjdChHcmFwaGljc0NvbnRleHQqLCBj
b25zdCBJbnRSZWN0Jik7CisgICAgdm9pZCBhZGRQREZVUkxSZWN0KEdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IExheW91dFJlY3QmKTsKIAotICAgIHZpcnR1YWwgSW50UmVjdCB2aWV3UmVjdCgpIGNv
bnN0OworICAgIHZpcnR1YWwgTGF5b3V0UmVjdCB2aWV3UmVjdCgpIGNvbnN0OwogCi0gICAgdm9p
ZCBhZGp1c3RSZWN0Rm9yT3V0bGluZUFuZFNoYWRvdyhJbnRSZWN0JikgY29uc3Q7CisgICAgdm9p
ZCBhZGp1c3RSZWN0Rm9yT3V0bGluZUFuZFNoYWRvdyhMYXlvdXRSZWN0JikgY29uc3Q7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgd2lsbEJlRGVzdHJveWVkKCk7CiAgICAgdm9pZCBhcmVuYURlbGV0ZShS
ZW5kZXJBcmVuYSosIHZvaWQqIG9iamVjdEJhc2UpOwogCi0gICAgdmlydHVhbCBJbnRSZWN0IG91
dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiAvKnJlcGFpbnRDb250
YWluZXIqLywgSW50UG9pbnQqIC8qY2FjaGVkT2Zmc2V0VG9SZXBhaW50Q29udGFpbmVyKi8gPSAw
KSBjb25zdCB7IHJldHVybiBJbnRSZWN0KCk7IH0KKyAgICB2aXJ0dWFsIExheW91dFJlY3Qgb3V0
bGluZUJvdW5kc0ZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIC8qcmVwYWludENvbnRh
aW5lciovLCBMYXlvdXRQb2ludCogLypjYWNoZWRPZmZzZXRUb1JlcGFpbnRDb250YWluZXIqLyA9
IDApIGNvbnN0IHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQogCiBwcml2YXRlOgogICAgIFJlbmRl
clN0eWxlKiBmaXJzdExpbmVTdHlsZVNsb3dDYXNlKCkgY29uc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113115</attachid>
            <date>2011-10-31 17:32:53 -0700</date>
            <delta_ts>2011-11-01 10:38:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71249-20111031173252.patch</filename>
            <type>text/plain</type>
            <size>17060</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4OTE4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMTAtMzEgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN3aXRjaCBSZW5kZXJPYmplY3Qg
dG8gbGF5b3V0IGFic3RyYWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MTI0OQorCisgICAgICAgIFN3aXRjaCBSZW5kZXJPYmplY3QgdG8gTGF5
b3V0UmVjdC9TaXplL1BvaW50IGFic3RyYWN0aW9uLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpk
cmF3TGluZUZvckJveFNpZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphZGRQ
REZVUkxSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphYnNvbHV0ZUZv
Y3VzUmluZ1F1YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWRkQWJzb2x1
dGVSZWN0Rm9yTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpyZXBhaW50
QWZ0ZXJMYXlvdXRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNv
bXB1dGVSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnZp
ZXdSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6bWFwTG9jYWxUb0NvbnRh
aW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmxvY2FsQ2FyZXRSZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWRkRGFzaGJvYXJkUmVnaW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om1heGltYWxPdXRsaW5lU2l6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFkanVzdFJlY3RGb3JPdXRsaW5lQW5kU2hhZG93
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1z
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWJzb2x1dGVDbGlwcGVkT3ZlcmZs
b3dSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y29tcHV0ZUFic29sdXRl
UmVwYWludFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphYnNvbHV0ZU91
dGxpbmVCb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpvdXRsaW5lQm91
bmRzRm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RGb3JBYnNvbHV0ZVpvb20p
OgorCiAyMDExLTEwLTI4ICBOYXQgRHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbY2hyb21pdW1dIENvbm5lY3QgQ0NUaHJlYWRQcm94eSB0byBGcmFtZVJhdGVDb250cm9sbGVy
IGFuZCBTY2hlZHVsZXJTdGF0ZU1hY2hpbmUgdmlhIENDU2NoZWR1bGVyCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gOTg5MTgpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNzg3LDcgKzc4Nyw3IEBAIGJvb2wgUmVuZGVyT2JqZWN0OjptdXN0UmVwYWludEJhY2tncm91
bmQKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVuZGVyT2JqZWN0OjpkcmF3TGluZUZv
ckJveFNpZGUoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGludCB4MSwgaW50IHkx
LCBpbnQgeDIsIGludCB5MiwKK3ZvaWQgUmVuZGVyT2JqZWN0OjpkcmF3TGluZUZvckJveFNpZGUo
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIExheW91dFVuaXQgeDEsIExheW91dFVu
aXQgeTEsIExheW91dFVuaXQgeDIsIExheW91dFVuaXQgeTIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEJveFNpZGUgc2lkZSwgQ29sb3IgY29sb3IsIEVCb3JkZXJTdHls
ZSBzdHlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFkamFj
ZW50V2lkdGgxLCBpbnQgYWRqYWNlbnRXaWR0aDIsIGJvb2wgYW50aWFsaWFzKQogewpAQCAtMTA5
Nyw3ICsxMDk3LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnBhaW50Rm9jdXNSaW5nKEdyYXBoaQog
ICAgICAgICBhZGRQREZVUkxSZWN0KGNvbnRleHQsIHVuaW9uUmVjdChmb2N1c1JpbmdSZWN0cykp
OwogfSAgICAgICAgCiAKLXZvaWQgUmVuZGVyT2JqZWN0OjphZGRQREZVUkxSZWN0KEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgUmVuZGVyT2JqZWN0
OjphZGRQREZVUkxSZWN0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgTGF5b3V0UmVj
dCYgcmVjdCkKIHsKICAgICBpZiAocmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTExMDcsNyArMTEwNyw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjphZGRQREZVUkxSZWN0KEdyYXBo
aWMKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGhyZWYgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4o
biktPmdldEF0dHJpYnV0ZShocmVmQXR0cik7CiAgICAgaWYgKGhyZWYuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybjsKLSAgICBjb250ZXh0LT5zZXRVUkxGb3JSZWN0KG4tPmRvY3VtZW50KCktPmNv
bXBsZXRlVVJMKGhyZWYpLCByZWN0KTsKKyAgICBjb250ZXh0LT5zZXRVUkxGb3JSZWN0KG4tPmRv
Y3VtZW50KCktPmNvbXBsZXRlVVJMKGhyZWYpLCBlbmNsb3NpbmdJbnRSZWN0KHJlY3QpKTsKIH0K
IAogdm9pZCBSZW5kZXJPYmplY3Q6OnBhaW50T3V0bGluZShHcmFwaGljc0NvbnRleHQqIGdyYXBo
aWNzQ29udGV4dCwgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnRSZWN0KQpAQCAtMTE2Myw3ICsxMTYz
LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnBhaW50T3V0bGluZShHcmFwaGljcwogICAgICAgICBn
cmFwaGljc0NvbnRleHQtPmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CiB9CiAKLUludFJlY3QgUmVu
ZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChib29sIHVzZVRyYW5zZm9ybXMpIGNv
bnN0CitMYXlvdXRSZWN0IFJlbmRlck9iamVjdDo6YWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoYm9v
bCB1c2VUcmFuc2Zvcm1zKSBjb25zdAogewogICAgIGlmICh1c2VUcmFuc2Zvcm1zKSB7CiAgICAg
ICAgIFZlY3RvcjxGbG9hdFF1YWQ+IHF1YWRzOwpAQCAtMTE3MywyMSArMTE3MywyMSBAQCBJbnRS
ZWN0IFJlbmRlck9iamVjdDo6YWJzb2x1dGVCb3VuZGluZ0JvCiAgICAgICAgIGlmICghbikKICAg
ICAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CiAgICAgCi0gICAgICAgIEludFJlY3QgcmVzdWx0
ID0gcXVhZHNbMF0uZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKKyAgICAgICAgTGF5b3V0UmVjdCBy
ZXN1bHQgPSBxdWFkc1swXS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpOwogICAgICAgICBmb3IgKHNp
emVfdCBpID0gMTsgaSA8IG47ICsraSkKICAgICAgICAgICAgIHJlc3VsdC51bml0ZShxdWFkc1tp
XS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
CiAKICAgICBGbG9hdFBvaW50IGFic1BvcyA9IGxvY2FsVG9BYnNvbHV0ZSgpOwotICAgIFZlY3Rv
cjxJbnRSZWN0PiByZWN0czsKKyAgICBWZWN0b3I8TGF5b3V0UmVjdD4gcmVjdHM7CiAgICAgYWJz
b2x1dGVSZWN0cyhyZWN0cywgZmxvb3JlZExheW91dFBvaW50KGFic1BvcykpOwogCiAgICAgc2l6
ZV90IG4gPSByZWN0cy5zaXplKCk7CiAgICAgaWYgKCFuKQotICAgICAgICByZXR1cm4gSW50UmVj
dCgpOworICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwogCi0gICAgSW50UmVjdCByZXN1bHQg
PSByZWN0c1swXTsKKyAgICBMYXlvdXRSZWN0IHJlc3VsdCA9IHJlY3RzWzBdOwogICAgIGZvciAo
c2l6ZV90IGkgPSAxOyBpIDwgbjsgKytpKQogICAgICAgICByZXN1bHQudW5pdGUocmVjdHNbaV0p
OwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMTk1LDIyICsxMTk1LDIyIEBAIEludFJlY3QgUmVu
ZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm8KIAogdm9pZCBSZW5kZXJPYmplY3Q6OmFic29s
dXRlRm9jdXNSaW5nUXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzKQogewotICAgIFZlY3Rv
cjxJbnRSZWN0PiByZWN0czsKKyAgICBWZWN0b3I8TGF5b3V0UmVjdD4gcmVjdHM7CiAgICAgLy8g
RklYTUU6IGFkZEZvY3VzUmluZ1JlY3RzKCkgbmVlZHMgdG8gYmUgcGFzc2VkIHRoaXMgdHJhbnNm
b3JtLXVuYXdhcmUKICAgICAvLyBsb2NhbFRvQWJzb2x1dGUoKSBvZmZzZXQgaGVyZSBiZWNhdXNl
IFJlbmRlcklubGluZTo6YWRkRm9jdXNSaW5nUmVjdHMoKQogICAgIC8vIGltcGxpY2l0bHkgYXNz
dW1lcyB0aGF0LiBUaGlzIGRvZXNuJ3Qgd29yayBjb3JyZWN0bHkgd2l0aCB0cmFuc2Zvcm1lZAog
ICAgIC8vIGRlc2NlbmRhbnRzLgogICAgIEZsb2F0UG9pbnQgYWJzb2x1dGVQb2ludCA9IGxvY2Fs
VG9BYnNvbHV0ZSgpOwotICAgIGFkZEZvY3VzUmluZ1JlY3RzKHJlY3RzLCBmbG9vcmVkSW50UG9p
bnQoYWJzb2x1dGVQb2ludCkpOworICAgIGFkZEZvY3VzUmluZ1JlY3RzKHJlY3RzLCBmbG9vcmVk
TGF5b3V0UG9pbnQoYWJzb2x1dGVQb2ludCkpOwogICAgIHNpemVfdCBjb3VudCA9IHJlY3RzLnNp
emUoKTsgCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAg
IEludFJlY3QgcmVjdCA9IHJlY3RzW2ldOworICAgICAgICBMYXlvdXRSZWN0IHJlY3QgPSByZWN0
c1tpXTsKICAgICAgICAgcmVjdC5tb3ZlKC1hYnNvbHV0ZVBvaW50LngoKSwgLWFic29sdXRlUG9p
bnQueSgpKTsKICAgICAgICAgcXVhZHMuYXBwZW5kKGxvY2FsVG9BYnNvbHV0ZVF1YWQoRmxvYXRR
dWFkKHJlY3QpKSk7CiAgICAgfQogfQogCi12b2lkIFJlbmRlck9iamVjdDo6YWRkQWJzb2x1dGVS
ZWN0Rm9yTGF5ZXIoSW50UmVjdCYgcmVzdWx0KQordm9pZCBSZW5kZXJPYmplY3Q6OmFkZEFic29s
dXRlUmVjdEZvckxheWVyKExheW91dFJlY3QmIHJlc3VsdCkKIHsKICAgICBpZiAoaGFzTGF5ZXIo
KSkKICAgICAgICAgcmVzdWx0LnVuaXRlKGFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdU
cmFuc2Zvcm1zKCkpOwpAQCAtMTM5OSw5ICsxMzk5LDkgQEAgYm9vbCBSZW5kZXJPYmplY3Q6OnJl
cGFpbnRBZnRlckxheW91dElmTgogICAgICAgICBMYXlvdXRVbml0IHNoYWRvd1JpZ2h0OwogICAg
ICAgICBzdHlsZSgpLT5nZXRCb3hTaGFkb3dIb3Jpem9udGFsRXh0ZW50KHNoYWRvd0xlZnQsIHNo
YWRvd1JpZ2h0KTsKIAotICAgICAgICBMYXlvdXRVbml0IGJvcmRlclJpZ2h0ID0gaXNCb3goKSA/
IHRvUmVuZGVyQm94KHRoaXMpLT5ib3JkZXJSaWdodCgpIDogMDsKLSAgICAgICAgTGF5b3V0VW5p
dCBib3hXaWR0aCA9IGlzQm94KCkgPyB0b1JlbmRlckJveCh0aGlzKS0+d2lkdGgoKSA6IDA7Ci0g
ICAgICAgIExheW91dFVuaXQgYm9yZGVyV2lkdGggPSBtYXgoLW91dGxpbmVTdHlsZS0+b3V0bGlu
ZU9mZnNldCgpLCBtYXgoYm9yZGVyUmlnaHQsIG1heChzdHlsZSgpLT5ib3JkZXJUb3BSaWdodFJh
ZGl1cygpLndpZHRoKCkuY2FsY1ZhbHVlKGJveFdpZHRoKSwgc3R5bGUoKS0+Ym9yZGVyQm90dG9t
UmlnaHRSYWRpdXMoKS53aWR0aCgpLmNhbGNWYWx1ZShib3hXaWR0aCkpKSkgKyBtYXgob3csIHNo
YWRvd1JpZ2h0KTsKKyAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJSaWdodCA9IGlzQm94KCkgPyB0
b1JlbmRlckJveCh0aGlzKS0+Ym9yZGVyUmlnaHQoKSA6IExheW91dFVuaXQoMCk7CisgICAgICAg
IExheW91dFVuaXQgYm94V2lkdGggPSBpc0JveCgpID8gdG9SZW5kZXJCb3godGhpcyktPndpZHRo
KCkgOiBMYXlvdXRVbml0KDApOworICAgICAgICBMYXlvdXRVbml0IGJvcmRlcldpZHRoID0gbWF4
PExheW91dFVuaXQ+KC1vdXRsaW5lU3R5bGUtPm91dGxpbmVPZmZzZXQoKSwgbWF4KGJvcmRlclJp
Z2h0LCBtYXg8TGF5b3V0VW5pdD4oc3R5bGUoKS0+Ym9yZGVyVG9wUmlnaHRSYWRpdXMoKS53aWR0
aCgpLmNhbGNWYWx1ZShib3hXaWR0aCksIHN0eWxlKCktPmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVz
KCkud2lkdGgoKS5jYWxjVmFsdWUoYm94V2lkdGgpKSkpICsgbWF4KG93LCBzaGFkb3dSaWdodCk7
CiAgICAgICAgIExheW91dFJlY3QgcmlnaHRSZWN0KG5ld091dGxpbmVCb3gueCgpICsgbWluKG5l
d091dGxpbmVCb3gud2lkdGgoKSwgb2xkT3V0bGluZUJveC53aWR0aCgpKSAtIGJvcmRlcldpZHRo
LAogICAgICAgICAgICAgbmV3T3V0bGluZUJveC55KCksCiAgICAgICAgICAgICB3aWR0aCArIGJv
cmRlcldpZHRoLApAQCAtMTQxOCw5ICsxNDE4LDkgQEAgYm9vbCBSZW5kZXJPYmplY3Q6OnJlcGFp
bnRBZnRlckxheW91dElmTgogICAgICAgICBMYXlvdXRVbml0IHNoYWRvd0JvdHRvbTsKICAgICAg
ICAgc3R5bGUoKS0+Z2V0Qm94U2hhZG93VmVydGljYWxFeHRlbnQoc2hhZG93VG9wLCBzaGFkb3dC
b3R0b20pOwogCi0gICAgICAgIExheW91dFVuaXQgYm9yZGVyQm90dG9tID0gaXNCb3goKSA/IHRv
UmVuZGVyQm94KHRoaXMpLT5ib3JkZXJCb3R0b20oKSA6IDA7Ci0gICAgICAgIExheW91dFVuaXQg
Ym94SGVpZ2h0ID0gaXNCb3goKSA/IHRvUmVuZGVyQm94KHRoaXMpLT5oZWlnaHQoKSA6IDA7Ci0g
ICAgICAgIExheW91dFVuaXQgYm9yZGVySGVpZ2h0ID0gbWF4KC1vdXRsaW5lU3R5bGUtPm91dGxp
bmVPZmZzZXQoKSwgbWF4KGJvcmRlckJvdHRvbSwgbWF4KHN0eWxlKCktPmJvcmRlckJvdHRvbUxl
ZnRSYWRpdXMoKS5oZWlnaHQoKS5jYWxjVmFsdWUoYm94SGVpZ2h0KSwgc3R5bGUoKS0+Ym9yZGVy
Qm90dG9tUmlnaHRSYWRpdXMoKS5oZWlnaHQoKS5jYWxjVmFsdWUoYm94SGVpZ2h0KSkpKSArIG1h
eChvdywgc2hhZG93Qm90dG9tKTsKKyAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJCb3R0b20gPSBp
c0JveCgpID8gdG9SZW5kZXJCb3godGhpcyktPmJvcmRlckJvdHRvbSgpIDogTGF5b3V0VW5pdCgw
KTsKKyAgICAgICAgTGF5b3V0VW5pdCBib3hIZWlnaHQgPSBpc0JveCgpID8gdG9SZW5kZXJCb3go
dGhpcyktPmhlaWdodCgpIDogTGF5b3V0VW5pdCgwKTsKKyAgICAgICAgTGF5b3V0VW5pdCBib3Jk
ZXJIZWlnaHQgPSBtYXg8TGF5b3V0VW5pdD4oLW91dGxpbmVTdHlsZS0+b3V0bGluZU9mZnNldCgp
LCBtYXgoYm9yZGVyQm90dG9tLCBtYXg8TGF5b3V0VW5pdD4oc3R5bGUoKS0+Ym9yZGVyQm90dG9t
TGVmdFJhZGl1cygpLmhlaWdodCgpLmNhbGNWYWx1ZShib3hIZWlnaHQpLCBzdHlsZSgpLT5ib3Jk
ZXJCb3R0b21SaWdodFJhZGl1cygpLmhlaWdodCgpLmNhbGNWYWx1ZShib3hIZWlnaHQpKSkpICsg
bWF4KG93LCBzaGFkb3dCb3R0b20pOwogICAgICAgICBMYXlvdXRSZWN0IGJvdHRvbVJlY3QobmV3
T3V0bGluZUJveC54KCksCiAgICAgICAgICAgICBtaW4obmV3T3V0bGluZUJveC5tYXhZKCksIG9s
ZE91dGxpbmVCb3gubWF4WSgpKSAtIGJvcmRlckhlaWdodCwKICAgICAgICAgICAgIG1heChuZXdP
dXRsaW5lQm94LndpZHRoKCksIG9sZE91dGxpbmVCb3gud2lkdGgoKSksCkBAIC0xNDYzLDcgKzE0
NjMsNyBAQCBMYXlvdXRSZWN0IFJlbmRlck9iamVjdDo6Y2xpcHBlZE92ZXJmbG93CiAgICAgcmV0
dXJuIExheW91dFJlY3QoKTsKIH0KIAotdm9pZCBSZW5kZXJPYmplY3Q6OmNvbXB1dGVSZWN0Rm9y
UmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgSW50UmVjdCYg
cmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKK3ZvaWQgUmVuZGVyT2JqZWN0Ojpjb21wdXRlUmVjdEZv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIExheW91dFJl
Y3QmIHJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAgICAgaWYgKHJlcGFpbnRDb250YWluZXIg
PT0gdGhpcykKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ4MSwxMCArMTQ4MSwxMCBAQCB2b2lkIFJl
bmRlck9iamVjdDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50CiAgICAgICAgICAgICAvLyBhbnl3YXkg
aWYgaXRzIHNpemUgZG9lcyBjaGFuZ2UuCiAgICAgICAgICAgICBSZW5kZXJCb3gqIGJveFBhcmVu
dCA9IHRvUmVuZGVyQm94KG8pOwogCi0gICAgICAgICAgICBJbnRSZWN0IHJlcGFpbnRSZWN0KHJl
Y3QpOworICAgICAgICAgICAgTGF5b3V0UmVjdCByZXBhaW50UmVjdChyZWN0KTsKICAgICAgICAg
ICAgIHJlcGFpbnRSZWN0Lm1vdmUoLWJveFBhcmVudC0+bGF5ZXIoKS0+c2Nyb2xsZWRDb250ZW50
T2Zmc2V0KCkpOyAvLyBGb3Igb3ZlcmZsb3c6YXV0by9zY3JvbGwvaGlkZGVuLgogCi0gICAgICAg
ICAgICBJbnRSZWN0IGJveFJlY3QoSW50UG9pbnQoKSwgYm94UGFyZW50LT5sYXllcigpLT5zaXpl
KCkpOworICAgICAgICAgICAgTGF5b3V0UmVjdCBib3hSZWN0KExheW91dFBvaW50KCksIGJveFBh
cmVudC0+bGF5ZXIoKS0+c2l6ZSgpKTsKICAgICAgICAgICAgIHJlY3QgPSBpbnRlcnNlY3Rpb24o
cmVwYWludFJlY3QsIGJveFJlY3QpOwogICAgICAgICAgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTE5NDEsNyArMTk0MSw3IEBAIHZvaWQgUmVuZGVy
T2JqZWN0Ojp1cGRhdGVJbWFnZShTdHlsZUltYWcKICAgICB9CiB9CiAKLUludFJlY3QgUmVuZGVy
T2JqZWN0Ojp2aWV3UmVjdCgpIGNvbnN0CitMYXlvdXRSZWN0IFJlbmRlck9iamVjdDo6dmlld1Jl
Y3QoKSBjb25zdAogewogICAgIHJldHVybiB2aWV3KCktPnZpZXdSZWN0KCk7CiB9CkBAIC0xOTcz
LDEyICsxOTczLDEyIEBAIHZvaWQgUmVuZGVyT2JqZWN0OjptYXBMb2NhbFRvQ29udGFpbmVyKFIK
ICAgICBpZiAoIW8pCiAgICAgICAgIHJldHVybjsKIAotICAgIEludFBvaW50IGNlbnRlclBvaW50
ID0gcm91bmRlZEludFBvaW50KHRyYW5zZm9ybVN0YXRlLm1hcHBlZFBvaW50KCkpOworICAgIExh
eW91dFBvaW50IGNlbnRlclBvaW50ID0gcm91bmRlZExheW91dFBvaW50KHRyYW5zZm9ybVN0YXRl
Lm1hcHBlZFBvaW50KCkpOwogICAgIGlmIChvLT5pc0JveCgpICYmIG8tPnN0eWxlKCktPmlzRmxp
cHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkpCi0gICAgICAgIHRyYW5zZm9ybVN0YXRlLm1vdmUodG9S
ZW5kZXJCb3gobyktPmZsaXBGb3JXcml0aW5nTW9kZUluY2x1ZGluZ0NvbHVtbnMocm91bmRlZElu
dFBvaW50KHRyYW5zZm9ybVN0YXRlLm1hcHBlZFBvaW50KCkpKSAtIGNlbnRlclBvaW50KTsKKyAg
ICAgICAgdHJhbnNmb3JtU3RhdGUubW92ZSh0b1JlbmRlckJveChvKS0+ZmxpcEZvcldyaXRpbmdN
b2RlSW5jbHVkaW5nQ29sdW1ucyhyb3VuZGVkTGF5b3V0UG9pbnQodHJhbnNmb3JtU3RhdGUubWFw
cGVkUG9pbnQoKSkpIC0gY2VudGVyUG9pbnQpOwogCi0gICAgSW50U2l6ZSBjb2x1bW5PZmZzZXQ7
Ci0gICAgby0+YWRqdXN0Rm9yQ29sdW1ucyhjb2x1bW5PZmZzZXQsIHJvdW5kZWRJbnRQb2ludCh0
cmFuc2Zvcm1TdGF0ZS5tYXBwZWRQb2ludCgpKSk7CisgICAgTGF5b3V0U2l6ZSBjb2x1bW5PZmZz
ZXQ7CisgICAgby0+YWRqdXN0Rm9yQ29sdW1ucyhjb2x1bW5PZmZzZXQsIHJvdW5kZWRMYXlvdXRQ
b2ludCh0cmFuc2Zvcm1TdGF0ZS5tYXBwZWRQb2ludCgpKSk7CiAgICAgaWYgKCFjb2x1bW5PZmZz
ZXQuaXNaZXJvKCkpCiAgICAgICAgIHRyYW5zZm9ybVN0YXRlLm1vdmUoY29sdW1uT2Zmc2V0KTsK
IApAQCAtMjQ3OSwxNSArMjQ3OSwxNSBAQCB2b2lkIFJlbmRlck9iamVjdDo6YWRkRGFzaGJvYXJk
UmVnaW9ucyhWCiAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgICAgU3R5
bGVEYXNoYm9hcmRSZWdpb24gc3R5bGVSZWdpb24gPSBzdHlsZVJlZ2lvbnNbaV07CiAKLSAgICAg
ICAgaW50IHcgPSBib3gtPndpZHRoKCk7Ci0gICAgICAgIGludCBoID0gYm94LT5oZWlnaHQoKTsK
KyAgICAgICAgTGF5b3V0VW5pdCB3ID0gYm94LT53aWR0aCgpOworICAgICAgICBMYXlvdXRVbml0
IGggPSBib3gtPmhlaWdodCgpOwogCiAgICAgICAgIERhc2hib2FyZFJlZ2lvblZhbHVlIHJlZ2lv
bjsKICAgICAgICAgcmVnaW9uLmxhYmVsID0gc3R5bGVSZWdpb24ubGFiZWw7Ci0gICAgICAgIHJl
Z2lvbi5ib3VuZHMgPSBJbnRSZWN0KHN0eWxlUmVnaW9uLm9mZnNldC5sZWZ0KCkudmFsdWUoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVSZWdpb24ub2Zmc2V0LnRvcCgp
LnZhbHVlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcgLSBzdHlsZVJlZ2lv
bi5vZmZzZXQubGVmdCgpLnZhbHVlKCkgLSBzdHlsZVJlZ2lvbi5vZmZzZXQucmlnaHQoKS52YWx1
ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoIC0gc3R5bGVSZWdpb24ub2Zm
c2V0LnRvcCgpLnZhbHVlKCkgLSBzdHlsZVJlZ2lvbi5vZmZzZXQuYm90dG9tKCkudmFsdWUoKSk7
CisgICAgICAgIHJlZ2lvbi5ib3VuZHMgPSBMYXlvdXRSZWN0KHN0eWxlUmVnaW9uLm9mZnNldC5s
ZWZ0KCkudmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVS
ZWdpb24ub2Zmc2V0LnRvcCgpLnZhbHVlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHcgLSBzdHlsZVJlZ2lvbi5vZmZzZXQubGVmdCgpLnZhbHVlKCkgLSBzdHlsZVJlZ2lv
bi5vZmZzZXQucmlnaHQoKS52YWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBoIC0gc3R5bGVSZWdpb24ub2Zmc2V0LnRvcCgpLnZhbHVlKCkgLSBzdHlsZVJlZ2lvbi5v
ZmZzZXQuYm90dG9tKCkudmFsdWUoKSk7CiAgICAgICAgIHJlZ2lvbi50eXBlID0gc3R5bGVSZWdp
b24udHlwZTsKIAogICAgICAgICByZWdpb24uY2xpcCA9IHJlZ2lvbi5ib3VuZHM7CkBAIC0yNTM3
LDcgKzI1MzcsNyBAQCBib29sIFJlbmRlck9iamVjdDo6d2lsbFJlbmRlckltYWdlKENhY2hlCiAg
ICAgcmV0dXJuICFkb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpICYmICFkb2N1bWVudCgpLT52aWV3
KCktPmlzT2Zmc2NyZWVuKCk7CiB9CiAKLWludCBSZW5kZXJPYmplY3Q6Om1heGltYWxPdXRsaW5l
U2l6ZShQYWludFBoYXNlIHApIGNvbnN0CitMYXlvdXRVbml0IFJlbmRlck9iamVjdDo6bWF4aW1h
bE91dGxpbmVTaXplKFBhaW50UGhhc2UgcCkgY29uc3QKIHsKICAgICBpZiAocCAhPSBQYWludFBo
YXNlT3V0bGluZSAmJiBwICE9IFBhaW50UGhhc2VTZWxmT3V0bGluZSAmJiBwICE9IFBhaW50UGhh
c2VDaGlsZE91dGxpbmVzKQogICAgICAgICByZXR1cm4gMDsKQEAgLTI1NzMsOSArMjU3Myw5IEBA
IGludCBSZW5kZXJPYmplY3Q6Om5leHRPZmZzZXQoaW50IGN1cnJlbnQKICAgICByZXR1cm4gY3Vy
cmVudCArIDE7CiB9CiAKLXZvaWQgUmVuZGVyT2JqZWN0OjphZGp1c3RSZWN0Rm9yT3V0bGluZUFu
ZFNoYWRvdyhJbnRSZWN0JiByZWN0KSBjb25zdAordm9pZCBSZW5kZXJPYmplY3Q6OmFkanVzdFJl
Y3RGb3JPdXRsaW5lQW5kU2hhZG93KExheW91dFJlY3QmIHJlY3QpIGNvbnN0CiB7Ci0gICAgaW50
IG91dGxpbmVTaXplID0gb3V0bGluZVN0eWxlRm9yUmVwYWludCgpLT5vdXRsaW5lU2l6ZSgpOwor
ICAgIExheW91dFVuaXQgb3V0bGluZVNpemUgPSBvdXRsaW5lU3R5bGVGb3JSZXBhaW50KCktPm91
dGxpbmVTaXplKCk7CiAgICAgaWYgKGNvbnN0IFNoYWRvd0RhdGEqIGJveFNoYWRvdyA9IHN0eWxl
KCktPmJveFNoYWRvdygpKSB7CiAgICAgICAgIGJveFNoYWRvdy0+YWRqdXN0UmVjdEZvclNoYWRv
dyhyZWN0LCBvdXRsaW5lU2l6ZSk7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDk4OTE4KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksOCAr
MTA5LDggQEAgc3RydWN0IERhc2hib2FyZFJlZ2lvblZhbHVlIHsKICAgICB9CiAKICAgICBTdHJp
bmcgbGFiZWw7Ci0gICAgSW50UmVjdCBib3VuZHM7Ci0gICAgSW50UmVjdCBjbGlwOworICAgIExh
eW91dFJlY3QgYm91bmRzOworICAgIExheW91dFJlY3QgY2xpcDsKICAgICBpbnQgdHlwZTsKIH07
CiAjZW5kaWYKQEAgLTI0NCw3ICsyNDQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogICAgIC8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogcHJpdmF0ZToKLSAgICB2b2lk
IGFkZEFic29sdXRlUmVjdEZvckxheWVyKEludFJlY3QmIHJlc3VsdCk7CisgICAgdm9pZCBhZGRB
YnNvbHV0ZVJlY3RGb3JMYXllcihMYXlvdXRSZWN0JiByZXN1bHQpOwogICAgIHZvaWQgc2V0TGF5
ZXJOZWVkc0Z1bGxSZXBhaW50KCk7CiAKIHB1YmxpYzoKQEAgLTY0Niw4ICs2NDYsOCBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGFic29sdXRlUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+Jiwg
Y29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdCB7IH0KIAogICAgIC8vIEZJWE1FOiB1c2VUcmFuc2Zv
cm1zIHNob3VsZCBnbyBhd2F5IGV2ZW50dWFsbHkKLSAgICBJbnRSZWN0IGFic29sdXRlQm91bmRp
bmdCb3hSZWN0KGJvb2wgdXNlVHJhbnNmb3JtID0gdHJ1ZSkgY29uc3Q7Ci0gICAgSW50UmVjdCBh
YnNvbHV0ZUJvdW5kaW5nQm94UmVjdElnbm9yaW5nVHJhbnNmb3JtcygpIGNvbnN0IHsgcmV0dXJu
IGFic29sdXRlQm91bmRpbmdCb3hSZWN0KGZhbHNlKTsgfQorICAgIExheW91dFJlY3QgYWJzb2x1
dGVCb3VuZGluZ0JveFJlY3QoYm9vbCB1c2VUcmFuc2Zvcm0gPSB0cnVlKSBjb25zdDsKKyAgICBM
YXlvdXRSZWN0IGFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1zKCkgY29u
c3QgeyByZXR1cm4gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoZmFsc2UpOyB9CiAKICAgICAvLyBC
dWlsZCBhbiBhcnJheSBvZiBxdWFkcyBpbiBhYnNvbHV0ZSBjb29yZHMgZm9yIGxpbmUgYm94ZXMK
ICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYsIGJvb2wq
IC8qd2FzRml4ZWQqLyA9IDApIGNvbnN0IHsgfQpAQCAtNzA0LDcgKzcwNCw3IEBAIHB1YmxpYzoK
IAogICAgIC8vIFJldHVybnMgdGhlIHJlY3QgdGhhdCBzaG91bGQgYmUgcmVwYWludGVkIHdoZW5l
dmVyIHRoaXMgb2JqZWN0IGNoYW5nZXMuICBUaGUgcmVjdCBpcyBpbiB0aGUgdmlldydzCiAgICAg
Ly8gY29vcmRpbmF0ZSBzcGFjZS4gIFRoaXMgbWV0aG9kIGRlYWxzIHdpdGggb3V0bGluZXMgYW5k
IG92ZXJmbG93LgotICAgIEludFJlY3QgYWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCkgY29u
c3QKKyAgICBMYXlvdXRSZWN0IGFic29sdXRlQ2xpcHBlZE92ZXJmbG93UmVjdCgpIGNvbnN0CiAg
ICAgewogICAgICAgICByZXR1cm4gY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQoMCk7CiAg
ICAgfQpAQCAtNzEzLDEzICs3MTMsMTMgQEAgcHVibGljOgogCiAgICAgLy8gR2l2ZW4gYSByZWN0
IGluIHRoZSBvYmplY3QncyBjb29yZGluYXRlIHNwYWNlLCBjb21wdXRlIGEgcmVjdCBzdWl0YWJs
ZSBmb3IgcmVwYWludGluZwogICAgIC8vIHRoYXQgcmVjdCBpbiB2aWV3IGNvb3JkaW5hdGVzLgot
ICAgIHZvaWQgY29tcHV0ZUFic29sdXRlUmVwYWludFJlY3QoSW50UmVjdCYgciwgYm9vbCBmaXhl
ZCA9IGZhbHNlKSBjb25zdAorICAgIHZvaWQgY29tcHV0ZUFic29sdXRlUmVwYWludFJlY3QoTGF5
b3V0UmVjdCYgciwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0
dXJuIGNvbXB1dGVSZWN0Rm9yUmVwYWludCgwLCByLCBmaXhlZCk7CiAgICAgfQogICAgIC8vIEdp
dmVuIGEgcmVjdCBpbiB0aGUgb2JqZWN0J3MgY29vcmRpbmF0ZSBzcGFjZSwgY29tcHV0ZSBhIHJl
Y3Qgc3VpdGFibGUgZm9yIHJlcGFpbnRpbmcKICAgICAvLyB0aGF0IHJlY3QgaW4gdGhlIGNvb3Jk
aW5hdGUgc3BhY2Ugb2YgcmVwYWludENvbnRhaW5lci4KLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0
ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBJ
bnRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgY29t
cHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVy
LCBMYXlvdXRSZWN0JiwgYm9vbCBmaXhlZCA9IGZhbHNlKSBjb25zdDsKIAogICAgIC8vIElmIG11
bHRpcGxlLWNvbHVtbiBsYXlvdXQgcmVzdWx0cyBpbiBhcHBseWluZyBhbiBvZmZzZXQgdG8gdGhl
IGdpdmVuIHBvaW50LCBhZGQgdGhlIHNhbWUKICAgICAvLyBvZmZzZXQgdG8gdGhlIGdpdmVuIHNp
emUuCkBAIC03MzUsNyArNzM1LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUmVmbGVjdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1faGFzUmVmbGVjdGlvbjsgfQogCiAgICAgLy8gQXBwbGllZCBhcyBh
ICJzbG9wIiB0byBkaXJ0eSByZWN0IGNoZWNrcyBkdXJpbmcgdGhlIG91dGxpbmUgcGFpbnRpbmcg
cGhhc2UncyBkaXJ0eS1yZWN0IGNoZWNrcy4KLSAgICBpbnQgbWF4aW1hbE91dGxpbmVTaXplKFBh
aW50UGhhc2UpIGNvbnN0OworICAgIExheW91dFVuaXQgbWF4aW1hbE91dGxpbmVTaXplKFBhaW50
UGhhc2UpIGNvbnN0OwogCiAgICAgdm9pZCBzZXRIYXNNYXJrdXBUcnVuY2F0aW9uKGJvb2wgYiA9
IHRydWUpIHsgbV9oYXNNYXJrdXBUcnVuY2F0aW9uID0gYjsgfQogICAgIGJvb2wgaGFzTWFya3Vw
VHJ1bmNhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faGFzTWFya3VwVHJ1bmNhdGlvbjsgfQpAQCAt
ODQzLDcgKzg0Myw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgYWRkRm9jdXNS
aW5nUmVjdHMoVmVjdG9yPExheW91dFJlY3Q+JiwgY29uc3QgTGF5b3V0UG9pbnQmKSB7IH07CiAK
LSAgICBJbnRSZWN0IGFic29sdXRlT3V0bGluZUJvdW5kcygpIGNvbnN0CisgICAgTGF5b3V0UmVj
dCBhYnNvbHV0ZU91dGxpbmVCb3VuZHMoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG91
dGxpbmVCb3VuZHNGb3JSZXBhaW50KDApOwogICAgIH0KQEAgLTg1NSwyMSArODU1LDIxIEBAIHBy
b3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNl
LCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOwogICAgIHZvaWQgcHJvcGFnYXRlU3R5bGVU
b0Fub255bW91c0NoaWxkcmVuKGJvb2wgYmxvY2tDaGlsZHJlbk9ubHkgPSBmYWxzZSk7CiAKLSAg
ICB2b2lkIGRyYXdMaW5lRm9yQm94U2lkZShHcmFwaGljc0NvbnRleHQqLCBpbnQgeDEsIGludCB5
MSwgaW50IHgyLCBpbnQgeTIsIEJveFNpZGUsCisgICAgdm9pZCBkcmF3TGluZUZvckJveFNpZGUo
R3JhcGhpY3NDb250ZXh0KiwgTGF5b3V0VW5pdCB4MSwgTGF5b3V0VW5pdCB5MSwgTGF5b3V0VW5p
dCB4MiwgTGF5b3V0VW5pdCB5MiwgQm94U2lkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDb2xvciwgRUJvcmRlclN0eWxlLCBpbnQgYWRqYncxLCBpbnQgYWRqYncyLCBib29sIGFudGlh
bGlhcyA9IGZhbHNlKTsKIAogICAgIHZvaWQgcGFpbnRGb2N1c1JpbmcoR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgTGF5b3V0UG9pbnQmLCBSZW5kZXJTdHlsZSopOwogICAgIHZvaWQgcGFpbnRPdXRs
aW5lKEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFJlY3QmKTsKLSAgICB2b2lkIGFkZFBE
RlVSTFJlY3QoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZvaWQgYWRk
UERGVVJMUmVjdChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlvdXRSZWN0Jik7CiAKLSAgICB2
aXJ0dWFsIEludFJlY3Qgdmlld1JlY3QoKSBjb25zdDsKKyAgICB2aXJ0dWFsIExheW91dFJlY3Qg
dmlld1JlY3QoKSBjb25zdDsKIAotICAgIHZvaWQgYWRqdXN0UmVjdEZvck91dGxpbmVBbmRTaGFk
b3coSW50UmVjdCYpIGNvbnN0OworICAgIHZvaWQgYWRqdXN0UmVjdEZvck91dGxpbmVBbmRTaGFk
b3coTGF5b3V0UmVjdCYpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIHdpbGxCZURlc3Ryb3ll
ZCgpOwogICAgIHZvaWQgYXJlbmFEZWxldGUoUmVuZGVyQXJlbmEqLCB2b2lkKiBvYmplY3RCYXNl
KTsKIAotICAgIHZpcnR1YWwgTGF5b3V0UmVjdCBvdXRsaW5lQm91bmRzRm9yUmVwYWludChSZW5k
ZXJCb3hNb2RlbE9iamVjdCogLypyZXBhaW50Q29udGFpbmVyKi8sIEludFBvaW50KiAvKmNhY2hl
ZE9mZnNldFRvUmVwYWludENvbnRhaW5lciovID0gMCkgY29uc3QgeyByZXR1cm4gTGF5b3V0UmVj
dCgpOyB9CisgICAgdmlydHVhbCBMYXlvdXRSZWN0IG91dGxpbmVCb3VuZHNGb3JSZXBhaW50KFJl
bmRlckJveE1vZGVsT2JqZWN0KiAvKnJlcGFpbnRDb250YWluZXIqLywgTGF5b3V0UG9pbnQqIC8q
Y2FjaGVkT2Zmc2V0VG9SZXBhaW50Q29udGFpbmVyKi8gPSAwKSBjb25zdCB7IHJldHVybiBMYXlv
dXRSZWN0KCk7IH0KIAogcHJpdmF0ZToKICAgICBSZW5kZXJTdHlsZSogZmlyc3RMaW5lU3R5bGVT
bG93Q2FzZSgpIGNvbnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113191</attachid>
            <date>2011-11-01 10:38:41 -0700</date>
            <delta_ts>2011-11-01 16:02:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71249-20111101103840.patch</filename>
            <type>text/plain</type>
            <size>16621</size>
            <attacher name="Emil A Eklund">eae</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4OTc2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMTEtMDEgIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN3aXRjaCBSZW5kZXJPYmplY3Qg
dG8gbGF5b3V0IGFic3RyYWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MTI0OQorCisgICAgICAgIFN3aXRjaCBSZW5kZXJPYmplY3QgdG8gTGF5
b3V0UmVjdC9TaXplL1BvaW50IGFic3RyYWN0aW9uLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojpk
cmF3TGluZUZvckJveFNpZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphZGRQ
REZVUkxSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphYnNvbHV0ZUZv
Y3VzUmluZ1F1YWRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWRkQWJzb2x1
dGVSZWN0Rm9yTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpyZXBhaW50
QWZ0ZXJMYXlvdXRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmNv
bXB1dGVSZWN0Rm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnZp
ZXdSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6bWFwTG9jYWxUb0NvbnRh
aW5lcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmxvY2FsQ2FyZXRSZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWRkRGFzaGJvYXJkUmVnaW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Om1heGltYWxPdXRsaW5lU2l6ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OmFkanVzdFJlY3RGb3JPdXRsaW5lQW5kU2hhZG93
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1z
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6YWJzb2x1dGVDbGlwcGVkT3ZlcmZs
b3dSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6Y29tcHV0ZUFic29sdXRl
UmVwYWludFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjphYnNvbHV0ZU91
dGxpbmVCb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpvdXRsaW5lQm91
bmRzRm9yUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RGb3JBYnNvbHV0ZVpvb20p
OgorCiAyMDExLTExLTAxICBNaWtlIFJlZWQgIDxyZWVkQGdvb2dsZS5jb20+CiAKICAgICAgICAg
W3NraWFdIGNhbGwgcmVhZFBpeGVscyBvbiBjYW52YXMgaW5zdGVhZCBvZiBkZXZpY2UgKHdpbGwg
YmUgcHJpdmF0ZSBvbiBkZXZpY2Ugc29vbikgYW5kIGNoZWNrIGZvciBlcnJvcgpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDk4OTcyKQor
KysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc4Nyw3ICs3ODcsNyBAQCBib29sIFJlbmRlck9iamVjdDo6bXVzdFJlcGFpbnRCYWNr
Z3JvdW5kCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbmRlck9iamVjdDo6ZHJhd0xp
bmVGb3JCb3hTaWRlKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBpbnQgeDEsIGlu
dCB5MSwgaW50IHgyLCBpbnQgeTIsCit2b2lkIFJlbmRlck9iamVjdDo6ZHJhd0xpbmVGb3JCb3hT
aWRlKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBMYXlvdXRVbml0IHgxLCBMYXlv
dXRVbml0IHkxLCBMYXlvdXRVbml0IHgyLCBMYXlvdXRVbml0IHkyLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBCb3hTaWRlIHNpZGUsIENvbG9yIGNvbG9yLCBFQm9yZGVy
U3R5bGUgc3R5bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBh
ZGphY2VudFdpZHRoMSwgaW50IGFkamFjZW50V2lkdGgyLCBib29sIGFudGlhbGlhcykKIHsKQEAg
LTEwOTcsNyArMTA5Nyw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpwYWludEZvY3VzUmluZyhHcmFw
aGkKICAgICAgICAgYWRkUERGVVJMUmVjdChjb250ZXh0LCB1bmlvblJlY3QoZm9jdXNSaW5nUmVj
dHMpKTsKIH0gICAgICAgIAogCi12b2lkIFJlbmRlck9iamVjdDo6YWRkUERGVVJMUmVjdChHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFJlbmRlck9i
amVjdDo6YWRkUERGVVJMUmVjdChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IExheW91
dFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKHJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CkBAIC0xMTYzLDcgKzExNjMsNyBAQCB2b2lkIFJlbmRlck9iamVjdDo6cGFpbnRPdXRsaW5lKEdy
YXBoaWNzCiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsK
IH0KIAotSW50UmVjdCBSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCb3hSZWN0KGJvb2wg
dXNlVHJhbnNmb3JtcykgY29uc3QKK0xheW91dFJlY3QgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJv
dW5kaW5nQm94UmVjdChib29sIHVzZVRyYW5zZm9ybXMpIGNvbnN0CiB7CiAgICAgaWYgKHVzZVRy
YW5zZm9ybXMpIHsKICAgICAgICAgVmVjdG9yPEZsb2F0UXVhZD4gcXVhZHM7CkBAIC0xMTczLDIx
ICsxMTczLDIxIEBAIEludFJlY3QgUmVuZGVyT2JqZWN0OjphYnNvbHV0ZUJvdW5kaW5nQm8KICAg
ICAgICAgaWYgKCFuKQogICAgICAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKICAgICAKLSAgICAg
ICAgSW50UmVjdCByZXN1bHQgPSBxdWFkc1swXS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpOworICAg
ICAgICBMYXlvdXRSZWN0IHJlc3VsdCA9IHF1YWRzWzBdLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7
CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgbjsgKytpKQogICAgICAgICAgICAgcmVz
dWx0LnVuaXRlKHF1YWRzW2ldLmVuY2xvc2luZ0JvdW5kaW5nQm94KCkpOwogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KIAogICAgIEZsb2F0UG9pbnQgYWJzUG9zID0gbG9jYWxUb0Fic29s
dXRlKCk7Ci0gICAgVmVjdG9yPEludFJlY3Q+IHJlY3RzOworICAgIFZlY3RvcjxMYXlvdXRSZWN0
PiByZWN0czsKICAgICBhYnNvbHV0ZVJlY3RzKHJlY3RzLCBmbG9vcmVkTGF5b3V0UG9pbnQoYWJz
UG9zKSk7CiAKICAgICBzaXplX3QgbiA9IHJlY3RzLnNpemUoKTsKICAgICBpZiAoIW4pCi0gICAg
ICAgIHJldHVybiBJbnRSZWN0KCk7CisgICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CiAKLSAg
ICBJbnRSZWN0IHJlc3VsdCA9IHJlY3RzWzBdOworICAgIExheW91dFJlY3QgcmVzdWx0ID0gcmVj
dHNbMF07CiAgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBuOyArK2kpCiAgICAgICAgIHJlc3Vs
dC51bml0ZShyZWN0c1tpXSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTExOTUsMjIgKzExOTUs
MjIgQEAgSW50UmVjdCBSZW5kZXJPYmplY3Q6OmFic29sdXRlQm91bmRpbmdCbwogCiB2b2lkIFJl
bmRlck9iamVjdDo6YWJzb2x1dGVGb2N1c1JpbmdRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVh
ZHMpCiB7Ci0gICAgVmVjdG9yPEludFJlY3Q+IHJlY3RzOworICAgIFZlY3RvcjxMYXlvdXRSZWN0
PiByZWN0czsKICAgICAvLyBGSVhNRTogYWRkRm9jdXNSaW5nUmVjdHMoKSBuZWVkcyB0byBiZSBw
YXNzZWQgdGhpcyB0cmFuc2Zvcm0tdW5hd2FyZQogICAgIC8vIGxvY2FsVG9BYnNvbHV0ZSgpIG9m
ZnNldCBoZXJlIGJlY2F1c2UgUmVuZGVySW5saW5lOjphZGRGb2N1c1JpbmdSZWN0cygpCiAgICAg
Ly8gaW1wbGljaXRseSBhc3N1bWVzIHRoYXQuIFRoaXMgZG9lc24ndCB3b3JrIGNvcnJlY3RseSB3
aXRoIHRyYW5zZm9ybWVkCiAgICAgLy8gZGVzY2VuZGFudHMuCiAgICAgRmxvYXRQb2ludCBhYnNv
bHV0ZVBvaW50ID0gbG9jYWxUb0Fic29sdXRlKCk7Ci0gICAgYWRkRm9jdXNSaW5nUmVjdHMocmVj
dHMsIGZsb29yZWRJbnRQb2ludChhYnNvbHV0ZVBvaW50KSk7CisgICAgYWRkRm9jdXNSaW5nUmVj
dHMocmVjdHMsIGZsb29yZWRMYXlvdXRQb2ludChhYnNvbHV0ZVBvaW50KSk7CiAgICAgc2l6ZV90
IGNvdW50ID0gcmVjdHMuc2l6ZSgpOyAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50
OyArK2kpIHsKLSAgICAgICAgSW50UmVjdCByZWN0ID0gcmVjdHNbaV07CisgICAgICAgIExheW91
dFJlY3QgcmVjdCA9IHJlY3RzW2ldOwogICAgICAgICByZWN0Lm1vdmUoLWFic29sdXRlUG9pbnQu
eCgpLCAtYWJzb2x1dGVQb2ludC55KCkpOwogICAgICAgICBxdWFkcy5hcHBlbmQobG9jYWxUb0Fi
c29sdXRlUXVhZChGbG9hdFF1YWQocmVjdCkpKTsKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyT2Jq
ZWN0OjphZGRBYnNvbHV0ZVJlY3RGb3JMYXllcihJbnRSZWN0JiByZXN1bHQpCit2b2lkIFJlbmRl
ck9iamVjdDo6YWRkQWJzb2x1dGVSZWN0Rm9yTGF5ZXIoTGF5b3V0UmVjdCYgcmVzdWx0KQogewog
ICAgIGlmIChoYXNMYXllcigpKQogICAgICAgICByZXN1bHQudW5pdGUoYWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3RJZ25vcmluZ1RyYW5zZm9ybXMoKSk7CkBAIC0xMzk5LDkgKzEzOTksOSBAQCBib29s
IFJlbmRlck9iamVjdDo6cmVwYWludEFmdGVyTGF5b3V0SWZOCiAgICAgICAgIExheW91dFVuaXQg
c2hhZG93UmlnaHQ7CiAgICAgICAgIHN0eWxlKCktPmdldEJveFNoYWRvd0hvcml6b250YWxFeHRl
bnQoc2hhZG93TGVmdCwgc2hhZG93UmlnaHQpOwogCi0gICAgICAgIExheW91dFVuaXQgYm9yZGVy
UmlnaHQgPSBpc0JveCgpID8gdG9SZW5kZXJCb3godGhpcyktPmJvcmRlclJpZ2h0KCkgOiAwOwot
ICAgICAgICBMYXlvdXRVbml0IGJveFdpZHRoID0gaXNCb3goKSA/IHRvUmVuZGVyQm94KHRoaXMp
LT53aWR0aCgpIDogMDsKLSAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJXaWR0aCA9IG1heCgtb3V0
bGluZVN0eWxlLT5vdXRsaW5lT2Zmc2V0KCksIG1heChib3JkZXJSaWdodCwgbWF4KHN0eWxlKCkt
PmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkud2lkdGgoKS5jYWxjVmFsdWUoYm94V2lkdGgpLCBzdHls
ZSgpLT5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLndpZHRoKCkuY2FsY1ZhbHVlKGJveFdpZHRo
KSkpKSArIG1heChvdywgc2hhZG93UmlnaHQpOworICAgICAgICBMYXlvdXRVbml0IGJvcmRlclJp
Z2h0ID0gaXNCb3goKSA/IHRvUmVuZGVyQm94KHRoaXMpLT5ib3JkZXJSaWdodCgpIDogTGF5b3V0
VW5pdCgwKTsKKyAgICAgICAgTGF5b3V0VW5pdCBib3hXaWR0aCA9IGlzQm94KCkgPyB0b1JlbmRl
ckJveCh0aGlzKS0+d2lkdGgoKSA6IExheW91dFVuaXQoMCk7CisgICAgICAgIExheW91dFVuaXQg
Ym9yZGVyV2lkdGggPSBtYXg8TGF5b3V0VW5pdD4oLW91dGxpbmVTdHlsZS0+b3V0bGluZU9mZnNl
dCgpLCBtYXgoYm9yZGVyUmlnaHQsIG1heDxMYXlvdXRVbml0PihzdHlsZSgpLT5ib3JkZXJUb3BS
aWdodFJhZGl1cygpLndpZHRoKCkuY2FsY1ZhbHVlKGJveFdpZHRoKSwgc3R5bGUoKS0+Ym9yZGVy
Qm90dG9tUmlnaHRSYWRpdXMoKS53aWR0aCgpLmNhbGNWYWx1ZShib3hXaWR0aCkpKSkgKyBtYXgo
b3csIHNoYWRvd1JpZ2h0KTsKICAgICAgICAgTGF5b3V0UmVjdCByaWdodFJlY3QobmV3T3V0bGlu
ZUJveC54KCkgKyBtaW4obmV3T3V0bGluZUJveC53aWR0aCgpLCBvbGRPdXRsaW5lQm94LndpZHRo
KCkpIC0gYm9yZGVyV2lkdGgsCiAgICAgICAgICAgICBuZXdPdXRsaW5lQm94LnkoKSwKICAgICAg
ICAgICAgIHdpZHRoICsgYm9yZGVyV2lkdGgsCkBAIC0xNDE4LDkgKzE0MTgsOSBAQCBib29sIFJl
bmRlck9iamVjdDo6cmVwYWludEFmdGVyTGF5b3V0SWZOCiAgICAgICAgIExheW91dFVuaXQgc2hh
ZG93Qm90dG9tOwogICAgICAgICBzdHlsZSgpLT5nZXRCb3hTaGFkb3dWZXJ0aWNhbEV4dGVudChz
aGFkb3dUb3AsIHNoYWRvd0JvdHRvbSk7CiAKLSAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJCb3R0
b20gPSBpc0JveCgpID8gdG9SZW5kZXJCb3godGhpcyktPmJvcmRlckJvdHRvbSgpIDogMDsKLSAg
ICAgICAgTGF5b3V0VW5pdCBib3hIZWlnaHQgPSBpc0JveCgpID8gdG9SZW5kZXJCb3godGhpcykt
PmhlaWdodCgpIDogMDsKLSAgICAgICAgTGF5b3V0VW5pdCBib3JkZXJIZWlnaHQgPSBtYXgoLW91
dGxpbmVTdHlsZS0+b3V0bGluZU9mZnNldCgpLCBtYXgoYm9yZGVyQm90dG9tLCBtYXgoc3R5bGUo
KS0+Ym9yZGVyQm90dG9tTGVmdFJhZGl1cygpLmhlaWdodCgpLmNhbGNWYWx1ZShib3hIZWlnaHQp
LCBzdHlsZSgpLT5ib3JkZXJCb3R0b21SaWdodFJhZGl1cygpLmhlaWdodCgpLmNhbGNWYWx1ZShi
b3hIZWlnaHQpKSkpICsgbWF4KG93LCBzaGFkb3dCb3R0b20pOworICAgICAgICBMYXlvdXRVbml0
IGJvcmRlckJvdHRvbSA9IGlzQm94KCkgPyB0b1JlbmRlckJveCh0aGlzKS0+Ym9yZGVyQm90dG9t
KCkgOiBMYXlvdXRVbml0KDApOworICAgICAgICBMYXlvdXRVbml0IGJveEhlaWdodCA9IGlzQm94
KCkgPyB0b1JlbmRlckJveCh0aGlzKS0+aGVpZ2h0KCkgOiBMYXlvdXRVbml0KDApOworICAgICAg
ICBMYXlvdXRVbml0IGJvcmRlckhlaWdodCA9IG1heDxMYXlvdXRVbml0Pigtb3V0bGluZVN0eWxl
LT5vdXRsaW5lT2Zmc2V0KCksIG1heChib3JkZXJCb3R0b20sIG1heDxMYXlvdXRVbml0PihzdHls
ZSgpLT5ib3JkZXJCb3R0b21MZWZ0UmFkaXVzKCkuaGVpZ2h0KCkuY2FsY1ZhbHVlKGJveEhlaWdo
dCksIHN0eWxlKCktPmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzKCkuaGVpZ2h0KCkuY2FsY1ZhbHVl
KGJveEhlaWdodCkpKSkgKyBtYXgob3csIHNoYWRvd0JvdHRvbSk7CiAgICAgICAgIExheW91dFJl
Y3QgYm90dG9tUmVjdChuZXdPdXRsaW5lQm94LngoKSwKICAgICAgICAgICAgIG1pbihuZXdPdXRs
aW5lQm94Lm1heFkoKSwgb2xkT3V0bGluZUJveC5tYXhZKCkpIC0gYm9yZGVySGVpZ2h0LAogICAg
ICAgICAgICAgbWF4KG5ld091dGxpbmVCb3gud2lkdGgoKSwgb2xkT3V0bGluZUJveC53aWR0aCgp
KSwKQEAgLTE0NjMsNyArMTQ2Myw3IEBAIExheW91dFJlY3QgUmVuZGVyT2JqZWN0OjpjbGlwcGVk
T3ZlcmZsb3cKICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwogfQogCi12b2lkIFJlbmRlck9iamVj
dDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29u
dGFpbmVyLCBJbnRSZWN0JiByZWN0LCBib29sIGZpeGVkKSBjb25zdAordm9pZCBSZW5kZXJPYmpl
Y3Q6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgTGF5b3V0UmVjdCYgcmVjdCwgYm9vbCBmaXhlZCkgY29uc3QKIHsKICAgICBpZiAo
cmVwYWludENvbnRhaW5lciA9PSB0aGlzKQogICAgICAgICByZXR1cm47CkBAIC0xNDgxLDEwICsx
NDgxLDEwIEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQKICAgICAg
ICAgICAgIC8vIGFueXdheSBpZiBpdHMgc2l6ZSBkb2VzIGNoYW5nZS4KICAgICAgICAgICAgIFJl
bmRlckJveCogYm94UGFyZW50ID0gdG9SZW5kZXJCb3gobyk7CiAKLSAgICAgICAgICAgIEludFJl
Y3QgcmVwYWludFJlY3QocmVjdCk7CisgICAgICAgICAgICBMYXlvdXRSZWN0IHJlcGFpbnRSZWN0
KHJlY3QpOwogICAgICAgICAgICAgcmVwYWludFJlY3QubW92ZSgtYm94UGFyZW50LT5sYXllcigp
LT5zY3JvbGxlZENvbnRlbnRPZmZzZXQoKSk7IC8vIEZvciBvdmVyZmxvdzphdXRvL3Njcm9sbC9o
aWRkZW4uCiAKLSAgICAgICAgICAgIEludFJlY3QgYm94UmVjdChJbnRQb2ludCgpLCBib3hQYXJl
bnQtPmxheWVyKCktPnNpemUoKSk7CisgICAgICAgICAgICBMYXlvdXRSZWN0IGJveFJlY3QoTGF5
b3V0UG9pbnQoKSwgYm94UGFyZW50LT5sYXllcigpLT5zaXplKCkpOwogICAgICAgICAgICAgcmVj
dCA9IGludGVyc2VjdGlvbihyZXBhaW50UmVjdCwgYm94UmVjdCk7CiAgICAgICAgICAgICBpZiAo
cmVjdC5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTk0MSw3ICsxOTQx
LDcgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnVwZGF0ZUltYWdlKFN0eWxlSW1hZwogICAgIH0KIH0K
IAotSW50UmVjdCBSZW5kZXJPYmplY3Q6OnZpZXdSZWN0KCkgY29uc3QKK0xheW91dFJlY3QgUmVu
ZGVyT2JqZWN0Ojp2aWV3UmVjdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHZpZXcoKS0+dmlld1Jl
Y3QoKTsKIH0KQEAgLTE5NzMsMTIgKzE5NzMsMTIgQEAgdm9pZCBSZW5kZXJPYmplY3Q6Om1hcExv
Y2FsVG9Db250YWluZXIoUgogICAgIGlmICghbykKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50
UG9pbnQgY2VudGVyUG9pbnQgPSByb3VuZGVkSW50UG9pbnQodHJhbnNmb3JtU3RhdGUubWFwcGVk
UG9pbnQoKSk7CisgICAgTGF5b3V0UG9pbnQgY2VudGVyUG9pbnQgPSByb3VuZGVkTGF5b3V0UG9p
bnQodHJhbnNmb3JtU3RhdGUubWFwcGVkUG9pbnQoKSk7CiAgICAgaWYgKG8tPmlzQm94KCkgJiYg
by0+c3R5bGUoKS0+aXNGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoKSkKLSAgICAgICAgdHJhbnNm
b3JtU3RhdGUubW92ZSh0b1JlbmRlckJveChvKS0+ZmxpcEZvcldyaXRpbmdNb2RlSW5jbHVkaW5n
Q29sdW1ucyhyb3VuZGVkSW50UG9pbnQodHJhbnNmb3JtU3RhdGUubWFwcGVkUG9pbnQoKSkpIC0g
Y2VudGVyUG9pbnQpOworICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5tb3ZlKHRvUmVuZGVyQm94KG8p
LT5mbGlwRm9yV3JpdGluZ01vZGVJbmNsdWRpbmdDb2x1bW5zKHJvdW5kZWRMYXlvdXRQb2ludCh0
cmFuc2Zvcm1TdGF0ZS5tYXBwZWRQb2ludCgpKSkgLSBjZW50ZXJQb2ludCk7CiAKLSAgICBJbnRT
aXplIGNvbHVtbk9mZnNldDsKLSAgICBvLT5hZGp1c3RGb3JDb2x1bW5zKGNvbHVtbk9mZnNldCwg
cm91bmRlZEludFBvaW50KHRyYW5zZm9ybVN0YXRlLm1hcHBlZFBvaW50KCkpKTsKKyAgICBMYXlv
dXRTaXplIGNvbHVtbk9mZnNldDsKKyAgICBvLT5hZGp1c3RGb3JDb2x1bW5zKGNvbHVtbk9mZnNl
dCwgcm91bmRlZExheW91dFBvaW50KHRyYW5zZm9ybVN0YXRlLm1hcHBlZFBvaW50KCkpKTsKICAg
ICBpZiAoIWNvbHVtbk9mZnNldC5pc1plcm8oKSkKICAgICAgICAgdHJhbnNmb3JtU3RhdGUubW92
ZShjb2x1bW5PZmZzZXQpOwogCkBAIC0yNDc5LDE1ICsyNDc5LDE1IEBAIHZvaWQgUmVuZGVyT2Jq
ZWN0OjphZGREYXNoYm9hcmRSZWdpb25zKFYKICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkr
KykgewogICAgICAgICBTdHlsZURhc2hib2FyZFJlZ2lvbiBzdHlsZVJlZ2lvbiA9IHN0eWxlUmVn
aW9uc1tpXTsKIAotICAgICAgICBpbnQgdyA9IGJveC0+d2lkdGgoKTsKLSAgICAgICAgaW50IGgg
PSBib3gtPmhlaWdodCgpOworICAgICAgICBMYXlvdXRVbml0IHcgPSBib3gtPndpZHRoKCk7Cisg
ICAgICAgIExheW91dFVuaXQgaCA9IGJveC0+aGVpZ2h0KCk7CiAKICAgICAgICAgRGFzaGJvYXJk
UmVnaW9uVmFsdWUgcmVnaW9uOwogICAgICAgICByZWdpb24ubGFiZWwgPSBzdHlsZVJlZ2lvbi5s
YWJlbDsKLSAgICAgICAgcmVnaW9uLmJvdW5kcyA9IEludFJlY3Qoc3R5bGVSZWdpb24ub2Zmc2V0
LmxlZnQoKS52YWx1ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZVJl
Z2lvbi5vZmZzZXQudG9wKCkudmFsdWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdyAtIHN0eWxlUmVnaW9uLm9mZnNldC5sZWZ0KCkudmFsdWUoKSAtIHN0eWxlUmVnaW9uLm9m
ZnNldC5yaWdodCgpLnZhbHVlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGgg
LSBzdHlsZVJlZ2lvbi5vZmZzZXQudG9wKCkudmFsdWUoKSAtIHN0eWxlUmVnaW9uLm9mZnNldC5i
b3R0b20oKS52YWx1ZSgpKTsKKyAgICAgICAgcmVnaW9uLmJvdW5kcyA9IExheW91dFJlY3Qoc3R5
bGVSZWdpb24ub2Zmc2V0LmxlZnQoKS52YWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHlsZVJlZ2lvbi5vZmZzZXQudG9wKCkudmFsdWUoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdyAtIHN0eWxlUmVnaW9uLm9mZnNldC5sZWZ0KCkudmFs
dWUoKSAtIHN0eWxlUmVnaW9uLm9mZnNldC5yaWdodCgpLnZhbHVlKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGggLSBzdHlsZVJlZ2lvbi5vZmZzZXQudG9wKCkudmFsdWUo
KSAtIHN0eWxlUmVnaW9uLm9mZnNldC5ib3R0b20oKS52YWx1ZSgpKTsKICAgICAgICAgcmVnaW9u
LnR5cGUgPSBzdHlsZVJlZ2lvbi50eXBlOwogCiAgICAgICAgIHJlZ2lvbi5jbGlwID0gcmVnaW9u
LmJvdW5kczsKQEAgLTI1MzcsNyArMjUzNyw3IEBAIGJvb2wgUmVuZGVyT2JqZWN0Ojp3aWxsUmVu
ZGVySW1hZ2UoQ2FjaGUKICAgICByZXR1cm4gIWRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkgJiYg
IWRvY3VtZW50KCktPnZpZXcoKS0+aXNPZmZzY3JlZW4oKTsKIH0KIAotaW50IFJlbmRlck9iamVj
dDo6bWF4aW1hbE91dGxpbmVTaXplKFBhaW50UGhhc2UgcCkgY29uc3QKK0xheW91dFVuaXQgUmVu
ZGVyT2JqZWN0OjptYXhpbWFsT3V0bGluZVNpemUoUGFpbnRQaGFzZSBwKSBjb25zdAogewogICAg
IGlmIChwICE9IFBhaW50UGhhc2VPdXRsaW5lICYmIHAgIT0gUGFpbnRQaGFzZVNlbGZPdXRsaW5l
ICYmIHAgIT0gUGFpbnRQaGFzZUNoaWxkT3V0bGluZXMpCiAgICAgICAgIHJldHVybiAwOwpAQCAt
MjU3Myw5ICsyNTczLDkgQEAgaW50IFJlbmRlck9iamVjdDo6bmV4dE9mZnNldChpbnQgY3VycmVu
dAogICAgIHJldHVybiBjdXJyZW50ICsgMTsKIH0KIAotdm9pZCBSZW5kZXJPYmplY3Q6OmFkanVz
dFJlY3RGb3JPdXRsaW5lQW5kU2hhZG93KEludFJlY3QmIHJlY3QpIGNvbnN0Cit2b2lkIFJlbmRl
ck9iamVjdDo6YWRqdXN0UmVjdEZvck91dGxpbmVBbmRTaGFkb3coTGF5b3V0UmVjdCYgcmVjdCkg
Y29uc3QKIHsKLSAgICBpbnQgb3V0bGluZVNpemUgPSBvdXRsaW5lU3R5bGVGb3JSZXBhaW50KCkt
Pm91dGxpbmVTaXplKCk7CisgICAgTGF5b3V0VW5pdCBvdXRsaW5lU2l6ZSA9IG91dGxpbmVTdHls
ZUZvclJlcGFpbnQoKS0+b3V0bGluZVNpemUoKTsKICAgICBpZiAoY29uc3QgU2hhZG93RGF0YSog
Ym94U2hhZG93ID0gc3R5bGUoKS0+Ym94U2hhZG93KCkpIHsKICAgICAgICAgYm94U2hhZG93LT5h
ZGp1c3RSZWN0Rm9yU2hhZG93KHJlY3QsIG91dGxpbmVTaXplKTsKICAgICAgICAgcmV0dXJuOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAkocmV2aXNpb24gOTg5
NzIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEwOSw4ICsxMDksOCBAQCBzdHJ1Y3QgRGFzaGJvYXJkUmVnaW9uVmFsdWUgewog
ICAgIH0KIAogICAgIFN0cmluZyBsYWJlbDsKLSAgICBJbnRSZWN0IGJvdW5kczsKLSAgICBJbnRS
ZWN0IGNsaXA7CisgICAgTGF5b3V0UmVjdCBib3VuZHM7CisgICAgTGF5b3V0UmVjdCBjbGlwOwog
ICAgIGludCB0eXBlOwogfTsKICNlbmRpZgpAQCAtMjQ0LDcgKzI0NCw3IEBAIHByb3RlY3RlZDoK
ICAgICB9CiAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiBw
cml2YXRlOgotICAgIHZvaWQgYWRkQWJzb2x1dGVSZWN0Rm9yTGF5ZXIoSW50UmVjdCYgcmVzdWx0
KTsKKyAgICB2b2lkIGFkZEFic29sdXRlUmVjdEZvckxheWVyKExheW91dFJlY3QmIHJlc3VsdCk7
CiAgICAgdm9pZCBzZXRMYXllck5lZWRzRnVsbFJlcGFpbnQoKTsKIAogcHVibGljOgpAQCAtNjQ2
LDggKzY0Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgYWJzb2x1dGVSZWN0cyhWZWN0
b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0IHsgfQogCiAgICAgLy8g
RklYTUU6IHVzZVRyYW5zZm9ybXMgc2hvdWxkIGdvIGF3YXkgZXZlbnR1YWxseQotICAgIEludFJl
Y3QgYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoYm9vbCB1c2VUcmFuc2Zvcm0gPSB0cnVlKSBjb25z
dDsKLSAgICBJbnRSZWN0IGFic29sdXRlQm91bmRpbmdCb3hSZWN0SWdub3JpbmdUcmFuc2Zvcm1z
KCkgY29uc3QgeyByZXR1cm4gYWJzb2x1dGVCb3VuZGluZ0JveFJlY3QoZmFsc2UpOyB9CisgICAg
TGF5b3V0UmVjdCBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChib29sIHVzZVRyYW5zZm9ybSA9IHRy
dWUpIGNvbnN0OworICAgIExheW91dFJlY3QgYWJzb2x1dGVCb3VuZGluZ0JveFJlY3RJZ25vcmlu
Z1RyYW5zZm9ybXMoKSBjb25zdCB7IHJldHVybiBhYnNvbHV0ZUJvdW5kaW5nQm94UmVjdChmYWxz
ZSk7IH0KIAogICAgIC8vIEJ1aWxkIGFuIGFycmF5IG9mIHF1YWRzIGluIGFic29sdXRlIGNvb3Jk
cyBmb3IgbGluZSBib3hlcwogICAgIHZpcnR1YWwgdm9pZCBhYnNvbHV0ZVF1YWRzKFZlY3RvcjxG
bG9hdFF1YWQ+JiwgYm9vbCogLyp3YXNGaXhlZCovID0gMCkgY29uc3QgeyB9CkBAIC03MDQsNyAr
NzA0LDcgQEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJucyB0aGUgcmVjdCB0aGF0IHNob3VsZCBi
ZSByZXBhaW50ZWQgd2hlbmV2ZXIgdGhpcyBvYmplY3QgY2hhbmdlcy4gIFRoZSByZWN0IGlzIGlu
IHRoZSB2aWV3J3MKICAgICAvLyBjb29yZGluYXRlIHNwYWNlLiAgVGhpcyBtZXRob2QgZGVhbHMg
d2l0aCBvdXRsaW5lcyBhbmQgb3ZlcmZsb3cuCi0gICAgSW50UmVjdCBhYnNvbHV0ZUNsaXBwZWRP
dmVyZmxvd1JlY3QoKSBjb25zdAorICAgIExheW91dFJlY3QgYWJzb2x1dGVDbGlwcGVkT3ZlcmZs
b3dSZWN0KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBjbGlwcGVkT3ZlcmZsb3dSZWN0
Rm9yUmVwYWludCgwKTsKICAgICB9CkBAIC03MTMsMTMgKzcxMywxMyBAQCBwdWJsaWM6CiAKICAg
ICAvLyBHaXZlbiBhIHJlY3QgaW4gdGhlIG9iamVjdCdzIGNvb3JkaW5hdGUgc3BhY2UsIGNvbXB1
dGUgYSByZWN0IHN1aXRhYmxlIGZvciByZXBhaW50aW5nCiAgICAgLy8gdGhhdCByZWN0IGluIHZp
ZXcgY29vcmRpbmF0ZXMuCi0gICAgdm9pZCBjb21wdXRlQWJzb2x1dGVSZXBhaW50UmVjdChJbnRS
ZWN0JiByLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0CisgICAgdm9pZCBjb21wdXRlQWJzb2x1
dGVSZXBhaW50UmVjdChMYXlvdXRSZWN0JiByLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0CiAg
ICAgewogICAgICAgICByZXR1cm4gY29tcHV0ZVJlY3RGb3JSZXBhaW50KDAsIHIsIGZpeGVkKTsK
ICAgICB9CiAgICAgLy8gR2l2ZW4gYSByZWN0IGluIHRoZSBvYmplY3QncyBjb29yZGluYXRlIHNw
YWNlLCBjb21wdXRlIGEgcmVjdCBzdWl0YWJsZSBmb3IgcmVwYWludGluZwogICAgIC8vIHRoYXQg
cmVjdCBpbiB0aGUgY29vcmRpbmF0ZSBzcGFjZSBvZiByZXBhaW50Q29udGFpbmVyLgotICAgIHZp
cnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJl
cGFpbnRDb250YWluZXIsIEludFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0OworICAg
IHZpcnR1YWwgdm9pZCBjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3Qq
IHJlcGFpbnRDb250YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0
OwogCiAgICAgLy8gSWYgbXVsdGlwbGUtY29sdW1uIGxheW91dCByZXN1bHRzIGluIGFwcGx5aW5n
IGFuIG9mZnNldCB0byB0aGUgZ2l2ZW4gcG9pbnQsIGFkZCB0aGUgc2FtZQogICAgIC8vIG9mZnNl
dCB0byB0aGUgZ2l2ZW4gc2l6ZS4KQEAgLTczNSw3ICs3MzUsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBoYXNSZWZsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9oYXNSZWZsZWN0aW9uOyB9CiAKICAg
ICAvLyBBcHBsaWVkIGFzIGEgInNsb3AiIHRvIGRpcnR5IHJlY3QgY2hlY2tzIGR1cmluZyB0aGUg
b3V0bGluZSBwYWludGluZyBwaGFzZSdzIGRpcnR5LXJlY3QgY2hlY2tzLgotICAgIGludCBtYXhp
bWFsT3V0bGluZVNpemUoUGFpbnRQaGFzZSkgY29uc3Q7CisgICAgTGF5b3V0VW5pdCBtYXhpbWFs
T3V0bGluZVNpemUoUGFpbnRQaGFzZSkgY29uc3Q7CiAKICAgICB2b2lkIHNldEhhc01hcmt1cFRy
dW5jYXRpb24oYm9vbCBiID0gdHJ1ZSkgeyBtX2hhc01hcmt1cFRydW5jYXRpb24gPSBiOyB9CiAg
ICAgYm9vbCBoYXNNYXJrdXBUcnVuY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9oYXNNYXJrdXBU
cnVuY2F0aW9uOyB9CkBAIC04NDMsNyArODQzLDcgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1
YWwgdm9pZCBhZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mLCBjb25zdCBMYXlv
dXRQb2ludCYpIHsgfTsKIAotICAgIEludFJlY3QgYWJzb2x1dGVPdXRsaW5lQm91bmRzKCkgY29u
c3QKKyAgICBMYXlvdXRSZWN0IGFic29sdXRlT3V0bGluZUJvdW5kcygpIGNvbnN0CiAgICAgewog
ICAgICAgICByZXR1cm4gb3V0bGluZUJvdW5kc0ZvclJlcGFpbnQoMCk7CiAgICAgfQpAQCAtODU1
LDIxICs4NTUsMjEgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBzdHlsZURpZENoYW5n
ZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7CiAgICAgdm9p
ZCBwcm9wYWdhdGVTdHlsZVRvQW5vbnltb3VzQ2hpbGRyZW4oYm9vbCBibG9ja0NoaWxkcmVuT25s
eSA9IGZhbHNlKTsKIAotICAgIHZvaWQgZHJhd0xpbmVGb3JCb3hTaWRlKEdyYXBoaWNzQ29udGV4
dCosIGludCB4MSwgaW50IHkxLCBpbnQgeDIsIGludCB5MiwgQm94U2lkZSwKKyAgICB2b2lkIGRy
YXdMaW5lRm9yQm94U2lkZShHcmFwaGljc0NvbnRleHQqLCBMYXlvdXRVbml0IHgxLCBMYXlvdXRV
bml0IHkxLCBMYXlvdXRVbml0IHgyLCBMYXlvdXRVbml0IHkyLCBCb3hTaWRlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIENvbG9yLCBFQm9yZGVyU3R5bGUsIGludCBhZGpidzEsIGludCBh
ZGpidzIsIGJvb2wgYW50aWFsaWFzID0gZmFsc2UpOwogCiAgICAgdm9pZCBwYWludEZvY3VzUmlu
ZyhHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlvdXRQb2ludCYsIFJlbmRlclN0eWxlKik7CiAg
ICAgdm9pZCBwYWludE91dGxpbmUoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UmVjdCYp
OwotICAgIHZvaWQgYWRkUERGVVJMUmVjdChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0
Jik7CisgICAgdm9pZCBhZGRQREZVUkxSZWN0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91
dFJlY3QmKTsKIAotICAgIHZpcnR1YWwgSW50UmVjdCB2aWV3UmVjdCgpIGNvbnN0OworICAgIHZp
cnR1YWwgTGF5b3V0UmVjdCB2aWV3UmVjdCgpIGNvbnN0OwogCi0gICAgdm9pZCBhZGp1c3RSZWN0
Rm9yT3V0bGluZUFuZFNoYWRvdyhJbnRSZWN0JikgY29uc3Q7CisgICAgdm9pZCBhZGp1c3RSZWN0
Rm9yT3V0bGluZUFuZFNoYWRvdyhMYXlvdXRSZWN0JikgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbEJlRGVzdHJveWVkKCk7CiAgICAgdm9pZCBhcmVuYURlbGV0ZShSZW5kZXJBcmVuYSos
IHZvaWQqIG9iamVjdEJhc2UpOwogCi0gICAgdmlydHVhbCBMYXlvdXRSZWN0IG91dGxpbmVCb3Vu
ZHNGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiAvKnJlcGFpbnRDb250YWluZXIqLywg
SW50UG9pbnQqIC8qY2FjaGVkT2Zmc2V0VG9SZXBhaW50Q29udGFpbmVyKi8gPSAwKSBjb25zdCB7
IHJldHVybiBMYXlvdXRSZWN0KCk7IH0KKyAgICB2aXJ0dWFsIExheW91dFJlY3Qgb3V0bGluZUJv
dW5kc0ZvclJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIC8qcmVwYWludENvbnRhaW5lciov
LCBMYXlvdXRQb2ludCogLypjYWNoZWRPZmZzZXRUb1JlcGFpbnRDb250YWluZXIqLyA9IDApIGNv
bnN0IHsgcmV0dXJuIExheW91dFJlY3QoKTsgfQogCiBwcml2YXRlOgogICAgIFJlbmRlclN0eWxl
KiBmaXJzdExpbmVTdHlsZVNsb3dDYXNlKCkgY29uc3Q7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>