<?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>82708</bug_id>
          
          <creation_ts>2012-03-30 02:44:27 -0700</creation_ts>
          <short_desc>Web Inspector: editing resets line-ending of the whole file</short_desc>
          <delta_ts>2012-03-30 04:37:18 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>591986</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-03-30 02:44:27 -0700</bug_when>
    <thetext>This change splits setText into setText (for initialization) and editRange (for editing). Distinguishing between the two allowed properly detecting the preferred line endings.
Drive-by: annotated the TextEditorModel classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592001</commentid>
    <comment_count>1</comment_count>
      <attachid>134761</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-03-30 03:04:16 -0700</bug_when>
    <thetext>Created attachment 134761
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592046</commentid>
    <comment_count>2</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-03-30 04:36:32 -0700</bug_when>
    <thetext>Committed r112652: &lt;http://trac.webkit.org/changeset/112652&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592047</commentid>
    <comment_count>3</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-03-30 04:37:18 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=134761&amp;action=review

&gt; Source/WebCore/inspector/front-end/TextEditorModel.js:93
&gt; +WebInspector.TextEditorCommand = function(newRange, originalText)

I would call it &quot;TextEditCommand&quot; as the editor may have a few different commands.

&gt; Source/WebCore/inspector/front-end/TextEditorModel.js:180
&gt; +        this.dispatchEventToListeners(WebInspector.TextEditorModel.Events.TextChanged, { oldRange: range, newRange: newRange});

a space between &quot;newRange&quot; and &quot;}&quot;

&gt; LayoutTests/ChangeLog:3
&gt; +        Web Inspector: editing resets line-ending of the whole file

A test for a bare &quot;\r&quot; would work fine.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134761</attachid>
            <date>2012-03-30 03:04:16 -0700</date>
            <delta_ts>2012-03-30 04:33:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82708-20120330140414.patch</filename>
            <type>text/plain</type>
            <size>28202</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODE2YmE2YWZmMDVmOTli
