<?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>120226</bug_id>
          
          <creation_ts>2013-08-23 13:18:51 -0700</creation_ts>
          <short_desc>Use ElementTraversal some more</short_desc>
          <delta_ts>2013-08-23 14:59:12 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>d-r</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>macpherson</cc>
    
    <cc>mario</cc>
    
    <cc>menard</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>920395</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-08-23 13:18:51 -0700</bug_when>
    <thetext>In random places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920408</commentid>
    <comment_count>1</comment_count>
      <attachid>209505</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-08-23 13:29:15 -0700</bug_when>
    <thetext>Created attachment 209505
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920411</commentid>
    <comment_count>2</comment_count>
      <attachid>209505</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-08-23 13:35:23 -0700</bug_when>
    <thetext>Comment on attachment 209505
patch

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

&gt; Source/WebCore/accessibility/AccessibilityNodeObject.cpp:1126
&gt; +        const AtomicString&amp; siblingAriaRole = sibling-&gt;getAttribute(roleAttr);

Could be fastGetAttribute.

&gt; Source/WebCore/html/HTMLObjectElement.cpp:464
&gt; -    for (Element* child = ElementTraversal::firstWithin(this); child; child = ElementTraversal::nextSibling(child)) {
&gt; +    for (auto child = ElementTraversal::firstChild(this); child; child = ElementTraversal::nextSibling(child)) {

Looks to me like this is a drive-by bug fix. Was something slightly broken?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920422</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-08-23 13:42:51 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Looks to me like this is a drive-by bug fix. Was something slightly broken?

No. For Elements firstWithin and firstChild are always the same (Element&apos;s parent is always Element or the root). However it is semantically better to pair firstChild with nextSibling and firstWithin with next (it obviously matters for more specific element types).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>920459</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-08-23 14:59:12 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/154525</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209505</attachid>
            <date>2013-08-23 13:29:15 -0700</date>
            <delta_ts>2013-08-23 13:35:23 -0700</delta_ts>
            <desc>patch</desc>
            <filename>random-traversal.patch</filename>
            <type>text/plain</type>
            <size>16944</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1NDUxMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDEzLTA4LTIzICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBVc2UgRWxlbWVudFRyYXZlcnNh
bCBzb21lIG1vcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyMDIyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIE1vcmUgdHJhdmVyc2FsIHdpdGggdGlnaHRlciB0eXBpbmcuCisKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjYW52YXNIYXNGYWxsYmFja0NvbnRlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6c2libGluZ1dpdGhBcmlhUm9sZSk6CisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVRhYmxlOjppc0RhdGFUYWJsZSk6CisgICAgICAgICogY3NzL0NTU0ZvbnRGYWNlU291cmNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlU291cmNlOjpnZXRGb250RGF0YSk6
CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d2ls
bFJlbW92ZUNoaWxkKToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNoaWxkRnJhbWVEaXNjb25uZWN0b3I6OkNoaWxkRnJhbWVEaXNj
b25uZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q2hpbGRGcmFtZURpc2Nvbm5lY3Rvcjo6Y29s
bGVjdEZyYW1lT3duZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkNoaWxkRnJhbWVEaXNjb25uZWN0
b3I6OmRpc2Nvbm5lY3QpOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZWxlY3RNZWRpYVJlc291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNhbmNlbFBlbmRpbmdFdmVu
dHNBbmRDYWxsYmFja3MpOgorICAgICAgICAqIGh0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6OnBhcmFtZXRlcnNGb3JQbHVnaW4p
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE9iamVjdEVsZW1lbnQ6OmNvbnRhaW5zSmF2YUFwcGxl
dCk6CisgICAgICAgICogaHRtbC9IVE1MUGFyYW1FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
Ojppc0hUTUxQYXJhbUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBhcmFtRWxlbWVu
dCk6CisgICAgICAgICogaHRtbC9IVE1MU291cmNlRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6aXNIVE1MU291cmNlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MU291cmNlRWxl
bWVudCk6CisgICAgICAgICogc3ZnL1NWR0ZvbnRGYWNlRWxlbWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6aXNTVkdGb250RmFjZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEZh
Y2VFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnRvU1ZHRm9udEZhY2VFbGVtZW50KToKKwog
MjAxMy0wOC0yMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmUtc2VwYXJhdGluZyBXaW4zMiBhbmQgV2luNjQgYnVpbGRzLgpJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9k
ZU9iamVjdC5jcHAJKHJldmlzaW9uIDE1NDQ3OSkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2
ICszNCw3IEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUxpc3RCb3guaCIKICNpbmNsdWRlICJB
Y2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZS5o
IgorI2luY2x1ZGUgIkVsZW1lbnRUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgi
CiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTQxNiwxMiAr
NDE3LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6Y2FudmFzSGFzRgogICAgIC8v
IElmIGl0IGhhcyBhbnkgY2hpbGRyZW4gdGhhdCBhcmUgZWxlbWVudHMsIHdlJ2xsIGFzc3VtZSBp
dCBtaWdodCBiZSBmYWxsYmFjawogICAgIC8vIGNvbnRlbnQuIElmIGl0IGhhcyBubyBjaGlsZHJl
biBvciBpdHMgb25seSBjaGlsZHJlbiBhcmUgbm90IGVsZW1lbnRzCiAgICAgLy8gKGUuZy4ganVz
dCB0ZXh0IG5vZGVzKSwgaXQgZG9lc24ndCBoYXZlIGZhbGxiYWNrIGNvbnRlbnQuCi0gICAgZm9y
IChOb2RlKiBjaGlsZCA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQt
Pm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgaWYgKGNoaWxkLT5pc0VsZW1lbnROb2RlKCkpCi0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7CisgICAg
cmV0dXJuIEVsZW1lbnRUcmF2ZXJzYWw6OmZpcnN0Q2hpbGQobm9kZSk7CiB9CiAKIGJvb2wgQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmlzSW1hZ2VCdXR0b24oKSBjb25zdApAQCAtMTEyNiwxNCAr
MTEyMiwxMiBAQCBzdGF0aWMgRWxlbWVudCogc2libGluZ1dpdGhBcmlhUm9sZShTdHJpCiAgICAg
aWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIGZvciAoTm9kZSogc2li
bGluZyA9IHBhcmVudC0+Zmlyc3RDaGlsZCgpOyBzaWJsaW5nOyBzaWJsaW5nID0gc2libGluZy0+
bmV4dFNpYmxpbmcoKSkgewotICAgICAgICBpZiAoc2libGluZy0+aXNFbGVtZW50Tm9kZSgpKSB7
Ci0gICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNpYmxpbmdBcmlhUm9sZSA9IHRvRWxl
bWVudChzaWJsaW5nKS0+Z2V0QXR0cmlidXRlKHJvbGVBdHRyKTsKLSAgICAgICAgICAgIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShzaWJsaW5nQXJpYVJvbGUsIHJvbGUpKQotICAgICAgICAgICAgICAg
IHJldHVybiB0b0VsZW1lbnQoc2libGluZyk7Ci0gICAgICAgIH0KKyAgICBmb3IgKEVsZW1lbnQq
IHNpYmxpbmcgPSBFbGVtZW50VHJhdmVyc2FsOjpmaXJzdENoaWxkKHBhcmVudCk7IHNpYmxpbmc7
IHNpYmxpbmcgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0U2libGluZyhzaWJsaW5nKSkgeworICAg
ICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHNpYmxpbmdBcmlhUm9sZSA9IHNpYmxpbmctPmdldEF0
dHJpYnV0ZShyb2xlQXR0cik7CisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShzaWJsaW5n
QXJpYVJvbGUsIHJvbGUpKQorICAgICAgICAgICAgcmV0dXJuIHNpYmxpbmc7CiAgICAgfQotICAg
IAorCiAgICAgcmV0dXJuIDA7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHAJKHJldmlzaW9uIDE1NDQ3OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJs
ZUNvbHVtbi5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZUhlYWRlckNvbnRhaW5lci5o
IgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIgorI2luY2x1ZGUgIkVsZW1lbnRU
cmF2ZXJzYWwuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MVGFibGVD
YXB0aW9uRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZUNlbGxFbGVtZW50LmgiCkBAIC0x
MjQsNyArMTI1LDcgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VGFibGU6OmlzRGF0YVRhYmxlKCkgYwog
ICAgICAgICByZXR1cm4gdHJ1ZTsgICAgCiAKICAgICAvLyBpZiB0aGVyZSdzIGEgY29sZ3JvdXAg
b3IgY29sIGVsZW1lbnQsIGl0J3MgcHJvYmFibHkgYSBkYXRhIHRhYmxlLgotICAgIGZvciAoTm9k
ZSogY2hpbGQgPSB0YWJsZUVsZW1lbnQtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hp
bGQtPm5leHRTaWJsaW5nKCkpIHsKKyAgICBmb3IgKEVsZW1lbnQqIGNoaWxkID0gRWxlbWVudFRy
YXZlcnNhbDo6Zmlyc3RDaGlsZCh0YWJsZUVsZW1lbnQpOyBjaGlsZDsgY2hpbGQgPSBFbGVtZW50
VHJhdmVyc2FsOjpuZXh0U2libGluZyhjaGlsZCkpIHsKICAgICAgICAgaWYgKGNoaWxkLT5oYXNU
YWdOYW1lKGNvbFRhZykgfHwgY2hpbGQtPmhhc1RhZ05hbWUoY29sZ3JvdXBUYWcpKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRGYWNlU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2VTb3VyY2UuY3BwCShyZXZpc2lvbiAxNTQ0NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRm9udEZhY2VTb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAj
aW5jbHVkZSAiQ1NTRm9udFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnRUcmF2ZXJzYWwu
aCIKICNpbmNsdWRlICJGb250Q2FjaGUuaCIKICNpbmNsdWRlICJGb250RGVzY3JpcHRpb24uaCIK
ICNpbmNsdWRlICJTaW1wbGVGb250RGF0YS5oIgpAQCAtMTM4LDE3ICsxMzksNyBAQCBQYXNzUmVm
UHRyPFNpbXBsZUZvbnREYXRhPiBDU1NGb250RmFjZVNvCiAgICAgICAgICAgICAgICAgaWYgKCFt
X2V4dGVybmFsU1ZHRm9udEVsZW1lbnQpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgICAgICAgICAgICAgU1ZHRm9udEZhY2VFbGVtZW50KiBmb250RmFjZUVsZW1lbnQgPSAw
OwotCi0gICAgICAgICAgICAgICAgLy8gU2VsZWN0IGZpcnN0IDxmb250LWZhY2U+IGNoaWxkCi0g
ICAgICAgICAgICAgICAgZm9yIChOb2RlKiBmb250Q2hpbGQgPSBtX2V4dGVybmFsU1ZHRm9udEVs
ZW1lbnQtPmZpcnN0Q2hpbGQoKTsgZm9udENoaWxkOyBmb250Q2hpbGQgPSBmb250Q2hpbGQtPm5l
eHRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGZvbnRDaGlsZC0+aGFzVGFn
TmFtZShTVkdOYW1lczo6Zm9udF9mYWNlVGFnKSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
Zm9udEZhY2VFbGVtZW50ID0gdG9TVkdGb250RmFjZUVsZW1lbnQoZm9udENoaWxkKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKGZvbnRGYWNlRWxlbWVudCkgeworICAg
ICAgICAgICAgICAgIGlmIChhdXRvIGZvbnRGYWNlRWxlbWVudCA9IFRyYXZlcnNhbDxTVkdGb250
RmFjZUVsZW1lbnQ+OjpmaXJzdENoaWxkKG1fZXh0ZXJuYWxTVkdGb250RWxlbWVudC5nZXQoKSkp
IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFtX3N2Z0ZvbnRGYWNlRWxlbWVudCkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gV2UncmUgY3JlYXRlZCB1c2luZyBhIENTUyBAZm9udC1m
YWNlIHJ1bGUsIHRoYXQgbWVhbnMgd2UncmUgbm90IGFzc29jaWF0ZWQgd2l0aCBhIFNWR0ZvbnRG
YWNlRWxlbWVudC4KICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVzZSB0aGUgaW1wb3J0ZWQg
PGZvbnQtZmFjZT4gdGFnIGFzIHJlZmVyZW5jaW5nIGZvbnQtZmFjZSBlbGVtZW50IGZvciB0aGVz
ZSBjYXNlcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAJKHJldmlzaW9u
IDE1NDQ3OSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDcwLDcgKzQ3MCw4IEBAIHN0YXRpYyB2b2lkIHdpbGxSZW1vdmVDaGlsZChO
b2RlKiBjaGlsZCkKICAgICBjaGlsZC0+bm90aWZ5TXV0YXRpb25PYnNlcnZlcnNOb2RlV2lsbERl
dGFjaCgpOwogICAgIGRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRzKGNoaWxkKTsKICAgICBjaGls
ZC0+ZG9jdW1lbnQoKS0+bm9kZVdpbGxCZVJlbW92ZWQoY2hpbGQpOyAvLyBlLmcuIG11dGF0aW9u
IGV2ZW50IGxpc3RlbmVyIGNhbiBjcmVhdGUgYSBuZXcgcmFuZ2UuCi0gICAgQ2hpbGRGcmFtZURp
c2Nvbm5lY3RvcihjaGlsZCkuZGlzY29ubmVjdCgpOworICAgIGlmIChjaGlsZC0+aXNDb250YWlu
ZXJOb2RlKCkpCisgICAgICAgIENoaWxkRnJhbWVEaXNjb25uZWN0b3IodG9Db250YWluZXJOb2Rl
KGNoaWxkKSkuZGlzY29ubmVjdCgpOwogfQogCiBzdGF0aWMgdm9pZCB3aWxsUmVtb3ZlQ2hpbGRy
ZW4oQ29udGFpbmVyTm9kZSogY29udGFpbmVyKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGVBbGdvcml0aG1zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9t
L0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmgJKHJldmlzaW9uIDE1NDQ3OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Myw2ICsyMyw3IEBACiAjZGVmaW5lIENvbnRhaW5lck5vZGVBbGdvcml0aG1zX2gKIAogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudFRyYXZlcnNhbC5oIgogI2luY2x1ZGUg
IkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCkBAIC0yNjcsNyArMjY4LDcgQEAgcHVibGljOgog
ICAgICAgICBEZXNjZW5kYW50c09ubHkKICAgICB9OwogCi0gICAgZXhwbGljaXQgQ2hpbGRGcmFt
ZURpc2Nvbm5lY3RvcihOb2RlKiByb290KQorICAgIGV4cGxpY2l0IENoaWxkRnJhbWVEaXNjb25u
ZWN0b3IoQ29udGFpbmVyTm9kZSogcm9vdCkKICAgICAgICAgOiBtX3Jvb3Qocm9vdCkKICAgICB7
CiAgICAgfQpAQCAtMjc1LDE4ICsyNzYsMTggQEAgcHVibGljOgogICAgIHZvaWQgZGlzY29ubmVj
dChEaXNjb25uZWN0UG9saWN5ID0gUm9vdEFuZERlc2NlbmRhbnRzKTsKIAogcHJpdmF0ZToKLSAg
ICB2b2lkIGNvbGxlY3RGcmFtZU93bmVycyhOb2RlKiByb290KTsKKyAgICB2b2lkIGNvbGxlY3RG
cmFtZU93bmVycyhDb250YWluZXJOb2RlKiByb290KTsKICAgICB2b2lkIGRpc2Nvbm5lY3RDb2xs
ZWN0ZWRGcmFtZU93bmVycygpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxIVE1MRnJhbWVPd25lckVs
ZW1lbnQ+LCAxMD4gbV9mcmFtZU93bmVyczsKLSAgICBOb2RlKiBtX3Jvb3Q7CisgICAgQ29udGFp
bmVyTm9kZSogbV9yb290OwogfTsKIAogI2lmbmRlZiBOREVCVUcKIHVuc2lnbmVkIGFzc2VydENv
bm5lY3RlZFN1YnJhbWVDb3VudElzQ29uc2lzdGVudChOb2RlKik7CiAjZW5kaWYKIAotaW5saW5l
IHZvaWQgQ2hpbGRGcmFtZURpc2Nvbm5lY3Rvcjo6Y29sbGVjdEZyYW1lT3duZXJzKE5vZGUqIHJv
b3QpCitpbmxpbmUgdm9pZCBDaGlsZEZyYW1lRGlzY29ubmVjdG9yOjpjb2xsZWN0RnJhbWVPd25l
cnMoQ29udGFpbmVyTm9kZSogcm9vdCkKIHsKICAgICBpZiAoIXJvb3QtPmNvbm5lY3RlZFN1YmZy
YW1lQ291bnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjk0LDcgKzI5NSw3IEBAIGlubGluZSB2
b2lkIENoaWxkRnJhbWVEaXNjb25uZWN0b3I6OmNvbGwKICAgICBpZiAocm9vdC0+aXNIVE1MRWxl
bWVudCgpICYmIHJvb3QtPmlzRnJhbWVPd25lckVsZW1lbnQoKSkKICAgICAgICAgbV9mcmFtZU93
bmVycy5hcHBlbmQodG9GcmFtZU93bmVyRWxlbWVudChyb290KSk7CiAKLSAgICBmb3IgKE5vZGUq
IGNoaWxkID0gcm9vdC0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNp
YmxpbmcoKSkKKyAgICBmb3IgKEVsZW1lbnQqIGNoaWxkID0gRWxlbWVudFRyYXZlcnNhbDo6Zmly
c3RDaGlsZChyb290KTsgY2hpbGQ7IGNoaWxkID0gRWxlbWVudFRyYXZlcnNhbDo6bmV4dFNpYmxp
bmcoY2hpbGQpKQogICAgICAgICBjb2xsZWN0RnJhbWVPd25lcnMoY2hpbGQpOwogCiAgICAgU2hh
ZG93Um9vdCogc2hhZG93ID0gcm9vdC0+aXNFbGVtZW50Tm9kZSgpID8gdG9FbGVtZW50KHJvb3Qp
LT5zaGFkb3dSb290KCkgOiAwOwpAQCAtMzI5LDcgKzMzMCw3IEBAIGlubGluZSB2b2lkIENoaWxk
RnJhbWVEaXNjb25uZWN0b3I6OmRpc2MKICAgICBpZiAocG9saWN5ID09IFJvb3RBbmREZXNjZW5k
YW50cykKICAgICAgICAgY29sbGVjdEZyYW1lT3duZXJzKG1fcm9vdCk7CiAgICAgZWxzZSB7Ci0g
ICAgICAgIGZvciAoTm9kZSogY2hpbGQgPSBtX3Jvb3QtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNo
aWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCisgICAgICAgIGZvciAoRWxlbWVudCogY2hpbGQg
PSBFbGVtZW50VHJhdmVyc2FsOjpmaXJzdENoaWxkKG1fcm9vdCk7IGNoaWxkOyBjaGlsZCA9IEVs
ZW1lbnRUcmF2ZXJzYWw6Om5leHRTaWJsaW5nKGNoaWxkKSkKICAgICAgICAgICAgIGNvbGxlY3RG
cmFtZU93bmVycyhjaGlsZCk7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE1NDQ4MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyMiwxOCArOTIyLDEy
IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TWVkaWFSZXNvdXIKICAgICAvLyAzIC0g
SWYgdGhlIG1lZGlhIGVsZW1lbnQgaGFzIGEgc3JjIGF0dHJpYnV0ZSwgdGhlbiBsZXQgbW9kZSBi
ZSBhdHRyaWJ1dGUuCiAgICAgTW9kZSBtb2RlID0gYXR0cmlidXRlOwogICAgIGlmICghZmFzdEhh
c0F0dHJpYnV0ZShzcmNBdHRyKSkgewotICAgICAgICBOb2RlKiBub2RlOwotICAgICAgICBmb3Ig
KG5vZGUgPSBmaXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7
Ci0gICAgICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShzb3VyY2VUYWcpKQotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KICAgICAgICAgLy8gT3RoZXJ3aXNlLCBpZiB0aGUg
bWVkaWEgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgc3JjIGF0dHJpYnV0ZSBidXQgaGFzIGEgc291
cmNlIAogICAgICAgICAvLyBlbGVtZW50IGNoaWxkLCB0aGVuIGxldCBtb2RlIGJlIGNoaWxkcmVu
IGFuZCBsZXQgY2FuZGlkYXRlIGJlIHRoZSBmaXJzdCBzdWNoIAogICAgICAgICAvLyBzb3VyY2Ug
ZWxlbWVudCBjaGlsZCBpbiB0cmVlIG9yZGVyLgotICAgICAgICBpZiAobm9kZSkgeworICAgICAg
ICBpZiAoYXV0byBzb3VyY2VFbGVtZW50ID0gVHJhdmVyc2FsPEhUTUxTb3VyY2VFbGVtZW50Pjo6
Zmlyc3RDaGlsZCh0aGlzKSkgewogICAgICAgICAgICAgbW9kZSA9IGNoaWxkcmVuOwotICAgICAg
ICAgICAgbV9uZXh0Q2hpbGROb2RlVG9Db25zaWRlciA9IG5vZGU7CisgICAgICAgICAgICBtX25l
eHRDaGlsZE5vZGVUb0NvbnNpZGVyID0gc291cmNlRWxlbWVudDsKICAgICAgICAgICAgIG1fY3Vy
cmVudFNvdXJjZU5vZGUgPSAwOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gT3Ro
ZXJ3aXNlIHRoZSBtZWRpYSBlbGVtZW50IGhhcyBuZWl0aGVyIGEgc3JjIGF0dHJpYnV0ZSBub3Ig
YSBzb3VyY2UgZWxlbWVudCAKQEAgLTE0MjEsMTEgKzE0MTUsNyBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnRleHRUcmFja01vZGVDaGFuCiAgICAgYm9vbCB0cmFja0lzTG9hZGVkID0gdHJ1ZTsK
ICAgICBpZiAodHJhY2stPnRyYWNrVHlwZSgpID09IFRleHRUcmFjazo6VHJhY2tFbGVtZW50KSB7
CiAgICAgICAgIHRyYWNrSXNMb2FkZWQgPSBmYWxzZTsKLSAgICAgICAgZm9yIChOb2RlKiBub2Rl
ID0gZmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgewotICAg
ICAgICAgICAgaWYgKCFub2RlLT5oYXNUYWdOYW1lKHRyYWNrVGFnKSkKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLQotICAgICAgICAgICAgSFRNTFRyYWNrRWxlbWVudCogdHJhY2tFbGVtZW50
ID0gc3RhdGljX2Nhc3Q8SFRNTFRyYWNrRWxlbWVudCo+KG5vZGUpOworICAgICAgICBmb3IgKGF1
dG8gdHJhY2tFbGVtZW50ID0gVHJhdmVyc2FsPEhUTUxUcmFja0VsZW1lbnQ+OjpmaXJzdENoaWxk
KHRoaXMpOyB0cmFja0VsZW1lbnQ7IHRyYWNrRWxlbWVudCA9IFRyYXZlcnNhbDxIVE1MVHJhY2tF
bGVtZW50Pjo6bmV4dFNpYmxpbmcodHJhY2tFbGVtZW50KSkgewogICAgICAgICAgICAgaWYgKHRy
YWNrRWxlbWVudC0+dHJhY2soKSA9PSB0cmFjaykgewogICAgICAgICAgICAgICAgIGlmICh0cmFj
a0VsZW1lbnQtPnJlYWR5U3RhdGUoKSA9PSBIVE1MVHJhY2tFbGVtZW50OjpMT0FESU5HIHx8IHRy
YWNrRWxlbWVudC0+cmVhZHlTdGF0ZSgpID09IEhUTUxUcmFja0VsZW1lbnQ6OkxPQURFRCkKICAg
ICAgICAgICAgICAgICAgICAgdHJhY2tJc0xvYWRlZCA9IHRydWU7CkBAIC0xNjU3LDEwICsxNjQ3
LDggQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjYW5jZWxQZW5kaW5nRXZlbgogICAgIExPRyhN
ZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmNhbmNlbFBlbmRpbmdFdmVudHNBbmRDYWxsYmFja3Mi
KTsKICAgICBtX2FzeW5jRXZlbnRRdWV1ZS0+Y2FuY2VsQWxsRXZlbnRzKCk7CiAKLSAgICBmb3Ig
KE5vZGUqIG5vZGUgPSBmaXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGlu
ZygpKSB7Ci0gICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHNvdXJjZVRhZykpCi0gICAgICAg
ICAgICBzdGF0aWNfY2FzdDxIVE1MU291cmNlRWxlbWVudCo+KG5vZGUpLT5jYW5jZWxQZW5kaW5n
RXJyb3JFdmVudCgpOwotICAgIH0KKyAgICBmb3IgKGF1dG8gc291cmNlID0gVHJhdmVyc2FsPEhU
TUxTb3VyY2VFbGVtZW50Pjo6Zmlyc3RDaGlsZCh0aGlzKTsgc291cmNlOyBzb3VyY2UgPSBUcmF2
ZXJzYWw8SFRNTFNvdXJjZUVsZW1lbnQ+OjpuZXh0U2libGluZyhzb3VyY2UpKQorICAgICAgICBz
b3VyY2UtPmNhbmNlbFBlbmRpbmdFcnJvckV2ZW50KCk7CiB9CiAKIERvY3VtZW50KiBIVE1MTWVk
aWFFbGVtZW50OjptZWRpYVBsYXllck93bmluZ0RvY3VtZW50KCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNTQ0NzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTUzLDI1ICsxNTMsMjEgQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6cGFyYW1ldGVyc0ZvclBs
dQogICAgIAogICAgIC8vIFNjYW4gdGhlIFBBUkFNIGNoaWxkcmVuIGFuZCBzdG9yZSB0aGVpciBu
YW1lL3ZhbHVlIHBhaXJzLgogICAgIC8vIEdldCB0aGUgVVJMIGFuZCB0eXBlIGZyb20gdGhlIHBh
cmFtcyBpZiB3ZSBkb24ndCBhbHJlYWR5IGhhdmUgdGhlbS4KLSAgICBmb3IgKE5vZGUqIGNoaWxk
ID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewot
ICAgICAgICBpZiAoIWNoaWxkLT5oYXNUYWdOYW1lKHBhcmFtVGFnKSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgIEhUTUxQYXJhbUVsZW1lbnQqIHAgPSBzdGF0aWNfY2FzdDxIVE1M
UGFyYW1FbGVtZW50Kj4oY2hpbGQpOwotICAgICAgICBTdHJpbmcgbmFtZSA9IHAtPm5hbWUoKTsK
KyAgICBmb3IgKGF1dG8gcGFyYW0gPSBUcmF2ZXJzYWw8SFRNTFBhcmFtRWxlbWVudD46OmZpcnN0
Q2hpbGQodGhpcyk7IHBhcmFtOyBwYXJhbSA9IFRyYXZlcnNhbDxIVE1MUGFyYW1FbGVtZW50Pjo6
bmV4dFNpYmxpbmcocGFyYW0pKSB7CisgICAgICAgIFN0cmluZyBuYW1lID0gcGFyYW0tPm5hbWUo
KTsKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgdW5pcXVlUGFyYW1OYW1lcy5hZGQobmFtZS5pbXBsKCkpOwotICAgICAgICBwYXJh
bU5hbWVzLmFwcGVuZChwLT5uYW1lKCkpOwotICAgICAgICBwYXJhbVZhbHVlcy5hcHBlbmQocC0+
dmFsdWUoKSk7CisgICAgICAgIHBhcmFtTmFtZXMuYXBwZW5kKHBhcmFtLT5uYW1lKCkpOworICAg
ICAgICBwYXJhbVZhbHVlcy5hcHBlbmQocGFyYW0tPnZhbHVlKCkpOwogCiAgICAgICAgIC8vIEZJ
WE1FOiB1cmwgYWRqdXN0bWVudCBkb2VzIG5vdCBiZWxvbmcgaW4gdGhpcyBmdW5jdGlvbi4KICAg
ICAgICAgaWYgKHVybC5pc0VtcHR5KCkgJiYgdXJsUGFyYW1ldGVyLmlzRW1wdHkoKSAmJiAoZXF1
YWxJZ25vcmluZ0Nhc2UobmFtZSwgInNyYyIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJt
b3ZpZSIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJjb2RlIikgfHwgZXF1YWxJZ25vcmlu
Z0Nhc2UobmFtZSwgInVybCIpKSkKLSAgICAgICAgICAgIHVybFBhcmFtZXRlciA9IHN0cmlwTGVh
ZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhwLT52YWx1ZSgpKTsKKyAgICAgICAgICAgIHVybFBh
cmFtZXRlciA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhwYXJhbS0+dmFsdWUo
KSk7CiAgICAgICAgIC8vIEZJWE1FOiBzZXJ2aWNlVHlwZSBjYWxjdWxhdGlvbiBkb2VzIG5vdCBi
ZWxvbmcgaW4gdGhpcyBmdW5jdGlvbi4KICAgICAgICAgaWYgKHNlcnZpY2VUeXBlLmlzRW1wdHko
KSAmJiBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAidHlwZSIpKSB7Ci0gICAgICAgICAgICBzZXJ2
aWNlVHlwZSA9IHAtPnZhbHVlKCk7CisgICAgICAgICAgICBzZXJ2aWNlVHlwZSA9IHBhcmFtLT52
YWx1ZSgpOwogICAgICAgICAgICAgc2l6ZV90IHBvcyA9IHNlcnZpY2VUeXBlLmZpbmQoIjsiKTsK
ICAgICAgICAgICAgIGlmIChwb3MgIT0gbm90Rm91bmQpCiAgICAgICAgICAgICAgICAgc2Vydmlj
ZVR5cGUgPSBzZXJ2aWNlVHlwZS5sZWZ0KHBvcyk7CkBAIC00NjUsNyArNDYxLDcgQEAgYm9vbCBI
VE1MT2JqZWN0RWxlbWVudDo6Y29udGFpbnNKYXZhQXBwbAogICAgIGlmIChNSU1FVHlwZVJlZ2lz
dHJ5Ojppc0phdmFBcHBsZXRNSU1FVHlwZShnZXRBdHRyaWJ1dGUodHlwZUF0dHIpKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAotICAgIGZvciAoRWxlbWVudCogY2hpbGQgPSBFbGVt
ZW50VHJhdmVyc2FsOjpmaXJzdFdpdGhpbih0aGlzKTsgY2hpbGQ7IGNoaWxkID0gRWxlbWVudFRy
YXZlcnNhbDo6bmV4dFNpYmxpbmcoY2hpbGQpKSB7CisgICAgZm9yIChhdXRvIGNoaWxkID0gRWxl
bWVudFRyYXZlcnNhbDo6Zmlyc3RDaGlsZCh0aGlzKTsgY2hpbGQ7IGNoaWxkID0gRWxlbWVudFRy
YXZlcnNhbDo6bmV4dFNpYmxpbmcoY2hpbGQpKSB7CiAgICAgICAgIGlmIChjaGlsZC0+aGFzVGFn
TmFtZShwYXJhbVRhZykKICAgICAgICAgICAgICAgICAmJiBlcXVhbElnbm9yaW5nQ2FzZShjaGls
ZC0+Z2V0TmFtZUF0dHJpYnV0ZSgpLCAidHlwZSIpCiAgICAgICAgICAgICAgICAgJiYgTUlNRVR5
cGVSZWdpc3RyeTo6aXNKYXZhQXBwbGV0TUlNRVR5cGUoY2hpbGQtPmdldEF0dHJpYnV0ZSh2YWx1
ZUF0dHIpLnN0cmluZygpKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFtRWxlbWVu
dC5oCShyZXZpc2lvbiAxNTQ0NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQYXJhbUVs
ZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsMTkgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgYWRkU3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PEtVUkw+
JikgY29uc3Q7CiB9OwogCitpbmxpbmUgYm9vbCBpc0hUTUxQYXJhbUVsZW1lbnQoY29uc3QgTm9k
ZSogbm9kZSkKK3sKKyAgICByZXR1cm4gbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnBhcmFt
VGFnKTsKK30KKworaW5saW5lIGJvb2wgaXNIVE1MUGFyYW1FbGVtZW50KGNvbnN0IEVsZW1lbnQq
IGVsZW1lbnQpCit7CisgICAgcmV0dXJuIGVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpw
YXJhbVRhZyk7Cit9CisKK3RlbXBsYXRlIDw+IGlubGluZSBib29sIGlzRWxlbWVudE9mVHlwZTxI
VE1MUGFyYW1FbGVtZW50Pihjb25zdCBFbGVtZW50KiBlbGVtZW50KSB7IHJldHVybiBpc0hUTUxQ
YXJhbUVsZW1lbnQoZWxlbWVudCk7IH0KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNvdXJjZUVsZW1lbnQuaAkocmV2aXNp
b24gMTU0NDc5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU291cmNlRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1NywxOSBAQCBwcml2YXRlOgogICAgIFRpbWVyPEhUTUxT
b3VyY2VFbGVtZW50PiBtX2Vycm9yRXZlbnRUaW1lcjsKIH07CiAKK2lubGluZSBib29sIGlzSFRN
TFNvdXJjZUVsZW1lbnQoY29uc3QgTm9kZSogbm9kZSkKK3sKKyAgICByZXR1cm4gbm9kZS0+aGFz
VGFnTmFtZShIVE1MTmFtZXM6OnNvdXJjZVRhZyk7Cit9CisKK2lubGluZSBib29sIGlzSFRNTFNv
dXJjZUVsZW1lbnQoY29uc3QgRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICByZXR1cm4gZWxlbWVu
dC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnNvdXJjZVRhZyk7Cit9CisKK3RlbXBsYXRlIDw+IGlu
bGluZSBib29sIGlzRWxlbWVudE9mVHlwZTxIVE1MU291cmNlRWxlbWVudD4oY29uc3QgRWxlbWVu
dCogZWxlbWVudCkgeyByZXR1cm4gaXNIVE1MU291cmNlRWxlbWVudChlbGVtZW50KTsgfQorCisK
IH0gLy9uYW1lc3BhY2UKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9u
dEZhY2VFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnRG
YWNlRWxlbWVudC5oCShyZXZpc2lvbiAxNTQ0NzkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rm9udEZhY2VFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDkgKzY3LDIxIEBAIHByaXZh
dGU6CiAgICAgU1ZHRm9udEVsZW1lbnQqIG1fZm9udEVsZW1lbnQ7CiB9OwogCitpbmxpbmUgYm9v
bCBpc1NWR0ZvbnRGYWNlRWxlbWVudChjb25zdCBOb2RlKiBub2RlKQoreworICAgIHJldHVybiBu
b2RlLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmb250X2ZhY2VUYWcpOworfQorCitpbmxpbmUgYm9v
bCBpc1NWR0ZvbnRGYWNlRWxlbWVudChjb25zdCBFbGVtZW50KiBlbGVtZW50KQoreworICAgIHJl
dHVybiBlbGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpmb250X2ZhY2VUYWcpOworfQorCit0
ZW1wbGF0ZSA8PiBpbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5cGU8U1ZHRm9udEZhY2VFbGVtZW50
Pihjb25zdCBFbGVtZW50KiBlbGVtZW50KSB7IHJldHVybiBpc1NWR0ZvbnRGYWNlRWxlbWVudChl
bGVtZW50KTsgfQorCiBpbmxpbmUgU1ZHRm9udEZhY2VFbGVtZW50KiB0b1NWR0ZvbnRGYWNlRWxl
bWVudChOb2RlKiBub2RlKQogewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KCFub2RlIHx8IG5vZGUtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZvbnRfZmFjZVRhZykpOworICAg
IEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFub2RlIHx8IGlzU1ZHRm9udEZhY2VF
bGVtZW50KG5vZGUpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHRm9udEZhY2VFbGVtZW50
Kj4obm9kZSk7CiB9CiAK
</data>
<flag name="review"
          id="231532"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>