<?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>82023</bug_id>
          
          <creation_ts>2012-03-22 23:28:14 -0700</creation_ts>
          <short_desc>AX: Support solution to handle invalid ax text marker</short_desc>
          <delta_ts>2012-03-24 21:03:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</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="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>bdakin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>586113</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-03-22 23:28:14 -0700</bug_when>
    <thetext>Due to the fact that web TextMarkers can dynamically go away when document nodes changes, VoiceOver is unable to cache those AXTextMarkers for various comparison purposes.

We should add the ability to:
    Ability to convert a given TextMarker to a NSInteger index and vice versa, from a NSInteger index back to a AXTextMarkerRef
    Ability to determine if a given TextMarker is valid</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586149</commentid>
    <comment_count>1</comment_count>
      <attachid>133439</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-03-23 00:30:57 -0700</bug_when>
    <thetext>Created attachment 133439
patch for footer role</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587153</commentid>
    <comment_count>2</comment_count>
      <attachid>133439</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-03-24 11:58:11 -0700</bug_when>
    <thetext>Comment on attachment 133439
patch for footer role

Yay so much test-fu!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587232</commentid>
    <comment_count>3</comment_count>
      <attachid>133439</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-24 21:03:21 -0700</bug_when>
    <thetext>Comment on attachment 133439
patch for footer role

Clearing flags on attachment: 133439

Committed r112021: &lt;http://trac.webkit.org/changeset/112021&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587233</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-24 21:03:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133439</attachid>
            <date>2012-03-23 00:30:57 -0700</date>
            <delta_ts>2012-03-24 21:03:21 -0700</delta_ts>
            <desc>patch for footer role</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>21869</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMTgzNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEyLTAzLTIzICBDaHJpcyBG
bGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IFN1cHBvcnQgc29s
dXRpb24gdG8gaGFuZGxlIGludmFsaWQgYXggdGV4dCBtYXJrZXIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgyMDIzCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwcm92aWRlcyBtZXRob2RzIHRvIGJl
dHRlciB1c2UgdGV4dCBtYXJrZXJzIHNvIHRoYXQgYXNzaXN0aXZlIHRlY2hub2xvZ2llcworICAg
ICAgICBjYW4ga25vdyB3aGVuIHRoZXkgYXJlIHZhbGlkLCBhbmQgY2FuIGNvbnZlcnQgdGhlbSB0
byBhbmQgZnJvbSBhYnNvbHV0ZSBwb3NpdGlvbnMuCisKKyAgICAgICAgVGVzdDogcGxhdGZvcm0v
bWFjL2FjY2Vzc2liaWxpdHkvdGV4dG1hcmtlci1yb3V0aW5lcy5odG1sCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5tbToKKyAgICAg
ICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eVBhcmFtZXRl
cml6ZWRBdHRyaWJ1dGVOYW1lc10pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciBfY29udmVydFRvTlNSYW5nZTpdKToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIgX2luZGV4Rm9yVGV4dE1hcmtlcjpdKToKKyAgICAgICAgKC1bV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX3RleHRNYXJrZXJGb3JJbmRleDpdKToKKyAgICAgICAg
KC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOmZvclBhcmFtZXRlcjpdKToKKwogMjAxMi0wMy0yMiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3
ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgTm90aWZpY2F0aW9ucyBBUElzIGZyb20gRE9NV2lu
ZG93LmlkbCB0byBET01XaW5kb3dOb3RpZmljYXRpb25zLmlkbCAoUGFydCAxKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0JKHJldmlzaW9uIDExMTUwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMzIsNiArMzMyLDkgQEAKICNkZWZpbmUgTlNBY2Nlc3Np
YmlsaXR5VmlzaXRlZExpbmtTZWFyY2hLZXkgQCJBWFZpc2l0ZWRMaW5rU2VhcmNoS2V5IgogI2Vu
ZGlmCiAKKyNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklzVmFsaWRQYXJhbWV0ZXJp
emVkQXR0cmlidXRlIEAiQVhUZXh0TWFya2VySXNWYWxpZCIKKyNkZWZpbmUgTlNBY2Nlc3NpYmls
aXR5SW5kZXhGb3JUZXh0TWFya2VyUGFyYW1ldGVyaXplZEF0dHJpYnV0ZSBAIkFYSW5kZXhGb3JU
ZXh0TWFya2VyIgorI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyRm9ySW5kZXhQYXJh
bWV0ZXJpemVkQXR0cmlidXRlIEAiQVhUZXh0TWFya2VyRm9ySW5kZXgiCiAKIEBpbnRlcmZhY2Ug
TlNPYmplY3QgKFdlYktpdEFjY2Vzc2liaWxpdHlBcnJheUNhdGVnb3J5KQogCkBAIC0yNDkxLDYg
KzI0OTQsNyBAQAogICAgIHN0YXRpYyBOU0FycmF5KiBwYXJhbUF0dHJzID0gbmlsOwogICAgIHN0
YXRpYyBOU0FycmF5KiB0ZXh0UGFyYW1BdHRycyA9IG5pbDsKICAgICBzdGF0aWMgTlNBcnJheSog
dGFibGVQYXJhbUF0dHJzID0gbmlsOworICAgIHN0YXRpYyBOU0FycmF5KiB3ZWJBcmVhUGFyYW1B
dHRycyA9IG5pbDsKICAgICBpZiAocGFyYW1BdHRycyA9PSBuaWwpIHsKICAgICAgICAgcGFyYW1B
dHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhPYmplY3RzOgogICAgICAgICAgICAgICAg
ICAgICAgIEAiQVhVSUVsZW1lbnRGb3JUZXh0TWFya2VyIiwKQEAgLTI1NDYsNiArMjU1MCwxNCBA
QAogICAgICAgICB0YWJsZVBhcmFtQXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJy
YXk6dGVtcEFycmF5XTsKICAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKICAgICB9CisgICAg
aWYgKCF3ZWJBcmVhUGFyYW1BdHRycykgeworICAgICAgICBOU011dGFibGVBcnJheSogdGVtcEFy
cmF5ID0gW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTpwYXJhbUF0dHJzXTsK
KyAgICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlckZv
ckluZGV4UGFyYW1ldGVyaXplZEF0dHJpYnV0ZV07CisgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2Jq
ZWN0Ok5TQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJJc1ZhbGlkUGFyYW1ldGVyaXplZEF0dHJpYnV0
ZV07CisgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eUluZGV4Rm9y
VGV4dE1hcmtlclBhcmFtZXRlcml6ZWRBdHRyaWJ1dGVdOworICAgICAgICB3ZWJBcmVhUGFyYW1B
dHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJheTp0ZW1wQXJyYXldOworICAgICAg
ICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgIH0KICAgICAKICAgICBpZiAobV9vYmplY3QtPmlz
UGFzc3dvcmRGaWVsZCgpKQogICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXldOwpAQCAtMjU2
Miw2ICsyNTc0LDkgQEAKICAgICBpZiAobV9vYmplY3QtPmlzTWVudVJlbGF0ZWQoKSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKIAorICAgIGlmIChtX29iamVjdC0+aXNXZWJBcmVhKCkpCisgICAgICAg
IHJldHVybiB3ZWJBcmVhUGFyYW1BdHRyczsKKyAgICAKICAgICByZXR1cm4gcGFyYW1BdHRyczsK
IH0KIApAQCAtMjc1Myw2ICsyNzY4LDQyIEBACiAgICAgcmV0dXJuIFtzZWxmIGRvQVhBdHRyaWJ1
dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlOltzZWxmIHRleHRNYXJrZXJSYW5nZUZyb21WaXNp
YmxlUG9zaXRpb25zOnZpc2libGVQb3NSYW5nZS5zdGFydCBlbmRQb3NpdGlvbjp2aXNpYmxlUG9z
UmFuZ2UuZW5kXV07CiB9CiAKKy0gKE5TUmFuZ2UpX2NvbnZlcnRUb05TUmFuZ2U6KFJhbmdlKily
YW5nZQoreworICAgIE5TUmFuZ2UgcmVzdWx0ID0gTlNNYWtlUmFuZ2UoTlNOb3RGb3VuZCwgMCk7
CisgICAgaWYgKCFyYW5nZSB8fCAhcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCkpCisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9vYmplY3QtPmRv
Y3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICAKKyAgICBUZXh0SXRlcmF0b3I6OmdldExvY2F0aW9uQW5kTGVuZ3RoRnJvbVJhbmdlKGRvY3Vt
ZW50LT5kb2N1bWVudEVsZW1lbnQoKSwgcmFuZ2UsIHJlc3VsdC5sb2NhdGlvbiwgcmVzdWx0Lmxl
bmd0aCk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLSAoTlNJbnRlZ2VyKV9pbmRl
eEZvclRleHRNYXJrZXI6KGlkKW1hcmtlcgoreworICAgIGlmICghbWFya2VyKQorICAgICAgICBy
ZXR1cm4gTlNOb3RGb3VuZDsKKyAgICAKKyAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbihb
c2VsZiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyOm1hcmtlcl0pOyAgICAKKyAgICByZXR1
cm4gW3NlbGYgX2NvbnZlcnRUb05TUmFuZ2U6c2VsZWN0aW9uLnRvTm9ybWFsaXplZFJhbmdlKCku
Z2V0KCldLmxvY2F0aW9uOworfQorCistIChpZClfdGV4dE1hcmtlckZvckluZGV4OihOU0ludGVn
ZXIpdGV4dEluZGV4Cit7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9vYmplY3QtPmRvY3Vt
ZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAKKyAg
ICBQYXNzUmVmUHRyPFJhbmdlPiB0ZXh0UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxv
Y2F0aW9uQW5kTGVuZ3RoKGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSwgdGV4dEluZGV4LCAw
KTsKKyAgICAKKyAgICBWaXNpYmxlUG9zaXRpb24gcG9zaXRpb24odGV4dFJhbmdlLT5zdGFydFBv
c2l0aW9uKCkpOworICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9u
OnBvc2l0aW9uXTsKK30KKwogLy8gVGhlIFJURiByZXByZXNlbnRhdGlvbiBvZiB0aGUgdGV4dCBh
c3NvY2lhdGVkIHdpdGggdGhpcyBhY2Nlc3NpYmlsaXR5IG9iamVjdCB0aGF0IGlzCiAvLyBzcGVj
aWZpZWQgYnkgdGhlIGdpdmVuIHJhbmdlLgogLSAoTlNEYXRhKilkb0FYUlRGRm9yUmFuZ2U6KE5T
UmFuZ2UpcmFuZ2UKQEAgLTI4NDQsNiArMjg5NSwxNyBAQAogICAgICAgICByZXR1cm4gY29udmVy
dFRvTlNBcnJheShyZXN1bHRzKTsKICAgICB9CiAKKyAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFs
VG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcklzVmFsaWRQYXJhbWV0ZXJpemVkQXR0
cmlidXRlXSkgeworICAgICAgICBWaXNpYmxlUG9zaXRpb24gcG9zID0gW3NlbGYgdmlzaWJsZVBv
c2l0aW9uRm9yVGV4dE1hcmtlcjp0ZXh0TWFya2VyXTsKKyAgICAgICAgcmV0dXJuIFtOU051bWJl
ciBudW1iZXJXaXRoQm9vbDohcG9zLmlzTnVsbCgpXTsKKyAgICB9CisgICAgaWYgKFthdHRyaWJ1
dGUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUluZGV4Rm9yVGV4dE1hcmtlclBhcmFt
ZXRlcml6ZWRBdHRyaWJ1dGVdKSB7CisgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0
aEludGVnZXI6W3NlbGYgX2luZGV4Rm9yVGV4dE1hcmtlcjp0ZXh0TWFya2VyXV07CisgICAgfQor
ICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyRm9ySW5kZXhQYXJhbWV0ZXJpemVkQXR0cmlidXRlXSkgeworICAgICAgICByZXR1cm4gW3Nl
bGYgX3RleHRNYXJrZXJGb3JJbmRleDpbbnVtYmVyIGludGVnZXJWYWx1ZV1dOworICAgIH0KKyAg
ICAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFVJRWxlbWVudEZvclRl
eHRNYXJrZXIiXSkgewogICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvcyA9IFtzZWxm
IHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXI6KHRleHRNYXJrZXIpXTsKICAgICAgICAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QgPSBtX29iamVjdC0+YWNjZXNzaWJpbGl0eU9iamVj
dEZvclBvc2l0aW9uKHZpc2libGVQb3MpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuY3BwCShyZXZpc2lvbiAxMTE1MDcpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzMsNiArMTczLDEwIEBACiBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpuZXh0VGV4dE1hcmtlcihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciopIHsgcmV0dXJuIDA7IH0KIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZSopIHsgcmV0dXJuIDA7IH0KIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YXR0
cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRlKEpTU3RyaW5n
UmVmLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKikgeyByZXR1cm4gZmFsc2U7IH0KK2lu
dCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmRleEZvclRleHRNYXJrZXIoQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIqKSB7IHJldHVybiAtMTsgfQorYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojppc1RleHRNYXJrZXJWYWxpZChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopIHsgcmV0dXJuIGZh
bHNlOyB9CitQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9ySW5kZXgoaW50KSB7IHJldHVybiAwOyB9CisKICNlbmRp
ZgogCiB9IC8vIG5hbWVzcGFjZSBXVFIKSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5o
CShyZXZpc2lvbiAxMTE1MDcpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjIwLDYgKzIy
MCw5IEBACiAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IHN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZShBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7CiAgICAgaW50IHRleHRNYXJrZXJS
YW5nZUxlbmd0aChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlKik7CiAgICAgYm9vbCBhdHRy
aWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlQ29udGFpbnNBdHRyaWJ1dGUoSlNTdHJpbmdS
ZWYsIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UqKTsKKyAgICBpbnQgaW5kZXhGb3JUZXh0
TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKik7CisgICAgYm9vbCBpc1RleHRNYXJrZXJW
YWxpZChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopOworICAgIFBhc3NSZWZQdHI8QWNjZXNzaWJp
bGl0eVRleHRNYXJrZXI+IHRleHRNYXJrZXJGb3JJbmRleChpbnQpOwogCiAgICAgLy8gTm90aWZp
Y2F0aW9ucwogICAgIC8vIEZ1bmN0aW9uIGNhbGxiYWNrIHNob3VsZCB0YWtlIG9uZSBhcmd1bWVu
dCwgdGhlIG5hbWUgb2YgdGhlIG5vdGlmaWNhdGlvbi4KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5k
aW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbAkocmV2aXNpb24gMTExNTA3KQorKysgVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5
VUlFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTU1LDcgKzE1NSwxMCBAQAogICAgICAg
ICBET01TdHJpbmcgc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKGluIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyUmFuZ2UgcmFuZ2UpOwogICAgICAgICBpbnQgdGV4dE1hcmtlclJhbmdlTGVuZ3RoKGlu
IEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2UgcmFuZ2UpOwogICAgICAgICBib29sZWFuIGF0
dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2VDb250YWluc0F0dHJpYnV0ZShpbiBET01T
dHJpbmcgYXR0ciwgaW4gQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZSByYW5nZSk7Ci0gICAg
ICAgIAorICAgICAgICBpbnQgaW5kZXhGb3JUZXh0TWFya2VyKGluIEFjY2Vzc2liaWxpdHlUZXh0
TWFya2VyIG1hcmtlcik7CisgICAgICAgIGJvb2xlYW4gaXNUZXh0TWFya2VyVmFsaWQoaW4gQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXIgbWFya2VyKTsKKyAgICAgICAgQWNjZXNzaWJpbGl0eVRleHRN
YXJrZXIgdGV4dE1hcmtlckZvckluZGV4KGluIGludCB0ZXh0SW5kZXgpOworCiAgICAgICAgIC8v
IE5vdGlmaWNhdGlvbiBzdXBwb3J0LgogICAgICAgICBib29sZWFuIGFkZE5vdGlmaWNhdGlvbkxp
c3RlbmVyKGluIG9iamVjdCBjYWxsYmFja0Z1bmN0aW9uKTsKICAgICAgICAgYm9vbGVhbiByZW1v
dmVOb3RpZmljYXRpb25MaXN0ZW5lcigpOwpJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50TWFjLm1tCShyZXZpc2lvbiAxMTE1MDcpCisrKyBUb29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDAzLDYgKzE0MDMsMzcgQEAKICAgICAKICAgICByZXR1cm4gZmFs
c2U7CiB9CisgICAgCitpbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aW5kZXhGb3JUZXh0TWFy
a2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiBtYXJrZXIpCit7CisgICAgQkVHSU5fQVhfT0JK
Q19FWENFUFRJT05TCisgICAgTlNOdW1iZXIqIGluZGV4TnVtYmVyID0gW21fZWxlbWVudCBhY2Nl
c3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWEluZGV4Rm9yVGV4dE1hcmtlciIgZm9yUGFyYW1l
dGVyOihpZCltYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAgICByZXR1cm4gW2luZGV4
TnVtYmVyIGludFZhbHVlXTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAgCisgICAg
cmV0dXJuIC0xOworfQogCitib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVGV4dE1hcmtl
clZhbGlkKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKiB0ZXh0TWFya2VyKQoreworICAgIEJFR0lO
X0FYX09CSkNfRVhDRVBUSU9OUworICAgIE5TTnVtYmVyKiB2YWxpZE51bWJlciA9IFttX2VsZW1l
bnQgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOkAiQVhUZXh0TWFya2VySXNWYWxpZCIgZm9y
UGFyYW1ldGVyOihpZCl0ZXh0TWFya2VyLT5wbGF0Zm9ybVRleHRNYXJrZXIoKV07CisgICAgcmV0
dXJuIFt2YWxpZE51bWJlciBib29sVmFsdWVdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMK
KyAgICAKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1Bhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXI+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JJbmRleChpbnQg
dGV4dEluZGV4KQoreworICAgIEJFR0lOX0FYX09CSkNfRVhDRVBUSU9OUworICAgIGlkIHRleHRN
YXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpAIkFYVGV4dE1h
cmtlckZvckluZGV4IiBmb3JQYXJhbWV0ZXI6W05TTnVtYmVyIG51bWJlcldpdGhJbnRlZ2VyOnRl
eHRJbmRleF1dOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6Y3JlYXRlKHRl
eHRNYXJrZXIpOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4g
MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIAorfQorCisKIH0gLy8gbmFtZXNwYWNlIFdUUgogCkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAkocmV2
aXNpb24gMTExNTA3KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxNyw2ICs1MTcsMzMgQEAKICAgICByZXR1cm4g
cmVzdWx0OyAgICAKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgaW5kZXhGb3JUZXh0TWFya2VyQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBh
cmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyKiBtYXJrZXIgPSAwOworICAgIGlmIChhcmd1bWVudENvdW50ID09IDEpCisgICAg
ICAgIG1hcmtlciA9IHRvVGV4dE1hcmtlcihKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgYXJndW1l
bnRzWzBdLCBleGNlcHRpb24pKTsKKyAgICAKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIo
Y29udGV4dCwgdG9BWEVsZW1lbnQodGhpc09iamVjdCktPmluZGV4Rm9yVGV4dE1hcmtlcihtYXJr
ZXIpKTsKK30KKworc3RhdGljIEpTVmFsdWVSZWYgaXNUZXh0TWFya2VyVmFsaWRDYWxsYmFjayhK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRo
aXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50
c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIqIG1hcmtlciA9IDA7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPT0gMSkKKyAgICAgICAgbWFy
a2VyID0gdG9UZXh0TWFya2VyKEpTVmFsdWVUb09iamVjdChjb250ZXh0LCBhcmd1bWVudHNbMF0s
IGV4Y2VwdGlvbikpOworICAgIAorICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4
dCwgdG9BWEVsZW1lbnQodGhpc09iamVjdCktPmlzVGV4dE1hcmtlclZhbGlkKG1hcmtlcikpOwor
fQorCitzdGF0aWMgSlNWYWx1ZVJlZiB0ZXh0TWFya2VyRm9ySW5kZXhDYWxsYmFjayhKU0NvbnRl
eHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmpl
Y3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBK
U1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaW50IHRleHRJbmRleCA9IDA7CisgICAgaWYg
KGFyZ3VtZW50Q291bnQgPT0gMSkKKyAgICAgICAgdGV4dEluZGV4ID0gSlNWYWx1ZVRvTnVtYmVy
KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKTsKKyAgICAKKyAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eVRleHRNYXJrZXI6Om1ha2VKU0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyKGNvbnRl
eHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT50ZXh0TWFya2VyRm9ySW5kZXgodGV4dEluZGV4
KSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHRleHRNYXJrZXJSYW5nZUxlbmd0aENhbGxiYWNr
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYg
dGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1l
bnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlclJhbmdlKiByYW5nZSA9IDA7CkBAIC05NzksNiArMTAwNiwyMSBAQAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAoraW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmluZGV4Rm9yVGV4dE1hcmtl
cihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopCit7CisgICAgcmV0dXJuIC0xOworfQorCitib29s
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVGV4dE1hcmtlclZhbGlkKEFjY2Vzc2liaWxpdHlU
ZXh0TWFya2VyKikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK0FjY2Vzc2liaWxpdHlUZXh0
TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRNYXJrZXJGb3JJbmRleChpbnQpCit7
CisgICAgcmV0dXJuIDA7Cit9CisKICNlbmRpZgogCiAvLyBEZXN0cnVjdGlvbgpAQCAtMTEwOCw3
ICsxMTUwLDEwIEBACiAgICAgICAgIHsgInJlbW92ZVNlbGVjdGlvbiIsIHJlbW92ZVNlbGVjdGlv
bkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQi
LCB0ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAi
YXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRlIiwgYXR0
cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZUNvbnRhaW5zQXR0cmlidXRlQ2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKKyAgICAgICAgeyAiaW5kZXhGb3JUZXh0TWFya2VyIiwgaW5kZXhGb3JUZXh0TWFy
a2VyQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAiaXNUZXh0TWFya2VyVmFsaWQiLCBpc1Rl
eHRNYXJrZXJWYWxpZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInRleHRNYXJrZXJSYW5n
ZUZvck1hcmtlcnMiLCB0ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
KyAgICAgICAgeyAidGV4dE1hcmtlckZvckluZGV4IiwgdGV4dE1hcmtlckZvckluZGV4Q2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAic3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdl
Iiwgc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAg
ICAgICAgeyAiZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSIsIGVuZFRleHRNYXJrZXJG
b3JUZXh0TWFya2VyUmFuZ2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJhY2Nlc3NpYmls
aXR5RWxlbWVudEZvclRleHRNYXJrZXIiLCBhY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJr
ZXJDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0JKHJldmlzaW9uIDExMTUwNykKKysr
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzIxLDYgKzEzMjEsMzYgQEAKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmRleEZvclRleHRNYXJrZXIoQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIqIG1hcmtlcikKK3sKKyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElP
TlMKKyAgICBOU051bWJlciogaW5kZXhOdW1iZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlB
dHRyaWJ1dGVWYWx1ZTpAIkFYSW5kZXhGb3JUZXh0TWFya2VyIiBmb3JQYXJhbWV0ZXI6KGlkKW1h
cmtlci0+cGxhdGZvcm1UZXh0TWFya2VyKCldOworICAgIHJldHVybiBbaW5kZXhOdW1iZXIgaW50
VmFsdWVdOworICAgIEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICAKKyAgICByZXR1cm4gLTE7
Cit9CisKK0FjY2Vzc2liaWxpdHlUZXh0TWFya2VyIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRl
eHRNYXJrZXJGb3JJbmRleChpbnQgdGV4dEluZGV4KQoreworICAgIEJFR0lOX0FYX09CSkNfRVhD
RVBUSU9OUworICAgIGlkIHRleHRNYXJrZXIgPSBbbV9lbGVtZW50IGFjY2Vzc2liaWxpdHlBdHRy
aWJ1dGVWYWx1ZTpAIkFYVGV4dE1hcmtlckZvckluZGV4IiBmb3JQYXJhbWV0ZXI6W05TTnVtYmVy
IG51bWJlcldpdGhJbnRlZ2VyOnRleHRJbmRleF1dOworICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
VGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKKyAgICBFTkRfQVhfT0JKQ19FWENFUFRJT05TCisgICAg
CisgICAgcmV0dXJuIDA7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNUZXh0
TWFya2VyVmFsaWQoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqIHRleHRNYXJrZXIpCit7CisgICAg
QkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCisgICAgTlNOdW1iZXIqIHZhbGlkTnVtYmVyID0gW21f
ZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWFRleHRNYXJrZXJJc1ZhbGlk
IiBmb3JQYXJhbWV0ZXI6KGlkKXRleHRNYXJrZXItPnBsYXRmb3JtVGV4dE1hcmtlcigpXTsKKyAg
ICByZXR1cm4gW3ZhbGlkTnVtYmVyIGJvb2xWYWx1ZV07CisgICAgRU5EX0FYX09CSkNfRVhDRVBU
SU9OUworCisgICAgcmV0dXJuIGZhbHNlOworfQorCiBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1RleHRNYXJrZXIoQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIqIHRleHRNYXJrZXIpCiB7CiAgICAgQkVHSU5fQVhfT0JKQ19FWENFUFRJT05TCklu
ZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCShy
ZXZpc2lvbiAxMTE1MDcpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNyw3ICsyMTcsMTAgQEAKICAgICBKU1N0cmlu
Z1JlZiBzdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UoQWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5n
ZSopOwogICAgIGludCB0ZXh0TWFya2VyUmFuZ2VMZW5ndGgoQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXJSYW5nZSopOwogICAgIGJvb2wgYXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZUNv
bnRhaW5zQXR0cmlidXRlKEpTU3RyaW5nUmVmLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdl
Kik7Ci0KKyAgICBpbnQgaW5kZXhGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
Kik7CisgICAgYm9vbCBpc1RleHRNYXJrZXJWYWxpZChBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciop
OworICAgIEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIHRleHRNYXJrZXJGb3JJbmRleChpbnQpOwor
ICAgIAogICAgIHZvaWQgc2Nyb2xsVG9NYWtlVmlzaWJsZSgpOwogICAgIHZvaWQgc2Nyb2xsVG9N
YWtlVmlzaWJsZVdpdGhTdWJGb2N1cyhpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdo
dCk7CiAgICAgdm9pZCBzY3JvbGxUb0dsb2JhbFBvaW50KGludCB4LCBpbnQgeSk7CkluZGV4OiBU
b29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
MTE4MzQpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzOCBA
QAorMjAxMi0wMy0yMyAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisg
ICAgICAgIEFYOiBTdXBwb3J0IHNvbHV0aW9uIHRvIGhhbmRsZSBpbnZhbGlkIGF4IHRleHQgbWFy
a2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjAy
MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHA6CisgICAgICAgIChpbmRleEZv
clRleHRNYXJrZXJDYWxsYmFjayk6CisgICAgICAgIChpc1RleHRNYXJrZXJWYWxpZENhbGxiYWNr
KToKKyAgICAgICAgKHRleHRNYXJrZXJGb3JJbmRleENhbGxiYWNrKToKKyAgICAgICAgKEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmluZGV4Rm9yVGV4dE1hcmtlcik6CisgICAgICAgIChBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojppc1RleHRNYXJrZXJWYWxpZCk6CisgICAgICAgIChBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9ySW5kZXgpOgorICAgICAgICAoQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6Z2V0SlNDbGFzcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudC5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudCk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW06
CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmRleEZvclRleHRNYXJrZXIpOgor
ICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dGV4dE1hcmtlckZvckluZGV4KToKKyAg
ICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzVGV4dE1hcmtlclZhbGlkKToKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnQuY3BwOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbmRleEZvclRl
eHRNYXJrZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc1RleHRN
YXJrZXJWYWxpZCk6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRleHRN
YXJrZXJGb3JJbmRleCk6CisgICAgICAgIChXVFIpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOgorICAgICAgICAoQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9CaW5kaW5ncy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmlkbDoKKyAgICAgICAgKiBX
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
TWFjLm1tOgorICAgICAgICAoV1RSKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aW5kZXhGb3JUZXh0TWFya2VyKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aXNUZXh0TWFya2VyVmFsaWQpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50Ojp0ZXh0TWFya2VyRm9ySW5kZXgpOgorCiAyMDEyLTAzLTIyICBHeXV5b3VuZyBL
aW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgQ29udmVydCBoYXNHcmFt
bWFyTWFya2VyIHRvIHVzZSBJbnRlcm5hbHMgaW50ZXJmYWNlCkluZGV4OiBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
MTE4MzQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxMyBAQAorMjAxMi0wMy0yMyAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29t
PgorCisgICAgICAgIEFYOiBTdXBwb3J0IHNvbHV0aW9uIHRvIGhhbmRsZSBpbnZhbGlkIGF4IHRl
eHQgbWFya2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04MjAyMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGV4dG1hcmtlci1yb3V0aW5lcy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RleHRt
YXJrZXItcm91dGluZXMuaHRtbDogQWRkZWQuCisKIDIwMTItMDMtMjIgIERhbiBCZXJuc3RlaW4g
IDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGRlZCBmYXN0L2V2ZW50cy9yZW1vdmUtdGFy
Z2V0LXdpdGgtc2hhZG93LWluLWRyYWcuaHRtbCB0byB0aGUgTWFjIFdlYktpdDIgc2tpcCBsaXN0
LCBzaW5jZQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGV4
dG1hcmtlci1yb3V0aW5lcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGV4dG1hcmtlci1yb3V0aW5lcy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0
eS90ZXh0bWFya2VyLXJvdXRpbmVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxOCBAQAordGV4dAordGV4dAorVGhpcyB2ZXJpZmllcyB1c2FnZSBvZiBpc1RleHRNYXJrZXJW
YWxpZCwgaW5kZXhGb3JUZXh0TWFya2VyIGFuZCB0ZXh0TWFya2VyRm9ySW5kZXguCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGl0ZW0xLmlzVGV4dE1hcmtlclZhbGlkKGZp
cnN0VGV4dE1hcmtlcikgaXMgdHJ1ZQorUEFTUyBpdGVtMS5pbmRleEZvclRleHRNYXJrZXIoZmly
c3RUZXh0TWFya2VyKSBpcyAwCitQQVNTIGl0ZW0xLnRleHRNYXJrZXJGb3JJbmRleCgwKS5pc0Vx
dWFsKGZpcnN0VGV4dE1hcmtlcikgaXMgdHJ1ZQorUEFTUyBpdGVtMS5pc1RleHRNYXJrZXJWYWxp
ZChmaXJzdFRleHRNYXJrZXIpIGlzIGZhbHNlCitQQVNTIGl0ZW0yLmlzVGV4dE1hcmtlclZhbGlk
KHNlY29uZFRleHRNYXJrZXIpIGlzIHRydWUKK1BBU1MgaXRlbTIuaW5kZXhGb3JUZXh0TWFya2Vy
KHNlY29uZFRleHRNYXJrZXIpIGlzIDUKK1BBU1MgaXRlbTIudGV4dE1hcmtlckZvckluZGV4KGl0
ZW0yLmluZGV4Rm9yVGV4dE1hcmtlcihzZWNvbmRUZXh0TWFya2VyKSkuaXNFcXVhbChzZWNvbmRU
ZXh0TWFya2VyKSBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxp
dHkvdGV4dG1hcmtlci1yb3V0aW5lcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RleHRtYXJrZXItcm91dGluZXMuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RleHRtYXJr
ZXItcm91dGluZXMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OSBAQAorPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PGJvZHkgaWQ9ImJvZHkiIHRhYmluZGV4PSIwIj4KKworPGRpdiB0YWJpbmRleD0iMCIgaWQ9InRl
eHQxIj50ZXh0PC9kaXY+CisKK3RleHQKKworPGRpdiB0YWJpbmRleD0iMCIgaWQ9InRleHQyIj50
ZXh0PC9kaXY+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+CisKKzxzY3JpcHQ+CisKKyAgICBkZXNjcmlwdGlvbigiVGhpcyB2ZXJpZmllcyB1c2Fn
ZSBvZiBpc1RleHRNYXJrZXJWYWxpZCwgaW5kZXhGb3JUZXh0TWFya2VyIGFuZCB0ZXh0TWFya2Vy
Rm9ySW5kZXguIik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7
CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0MSIpLmZvY3VzKCk7CisgICAg
ICAgIHZhciBpdGVtMSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50Owor
ICAgICAgICB2YXIgbWFya2VyUmFuZ2UgPSBpdGVtMS50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50
KGl0ZW0xKTsKKyAgICAgICAgdmFyIGZpcnN0VGV4dE1hcmtlciA9IGl0ZW0xLnN0YXJ0VGV4dE1h
cmtlckZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSk7CisKKyAgICAgICAgc2hvdWxkQmVU
cnVlKCJpdGVtMS5pc1RleHRNYXJrZXJWYWxpZChmaXJzdFRleHRNYXJrZXIpIik7CisgICAgICAg
IHNob3VsZEJlKCJpdGVtMS5pbmRleEZvclRleHRNYXJrZXIoZmlyc3RUZXh0TWFya2VyKSIsICIw
Iik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiaXRlbTEudGV4dE1hcmtlckZvckluZGV4KDApLmlz
RXF1YWwoZmlyc3RUZXh0TWFya2VyKSIpOyAgICAgICAKKworICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiYm9keSIpLnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0
ZXh0MSIpKTsKKworICAgICAgICBzaG91bGRCZUZhbHNlKCJpdGVtMS5pc1RleHRNYXJrZXJWYWxp
ZChmaXJzdFRleHRNYXJrZXIpIik7CisKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRleHQyIikuZm9jdXMoKTsKKyAgICAgICAgdmFyIGl0ZW0yID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgICAgIG1hcmtlclJhbmdlID0gaXRlbTIudGV4dE1h
cmtlclJhbmdlRm9yRWxlbWVudChpdGVtMik7CisgICAgICAgIHZhciBzZWNvbmRUZXh0TWFya2Vy
ID0gaXRlbTIuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKTsK
KworICAgICAgICBzaG91bGRCZVRydWUoIml0ZW0yLmlzVGV4dE1hcmtlclZhbGlkKHNlY29uZFRl
eHRNYXJrZXIpIik7CisgICAgICAgIHNob3VsZEJlKCJpdGVtMi5pbmRleEZvclRleHRNYXJrZXIo
c2Vjb25kVGV4dE1hcmtlcikiLCAiNSIpOworICAgICAgICBzaG91bGRCZVRydWUoIml0ZW0yLnRl
eHRNYXJrZXJGb3JJbmRleChpdGVtMi5pbmRleEZvclRleHRNYXJrZXIoc2Vjb25kVGV4dE1hcmtl
cikpLmlzRXF1YWwoc2Vjb25kVGV4dE1hcmtlcikiKTsgICAgICAgCisgICAgfQorCis8L3Njcmlw
dD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KKwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>