YTA4N2EyN2ViOTkyM2U5OGI1ZWZkOTFjMS4uMTIwMTU5NDQxZTIyMjQ3M2NlM2U2OWU2MjgwYjNh
N2M3YjgyNjM1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTAzLTMwICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGVkaXRpbmcgcmVzZXRzIGxpbmUtZW5kaW5nIG9mIHRoZSB3aG9sZSBmaWxlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MjcwOAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIHNwbGl0
cyBUZXh0RWRpdG9yTW9kZWwncyBzZXRUZXh0IGludG8gc2V0VGV4dCAoZm9yIGluaXRpYWxpemF0
aW9uKSBhbmQKKyAgICAgICAgZWRpdFJhbmdlIChmb3IgZWRpdGluZykuIERpc3Rpbmd1aXNoaW5n
IGJldHdlZW4gdGhlIHR3byBhbGxvd2VkIHByb3Blcmx5IGRldGVjdGluZworICAgICAgICB0aGUg
cHJlZmVycmVkIGxpbmUgZW5kaW5ncy4KKworICAgICAgICBUZXN0OiBpbnNwZWN0b3IvZWRpdG9y
L3RleHQtZWRpdG9yLWxpbmUtYnJlYWtzLmh0bWwKKworICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvSmF2YVNjcmlwdFNvdXJjZUZyYW1lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkph
dmFTY3JpcHRTb3VyY2VGcmFtZS5wcm90b3R5cGUuYWZ0ZXJUZXh0Q2hhbmdlZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Tb3VyY2VGcmFtZS5wcm90b3R5cGUuc2V0Q29udGVudCk6CisgICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC9UZXh0RWRpdG9yTW9kZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
VGV4dEVkaXRvckNvbW1hbmQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2Rl
bCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsLmVuZHNXaXRoQnJhY2tl
dFJlZ2V4Lik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9UZXh0Vmlld2VyLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRWaWV3ZXIucHJvdG90eXBlLl90ZXh0Q2hhbmdlZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUuX3Vu
aW5kZW50TGluZXMuZ2V0IHZhcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1h
aW5QYW5lbC5wcm90b3R5cGUuX3VuaW5kZW50TGluZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLmhhbmRsZUVudGVyS2V5LmdldCB2YXIpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlLmhhbmRs
ZUVudGVyS2V5KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTWFpblBhbmVsLnBy
b3RvdHlwZS5fYXBwbHlEb21VcGRhdGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UZXh0RWRp
dG9yTWFpblBhbmVsLnByb3RvdHlwZS5fZWRpdFJhbmdlKToKKwogMjAxMi0wMy0zMCAgUGhpbGlw
cGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gV2ViQXVk
aW8gY2hhbm5lbFNpemUgaXNzdWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvSmF2YVNjcmlwdFNvdXJjZUZyYW1lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0U291cmNlRnJhbWUuanMKaW5kZXggYmU0ODNhMGMx
YWY1NzlhMTY5NDU1Mzk5Njk3NGNiYjFhYWNiYjk2MC4uZWU4M2NjNDgwMmEzZmFmMTFhOGQ0MGZi
NTFiMGI1NmRmMWMzMjMwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9KYXZhU2NyaXB0U291cmNlRnJhbWUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0U291cmNlRnJhbWUuanMKQEAgLTE2MCw3ICsxNjAs
NyBAQCBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKIAog
ICAgIGFmdGVyVGV4dENoYW5nZWQ6IGZ1bmN0aW9uKG9sZFJhbmdlLCBuZXdSYW5nZSkKICAgICB7
Ci0gICAgICAgIHZhciBpc0RpcnR5ID0gdGhpcy50ZXh0TW9kZWwuY29weVJhbmdlKCkgIT09IHRo
aXMuX29yaWdpbmFsQ29udGVudDsKKyAgICAgICAgdmFyIGlzRGlydHkgPSB0aGlzLnRleHRNb2Rl
bC50ZXh0ICE9PSB0aGlzLl9vcmlnaW5hbENvbnRlbnQ7CiAgICAgICAgIGlmIChpc0RpcnR5KQog
ICAgICAgICAgICAgdGhpcy5fc2NyaXB0c1BhbmVsLnNldFNjcmlwdFNvdXJjZUlzRGlydHkodGhp
cy5fdWlTb3VyY2VDb2RlLCB0cnVlKTsKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Tb3VyY2VGcmFtZS5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU291cmNlRnJhbWUuanMKaW5kZXggNDg4YzRlNDhiOTBh
YjFlMWJkZDNmMDVmY2IwNmZmM2QzNTIzN2E1YS4uYjExODU4Y2Y1MDk0OTk5MTdjYjI3MjIzN2Yy
MTA3NTlmMzk1ZjdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9Tb3VyY2VGcmFtZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NvdXJjZUZyYW1lLmpzCkBAIC0yMTYsNyArMjE2LDcgQEAgV2ViSW5zcGVjdG9yLlNvdXJj
ZUZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fdGV4dFZpZXdlci5taW1lVHlwZSA9
IG1pbWVUeXBlOwogCiAgICAgICAgIHRoaXMuX2xvYWRlZCA9IHRydWU7Ci0gICAgICAgIHRoaXMu
X3RleHRNb2RlbC5zZXRUZXh0KG51bGwsIGNvbnRlbnQpOworICAgICAgICB0aGlzLl90ZXh0TW9k
ZWwuc2V0VGV4dChjb250ZW50KTsKIAogICAgICAgICB0aGlzLl90ZXh0Vmlld2VyLmJlZ2luVXBk
YXRlcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1RleHRFZGl0b3JNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
VGV4dEVkaXRvck1vZGVsLmpzCmluZGV4IDBlZGU2MGJlYTk3ZDA0ZjM2MDMyNjkxMDNhMDllY2E2
ZmZjNmQ4YmYuLmUyNzg4MmQxNzI1NWJlZWI4MjQyNTc5NGNiMDdhNDk1ZDUzZGNmNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvck1vZGVs
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGV4dEVkaXRvck1v
ZGVsLmpzCkBAIC0zMCw2ICszMCwxMCBAQAogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICogQHBh
cmFtIHtudW1iZXJ9IHN0YXJ0TGluZQorICogQHBhcmFtIHtudW1iZXJ9IHN0YXJ0Q29sdW1uCisg
KiBAcGFyYW0ge251bWJlcn0gZW5kTGluZQorICogQHBhcmFtIHtudW1iZXJ9IGVuZENvbHVtbgog
ICovCiBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlID0gZnVuY3Rpb24oc3RhcnRMaW5lLCBzdGFydENv
bHVtbiwgZW5kTGluZSwgZW5kQ29sdW1uKQogewpAQCAtNDAsMTEgKzQ0LDE3IEBAIFdlYkluc3Bl
Y3Rvci5UZXh0UmFuZ2UgPSBmdW5jdGlvbihzdGFydExpbmUsIHN0YXJ0Q29sdW1uLCBlbmRMaW5l
LCBlbmRDb2x1bW4pCiB9CiAKIFdlYkluc3BlY3Rvci5UZXh0UmFuZ2UucHJvdG90eXBlID0gewor
ICAgIC8qKgorICAgICAqIEByZXR1cm4ge2Jvb2xlYW59CisgICAgICovCiAgICAgaXNFbXB0eTog
ZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuc3RhcnRMaW5lID09PSB0aGlz
LmVuZExpbmUgJiYgdGhpcy5zdGFydENvbHVtbiA9PT0gdGhpcy5lbmRDb2x1bW47CiAgICAgfSwK
IAorICAgIC8qKgorICAgICAqIEB0eXBlIHtudW1iZXJ9CisgICAgICovCiAgICAgZ2V0IGxpbmVz
Q291bnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuZW5kTGluZSAtIHRoaXMuc3RhcnRM
aW5lOwpAQCAtNTUsNiArNjUsOSBAQCBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlLnByb3RvdHlwZSA9
IHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKHRoaXMuZW5kTGlu
ZSwgdGhpcy5lbmRDb2x1bW4sIHRoaXMuZW5kTGluZSwgdGhpcy5lbmRDb2x1bW4pOwogICAgIH0s
CiAKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdlfQorICAg
ICAqLwogICAgIG5vcm1hbGl6ZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMu
c3RhcnRMaW5lID4gdGhpcy5lbmRMaW5lIHx8ICh0aGlzLnN0YXJ0TGluZSA9PT0gdGhpcy5lbmRM
aW5lICYmIHRoaXMuc3RhcnRDb2x1bW4gPiB0aGlzLmVuZENvbHVtbikpCkBAIC02Myw2ICs3Niw5
IEBAIFdlYkluc3BlY3Rvci5UZXh0UmFuZ2UucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0
dXJuIHRoaXM7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rv
ci5UZXh0UmFuZ2V9CisgICAgICovCiAgICAgY2xvbmU6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlRleHRSYW5nZSh0aGlzLnN0YXJ0TGluZSwgdGhp
cy5zdGFydENvbHVtbiwgdGhpcy5lbmRMaW5lLCB0aGlzLmVuZENvbHVtbik7CkBAIC03MSwxMSAr
ODcsMjQgQEAgV2ViSW5zcGVjdG9yLlRleHRSYW5nZS5wcm90b3R5cGUgPSB7CiAKIC8qKgogICog
QGNvbnN0cnVjdG9yCisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0UmFuZ2V9IG5ld1Jhbmdl
CisgKiBAcGFyYW0ge3N0cmluZ30gb3JpZ2luYWxUZXh0CisgKi8KK1dlYkluc3BlY3Rvci5UZXh0
RWRpdG9yQ29tbWFuZCA9IGZ1bmN0aW9uKG5ld1JhbmdlLCBvcmlnaW5hbFRleHQpCit7CisgICAg
dGhpcy5uZXdSYW5nZSA9IG5ld1JhbmdlOworICAgIHRoaXMub3JpZ2luYWxUZXh0ID0gb3JpZ2lu
YWxUZXh0OworfQorCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3Bl
Y3Rvci5PYmplY3R9CiAgKi8KIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwgPSBmdW5jdGlv
bigpCiB7CiAgICAgdGhpcy5fbGluZXMgPSBbIiJdOwogICAgIHRoaXMuX2F0dHJpYnV0ZXMgPSBb
XTsKKyAgICAvKiogQHR5cGUge0FycmF5LjxXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckNvbW1hbmQ+
fSAqLwogICAgIHRoaXMuX3VuZG9TdGFjayA9IFtdOwogICAgIHRoaXMuX25vUHVuY3R1YXRpb25S
ZWdleCA9IC9bXiAhJSYoKSorLC0uOjs8PT4/XFtcXVxee3x9fl0rLzsKICAgICB0aGlzLl9saW5l
QnJlYWsgPSAiXG4iOwpAQCAtODgsMjkgKzExNyw0MSBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ck1vZGVsLkluZGVudCA9IHsKICAgICBUYWJDaGFyYWN0ZXI6ICJcdCIKIH0KIAorV2ViSW5zcGVj
dG9yLlRleHRFZGl0b3JNb2RlbC5FdmVudHMgPSB7CisgICAgVGV4dENoYW5nZWQ6ICJUZXh0Q2hh
bmdlZCIKK30KKwogV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbC5lbmRzV2l0aEJyYWNrZXRS
ZWdleCA9IC9beyhcW11ccyokLzsKIAogV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbC5wcm90
b3R5cGUgPSB7Ci0gICAgc2V0IGNoYW5nZUxpc3RlbmVyKGNoYW5nZUxpc3RlbmVyKQotICAgIHsK
LSAgICAgICAgdGhpcy5fY2hhbmdlTGlzdGVuZXIgPSBjaGFuZ2VMaXN0ZW5lcjsKLSAgICB9LAot
CisgICAgLyoqCisgICAgICogQHR5cGUge251bWJlcn0KKyAgICAgKi8KICAgICBnZXQgbGluZXND
b3VudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbGluZXMubGVuZ3RoOwogICAgIH0s
CiAKKyAgICAvKioKKyAgICAgKiBAdHlwZSB7c3RyaW5nfQorICAgICAqLwogICAgIGdldCB0ZXh0
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9saW5lcy5qb2luKHRoaXMuX2xpbmVCcmVh
ayk7CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEB0eXBlIHtzdHJpbmd9CisgICAgICovCiAg
ICAgZ2V0IGxpbmVCcmVhaygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbGluZUJyZWFr
OwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZU51bWJlcgor
ICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KICAgICBsaW5lOiBmdW5jdGlvbihsaW5l
TnVtYmVyKQogICAgIHsKICAgICAgICAgaWYgKGxpbmVOdW1iZXIgPj0gdGhpcy5fbGluZXMubGVu
Z3RoKQpAQCAtMTE4LDMwICsxNTksNDkgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9saW5lc1tsaW5lTnVtYmVyXTsKICAg
ICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKKyAgICAg
KiBAcmV0dXJuIHtudW1iZXJ9CisgICAgICovCiAgICAgbGluZUxlbmd0aDogZnVuY3Rpb24obGlu
ZU51bWJlcikKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9saW5lc1tsaW5lTnVtYmVyXS5s
ZW5ndGg7CiAgICAgfSwKIAotICAgIHNldFRleHQ6IGZ1bmN0aW9uKHJhbmdlLCB0ZXh0KQorICAg
IC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IAorICAgICAqLworICAgIHNldFRleHQ6
IGZ1bmN0aW9uKHRleHQpCiAgICAgewogICAgICAgICB0ZXh0ID0gdGV4dCB8fCAiIjsKLSAgICAg
ICAgaWYgKCFyYW5nZSkgewotICAgICAgICAgICAgcmFuZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLlRl
eHRSYW5nZSgwLCAwLCB0aGlzLl9saW5lcy5sZW5ndGggLSAxLCB0aGlzLl9saW5lc1t0aGlzLl9s
aW5lcy5sZW5ndGggLSAxXS5sZW5ndGgpOwotICAgICAgICAgICAgdGhpcy5fbGluZUJyZWFrID0g
L1xyXG4vLnRlc3QodGV4dCkgPyAiXHJcbiIgOiAiXG4iOwotICAgICAgICB9Ci0gICAgICAgIHZh
ciBjb21tYW5kID0gdGhpcy5fcHVzaFVuZG9hYmxlQ29tbWFuZChyYW5nZSwgdGV4dCk7Ci0gICAg
ICAgIGlmICghY29tbWFuZCkKKyAgICAgICAgdmFyIHJhbmdlID0gbmV3IFdlYkluc3BlY3Rvci5U
ZXh0UmFuZ2UoMCwgMCwgdGhpcy5fbGluZXMubGVuZ3RoIC0gMSwgdGhpcy5fbGluZXNbdGhpcy5f
bGluZXMubGVuZ3RoIC0gMV0ubGVuZ3RoKTsKKyAgICAgICAgdGhpcy5fbGluZUJyZWFrID0gL1xy
XG4vLnRlc3QodGV4dCkgPyAiXHJcbiIgOiAiXG4iOworICAgICAgICB2YXIgbmV3UmFuZ2UgPSB0
aGlzLl9pbm5lclNldFRleHQocmFuZ2UsIHRleHQpOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsLkV2ZW50cy5UZXh0Q2hh
bmdlZCwgeyBvbGRSYW5nZTogcmFuZ2UsIG5ld1JhbmdlOiBuZXdSYW5nZX0pOworICAgIH0sCisK
KyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0UmFuZ2V9IHJhbmdlCisg
ICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3Iu
VGV4dFJhbmdlfQorICAgICAqLworICAgIGVkaXRSYW5nZTogZnVuY3Rpb24ocmFuZ2UsIHRleHQp
CisgICAgeworICAgICAgICB2YXIgb3JpZ2luYWxUZXh0ID0gdGhpcy5jb3B5UmFuZ2UocmFuZ2Up
OworICAgICAgICBpZiAodGV4dCA9PT0gb3JpZ2luYWxUZXh0KQogICAgICAgICAgICAgcmV0dXJu
IHJhbmdlOyAvLyBOb29wCiAKICAgICAgICAgdmFyIG5ld1JhbmdlID0gdGhpcy5faW5uZXJTZXRU
ZXh0KHJhbmdlLCB0ZXh0KTsKLSAgICAgICAgY29tbWFuZC5yYW5nZSA9IG5ld1JhbmdlLmNsb25l
KCk7Ci0KLSAgICAgICAgaWYgKHRoaXMuX2NoYW5nZUxpc3RlbmVyKQotICAgICAgICAgICAgdGhp
cy5fY2hhbmdlTGlzdGVuZXIocmFuZ2UsIG5ld1JhbmdlLCBjb21tYW5kLnRleHQsIHRleHQpOwor
ICAgICAgICB0aGlzLl9wdXNoVW5kb2FibGVDb21tYW5kKG5ld1JhbmdlLCBvcmlnaW5hbFRleHQp
OworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVGV4
dEVkaXRvck1vZGVsLkV2ZW50cy5UZXh0Q2hhbmdlZCwgeyBvbGRSYW5nZTogcmFuZ2UsIG5ld1Jh
bmdlOiBuZXdSYW5nZSB9KTsKICAgICAgICAgcmV0dXJuIG5ld1JhbmdlOwogICAgIH0sCiAKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0UmFuZ2V9IHJhbmdlCisgICAg
ICogQHBhcmFtIHtzdHJpbmd9IHRleHQKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVGV4
dFJhbmdlfQorICAgICAqLwogICAgIF9pbm5lclNldFRleHQ6IGZ1bmN0aW9uKHJhbmdlLCB0ZXh0
KQogICAgIHsKICAgICAgICAgdGhpcy5fZXJhc2VSYW5nZShyYW5nZSk7CkBAIC0xNjksNiArMjI5
LDEwIEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2Uuc3RhcnRMaW5lICsgbmV3
TGluZXMubGVuZ3RoIC0gMSwgcG9zdENhcmV0KTsKICAgICB9LAogCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdlfSByYW5nZQorICAgICAqIEBwYXJhbSB7QXJy
YXkuPHN0cmluZz59IG5ld0xpbmVzCisgICAgICovCiAgICAgX2luc2VydExpbmVzOiBmdW5jdGlv
bihyYW5nZSwgbmV3TGluZXMpCiAgICAgewogICAgICAgICB2YXIgbGluZXMgPSBuZXcgQXJyYXko
dGhpcy5fbGluZXMubGVuZ3RoICsgbmV3TGluZXMubGVuZ3RoIC0gMSk7CkBAIC0xOTEsNiArMjU1
LDkgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHRoaXMuX2F0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5UZXh0UmFuZ2V9IHJhbmdlCisgICAgICovCiAgICAgX2Vy
YXNlUmFuZ2U6IGZ1bmN0aW9uKHJhbmdlKQogICAgIHsKICAgICAgICAgaWYgKHJhbmdlLmlzRW1w
dHkoKSkKQEAgLTIwNywxNiArMjc0LDMxIEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9zZXRMaW5lKHJhbmdlLnN0YXJ0TGluZSwgcHJl
Zml4ICsgc3VmZml4KTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IGxpbmVOdW1iZXIKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dAorICAgICAqLwogICAgIF9z
ZXRMaW5lOiBmdW5jdGlvbihsaW5lTnVtYmVyLCB0ZXh0KQogICAgIHsKICAgICAgICAgdGhpcy5f
bGluZXNbbGluZU51bWJlcl0gPSB0ZXh0OwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge251bWJlcn0gbGluZU51bWJlcgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2x1bW4KKyAg
ICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdlfQorICAgICAqLwogICAgIHdvcmRS
YW5nZTogZnVuY3Rpb24obGluZU51bWJlciwgY29sdW1uKQogICAgIHsKICAgICAgICAgcmV0dXJu
IG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKGxpbmVOdW1iZXIsIHRoaXMud29yZFN0YXJ0KGxp
bmVOdW1iZXIsIGNvbHVtbiwgdHJ1ZSksIGxpbmVOdW1iZXIsIHRoaXMud29yZEVuZChsaW5lTnVt
YmVyLCBjb2x1bW4sIHRydWUpKTsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtu
dW1iZXJ9IGxpbmVOdW1iZXIKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gY29sdW1uCisgICAgICog
QHBhcmFtIHtib29sZWFufSBnYXBsZXNzCisgICAgICogQHJldHVybiB7bnVtYmVyfQorICAgICAq
LwogICAgIHdvcmRTdGFydDogZnVuY3Rpb24obGluZU51bWJlciwgY29sdW1uLCBnYXBsZXNzKQog
ICAgIHsKICAgICAgICAgdmFyIGxpbmUgPSB0aGlzLl9saW5lc1tsaW5lTnVtYmVyXTsKQEAgLTIy
NSw2ICszMDcsMTIgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHJldHVybiBwcmVmaXhNYXRjaCAmJiAoIWdhcGxlc3MgfHwgcHJlZml4TWF0Y2gu
aW5kZXggPT09IDApID8gY29sdW1uIC0gcHJlZml4TWF0Y2guaW5kZXggLSBwcmVmaXhNYXRjaFsw
XS5sZW5ndGggOiBjb2x1bW47CiAgICAgfSwKIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVt
YmVyfSBsaW5lTnVtYmVyCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGNvbHVtbgorICAgICAqIEBw
YXJhbSB7Ym9vbGVhbn0gZ2FwbGVzcworICAgICAqIEByZXR1cm4ge251bWJlcn0KKyAgICAgKi8K
ICAgICB3b3JkRW5kOiBmdW5jdGlvbihsaW5lTnVtYmVyLCBjb2x1bW4sIGdhcGxlc3MpCiAgICAg
ewogICAgICAgICB2YXIgbGluZSA9IHRoaXMuX2xpbmVzW2xpbmVOdW1iZXJdOwpAQCAtMjMzLDYg
KzMyMSwxMCBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgcmV0dXJuIHN1ZmZpeE1hdGNoICYmICghZ2FwbGVzcyB8fCBzdWZmaXhNYXRjaC5pbmRl
eCA9PT0gMCkgPyBjb2x1bW4gKyBzdWZmaXhNYXRjaC5pbmRleCArIHN1ZmZpeE1hdGNoWzBdLmxl
bmd0aCA6IGNvbHVtbjsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNw
ZWN0b3IuVGV4dFJhbmdlfSByYW5nZQorICAgICAqIEByZXR1cm4ge3N0cmluZ30gIAorICAgICAq
LwogICAgIGNvcHlSYW5nZTogZnVuY3Rpb24ocmFuZ2UpCiAgICAgewogICAgICAgICBpZiAoIXJh
bmdlKQpAQCAtMjUwLDYgKzM0MiwxMSBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIGNsaXAuam9pbih0aGlzLl9saW5lQnJlYWspOwog
ICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZQorICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBuYW1lICAKKyAgICAgKiBAcGFyYW0ge09iamVjdD99IHZhbHVlICAKKyAg
ICAgKi8KICAgICBzZXRBdHRyaWJ1dGU6IGZ1bmN0aW9uKGxpbmUsIG5hbWUsIHZhbHVlKQogICAg
IHsKICAgICAgICAgdmFyIGF0dHJzID0gdGhpcy5fYXR0cmlidXRlc1tsaW5lXTsKQEAgLTI2MCwx
MiArMzU3LDIxIEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwucHJvdG90eXBlID0gewog
ICAgICAgICBhdHRyc1tuYW1lXSA9IHZhbHVlOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge251bWJlcn0gbGluZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAKKyAgICAg
KiBAcmV0dXJuIHtPYmplY3R8bnVsbH0gdmFsdWUgIAorICAgICAqLwogICAgIGdldEF0dHJpYnV0
ZTogZnVuY3Rpb24obGluZSwgbmFtZSkKICAgICB7CiAgICAgICAgIHZhciBhdHRycyA9IHRoaXMu
X2F0dHJpYnV0ZXNbbGluZV07CiAgICAgICAgIHJldHVybiBhdHRycyA/IGF0dHJzW25hbWVdIDog
bnVsbDsKICAgICB9LAogCisgICAgLyoqCisgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmUKKyAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqLwogICAgIHJlbW92ZUF0dHJpYnV0ZTog
ZnVuY3Rpb24obGluZSwgbmFtZSkKICAgICB7CiAgICAgICAgIHZhciBhdHRycyA9IHRoaXMuX2F0
dHJpYnV0ZXNbbGluZV07CkBAIC0yNzMsMTggKzM3OSwxNCBAQCBXZWJJbnNwZWN0b3IuVGV4dEVk
aXRvck1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGRlbGV0ZSBhdHRyc1tuYW1lXTsK
ICAgICB9LAogCi0gICAgX3B1c2hVbmRvYWJsZUNvbW1hbmQ6IGZ1bmN0aW9uKHJhbmdlLCB0ZXh0
KQorICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlRleHRSYW5nZX0gbmV3UmFu
Z2UKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3JpZ2luYWxUZXh0CisgICAgICogQHJldHVybiB7
V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JDb21tYW5kfQorICAgICAqLworICAgIF9wdXNoVW5kb2Fi
bGVDb21tYW5kOiBmdW5jdGlvbihuZXdSYW5nZSwgb3JpZ2luYWxUZXh0KQogICAgIHsKLSAgICAg
ICAgdmFyIGNvbW1hbmQgPSB7Ci0gICAgICAgICAgICB0ZXh0OiB0aGlzLmNvcHlSYW5nZShyYW5n
ZSksCi0gICAgICAgICAgICBzdGFydExpbmU6IHJhbmdlLnN0YXJ0TGluZSwKLSAgICAgICAgICAg
IHN0YXJ0Q29sdW1uOiByYW5nZS5zdGFydENvbHVtbiwKLSAgICAgICAgICAgIGVuZExpbmU6IHJh
bmdlLnN0YXJ0TGluZSwKLSAgICAgICAgICAgIGVuZENvbHVtbjogcmFuZ2Uuc3RhcnRDb2x1bW4K
LSAgICAgICAgfTsKLSAgICAgICAgaWYgKHRleHQgPT09IGNvbW1hbmQudGV4dCkKLSAgICAgICAg
ICAgIHJldHVybiBudWxsOwotCisgICAgICAgIHZhciBjb21tYW5kID0gbmV3IFdlYkluc3BlY3Rv
ci5UZXh0RWRpdG9yQ29tbWFuZChuZXdSYW5nZSwgb3JpZ2luYWxUZXh0KTsKICAgICAgICAgaWYg
KHRoaXMuX2luVW5kbykKICAgICAgICAgICAgIHRoaXMuX3JlZG9TdGFjay5wdXNoKGNvbW1hbmQp
OwogICAgICAgICBlbHNlIHsKQEAgLTI5NSw2ICszOTcsMTEgQEAgV2ViSW5zcGVjdG9yLlRleHRF
ZGl0b3JNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBjb21tYW5kOwogICAgIH0s
CiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCk9fSBiZWZvcmVDYWxsYmFjawor
ICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oV2ViSW5zcGVjdG9yLlRleHRSYW5nZSwgV2ViSW5zcGVj
dG9yLlRleHRSYW5nZSk9fSBhZnRlckNhbGxiYWNrCisgICAgICogQHJldHVybiB7V2ViSW5zcGVj
dG9yLlRleHRSYW5nZX0KKyAgICAgKi8KICAgICB1bmRvOiBmdW5jdGlvbihiZWZvcmVDYWxsYmFj
aywgYWZ0ZXJDYWxsYmFjaykKICAgICB7CiAgICAgICAgIHRoaXMuX21hcmtSZWRvYWJsZVN0YXRl
KCk7CkBAIC0zMDYsNiArNDEzLDExIEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwucHJv
dG90eXBlID0gewogICAgICAgICByZXR1cm4gcmFuZ2U7CiAgICAgfSwKIAorICAgIC8qKgorICAg
ICAqIEBwYXJhbSB7ZnVuY3Rpb24oKT19IGJlZm9yZUNhbGxiYWNrCisgICAgICogQHBhcmFtIHtm
dW5jdGlvbihXZWJJbnNwZWN0b3IuVGV4dFJhbmdlLCBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKT19
IGFmdGVyQ2FsbGJhY2sKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdlfQor
ICAgICAqLwogICAgIHJlZG86IGZ1bmN0aW9uKGJlZm9yZUNhbGxiYWNrLCBhZnRlckNhbGxiYWNr
KQogICAgIHsKICAgICAgICAgdGhpcy5tYXJrVW5kb2FibGVTdGF0ZSgpOwpAQCAtMzE3LDYgKzQy
OSwxMiBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgcmV0dXJuIHJhbmdlOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5
LjxXZWJJbnNwZWN0b3IuVGV4dEVkaXRvckNvbW1hbmQ+fSBzdGFjaworICAgICAqIEBwYXJhbSB7
ZnVuY3Rpb24oKT19IGJlZm9yZUNhbGxiYWNrCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihXZWJJ
bnNwZWN0b3IuVGV4dFJhbmdlLCBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKT19IGFmdGVyQ2FsbGJh
Y2sKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVGV4dFJhbmdlfQorICAgICAqLwogICAg
IF9kb1VuZG86IGZ1bmN0aW9uKHN0YWNrLCBiZWZvcmVDYWxsYmFjaywgYWZ0ZXJDYWxsYmFjaykK
ICAgICB7CiAgICAgICAgIHZhciByYW5nZSA9IG51bGw7CkBAIC0zMjcsMTAgKzQ0NSwxMCBAQCBX
ZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlm
IChiZWZvcmVDYWxsYmFjaykKICAgICAgICAgICAgICAgICBiZWZvcmVDYWxsYmFjaygpOwogCi0g
ICAgICAgICAgICByYW5nZSA9IHRoaXMuc2V0VGV4dChjb21tYW5kLnJhbmdlLCBjb21tYW5kLnRl
eHQpOworICAgICAgICAgICAgcmFuZ2UgPSB0aGlzLmVkaXRSYW5nZShjb21tYW5kLm5ld1Jhbmdl
LCBjb21tYW5kLm9yaWdpbmFsVGV4dCk7CiAKICAgICAgICAgICAgIGlmIChhZnRlckNhbGxiYWNr
KQotICAgICAgICAgICAgICAgIGFmdGVyQ2FsbGJhY2soY29tbWFuZC5yYW5nZSwgcmFuZ2UpOwor
ICAgICAgICAgICAgICAgIGFmdGVyQ2FsbGJhY2soY29tbWFuZC5uZXdSYW5nZSwgcmFuZ2UpOwog
CiAgICAgICAgICAgICBpZiAoaSA+IDAgJiYgc3RhY2tbaSAtIDFdLmV4cGxpY2l0KQogICAgICAg
ICAgICAgICAgIHJldHVybiByYW5nZTsKQEAgLTM1Niw0ICs0NzQsNiBAQCBXZWJJbnNwZWN0b3Iu
VGV4dEVkaXRvck1vZGVsLnByb3RvdHlwZSA9IHsKICAgICB9CiB9CiAKK1dlYkluc3BlY3Rvci5U
ZXh0RWRpdG9yTW9kZWwucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3Qu
cHJvdG90eXBlOworCiBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MudGV4dEVkaXRvckluZGVudCA9IFdl
Ykluc3BlY3Rvci5zZXR0aW5ncy5jcmVhdGVTZXR0aW5nKCJ0ZXh0RWRpdG9ySW5kZW50IiwgV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbC5JbmRlbnQuRm91clNwYWNlcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRWaWV3ZXIuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RleHRWaWV3ZXIuanMKaW5kZXggNDA3Yzkx
ZWQzODNlY2Y4ZmQ5OTE0ZDllZjAxMjcxMWEwODZmOWQ0NS4uMjdkNzU4MWNjNTJiNTIxMTU0ZThj
MjE3YTVjNDYwNmVmZjQ0N2RkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9UZXh0Vmlld2VyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvVGV4dFZpZXdlci5qcwpAQCAtMzksNyArMzksNyBAQCBXZWJJbnNwZWN0b3IuVGV4
dFZpZXdlciA9IGZ1bmN0aW9uKHRleHRNb2RlbCwgcGxhdGZvcm0sIHVybCwgZGVsZWdhdGUpCiAg
ICAgdGhpcy5yZWdpc3RlclJlcXVpcmVkQ1NTKCJ0ZXh0Vmlld2VyLmNzcyIpOwogCiAgICAgdGhp
cy5fdGV4dE1vZGVsID0gdGV4dE1vZGVsOwotICAgIHRoaXMuX3RleHRNb2RlbC5jaGFuZ2VMaXN0
ZW5lciA9IHRoaXMuX3RleHRDaGFuZ2VkLmJpbmQodGhpcyk7CisgICAgdGhpcy5fdGV4dE1vZGVs
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbC5FdmVudHMuVGV4
dENoYW5nZWQsIHRoaXMuX3RleHRDaGFuZ2VkLCB0aGlzKTsKICAgICB0aGlzLl90ZXh0TW9kZWwu
cmVzZXRVbmRvU3RhY2soKTsKICAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlOwogCkBAIC0x
NzYsMTMgKzE3NiwxMiBAQCBXZWJJbnNwZWN0b3IuVGV4dFZpZXdlci5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHRoaXMuX3VwZGF0ZVBhbmVsT2Zmc2V0cygpOwogICAgIH0sCiAKLSAgICAvLyBXZWJJ
bnNwZWN0b3IuVGV4dE1vZGVsIGxpc3RlbmVyCi0gICAgX3RleHRDaGFuZ2VkOiBmdW5jdGlvbihv
bGRSYW5nZSwgbmV3UmFuZ2UsIG9sZFRleHQsIG5ld1RleHQpCisgICAgX3RleHRDaGFuZ2VkOiBm
dW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5faW50ZXJuYWxUZXh0Q2hh
bmdlTW9kZSkKICAgICAgICAgICAgIHRoaXMuX3RleHRNb2RlbC5yZXNldFVuZG9TdGFjaygpOwot
ICAgICAgICB0aGlzLl9tYWluUGFuZWwudGV4dENoYW5nZWQob2xkUmFuZ2UsIG5ld1JhbmdlKTsK
LSAgICAgICAgdGhpcy5fZ3V0dGVyUGFuZWwudGV4dENoYW5nZWQob2xkUmFuZ2UsIG5ld1Jhbmdl
KTsKKyAgICAgICAgdGhpcy5fbWFpblBhbmVsLnRleHRDaGFuZ2VkKGV2ZW50LmRhdGEub2xkUmFu
Z2UsIGV2ZW50LmRhdGEubmV3UmFuZ2UpOworICAgICAgICB0aGlzLl9ndXR0ZXJQYW5lbC50ZXh0
Q2hhbmdlZChldmVudC5kYXRhLm9sZFJhbmdlLCBldmVudC5kYXRhLm5ld1JhbmdlKTsKICAgICAg
ICAgdGhpcy5fdXBkYXRlUGFuZWxPZmZzZXRzKCk7CiAgICAgfSwKIApAQCAtMTEyNSw3ICsxMTI0
LDcgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgbmV3UmFuZ2UgPSB0aGlzLl91bmluZGVudExpbmVzKHJhbmdlKTsKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICBpZiAocmFuZ2UuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAg
ICAgbmV3UmFuZ2UgPSB0aGlzLl9zZXRUZXh0KHJhbmdlLCBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Mu
dGV4dEVkaXRvckluZGVudC5nZXQoKSk7CisgICAgICAgICAgICAgICAgbmV3UmFuZ2UgPSB0aGlz
Ll9lZGl0UmFuZ2UocmFuZ2UsIFdlYkluc3BlY3Rvci5zZXR0aW5ncy50ZXh0RWRpdG9ySW5kZW50
LmdldCgpKTsKICAgICAgICAgICAgICAgICBuZXdSYW5nZS5zdGFydENvbHVtbiA9IG5ld1Jhbmdl
LmVuZENvbHVtbjsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG5ld1Jhbmdl
ID0gdGhpcy5faW5kZW50TGluZXMocmFuZ2UpOwpAQCAtMTE1OCw3ICsxMTU3LDcgQEAgV2ViSW5z
cGVjdG9yLlRleHRFZGl0b3JNYWluUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgaW5k
ZW50RW5kTGluZS0tOwogCiAgICAgICAgIGZvciAodmFyIGxpbmVOdW1iZXIgPSByYW5nZS5zdGFy
dExpbmU7IGxpbmVOdW1iZXIgPD0gaW5kZW50RW5kTGluZTsgbGluZU51bWJlcisrKQotICAgICAg
ICAgICAgdGhpcy5fdGV4dE1vZGVsLnNldFRleHQobmV3IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2Uo
bGluZU51bWJlciwgMCwgbGluZU51bWJlciwgMCksIGluZGVudCk7CisgICAgICAgICAgICB0aGlz
Ll90ZXh0TW9kZWwuZWRpdFJhbmdlKG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKGxpbmVOdW1i
ZXIsIDAsIGxpbmVOdW1iZXIsIDApLCBpbmRlbnQpOwogCiAgICAgICAgIHRoaXMuX2xhc3RFZGl0
ZWRSYW5nZSA9IG5ld1JhbmdlOwogCkBAIC0xMTkxLDcgKzExOTAsNyBAQCBXZWJJbnNwZWN0b3Iu
VGV4dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgIHRoaXMuX3RleHRNb2RlbC5zZXRU
ZXh0KG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKGxpbmVOdW1iZXIsIDAsIGxpbmVOdW1iZXIs
IGxpbmVJbmRlbnRMZW5ndGgpLCAiIik7CisgICAgICAgICAgICB0aGlzLl90ZXh0TW9kZWwuZWRp
dFJhbmdlKG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKGxpbmVOdW1iZXIsIDAsIGxpbmVOdW1i
ZXIsIGxpbmVJbmRlbnRMZW5ndGgpLCAiIik7CiAKICAgICAgICAgICAgIGlmIChsaW5lTnVtYmVy
ID09PSByYW5nZS5zdGFydExpbmUpCiAgICAgICAgICAgICAgICAgbmV3UmFuZ2Uuc3RhcnRDb2x1
bW4gPSBNYXRoLm1heCgwLCBuZXdSYW5nZS5zdGFydENvbHVtbiAtIGxpbmVJbmRlbnRMZW5ndGgp
OwpAQCAtMTI0MSwxMSArMTI0MCwxMSBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAvLyB7CiAgICAgICAgICAgICAvLyAgICAgfAog
ICAgICAgICAgICAgLy8gfQotICAgICAgICAgICAgbmV3UmFuZ2UgPSB0aGlzLl9zZXRUZXh0KHJh
bmdlLCBsaW5lQnJlYWsgKyBpbmRlbnQgKyBsaW5lQnJlYWsgKyBjdXJyZW50SW5kZW50KTsKKyAg
ICAgICAgICAgIG5ld1JhbmdlID0gdGhpcy5fZWRpdFJhbmdlKHJhbmdlLCBsaW5lQnJlYWsgKyBp
bmRlbnQgKyBsaW5lQnJlYWsgKyBjdXJyZW50SW5kZW50KTsKICAgICAgICAgICAgIG5ld1Jhbmdl
LmVuZExpbmUtLTsKICAgICAgICAgICAgIG5ld1JhbmdlLmVuZENvbHVtbiArPSB0ZXh0RWRpdG9y
SW5kZW50Lmxlbmd0aDsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBuZXdSYW5nZSA9IHRo
aXMuX3NldFRleHQocmFuZ2UsIGxpbmVCcmVhayArIGluZGVudCk7CisgICAgICAgICAgICBuZXdS
YW5nZSA9IHRoaXMuX2VkaXRSYW5nZShyYW5nZSwgbGluZUJyZWFrICsgaW5kZW50KTsKIAogICAg
ICAgICB0aGlzLl9leGl0VGV4dENoYW5nZU1vZGUocmFuZ2UsIG5ld1JhbmdlKTsKICAgICAgICAg
dGhpcy5lbmRVcGRhdGVzKCk7CkBAIC0xODYyLDcgKzE4NjEsNyBAQCBXZWJJbnNwZWN0b3IuVGV4
dEVkaXRvck1haW5QYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZGVsZXRlIHRoaXMuX2Rp
cnR5TGluZXM7CiAKLSAgICAgICAgdmFyIG5ld1JhbmdlID0gdGhpcy5fc2V0VGV4dChvbGRSYW5n
ZSwgbmV3Q29udGVudCk7CisgICAgICAgIHZhciBuZXdSYW5nZSA9IHRoaXMuX2VkaXRSYW5nZShv
bGRSYW5nZSwgbmV3Q29udGVudCk7CiAKICAgICAgICAgdGhpcy5fcGFpbnRTY2hlZHVsZWRMaW5l
cyh0cnVlKTsKICAgICAgICAgdGhpcy5fcmVzdG9yZVNlbGVjdGlvbihzZWxlY3Rpb24pOwpAQCAt
MTg3OSwxMiArMTg3OCwxMiBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1haW5QYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZW5kRG9tVXBkYXRlcygpOwogICAgIH0sCiAKLSAgICBf
c2V0VGV4dDogZnVuY3Rpb24ocmFuZ2UsIHRleHQpCisgICAgX2VkaXRSYW5nZTogZnVuY3Rpb24o
cmFuZ2UsIHRleHQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fbGFzdEVkaXRlZFJhbmdlICYm
ICghdGV4dCB8fCB0ZXh0LmluZGV4T2YoIlxuIikgIT09IC0xIHx8IHRoaXMuX2xhc3RFZGl0ZWRS
YW5nZS5lbmRMaW5lICE9PSByYW5nZS5zdGFydExpbmUgfHwgdGhpcy5fbGFzdEVkaXRlZFJhbmdl
LmVuZENvbHVtbiAhPT0gcmFuZ2Uuc3RhcnRDb2x1bW4pKQogICAgICAgICAgICAgdGhpcy5fdGV4
dE1vZGVsLm1hcmtVbmRvYWJsZVN0YXRlKCk7CiAKLSAgICAgICAgdmFyIG5ld1JhbmdlID0gdGhp
cy5fdGV4dE1vZGVsLnNldFRleHQocmFuZ2UsIHRleHQpOworICAgICAgICB2YXIgbmV3UmFuZ2Ug
PSB0aGlzLl90ZXh0TW9kZWwuZWRpdFJhbmdlKHJhbmdlLCB0ZXh0KTsKICAgICAgICAgdGhpcy5f
bGFzdEVkaXRlZFJhbmdlID0gbmV3UmFuZ2U7CiAKICAgICAgICAgcmV0dXJuIG5ld1JhbmdlOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDcwZWQ1NmMwM2M2NzQ1NDhhY2VhZDE3YjI3Y2E3NGMzNjBmMTkwNzUuLjU0NzI0OTYy
NjM0NDY2M2JiYWFhNGFmZTc5MmQ3ZjY4ZDk4Mjc1YzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAor
MjAxMi0wMy0zMCAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBlZGl0aW5nIHJlc2V0cyBsaW5lLWVuZGluZyBvZiB0aGUgd2hv
bGUgZmlsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODI3MDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGluc3BlY3Rvci9lZGl0b3IvaGlnaGxpZ2h0ZXItYmFzaWNzLmh0bWw6CisgICAgICAgICogaW5z
cGVjdG9yL2VkaXRvci9oaWdobGlnaHRlci1sb25nLWxpbmUuaHRtbDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZWRpdG9yL2hpZ2hsaWdodGVyLXBhc3RlLWluLWNvbW1lbnQuaHRtbDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvZWRpdG9yL2luZGVudGF0aW9uLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9y
L2VkaXRvci90ZXh0LWVkaXRvci1saW5lLWJyZWFrcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGluc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3ItbGluZS1icmVha3MuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2VkaXRvci90ZXh0LWVkaXRvci1tb2RlbC5odG1sOgor
CiAyMDEyLTAzLTMwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCBHVEsgcmViYXNlbGluZSBhZnRlciByMTEyNTgyIGFuZCByMTEy
MzkxLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9oaWdobGlnaHRl
ci1iYXNpY3MuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvaGlnaGxpZ2h0ZXIt
YmFzaWNzLmh0bWwKaW5kZXggMmJkYWQ1MGYwYjNmODcwYmQ0YjhjZTQ2OTk5MWZiYTVmODBmMTQ2
OC4uYjM0NDcyOGY2Zjk0NTQyNmYxZGFjM2RlMjJlZWVmNjJmZjQ0MmI2NCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9oaWdobGlnaHRlci1iYXNpY3MuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL2hpZ2hsaWdodGVyLWJhc2ljcy5odG1sCkBA
IC0xNCw3ICsxNCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIHNyYyArPSAic29tZSB0ZXh0XG4i
OwogCiAgICAgdmFyIHRleHRNb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVs
KCk7Ci0gICAgdGV4dE1vZGVsLnNldFRleHQobnVsbCwgc3JjKTsKKyAgICB0ZXh0TW9kZWwuc2V0
VGV4dChzcmMpOwogCiAgICAgdmFyIGhpZ2hsaWdodGVyID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0
RWRpdG9ySGlnaGxpZ2h0ZXIodGV4dE1vZGVsLCBmdW5jdGlvbigpIHt9KTsKICAgICBoaWdobGln
aHRlci5taW1lVHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQiOwpAQCAtMzIsNyArMzIsNyBAQCBmdW5j
dGlvbiB0ZXN0KCkKICAgICBkdW1wVGV4dE1vZGVsKCJBZnRlciBoaWdobGlnaHRpbmcgYWxsIGxp
bmVzIik7CiAKICAgICB2YXIgcmFuZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLlRleHRSYW5nZSgzLCAw
LCA2LCAwKTsKLSAgICB2YXIgbmV3UmFuZ2UgPSB0ZXh0TW9kZWwuc2V0VGV4dChyYW5nZSwgc3Jj
KTsKKyAgICB2YXIgbmV3UmFuZ2UgPSB0ZXh0TW9kZWwuZWRpdFJhbmdlKHJhbmdlLCBzcmMpOwog
ICAgIGR1bXBUZXh0TW9kZWwoIkFmdGVyIGNoYW5naW5nIHRleHQgbW9kZWwsIGJ1dCBiZWZvcmUg
dXBkYXRpbmcgaGlnaGxpZ2h0cyIpOwogCiAgICAgaGlnaGxpZ2h0ZXIudXBkYXRlSGlnaGxpZ2h0
KG5ld1JhbmdlLnN0YXJ0TGluZSwgbmV3UmFuZ2UuZW5kTGluZSArIDEpOwpAQCAtNDIsMTIgKzQy
LDEyIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIGR1bXBUZXh0TW9kZWwoIkFmdGVyIGhpZ2hsaWdo
dGluZyB1cCB0byB0aGUgZW5kIik7CiAKICAgICB2YXIgcmFuZ2UgPSBuZXcgV2ViSW5zcGVjdG9y
LlRleHRSYW5nZSgwLCAwLCAwLCB0ZXh0TW9kZWwubGluZUxlbmd0aCgwKSk7Ci0gICAgdmFyIG5l
d1JhbmdlID0gdGV4dE1vZGVsLnNldFRleHQocmFuZ2UsICJmb28gLyogY29tbWVudCAqLyIpOwor
ICAgIHZhciBuZXdSYW5nZSA9IHRleHRNb2RlbC5lZGl0UmFuZ2UocmFuZ2UsICJmb28gLyogY29t
bWVudCAqLyIpOwogICAgIGhpZ2hsaWdodGVyLnVwZGF0ZUhpZ2hsaWdodCgwLCA1KTsKICAgICBk
dW1wVGV4dE1vZGVsKCJBZnRlciBjaGFuZ2luZyB0aGUgZmlyc3QgbGluZSwgYW5kIHVwZGF0aW5n
IHRoZSBoaWdobGlnaHRzIGZvciB0aGUgZmlyc3QgNSBsaW5lcyIpOwogCiAgICAgdmFyIHJhbmdl
ID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0UmFuZ2UoMCwgdGV4dE1vZGVsLmxpbmVMZW5ndGgoMCks
IDAsIHRleHRNb2RlbC5saW5lTGVuZ3RoKDApKTsKLSAgICB2YXIgbmV3UmFuZ2UgPSB0ZXh0TW9k
ZWwuc2V0VGV4dChyYW5nZSwgIiAvKiIpOworICAgIHZhciBuZXdSYW5nZSA9IHRleHRNb2RlbC5l
ZGl0UmFuZ2UocmFuZ2UsICIgLyoiKTsKICAgICBoaWdobGlnaHRlci51cGRhdGVIaWdobGlnaHQo
MCwgMik7CiAgICAgZHVtcFRleHRNb2RlbCgiQWdhaW4gY2hhbmdlIHRoZSBmaXJzdCBsaW5lLCBi
dXQgdXBkYXRlIG9ubHkgZmlyc3QgMiBsaW5lcyAoaW52YWxpZGF0ZSB1cGRhdGUgZm9yIHRoZSBs
aW5lcyBiZWxvdykiKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRv
ci9oaWdobGlnaHRlci1sb25nLWxpbmUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0
b3IvaGlnaGxpZ2h0ZXItbG9uZy1saW5lLmh0bWwKaW5kZXggYjcwMzYzNGFjNGE4MzVhNGRlNjg2
OTI2MDM4OGMyZGUzODk0ZTIzMS4uMDdmM2NhZjRjODk0YWIzYTAwMzRmMDRiODg5ZjJmN2NiNjE0
ZjQ5NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9oaWdobGlnaHRl
ci1sb25nLWxpbmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL2hpZ2hs
aWdodGVyLWxvbmctbGluZS5odG1sCkBAIC0xOCw3ICsxOCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQog
ICAgICAgICBzcmMgKz0gc3JjOwogICAgICAgICBjb21tZW50cyAqPSAyOwogICAgIH0KLSAgICB0
ZXh0TW9kZWwuc2V0VGV4dChudWxsLCBzcmMpOworICAgIHRleHRNb2RlbC5zZXRUZXh0KHNyYyk7
CiAKICAgICBmdW5jdGlvbiBjaGVja0hpZ2hsaWdodHMoKQogICAgIHsKQEAgLTQ3LDcgKzQ3LDcg
QEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgLy8gSW5zZXJ0IGEgY2FyZXQgcmV0dXJuIGluIHRoZSBt
aWRkbGUgb2YgdGhlIGxvbmcgbGluZS4KICAgICB2YXIgaGFsZkxlbmd0aCA9IE1hdGguZmxvb3Io
c3JjLmxlbmd0aCAvIDIpOwogICAgIHZhciByYW5nZSA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJh
bmdlKDAsIGhhbGZMZW5ndGgsIDAsIGhhbGZMZW5ndGgpOwotICAgIHZhciBuZXdSYW5nZSA9IHRl
eHRNb2RlbC5zZXRUZXh0KHJhbmdlLCAiXG4iKTsKKyAgICB2YXIgbmV3UmFuZ2UgPSB0ZXh0TW9k
ZWwuZWRpdFJhbmdlKHJhbmdlLCAiXG4iKTsKICAgICBoaWdobGlnaHRlci51cGRhdGVIaWdobGln
aHQobmV3UmFuZ2Uuc3RhcnRMaW5lLCBuZXdSYW5nZS5lbmRMaW5lICsgMSk7CiAgICAgY2hlY2tI
aWdobGlnaHRzKCk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3Iv
aGlnaGxpZ2h0ZXItcGFzdGUtaW4tY29tbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2VkaXRvci9oaWdobGlnaHRlci1wYXN0ZS1pbi1jb21tZW50Lmh0bWwKaW5kZXggMmFhNzhlMGRl
YTI5ZWYxMWYyYWU1MTgwYWZhMjQzNGM1ZTBhNzMwNS4uYTI3NmNjNzgyZTg2NWI4YmE1ZDY3NGFi
ZTc0YzY0YzFhMzE5NGQ3MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRv
ci9oaWdobGlnaHRlci1wYXN0ZS1pbi1jb21tZW50Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2VkaXRvci9oaWdobGlnaHRlci1wYXN0ZS1pbi1jb21tZW50Lmh0bWwKQEAgLTE4LDEz
ICsxOCwxMyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICB9CiAKICAgICB2YXIgc3JjID0gIi8qXG5c
bjFcbjJcbjNcbjRcbjVcblxuKi8iOwotICAgIHRleHRNb2RlbC5zZXRUZXh0KG51bGwsIHNyYyk7
CisgICAgdGV4dE1vZGVsLnNldFRleHQoc3JjKTsKIAogICAgIGhpZ2hsaWdodGVyLmhpZ2hsaWdo
dCh0ZXh0TW9kZWwubGluZXNDb3VudCk7CiAgICAgZHVtcFRleHRNb2RlbCgiQWZ0ZXIgaGlnaGxp
Z2h0aW5nIGFsbCBsaW5lcyIpOwogCiAgICAgdmFyIHJhbmdlID0gbmV3IFdlYkluc3BlY3Rvci5U
ZXh0UmFuZ2UoNywgMCwgNywgMCk7Ci0gICAgdmFyIG5ld1JhbmdlID0gdGV4dE1vZGVsLnNldFRl
eHQocmFuZ2UsICIxXG4yXG4zXG40XG41XG4iKTsKKyAgICB2YXIgbmV3UmFuZ2UgPSB0ZXh0TW9k
ZWwuZWRpdFJhbmdlKHJhbmdlLCAiMVxuMlxuM1xuNFxuNVxuIik7CiAgICAgaGlnaGxpZ2h0ZXIu
dXBkYXRlSGlnaGxpZ2h0KDcsIHRleHRNb2RlbC5saW5lc0NvdW50KTsKICAgICBkdW1wVGV4dE1v
ZGVsKCJBZnRlciB1cGRhdGUgaGlnaGxpZ2h0cyIpOwogCkBAIC0zMyw3ICszMyw3IEBAIGZ1bmN0
aW9uIHRlc3QoKQogCiAgICAgLy8gVGhlcmUgd2FzIGFuIGFjdHVhbCBidWcgd2l0aCB3cm9uZ2x5
IHJlc3RvcmVkIHBvc2l0aW9uIGFmdGVyIHVwZGF0aW5nIHRoZSBoaWdobGlnaHRzLgogICAgIHZh
ciByYW5nZSA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKDEyLCAwLCAxMiwgMCk7Ci0gICAg
dmFyIG5ld1JhbmdlID0gdGV4dE1vZGVsLnNldFRleHQocmFuZ2UsICJcbiIpOworICAgIHZhciBu
ZXdSYW5nZSA9IHRleHRNb2RlbC5lZGl0UmFuZ2UocmFuZ2UsICJcbiIpOwogICAgIGhpZ2hsaWdo
dGVyLnVwZGF0ZUhpZ2hsaWdodCgxMiwgdGV4dE1vZGVsLmxpbmVzQ291bnQpOwogICAgIGhpZ2hs
aWdodGVyLmhpZ2hsaWdodCh0ZXh0TW9kZWwubGluZXNDb3VudCk7CiAgICAgZHVtcFRleHRNb2Rl
bCgiQWZ0ZXIgaW5zZXJ0aW5nIGEgbmV3IGxpbmUiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9lZGl0b3IvaW5kZW50YXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9lZGl0b3IvaW5kZW50YXRpb24uaHRtbAppbmRleCAyYzQ0OTUzMWUxNDBmNDc5YmNiMmQzNzg3
ODA4YjhiNjkzYTg1ZTk2Li40OThiYTg0MTM2YWRjNzBlZjNiYmY0ZWU0OTljYzBhM2IyMDRjNzdh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL2luZGVudGF0aW9uLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci9pbmRlbnRhdGlvbi5odG1sCkBA
IC0xMCw3ICsxMCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAiICovIjsKIAogICAgIHZh
ciBtb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsKCk7Ci0gICAgbW9kZWwu
c2V0VGV4dChudWxsLCBzcmMpOworICAgIG1vZGVsLnNldFRleHQoc3JjKTsKICAgICBmdW5jdGlv
biBub29wKCkge30KICAgICB2YXIgdGV4dEVkaXRvck1haW5QYW5lbCA9IG5ldyBXZWJJbnNwZWN0
b3IuVGV4dEVkaXRvck1haW5QYW5lbChtb2RlbCwgJycsIG5vb3AsIG5vb3AsIG5vb3AsIG5vb3Ap
OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9y
LWxpbmUtYnJlYWtzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3Iv
dGV4dC1lZGl0b3ItbGluZS1icmVha3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0Y2RhMjM5
YjhhNGI0OWQ2NDY0YmY3OTI1MmZmMTk0MjEzZmUxY2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLWxpbmUtYnJlYWtzLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDE1IEBACitUaGlzIHRlc3QgY2hlY2tzIHRoYXQgbGluZSBlbmRpbmdz
IGFyZSBpbmZlcnJlZCBmcm9tIHRoZSBpbml0aWFsIHRleHQgY29udGVudCwgbm90IGluY3JlbWVu
dGFsIGVkaXRpbmcuCisKKworUnVubmluZzogdGVzdENSSW5pdGlhbAorMSUwQTIlMEEzJTBBCisK
K1J1bm5pbmc6IHRlc3RDUkxGSW5pdGlhbAorMSUwRCUwQTIlMEQlMEEzJTBEJTBBCisKK1J1bm5p
bmc6IHRlc3RDUkVkaXQKKzElMEFmb28lMEFiYXIyJTBBMyUwQQorCitSdW5uaW5nOiB0ZXN0Q1JM
RkVkaXQKKzElMEQlMEFmb28lMEQlMEFiYXIyJTBEJTBBMyUwRCUwQQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLWxpbmUtYnJlYWtzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLWxpbmUtYnJlYWtzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjY3NTFhNmYwNDI1ZGY1ODZmN2Y5ZThmNjdiOTFkZjNjYjQyZjY3Nwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0
b3ItbGluZS1icmVha3MuaHRtbApAQCAtMCwwICsxLDU0IEBACis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luc3BlY3Rvci10ZXN0LmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIEluc3BlY3RvclRl
c3QucnVuVGVzdFN1aXRlKFsKKyAgICAgICAgZnVuY3Rpb24gdGVzdENSSW5pdGlhbChuZXh0KQor
ICAgICAgICB7CisgICAgICAgICAgICB2YXIgdGV4dE1vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5U
ZXh0RWRpdG9yTW9kZWwoKTsKKyAgICAgICAgICAgIHRleHRNb2RlbC5zZXRUZXh0KCIxXG4yXG4z
XG4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGVuY29kZVVSSSh0ZXh0
TW9kZWwudGV4dCkpOworICAgICAgICAgICAgbmV4dCgpOworICAgICAgICB9LAorCisgICAgICAg
IGZ1bmN0aW9uIHRlc3RDUkxGSW5pdGlhbChuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICB2
YXIgdGV4dE1vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yTW9kZWwoKTsKKyAgICAg
ICAgICAgIHRleHRNb2RlbC5zZXRUZXh0KCIxXHJcbjJcclxuM1xyXG4iKTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGVuY29kZVVSSSh0ZXh0TW9kZWwudGV4dCkpOworICAg
ICAgICAgICAgbmV4dCgpOworICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RDUkVk
aXQobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIHRleHRNb2RlbCA9IG5ldyBXZWJJ
bnNwZWN0b3IuVGV4dEVkaXRvck1vZGVsKCk7CisgICAgICAgICAgICB0ZXh0TW9kZWwuc2V0VGV4
dCgiMVxuMlxuM1xuIik7CisgICAgICAgICAgICB0ZXh0TW9kZWwuZWRpdFJhbmdlKG5ldyBXZWJJ
bnNwZWN0b3IuVGV4dFJhbmdlKDEsIDAsIDEsIDApLCAiZm9vXHJcbmJhciIpOworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoZW5jb2RlVVJJKHRleHRNb2RlbC50ZXh0KSk7Cisg
ICAgICAgICAgICBuZXh0KCk7CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdENS
TEZFZGl0KG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciB0ZXh0TW9kZWwgPSBuZXcg
V2ViSW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbCgpOworICAgICAgICAgICAgdGV4dE1vZGVsLnNl
dFRleHQoIjFcclxuMlxyXG4zXHJcbiIpOworICAgICAgICAgICAgdGV4dE1vZGVsLmVkaXRSYW5n
ZShuZXcgV2ViSW5zcGVjdG9yLlRleHRSYW5nZSgxLCAwLCAxLCAwKSwgImZvb1xyXG5iYXIiKTsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KGVuY29kZVVSSSh0ZXh0TW9kZWwu
dGV4dCkpOworICAgICAgICAgICAgbmV4dCgpOworICAgICAgICB9CisgICAgXSk7Cit9CisKKzwv
c2NyaXB0PgorPC9oZWFkPgorCis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD4KK1RoaXMg
dGVzdCBjaGVja3MgdGhhdCBsaW5lIGVuZGluZ3MgYXJlIGluZmVycmVkIGZyb20gdGhlIGluaXRp
YWwgdGV4dCBjb250ZW50LCBub3QgaW5jcmVtZW50YWwgZWRpdGluZy4KKzwvcD4KKworPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci90ZXh0
LWVkaXRvci1tb2RlbC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2VkaXRvci90ZXh0LWVk
aXRvci1tb2RlbC5odG1sCmluZGV4IDM0ZWNlOTA0MTk5ODY4ODk2NTExNmVkMzViZTI1ZjdhNGM4
MWM5NDQuLmY2NGNhODdmMzczYzM5ODY3NDU5MWQwYmFkYTM1MGQwYjdmZTIwOGEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9lZGl0b3IvdGV4dC1lZGl0b3ItbW9kZWwuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZWRpdG9yL3RleHQtZWRpdG9yLW1vZGVsLmh0bWwK
QEAgLTgsNyArOCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIGZ1bmN0aW9uIGNyZWF0ZUFuZER1
bXBUZXh0TW9kZWwodGV4dCkKICAgICB7CiAgICAgICAgIHZhciB0ZXh0TW9kZWwgPSBuZXcgV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3JNb2RlbCgpOwotICAgICAgICB0ZXh0TW9kZWwuc2V0VGV4dChu
dWxsLCB0ZXh0KTsKKyAgICAgICAgdGV4dE1vZGVsLnNldFRleHQodGV4dCk7CiAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCJMaW5lczoiICsgdGV4dE1vZGVsLmxpbmVzQ291bnQgKyAi
LCBsZW5ndGg6IiArIHRleHRNb2RlbC50ZXh0Lmxlbmd0aCArICIsIGlucHV0IGVxdWFscyBvdXRw
dXQ6IiArICh0ZXh0TW9kZWwudGV4dCA9PT0gdGV4dCkpOwogICAgIH0KIAo=
</data>
<flag name="review"
          id="139087"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>