removed editarea, amy, ace; included zencoding support for codemirror

This commit is contained in:
mdipierro
2012-09-10 10:59:28 -05:00
parent 87d2b22446
commit addb7dfd3a
185 changed files with 343 additions and 20399 deletions
+1 -1
View File
@@ -1 +1 @@
Version 2.0.8 (2012-09-10 09:56:32) stable
Version 2.0.8 (2012-09-10 10:59:24) stable
+8
View File
@@ -64,6 +64,7 @@
'Error ticket': 'Error ticket',
'Errors': 'Errors',
'Exception instance attributes': 'Exception instance attributes',
'Expand Abbreviation': 'Expand Abbreviation',
'exposes': 'exposes',
'exposes:': 'exposes:',
'extends': 'extends',
@@ -76,6 +77,7 @@
'Get from URL:': 'Get from URL:',
'Git Pull': 'Git Pull',
'Git Push': 'Git Push',
'Go to Matching Pair': 'Go to Matching Pair',
'go!': 'go!',
'Help': 'Help',
'Hide/Show Translated strings': 'Hide/Show Translated strings',
@@ -85,6 +87,7 @@
'Installed applications': 'Installed applications',
'invalid password.': 'invalid password.',
'Key bindings': 'Key bindings',
'Key bindings for ZenCoding Plugin': 'Key bindings for ZenCoding Plugin',
'Language files (static strings) updated': 'Language files (static strings) updated',
'languages': 'languages',
'Languages': 'Languages',
@@ -94,6 +97,8 @@
'Login': 'Login',
'Login to the Administrative Interface': 'Login to the Administrative Interface',
'Logout': 'Logout',
'Match Pair': 'Match Pair',
'Merge Lines': 'Merge Lines',
'models': 'models',
'Models': 'Models',
'Modules': 'Modules',
@@ -101,6 +106,7 @@
'New Application Wizard': 'New Application Wizard',
'New application wizard': 'New application wizard',
'New simple application': 'New simple application',
'Next Edit Point': 'Next Edit Point',
'online designer': 'online designer',
'Original/Translation': 'Original/Translation',
'Overwrite installed app': 'Overwrite installed app',
@@ -110,6 +116,7 @@
'plugins': 'plugins',
'Plural-Forms:': 'Plural-Forms:',
'Powered by': 'Powered by',
'Previous Edit Point': 'Previous Edit Point',
'Private files': 'Private files',
'private files': 'private files',
'Reload routes': 'Reload routes',
@@ -173,4 +180,5 @@
'Web Framework': 'Web Framework',
'web2py is up to date': 'web2py is up to date',
'web2py Recent Tweets': 'web2py Recent Tweets',
'Wrap with Abbreviation': 'Wrap with Abbreviation',
}
+2 -1
View File
@@ -8,8 +8,9 @@ WEB2PY_VERSION_URL = WEB2PY_URL+'/examples/default/version'
# the user-interface feature that allows you to edit files in your web
# browser.
## Default editor
## Default editor (to change editor you need web2py.admin.editors.zip)
TEXT_EDITOR = 'codemirror' or 'ace' or 'edit_area' or 'amy'
## Editor Color scheme (only for ace)
TEXT_EDITOR_THEME = (
"chrome", "clouds", "clouds_midnight", "cobalt", "crimson_editor", "dawn",
-116
View File
@@ -1,116 +0,0 @@
2011.08.02, Version 0.2.0
* Split view (Julian Viereck)
- split editor area horizontally or vertivally to show two files at the same
time
* Code Folding (Julian Viereck)
- Unstructured code folding
- Will be the basis for language aware folding
* Mode behaviours (Chris Spencer)
- Adds mode specific hooks which allow transformations of entered text
- Autoclosing of braces, paranthesis and quotation marks in C style modes
- Autoclosing of angular brackets in XML style modes
* New language modes
- Clojure (Carin Meier)
- C# (Rob Conery)
- Groovy (Ben Tilford)
- Scala (Ben Tilford)
- JSON
- OCaml (Sergi Mansilla)
- Perl (Panagiotis Astithas)
- SCSS/SASS (Andreas Madsen)
- SVG
- Textile (Kelley van Evert)
- SCAD (Jacob Hansson)
* Live syntax checks
- Lint for Css using CSS Lint <http://csslint.net/>
- CoffeeScript
* New Themes
- Crimson Editor (iebuggy)
- Merbivore (Michael Schwartz)
- Merbivore soft (Michael Schwartz)
- Solarized dark/light <http://ethanschoonover.com/solarized> (David Alan
Hjelle)
- Vibrant Ink (Michael Schwartz)
* Small Features/Enhancements
- Lots of render performance optimizations (Harutyun Amirjanyan)
- Improved Ruby highlighting (Chris Wanstrath, Trent Ogren)
- Improved PHP highlighting (Thomas Hruska)
- Improved CSS highlighting (Sean Kellogg)
- Clicks which cause the editor to be focused don't reset the selection
- Make padding text layer specific so that print margin and active line
highlight are not affected (Irakli Gozalishvili)
- Added setFontSize method
- Improved vi keybindings (Trent Ogren)
- When unfocused make cursor transparent instead of removing it (Harutyun
Amirjanyan)
- Support for matching groups in tokenizer with arrays of tokens (Chris
Spencer)
* Bug fixes
- Add support for the new OSX scroll bars
- Properly highlight JavaScript regexp literals
- Proper handling of unicode characters in JavaScript identifiers
- Fix remove lines command on last line (Harutyun Amirjanyan)
- Fix scroll wheel sluggishness in Safari
- Make keyboard infrastructure route keys like []^$ the right way (Julian
Viereck)
2011.02.14, Version 0.1.6
* Floating Anchors
- An Anchor is a floating pointer in the document.
- Whenever text is inserted or deleted before the cursor, the position of
the cursor is updated
- Usesd for the cursor and selection
- Basis for bookmarks, multiple cursors and snippets in the future
* Extensive support for Cocoa style keybindings on the Mac <https://github.com/ajaxorg/ace/issues/closed#issue/116/comment/767803>
* New commands:
- center selection in viewport
- remove to end/start of line
- split line
- transpose letters
* Refator markers
- Custom code can be used to render markers
- Markers can be in front or behind the text
- Markers are now stored in the session (was in the renderer)
* Lots of IE8 fixes including copy, cut and selections
* Unit tests can also be run in the browser
<https://github.com/ajaxorg/ace/blob/master/lib/ace/test/tests.html>
* Soft wrap can adapt to the width of the editor (Mike Ratcliffe, Joe Cheng)
* Add minimal node server server.js to run the Ace demo in Chrome
* The top level editor.html demo has been renamed to index.html
* Bug fixes
- Fixed gotoLine to consider wrapped lines when calculating where to scroll to (James Allen)
- Fixed isues when the editor was scrolled in the web page (Eric Allam)
- Highlighting of Python string literals
- Syntax rule for PHP comments
2011.02.08, Version 0.1.5
* Add Coffeescript Mode (Satoshi Murakami)
* Fix word wrap bug (Julian Viereck)
* Fix packaged version of the Eclipse mode
* Loading of workers is more robust
* Fix "click selection"
* Allow tokizing empty lines (Daniel Krech)
* Make PageUp/Down behavior more consistent with native OS (Joe Cheng)
2011.02.04, Version 0.1.4
* Add C/C++ mode contributed by Gastón Kleiman
* Fix exception in key input
2011.02.04, Version 0.1.3
* Let the packaged version play nice with requireJS
* Add Ruby mode contributed by Shlomo Zalman Heigh
* Add Java mode contributed by Tom Tasche
* Fix annotation bug
* Changing a document added a new empty line at the end
-476
View File
@@ -1,476 +0,0 @@
Licensed under the tri-license MPL/LGPL/GPL.
MOZILLA PUBLIC LICENSE
Version 1.1
---------------
1. Definitions.
1.0.1. "Commercial Use" means distribution or otherwise making the
Covered Code available to a third party.
1.1. "Contributor" means each entity that creates or contributes to
the creation of Modifications.
1.2. "Contributor Version" means the combination of the Original
Code, prior Modifications used by a Contributor, and the Modifications
made by that particular Contributor.
1.3. "Covered Code" means the Original Code or Modifications or the
combination of the Original Code and Modifications, in each case
including portions thereof.
1.4. "Electronic Distribution Mechanism" means a mechanism generally
accepted in the software development community for the electronic
transfer of data.
1.5. "Executable" means Covered Code in any form other than Source
Code.
1.6. "Initial Developer" means the individual or entity identified
as the Initial Developer in the Source Code notice required by Exhibit
A.
1.7. "Larger Work" means a work which combines Covered Code or
portions thereof with code not governed by the terms of this License.
1.8. "License" means this document.
1.8.1. "Licensable" means having the right to grant, to the maximum
extent possible, whether at the time of the initial grant or
subsequently acquired, any and all of the rights conveyed herein.
1.9. "Modifications" means any addition to or deletion from the
substance or structure of either the Original Code or any previous
Modifications. When Covered Code is released as a series of files, a
Modification is:
A. Any addition to or deletion from the contents of a file
containing Original Code or previous Modifications.
B. Any new file that contains any part of the Original Code or
previous Modifications.
1.10. "Original Code" means Source Code of computer software code
which is described in the Source Code notice required by Exhibit A as
Original Code, and which, at the time of its release under this
License is not already Covered Code governed by this License.
1.10.1. "Patent Claims" means any patent claim(s), now owned or
hereafter acquired, including without limitation, method, process,
and apparatus claims, in any patent Licensable by grantor.
1.11. "Source Code" means the preferred form of the Covered Code for
making modifications to it, including all modules it contains, plus
any associated interface definition files, scripts used to control
compilation and installation of an Executable, or source code
differential comparisons against either the Original Code or another
well known, available Covered Code of the Contributor's choice. The
Source Code can be in a compressed or archival form, provided the
appropriate decompression or de-archiving software is widely available
for no charge.
1.12. "You" (or "Your") means an individual or a legal entity
exercising rights under, and complying with all of the terms of, this
License or a future version of this License issued under Section 6.1.
For legal entities, "You" includes any entity which controls, is
controlled by, or is under common control with You. For purposes of
this definition, "control" means (a) the power, direct or indirect,
to cause the direction or management of such entity, whether by
contract or otherwise, or (b) ownership of more than fifty percent
(50%) of the outstanding shares or beneficial ownership of such
entity.
2. Source Code License.
2.1. The Initial Developer Grant.
The Initial Developer hereby grants You a world-wide, royalty-free,
non-exclusive license, subject to third party intellectual property
claims:
(a) under intellectual property rights (other than patent or
trademark) Licensable by Initial Developer to use, reproduce,
modify, display, perform, sublicense and distribute the Original
Code (or portions thereof) with or without Modifications, and/or
as part of a Larger Work; and
(b) under Patents Claims infringed by the making, using or
selling of Original Code, to make, have made, use, practice,
sell, and offer for sale, and/or otherwise dispose of the
Original Code (or portions thereof).
(c) the licenses granted in this Section 2.1(a) and (b) are
effective on the date Initial Developer first distributes
Original Code under the terms of this License.
(d) Notwithstanding Section 2.1(b) above, no patent license is
granted: 1) for code that You delete from the Original Code; 2)
separate from the Original Code; or 3) for infringements caused
by: i) the modification of the Original Code or ii) the
combination of the Original Code with other software or devices.
2.2. Contributor Grant.
Subject to third party intellectual property claims, each Contributor
hereby grants You a world-wide, royalty-free, non-exclusive license
(a) under intellectual property rights (other than patent or
trademark) Licensable by Contributor, to use, reproduce, modify,
display, perform, sublicense and distribute the Modifications
created by such Contributor (or portions thereof) either on an
unmodified basis, with other Modifications, as Covered Code
and/or as part of a Larger Work; and
(b) under Patent Claims infringed by the making, using, or
selling of Modifications made by that Contributor either alone
and/or in combination with its Contributor Version (or portions
of such combination), to make, use, sell, offer for sale, have
made, and/or otherwise dispose of: 1) Modifications made by that
Contributor (or portions thereof); and 2) the combination of
Modifications made by that Contributor with its Contributor
Version (or portions of such combination).
(c) the licenses granted in Sections 2.2(a) and 2.2(b) are
effective on the date Contributor first makes Commercial Use of
the Covered Code.
(d) Notwithstanding Section 2.2(b) above, no patent license is
granted: 1) for any code that Contributor has deleted from the
Contributor Version; 2) separate from the Contributor Version;
3) for infringements caused by: i) third party modifications of
Contributor Version or ii) the combination of Modifications made
by that Contributor with other software (except as part of the
Contributor Version) or other devices; or 4) under Patent Claims
infringed by Covered Code in the absence of Modifications made by
that Contributor.
3. Distribution Obligations.
3.1. Application of License.
The Modifications which You create or to which You contribute are
governed by the terms of this License, including without limitation
Section 2.2. The Source Code version of Covered Code may be
distributed only under the terms of this License or a future version
of this License released under Section 6.1, and You must include a
copy of this License with every copy of the Source Code You
distribute. You may not offer or impose any terms on any Source Code
version that alters or restricts the applicable version of this
License or the recipients' rights hereunder. However, You may include
an additional document offering the additional rights described in
Section 3.5.
3.2. Availability of Source Code.
Any Modification which You create or to which You contribute must be
made available in Source Code form under the terms of this License
either on the same media as an Executable version or via an accepted
Electronic Distribution Mechanism to anyone to whom you made an
Executable version available; and if made available via Electronic
Distribution Mechanism, must remain available for at least twelve (12)
months after the date it initially became available, or at least six
(6) months after a subsequent version of that particular Modification
has been made available to such recipients. You are responsible for
ensuring that the Source Code version remains available even if the
Electronic Distribution Mechanism is maintained by a third party.
3.3. Description of Modifications.
You must cause all Covered Code to which You contribute to contain a
file documenting the changes You made to create that Covered Code and
the date of any change. You must include a prominent statement that
the Modification is derived, directly or indirectly, from Original
Code provided by the Initial Developer and including the name of the
Initial Developer in (a) the Source Code, and (b) in any notice in an
Executable version or related documentation in which You describe the
origin or ownership of the Covered Code.
3.4. Intellectual Property Matters
(a) Third Party Claims.
If Contributor has knowledge that a license under a third party's
intellectual property rights is required to exercise the rights
granted by such Contributor under Sections 2.1 or 2.2,
Contributor must include a text file with the Source Code
distribution titled "LEGAL" which describes the claim and the
party making the claim in sufficient detail that a recipient will
know whom to contact. If Contributor obtains such knowledge after
the Modification is made available as described in Section 3.2,
Contributor shall promptly modify the LEGAL file in all copies
Contributor makes available thereafter and shall take other steps
(such as notifying appropriate mailing lists or newsgroups)
reasonably calculated to inform those who received the Covered
Code that new knowledge has been obtained.
(b) Contributor APIs.
If Contributor's Modifications include an application programming
interface and Contributor has knowledge of patent licenses which
are reasonably necessary to implement that API, Contributor must
also include this information in the LEGAL file.
(c) Representations.
Contributor represents that, except as disclosed pursuant to
Section 3.4(a) above, Contributor believes that Contributor's
Modifications are Contributor's original creation(s) and/or
Contributor has sufficient rights to grant the rights conveyed by
this License.
3.5. Required Notices.
You must duplicate the notice in Exhibit A in each file of the Source
Code. If it is not possible to put such notice in a particular Source
Code file due to its structure, then You must include such notice in a
location (such as a relevant directory) where a user would be likely
to look for such a notice. If You created one or more Modification(s)
You may add your name as a Contributor to the notice described in
Exhibit A. You must also duplicate this License in any documentation
for the Source Code where You describe recipients' rights or ownership
rights relating to Covered Code. You may choose to offer, and to
charge a fee for, warranty, support, indemnity or liability
obligations to one or more recipients of Covered Code. However, You
may do so only on Your own behalf, and not on behalf of the Initial
Developer or any Contributor. You must make it absolutely clear than
any such warranty, support, indemnity or liability obligation is
offered by You alone, and You hereby agree to indemnify the Initial
Developer and every Contributor for any liability incurred by the
Initial Developer or such Contributor as a result of warranty,
support, indemnity or liability terms You offer.
3.6. Distribution of Executable Versions.
You may distribute Covered Code in Executable form only if the
requirements of Section 3.1-3.5 have been met for that Covered Code,
and if You include a notice stating that the Source Code version of
the Covered Code is available under the terms of this License,
including a description of how and where You have fulfilled the
obligations of Section 3.2. The notice must be conspicuously included
in any notice in an Executable version, related documentation or
collateral in which You describe recipients' rights relating to the
Covered Code. You may distribute the Executable version of Covered
Code or ownership rights under a license of Your choice, which may
contain terms different from this License, provided that You are in
compliance with the terms of this License and that the license for the
Executable version does not attempt to limit or alter the recipient's
rights in the Source Code version from the rights set forth in this
License. If You distribute the Executable version under a different
license You must make it absolutely clear that any terms which differ
from this License are offered by You alone, not by the Initial
Developer or any Contributor. You hereby agree to indemnify the
Initial Developer and every Contributor for any liability incurred by
the Initial Developer or such Contributor as a result of any such
terms You offer.
3.7. Larger Works.
You may create a Larger Work by combining Covered Code with other code
not governed by the terms of this License and distribute the Larger
Work as a single product. In such a case, You must make sure the
requirements of this License are fulfilled for the Covered Code.
4. Inability to Comply Due to Statute or Regulation.
If it is impossible for You to comply with any of the terms of this
License with respect to some or all of the Covered Code due to
statute, judicial order, or regulation then You must: (a) comply with
the terms of this License to the maximum extent possible; and (b)
describe the limitations and the code they affect. Such description
must be included in the LEGAL file described in Section 3.4 and must
be included with all distributions of the Source Code. Except to the
extent prohibited by statute or regulation, such description must be
sufficiently detailed for a recipient of ordinary skill to be able to
understand it.
5. Application of this License.
This License applies to code to which the Initial Developer has
attached the notice in Exhibit A and to related Covered Code.
6. Versions of the License.
6.1. New Versions.
Netscape Communications Corporation ("Netscape") may publish revised
and/or new versions of the License from time to time. Each version
will be given a distinguishing version number.
6.2. Effect of New Versions.
Once Covered Code has been published under a particular version of the
License, You may always continue to use it under the terms of that
version. You may also choose to use such Covered Code under the terms
of any subsequent version of the License published by Netscape. No one
other than Netscape has the right to modify the terms applicable to
Covered Code created under this License.
6.3. Derivative Works.
If You create or use a modified version of this License (which you may
only do in order to apply it to code which is not already Covered Code
governed by this License), You must (a) rename Your license so that
the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
"MPL", "NPL" or any confusingly similar phrase do not appear in your
license (except to note that your license differs from this License)
and (b) otherwise make it clear that Your version of the license
contains terms which differ from the Mozilla Public License and
Netscape Public License. (Filling in the name of the Initial
Developer, Original Code or Contributor in the notice described in
Exhibit A shall not of themselves be deemed to be modifications of
this License.)
7. DISCLAIMER OF WARRANTY.
COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
8. TERMINATION.
8.1. This License and the rights granted hereunder will terminate
automatically if You fail to comply with terms herein and fail to cure
such breach within 30 days of becoming aware of the breach. All
sublicenses to the Covered Code which are properly granted shall
survive any termination of this License. Provisions which, by their
nature, must remain in effect beyond the termination of this License
shall survive.
8.2. If You initiate litigation by asserting a patent infringement
claim (excluding declatory judgment actions) against Initial Developer
or a Contributor (the Initial Developer or Contributor against whom
You file such action is referred to as "Participant") alleging that:
(a) such Participant's Contributor Version directly or indirectly
infringes any patent, then any and all rights granted by such
Participant to You under Sections 2.1 and/or 2.2 of this License
shall, upon 60 days notice from Participant terminate prospectively,
unless if within 60 days after receipt of notice You either: (i)
agree in writing to pay Participant a mutually agreeable reasonable
royalty for Your past and future use of Modifications made by such
Participant, or (ii) withdraw Your litigation claim with respect to
the Contributor Version against such Participant. If within 60 days
of notice, a reasonable royalty and payment arrangement are not
mutually agreed upon in writing by the parties or the litigation claim
is not withdrawn, the rights granted by Participant to You under
Sections 2.1 and/or 2.2 automatically terminate at the expiration of
the 60 day notice period specified above.
(b) any software, hardware, or device, other than such Participant's
Contributor Version, directly or indirectly infringes any patent, then
any rights granted to You by such Participant under Sections 2.1(b)
and 2.2(b) are revoked effective as of the date You first made, used,
sold, distributed, or had made, Modifications made by that
Participant.
8.3. If You assert a patent infringement claim against Participant
alleging that such Participant's Contributor Version directly or
indirectly infringes any patent where such claim is resolved (such as
by license or settlement) prior to the initiation of patent
infringement litigation, then the reasonable value of the licenses
granted by such Participant under Sections 2.1 or 2.2 shall be taken
into account in determining the amount or value of any payment or
license.
8.4. In the event of termination under Sections 8.1 or 8.2 above,
all end user license agreements (excluding distributors and resellers)
which have been validly granted by You or any distributor hereunder
prior to termination shall survive termination.
9. LIMITATION OF LIABILITY.
UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
10. U.S. GOVERNMENT END USERS.
The Covered Code is a "commercial item," as that term is defined in
48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
software" and "commercial computer software documentation," as such
terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
all U.S. Government End Users acquire Covered Code with only those
rights set forth herein.
11. MISCELLANEOUS.
This License represents the complete agreement concerning subject
matter hereof. If any provision of this License is held to be
unenforceable, such provision shall be reformed only to the extent
necessary to make it enforceable. This License shall be governed by
California law provisions (except to the extent applicable law, if
any, provides otherwise), excluding its conflict-of-law provisions.
With respect to disputes in which at least one party is a citizen of,
or an entity chartered or registered to do business in the United
States of America, any litigation relating to this License shall be
subject to the jurisdiction of the Federal Courts of the Northern
District of California, with venue lying in Santa Clara County,
California, with the losing party responsible for costs, including
without limitation, court costs and reasonable attorneys' fees and
expenses. The application of the United Nations Convention on
Contracts for the International Sale of Goods is expressly excluded.
Any law or regulation which provides that the language of a contract
shall be construed against the drafter shall not apply to this
License.
12. RESPONSIBILITY FOR CLAIMS.
As between Initial Developer and the Contributors, each party is
responsible for claims and damages arising, directly or indirectly,
out of its utilization of rights under this License and You agree to
work with Initial Developer and Contributors to distribute such
responsibility on an equitable basis. Nothing herein is intended or
shall be deemed to constitute any admission of liability.
13. MULTIPLE-LICENSED CODE.
Initial Developer may designate portions of the Covered Code as
"Multiple-Licensed". "Multiple-Licensed" means that the Initial
Developer permits you to utilize portions of the Covered Code under
Your choice of the NPL or the alternative licenses, if any, specified
by the Initial Developer in the file described in Exhibit A.
EXHIBIT A -Mozilla Public License.
``The contents of this file are subject to the Mozilla Public License
Version 1.1 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
License for the specific language governing rights and limitations
under the License.
The Original Code is ______________________________________.
The Initial Developer of the Original Code is ________________________.
Portions created by ______________________ are Copyright (C) ______
_______________________. All Rights Reserved.
Contributor(s): ______________________________________.
Alternatively, the contents of this file may be used under the terms
of the _____ license (the "[___] License"), in which case the
provisions of [______] License are applicable instead of those
above. If you wish to allow use of your version of this file only
under the terms of the [____] License and not to allow others to use
your version of this file under the MPL, indicate your decision by
deleting the provisions above and replace them with the notice and
other provisions required by the [___] License. If you do not delete
the provisions above, a recipient may use your version of this file
under either the MPL or the [___] License."
[NOTE: The text of this Exhibit A may differ slightly from the text of
the notices in the Source Code files of the Original Code. You should
use the text of this Exhibit A rather than the text found in the
Original Code Source Code for Your Modifications.]
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
-199
View File
@@ -1,199 +0,0 @@
Ace (Ajax.org Cloud9 Editor)
============================
Ace is a standalone code editor written in JavaScript. Our goal is to create a browser based editor that matches and extends the features, usability and performance of existing native editors such as TextMate, Vim or Eclipse. It can be easily embedded in any web page or JavaScript application. Ace is developed as the primary editor for [Cloud9 IDE](http://www.cloud9ide.com/) and the successor of the Mozilla Skywriter (Bespin) Project.
Features
--------
* Syntax highlighting
* Automatic indent and outdent
* An optional command line
* Handles huge documents (100,000 lines and more are no problem)
* Fully customizable key bindings including VI and Emacs modes
* Themes (TextMate themes can be imported)
* Search and replace with regular expressions
* Highlight matching parentheses
* Toggle between soft tabs and real tabs
* Displays hidden characters
* Drag and drop text using the mouse
* Line wrapping
* Unstructured / user code folding
* Live syntax checker (currently JavaScript/CoffeeScript)
Take Ace for a spin!
--------------------
Check out the Ace live [demo](http://ajaxorg.github.com/ace/) or get a [Cloud9 IDE account](http://run.cloud9ide.com) to experience Ace while editing one of your own GitHub projects.
If you want, you can use Ace as a textarea replacement thanks to the [Ace Bookmarklet](http://ajaxorg.github.com/ace/build/textarea/editor.html).
History
-------
Previously known as “Bespin” and “Skywriter” its now known as Ace (Ajax.org Cloud9 Editor)! Bespin and Ace started as two independent projects, both aiming to build a no-compromise code editor component for the web. Bespin started as part of Mozilla Labs and was based on the canvas tag, while Ace is the Editor component of the Cloud9 IDE and is using the DOM for rendering. After the release of Ace at JSConf.eu 2010 in Berlin the Skywriter team decided to merge Ace with a simplified version of Skywriter's plugin system and some of Skywriter's extensibility points. All these changes have been merged back to Ace. Both Ajax.org and Mozilla are actively developing and maintaining Ace.
Getting the code
----------------
Ace is a community project. We actively encourage and support contributions. The Ace source code is hosted on GitHub. It is released under the Mozilla tri-license (MPL/GPL/LGPL), the same license used by Firefox. This license is friendly to all kinds of projects, whether open source or not. Take charge of your editor and add your favorite language highlighting and keybindings!
```bash
git clone git://github.com/ajaxorg/ace.git
cd ace
git submodule update --init --recursive
```
Embedding Ace
-------------
Ace can be easily embedded into any existing web page. The Ace git repository ships with a pre-packaged version of Ace inside of the `build` directory. The same packaged files are also available as a separate [download](https://github.com/ajaxorg/ace/downloads). Simply copy the contents of the `src` subdirectory somewhere into your project and take a look at the included demos of how to use Ace.
The easiest version is simply:
```html
<div id="editor">some text</div>
<script src="src/ace.js" type="text/javascript" charset="utf-8"></script>
<script>
window.onload = function() {
var editor = ace.edit("editor");
};
</script>
```
With "editor" being the id of the DOM element, which should be converted to an editor. Note that this element must be explicitly sized and positioned `absolute` or `relative` for Ace to work. e.g.
```css
#editor {
position: absolute;
width: 500px;
height: 400px;
}
```
To change the theme simply include the Theme's JavaScript file
```html
<script src="src/theme-twilight.js" type="text/javascript" charset="utf-8"></script>
```
and configure the editor to use the theme:
```javascript
editor.setTheme("ace/theme/twilight");
```
By default the editor only supports plain text mode; many other languages are available as separate modules. After including the mode's JavaScript file:
```html
<script src="src/mode-javascript.js" type="text/javascript" charset="utf-8"></script>
```
Then the mode can be used like this:
```javascript
var JavaScriptMode = require("ace/mode/javascript").Mode;
editor.getSession().setMode(new JavaScriptMode());
```
Documentation
-------------
You find a lot more sample code in the [demo app](https://github.com/ajaxorg/ace/blob/master/demo/demo.js).
There is also some documentation on the [wiki page](https://github.com/ajaxorg/ace/wiki).
If you still need help, feel free to drop a mail on the [ace mailing list](http://groups.google.com/group/ace-discuss).
Running Ace
-----------
After the checkout Ace works out of the box. No build step is required. Open 'editor.html' in any browser except Google Chrome. Google Chrome doesn't allow XMLHTTPRequests from files loaded from disc (i.e. with a file:/// URL). To open Ace in Chrome simply start the bundled mini HTTP server:
```bash
./static.py
```
Or using Node.JS
```bash
npm install mime
./static.js
```
The editor can then be opened at http://localhost:8888/index.html.
Package Ace
-----------
To package Ace we use the dryice build tool developed by the Mozilla Skywriter team. Before you can build you need to make sure that the submodules are up to date.
```bash
git submodule update --init --recursive
```
Make sure you at least version 0.3.0 of dryice
```bash
npm install dryice
```
Afterwards Ace can be built by calling
```bash
./Makefile.dryice.js normal
```
The packaged Ace will be put in the 'build' folder.
To build the bookmarklet version execute
```bash
./Makefile.dryice.js bm
```
Running the Unit Tests
----------------------
The Ace unit tests run on node.js. Before the first run a couple of node modules have to be installed. The easiest way to do this is by using the node package manager (npm). In the Ace base directory simply call
```bash
npm link .
```
To run the tests call:
```bash
node lib/ace/test/all.js
```
You can also run the tests in your browser by serving:
http://localhost:8888/lib/ace/test/tests.html
This makes debugging failing tests way more easier.
Continuous Integration status
-----------------------------
This project is tested with [Travis CI](http://travis-ci.org)
[![Build Status](https://secure.travis-ci.org/ajaxorg/ace.png)](http://travis-ci.org/ajaxorg/ace)
Contributing
------------
Ace wouldn't be what it is without contributions! Feel free to fork and improve/enhance Ace any way you want. If you feel that the editor or the Ace community will benefit from your changes, please open a pull request. To protect the interests of the Ace contributors and users we require contributors to sign a Contributors License Agreement (CLA) before we pull the changes into the main repository. Our CLA is the simplest of agreements, requiring that the contributions you make to an ajax.org project are only those you're allowed to make. This helps us significantly reduce future legal risk for everyone involved. It is easy, helps everyone, takes ten minutes, and only needs to be completed once. There are two versions of the agreement:
1. [The Individual CLA](https://github.com/ajaxorg/ace/raw/master/doc/Contributor_License_Agreement-v2.pdf): use this version if you're working on an ajax.org in your spare time, or can clearly claim ownership of copyright in what you'll be submitting.
2. [The Corporate CLA](https://github.com/ajaxorg/ace/raw/master/doc/Corporate_Contributor_License_Agreement-v2.pdf): have your corporate lawyer review and submit this if your company is going to be contributing to ajax.org projects
If you want to contribute to an ajax.org project please print the CLA and fill it out and sign it. Then either send it by snail mail or fax to us or send it back scanned (or as a photo) by email.
Email: fabian.jakobs@web.de
Fax: +31 (0) 206388953
Address: Ajax.org B.V.
Keizersgracht 241
1016 EA, Amsterdam
the Netherlands
@@ -1 +0,0 @@
define("pilot/index",["require","exports","module","pilot/browser_focus","pilot/dom","pilot/event","pilot/event_emitter","pilot/fixoldbrowsers","pilot/keys","pilot/lang","pilot/oop","pilot/useragent","pilot/canon"],function(a,b,c){a("pilot/browser_focus"),a("pilot/dom"),a("pilot/event"),a("pilot/event_emitter"),a("pilot/fixoldbrowsers"),a("pilot/keys"),a("pilot/lang"),a("pilot/oop"),a("pilot/useragent"),a("pilot/canon")}),define("pilot/browser_focus",["require","exports","module","ace/lib/browser_focus"],function(a,b,c){console.warn("DEPRECATED: 'pilot/browser_focus' is deprecated. Use 'ace/lib/browser_focus' instead"),c.exports=a("ace/lib/browser_focus")}),define("pilot/dom",["require","exports","module","ace/lib/dom"],function(a,b,c){console.warn("DEPRECATED: 'pilot/dom' is deprecated. Use 'ace/lib/dom' instead"),c.exports=a("ace/lib/dom")}),define("pilot/event",["require","exports","module","ace/lib/event"],function(a,b,c){console.warn("DEPRECATED: 'pilot/event' is deprecated. Use 'ace/lib/event' instead"),c.exports=a("ace/lib/event")}),define("pilot/event_emitter",["require","exports","module","ace/lib/event_emitter"],function(a,b,c){console.warn("DEPRECATED: 'pilot/event_emitter' is deprecated. Use 'ace/lib/event_emitter' instead"),c.exports=a("ace/lib/event_emitter")}),define("pilot/fixoldbrowsers",["require","exports","module","ace/lib/fixoldbrowsers"],function(a,b,c){console.warn("DEPRECATED: 'pilot/fixoldbrowsers' is deprecated. Use 'ace/lib/fixoldbrowsers' instead"),c.exports=a("ace/lib/fixoldbrowsers")}),define("pilot/keys",["require","exports","module","ace/lib/keys"],function(a,b,c){console.warn("DEPRECATED: 'pilot/keys' is deprecated. Use 'ace/lib/keys' instead"),c.exports=a("ace/lib/keys")}),define("pilot/lang",["require","exports","module","ace/lib/lang"],function(a,b,c){console.warn("DEPRECATED: 'pilot/lang' is deprecated. Use 'ace/lib/lang' instead"),c.exports=a("ace/lib/lang")}),define("pilot/oop",["require","exports","module","ace/lib/oop"],function(a,b,c){console.warn("DEPRECATED: 'pilot/oop' is deprecated. Use 'ace/lib/oop' instead"),c.exports=a("ace/lib/oop")}),define("pilot/useragent",["require","exports","module","ace/lib/useragent"],function(a,b,c){console.warn("DEPRECATED: 'pilot/useragent' is deprecated. Use 'ace/lib/useragent' instead"),c.exports=a("ace/lib/useragent")}),define("pilot/canon",["require","exports","module"],function(a,b,c){console.warn("DEPRECATED: 'pilot/canon' is deprecated."),b.addCommand=function(){console.warn("DEPRECATED: 'canon.addCommand()' is deprecated. Use 'editor.commands.addCommand(command)' instead."),console.trace()},b.removeCommand=function(){console.warn("DEPRECATED: 'canon.removeCommand()' is deprecated. Use 'editor.commands.removeCommand(command)' instead."),console.trace()}})
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
define("ace/keyboard/keybinding/emacs",["require","exports","module","ace/keyboard/state_handler"],function(a,b,c){"use strict";var d=a("../state_handler").StateHandler,e=a("../state_handler").matchCharacterOnly,f={start:[{key:"ctrl-x",then:"c-x"},{regex:["(?:command-([0-9]*))*","(down|ctrl-n)"],exec:"golinedown",params:[{name:"times",match:1,type:"number",defaultValue:1}]},{regex:["(?:command-([0-9]*))*","(right|ctrl-f)"],exec:"gotoright",params:[{name:"times",match:1,type:"number",defaultValue:1}]},{regex:["(?:command-([0-9]*))*","(up|ctrl-p)"],exec:"golineup",params:[{name:"times",match:1,type:"number",defaultValue:1}]},{regex:["(?:command-([0-9]*))*","(left|ctrl-b)"],exec:"gotoleft",params:[{name:"times",match:1,type:"number",defaultValue:1}]},{comment:"This binding matches all printable characters except numbers as long as they are no numbers and print them n times.",regex:["(?:command-([0-9]*))","([^0-9]+)*"],match:e,exec:"inserttext",params:[{name:"times",match:1,type:"number",defaultValue:"1"},{name:"text",match:2}]},{comment:"This binding matches numbers as long as there is no meta_number in the buffer.",regex:["(command-[0-9]*)*","([0-9]+)"],match:e,disallowMatches:[1],exec:"inserttext",params:[{name:"text",match:2,type:"text"}]},{regex:["command-([0-9]*)","(command-[0-9]|[0-9])"],comment:"Stops execution if the regex /meta_[0-9]+/ matches to avoid resetting the buffer."}],"c-x":[{key:"ctrl-g",then:"start"},{key:"ctrl-s",exec:"save",then:"start"}]};b.Emacs=new d(f)}),define("ace/keyboard/state_handler",["require","exports","module"],function(a,b,c){function e(a){this.keymapping=this.$buildKeymappingRegex(a)}"use strict";var d=!1;e.prototype={$buildKeymappingRegex:function(a){for(var b in a)this.$buildBindingsRegex(a[b]);return a},$buildBindingsRegex:function(a){a.forEach(function(a){a.key?a.key=new RegExp("^"+a.key+"$"):Array.isArray(a.regex)?("key"in a||(a.key=new RegExp("^"+a.regex[1]+"$")),a.regex=new RegExp(a.regex.join("")+"$")):a.regex&&(a.regex=new RegExp(a.regex+"$"))})},$composeBuffer:function(a,b,c,d){if(a.state==null||a.buffer==null)a.state="start",a.buffer="";var e=[];b&1&&e.push("ctrl"),b&8&&e.push("command"),b&2&&e.push("option"),b&4&&e.push("shift"),c&&e.push(c);var f=e.join("-"),g=a.buffer+f;b!=2&&(a.buffer=g);var h={bufferToUse:g,symbolicName:f};return d&&(h.keyIdentifier=d.keyIdentifier),h},$find:function(a,b,c,e,f,g){var h={};return this.keymapping[a.state].some(function(i){var j;if(i.key&&!i.key.test(c))return!1;if(i.regex&&!(j=i.regex.exec(b)))return!1;if(i.match&&!i.match(b,e,f,c,g))return!1;if(i.disallowMatches)for(var k=0;k<i.disallowMatches.length;k++)if(!!j[i.disallowMatches[k]])return!1;if(i.exec){h.command=i.exec;if(i.params){var l;h.args={},i.params.forEach(function(a){a.match!=null&&j!=null?l=j[a.match]||a.defaultValue:l=a.defaultValue,a.type==="number"&&(l=parseInt(l)),h.args[a.name]=l})}a.buffer=""}return i.then&&(a.state=i.then,a.buffer=""),h.command==null&&(h.command="null"),d&&console.log("KeyboardStateMapper#find",i),!0}),h.command?h:(a.buffer="",!1)},handleKeyboard:function(a,b,c,e,f){if(b==0||c!=""&&c!=String.fromCharCode(0)){var g=this.$composeBuffer(a,b,c,f),h=g.bufferToUse,i=g.symbolicName,j=g.keyIdentifier;return g=this.$find(a,h,i,b,c,j),d&&console.log("KeyboardStateMapper#match",h,i,g),g}return null}},b.matchCharacterOnly=function(a,b,c,d){return b==0?!0:b==4&&c.length==1?!0:!1},b.StateHandler=e})
@@ -1 +0,0 @@
define("ace/keyboard/keybinding/vim",["require","exports","module","ace/keyboard/state_handler"],function(a,b,c){"use strict";var d=a("../state_handler").StateHandler,e=a("../state_handler").matchCharacterOnly,f=function(a,b,c){return{regex:["([0-9]*)",a],exec:b,params:[{name:"times",match:1,type:"number",defaultValue:1}],then:c}},g={start:[{key:"i",then:"insertMode"},{key:"d",then:"deleteMode"},{key:"a",exec:"gotoright",then:"insertMode"},{key:"shift-i",exec:"gotolinestart",then:"insertMode"},{key:"shift-a",exec:"gotolineend",then:"insertMode"},{key:"shift-c",exec:"removetolineend",then:"insertMode"},{key:"shift-r",exec:"overwrite",then:"replaceMode"},f("(k|up)","golineup"),f("(j|down)","golinedown"),f("(l|right)","gotoright"),f("(h|left)","gotoleft"),{key:"shift-g",exec:"gotoend"},f("b","gotowordleft"),f("e","gotowordright"),f("x","del"),f("shift-x","backspace"),f("shift-d","removetolineend"),f("u","undo"),{comment:"Catch some keyboard input to stop it here",match:e}],insertMode:[{key:"esc",then:"start"}],replaceMode:[{key:"esc",exec:"overwrite",then:"start"}],deleteMode:[{key:"d",exec:"removeline",then:"start"}]};b.Vim=new d(g)}),define("ace/keyboard/state_handler",["require","exports","module"],function(a,b,c){function e(a){this.keymapping=this.$buildKeymappingRegex(a)}"use strict";var d=!1;e.prototype={$buildKeymappingRegex:function(a){for(var b in a)this.$buildBindingsRegex(a[b]);return a},$buildBindingsRegex:function(a){a.forEach(function(a){a.key?a.key=new RegExp("^"+a.key+"$"):Array.isArray(a.regex)?("key"in a||(a.key=new RegExp("^"+a.regex[1]+"$")),a.regex=new RegExp(a.regex.join("")+"$")):a.regex&&(a.regex=new RegExp(a.regex+"$"))})},$composeBuffer:function(a,b,c,d){if(a.state==null||a.buffer==null)a.state="start",a.buffer="";var e=[];b&1&&e.push("ctrl"),b&8&&e.push("command"),b&2&&e.push("option"),b&4&&e.push("shift"),c&&e.push(c);var f=e.join("-"),g=a.buffer+f;b!=2&&(a.buffer=g);var h={bufferToUse:g,symbolicName:f};return d&&(h.keyIdentifier=d.keyIdentifier),h},$find:function(a,b,c,e,f,g){var h={};return this.keymapping[a.state].some(function(i){var j;if(i.key&&!i.key.test(c))return!1;if(i.regex&&!(j=i.regex.exec(b)))return!1;if(i.match&&!i.match(b,e,f,c,g))return!1;if(i.disallowMatches)for(var k=0;k<i.disallowMatches.length;k++)if(!!j[i.disallowMatches[k]])return!1;if(i.exec){h.command=i.exec;if(i.params){var l;h.args={},i.params.forEach(function(a){a.match!=null&&j!=null?l=j[a.match]||a.defaultValue:l=a.defaultValue,a.type==="number"&&(l=parseInt(l)),h.args[a.name]=l})}a.buffer=""}return i.then&&(a.state=i.then,a.buffer=""),h.command==null&&(h.command="null"),d&&console.log("KeyboardStateMapper#find",i),!0}),h.command?h:(a.buffer="",!1)},handleKeyboard:function(a,b,c,e,f){if(b==0||c!=""&&c!=String.fromCharCode(0)){var g=this.$composeBuffer(a,b,c,f),h=g.bufferToUse,i=g.symbolicName,j=g.keyIdentifier;return g=this.$find(a,h,i,b,c,j),d&&console.log("KeyboardStateMapper#match",h,i,g),g}return null}},b.matchCharacterOnly=function(a,b,c,d){return b==0?!0:b==4&&c.length==1?!0:!1},b.StateHandler=e})
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
define("ace/theme/chrome",["require","exports","module","ace/lib/dom"],function(a,b,c){b.cssClass="ace-chrome",b.cssText=".ace-chrome .ace_editor { border: 2px solid rgb(159, 159, 159);}.ace-chrome .ace_editor.ace_focus { border: 2px solid #327fbd;}.ace-chrome .ace_gutter { width: 50px; background: #e8e8e8; color: #333; overflow : hidden;}.ace-chrome .ace_gutter-layer { width: 100%; text-align: right;}.ace-chrome .ace_gutter-layer .ace_gutter-cell { padding-right: 6px;}.ace-chrome .ace_print_margin { width: 1px; background: #e8e8e8;}.ace-chrome .ace_text-layer { cursor: text;}.ace-chrome .ace_cursor { border-left: 2px solid black;}.ace-chrome .ace_cursor.ace_overwrite { border-left: 0px; border-bottom: 1px solid black;} .ace-chrome .ace_line .ace_invisible { color: rgb(191, 191, 191);}.ace-chrome .ace_line .ace_keyword { color: blue;}.ace-chrome .ace_line .ace_constant.ace_buildin { color: rgb(88, 72, 246);}.ace-chrome .ace_line .ace_constant.ace_language { color: rgb(88, 92, 246);}.ace-chrome .ace_line .ace_constant.ace_library { color: rgb(6, 150, 14);}.ace-chrome .ace_line .ace_invalid { background-color: rgb(153, 0, 0); color: white;}.ace-chrome .ace_line .ace_fold {}.ace-chrome .ace_line .ace_support.ace_function { color: rgb(60, 76, 114);}.ace-chrome .ace_line .ace_support.ace_constant { color: rgb(6, 150, 14);}.ace-chrome .ace_line .ace_support.ace_type,.ace-chrome .ace_line .ace_support.ace_class { color: rgb(109, 121, 222);}.ace-chrome .ace_line .ace_keyword.ace_operator { color: rgb(104, 118, 135);}.ace-chrome .ace_line .ace_string { color: #1919a6;}.ace-chrome .ace_line .ace_comment { color: #236e24;}.ace-chrome .ace_line .ace_comment.ace_doc { color: #236e24;}.ace-chrome .ace_line .ace_comment.ace_doc.ace_tag { color: #236e24;}.ace-chrome .ace_line .ace_constant.ace_numeric { color: rgb(0, 0, 205);}.ace-chrome .ace_line .ace_variable { color: rgb(49, 132, 149);}.ace-chrome .ace_line .ace_xml_pe { color: rgb(104, 104, 91);}.ace-chrome .ace_entity.ace_name.ace_function { color: #0000A2;}.ace-chrome .ace_markup.ace_markupine { text-decoration:underline;}.ace-chrome .ace_markup.ace_heading { color: rgb(12, 7, 255);}.ace-chrome .ace_markup.ace_list { color:rgb(185, 6, 144);}.ace-chrome .ace_marker-layer .ace_selection { background: rgb(181, 213, 255);}.ace-chrome .ace_marker-layer .ace_step { background: rgb(252, 255, 0);}.ace-chrome .ace_marker-layer .ace_stack { background: rgb(164, 229, 101);}.ace-chrome .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid rgb(192, 192, 192);}.ace-chrome .ace_marker-layer .ace_active_line { background: rgba(0, 0, 0, 0.07);}.ace-chrome .ace_marker-layer .ace_selected_word { background: rgb(250, 250, 255); border: 1px solid rgb(200, 200, 250);}.ace-chrome .ace_meta.ace_tag { color: rgb(147, 15, 128);}.ace-chrome .ace_string.ace_regex { color: rgb(255, 0, 0)}.ace-chrome .ace_entity.ace_other.ace_attribute-name{ color: #994409;}";var d=a("../lib/dom");d.importCssString(b.cssText,b.cssClass)})
@@ -1 +0,0 @@
define("ace/theme/clouds",["require","exports","module","ace/lib/dom"],function(a,b,c){b.isDark=!1,b.cssClass="ace-clouds",b.cssText=".ace-clouds .ace_editor { border: 2px solid rgb(159, 159, 159);}.ace-clouds .ace_editor.ace_focus { border: 2px solid #327fbd;}.ace-clouds .ace_gutter { background: #e8e8e8; color: #333;}.ace-clouds .ace_print_margin { width: 1px; background: #e8e8e8;}.ace-clouds .ace_scroller { background-color: #FFFFFF;}.ace-clouds .ace_text-layer { cursor: text; color: #000000;}.ace-clouds .ace_cursor { border-left: 2px solid #000000;}.ace-clouds .ace_cursor.ace_overwrite { border-left: 0px; border-bottom: 1px solid #000000;} .ace-clouds .ace_marker-layer .ace_selection { background: #BDD5FC;}.ace-clouds .ace_marker-layer .ace_step { background: rgb(198, 219, 174);}.ace-clouds .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid #BFBFBF;}.ace-clouds .ace_marker-layer .ace_active_line { background: #FFFBD1;}.ace-clouds .ace_marker-layer .ace_selected_word { border: 1px solid #BDD5FC;} .ace-clouds .ace_invisible { color: #BFBFBF;}.ace-clouds .ace_keyword { color:#AF956F;}.ace-clouds .ace_keyword.ace_operator { color:#484848;}.ace-clouds .ace_constant.ace_language { color:#39946A;}.ace-clouds .ace_constant.ace_numeric { color:#46A609;}.ace-clouds .ace_invalid { background-color:#FF002A;}.ace-clouds .ace_fold { background-color: #AF956F; border-color: #000000;}.ace-clouds .ace_support.ace_function { color:#C52727;}.ace-clouds .ace_string { color:#5D90CD;}.ace-clouds .ace_comment { color:#BCC8BA;}.ace-clouds .ace_entity.ace_other.ace_attribute-name { color:#606060;}.ace-clouds .ace_markup.ace_underline { text-decoration:underline;}";var d=a("../lib/dom");d.importCssString(b.cssText,b.cssClass)})
@@ -1 +0,0 @@
define("ace/theme/clouds_midnight",["require","exports","module","ace/lib/dom"],function(a,b,c){b.isDark=!0,b.cssClass="ace-clouds-midnight",b.cssText=".ace-clouds-midnight .ace_editor { border: 2px solid rgb(159, 159, 159);}.ace-clouds-midnight .ace_editor.ace_focus { border: 2px solid #327fbd;}.ace-clouds-midnight .ace_gutter { background: #e8e8e8; color: #333;}.ace-clouds-midnight .ace_print_margin { width: 1px; background: #e8e8e8;}.ace-clouds-midnight .ace_scroller { background-color: #191919;}.ace-clouds-midnight .ace_text-layer { cursor: text; color: #929292;}.ace-clouds-midnight .ace_cursor { border-left: 2px solid #7DA5DC;}.ace-clouds-midnight .ace_cursor.ace_overwrite { border-left: 0px; border-bottom: 1px solid #7DA5DC;} .ace-clouds-midnight .ace_marker-layer .ace_selection { background: #000000;}.ace-clouds-midnight .ace_marker-layer .ace_step { background: rgb(198, 219, 174);}.ace-clouds-midnight .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid #BFBFBF;}.ace-clouds-midnight .ace_marker-layer .ace_active_line { background: rgba(215, 215, 215, 0.031);}.ace-clouds-midnight .ace_marker-layer .ace_selected_word { border: 1px solid #000000;} .ace-clouds-midnight .ace_invisible { color: #BFBFBF;}.ace-clouds-midnight .ace_keyword { color:#927C5D;}.ace-clouds-midnight .ace_keyword.ace_operator { color:#4B4B4B;}.ace-clouds-midnight .ace_constant.ace_language { color:#39946A;}.ace-clouds-midnight .ace_constant.ace_numeric { color:#46A609;}.ace-clouds-midnight .ace_invalid { color:#FFFFFF;background-color:#E92E2E;}.ace-clouds-midnight .ace_fold { background-color: #927C5D; border-color: #929292;}.ace-clouds-midnight .ace_support.ace_function { color:#E92E2E;}.ace-clouds-midnight .ace_string { color:#5D90CD;}.ace-clouds-midnight .ace_comment { color:#3C403B;}.ace-clouds-midnight .ace_entity.ace_other.ace_attribute-name { color:#606060;}.ace-clouds-midnight .ace_markup.ace_underline { text-decoration:underline;}";var d=a("../lib/dom");d.importCssString(b.cssText,b.cssClass)})
@@ -1 +0,0 @@
define("ace/theme/cobalt",["require","exports","module","ace/lib/dom"],function(a,b,c){b.isDark=!0,b.cssClass="ace-cobalt",b.cssText=".ace-cobalt .ace_editor { border: 2px solid rgb(159, 159, 159);}.ace-cobalt .ace_editor.ace_focus { border: 2px solid #327fbd;}.ace-cobalt .ace_gutter { background: #e8e8e8; color: #333;}.ace-cobalt .ace_print_margin { width: 1px; background: #e8e8e8;}.ace-cobalt .ace_scroller { background-color: #002240;}.ace-cobalt .ace_text-layer { cursor: text; color: #FFFFFF;}.ace-cobalt .ace_cursor { border-left: 2px solid #FFFFFF;}.ace-cobalt .ace_cursor.ace_overwrite { border-left: 0px; border-bottom: 1px solid #FFFFFF;} .ace-cobalt .ace_marker-layer .ace_selection { background: rgba(179, 101, 57, 0.75);}.ace-cobalt .ace_marker-layer .ace_step { background: rgb(198, 219, 174);}.ace-cobalt .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid rgba(255, 255, 255, 0.15);}.ace-cobalt .ace_marker-layer .ace_active_line { background: rgba(0, 0, 0, 0.35);}.ace-cobalt .ace_marker-layer .ace_selected_word { border: 1px solid rgba(179, 101, 57, 0.75);} .ace-cobalt .ace_invisible { color: rgba(255, 255, 255, 0.15);}.ace-cobalt .ace_keyword { color:#FF9D00;}.ace-cobalt .ace_constant { color:#FF628C;}.ace-cobalt .ace_invalid { color:#F8F8F8;background-color:#800F00;}.ace-cobalt .ace_support { color:#80FFBB;}.ace-cobalt .ace_fold { background-color: #FF9D00; border-color: #FFFFFF;}.ace-cobalt .ace_support.ace_function { color:#FFB054;}.ace-cobalt .ace_string.ace_regexp { color:#80FFC2;}.ace-cobalt .ace_comment { font-style:italic;color:#0088FF;}.ace-cobalt .ace_variable { color:#CCCCCC;}.ace-cobalt .ace_variable.ace_language { color:#FF80E1;}.ace-cobalt .ace_meta.ace_tag { color:#9EFFFF;}.ace-cobalt .ace_markup.ace_underline { text-decoration:underline;}.ace-cobalt .ace_markup.ace_heading { color:#C8E4FD;background-color:#001221;}.ace-cobalt .ace_markup.ace_list { background-color:#130D26;}";var d=a("../lib/dom");d.importCssString(b.cssText,b.cssClass)})
@@ -1 +0,0 @@
define("ace/theme/crimson_editor",["require","exports","module","ace/lib/dom"],function(a,b,c){b.isDark=!1,b.cssText=".ace-crimson-editor .ace_editor { border: 2px solid rgb(159, 159, 159);}.ace-crimson-editor .ace_editor.ace_focus { border: 2px solid #327fbd;}.ace-crimson-editor .ace_gutter { width: 50px; background: #e8e8e8; color: #333; overflow : hidden;}.ace-crimson-editor .ace_gutter-layer { width: 100%; text-align: right;}.ace-crimson-editor .ace_gutter-layer .ace_gutter-cell { padding-right: 6px;}.ace-crimson-editor .ace_print_margin { width: 1px; background: #e8e8e8;}.ace-crimson-editor .ace_text-layer { cursor: text; color: rgb(64, 64, 64);}.ace-crimson-editor .ace_cursor { border-left: 2px solid black;}.ace-crimson-editor .ace_cursor.ace_overwrite { border-left: 0px; border-bottom: 1px solid black;}.ace-crimson-editor .ace_line .ace_invisible { color: rgb(191, 191, 191);}.ace-crimson-editor .ace_line .ace_identifier { color: black;}.ace-crimson-editor .ace_line .ace_keyword { color: blue;}.ace-crimson-editor .ace_line .ace_constant.ace_buildin { color: rgb(88, 72, 246);}.ace-crimson-editor .ace_line .ace_constant.ace_language { color: rgb(255, 156, 0);}.ace-crimson-editor .ace_line .ace_constant.ace_library { color: rgb(6, 150, 14);}.ace-crimson-editor .ace_line .ace_invalid { text-decoration: line-through; color: rgb(224, 0, 0);}.ace-crimson-editor .ace_line .ace_fold {}.ace-crimson-editor .ace_line .ace_support.ace_function { color: rgb(192, 0, 0);}.ace-crimson-editor .ace_line .ace_support.ace_constant { color: rgb(6, 150, 14);}.ace-crimson-editor .ace_line .ace_support.ace_type,.ace-crimson-editor .ace_line .ace_support.ace_class { color: rgb(109, 121, 222);}.ace-crimson-editor .ace_line .ace_keyword.ace_operator { color: rgb(49, 132, 149);}.ace-crimson-editor .ace_line .ace_string { color: rgb(128, 0, 128);}.ace-crimson-editor .ace_line .ace_comment { color: rgb(76, 136, 107);}.ace-crimson-editor .ace_line .ace_comment.ace_doc { color: rgb(0, 102, 255);}.ace-crimson-editor .ace_line .ace_comment.ace_doc.ace_tag { color: rgb(128, 159, 191);}.ace-crimson-editor .ace_line .ace_constant.ace_numeric { color: rgb(0, 0, 64);}.ace-crimson-editor .ace_line .ace_variable { color: rgb(0, 64, 128);}.ace-crimson-editor .ace_line .ace_xml_pe { color: rgb(104, 104, 91);}.ace-crimson-editor .ace_marker-layer .ace_selection { background: rgb(181, 213, 255);}.ace-crimson-editor .ace_marker-layer .ace_step { background: rgb(252, 255, 0);}.ace-crimson-editor .ace_marker-layer .ace_stack { background: rgb(164, 229, 101);}.ace-crimson-editor .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid rgb(192, 192, 192);}.ace-crimson-editor .ace_marker-layer .ace_active_line { background: rgb(232, 242, 254);}.ace-crimson-editor .ace_meta.ace_tag { color:rgb(28, 2, 255);}.ace-crimson-editor .ace_marker-layer .ace_selected_word { background: rgb(250, 250, 255); border: 1px solid rgb(200, 200, 250);}.ace-crimson-editor .ace_string.ace_regex { color: rgb(192, 0, 192);}",b.cssClass="ace-crimson-editor";var d=a("../lib/dom");d.importCssString(b.cssText,b.cssClass)})
@@ -1 +0,0 @@
define("ace/theme/dawn",["require","exports","module","ace/lib/dom"],function(a,b,c){b.isDark=!1,b.cssClass="ace-dawn",b.cssText=".ace-dawn .ace_editor { border: 2px solid rgb(159, 159, 159);}.ace-dawn .ace_editor.ace_focus { border: 2px solid #327fbd;}.ace-dawn .ace_gutter { background: #e8e8e8; color: #333;}.ace-dawn .ace_print_margin { width: 1px; background: #e8e8e8;}.ace-dawn .ace_scroller { background-color: #F9F9F9;}.ace-dawn .ace_text-layer { cursor: text; color: #080808;}.ace-dawn .ace_cursor { border-left: 2px solid #000000;}.ace-dawn .ace_cursor.ace_overwrite { border-left: 0px; border-bottom: 1px solid #000000;} .ace-dawn .ace_marker-layer .ace_selection { background: rgba(39, 95, 255, 0.30);}.ace-dawn .ace_marker-layer .ace_step { background: rgb(198, 219, 174);}.ace-dawn .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid rgba(75, 75, 126, 0.50);}.ace-dawn .ace_marker-layer .ace_active_line { background: rgba(36, 99, 180, 0.12);}.ace-dawn .ace_marker-layer .ace_selected_word { border: 1px solid rgba(39, 95, 255, 0.30);} .ace-dawn .ace_invisible { color: rgba(75, 75, 126, 0.50);}.ace-dawn .ace_keyword { color:#794938;}.ace-dawn .ace_constant { color:#811F24;}.ace-dawn .ace_invalid.ace_illegal { text-decoration:underline;font-style:italic;color:#F8F8F8;background-color:#B52A1D;}.ace-dawn .ace_invalid.ace_deprecated { text-decoration:underline;font-style:italic;color:#B52A1D;}.ace-dawn .ace_support { color:#691C97;}.ace-dawn .ace_fold { background-color: #794938; border-color: #080808;}.ace-dawn .ace_support.ace_function { color:#693A17;}.ace-dawn .ace_string { color:#0B6125;}.ace-dawn .ace_string.ace_regexp { color:#CF5628;}.ace-dawn .ace_comment { font-style:italic;color:#5A525F;}.ace-dawn .ace_variable { color:#234A97;}.ace-dawn .ace_markup.ace_underline { text-decoration:underline;}.ace-dawn .ace_markup.ace_heading { color:#19356D;}.ace-dawn .ace_markup.ace_list { color:#693A17;}";var d=a("../lib/dom");d.importCssString(b.cssText,b.cssClass)})
@@ -1 +0,0 @@
define("ace/theme/dreamweaver",["require","exports","module","ace/lib/dom"],function(a,b,c){b.isDark=!1,b.cssClass="ace-tm",b.cssText=".ace-tm .ace_editor { border: 2px solid rgb(159, 159, 159);}.ace-tm .ace_editor.ace_focus { border: 2px solid #327fbd;}.ace-tm .ace_gutter { background: #e8e8e8; color: #333;}.ace-tm .ace_print_margin { width: 1px; background: #e8e8e8;}.ace-tm .ace_fold { background-color: #00F;}.ace-tm .ace_text-layer { cursor: text;}.ace-tm .ace_cursor { border-left: 2px solid black;}.ace-tm .ace_cursor.ace_overwrite { border-left: 0px; border-bottom: 1px solid black;} .ace-tm .ace_line .ace_invisible { color: rgb(191, 191, 191);}.ace-tm .ace_line .ace_keyword { color: blue;}.ace-tm .ace_line .ace_constant.ace_buildin { color: rgb(88, 72, 246);}.ace-tm .ace_line .ace_constant.ace_language { color: rgb(88, 92, 246);}.ace-tm .ace_line .ace_constant.ace_library { color: rgb(6, 150, 14);}.ace-tm .ace_line .ace_invalid { background-color: rgb(153, 0, 0); color: white;}.ace-tm .ace_line .ace_support.ace_function { color: rgb(60, 76, 114);}.ace-tm .ace_line .ace_support.ace_constant { color: rgb(6, 150, 14);}.ace-tm .ace_line .ace_support.ace_type,.ace-tm .ace_line .ace_support.ace_class { color: #009;}.ace-tm .ace_line .ace_support.ace_php_tag { color: #f00;}.ace-tm .ace_line .ace_keyword.ace_operator { color: rgb(104, 118, 135);}.ace-tm .ace_line .ace_string { color: #00F;}.ace-tm .ace_line .ace_comment { color: rgb(76, 136, 107);}.ace-tm .ace_line .ace_comment.ace_doc { color: rgb(0, 102, 255);}.ace-tm .ace_line .ace_comment.ace_doc.ace_tag { color: rgb(128, 159, 191);}.ace-tm .ace_line .ace_constant.ace_numeric { color: rgb(0, 0, 205);}.ace-tm .ace_line .ace_variable { color: #06F}.ace-tm .ace_line .ace_xml_pe { color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function { color: #00F;}.ace-tm .ace_markup.ace_markupine { text-decoration:underline;}.ace-tm .ace_markup.ace_heading { color: rgb(12, 7, 255);}.ace-tm .ace_markup.ace_list { color:rgb(185, 6, 144);}.ace-tm .ace_marker-layer .ace_selection { background: rgb(181, 213, 255);}.ace-tm .ace_marker-layer .ace_step { background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack { background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active_line { background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_marker-layer .ace_selected_word { background: rgb(250, 250, 255); border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_meta.ace_tag { color:#009;}.ace-tm .ace_meta.ace_tag.ace_anchor { color:#060;}.ace-tm .ace_meta.ace_tag.ace_form { color:#F90;}.ace-tm .ace_meta.ace_tag.ace_image { color:#909;}.ace-tm .ace_meta.ace_tag.ace_script { color:#900;}.ace-tm .ace_meta.ace_tag.ace_style { color:#909;}.ace-tm .ace_meta.ace_tag.ace_table { color:#099;}.ace-tm .ace_string.ace_regex { color: rgb(255, 0, 0)}";var d=a("../lib/dom");d.importCssString(b.cssText,b.cssClass)})
@@ -1 +0,0 @@
define("ace/theme/eclipse",["require","exports","module","ace/lib/dom"],function(a,b,c){"use strict",b.isDark=!1,b.cssText=".ace-eclipse .ace_editor { border: 2px solid rgb(159, 159, 159);}.ace-eclipse .ace_editor.ace_focus { border: 2px solid #327fbd;}.ace-eclipse .ace_gutter { background: rgb(227, 227, 227); border-right: 1px solid rgb(159, 159, 159); color: rgb(136, 136, 136);}.ace-eclipse .ace_print_margin { width: 1px; background: #b1b4ba;}.ace-eclipse .ace_fold { background-color: rgb(60, 76, 114);}.ace-eclipse .ace_text-layer { cursor: text;}.ace-eclipse .ace_cursor { border-left: 1px solid black;}.ace-eclipse .ace_line .ace_keyword, .ace-eclipse .ace_line .ace_variable { color: rgb(127, 0, 85);}.ace-eclipse .ace_line .ace_constant.ace_buildin { color: rgb(88, 72, 246);}.ace-eclipse .ace_line .ace_constant.ace_library { color: rgb(6, 150, 14);}.ace-eclipse .ace_line .ace_function { color: rgb(60, 76, 114);}.ace-eclipse .ace_line .ace_string { color: rgb(42, 0, 255);}.ace-eclipse .ace_line .ace_comment { color: rgb(63, 127, 95);}.ace-eclipse .ace_line .ace_comment.ace_doc { color: rgb(63, 95, 191);}.ace-eclipse .ace_line .ace_comment.ace_doc.ace_tag { color: rgb(127, 159, 191);}.ace-eclipse .ace_line .ace_constant.ace_numeric {}.ace-eclipse .ace_line .ace_tag { color: rgb(63, 127, 127);}.ace-eclipse .ace_line .ace_type { color: rgb(127, 0, 127);}.ace-eclipse .ace_line .ace_xml_pe { color: rgb(104, 104, 91);}.ace-eclipse .ace_marker-layer .ace_selection { background: rgb(181, 213, 255);}.ace-eclipse .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid rgb(192, 192, 192);}.ace-eclipse .ace_line .ace_meta.ace_tag { color:rgb(63, 127, 127);}.ace-eclipse .ace_entity.ace_other.ace_attribute-name { color:rgb(127, 0, 127);}.ace-eclipse .ace_marker-layer .ace_active_line { background: rgb(232, 242, 254);}",b.cssClass="ace-eclipse";var d=a("../lib/dom");d.importCssString(b.cssText,b.cssClass)})
@@ -1 +0,0 @@
define("ace/theme/idle_fingers",["require","exports","module","ace/lib/dom"],function(a,b,c){b.isDark=!0,b.cssClass="ace-idle-fingers",b.cssText=".ace-idle-fingers .ace_editor { border: 2px solid rgb(159, 159, 159);}.ace-idle-fingers .ace_editor.ace_focus { border: 2px solid #327fbd;}.ace-idle-fingers .ace_gutter { background: #e8e8e8; color: #333;}.ace-idle-fingers .ace_print_margin { width: 1px; background: #e8e8e8;}.ace-idle-fingers .ace_scroller { background-color: #323232;}.ace-idle-fingers .ace_text-layer { cursor: text; color: #FFFFFF;}.ace-idle-fingers .ace_cursor { border-left: 2px solid #91FF00;}.ace-idle-fingers .ace_cursor.ace_overwrite { border-left: 0px; border-bottom: 1px solid #91FF00;} .ace-idle-fingers .ace_marker-layer .ace_selection { background: rgba(90, 100, 126, 0.88);}.ace-idle-fingers .ace_marker-layer .ace_step { background: rgb(198, 219, 174);}.ace-idle-fingers .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid #404040;}.ace-idle-fingers .ace_marker-layer .ace_active_line { background: #353637;}.ace-idle-fingers .ace_marker-layer .ace_selected_word { border: 1px solid rgba(90, 100, 126, 0.88);} .ace-idle-fingers .ace_invisible { color: #404040;}.ace-idle-fingers .ace_keyword { color:#CC7833;}.ace-idle-fingers .ace_constant { color:#6C99BB;}.ace-idle-fingers .ace_invalid { color:#FFFFFF;background-color:#FF0000;}.ace-idle-fingers .ace_fold { background-color: #CC7833; border-color: #FFFFFF;}.ace-idle-fingers .ace_support.ace_function { color:#B83426;}.ace-idle-fingers .ace_string { color:#A5C261;}.ace-idle-fingers .ace_string.ace_regexp { color:#CCCC33;}.ace-idle-fingers .ace_comment { font-style:italic;color:#BC9458;}.ace-idle-fingers .ace_meta.ace_tag { color:#FFE5BB;}.ace-idle-fingers .ace_entity.ace_name { color:#FFC66D;}.ace-idle-fingers .ace_markup.ace_underline { text-decoration:underline;}.ace-idle-fingers .ace_collab.ace_user1 { color:#323232;background-color:#FFF980; }";var d=a("../lib/dom");d.importCssString(b.cssText,b.cssClass)})
@@ -1 +0,0 @@
define("ace/theme/kr_theme",["require","exports","module","ace/lib/dom"],function(a,b,c){b.isDark=!0,b.cssClass="ace-kr-theme",b.cssText=".ace-kr-theme .ace_editor { border: 2px solid rgb(159, 159, 159);}.ace-kr-theme .ace_editor.ace_focus { border: 2px solid #327fbd;}.ace-kr-theme .ace_gutter { background: #e8e8e8; color: #333;}.ace-kr-theme .ace_print_margin { width: 1px; background: #e8e8e8;}.ace-kr-theme .ace_scroller { background-color: #0B0A09;}.ace-kr-theme .ace_text-layer { cursor: text; color: #FCFFE0;}.ace-kr-theme .ace_cursor { border-left: 2px solid #FF9900;}.ace-kr-theme .ace_cursor.ace_overwrite { border-left: 0px; border-bottom: 1px solid #FF9900;} .ace-kr-theme .ace_marker-layer .ace_selection { background: rgba(170, 0, 255, 0.45);}.ace-kr-theme .ace_marker-layer .ace_step { background: rgb(198, 219, 174);}.ace-kr-theme .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid rgba(255, 177, 111, 0.32);}.ace-kr-theme .ace_marker-layer .ace_active_line { background: #38403D;}.ace-kr-theme .ace_marker-layer .ace_selected_word { border: 1px solid rgba(170, 0, 255, 0.45);} .ace-kr-theme .ace_invisible { color: rgba(255, 177, 111, 0.32);}.ace-kr-theme .ace_keyword { color:#949C8B;}.ace-kr-theme .ace_constant { color:rgba(210, 117, 24, 0.76);}.ace-kr-theme .ace_invalid { color:#F8F8F8;background-color:#A41300;}.ace-kr-theme .ace_support { color:#9FC28A;}.ace-kr-theme .ace_fold { background-color: #949C8B; border-color: #FCFFE0;}.ace-kr-theme .ace_support.ace_function { color:#85873A;}.ace-kr-theme .ace_string.ace_regexp { color:rgba(125, 255, 192, 0.65);}.ace-kr-theme .ace_comment { font-style:italic;color:#706D5B;}.ace-kr-theme .ace_variable { color:#D1A796;}.ace-kr-theme .ace_variable.ace_language { color:#FF80E1;}.ace-kr-theme .ace_meta.ace_tag { color:#BABD9C;}.ace-kr-theme .ace_markup.ace_underline { text-decoration:underline;}.ace-kr-theme .ace_markup.ace_list { background-color:#0F0040;}";var d=a("../lib/dom");d.importCssString(b.cssText,b.cssClass)})
@@ -1 +0,0 @@
define("ace/theme/merbivore",["require","exports","module","ace/lib/dom"],function(a,b,c){b.isDark=!0,b.cssClass="ace-merbivore",b.cssText=".ace-merbivore .ace_editor { border: 2px solid rgb(159, 159, 159);}.ace-merbivore .ace_editor.ace_focus { border: 2px solid #327fbd;}.ace-merbivore .ace_gutter { background: #e8e8e8; color: #333;}.ace-merbivore .ace_print_margin { width: 1px; background: #e8e8e8;}.ace-merbivore .ace_scroller { background-color: #161616;}.ace-merbivore .ace_text-layer { cursor: text; color: #E6E1DC;}.ace-merbivore .ace_cursor { border-left: 2px solid #FFFFFF;}.ace-merbivore .ace_cursor.ace_overwrite { border-left: 0px; border-bottom: 1px solid #FFFFFF;} .ace-merbivore .ace_marker-layer .ace_selection { background: #454545;}.ace-merbivore .ace_marker-layer .ace_step { background: rgb(198, 219, 174);}.ace-merbivore .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid #404040;}.ace-merbivore .ace_marker-layer .ace_active_line { background: #333435;}.ace-merbivore .ace_marker-layer .ace_selected_word { border: 1px solid #454545;} .ace-merbivore .ace_invisible { color: #404040;}.ace-merbivore .ace_keyword { color:#FC6F09;}.ace-merbivore .ace_constant { color:#1EDAFB;}.ace-merbivore .ace_constant.ace_language { color:#FDC251;}.ace-merbivore .ace_constant.ace_library { color:#8DFF0A;}.ace-merbivore .ace_constant.ace_numeric { color:#58C554;}.ace-merbivore .ace_invalid { color:#FFFFFF;background-color:#990000;}.ace-merbivore .ace_fold { background-color: #FC6F09; border-color: #E6E1DC;}.ace-merbivore .ace_support.ace_function { color:#FC6F09;}.ace-merbivore .ace_string { color:#8DFF0A;}.ace-merbivore .ace_comment { font-style:italic;color:#AD2EA4;}.ace-merbivore .ace_meta.ace_tag { color:#FC6F09;}.ace-merbivore .ace_entity.ace_other.ace_attribute-name { color:#FFFF89;}.ace-merbivore .ace_markup.ace_underline { text-decoration:underline;}";var d=a("../lib/dom");d.importCssString(b.cssText,b.cssClass)})
@@ -1 +0,0 @@
define("ace/theme/merbivore_soft",["require","exports","module","ace/lib/dom"],function(a,b,c){b.isDark=!0,b.cssClass="ace-merbivore-soft",b.cssText=".ace-merbivore-soft .ace_editor { border: 2px solid rgb(159, 159, 159);}.ace-merbivore-soft .ace_editor.ace_focus { border: 2px solid #327fbd;}.ace-merbivore-soft .ace_gutter { background: #e8e8e8; color: #333;}.ace-merbivore-soft .ace_print_margin { width: 1px; background: #e8e8e8;}.ace-merbivore-soft .ace_scroller { background-color: #1C1C1C;}.ace-merbivore-soft .ace_text-layer { cursor: text; color: #E6E1DC;}.ace-merbivore-soft .ace_cursor { border-left: 2px solid #FFFFFF;}.ace-merbivore-soft .ace_cursor.ace_overwrite { border-left: 0px; border-bottom: 1px solid #FFFFFF;} .ace-merbivore-soft .ace_marker-layer .ace_selection { background: #494949;}.ace-merbivore-soft .ace_marker-layer .ace_step { background: rgb(198, 219, 174);}.ace-merbivore-soft .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid #404040;}.ace-merbivore-soft .ace_marker-layer .ace_active_line { background: #333435;}.ace-merbivore-soft .ace_marker-layer .ace_selected_word { border: 1px solid #494949;} .ace-merbivore-soft .ace_invisible { color: #404040;}.ace-merbivore-soft .ace_keyword { color:#FC803A;}.ace-merbivore-soft .ace_constant { color:#68C1D8;}.ace-merbivore-soft .ace_constant.ace_language { color:#E1C582;}.ace-merbivore-soft .ace_constant.ace_library { color:#8EC65F;}.ace-merbivore-soft .ace_constant.ace_numeric { color:#7FC578;}.ace-merbivore-soft .ace_invalid { color:#FFFFFF;background-color:#FE3838;}.ace-merbivore-soft .ace_invalid.ace_deprecated { color:#FFFFFF;background-color:#FE3838;}.ace-merbivore-soft .ace_fold { background-color: #FC803A; border-color: #E6E1DC;}.ace-merbivore-soft .ace_string { color:#8EC65F;}.ace-merbivore-soft .ace_comment { font-style:italic;color:#AC4BB8;}.ace-merbivore-soft .ace_meta { font-style:italic;color:#AC4BB8;}.ace-merbivore-soft .ace_meta.ace_tag { color:#FC803A;}.ace-merbivore-soft .ace_entity.ace_other.ace_attribute-name { color:#EAF1A3;}.ace-merbivore-soft .ace_markup.ace_underline { text-decoration:underline;}";var d=a("../lib/dom");d.importCssString(b.cssText,b.cssClass)})
@@ -1 +0,0 @@
define("ace/theme/mono_industrial",["require","exports","module","ace/lib/dom"],function(a,b,c){b.isDark=!0,b.cssClass="ace-mono-industrial",b.cssText=".ace-mono-industrial .ace_editor { border: 2px solid rgb(159, 159, 159);}.ace-mono-industrial .ace_editor.ace_focus { border: 2px solid #327fbd;}.ace-mono-industrial .ace_gutter { background: #e8e8e8; color: #333;}.ace-mono-industrial .ace_print_margin { width: 1px; background: #e8e8e8;}.ace-mono-industrial .ace_scroller { background-color: #222C28;}.ace-mono-industrial .ace_text-layer { cursor: text; color: #FFFFFF;}.ace-mono-industrial .ace_cursor { border-left: 2px solid #FFFFFF;}.ace-mono-industrial .ace_cursor.ace_overwrite { border-left: 0px; border-bottom: 1px solid #FFFFFF;} .ace-mono-industrial .ace_marker-layer .ace_selection { background: rgba(145, 153, 148, 0.40);}.ace-mono-industrial .ace_marker-layer .ace_step { background: rgb(198, 219, 174);}.ace-mono-industrial .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid rgba(102, 108, 104, 0.50);}.ace-mono-industrial .ace_marker-layer .ace_active_line { background: rgba(12, 13, 12, 0.25);}.ace-mono-industrial .ace_marker-layer .ace_selected_word { border: 1px solid rgba(145, 153, 148, 0.40);} .ace-mono-industrial .ace_invisible { color: rgba(102, 108, 104, 0.50);}.ace-mono-industrial .ace_keyword { color:#A39E64;}.ace-mono-industrial .ace_keyword.ace_operator { color:#A8B3AB;}.ace-mono-industrial .ace_constant { color:#E98800;}.ace-mono-industrial .ace_constant.ace_numeric { color:#E98800;}.ace-mono-industrial .ace_invalid { color:#FFFFFF;background-color:rgba(153, 0, 0, 0.68);}.ace-mono-industrial .ace_fold { background-color: #A8B3AB; border-color: #FFFFFF;}.ace-mono-industrial .ace_support.ace_function { color:#588E60;}.ace-mono-industrial .ace_comment { color:#666C68;background-color:#151C19;}.ace-mono-industrial .ace_variable.ace_language { color:#648BD2;}.ace-mono-industrial .ace_entity.ace_other.ace_attribute-name { color:#909993;}.ace-mono-industrial .ace_entity.ace_name { color:#5778B6;}.ace-mono-industrial .ace_entity.ace_name.ace_function { color:#A8B3AB;}.ace-mono-industrial .ace_markup.ace_underline { text-decoration:underline;}";var d=a("../lib/dom");d.importCssString(b.cssText,b.cssClass)})
@@ -1 +0,0 @@
define("ace/theme/monokai",["require","exports","module","ace/lib/dom"],function(a,b,c){b.isDark=!0,b.cssClass="ace-monokai",b.cssText=".ace-monokai .ace_editor { border: 2px solid rgb(159, 159, 159);}.ace-monokai .ace_editor.ace_focus { border: 2px solid #327fbd;}.ace-monokai .ace_gutter { background: #e8e8e8; color: #333;}.ace-monokai .ace_print_margin { width: 1px; background: #e8e8e8;}.ace-monokai .ace_scroller { background-color: #272822;}.ace-monokai .ace_text-layer { cursor: text; color: #F8F8F2;}.ace-monokai .ace_cursor { border-left: 2px solid #F8F8F0;}.ace-monokai .ace_cursor.ace_overwrite { border-left: 0px; border-bottom: 1px solid #F8F8F0;} .ace-monokai .ace_marker-layer .ace_selection { background: #49483E;}.ace-monokai .ace_marker-layer .ace_step { background: rgb(198, 219, 174);}.ace-monokai .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid #49483E;}.ace-monokai .ace_marker-layer .ace_active_line { background: #49483E;}.ace-monokai .ace_marker-layer .ace_selected_word { border: 1px solid #49483E;} .ace-monokai .ace_invisible { color: #49483E;}.ace-monokai .ace_keyword { color:#F92672;}.ace-monokai .ace_constant.ace_language { color:#AE81FF;}.ace-monokai .ace_constant.ace_numeric { color:#AE81FF;}.ace-monokai .ace_invalid { color:#F8F8F0;background-color:#F92672;}.ace-monokai .ace_invalid.ace_deprecated { color:#F8F8F0;background-color:#AE81FF;}.ace-monokai .ace_fold { background-color: #A6E22E; border-color: #F8F8F2;}.ace-monokai .ace_support.ace_function { color:#66D9EF;}.ace-monokai .ace_string { color:#E6DB74;}.ace-monokai .ace_comment { color:#75715E;}.ace-monokai .ace_entity.ace_other.ace_attribute-name { color:#A6E22E;}.ace-monokai .ace_entity.ace_name.ace_function { color:#A6E22E;}.ace-monokai .ace_markup.ace_underline { text-decoration:underline;}";var d=a("../lib/dom");d.importCssString(b.cssText,b.cssClass)})
@@ -1 +0,0 @@
define("ace/theme/pastel_on_dark",["require","exports","module","ace/lib/dom"],function(a,b,c){b.isDark=!0,b.cssClass="ace-pastel-on-dark",b.cssText=".ace-pastel-on-dark .ace_editor { border: 2px solid rgb(159, 159, 159);}.ace-pastel-on-dark .ace_editor.ace_focus { border: 2px solid #327fbd;}.ace-pastel-on-dark .ace_gutter { background: #e8e8e8; color: #333;}.ace-pastel-on-dark .ace_print_margin { width: 1px; background: #e8e8e8;}.ace-pastel-on-dark .ace_scroller { background-color: #2C2828;}.ace-pastel-on-dark .ace_text-layer { cursor: text; color: #8F938F;}.ace-pastel-on-dark .ace_cursor { border-left: 2px solid #A7A7A7;}.ace-pastel-on-dark .ace_cursor.ace_overwrite { border-left: 0px; border-bottom: 1px solid #A7A7A7;} .ace-pastel-on-dark .ace_marker-layer .ace_selection { background: rgba(221, 240, 255, 0.20);}.ace-pastel-on-dark .ace_marker-layer .ace_step { background: rgb(198, 219, 174);}.ace-pastel-on-dark .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid rgba(255, 255, 255, 0.25);}.ace-pastel-on-dark .ace_marker-layer .ace_active_line { background: rgba(255, 255, 255, 0.031);}.ace-pastel-on-dark .ace_marker-layer .ace_selected_word { border: 1px solid rgba(221, 240, 255, 0.20);} .ace-pastel-on-dark .ace_invisible { color: rgba(255, 255, 255, 0.25);}.ace-pastel-on-dark .ace_keyword { color:#757aD8;}.ace-pastel-on-dark .ace_keyword.ace_operator { color:#797878;}.ace-pastel-on-dark .ace_constant { color:#4FB7C5;}.ace-pastel-on-dark .ace_constant.ace_language { color:#DE8E30;}.ace-pastel-on-dark .ace_constant.ace_numeric { color:#CCCCCC;}.ace-pastel-on-dark .ace_invalid { color:#F8F8F8;background-color:rgba(86, 45, 86, 0.75);}.ace-pastel-on-dark .ace_invalid.ace_illegal { color:#F8F8F8;background-color:rgba(86, 45, 86, 0.75);}.ace-pastel-on-dark .ace_invalid.ace_deprecated { text-decoration:underline;font-style:italic;color:#D2A8A1;}.ace-pastel-on-dark .ace_fold { background-color: #757aD8; border-color: #8F938F;}.ace-pastel-on-dark .ace_support.ace_function { color:#AEB2F8;}.ace-pastel-on-dark .ace_string { color:#66A968;}.ace-pastel-on-dark .ace_string.ace_regexp { color:#E9C062;}.ace-pastel-on-dark .ace_comment { color:#A6C6FF;}.ace-pastel-on-dark .ace_variable { color:#BEBF55;}.ace-pastel-on-dark .ace_variable.ace_language { color:#C1C144;}.ace-pastel-on-dark .ace_xml_pe { color:#494949;}.ace-pastel-on-dark .ace_markup.ace_underline { text-decoration:underline;}";var d=a("../lib/dom");d.importCssString(b.cssText,b.cssClass)})
@@ -1 +0,0 @@
define("ace/theme/solarized_dark",["require","exports","module","ace/lib/dom"],function(a,b,c){b.isDark=!0,b.cssClass="ace-solarized-dark",b.cssText=".ace-solarized-dark .ace_editor { border: 2px solid rgb(159, 159, 159);}.ace-solarized-dark .ace_editor.ace_focus { border: 2px solid #327fbd;}.ace-solarized-dark .ace_gutter { background: #e8e8e8; color: #333;}.ace-solarized-dark .ace_print_margin { width: 1px; background: #e8e8e8;}.ace-solarized-dark .ace_scroller { background-color: #002B36;}.ace-solarized-dark .ace_text-layer { cursor: text; color: #93A1A1;}.ace-solarized-dark .ace_cursor { border-left: 2px solid #D30102;}.ace-solarized-dark .ace_cursor.ace_overwrite { border-left: 0px; border-bottom: 1px solid #D30102;} .ace-solarized-dark .ace_marker-layer .ace_selection { background: #073642;}.ace-solarized-dark .ace_marker-layer .ace_step { background: rgb(198, 219, 174);}.ace-solarized-dark .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid rgba(147, 161, 161, 0.50);}.ace-solarized-dark .ace_marker-layer .ace_active_line { background: #073642;}.ace-solarized-dark .ace_marker-layer .ace_selected_word { border: 1px solid #073642;} .ace-solarized-dark .ace_invisible { color: rgba(147, 161, 161, 0.50);}.ace-solarized-dark .ace_keyword { color:#859900;}.ace-solarized-dark .ace_constant.ace_language { color:#B58900;}.ace-solarized-dark .ace_constant.ace_numeric { color:#D33682;}.ace-solarized-dark .ace_fold { background-color: #268BD2; border-color: #93A1A1;}.ace-solarized-dark .ace_support.ace_function { color:#268BD2;}.ace-solarized-dark .ace_string { color:#2AA198;}.ace-solarized-dark .ace_string.ace_regexp { color:#D30102;}.ace-solarized-dark .ace_comment { font-style:italic;color:#657B83;}.ace-solarized-dark .ace_variable.ace_language { color:#268BD2;}.ace-solarized-dark .ace_entity.ace_other.ace_attribute-name { color:#93A1A1;}.ace-solarized-dark .ace_entity.ace_name.ace_function { color:#268BD2;}.ace-solarized-dark .ace_markup.ace_underline { text-decoration:underline;}";var d=a("../lib/dom");d.importCssString(b.cssText,b.cssClass)})
@@ -1 +0,0 @@
define("ace/theme/solarized_light",["require","exports","module","ace/lib/dom"],function(a,b,c){b.isDark=!1,b.cssClass="ace-solarized-light",b.cssText=".ace-solarized-light .ace_editor { border: 2px solid rgb(159, 159, 159);}.ace-solarized-light .ace_editor.ace_focus { border: 2px solid #327fbd;}.ace-solarized-light .ace_gutter { background: #e8e8e8; color: #333;}.ace-solarized-light .ace_print_margin { width: 1px; background: #e8e8e8;}.ace-solarized-light .ace_scroller { background-color: #FDF6E3;}.ace-solarized-light .ace_text-layer { cursor: text; color: #586E75;}.ace-solarized-light .ace_cursor { border-left: 2px solid #000000;}.ace-solarized-light .ace_cursor.ace_overwrite { border-left: 0px; border-bottom: 1px solid #000000;} .ace-solarized-light .ace_marker-layer .ace_selection { background: #073642;}.ace-solarized-light .ace_marker-layer .ace_step { background: rgb(198, 219, 174);}.ace-solarized-light .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid rgba(147, 161, 161, 0.50);}.ace-solarized-light .ace_marker-layer .ace_active_line { background: #EEE8D5;}.ace-solarized-light .ace_marker-layer .ace_selected_word { border: 1px solid #073642;} .ace-solarized-light .ace_invisible { color: rgba(147, 161, 161, 0.50);}.ace-solarized-light .ace_keyword { color:#859900;}.ace-solarized-light .ace_constant.ace_language { color:#B58900;}.ace-solarized-light .ace_constant.ace_numeric { color:#D33682;}.ace-solarized-light .ace_fold { background-color: #268BD2; border-color: #586E75;}.ace-solarized-light .ace_support.ace_function { color:#268BD2;}.ace-solarized-light .ace_string { color:#2AA198;}.ace-solarized-light .ace_string.ace_regexp { color:#D30102;}.ace-solarized-light .ace_comment { color:#93A1A1;}.ace-solarized-light .ace_variable.ace_language { color:#268BD2;}.ace-solarized-light .ace_entity.ace_other.ace_attribute-name { color:#93A1A1;}.ace-solarized-light .ace_entity.ace_name.ace_function { color:#268BD2;}.ace-solarized-light .ace_markup.ace_underline { text-decoration:underline;}";var d=a("../lib/dom");d.importCssString(b.cssText,b.cssClass)})
@@ -1 +0,0 @@
define("ace/theme/tomorrow",["require","exports","module","ace/lib/dom"],function(a,b,c){b.isDark=!1,b.cssClass="ace-tomorrow",b.cssText=".ace-tomorrow .ace_editor { border: 2px solid rgb(159, 159, 159);}.ace-tomorrow .ace_editor.ace_focus { border: 2px solid #327fbd;}.ace-tomorrow .ace_gutter { background: #e8e8e8; color: #333;}.ace-tomorrow .ace_print_margin { width: 1px; background: #e8e8e8;}.ace-tomorrow .ace_scroller { background-color: #FFFFFF;}.ace-tomorrow .ace_text-layer { cursor: text; color: #4D4D4C;}.ace-tomorrow .ace_cursor { border-left: 2px solid #AEAFAD;}.ace-tomorrow .ace_cursor.ace_overwrite { border-left: 0px; border-bottom: 1px solid #AEAFAD;} .ace-tomorrow .ace_marker-layer .ace_selection { background: #D6D6D6;}.ace-tomorrow .ace_marker-layer .ace_step { background: rgb(198, 219, 174);}.ace-tomorrow .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid #D1D1D1;}.ace-tomorrow .ace_marker-layer .ace_active_line { background: #EFEFEF;}.ace-tomorrow .ace_marker-layer .ace_selected_word { border: 1px solid #D6D6D6;} .ace-tomorrow .ace_invisible { color: #D1D1D1;}.ace-tomorrow .ace_keyword { color:#8959A8;}.ace-tomorrow .ace_keyword.ace_operator { color:#3E999F;}.ace-tomorrow .ace_constant.ace_language { color:#F5871F;}.ace-tomorrow .ace_constant.ace_numeric { color:#F5871F;}.ace-tomorrow .ace_invalid { color:#FFFFFF;background-color:#C82829;}.ace-tomorrow .ace_invalid.ace_deprecated { color:#FFFFFF;background-color:#8959A8;}.ace-tomorrow .ace_fold { background-color: #4271AE; border-color: #4D4D4C;}.ace-tomorrow .ace_support.ace_function { color:#4271AE;}.ace-tomorrow .ace_string { color:#718C00;}.ace-tomorrow .ace_string.ace_regexp { color:#C82829;}.ace-tomorrow .ace_comment { color:#8E908C;}.ace-tomorrow .ace_variable { color:#C82829;}.ace-tomorrow .ace_meta.ace_tag { color:#C82829;}.ace-tomorrow .ace_entity.ace_other.ace_attribute-name { color:#C82829;}.ace-tomorrow .ace_entity.ace_name.ace_function { color:#4271AE;}.ace-tomorrow .ace_markup.ace_underline { text-decoration:underline;}.ace-tomorrow .ace_markup.ace_heading { color:#718C00;}";var d=a("../lib/dom");d.importCssString(b.cssText,b.cssClass)})
@@ -1 +0,0 @@
define("ace/theme/tomorrow_night",["require","exports","module","ace/lib/dom"],function(a,b,c){b.isDark=!0,b.cssClass="ace-tomorrow-night",b.cssText=".ace-tomorrow-night .ace_editor { border: 2px solid rgb(159, 159, 159);}.ace-tomorrow-night .ace_editor.ace_focus { border: 2px solid #327fbd;}.ace-tomorrow-night .ace_gutter { background: #e8e8e8; color: #333;}.ace-tomorrow-night .ace_print_margin { width: 1px; background: #e8e8e8;}.ace-tomorrow-night .ace_scroller { background-color: #1D1F21;}.ace-tomorrow-night .ace_text-layer { cursor: text; color: #C5C8C6;}.ace-tomorrow-night .ace_cursor { border-left: 2px solid #AEAFAD;}.ace-tomorrow-night .ace_cursor.ace_overwrite { border-left: 0px; border-bottom: 1px solid #AEAFAD;} .ace-tomorrow-night .ace_marker-layer .ace_selection { background: #373B41;}.ace-tomorrow-night .ace_marker-layer .ace_step { background: rgb(198, 219, 174);}.ace-tomorrow-night .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid #4B4E55;}.ace-tomorrow-night .ace_marker-layer .ace_active_line { background: #282A2E;}.ace-tomorrow-night .ace_marker-layer .ace_selected_word { border: 1px solid #373B41;} .ace-tomorrow-night .ace_invisible { color: #4B4E55;}.ace-tomorrow-night .ace_keyword { color:#B294BB;}.ace-tomorrow-night .ace_keyword.ace_operator { color:#8ABEB7;}.ace-tomorrow-night .ace_constant.ace_language { color:#DE935F;}.ace-tomorrow-night .ace_constant.ace_numeric { color:#DE935F;}.ace-tomorrow-night .ace_invalid { color:#CED2CF;background-color:#DF5F5F;}.ace-tomorrow-night .ace_invalid.ace_deprecated { color:#CED2CF;background-color:#B798BF;}.ace-tomorrow-night .ace_fold { background-color: #81A2BE; border-color: #C5C8C6;}.ace-tomorrow-night .ace_support.ace_function { color:#81A2BE;}.ace-tomorrow-night .ace_string { color:#B5BD68;}.ace-tomorrow-night .ace_string.ace_regexp { color:#CC6666;}.ace-tomorrow-night .ace_comment { color:#969896;}.ace-tomorrow-night .ace_variable { color:#CC6666;}.ace-tomorrow-night .ace_meta.ace_tag { color:#CC6666;}.ace-tomorrow-night .ace_entity.ace_other.ace_attribute-name { color:#CC6666;}.ace-tomorrow-night .ace_entity.ace_name.ace_function { color:#81A2BE;}.ace-tomorrow-night .ace_markup.ace_underline { text-decoration:underline;}.ace-tomorrow-night .ace_markup.ace_heading { color:#B5BD68;}";var d=a("../lib/dom");d.importCssString(b.cssText,b.cssClass)})
@@ -1 +0,0 @@
define("ace/theme/tomorrow_night_blue",["require","exports","module","ace/lib/dom"],function(a,b,c){b.isDark=!0,b.cssClass="ace-tomorrow-night-blue",b.cssText=".ace-tomorrow-night-blue .ace_editor { border: 2px solid rgb(159, 159, 159);}.ace-tomorrow-night-blue .ace_editor.ace_focus { border: 2px solid #327fbd;}.ace-tomorrow-night-blue .ace_gutter { background: #e8e8e8; color: #333;}.ace-tomorrow-night-blue .ace_print_margin { width: 1px; background: #e8e8e8;}.ace-tomorrow-night-blue .ace_scroller { background-color: #002451;}.ace-tomorrow-night-blue .ace_text-layer { cursor: text; color: #FFFFFF;}.ace-tomorrow-night-blue .ace_cursor { border-left: 2px solid #FFFFFF;}.ace-tomorrow-night-blue .ace_cursor.ace_overwrite { border-left: 0px; border-bottom: 1px solid #FFFFFF;} .ace-tomorrow-night-blue .ace_marker-layer .ace_selection { background: #003F8E;}.ace-tomorrow-night-blue .ace_marker-layer .ace_step { background: rgb(198, 219, 174);}.ace-tomorrow-night-blue .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid #404F7D;}.ace-tomorrow-night-blue .ace_marker-layer .ace_active_line { background: #00346E;}.ace-tomorrow-night-blue .ace_marker-layer .ace_selected_word { border: 1px solid #003F8E;} .ace-tomorrow-night-blue .ace_invisible { color: #404F7D;}.ace-tomorrow-night-blue .ace_keyword { color:#EBBBFF;}.ace-tomorrow-night-blue .ace_keyword.ace_operator { color:#99FFFF;}.ace-tomorrow-night-blue .ace_constant.ace_language { color:#FFC58F;}.ace-tomorrow-night-blue .ace_constant.ace_numeric { color:#FFC58F;}.ace-tomorrow-night-blue .ace_invalid { color:#FFFFFF;background-color:#F99DA5;}.ace-tomorrow-night-blue .ace_invalid.ace_deprecated { color:#FFFFFF;background-color:#EBBBFF;}.ace-tomorrow-night-blue .ace_fold { background-color: #BBDAFF; border-color: #FFFFFF;}.ace-tomorrow-night-blue .ace_support.ace_function { color:#BBDAFF;}.ace-tomorrow-night-blue .ace_string { color:#D1F1A9;}.ace-tomorrow-night-blue .ace_string.ace_regexp { color:#FF9DA4;}.ace-tomorrow-night-blue .ace_comment { color:#7285B7;}.ace-tomorrow-night-blue .ace_variable { color:#FF9DA4;}.ace-tomorrow-night-blue .ace_meta.ace_tag { color:#FF9DA4;}.ace-tomorrow-night-blue .ace_entity.ace_other.ace_attribute-name { color:#FF9DA4;}.ace-tomorrow-night-blue .ace_entity.ace_name.ace_function { color:#BBDAFF;}.ace-tomorrow-night-blue .ace_markup.ace_underline { text-decoration:underline;}.ace-tomorrow-night-blue .ace_markup.ace_heading { color:#D1F1A9;}";var d=a("../lib/dom");d.importCssString(b.cssText,b.cssClass)})
@@ -1 +0,0 @@
define("ace/theme/tomorrow_night_bright",["require","exports","module","ace/lib/dom"],function(a,b,c){b.isDark=!0,b.cssClass="ace-tomorrow-night-bright",b.cssText=".ace-tomorrow-night-bright .ace_editor { border: 2px solid rgb(159, 159, 159);}.ace-tomorrow-night-bright .ace_editor.ace_focus { border: 2px solid #327fbd;}.ace-tomorrow-night-bright .ace_gutter { background: #e8e8e8; color: #333;}.ace-tomorrow-night-bright .ace_print_margin { width: 1px; background: #e8e8e8;}.ace-tomorrow-night-bright .ace_scroller { background-color: #000000;}.ace-tomorrow-night-bright .ace_text-layer { cursor: text; color: #DEDEDE;}.ace-tomorrow-night-bright .ace_cursor { border-left: 2px solid #9F9F9F;}.ace-tomorrow-night-bright .ace_cursor.ace_overwrite { border-left: 0px; border-bottom: 1px solid #9F9F9F;} .ace-tomorrow-night-bright .ace_marker-layer .ace_selection { background: #424242;}.ace-tomorrow-night-bright .ace_marker-layer .ace_step { background: rgb(198, 219, 174);}.ace-tomorrow-night-bright .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid #343434;}.ace-tomorrow-night-bright .ace_marker-layer .ace_active_line { background: #2A2A2A;}.ace-tomorrow-night-bright .ace_marker-layer .ace_selected_word { border: 1px solid #424242;} .ace-tomorrow-night-bright .ace_invisible { color: #343434;}.ace-tomorrow-night-bright .ace_keyword { color:#C397D8;}.ace-tomorrow-night-bright .ace_keyword.ace_operator { color:#70C0B1;}.ace-tomorrow-night-bright .ace_constant.ace_language { color:#E78C45;}.ace-tomorrow-night-bright .ace_constant.ace_numeric { color:#E78C45;}.ace-tomorrow-night-bright .ace_invalid { color:#CED2CF;background-color:#DF5F5F;}.ace-tomorrow-night-bright .ace_invalid.ace_deprecated { color:#CED2CF;background-color:#B798BF;}.ace-tomorrow-night-bright .ace_fold { background-color: #7AA6DA; border-color: #DEDEDE;}.ace-tomorrow-night-bright .ace_support.ace_function { color:#7AA6DA;}.ace-tomorrow-night-bright .ace_string { color:#B9CA4A;}.ace-tomorrow-night-bright .ace_string.ace_regexp { color:#D54E53;}.ace-tomorrow-night-bright .ace_comment { color:#969896;}.ace-tomorrow-night-bright .ace_variable { color:#D54E53;}.ace-tomorrow-night-bright .ace_meta.ace_tag { color:#D54E53;}.ace-tomorrow-night-bright .ace_entity.ace_other.ace_attribute-name { color:#D54E53;}.ace-tomorrow-night-bright .ace_entity.ace_name.ace_function { color:#7AA6DA;}.ace-tomorrow-night-bright .ace_markup.ace_underline { text-decoration:underline;}.ace-tomorrow-night-bright .ace_markup.ace_heading { color:#B9CA4A;}";var d=a("../lib/dom");d.importCssString(b.cssText,b.cssClass)})
@@ -1 +0,0 @@
define("ace/theme/tomorrow_night_eighties",["require","exports","module","ace/lib/dom"],function(a,b,c){b.isDark=!0,b.cssClass="ace-tomorrow-night-eighties",b.cssText=".ace-tomorrow-night-eighties .ace_editor { border: 2px solid rgb(159, 159, 159);}.ace-tomorrow-night-eighties .ace_editor.ace_focus { border: 2px solid #327fbd;}.ace-tomorrow-night-eighties .ace_gutter { background: #e8e8e8; color: #333;}.ace-tomorrow-night-eighties .ace_print_margin { width: 1px; background: #e8e8e8;}.ace-tomorrow-night-eighties .ace_scroller { background-color: #2D2D2D;}.ace-tomorrow-night-eighties .ace_text-layer { cursor: text; color: #CCCCCC;}.ace-tomorrow-night-eighties .ace_cursor { border-left: 2px solid #CCCCCC;}.ace-tomorrow-night-eighties .ace_cursor.ace_overwrite { border-left: 0px; border-bottom: 1px solid #CCCCCC;} .ace-tomorrow-night-eighties .ace_marker-layer .ace_selection { background: #515151;}.ace-tomorrow-night-eighties .ace_marker-layer .ace_step { background: rgb(198, 219, 174);}.ace-tomorrow-night-eighties .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid #6A6A6A;}.ace-tomorrow-night-eighties .ace_marker-layer .ace_active_line { background: #393939;}.ace-tomorrow-night-eighties .ace_marker-layer .ace_selected_word { border: 1px solid #515151;} .ace-tomorrow-night-eighties .ace_invisible { color: #6A6A6A;}.ace-tomorrow-night-eighties .ace_keyword { color:#CC99CC;}.ace-tomorrow-night-eighties .ace_keyword.ace_operator { color:#66CCCC;}.ace-tomorrow-night-eighties .ace_constant.ace_language { color:#F99157;}.ace-tomorrow-night-eighties .ace_constant.ace_numeric { color:#F99157;}.ace-tomorrow-night-eighties .ace_invalid { color:#CDCDCD;background-color:#F2777A;}.ace-tomorrow-night-eighties .ace_invalid.ace_deprecated { color:#CDCDCD;background-color:#CC99CC;}.ace-tomorrow-night-eighties .ace_fold { background-color: #6699CC; border-color: #CCCCCC;}.ace-tomorrow-night-eighties .ace_support.ace_function { color:#6699CC;}.ace-tomorrow-night-eighties .ace_string { color:#99CC99;}.ace-tomorrow-night-eighties .ace_comment { color:#999999;}.ace-tomorrow-night-eighties .ace_variable { color:#F2777A;}.ace-tomorrow-night-eighties .ace_meta.ace_tag { color:#F2777A;}.ace-tomorrow-night-eighties .ace_entity.ace_other.ace_attribute-name { color:#F2777A;}.ace-tomorrow-night-eighties .ace_entity.ace_name.ace_function { color:#6699CC;}.ace-tomorrow-night-eighties .ace_markup.ace_underline { text-decoration:underline;}.ace-tomorrow-night-eighties .ace_markup.ace_heading { color:#99CC99;}";var d=a("../lib/dom");d.importCssString(b.cssText,b.cssClass)})
@@ -1 +0,0 @@
define("ace/theme/twilight",["require","exports","module","ace/lib/dom"],function(a,b,c){b.isDark=!0,b.cssClass="ace-twilight",b.cssText=".ace-twilight .ace_editor { border: 2px solid rgb(159, 159, 159);}.ace-twilight .ace_editor.ace_focus { border: 2px solid #327fbd;}.ace-twilight .ace_gutter { background: #e8e8e8; color: #333;}.ace-twilight .ace_print_margin { width: 1px; background: #e8e8e8;}.ace-twilight .ace_scroller { background-color: #141414;}.ace-twilight .ace_text-layer { cursor: text; color: #F8F8F8;}.ace-twilight .ace_cursor { border-left: 2px solid #A7A7A7;}.ace-twilight .ace_cursor.ace_overwrite { border-left: 0px; border-bottom: 1px solid #A7A7A7;} .ace-twilight .ace_marker-layer .ace_selection { background: rgba(221, 240, 255, 0.20);}.ace-twilight .ace_marker-layer .ace_step { background: rgb(198, 219, 174);}.ace-twilight .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid rgba(255, 255, 255, 0.25);}.ace-twilight .ace_marker-layer .ace_active_line { background: rgba(255, 255, 255, 0.031);}.ace-twilight .ace_marker-layer .ace_selected_word { border: 1px solid rgba(221, 240, 255, 0.20);} .ace-twilight .ace_invisible { color: rgba(255, 255, 255, 0.25);}.ace-twilight .ace_keyword { color:#CDA869;}.ace-twilight .ace_constant { color:#CF6A4C;}.ace-twilight .ace_invalid.ace_illegal { color:#F8F8F8;background-color:rgba(86, 45, 86, 0.75);}.ace-twilight .ace_invalid.ace_deprecated { text-decoration:underline;font-style:italic;color:#D2A8A1;}.ace-twilight .ace_support { color:#9B859D;}.ace-twilight .ace_fold { background-color: #AC885B; border-color: #F8F8F8;}.ace-twilight .ace_support.ace_function { color:#DAD085;}.ace-twilight .ace_string { color:#8F9D6A;}.ace-twilight .ace_string.ace_regexp { color:#E9C062;}.ace-twilight .ace_comment { font-style:italic;color:#5F5A60;}.ace-twilight .ace_variable { color:#7587A6;}.ace-twilight .ace_xml_pe { color:#494949;}.ace-twilight .ace_meta.ace_tag { color:#AC885B;}.ace-twilight .ace_entity.ace_name.ace_function { color:#AC885B;}.ace-twilight .ace_markup.ace_underline { text-decoration:underline;}.ace-twilight .ace_markup.ace_heading { color:#CF6A4C;}.ace-twilight .ace_markup.ace_list { color:#F9EE98;}";var d=a("../lib/dom");d.importCssString(b.cssText,b.cssClass)})
@@ -1 +0,0 @@
define("ace/theme/vibrant_ink",["require","exports","module","ace/lib/dom"],function(a,b,c){b.isDark=!0,b.cssClass="ace-vibrant-ink",b.cssText=".ace-vibrant-ink .ace_editor { border: 2px solid rgb(159, 159, 159);}.ace-vibrant-ink .ace_editor.ace_focus { border: 2px solid #327fbd;}.ace-vibrant-ink .ace_gutter { background: #e8e8e8; color: #333;}.ace-vibrant-ink .ace_print_margin { width: 1px; background: #e8e8e8;}.ace-vibrant-ink .ace_scroller { background-color: #0F0F0F;}.ace-vibrant-ink .ace_text-layer { cursor: text; color: #FFFFFF;}.ace-vibrant-ink .ace_cursor { border-left: 2px solid #FFFFFF;}.ace-vibrant-ink .ace_cursor.ace_overwrite { border-left: 0px; border-bottom: 1px solid #FFFFFF;} .ace-vibrant-ink .ace_marker-layer .ace_selection { background: #6699CC;}.ace-vibrant-ink .ace_marker-layer .ace_step { background: rgb(198, 219, 174);}.ace-vibrant-ink .ace_marker-layer .ace_bracket { margin: -1px 0 0 -1px; border: 1px solid #404040;}.ace-vibrant-ink .ace_marker-layer .ace_active_line { background: #333333;}.ace-vibrant-ink .ace_marker-layer .ace_selected_word { border: 1px solid #6699CC;} .ace-vibrant-ink .ace_invisible { color: #404040;}.ace-vibrant-ink .ace_keyword { color:#FF6600;}.ace-vibrant-ink .ace_constant { color:#339999;}.ace-vibrant-ink .ace_constant.ace_numeric { color:#99CC99;}.ace-vibrant-ink .ace_invalid { color:#CCFF33;background-color:#000000;}.ace-vibrant-ink .ace_invalid.ace_deprecated { color:#CCFF33;background-color:#000000;}.ace-vibrant-ink .ace_fold { background-color: #FFCC00; border-color: #FFFFFF;}.ace-vibrant-ink .ace_support.ace_function { color:#FFCC00;}.ace-vibrant-ink .ace_string { color:#66FF00;}.ace-vibrant-ink .ace_string.ace_regexp { color:#44B4CC;}.ace-vibrant-ink .ace_comment { color:#9933CC;}.ace-vibrant-ink .ace_entity.ace_other.ace_attribute-name { font-style:italic;color:#99CC99;}.ace-vibrant-ink .ace_entity.ace_name.ace_function { color:#FFCC00;}.ace-vibrant-ink .ace_markup.ace_underline { text-decoration:underline;}";var d=a("../lib/dom");d.importCssString(b.cssText,b.cssClass)})
+284
View File
@@ -0,0 +1,284 @@
/* from http://code.google.com/p/zen-coding/ MIT license */
var _=function(){function h(a,b,d){if(a===b)return a!==0||1/a==1/b;if(a==null||b==null)return a===b;if(a._chain)a=a._wrapped;if(b._chain)b=b._wrapped;if(a.isEqual&&k.isFunction(a.isEqual))return a.isEqual(b);if(b.isEqual&&k.isFunction(b.isEqual))return b.isEqual(a);var c=i.call(a);if(c!=i.call(b))return!1;switch(c){case "[object String]":return a==String(b);case "[object Number]":return a!=+a?b!=+b:a==0?1/a==1/b:a==+b;case "[object Date]":case "[object Boolean]":return+a==+b;case "[object RegExp]":return a.source==
b.source&&a.global==b.global&&a.multiline==b.multiline&&a.ignoreCase==b.ignoreCase}if(typeof a!="object"||typeof b!="object")return!1;for(var e=d.length;e--;)if(d[e]==a)return!0;d.push(a);var e=0,f=!0;if(c=="[object Array]"){if(e=a.length,f=e==b.length)for(;e--;)if(!(f=e in a==e in b&&h(a[e],b[e],d)))break}else{if("constructor"in a!="constructor"in b||a.constructor!=b.constructor)return!1;for(var j in a)if(k.has(a,j)&&(e++,!(f=k.has(b,j)&&h(a[j],b[j],d))))break;if(f){for(j in b)if(k.has(b,j)&&!e--)break;
f=!e}}d.pop();return f}var e=this,g=e._,f={},c=Array.prototype,b=Object.prototype,a=c.slice,d=c.unshift,i=b.toString,j=b.hasOwnProperty,l=c.forEach,n=c.map,m=c.reduce,o=c.reduceRight,q=c.filter,r=c.every,t=c.some,x=c.indexOf,u=c.lastIndexOf,b=Array.isArray,z=Object.keys,A=Function.prototype.bind,k=function(a){return new B(a)};if(typeof exports!=="undefined"){if(typeof module!=="undefined"&&module.exports)exports=module.exports=k;exports._=k}else e._=k;k.VERSION="1.3.3";var v=k.each=k.forEach=function(a,
b,d){if(a!=null)if(l&&a.forEach===l)a.forEach(b,d);else if(a.length===+a.length)for(var c=0,e=a.length;c<e;c++){if(c in a&&b.call(d,a[c],c,a)===f)break}else for(c in a)if(k.has(a,c)&&b.call(d,a[c],c,a)===f)break};k.map=k.collect=function(a,b,c){var d=[];if(a==null)return d;if(n&&a.map===n)return a.map(b,c);v(a,function(a,e,i){d[d.length]=b.call(c,a,e,i)});if(a.length===+a.length)d.length=a.length;return d};k.reduce=k.foldl=k.inject=function(a,b,d,c){var e=arguments.length>2;a==null&&(a=[]);if(m&&
a.reduce===m)return c&&(b=k.bind(b,c)),e?a.reduce(b,d):a.reduce(b);v(a,function(a,i,f){e?d=b.call(c,d,a,i,f):(d=a,e=!0)});if(!e)throw new TypeError("Reduce of empty array with no initial value");return d};k.reduceRight=k.foldr=function(a,b,d,c){var e=arguments.length>2;a==null&&(a=[]);if(o&&a.reduceRight===o)return c&&(b=k.bind(b,c)),e?a.reduceRight(b,d):a.reduceRight(b);var i=k.toArray(a).reverse();c&&!e&&(b=k.bind(b,c));return e?k.reduce(i,b,d,c):k.reduce(i,b)};k.find=k.detect=function(a,b,d){var c;
F(a,function(a,e,i){if(b.call(d,a,e,i))return c=a,!0});return c};k.filter=k.select=function(a,b,d){var c=[];if(a==null)return c;if(q&&a.filter===q)return a.filter(b,d);v(a,function(a,e,i){b.call(d,a,e,i)&&(c[c.length]=a)});return c};k.reject=function(a,b,c){var d=[];if(a==null)return d;v(a,function(a,e,i){b.call(c,a,e,i)||(d[d.length]=a)});return d};k.every=k.all=function(a,b,d){var c=!0;if(a==null)return c;if(r&&a.every===r)return a.every(b,d);v(a,function(a,e,i){if(!(c=c&&b.call(d,a,e,i)))return f});
return!!c};var F=k.some=k.any=function(a,b,c){b||(b=k.identity);var d=!1;if(a==null)return d;if(t&&a.some===t)return a.some(b,c);v(a,function(a,e,i){if(d||(d=b.call(c,a,e,i)))return f});return!!d};k.include=k.contains=function(a,b){var d=!1;return a==null?d:x&&a.indexOf===x?a.indexOf(b)!=-1:d=F(a,function(a){return a===b})};k.invoke=function(b,d){var c=a.call(arguments,2);return k.map(b,function(a){return(k.isFunction(d)?d||a:a[d]).apply(a,c)})};k.pluck=function(a,b){return k.map(a,function(a){return a[b]})};
k.max=function(a,b,d){if(!b&&k.isArray(a)&&a[0]===+a[0])return Math.max.apply(Math,a);if(!b&&k.isEmpty(a))return-Infinity;var c={computed:-Infinity};v(a,function(a,e,i){e=b?b.call(d,a,e,i):a;e>=c.computed&&(c={value:a,computed:e})});return c.value};k.min=function(a,b,d){if(!b&&k.isArray(a)&&a[0]===+a[0])return Math.min.apply(Math,a);if(!b&&k.isEmpty(a))return Infinity;var c={computed:Infinity};v(a,function(a,e,i){e=b?b.call(d,a,e,i):a;e<c.computed&&(c={value:a,computed:e})});return c.value};k.shuffle=
function(a){var b=[],d;v(a,function(a,c){d=Math.floor(Math.random()*(c+1));b[c]=b[d];b[d]=a});return b};k.sortBy=function(a,b,d){var c=k.isFunction(b)?b:function(a){return a[b]};return k.pluck(k.map(a,function(a,b,e){return{value:a,criteria:c.call(d,a,b,e)}}).sort(function(a,b){var d=a.criteria,c=b.criteria;return d===void 0?1:c===void 0?-1:d<c?-1:d>c?1:0}),"value")};k.groupBy=function(a,b){var d={},c=k.isFunction(b)?b:function(a){return a[b]};v(a,function(a,b){var e=c(a,b);(d[e]||(d[e]=[])).push(a)});
return d};k.sortedIndex=function(a,b,d){d||(d=k.identity);for(var c=0,e=a.length;c<e;){var i=c+e>>1;d(a[i])<d(b)?c=i+1:e=i}return c};k.toArray=function(b){return!b?[]:k.isArray(b)?a.call(b):k.isArguments(b)?a.call(b):b.toArray&&k.isFunction(b.toArray)?b.toArray():k.values(b)};k.size=function(a){return k.isArray(a)?a.length:k.keys(a).length};k.first=k.head=k.take=function(b,d,c){return d!=null&&!c?a.call(b,0,d):b[0]};k.initial=function(b,d,c){return a.call(b,0,b.length-(d==null||c?1:d))};k.last=function(b,
d,c){return d!=null&&!c?a.call(b,Math.max(b.length-d,0)):b[b.length-1]};k.rest=k.tail=function(b,d,c){return a.call(b,d==null||c?1:d)};k.compact=function(a){return k.filter(a,function(a){return!!a})};k.flatten=function(a,b){return k.reduce(a,function(a,d){if(k.isArray(d))return a.concat(b?d:k.flatten(d));a[a.length]=d;return a},[])};k.without=function(b){return k.difference(b,a.call(arguments,1))};k.uniq=k.unique=function(a,b,d){var d=d?k.map(a,d):a,c=[];a.length<3&&(b=!0);k.reduce(d,function(d,e,
i){if(b?k.last(d)!==e||!d.length:!k.include(d,e))d.push(e),c.push(a[i]);return d},[]);return c};k.union=function(){return k.uniq(k.flatten(arguments,!0))};k.intersection=k.intersect=function(b){var d=a.call(arguments,1);return k.filter(k.uniq(b),function(a){return k.every(d,function(b){return k.indexOf(b,a)>=0})})};k.difference=function(b){var d=k.flatten(a.call(arguments,1),!0);return k.filter(b,function(a){return!k.include(d,a)})};k.zip=function(){for(var b=a.call(arguments),d=k.max(k.pluck(b,"length")),
c=Array(d),e=0;e<d;e++)c[e]=k.pluck(b,""+e);return c};k.indexOf=function(a,b,d){if(a==null)return-1;var c;if(d)return d=k.sortedIndex(a,b),a[d]===b?d:-1;if(x&&a.indexOf===x)return a.indexOf(b);d=0;for(c=a.length;d<c;d++)if(d in a&&a[d]===b)return d;return-1};k.lastIndexOf=function(a,b){if(a==null)return-1;if(u&&a.lastIndexOf===u)return a.lastIndexOf(b);for(var d=a.length;d--;)if(d in a&&a[d]===b)return d;return-1};k.range=function(a,b,d){arguments.length<=1&&(b=a||0,a=0);for(var d=arguments[2]||1,
c=Math.max(Math.ceil((b-a)/d),0),e=0,i=Array(c);e<c;)i[e++]=a,a+=d;return i};var G=function(){};k.bind=function(b,d){var c,e;if(b.bind===A&&A)return A.apply(b,a.call(arguments,1));if(!k.isFunction(b))throw new TypeError;e=a.call(arguments,2);return c=function(){if(!(this instanceof c))return b.apply(d,e.concat(a.call(arguments)));G.prototype=b.prototype;var i=new G,f=b.apply(i,e.concat(a.call(arguments)));return Object(f)===f?f:i}};k.bindAll=function(b){var d=a.call(arguments,1);d.length==0&&(d=k.functions(b));
v(d,function(a){b[a]=k.bind(b[a],b)});return b};k.memoize=function(a,b){var d={};b||(b=k.identity);return function(){var c=b.apply(this,arguments);return k.has(d,c)?d[c]:d[c]=a.apply(this,arguments)}};k.delay=function(b,d){var c=a.call(arguments,2);return setTimeout(function(){return b.apply(null,c)},d)};k.defer=function(b){return k.delay.apply(k,[b,1].concat(a.call(arguments,1)))};k.throttle=function(a,b){var d,c,e,i,f,j,g=k.debounce(function(){f=i=!1},b);return function(){d=this;c=arguments;var k;
e||(e=setTimeout(function(){e=null;f&&a.apply(d,c);g()},b));i?f=!0:j=a.apply(d,c);g();i=!0;return j}};k.debounce=function(a,b,d){var c;return function(){var e=this,i=arguments;d&&!c&&a.apply(e,i);clearTimeout(c);c=setTimeout(function(){c=null;d||a.apply(e,i)},b)}};k.once=function(a){var b=!1,d;return function(){if(b)return d;b=!0;return d=a.apply(this,arguments)}};k.wrap=function(b,d){return function(){var c=[b].concat(a.call(arguments,0));return d.apply(this,c)}};k.compose=function(){var a=arguments;
return function(){for(var b=arguments,d=a.length-1;d>=0;d--)b=[a[d].apply(this,b)];return b[0]}};k.after=function(a,b){return a<=0?b():function(){if(--a<1)return b.apply(this,arguments)}};k.keys=z||function(a){if(a!==Object(a))throw new TypeError("Invalid object");var b=[],d;for(d in a)k.has(a,d)&&(b[b.length]=d);return b};k.values=function(a){return k.map(a,k.identity)};k.functions=k.methods=function(a){var b=[],d;for(d in a)k.isFunction(a[d])&&b.push(d);return b.sort()};k.extend=function(b){v(a.call(arguments,
1),function(a){for(var d in a)b[d]=a[d]});return b};k.pick=function(b){var d={};v(k.flatten(a.call(arguments,1)),function(a){a in b&&(d[a]=b[a])});return d};k.defaults=function(b){v(a.call(arguments,1),function(a){for(var d in a)b[d]==null&&(b[d]=a[d])});return b};k.clone=function(a){return!k.isObject(a)?a:k.isArray(a)?a.slice():k.extend({},a)};k.tap=function(a,b){b(a);return a};k.isEqual=function(a,b){return h(a,b,[])};k.isEmpty=function(a){if(a==null)return!0;if(k.isArray(a)||k.isString(a))return a.length===
0;for(var b in a)if(k.has(a,b))return!1;return!0};k.isElement=function(a){return!!(a&&a.nodeType==1)};k.isArray=b||function(a){return i.call(a)=="[object Array]"};k.isObject=function(a){return a===Object(a)};k.isArguments=function(a){return i.call(a)=="[object Arguments]"};if(!k.isArguments(arguments))k.isArguments=function(a){return!(!a||!k.has(a,"callee"))};k.isFunction=function(a){return i.call(a)=="[object Function]"};k.isString=function(a){return i.call(a)=="[object String]"};k.isNumber=function(a){return i.call(a)==
"[object Number]"};k.isFinite=function(a){return k.isNumber(a)&&isFinite(a)};k.isNaN=function(a){return a!==a};k.isBoolean=function(a){return a===!0||a===!1||i.call(a)=="[object Boolean]"};k.isDate=function(a){return i.call(a)=="[object Date]"};k.isRegExp=function(a){return i.call(a)=="[object RegExp]"};k.isNull=function(a){return a===null};k.isUndefined=function(a){return a===void 0};k.has=function(a,b){return j.call(a,b)};k.noConflict=function(){e._=g;return this};k.identity=function(a){return a};
k.times=function(a,b,d){for(var c=0;c<a;c++)b.call(d,c)};k.escape=function(a){return(""+a).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;").replace(/\//g,"&#x2F;")};k.result=function(a,b){if(a==null)return null;var d=a[b];return k.isFunction(d)?d.call(a):d};k.mixin=function(a){v(k.functions(a),function(b){H(b,k[b]=a[b])})};var s=0;k.uniqueId=function(a){var b=s++;return a?a+b:b};k.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,
escape:/<%-([\s\S]+?)%>/g};var w=/.^/,y={"\\":"\\","'":"'",r:"\r",n:"\n",t:"\t",u2028:"\u2028",u2029:"\u2029"},C;for(C in y)y[y[C]]=C;var I=/\\|'|\r|\n|\t|\u2028|\u2029/g,J=/\\(\\|'|r|n|t|u2028|u2029)/g,D=function(a){return a.replace(J,function(a,b){return y[b]})};k.template=function(a,b,d){d=k.defaults(d||{},k.templateSettings);a="__p+='"+a.replace(I,function(a){return"\\"+y[a]}).replace(d.escape||w,function(a,b){return"'+\n_.escape("+D(b)+")+\n'"}).replace(d.interpolate||w,function(a,b){return"'+\n("+
D(b)+")+\n'"}).replace(d.evaluate||w,function(a,b){return"';\n"+D(b)+"\n;__p+='"})+"';\n";d.variable||(a="with(obj||{}){\n"+a+"}\n");var a="var __p='';var print=function(){__p+=Array.prototype.join.call(arguments, '')};\n"+a+"return __p;\n",c=new Function(d.variable||"obj","_",a);if(b)return c(b,k);b=function(a){return c.call(this,a,k)};b.source="function("+(d.variable||"obj")+"){\n"+a+"}";return b};k.chain=function(a){return k(a).chain()};var B=function(a){this._wrapped=a};k.prototype=B.prototype;
var E=function(a,b){return b?k(a).chain():a},H=function(b,c){B.prototype[b]=function(){var b=a.call(arguments);d.call(b,this._wrapped);return E(c.apply(k,b),this._chain)}};k.mixin(k);v(["pop","push","reverse","shift","sort","splice","unshift"],function(a){var b=c[a];B.prototype[a]=function(){var d=this._wrapped;b.apply(d,arguments);var c=d.length;(a=="shift"||a=="splice")&&c===0&&delete d[0];return E(d,this._chain)}});v(["concat","join","slice"],function(a){var b=c[a];B.prototype[a]=function(){return E(b.apply(this._wrapped,
arguments),this._chain)}});B.prototype.chain=function(){this._chain=!0;return this};B.prototype.value=function(){return this._wrapped};return k}.call({}),emmet=function(h,e){function g(a,b,i){var f;f=b&&b.hasOwnProperty("constructor")?b.constructor:function(){a.apply(this,arguments)};e.extend(f,a);c.prototype=a.prototype;f.prototype=new c;b&&e.extend(f.prototype,b);i&&e.extend(f,i);f.prototype.constructor=f;f.__super__=a.prototype;return f}var f={_:e},c=function(){},b=null;return{define:function(a,
b){a in f||(f[a]=e.isFunction(b)?this.exec(b):b)},require:function(a){!(a in f)&&b&&b(a);return f[a]},exec:function(a,b){return a.call(b||h,e.bind(this.require,this),e,this)},extend:function(a,b){var c=g(this,a,b);c.extend=this.extend;if(a.hasOwnProperty("toString"))c.prototype.toString=a.toString;return c},expandAbbreviation:function(a,b,c,e){if(!a)return"";var b=b||"html",c=c||"plain",f=this.require("filters"),g=this.require("utils"),h=this.require("abbreviationParser"),c=this.require("profile").get(c,
b);this.require("tabStops").resetTabstopIndex();a=f.extractFromAbbreviation(a);e=h.parse(a[0],{syntax:b,contextNode:e});b=f.composeList(b,c,a[1]);f.apply(e,b,c);return g.replaceVariables(e.toString())},defaultSyntax:function(){return"html"},defaultProfile:function(){return"plain"},log:function(){h.console&&h.console.log&&h.console.log.apply(h.console,arguments)},setModuleLoader:function(a){b=a}}}(this,_);
emmet.define("abbreviationParser",function(h,e){function g(){this.parent=null;this.children=[];this._attributes=[];this.abbreviation="";this.counter=1;this._name=null;this._text="";this.repeatCount=1;this.hasImplicitRepeat=!1;this._data={};this.padding=this.content=this.end=this.start=""}function f(a){return a.substring(1,a.length-1)}function c(a){for(var a=h("utils").trim(a),b=new g,d=b.addChild(),i,j=h("stringStream").create(a),a=1E3,m;!j.eol()&&--a>0;)switch(i=j.peek(),i){case "(":j.start=j.pos;
if(j.skipToPair("(",")"))i=c(f(j.current())),(m=j.match(/^\*(\d+)?/,!0))&&d._setRepeat(m[1]),e.each(i.children,function(a){d.addChild(a)});else throw'Invalid abbreviation: mo matching ")" found for character at '+j.pos;break;case ">":d=d.addChild();j.next();break;case "+":d=d.parent.addChild();j.next();break;case "^":i=d.parent||d;d=(i.parent||i).addChild();j.next();break;default:j.start=j.pos,j.eatWhile(function(a){if(a=="["||a=="{"){if(j.skipToPair(a,q[a]))return j.backUp(1),!0;throw'Invalid abbreviation: mo matching "'+
q[a]+'" found for character at '+j.pos;}return a=="+"?(j.next(),a=j.eol()||~"+>^*".indexOf(j.peek()),j.backUp(1),a):a!="("&&n(a)}),d.setAbbreviation(j.current()),j.start=j.pos}if(a<1)throw"Endless loop detected";return b}function b(a){var a=h("utils").trim(a),b=[],a=h("stringStream").create(a);for(a.eatSpace();!a.eol();)if(a.start=a.pos,a.eatWhile(o)){var d=a.current(),c="";if(a.peek()=="="){a.next();a.start=a.pos;var e=a.peek();if(e=='"'||e=="'"){a.next();a:{for(var c=a,i=void 0;i=c.next();)if(i===
e){c=!0;break a}c=!1}if(c)c=a.current(),c=c.substring(1,c.length-1);else throw"Invalid attribute value";}else if(a.eatWhile(/[^\s\]]/))c=a.current();else throw"Invalid attribute value";}b.push({name:d,value:c});a.eatSpace()}else break;return b}function a(a){for(var c=[],e={"#":"id",".":"class"},i=null,j=h("stringStream").create(a);!j.eol();)switch(j.peek()){case "#":case ".":if(i===null)i=j.pos;var g=e[j.peek()];j.next();j.start=j.pos;j.eatWhile(o);c.push({name:g,value:j.current()});break;case "[":if(i===
null)i=j.pos;j.start=j.pos;if(!j.skipToPair("[","]"))throw"Invalid attribute set definition";c=c.concat(b(f(j.current())));break;default:j.next()}return!c.length?null:{element:a.substring(0,i),attributes:d(c)}}function d(a){var a=e.map(a,function(a){return e.clone(a)}),b={};return e.filter(a,function(a){if(!(a.name in b))return b[a.name]=a;var d=b[a.name];a.name.toLowerCase()=="class"?d.value+=(d.value.length?" ":"")+a.value:d.value=a.value;return!1})}function i(a){if(!~a.indexOf("{"))return null;
for(var b=h("stringStream").create(a);!b.eol();)switch(b.peek()){case "[":case "(":b.skipToPair(b.peek(),q[b.peek()]);break;case "{":return b.start=b.pos,b.skipToPair("{","}"),{element:a.substring(0,b.start),text:f(b.current())};default:b.next()}}function j(a){for(var b=a.children.length-1,d,c;b>=0;b--)if(c=a.children[b],c.isRepeating()){d=c.repeatCount;c.repeatCount=1;for(c.updateProperty("counter",1);--d>0;)c.parent.addChild(c.clone(),b+1).updateProperty("counter",d+1)}e.each(a.children,j);return a}
function l(a){for(var b=a.children.length-1;b>=0;b--){var d=a.children[b];d.isGroup()?d.replace(l(d).children):d.isEmpty()&&d.remove()}e.each(a.children,l);return a}function n(a){var b=a.charCodeAt(0);return b>64&&b<91||b>96&&b<123||b>47&&b<58||"#.*:$-_!@|".indexOf(a)!=-1}var m=/^[\w\-\$\:@\!]+\+?$/i,o=/[\w\-:\$]/,q={"[":"]","(":")","{":"}"},r=Array.prototype.splice,t=[],x=[],u=[];g.prototype={addChild:function(a,b){a=a||new g;a.parent=this;e.isUndefined(b)?this.children.push(a):this.children.splice(b,
0,a);return a},clone:function(){var a=new g;e.each(["abbreviation","counter","_name","_text","repeatCount","hasImplicitRepeat","start","end","content","padding"],function(b){a[b]=this[b]},this);a._attributes=e.map(this._attributes,function(a){return e.clone(a)});a._data=e.clone(this._data);a.children=e.map(this.children,function(b){b=b.clone();b.parent=a;return b});return a},remove:function(){if(this.parent)this.parent.children=e.without(this.parent.children,this);return this},replace:function(){var a=
this.parent,b=e.indexOf(a.children,this),d=e.flatten(arguments);r.apply(a.children,[b,1].concat(d));e.each(d,function(b){b.parent=a})},updateProperty:function(a,b){this[a]=b;e.each(this.children,function(d){d.updateProperty(a,b)})},find:function(a){return this.findAll(a)[0]},findAll:function(a){if(!e.isFunction(a))var b=a.toLowerCase(),a=function(a){return a.name().toLowerCase()==b};var d=[];e.each(this.children,function(b){a(b)&&d.push(b);d=d.concat(b.findAll(a))});return e.compact(d)},data:function(a,
b){if(arguments.length==2&&(this._data[a]=b,a=="resource"&&h("elements").is(b,"snippet")&&(this.content=b.data,this._text)))this.content=h("abbreviationUtils").insertChildContent(b.data,this._text);return this._data[a]},name:function(){var a=this.matchedResource();return h("elements").is(a,"element")?a.name:this._name},attributeList:function(){var a=[],b=this.matchedResource();h("elements").is(b,"element")&&e.isArray(b.attributes)&&(a=a.concat(b.attributes));return d(a.concat(this._attributes))},
attribute:function(a,b){if(arguments.length==2){var d=e.indexOf(e.pluck(this._attributes,"name"),a.toLowerCase());if(~d)this._attributes[d].value=b}return(e.find(this.attributeList(),function(b){return b.name==a})||{}).value},matchedResource:function(){return this.data("resource")},index:function(){return this.parent?e.indexOf(this.parent.children,this):-1},_setRepeat:function(a){a?this.repeatCount=parseInt(a,10)||1:this.hasImplicitRepeat=!0},setAbbreviation:function(b){var d=this;this.abbreviation=
b=(b||"").replace(/\*(\d+)?$/,function(a,b){d._setRepeat(b);return""});var c=i(b);if(c)b=c.element,this.content=this._text=c.text;if(c=a(b))b=c.element,this._attributes=c.attributes;if((this._name=b)&&!m.test(this._name))throw"Invalid abbreviation";},toString:function(){var a=h("utils"),b=this.start,d=this.end,c=this.content,i=this;e.each(u,function(a){b=a(b,i,"start");c=a(c,i,"content");d=a(d,i,"end")});var j=e.map(this.children,function(a){return a.toString()}).join(""),c=h("abbreviationUtils").insertChildContent(c,
j,{keepVariable:!1});return b+a.padString(c,this.padding)+d},hasEmptyChildren:function(){return!!e.find(this.children,function(a){return a.isEmpty()})},hasImplicitName:function(){return!this._name&&!this.isTextNode()},isGroup:function(){return!this.abbreviation},isEmpty:function(){return!this.abbreviation&&!this.children.length},isRepeating:function(){return this.repeatCount>1||this.hasImplicitRepeat},isTextNode:function(){return!this.name()&&!this.attributeList().length},isElement:function(){return!this.isEmpty()&&
!this.isTextNode()},deepestChild:function(){if(!this.children.length)return null;for(var a=this;a.children.length;)a=e.last(a.children);return a}};u.push(function(a,b){return h("utils").replaceCounter(a,b.counter)});return{parse:function(a,b){var b=b||{},d=c(a);if(b.contextNode){d._name=b.contextNode.name;var i={};e.each(d._attributes,function(a){i[a.name]=a});e.each(b.contextNode.attributes,function(a){a.name in i?i[a.name].value=a.value:(a=e.clone(a),d._attributes.push(a),i[a.name]=a)})}e.each(t,
function(a){a(d,b)});d=l(j(d));e.each(x,function(a){a(d,b)});return d},AbbreviationNode:g,addPreprocessor:function(a){e.include(t,a)||t.push(a)},removeFilter:function(a){preprocessor=e.without(t,a)},addPostprocessor:function(a){e.include(x,a)||x.push(a)},removePostprocessor:function(a){x=e.without(x,a)},addOutputProcessor:function(a){e.include(u,a)||u.push(a)},removeOutputProcessor:function(a){u=e.without(u,a)},isAllowedChar:function(a){a=String(a);return n(a)||~">+^[](){}".indexOf(a)}}});
emmet.exec(function(h,e){function g(f,c){var b=h("resources"),a=h("elements"),d=h("abbreviationParser");e.each(e.clone(f.children),function(i){var j=b.getMatchedResource(i,c);if(e.isString(j))i.data("resource",a.create("snippet",j));else if(a.is(j,"reference")){j=d.parse(j.data,{syntax:c});if(i.repeatCount>1){var f=j.findAll(function(a){return a.hasImplicitRepeat});e.each(f,function(a){a.repeatCount=i.repeatCount;a.hasImplicitRepeat=!1})}var h=j.deepestChild();h&&e.each(i.children,function(a){h.addChild(a)});
i.replace(j.children)}else i.data("resource",j);g(i,c)})}h("abbreviationParser").addPreprocessor(function(e,c){var b=c.syntax||emmet.defaultSyntax();g(e,b)})});
emmet.exec(function(h,e){function g(a){for(var b=h("range"),c=[],a=h("stringStream").create(a);!a.eol();){if(a.peek()=="\\")a.next();else if(a.start=a.pos,a.match(d,!0)){c.push(b.create(a.start,d));continue}a.next()}return c}function f(a,b){var d=h("utils"),c=g(a);c.reverse();e.each(c,function(c){a=d.replaceSubstring(a,b,c)});return a}function c(a){return g(a.content).length?!0:!!e.find(a.attributeList(),function(a){return!!g(a.value).length})}function b(a,b){var d=a.findAll(function(a){return c(a)});
c(a)&&d.unshift(a);d.length?e.each(d,function(a){a.content=f(a.content,b);e.each(a._attributes,function(a){a.value=f(a.value,b)})}):(d=a.deepestChild()||a,d.content=h("abbreviationUtils").insertChildContent(d.content,b))}var a=h("abbreviationParser"),d="$#";a.addPreprocessor(function(a,b){if(b.pastedContent){var d=h("utils").splitByLines(b.pastedContent,!0);a.findAll(function(a){if(a.hasImplicitRepeat)return a.data("paste",d),a.repeatCount=d.length})}});a.addPostprocessor(function(a,d){!a.findAll(function(a){var d=
a.data("paste"),c="";e.isArray(d)?c=d[a.counter-1]:e.isFunction(d)?c=d(a.counter-1,a.content):d&&(c=d);c&&b(a,c);a.data("paste",null);return!e.isUndefined(d)}).length&&d.pastedContent&&b(a,d.pastedContent)})});emmet.exec(function(h,e){function g(f){var c=h("tagName");e.each(f.children,function(b){if(b.hasImplicitName()||b.data("forceNameResolving"))b._name=c.resolve(b.parent.name());g(b)});return f}h("abbreviationParser").addPostprocessor(g)});
emmet.define("cssParser",function(h,e){function g(a){return typeof a!=="undefined"}function f(){return{"char":i.chnum,line:i.linenum}}function c(a,b,d){var c=i,d=d||{};j.push({charstart:g(d["char"])?d["char"]:c.chnum,charend:g(d.charend)?d.charend:c.chnum,linestart:g(d.line)?d.line:c.linenum,lineend:g(d.lineend)?d.lineend:c.linenum,value:a,type:b||a})}function b(a,b){var d=i,c=b||{},e=g(c["char"])?c["char"]:d.chnum,c=g(c.line)?c.line:d.linenum;return{name:"ParseError",message:a+" at line "+(c+1)+
" char "+(e+1),walker:d,tokens:j}}function a(a){var b=i,d=b.ch,e=f(),j=a?a+d:d,d=b.nextChar();for(a&&(e["char"]-=a.length);n(d)||m(d);)j+=d,d=b.nextChar();c(j,"identifier",e)}function d(){var d=i.ch;if(d===" "||d==="\t"){for(var e=i.ch,j="",g=f();e===" "||e==="\t";)j+=e,e=i.nextChar();c(j,"white",g)}else{if(d==="/"){var e=i,d=g=e.ch,h,u=f();h=e.nextChar();if(h!=="*")u.charend=u["char"],u.lineend=u.line,j=c(d,d,u);else{for(;!(g==="*"&&h==="/");)d+=h,g=h,h=e.nextChar();d+=h;e.nextChar();c(d,"comment",
u)}return j}if(d==='"'||d==="'"){e=i;d=g=j=e.ch;u=f();for(j=e.nextChar();j!==g;){if(j==="\n")if(h=e.nextChar(),h==="\\")d+=j+h;else throw b("Unterminated string",u);else d+=j==="\\"?j+e.nextChar():j;j=e.nextChar()}d+=j;e.nextChar();c(d,"string",u)}else if(d==="("){e=i;j=e.ch;g=0;d=j;h=f();for(j=e.nextChar();j!==")"&&!g;){if(j==="(")g++;else if(j===")")g--;else if(j===!1)throw b("Unterminated brace",h);d+=j;j=e.nextChar()}d+=j;e.nextChar();c(d,"brace",h)}else{if(d==="-"||d==="."||m(d)){j=i;g=j.ch;
d=f();h=g;var u=h===".",z,g=j.nextChar();z=!m(g);if(u&&z)d.charend=d["char"],d.lineend=d.line,e=c(h,".",d);else if(h==="-"&&z)e=a("-");else{for(;g!==!1&&(m(g)||!u&&g===".");)g==="."&&(u=!0),h+=g,g=j.nextChar();c(h,"number",d)}return e}if(n(d))return a();if(l(d))return e=i,d=e.ch,j=f(),h=e.nextChar(),h==="="&&l(d,!0)?(d+=h,c(d,"match",j),e.nextChar(),g=void 0):(j.charend=j["char"]+1,j.lineend=j.line,c(d,d,j)),g;if(d==="\n")c("line"),i.nextChar();else throw b("Unrecognized character");}}}var i,j=[],
l,n,m;i={lines:null,total_lines:0,linenum:-1,line:"",ch:"",chnum:-1,init:function(a){var b=i;b.lines=a.replace(/\r\n/g,"\n").replace(/\r/g,"\n").split("\n");b.total_lines=b.lines.length;b.chnum=-1;b.linenum=-1;b.ch="";b.line="";b.nextLine();b.nextChar()},nextLine:function(){this.linenum+=1;this.line=this.total_lines<=this.linenum?!1:this.lines[this.linenum];if(this.chnum!==-1)this.chnum=0;return this.line},nextChar:function(){for(this.chnum+=1;this.line.charAt(this.chnum)==="";){if(this.nextLine()===
!1)return this.ch=!1;this.chnum=-1;return this.ch="\n"}return this.ch=this.line.charAt(this.chnum)},peek:function(){return this.line.charAt(this.chnum+1)}};n=function(a){return a==="_"||a==="-"||a>="a"&&a<="z"||a>="A"&&a<="Z"};m=function(a){return a!==!1&&a>="0"&&a<="9"};l=function(){for(var a="{}[]()+*=.,;:>~|\\%$#@^!".split(""),b="*^|$~".split(""),d={},c={},e=0;e<a.length;e+=1)d[a[e]]=!0;for(e=0;e<b.length;e+=1)c[b[e]]=!0;return function(a,b){return b?!!c[a]:!!d[a]}}();return{lex:function(a){i.init(a);
for(j=[];i.ch!==!1;)d();return j},parse:function(a){var b=0;return e.map(this.lex(a),function(d){if(d.type=="line")d.value=a.charAt(b)=="\r"&&a.charAt(b+1)=="\n"?"\r\n":a.charAt(b);return{type:d.type,start:b,end:b+=d.value.length}})},toSource:function(a){for(var b=0,d=a.length,c,e="";b<d;b+=1)c=a[b],e+=c.type==="line"?"\n":c.value;return e}}});
emmet.define("xmlParser",function(h){function e(a,d){function e(b){d.tokenize=b;return b(a,d)}var i=a.next();if(i=="<")if(a.eat("!"))return a.eat("[")?a.match("CDATA[")?e(c("atom","]]\>")):null:a.match("--")?e(c("comment","--\>")):a.match("DOCTYPE",!0,!0)?(a.eatWhile(/[\w\._\-]/),e(b(1))):null;else if(a.eat("?"))return a.eatWhile(/[\w\._\-]/),d.tokenize=c("meta","?>"),"meta";else{A=a.eat("/")?"closeTag":"openTag";a.eatSpace();for(z="";i=a.eat(/[^\s\u00a0=<>\"\'\/?]/);)z+=i;d.tokenize=g;return"tag"}else return i==
"&"?(a.eat("#")?a.eat("x")?a.eatWhile(/[a-fA-F\d]/)&&a.eat(";"):a.eatWhile(/[\d]/)&&a.eat(";"):a.eatWhile(/[\w\.\-:]/)&&a.eat(";"))?"atom":"error":(a.eatWhile(/[^&<]/),"text")}function g(a,b){var d=a.next();return d==">"||d=="/"&&a.eat(">")?(b.tokenize=e,A=d==">"?"endTag":"selfcloseTag","tag"):d=="="?(A="equals",null):/[\'\"]/.test(d)?(b.tokenize=f(d),b.tokenize(a,b)):(a.eatWhile(/[^\s\u00a0=<>\"\'\/?]/),"word")}function f(a){return function(b,d){for(;!b.eol();)if(b.next()==a){d.tokenize=g;break}return"string"}}
function c(a,b){return function(d,c){for(;!d.eol();){if(d.match(b)){c.tokenize=e;break}d.next()}return a}}function b(a){return function(d,c){for(var i;(i=d.next())!=null;)if(i=="<")return c.tokenize=b(a+1),c.tokenize(d,c);else if(i==">")if(a==1){c.tokenize=e;break}else return c.tokenize=b(a-1),c.tokenize(d,c);return"meta"}}function a(){for(var a=arguments.length-1;a>=0;a--)k.cc.push(arguments[a])}function d(){a.apply(null,arguments);return!0}function i(){if(k.context)k.context=k.context.prev}function j(a){if(a==
"openTag")return k.tagName=z,d(o,l(k.startOfLine));else if(a=="closeTag")return a=!1,k.context?k.context.tagName!=z&&(u.implicitlyClosed.hasOwnProperty(k.context.tagName.toLowerCase())&&i(),a=!k.context||k.context.tagName!=z):a=!0,a&&(v="error"),d(n(a));return d()}function l(a){return function(b){if(b=="selfcloseTag"||b=="endTag"&&u.autoSelfClosers.hasOwnProperty(k.tagName.toLowerCase()))return m(k.tagName.toLowerCase()),d();if(b=="endTag"){m(k.tagName.toLowerCase());var b=k.tagName,c=u.doNotIndent.hasOwnProperty(b)||
k.context&&k.context.noIndent;k.context={prev:k.context,tagName:b,indent:k.indented,startOfLine:a,noIndent:c}}return d()}}function n(a){return function(b){a&&(v="error");if(b=="endTag")return i(),d();v="error";return d(arguments.callee)}}function m(a){for(var b;;){if(!k.context)break;b=k.context.tagName.toLowerCase();if(!u.contextGrabbers.hasOwnProperty(b)||!u.contextGrabbers[b].hasOwnProperty(a))break;i()}}function o(b){if(b=="word")return v="attribute",d(q,o);if(b=="endTag"||b=="selfcloseTag")return a();
v="error";return d(o)}function q(b){if(b=="equals")return d(r,o);u.allowMissing||(v="error");return b=="endTag"||b=="selfcloseTag"?a():d()}function r(b){if(b=="string")return d(t);if(b=="word"&&u.allowUnquoted)return v="string",d();v="error";return b=="endTag"||b=="selfCloseTag"?a():d()}function t(b){return b=="string"?d(t):a()}function x(a,b){if(a.sol())b.startOfLine=!0,b.indented=0;if(a.eatSpace())return null;v=A=z=null;var d=b.tokenize(a,b);b.type=A;if((d||A)&&d!="comment")for(k=b;;)if((b.cc.pop()||
j)(A||d))break;b.startOfLine=!1;return v||d}var u={autoSelfClosers:{},implicitlyClosed:{},contextGrabbers:{},doNotIndent:{},allowUnquoted:!0,allowMissing:!0},z=null,A=null,k=null,v;return{parse:function(a,b){for(var b=b||0,d={tokenize:e,cc:[],indented:0,startOfLine:!0,tagName:null,context:null},c=h("stringStream").create(a),i=[];!c.eol();)i.push({type:x(c,d),start:c.start+b,end:c.pos+b}),c.start=c.pos;return i}}});
emmet.define("utils",function(h,e){function g(c){this._data=[];this.length=0;c&&this.append(c)}var f="${0}";g.prototype={append:function(c){this._data.push(c);this.length+=c.length},toString:function(){return this._data.join("")},valueOf:function(){return this.toString()}};return{reTag:/<\/?[\w:\-]+(?:\s+[\w\-:]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*\s*(\/?)>$/,endsWithTag:function(c){return this.reTag.test(c)},isNumeric:function(c){typeof c=="string"&&(c=c.charCodeAt(0));return c&&c>47&&
c<58},trim:function(c){return(c||"").replace(/^\s+|\s+$/g,"")},getNewline:function(){var c=h("resources");if(!c)return"\n";c=c.getVariable("newline");return e.isString(c)?c:"\n"},setNewline:function(c){var b=h("resources");b.setVariable("newline",c);b.setVariable("nl",c)},splitByLines:function(c,b){var a=this.getNewline(),a=(c||"").replace(/\r\n/g,"\n").replace(/\n\r/g,"\n").replace(/\r/g,"\n").replace(/\n/g,a).split(a);b&&(a=e.filter(a,function(a){return a.length&&!!this.trim(a)},this));return a},
normalizeNewline:function(c){return this.splitByLines(c).join(this.getNewline())},repeatString:function(c,b){for(var a=[],d=0;d<b;d++)a.push(c);return a.join("")},padString:function(c,b){var a=e.isNumber(b)?this.repeatString(h("resources").getVariable("indentation")||"\t",b):b,d=[],i=this.splitByLines(c),j=this.getNewline();d.push(i[0]);for(var f=1;f<i.length;f++)d.push(j+a+i[f]);return d.join("")},zeroPadString:function(c,b){for(var a="",d=c.length;b>d++;)a+="0";return a+c},unindentString:function(c,
b){for(var a=this.splitByLines(c),d=0;d<a.length;d++)a[d].search(b)==0&&(a[d]=a[d].substr(b.length));return a.join(this.getNewline())},replaceUnescapedSymbol:function(c,b,a){for(var d=0,i=c.length,j=b.length,f=0;d<i;)if(c.charAt(d)=="\\")d+=j+1;else if(c.substr(d,j)==b){var g=j;f++;var h=a;if(e.isFunction(a))(h=a(c,b,d,f))?(g=h[0].length,h=h[1]):h=!1;h===!1?d++:(c=c.substring(0,d)+h+c.substring(d+g),i=c.length,d+=h.length)}else d++;return c},replaceVariables:function(c,b){var b=b||{},a=e.isFunction(b)?
b:function(a,d){return d in b?b[d]:null},d=h("resources");return h("tabStops").processText(c,{variable:function(b){var c=a(b.token,b.name,b);c===null&&(c=d.getVariable(b.name));if(c===null||e.isUndefined(c))c=b.token;return c}})},replaceCounter:function(c,b){var b=String(b),a=this;return this.replaceUnescapedSymbol(String(c),"$",function(d,c,e){if(d.charAt(e+1)=="{"||a.isNumeric(d.charAt(e+1)))return!1;for(c=e+1;d.charAt(c)=="$"&&d.charAt(c+1)!="{";)c++;return[d.substring(e,c),a.zeroPadString(b,c-
e)]})},matchesTag:function(c){return this.reTag.test(c||"")},escapeText:function(c){return c.replace(/([\$\\])/g,"\\$1")},unescapeText:function(c){return c.replace(/\\(.)/g,"$1")},getCaretPlaceholder:function(){return e.isFunction(f)?f.apply(this,arguments):f},setCaretPlaceholder:function(c){f=c},getLinePadding:function(c){return(c.match(/^(\s+)/)||[""])[0]},getLinePaddingFromPosition:function(c,b){return this.getLinePadding(this.findNewlineBounds(c,b).substring(c))},escapeForRegexp:function(c){return c.replace(RegExp("[.*+?|()\\[\\]{}\\\\]",
"g"),"\\$&")},prettifyNumber:function(c,b){return c.toFixed(typeof b=="undefined"?2:b).replace(/\.?0+$/,"")},stringBuilder:function(c){return new g(c)},replaceSubstring:function(c,b,a,d){if(e.isObject(a)&&"end"in a)d=a.end,a=a.start;e.isString(d)&&(d=a+d.length);e.isUndefined(d)&&(d=a);return a<0||a>c.length?c:c.substring(0,a)+b+c.substring(d)},narrowToNonSpace:function(c,b,a){b=h("range").create(b,a);for(a=/[\s\n\r\u00a0]/;b.start<b.end;){if(!a.test(c.charAt(b.start)))break;b.start++}for(;b.end>
b.start;)if(b.end--,!a.test(c.charAt(b.end))){b.end++;break}return b},findNewlineBounds:function(c,b){for(var a=c.length,d=0,e=a-1,j=b-1;j>0;j--){var f=c.charAt(j);if(f=="\n"||f=="\r"){d=j+1;break}}for(j=b;j<a;j++)if(f=c.charAt(j),f=="\n"||f=="\r"){e=j;break}return h("range").create(d,e-d)},deepMerge:function(){var c,b,a,d,i,f=arguments[0]||{},g=1,h=arguments.length;for(!e.isObject(f)&&!e.isFunction(f)&&(f={});g<h;g++)if((c=arguments[g])!=null)for(b in c)a=f[b],d=c[b],f!==d&&(d&&(e.isObject(d)||(i=
e.isArray(d)))?(i?(i=!1,a=a&&e.isArray(a)?a:[]):a=a&&e.isObject(a)?a:{},f[b]=this.deepMerge(a,d)):d!==void 0&&(f[b]=d));return f}}});
emmet.define("range",function(h,e){function g(f,c){e.isObject(f)&&"start"in f?(this.start=Math.min(f.start,f.end),this.end=Math.max(f.start,f.end)):e.isArray(f)?(this.start=f[0],this.end=f[1]):(c=e.isString(c)?c.length:+c,this.start=f,this.end=f+c)}g.prototype={length:function(){return Math.abs(this.end-this.start)},equal:function(e){return this.start===e.start&&this.end===e.end},shift:function(e){this.start+=e;this.end+=e;return this},overlap:function(e){return e.start<=this.end&&e.end>=this.start},
intersection:function(e){if(this.overlap(e)){var c=Math.max(e.start,this.start);return new g(c,Math.min(e.end,this.end)-c)}return null},union:function(e){if(this.overlap(e)){var c=Math.min(e.start,this.start);return new g(c,Math.max(e.end,this.end)-c)}return null},inside:function(e){return this.start<=e&&this.end>e},include:function(e){return this.start<=e.start&&this.end>=e.end},substring:function(e){return this.length()>0?e.substring(this.start,this.end):""},clone:function(){return new g(this.start,
this.length())},toArray:function(){return[this.start,this.end]},toString:function(){return"{"+this.start+", "+this.length()+"}"}};return{create:function(f,c){return e.isUndefined(f)||f===null?null:f instanceof g?f:new g(f,c)},create2:function(f,c){e.isNumber(f)&&e.isNumber(c)&&(c-=f);return this.create(f,c)}}});
emmet.define("handlerList",function(h,e){function g(){this._list=[]}g.prototype={add:function(f,c){this._list.push(e.extend({order:0},c||{},{fn:f}))},remove:function(f){this._list=e.without(this._list,e.find(this._list,function(c){return c.fn===f}))},list:function(){return e.sortBy(this._list,"order").reverse()},listFn:function(){return e.pluck(this.list(),"fn")},exec:function(f,c){var c=c||[],b=null;e.find(this.list(),function(a){b=a.fn.apply(a,c);if(b!==f)return!0});return b}};return{create:function(){return new g}}});
emmet.define("tokenIterator",function(h,e){function g(e){this.tokens=e;this._position=0;this.reset()}g.prototype={next:function(){if(this.hasNext()){var e=this.tokens[++this._i];this._position=e.start;return e}return null},current:function(){return this.tokens[this._i]},position:function(){return this._position},hasNext:function(){return this._i<this._il-1},reset:function(){this._i=-1;this._il=this.tokens.length},item:function(){return this.tokens[this._i]},itemNext:function(){return this.tokens[this._i+
1]},itemPrev:function(){return this.tokens[this._i-1]},nextUntil:function(f,c){for(var b,a=e.isString(f)?function(a){return a.type==f}:f;b=this.next();)if(c&&c.call(this,b),a.call(this,b))break}};return{create:function(e){return new g(e)}}});
emmet.define("stringStream",function(){function h(e){this.pos=this.start=0;this.string=e}h.prototype={eol:function(){return this.pos>=this.string.length},sol:function(){return this.pos==0},peek:function(){return this.string.charAt(this.pos)},next:function(){if(this.pos<this.string.length)return this.string.charAt(this.pos++)},eat:function(e){var g=this.string.charAt(this.pos);if(typeof e=="string"?g==e:g&&(e.test?e.test(g):e(g)))return++this.pos,g},eatWhile:function(e){for(var g=this.pos;this.eat(e););
return this.pos>g},eatSpace:function(){for(var e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},skipToEnd:function(){this.pos=this.string.length},skipTo:function(e){e=this.string.indexOf(e,this.pos);if(e>-1)return this.pos=e,!0},skipToPair:function(e,g){for(var f=0,c,b=this.pos,a=this.string.length;b<a;)if(c=this.string.charAt(b++),c==e)f++;else if(c==g&&(f--,f<1))return this.pos=b,!0;return!1},backUp:function(e){this.pos-=e},match:function(e,g,f){if(typeof e==
"string"){if(f=f?function(c){return c.toLowerCase()}:function(c){return c},f(this.string).indexOf(f(e),this.pos)==this.pos)return g!==!1&&(this.pos+=e.length),!0}else return(e=this.string.slice(this.pos).match(e))&&g!==!1&&(this.pos+=e[0].length),e},current:function(){return this.string.slice(this.start,this.pos)}};return{create:function(e){return new h(e)}}});
emmet.define("resources",function(h,e){function g(a){return a==b?i:j}function f(b,d,c){var e=g(b),j=[],f=null;e&&d in e&&(f=e[d],c in f&&j.push(f[c]));var l=null;f&&"extends"in f?l=f:b==a&&d in i&&"extends"in i[d]&&(l=i[d]);if(l){if(!l["extends"]||!l["extends"].__emmet_parsed__){d=l["extends"].split(",");f=h("utils");for(b=0;b<d.length;b++)d[b]=f.trim(d[b]);l["extends"]=d;l["extends"].__emmet_parsed__=!0}for(b=0;b<l["extends"].length;b++)d=l["extends"][b],e[d]&&e[d][c]&&j.push(e[d][c])}return j}function c(a,
b,c,e){for(var b=f(a,b,c),i=null,j=h("elements"),g=0,l=b.length;g<l;g++)if(a=b[g],e in a){if(!a[e]||!a[e].__emmet_parsed__){b=a[e];i=h("utils");b=i.replaceUnescapedSymbol(b,"|",i.getCaretPlaceholder());switch(c){case "abbreviations":c=a;g=j=e;i=b;h("utils").trim(g);l=h("elements");g=void 0;i=(g=d.exec(i))?l.create("element",g[1],g[2],g[4]=="/"):l.create("reference",i);c[j]=i;a[e].__ref=b;break;case "snippets":a[e]=j.create("snippet",b)}a[e].__emmet_parsed__=!0}i=a[e];break}return i}var b="system",
a="user",d=/^<(\w+\:?[\w\-]*)((?:\s+[\w\:\-]+\s*=\s*(['"]).*?\3)*)\s*(\/?)>/,i={},j={},l=h("handlerList").create();return{setVocabulary:function(a,d){d==b?i=a:j=a},getVocabulary:g,getResource:function(d,e,i){return c(a,d,e,i)||c(b,d,e,i)},getAbbreviation:function(a,b){b=b||"";return this.getResource(a,"abbreviations",b)||this.getResource(a,"abbreviations",b.replace(/\-/g,":"))},getSnippet:function(a,b){b=b||"";return this.getResource(a,"snippets",b)||this.getResource(a,"snippets",b.replace(/\-/g,
":"))},getMatchedResource:function(a,b){return l.exec(null,e.toArray(arguments))||this.getAbbreviation(b,a.name())||this.getSnippet(b,a.name())},getVariable:function(d){return f(a,"variables",d)[0]||f(b,"variables",d)[0]},setVariable:function(a,b){var d=g("user")||{};if(!("variables"in d))d.variables={};d.variables[a]=b;this.setVocabulary(d,"user")},getSubset:function(d,c){return f(a,d,c)[0]||f(b,d,c)[0]},hasSyntax:function(d){return d in g(a)||d in g(b)},addResolver:function(a,b){l.add(a,b)},removeResolver:function(a){l.remove(a)}}});
emmet.define("actions",function(h,e){function g(c){return h("utils").trim(c.charAt(0).toUpperCase()+c.substring(1).replace(/_[a-z]/g,function(b){return" "+b.charAt(1).toUpperCase()}))}var f={};return{add:function(c,b,a){c=c.toLowerCase();a=a||{};if(!a.label)a.label=g(c);f[c]={name:c,fn:b,options:a}},get:function(c){return f[c.toLowerCase()]},run:function(c,b){e.isArray(b)||(b=e.rest(arguments));var a=this.get(c);return a?a.fn.apply(emmet,b):(emmet.log('Action "%s" is not defined',c),!1)},getAll:function(){return f},
getList:function(){return e.values(this.getAll())},getMenu:function(c){var b=[],c=c||[];e.each(this.getList(),function(a){if(!a.options.hidden&&!e.include(c,a.name)){var d=g(a.name),i=b;if(a.options.label)for(var j=a.options.label.split("/"),d=j.pop(),f,h;f=j.shift();)h=e.find(i,function(a){return a.type=="submenu"&&a.name==f}),h||(h={name:f,type:"submenu",items:[]},i.push(h)),i=h.items;i.push({type:"action",name:a.name,label:d})}});return b},getActionNameForMenuTitle:function(c,b){var a=null;e.find(b||
this.getMenu(),function(b){if(b.type=="action"){if(b.label==c||b.name==c)return a=b.name}else return a=this.getActionNameForMenuTitle(c,b.items)},this);return a||null}}});
emmet.define("profile",function(h,e){function g(b){e.extend(this,a,b)}function f(a,b){switch(String(b||"").toLowerCase()){case "lower":return a.toLowerCase();case "upper":return a.toUpperCase()}return a}function c(a,c){return b[a.toLowerCase()]=new g(c)}var b={},a={tag_case:"asis",attr_case:"asis",attr_quotes:"double",tag_nl:"decide",tag_nl_leaf:!1,place_cursor:!0,indent:!0,inline_break:3,self_closing_tag:"xhtml",filters:""};g.prototype={tagName:function(a){return f(a,this.tag_case)},attributeName:function(a){return f(a,
this.attr_case)},attributeQuote:function(){return this.attr_quotes=="single"?"'":'"'},selfClosing:function(){return this.self_closing_tag=="xhtml"?" /":this.self_closing_tag===!0?"/":""},cursor:function(){return this.place_cursor?h("utils").getCaretPlaceholder():""}};c("xhtml");c("html",{self_closing_tag:!1});c("xml",{self_closing_tag:!0,tag_nl:!0});c("plain",{tag_nl:!1,indent:!1,place_cursor:!1});c("line",{tag_nl:!1,indent:!1});return{create:function(b,i){return arguments.length==2?c(b,i):new g(e.defaults(b||
{},a))},get:function(a,c){if(c&&e.isString(a)){var j=h("resources").getSubset(c,"profile");j&&(a=j)}return!a?b.plain:a instanceof g?a:e.isString(a)&&a.toLowerCase()in b?b[a.toLowerCase()]:this.create(a)},remove:function(a){a=(a||"").toLowerCase();a in b&&delete b[a]},stringCase:f}});
emmet.define("editorUtils",function(h){return{isInsideTag:function(e,g){for(var f=/^<\/?\w[\w\:\-]*.*?>/,c=g;c>-1;){if(e.charAt(c)=="<")break;c--}return c!=-1&&(f=f.exec(e.substring(c)))&&g>c&&g<c+f[0].length?!0:!1},outputInfo:function(e,g,f){return{syntax:String(g||e.getSyntax()),profile:String(f||e.getProfileName()),content:String(e.getContent())}},unindent:function(e,g){return h("utils").unindentString(g,this.getCurrentLinePadding(e))},getCurrentLinePadding:function(e){return h("utils").getLinePadding(e.getCurrentLine())}}});
emmet.define("actionUtils",function(h){return{mimeTypes:{gif:"image/gif",png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",svg:"image/svg+xml",html:"text/html",htm:"text/html"},extractAbbreviation:function(e){for(var g=e.length,f=-1,c=0,b=0,a=0,d=h("utils"),i=h("abbreviationParser");;){g--;if(g<0){f=0;break}var j=e.charAt(g);if(j=="]")b++;else if(j=="["){if(!b){f=g+1;break}b--}else if(j=="}")a++;else if(j=="{"){if(!a){f=g+1;break}a--}else if(j==")")c++;else if(j=="("){if(!c){f=g+1;break}c--}else if(!b&&
!a&&(!i.isAllowedChar(j)||j==">"&&d.endsWithTag(e.substring(0,g+1)))){f=g+1;break}}return f!=-1&&!a&&!b&&!c?e.substring(f):""},getImageSize:function(e){var g=function(){return e.charCodeAt(f++)};if(e.substr(0,8)==="\u0089PNG\r\n\u001a\n"){var f=e.indexOf("IHDR")+4;return{width:g()<<24|g()<<16|g()<<8|g(),height:g()<<24|g()<<16|g()<<8|g()}}else if(e.substr(0,4)==="GIF8")return f=6,{width:g()|g()<<8,height:g()|g()<<8};else if(e.substr(0,2)==="\u00ff\u00d8")for(var f=2,c=e.length;f<c;){if(g()!=255)break;
var b=g();if(b==218)break;var a=g()<<8|g();if(b>=192&&b<=207&&!(b&4)&&!(b&8))return f+=1,{height:g()<<8|g(),width:g()<<8|g()};else f+=a-2}},captureContext:function(e){if(String(e.getSyntax())in{html:1,xml:1,xsl:1}){var g=h("html_matcher").getTags(String(e.getContent()),e.getCaretPos(),String(e.getProfileName()));if(g&&g[0]&&g[0].type=="tag"){for(var e=/([\w\-:]+)(?:\s*=\s*(?:(?:"((?:\\.|[^"])*)")|(?:'((?:\\.|[^'])*)')|([^>\s]+)))?/g,f=g[0],g=f.full_tag.replace(/^<[\w\-\:]+/,""),f={name:f.name,attributes:[]},
c;c=e.exec(g);)f.attributes.push({name:c[1],value:c[2]});return f}}return null},findExpressionBounds:function(e,g){for(var f=String(e.getContent()),c=f.length,b=e.getCaretPos()-1,a=b+1;b>=0&&g(f.charAt(b),b,f);)b--;for(;a<c&&g(f.charAt(a),a,f);)a++;if(a>b)return h("range").create([++b,a])},compoundUpdate:function(e,g){if(g){var f=e.getSelectionRange();e.replaceContent(g.data,g.start,g.end,!0);e.createSelection(g.caret,g.caret+f.end-f.start);return!0}return!1}}});
emmet.define("abbreviationUtils",function(h,e){return{isSnippet:function(e){return h("elements").is(e.matchedResource(),"snippet")},isUnary:function(e){var f=e.matchedResource();return e.children.length||this.isSnippet(e)?!1:f&&f.is_empty||h("tagName").isEmptyElement(e.name())},isInline:function(e){return e.isTextNode()||!e.name()||h("tagName").isInlineLevel(e.name())},isBlock:function(e){return h("elements").is(e.matchedResource(),"snippet")||!this.isInline(e)},hasTagsInContent:function(e){return h("utils").matchesTag(e.content)},
hasBlockChildren:function(h){return this.hasTagsInContent(h)&&this.isBlock(h)||e.any(h.children,function(e){return this.isBlock(e)},this)},insertChildContent:function(g,f,c){var c=e.extend({keepVariable:!0,appendIfNoChild:!0},c||{}),b=!1,a=h("utils"),g=a.replaceVariables(g,function(d,e,j){var h=d;e=="child"&&(h=a.padString(f,a.getLinePaddingFromPosition(g,j.start)),b=!0,c.keepVariable&&(h+=d));return h});!b&&c.appendIfNoChild&&(g+=f);return g}}});
emmet.define("base64",function(){return{encode:function(h){for(var e=[],g,f,c,b,a,d,i=0,j=h.length;i<j;)b=h.charCodeAt(i++),a=h.charCodeAt(i++),d=h.charCodeAt(i++),g=b&255,f=a&255,c=d&255,b=g>>2,g=(g&3)<<4|f>>4,f=(f&15)<<2|c>>6,c&=63,isNaN(a)?f=c=64:isNaN(d)&&(c=64),e.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(b)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(g)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(f)+
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(c));return e.join("")},decode:function(h){var e,g,f,c,b,a=0,d=0,i=[],j=h.length;if(!h)return h;h+="";do e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(h.charAt(a++)),g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(h.charAt(a++)),c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(h.charAt(a++)),b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(h.charAt(a++)),
f=e<<18|g<<12|c<<6|b,e=f>>16&255,g=f>>8&255,f&=255,c==64?i[d++]=String.fromCharCode(e):b==64?i[d++]=String.fromCharCode(e,g):i[d++]=String.fromCharCode(e,g,f);while(a<j);return i.join("")}}});
(function(){function h(a){if(!a||a!="html")a="xhtml";n=a}function e(a,b){var d=a[1].toLowerCase();return{name:d,full_tag:a[0],start:b,end:b+a[0].length,unary:Boolean(a[3])||d in j&&n=="html",has_close:Boolean(a[3]),type:"tag",close_self:d in l&&n=="html"}}function g(a,b){return{start:a,end:b,type:"comment"}}function f(a){for(var b={},a=a.split(","),d=0;d<a.length;d++)b[a[d]]=!0;return b}function c(a,b,d){var d=d||0,c=-1,e=-1;if(a&&!b)c=a.start,e=a.end;else if(a&&b)a.start<d&&a.end>d||b.start<=d&&
b.end>d?(c=a.start,e=b.end):(c=a.end,e=b.start);return[c,e]}function b(a,b,d){m.opening_tag=a;m.closing_tag=b;a=c(a,b,d||0);m.start_ix=a[0];m.end_ix=a[1];return m.start_ix!=-1?[m.start_ix,m.end_ix]:null}function a(a,b,j,f){function n(b,d){arguments.length==1&&(d=w);return a.substr(d,b.length)==b}function m(b){for(;b--;)if(a.charAt(b)=="<"&&n("<\!--",b))break;return b}f=f||c;h(j);var j=[],k=[],l=null,q=null,o=a.length,s,w;j.last=k.last=function(){return this[this.length-1]};for(w=b;w--&&w>=0;)if(s=
a.charAt(w),s=="<"){var y=a.substring(w,o);if(s=y.match(i))s=e(s,w),s.start<b&&s.end>b?q=s:k.push(s);else if(s=y.match(d))if(s=e(s,w),s.unary){if(s.start<b&&s.end>b)return f(s,null,b)}else if(k.last()&&k.last().name==s.name)k.pop();else{l=s;break}else if(y.indexOf("<\!--")==0&&(s=y.search("--\>")+w+3,w<b&&s>=b))return f(g(w,s))}else s=="-"&&n("--\>")&&(w=m(w));if(!l)return f(null);if(!q)for(w=b;w<o;w++)if(s=a.charAt(w),s=="<")if(y=a.substring(w,o),s=y.match(d))s=e(s,w),s.unary||j.push(s);else if(s=
y.match(i))if(s=e(s,w),j.last()&&j.last().name==s.name)j.pop();else{q=s;break}else n("<\!--")&&(w+=y.search("--\>")+2);else if(s=="-"&&n("--\>")&&(!j.last()||j.last().type!="comment"))return s=w+3,f(g(m(w),s));return f(l,q,b)}var d=/^<([\w\:\-]+)((?:\s+[\w\-:]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/,i=/^<\/([\w\:\-]+)[^>]*>/,j=f("area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed");f("address,applet,blockquote,button,center,dd,dir,div,dl,dt,fieldset,form,frameset,hr,iframe,isindex,li,map,menu,noframes,noscript,object,ol,p,pre,script,table,tbody,td,tfoot,th,thead,tr,ul");
f("a,abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var");var l=f("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr"),n="xhtml",m={opening_tag:null,closing_tag:null,start_ix:-1,end_ix:-1},o=function(d,c,e){return a(d,c,e,b)};o.start_tag=d;o.end_tag=i;o.find=function(b,d,c){return a(b,d,c)};o.getTags=function(b,d,c){return a(b,d,c,function(a,b){return[a,b]})};o.last_match=
m;try{emmet.define("html_matcher",function(){return o})}catch(q){}})();
emmet.define("tabStops",function(h,e){var g=100,f=0,c={replaceCarets:!1,escape:function(b){return"\\"+b},tabstop:function(b){return b.token},variable:function(b){return b.token}};h("abbreviationParser").addOutputProcessor(function(b,a){var d=0,c=h("tabStops"),e=h("utils"),b=c.processText(b,{tabstop:function(a){var b=parseInt(a.group);if(b==0)return"${0}";b>d&&(d=b);return a.placeholder?"${"+(b+f)+":"+a.placeholder+"}":"${"+(b+f)+"}"}}),b=e.replaceVariables(b,c.variablesResolver(a));f+=d+1;return b});
return{extract:function(b,a){var d=h("utils"),i={carets:""},j=[],a=e.extend({},c,a,{tabstop:function(a){var b=a.token,d="";if(a.placeholder=="cursor")j.push({start:a.start,end:a.start+b.length,group:"carets",value:""});else{if("placeholder"in a)i[a.group]=a.placeholder;a.group in i&&(d=i[a.group]);j.push({start:a.start,end:a.start+b.length,group:a.group,value:d})}return b}});a.replaceCarets&&(b=b.replace(RegExp(d.escapeForRegexp(d.getCaretPlaceholder()),"g"),"${0:cursor}"));var b=this.processText(b,
a),f=d.stringBuilder(),g=0,d=e.map(j,function(a){f.append(b.substring(g,a.start));var d=f.length,c=i[a.group]||"";f.append(c);g=a.end;return{group:a.group,start:d,end:d+c.length}});f.append(b.substring(g));return{text:f.toString(),tabstops:e.sortBy(d,"start")}},processText:function(b,a){for(var a=e.extend({},c,a),d=h("utils").stringBuilder(),i=h("stringStream").create(b),j,f;j=i.next();)if(j=="\\"&&!i.eol())d.append(a.escape(i.next()));else{f=j;if(j=="$")if(i.start=i.pos-1,i.match(/^[0-9]+/))f=a.tabstop({start:d.length,
group:i.current().substr(1),token:i.current()});else if(j=i.match(/^\{([a-z_\-][\w\-]*)\}/))f=a.variable({start:d.length,name:j[1],token:i.current()});else if(j=i.match(/^\{([0-9]+)(:.+?)?\}/)){f={start:d.length,group:j[1],token:i.current()};if(j[2])f.placeholder=j[2].substr(1);f=a.tabstop(f)}d.append(f)}return d.toString()},upgrade:function(b,a){var d=0,c={tabstop:function(b){var c=parseInt(b.group);c>d&&(d=c);return b.placeholder?"${"+(c+a)+":"+b.placeholder+"}":"${"+(c+a)+"}"}};e.each(["start",
"end","content"],function(a){b[a]=this.processText(b[a],c)},this);return d},variablesResolver:function(b){var a={},d=h("resources");return function(c,f){if(f=="child")return c;if(f=="cursor")return h("utils").getCaretPlaceholder();var l=b.attribute(f);if(!e.isUndefined(l))return l;if(l=d.getVariable(f))return l;a[f]||(a[f]=g++);return"${"+a[f]+":"+f+"}"}},resetPlaceholderCounter:function(){console.log("deprecated");g=100},resetTabstopIndex:function(){f=0;g=100}}});
emmet.define("preferences",function(h,e){var g={},f={},c=null,b=null;return{define:function(a,b,c){var j=a;e.isString(a)&&(j={},j[a]={value:b,description:c});e.each(j,function(a,b){f[b]=e.isObject(a)&&"value"in a&&e.keys(a).length<3?a:{value:a}})},set:function(a,b){var c=a;e.isString(a)&&(c={},c[a]=b);e.each(c,function(a,b){if(!(b in f))throw'Property "'+b+'" is not defined. You should define it first with `define` method of current module';if(a!==f[b].value){switch(typeof f[b].value){case "boolean":var d=
a;e.isString(d)?(d=d.toLowerCase(),a=d=="yes"||d=="true"||d=="1"):a=!!d;break;case "number":a=parseInt(a+"",10)||0;break;default:a+=""}g[b]=a}else b in g&&delete g[p]})},get:function(a){if(a in g)return g[a];if(a in f)return f[a].value},getArray:function(a){a=this.get(a);e.isUndefined(a)||(a=e.map(a.split(","),h("utils").trim),a.length||(a=null));return a},description:function(a){return a in f?f[a].description:void 0},remove:function(a){e.isArray(a)||(a=[a]);e.each(a,function(a){a in g&&delete g[a];
a in f&&delete f[a]})},list:function(){return e.map(e.keys(f).sort(),function(a){return{name:a,value:this.get(a),type:typeof f[a].value,description:f[a].description}},this)},load:function(a){e.each(a,function(a,b){this.set(b,a)},this)},exportModified:function(){return e.clone(g)},reset:function(){g={}},_startTest:function(){c=f;b=g;f={};g={}},_stopTest:function(){f=c;g=b}}});
emmet.define("filters",function(h,e){function g(c){return!c?[]:e.isString(c)?c.split(/[\|,]/g):c}var f={};return{add:function(c,b){f[c]=b},apply:function(c,b,a){var d=h("utils"),a=h("profile").get(a);e.each(g(b),function(b){(b=d.trim(b.toLowerCase()))&&b in f&&(c=f[b](c,a))});return c},composeList:function(c,b,a){b=h("profile").get(b);c=g(b.filters||h("resources").getSubset(c,"filters")||"html");a&&(c=c.concat(g(a)));if(!c||!c.length)c=g("html");return c},extractFromAbbreviation:function(c){var b=
"",c=c.replace(/\|([\w\|\-]+)$/,function(a,d){b=d;return""});return[c,g(b)]}}});
emmet.define("elements",function(h,e){function g(a){return{data:a}}var f={},c=/([\w\-]+)\s*=\s*(['"])(.*?)\2/g,b={add:function(a,b){var c=this;f[a]=function(){var e=b.apply(c,arguments);if(e)e.type=a;return e}},get:function(a){return f[a]},create:function(a){var b=[].slice.call(arguments,1),c=this.get(a);return c?c.apply(this,b):null},is:function(a,b){return a&&a.type===b}};b.add("element",function(a,b,f){var h={name:a,is_empty:!!f};if(b)if(h.attributes=[],e.isArray(b))h.attributes=b;else if(e.isString(b))for(;a=
c.exec(b);)h.attributes.push({name:a[1],value:a[3]});else e.each(b,function(a,b){h.attributes.push({name:b,value:a})});return h});b.add("snippet",g);b.add("reference",g);b.add("empty",function(){return{}});return b});
emmet.define("editTree",function(h,e,g){function f(a,b){this.options=e.extend({offset:0},b);this.source=a;this._children=[];this._positions={name:0};this.initialize.apply(this,arguments)}function c(a,b,c){this.parent=a;this._name=b.value;this._value=c?c.value:"";this._positions={name:b.start,value:c?c.start:-1};this.initialize.apply(this,arguments)}var b=h("range").create;f.extend=g.extend;f.prototype={initialize:function(){},_updateSource:function(a,d,c){var f=b(d,e.isUndefined(c)?0:c-d),g=a.length-
f.length(),n=function(a){e.each(a,function(b,d){b>=f.end&&(a[d]+=g)})};n(this._positions);e.each(this.list(),function(a){n(a._positions)});this.source=h("utils").replaceSubstring(this.source,a,f)},add:function(a,b){var e=new c(a,b);this._children.push(e);return e},get:function(a){return e.isNumber(a)?this.list()[a]:e.isString(a)?e.find(this.list(),function(b){return b.name()===a}):a},getAll:function(a){e.isArray(a)||(a=[a]);var b=[],c=[];e.each(a,function(a){e.isString(a)?b.push(a):e.isNumber(a)&&
c.push(a)});return e.filter(this.list(),function(a,f){return e.include(c,f)||e.include(b,a.name())})},value:function(a,b,c){var f=this.get(a);if(f)return f.value(b);if(!e.isUndefined(b))return this.add(a,b,c)},values:function(a){return e.map(this.getAll(a),function(a){return a.value()})},remove:function(a){if(a=this.get(a))this._updateSource("",a.fullRange()),this._children=e.without(this._children,a)},list:function(){return this._children},indexOf:function(a){return e.indexOf(this.list(),this.get(a))},
name:function(a){if(!e.isUndefined(a)&&this._name!==(a=String(a)))this._updateSource(a,this._positions.name,this._positions.name+this._name.length),this._name=a;return this._name},nameRange:function(a){return b(this._positions.name+(a?this.options.offset:0),this.name())},range:function(a){return b(a?this.options.offset:0,this.toString())},itemFromPosition:function(a,b){return e.find(this.list(),function(c){return c.range(b).inside(a)})},toString:function(){return this.source}};c.extend=g.extend;c.prototype=
{initialize:function(){},_pos:function(a,b){return a+(b?this.parent.options.offset:0)},value:function(a){if(!e.isUndefined(a)&&this._value!==(a=String(a)))this.parent._updateSource(a,this.valueRange()),this._value=a;return this._value},name:function(a){if(!e.isUndefined(a)&&this._name!==(a=String(a)))this.parent._updateSource(a,this.nameRange()),this._name=a;return this._name},namePosition:function(a){return this._pos(this._positions.name,a)},valuePosition:function(a){return this._pos(this._positions.value,
a)},range:function(a){return b(this.namePosition(a),this.toString())},fullRange:function(a){return this.range(a)},nameRange:function(a){return b(this.namePosition(a),this.name())},valueRange:function(a){return b(this.valuePosition(a),this.value())},toString:function(){return this.name()+this.value()},valueOf:function(){return this.toString()}};return{EditContainer:f,EditElement:c,createToken:function(a,b,c){a={start:a||0,value:b||"",type:c};a.end=a.start+a.value.length;return a}}});
emmet.define("cssEditTree",function(h,e){function g(a,b){return h("range").create(a,b)}function f(a,b){var b=b||d|i,c=["white","line"];if((b&i)==i)for(;a.length&&e.include(c,e.last(a).type);)a.pop();if((b&d)==d)for(;a.length&&e.include(c,a[0].type);)a.shift();return a}function c(a){var b=["white","line",":"],c=[],h,j;a.nextUntil(function(){return!e.include(b,this.itemNext().type)});for(j=a.current().end;h=a.next();){if(h.type=="}"||h.type==";")return f(c,d|(h.type=="}"?i:0)),c.length?(j=c[0].start,
a=e.last(c).end):a=j,g(j,a-j);c.push(h)}if(c.length)return g(c[0].start,e.last(c).end-c[0].start)}function b(a){var b=h("stringStream").create(a),d=[],c=/[\s\u00a0,]/,f=function(){b.next();d.push(g(b.start,b.current()));b.start=b.pos};b.eatSpace();for(b.start=b.pos;a=b.next();)if(a=='"'||a=="'"){b.next();if(!b.skipTo(a))break;f()}else if(a=="("){b.backUp(1);if(!b.skipToPair("(",")"))break;b.backUp(1);f()}else if(c.test(a))d.push(g(b.start,b.current().length-1)),b.eatWhile(c),b.start=b.pos;f();return e.chain(d).filter(function(a){return!!a.length()}).uniq(!1,
function(a){return a.toString()}).value()}var a={styleBefore:"\n\t",styleSeparator:": ",offset:0},d=1,i=2,j=h("editTree").EditContainer.extend({initialize:function(b){e.defaults(this.options,a);var d=h("editTree"),i=h("tokenIterator").create(h("cssParser").parse(b)),j,r=[],t;for(j=i.position();t=i.next();){if(t.type=="{")break;r.push(t)}f(r);r.length?(j=r[0].start,r=e.last(r).end):r=j;j=g(j,r-j);this._positions.name=j.start;this._name=j.substring(b);if(!i.current()||i.current().type!="{")throw"Invalid CSS rule";
for(this._positions.contentStart=i.position()+1;j=i.next();){if(r=j.type=="identifier")a:{r=i.tokens;t=i._i+1;for(var x=r.length;t<x;t++){if(r[t].type==":"){r=!0;break a}if(r[t].type=="identifier"||r[t].type=="line"){r=!1;break a}}r=!1}r&&(j=g(j),r=c(i),t=i.current()&&i.current().type==";"?g(i.current()):g(r.end,0),this._children.push(new l(this,d.createToken(j.start,j.substring(b)),d.createToken(r.start,r.substring(b)),d.createToken(t.start,t.substring(b)))))}this._saveStyle()},_saveStyle:function(){var a=
this._positions.contentStart,b=this.source,d=h("utils");e.each(this.list(),function(c){c.styleBefore=b.substring(a,c.namePosition());var f=d.splitByLines(c.styleBefore);if(f.length>1)c.styleBefore="\n"+e.last(f);c.styleSeparator=b.substring(c.nameRange().end,c.valuePosition());c.styleBefore=e.last(c.styleBefore.split("*/"));c.styleSeparator=c.styleSeparator.replace(/\/\*.*?\*\//g,"");a=c.range().end})},add:function(a,b,d){var c=this.list(),f=this._positions.contentStart,i=e.pick(this.options,"styleBefore",
"styleSeparator"),j=h("editTree");if(e.isUndefined(d))d=c.length;var g=c[d];if(g)f=g.fullRange().start;else if(g=c[d-1])g.end(";"),f=g.range().end;g&&(i=e.pick(g,"styleBefore","styleSeparator"));a=j.createToken(f+i.styleBefore.length,a);b=j.createToken(a.end+i.styleSeparator.length,b);j=new l(this,a,b,j.createToken(b.end,";"));e.extend(j,i);this._updateSource(j.styleBefore+j.toString(),f);this._children.splice(d,0,j);return j}}),l=h("editTree").EditElement.extend({initialize:function(a,b,d,c){this.styleBefore=
a.options.styleBefore;this.styleSeparator=a.options.styleSeparator;this._end=c.value;this._positions.end=c.start},valueParts:function(a){var d=b(this.value());if(a){var c=this.valuePosition(!0);e.each(d,function(a){a.shift(c)})}return d},end:function(a){if(!e.isUndefined(a)&&this._end!==a)this.parent._updateSource(a,this._positions.end,this._positions.end+this._end.length),this._end=a;return this._end},fullRange:function(a){a=this.range(a);a.start-=this.styleBefore.length;return a},toString:function(){return this.name()+
this.styleSeparator+this.value()+this.end()}});return{parse:function(a,b){return new j(a,b)},parseFromPosition:function(a,b,d){d=this.extractRule(a,b,d);return!d||!d.inside(b)?null:this.parse(d.substring(a),{offset:d.start})},extractRule:function(a,b,d){for(var c="",e=a.length,f=-1,i;b>=0;){i=a.charAt(b);if(i=="{"){f=b;break}else if(i=="}"&&!d){b++;break}b--}for(;b<e;){i=a.charAt(b);if(i=="{")f=b;else if(i=="}"){f!=-1&&(c=a.substring(f,b+1));break}b++}if(c){b=f-1;for(d="";b>=0;){i=a.charAt(b);if("{}/\\<>".indexOf(i)!=
-1)break;b--}d=a.substring(b+1,f).replace(/^[\s\n\r]+/m,"");return h("range").create(f-d.length,c.length+d.length)}return null},baseName:function(a){return a.replace(/^\s*\-\w+\-/,"")},findParts:b}});
emmet.define("xmlEditTree",function(h,e){var g={styleBefore:" ",styleSeparator:"=",styleQuote:'"',offset:0},f=/^<([\w\:\-]+)((?:\s+[\w\-:]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/m,c=h("editTree").EditContainer.extend({initialize:function(a){e.defaults(this.options,g);this._positions.name=1;var d=null,c=h("xmlParser").parse(a),f=h("range");e.each(c,function(c){c.value=f.create(c).substring(a);switch(c.type){case "tag":if(/^<[^\/]+/.test(c.value))this._name=c.value.substring(1);
break;case "attribute":d&&this._children.push(new b(this,d));d=c;break;case "string":this._children.push(new b(this,d,c)),d=null}},this);d&&this._children.push(new b(this,d));this._saveStyle()},_saveStyle:function(){var a=this.nameRange().end,b=this.source;e.each(this.list(),function(c){c.styleBefore=b.substring(a,c.namePosition());if(c.valuePosition()!==-1)c.styleSeparator=b.substring(c.namePosition()+c.name().length,c.valuePosition()-c.styleQuote.length);a=c.range().end})},add:function(a,d,c){var f=
this.list(),g=this.nameRange().end,n=h("editTree"),m=e.pick(this.options,"styleBefore","styleSeparator","styleQuote");if(e.isUndefined(c))c=f.length;var o=f[c];if(o)g=o.fullRange().start;else if(o=f[c-1])g=o.range().end;o&&(m=e.pick(o,"styleBefore","styleSeparator","styleQuote"));d=m.styleQuote+d+m.styleQuote;a=new b(this,n.createToken(g+m.styleBefore.length,a),n.createToken(g+m.styleBefore.length+a.length+m.styleSeparator.length,d));e.extend(a,m);this._updateSource(a.styleBefore+a.toString(),g);
this._children.splice(c,0,a);return a}}),b=h("editTree").EditElement.extend({initialize:function(a,b,c){this.styleBefore=a.options.styleBefore;this.styleSeparator=a.options.styleSeparator;b="";a=a.options.styleQuote;if(c)b=c.value,a=b.charAt(0),a=='"'||a=="'"?b=b.substring(1):a="",a&&b.charAt(b.length-1)==a&&(b=b.substring(0,b.length-1));this.styleQuote=a;this._value=b;this._positions.value=c?c.start+a.length:-1},fullRange:function(a){a=this.range(a);a.start-=this.styleBefore.length;return a},toString:function(){return this.name()+
this.styleSeparator+this.styleQuote+this.value()+this.styleQuote}});return{parse:function(a,b){return new c(a,b)},parseFromPosition:function(a,b,c){c=this.extractTag(a,b,c);return!c||!c.inside(b)?null:this.parse(c.substring(a),{offset:c.start})},extractTag:function(a,b,c){var e=a.length,g,n=h("range"),m=Math.min(2E3,e),o=null,q=function(b){var c;if(a.charAt(b)=="<"&&(c=a.substr(b,m).match(f)))return n.create(b,c[0])};for(g=b;g>=0;g--)if(o=q(g))break;if(o&&(o.inside(b)||c))return o;if(!o&&c)return null;
for(g=b;g<e;g++)if(o=q(g))return o}}});
emmet.define("expandAbbreviation",function(h,e){var g=h("handlerList").create(),f=null,c=h("actions");c.add("expand_abbreviation",function(b,a,c){var f=e.toArray(arguments),j=h("editorUtils").outputInfo(b,a,c);f[1]=j.syntax;f[2]=j.profile;return g.exec(!1,f)});c.add("expand_abbreviation_with_tab",function(b,a,d){c.run("expand_abbreviation",b,a,d)||b.replaceContent(h("resources").getVariable("indentation"),b.getCaretPos())},{hidden:!0});g.add(function(b,a,c){var e=b.getSelectionRange().end,g=f.findAbbreviation(b);
return g&&(a=emmet.expandAbbreviation(g,a,c,h("actionUtils").captureContext(b)))?(b.replaceContent(a,e-g.length,e),!0):!1},{order:-1});return f={addHandler:function(b,a){g.add(b,a)},removeHandler:function(b){g.remove(b,options)},findAbbreviation:function(b){var a=h("range").create(b.getSelectionRange()),c=String(b.getContent());if(a.length())return a.substring(c);b=b.getCurrentLineRange();return h("actionUtils").extractAbbreviation(c.substring(b.start,a.start))}}});
emmet.define("wrapWithAbbreviation",function(h){h("actions").add("wrap_with_abbreviation",function(e,g,f,c){var c=h("editorUtils").outputInfo(e,f,c),b=h("utils"),a=h("editorUtils"),d=h("html_matcher"),g=g||e.prompt("Enter abbreviation");if(!g)return null;var g=String(g),i=e.getSelectionRange(),f=i.start,i=i.end;if(f==i){i=d(c.content,f,c.profile);if(!i||i[0]==-1)return!1;i=b.narrowToNonSpace(c.content,i[0],i[1]-i[0]);f=i.start;i=i.end}b=b.escapeText(c.content.substring(f,i));return(g=h("wrapWithAbbreviation").wrap(g,
a.unindent(e,b),c.syntax,c.profile))?(e.replaceContent(g,f,i),!0):!1});return{wrap:function(e,g,f,c){var b=h("filters"),a=h("utils"),f=f||emmet.defaultSyntax(),c=c||emmet.defaultProfile();h("tabStops").resetTabstopIndex();e=b.extractFromAbbreviation(e);return(g=h("abbreviationParser").parse(e[0],{syntax:f,pastedContent:g}))?(f=b.composeList(f,c,e[1]),b.apply(g,f,c),a.replaceVariables(g.toString())):null}}});
emmet.exec(function(h,e){function g(b,a){var c=a-(b.options.offset||0),f=/^[\s\n\r]/;return e.find(b.list(),function(a){return a.range().end===c?f.test(b.source.charAt(c)):a.range().inside(c)})}function f(b,a,c,e){for(var f=-1,g=-1;a--;)if(b.substr(a,c.length)==c){f=a;break}if(f!=-1){a=f;for(c=b.length;c>=a++;)if(b.substr(a,e.length)==e){g=a+e.length;break}}return f!=-1&&g!=-1?h("range").create(f,g-f):null}function c(b,a,c,e){function g(b){return b.replace(RegExp("^"+q.escapeForRegexp(a)+"\\s*"),
function(a){m-=a.length;return""}).replace(RegExp("\\s*"+q.escapeForRegexp(c)+"$"),"")}var l=h("editorUtils"),n=l.outputInfo(b).content,m=b.getCaretPos(),o=null,q=h("utils");(o=f(n,m,a,c))&&o.overlap(e)?(e=o,o=g(e.substring(n))):(o=a+" "+e.substring(n).replace(RegExp(q.escapeForRegexp(a)+"\\s*|\\s*"+q.escapeForRegexp(c),"g"),"")+" "+c,m+=a.length+1);return o!==null?(b.setCaretPos(e.start),b.replaceContent(l.unindent(b,o),e.start,e.end),b.setCaretPos(m),!0):!1}h("actions").add("toggle_comment",function(b){var a=
h("editorUtils").outputInfo(b);if(a.syntax=="css"){var d=b.getCaretPos(),e=h("html_matcher").getTags(a.content,d);if(e&&e[0]&&e[0].type=="tag"&&e[0].start<=d&&e[0].end>=d)a.syntax="html"}if(a.syntax=="css"){e=h("range").create(b.getSelectionRange());a=h("editorUtils").outputInfo(b);if(!e.length()&&(d=h("cssEditTree").parseFromPosition(a.content,b.getCaretPos())))e=(e=g(d,b.getCaretPos()))?e.range(!0):h("range").create(d.nameRange(!0).start,d.source);e.length()||(e=h("range").create(b.getCurrentLineRange()),
h("utils").narrowToNonSpace(a.content,e));b=c(b,"/*","*/",e)}else{a=h("range").create(b.getSelectionRange());d=h("editorUtils").outputInfo(b);if(!a.length()&&(d=h("html_matcher").getTags(d.content,b.getCaretPos(),d.profile))&&d[0])a.start=d[0].start,a.end=d[1]?d[1].end:d[0].end;b=c(b,"<\!--","--\>",a)}return b})});
emmet.exec(function(h){function e(e,f,c){function b(b){for(var c=b;c>=0;){var d=a.charAt(c);if(d=="\n"||d=="\r")break;c--}return a.substring(c,b)}for(var f=f||1,c=e.getCaretPos()+(c||0),a=String(e.getContent()),e=a.length,d=-1,h=/^\s+$/;c<=e&&c>=0;){c+=f;var j=a.charAt(c),l=a.charAt(c+1),n=a.charAt(c-1);switch(j){case '"':case "'":l==j&&n=="="&&(d=c+1);break;case ">":l=="<"&&(d=c+1);break;case "\n":case "\r":h.test(b(c-1))&&(d=c)}if(d!=-1)break}return d}h=h("actions");h.add("prev_edit_point",function(g){var f=
g.getCaretPos(),c=e(g,-1);c==f&&(c=e(g,-1,-2));return c!=-1?(g.setCaretPos(c),!0):!1},{label:"Previous Edit Point"});h.add("next_edit_point",function(g){var f=e(g,1);f!=-1&&g.setCaretPos(f)})});
emmet.exec(function(h,e){function g(a,b,c,d){var e=h("range"),f=h("editorUtils").outputInfo(a).content,g=f.length,j,i=e.create(-1,0),l=e.create(a.getSelectionRange());j=l.start;for(var n=1E5;j>=0&&j<g&&--n>0;){if(e=c(f,j,b)){if(i.equal(e))break;i=e.clone();if(j=d(e.substring(f),e.start,l.clone()))return a.createSelection(j.start,j.end),!0;else j=b?e.start:e.end-1}j+=b?-1:1}return!1}function f(a){var b=!0;return g(a,!1,function(a,c){if(b){b=!1;var d;a:{d=c;for(var e;d>=0;){if(e=i(a,d)){d=e;break a}d--}d=
null}return d}else return i(a,c)},function(a,b,c){return d(a,b,c,!1)})}function c(a){return g(a,!0,i,function(a,b,c){return d(a,b,c,!0)})}function b(b,c,d){var d=d||0,f=h("range"),g=[],i=-1,l="",n="",q,m;e.each(c,function(c){switch(c.type){case "tag":m=b.substring(c.start,c.end);/^<[\w\:\-]/.test(m)&&g.push(f.create({start:c.start+1,end:c.end}));break;case "attribute":i=c.start;l=b.substring(c.start,c.end);break;case "string":g.push(f.create(i,c.end-i)),q=f.create(c),n=q.substring(b),j(n.charAt(0))&&
q.start++,j(n.charAt(n.length-1))&&q.end--,g.push(q),l=="class"&&(g=g.concat(a(q.substring(b),q.start)))}});e.each(g,function(a){a.shift(d)});return e.chain(g).filter(function(a){return!!a.length()}).uniq(!1,function(a){return a.toString()}).value()}function a(a,b){var b=b||0,c=[],d=h("stringStream").create(a),e=h("range");d.eatSpace();d.start=d.pos;for(var f;f=d.next();)if(/[\s\u00a0]/.test(f))c.push(e.create(d.start+b,d.pos-d.start-1)),d.eatSpace(),d.start=d.pos;c.push(e.create(d.start+b,d.pos-
d.start));return c}function d(a,c,d,f){a=b(a,h("xmlParser").parse(a),c);f&&a.reverse();return(c=e.find(a,function(a){return a.equal(d)}))?(f=e.indexOf(a,c),f<a.length-1?a[f+1]:null):f?e.find(a,function(a){return a.start<d.start}):!c&&(f=e.filter(a,function(a){return a.inside(d.end)}),f.length>1)?f[1]:e.find(a,function(a){return a.end>d.end})}function i(a,b){var c;if(a.charAt(b)=="<"&&(c=a.substring(b,a.length).match(q)))return h("range").create(b,c[0])}function j(a){return a=='"'||a=="'"}function l(a){var b=
a.valueRange(!0),c=[a.range(!0),b],d=h("stringStream"),f=h("cssEditTree"),g=h("range"),j=a.value();e.each(a.valueParts(),function(a){var h=a.clone();c.push(h.shift(b.start));var i=d.create(a.substring(j));if(i.match(/^[\w\-]+\(/,!0)){i.start=i.pos;i.skipToPair("(",")");var n=i.current();c.push(g.create(h.start+i.start,n));e.each(f.findParts(n),function(a){c.push(g.create(h.start+i.start+a.start,a.substring(n)))})}});return e.chain(c).filter(function(a){return!!a.length()}).uniq(!1,function(a){return a.toString()}).value()}
function n(a,b,c){var d=null,f=null,g=a.list(),h,j;c?(g.reverse(),h=function(a){return a.range(!0).start<=b.start},j=function(a){return a.start<b.start}):(h=function(a){return a.range(!0).end>=b.end},j=function(a){return a.end>b.start});for(;d=e.find(g,h);){a=l(d);c&&a.reverse();if(f=e.find(a,function(a){return a.equal(b)})){if(f=e.indexOf(a,f),f!=a.length-1){f=a[f+1];break}}else{f=e.filter(a,function(a){return a.inside(b.end)});if(f.length>1){f=f[1];break}if(f=e.find(a,j))break}f=null;b.start=b.end=
c?d.range(!0).start-1:d.range(!0).end+1}return f}function m(a,b,c){a=h("cssEditTree").parse(a,{offset:b});b=a.nameRange(!0);return c.end<b.end?b:n(a,c,!1)}function o(a,b,c){b=h("cssEditTree").parse(a,{offset:b});a=n(b,c,!0);return!a&&(b=b.nameRange(!0),c.start>b.start)?b:a}var q=/^<([\w\:\-]+)((?:\s+[\w\-:]+(?:\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|[^>\s]+))?)*)\s*(\/?)>/,r=h("actions");r.add("select_next_item",function(a){return a.getSyntax()=="css"?g(a,!1,h("cssEditTree").extractRule,m):f(a)});r.add("select_previous_item",
function(a){return a.getSyntax()=="css"?g(a,!0,h("cssEditTree").extractRule,o):c(a)})});
emmet.exec(function(h){function e(c,b,a){var b=String((b||"out").toLowerCase()),d=h("editorUtils").outputInfo(c,a),a=d.syntax,e=h("range"),g=e.create(c.getSelectionRange()),d=d.content,l=null,l=f.last_match.opening_tag,n=f.last_match.closing_tag;if(b=="in"&&l&&g.length())if(n)l.start==g.start?d.charAt(l.end)=="<"?(b=e.create(f.find(d,l.end+1,a)),l=b.start==l.end&&b.end==n.start?e.create(f(d,l.end+1,a)):e.create(l.end,n.start-l.end)):l=e.create(l.end,n.start-l.end):(b=d.substring(0,n.start).indexOf("<",
l.end),l=e.create(f(d,b!=-1?b+1:l.end,a)));else return!1;else l=e.create(f(d,g.end,a));return l&&l.start!=-1?(c.createSelection(l.start,l.end),!0):!1}var g=h("actions"),f=h("html_matcher");g.add("match_pair",e,{hidden:!0});g.add("match_pair_inward",function(c){return e(c,"in")},{label:"HTML/Match Pair Tag (inward)"});g.add("match_pair_outward",function(c){return e(c,"out")},{label:"HTML/Match Pair Tag (outward)"});g.add("matching_pair",function(c){var b=String(c.getContent()),a=c.getCaretPos();b.charAt(a)==
"<"&&a++;var d=f.getTags(b,a,String(c.getProfileName()));if(d&&d[0]&&(b=d[0],d=d[1]))if(b.start<=a&&b.end>=a)return c.setCaretPos(d.start),!0;else if(d.start<=a&&d.end>=a)return c.setCaretPos(b.start),!0;return!1},{label:"HTML/Go To Matching Tag Pair"})});
emmet.exec(function(h){h("actions").add("remove_tag",function(e){var g=h("utils"),f=h("editorUtils").outputInfo(e),c=h("html_matcher").getTags(f.content,e.getCaretPos(),f.profile);if(c&&c[0]){if(c[1]){var b=g.narrowToNonSpace(f.content,c[0].end,c[1].start-c[0].end),a=g.findNewlineBounds(f.content,b.start),a=g.getLinePadding(a.substring(f.content)),f=b.substring(f.content),f=g.unindentString(f,a);e.replaceContent(g.getCaretPlaceholder()+g.escapeText(f),c[0].start,c[1].end)}else e.replaceContent(g.getCaretPlaceholder(),
c[0].start,c[0].end);return!0}return!1},{label:"HTML/Remove Tag"})});
emmet.exec(function(h){h("actions").add("split_join_tag",function(e,g){var f=h("html_matcher"),c=h("editorUtils").outputInfo(e,null,g),b=h("profile").get(c.profile);if((f=f.getTags(c.content,e.getCaretPos(),c.profile))&&f[0]){if(f[1]){c=h("utils");b=f[0].full_tag.replace(/\s*>$/,(b.self_closing_tag===!0?"/":" /")+">");if(b.length+f[0].start<e.getCaretPos())b+=c.getCaretPlaceholder();else var a=e.getCaretPos()-f[0].start,b=c.replaceSubstring(b,c.getCaretPlaceholder(),a);e.replaceContent(b,f[0].start,
f[1].end)}else{var d=h("utils"),c=d.getNewline(),a=h("resources").getVariable("indentation"),d=d.getCaretPlaceholder(),b=b.tag_nl===!0?c+a+d+c:d,b=f[0].full_tag.replace(/\s*\/>$/,">")+b+"</"+f[0].name+">";e.replaceContent(b,f[0].start,f[0].end)}f=!0}else f=!1;return f},{label:"HTML/Split\\Join Tag Declaration"})});
emmet.define("reflectCSSValue",function(h,e){function g(b){var a=h("cssEditTree"),d=h("editorUtils").outputInfo(b),b=b.getCaretPos();if(a=a.parseFromPosition(d.content,b))if(d=a.itemFromPosition(b,!0)){var e=a.source,f=a.options.offset,b=b-f-d.range().start;c.exec(!1,[d]);if(e!==a.source)return{data:a.source,start:f,end:f+e.length,caret:f+d.range().start+b}}}function f(b){var b=h("cssEditTree").baseName(b),a;if(b=="opacity"||b=="filter")return/^(?:\-\w+\-)?(?:opacity|filter)$/;else if(a=b.match(/^border-radius-(top|bottom)(left|right)/))return RegExp("^(?:\\-\\w+\\-)?(?:"+
b+"|border-"+a[1]+"-"+a[2]+"-radius)$");else if(a=b.match(/^border-(top|bottom)-(left|right)-radius/))return RegExp("^(?:\\-\\w+\\-)?(?:"+b+"|border-radius-"+a[1]+a[2]+")$");return RegExp("^(?:\\-\\w+\\-)?"+b+"$")}var c=h("handlerList").create();h("actions").add("reflect_css_value",function(b){return b.getSyntax()!="css"?!1:h("actionUtils").compoundUpdate(b,g(b))},{label:"CSS/Reflect Value"});c.add(function(b){var a=f(b.name());e.each(b.parent.list(),function(c){if(a.test(c.name())){var e;var f=b.name(),
g=b.value(),n=c.name();e=c.value();var m=h("cssEditTree"),o=h("utils"),f=m.baseName(f),n=m.baseName(n);e=f=="opacity"&&n=="filter"?e.replace(/opacity=[^)]*/i,"opacity="+Math.floor(parseFloat(g)*100)):f=="filter"&&n=="opacity"?(f=g.match(/opacity=([^)]*)/i))?o.prettifyNumber(parseInt(f[1])/100):e:g;c.value(e)}})},{order:-1});return{addHandler:function(b,a){c.add(b,a)},removeHandler:function(b){c.remove(b,options)}}});
emmet.exec(function(h){h("actions").add("evaluate_math_expression",function(e){var g=h("actionUtils"),f=h("utils"),c=String(e.getContent()),b=h("range").create(e.getSelectionRange());b.length()||(b=g.findExpressionBounds(e,function(a){return f.isNumeric(a)||".+-*/\\".indexOf(a)!=-1}));if(b&&b.length()){g=b.substring(c);g=g.replace(/([\d\.\-]+)\\([\d\.\-]+)/g,"Math.round($1/$2)");try{var a=f.prettifyNumber((new Function("return "+g))());e.replaceContent(a,b.start,b.end);e.setCaretPos(b.start+a.length);
return!0}catch(d){}}return!1},{label:"Numbers/Evaluate Math Expression"})});
emmet.exec(function(h,e){function g(b,a){var c=h("utils"),g=!1,j=!1,l=h("actionUtils").findExpressionBounds(b,function(a,b,e){return c.isNumeric(a)?!0:a=="."?!c.isNumeric(e.charAt(b+1))?!1:j?!1:j=!0:a=="-"?g?!1:g=!0:!1});if(l&&l.length()){var n=l.substring(String(b.getContent())),m=parseFloat(n);if(!e.isNaN(m)){m=c.prettifyNumber(m+a);if(/^(\-?)0+[1-9]/.test(n)){var o="";RegExp.$1&&(o="-",m=m.substring(1));m=m.split(".");m[0]=c.zeroPadString(m[0],f(n));m=o+m.join(".")}b.replaceContent(m,l.start,l.end);
b.createSelection(l.start,l.start+m.length);return!0}}return!1}function f(b){b=b.replace(/^\-/,"");return~b.indexOf(".")?b.split(".")[0].length:b.length}var c=h("actions");e.each([1,-1,10,-10,0.1,-0.1],function(b){var a=b>0?"increment":"decrement";c.add(a+"_number_by_"+String(Math.abs(b)).replace(".","").substring(0,2),function(a){return g(a,b)},{label:"Numbers/"+a.charAt(0).toUpperCase()+a.substring(1)+" number by "+Math.abs(b)})})});
emmet.exec(function(h,e){var g=h("actions"),f=h("preferences");f.define("css.closeBraceIndentation","\n","Indentation before closing brace of CSS rule. Some users prefereindented closing brace of CSS rule for better readability. This preference\u2019s value will be automatically inserted before closing brace when user adds newline in newly created CSS rule (e.g. when \u201cInsert formatted linebreak\u201d action will be performed in CSS file). If you\u2019re such user, you may want to write put a value like <code>\\n\\t</code> in this preference.");
g.add("insert_formatted_line_break_only",function(c){var b=h("utils"),a=h("resources"),d=h("editorUtils").outputInfo(c),g=c.getCaretPos(),j=b.getNewline();if(e.include(["html","xml","xsl"],d.syntax)){if(a=a.getVariable("indentation"),d=h("html_matcher").getTags(d.content,g,d.profile),d[0]&&d[1]&&d[0].type=="tag"&&d[0].end==g&&d[1].start==g)return c.replaceContent(j+a+b.getCaretPlaceholder()+j,g),!0}else if(d.syntax=="css"&&(d=d.content,g&&d.charAt(g-1)=="{")){var l=f.get("css.closeBraceIndentation"),
a=a.getVariable("indentation"),n=d.charAt(g)=="}";if(!n)for(var m=g,o=d.length,q;m<o;m++){q=d.charAt(m);if(q=="{")break;if(q=="}"){l="";n=!0;break}}n||(l+="}");b=j+a+b.getCaretPlaceholder()+l;c.replaceContent(b,g);return!0}return!1},{hidden:!0});g.add("insert_formatted_line_break",function(c){if(!g.run("insert_formatted_line_break_only",c)){for(var b=h("utils"),a=h("editorUtils").getCurrentLinePadding(c),d=String(c.getContent()),e=c.getCaretPos(),f=d.length,b=b.getNewline(),l="",n=c.getCurrentLineRange().end+
1,m;n<f;n++)if(m=d.charAt(n),m==" "||m=="\t")l+=m;else break;l.length>a.length?c.replaceContent(b+l,e,e,!0):c.replaceContent(b,e)}return!0},{hidden:!0})});
emmet.exec(function(h){h("actions").add("merge_lines",function(e){var g=h("html_matcher"),f=h("utils"),c=h("editorUtils").outputInfo(e),b=h("range").create(e.getSelectionRange());if(!b.length()&&(g=g(c.content,e.getCaretPos(),c.profile)))b.start=g[0],b.end=g[1];if(b.length()){c=b.substring(c.content);f=f.splitByLines(c);for(c=1;c<f.length;c++)f[c]=f[c].replace(/^\s+/,"");c=f.join("").replace(/\s{2,}/," ");e.replaceContent(c,b.start,b.end);e.createSelection(b.start,b.start+c.length);return!0}return!1})});
emmet.exec(function(h){function e(e,f,c){c=c||0;return f.charAt(c)==e.charAt(0)&&f.substr(c,e.length)==e}h("actions").add("encode_decode_data_url",function(g){var f=String(g.getSelection()),c=g.getCaretPos();if(!f)for(var b=String(g.getContent());c-- >=0;)if(e("src=",b,c)){if(b=b.substr(c).match(/^(src=(["'])?)([^'"<>\s]+)\1?/))f=b[3],c+=b[1].length;break}else if(e("url(",b,c)){if(b=b.substr(c).match(/^(url\((['"])?)([^'"\)\s]+)\1?/))f=b[3],c+=b[1].length;break}if(f)if(e("data:",f))if(b=String(g.prompt("Enter path to file (absolute or relative)"))){var a=
h("file"),d=a.createPath(g.getFilePath(),b);if(!d)throw"Can't save file";a.save(d,h("base64").decode(f.replace(/^data\:.+?;.+?,/,"")));g.replaceContent("$0"+b,c,c+f.length);g=!0}else g=!1;else{b=h("file");a=h("actionUtils");d=g.getFilePath();if(d===null)throw"You should save your file before using this action";d=b.locateFile(d,f);if(d===null)throw"Can't find "+f+" file";var i=h("base64").encode(String(b.read(d)));if(!i)throw"Can't encode file content to base64";i="data:"+(a.mimeTypes[String(b.getExt(d))]||
"application/octet-stream")+";base64,"+i;g.replaceContent("$0"+i,c,c+f.length);g=!0}else g=!1;return g},{label:"Encode\\Decode data:URL image"})});
emmet.exec(function(h,e){function g(e,c){var b;if(c){if(/^data:/.test(c))b=h("base64").decode(c.replace(/^data\:.+?;.+?,/,""));else{b=h("file");var a=b.locateFile(e.getFilePath(),c);if(a===null)throw"Can't find "+c+" file";b=String(b.read(a))}return h("actionUtils").getImageSize(b)}}h("actions").add("update_image_size",function(f){var c;if(String(f.getSyntax())=="css")a:{c=f.getCaretPos();var b=h("editorUtils").outputInfo(f);if(b=h("cssEditTree").parseFromPosition(b.content,c,!0)){var a=b.itemFromPosition(c,
!0),d;if(a&&(d=/url\((["']?)(.+?)\1\)/i.exec(a.value()||"")))if(d=g(f,d[2])){a=b.range(!0);b.value("width",d.width+"px");b.value("height",d.height+"px",b.indexOf("width")+1);c=e.extend(a,{data:b.toString(),caret:c});break a}}c=null}else a:{c=f.getCaretPos();b=h("editorUtils").outputInfo(f);if((b=h("xmlEditTree").parseFromPosition(b.content,c,!0))&&b.name().toLowerCase()=="img")if(d=g(f,b.value("src"))){a=b.range(!0);b.value("width",d.width);b.value("height",d.height,b.indexOf("width")+1);c=e.extend(a,
{data:b.toString(),caret:c});break a}c=null}return h("actionUtils").compoundUpdate(f,c)})});
emmet.define("cssResolver",function(h,e){function g(a){var b=a&&a.charCodeAt(0);return a&&a=="."||b>47&&b<58}function f(a){a=h("utils").trim(a);if(~a.indexOf("/*"))return!1;a=h("tabStops").processText(a,{replaceCarets:!0,tabstop:function(){return"value"}});return a.split(":").length==2}function c(a){var b=h("utils"),a=b.trim(a);if(a.indexOf(":")==-1)return{name:a,value:o};a=a.split(":");return{name:b.trim(a.shift()),value:b.trim(a.join(":")).replace(/^(\$\{0\}|\$0)(\s*;?)$/,"${1}$2")}}function b(a,
b){var c=n[b];c||(c=e.find(n,function(a){return a.prefix==b}));return c&&c.supports&&e.include(c.supports,a)}function a(a,c){var d=[];e.each(n,function(c,e){b(a,e)&&d.push(e)});!d.length&&!c&&e.each(n,function(a,b){a.obsolete||d.push(b)});return d}function d(a,b){e.isString(b)&&(b={prefix:b});n[a]=e.extend({},l,b)}function i(a,b){if(!e.isString(a))a=a.data;if(!f(a))return a;b&&(~a.indexOf(";")?a=a.split(";").join(" !important;"):a+=" !important");var c=a.indexOf(":");return a=a.substring(0,c).replace(/\s+$/,
"")+q.get("css.valueSeparator")+h("utils").trim(a.substring(c+1))}var j=null,l={prefix:"emmet",obsolete:!1,transformName:function(a){return"-"+this.prefix+"-"+a},supports:null},n={},m={p:"%",e:"em",x:"ex"},o="${1};",q=h("preferences");q.define("css.valueSeparator",": ","Defines a symbol that should be placed between CSS property and value when expanding CSS abbreviations.");q.define("css.autoInsertVendorPrefixes",!0,"Automatically generate vendor-prefixed copies of expanded CSS property. By default, Emmet will generate vendor-prefixed NaN(e.g. <code>-bxsh</code>). With this option enabled, you don\u2019t need dashes before abbreviations: Emmet will produce vendor-prefixed properties for you.");
var r=e.template("A comma-separated list of CSS properties that may have <code><%= vendor %></code> vendor prefix. This list is used to generate a list of prefixed properties when expanding <code>-property</code> abbreviations. Empty list means that all possible CSS values may have <code><%= vendor %></code> prefix.");e.each({webkit:"animation-delay, animation-direction, animation-duration, animation-fill-mode, animation-iteration-count, animation-name, animation-play-state, animation-timing-function, appearance, backface-visibility, background-clip, background-composite, background-origin, background-size, border-fit, border-horizontal-spacing, border-image, border-vertical-spacing, box-align, box-direction, box-flex, box-flex-group, box-lines, box-ordinal-group, box-orient, box-pack, box-reflect, box-shadow, color-correction, column-break-after, column-break-before, column-break-inside, column-count, column-gap, column-rule-color, column-rule-style, column-rule-width, column-span, column-width, dashboard-region, font-smoothing, highlight, hyphenate-character, hyphenate-limit-after, hyphenate-limit-before, hyphens, line-box-contain, line-break, line-clamp, locale, margin-before-collapse, margin-after-collapse, marquee-direction, marquee-increment, marquee-repetition, marquee-style, mask-attachment, mask-box-image, mask-box-image-outset, mask-box-image-repeat, mask-box-image-slice, mask-box-image-source, mask-box-image-width, mask-clip, mask-composite, mask-image, mask-origin, mask-position, mask-repeat, mask-size, nbsp-mode, perspective, perspective-origin, rtl-ordering, text-combine, text-decorations-in-effect, text-emphasis-color, text-emphasis-position, text-emphasis-style, text-fill-color, text-orientation, text-security, text-stroke-color, text-stroke-width, transform, transition, transform-origin, transform-style, transition-delay, transition-duration, transition-property, transition-timing-function, user-drag, user-modify, user-select, writing-mode, svg-shadow",
moz:"animation-delay, animation-direction, animation-duration, animation-fill-mode, animation-iteration-count, animation-name, animation-play-state, animation-timing-function, appearance, backface-visibility, background-inline-policy, binding, border-bottom-colors, border-image, border-left-colors, border-right-colors, border-top-colors, box-align, box-direction, box-flex, box-ordinal-group, box-orient, box-pack, box-shadow, box-sizing, column-count, column-gap, column-rule-color, column-rule-style, column-rule-width, column-width, float-edge, font-feature-settings, font-language-override, force-broken-image-icon, hyphens, image-region, orient, outline-radius-bottomleft, outline-radius-bottomright, outline-radius-topleft, outline-radius-topright, perspective, perspective-origin, stack-sizing, tab-size, text-blink, text-decoration-color, text-decoration-line, text-decoration-style, text-size-adjust, transform, transform-origin, transform-style, transition, transition-delay, transition-duration, transition-property, transition-timing-function, user-focus, user-input, user-modify, user-select, window-shadow",
ms:"accelerator, animation, animation-delay, animation-direction, animation-duration, animation-fill-mode, animation-iteration-count, animation-name, animation-play-state, animation-timing-function, backface-visibility, background-position-x, background-position-y, behavior, block-progression, box-align, box-direction, box-flex, box-line-progression, box-lines, box-ordinal-group, box-orient, box-pack, content-zoom-boundary, content-zoom-boundary-max, content-zoom-boundary-min, content-zoom-chaining, content-zoom-snap, content-zoom-snap-points, content-zoom-snap-type, content-zooming, filter, flow-from, flow-into, font-feature-settings, grid-column, grid-column-align, grid-column-span, grid-columns, grid-layer, grid-row, grid-row-align, grid-row-span, grid-rows, high-contrast-adjust, hyphenate-limit-chars, hyphenate-limit-lines, hyphenate-limit-zone, hyphens, ime-mode, interpolation-mode, layout-flow, layout-grid, layout-grid-char, layout-grid-line, layout-grid-mode, layout-grid-type, line-break, overflow-style, overflow-x, overflow-y, perspective, perspective-origin, perspective-origin-x, perspective-origin-y, scroll-boundary, scroll-boundary-bottom, scroll-boundary-left, scroll-boundary-right, scroll-boundary-top, scroll-chaining, scroll-rails, scroll-snap-points-x, scroll-snap-points-y, scroll-snap-type, scroll-snap-x, scroll-snap-y, scrollbar-arrow-color, scrollbar-base-color, scrollbar-darkshadow-color, scrollbar-face-color, scrollbar-highlight-color, scrollbar-shadow-color, scrollbar-track-color, text-align-last, text-autospace, text-justify, text-kashida-space, text-overflow, text-size-adjust, text-underline-position, touch-action, transform, transform-origin, transform-origin-x, transform-origin-y, transform-origin-z, transform-style, transition, transition-delay, transition-duration, transition-property, transition-timing-function, user-select, word-break, word-wrap, wrap-flow, wrap-margin, wrap-through, writing-mode, zoom",
o:"dashboard-region, animation, animation-delay, animation-direction, animation-duration, animation-fill-mode, animation-iteration-count, animation-name, animation-play-state, animation-timing-function, border-image, link, link-source, object-fit, object-position, tab-size, table-baseline, transform, transform-origin, transition, transition-delay, transition-duration, transition-property, transition-timing-function, accesskey, input-format, input-required, marquee-dir, marquee-loop, marquee-speed, marquee-style"},
function(a,b){q.define("css."+b+"Properties",a,r({vendor:b}))});q.define("css.unitlessProperties","z-index, line-height, opacity, font-weight","The list of properties whose values \u200b\u200bmust not contain units.");d("w",{prefix:"webkit",supports:q.getArray("css.webkitProperties")});d("m",{prefix:"moz",supports:q.getArray("css.mozProperties")});d("s",{prefix:"ms",supports:q.getArray("css.msProperties")});d("o",{prefix:"o",supports:q.getArray("css.oProperties")});var t=q.getArray("css.unitlessProperties"),
x=["css","less","sass","scss"];h("resources").addResolver(function(a,b){return e.include(x,b)&&a.isElement()?j.expandToSnippet(a.abbreviation):null});var u=h("expandAbbreviation");u.addHandler(function(a,b,c){if(!e.include(x,b))return!1;var d=a.getSelectionRange().end,f=u.findAbbreviation(a);return f&&(b=emmet.expandAbbreviation(f,b,c))?(f=d-f.length,c=d,a.getContent().charAt(d)==";"&&c++,a.replaceContent(b,f,c),!0):!1});return j={addPrefix:d,supportsPrefix:b,prefixed:function(a,c){return b(a,c)?
"-"+c+"-"+a:a},listPrefixes:function(){return e.map(n,function(a){return a.prefix})},getPrefix:function(a){return n[a]},removePrefix:function(a){a in n&&delete n[a]},addUnitAlias:function(a,b){m[a]=b},getUnitAlias:function(a){return m[a]},removeUnitAlias:function(a){a in m&&delete m[a]},extractPrefixes:function(a){if(a.charAt(0)!="-")return{property:a,prefixes:null};for(var b=1,c=a.length,d,e=[];b<c;){d=a.charAt(b);if(d=="-"){b++;break}if(d in n)e.push(d);else{e.length=0;b=1;break}b++}if(b==c-1)b=
1,e.length=1;return{property:a.substring(b),prefixes:e.length?e:"all"}},findValuesInAbbreviation:function(a){for(var b=0,c=a.length,d;b<c;){d=a.charAt(b);if(g(d)||d=="-"&&g(a.charAt(b+1)))return a.substring(b);b++}return""},parseValues:function(a){for(var b="",c=[],d=0,e=a.length,f,h;d<e;)if(f=a.charAt(d),f=="-"&&b)c.push(b),b="",d++;else if(b+=f,d++,h=a.charAt(d),f!="-"&&!g(f)&&(g(h)||h=="-"))c.push(b),b="";b&&c.push(b);return c},extractValues:function(a){var b=this.findValuesInAbbreviation(a);return!b?
{property:a,values:null}:{property:a.substring(0,a.length-b.length),values:this.parseValues(b)}},normalizeValue:function(a,b){b=(b||"").toLowerCase();return a.replace(/^(\-?[0-9\.]+)([a-z]*)$/,function(a,c,d){return!d&&(c=="0"||e.include(t,b))?c:!d?c+(~c.indexOf(".")?"em":"px"):c+(d in m?m[d]:d)})},expand:function(b,d){var g=h("resources"),j=q.get("css.autoInsertVendorPrefixes"),l;if(l=/^(.+)\!$/.test(b))b=RegExp.$1;var m=g.getSnippet("css",b);if(m&&!j)return i(m,l);var m=this.extractPrefixes(b),
r=this.extractValues(m.property),r=e.extend(m,r);if(m=g.getSnippet("css",r.property)){if(!e.isString(m))m=m.data}else m=r.property+":"+o;if(!f(m))return m;var t=c(m),u=[];!d&&r.values&&(d=e.map(r.values,function(a){return this.normalizeValue(a,t.name)},this).join(" ")+";");t.value=d||t.value;g=r.prefixes=="all"||j?a(t.name,j&&r.prefixes!="all"):r.prefixes;e.each(g,function(a){a in n&&u.push(i(n[a].transformName(t.name)+":"+t.value,l))});u.push(i(t.name+":"+t.value,l));return u},expandToSnippet:function(a,
b){var c=this.expand(a,b);return e.isArray(c)?c.join("\n"):!e.isString(c)?c.data:String(c)}}});
emmet.define("cssGradient",function(h,e){function g(a){return h("utils").trim(a).replace(/\s+/g," ")}function f(a){var a=g(a),b=null,a=a.replace(/^(\w+\(.+?\))\s*/,function(a,c){b=c;return""});b||(a=a.split(" "),b=a[0],a=a[1]||"");var c={color:b};a&&a.replace(/^(\-?[\d\.]+)([a-z%]+)?$/,function(a,b,d){c.position=b;~b.indexOf(".")?d="":d||(d="%");if(d)c.unit=d});return c}function c(a){var b=0;e.each(a,function(c,d){if(!d)return c.position=c.position||0;if(d==a.length-1&&!("position"in c))c.position=
1;if("position"in c){var f=a[b].position||0,g=(c.position-f)/(d-b);e.each(a.slice(b,d),function(a,b){a.position=f+g*b});b=d}})}function b(a){var b=parseFloat(a);if(!e.isNaN(b))switch(b%360){case 0:return"left";case 90:return"bottom";case 180:return"right";case 240:return"top"}return a}function a(a){a=b(a);if(n.test(a))throw"The direction is an angle that can\u2019t be converted.";var c=function(b){return~a.indexOf(b)?"100%":"0"};return c("right")+" "+c("bottom")+", "+c("left")+" "+c("top")}function d(a){var b=
o.getArray("css.gradient.prefixes"),b=e.map(b,function(b){return"-"+b+"-"+a});b.push(a);return b}function i(a,b,c){var f=a.parent,g=h("utils"),j=h("cssResolver"),i=o.getArray("css.gradient.prefixes");e.each(f.getAll(d(a.name())),function(b){b!=a&&/gradient/i.test(b.value())&&f.remove(b)});var k=a.value();c||(c=h("range").create(0,a.value()));var n=function(a){return g.replaceSubstring(k,a,c)},l=h("cssGradient");a.value(n(l.toString(b)));var m=[];e.each(i,function(c){var d=j.prefixed(a.name(),c);if(c==
"webkit"&&o.get("css.gradient.oldWebkit"))try{m.push({name:d,value:n(l.oldWebkitLinearGradient(b))})}catch(e){}m.push({name:d,value:n(l.toString(b,c))})});m=m.sort(function(a,b){return b.name.length-a.name.length});e.each(m,function(b){f.add(b.name,b.value,f.indexOf(a))})}function j(a){var b=a.value(),c=h("cssGradient"),d=null;return(a=e.find(a.valueParts(),function(a){return d=c.parse(a.substring(b))}))&&d?{gradient:d,valueRange:a}:null}var l=["top","to bottom","0deg"],n=/\d+deg/i,m=/top|bottom|left|right/i,
o=h("preferences");o.define("css.gradient.prefixes","webkit, moz, ms, o","A comma-separated list of vendor-prefixes for which values should be generated.");o.define("css.gradient.oldWebkit",!0,"Generate gradient definition for old Webkit implementations");o.define("css.gradient.omitDefaultDirection",!0,"Do not output default direction definition in generated gradients.");h("expandAbbreviation").addHandler(function(a,b,c){b=h("editorUtils").outputInfo(a,b,c);if(b.syntax!="css")return!1;var d=a.getCaretPos();
if(b=h("cssEditTree").parseFromPosition(b.content,d,!0))if((c=b.itemFromPosition(d,!0))||(c=e.find(b.list(),function(a){return a.range(!0).end==d})),c){var f=j(c);if(f){c.end(";");var g=b.options.offset||0,n=g+b.toString().length;i(c,f.gradient,f.valueRange);a.replaceContent(b.toString(),g,n,!0);a.setCaretPos(c.valueRange(!0).end);return!0}}return!1});h("reflectCSSValue").addHandler(function(a){var b=h("cssGradient"),c=h("utils"),f=j(a);if(!f)return!1;var g=a.value(),i=function(a){return c.replaceSubstring(g,
a,f.valueRange)};e.each(a.parent.getAll(d(a.name())),function(c){if(c!==a){var d=c.value().match(/^\s*(\-([a-z]+)\-)?linear\-gradient/);d?c.value(i(b.toString(f.gradient,d[2]||""))):c.value().match(/\s*\-webkit\-gradient/)&&c.value(i(b.oldWebkitLinearGradient(f.gradient)))}});return!0});return{parse:function(a){var b=null,a=h("utils").trim(a).replace(/^([\w\-]+)\((.+?)\)$/,function(a,c,d){c=c.toLowerCase().replace(/^\-[a-z]+\-/,"");if(c=="linear-gradient"||c=="lg"){for(var a=l[0],d=h("stringStream").create(h("utils").trim(d)),
c=[],j;j=d.next();)d.peek()==","?(c.push(d.current()),d.next(),d.eatSpace(),d.start=d.pos):j=="("&&d.skipTo(")");c.push(d.current());c=e.compact(e.map(c,g));if(c.length){if(n.test(c[0])||m.test(c[0]))a=c.shift();b={type:"linear",direction:a,colorStops:e.map(c,f)}}else b=null;return""}return a});return b},oldWebkitLinearGradient:function(b){e.isString(b)&&(b=this.parse(b));if(!b)return null;var d=e.map(b.colorStops,e.clone);e.each(d,function(a){if("position"in a)if(~a.position.indexOf(".")||a.unit==
"%")a.position=parseFloat(a.position)/(a.unit=="%"?100:1);else throw"Can't convert color stop '"+(a.position+(a.unit||""))+"'";});c(d);d=e.map(d,function(a,b){return!a.position&&!b?"from("+a.color+")":a.position==1&&b==d.length-1?"to("+a.color+")":"color-stop("+a.position.toFixed(2).replace(/\.?0+$/,"")+", "+a.color+")"});return"-webkit-gradient(linear, "+a(b.direction)+", "+d.join(", ")+")"},toString:function(a,b){if(a.type=="linear"){var c=(b?"-"+b+"-":"")+"linear-gradient",d=e.map(a.colorStops,
function(a){return a.color+("position"in a?" "+a.position+(a.unit||""):"")});a.direction&&(!o.get("css.gradient.omitDefaultDirection")||!e.include(l,a.direction))&&d.unshift(a.direction);return c+"("+d.join(", ")+")"}}}});emmet.exec(function(h,e){var g=h("handlerList").create(),f=h("resources");e.extend(f,{addGenerator:function(c,b,a){e.isString(c)&&(c=RegExp(c));g.add(function(a,e){var f;return(f=c.exec(a.name()))?b(f,a,e):null},a)}});f.addResolver(function(c,b){return g.exec(null,e.toArray(arguments))})});
emmet.define("tagName",function(h,e){var g={empty:"area,base,basefont,br,col,frame,hr,img,input,isindex,link,meta,param,embed,keygen,command".split(","),blockLevel:"address,applet,blockquote,button,center,dd,del,dir,div,dl,dt,fieldset,form,frameset,hr,iframe,ins,isindex,li,link,map,menu,noframes,noscript,object,ol,p,pre,script,table,tbody,td,tfoot,th,thead,tr,ul,h1,h2,h3,h4,h5,h6".split(","),inlineLevel:"a,abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,code,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var".split(",")},
f={ul:"li",ol:"li",table:"tr",tr:"td",tbody:"tr",thead:"tr",tfoot:"tr",colgroup:"col",select:"option",optgroup:"option",audio:"source",video:"source",object:"param",map:"area"};return{resolve:function(c){c=(c||"").toLowerCase();return c in f?this.getMapping(c):this.isInlineLevel(c)?"span":"div"},getMapping:function(c){return f[c.toLowerCase()]},isInlineLevel:function(c){return this.isTypeOf(c,"inlineLevel")},isBlockLevel:function(c){return this.isTypeOf(c,"blockLevel")},isEmptyElement:function(c){return this.isTypeOf(c,
"empty")},isTypeOf:function(c,b){return e.include(g[b],c)},addMapping:function(c,b){f[c]=b},removeMapping:function(c){c in f&&delete f[c]},addElementToCollection:function(c,b){g[b]||(g[b]=[]);var a=this.getCollection(b);e.include(a,c)||a.push(c)},removeElementFromCollection:function(c,b){b in g&&(g[b]=e.without(this.getCollection(b),c))},getCollection:function(c){return g[c]}}});
emmet.exec(function(h,e){function g(){return{element:d.get("bem.elementSeparator"),modifier:d.get("bem.modifierSeparator")}}function f(a){if(h("abbreviationUtils").isSnippet(a))return a;a.__bem={block:"",element:"",modifier:""};var d=c(a.attribute("class")).split(" "),f=/^[a-z]\-/i;a.__bem.block=e.find(d,function(a){return f.test(a)});if(!a.__bem.block)f=/^[a-z]/i,a.__bem.block=e.find(d,function(a){return f.test(a)})||"";d=e.chain(d).map(function(c){var d;d=b(c,a,"element");d=b(d,a,"modifier");var e=
"",f="",h="",c=g();~d.indexOf(c.element)?(e=d.split(c.element),h=e[1].split(c.modifier),e=e[0],f=h.shift(),h=h.join(c.modifier)):~d.indexOf(c.modifier)&&(h=d.split(c.modifier),e=h.shift(),h=h.join(c.modifier));if(e||f||h){if(!e)e=a.__bem.block;d=e;var i=[];f&&(d+=c.element+f);i.push(d);h&&i.push(d+c.modifier+h);a.__bem.block=e;a.__bem.element=f;a.__bem.modifier=h;c=i}else c=d;return c}).flatten().uniq().value();a.attribute("class",d.join(" "));return a}function c(a){var b=h("utils"),a=(" "+(a||"")+
" ").replace(/\s+/g," "),c=d.get("bem.shortElementPrefix");c&&(c=RegExp("\\s("+b.escapeForRegexp(c)+"+)","g"),a=a.replace(c,function(a,c){return" "+b.repeatString(g().element,c.length)}));return b.trim(a)}function b(a,b,c){var d=g(),e=RegExp("^("+d[c]+")+","g");if(e.test(a)){for(var f=0,e=a.replace(e,function(a){f=a.length/d[c].length;return""}),h=b;h.parent&&f--;)h=h.parent;if(!h||!h.__bem)h=b;if(h&&h.__bem)return a=h.__bem.block,c=="modifier"&&h.__bem.element&&(a+=d.element+h.__bem.element),a+d[c]+
e}return a}function a(b,c){b.name&&f(b,c);var d=h("abbreviationUtils");e.each(b.children,function(b){a(b,c);!d.isSnippet(b)&&b.start&&(i=!0)});return b}var d=h("preferences");d.define("bem.elementSeparator","__","Class name\u2019s element separator.");d.define("bem.modifierSeparator","_","Class name\u2019s modifier separator.");d.define("bem.shortElementPrefix","-","Symbol for describing short \u201cblock-element\u201d notation. Class names prefixed with this symbol will be treated as element name for parent\u2018s block name. Each symbol instance traverses one level up in parsed tree for block name lookup. Empty value will disable short notation.");
var i=!1;h("filters").add("bem",function(b,c){i=!1;b=a(b,c);i&&(b=h("filters").apply(b,"html",c));return b})});
emmet.exec(function(h,e){function g(b,a,d){var f=h("utils"),g=c.get("filter.commentTrigger");if(g=="*"||e.find(g.split(","),function(a){return!!b.attribute(f.trim(a))}))g={node:b,name:b.name(),padding:b.parent?b.parent.padding:"",attr:function(a,c,d){return(a=b.attribute(a))?(c||"")+a+(d||""):""}},a=f.normalizeNewline(a?a(g):""),d=f.normalizeNewline(d?d(g):""),b.start=b.start.replace(/</,a+"<"),b.end=b.end.replace(/>/,">"+d)}function f(b,a,c){var i=h("abbreviationUtils");e.each(b.children,function(b){i.isBlock(b)&&
g(b,a,c);f(b,a,c)});return b}var c=h("preferences");c.define("filter.commentAfter",'\n<\!-- /<%= attr("id", "#") %><%= attr("class", ".") %> --\>',"A definition of comment that should be placed <i>after</i> matched element when <code>comment</code> filter is applied. This definition is an ERB-style template passed to <code>_.template()</code> function (see Underscore.js docs for details). In template context, the following properties and functions are availabe:\n<ul><li><code>attr(name, before, after)</code> \u2013 a function that outputsspecified attribute value concatenated with <code>before</code> and <code>after</code> strings. If attribute doesn't exists, the empty string will be returned.</li><li><code>node</code> \u2013 current node (instance of <code>AbbreviationNode</code>)</li><li><code>name</code> \u2013 name of current tag</li><li><code>padding</code> \u2013 current string padding, can be used for formatting</li></ul>");
c.define("filter.commentBefore","","A definition of comment that should be placed <i>before</i> matched element when <code>comment</code> filter is applied. For more info, read description of <code>filter.commentAfter</code> property");c.define("filter.commentTrigger","id, class","A comma-separated list of attribute names that should exist in abbreviatoin where comment should be added. If you wish to add comment for every element, set this option to <code>*</code>");h("filters").add("c",function(b){var a=
e.template(c.get("filter.commentBefore")),d=e.template(c.get("filter.commentAfter"));return f(b,a,d)})});emmet.exec(function(h,e){function g(c){return c.replace(/([<>&])/g,function(b,a){return f[a]})}var f={"<":"&lt;",">":"&gt;","&":"&amp;"};h("filters").add("e",function b(a){e.each(a.children,function(a){a.start=g(a.start);a.end=g(a.end);a.content=g(a.content);b(a)});return a})});
emmet.exec(function(h,e){function g(){return h("resources").getVariable("indentation")}function f(b){return b.parent&&!b.parent.parent&&!b.index()}function c(b,a){var c=h("abbreviationUtils");if(a.tag_nl===!0||c.isBlock(b))return!0;if(!b.parent||!a.inline_break)return!1;var f=0;return!!e.find(b.parent.children,function(b){b.isTextNode()||!c.isInline(b)?f=0:c.isInline(b)&&f++;if(f>=a.inline_break)return!0})}h("filters").add("_format",function a(d,i,j){var j=j||0,l=h("abbreviationUtils");e.each(d.children,
function(d){if(l.isSnippet(d)){if(!f(d))d.start=h("utils").getNewline()+d.start}else{d.start=d.end="%s";var e=h("utils"),o=h("abbreviationUtils"),q=o.isUnary(d),e=e.getNewline();if(i.tag_nl!==!1){var r=i.tag_nl===!0&&(i.tag_nl_leaf||d.children.length);if(!d.isTextNode()){if(c(d,i)){if(!f(d)&&(!o.isSnippet(d.parent)||d.index()))d.start=e+d.start;if(o.hasBlockChildren(d)||d.children.length&&c(d.children[0],i)||r&&!q)d.end=e+d.end;if(o.hasTagsInContent(d)||r&&!d.children.length&&!q)d.start+=e+g()}else if(o.isInline(d)&&
d.parent&&h("abbreviationUtils").hasBlockChildren(d.parent)&&!f(d))d.start=e+d.start;else if(o.isInline(d)&&o.hasBlockChildren(d))d.end=e+d.end;d.padding=g()}}}a(d,i,j+1)});return d})});
emmet.exec(function(h,e){function g(f,c){var b="",a=[],d=c.attributeQuote(),g=c.cursor();e.each(f.attributeList(),function(e){var f=c.attributeName(e.name);switch(f.toLowerCase()){case "id":b+="#"+(e.value||g);break;case "class":b+="."+h("utils").trim(e.value||g).replace(/\s+/g,".");break;default:a.push(":"+f+" => "+d+(e.value||g)+d)}});a.length&&(b+="{"+a.join(", ")+"}");return b}h("filters").add("haml",function c(b,a,d){var d=d||0,i=h("abbreviationUtils");d||(b=h("filters").apply(b,"_format",a));
e.each(b.children,function(b){if(!i.isSnippet(b)&&b.parent){var e=h("abbreviationUtils"),n=h("utils"),m=g(b,a),o=a.cursor(),e=e.isUnary(b),q=a.self_closing_tag&&e?"/":"",r="",r="%"+a.tagName(b.name());r.toLowerCase()=="%div"&&m&&m.indexOf("{")==-1&&(r="");b.end="";b.start=n.replaceSubstring(b.start,r+m+q+" ",b.start.indexOf("%s"),"%s");!b.children.length&&!e&&(b.start+=o)}c(b,a,d+1)});return b})});
emmet.exec(function(h,e){function g(f,c){var b=c.attributeQuote(),a=c.cursor();return e.map(f.attributeList(),function(d){return" "+c.attributeName(d.name)+"="+b+(d.value||a)+b}).join("")}h("filters").add("html",function c(b,a,d){var d=d||0,i=h("abbreviationUtils");d||(b=h("filters").apply(b,"_format",a));e.each(b.children,function(b){if(!i.isSnippet(b)&&b.parent){var e=h("abbreviationUtils"),n=h("utils"),m=g(b,a),o=a.cursor(),e=e.isUnary(b),q="",r="";if(!b.isTextNode()){var t=a.tagName(b.name());
e?(q="<"+t+m+a.selfClosing()+">",b.end=""):(q="<"+t+m+">",r="</"+t+">")}b.start=n.replaceSubstring(b.start,q,b.start.indexOf("%s"),"%s");b.end=n.replaceSubstring(b.end,r,b.end.indexOf("%s"),"%s");!b.children.length&&!e&&b.content.indexOf(o)==-1&&(b.start+=o)}c(b,a,d+1)});return b})});
emmet.exec(function(h,e){var g=/^\s+/,f=/[\n\r]/g;h("filters").add("s",function b(a){var d=h("abbreviationUtils");e.each(a.children,function(a){if(!d.isSnippet(a))a.start=a.start.replace(g,""),a.end=a.end.replace(g,"");a.start=a.start.replace(f,"");a.end=a.end.replace(f,"");a.content=a.content.replace(f,"");b(a)});return a})});
emmet.exec(function(h,e){function g(f,c){e.each(f.children,function(b){if(b.content)b.content=b.content.replace(c,"");g(b,c)});return f}h("preferences").define("filter.trimRegexp","[\\s|\\u00a0]*[\\d|#|\\-|*|\\u2022]+\\.?\\s*","Regular expression used to remove list markers (numbers, dashes, bullets, etc.) in <code>t</code> (trim) filter. The trim filter is useful for wrapping with abbreviation lists, pased from other documents (for example, Word documents).");h("filters").add("t",function(e){var c=
RegExp(h("preferences").get("filter.trimRegexp"));return g(e,c)})});emmet.exec(function(h,e){var g={"xsl:variable":1,"xsl:with-param":1};h("filters").add("xsl",function c(b){var a=h("abbreviationUtils");e.each(b.children,function(b){if(!a.isSnippet(b)&&(b.name()||"").toLowerCase()in g&&b.children.length)b.start=b.start.replace(/\s+select\s*=\s*(['"]).*?\1/,"");c(b)});return b})});
emmet.exec(function(h,e){function g(a,b){return Math.round(Math.random()*(b-a)+a)}function f(a,b){for(var c=a.length,d=Math.min(c,b),f=[];f.length<d;){var h=g(0,c-1);e.include(f,h)||f.push(h)}return e.map(f,function(b){return a[b]})}function c(a,b){a.length&&(a[0]=a[0].charAt(0).toUpperCase()+a[0].substring(1));return a.join(" ")+(b||(e.isString("?!...")?"?!...".charAt(g(0,4)):"?!..."[g(0,4)]))}function b(a){var b=a.length,c=0,c=b>3&&b<=6?g(0,1):b>6&&b<=12?g(0,2):g(1,4);e.each(f(e.range(c)),function(b){a[b]+=
","})}h("abbreviationParser").addPreprocessor(function(e){var h=/^(?:lorem|lipsum)(\d*)$/i,l;e.findAll(function(e){if(e._name&&(l=e._name.match(h))){var i=l[1]||30;e._name="";e.data("forceNameResolving",e.isRepeating()||e.attributeList().length);e.data("paste",function(e){var h=[],j=0;e||(e=a.slice(0,i+1),e.length>5&&(e[4]+=","),j+=e.length,h.push(c(e,".")));for(;j<i;)e=f(d,Math.min(g(3,12)*g(1,5),i-j)),j+=e.length,b(e),h.push(c(e));return h.join(" ")})}})});var a="lorem ipsum dolor sit amet consectetur adipisicing elit".split(" "),
d=["exercitationem","perferendis","perspiciatis","laborum","eveniet","sunt","iure","nam","nobis","eum","cum","officiis","excepturi","odio","consectetur","quasi","aut","quisquam","vel","eligendi","itaque","non","odit","tempore","quaerat","dignissimos","facilis","neque","nihil","expedita","vitae","vero","ipsum","nisi","animi","cumque","pariatur","velit","modi","natus","iusto","eaque","sequi","illo","sed","ex","et","voluptatibus","tempora","veritatis","ratione","assumenda","incidunt","nostrum","placeat",
"aliquid","fuga","provident","praesentium","rem","necessitatibus","suscipit","adipisci","quidem","possimus","voluptas","debitis","sint","accusantium","unde","sapiente","voluptate","qui","aspernatur","laudantium","soluta","amet","quo","aliquam","saepe","culpa","libero","ipsa","dicta","reiciendis","nesciunt","doloribus","autem","impedit","minima","maiores","repudiandae","ipsam","obcaecati","ullam","enim","totam","delectus","ducimus","quis","voluptates","dolores","molestiae","harum","dolorem","quia",
"voluptatem","molestias","magni","distinctio","omnis","illum","dolorum","voluptatum","ea","quas","quam","corporis","quae","blanditiis","atque","deserunt","laboriosam","earum","consequuntur","hic","cupiditate","quibusdam","accusamus","ut","rerum","error","minus","eius","ab","ad","nemo","fugit","officia","at","in","id","quos","reprehenderit","numquam","iste","fugiat","sit","inventore","beatae","repellendus","magnam","recusandae","quod","explicabo","doloremque","aperiam","consequatur","asperiores","commodi",
"optio","dolor","labore","temporibus","repellat","veniam","architecto","est","esse","mollitia","nulla","a","similique","eos","alias","dolore","tenetur","deleniti","porro","facere","maxime","corrupti"]});emmet.require("actions").add("select_line",function(h){var e=h.getCurrentLineRange();h.createSelection(e.start,e.end);return!0});
emmet.require("resources").setVocabulary({variables:{lang:"en",locale:"en-US",charset:"UTF-8",indentation:"\t",newline:"\n"},css:{filters:"html",snippets:{"@i":"@import url(|);","@m":"@media print {\n\t|\n}","@f":"@font-face {\n\tfont-family:|;\n\tsrc:url(|);\n}","!":"!important",pos:"position:|;","pos:s":"position:static;","pos:a":"position:absolute;","pos:r":"position:relative;","pos:f":"position:fixed;",t:"top:|;","t:a":"top:auto;",r:"right:|;","r:a":"right:auto;",b:"bottom:|;","b:a":"bottom:auto;",
brad:"-webkit-border-radius: ${1:radius};\n-moz-border-radius: $1;\nborder-radius: $1;",bsha:"-webkit-box-shadow: ${1:hoff} ${2:voff} ${3:blur} ${4:rgba(0,0,0,0.5)};\n-moz-box-shadow: $1 $2 $3 $4;\nbox-shadow: $1 $2 $3 $4;",l:"left:|;","l:a":"left:auto;",z:"z-index:|;","z:a":"z-index:auto;",fl:"float:|;","fl:n":"float:none;","fl:l":"float:left;","fl:r":"float:right;",cl:"clear:|;","cl:n":"clear:none;","cl:l":"clear:left;","cl:r":"clear:right;","cl:b":"clear:both;",d:"display:|;","d:n":"display:none;",
"d:b":"display:block;","d:i":"display:inline;","d:ib":"display:inline-block;","d:li":"display:list-item;","d:ri":"display:run-in;","d:cp":"display:compact;","d:tb":"display:table;","d:itb":"display:inline-table;","d:tbcp":"display:table-caption;","d:tbcl":"display:table-column;","d:tbclg":"display:table-column-group;","d:tbhg":"display:table-header-group;","d:tbfg":"display:table-footer-group;","d:tbr":"display:table-row;","d:tbrg":"display:table-row-group;","d:tbc":"display:table-cell;","d:rb":"display:ruby;",
"d:rbb":"display:ruby-base;","d:rbbg":"display:ruby-base-group;","d:rbt":"display:ruby-text;","d:rbtg":"display:ruby-text-group;",v:"visibility:|;","v:v":"visibility:visible;","v:h":"visibility:hidden;","v:c":"visibility:collapse;",ov:"overflow:|;","ov:v":"overflow:visible;","ov:h":"overflow:hidden;","ov:s":"overflow:scroll;","ov:a":"overflow:auto;",ovx:"overflow-x:|;","ovx:v":"overflow-x:visible;","ovx:h":"overflow-x:hidden;","ovx:s":"overflow-x:scroll;","ovx:a":"overflow-x:auto;",ovy:"overflow-y:|;",
"ovy:v":"overflow-y:visible;","ovy:h":"overflow-y:hidden;","ovy:s":"overflow-y:scroll;","ovy:a":"overflow-y:auto;",ovs:"overflow-style:|;","ovs:a":"overflow-style:auto;","ovs:s":"overflow-style:scrollbar;","ovs:p":"overflow-style:panner;","ovs:m":"overflow-style:move;","ovs:mq":"overflow-style:marquee;",zoo:"zoom:1;",cp:"clip:|;","cp:a":"clip:auto;","cp:r":"clip:rect(|);",bxz:"box-sizing:|;","bxz:cb":"box-sizing:content-box;","bxz:bb":"box-sizing:border-box;",bxsh:"box-shadow:${1:hoff} ${2:voff} ${3:radius} ${4:color};",
"bxsh:n":"box-shadow:none;",m:"margin:|;","m:a":"margin:auto;",mt:"margin-top:|;","mt:a":"margin-top:auto;",mr:"margin-right:|;","mr:a":"margin-right:auto;",mb:"margin-bottom:|;","mb:a":"margin-bottom:auto;",ml:"margin-left:|;","ml:a":"margin-left:auto;",p:"padding:|;",pt:"padding-top:|;",pr:"padding-right:|;",pb:"padding-bottom:|;",pl:"padding-left:|;",w:"width:|;","w:a":"width:auto;",h:"height:|;","h:a":"height:auto;",maw:"max-width:|;","maw:n":"max-width:none;",mah:"max-height:|;","mah:n":"max-height:none;",
miw:"min-width:|;",mih:"min-height:|;",o:"outline:|;","o:n":"outline:none;",oo:"outline-offset:|;",ow:"outline-width:|;",os:"outline-style:|;",oc:"outline-color:${1:#000};","oc:i":"outline-color:invert;",bd:"border:|;","bd+":"border:${1:1px} ${2:solid} ${3:#000};","bd:n":"border:none;",bdbk:"border-break:|;","bdbk:c":"border-break:close;",bdcl:"border-collapse:|;","bdcl:c":"border-collapse:collapse;","bdcl:s":"border-collapse:separate;",bdc:"border-color:${1:#000};",bdi:"border-image:url(|);","bdi:n":"border-image:none;",
bdti:"border-top-image:url(|);","bdti:n":"border-top-image:none;",bdri:"border-right-image:url(|);","bdri:n":"border-right-image:none;",bdbi:"border-bottom-image:url(|);","bdbi:n":"border-bottom-image:none;",bdli:"border-left-image:url(|);","bdli:n":"border-left-image:none;",bdci:"border-corner-image:url(|);","bdci:n":"border-corner-image:none;","bdci:c":"border-corner-image:continue;",bdtli:"border-top-left-image:url(|);","bdtli:n":"border-top-left-image:none;","bdtli:c":"border-top-left-image:continue;",
bdtri:"border-top-right-image:url(|);","bdtri:n":"border-top-right-image:none;","bdtri:c":"border-top-right-image:continue;",bdbri:"border-bottom-right-image:url(|);","bdbri:n":"border-bottom-right-image:none;","bdbri:c":"border-bottom-right-image:continue;",bdbli:"border-bottom-left-image:url(|);","bdbli:n":"border-bottom-left-image:none;","bdbli:c":"border-bottom-left-image:continue;",bdf:"border-fit:|;","bdf:c":"border-fit:clip;","bdf:r":"border-fit:repeat;","bdf:sc":"border-fit:scale;","bdf:st":"border-fit:stretch;",
"bdf:ow":"border-fit:overwrite;","bdf:of":"border-fit:overflow;","bdf:sp":"border-fit:space;",bdl:"border-length:|;","bdl:a":"border-length:auto;",bdsp:"border-spacing:|;",bds:"border-style:|;","bds:n":"border-style:none;","bds:h":"border-style:hidden;","bds:dt":"border-style:dotted;","bds:ds":"border-style:dashed;","bds:s":"border-style:solid;","bds:db":"border-style:double;","bds:dtds":"border-style:dot-dash;","bds:dtdtds":"border-style:dot-dot-dash;","bds:w":"border-style:wave;","bds:g":"border-style:groove;",
"bds:r":"border-style:ridge;","bds:i":"border-style:inset;","bds:o":"border-style:outset;",bdw:"border-width:|;",bdt:"border-top:|;","bdt+":"border-top:${1:1px} ${2:solid} ${3:#000};","bdt:n":"border-top:none;",bdtw:"border-top-width:|;",bdts:"border-top-style:|;","bdts:n":"border-top-style:none;",bdtc:"border-top-color:${1:#000};",bdr:"border-right:|;","bdr+":"border-right:${1:1px} ${2:solid} ${3:#000};","bdr:n":"border-right:none;",bdrw:"border-right-width:|;",bdrs:"border-right-style:|;","bdrs:n":"border-right-style:none;",
bdrc:"border-right-color:${1:#000};",bdb:"border-bottom:|;","bdb+":"border-bottom:${1:1px} ${2:solid} ${3:#000};","bdb:n":"border-bottom:none;",bdbw:"border-bottom-width:|;",bdbs:"border-bottom-style:|;","bdbs:n":"border-bottom-style:none;",bdbc:"border-bottom-color:${1:#000};",bdl:"border-left:|;","bdl+":"border-left:${1:1px} ${2:solid} ${3:#000};","bdl:n":"border-left:none;",bdlw:"border-left-width:|;",bdls:"border-left-style:|;","bdls:n":"border-left-style:none;",bdlc:"border-left-color:${1:#000};",
bdrs:"border-radius:|;",bdtrrs:"border-top-right-radius:|;",bdtlrs:"border-top-left-radius:|;",bdbrrs:"border-bottom-right-radius:|;",bdblrs:"border-bottom-left-radius:|;",bg:"background:|;","bg+":"background:${1:#fff} url(${2}) ${3:0} ${4:0} ${5:no-repeat};","bg:n":"background:none;","bg:ie":"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='${1:x}.png',sizingMethod='${2:crop}');",bgc:"background-color:${1:#fff};",bgi:"background-image:url(|);","bgi:n":"background-image:none;",bgr:"background-repeat:|;",
"bgr:n":"background-repeat:no-repeat;","bgr:x":"background-repeat:repeat-x;","bgr:y":"background-repeat:repeat-y;",bga:"background-attachment:|;","bga:f":"background-attachment:fixed;","bga:s":"background-attachment:scroll;",bgp:"background-position:${1:0} ${2:0};",bgpx:"background-position-x:|;",bgpy:"background-position-y:|;",bgbk:"background-break:|;","bgbk:bb":"background-break:bounding-box;","bgbk:eb":"background-break:each-box;","bgbk:c":"background-break:continuous;",bgcp:"background-clip:|;",
"bgcp:bb":"background-clip:border-box;","bgcp:pb":"background-clip:padding-box;","bgcp:cb":"background-clip:content-box;","bgcp:nc":"background-clip:no-clip;",bgo:"background-origin:|;","bgo:pb":"background-origin:padding-box;","bgo:bb":"background-origin:border-box;","bgo:cb":"background-origin:content-box;",bgz:"background-size:|;","bgz:a":"background-size:auto;","bgz:ct":"background-size:contain;","bgz:cv":"background-size:cover;",c:"color:${1:#000};",tbl:"table-layout:|;","tbl:a":"table-layout:auto;",
"tbl:f":"table-layout:fixed;",cps:"caption-side:|;","cps:t":"caption-side:top;","cps:b":"caption-side:bottom;",ec:"empty-cells:|;","ec:s":"empty-cells:show;","ec:h":"empty-cells:hide;",lis:"list-style:|;","lis:n":"list-style:none;",lisp:"list-style-position:|;","lisp:i":"list-style-position:inside;","lisp:o":"list-style-position:outside;",list:"list-style-type:|;","list:n":"list-style-type:none;","list:d":"list-style-type:disc;","list:c":"list-style-type:circle;","list:s":"list-style-type:square;",
"list:dc":"list-style-type:decimal;","list:dclz":"list-style-type:decimal-leading-zero;","list:lr":"list-style-type:lower-roman;","list:ur":"list-style-type:upper-roman;",lisi:"list-style-image:|;","lisi:n":"list-style-image:none;",q:"quotes:|;","q:n":"quotes:none;","q:ru":"quotes:'\\00AB' '\\00BB' '\\201E' '\\201C';","q:en":"quotes:'\\201C' '\\201D' '\\2018' '\\2019';",ct:"content:|;","ct:n":"content:normal;","ct:oq":"content:open-quote;","ct:noq":"content:no-open-quote;","ct:cq":"content:close-quote;",
"ct:ncq":"content:no-close-quote;","ct:a":"content:attr(|);","ct:c":"content:counter(|);","ct:cs":"content:counters(|);",coi:"counter-increment:|;",cor:"counter-reset:|;",va:"vertical-align:|;","va:sup":"vertical-align:super;","va:t":"vertical-align:top;","va:tt":"vertical-align:text-top;","va:m":"vertical-align:middle;","va:bl":"vertical-align:baseline;","va:b":"vertical-align:bottom;","va:tb":"vertical-align:text-bottom;","va:sub":"vertical-align:sub;",ta:"text-align:|;","ta:l":"text-align:left;",
"ta:c":"text-align:center;","ta:r":"text-align:right;",tal:"text-align-last:|;","tal:a":"text-align-last:auto;","tal:l":"text-align-last:left;","tal:c":"text-align-last:center;","tal:r":"text-align-last:right;",td:"text-decoration:|;","td:n":"text-decoration:none;","td:u":"text-decoration:underline;","td:o":"text-decoration:overline;","td:l":"text-decoration:line-through;",te:"text-emphasis:|;","te:n":"text-emphasis:none;","te:ac":"text-emphasis:accent;","te:dt":"text-emphasis:dot;","te:c":"text-emphasis:circle;",
"te:ds":"text-emphasis:disc;","te:b":"text-emphasis:before;","te:a":"text-emphasis:after;",th:"text-height:|;","th:a":"text-height:auto;","th:f":"text-height:font-size;","th:t":"text-height:text-size;","th:m":"text-height:max-size;",ti:"text-indent:|;","ti:-":"text-indent:-9999px;",tj:"text-justify:|;","tj:a":"text-justify:auto;","tj:iw":"text-justify:inter-word;","tj:ii":"text-justify:inter-ideograph;","tj:ic":"text-justify:inter-cluster;","tj:d":"text-justify:distribute;","tj:k":"text-justify:kashida;",
"tj:t":"text-justify:tibetan;",to:"text-outline:|;","to+":"text-outline:${1:0} ${2:0} ${3:#000};","to:n":"text-outline:none;",tr:"text-replace:|;","tr:n":"text-replace:none;",tt:"text-transform:|;","tt:n":"text-transform:none;","tt:c":"text-transform:capitalize;","tt:u":"text-transform:uppercase;","tt:l":"text-transform:lowercase;",tw:"text-wrap:|;","tw:n":"text-wrap:normal;","tw:no":"text-wrap:none;","tw:u":"text-wrap:unrestricted;","tw:s":"text-wrap:suppress;",tsh:"text-shadow:${1:hoff} ${2:voff} ${3:blur} ${4:#000};",
"tsh+":"text-shadow:${1:0} ${2:0} ${3:0} ${4:#000};","tsh:n":"text-shadow:none;",trf:"transform:|;","trf:skx":"transform: skewX(${1:angle});","trf:sky":"transform: skewY(${1:angle});","trf:sc":"transform: scale(${1:x}, ${2:y});","trf:scx":"transform: scaleX(${1:x});","trf:scy":"transform: scaleY(${1:y});","trf:r":"transform: rotate(${1:angle});","trf:t":"transform: translate(${1:x}, ${2:y});","trf:tx":"transform: translateX(${1:x});","trf:ty":"transform: translateY(${1:y});",lh:"line-height:|;",whs:"white-space:|;",
"whs:n":"white-space:normal;","whs:p":"white-space:pre;","whs:nw":"white-space:nowrap;","whs:pw":"white-space:pre-wrap;","whs:pl":"white-space:pre-line;",whsc:"white-space-collapse:|;","whsc:n":"white-space-collapse:normal;","whsc:k":"white-space-collapse:keep-all;","whsc:l":"white-space-collapse:loose;","whsc:bs":"white-space-collapse:break-strict;","whsc:ba":"white-space-collapse:break-all;",wob:"word-break:|;","wob:n":"word-break:normal;","wob:k":"word-break:keep-all;","wob:l":"word-break:loose;",
"wob:bs":"word-break:break-strict;","wob:ba":"word-break:break-all;",wos:"word-spacing:|;",wow:"word-wrap:|;","wow:nm":"word-wrap:normal;","wow:n":"word-wrap:none;","wow:u":"word-wrap:unrestricted;","wow:s":"word-wrap:suppress;",lts:"letter-spacing:|;",f:"font:|;","f+":"font:${1:1em} ${2:Arial,sans-serif};",fw:"font-weight:|;","fw:n":"font-weight:normal;","fw:b":"font-weight:bold;","fw:br":"font-weight:bolder;","fw:lr":"font-weight:lighter;",fs:"font-style:|;","fs:n":"font-style:normal;","fs:i":"font-style:italic;",
"fs:o":"font-style:oblique;",fv:"font-variant:|;","fv:n":"font-variant:normal;","fv:sc":"font-variant:small-caps;",fz:"font-size:|;",fza:"font-size-adjust:|;","fza:n":"font-size-adjust:none;",ff:"font-family:|;","ff:s":"font-family:serif;","ff:ss":"font-family:sans-serif;","ff:c":"font-family:cursive;","ff:f":"font-family:fantasy;","ff:m":"font-family:monospace;",fef:"font-effect:|;","fef:n":"font-effect:none;","fef:eg":"font-effect:engrave;","fef:eb":"font-effect:emboss;","fef:o":"font-effect:outline;",
fem:"font-emphasize:|;",femp:"font-emphasize-position:|;","femp:b":"font-emphasize-position:before;","femp:a":"font-emphasize-position:after;",fems:"font-emphasize-style:|;","fems:n":"font-emphasize-style:none;","fems:ac":"font-emphasize-style:accent;","fems:dt":"font-emphasize-style:dot;","fems:c":"font-emphasize-style:circle;","fems:ds":"font-emphasize-style:disc;",fsm:"font-smooth:|;","fsm:a":"font-smooth:auto;","fsm:n":"font-smooth:never;","fsm:aw":"font-smooth:always;",fst:"font-stretch:|;",
"fst:n":"font-stretch:normal;","fst:uc":"font-stretch:ultra-condensed;","fst:ec":"font-stretch:extra-condensed;","fst:c":"font-stretch:condensed;","fst:sc":"font-stretch:semi-condensed;","fst:se":"font-stretch:semi-expanded;","fst:e":"font-stretch:expanded;","fst:ee":"font-stretch:extra-expanded;","fst:ue":"font-stretch:ultra-expanded;",op:"opacity:|;","op:ie":"filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);","op:ms":"-ms-filter:'progid:DXImageTransform.Microsoft.Alpha(Opacity=100)';",
rz:"resize:|;","rz:n":"resize:none;","rz:b":"resize:both;","rz:h":"resize:horizontal;","rz:v":"resize:vertical;",cur:"cursor:|;","cur:a":"cursor:auto;","cur:d":"cursor:default;","cur:c":"cursor:crosshair;","cur:ha":"cursor:hand;","cur:he":"cursor:help;","cur:m":"cursor:move;","cur:p":"cursor:pointer;","cur:t":"cursor:text;",pgbb:"page-break-before:|;","pgbb:au":"page-break-before:auto;","pgbb:al":"page-break-before:always;","pgbb:l":"page-break-before:left;","pgbb:r":"page-break-before:right;",pgbi:"page-break-inside:|;",
"pgbi:au":"page-break-inside:auto;","pgbi:av":"page-break-inside:avoid;",pgba:"page-break-after:|;","pgba:au":"page-break-after:auto;","pgba:al":"page-break-after:always;","pgba:l":"page-break-after:left;","pgba:r":"page-break-after:right;",orp:"orphans:|;",wid:"widows:|;"}},html:{filters:"html",snippets:{"cc:ie6":"<\!--[if lte IE 6]>\n\t${child}|\n<![endif]--\>","cc:ie":"<\!--[if IE]>\n\t${child}|\n<![endif]--\>","cc:noie":"<\!--[if !IE]><\!--\>\n\t${child}|\n<\!--<![endif]--\>","html:4t":'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">\n<html lang="${lang}">\n<head>\n\t<meta http-equiv="Content-Type" content="text/html;charset=${charset}">\n\t<title></title>\n</head>\n<body>\n\t${child}|\n</body>\n</html>',
"html:4s":'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">\n<html lang="${lang}">\n<head>\n\t<meta http-equiv="Content-Type" content="text/html;charset=${charset}">\n\t<title></title>\n</head>\n<body>\n\t${child}|\n</body>\n</html>',"html:xt":'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="${lang}">\n<head>\n\t<meta http-equiv="Content-Type" content="text/html;charset=${charset}" />\n\t<title></title>\n</head>\n<body>\n\t${child}|\n</body>\n</html>',
"html:xs":'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\n<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="${lang}">\n<head>\n\t<meta http-equiv="Content-Type" content="text/html;charset=${charset}" />\n\t<title></title>\n</head>\n<body>\n\t${child}|\n</body>\n</html>',"html:xxs":'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\n<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="${lang}">\n<head>\n\t<meta http-equiv="Content-Type" content="text/html;charset=${charset}" />\n\t<title></title>\n</head>\n<body>\n\t${child}|\n</body>\n</html>',
"html:5":'<!doctype html>\n<html lang="${lang}">\n<head>\n\t<meta charset="${charset}">\n\t<title></title>\n</head>\n<body>\n\t${child}|\n</body>\n</html>'},abbreviations:{a:'<a href="">',"a:link":'<a href="http://|">',"a:mail":'<a href="mailto:|">',abbr:'<abbr title="">',acronym:'<acronym title="">',base:'<base href="" />',bdo:'<bdo dir="">',"bdo:r":'<bdo dir="rtl">',"bdo:l":'<bdo dir="ltr">',link:'<link rel="stylesheet" href="" />',"link:css":'<link rel="stylesheet" href="${1:style}.css" media="all" />',
"link:print":'<link rel="stylesheet" href="${1:print}.css" media="print" />',"link:favicon":'<link rel="shortcut icon" type="image/x-icon" href="${1:favicon.ico}" />',"link:touch":'<link rel="apple-touch-icon" href="${1:favicon.png}" />',"link:rss":'<link rel="alternate" type="application/rss+xml" title="RSS" href="${1:rss.xml}" />',"link:atom":'<link rel="alternate" type="application/atom+xml" title="Atom" href="${1:atom.xml}" />',"meta:utf":'<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />',
"meta:win":'<meta http-equiv="Content-Type" content="text/html;charset=windows-1251" />',"meta:compat":'<meta http-equiv="X-UA-Compatible" content="${1:IE=7}" />',style:"<style>",script:"<script>","script:src":'<script src="">',img:'<img src="" alt="" />',iframe:'<iframe src="" frameborder="0">',embed:'<embed src="" type="" />',object:'<object data="" type="">',param:'<param name="" value="" />',map:'<map name="">',area:'<area shape="" coords="" href="" alt="" />',"area:d":'<area shape="default" href="" alt="" />',
"area:c":'<area shape="circle" coords="" href="" alt="" />',"area:r":'<area shape="rect" coords="" href="" alt="" />',"area:p":'<area shape="poly" coords="" href="" alt="" />',form:'<form action="">',"form:get":'<form action="" method="get">',"form:post":'<form action="" method="post">',label:'<label for="">',input:'<input type="" />',"input:hidden":'<input type="hidden" name="" />',"input:h":'<input type="hidden" name="" />',"input:text":'<input type="text" name="" id="" />',"input:t":'<input type="text" name="" id="" />',
"input:search":'<input type="search" name="" id="" />',"input:email":'<input type="email" name="" id="" />',"input:url":'<input type="url" name="" id="" />',"input:password":'<input type="password" name="" id="" />',"input:p":'<input type="password" name="" id="" />',"input:datetime":'<input type="datetime" name="" id="" />',"input:date":'<input type="date" name="" id="" />',"input:datetime-local":'<input type="datetime-local" name="" id="" />',"input:month":'<input type="month" name="" id="" />',
"input:week":'<input type="week" name="" id="" />',"input:time":'<input type="time" name="" id="" />',"input:number":'<input type="number" name="" id="" />',"input:color":'<input type="color" name="" id="" />',"input:checkbox":'<input type="checkbox" name="" id="" />',"input:c":'<input type="checkbox" name="" id="" />',"input:radio":'<input type="radio" name="" id="" />',"input:r":'<input type="radio" name="" id="" />',"input:range":'<input type="range" name="" id="" />',"input:file":'<input type="file" name="" id="" />',
"input:f":'<input type="file" name="" id="" />',"input:submit":'<input type="submit" value="" />',"input:s":'<input type="submit" value="" />',"input:image":'<input type="image" src="" alt="" />',"input:i":'<input type="image" src="" alt="" />',"input:reset":'<input type="reset" value="" />',"input:button":'<input type="button" value="" />',"input:b":'<input type="button" value="" />',select:'<select name="" id=""></select>',option:'<option value=""></option>',textarea:'<textarea name="" id="" cols="${1:30}" rows="${2:10}">',
"menu:context":'<menu type="context">',"menu:c":'<menu type="context">',"menu:toolbar":'<menu type="toolbar">',"menu:t":'<menu type="toolbar">',video:'<video src="">',audio:'<audio src="">',"html:xml":'<html xmlns="http://www.w3.org/1999/xhtml">',bq:"<blockquote>",acr:"<acronym>",fig:"<figure>",figc:"<figcaption>",ifr:"<iframe>",emb:"<embed>",obj:"<object>",src:"<source>",cap:"<caption>",colg:"<colgroup>",fst:"<fieldset>",btn:"<button>",optg:"<optgroup>",opt:"<option>",tarea:"<textarea>",leg:"<legend>",
sect:"<section>",art:"<article>",hdr:"<header>",ftr:"<footer>",adr:"<address>",dlg:"<dialog>",str:"<strong>",prog:"<progress>",fset:"<fieldset>",datag:"<datagrid>",datal:"<datalist>",kg:"<keygen>",out:"<output>",det:"<details>",cmd:"<command>","ol+":"ol>li","ul+":"ul>li","dl+":"dl>dt+dd","map+":"map>area","table+":"table>tr>td","colgroup+":"colgroup>col","colg+":"colgroup>col","tr+":"tr>td","select+":"select>option","optgroup+":"optgroup>option","optg+":"optgroup>option"}},xml:{"extends":"html",profile:"xml",
filters:"html"},xsl:{"extends":"html",filters:"html, xsl",abbreviations:{tm:'<xsl:template match="" mode="">',tmatch:"tm",tn:'<xsl:template name="">',tname:"tn",call:'<xsl:call-template name=""/>',ap:'<xsl:apply-templates select="" mode=""/>',api:"<xsl:apply-imports/>",imp:'<xsl:import href=""/>',inc:'<xsl:include href=""/>',ch:"<xsl:choose>","xsl:when":'<xsl:when test="">',wh:"xsl:when",ot:"<xsl:otherwise>","if":'<xsl:if test="">',par:'<xsl:param name="">',pare:'<xsl:param name="" select=""/>',"var":'<xsl:variable name="">',
vare:'<xsl:variable name="" select=""/>',wp:'<xsl:with-param name="" select=""/>',key:'<xsl:key name="" match="" use=""/>',elem:'<xsl:element name="">',attr:'<xsl:attribute name="">',attrs:'<xsl:attribute-set name="">',cp:'<xsl:copy select=""/>',co:'<xsl:copy-of select=""/>',val:'<xsl:value-of select=""/>',each:'<xsl:for-each select="">',"for":"each",tex:"<xsl:text></xsl:text>",com:"<xsl:comment>",msg:'<xsl:message terminate="no">',fall:"<xsl:fallback>",num:'<xsl:number value=""/>',nam:'<namespace-alias stylesheet-prefix="" result-prefix=""/>',
pres:'<xsl:preserve-space elements=""/>',strip:'<xsl:strip-space elements=""/>',proc:'<xsl:processing-instruction name="">',sort:'<xsl:sort select="" order=""/>',"choose+":"xsl:choose>xsl:when+xsl:otherwise"}},haml:{filters:"haml","extends":"html"},scss:{filters:"haml","extends":"css"},sass:{filters:"haml","extends":"css"},less:{filters:"haml","extends":"css"}},"system");
emmet.exec(function(h,e){var g={"Cmd-E":"expand_abbreviation",Tab:"expand_abbreviation","Cmd-D":"match_pair_outward","Shift-Cmd-D":"match_pair_inward","Shift-Cmd-A":"wrap_with_abbreviation","Ctrl-Alt-Right":"next_edit_point","Ctrl-Alt-Left":"prev_edit_point","Cmd-L":"select_line","Cmd-Shift-M":"merge_lines","Cmd-/":"toggle_comment","Cmd-J":"split_join_tag","Cmd-K":"remove_tag","Shift-Cmd-Y":"evaluate_math_expression","Ctrl-Up":"increment_number_by_1","Ctrl-Down":"decrement_number_by_1","Alt-Up":"increment_number_by_01",
"Alt-Down":"decrement_number_by_01","Ctrl-Alt-Up":"increment_number_by_10","Ctrl-Alt-Down":"decrement_number_by_10","Cmd-.":"select_next_item","Cmd-,":"select_previous_item","Cmd-B":"reflect_css_value",Enter:"insert_formatted_line_break"},f={"text/html":"html","application/xml":"xml","text/xsl":"xsl","text/css":"css","text/x-less":"less"};if(!(/AppleWebKit/.test(navigator.userAgent)&&/Mobile\/\w+/.test(navigator.userAgent)||/Mac/.test(navigator.platform))){var c={};e.each(g,function(a,b){c[b.replace("Cmd",
"Ctrl")]=a});g=c}CodeMirror.defaults.profile="html";var b={context:null,getSelectionRange:function(){var a=this.getCaretPos();return{start:a,end:a+this.getSelection().length}},createSelection:function(a,b){a==b?this.context.setCursor(this.context.posFromIndex(a)):this.context.setSelection(this.context.posFromIndex(a),this.context.posFromIndex(b))},getCurrentLineRange:function(){var a=this.context.getCursor(!0);return{start:this.context.indexFromPos({line:a.line,ch:0}),end:this.context.indexFromPos({line:a.line,
ch:this.context.getLine(a.line).length})}},getCaretPos:function(){return this.context.indexFromPos(this.context.getCursor(!0))},setCaretPos:function(a){this.createSelection(a,a)},getCurrentLine:function(){return this.context.getLine(this.context.getCursor(!0).line)||""},replaceContent:function(a,b,c,f){e.isUndefined(c)&&(c=e.isUndefined(b)?content.length:b);e.isUndefined(b)&&(b=0);var g=h("utils");f||(a=g.padString(a,g.getLinePaddingFromPosition(this.getContent(),b)));var f=h("tabStops").extract(a,
{escape:function(a){return a}}),a=f.text,n=f.tabstops[0];n?(n.start+=b,n.end+=b):n={start:a.length+b,end:a.length+b};var m=this;this.context.compoundChange(function(){m.context.replaceRange(a,m.context.posFromIndex(b),m.context.posFromIndex(c));m.createSelection(n.start,n.end)})},getContent:function(){return this.context.getValue()},getSyntax:function(){var a=this.context.getOption("mode");a in f&&(a=f[a]);var b=this.getCaretPos();h("resources").hasSyntax(a)||(a="html");if(a=="html"){var c=h("html_matcher").getTags(this.getContent(),
b);c&&c[0]&&c[0].type=="tag"&&c[0].name.toLowerCase()=="style"&&c[0].end<=b&&c[1].start>=b&&(a="css")}return a},getProfileName:function(){if(this.context.getOption("profile"))return this.context.getOption("profile");switch(this.getSyntax()){case "xml":case "xsl":return"xml";case "html":var a=h("resources").getVariable("profile");a||(a=this.getContent().search(/<!DOCTYPE[^>]+XHTML/i)!=-1?"xhtml":"html");return a}return"xhtml"},prompt:function(a){return prompt(a)},getSelection:function(){return this.context.getSelection()||
""},getFilePath:function(){return location.href}};if(!CodeMirror.defaults.extraKeys)CodeMirror.defaults.extraKeys={};e.each(g,function(a,c){CodeMirror.defaults.extraKeys[c]=function(c){b.context=c;var d="\t";c.getOption("indentWithTabs")||(d=h("utils").repeatString(" ",c.getOption("indentUnit")));h("resources").setVariable("indentation",d);try{if(h("actions").run(a,b))return!0}catch(e){}throw CodeMirror.Pass;}})});
File diff suppressed because one or more lines are too long
@@ -1,390 +0,0 @@
/*
* eAmy.Offline - Amy Editor embedded for offline use.
* http://www.april-child.com/amy
*
* Published under MIT License.
* Copyright (c) 2007-2008 Petr Krontorád, April-Child.com
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
*
*
* This file is auto-generated from original Fry Framework and Amy Editor sources..
*/
// Generated from theme definition file.
$class('ac.chap.theme.EAmy < ac.chap.Theme');
ac.chap.theme.EAmy.prototype.initDefinition = function()
{
// $call(this, 'ac.chap.Theme.initDefinition');this.cssId = 'black';
//this.background = '#072240';
//this.textColor = '#DFEFFF';
//this.caretColor = 'lime';
//this.caretRowStyleActive = '#041629';
//this.selectionStyle = '#86553b';
//this.colorScheme[ac.chap.TOKEN_MULTIROW_COMMENT] = 'color:#0084FF;font-style:italic';
//this.colorScheme[ac.chap.TOKEN_SINGLEROW_COMMENT] = 'color:#0084FF;font-style:italic';
//this.colorScheme[ac.chap.TOKEN_SINGLE_QUOTED] = 'color:#00DF00';
//this.colorScheme[ac.chap.TOKEN_DOUBLE_QUOTED] = 'color:#00DF00';
//this.colorScheme[ac.chap.CHUNK_KEYWORD] = 'color:#FF9D00';
//this.colorScheme[ac.chap.CHUNK_NUMBER] = 'color:#FF5B8C';
//this.colorScheme[ac.chap.CHUNK_OPERATOR] = 'color:#FF9D00;';
//this.colorScheme[ac.chap.CHUNK_PARENTHESIS] = 'color:#FFF177';
//this.colorScheme[ac.chap.CHUNK_KEYWORD_CUSTOM] = 'color:#54FFB8';
//this.colorScheme[ac.chap.CHUNK_FUNCTION_NAME] = 'color:#FFE000';
//this.colorScheme[ac.chap.CHUNK_LIBRARY] = 'color:#71E5B6';
//this.colorScheme[ac.chap.CHUNK_LIBRARY_CUSTOM] = 'color:#FF78E5';
$call(this, 'ac.chap.Theme.initDefinition');this.cssId = 'twilight';
this.background = '#141414';
this.textColor = '#F8F8F8';
this.caretColor = '#A7A7A7';
this.caretRowStyleActive = '#1B1B1B';
this.selectionStyle = '#3C4043';
this.colorScheme[ac.chap.TOKEN_MULTIROW_COMMENT] = 'color:#605A60;font-style:italic';
this.colorScheme[ac.chap.TOKEN_SINGLEROW_COMMENT] = 'color:#605A60;font-style:italic';
this.colorScheme[ac.chap.TOKEN_SINGLE_QUOTED] = 'color:#8B9F67';
this.colorScheme[ac.chap.TOKEN_DOUBLE_QUOTED] = 'color:#D4F29E';
this.colorScheme[ac.chap.CHUNK_KEYWORD] = 'color:#D2A964';
this.colorScheme[ac.chap.CHUNK_NUMBER] = 'color:#DE6848';
this.colorScheme[ac.chap.CHUNK_OPERATOR] = 'color:#EFC25A;';
this.colorScheme[ac.chap.CHUNK_PARENTHESIS] = 'color:#ABC4DC';
this.colorScheme[ac.chap.CHUNK_KEYWORD_CUSTOM] = 'color:#A0849E';
this.colorScheme[ac.chap.CHUNK_FUNCTION_NAME] = 'color:#DAD280';
this.colorScheme[ac.chap.CHUNK_LIBRARY] = 'color:#7286A8';
this.colorScheme[ac.chap.CHUNK_LIBRARY_CUSTOM] = 'color:#A55C29';
}
// Generated from bundle keymap definition file.
ac.chap.KeyMap.prototype.initDefinition = function()
{
var _ = '\n';
this.compile
(""+_+ "KEY: 0"
+_+ " insert(character:true)"
+_+ "KEY: -37"
+_+ " caret(move:'left')"
+_+ "KEY: -37+shift"
+_+ " caret(move:'left')"
+_+ " selection(add:true)"
+_+ "KEY: -37+ctrl"
+_+ " caret(move:'prev_regexp', re:'[^|._A-Z ,|(|);]*$')"
+_+ "KEY: -37+alt"
+_+ " caret(move:'prev_word')"
+_+ "KEY: -37+ctrl+shift"
+_+ " caret(move:'prev_regexp', re:'[^|._A-Z ,|(|);]*$')"
+_+ " selection(add:true)"
+_+ "KEY: -37+alt+shift"
+_+ " caret(move:'prev_word')"
+_+ " selection(add:true)"
+_+ "KEY: -37+meta"
+_+ " caret(move:'row_start')"
+_+ "KEY: -37+meta+shift"
+_+ " caret(move:'row_start')"
+_+ " selection(add:true)"
+_+ "KEY: -39"
+_+ " caret(move:'right')"
+_+ "KEY: -39+shift"
+_+ " caret(move:'right')"
+_+ " selection(add:true)"
+_+ "KEY: -39+ctrl"
+_+ " caret(move:'next_regexp', re:'^[^|._A-Z ,|(|);]*')"
+_+ "KEY: -39+alt"
+_+ " caret(move:'next_word')"
+_+ "KEY: -39+ctrl+shift"
+_+ " caret(move:'next_regexp', re:'^[^|._A-Z ,|(|);]*')"
+_+ " selection(add:true)"
+_+ "KEY: -39+alt+shift"
+_+ " caret(move:'next_word')"
+_+ " selection(add:true)"
+_+ "KEY: -39+meta"
+_+ " caret(move:'row_end')"
+_+ "KEY: -39+meta+shift"
+_+ " caret(move:'row_end')"
+_+ " selection(add:true)"
+_+ "KEY: -38"
+_+ " caret(move:'up')"
+_+ "KEY: -38+shift"
+_+ " caret(move:'up')"
+_+ " selection(add:true)"
+_+ "KEY: -40"
+_+ " caret(move:'down')"
+_+ "KEY: -40+shift"
+_+ " caret(move:'down')"
+_+ " selection(add:true)"
+_+ "KEY: -13"
+_+ " insert(row:true)"
+_+ "KEY: -8"
+_+ " delete(character:true)"
+_+ "KEY: -46"
+_+ " delete(character:false)"
+_+ "KEY: 75+ctrl+shift"
+_+ " delete(row:true)"
+_+ "KEY: -27"
+_+ " custom(action:'WordComplete', direction:true)"
+_+ "KEY: -27+shift"
+_+ " custom(action:'WordComplete', direction:false)"
+_+ "KEY: -9"
+_+ " custom(action:'SnippetComplete')"
+_+ "KEY: 123"
+_+ " custom(action:'AutoComplete', use_selection:true, text:'}')"
+_+ "KEY: 34"
+_+ " custom(action:'AutoComplete', use_selection:true, text:'\"')"
+_+ "KEY: 91"
+_+ " custom(action:'AutoComplete', use_selection:true, text:']')"
+_+ "KEY: 40"
+_+ " custom(action:'AutoComplete', use_selection:true, text:')')"
+_+ "KEY: -36"
+_+ " caret(move:'doc_start')"
+_+ "KEY: -36+shift"
+_+ " caret(move:'doc_start')"
+_+ " selection(add:true)"
+_+ "KEY: -35"
+_+ " caret(move:'doc_end')"
+_+ "KEY: -35+shift"
+_+ " caret(move:'doc_end')"
+_+ " selection(add:true)"
+_+ "KEY: -34+meta"
+_+ " caret(move:'page_down')"
+_+ "KEY: -34+meta+shift"
+_+ " caret(move:'page_down')"
+_+ " selection(add:true)"
+_+ "KEY: -33+meta"
+_+ " caret(move:'page_up')"
+_+ "KEY: -33+meta+shift"
+_+ " caret(move:'page_down')"
+_+ " selection(add:true)"
+_+ "KEY: 99+meta"
+_+ " clipboard(copy:true)"
+_+ "KEY: 120+meta"
+_+ " clipboard(cut:true)"
+_+ "KEY: 122+meta"
+_+ " undo()"
+_+ "KEY: 90+meta+shift"
+_+ " redo()"
+_+ "KEY: 97+meta"
+_+ " selection(all:true)"
+_+ "KEY: 97+ctrl"
+_+ " selection(all:true)"
+_+ "KEY: -113"
+_+ " custom(action:'GoToBookmark', direction:1)"
+_+ "KEY: -113+shift"
+_+ " custom(action:'GoToBookmark', direction:-1)"
+_+ "KEY: -113+meta"
+_+ " custom(action:'ToggleBookmark')"
+_+ "KEY: 91+meta"
+_+ " custom(action:'Indent', direction:'left')"
+_+ "KEY: 93+meta"
+_+ " custom(action:'Indent', direction:'right')"
+_+ "KEY: 47+meta"
+_+ " custom(action:'Comment')"
+_+ "KEY: 43+meta"
+_+ " custom(action:'RuntimeOption', key:'font.size', value:'bigger')"
+_+ "KEY: 45+meta"
+_+ " custom(action:'RuntimeOption', key:'font.size', value:'smaller')"
+_+ "KEY: 101+meta"
+_+ " custom(action:'SetSearchKeyword')"
+_+ "KEY: 103+meta"
+_+ " custom(action:'SearchKeyword', direction:'down')"
+_+ "KEY: 71+shift+meta"
+_+ " custom(action:'SearchKeyword', direction:'up')"
+_+ "KEY: 102+ctrl"
+_+ " custom(action:'SearchInteractive')"
+_+ "KEY: 83+ctrl+shift"
+_+ " custom(action:'SearchInteractive')"
+_+ "KEY: 102+meta"
+_+ " custom(action:'SearchInteractive')"
+_+ "KEY: -13"
+_+ " custom(action:'SmartIndent', split_line:true, indent_tab_when_starts:'class module def if else unless rescue ensure while do __class__')"
+_+ "KEY: -13+meta"
+_+ " custom(action:'SmartIndent', split_line:false, indent_tab_when_starts:'class module def if else unless rescue ensure while do __class__')"
+_+ "KEY: 39"
+_+ " custom(action:'AutoComplete', use_selection:true, text:'\\'')"
)};
$class('ac.chap.lang.EAmy < ac.chap.Language');
ac.chap.lang.EAmy.prototype.initDefinition = function()
{
$call(this, 'ac.chap.Language.initDefinition');
this.singleQuoteStringMarker = "'";
this.singleQuoteStringMarkerException = "\\";
this.doubleQuoteStringMarker = "\"";
this.doubleQuoteStringMarkerException = "\\"
this.wordDelimiter = /[\w\.\d]/;
this.indentIgnoreMarker = /[\.]/;
this.foldingStartMarkers = [/^\s*<(div)\b.*>/i, /^\s*<(ul)\b.*>/i];
this.foldingParityMarkers = [/^\s*<(div)\b.*>/i, /^\s*<(ul)\b.*>/i];
this.foldingStopMarkers = [/^\s*<\/(div)>/i, /^\s*<\/(ul)>/i];
this.singleRowCommentStartMarkers = [];
this.multiRowCommentStartMarker = "<!--";
this.multiRowCommentEndMarker = "-->";
this.chunkRules.push([/(([^\w]|^)(\d{1,}[\d\.Ee]*)([^w]|$))/i, 3, ac.chap.CHUNK_NUMBER])
this.chunkRules.push([/(\+|\-|\*|\/|\=|\!|\^|\%|\||\&|\<|\>)/i, 0, ac.chap.CHUNK_OPERATOR])
this.chunkRules.push([/(\(|\)|\[|\]|\{|\})/i, 0, ac.chap.CHUNK_PARENTHESIS])
this.chunkRules.push([/((<|<\/)([\w-_\:]*)([ >]))/i, 3, ac.chap.CHUNK_KEYWORD])
this.chunkRules.push([/(([ \t])([\w-_\:]*)(=$))/i, 3, ac.chap.CHUNK_KEYWORD_CUSTOM])
this.chunkRules.push([/(([^\w]|^)(!DOCTYPE)([^\w]|$))/i, 3, ac.chap.CHUNK_LIBRARY])
this.chunkRules.push([/(([^\w]|^)(\d{1,}[\d\.Ee]*)([^w]|$))/i, 3, ac.chap.CHUNK_NUMBER])
this.chunkRules.push([/(\+|\-|\*|\/|\=|\!|\^|\%|\||\&|\<|\>)/i, 0, ac.chap.CHUNK_OPERATOR])
this.chunkRules.push([/(\(|\)|\[|\]|\{|\})/i, 0, ac.chap.CHUNK_PARENTHESIS])
this.chunkRules.push([/((<|<\/)([\w-_\:]*)([ >]))/i, 3, ac.chap.CHUNK_KEYWORD])
this.chunkRules.push([/(([ \t])([\w-_\:]*)(=$))/i, 3, ac.chap.CHUNK_KEYWORD_CUSTOM])
this.chunkRules.push([/(([^\w]|^)(!DOCTYPE)([^\w]|$))/i, 3, ac.chap.CHUNK_LIBRARY])
}
var snippet = {};
snippet = {tab_activation: '', code: ''};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'ie6', code: '<!--[if IE 6]>${1:${AMY_SELECTED_TEXT: IE Conditional Comment: Internet Explorer 6 only }}<![endif]-->$0'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'iegte7', code: '<!--[if gte IE 7]>${1:${AMY_SELECTED_TEXT: IE Conditional Comment: Internet Explorer 7 and above }}<![endif]-->$0'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'ie5', code: '<!--[if IE 5.5]>${1:${AMY_SELECTED_TEXT: IE Conditional Comment: Internet Explorer 5.5 only }}<![endif]-->$0'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'ie', code: '<!--[if IE]>${1:${AMY_SELECTED_TEXT: IE Conditional Comment: Internet Explorer }}<![endif]-->$0'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'ienot', code: '<!--[if !IE]><!-->${1:${AMY_SELECTED_TEXT: IE Conditional Comment: NOT Internet Explorer }}<!-- <![endif]-->$0'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'ielte6', code: '<!--[if lte IE 6]>${1:${AMY_SELECTED_TEXT: IE Conditional Comment: Internet Explorer 6 and below }}<![endif]-->$0'};
eamy.snippets.push(snippet);
snippet = {tab_activation: '', code: '<!--[if IE 5.0]>${1:${AMY_SELECTED_TEXT: IE Conditional Comment: Internet Explorer 5.0 only }}<![endif]-->$0'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'ielt6', code: '<!--[if lt IE 6]>${1:${AMY_SELECTED_TEXT: IE Conditional Comment: Internet Explorer 5.x }}<![endif]-->$0'};
eamy.snippets.push(snippet);
snippet = {tab_activation: '', code: ''};
eamy.snippets.push(snippet);
snippet = {tab_activation: '', code: '${0:${AMY_SELECTED_TEXT/\A<em>(.*)<\/em>\z|.*/(?1:$1:<em>$0<\/em>)/m}}'};
eamy.snippets.push(snippet);
snippet = {tab_activation: '', code: '${0:${AMY_SELECTED_TEXT/\A<strong>(.*)<\/strong>\z|.*/(?1:$1:<strong>$0<\/strong>)/m}}'};
eamy.snippets.push(snippet);
snippet = {tab_activation: '', code: ''};
eamy.snippets.push(snippet);
snippet = {tab_activation: '', code: ''};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'left', code: '&#x2190;'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'backtab', code: '&#x21E4;'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'enter', code: '&#x2305;'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'arrow', code: '&#x2192;'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'option', code: '&#x2325;'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'shift', code: '&#x21E7;'};
eamy.snippets.push(snippet);
snippet = {tab_activation: '', code: '&nbsp;'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'delete', code: '&#x2326;'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'backspace', code: '&#x232B;'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'escape', code: '&#x238B;'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'tab', code: '&#x21E5;'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'up', code: '&#x2191;'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'control', code: '&#x2303;'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'return', code: '&#x21A9;'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'down', code: '&#x2193;'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'command', code: '&#x2318;'};
eamy.snippets.push(snippet);
snippet = {tab_activation: '', code: ''};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'doctype', code: '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"\n "http://www.w3.org/TR/html4/strict.dtd">\n'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'doctype', code: '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"\n "http://www.w3.org/TR/html4/loose.dtd">\n'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'doctypexf', code: '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"\n "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">\n'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'doctypext', code: '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"\n "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'doctypex', code: '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\n "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\n'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'doctypexs', code: '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"\n "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\n'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 't', code: '<{${1:tag_name}}>$0</{$1}>'};
eamy.snippets.push(snippet);
snippet = {tab_activation: '', code: ''};
eamy.snippets.push(snippet);
snippet = {tab_activation: '', code: ''};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'body', code: '<body id="${1:${AMY_FILENAME/(.*)\..*/\L$1/}}"${2: onload="$3"}>\n $0\n</body>'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'textarea', code: '<textarea name="${1:Name}" rows="${2:8}" cols="${3:40}">$0</textarea>'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'div', code: '<div${1: id="${2:name}"}>\n ${0:$AMY_SELECTED_TEXT}\n</div>'};
eamy.snippets.push(snippet);
snippet = {tab_activation: '', code: '<br>'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'title', code: '<title>${1:${AMY_FILENAME/((.+)\..*)?/(?2:$2:Page Title)/}}</title>'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'movie', code: '<object width="$2" height="$3" classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" codebase="http://www.apple.com/qtactivex/qtplugin.cab">\n <param name="src" value="$1">\n <param name="controller" value="$4">\n <param name="autoplay" value="$5">\n <embed src="${1:movie.mov}"\n width="${2:320}" height="${3:240}"\n controller="${4:true}" autoplay="${5:true}"\n scale="tofit" cache="true"\n pluginspage="http://www.apple.com/quicktime/download/"\n >\n</object>'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'input', code: '<input type="${1:text/submit/hidden/button}" name="${2:some_name}" value="$3"${4: id="${5:$2}"}>'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'head', code: '<head>\n <meta http-equiv="Content-type" content="text/html; charset=utf-8">\n <title>${1:${AMY_FILENAME/((.+)\..*)?/(?2:$2:Page Title)/}}</title>\n $0\n</head>'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'meta', code: '<meta name="${1:name}" content="${2:content}">'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'h1', code: '<h1 id="${1/[[:alpha:]]+|( )/(?1:_:\L$0)/g}">${1:$AMY_SELECTED_TEXT}</h1>'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'form', code: '<form action="${1:${AMY_FILENAME/(.*?)\..*/$1_submit/}}" method="${2:get}" accept-charset="utf-8">\n $0\n\n <p><input type="submit" value="Continue &rarr;"></p>\n</form>'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'link', code: '<link rel="${1:stylesheet}" href="${2:/css/master.css}" type="text/css" media="${3:screen}" title="${4:no title}" charset="${5:utf-8}">'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'style', code: '<style type="text/css" media="screen">\n $0\n</style>'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'table', code: '<table border="${1:0}"${2: cellspacing="${3:5}" cellpadding="${4:5}"}>\n <tr><th>${5:Header}</th></tr>\n <tr><td>${0:Data}</td></tr>\n</table>'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'base', code: '<base href="$1"${2: target="$3"}>'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'scriptsrc', code: '<script src="$1" type="text/javascript" charset="${3:utf-8}"></script>'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'mailto', code: '<a href="mailto:${1:joe@example.com}?subject=${2:feedback}">${3:email me}</a>'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'script', code: '<script type="text/javascript" charset="utf-8">\n $0\n</script>'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'c', code: 'class="$1"'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'i', code: 'id="$1"'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'p', code: '{{pass}}'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'ex', code: '{{extend \'${1:layout.html}\'}}'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'for', code: '{{for ${1:bar} in ${2:foo}:}}\n $0\n{{pass}}'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'if', code: '{{if ${1:foo} ${2:==/!=/=>/=</>/<} ${3:bar}:}}\n $0\n{{pass}}'};
eamy.snippets.push(snippet);
snippet = {tab_activation: '=', code: '{{=$0}}'};
eamy.snippets.push(snippet);
@@ -1,297 +0,0 @@
/*
* eAmy.Offline - Amy Editor embedded for offline use.
* http://www.april-child.com/amy
*
* Published under MIT License.
* Copyright (c) 2007-2008 Petr Krontorád, April-Child.com
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
*
*
* This file is auto-generated from original Fry Framework and Amy Editor sources..
*/
// Generated from theme definition file.
$class('ac.chap.theme.EAmy < ac.chap.Theme');
ac.chap.theme.EAmy.prototype.initDefinition = function()
{
// $call(this, 'ac.chap.Theme.initDefinition');this.cssId = 'black';
//this.background = '#072240';
//this.textColor = '#DFEFFF';
//this.caretColor = 'lime';
//this.caretRowStyleActive = '#041629';
//this.selectionStyle = '#86553b';
//this.colorScheme[ac.chap.TOKEN_MULTIROW_COMMENT] = 'color:#0084FF;font-style:italic';
//this.colorScheme[ac.chap.TOKEN_SINGLEROW_COMMENT] = 'color:#0084FF;font-style:italic';
//this.colorScheme[ac.chap.TOKEN_SINGLE_QUOTED] = 'color:#00DF00';
//this.colorScheme[ac.chap.TOKEN_DOUBLE_QUOTED] = 'color:#00DF00';
//this.colorScheme[ac.chap.CHUNK_KEYWORD] = 'color:#FF9D00';
//this.colorScheme[ac.chap.CHUNK_NUMBER] = 'color:#FF5B8C';
//this.colorScheme[ac.chap.CHUNK_OPERATOR] = 'color:#FF9D00;';
//this.colorScheme[ac.chap.CHUNK_PARENTHESIS] = 'color:#FFF177';
//this.colorScheme[ac.chap.CHUNK_KEYWORD_CUSTOM] = 'color:#54FFB8';
//this.colorScheme[ac.chap.CHUNK_FUNCTION_NAME] = 'color:#FFE000';
//this.colorScheme[ac.chap.CHUNK_LIBRARY] = 'color:#71E5B6';
//this.colorScheme[ac.chap.CHUNK_LIBRARY_CUSTOM] = 'color:#FF78E5';
//
$call(this, 'ac.chap.Theme.initDefinition');
this.cssId = 'twilight';
this.background = '#141414';
this.textColor = '#F8F8F8';
this.caretColor = '#A7A7A7';
this.caretRowStyleActive = '#1B1B1B';
this.selectionStyle = '#3C4043';
this.colorScheme[ac.chap.TOKEN_MULTIROW_COMMENT] = 'color:#605A60;font-style:italic';
this.colorScheme[ac.chap.TOKEN_SINGLEROW_COMMENT] = 'color:#605A60;font-style:italic';
this.colorScheme[ac.chap.TOKEN_SINGLE_QUOTED] = 'color:#8B9F67';
this.colorScheme[ac.chap.TOKEN_DOUBLE_QUOTED] = 'color:#D4F29E';
this.colorScheme[ac.chap.CHUNK_KEYWORD] = 'color:#D2A964';
this.colorScheme[ac.chap.CHUNK_NUMBER] = 'color:#DE6848';
this.colorScheme[ac.chap.CHUNK_OPERATOR] = 'color:#EFC25A;';
this.colorScheme[ac.chap.CHUNK_PARENTHESIS] = 'color:#ABC4DC';
this.colorScheme[ac.chap.CHUNK_KEYWORD_CUSTOM] = 'color:#A0849E';
this.colorScheme[ac.chap.CHUNK_FUNCTION_NAME] = 'color:#DAD280';
this.colorScheme[ac.chap.CHUNK_LIBRARY] = 'color:#7286A8';
this.colorScheme[ac.chap.CHUNK_LIBRARY_CUSTOM] = 'color:#A55C29';
}
// Generated from bundle keymap definition file.
ac.chap.KeyMap.prototype.initDefinition = function()
{
var _ = '\n';
this.compile
(""+_+ "KEY: 0"
+_+ " insert(character:true)"
+_+ "KEY: -37"
+_+ " caret(move:'left')"
+_+ "KEY: -37+shift"
+_+ " caret(move:'left')"
+_+ " selection(add:true)"
+_+ "KEY: -37+ctrl"
+_+ " caret(move:'prev_regexp', re:'[^|._A-Z ,|(|);]*$')"
+_+ "KEY: -37+alt"
+_+ " caret(move:'prev_word')"
+_+ "KEY: -37+ctrl+shift"
+_+ " caret(move:'prev_regexp', re:'[^|._A-Z ,|(|);]*$')"
+_+ " selection(add:true)"
+_+ "KEY: -37+alt+shift"
+_+ " caret(move:'prev_word')"
+_+ " selection(add:true)"
+_+ "KEY: -37+meta"
+_+ " caret(move:'row_start')"
+_+ "KEY: -37+meta+shift"
+_+ " caret(move:'row_start')"
+_+ " selection(add:true)"
+_+ "KEY: -39"
+_+ " caret(move:'right')"
+_+ "KEY: -39+shift"
+_+ " caret(move:'right')"
+_+ " selection(add:true)"
+_+ "KEY: -39+ctrl"
+_+ " caret(move:'next_regexp', re:'^[^|._A-Z ,|(|);]*')"
+_+ "KEY: -39+alt"
+_+ " caret(move:'next_word')"
+_+ "KEY: -39+ctrl+shift"
+_+ " caret(move:'next_regexp', re:'^[^|._A-Z ,|(|);]*')"
+_+ " selection(add:true)"
+_+ "KEY: -39+alt+shift"
+_+ " caret(move:'next_word')"
+_+ " selection(add:true)"
+_+ "KEY: -39+meta"
+_+ " caret(move:'row_end')"
+_+ "KEY: -39+meta+shift"
+_+ " caret(move:'row_end')"
+_+ " selection(add:true)"
+_+ "KEY: -38"
+_+ " caret(move:'up')"
+_+ "KEY: -38+shift"
+_+ " caret(move:'up')"
+_+ " selection(add:true)"
+_+ "KEY: -40"
+_+ " caret(move:'down')"
+_+ "KEY: -40+shift"
+_+ " caret(move:'down')"
+_+ " selection(add:true)"
+_+ "KEY: -13"
+_+ " insert(row:true)"
+_+ "KEY: -8"
+_+ " delete(character:true)"
+_+ "KEY: -46"
+_+ " delete(character:false)"
+_+ "KEY: 75+ctrl+shift"
+_+ " delete(row:true)"
+_+ "KEY: -27"
+_+ " custom(action:'WordComplete', direction:true)"
+_+ "KEY: -27+shift"
+_+ " custom(action:'WordComplete', direction:false)"
+_+ "KEY: -9"
+_+ " custom(action:'SnippetComplete')"
+_+ "KEY: 123"
+_+ " custom(action:'AutoComplete', use_selection:true, text:'}')"
+_+ "KEY: 34"
+_+ " custom(action:'AutoComplete', use_selection:true, text:'\"')"
+_+ "KEY: 91"
+_+ " custom(action:'AutoComplete', use_selection:true, text:']')"
+_+ "KEY: 40"
+_+ " custom(action:'AutoComplete', use_selection:true, text:')')"
+_+ "KEY: -36"
+_+ " caret(move:'doc_start')"
+_+ "KEY: -36+shift"
+_+ " caret(move:'doc_start')"
+_+ " selection(add:true)"
+_+ "KEY: -35"
+_+ " caret(move:'doc_end')"
+_+ "KEY: -35+shift"
+_+ " caret(move:'doc_end')"
+_+ " selection(add:true)"
+_+ "KEY: -34+meta"
+_+ " caret(move:'page_down')"
+_+ "KEY: -34+meta+shift"
+_+ " caret(move:'page_down')"
+_+ " selection(add:true)"
+_+ "KEY: -33+meta"
+_+ " caret(move:'page_up')"
+_+ "KEY: -33+meta+shift"
+_+ " caret(move:'page_down')"
+_+ " selection(add:true)"
+_+ "KEY: 99+meta"
+_+ " clipboard(copy:true)"
+_+ "KEY: 120+meta"
+_+ " clipboard(cut:true)"
+_+ "KEY: 122+meta"
+_+ " undo()"
+_+ "KEY: 90+meta+shift"
+_+ " redo()"
+_+ "KEY: 97+meta"
+_+ " selection(all:true)"
+_+ "KEY: 97+ctrl"
+_+ " selection(all:true)"
+_+ "KEY: -113"
+_+ " custom(action:'GoToBookmark', direction:1)"
+_+ "KEY: -113+shift"
+_+ " custom(action:'GoToBookmark', direction:-1)"
+_+ "KEY: -113+meta"
+_+ " custom(action:'ToggleBookmark')"
+_+ "KEY: 91+meta"
+_+ " custom(action:'Indent', direction:'left')"
+_+ "KEY: 93+meta"
+_+ " custom(action:'Indent', direction:'right')"
+_+ "KEY: 47+meta"
+_+ " custom(action:'Comment')"
+_+ "KEY: 43+meta"
+_+ " custom(action:'RuntimeOption', key:'font.size', value:'bigger')"
+_+ "KEY: 45+meta"
+_+ " custom(action:'RuntimeOption', key:'font.size', value:'smaller')"
+_+ "KEY: 101+meta"
+_+ " custom(action:'SetSearchKeyword')"
+_+ "KEY: 103+meta"
+_+ " custom(action:'SearchKeyword', direction:'down')"
+_+ "KEY: 71+shift+meta"
+_+ " custom(action:'SearchKeyword', direction:'up')"
+_+ "KEY: 102+ctrl"
+_+ " custom(action:'SearchInteractive')"
+_+ "KEY: 83+ctrl+shift"
+_+ " custom(action:'SearchInteractive')"
+_+ "KEY: 102+meta"
+_+ " custom(action:'SearchInteractive')"
+_+ "KEY: -13"
+_+ " custom(action:'SmartIndent', split_line:true, indent_tab_when_starts:'class module def if else unless rescue ensure while do __class__')"
+_+ "KEY: -13+meta"
+_+ " custom(action:'SmartIndent', split_line:false, indent_tab_when_starts:'class module def if else unless rescue ensure while do __class__')"
+_+ "KEY: 39"
+_+ " custom(action:'AutoComplete', use_selection:true, text:'\\'')"
)};
$class('ac.chap.lang.EAmy < ac.chap.Language');
ac.chap.lang.EAmy.prototype.initDefinition = function()
{
$call(this, 'ac.chap.Language.initDefinition');
this.singleQuoteStringMarker = "'";
this.singleQuoteStringMarkerException = "\\";
this.doubleQuoteStringMarker = "\"";
this.doubleQuoteStringMarkerException = "\\";
this.wordDelimiter = /[\w\d]/;
this.indentIgnoreMarker = /[\t \s]/;
this.foldingStartMarkers = [/^\s*def|class/i];
this.foldingParityMarkers = [/do|(^\s*if)|(^\s*def)|(^\s*class)/i];
this.foldingStopMarkers = [/^\s{0,1}$/i];
this.singleRowCommentStartMarkers = ['#'];
this.multiRowCommentStartMarker = "\"\"\"";
this.multiRowCommentEndMarker = "\"\"\"";
this.stringInterpolation = ['(#\{[^\}]*\})', 1];
this.chunkRules.push([/(([^\w]|^)(\d{1,}[\d\.Ee]*)([^w]|$))/i, 3, ac.chap.CHUNK_NUMBER])
this.chunkRules.push([/(\+|\-|\*|\/|\=|\!|\^|\%|\||\&|\<|\>)/i, 0, ac.chap.CHUNK_OPERATOR])
this.chunkRules.push([/(\(|\)|\[|\]|\{|\})/i, 0, ac.chap.CHUNK_PARENTHESIS])
this.chunkRules.push([/(([^\w]|^)(elif|else|except|finally|for|if|try|while|with)([^\w]|$))/i, 3, ac.chap.CHUNK_KEYWORD])
this.chunkRules.push([/(([^\w]|^)(@[\w]*|break|continue|pass|raise|return|yield|and|in|is|not|or|as|assert|del|exec|print)([^\w]|$))/i, 3, ac.chap.CHUNK_KEYWORD_CUSTOM])
this.chunkRules.push([/((def[ ]{1,})([\w]{1,}))/i, 3, ac.chap.CHUNK_FUNCTION_NAME])
this.chunkRules.push([/(([^\w]|^)(__import__|all|abs|any|apply|callable|chr|cmp|coerce|compile|delattr|dir|divmod|eval|execfile|filter|getattr|globals|hasattr|hash|hex|id|input|intern|isinstance|issubclass|iter|len|locals|map|max|min|oct|ord|pow|range|raw_input|reduce|reload|repr|round|setattr|sorted|sum|unichr|vars|zip|basestring|bool|buffer|classmethod|complex|dict|enumerate|file|float|frozenset|int|list|long|object|open|property|reversed|set|slice|staticmethod|str|super|tuple|type|unicode|xrange)([^\w]|$))/i, 3, ac.chap.CHUNK_LIBRARY])
this.chunkRules.push([/(([^\w]|^)((__(all|bases|class|debug|dict|doc|file|members|metaclass|methods|name|slots|weakref)__)|(import|from| abs|add|and|call|cmp|coerce|complex|contains|del|delattr|delete|delitem|delslice|div|divmod|enter|eq|exit|float|floordiv|ge|get|getattr|getattribute|getitem|getslice|gt|hash|hex|iadd|iand|idiv|ifloordiv|ilshift|imod|imul|init|int|invert|ior|ipow|irshift|isub|iter|itruediv|ixor|le|len|long|lshift|lt|mod|mul|ne|neg|new|nonzero|oct|or|pos|pow|radd|rand|rdiv|rdivmod|repr|rfloordiv|rlshift|rmod|rmul|ror|rpow|rrshift|rshift|rsub|rtruediv|rxor|set|setattr|setitem|setslice|str|sub|truediv|unicode|xor))([^\w]|$))/i, 3, ac.chap.CHUNK_LIBRARY_CUSTOM])
}
var snippet = {};
snippet = {tab_activation: '', code: ''};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'ifmain', code: 'if __name__ == '+"'"+'__main__'+"'"+':\n ${1:main()}$0'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'try', code: 'try:\n ${1:pass}\nexcept ${2:Exception}, ${3:e}:\n ${4:raise e}\nelse:\n ${5:pass}'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'property', code: 'def ${1:foo}():\n doc = "${2:The $1 property.}"\n def fget(self):\n ${3:return self._$1}\n def fset(self, value):\n ${4:self._$1 = value}\n def fdel(self):\n ${5:del self._$1}\n return locals()\n$1 = property(**$1())$0'};
eamy.snippets.push(snippet);
snippet = {tab_activation: '', code: ''};
eamy.snippets.push(snippet);
snippet = {tab_activation: '__', code: '__${1:init}__'};
eamy.snippets.push(snippet);
snippet = {tab_activation: '.', code: 'self.'};
eamy.snippets.push(snippet);
snippet = {tab_activation: '', code: ''};
eamy.snippets.push(snippet);
//snippet = {tab_activation: 'def', code: 'def ${1:fname}(${2:`if [ "$TM_CURRENT_LINE" != "" ]\n # poor man'+"'"+'s way ... check if there is an indent or not\n # (cuz we would have lost the class scope by this point)\n then\n echo "self"\n fi`}):\n ${3/.+/"""/}${3:docstring for $1}${3/.+/"""\n/}${3/.+/\t/}${0:pass}'};
//eamy.snippets.push(snippet);
snippet = {tab_activation: 'def', code: 'def ${1:fname}(${2:`if [ "$TM_CURRENT_LINE" != "" ]\n # poor man'+"'"+'s way ... check if there is an indent or not\n # (cuz we would have lost the class scope by this point)\n then\n echo "self"\n fi`}):\n ${3:}\n ${0:return dict()}'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'class', code: 'class ${1:ClassName}(${2:object}):\n ${3/.+/"""/}${3:docstring for $1}${3/.+/"""\n/}${3/.+/\t/}def __init__(self${4/([^,])?(.*)/(?1:, )/}${4:arg}):\n ${5:super($1, self).__init__()}\n${4/(\A\s*,\s*\Z)|,?\s*([A-Za-z_][a-zA-Z0-9_]*)\s*(=[^,]*)?(,\s*|$)/(?2:\t\tself.$2 = $2\n)/g} $0'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'aurm', code: '@auth.requires_membership(\'$0\'):'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'dbt', code: '${1:db_name}.define_table("${2:table_name}",\n SQLField("${3:field_name}", "${4:string/text/password/blob/upload/boolean/integer/double/time/date/datetime/db.reference_table}", ${5:length=$6}, ${7:default="$8"}),$9\n)'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'dbf', code: 'SQLField("${1:field_name}", "${2:string/text/password/blob/upload/boolean/integer/double/time/date/datetime/db.reference_table}", ${3:length=$4}, ${5:default="$6"}),$7'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'dbi', code: '${1:db_name}.${2:table_name}.insert(\n ${3:field_name}="$4" $5\n)'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 't', code: 'T("$0")'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'rev', code: 'response.view=\'$0\''};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'ref', code: 'response.flash=\'$0\''};
eamy.snippets.push(snippet);
snippet = {tab_activation: 're', code: 'redirect(\'$0\')'};
eamy.snippets.push(snippet);
snippet = {tab_activation: 'rej', code: 'response.json=\'$0\''};
eamy.snippets.push(snippet);
Binary file not shown.

Before

Width:  |  Height:  |  Size: 300 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 319 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 204 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 204 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 B

File diff suppressed because it is too large Load Diff
-56
View File
@@ -1,56 +0,0 @@
/*.acw-chap pre, .acw-chap pre span, span.acw-char-check, .acw-chap .selection-area div
{
font:11px 'Courier', monospaced;
line-height:11px;
margin:0;
padding:0;
border:0;
}
*/
.acw-chap .wrapped-row
{
background-image:url('chap-wrapped-row.gif');
background-repeat:no-repeat;
background-position:25px 4px;
}
.acw-chap .sidebar
{
background-image:url('chap-bg-sidebar.gif');
line-height:11px;
}
/*.acw-chap .sidebar .row-number
{
text-align:right;
font-size:9px;
font-family:'Lucida Grande', Verdana, Arial, Helvetica, sans-serif;
color:#999;
}
*/
.acw-chap .folding-expand-inner
{
width:14px;
height:10px;
margin-left:2px;
display:inline;
background-image:url('chap-folding-expand-inner.gif');
}
.acw-chap .folding-expand
{
background-image:url('chap-folding-expand.gif');
}
.acw-chap .folding-start
{
background-image:url('chap-folding-start.gif');
}
.acw-chap .folding-stop
{
background-image:url('chap-folding-stop.gif');
}
.acw-chap .bookmark-default
{
background-image:url('chap-bookmark-default.gif');
}
.acw-chap .void
{
background-image:url('void.gif');
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 B

@@ -1,491 +0,0 @@
/**
* Autocompletion class
*
* An auto completion box appear while you're writing. It's possible to force it to appear with Ctrl+Space short cut
*
* Loaded as a plugin inside editArea (everything made here could have been made in the plugin directory)
* But is definitly linked to syntax selection (no need to do 2 different files for color and auto complete for each syntax language)
* and add a too important feature that many people would miss if included as a plugin
*
* - init param: autocompletion_start
* - Button name: "autocompletion"
*/
var EditArea_autocompletion= {
/**
* Get called once this file is loaded (editArea still not initialized)
*
* @return nothing
*/
init: function(){
// alert("test init: "+ this._someInternalFunction(2, 3));
if(editArea.settings["autocompletion"])
this.enabled= true;
else
this.enabled= false;
this.current_word = false;
this.shown = false;
this.selectIndex = -1;
this.forceDisplay = false;
this.isInMiddleWord = false;
this.autoSelectIfOneResult = false;
this.delayBeforeDisplay = 100;
this.checkDelayTimer = false;
this.curr_syntax_str = '';
this.file_syntax_datas = {};
}
/**
* Returns the HTML code for a specific control string or false if this plugin doesn't have that control.
* A control can be a button, select list or any other HTML item to present in the EditArea user interface.
* Language variables such as {$lang_somekey} will also be replaced with contents from
* the language packs.
*
* @param {string} ctrl_name: the name of the control to add
* @return HTML code for a specific control or false.
* @type string or boolean
*/
/*,get_control_html: function(ctrl_name){
switch( ctrl_name ){
case 'autocompletion':
// Control id, button img, command
return parent.editAreaLoader.get_button_html('autocompletion_but', 'autocompletion.gif', 'toggle_autocompletion', false, this.baseURL);
break;
}
return false;
}*/
/**
* Get called once EditArea is fully loaded and initialised
*
* @return nothing
*/
,onload: function(){
if(this.enabled)
{
var icon= document.getElementById("autocompletion");
if(icon)
editArea.switchClassSticky(icon, 'editAreaButtonSelected', true);
}
this.container = document.createElement('div');
this.container.id = "auto_completion_area";
editArea.container.insertBefore( this.container, editArea.container.firstChild );
// add event detection for hiding suggestion box
parent.editAreaLoader.add_event( document, "click", function(){ editArea.plugins['autocompletion']._hide();} );
parent.editAreaLoader.add_event( editArea.textarea, "blur", function(){ editArea.plugins['autocompletion']._hide();} );
}
/**
* Is called each time the user touch a keyboard key.
*
* @param (event) e: the keydown event
* @return true - pass to next handler in chain, false - stop chain execution
* @type boolean
*/
,onkeydown: function(e){
if(!this.enabled)
return true;
if (EA_keys[e.keyCode])
letter=EA_keys[e.keyCode];
else
letter=String.fromCharCode(e.keyCode);
// shown
if( this._isShown() )
{
// if escape, hide the box
if(letter=="Esc")
{
this._hide();
return false;
}
// Enter
else if( letter=="Entrer")
{
var as = this.container.getElementsByTagName('A');
// select a suggested entry
if( this.selectIndex >= 0 && this.selectIndex < as.length )
{
as[ this.selectIndex ].onmousedown();
return false
}
// simply add an enter in the code
else
{
this._hide();
return true;
}
}
else if( letter=="Tab" || letter=="Down")
{
this._selectNext();
return false;
}
else if( letter=="Up")
{
this._selectBefore();
return false;
}
}
// hidden
else
{
}
// show current suggestion list and do autoSelect if possible (no matter it's shown or hidden)
if( letter=="Space" && CtrlPressed(e) )
{
//parent.console.log('SHOW SUGGEST');
this.forceDisplay = true;
this.autoSelectIfOneResult = true;
this._checkLetter();
return false;
}
// wait a short period for check that the cursor isn't moving
setTimeout("editArea.plugins['autocompletion']._checkDelayAndCursorBeforeDisplay();", editArea.check_line_selection_timer +5 );
this.checkDelayTimer = false;
return true;
}
/**
* Executes a specific command, this function handles plugin commands.
*
* @param {string} cmd: the name of the command being executed
* @param {unknown} param: the parameter of the command
* @return true - pass to next handler in chain, false - stop chain execution
* @type boolean
*/
,execCommand: function(cmd, param){
switch( cmd ){
case 'toggle_autocompletion':
var icon= document.getElementById("autocompletion");
if(!this.enabled)
{
if(icon != null){
editArea.restoreClass(icon);
editArea.switchClassSticky(icon, 'editAreaButtonSelected', true);
}
this.enabled= true;
}
else
{
this.enabled= false;
if(icon != null)
editArea.switchClassSticky(icon, 'editAreaButtonNormal', false);
}
return true;
}
return true;
}
,_checkDelayAndCursorBeforeDisplay: function()
{
this.checkDelayTimer = setTimeout("if(editArea.textarea.selectionStart == "+ editArea.textarea.selectionStart +") EditArea_autocompletion._checkLetter();", this.delayBeforeDisplay - editArea.check_line_selection_timer - 5 );
}
// hide the suggested box
,_hide: function(){
this.container.style.display="none";
this.selectIndex = -1;
this.shown = false;
this.forceDisplay = false;
this.autoSelectIfOneResult = false;
}
// display the suggested box
,_show: function(){
if( !this._isShown() )
{
this.container.style.display="block";
this.selectIndex = -1;
this.shown = true;
}
}
// is the suggested box displayed?
,_isShown: function(){
return this.shown;
}
// setter and getter
,_isInMiddleWord: function( new_value ){
if( typeof( new_value ) == "undefined" )
return this.isInMiddleWord;
else
this.isInMiddleWord = new_value;
}
// select the next element in the suggested box
,_selectNext: function()
{
var as = this.container.getElementsByTagName('A');
// clean existing elements
for( var i=0; i<as.length; i++ )
{
if( as[i].className )
as[i].className = as[i].className.replace(/ focus/g, '');
}
this.selectIndex++;
this.selectIndex = ( this.selectIndex >= as.length || this.selectIndex < 0 ) ? 0 : this.selectIndex;
as[ this.selectIndex ].className += " focus";
}
// select the previous element in the suggested box
,_selectBefore: function()
{
var as = this.container.getElementsByTagName('A');
// clean existing elements
for( var i=0; i<as.length; i++ )
{
if( as[i].className )
as[i].className = as[ i ].className.replace(/ focus/g, '');
}
this.selectIndex--;
this.selectIndex = ( this.selectIndex >= as.length || this.selectIndex < 0 ) ? as.length-1 : this.selectIndex;
as[ this.selectIndex ].className += " focus";
}
,_select: function( content )
{
cursor_forced_position = content.indexOf( '{@}' );
content = content.replace(/{@}/g, '' );
editArea.getIESelection();
// retrive the number of matching characters
var start_index = Math.max( 0, editArea.textarea.selectionEnd - content.length );
line_string = editArea.textarea.value.substring( start_index, editArea.textarea.selectionEnd + 1);
limit = line_string.length -1;
nbMatch = 0;
for( i =0; i<limit ; i++ )
{
if( line_string.substring( limit - i - 1, limit ) == content.substring( 0, i + 1 ) )
nbMatch = i + 1;
}
// if characters match, we should include them in the selection that will be replaced
if( nbMatch > 0 )
parent.editAreaLoader.setSelectionRange(editArea.id, editArea.textarea.selectionStart - nbMatch , editArea.textarea.selectionEnd);
parent.editAreaLoader.setSelectedText(editArea.id, content );
range= parent.editAreaLoader.getSelectionRange(editArea.id);
if( cursor_forced_position != -1 )
new_pos = range["end"] - ( content.length-cursor_forced_position );
else
new_pos = range["end"];
parent.editAreaLoader.setSelectionRange(editArea.id, new_pos, new_pos);
this._hide();
}
/**
* Parse the AUTO_COMPLETION part of syntax definition files
*/
,_parseSyntaxAutoCompletionDatas: function(){
//foreach syntax loaded
for(var lang in parent.editAreaLoader.load_syntax)
{
if(!parent.editAreaLoader.syntax[lang]['autocompletion']) // init the regexp if not already initialized
{
parent.editAreaLoader.syntax[lang]['autocompletion']= {};
// the file has auto completion datas
if(parent.editAreaLoader.load_syntax[lang]['AUTO_COMPLETION'])
{
// parse them
for(var i in parent.editAreaLoader.load_syntax[lang]['AUTO_COMPLETION'])
{
datas = parent.editAreaLoader.load_syntax[lang]['AUTO_COMPLETION'][i];
tmp = {};
if(datas["CASE_SENSITIVE"]!="undefined" && datas["CASE_SENSITIVE"]==false)
tmp["modifiers"]="i";
else
tmp["modifiers"]="";
tmp["prefix_separator"]= datas["REGEXP"]["prefix_separator"];
tmp["match_prefix_separator"]= new RegExp( datas["REGEXP"]["prefix_separator"] +"$", tmp["modifiers"]);
tmp["match_word"]= new RegExp("(?:"+ datas["REGEXP"]["before_word"] +")("+ datas["REGEXP"]["possible_words_letters"] +")$", tmp["modifiers"]);
tmp["match_next_letter"]= new RegExp("^("+ datas["REGEXP"]["letter_after_word_must_match"] +")$", tmp["modifiers"]);
tmp["keywords"]= {};
//console.log( datas["KEYWORDS"] );
for( var prefix in datas["KEYWORDS"] )
{
tmp["keywords"][prefix]= {
prefix: prefix,
prefix_name: prefix,
prefix_reg: new RegExp("(?:"+ parent.editAreaLoader.get_escaped_regexp( prefix ) +")(?:"+ tmp["prefix_separator"] +")$", tmp["modifiers"] ),
datas: []
};
for( var j=0; j<datas["KEYWORDS"][prefix].length; j++ )
{
tmp["keywords"][prefix]['datas'][j]= {
is_typing: datas["KEYWORDS"][prefix][j][0],
// if replace with is empty, replace with the is_typing value
replace_with: datas["KEYWORDS"][prefix][j][1] ? datas["KEYWORDS"][prefix][j][1].replace('§', datas["KEYWORDS"][prefix][j][0] ) : '',
comment: datas["KEYWORDS"][prefix][j][2] ? datas["KEYWORDS"][prefix][j][2] : ''
};
// the replace with shouldn't be empty
if( tmp["keywords"][prefix]['datas'][j]['replace_with'].length == 0 )
tmp["keywords"][prefix]['datas'][j]['replace_with'] = tmp["keywords"][prefix]['datas'][j]['is_typing'];
// if the comment is empty, display the replace_with value
if( tmp["keywords"][prefix]['datas'][j]['comment'].length == 0 )
tmp["keywords"][prefix]['datas'][j]['comment'] = tmp["keywords"][prefix]['datas'][j]['replace_with'].replace(/{@}/g, '' );
}
}
tmp["max_text_length"]= datas["MAX_TEXT_LENGTH"];
parent.editAreaLoader.syntax[lang]['autocompletion'][i] = tmp;
}
}
}
}
}
,_checkLetter: function(){
// check that syntax hasn't changed
if( this.curr_syntax_str != editArea.settings['syntax'] )
{
if( !parent.editAreaLoader.syntax[editArea.settings['syntax']]['autocompletion'] )
this._parseSyntaxAutoCompletionDatas();
this.curr_syntax= parent.editAreaLoader.syntax[editArea.settings['syntax']]['autocompletion'];
this.curr_syntax_str = editArea.settings['syntax'];
//console.log( this.curr_syntax );
}
if( editArea.is_editable )
{
time=new Date;
t1= time.getTime();
editArea.getIESelection();
this.selectIndex = -1;
start=editArea.textarea.selectionStart;
var str = editArea.textarea.value;
var results= [];
for(var i in this.curr_syntax)
{
var last_chars = str.substring(Math.max(0, start-this.curr_syntax[i]["max_text_length"]), start);
var matchNextletter = str.substring(start, start+1).match( this.curr_syntax[i]["match_next_letter"]);
// if not writting in the middle of a word or if forcing display
if( matchNextletter || this.forceDisplay )
{
// check if the last chars match a separator
var match_prefix_separator = last_chars.match(this.curr_syntax[i]["match_prefix_separator"]);
// check if it match a possible word
var match_word= last_chars.match(this.curr_syntax[i]["match_word"]);
//console.log( match_word );
if( match_word )
{
var begin_word= match_word[1];
var match_curr_word= new RegExp("^"+ parent.editAreaLoader.get_escaped_regexp( begin_word ), this.curr_syntax[i]["modifiers"]);
//console.log( match_curr_word );
for(var prefix in this.curr_syntax[i]["keywords"])
{
// parent.console.log( this.curr_syntax[i]["keywords"][prefix] );
for(var j=0; j<this.curr_syntax[i]["keywords"][prefix]['datas'].length; j++)
{
// parent.console.log( this.curr_syntax[i]["keywords"][prefix]['datas'][j]['is_typing'] );
// the key word match or force display
if( this.curr_syntax[i]["keywords"][prefix]['datas'][j]['is_typing'].match(match_curr_word) )
{
// parent.console.log('match');
hasMatch = false;
var before = last_chars.substr( 0, last_chars.length - begin_word.length );
// no prefix to match => it's valid
if( !match_prefix_separator && this.curr_syntax[i]["keywords"][prefix]['prefix'].length == 0 )
{
if( ! before.match( this.curr_syntax[i]["keywords"][prefix]['prefix_reg'] ) )
hasMatch = true;
}
// we still need to check the prefix if there is one
else if( this.curr_syntax[i]["keywords"][prefix]['prefix'].length > 0 )
{
if( before.match( this.curr_syntax[i]["keywords"][prefix]['prefix_reg'] ) )
hasMatch = true;
}
if( hasMatch )
results[results.length]= [ this.curr_syntax[i]["keywords"][prefix], this.curr_syntax[i]["keywords"][prefix]['datas'][j] ];
}
}
}
}
// it doesn't match any possible word but we want to display something
// we'll display to list of all available words
else if( this.forceDisplay || match_prefix_separator )
{
for(var prefix in this.curr_syntax[i]["keywords"])
{
for(var j=0; j<this.curr_syntax[i]["keywords"][prefix]['datas'].length; j++)
{
hasMatch = false;
// no prefix to match => it's valid
if( !match_prefix_separator && this.curr_syntax[i]["keywords"][prefix]['prefix'].length == 0 )
{
hasMatch = true;
}
// we still need to check the prefix if there is one
else if( match_prefix_separator && this.curr_syntax[i]["keywords"][prefix]['prefix'].length > 0 )
{
var before = last_chars; //.substr( 0, last_chars.length );
if( before.match( this.curr_syntax[i]["keywords"][prefix]['prefix_reg'] ) )
hasMatch = true;
}
if( hasMatch )
results[results.length]= [ this.curr_syntax[i]["keywords"][prefix], this.curr_syntax[i]["keywords"][prefix]['datas'][j] ];
}
}
}
}
}
// there is only one result, and we can select it automatically
if( results.length == 1 && this.autoSelectIfOneResult )
{
// console.log( results );
this._select( results[0][1]['replace_with'] );
}
else if( results.length == 0 )
{
this._hide();
}
else
{
// build the suggestion box content
var lines=[];
for(var i=0; i<results.length; i++)
{
var line= "<li><a href=\"#\" class=\"entry\" onmousedown=\"EditArea_autocompletion._select('"+ results[i][1]['replace_with'].replace(new RegExp('"', "g"), "&quot;") +"');return false;\">"+ results[i][1]['comment'];
if(results[i][0]['prefix_name'].length>0)
line+='<span class="prefix">'+ results[i][0]['prefix_name'] +'</span>';
line+='</a></li>';
lines[lines.length]=line;
}
// sort results
this.container.innerHTML = '<ul>'+ lines.sort().join('') +'</ul>';
var cursor = _$("cursor_pos");
this.container.style.top = ( cursor.cursor_top + editArea.lineHeight ) +"px";
this.container.style.left = ( cursor.cursor_left + 8 ) +"px";
this._show();
}
this.autoSelectIfOneResult = false;
time=new Date;
t2= time.getTime();
//parent.console.log( begin_word +"\n"+ (t2-t1) +"\n"+ html );
}
}
};
// Load as a plugin
editArea.settings['plugins'][ editArea.settings['plugins'].length ] = 'autocompletion';
editArea.add_plugin('autocompletion', EditArea_autocompletion);
@@ -1,530 +0,0 @@
body, html{
margin: 0;
padding: 0;
height: 100%;
border: none;
overflow: hidden;
background-color: #FFF;
}
body, html, table, form, textarea{
font: 12px monospace, sans-serif;
}
#editor{
border: solid #888 1px;
overflow: hidden;
}
#result{
z-index: 4;
overflow-x: auto;
overflow-y: scroll;
border-top: solid #888 1px;
border-bottom: solid #888 1px;
position: relative;
clear: both;
}
#result.empty{
overflow: hidden;
}
#container{
overflow: hidden;
border: solid blue 0;
position: relative;
z-index: 10;
padding: 0 5px 0 45px;
/*padding-right: 5px;*/
}
#textarea{
position: relative;
top: 0;
left: 0;
margin: 0;
padding: 0;
width: 100%;
height: 100%;
overflow: hidden;
z-index: 7;
border-width: 0;
background-color: transparent;
resize: none;
}
#textarea, #textarea:hover{
outline: none; /* safari outline fix */
}
#content_highlight{
white-space: pre;
margin: 0;
padding: 0;
position : absolute;
z-index: 4;
overflow: visible;
}
#selection_field, #selection_field_text{
margin: 0;
background-color: #E1F2F9;
/* height: 1px; */
position: absolute;
z-index: 5;
top: -100px;
padding: 0;
white-space: pre;
overflow: hidden;
}
#selection_field.show_colors {
z-index: 3;
background-color:#EDF9FC;
}
#selection_field strong{
font-weight:normal;
}
#selection_field.show_colors *, #selection_field_text * {
visibility: hidden;
}
#selection_field_text{
background-color:transparent;
}
#selection_field_text strong{
font-weight:normal;
background-color:#3399FE;
color: #FFF;
visibility:visible;
}
#container.word_wrap #content_highlight,
#container.word_wrap #selection_field,
#container.word_wrap #selection_field_text,
#container.word_wrap #test_font_size{
white-space: pre-wrap; /* css-3 */
white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
word-wrap: break-word; /* Internet Explorer 5.5+ */
width: 99%;
}
#line_number{
position: absolute;
overflow: hidden;
border-right: solid black 1px;
z-index:8;
width: 38px;
padding: 0 5px 0 0;
margin: 0 0 0 -45px;
text-align: right;
color: #AAAAAA;
}
#test_font_size{
padding: 0;
margin: 0;
visibility: hidden;
position: absolute;
white-space: pre;
}
pre{
margin: 0;
padding: 0;
}
.hidden{
opacity: 0.2;
filter:alpha(opacity=20);
}
#result .edit_area_cursor{
position: absolute;
z-index:6;
background-color: #FF6633;
top: -100px;
margin: 0;
}
#result .edit_area_selection_field .overline{
background-color: #996600;
}
/* area popup */
.editarea_popup{
border: solid 1px #888888;
background-color: #ECE9D8;
width: 250px;
padding: 4px;
position: absolute;
visibility: hidden;
z-index: 15;
top: -500px;
}
.editarea_popup, .editarea_popup table{
font-family: sans-serif;
font-size: 10pt;
}
.editarea_popup img{
border: 0;
}
.editarea_popup .close_popup{
float: right;
line-height: 16px;
border: 0;
padding: 0;
}
.editarea_popup h1,.editarea_popup h2,.editarea_popup h3,.editarea_popup h4,.editarea_popup h5,.editarea_popup h6{
margin: 0;
padding: 0;
}
.editarea_popup .copyright{
text-align: right;
}
/* Area_search */
div#area_search_replace{
/*width: 250px;*/
}
div#area_search_replace img{
border: 0;
}
div#area_search_replace div.button{
text-align: center;
line-height: 1.7em;
}
div#area_search_replace .button a{
cursor: pointer;
border: solid 1px #888888;
background-color: #DEDEDE;
text-decoration: none;
padding: 0 2px;
color: #000000;
white-space: nowrap;
}
div#area_search_replace a:hover{
/*border: solid 1px #888888;*/
background-color: #EDEDED;
}
div#area_search_replace #move_area_search_replace{
cursor: move;
border: solid 1px #888;
}
div#area_search_replace #close_area_search_replace{
text-align: right;
vertical-align: top;
white-space: nowrap;
}
div#area_search_replace #area_search_msg{
height: 18px;
overflow: hidden;
border-top: solid 1px #888;
margin-top: 3px;
}
/* area help */
#edit_area_help{
width: 350px;
}
#edit_area_help div.close_popup{
float: right;
}
/* area_toolbar */
.area_toolbar{
/*font: 11px sans-serif;*/
width: 100%;
/*height: 21px; */
margin: 0;
padding: 0;
background-color: #ECE9D8;
text-align: center;
}
.area_toolbar, .area_toolbar table{
font: 11px sans-serif;
}
.area_toolbar img{
border: 0;
vertical-align: middle;
}
.area_toolbar input{
margin: 0;
padding: 0;
}
.area_toolbar select{
font-family: 'MS Sans Serif',sans-serif,Verdana,Arial;
font-size: 7pt;
font-weight: normal;
margin: 2px 0 0 0 ;
padding: 0;
vertical-align: top;
background-color: #F0F0EE;
}
table.statusbar{
width: 100%;
}
.area_toolbar td.infos{
text-align: center;
width: 130px;
border-right: solid 1px #888;
border-width: 0 1px 0 0;
padding: 0;
}
.area_toolbar td.total{
text-align: right;
width: 50px;
padding: 0;
}
.area_toolbar td.resize{
text-align: right;
}
/*
.area_toolbar span{
line-height: 1px;
padding: 0;
margin: 0;
}*/
.area_toolbar span#resize_area{
cursor: nw-resize;
visibility: hidden;
}
/* toolbar buttons */
.editAreaButtonNormal, .editAreaButtonOver, .editAreaButtonDown, .editAreaSeparator, .editAreaSeparatorLine, .editAreaButtonDisabled, .editAreaButtonSelected {
border: 0; margin: 0; padding: 0; background: transparent;
margin-top: 0;
margin-left: 1px;
padding: 0;
}
.editAreaButtonNormal {
border: 1px solid #ECE9D8 !important;
cursor: pointer;
}
.editAreaButtonOver {
border: 1px solid #0A246A !important;
cursor: pointer;
background-color: #B6BDD2;
}
.editAreaButtonDown {
cursor: pointer;
border: 1px solid #0A246A !important;
background-color: #8592B5;
}
.editAreaButtonSelected {
border: 1px solid #C0C0BB !important;
cursor: pointer;
background-color: #F4F2E8;
}
.editAreaButtonDisabled {
filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30);
-moz-opacity:0.3;
opacity: 0.3;
border: 1px solid #F0F0EE !important;
cursor: pointer;
}
.editAreaSeparatorLine {
margin: 1px 2px;
background-color: #C0C0BB;
width: 2px;
height: 18px;
}
/* waiting screen */
#processing{
display: none;
background-color:#ECE9D8;
border: solid #888 1px;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 100;
text-align: center;
}
#processing_text{
position:absolute;
left: 50%;
top: 50%;
width: 200px;
height: 20px;
margin-left: -100px;
margin-top: -10px;
text-align: center;
}
/* end */
/**** tab browsing area ****/
#tab_browsing_area{
display: none;
background-color: #CCC9A8;
border-top: 1px solid #888;
text-align: left;
margin: 0;
}
#tab_browsing_list {
padding: 0;
margin: 0;
list-style-type: none;
white-space: nowrap;
}
#tab_browsing_list li {
float: left;
margin: -1px;
}
#tab_browsing_list a {
position: relative;
display: block;
text-decoration: none;
float: left;
cursor: pointer;
line-height:14px;
}
#tab_browsing_list a span {
display: block;
color: #000;
background: #ECE9D8;
border: 1px solid #888;
border-width: 1px 1px 0;
text-align: center;
padding: 2px 2px 1px 4px;
position: relative; /*IE 6 hack */
}
#tab_browsing_list a b {
display: block;
border-bottom: 2px solid #617994;
}
#tab_browsing_list a .edited {
display: none;
}
#tab_browsing_list a.edited .edited {
display: inline;
}
#tab_browsing_list a img{
margin-left: 7px;
}
#tab_browsing_list a.edited img{
margin-left: 3px;
}
#tab_browsing_list a:hover span {
background: #F4F2E8;
border-color: #0A246A;
}
#tab_browsing_list .selected a span{
background: #046380;
color: #FFF;
}
#no_file_selected{
height: 100%;
width: 150%; /* Opera need more than 100% */
background: #CCC;
display: none;
z-index: 20;
position: absolute;
}
/*** Non-editable mode ***/
.non_editable #editor
{
border-width: 0 1px;
}
.non_editable .area_toolbar
{
display: none;
}
/*** Auto completion ***/
#auto_completion_area
{
background: #FFF;
border: solid 1px #888;
position: absolute;
z-index: 15;
width: 280px;
height: 180px;
overflow: auto;
display:none;
}
#auto_completion_area a, #auto_completion_area a:visited
{
display: block;
padding: 0 2px 1px;
color: #000;
text-decoration:none;
}
#auto_completion_area a:hover, #auto_completion_area a:focus, #auto_completion_area a.focus
{
background: #D6E1FE;
text-decoration:none;
}
#auto_completion_area ul
{
margin: 0;
padding: 0;
list-style: none inside;
}
#auto_completion_area li
{
padding: 0;
}
#auto_completion_area .prefix
{
font-style: italic;
padding: 0 3px;
}
@@ -1,528 +0,0 @@
/******
*
* EditArea
* Developped by Christophe Dolivet
* Released under LGPL, Apache and BSD licenses (use the one you want)
*
******/
function EditArea(){
var t=this;
t.error= false; // to know if load is interrrupt
t.inlinePopup= [{popup_id: "area_search_replace", icon_id: "search"},
{popup_id: "edit_area_help", icon_id: "help"}];
t.plugins= {};
t.line_number=0;
parent.editAreaLoader.set_browser_infos(t); // navigator identification
// fix IE8 detection as we run in IE7 emulate mode through X-UA <meta> tag
if( t.isIE >= 8 )
t.isIE = 7;
t.last_selection={};
t.last_text_to_highlight="";
t.last_hightlighted_text= "";
t.syntax_list= [];
t.allready_used_syntax= {};
t.check_line_selection_timer= 50; // the timer delay for modification and/or selection change detection
t.textareaFocused= false;
t.highlight_selection_line= null;
t.previous= [];
t.next= [];
t.last_undo="";
t.files= {};
t.filesIdAssoc= {};
t.curr_file= '';
//t.loaded= false;
t.assocBracket={};
t.revertAssocBracket= {};
// bracket selection init
t.assocBracket["("]=")";
t.assocBracket["{"]="}";
t.assocBracket["["]="]";
for(var index in t.assocBracket){
t.revertAssocBracket[t.assocBracket[index]]=index;
}
t.is_editable= true;
/*t.textarea="";
t.state="declare";
t.code = []; // store highlight syntax for languagues*/
// font datas
t.lineHeight= 16;
/*t.default_font_family= "monospace";
t.default_font_size= 10;*/
t.tab_nb_char= 8; //nb of white spaces corresponding to a tabulation
if(t.isOpera)
t.tab_nb_char= 6;
t.is_tabbing= false;
t.fullscreen= {'isFull': false};
t.isResizing=false; // resize var
// init with settings and ID (area_id is a global var defined by editAreaLoader on iframe creation
t.id= area_id;
t.settings= editAreas[t.id]["settings"];
if((""+t.settings['replace_tab_by_spaces']).match(/^[0-9]+$/))
{
t.tab_nb_char= t.settings['replace_tab_by_spaces'];
t.tabulation="";
for(var i=0; i<t.tab_nb_char; i++)
t.tabulation+=" ";
}else{
t.tabulation="\t";
}
// retrieve the init parameter for syntax
if(t.settings["syntax_selection_allow"] && t.settings["syntax_selection_allow"].length>0)
t.syntax_list= t.settings["syntax_selection_allow"].replace(/ /g,"").split(",");
if(t.settings['syntax'])
t.allready_used_syntax[t.settings['syntax']]=true;
};
EditArea.prototype.init= function(){
var t=this, a, s=t.settings;
t.textarea = _$("textarea");
t.container = _$("container");
t.result = _$("result");
t.content_highlight = _$("content_highlight");
t.selection_field = _$("selection_field");
t.selection_field_text= _$("selection_field_text");
t.processing_screen = _$("processing");
t.editor_area = _$("editor");
t.tab_browsing_area = _$("tab_browsing_area");
t.test_font_size = _$("test_font_size");
a = t.textarea;
if(!s['is_editable'])
t.set_editable(false);
t.set_show_line_colors( s['show_line_colors'] );
if(syntax_selec= _$("syntax_selection"))
{
// set up syntax selection lsit in the toolbar
for(var i=0; i<t.syntax_list.length; i++) {
var syntax= t.syntax_list[i];
var option= document.createElement("option");
option.value= syntax;
if(syntax==s['syntax'])
option.selected= "selected";
dispSyntax = parent.editAreaLoader.syntax_display_name[ syntax ];
option.innerHTML= typeof( dispSyntax ) == 'undefined' ? syntax.substring( 0, 1 ).toUpperCase() + syntax.substring( 1 ) : dispSyntax;//t.get_translation("syntax_" + syntax, "word");
syntax_selec.appendChild(option);
}
}
// add plugins buttons in the toolbar
spans= parent.getChildren(_$("toolbar_1"), "span", "", "", "all", -1);
for(var i=0; i<spans.length; i++){
id=spans[i].id.replace(/tmp_tool_(.*)/, "$1");
if(id!= spans[i].id){
for(var j in t.plugins){
if(typeof(t.plugins[j].get_control_html)=="function" ){
html=t.plugins[j].get_control_html(id);
if(html!=false){
html= t.get_translation(html, "template");
var new_span= document.createElement("span");
new_span.innerHTML= html;
var father= spans[i].parentNode;
spans[i].parentNode.replaceChild(new_span, spans[i]);
break; // exit the for loop
}
}
}
}
}
// init datas
//a.value = 'a';//editAreas[t.id]["textarea"].value;
if(s["debug"])
{
t.debug=parent.document.getElementById("edit_area_debug_"+t.id);
}
// init size
//this.update_size();
if(_$("redo") != null)
t.switchClassSticky(_$("redo"), 'editAreaButtonDisabled', true);
// insert css rules for highlight mode
if(typeof(parent.editAreaLoader.syntax[s["syntax"]])!="undefined"){
for(var i in parent.editAreaLoader.syntax){
if (typeof(parent.editAreaLoader.syntax[i]["styles"]) != "undefined"){
t.add_style(parent.editAreaLoader.syntax[i]["styles"]);
}
}
}
// init key events
if(t.isOpera)
_$("editor").onkeypress = keyDown;
else
_$("editor").onkeydown = keyDown;
for(var i=0; i<t.inlinePopup.length; i++){
if(t.isOpera)
_$(t.inlinePopup[i]["popup_id"]).onkeypress = keyDown;
else
_$(t.inlinePopup[i]["popup_id"]).onkeydown = keyDown;
}
if(s["allow_resize"]=="both" || s["allow_resize"]=="x" || s["allow_resize"]=="y")
t.allow_resize(true);
parent.editAreaLoader.toggle(t.id, "on");
//a.focus();
// line selection init
t.change_smooth_selection_mode(editArea.smooth_selection);
// highlight
t.execCommand("change_highlight", s["start_highlight"]);
// get font size datas
t.set_font(editArea.settings["font_family"], editArea.settings["font_size"]);
// set unselectable text
children= parent.getChildren(document.body, "", "selec", "none", "all", -1);
for(var i=0; i<children.length; i++){
if(t.isIE)
children[i].unselectable = true; // IE
else
children[i].onmousedown= function(){return false};
/* children[i].style.MozUserSelect = "none"; // Moz
children[i].style.KhtmlUserSelect = "none"; // Konqueror/Safari*/
}
a.spellcheck= s["gecko_spellcheck"];
/** Browser specific style fixes **/
// fix rendering bug for highlighted lines beginning with no tabs
if( t.isFirefox >= '3' ) {
t.content_highlight.style.paddingLeft= "1px";
t.selection_field.style.paddingLeft= "1px";
t.selection_field_text.style.paddingLeft= "1px";
}
if(t.isIE && t.isIE < 8 ){
a.style.marginTop= "-1px";
}
/*
if(t.isOpera){
t.editor_area.style.position= "absolute";
}*/
if( t.isSafari ){
t.editor_area.style.position = "absolute";
// a.style.marginLeft ="-3px";
if( t.isSafari < 3.2 ) // Safari 3.0 (3.1?)
a.style.marginTop ="1px";
}
// si le textarea n'est pas grand, un click sous le textarea doit provoquer un focus sur le textarea
parent.editAreaLoader.add_event(t.result, "click", function(e){ if((e.target || e.srcElement)==editArea.result) { editArea.area_select(editArea.textarea.value.length, 0);} });
if(s['is_multi_files']!=false)
t.open_file({'id': t.curr_file, 'text': ''});
t.set_word_wrap( s['word_wrap'] );
setTimeout("editArea.focus();editArea.manage_size();editArea.execCommand('EA_load');", 10);
//start checkup routine
t.check_undo();
t.check_line_selection(true);
t.scroll_to_view();
for(var i in t.plugins){
if(typeof(t.plugins[i].onload)=="function")
t.plugins[i].onload();
}
if(s['fullscreen']==true)
t.toggle_full_screen(true);
parent.editAreaLoader.add_event(window, "resize", editArea.update_size);
parent.editAreaLoader.add_event(parent.window, "resize", editArea.update_size);
parent.editAreaLoader.add_event(top.window, "resize", editArea.update_size);
parent.editAreaLoader.add_event(window, "unload", function(){
// in case where editAreaLoader have been already cleaned
if( parent.editAreaLoader )
{
parent.editAreaLoader.remove_event(parent.window, "resize", editArea.update_size);
parent.editAreaLoader.remove_event(top.window, "resize", editArea.update_size);
}
if(editAreas[editArea.id] && editAreas[editArea.id]["displayed"]){
editArea.execCommand("EA_unload");
}
});
/*date= new Date();
alert(date.getTime()- parent.editAreaLoader.start_time);*/
};
//called by the toggle_on
EditArea.prototype.update_size= function(){
var d=document,pd=parent.document,height,width,popup,maxLeft,maxTop;
if( typeof editAreas != 'undefined' && editAreas[editArea.id] && editAreas[editArea.id]["displayed"]==true){
if(editArea.fullscreen['isFull']){
pd.getElementById("frame_"+editArea.id).style.width = pd.getElementsByTagName("html")[0].clientWidth + "px";
pd.getElementById("frame_"+editArea.id).style.height = pd.getElementsByTagName("html")[0].clientHeight + "px";
}
if(editArea.tab_browsing_area.style.display=='block' && ( !editArea.isIE || editArea.isIE >= 8 ) )
{
editArea.tab_browsing_area.style.height = "0px";
editArea.tab_browsing_area.style.height = (editArea.result.offsetTop - editArea.tab_browsing_area.offsetTop -1)+"px";
}
height = d.body.offsetHeight - editArea.get_all_toolbar_height() - 4;
editArea.result.style.height = height +"px";
width = d.body.offsetWidth -2;
editArea.result.style.width = width+"px";
//alert("result h: "+ height+" w: "+width+"\ntoolbar h: "+this.get_all_toolbar_height()+"\nbody_h: "+document.body.offsetHeight);
// check that the popups don't get out of the screen
for( i=0; i < editArea.inlinePopup.length; i++ )
{
popup = _$(editArea.inlinePopup[i]["popup_id"]);
maxLeft = d.body.offsetWidth - popup.offsetWidth;
maxTop = d.body.offsetHeight - popup.offsetHeight;
if( popup.offsetTop > maxTop )
popup.style.top = maxTop+"px";
if( popup.offsetLeft > maxLeft )
popup.style.left = maxLeft+"px";
}
editArea.manage_size( true );
editArea.fixLinesHeight( editArea.textarea.value, 0,-1);
}
};
EditArea.prototype.manage_size= function(onlyOneTime){
if(!editAreas[this.id])
return false;
if(editAreas[this.id]["displayed"]==true && this.textareaFocused)
{
var area_height,resized= false;
//1) Manage display width
//1.1) Calc the new width to use for display
if( !this.settings['word_wrap'] )
{
var area_width= this.textarea.scrollWidth;
area_height= this.textarea.scrollHeight;
// bug on old opera versions
if(this.isOpera && this.isOpera < 9.6 ){
area_width=10000;
}
//1.2) the width is not the same, we must resize elements
if(this.textarea.previous_scrollWidth!=area_width)
{
this.container.style.width= area_width+"px";
this.textarea.style.width= area_width+"px";
this.content_highlight.style.width= area_width+"px";
this.textarea.previous_scrollWidth=area_width;
resized=true;
}
}
// manage wrap width
if( this.settings['word_wrap'] )
{
newW=this.textarea.offsetWidth;
if( this.isFirefox || this.isIE )
newW-=2;
if( this.isSafari )
newW-=6;
this.content_highlight.style.width=this.selection_field_text.style.width=this.selection_field.style.width=this.test_font_size.style.width=newW+"px";
}
//2) Manage display height
//2.1) Calc the new height to use for display
if( this.isOpera || this.isFirefox || this.isSafari ) {
area_height= this.getLinePosTop( this.last_selection["nb_line"] + 1 );
} else {
area_height = this.textarea.scrollHeight;
}
//2.2) the width is not the same, we must resize elements
if(this.textarea.previous_scrollHeight!=area_height)
{
this.container.style.height= (area_height+2)+"px";
this.textarea.style.height= area_height+"px";
this.content_highlight.style.height= area_height+"px";
this.textarea.previous_scrollHeight= area_height;
resized=true;
}
//3) if there is new lines, we add new line numbers in the line numeration area
if(this.last_selection["nb_line"] >= this.line_number)
{
var newLines= '', destDiv=_$("line_number"), start=this.line_number, end=this.last_selection["nb_line"]+100;
for( i = start+1; i < end; i++ )
{
newLines+='<div id="line_'+ i +'">'+i+"</div>";
this.line_number++;
}
destDiv.innerHTML= destDiv.innerHTML + newLines;
if(this.settings['word_wrap']){
this.fixLinesHeight( this.textarea.value, start, -1 );
}
}
//4) be sure the text is well displayed
this.textarea.scrollTop="0px";
this.textarea.scrollLeft="0px";
if(resized==true){
this.scroll_to_view();
}
}
if(!onlyOneTime)
setTimeout("editArea.manage_size();", 100);
};
EditArea.prototype.execCommand= function(cmd, param){
for(var i in this.plugins){
if(typeof(this.plugins[i].execCommand)=="function"){
if(!this.plugins[i].execCommand(cmd, param))
return;
}
}
switch(cmd){
case "save":
if(this.settings["save_callback"].length>0)
eval("parent."+this.settings["save_callback"]+"('"+ this.id +"', editArea.textarea.value);");
break;
case "load":
if(this.settings["load_callback"].length>0)
eval("parent."+this.settings["load_callback"]+"('"+ this.id +"');");
break;
case "onchange":
if(this.settings["change_callback"].length>0)
eval("parent."+this.settings["change_callback"]+"('"+ this.id +"');");
break;
case "EA_load":
if(this.settings["EA_load_callback"].length>0)
eval("parent."+this.settings["EA_load_callback"]+"('"+ this.id +"');");
break;
case "EA_unload":
if(this.settings["EA_unload_callback"].length>0)
eval("parent."+this.settings["EA_unload_callback"]+"('"+ this.id +"');");
break;
case "toggle_on":
if(this.settings["EA_toggle_on_callback"].length>0)
eval("parent."+this.settings["EA_toggle_on_callback"]+"('"+ this.id +"');");
break;
case "toggle_off":
if(this.settings["EA_toggle_off_callback"].length>0)
eval("parent."+this.settings["EA_toggle_off_callback"]+"('"+ this.id +"');");
break;
case "re_sync":
if(!this.do_highlight)
break;
case "file_switch_on":
if(this.settings["EA_file_switch_on_callback"].length>0)
eval("parent."+this.settings["EA_file_switch_on_callback"]+"(param);");
break;
case "file_switch_off":
if(this.settings["EA_file_switch_off_callback"].length>0)
eval("parent."+this.settings["EA_file_switch_off_callback"]+"(param);");
break;
case "file_close":
if(this.settings["EA_file_close_callback"].length>0)
return eval("parent."+this.settings["EA_file_close_callback"]+"(param);");
break;
default:
if(typeof(eval("editArea."+cmd))=="function")
{
if(this.settings["debug"])
eval("editArea."+ cmd +"(param);");
else
try{eval("editArea."+ cmd +"(param);");}catch(e){};
}
}
};
EditArea.prototype.get_translation= function(word, mode){
if(mode=="template")
return parent.editAreaLoader.translate(word, this.settings["language"], mode);
else
return parent.editAreaLoader.get_word_translation(word, this.settings["language"]);
};
EditArea.prototype.add_plugin= function(plug_name, plug_obj){
for(var i=0; i<this.settings["plugins"].length; i++){
if(this.settings["plugins"][i]==plug_name){
this.plugins[plug_name]=plug_obj;
plug_obj.baseURL=parent.editAreaLoader.baseURL + "plugins/" + plug_name + "/";
if( typeof(plug_obj.init)=="function" )
plug_obj.init();
}
}
};
EditArea.prototype.load_css= function(url){
try{
link = document.createElement("link");
link.type = "text/css";
link.rel= "stylesheet";
link.media="all";
link.href = url;
head = document.getElementsByTagName("head");
head[0].appendChild(link);
}catch(e){
document.write("<link href='"+ url +"' rel='stylesheet' type='text/css' />");
}
};
EditArea.prototype.load_script= function(url){
try{
script = document.createElement("script");
script.type = "text/javascript";
script.src = url;
script.charset= "UTF-8";
head = document.getElementsByTagName("head");
head[0].appendChild(script);
}catch(e){
document.write("<script type='text/javascript' src='" + url + "' charset=\"UTF-8\"><"+"/script>");
}
};
// add plugin translation to language translation array
EditArea.prototype.add_lang= function(language, values){
if(!parent.editAreaLoader.lang[language])
parent.editAreaLoader.lang[language]={};
for(var i in values)
parent.editAreaLoader.lang[language][i]= values[i];
};
// short cut for document.getElementById()
function _$(id){return document.getElementById( id );};
var editArea = new EditArea();
parent.editAreaLoader.add_event(window, "load", init);
function init(){
setTimeout("editArea.init(); ", 10);
};
@@ -1,428 +0,0 @@
<?php
/******
*
* EditArea PHP compressor
* Developped by Christophe Dolivet
* Released under LGPL, Apache and BSD licenses
* v1.1.3 (2007/01/18)
*
******/
// CONFIG
$param['cache_duration']= 3600 * 24 * 10; // 10 days util client cache expires
$param['compress'] = true; // enable the code compression, should be activated but it can be usefull to desactivate it for easier error retrieving (true or false)
$param['debug'] = false; // Enable this option if you need debuging info
$param['use_disk_cache']= true; // If you enable this option gzip files will be cached on disk.
$param['use_gzip']= true; // Enable gzip compression
// END CONFIG
$compressor= new Compressor($param);
class Compressor{
function compressor($param)
{
$this->__construct($param);
}
function __construct($param)
{
$this->start_time= $this->get_microtime();
$this->file_loaded_size=0;
$this->param= $param;
$this->script_list="";
$this->path= dirname(__FILE__)."/";
if(isset($_GET['plugins'])){
$this->load_all_plugins= true;
$this->full_cache_file= $this->path."edit_area_full_with_plugins.js";
$this->gzip_cache_file= $this->path."edit_area_full_with_plugins.gz";
}else{
$this->load_all_plugins= false;
$this->full_cache_file= $this->path."edit_area_full.js";
$this->gzip_cache_file= $this->path."edit_area_full.gz";
}
$this->check_gzip_use();
$this->send_headers();
$this->check_cache();
$this->load_files();
$this->send_datas();
}
function send_headers()
{
header("Content-type: text/javascript; charset: UTF-8");
header("Vary: Accept-Encoding"); // Handle proxies
header(sprintf("Expires: %s GMT", gmdate("D, d M Y H:i:s", time() + $this->param['cache_duration'])) );
if($this->use_gzip)
header("Content-Encoding: ".$this->gzip_enc_header);
}
function check_gzip_use()
{
$encodings = array();
$desactivate_gzip=false;
if (isset($_SERVER['HTTP_ACCEPT_ENCODING']))
$encodings = explode(',', strtolower(preg_replace("/\s+/", "", $_SERVER['HTTP_ACCEPT_ENCODING'])));
// desactivate gzip for IE version < 7
if(preg_match("/(?:msie )([0-9.]+)/i", $_SERVER['HTTP_USER_AGENT'], $ie))
{
if($ie[1]<7)
$desactivate_gzip=true;
}
// Check for gzip header or northon internet securities
if (!$desactivate_gzip && $this->param['use_gzip'] && (in_array('gzip', $encodings) || in_array('x-gzip', $encodings) || isset($_SERVER['---------------'])) && function_exists('ob_gzhandler') && !ini_get('zlib.output_compression')) {
$this->gzip_enc_header= in_array('x-gzip', $encodings) ? "x-gzip" : "gzip";
$this->use_gzip=true;
$this->cache_file=$this->gzip_cache_file;
}else{
$this->use_gzip=false;
$this->cache_file=$this->full_cache_file;
}
}
function check_cache()
{
// Only gzip the contents if clients and server support it
if (file_exists($this->cache_file)) {
// check if cache file must be updated
$cache_date=0;
if ($dir = opendir($this->path)) {
while (($file = readdir($dir)) !== false) {
if(is_file($this->path.$file) && $file!="." && $file!="..")
$cache_date= max($cache_date, filemtime($this->path.$file));
}
closedir($dir);
}
if($this->load_all_plugins){
$plug_path= $this->path."plugins/";
if (($dir = @opendir($plug_path)) !== false)
{
while (($file = readdir($dir)) !== false)
{
if ($file !== "." && $file !== "..")
{
if(is_dir($plug_path.$file) && file_exists($plug_path.$file."/".$file.".js"))
$cache_date= max($cache_date, filemtime("plugins/".$file."/".$file.".js"));
}
}
closedir($dir);
}
}
if(filemtime($this->cache_file) >= $cache_date){
// if cache file is up to date
$last_modified = gmdate("D, d M Y H:i:s",filemtime($this->cache_file))." GMT";
if (isset($_SERVER["HTTP_IF_MODIFIED_SINCE"]) && strcasecmp($_SERVER["HTTP_IF_MODIFIED_SINCE"], $last_modified) === 0)
{
header("HTTP/1.1 304 Not Modified");
header("Last-modified: ".$last_modified);
header("Cache-Control: Public"); // Tells HTTP 1.1 clients to cache
header("Pragma:"); // Tells HTTP 1.0 clients to cache
}
else
{
header("Last-modified: ".$last_modified);
header("Cache-Control: Public"); // Tells HTTP 1.1 clients to cache
header("Pragma:"); // Tells HTTP 1.0 clients to cache
header('Content-Length: '.filesize($this->cache_file));
echo file_get_contents($this->cache_file);
}
die;
}
}
return false;
}
function load_files()
{
$loader= $this->get_content("edit_area_loader.js")."\n";
// get the list of other files to load
$loader= preg_replace("/(t\.scripts_to_load=\s*)\[([^\]]*)\];/e"
, "\$this->replace_scripts('script_list', '\\1', '\\2')"
, $loader);
$loader= preg_replace("/(t\.sub_scripts_to_load=\s*)\[([^\]]*)\];/e"
, "\$this->replace_scripts('sub_script_list', '\\1', '\\2')"
, $loader);
// replace languages names
$reg_path= $this->path."reg_syntax/";
$a_displayName = array();
if (($dir = @opendir($reg_path)) !== false)
{
while (($file = readdir($dir)) !== false)
{
if( $file !== "." && $file !== ".." && ( $pos = strpos( $file, '.js' ) ) !== false )
{
$jsContent = $this->file_get_contents( $reg_path.$file );
if( preg_match( '@(\'|")DISPLAY_NAME\1\s*:\s*(\'|")(.*)\2@', $jsContent, $match ) )
{
$a_displayName[] = "'". substr( $file, 0, $pos ) ."':'". htmlspecialchars( $match[3], ENT_QUOTES ) ."'";
}
}
}
closedir($dir);
}
$loader = str_replace( '/*syntax_display_name_AUTO-FILL-BY-COMPRESSOR*/', implode( ",", $a_displayName ), $loader );
$this->datas= $loader;
$this->compress_javascript($this->datas);
// load other scripts needed for the loader
preg_match_all('/"([^"]*)"/', $this->script_list, $match);
foreach($match[1] as $key => $value)
{
$content= $this->get_content(preg_replace("/\\|\//i", "", $value).".js");
$this->compress_javascript($content);
$this->datas.= $content."\n";
}
//$this->datas);
//$this->datas= preg_replace('/(( |\t|\r)*\n( |\t)*)+/s', "", $this->datas);
// improved compression step 1/2
$this->datas= preg_replace(array("/(\b)EditAreaLoader(\b)/", "/(\b)editAreaLoader(\b)/", "/(\b)editAreas(\b)/"), array("EAL", "eAL", "eAs"), $this->datas);
//$this->datas= str_replace(array("EditAreaLoader", "editAreaLoader", "editAreas"), array("EAL", "eAL", "eAs"), $this->datas);
$this->datas.= "var editAreaLoader= eAL;var editAreas=eAs;EditAreaLoader=EAL;";
// load sub scripts
$sub_scripts="";
$sub_scripts_list= array();
preg_match_all('/"([^"]*)"/', $this->sub_script_list, $match);
foreach($match[1] as $value){
$sub_scripts_list[]= preg_replace("/\\|\//i", "", $value).".js";
}
if($this->load_all_plugins){
// load plugins scripts
$plug_path= $this->path."plugins/";
if (($dir = @opendir($plug_path)) !== false)
{
while (($file = readdir($dir)) !== false)
{
if ($file !== "." && $file !== "..")
{
if(is_dir($plug_path.$file) && file_exists($plug_path.$file."/".$file.".js"))
$sub_scripts_list[]= "plugins/".$file."/".$file.".js";
}
}
closedir($dir);
}
}
foreach($sub_scripts_list as $value){
$sub_scripts.= $this->get_javascript_content($value);
}
// improved compression step 2/2
$sub_scripts= preg_replace(array("/(\b)editAreaLoader(\b)/", "/(\b)editAreas(\b)/", "/(\b)editArea(\b)/", "/(\b)EditArea(\b)/"), array("eAL", "eAs", "eA", "EA"), $sub_scripts);
// $sub_scripts= str_replace(array("editAreaLoader", "editAreas", "editArea", "EditArea"), array("eAL", "eAs", "eA", "EA"), $sub_scripts);
$sub_scripts.= "var editArea= eA;EditArea=EA;";
// add the scripts
// $this->datas.= sprintf("editAreaLoader.iframe_script= \"<script type='text/javascript'>%s</script>\";\n", $sub_scripts);
// add the script and use a last compression
if( $this->param['compress'] )
{
$last_comp = array( 'Á' => 'this',
'Â' => 'textarea',
'Ã' => 'function',
'Ä' => 'prototype',
'Å' => 'settings',
'Æ' => 'length',
'Ç' => 'style',
'È' => 'parent',
'É' => 'last_selection',
'Ê' => 'value',
'Ë' => 'true',
'Ì' => 'false'
/*,
'Î' => '"',
'Ï' => "\n",
'À' => "\r"*/);
}
else
{
$last_comp = array();
}
$js_replace= '';
foreach( $last_comp as $key => $val )
$js_replace .= ".replace(/". $key ."/g,'". str_replace( array("\n", "\r"), array('\n','\r'), $val ) ."')";
$this->datas.= sprintf("editAreaLoader.iframe_script= \"<script type='text/javascript'>%s</script>\"%s;\n",
str_replace( array_values($last_comp), array_keys($last_comp), $sub_scripts ),
$js_replace);
if($this->load_all_plugins)
$this->datas.="editAreaLoader.all_plugins_loaded=true;\n";
// load the template
$this->datas.= sprintf("editAreaLoader.template= \"%s\";\n", $this->get_html_content("template.html"));
// load the css
$this->datas.= sprintf("editAreaLoader.iframe_css= \"<style>%s</style>\";\n", $this->get_css_content("edit_area.css"));
// $this->datas= "function editArea(){};editArea.prototype.loader= function(){alert('bouhbouh');} var a= new editArea();a.loader();";
}
function send_datas()
{
if($this->param['debug']){
$header=sprintf("/* USE PHP COMPRESSION\n");
$header.=sprintf("javascript size: based files: %s => PHP COMPRESSION => %s ", $this->file_loaded_size, strlen($this->datas));
if($this->use_gzip){
$gzip_datas= gzencode($this->datas, 9, FORCE_GZIP);
$header.=sprintf("=> GZIP COMPRESSION => %s", strlen($gzip_datas));
$ratio = round(100 - strlen($gzip_datas) / $this->file_loaded_size * 100.0);
}else{
$ratio = round(100 - strlen($this->datas) / $this->file_loaded_size * 100.0);
}
$header.=sprintf(", reduced by %s%%\n", $ratio);
$header.=sprintf("compression time: %s\n", $this->get_microtime()-$this->start_time);
$header.=sprintf("%s\n", implode("\n", $this->infos));
$header.=sprintf("*/\n");
$this->datas= $header.$this->datas;
}
$mtime= time(); // ensure that the 2 disk files will have the same update time
// generate gzip file and cahce it if using disk cache
if($this->use_gzip){
$this->gzip_datas= gzencode($this->datas, 9, FORCE_GZIP);
if($this->param['use_disk_cache'])
$this->file_put_contents($this->gzip_cache_file, $this->gzip_datas, $mtime);
}
// generate full js file and cache it if using disk cache
if($this->param['use_disk_cache'])
$this->file_put_contents($this->full_cache_file, $this->datas, $mtime);
// generate output
if($this->use_gzip)
echo $this->gzip_datas;
else
echo $this->datas;
// die;
}
function get_content($end_uri)
{
$end_uri=preg_replace("/\.\./", "", $end_uri); // Remove any .. (security)
$file= $this->path.$end_uri;
if(file_exists($file)){
$this->infos[]=sprintf("'%s' loaded", $end_uri);
/*$fd = fopen($file, 'rb');
$content = fread($fd, filesize($file));
fclose($fd);
return $content;*/
return $this->file_get_contents($file);
}else{
$this->infos[]=sprintf("'%s' not loaded", $end_uri);
return "";
}
}
function get_javascript_content($end_uri)
{
$val=$this->get_content($end_uri);
$this->compress_javascript($val);
$this->prepare_string_for_quotes($val);
return $val;
}
function compress_javascript(&$code)
{
if($this->param['compress'])
{
// remove all comments
// (\"(?:[^\"\\]*(?:\\\\)*(?:\\\"?)?)*(?:\"|$))|(\'(?:[^\'\\]*(?:\\\\)*(?:\\'?)?)*(?:\'|$))|(?:\/\/(?:.|\r|\t)*?(\n|$))|(?:\/\*(?:.|\n|\r|\t)*?(?:\*\/|$))
$code= preg_replace("/(\"(?:[^\"\\\\]*(?:\\\\\\\\)*(?:\\\\\"?)?)*(?:\"|$))|(\'(?:[^\'\\\\]*(?:\\\\\\\\)*(?:\\\\\'?)?)*(?:\'|$))|(?:\/\/(?:.|\r|\t)*?(\n|$))|(?:\/\*(?:.|\n|\r|\t)*?(?:\*\/|$))/s", "$1$2$3", $code);
// remove line return, empty line and tabulation
$code= preg_replace('/(( |\t|\r)*\n( |\t)*)+/s', " ", $code);
// add line break before "else" otherwise navigators can't manage to parse the file
$code= preg_replace('/(\b(else)\b)/', "\n$1", $code);
// remove unnecessary spaces
$code= preg_replace('/( |\t|\r)*(;|\{|\}|=|==|\-|\+|,|\(|\)|\|\||&\&|\:)( |\t|\r)*/', "$2", $code);
}
}
function get_css_content($end_uri){
$code=$this->get_content($end_uri);
// remove comments
$code= preg_replace("/(?:\/\*(?:.|\n|\r|\t)*?(?:\*\/|$))/s", "", $code);
// remove spaces
$code= preg_replace('/(( |\t|\r)*\n( |\t)*)+/s', "", $code);
// remove spaces
$code= preg_replace('/( |\t|\r)?(\:|,|\{|\})( |\t|\r)+/', "$2", $code);
$this->prepare_string_for_quotes($code);
return $code;
}
function get_html_content($end_uri){
$code=$this->get_content($end_uri);
//$code= preg_replace('/(\"(?:\\\"|[^\"])*(?:\"|$))|' . "(\'(?:\\\'|[^\'])*(?:\'|$))|(?:\/\/(?:.|\r|\t)*?(\n|$))|(?:\/\*(?:.|\n|\r|\t)*?(?:\*\/|$))/s", "$1$2$3", $code);
$code= preg_replace('/(( |\t|\r)*\n( |\t)*)+/s', " ", $code);
$this->prepare_string_for_quotes($code);
return $code;
}
function prepare_string_for_quotes(&$str){
// prepare the code to be putted into quotes
/*$pattern= array("/(\\\\)?\"/", '/\\\n/' , '/\\\r/' , "/(\r?\n)/");
$replace= array('$1$1\\"', '\\\\\\n', '\\\\\\r' , '\\\n"$1+"');*/
$pattern= array("/(\\\\)?\"/", '/\\\n/' , '/\\\r/' , "/(\r?\n)/");
if($this->param['compress'])
$replace= array('$1$1\\"', '\\\\\\n', '\\\\\\r' , '\n');
else
$replace= array('$1$1\\"', '\\\\\\n', '\\\\\\r' , "\\n\"\n+\"");
$str= preg_replace($pattern, $replace, $str);
}
function replace_scripts($var, $param1, $param2)
{
$this->$var=stripslashes($param2);
return $param1."[];";
}
/* for php version that have not thoses functions */
function file_get_contents($file)
{
$fd = fopen($file, 'rb');
$content = fread($fd, filesize($file));
fclose($fd);
$this->file_loaded_size+= strlen($content);
return $content;
}
function file_put_contents($file, &$content, $mtime=-1)
{
if($mtime==-1)
$mtime=time();
$fp = @fopen($file, "wb");
if ($fp) {
fwrite($fp, $content);
fclose($fp);
touch($file, $mtime);
return true;
}
return false;
}
function get_microtime()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
}
?>
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -1,337 +0,0 @@
/****
* This page contains some general usefull functions for javascript
*
****/
// need to redefine this functiondue to IE problem
function getAttribute( elm, aName ) {
var aValue,taName,i;
try{
aValue = elm.getAttribute( aName );
}catch(exept){}
if( ! aValue ){
for( i = 0; i < elm.attributes.length; i ++ ) {
taName = elm.attributes[i] .name.toLowerCase();
if( taName == aName ) {
aValue = elm.attributes[i] .value;
return aValue;
}
}
}
return aValue;
};
// need to redefine this function due to IE problem
function setAttribute( elm, attr, val ) {
if(attr=="class"){
elm.setAttribute("className", val);
elm.setAttribute("class", val);
}else{
elm.setAttribute(attr, val);
}
};
/* return a child element
elem: element we are searching in
elem_type: type of the eleemnt we are searching (DIV, A, etc...)
elem_attribute: attribute of the searched element that must match
elem_attribute_match: value that elem_attribute must match
option: "all" if must return an array of all children, otherwise return the first match element
depth: depth of search (-1 or no set => unlimited)
*/
function getChildren(elem, elem_type, elem_attribute, elem_attribute_match, option, depth)
{
if(!option)
var option="single";
if(!depth)
var depth=-1;
if(elem){
var children= elem.childNodes;
var result=null;
var results= [];
for (var x=0;x<children.length;x++) {
strTagName = new String(children[x].tagName);
children_class="?";
if(strTagName!= "undefined"){
child_attribute= getAttribute(children[x],elem_attribute);
if((strTagName.toLowerCase()==elem_type.toLowerCase() || elem_type=="") && (elem_attribute=="" || child_attribute==elem_attribute_match)){
if(option=="all"){
results.push(children[x]);
}else{
return children[x];
}
}
if(depth!=0){
result=getChildren(children[x], elem_type, elem_attribute, elem_attribute_match, option, depth-1);
if(option=="all"){
if(result.length>0){
results= results.concat(result);
}
}else if(result!=null){
return result;
}
}
}
}
if(option=="all")
return results;
}
return null;
};
function isChildOf(elem, parent){
if(elem){
if(elem==parent)
return true;
while(elem.parentNode != 'undefined'){
return isChildOf(elem.parentNode, parent);
}
}
return false;
};
function getMouseX(e){
if(e!=null && typeof(e.pageX)!="undefined"){
return e.pageX;
}else{
return (e!=null?e.x:event.x)+ document.documentElement.scrollLeft;
}
};
function getMouseY(e){
if(e!=null && typeof(e.pageY)!="undefined"){
return e.pageY;
}else{
return (e!=null?e.y:event.y)+ document.documentElement.scrollTop;
}
};
function calculeOffsetLeft(r){
return calculeOffset(r,"offsetLeft")
};
function calculeOffsetTop(r){
return calculeOffset(r,"offsetTop")
};
function calculeOffset(element,attr){
var offset=0;
while(element){
offset+=element[attr];
element=element.offsetParent
}
return offset;
};
/** return the computed style
* @param: elem: the reference to the element
* @param: prop: the name of the css property
*/
function get_css_property(elem, prop)
{
if(document.defaultView)
{
return document.defaultView.getComputedStyle(elem, null).getPropertyValue(prop);
}
else if(elem.currentStyle)
{
var prop = prop.replace(/-\D/gi, function(sMatch)
{
return sMatch.charAt(sMatch.length - 1).toUpperCase();
});
return elem.currentStyle[prop];
}
else return null;
}
/****
* Moving an element
***/
var _mCE; // currently moving element
/* allow to move an element in a window
e: the event
id: the id of the element
frame: the frame of the element
ex of use:
in html: <img id='move_area_search_replace' onmousedown='return parent.start_move_element(event,"area_search_replace", parent.frames["this_frame_id"]);' .../>
or
in javascript: document.getElementById("my_div").onmousedown= start_move_element
*/
function start_move_element(e, id, frame){
var elem_id=(e.target || e.srcElement).id;
if(id)
elem_id=id;
if(!frame)
frame=window;
if(frame.event)
e=frame.event;
_mCE= frame.document.getElementById(elem_id);
_mCE.frame=frame;
frame.document.onmousemove= move_element;
frame.document.onmouseup= end_move_element;
/*_mCE.onmousemove= move_element;
_mCE.onmouseup= end_move_element;*/
//alert(_mCE.frame.document.body.offsetHeight);
mouse_x= getMouseX(e);
mouse_y= getMouseY(e);
//window.status=frame+ " elem: "+elem_id+" elem: "+ _mCE + " mouse_x: "+mouse_x;
_mCE.start_pos_x = mouse_x - (_mCE.style.left.replace("px","") || calculeOffsetLeft(_mCE));
_mCE.start_pos_y = mouse_y - (_mCE.style.top.replace("px","") || calculeOffsetTop(_mCE));
return false;
};
function end_move_element(e){
_mCE.frame.document.onmousemove= "";
_mCE.frame.document.onmouseup= "";
_mCE=null;
};
function move_element(e){
var newTop,newLeft,maxLeft;
if( _mCE.frame && _mCE.frame.event )
e=_mCE.frame.event;
newTop = getMouseY(e) - _mCE.start_pos_y;
newLeft = getMouseX(e) - _mCE.start_pos_x;
maxLeft = _mCE.frame.document.body.offsetWidth- _mCE.offsetWidth;
max_top = _mCE.frame.document.body.offsetHeight- _mCE.offsetHeight;
newTop = Math.min(Math.max(0, newTop), max_top);
newLeft = Math.min(Math.max(0, newLeft), maxLeft);
_mCE.style.top = newTop+"px";
_mCE.style.left = newLeft+"px";
return false;
};
/***
* Managing a textarea (this part need the navigator infos from editAreaLoader
***/
var nav= editAreaLoader.nav;
// allow to get infos on the selection: array(start, end)
function getSelectionRange(textarea){
return {"start": textarea.selectionStart, "end": textarea.selectionEnd};
};
// allow to set the selection
function setSelectionRange(t, start, end){
t.focus();
start = Math.max(0, Math.min(t.value.length, start));
end = Math.max(start, Math.min(t.value.length, end));
if( nav.isOpera && nav.isOpera < 9.6 ){ // Opera bug when moving selection start and selection end
t.selectionEnd = 1;
t.selectionStart = 0;
t.selectionEnd = 1;
t.selectionStart = 0;
}
t.selectionStart = start;
t.selectionEnd = end;
//textarea.setSelectionRange(start, end);
if(nav.isIE)
set_IE_selection(t);
};
// set IE position in Firefox mode (textarea.selectionStart and textarea.selectionEnd). should work as a repeated task
function get_IE_selection(t){
var d=document,div,range,stored_range,elem,scrollTop,relative_top,line_start,line_nb,range_start,range_end,tab;
if(t && t.focused)
{
if(!t.ea_line_height)
{ // calculate the lineHeight
div= d.createElement("div");
div.style.fontFamily= get_css_property(t, "font-family");
div.style.fontSize= get_css_property(t, "font-size");
div.style.visibility= "hidden";
div.innerHTML="0";
d.body.appendChild(div);
t.ea_line_height= div.offsetHeight;
d.body.removeChild(div);
}
//t.focus();
range = d.selection.createRange();
try
{
stored_range = range.duplicate();
stored_range.moveToElementText( t );
stored_range.setEndPoint( 'EndToEnd', range );
if(stored_range.parentElement() == t){
// the range don't take care of empty lines in the end of the selection
elem = t;
scrollTop = 0;
while(elem.parentNode){
scrollTop+= elem.scrollTop;
elem = elem.parentNode;
}
// var scrollTop= t.scrollTop + document.body.scrollTop;
// var relative_top= range.offsetTop - calculeOffsetTop(t) + scrollTop;
relative_top= range.offsetTop - calculeOffsetTop(t)+ scrollTop;
// alert("rangeoffset: "+ range.offsetTop +"\ncalcoffsetTop: "+ calculeOffsetTop(t) +"\nrelativeTop: "+ relative_top);
line_start = Math.round((relative_top / t.ea_line_height) +1);
line_nb = Math.round(range.boundingHeight / t.ea_line_height);
range_start = stored_range.text.length - range.text.length;
tab = t.value.substr(0, range_start).split("\n");
range_start += (line_start - tab.length)*2; // add missing empty lines to the selection
t.selectionStart = range_start;
range_end = t.selectionStart + range.text.length;
tab = t.value.substr(0, range_start + range.text.length).split("\n");
range_end += (line_start + line_nb - 1 - tab.length)*2;
t.selectionEnd = range_end;
}
}
catch(e){}
}
if( t && t.id )
{
setTimeout("get_IE_selection(document.getElementById('"+ t.id +"'));", 50);
}
};
function IE_textarea_focus(){
event.srcElement.focused= true;
}
function IE_textarea_blur(){
event.srcElement.focused= false;
}
// select the text for IE (take into account the \r difference)
function set_IE_selection( t ){
var nbLineStart,nbLineStart,nbLineEnd,range;
if(!window.closed){
nbLineStart=t.value.substr(0, t.selectionStart).split("\n").length - 1;
nbLineEnd=t.value.substr(0, t.selectionEnd).split("\n").length - 1;
try
{
range = document.selection.createRange();
range.moveToElementText( t );
range.setEndPoint( 'EndToStart', range );
range.moveStart('character', t.selectionStart - nbLineStart);
range.moveEnd('character', t.selectionEnd - nbLineEnd - (t.selectionStart - nbLineStart) );
range.select();
}
catch(e){}
}
};
editAreaLoader.waiting_loading["elements_functions.js"]= "loaded";
@@ -1,408 +0,0 @@
// change_to: "on" or "off"
EditArea.prototype.change_highlight= function(change_to){
if(this.settings["syntax"].length==0 && change_to==false){
this.switchClassSticky(_$("highlight"), 'editAreaButtonDisabled', true);
this.switchClassSticky(_$("reset_highlight"), 'editAreaButtonDisabled', true);
return false;
}
if(this.do_highlight==change_to)
return false;
this.getIESelection();
var pos_start= this.textarea.selectionStart;
var pos_end= this.textarea.selectionEnd;
if(this.do_highlight===true || change_to==false)
this.disable_highlight();
else
this.enable_highlight();
this.textarea.focus();
this.textarea.selectionStart = pos_start;
this.textarea.selectionEnd = pos_end;
this.setIESelection();
};
EditArea.prototype.disable_highlight= function(displayOnly){
var t= this, a=t.textarea, new_Obj, old_class, new_class;
t.selection_field.innerHTML="";
t.selection_field_text.innerHTML="";
t.content_highlight.style.visibility="hidden";
// replacing the node is far more faster than deleting it's content in firefox
new_Obj= t.content_highlight.cloneNode(false);
new_Obj.innerHTML= "";
t.content_highlight.parentNode.insertBefore(new_Obj, t.content_highlight);
t.content_highlight.parentNode.removeChild(t.content_highlight);
t.content_highlight= new_Obj;
old_class= parent.getAttribute( a,"class" );
if(old_class){
new_class= old_class.replace( "hidden","" );
parent.setAttribute( a, "class", new_class );
}
a.style.backgroundColor="transparent"; // needed in order to see the bracket finders
//var icon= document.getElementById("highlight");
//setAttribute(icon, "class", getAttribute(icon, "class").replace(/ selected/g, "") );
//t.restoreClass(icon);
//t.switchClass(icon,'editAreaButtonNormal');
t.switchClassSticky(_$("highlight"), 'editAreaButtonNormal', true);
t.switchClassSticky(_$("reset_highlight"), 'editAreaButtonDisabled', true);
t.do_highlight=false;
t.switchClassSticky(_$("change_smooth_selection"), 'editAreaButtonSelected', true);
if(typeof(t.smooth_selection_before_highlight)!="undefined" && t.smooth_selection_before_highlight===false){
t.change_smooth_selection_mode(false);
}
// this.textarea.style.backgroundColor="#FFFFFF";
};
EditArea.prototype.enable_highlight= function(){
var t=this, a=t.textarea, new_class;
t.show_waiting_screen();
t.content_highlight.style.visibility="visible";
new_class =parent.getAttribute(a,"class")+" hidden";
parent.setAttribute( a, "class", new_class );
// IE can't manage mouse click outside text range without this
if( t.isIE )
a.style.backgroundColor="#FFFFFF";
t.switchClassSticky(_$("highlight"), 'editAreaButtonSelected', false);
t.switchClassSticky(_$("reset_highlight"), 'editAreaButtonNormal', false);
t.smooth_selection_before_highlight=t.smooth_selection;
if(!t.smooth_selection)
t.change_smooth_selection_mode(true);
t.switchClassSticky(_$("change_smooth_selection"), 'editAreaButtonDisabled', true);
t.do_highlight=true;
t.resync_highlight();
t.hide_waiting_screen();
};
/**
* Ask to update highlighted text
* @param Array infos - Array of datas returned by EditArea.get_selection_infos()
*/
EditArea.prototype.maj_highlight= function(infos){
// for speed mesure
var debug_opti="",tps_start= new Date().getTime(), tps_middle_opti=new Date().getTime();
var t=this, hightlighted_text, updated_highlight;
var textToHighlight=infos["full_text"], doSyntaxOpti = false, doHtmlOpti = false, stay_begin="", stay_end="", trace_new , trace_last;
if(t.last_text_to_highlight==infos["full_text"] && t.resync_highlight!==true)
return;
// OPTIMISATION: will search to update only changed lines
if(t.reload_highlight===true){
t.reload_highlight=false;
}else if(textToHighlight.length==0){
textToHighlight="\n ";
}else{
// get text change datas
changes = t.checkTextEvolution(t.last_text_to_highlight,textToHighlight);
// check if it can only reparse the changed text
trace_new = t.get_syntax_trace(changes.newTextLine).replace(/\r/g, '');
trace_last = t.get_syntax_trace(changes.lastTextLine).replace(/\r/g, '');
doSyntaxOpti = ( trace_new == trace_last );
// check if the difference comes only from a new line created
// => we have to remember that the editor can automaticaly add tabulation or space after the new line)
if( !doSyntaxOpti && trace_new == "\n"+trace_last && /^[ \t\s]*\n[ \t\s]*$/.test( changes.newText.replace(/\r/g, '') ) && changes.lastText =="" )
{
doSyntaxOpti = true;
}
// we do the syntax optimisation
if( doSyntaxOpti ){
tps_middle_opti=new Date().getTime();
stay_begin= t.last_hightlighted_text.split("\n").slice(0, changes.lineStart).join("\n");
if(changes.lineStart>0)
stay_begin+= "\n";
stay_end= t.last_hightlighted_text.split("\n").slice(changes.lineLastEnd+1).join("\n");
if(stay_end.length>0)
stay_end= "\n"+stay_end;
// Final check to see that we're not in the middle of span tags
if( stay_begin.split('<span').length != stay_begin.split('</span').length
|| stay_end.split('<span').length != stay_end.split('</span').length )
{
doSyntaxOpti = false;
stay_end = '';
stay_begin = '';
}
else
{
if(stay_begin.length==0 && changes.posLastEnd==-1)
changes.newTextLine+="\n";
textToHighlight=changes.newTextLine;
}
}
if(t.settings["debug"]){
var ch =changes;
debug_opti= ( doSyntaxOpti?"Optimisation": "No optimisation" )
+" start: "+ch.posStart +"("+ch.lineStart+")"
+" end_new: "+ ch.posNewEnd+"("+ch.lineNewEnd+")"
+" end_last: "+ ch.posLastEnd+"("+ch.lineLastEnd+")"
+"\nchanged_text: "+ch.newText+" => trace: "+trace_new
+"\nchanged_last_text: "+ch.lastText+" => trace: "+trace_last
//debug_opti+= "\nchanged: "+ infos["full_text"].substring(ch.posStart, ch.posNewEnd);
+ "\nchanged_line: "+ch.newTextLine
+ "\nlast_changed_line: "+ch.lastTextLine
+"\nstay_begin: "+ stay_begin.slice(-100)
+"\nstay_end: "+ stay_end.substr( 0, 100 );
//debug_opti="start: "+stay_begin_len+ "("+nb_line_start_unchanged+") end: "+ (stay_end_len)+ "("+(splited.length-nb_line_end_unchanged)+") ";
//debug_opti+="changed: "+ textToHighlight.substring(stay_begin_len, textToHighlight.length-stay_end_len)+" \n";
//debug_opti+="changed: "+ stay_begin.substr(stay_begin.length-200)+ "----------"+ textToHighlight+"------------------"+ stay_end.substr(0,200) +"\n";
+"\n";
}
// END OPTIMISATION
}
tps_end_opti = new Date().getTime();
// apply highlight
updated_highlight = t.colorize_text(textToHighlight);
tpsAfterReg = new Date().getTime();
/***
* see if we can optimize for updating only the required part of the HTML code
*
* The goal here will be to find the text node concerned by the modification and to update it
*/
//-------------------------------------------
// disable latest optimization tricks (introduced in 0.8.1 and removed in 0.8.2), TODO: check for another try later
doSyntaxOpti = doHtmlOpti = false;
if( doSyntaxOpti )
{
try
{
var replacedBloc, i, nbStart = '', nbEnd = '', newHtml, lengthOld, lengthNew;
replacedBloc = t.last_hightlighted_text.substring( stay_begin.length, t.last_hightlighted_text.length - stay_end.length );
lengthOld = replacedBloc.length;
lengthNew = updated_highlight.length;
// find the identical caracters at the beginning
for( i=0; i < lengthOld && i < lengthNew && replacedBloc.charAt(i) == updated_highlight.charAt(i) ; i++ )
{
}
nbStart = i;
// find the identical caracters at the end
for( i=0; i + nbStart < lengthOld && i + nbStart < lengthNew && replacedBloc.charAt(lengthOld-i-1) == updated_highlight.charAt(lengthNew-i-1) ; i++ )
{
}
nbEnd = i;
//console.log( nbStart, nbEnd, replacedBloc, updated_highlight );
// get the changes
lastHtml = replacedBloc.substring( nbStart, lengthOld - nbEnd );
newHtml = updated_highlight.substring( nbStart, lengthNew - nbEnd );
// We can do the optimisation only if we havn't touch to span elements
if( newHtml.indexOf('<span') == -1 && newHtml.indexOf('</span') == -1
&& lastHtml.indexOf('<span') == -1 && lastHtml.indexOf('</span') == -1 )
{
var beginStr, nbOpendedSpan, nbClosedSpan, nbUnchangedChars, span, textNode;
doHtmlOpti = true;
beginStr = t.last_hightlighted_text.substr( 0, stay_begin.length + nbStart );
// fix special chars
newHtml = newHtml.replace( /&lt;/g, '<').replace( /&gt;/g, '>').replace( /&amp;/g, '&');
nbOpendedSpan = beginStr.split('<span').length - 1;
nbClosedSpan = beginStr.split('</span').length - 1;
// retrieve the previously opened span (Add 1 for the first level span?)
span = t.content_highlight.getElementsByTagName('span')[ nbOpendedSpan ];
//--------[
// get the textNode to update
// if we're inside a span, we'll take the one that is opened (can be a parent of the current span)
parentSpan = span;
maxStartOffset = maxEndOffset = 0;
// it will be in the child of the root node
if( nbOpendedSpan == nbClosedSpan )
{
while( parentSpan.parentNode != t.content_highlight && parentSpan.parentNode.tagName != 'PRE' )
{
parentSpan = parentSpan.parentNode;
}
}
// get the last opened span
else
{
maxStartOffset = maxEndOffset = beginStr.length + 1;
// move to parent node for each closed span found after the lastest open span
nbClosed = beginStr.substr( Math.max( 0, beginStr.lastIndexOf( '<span', maxStartOffset - 1 ) ) ).split('</span').length - 1;
while( nbClosed > 0 )
{
nbClosed--;
parentSpan = parentSpan.parentNode;
}
// find the position of the last opended tag
while( parentSpan.parentNode != t.content_highlight && parentSpan.parentNode.tagName != 'PRE' && ( tmpMaxStartOffset = Math.max( 0, beginStr.lastIndexOf( '<span', maxStartOffset - 1 ) ) ) < ( tmpMaxEndOffset = Math.max( 0, beginStr.lastIndexOf( '</span', maxEndOffset - 1 ) ) ) )
{
maxStartOffset = tmpMaxStartOffset;
maxEndOffset = tmpMaxEndOffset;
}
}
// Note: maxEndOffset is no more used but maxStartOffset will be used
if( parentSpan.parentNode == t.content_highlight || parentSpan.parentNode.tagName == 'PRE' )
{
maxStartOffset = Math.max( 0, beginStr.indexOf( '<span' ) );
}
// find the matching text node (this will be one that will be at the end of the beginStr
if( maxStartOffset == beginStr.length )
{
nbSubSpanBefore = 0;
}
else
{
lastEndPos = Math.max( 0, beginStr.lastIndexOf( '>', maxStartOffset ) );
// count the number of sub spans
nbSubSpanBefore = beginStr.substr( lastEndPos ).split('<span').length-1;
}
// there is no sub-span before
if( nbSubSpanBefore == 0 )
{
textNode = parentSpan.firstChild;
}
// we need to find where is the text node modified
else
{
// take the last direct child (no sub-child)
lastSubSpan = parentSpan.getElementsByTagName('span')[ nbSubSpanBefore - 1 ];
while( lastSubSpan.parentNode != parentSpan )
{
lastSubSpan = lastSubSpan.parentNode;
}
// associate to next text node following the last sub span
if( lastSubSpan.nextSibling == null || lastSubSpan.nextSibling.nodeType != 3 )
{
textNode = document.createTextNode('');
lastSubSpan.parentNode.insertBefore( textNode, lastSubSpan.nextSibling );
}
else
{
textNode = lastSubSpan.nextSibling;
}
}
//--------]
//--------[
// update the textNode content
// number of caracters after the last opened of closed span
//nbUnchangedChars = ( lastIndex = beginStr.lastIndexOf( '>' ) ) == -1 ? beginStr.length : beginStr.length - ( lastIndex + 1 );
//nbUnchangedChars = ? beginStr.length : beginStr.substr( lastIndex + 1 ).replace( /&lt;/g, '<').replace( /&gt;/g, '>').replace( /&amp;/g, '&').length;
if( ( lastIndex = beginStr.lastIndexOf( '>' ) ) == -1 )
{
nbUnchangedChars = beginStr.length;
}
else
{
nbUnchangedChars = beginStr.substr( lastIndex + 1 ).replace( /&lt;/g, '<').replace( /&gt;/g, '>').replace( /&amp;/g, '&').length;
//nbUnchangedChars += beginStr.substr( ).replace( /&/g, '&amp;').replace( /</g, '&lt;').replace( />/g, '&gt;').length - beginStr.length;
}
//alert( nbUnchangedChars );
// console.log( span, textNode, nbOpendedSpan,nbClosedSpan, span.nextSibling, textNode.length, nbUnchangedChars, lastHtml, lastHtml.length, newHtml, newHtml.length );
// alert( textNode.parentNode.className +'-'+ textNode.parentNode.tagName+"\n"+ textNode.data +"\n"+ nbUnchangedChars +"\n"+ lastHtml.length +"\n"+ newHtml +"\n"+ newHtml.length );
// console.log( nbUnchangedChars, lastIndex, beginStr.length, beginStr.replace(/&/g, '&amp;'), lastHtml.length, '|', newHtml.replace( /\t/g, 't').replace( /\n/g, 'n').replace( /\r/g, 'r'), lastHtml.replace( /\t/g, 't').replace( /\n/g, 'n').replace( /\r/, 'r') );
// console.log( textNode.data.replace(/&/g, '&amp;') );
// IE only manage \r for cariage return in textNode and not \n or \r\n
if( t.isIE )
{
nbUnchangedChars -= ( beginStr.substr( beginStr.length - nbUnchangedChars ).split("\n").length - 1 );
//alert( textNode.data.replace(/\r/g, '_r').replace(/\n/g, '_n'));
textNode.replaceData( nbUnchangedChars, lastHtml.replace(/\n/g, '').length, newHtml.replace(/\n/g, '') );
}
else
{
textNode.replaceData( nbUnchangedChars, lastHtml.length, newHtml );
}
//--------]
}
}
// an exception shouldn't occured but if replaceData failed at least it won't break everything
catch( e )
{
// throw e;
// console.log( e );
doHtmlOpti = false;
}
}
/*** END HTML update's optimisation ***/
// end test
// console.log( (TPS6-TPS5), (TPS5-TPS4), (TPS4-TPS3), (TPS3-TPS2), (TPS2-TPS1), _CPT );
// get the new highlight content
tpsAfterOpti2 = new Date().getTime();
hightlighted_text = stay_begin + updated_highlight + stay_end;
if( !doHtmlOpti )
{
// update the content of the highlight div by first updating a clone node (as there is no display in the same time for t node it's quite faster (5*))
var new_Obj= t.content_highlight.cloneNode(false);
if( ( t.isIE && t.isIE < 8 ) || ( t.isOpera && t.isOpera < 9.6 ) )
new_Obj.innerHTML= "<pre><span class='"+ t.settings["syntax"] +"'>" + hightlighted_text + "</span></pre>";
else
new_Obj.innerHTML= "<span class='"+ t.settings["syntax"] +"'>"+ hightlighted_text +"</span>";
t.content_highlight.parentNode.replaceChild(new_Obj, t.content_highlight);
t.content_highlight= new_Obj;
}
t.last_text_to_highlight= infos["full_text"];
t.last_hightlighted_text= hightlighted_text;
tps3=new Date().getTime();
if(t.settings["debug"]){
//lineNumber=tab_text.length;
//t.debug.value+=" \nNB char: "+_$("src").value.length+" Nb line: "+ lineNumber;
t.debug.value= "Tps optimisation "+(tps_end_opti-tps_start)
+" | tps reg exp: "+ (tpsAfterReg-tps_end_opti)
+" | tps opti HTML : "+ (tpsAfterOpti2-tpsAfterReg) + ' '+ ( doHtmlOpti ? 'yes' : 'no' )
+" | tps update highlight content: "+ (tps3-tpsAfterOpti2)
+" | tpsTotal: "+ (tps3-tps_start)
+ "("+tps3+")\n"+ debug_opti;
// t.debug.value+= "highlight\n"+hightlighted_text;*/
}
};
EditArea.prototype.resync_highlight= function(reload_now){
this.reload_highlight=true;
this.last_text_to_highlight="";
this.focus();
if(reload_now)
this.check_line_selection(false);
};
Binary file not shown.

Before

Width:  |  Height:  |  Size: 359 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 198 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 295 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 256 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 257 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 170 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 147 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 825 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 169 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 168 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 285 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 191 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 175 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 951 B

@@ -1,146 +0,0 @@
var EA_keys = {8:"Retour arriere",9:"Tabulation",12:"Milieu (pave numerique)",13:"Entrer",16:"Shift",17:"Ctrl",18:"Alt",19:"Pause",20:"Verr Maj",27:"Esc",32:"Space",33:"Page up",34:"Page down",35:"End",36:"Begin",37:"Left",38:"Up",39:"Right",40:"Down",44:"Impr ecran",45:"Inser",46:"Suppr",91:"Menu Demarrer Windows / touche pomme Mac",92:"Menu Demarrer Windows",93:"Menu contextuel Windows",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"Verr Num",145:"Arret defil"};
function keyDown(e){
if(!e){ // if IE
e=event;
}
// send the event to the plugins
for(var i in editArea.plugins){
if(typeof(editArea.plugins[i].onkeydown)=="function"){
if(editArea.plugins[i].onkeydown(e)===false){ // stop propaging
if(editArea.isIE)
e.keyCode=0;
return false;
}
}
}
var target_id=(e.target || e.srcElement).id;
var use=false;
if (EA_keys[e.keyCode])
letter=EA_keys[e.keyCode];
else
letter=String.fromCharCode(e.keyCode);
var low_letter= letter.toLowerCase();
if(letter=="Page up" && !AltPressed(e) && !editArea.isOpera){
editArea.execCommand("scroll_page", {"dir": "up", "shift": ShiftPressed(e)});
use=true;
}else if(letter=="Page down" && !AltPressed(e) && !editArea.isOpera){
editArea.execCommand("scroll_page", {"dir": "down", "shift": ShiftPressed(e)});
use=true;
}else if(editArea.is_editable==false){
// do nothing but also do nothing else (allow to navigate with page up and page down)
return true;
}else if(letter=="Tabulation" && target_id=="textarea" && !CtrlPressed(e) && !AltPressed(e)){
if(ShiftPressed(e))
editArea.execCommand("invert_tab_selection");
else
editArea.execCommand("tab_selection");
use=true;
if(editArea.isOpera || (editArea.isFirefox && editArea.isMac) ) // opera && firefox mac can't cancel tabulation events...
setTimeout("editArea.execCommand('focus');", 1);
}else if(letter=="Entrer" && target_id=="textarea"){
if(editArea.press_enter())
use=true;
}else if(letter=="Entrer" && target_id=="area_search"){
editArea.execCommand("area_search");
use=true;
}else if(letter=="Esc"){
editArea.execCommand("close_all_inline_popup", e);
use=true;
}else if(CtrlPressed(e) && !AltPressed(e) && !ShiftPressed(e)){
switch(low_letter){
case "f":
editArea.execCommand("area_search");
use=true;
break;
case "r":
editArea.execCommand("area_replace");
use=true;
break;
case "q":
editArea.execCommand("close_all_inline_popup", e);
use=true;
break;
case "h":
editArea.execCommand("change_highlight");
use=true;
break;
case "g":
setTimeout("editArea.execCommand('go_to_line');", 5); // the prompt stop the return false otherwise
use=true;
break;
case "e":
editArea.execCommand("show_help");
use=true;
break;
case "z":
use=true;
editArea.execCommand("undo");
break;
case "y":
use=true;
editArea.execCommand("redo");
break;
default:
break;
}
}
// check to disable the redo possibility if the textarea content change
if(editArea.next.length > 0){
setTimeout("editArea.check_redo();", 10);
}
setTimeout("editArea.check_file_changes();", 10);
if(use){
// in case of a control that sould'nt be used by IE but that is used => THROW a javascript error that will stop key action
if(editArea.isIE)
e.keyCode=0;
return false;
}
//alert("Test: "+ letter + " ("+e.keyCode+") ALT: "+ AltPressed(e) + " CTRL "+ CtrlPressed(e) + " SHIFT "+ ShiftPressed(e));
return true;
};
// return true if Alt key is pressed
function AltPressed(e) {
if (window.event) {
return (window.event.altKey);
} else {
if(e.modifiers)
return (e.altKey || (e.modifiers % 2));
else
return e.altKey;
}
};
// return true if Ctrl key is pressed
function CtrlPressed(e) {
if (window.event) {
return (window.event.ctrlKey);
} else {
return (e.ctrlKey || (e.modifiers==2) || (e.modifiers==3) || (e.modifiers>5));
}
};
// return true if Shift key is pressed
function ShiftPressed(e) {
if (window.event) {
return (window.event.shiftKey);
} else {
return (e.shiftKey || (e.modifiers>3));
}
};
@@ -1,54 +0,0 @@
/*
* Bulgarian translation
* Author: Valentin Hristov
* Company: SOFTKIT Bulgarian
* Site: http://www.softkit-bg.com
*/
editAreaLoader.lang["bg"]={
new_document: "нов документ",
search_button: "търсене и замяна",
search_command: "търси следващия / отвори прозорец с търсачка",
search: "търсене",
replace: "замяна",
replace_command: "замяна / отвори прозорец с търсачка",
find_next: "намери следващия",
replace_all: "замени всички",
reg_exp: "реголярни изрази",
match_case: "чуствителен към регистъра",
not_found: "няма резултат.",
occurrence_replaced: "замяната е осъществена.",
search_field_empty: "Полето за търсене е празно",
restart_search_at_begin: "До края на документа. Почни с началото.",
move_popup: "премести прозореца с търсачката",
font_size: "--Размер на шрифта--",
go_to_line: "премени към реда",
go_to_line_prompt: "премени към номера на реда:",
undo: "отмени",
redo: "върни",
change_smooth_selection: "включи/изключи някой от функциите за преглед (по красиво, но повече натоварва)",
highlight: "превключване на оцветяване на синтаксиса включена/изключена",
reset_highlight: "въстанови оцветяване на синтаксиса (ако не е синхронизиран с текста)",
word_wrap: "режим на пренасяне на дълги редове",
help: "за програмата",
save: "съхрани",
load: "зареди",
line_abbr: "Стр",
char_abbr: "Стлб",
position: "Позиция",
total: "Всичко",
close_popup: "затвори прозореца",
shortcuts: "Бързи клавиши",
add_tab: "добави табулация в текста",
remove_tab: "премахни табулацията в текста",
about_notice: "Внимание: използвайте функцията оцветяване на синтаксиса само за малки текстове",
toggle: "Превключи редактор",
accesskey: "Бърз клавиш",
tab: "Tab",
shift: "Shift",
ctrl: "Ctrl",
esc: "Esc",
processing: "Зареждане...",
fullscreen: "на цял екран",
syntax_selection: "--Синтаксис--",
close_tab: "Затвори файла"
};
@@ -1,48 +0,0 @@
editAreaLoader.lang["cs"]={
new_document: "Nový dokument",
search_button: "Najdi a nahraď",
search_command: "Hledej další / otevři vyhledávací pole",
search: "Hledej",
replace: "Nahraď",
replace_command: "Nahraď / otevři vyhledávací pole",
find_next: "Najdi další",
replace_all: "Nahraď vše",
reg_exp: "platné výrazy",
match_case: "vyhodnocené výrazy",
not_found: "nenalezené.",
occurrence_replaced: "výskyty nahrazené.",
search_field_empty: "Pole vyhledávání je prázdné",
restart_search_at_begin: "Dosažen konec souboru, začínám od začátku.",
move_popup: "Přesuň vyhledávací okno",
font_size: "--Velikost textu--",
go_to_line: "Přejdi na řádek",
go_to_line_prompt: "Přejdi na řádek:",
undo: "krok zpět",
redo: "znovu",
change_smooth_selection: "Povolit nebo zakázat některé ze zobrazených funkcí (účelnější zobrazení požaduje větší zatížení procesoru)",
highlight: "Zvýrazňování syntaxe zap./vyp.",
reset_highlight: "Obnovit zvýraznění (v případě nesrovnalostí)",
word_wrap: "toggle word wrapping mode",
help: "O programu",
save: "Uložit",
load: "Otevřít",
line_abbr: "Ř.",
char_abbr: "S.",
position: "Pozice",
total: "Celkem",
close_popup: "Zavřít okno",
shortcuts: "Zkratky",
add_tab: "Přidat tabulování textu",
remove_tab: "Odtsranit tabulování textu",
about_notice: "Upozornění! Funkce zvýrazňování textu je k dispozici pouze pro malý text",
toggle: "Přepnout editor",
accesskey: "Přístupová klávesa",
tab: "Záložka",
shift: "Shift",
ctrl: "Ctrl",
esc: "Esc",
processing: "Zpracovávám ...",
fullscreen: "Celá obrazovka",
syntax_selection: "--vyber zvýrazňovač--",
close_tab: "Close file"
};
@@ -1,48 +0,0 @@
editAreaLoader.lang["de"]={
new_document: "Neues Dokument",
search_button: "Suchen und Ersetzen",
search_command: "Weitersuchen / &ouml;ffne Suchfeld",
search: "Suchen",
replace: "Ersetzen",
replace_command: "Ersetzen / &ouml;ffne Suchfeld",
find_next: "Weitersuchen",
replace_all: "Ersetze alle Treffer",
reg_exp: "regul&auml;re Ausdr&uuml;cke",
match_case: "passt auf den Begriff<br />",
not_found: "Nicht gefunden.",
occurrence_replaced: "Die Vorkommen wurden ersetzt.",
search_field_empty: "Leeres Suchfeld",
restart_search_at_begin: "Ende des zu durchsuchenden Bereiches erreicht. Es wird die Suche von Anfang an fortgesetzt.", //find a shorter translation
move_popup: "Suchfenster bewegen",
font_size: "--Schriftgr&ouml;&szlig;e--",
go_to_line: "Gehe zu Zeile",
go_to_line_prompt: "Gehe zu Zeilennummmer:",
undo: "R&uuml;ckg&auml;ngig",
redo: "Wiederherstellen",
change_smooth_selection: "Aktiviere/Deaktiviere einige Features (weniger Bildschirmnutzung aber mehr CPU-Belastung)",
highlight: "Syntax Highlighting an- und ausschalten",
reset_highlight: "Highlighting zur&uuml;cksetzen (falls mit Text nicht konform)",
word_wrap: "Toggle word wrapping mode",
help: "Info",
save: "Speichern",
load: "&Ouml;ffnen",
line_abbr: "Ln",
char_abbr: "Ch",
position: "Position",
total: "Gesamt",
close_popup: "Popup schlie&szlig;en",
shortcuts: "Shortcuts",
add_tab: "Tab zum Text hinzuf&uuml;gen",
remove_tab: "Tab aus Text entfernen",
about_notice: "Bemerkung: Syntax Highlighting ist nur f&uuml;r kurze Texte",
toggle: "Editor an- und ausschalten",
accesskey: "Accesskey",
tab: "Tab",
shift: "Shift",
ctrl: "Ctrl",
esc: "Esc",
processing: "In Bearbeitung...",
fullscreen: "Full-Screen",
syntax_selection: "--Syntax--",
close_tab: "Close file"
};
@@ -1,48 +0,0 @@
editAreaLoader.lang["dk"]={
new_document: "nyt tomt dokument",
search_button: "s&oslash;g og erstat",
search_command: "find n&aelig;ste / &aring;ben s&oslash;gefelt",
search: "s&oslash;g",
replace: "erstat",
replace_command: "erstat / &aring;ben s&oslash;gefelt",
find_next: "find n&aelig;ste",
replace_all: "erstat alle",
reg_exp: "regular expressions",
match_case: "forskel på store/sm&aring; bogstaver<br />",
not_found: "not found.",
occurrence_replaced: "occurences replaced.",
search_field_empty: "Search field empty",
restart_search_at_begin: "End of area reached. Restart at begin.",
move_popup: "flyt søgepopup",
font_size: "--Skriftstørrelse--",
go_to_line: "g&aring; til linie",
go_to_line_prompt: "gå til linienummer:",
undo: "fortryd",
redo: "gentag",
change_smooth_selection: "sl&aring; display funktioner til/fra (smartere display men mere CPU kr&aelig;vende)",
highlight: "sl&aring; syntax highlight til/fra",
reset_highlight: "nulstil highlight (hvis den er desynkroniseret fra teksten)",
word_wrap: "toggle word wrapping mode",
help: "om",
save: "gem",
load: "hent",
line_abbr: "Ln",
char_abbr: "Ch",
position: "Position",
total: "Total",
close_popup: "luk popup",
shortcuts: "Genveje",
add_tab: "tilf&oslash;j tabulation til tekst",
remove_tab: "fjern tabulation fra tekst",
about_notice: "Husk: syntax highlight funktionen b&oslash;r kun bruge til sm&aring; tekster",
toggle: "Sl&aring; editor til / fra",
accesskey: "Accesskey",
tab: "Tab",
shift: "Skift",
ctrl: "Ctrl",
esc: "Esc",
processing: "Processing...",
fullscreen: "fullscreen",
syntax_selection: "--Syntax--",
close_tab: "Close file"
};
@@ -1,48 +0,0 @@
editAreaLoader.lang["en"]={
new_document: "new empty document",
search_button: "search and replace",
search_command: "search next / open search area",
search: "search",
replace: "replace",
replace_command: "replace / open search area",
find_next: "find next",
replace_all: "replace all",
reg_exp: "regular expressions",
match_case: "match case",
not_found: "not found.",
occurrence_replaced: "occurences replaced.",
search_field_empty: "Search field empty",
restart_search_at_begin: "End of area reached. Restart at begin.",
move_popup: "move search popup",
font_size: "--Font size--",
go_to_line: "go to line",
go_to_line_prompt: "go to line number:",
undo: "undo",
redo: "redo",
change_smooth_selection: "enable/disable some display features (smarter display but more CPU charge)",
highlight: "toggle syntax highlight on/off",
reset_highlight: "reset highlight (if desyncronized from text)",
word_wrap: "toggle word wrapping mode",
help: "about",
save: "save",
load: "load",
line_abbr: "Ln",
char_abbr: "Ch",
position: "Position",
total: "Total",
close_popup: "close popup",
shortcuts: "Shortcuts",
add_tab: "add tabulation to text",
remove_tab: "remove tabulation to text",
about_notice: "Notice: syntax highlight function is only for small text",
toggle: "Toggle editor",
accesskey: "Accesskey",
tab: "Tab",
shift: "Shift",
ctrl: "Ctrl",
esc: "Esc",
processing: "Processing...",
fullscreen: "fullscreen",
syntax_selection: "--Syntax--",
close_tab: "Close file"
};
@@ -1,48 +0,0 @@
editAreaLoader.lang["eo"]={
new_document: "nova dokumento (vakigas la enhavon)",
search_button: "ser&#265;i / anstata&#365;igi",
search_command: "pluser&#265;i / malfermi la ser&#265;o-fenestron",
search: "ser&#265;i",
replace: "anstata&#365;igi",
replace_command: "anstata&#365;igi / malfermi la ser&#265;o-fenestron",
find_next: "ser&#265;i",
replace_all: "anstata&#365;igi &#265;ion",
reg_exp: "regula esprimo",
match_case: "respekti la usklecon",
not_found: "ne trovita.",
occurrence_replaced: "anstata&#365;igoj plenumitaj.",
search_field_empty: "La kampo estas malplena.",
restart_search_at_begin: "Fino de teksto &#285;isrirata, &#265;u da&#365;rigi el la komenco?",
move_popup: "movi la ser&#265;o-fenestron",
font_size: "--Tipara grando--",
go_to_line: "iri al la linio",
go_to_line_prompt: "iri al la linio numero:",
undo: "rezigni",
redo: "refari",
change_smooth_selection: "ebligi/malebligi la funkcioj de vidigo (pli bona vidigo, sed pli da &#349;ar&#285;o de la &#265;eforgano)",
highlight: "ebligi/malebligi la sintaksan kolorigon",
reset_highlight: "repravalorizi la sintaksan kolorigon (se malsinkronigon de la teksto)",
word_wrap: "toggle word wrapping mode",
help: "pri",
save: "registri",
load: "&#349;ar&#285;i",
line_abbr: "Ln",
char_abbr: "Sg",
position: "Pozicio",
total: "Sumo",
close_popup: "fermi la &#349;prucfenestron",
shortcuts: "Fulmoklavo",
add_tab: "aldoni tabon en la tekston",
remove_tab: "forigi tablon el la teksto",
about_notice: "Noto: la sintaksa kolorigo estas nur prikalkulita por mallongaj tekstoj.",
toggle: "baskuligi la redaktilon",
accesskey: "Fulmoklavo",
tab: "Tab",
shift: "Maj",
ctrl: "Ktrl",
esc: "Esk",
processing: "&#349;argante...",
fullscreen: "plenekrane",
syntax_selection: "--Sintakso--",
close_tab: "Fermi la dosieron"
};
@@ -1,48 +0,0 @@
editAreaLoader.lang["es"]={
new_document: "nuevo documento vacío",
search_button: "buscar y reemplazar",
search_command: "buscar siguiente / abrir área de búsqueda",
search: "buscar",
replace: "reemplazar",
replace_command: "reemplazar / abrir área de búsqueda",
find_next: "encontrar siguiente",
replace_all: "reemplazar todos",
reg_exp: "expresiones regulares",
match_case: "coincidir capitalización",
not_found: "no encontrado.",
occurrence_replaced: "ocurrencias reemplazadas.",
search_field_empty: "Campo de búsqueda vacío",
restart_search_at_begin: "Se ha llegado al final del área. Se va a seguir desde el principio.",
move_popup: "mover la ventana de búsqueda",
font_size: "--Tamaño de la fuente--",
go_to_line: "ir a la línea",
go_to_line_prompt: "ir a la línea número:",
undo: "deshacer",
redo: "rehacer",
change_smooth_selection: "activar/desactivar algunas características de visualización (visualización más inteligente pero más carga de CPU)",
highlight: "intercambiar resaltado de sintaxis",
reset_highlight: "reinicializar resaltado (si no esta sincronizado con el texto)",
word_wrap: "toggle word wrapping mode",
help: "acerca",
save: "guardar",
load: "cargar",
line_abbr: "Ln",
char_abbr: "Ch",
position: "Posición",
total: "Total",
close_popup: "recuadro de cierre",
shortcuts: "Atajos",
add_tab: "añadir tabulado al texto",
remove_tab: "borrar tabulado del texto",
about_notice: "Aviso: el resaltado de sintaxis sólo funciona para texto pequeño",
toggle: "Cambiar editor",
accesskey: "Tecla de acceso",
tab: "Tab",
shift: "Mayúsc",
ctrl: "Ctrl",
esc: "Esc",
processing: "Procesando...",
fullscreen: "pantalla completa",
syntax_selection: "--Syntax--",
close_tab: "Close file"
};
@@ -1,48 +0,0 @@
editAreaLoader.lang["fi"]={
new_document: "uusi tyhjä dokumentti",
search_button: "etsi ja korvaa",
search_command: "etsi seuraava / avaa etsintävalikko",
search: "etsi",
replace: "korvaa",
replace_command: "korvaa / avaa etsintävalikko",
find_next: "etsi seuraava",
replace_all: "korvaa kaikki",
reg_exp: "säännölliset lausekkeet",
match_case: "täsmää kirjainkokoon",
not_found: "ei löytynyt.",
occurrence_replaced: "esiintymää korvattu.",
search_field_empty: "Haettava merkkijono on tyhjä",
restart_search_at_begin: "Alueen loppu saavutettiin. Aloitetaan alusta.",
move_popup: "siirrä etsintävalikkoa",
font_size: "--Fontin koko--",
go_to_line: "siirry riville",
go_to_line_prompt: "mene riville:",
undo: "peruuta",
redo: "tee uudelleen",
change_smooth_selection: "kytke/sammuta joitakin näyttötoimintoja (Älykkäämpi toiminta, mutta suurempi CPU kuormitus)",
highlight: "kytke syntaksikorostus päälle/pois",
reset_highlight: "resetoi syntaksikorostus (jos teksti ei ole synkassa korostuksen kanssa)",
word_wrap: "toggle word wrapping mode",
help: "tietoja",
save: "tallenna",
load: "lataa",
line_abbr: "Rv",
char_abbr: "Pos",
position: "Paikka",
total: "Yhteensä",
close_popup: "sulje valikko",
shortcuts: "Pikatoiminnot",
add_tab: "lisää sisennys tekstiin",
remove_tab: "poista sisennys tekstistä",
about_notice: "Huomautus: syntaksinkorostus toimii vain pienelle tekstille",
toggle: "Kytke editori",
accesskey: "Pikanäppäin",
tab: "Tab",
shift: "Shift",
ctrl: "Ctrl",
esc: "Esc",
processing: "Odota...",
fullscreen: "koko ruutu",
syntax_selection: "--Syntaksi--",
close_tab: "Sulje tiedosto"
};
@@ -1,48 +0,0 @@
editAreaLoader.lang["fr"]={
new_document: "nouveau document (efface le contenu)",
search_button: "rechercher / remplacer",
search_command: "rechercher suivant / ouvrir la fen&ecirc;tre de recherche",
search: "rechercher",
replace: "remplacer",
replace_command: "remplacer / ouvrir la fen&ecirc;tre de recherche",
find_next: "rechercher",
replace_all: "tout remplacer",
reg_exp: "expr. r&eacute;guli&egrave;re",
match_case: "respecter la casse",
not_found: "pas trouv&eacute;.",
occurrence_replaced: "remplacements &eacute;ffectu&eacute;s.",
search_field_empty: "Le champ de recherche est vide.",
restart_search_at_begin: "Fin du texte atteint, poursuite au d&eacute;but.",
move_popup: "d&eacute;placer la fen&ecirc;tre de recherche",
font_size: "--Taille police--",
go_to_line: "aller &agrave; la ligne",
go_to_line_prompt: "aller a la ligne numero:",
undo: "annuler",
redo: "refaire",
change_smooth_selection: "activer/d&eacute;sactiver des fonctions d'affichage (meilleur affichage mais plus de charge processeur)",
highlight: "activer/d&eacute;sactiver la coloration syntaxique",
reset_highlight: "r&eacute;initialiser la coloration syntaxique (si d&eacute;syncronis&eacute;e du texte)",
word_wrap: "activer/d&eacute;sactiver les retours &agrave; la ligne automatiques",
help: "&agrave; propos",
save: "sauvegarder",
load: "charger",
line_abbr: "Ln",
char_abbr: "Ch",
position: "Position",
total: "Total",
close_popup: "fermer le popup",
shortcuts: "Racourcis clavier",
add_tab: "ajouter une tabulation dans le texte",
remove_tab: "retirer une tabulation dans le texte",
about_notice: "Note: la coloration syntaxique n'est pr&eacute;vue que pour de courts textes.",
toggle: "basculer l'&eacute;diteur",
accesskey: "Accesskey",
tab: "Tab",
shift: "Maj",
ctrl: "Ctrl",
esc: "Esc",
processing: "chargement...",
fullscreen: "plein &eacute;cran",
syntax_selection: "--Syntaxe--",
close_tab: "Fermer le fichier"
};
@@ -1,48 +0,0 @@
editAreaLoader.lang["hr"]={
new_document: "Novi dokument",
search_button: "Traži i izmijeni",
search_command: "Traži dalje / Otvori prozor za traženje",
search: "Traži",
replace: "Izmijeni",
replace_command: "Izmijeni / Otvori prozor za traženje",
find_next: "Traži dalje",
replace_all: "Izmjeni sve",
reg_exp: "Regularni izrazi",
match_case: "Bitna vel. slova",
not_found: "nije naðeno.",
occurrence_replaced: "izmjenjenih.",
search_field_empty: "Prazno polje za traženje!",
restart_search_at_begin: "Došao do kraja. Poèeo od poèetka.",
move_popup: "Pomakni prozor",
font_size: "--Velièina teksta--",
go_to_line: "Odi na redak",
go_to_line_prompt: "Odi na redak:",
undo: "Vrati natrag",
redo: "Napravi ponovo",
change_smooth_selection: "Ukljuèi/iskljuèi neke moguænosti prikaza (pametniji prikaz, ali zagušeniji CPU)",
highlight: "Ukljuèi/iskljuèi bojanje sintakse",
reset_highlight: "Ponovi kolorizaciju (ako je nesinkronizirana s tekstom)",
word_wrap: "toggle word wrapping mode",
help: "O edit_area",
save: "Spremi",
load: "Uèitaj",
line_abbr: "Ln",
char_abbr: "Zn",
position: "Pozicija",
total: "Ukupno",
close_popup: "Zatvori prozor",
shortcuts: "Kratice",
add_tab: "Dodaj tabulaciju",
remove_tab: "Makni tabulaciju",
about_notice: "Napomena: koloriziranje sintakse je samo za kratke kodove",
toggle: "Prebaci naèin ureðivanja",
accesskey: "Accesskey",
tab: "Tab",
shift: "Shift",
ctrl: "Ctrl",
esc: "Esc",
processing: "Procesiram...",
fullscreen: "Cijeli prozor",
syntax_selection: "--Syntax--",
close_tab: "Close file"
};
@@ -1,48 +0,0 @@
editAreaLoader.lang["it"]={
new_document: "nuovo documento vuoto",
search_button: "cerca e sostituisci",
search_command: "trova successivo / apri finestra di ricerca",
search: "cerca",
replace: "sostituisci",
replace_command: "sostituisci / apri finestra di ricerca",
find_next: "trova successivo",
replace_all: "sostituisci tutti",
reg_exp: "espressioni regolari",
match_case: "confronta maiuscole/minuscole<br />",
not_found: "non trovato.",
occurrence_replaced: "occorrenze sostituite.",
search_field_empty: "Campo ricerca vuoto",
restart_search_at_begin: "Fine del testo raggiunta. Ricomincio dall'inizio.",
move_popup: "sposta popup di ricerca",
font_size: "-- Dimensione --",
go_to_line: "vai alla linea",
go_to_line_prompt: "vai alla linea numero:",
undo: "annulla",
redo: "ripeti",
change_smooth_selection: "abilita/disabilita alcune caratteristiche della visualizzazione",
highlight: "abilita/disabilita colorazione della sintassi",
reset_highlight: "aggiorna colorazione (se non sincronizzata)",
word_wrap: "toggle word wrapping mode",
help: "informazioni su...",
save: "salva",
load: "carica",
line_abbr: "Ln",
char_abbr: "Ch",
position: "Posizione",
total: "Totale",
close_popup: "chiudi popup",
shortcuts: "Scorciatoie",
add_tab: "aggiungi tabulazione",
remove_tab: "rimuovi tabulazione",
about_notice: "Avviso: la colorazione della sintassi vale solo con testo piccolo",
toggle: "Abilita/disabilita editor",
accesskey: "Accesskey",
tab: "Tab",
shift: "Shift",
ctrl: "Ctrl",
esc: "Esc",
processing: "In corso...",
fullscreen: "fullscreen",
syntax_selection: "--Syntax--",
close_tab: "Close file"
};
@@ -1,48 +0,0 @@
editAreaLoader.lang["ja"]={
new_document: "新規作成",
search_button: "検索・置換",
search_command: "次を検索 / 検索窓を表示",
search: "検索",
replace: "置換",
replace_command: "置換 / 置換窓を表示",
find_next: "次を検索",
replace_all: "全置換",
reg_exp: "正規表現",
match_case: "大文字小文字の区別",
not_found: "見つかりません。",
occurrence_replaced: "置換しました。",
search_field_empty: "検索対象文字列が空です。",
restart_search_at_begin: "終端に達しました、始めに戻ります",
move_popup: "検索窓を移動",
font_size: "--フォントサイズ--",
go_to_line: "指定行へ移動",
go_to_line_prompt: "指定行へ移動します:",
undo: "元に戻す",
redo: "やり直し",
change_smooth_selection: "スムース表示の切り替え(CPUを使います)",
highlight: "構文強調表示の切り替え",
reset_highlight: "構文強調表示のリセット",
word_wrap: "toggle word wrapping mode",
help: "ヘルプを表示",
save: "保存",
load: "読み込み",
line_abbr: "行",
char_abbr: "文字",
position: "位置",
total: "合計",
close_popup: "ポップアップを閉じる",
shortcuts: "ショートカット",
add_tab: "タブを挿入する",
remove_tab: "タブを削除する",
about_notice: "注意:構文強調表示は短いテキストでしか有効に機能しません。",
toggle: "テキストエリアとeditAreaの切り替え",
accesskey: "アクセスキー",
tab: "Tab",
shift: "Shift",
ctrl: "Ctrl",
esc: "Esc",
processing: "処理中です...",
fullscreen: "fullscreen",
syntax_selection: "--Syntax--",
close_tab: "Close file"
};

Some files were not shown because too many files have changed in this diff Show More