<<imgp "200px" "https://photos-5.dropbox.com/t/2/AAAtwwKxq8GY_ft0zP6YGORsu0wSowu_NjBqHqoN2-UOZg/12/693466203/jpeg/32x32/3/1508788800/0/2/File%2023-10-2017%2C%2016%2000%2030.jpeg/EJq4nukFGCUgBygH/56N8lL7VUiLj_0IHuX1VBvoviL2yJ0c3O0ixFEIKkRQ?dl=0&size=800x600&size_mode=3">>
Enter your ~PayPal username so we can pay you efficiently. (See <a href="https://www.paypal.com/us/selfhelp/article/how-do-i-get-paid-faq1750" target="_blank">~PayPal FAQs</a> if unsure).
<<profileButton "https://www.zhishiq.com/en/advisor/earning#payout_preference">>
.tc-double-spaced-list li {
padding-bottom: .5em;
padding-top: .5em;
}
.tc-link-info-item {
border: 1px solid #ebefcd;
padding: 5px 10px;
margin-bottom: 10px;
background: #fcfdf3;
font-size: 0.8em;
line-height: 1.2;
}
.tc-link-info-item h1 {
font-weight: 500;
font-size: 16px;
}
.tc-scrollable-demo {
border: 1px solid <<colour message-border>>;
background-color: <<colour message-background>>;
padding: 1em;
height: 400px;
position: relative;
overflow: auto;
}
.tc-improvement-banner {
font-size: 0.7em;
background: #fcc;
padding-left: 5px;
margin-top: 6px;
margin-bottom: 12px;
<<box-shadow "2px 2px 2px rgba(0,0,0,0.4)">>
}
@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
.tc-improvement-banner {
}
}
@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
.tc-improvement-banner {
margin-right: -53px;
margin-left: -53px;
}
.tc-improvement-banner:before {
display: block;
position: absolute;
width: 0;
height: 0;
content: " ";
margin-left: -5px;
margin-top: -10px;
border-top: 5px solid transparent;
border-left: 5px solid transparent;
border-right: 5px solid #C07E7E;
border-bottom: 5px solid #C07E7E;
}
}
.tc-improvement-banner svg {
width: 1em;
height: 1em;
}
<<list-links "[tag[$:/Andy]sort[title]]">>
<div class="tc-advanced-search">
<<tabs "[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch]!has[draft.of]]" "$:/core/ui/AdvancedSearch/System">>
</div>
\define ra(l)
<p>''$l$''</p>
<$radio tiddler=<<qualify "$l$">> value='1'> I do these tasks</$radio> <$radio tiddler=<<qualify "$l$">> value='0'> I do not do these tasks</$radio>
\end
\define rb(l)
<p>''$l$''</p>
<$radio tiddler=<<qualify "$l$">> value='1'> Available</$radio> <$radio tiddler=<<qualify "$l$">> value='0'> Unavailable</$radio>
\end
\define ry(l)
<p>''$l$''</p>
<$radio tiddler=<<qualify "$l$">> value='1'> Yes</$radio> <$radio tiddler=<<qualify "$l$">> value='0'> No</$radio>
\end
<<ra "Editing services">>
<<rb "Appointed editing services">>
''Appointment fee multiplier''
<$edit-text tiddler='fdwfsd' tag=input/>
<<ra "24 urgent editing services">>
<<ra "Text appraisal services">>
<<rb "Appointed text appraisal">>
<<ra "Text package services">>
<<rb "Appointed text package services">>
''Package appointment fee multiplier''
<$edit-text tiddler='fdwfsd' tag=input/>
<<ry "Reviewer of other advisor work">>
<<ry "Reviewer of translations">>
<<ry "Authorized to handle L1 tasks">>
<<ry "Bypass L1 reviews">>
<<ry "Authorized to handle L2 tasks">>
<<ry "Bypass L2 reviews">>
<<ry "Authorized to handle VIP tasks">>
<<ry "Bypass VIP reviews">>
My name is Andy Daum. I am the CPO and Co-Founder of ZHISHIQ (formerly known as ~MyDocumate), a unique venture capital-funded start-up that is actively advocating for a transformation in how overseas education is accessed by candidates from Mainland China.
When I applied to and was accepted by the University of Oxford in 2002:
*My English teacher, Mrs Mumford, an Oxford graduate, stepped up the pressure on me in classes once I had submitted my application. I remember her reading out one of my misspelt, ill-considered essays to the whole class. The experience impressed on me—in an amazingly effective way—that success in this world, and pride in one's achievements must be an ongoing project.
*Another English teacher, Mr. Conquest, a Cambridge graduate, sat me down for two mock interviews (which were a no-less-than horrific wake-up call).
*My headmaster, Chris Shepperd, an Oxford mathematics graduate, frequently took me aside in the run-up to my application and before my interview, giving me tips and advice.
*Mr. Shepperd's daughter, Ruth, with whom I had taken after-school Latin classes, was accepted to read Modern History at St. John's College, Oxford the previous year. When I did my interviews (one of which was at St. John's), we went for tea and she gave me invaluable advice.
*A former headmaster from my primary school, Robin Lindsay, a Cambridge graduate, spent an entire Saturday with me, buying me coffees, reading me Wilfred Owen poems, and even putting me on the phone for a few excruciating minutes with Prof. Jon Stallworthy of Wolfson College, Oxford.
My point is: I had a lot of help. I didn't attend a fancy private school. I didn't get any official coaching. These were just people who cared about me and rallied around, wanting to help. And they were all 'insiders' or at least, they //knew what to expect//.
I know I would not have succeeded without access to their frank, refreshing perspectives on my efforts and assumptions.
Now imagine you are a student in the vastness of Mainland China. The kind of casual access to 'insiders' on Western education that I've described above is not so plausible. Furthermore, the challenges of the application process are compounded by the fact that it demands a style of self-advocacy that is not part of China's //<a href="https://en.wikipedia.org/wiki/National_Higher_Education_Entrance_Examination" target="_blank">~GaoKao</a>//-led educational system.
<ol style='margin-left:0;padding-left:24px;'>
<li>Please browse some of our existing <a href='http://www.zhishiq.com/en/team?service_types=ServiceText_polish' target='_blank'>advisor team's profiles at zhishiq.com</a>.</li>
<li>When you click on each profile, you'll notice it has a brief Summary section, followed by a Self-Introduction. We're in the business of first impressions, and we ensure this is reflected in the enhanced rates of pay strong profiles can attract.</li>
<li>Please draft what you'd propose to include on your ZHISHIQ profile in each section (300 words would seem like a reasonable limit. There's no minimum length; the point is to convey your background succinctly, demonstrating your skills on the page in the process.</li>
<li>Please send your proposed profile content to Andy (andy@zhishiq.com), cc-ing Vivian (vivian@zhishiq.com) with the headline "__ZHISHIQ Advisor Application 2017 intake__".</li>
</ol>
<p><b>Thank you very much for your time and your interest</b></p>
—Andy.
<<t "Style of questioning">>
''Key points''
*Never, ever wait until draft 2 to handle this. Give draft 1 all your attention in this regard. It will ensure better results and—we promise—make your job both easier and more satisfying.
*Be sensitive: Please don't tag terse, repetitive, and unhelpful remarks to the content in client's documents. Remember that you’re critiquing a document that your client has likely spent a lot of time putting together; you may also be introducing unfamiliar approaches to self-expression/ personal presentation/structure; the stakes for the client are high. This all entails stress!
*Be constructive: Couch your requests in terms of enhancing the client’s application. Explain what needs to be done to correct the problem and what you intend to do about it. Offer examples, and make suggestions about how material could be effectively expanded in the next draft. Explain ''why'' you are asking for the new material.
<<dispLay "Style of Questioning" 1-l2>>
<<t "Triggers for your questions">>
<<dispLay "Asking Questions" 2-l2>>
<$list filter='[list[$:/ResumeBuild]regexp:title[Awards]]'>
<tr>
<<sectionTitle>>
</tr>
<$list filter='[list[!!list]]'>
<tr>
<$set name='hideThisIf' filter='[title{!!title}addsuffix[/OnOff]]'>
<$reveal type='nomatch' state=<<hideThisIf>> text='off'>
<$set name='theContain' value={{!!title}}>
<td style=<<bodyText>>>
<<itemList Name "<b>" text "</b>, ">><<itemList body "" text "">> <<itemList Date "(" month "/">><<itemList Date "" text ")">><br>
<i><<itemList Description "" text "">><<itemList Scale " | " text "">></i>
</td>
</$set></$reveal></$set></tr></$list></$list>
All tasks, all iterations
Level One tasks
* Basic Features
* Advisors role: Overview
Fundamentals
* Grammar & punctuation
* Spelling
* Stylistic concerns relating to jurisdiction
* Chinglish expressions
Some key style points
* Smooth transitions
* Reduce repetition
* Streamlining superfluous text
* Enforcing consistency
* Defining abbreviations
* Avoiding lazy expressions
Due diligence
* Avoid inaccurate terminology
* Don't know/ not sure: Look it up
* Ensure correct usage in context
Content
A thorough edit
* Zero errors
* Show value with a heavier edit
* What if changes are minimal?
Summary
A Baseline edit is both a specific service in itself, and the basic level of editing quality that should be applied to all drafts of every text service you complete.
All tasks, all iterations
The Level 1 service encapsulates an approach to editing that should be applied to all services (and every draft) as a bare minimum.
Even minor errors have scope to cause clients major concerns.
While other services require additional work, drafts of all services should be submitted with the intention of showing your client that you are ready to provide your very best work.
We're in the business of first impressions.
Many clients use the first draft (or a Level 1) as an 'audition' for their advisor. Your job is to help them make a good one on their target schools. Failing to make a good impression in your role will self-evidently have a deleterious effect on your client's confidence in your ability to fulfill your role.
Communication w/ client should be conducted in the following ways:
* Word limit has been noted; if original material was <10% over the word limit, reduction completed. If >10% over the word limit, issue noted.
* Started the document with a friendly greeting and a piece of positive feedback.
* Acknowledged and responded to client questions, addressing any anxieties expressed.
* Gave a brief overview of what you've done in your note to the client.
* Used balloons for your comments.
* Helped the client to avoid making inadvertent faux pas.
* Highlighted any interpretations about which you were unsure... Without implying a lack of knowledge of the subject matter.
* Grammar, punctuation & spelling: no spelling errors, faulty agreements, excessive use of the passive voice, sentence fragments/ run-on sentences, double constructions, apostrophe errors, incorrect comma usage (including superfluous/ absent/ splicing), or incorrect semicolon use Style & mechanics.
The following summarize some of the stylistic points that should be addressed: formatting is consistent and professional without typographical inconsistencies/ errors, excessive use of the passive voice, wordy, pretentious, redundant or tautological words/ phrasing, repetition of words in close proximity, weak verbs, slang/ other informal language/ Chinglish words/ phrases, and arbitrary capitalization
Level One Service (Line edit +)
Basic features
* No. of iterations: 1
* First and final iteration's deadline: 48 hours
* Length of time (after the service is complete) that the client is permitted to send clarifying enquiries via the messaging system: 3 days
* Any length reductions included? c. ± 10%
Advisor's role
* Reads fluently by the standards of a native English speaker,
* There are zero grammar, spelling, and punctuation errors.
* Ensure that the prose reads smoothly and consistently.
* Conduct any necessary due diligence to ensure clear, distraction-free prose and correct deployment of terminology.
* Edit extensively, providing discernible improvements to your client.
* Ensure your client has a good experience with ZHISHIQ.
You do not need to:
* Make internal rearrangements or revisions in sentence/ paragraph ordering.
* Reduce the word count by more than 10%.
* You do not need to provide detailed advice, lines of questioning, and guidance needed for our other services.
This edit does not provide the in-depth commentary and advice about structure, context, and content ordering that our other services offer. However, adding transitions, addressing repetition, streamlining wordy sections, and questioning confusing content are all ways that you should go about enhancing a Level One document's overall flow and readability.
Fundamentals
Grammar/ punctuation
Some of the most common issues include:
* Faulty agreements
* Excessive use of the passive voice
* Sentence fragments/ run-on sentences
* Double constructions
* Apostrophe errors
* Commas (including superfluous/ absent/ splicing)
* Semicolon misuse
Please ensure you are thoroughly aware of these issues and comfortable spotting them during your proof-read.
Spelling
Set local language settings of your spellchecker to the location that corresponds to your client’s target institution (ie: US/ UK/ Canada/ Australia English).
Stylistic concerns
If you need to check any points of local style, please consult a reputable online resource, for example:
* The Economist Style Guide (US)
* tameri Guide for Writers (UK)
* The Canadian Style (use chapter heading on the left-hand toolbar)
Some of the resources above are linked to resources on this site, however, we’re not proposing to run you through every rule of grammar, punctuation, or style. The Internet in general is also full of examples and explanations.
Remove Chinglish expressions
Please remove anything that does not read fluently to a native English speaker. Understanding ‘the gist’ or being literally correct is insufficient. All of the words must come across as being completely accurate and natural.
See some examples of typical Chinglish expressions in the Q&A forum. And share any of your own as you go along. The purpose here is to help other advisors pick out some of the more common awkward phrases and discuss effective ways of improving the expression.
Style
Ensure smooth transitions between sentences
If reading an applicant's materials is a jarring experience for the Admissions Official who reviews the candidate's documents, this will likely increase his/her chance of receiving a rejection letter. You can help your clients circumvent this negative outcome by adding transitions between sentences.
Reduce repetition
We also recommend that Advisors make it a point to address the repetition of similar words in close proximity. This is a very common issue and should always be resolved. Although, strictly speaking, it goes a little further than rendering the document correct English (per Level One service) it is something our clients expect us to revise.
The advisor revised as follows:
Repetitive phrasing
In addition to repetitive words, be on the lookout for repetitive phrasing. This is particularly common in resumes/CVs, where client's often describe their achievements in different roles, or different tasks within one role, in almost identical ways. For example, in the below document the client had originally used the terms female migrant population, migrant female populations, and immigrant female populations in three consecutive dot points. Look for ways to rephrase, replace, or imply terminology that has already been used.
Streamline superfluous text without compromising meaning or substance
The unfortunate fact of the matter is that many clients have been led to believe that quantity is tantamount to quality when it comes to word counts. You will, therefore, come upon essays, resumes, and RLs in which clients have used 600 words where 500 would have sufficed. In these instances, we advise you to take the approach illustrated in the following example:
Enforce consistency
Take the following scenario as an example: You are performing a Baseline edit on a Level One task. You notice that, in paragraph three, your client has written about how she got an internship at a
Big 4 firm
last summer. And then, in paragraph five, you read about how the audit project she performed at this
Big Four firm
helped her decide that wild-eyed, late-night forensic accounting was definitely her 'thing,' hence the application.
So what?
Well, isn't it the substance that matters? Well, that depends. Different circumstances, audiences, relationships, and stakes create different emphases, which—in turn—make some things more important than others.
Mr. Partner in McKinsey sends an email at 2am. It's addressed to "Mr. Client," who he has worked with for more than 10 years. The subject header reads: Do you want the good news or the bad news? Scattered throughout the body of the email we have both 'Big 4' and 'Big Four'. In this context, this inconsistency is not of great import.
So, what about your client's circumstances? The audience is composed of Admissions Officials, who sift through 100s of applications, which each describe candidates with very similar achievements on paper. They will probably not know your client (just like your clients don't—initially—know you). All that Admissions Officials have to guide them in forming their impressions is the material your client presents.
Another example re: consistency... Expression of numbers Use a consistent approach to numbering (we prefer single digit numbers to be written as words (one, two,three) and multi-digit numbers to be written as figures (10, 11, 462, etc.).
So, for example, do not write “there were 4 teachers that had a big impact on me. Two of them are now working in private industry…”
Your client is facing a super-competitive scenario with a high-stakes outcome. His/Her essay's lack of consistency, therefore, does matter. It makes the writing look sloppy, which can—in turn—lead the Admissions Officials to draw negative inferences about your client's attitude towards, or even respect for, his/her audience. In a competitive applications context, this can be calamitous.
Define abbreviations the first time they are used As touched upon in the previous section, the first time an abbreviation like FCMG appears in the text it should accompany the full term: i.e. "Fast-moving consumer goods (FMCG)". In all subsequent instances, use FMCG. Do not utilize an acronym at all if it is not subsequently used in the document; just state "Fast-moving consumer goods."
There are sensible exceptions. UN, US, UK, HIV, AIDS, and other common acronyms probably do not need defining because they are widely known and in such wide usage that definition is unnecessary.
Avoid lazy expressions You should adjust any content where the tone or phrasing reads awkwardly, or is inappropriate for an application document. This may include:
• Informal language and contractions
* Anything that appears to be slang or jargon (unless there is a contextually specific reason for using it, such as a case study)
* Lazy language and abbreviations such as etc. , e.g.
In a situation like this, the inappropriate or null-value statement should either be removed, or you should clarify detail with the client in order to adjust it to a value-added statement.
The document is a brief opportunity to convey key details about oneself and impress the reader. "And so forth" and "etc." not only require the reader to fill in the blanks; they also abdicate control over what the writer is conveying in the document. Remove arbitrary capitalizations Please keep an eye out for random capitalizations.
—
Due diligence Failure to perform due diligence can be particularly apparent on resumes. Furthermore, given the relatively simple premise of a resume (as opposed to a Personal Statement, for example), errors are proportionately more significant on resumes.
Avoid inaccurate terminology Thorough terminology checks are essential. Make sure that place names, school names, professional terms, and other technical terminology are accurately noted; and pay close attention to spelling and usage. Take the time to search for terms, using Google, if unsure. It is important to highlight any interpretations or judgment calls about which you are unsure.
Terms like the following should NEVER be allowed into an advisor’s redraft:
...the Georgina Institute of Technology… Don't know/ not sure: Look it up! If you do not know a technical/ official term, the Internet is quick and easy and will usually provide you with what you need to know.
We urge you to conduct this research yourself, rather than including inquiries in your feedback that could cause the client to question your credibility. It is perfectly appropriate to recommend that your client clarify something that he/she has expressed unclearly, but do not insert comments to the effect of, "I have no idea about this area." The following is not a good approach for an advisor:
Rather than suggesting that your client "write out the acronym," we recommend that you perform a simple Google search to find out if you can identify the full-term. With respect to the example above, Google reveals the following about "FMCG:"
This abbreviation is clearly one that you should be able to figure out for yourself. For this reason, your client would be likely to be concerned if you indicated ignorance about FMCG.
Regarding "SAP:"
SAP is not an acronym. It is an abbreviated company name (Systemanalyse und Programmentwicklung) which has come to be used so widely that there is no sense in unpacking the abbreviation.
If this were an L1 resume task, then it would be best for the Advisor to retain SAP and spell out the abbreviation FMCG.
Ensure usage is correct in context Not just 'spelt right'.
Content Interrogate confusing or ambiguous content You are limited to a single iteration so it is not possible to request clarifying text from a client, and then polish and insert it into his/her application document. However, there are still ways for you to help your clients when you find sections of their text to be perplexing:
Should you ever discover an area of an essay, resume, or RL that could come across as vague or baffling to the Admissions Official who will eventually review the application document, please communicate this to your client (without conveying the impression of up-selling your services - important).
We recommend that you insert comments and questions into the text that point out ways in which the client can improve it.
To gain a better idea of the strategy we recommend, please study these excerpts from clients' essays, and—right above the clients' material—feedback from their Advisors:
A thorough edit While line-editing will be one of your most significant responsibilities, most clients submit tasks on our website with expectations beyond a quick, anonymous proofread.
Zero errors This can't be over-emphasized and should go without saying! (Always review your work!)
Do not disappoint your client with a light edit It may seem odd, but clients will often judge the value-for-money they've received at a glance: How many changes are indicated in the track changes mark-up.
We have received complaints from clients when the advisor has provided edits that are too light; some have even questioned whether an advisor is a native English speaker! We desperately want to avoid this.
Light edit vs comprehensive edit– this is an ongoing problem. Make the distinction and ensure you are making substantial changes to the document, especially when it actually requires it! Even if the document is well written, please don’t make 5 changes to the document and call it a day. Clients pay money, let them see the fruits of their investment.
—Sam Hersi, Senior Advisor/ Complaints Team
Do not simply scan the English; try to add something extra. Study these examples as a quick guide regarding the level of change and enhancement you should be aiming for; please always aim for a heavy edit:
It is always worth going a little further than simply providing a piece of writing that is formally correct. Maximize your client’s confidence in you but please avoid being florid; one or two judicious word choices are often all it takes to really improve the impression the document can make. We’re not encouraging you to arbitrarily use long words or flowery language. Nor are we encouraging you to edit the client's voice out of the document.
If a first-time client has a positive experience with a Level One, then he/she may appoint several tasks to you. We hope that this is the case, and that you and your clients have experiences with ZHISHIQ that are as rewarding as possible.
What if your changes are minimal? It may seem odd, but clients will often judge the value-for-money they've received at a glance: How many changes are indicated in the track changes mark-up.
Don't edit for the sake of it Naturally, it is not a conscientious or ethical approach to make changes for the sake of changes. Do try to do everything you can to enhance the quality of the document, providing the client with options and substitutions, and when possible.
Don’t remix. Try to stay close to the clients intended meaning while you edit. If you simply can’t understand something, ask for clarification! Clients often complain about advisors changing the meaning of their sentences and phrases.
—Sam H, Advisor (2014—present)/ Complaints Team Do offer value for money If you find a perfect document has been submitted, don't think:
Score! Easy-peasy!
It will be obvious and won't go down well! Simply spend the excess time in providing commentary and advice. That way, your client will know you have engaged with the task. Any subsequent expressions of concern are likely to be a far more manageable as a result!
Do explain where you're coming from Provision of text like the following is not a substitute for the approach above. But it does help to explain the approach you've taken in a reasonable fashion (which is always helpful!)
You have uploaded a document written to a native-speaker standard. Your style was consistent with correct spelling, grammar, and punctuation, along with appropriate tone. Nice job! The goal of this service is to ensure clarity and consistency of expression in your document to guarantee your intended audience can follow all your points without any difficulty. Level 1 is not a rewriting service (nor are any of our services!) Therefore, since there were only a few errors in your original document, there are only a few corrections in the proofread document. I don't want to make unneeded substitutions that are counter to your interests. Quantity of edits is not indicative of the quality in this instance! And I've spent the additional time offering you advice and commentary that I feel could improve the document from a strategic standpoint. (Substituting words is easy!) The principal effort involved in executing our services is carefully assessing the document, not typing out the changes!
Something like that will help.
Summary • Due diligence & attention-to-detail. • Local language spellchecker/ check professional/ technical terminology.
* Don’t know something? Look it up! Or ask. • Review your work very carefully and repeatedly. • At least once more than you think you need to until you’re in the rhythm of providing these services
* Zero errors. • Demonstrate care and attention • Present the document in a neat and clear format. • Consistency • Be very conscious of ensuring consistent approaches to acronyms, hyphens, dates, numbers, capitalization...
* But do not remove any substantive content (except—for example—repetitious words/ phrases in close proximity). • Punctuation & grammar • Know and use the rules and be alert to the most common errors.
* When? Always. • Please present every draft of every document with a full Baseline Edit, particularly the first draft. • Irrespective of whether it is an L2 or VIP (giving you subsequent opportunities to edit the document), it is important to establish client confidence in your capacity and commitment to completing the work properly.
Back to Contents
* Help Desk Software by Freshdesk | Submit Feedback | Browse Community
Month,Bonuses,Rounded,Recipients
2016.01,2729.07,3000.00,3
2016.02,798.43,1000.00,1
2016.03,612.59,1000.00,1
2016.04,383.93,n/a,0
2016.05,257.2,n/a,0
2016.06,149.25,n/a,0
2016.07,349.80,n/a,0
2016.08,1221.44,1000,1
2016.09,2300.011,2000,2
2016.10 ,4231.58,4000,4
2016.11,5623.32,6000,6
2016.12,4123.81,5000,5
2017.01,2770.14,3000,3
<$button class="tc-btn-invisible tc-tiddlylink" set="" setTo="">
<$action-navigate $to="About ZHISHIQ"/>{{$:/core/images/chevron-left}} Back
<$action-sendmessage $message='tm-close-other-tiddlers' $param='About ZHISHIQ'/>
</$button>
\define firstDeadlineAddress()
{{$(serviceLevel)$!!deadline.$(getSpeedField)$_1}}
\end
\define secondDeadlineAddress()
{{$(serviceLevel)$!!deadline.$(getSpeedField)$_2}}
\end
\define countSchools()
$(thePackageType)$!!count
\end
\define countRL()
$(thePackageType)$!!rlcount_$(ifMultiPackage)$
\end
\define iteRations()
{{$(serviceLevel)$!!iterations}}
\end
\define schoolsThisServicePlus1()
<$calc>{{$:/PackageServices/NumberSchools/Temp}} + 1</$calc>
\end
<style>
table th.a {text-align:left;}
table td.a {text-align:center;}
</style>
<!--VARS-->
<$set name='serviceLevel' value={{$:/PackageServices/ServiceLevel/Temp}}>
<$set name='thePackageType' value={{$:/PackageServices/PackageType/Temp}}>
<$set name='ifMultiPackage' filter='[title[$:/PackageServices/NumberSchools/Temp]!field:text[1]]'
value='multi' emptyValue='1'>
<$set name='getSpeedField' value={{$:/PackageServices/ServiceSpeed/Temp}}>
<$set name='numberSchools' value={{$:/PackageServices/NumberSchools/Temp}}>
<!--TABLE-->
<table>
<tr>
<th class='a'>
</th>
<th class='a'>Iteration 1
</th>
<th class='a'>
Subsequent <$calc><<iteRations>> - 1</$calc> iterations
</th>
</tr>
<tr>
<th class='a'>
Statement 1
</th>
<td class='a'>
<<firstDeadlineAddress>> hours
</td>
<td class='a'>
<<secondDeadlineAddress>> hours each
</td>
</tr>
<$list filter='[list<countSchools>allbefore{$:/PackageServices/NumberSchools/Temp}]'>
<tr>
<th class='a'>
Statement <$calc> {{!!title}} + 1</$calc>
</th>
<td class='a'>
<<firstDeadlineAddress>> hours
</td>
<td class='a'>
<<secondDeadlineAddress>> hours each
</td>
</tr>
</$list>
<$set name='ifProgramPackage' filter='[title[$:/PackageServices/PackageType/Temp]field:text[Program Packages]]' value="""<$list filter='[list<countRL>]'><tr><th class='a'>RL {{!!title}}</th><td class='a'><<firstDeadlineAddress>> hours</td><td class='a'><<secondDeadlineAddress>> hours each</td></tr></$list>
""" emptyValue=""><<ifProgramPackage>>
<tr><th class='a'>CV or resume</th><td class='a'>As above</td><td class='a'>As above</td>
><p class="MsoNormal" style="text-align:justify;text-justify:inter-ideograph;
mso-outline-level:1;tab-stops:20.0pt"><b><span lang="EN-GB" style="font-size:11.0pt">Families on the Great Canal from Beijing to
Hangzhou </span></b></p>
{{!!canal}}
---
> Lu Xun’s Final Residence
{{!!luxun}}
It matters.
>the Georgina Institute of Technology
\define makeContainerTitle()
<$action-setfield $tiddler='$:/makeTemp' $field='title' $value="""$:/$(mainPrefix)$/$(theMainSuffix)$/$(theUniqueSuffix)$"""/>
<$action-setfield $tiddler="""$:/$(mainPrefix)$/$(theMainSuffix)$/$(theUniqueSuffix)$""" text="""$(itemContent)$""" subtitle="""$(theSubTitle)$"""/>
\end
<style>
.scrolls {
border: 1px solid <<colour message-border>>;
background-color: <<colour message-background>>;
padding: 1em;
height: 400px;
position: relative;
}
</style>
<$scrollable class='scrolls'>
<$select tiddler='$:/makeTemp/mainPrefix'>
<$list filter='[tag[mainPage]]'>
<option><$view field='title'/></option>
</$list>
</$select>
<$edit-text tiddler='$:/makeTemp/mainPrefix' field='text' tag='input' placeholder='Name of parent'/><br>
<$edit-text tiddler='$:/makeTemp/theMainSuffix' field='text' tag='input' placeholder='Group enclosure'/><br>
<$edit-text tiddler='$:/makeTemp/theSubTitle' field='text' tag='textarea' placeholder='Item title'/><br>
<$edit-text tiddler='$:/makeTemp/Content' field='text' tag='textarea' class='tc-edit-texteditor' placeholder='Item content'/>
<$set name='mainPrefix' value={{$:/makeTemp/mainPrefix}}>
<$set name='theMainSuffix' value={{$:/makeTemp/theMainSuffix}}>
<$set name='itemContent' value={{$:/makeTemp/Content}}>
<$set name='theSubTitle' value={{$:/makeTemp/theSubTitle}}>
<$set name='theUniqueSuffix' value=<<now 0DD0MMYYYY0hh0mm0ss>>>
<$set name='slash' filter='[title[$:/makeTemp/theMainSuffix]!field:text[]]' value="""/{{$:/makeTemp/theMainSuffix}} entry""" emptyValue=" entry">
<$button>Make {{$:/makeTemp/mainPrefix}}<<slash>>
<<makeContainerTitle>>
</$button>
</$set></$set></$set></$set></$set></$set>
<$list filter='[days[-1]!prefix[$:/state]sort{!!created}reverse[]first[10]]'>
{{!!title}}<br>
</$list>
{"AllTiddlers":"AllTiddlers.tid","License":"License.tid","TableOfContents":"TableOfContents.tid","About":"about/About.tid","Acknowledgements":"about/Acknowledgements.tid","Contributors":"about/Contributors.tid","Developers":"about/Developers.tid","History of TiddlyWiki":"about/History of TiddlyWiki.tid","Philosophy of Tiddlers":"about/Philosophy of Tiddlers.tid","BuildCommand":"commands/BuildCommand.tid","ClearPasswordCommand":"commands/ClearPasswordCommand.tid","Commands":"commands/Commands.tid","EditionsCommand":"commands/EditionsCommand.tid","FetchCommand":"commands/FetchCommand.tid","HelpCommand":"commands/HelpCommand.tid","InitCommand":"commands/InitCommand.tid","LoadCommand":"commands/LoadCommand.tid","MakeLibraryCommand":"commands/MakeLibraryCommand.tid","OutputCommand":"commands/OutputCommand.tid","PasswordCommand":"commands/PasswordCommand.tid","RenderTiddlerCommand":"commands/RenderTiddlerCommand.tid","RenderTiddlersCommand":"commands/RenderTiddlersCommand.tid","SaveTiddlerCommand":"commands/SaveTiddlerCommand.tid","SaveTiddlersCommand":"commands/SaveTiddlersCommand.tid","ServerCommand":"commands/ServerCommand.tid","SetFieldCommand":"commands/SetFieldCommand.tid","UnpackPluginCommand":"commands/UnpackPluginCommand.tid","VerboseCommand":"commands/VerboseCommand.tid","VersionCommand":"commands/VersionCommand.tid","Articles":"community/Articles.tid","Community":"community/Community.tid","Contributing":"community/Contributing.tid","Contributor License Agreement":"community/Contributor License Agreement.tid","Examples":"community/Examples.tid","Forums":"community/Forums.tid","HelpingTiddlyWiki":"community/HelpingTiddlyWiki.tid","Improving TiddlyWiki Documentation":"community/Improving TiddlyWiki Documentation.tid","Latest":"community/Latest.tid","Meetups":"community/Meetups.tid","OXTWIG":"community/OXTWIG.tid","ReportingBugs":"community/ReportingBugs.tid","Resources":"community/Resources.tid","Signing the Contributor License Agreement":"community/Signing the Contributor License Agreement.tid","TiddlyWiki Camp Paris":"community/TiddlyWiki Camp Paris.tid","TiddlyWiki Hangouts":"community/TiddlyWiki Hangouts.tid","TiddlyWiki European Meetup 2016":"community/TiddlyWiki_European_Meetup_2016.tid","TiddlyWiki European Meetup 2017":"community/TiddlyWiki_European_Meetup_2017.tid","Translate TiddlyWiki into your language":"community/Translate TiddlyWiki into your language.tid","Tutorials":"community/Tutorials.tid","\"A free, open source wiki revisited\" by Mark Gibbs, NetworkWorld":"community/articles/_A free, open source wiki revisited_ by Mark Gibbs, NetworkWorld.tid","\"Notizen mit TiddlyWiki systemübergreifend nutzen\" by Michael Sonntag":"community/articles/_Notizen mit TiddlyWiki systemubergreifend nutzen_ by Michael Sonntag.tid","\"Setting Up a Personal TiddlyWiki Server on OS X\" by Kris Johnson":"community/articles/_Setting Up a Personal TiddlyWiki Server on OS X_ by Kris Johnson.tid","\"TiddlyWiki 5 im Betatest\" by besim":"community/articles/_TiddlyWiki 5 im Betatest_ by besim.tid","\"TiddlyWiki\" by Sander de Boer":"community/articles/_TiddlyWiki_ by Sander de Boer.tid","\"A Thesis Notebook\" by Alberto Molina":"community/examples/A Thesis Notebook.tid","Interactive Git Documentation by Devin Weaver":"community/examples/GitFixUm.tid","Obadiah TOC":"community/examples/Obadiah.tid","PESpot Lesson Planner by Patrick Detzner":"community/examples/PESpot Lesson Planner by Patrick Detzner.tid","\"PETTIL - Forth for the Commodore PET\" by Charlie Hitselberger":"community/examples/PETTIL.tid","Simple Zork-like Game by Jed Carty":"community/examples/Simple Zork like Game.tid","TriTarget.org by Devin Weaver":"community/examples/TriTarget.org by Devin Weaver.tid","Ace Editor Plugin by Joerg Plewe":"community/resources/Ace Editor Plugin by Joerg Plewe.tid","\"BJTools\" by buggyj":"community/resources/BJHacks.tid","\"BrainTest - tools for a digital brain\" by Danielo Rodriguez":"community/resources/BrainTest.tid","\"CouchDB Adaptor\" by William Shallum":"community/resources/CouchDB Adaptor.tid","\"Encrypt single tiddler plugin\" by Danielo Rodriguez":"community/resources/Encrypt single tiddler plugin.tid","Eucaly's Tiddly World":"community/resources/Eucalys Tiddly World.tid","\"Filter Examples\" by Tobias Beer":"community/resources/Filter Examples by Tobias Beer.tid","\"GSD5\" by Roma Hicks":"community/resources/GSD5.tid","\"Gospel Bubbles\" by Rev. David Gifford":"community/resources/Gospel_Bubbles_by_Rev_David_Gifford.tid","\"Heeg.ru\" by sini-Kit":"community/resources/Heeg.ru.tid","undefined":"howtos/How to widen tiddlers (aka story river)","\"How Does Twederation Work\" by Jed Carty":"community/resources/How Does Twederation Work by Jed Carty.tid","IndexedDB Plugin by Andreas Abeck":"community/resources/IndexedDB Plugin by Andreas Abeck.tid","Leaflet maps plugin by Sylvain Comte":"community/resources/Leaflet_maps_plugin_by_Sylvain_Comte.tid","MathJax Plugin by Martin Kantor":"community/resources/MathJax Plugin by Martin Kantor.tid","Plugins by TheDiveO":"community/resources/Plugins by TheDiveO.tid","SeeAlso by Matias Goldman":"community/resources/SeeAlso by Matias Goldman.tid","\"TB5 - a pocket full of tips\" by Tobias Beer":"community/resources/TB5 a pocket full of tips by Tobias Beer.tid","\"TW5 Magick\" by Stephan Hradek":"community/resources/TW5 Magick.tid","TWCommunitySearch":"community/resources/TWCommunitySearch.tid","TWaddle by Matias Goldman":"community/resources/TWaddle by Matias Goldman.tid","TiddlyChrome by Arlen Beiler":"community/resources/TiddlyChrome by Arlen Beiler.tid","TiddlyClip by buggyjay":"community/resources/TiddlyClip by buggyjay.tid","TiddlyMap Plugin by Felix Küppers":"community/resources/TiddlyMap by Felix Kuppers.tid","TiddlyWiki Jingle by Måns Mårtensson":"community/resources/TiddlyWiki Jingle by Mans Martensson.tid","\"TiddlyWiki Notes\" by James Anderson":"community/resources/TiddlyWiki Notes.tid","\"TiddlyWiki Posts\" by Jeffrey Kishner":"community/resources/TiddlyWiki Posts.tid","TiddlyWiki Video Tutorials by Francis Meetze":"community/resources/TiddlyWiki Video Tutorials by Francis Meetze.tid","TiddlyWiki extensions for Sublime Text 3 by roma0104":"community/resources/TiddlyWiki extensions for Sublime Text 3 by roma0104.tid","TiddlyWiki extensions for ViM":"community/resources/TiddlyWiki extensions for ViM.tid","\"TiddlyWiki for Scholars\" by Alberto Molina":"community/resources/TiddlyWiki for Scholars.tid","\"TiddlyWiki guide FR\" by Sylvain Naudin":"community/resources/TiddlyWiki guide FR.tid","\"TiddlyWiki 舞\" by Bram Chen":"community/resources/TiddlyWiki wu.tid","\"TiddlyWiki5 Coding\" by Chris Hunt":"community/resources/TiddlyWiki5 Coding.tid","\"TiddlyWiki5 Playground\" by Ton Gerner":"community/resources/TiddlyWiki5 Playground.tid","\"TiddlyWiki5^2 documenting while learning TiddlyWiki5\" by Iannis Zannos":"community/resources/TiddlyWiki5 Squared by Iannis Zannos.tid","Tinka by Andreas Hahn":"community/resources/Tinka by Andreas Hahn.tid","\"Wikilabs\" by PMario":"community/resources/Wikilabs by PMario.tid","\"Wills Q&D gTD\" by Matabele":"community/resources/Wills QnD gTD.tid","\"Cardo - Task and Project Management Wiki\" by David Szego":"community/resources/_Cardo-A Task and Project Management Wiki_ by David_Szego.tid","\"Ghostwriter theme by Rory Gibson\" adapted for TW5 by Riz":"community/resources/_Ghostwriter theme by Rory Gibson_ by Riz.tid","\"Hacks\" by Thomas Elmiger":"community/resources/_Hacks_ by Thomas Elmiger.tid","\"In My Socks\" by Jed Carty":"community/resources/_In My Socks_ by Jed Carty.tid","\"Lucky Sushi\" online shop by sini-Kit":"community/resources/_Lucky Sushi_ online shop by sini-Kit.tid","\"Mal's Sandbox\" by Mal":"community/resources/_Mal's Sandbox_ by Mal.tid","\"Moments: A little color won't hurt\" by Riz":"community/resources/_Moments-A little color won't hurt_ by Riz.tid","\"Noteself\" by Danielo Rodríguez":"community/resources/_Noteself_ by Danielo Rodriguez.tid","\"SK Plugins\" by Stephen Kimmel":"community/resources/_SK_Plugins_ by Stephen Kimmel.tid","\"Slides and Stories\" by Jan":"community/resources/_Slides and Stories_ by Jan.tid","\"TW5-TeXZilla\" plugin by Joe Renes":"community/resources/_TW5-TeXZilla_ plugin by Joe Renes.tid","\"TWeb.at\" by Mario Pietsch":"community/resources/_TWeb.at_ by Mario Pietsch.tid","\"TiddlyServer\" by Matt Lauber":"community/resources/_TiddlyServer_ by Matt Lauber.tid","\"TiddlyWiki Knowledge Network\" by Dmitry Sokolov":"community/resources/_TiddlyWiki Knowledge Network_ by Dmitry Sokolov.tid","\"TiddlyWiki5 Bourbon\" by mkt_memory":"community/resources/_TiddlyWiki5 Bourbon_ from mkt_memory.tid","\"TiddlyWiki5 Forum on Reddit\" by Riz":"community/resources/_TiddlyWiki5 Forum on Reddit_ by Riz.tid","datepicker plugin based on Pikaday, by kixam":"community/resources/datepicker based on Pikaday.tid","rboue's plugins for TiddlyWiki":"community/resources/rboue's plugins for TiddlyWiki.tid","twproxy by Steve Gattuso":"community/resources/twproxy by Steve Gattuso.tid","vis.js Timeline by emkay, revived by kixam":"community/resources/vis.js Timeline.tid","\"Creating a baby journal with TiddlyWiki 5\" from A Penguin in Redmond":"community/tutorials/Creating a baby journal with TiddlyWiki 5.tid","\"Install and run TiddlyWiki on a CentOS 6 VPS using Nginx\" from RoseHosting":"community/tutorials/Install and run TiddlyWiki on a CentOS 6 VPS using Nginx.tid","\"Microblogging con Tiddlywiki\" by Juan":"community/tutorials/Microblogging con TiddlyWiki.tid","\"デザイン刷新。次の25年を目指すTiddlyWiki\" by Moongift":"community/tutorials/Moongift on TiddlyWiki.tid","\"Shining Ark Using TiddlyWiki\" by Helu":"community/tutorials/Shining Ark Using TiddlyWiki.tid","\"TW5 Tribal Knowledge\" from Scott Kingery":"community/tutorials/TW5 Tribal Knowledge.tid","\"Un wiki sur votre BiblioBox avec TiddlyWiki\" from A Penguin in Redmond":"community/tutorials/Un wiki sur votre BiblioBox avec TiddlyWiki.tid","ColourPalettes":"concepts/ColourPalettes.tid","Concepts":"concepts/Concepts.tid","Current Tiddler":"concepts/Current Tiddler.tid","DataTiddlers":"concepts/DataTiddlers.tid","Date Fields":"concepts/Date Fields.tid","DictionaryTiddlers":"concepts/DictionaryTiddlers.tid","Dominant Append":"concepts/Dominant Append.tid","ExternalImages":"concepts/ExternalImages.tid","Filters":"concepts/Filters.tid","Hard and Soft Links":"concepts/Hard and Soft Links.tid","InfoPanel":"concepts/InfoPanel.tid","JSONTiddlers":"concepts/JSONTiddlers.tid","Macros":"concepts/Macros.tid","Messages":"concepts/Messages.tid","ModuleType":"concepts/ModuleType.tid","Modules":"concepts/Modules.tid","Order of Tagged Tiddlers":"concepts/Order of Tagged Tiddlers.tid","PermaLinks":"concepts/PermaLinks.tid","Pragma":"concepts/Pragma.tid","Railroad Diagrams":"concepts/Railroad Diagrams.tid","Selection Constructors":"concepts/Selection Constructors.tid","ShadowTiddlers":"concepts/ShadowTiddlers.tid","Story River":"concepts/Story River.tid","SystemTags":"concepts/SystemTags.tid","SystemTiddlers":"concepts/SystemTiddlers.tid","TagTiddlers":"concepts/TagTiddlers.tid","TemplateTiddlers":"concepts/TemplateTiddlers.tid","TextReference":"concepts/TextReference.tid","TiddlerFields":"concepts/TiddlerFields.tid","TiddlerLinks":"concepts/TiddlerLinks.tid","Tiddlers":"concepts/Tiddlers.tid","TiddlyWiki":"concepts/TiddlyWiki.tid","TiddlyWiki5":"concepts/TiddlyWiki5.tid","TiddlyWikiFolders":"concepts/TiddlyWikiFolders.tid","Title List":"concepts/Title List.tid","Title Selection":"concepts/Title Selection.tid","Transclusion":"concepts/Transclusion.tid","Wiki":"concepts/Wiki.tid","WikiText":"concepts/WikiText.tid","Customise TiddlyWiki":"customising/Customise TiddlyWiki.tid","Customising search results":"customising/Customising search results.tid","Page and tiddler layout customisation":"customising/Page and tiddler layout customisation.tid","BT":"definitions/BT.tid","Base64":"definitions/Base64.tid","CamelCase":"definitions/CamelCase.tid","Cascading Style Sheets":"definitions/Cascading Style Sheets.tid","Comma-Separated Values":"definitions/Comma Separated Values.tid","ContentType":"definitions/ContentType.tid","Data URI":"definitions/Data URI.tid","Definitions":"definitions/Definitions.tid","Document Object Model":"definitions/Document Object Model.tid","FederatialLimited":"definitions/FederatialLimited.tid","GitHub":"definitions/GitHub.tid","GuerillaWiki":"definitions/GuerillaWiki.tid","HyperText Markup Language":"definitions/HyperText Markup Language.tid","JavaScript Object Notation":"definitions/JavaScript Object Notation.tid","JavaScript":"definitions/JavaScript.tid","JeremyRuston":"definitions/JeremyRuston.tid","Jermolene":"definitions/Jermolene.tid","MathML":"definitions/MathML.tid","NW.js":"definitions/NW.js.tid","Node.js":"definitions/Node.js.tid","OpenSource":"definitions/OpenSource.tid","Osmosoft":"definitions/Osmosoft.tid","Percent Encoding":"definitions/Percent Encoding.tid","Quine":"definitions/Quine.tid","SingleFileApplication":"definitions/SingleFileApplication.tid","SinglePageApplication":"definitions/SinglePageApplication.tid","Stanford JavaScript Crypto Library":"definitions/Stanford JavaScript Crypto Library.tid","TiddlyDesktop":"definitions/TiddlyDesktop.tid","TiddlyFox":"definitions/TiddlyFox.tid","TiddlyIE":"definitions/TiddlyIE.tid","TiddlySpace":"definitions/TiddlySpace.tid","TiddlyWeb":"definitions/TiddlyWeb.tid","TiddlyWikiClassic":"definitions/TiddlyWikiClassic.tid","URI":"definitions/URI.tid","node-webkit":"definitions/node-webkit.tid","Alice in Wonderland":"demonstrations/Alice in Wonderland.tid","Caruso - Ave Maria":"demonstrations/Caruso - Ave Maria.tid","GroupedLists":"demonstrations/GroupedLists.tid","ImageGallery Example":"demonstrations/ImageGallery Example.tid","SampleAlert":"demonstrations/SampleAlert.tid","SampleNotification":"demonstrations/SampleNotification.tid","SampleTabFour":"demonstrations/SampleTabFour.tid","SampleTabOne":"demonstrations/SampleTabOne.tid","SampleTabThree":"demonstrations/SampleTabThree.tid","SampleTabTwo":"demonstrations/SampleTabTwo.tid","SampleTiddlerFirst":"demonstrations/SampleTiddlerFirst.tid","SampleTiddlerSecond":"demonstrations/SampleTiddlerSecond.tid","SampleTiddlerThird":"demonstrations/SampleTiddlerThird.tid","SampleWizard":"demonstrations/SampleWizard.tid","SampleWizard2":"demonstrations/SampleWizard2.tid","TabbedExampleType":"demonstrations/TabbedExampleType.tid","Contents":"demonstrations/TableOfContents/Contents.tid","First":"demonstrations/TableOfContents/First.tid","FirstOne":"demonstrations/TableOfContents/FirstOne.tid","FirstThree":"demonstrations/TableOfContents/FirstThree.tid","FirstTwo":"demonstrations/TableOfContents/FirstTwo.tid","Fourth":"demonstrations/TableOfContents/Fourth.tid","Second":"demonstrations/TableOfContents/Second.tid","SecondOne":"demonstrations/TableOfContents/SecondOne.tid","SecondThree":"demonstrations/TableOfContents/SecondThree.tid","SecondThreeOne":"demonstrations/TableOfContents/SecondThreeOne.tid","SecondThreeThree":"demonstrations/TableOfContents/SecondThreeThree.tid","SecondThreeTwo":"demonstrations/TableOfContents/SecondThreeTwo.tid","SecondTwo":"demonstrations/TableOfContents/SecondTwo.tid","Third":"demonstrations/TableOfContents/Third.tid","ThirdOne":"demonstrations/TableOfContents/ThirdOne.tid","ThirdThree":"demonstrations/TableOfContents/ThirdThree.tid","ThirdTwo":"demonstrations/TableOfContents/ThirdTwo.tid","Example Table of Contents: Expandable":"demonstrations/TableOfContentsMacro Expandable Example.tid","Example Table of Contents: Selectively Expandable":"demonstrations/TableOfContentsMacro Selective Expandable Example.tid","Example Table of Contents: Simple":"demonstrations/TableOfContentsMacro Simple Example.tid","Example Table of Contents: Sorted Expandable":"demonstrations/TableOfContentsMacro Sorted Expandable Example.tid","Example Table of Contents: Tabbed Internal":"demonstrations/TableOfContentsMacro Tabbed Example.tid","Example Table of Contents: Tabbed External":"demonstrations/TableOfContentsMacro Tabbed External Example.tid","Example for tag Macro":"demonstrations/Tagged with TagMacro.tid","Compose ballad":"demonstrations/Tasks/Compose ballad.tid","Get the Ring":"demonstrations/Tasks/Get the Ring.tid","Go to Mordor":"demonstrations/Tasks/Go to Mordor.tid","Kill the Dragon":"demonstrations/Tasks/Kill the Dragon.tid","Make the beds":"demonstrations/Tasks/Make the beds.tid","TaskManagementExample":"demonstrations/Tasks/TaskManagementExample.tid","done":"demonstrations/Tasks/done.tid","task":"demonstrations/Tasks/task.tid","TiddlyWiki.mp3":"demonstrations/TiddlyWiki.mp3","Days of the Week":"demonstrations/Weekdays/Days of the Week.tid","Friday":"demonstrations/Weekdays/Friday.tid","Monday":"demonstrations/Weekdays/Monday.tid","Saturday":"demonstrations/Weekdays/Saturday.tid","Sunday":"demonstrations/Weekdays/Sunday.tid","Thursday":"demonstrations/Weekdays/Thursday.tid","Tuesday":"demonstrations/Weekdays/Tuesday.tid","Wednesday":"demonstrations/Weekdays/Wednesday.tid","sampletag1":"demonstrations/sampletag1.tid","sampletag2":"demonstrations/sampletag2.tid","Blog Edition":"editions/Blog Edition.tid","Editions":"editions/Editions.tid","Empty Edition":"editions/Empty Edition.tid","Full Edition":"editions/Full Edition.tid","Résumé Builder Edition":"editions/Resume Builder Edition.tid","Text-Slicer Edition":"editions/Text Slicer Edition.tid","XLSX Utilities Edition":"editions/XLSX Utilities Edition.tid","AutoSave":"features/AutoSave.tid","DateFormat":"features/DateFormat.tid","Drag and Drop":"features/Drag and Drop.tid","Features":"features/Features.tid","Future Proof":"features/Future Proof.tid","Importing Tiddlers":"features/Importing Tiddlers.tid","LazyLoading":"features/LazyLoading.tid","Modals":"features/Modals.tid","Notifications":"features/Notifications.tid","SafeMode":"features/SafeMode.tid","Scalability":"features/Scalability.tid","Searching in TiddlyWiki":"features/Searching in TiddlyWiki.tid","ListField":"fields/ListField.tid","MultiTiddlerFileSyntax":"fileformats/MultiTiddlerFileSyntax.tid","MultiTiddlerFiles":"fileformats/MultiTiddlerFiles.tid","TiddlerFiles":"fileformats/TiddlerFiles.tid","Filter Operators":"filters/Filter Operators.tid","Introduction to filter notation":"filters/Introduction to filter notation.tid","addprefix Operator":"filters/addprefix.tid","addsuffix Operator":"filters/addsuffix.tid","after Operator":"filters/after.tid","all Operator":"filters/all.tid","allafter Operator":"filters/allafter.tid","allbefore Operator":"filters/allbefore.tid","append Operator":"filters/append.tid","backlinks Operator":"filters/backlinks.tid","before Operator":"filters/before.tid","bf Operator":"filters/bf.tid","butfirst Operator":"filters/butfirst.tid","butlast Operator":"filters/butlast.tid","commands Operator":"filters/commands.tid","count Operator":"filters/count_Operator.tid","days Operator":"filters/days.tid","decodehtml Operator":"filters/decodehtml_Operator.tid","decodeuri Operator":"filters/decodeuri_Operator.tid","decodeuricomponent Operator":"filters/decodeuricomponent_Operator.tid","each Operator":"filters/each.tid","eachday Operator":"filters/eachday.tid","editiondescription Operator":"filters/editiondescription.tid","editions Operator":"filters/editions.tid","encodehtml Operator":"filters/encodehtml_Operator.tid","encodeuri Operator":"filters/encodeuri_Operator.tid","encodeuricomponent Operator":"filters/encodeuricomponent_Operator.tid","enlist Operator":"filters/enlist Operator.tid","escaperegexp Operator":"filters/escaperegexp_Operator.tid","addprefix Operator (Examples)":"filters/examples/addprefix.tid","addsuffix Operator (Examples)":"filters/examples/addsuffix.tid","after Operator (Examples)":"filters/examples/after.tid","all Operator (Examples)":"filters/examples/all.tid","allafter Operator (Examples)":"filters/examples/allafter.tid","allbefore Operator (Examples)":"filters/examples/allbefore.tid","append Operator (Examples)":"filters/examples/append.tid","backlinks Operator (Examples)":"filters/examples/backlinks.tid","before Operator (Examples)":"filters/examples/before.tid","butlast Operator (Examples)":"filters/examples/butlast.tid","commands Operator (Examples)":"filters/examples/commands.tid","count Operator (Examples)":"filters/examples/count_Operator_(Examples).tid","days Operator (Examples)":"filters/examples/days.tid","decodehtml Operator (Examples)":"filters/examples/decodehtml_Operator_(Examples).tid","decodeuri Operator (Examples)":"filters/examples/decodeuri_Operator_(Examples).tid","decodeuricomponent Operator (Examples)":"filters/examples/decodeuricomponent_Operator_(Examples).tid","each Operator (Examples)":"filters/examples/each.tid","eachday Operator (Examples)":"filters/examples/eachday.tid","encodehtml Operator (Examples)":"filters/examples/encodehtml_Operator_(Examples).tid","encodeuri Operator (Examples)":"filters/examples/encodeuri_Operator_(Examples).tid","encodeuricomponent Operator (Examples)":"filters/examples/encodeuricomponent_Operator_(Examples).tid","enlist Operator (Examples)":"filters/examples/enlist Operator (Examples).tid","escaperegexp Operator (Examples)":"filters/examples/escaperegexp_Operator_(Examples).tid","field Operator (Examples)":"filters/examples/field.tid","fields Operator (Examples)":"filters/examples/fields.tid","first Operator (Examples)":"filters/examples/first.tid","get Operator (Examples)":"filters/examples/get.tid","getindex Operator (Examples)":"filters/examples/getindex.tid","has Operator (Examples)":"filters/examples/has.tid","indexes Operator (Examples)":"filters/examples/indexes.tid","is Operator (Examples)":"filters/examples/is.tid","last Operator (Examples)":"filters/examples/last.tid","limit Operator (Examples)":"filters/examples/limit.tid","links Operator (Examples)":"filters/examples/links.tid","list Operator (Examples)":"filters/examples/list.tid","listed Operator (Examples)":"filters/examples/listed.tid","minlength Operator (Examples)":"filters/examples/minlength.tid","modules Operator (Examples)":"filters/examples/modules.tid","moduletypes Operator (Examples)":"filters/examples/moduletypes.tid","move Operator (Examples)":"filters/examples/move.tid","next Operator (Examples)":"filters/examples/next.tid","nsort Operator (Examples)":"filters/examples/nsort.tid","nsortcs Operator (Examples)":"filters/examples/nsortcs.tid","nth Operator (Examples)":"filters/examples/nth.tid","plugintiddlers Operator (Examples)":"filters/examples/plugintiddlers.tid","prefix Operator (Examples)":"filters/examples/prefix.tid","prepend Operator (Examples)":"filters/examples/prepend.tid","previous Operator (Examples)":"filters/examples/previous.tid","putafter Operator (Examples)":"filters/examples/putafter.tid","putbefore Operator (Examples)":"filters/examples/putbefore.tid","putfirst Operator (Examples)":"filters/examples/putfirst.tid","putlast Operator (Examples)":"filters/examples/putlast.tid","regexp Operator (Examples)":"filters/examples/regexp.tid","remove Operator (Examples)":"filters/examples/remove.tid","removeprefix Operator (Examples)":"filters/examples/removeprefix.tid","removesuffix Operator (Examples)":"filters/examples/removesuffix.tid","replace Operator (Examples)":"filters/examples/replace.tid","rest Operator (Examples)":"filters/examples/rest.tid","reverse Operator (Examples)":"filters/examples/reverse.tid","sameday Operator (Examples)":"filters/examples/sameday.tid","search Operator (Examples)":"filters/examples/search.tid","shadowsource Operator (Examples)":"filters/examples/shadowsource.tid","sort Operator (Examples)":"filters/examples/sort.tid","sortby Operator (Examples)":"filters/examples/sortby.tid","sortcs Operator (Examples)":"filters/examples/sortcs.tid","splitbefore Operator (Examples)":"filters/examples/splitbefore.tid","storyviews Operator (Examples)":"filters/examples/storyviews.tid","stringify Operator (Examples)":"filters/examples/stringify_Operator_(Examples).tid","suffix Operator (Examples)":"filters/examples/suffix.tid","tag Operator (Examples)":"filters/examples/tag.tid","tagging Operator (Examples)":"filters/examples/tagging.tid","tags Operator (Examples)":"filters/examples/tags.tid","title Operator (Examples)":"filters/examples/title.tid","untagged Operator (Examples)":"filters/examples/untagged.tid","field Operator":"filters/field.tid","fields Operator":"filters/fields.tid","first Operator":"filters/first.tid","get Operator":"filters/get.tid","getindex Operator":"filters/getindex.tid","has Operator":"filters/has.tid","haschanged Operator":"filters/haschanged.tid","indexes Operator":"filters/indexes.tid","insertbefore Operator":"filters/insertbefore Operator.tid","is Operator":"filters/is.tid","last Operator":"filters/last.tid","limit Operator":"filters/limit.tid","links Operator":"filters/links.tid","list Operator":"filters/list.tid","listed Operator":"filters/listed.tid","minlength Operator":"filters/minlength.tid","modules Operator":"filters/modules.tid","moduletypes Operator":"filters/moduletypes.tid","move Operator":"filters/move.tid","next Operator":"filters/next.tid","nsort Operator":"filters/nsort.tid","nsortcs Operator":"filters/nsortcs.tid","nth Operator":"filters/nth.tid","order Operator":"filters/order_Operator.tid","plugintiddlers Operator":"filters/plugintiddlers.tid","prefix Operator":"filters/prefix.tid","prepend Operator":"filters/prepend.tid","previous Operator":"filters/previous.tid","putafter Operator":"filters/putafter.tid","putbefore Operator":"filters/putbefore.tid","putfirst Operator":"filters/putfirst.tid","putlast Operator":"filters/putlast.tid","regexp Operator":"filters/regexp.tid","remove Operator":"filters/remove.tid","removeprefix Operator":"filters/removeprefix.tid","removesuffix Operator":"filters/removesuffix.tid","replace Operator":"filters/replace.tid","rest Operator":"filters/rest.tid","reverse Operator":"filters/reverse.tid","sameday Operator":"filters/sameday.tid","search Operator":"filters/search.tid","shadowsource Operator":"filters/shadowsource.tid","sort Operator":"filters/sort.tid","sortby Operator":"filters/sortby.tid","sortcs Operator":"filters/sortcs.tid","splitbefore Operator":"filters/splitbefore.tid","storyviews Operator":"filters/storyviews.tid","stringify Operator":"filters/stringify_Operator.tid","suffix Operator":"filters/suffix.tid","Filter Expression":"filters/syntax/Filter Expression.tid","Filter Parameter":"filters/syntax/Filter Parameter.tid","Filter Run":"filters/syntax/Filter Run.tid","Filter Step":"filters/syntax/Filter Step.tid","Filter Syntax":"filters/syntax/Filter Syntax.tid","Filter Whitespace":"filters/syntax/Filter Whitespace.tid","tag Operator":"filters/tag.tid","tagging Operator":"filters/tagging.tid","tags Operator":"filters/tags.tid","title Operator":"filters/title.tid","untagged Operator":"filters/untagged.tid","GettingStarted - Android":"gettingstarted/GettingStarted - Android.tid","GettingStarted - Chrome":"gettingstarted/GettingStarted - Chrome.tid","GettingStarted - Firefox":"gettingstarted/GettingStarted - Firefox.tid","GettingStarted - Internet Explorer":"gettingstarted/GettingStarted - Internet Explorer.tid","GettingStarted - Node.js":"gettingstarted/GettingStarted - Node.js.tid","GettingStarted - Online":"gettingstarted/GettingStarted - Online.tid","GettingStarted - Safari":"gettingstarted/GettingStarted - Safari.tid","GettingStarted - WebDAV":"gettingstarted/GettingStarted - WebDAV.tid","GettingStarted - iOS":"gettingstarted/GettingStarted - iOS.tid","GettingStarted":"gettingstarted/GettingStarted.tid","A Gentle Guide to TiddlyWiki":"hellothere/A Gentle Guide to TiddlyWiki.tid","Discover TiddlyWiki":"hellothere/Discover TiddlyWiki.tid","HelloThere":"hellothere/HelloThere.tid","HelloThumbnail - TWEUM2017":"hellothere/HelloThumbnail - TWEUM2017.tid","HelloThumbnail":"hellothere/HelloThumbnail.tid","Some of the things you can do with TiddlyWiki":"hellothere/Some of the things you can do with TiddlyWiki.tid","Ten reasons to switch to TiddlyWiki":"hellothere/Ten reasons to switch to TiddlyWiki.tid","What happened to the original TiddlyWiki?":"hellothere/What happened to the original TiddlyWiki.tid","HelloThumbnail - Classic":"hellothere/thumbnails/HelloThumbnail - Classic.tid","HelloThumbnail - Developers":"hellothere/thumbnails/HelloThumbnail - Developers.tid","HelloThumbnail - Gentle Guide":"hellothere/thumbnails/HelloThumbnail - Gentle Guide.tid","HelloThumbnail - HelpingTiddlyWiki":"hellothere/thumbnails/HelloThumbnail - HelpingTiddlyWiki.tid","HelloThumbnail - Introduction Video":"hellothere/thumbnails/HelloThumbnail - Introduction Video.tid","HelloThumbnail - Latest Version":"hellothere/thumbnails/HelloThumbnail - Latest Version.tid","HelloThumbnail - TiddlyMap":"hellothere/thumbnails/HelloThumbnail - TiddlyMap.tid","Hidden Setting: Search Minimum Length":"hiddensettings/Hidden Setting SearchMinLength.tid","Hidden Setting: Search AutoFocus":"hiddensettings/Hidden Setting_ Search AutoFocus.tid","Hidden Setting: Typing Refresh Delay":"hiddensettings/Hidden Setting_ Typin Refresh Delay.tid","Hidden Settings":"hiddensettings/Hidden Settings.tid","Adding a Twitter Follow button":"howtos/Adding a Twitter Follow button.tid","Adding a table of contents to the sidebar":"howtos/Adding_a_table_of_contents_to_the_sidebar.tid","Adopt a Titles Policy":"howtos/Adopt a Titles Policy.tid","Concatenating text and variables using macro substitution":"howtos/Concatenating text and variables using macro substitution.tid","Configuring the default TiddlerInfo tab":"howtos/Configuring the default TiddlerInfo tab.tid","Creating SubStories":"howtos/Creating SubStories.tid","Creating a custom export format":"howtos/Creating a custom export format.tid","$:/CurvedText":"howtos/CurvedText.tid","Editing Tiddlers with Emacs":"howtos/Editing Tiddlers with Emacs.tid","Editing Tiddlers with Vim":"howtos/Editing Tiddlers with Vim.tid","Formatting List Results as Tables with CSS - Specified Columns Methods":"howtos/Formatting List Results as Tables with CSS - Specified Columns Methods.tid","Formatting List Results as Tables with CSS - Variable Column Method":"howtos/Formatting List Results as Tables with CSS - Variable Column Method.tid","Formatting List Results as Tables (no CSS)":"howtos/Formatting_List_Results_as_Tables_(no_CSS).tid","Generating Static Sites with TiddlyWiki":"howtos/Generating Static Sites with TiddlyWiki.tid","How to add a banner for GitHub contributions":"howtos/How to add a banner for GitHub contributions.tid","How to apply custom styles by tag":"howtos/How to apply custom styles by tag.tid","How to build a TiddlyWiki5 from individual tiddlers":"howtos/How to build a TiddlyWiki5 from individual tiddlers.tid","How to change the sort order of sub-branches in a TOC macro":"howtos/How to change the sort order of sub-branches in a TOC macro.tid","How to embed PDF and other documents":"howtos/How to embed PDF and other documents.tid","How to export tiddlers":"howtos/How to export tiddlers.tid","How to put the last modification date in a banner":"howtos/How to put the last modification date in a banner.tid","How to add a new tab to the sidebar":"howtos/How_to_add_a_new_tab_to_the_sidebar.tid","How to turn off camel case linking":"howtos/How_to_turn_off_camel_case_linking.tid","KeyboardShortcuts":"howtos/KeyboardShortcuts.tid","Making a custom journal button":"howtos/Making a custom journal button.tid","Making curved text with SVG":"howtos/Making curved text with SVG.tid","Preserving open tiddlers at startup":"howtos/Preserving open tiddlers at startup.tid","$:/SVGExampleRadius":"howtos/SVGExampleRadius.tid","Setting a favicon":"howtos/Setting a favicon.tid","Setting a page background image":"howtos/Setting a page background image.tid","Sharing a TiddlyWiki on Dropbox":"howtos/Sharing a TiddlyWiki on Dropbox.tid","Structuring TiddlyWiki":"howtos/Structuring TiddlyWiki.tid","Tagging":"howtos/Tagging.tid","The First Rule of Using TiddlyWiki":"howtos/The First Rule of Using TiddlyWiki.tid","Upgrading":"howtos/Upgrading.tid","Using SVG":"howtos/Using SVG.tid","Using Stamp":"howtos/Using Stamp.tid","Using Stylesheets":"howtos/Using Stylesheets.tid","Using TiddlyWiki for GitHub project documentation":"howtos/Using TiddlyWiki for GitHub project documentation.tid","Using a custom path prefix with the client-server edition":"howtos/Using a custom path prefix with the client-server edition.tid","Windows HTA Hack":"howtos/Windows HTA Hack.tid","Blurry Lawn.jpg":"images/Blurry Lawn.jpg","Dev Thumbnail.jpg":"images/Dev Thumbnail.jpg","Introduction Video Thumbnail.jpg":"images/Introduction Video Thumbnail.jpg","Motovun Jack.ascii":"images/Motovun Jack.ascii.tid","Motovun Jack.jpg":"images/Motovun Jack.jpg","Motovun Jack.pdf":"images/Motovun Jack.pdf","Motovun Jack.svg":"images/Motovun Jack.svg","New Release Banner.png":"images/New Release Banner.png","Newnham Horizon.jpg":"images/Newnham Horizon.jpg","PerlinLight.jpg":"images/PerlinLight.jpg","Pinstripe.gif":"images/Pinstripe.gif","TWEUM Thumbnail.jpg":"images/TWEUM Thumbnail.jpg","Tiddler Fishes.svg":"images/Tiddler Fishes.svg","Tiddler Poster.png":"images/Tiddler Poster.png","TiddlyMap.png":"images/TiddlyMap.png","TiddlyWiki Classic.png":"images/TiddlyWiki Classic.png","$:/favicon.ico":"images/favicon.ico","$:/green_favicon.ico":"images/green_favicon.ico","Edición en Castellano":"languages/Castellano (Espana) Edition.tid","Chinese (Simplified) Edition":"languages/Chinese (Simplified) Edition.tid","Chinese (Traditional) Edition":"languages/Chinese (Traditional) Edition.tid","Édition en Français (France)":"languages/French (France) Edition.tid","Deutsch (Österreich) Edition":"languages/German (Austria) Edition.tid","Deutsch (Deutschland) Edition":"languages/German (Germany) Edition.tid","Korean (Korea Republic) Edition":"languages/Korean (Korea Republic) Edition.tid","LanguageGallery":"languages/LanguageGallery.tid","Languages":"languages/Languages.tid","Copying tiddlers between TiddlyWiki files":"learning/Copying tiddlers between TiddlyWiki files.tid","Learning":"learning/Learning.tid","changecount Macro":"macros/ChangeCountMacro.tid","colour Macro":"macros/ColourMacro.tid","contrastcolour Macro":"macros/ContrastColourMacro.tid","Core Macros":"macros/CoreMacros.tid","csvtiddlers Macro":"macros/CsvTiddlersMacro.tid","datauri Macro":"macros/DataUriMacro.tid","dumpvariables Macro":"macros/DumpVariablesMacro.tid","jsontiddlers Macro":"macros/JsonTiddlersMacro.tid","lingo Macro":"macros/LingoMacro.tid","list-links Macro":"macros/ListMacro.tid","makedatauri Macro":"macros/MakeDataUriMacro.tid","now Macro":"macros/NowMacro.tid","qualify Macro":"macros/QualifyMacro.tid","resolvepath Macro":"macros/ResolvePath.tid","Stylesheet Macros":"macros/StylesheetMacros.tid","Table-of-Contents Macros":"macros/TableOfContentsMacro.tid","tabs Macro":"macros/TabsMacro.tid","tag Macro":"macros/TagMacro.tid","timeline Macro":"macros/TimelineMacro.tid","version Macro":"macros/VersionMacro.tid","colour-picker Macro":"macros/colour-picker Macro.tid","Macro Calls in WikiText (Examples)":"macros/examples/Macro Calls.tid","changecount Macro (Examples)":"macros/examples/changecount.tid","colour-picker Macro (Example 1)":"macros/examples/colour-picker Macro (Example 1).tid","colour-picker Macro (Examples)":"macros/examples/colour-picker Macro (Examples).tid","colour Macro (Examples)":"macros/examples/colour.tid","datauri Macro (Examples)":"macros/examples/datauri.tid","dumpvariables Macro (Examples)":"macros/examples/dumpvariables.tid","image-picker Macro (Example 1)":"macros/examples/image-picker Macro (Example 1).tid","image-picker Macro (Example 2)":"macros/examples/image-picker Macro (Example 2).tid","image-picker Macro (Examples)":"macros/examples/image-picker Macro (Examples).tid","lingo Macro (Examples)":"macros/examples/lingo.tid","list-links-draggable Macro (Examples)":"macros/examples/list-links-draggable Macro (Examples).tid","list-links Macro (Examples)":"macros/examples/list-links.tid","list-tagged-draggable Macro (Examples)":"macros/examples/list-tagged-draggable Macro (Examples).tid","makedatauri Macro (Examples)":"macros/examples/makedatauri.tid","now Macro (Examples)":"macros/examples/now.tid","$:/editions/tw5.com/macro-examples/qualify-transcluded":"macros/examples/qualify-transcluded.tid","qualify Macro (Examples)":"macros/examples/qualify.tid","resolvepath Macro (Examples)":"macros/examples/resolvepath.tid","tabs Macro (Examples)":"macros/examples/tabs.tid","tag Macro (Examples)":"macros/examples/tag.tid","thumbnail Macro (Examples)":"macros/examples/thumbnail Macro (Examples).tid","timeline Macro (Examples)":"macros/examples/timeline.tid","Table-of-Contents Macros (Examples)":"macros/examples/toc.tid","version Macro (Examples)":"macros/examples/version.tid","image-picker Macro":"macros/image-picker Macro.tid","$:/editions/tw5.com/macro-examples/say-hi-using-variables":"macros/import/say-hi-using-variables.tid","$:/editions/tw5.com/macro-examples/say-hi":"macros/import/say-hi.tid","$:/editions/tw5.com/macro-examples/tags-of-current-tiddler":"macros/import/tags-of-current-tiddler.tid","$:/editions/tw5.com/macro-examples/tv-get-export-image-link":"macros/import/tv-get-export-image-link.tid","$:/editions/tw5.com/macro-examples/tv-wikilink-tooltip":"macros/import/tv-wikilink-tooltip.tid","jsontiddler Macro":"macros/jsontiddler Macro.tid","list-links-draggable Macro":"macros/list-links-draggable Macro.tid","list-tagged-draggable Macro":"macros/list-tagged-draggable Macro.tid","Macro Call Syntax":"macros/syntax/Macro Call Syntax.tid","Macro Definition Syntax":"macros/syntax/Macro Definition Syntax.tid","Macro Syntax":"macros/syntax/Macro Syntax.tid","$:/editions/tw5.com/railroad/macro-parameter-value":"macros/syntax/MacroParameterValue.tid","tag-picker Macro":"macros/tag-picker_Macro.tid","tag-pill Macro":"macros/tag-pill_Macro.tid","thumbnail Macro":"macros/thumbnail Macro.tid","AlertMechanism":"mechanisms/AlertMechanism.tid","DraftMechanism":"mechanisms/DraftMechanism.tid","DragAndDropMechanism":"mechanisms/DragAndDropMechanism.tid","HistoryMechanism":"mechanisms/HistoryMechanism.tid","InfoMechanism":"mechanisms/InfoMechanism.tid","Mechanisms":"mechanisms/Mechanisms.tid","PluginMechanism":"mechanisms/PluginMechanism.tid","PopupMechanism":"mechanisms/PopupMechanism.tid","SavingMechanism":"mechanisms/SavingMechanism.tid","StateMechanism":"mechanisms/StateMechanism.tid","TranslationMechanism":"mechanisms/TranslationMechanism.tid","UpgradeMechanism":"mechanisms/UpgradeMechanism.tid","SampleModal":"messages/SampleModal.tid","WidgetMessage: tm-add-field":"messages/WidgetMessage_ tm-add-field.tid","WidgetMessage: tm-add-tag":"messages/WidgetMessage_ tm-add-tag.tid","WidgetMessage: tm-auto-save-wiki":"messages/WidgetMessage_ tm-auto-save-wiki.tid","WidgetMessage: tm-browser-refresh":"messages/WidgetMessage_ tm-browser-refresh.tid","WidgetMessage: tm-cancel-tiddler":"messages/WidgetMessage_ tm-cancel-tiddler.tid","WidgetMessage: tm-clear-password":"messages/WidgetMessage_ tm-clear-password.tid","WidgetMessage: tm-close-all-tiddlers":"messages/WidgetMessage_ tm-close-all-tiddlers.tid","WidgetMessage: tm-close-other-tiddlers":"messages/WidgetMessage_ tm-close-other-tiddlers.tid","WidgetMessage: tm-close-tiddler":"messages/WidgetMessage_ tm-close-tiddler.tid","WidgetMessage: tm-delete-tiddler":"messages/WidgetMessage_ tm-delete-tiddler.tid","WidgetMessage: tm-download-file":"messages/WidgetMessage_ tm-download-file.tid","WidgetMessage: tm-edit-bitmap-operation":"messages/WidgetMessage_ tm-edit-bitmap-operation.tid","WidgetMessage: tm-edit-text-operation":"messages/WidgetMessage_ tm-edit-text-operation.tid","WidgetMessage: tm-edit-tiddler":"messages/WidgetMessage_ tm-edit-tiddler.tid","WidgetMessage: tm-fold-all-tiddlers":"messages/WidgetMessage_ tm-fold-all-tiddlers.tid","WidgetMessage: tm-fold-other-tiddlers":"messages/WidgetMessage_ tm-fold-other-tiddlers.tid","WidgetMessage: tm-fold-tiddler":"messages/WidgetMessage_ tm-fold-tiddler.tid","WidgetMessage: tm-full-screen":"messages/WidgetMessage_ tm-full-screen.tid","WidgetMessage: tm-home":"messages/WidgetMessage_ tm-home.tid","WidgetMessage: tm-import-tiddlers":"messages/WidgetMessage_ tm-import-tiddlers.tid","WidgetMessage: tm-load-plugin-from-library":"messages/WidgetMessage_ tm-load-plugin-from-library.tid","WidgetMessage: tm-load-plugin-library":"messages/WidgetMessage_ tm-load-plugin-library.tid","WidgetMessage: tm-login":"messages/WidgetMessage_ tm-login.tid","WidgetMessage: tm-logout":"messages/WidgetMessage_ tm-logout.tid","WidgetMessage: tm-modal":"messages/WidgetMessage_ tm-modal.tid","WidgetMessage: tm-navigate":"messages/WidgetMessage_ tm-navigate.tid","WidgetMessage: tm-new-tiddler":"messages/WidgetMessage_ tm-new-tiddler.tid","WidgetMessage: tm-notify":"messages/WidgetMessage_ tm-notify.tid","WidgetMessage: tm-open-window":"messages/WidgetMessage_ tm-open-window.tid","WidgetMessage: tm-perform-import":"messages/WidgetMessage_ tm-perform-import.tid","WidgetMessage: tm-permalink":"messages/WidgetMessage_ tm-permalink.tid","WidgetMessage: tm-permaview":"messages/WidgetMessage_ tm-permaview.tid","WidgetMessage: tm-print":"messages/WidgetMessage_ tm-print.tid","WidgetMessage: tm-remove-field":"messages/WidgetMessage_ tm-remove-field.tid","WidgetMessage: tm-remove-tag":"messages/WidgetMessage_ tm-remove-tag.tid","WidgetMessage: tm-save-tiddler":"messages/WidgetMessage_ tm-save-tiddler.tid","WidgetMessage: tm-save-wiki":"messages/WidgetMessage_ tm-save-wiki.tid","WidgetMessage: tm-scroll":"messages/WidgetMessage_ tm-scroll.tid","WidgetMessage: tm-server-refresh":"messages/WidgetMessage_ tm-server-refresh.tid","WidgetMessage: tm-set-password":"messages/WidgetMessage_ tm-set-password.tid","WidgetMessage: tm-unfold-all-tiddlers":"messages/WidgetMessage_ tm-unfold-all-tiddlers.tid","Building TiddlyWikiClassic":"nodejs/Building TiddlyWikiClassic.tid","Customising Tiddler File Naming":"nodejs/Customising Tiddler File Naming.tid","Environment Variables on Node.js":"nodejs/Environment Variables on Node.js.tid","Installing TiddlyWiki Prerelease on Node.js":"nodejs/Installing TiddlyWiki Prerelease on Node.js.tid","Installing TiddlyWiki on Node.js":"nodejs/Installing TiddlyWiki on Node.js.tid","Naming of System Tiddlers":"nodejs/Naming of System Tiddlers.tid","Scripts for TiddlyWiki on Node.js":"nodejs/Scripts for TiddlyWiki on Node.js.tid","Serving TW5 from Android":"nodejs/Serving TW5 from Android.tid","TiddlyWiki on Node.js":"nodejs/TiddlyWiki on Node.js.tid","TiddlyWiki5 Versioning":"nodejs/TiddlyWiki5 Versioning.tid","Upgrading TiddlyWiki on Node.js":"nodejs/Upgrading TiddlyWiki on Node.js.tid","Using TiddlyWiki on Node.js":"nodejs/Using TiddlyWiki on Node.js.tid","Working with the TiddlyWiki5 repository":"nodejs/Working with the TiddlyWiki5 repository.tid","tiddlywiki.files Files":"nodejs/tiddlywiki.files_Files.tid","tiddlywiki.info Files":"nodejs/tiddlywiki.info_Files.tid","Beaker Browser":"platforms/Beaker_Browser.tid","Platforms":"platforms/Platforms.tid","TiddlyWiki in the Sky for TiddlyWeb":"platforms/TiddlyWiki in the Sky for TiddlyWeb.tid","TiddlyWiki on Beaker Browser":"platforms/TiddlyWiki_on_Beaker_Browser.tid","CodeMirror Plugin":"plugins/CodeMirror Plugin.tid","D3 Plugin":"plugins/D3 Plugin.tid","Disabling Plugins":"plugins/Disabling_Plugins.tid","Highlight Plugin":"plugins/Highlight Plugin.tid","Installing a plugin from the plugin library":"plugins/Installing a plugin from the plugin library.tid","KaTeX Plugin":"plugins/KaTeX Plugin.tid","Manually installing a plugin":"plugins/Manually installing a plugin.tid","Markdown Plugin":"plugins/Markdown Plugin.tid","Mobile Drag And Drop Shim Plugin":"plugins/Mobile Drag And Drop Shim Plugin.tid","OfficialPlugins":"plugins/OfficialPlugins.tid","Plugin Editions":"plugins/Plugin Editions.tid","PluginFolders":"plugins/PluginFolders.tid","Plugin Fields":"plugins/Plugin_Fields.tid","Plugin Information Tiddlers":"plugins/Plugin_Information_Tiddlers.tid","Plugins":"plugins/Plugins.tid","Railroad Plugin":"plugins/Railroad Plugin.tid","SaveTrail Plugin":"plugins/SaveTrail Plugin.tid","TW2Parser Plugin":"plugins/TW2Parser Plugin.tid","Twitter Plugin":"plugins/Twitter Plugin.tid","Uninstalling a plugin":"plugins/Uninstalling a plugin.tid","ContributingTemplate":"readme/ContributingTemplate.tid","ReadMe":"readme/ReadMe.tid","ReadMeBinFolder":"readme/ReadMeBinFolder.tid","TiddlyWiki2ReadMe":"readme/TiddlyWiki2ReadMe.tid","Reference":"reference/Reference.tid","BetaReleases":"releasenotes/BetaReleases.tid","Release 5.1.0":"releasenotes/Release 5.1.0.tid","Release 5.1.1":"releasenotes/Release 5.1.1.tid","Release 5.1.10":"releasenotes/Release 5.1.10.tid","Release 5.1.11":"releasenotes/Release 5.1.11.tid","Release 5.1.12":"releasenotes/Release 5.1.12.tid","Release 5.1.13":"releasenotes/Release 5.1.13.tid","Release 5.1.14":"releasenotes/Release 5.1.14.tid","Release 5.1.2":"releasenotes/Release 5.1.2.tid","Release 5.1.3":"releasenotes/Release 5.1.3.tid","Release 5.1.4":"releasenotes/Release 5.1.4.tid","Release 5.1.5":"releasenotes/Release 5.1.5.tid","Release 5.1.6":"releasenotes/Release 5.1.6.tid","Release 5.1.7":"releasenotes/Release 5.1.7.tid","Release 5.1.8":"releasenotes/Release 5.1.8.tid","Release 5.1.9":"releasenotes/Release 5.1.9.tid","ReleaseTemplate":"releasenotes/ReleaseTemplate.tid","Releases":"releasenotes/Releases.tid","TiddlyWiki Releases":"releasenotes/TiddlyWiki Releases.tid","AlphaReleases":"releasenotes/alpha/AlphaReleases.tid","Release 5.0.0-alpha.11":"releasenotes/alpha/Release 5.0.0alpha11.tid","Release 5.0.0-alpha.12":"releasenotes/alpha/Release 5.0.0alpha12.tid","Release 5.0.0-alpha.13":"releasenotes/alpha/Release 5.0.0alpha13.tid","Release 5.0.0-alpha.14":"releasenotes/alpha/Release 5.0.0alpha14.tid","Release 5.0.0-alpha.15":"releasenotes/alpha/Release 5.0.0alpha15.tid","Release 5.0.0-alpha.16":"releasenotes/alpha/Release 5.0.0alpha16.tid","Release 5.0.0-alpha.17":"releasenotes/alpha/Release 5.0.0alpha17.tid","Release 5.0.1-alpha":"releasenotes/alpha/Release 5.0.1alpha.tid","Changes to filters in 5.0.9-beta":"releasenotes/beta/Changes to filters in 5.0.9-beta.tid","Notes for upgrading to 5.0.11-beta":"releasenotes/beta/Notes for upgrading to 5.0.11-beta.tid","Notes for upgrading to 5.0.8-beta":"releasenotes/beta/Notes for upgrading to 5.0.8-beta.tid","Release 5.0.10-beta":"releasenotes/beta/Release 5.0.10beta.tid","Release 5.0.11-beta":"releasenotes/beta/Release 5.0.11beta.tid","Release 5.0.12-beta":"releasenotes/beta/Release 5.0.12beta.tid","Release 5.0.13-beta":"releasenotes/beta/Release 5.0.13beta.tid","Release 5.0.14-beta":"releasenotes/beta/Release 5.0.14beta.tid","Release 5.0.15-beta":"releasenotes/beta/Release 5.0.15beta.tid","Release 5.0.16-beta":"releasenotes/beta/Release 5.0.16beta.tid","Release 5.0.17-beta":"releasenotes/beta/Release 5.0.17beta.tid","Release 5.0.18-beta":"releasenotes/beta/Release 5.0.18beta.tid","Release 5.0.2-beta":"releasenotes/beta/Release 5.0.2beta.tid","Release 5.0.3-beta":"releasenotes/beta/Release 5.0.3beta.tid","Release 5.0.4-beta":"releasenotes/beta/Release 5.0.4beta.tid","Release 5.0.5-beta":"releasenotes/beta/Release 5.0.5beta.tid","Release 5.0.6-beta":"releasenotes/beta/Release 5.0.6beta.tid","Release 5.0.7-beta":"releasenotes/beta/Release 5.0.7beta.tid","Release 5.0.8-beta":"releasenotes/beta/Release 5.0.8beta.tid","Release 5.0.9-beta":"releasenotes/beta/Release 5.0.9beta.tid","RoadMap":"roadmap/RoadMap.tid","Encryption":"saving/Encryption.tid","Saving on Android":"saving/Saving on Android.tid","Saving on InternetExplorer":"saving/Saving on InternetExplorer.tid","Saving on Safari":"saving/Saving on Safari.tid","Saving on TiddlySpot":"saving/Saving on TiddlySpot.tid","Saving on a PHP Server":"saving/Saving on a PHP Server.tid","Saving on iPad/iPhone":"saving/Saving on iPad_iPhone.tid","Saving with TiddlyFox on Android":"saving/Saving with TiddlyFox on Android.tid","Saving with TiddlyFox":"saving/Saving with TiddlyFox.tid","Saving with TiddlyIE":"saving/Saving with TiddlyIE.tid","Saving with the HTML5 fallback saver":"saving/Saving with the HTML5 fallback saver.tid","Saving":"saving/Saving.tid","Documentation Macros":"styleguide/Documentation Macros.tid","Documentation Style Guide":"styleguide/Documentation Style Guide.tid","Instruction Tiddlers":"styleguide/Instruction Tiddlers.tid","Reference Tiddlers":"styleguide/Reference Tiddlers.tid","Spelling":"styleguide/Spelling.tid","Technical Prose Style":"styleguide/Technical Prose Style.tid","Tiddler Structure":"styleguide/Tiddler Structure.tid","Tiddler Title Policy":"styleguide/Tiddler Title Policy.tid","Typography":"styleguide/Typography.tid","$:/ContributionBanner":"system/ContributionBanner.tid","$:/DefaultTiddlers":"system/DefaultTiddlers.tid","$:/state/tab/sidebar--1835078512":"system/DefaultToContentsTab.tid","$:/GoogleAnalyticsAccount":"system/GoogleAnalyticsAccount.tid","$:/GoogleAnalyticsDomain":"system/GoogleAnalyticsDomain.tid","$:/SiteSubtitle":"system/SiteSubtitle.tid","$:/SiteTitle":"system/SiteTitle.tid","$:/editions/tw5.com/TiddlerInfo/Sources":"system/Sources.tid","$:/StaticBanner":"system/StaticBanner.tid","$:/editions/tw5.com/doc-macros":"system/doc-macros.tid","$:/editions/tw5.com/doc-styles":"system/doc-styles.tid","$:/editions/tw5.com/snippets/download-empty-button":"system/download-empty-button.tid","$:/editions/tw5.com/download-empty":"system/download-empty.tid","$:/edition/tw5.com/dropbox-url.js":"system/dropbox-url-macro.js","$:/editions/tw5.com/if-macro.js":"system/if-macro.js","$:/language":"system/language.tid","$:/editions/tw5.com/operator-macros":"system/operator-macros.tid","$:/editions/tw5.com/operator-template":"system/operator-template.tid","$:/themes/tiddlywiki/vanilla/options/sidebarlayout":"system/sidebarlayout.tid","$:/core/templates/static.content":"system/static.content.tid","$:/editions/tw5.com/style-guide-macros":"system/style-guide-macros.tid","$:/theme":"system/theme.tid","$:/_tw5.com-styles":"system/tw5.com-styles.tid","$:/editions/tw5.com/variable-macros":"system/variable-macros.tid","$:/editions/tw5.com/version-macros":"system/version-macros.tid","$:/editions/tw5.com/wikitext-macros":"system/wikitext-macros.tid","TiddlyDesktop Release 0.0.1":"tiddlydesktop/TiddlyDesktop_Release_0.0.1.tid","TiddlyDesktop Release 0.0.2":"tiddlydesktop/TiddlyDesktop_Release_0.0.2.tid","TiddlyDesktop Release 0.0.3":"tiddlydesktop/TiddlyDesktop_Release_0.0.3.tid","TiddlyDesktop Release 0.0.4":"tiddlydesktop/TiddlyDesktop_Release_0.0.4.tid","TiddlyDesktop Release 0.0.5":"tiddlydesktop/TiddlyDesktop_Release_0.0.5.tid","TiddlyDesktop Release 0.0.6":"tiddlydesktop/TiddlyDesktop_Release_0.0.6.tid","TiddlyDesktop Release 0.0.7":"tiddlydesktop/TiddlyDesktop_Release_0.0.7.tid","TiddlyDesktop Release 0.0.8":"tiddlydesktop/TiddlyDesktop_Release_0.0.8.tid","TiddlyDesktop Releases":"tiddlydesktop/TiddlyDesktop_Releases.tid","Core Variables":"variables/Core Variables.tid","Variables":"variables/Variables.tid","currentTiddler Variable":"variables/WidgetVariable_ currentTiddler.tid","storyTiddler Variable":"variables/WidgetVariable_ storyTiddler.tid","transclusion Variable":"variables/WidgetVariable_ transclusion.tid","actionTiddler Variable":"variables/actionTiddler Variable.tid","currentTiddler Variable (Examples)":"variables/examples/currentTiddler.tid","storyTiddler Variable (Examples)":"variables/examples/storyTiddler.tid","transclusion Variable (Examples)":"variables/examples/transclusion.tid","tv-config-toolbar-class Variable (Examples)":"variables/examples/tv-config-toolbar-class.tid","tv-config-toolbar-icons Variable (Examples)":"variables/examples/tv-config-toolbar-icons.tid","tv-config-toolbar-text Variable (Examples)":"variables/examples/tv-config-toolbar-text.tid","tv-get-export-image-link Variable (Examples)":"variables/examples/tv-get-export-image-link.tid","tv-wikilink-tooltip Variable (Examples)":"variables/examples/tv-wikilink-tooltip.tid","tv-wikilinks Variable (Examples)":"variables/examples/tv-wikilinks.tid","namespace Variable":"variables/namespace.tid","tv-auto-open-on-import Variable":"variables/tv-auto-open-on-import.tid","tv-config-toolbar-class Variable":"variables/tv-config-toolbar-class.tid","tv-config-toolbar-icons Variable":"variables/tv-config-toolbar-icons.tid","tv-config-toolbar-text Variable":"variables/tv-config-toolbar-text.tid","tv-get-export-image-link Variable":"variables/tv-get-export-image-link.tid","tv-get-export-link Variable":"variables/tv-get-export-link.tid","tv-get-export-path Variable":"variables/tv-get-export-path.tid","tv-tiddler-preview Variable":"variables/tv-tiddler-preview.tid","tv-wikilink-template Variable":"variables/tv-wikilink-template.tid","tv-wikilink-tooltip Variable":"variables/tv-wikilink-tooltip.tid","tv-wikilinks Variable":"variables/tv-wikilinks.tid","Getting Started Video":"videos/Getting Started Video.tid","Introducing TiddlyDesktop Video":"videos/Introducing TiddlyDesktop Video.tid","Introduction Video":"videos/Introduction Video.tid","TiddlyWiki on Firefox for Android Video":"videos/TiddlyWiki on Firefox for Android Video.tid","Videos":"videos/Videos.tid","Working with the TiddlyWiki5 repository video":"videos/Working with the TiddlyWiki5 repository video.tid","ActionCreateTiddlerWidget":"widgets/ActionCreateTiddlerWidget.tid","ActionCreateTiddlerWidget Example":"widgets/ActionCreateTiddlerWidget_Example.tid","ActionDeleteFieldWidget":"widgets/ActionDeleteFieldWidget.tid","ActionDeleteTiddlerWidget":"widgets/ActionDeleteTiddlerWidget.tid","ActionListopsWidget":"widgets/ActionListopsWidget.tid","ActionNavigateWidget":"widgets/ActionNavigateWidget.tid","ActionSendMessageWidget":"widgets/ActionSendMessageWidget.tid","ActionSetFieldWidget":"widgets/ActionSetFieldWidget.tid","ActionWidgets":"widgets/ActionWidgets.tid","BrowseWidget":"widgets/BrowseWidget.tid","ButtonWidget":"widgets/ButtonWidget.tid","CheckboxWidget":"widgets/CheckboxWidget.tid","CodeBlockWidget":"widgets/CodeblockWidget.tid","CountWidget":"widgets/CountWidget.tid","DraggableWidget":"widgets/DraggableWidget.tid","DroppableWidget":"widgets/DroppableWidget.tid","DropzoneWidget":"widgets/DropzoneWidget.tid","EditBitmapWidget":"widgets/EditBitmapWidget.tid","EditTextWidget":"widgets/EditTextWidget.tid","EditWidget":"widgets/EditWidget.tid","EncryptWidget":"widgets/EncryptWidget.tid","EntityWidget":"widgets/EntityWidget.tid","FieldMangler Widget (Examples)":"widgets/FieldMangler Widget (Examples).tid","FieldManglerWidget":"widgets/FieldManglerWidget.tid","FieldsWidget":"widgets/FieldsWidget.tid","ImageWidget":"widgets/ImageWidget.tid","ImportVariablesWidget":"widgets/ImportVariablesWidget.tid","KeyboardWidget":"widgets/KeyboardWidget.tid","LinkCatcherWidget":"widgets/LinkCatcherWidget.tid","LinkWidget":"widgets/LinkWidget.tid","ListWidget":"widgets/ListWidget.tid","ListopsData":"widgets/ListopsData.tid","MacroCallWidget":"widgets/MacroCallWidget.tid","NavigatorWidget":"widgets/NavigatorWidget.tid","PasswordWidget":"widgets/PasswordWidget.tid","RadioWidget":"widgets/RadioWidget.tid","RevealWidget":"widgets/RevealWidget.tid","ScrollableWidget":"widgets/ScrollableWidget.tid","SelectWidget":"widgets/SelectWidget.tid","SetVariableWidget":"widgets/SetVariableWidget.tid","SetWidget":"widgets/SetWidget.tid","TextWidget":"widgets/TextWidget.tid","The Extended Listops Filters":"widgets/The Extended Listops Filters.tid","TiddlerWidget":"widgets/TiddlerWidget.tid","TranscludeWidget":"widgets/TranscludeWidget.tid","VarsWidget":"widgets/VarsWidget.tid","ViewWidget":"widgets/ViewWidget.tid","Widgets":"widgets/Widgets.tid","WikifyWidget":"widgets/WikifyWidget.tid","Block Quotes in WikiText":"wikitext/Block Quotes in WikiText.tid","Code Blocks in WikiText":"wikitext/Code Blocks in WikiText.tid","Dashes in WikiText":"wikitext/Dashes in WikiText.tid","Definitions in WikiText":"wikitext/Definitions in WikiText.tid","Formatting in WikiText":"wikitext/Formatting in WikiText.tid","HTML in WikiText":"wikitext/HTML in WikiText.tid","HTML Links in WikiText":"wikitext/HTML_Links_in_WikiText.tid","Hard Linebreaks in WikiText":"wikitext/Hard Linebreaks in WikiText.tid","Headings in WikiText":"wikitext/Headings in WikiText.tid","Horizontal Rules in WikiText":"wikitext/Horizontal Rules in WikiText.tid","Images in WikiText":"wikitext/Images in WikiText.tid","Linking in WikiText":"wikitext/Linking in WikiText.tid","Lists in WikiText":"wikitext/Lists in WikiText.tid","Macro Calls in WikiText":"wikitext/Macro Calls in WikiText.tid","Macro Definitions in WikiText":"wikitext/Macro Definitions in WikiText.tid","Macros in WikiText":"wikitext/Macros in WikiText.tid","Paragraphs in WikiText":"wikitext/Paragraphs in WikiText.tid","Styles and Classes in WikiText":"wikitext/Styles and Classes in WikiText.tid","Tables in WikiText":"wikitext/Tables in WikiText.tid","Transclusion Basic Usage":"wikitext/Transclusion Basic Usage.tid","Transclusion and Substitution":"wikitext/Transclusion and Substitution.tid","Transclusion in WikiText":"wikitext/Transclusion in WikiText.tid","Transclusion with Templates":"wikitext/Transclusion with Templates.tid","Typed Blocks in WikiText":"wikitext/Typed Blocks in WikiText.tid","Variables in WikiText":"wikitext/Variables in WikiText.tid","Widgets in WikiText":"wikitext/Widgets in WikiText.tid","Audio":"workingwithtw/Audio.tid","BrowserCompatibility":"workingwithtw/BrowserCompatibility.tid","Creating and editing tiddlers":"workingwithtw/Creating and editing tiddlers.tid","Creating journal tiddlers":"workingwithtw/Creating journal tiddlers.tid","Formatting text in TiddlyWiki":"workingwithtw/Formatting text in TiddlyWiki.tid","Navigating between open tiddlers":"workingwithtw/Navigating between open tiddlers.tid","Performance":"workingwithtw/Performance.tid","Sharing your tiddlers with others":"workingwithtw/Sharing your tiddlers with others.tid","Using links to navigate between tiddlers":"workingwithtw/Using links to navigate between tiddlers.tid","Working with TiddlyWiki":"workingwithtw/Working with TiddlyWiki.tid"}
$:/core/ui/DefaultSearchResultList
<$list filter='[prefix[$:/Contact/]tag[Contact/Fees]get[text]addsuffix[, ]]'>
<$view format='text' field='title'/>
</$list>
<$list filter='[tag[Contact/IT]get[text]addsuffix[, ]]'>
<$view format='text' field='title'/>
</$list>
<$list filter='[prefix[$:/Contact/]tag[Contact/Packages]get[text]addsuffix[, ]]'>
<$view format='text' field='title'/>
</$list>
<div class="tc-control-panel">
<<tabs "[all[shadows+tiddlers]tag[$:/tags/ControlPanel]!has[draft.of]]" "$:/core/ui/ControlPanel/Info">>
</div>
\define closeButton()
<$set name="hideIf" filter="[list[$:/StoryList]regexp:title[Welcome]]" value="<span></span>" emptyValue="""<span style='float:right;margin-right:3px;margin-top:-18px;font-size:90%;'><$transclude tiddler='$:/core/ui/Buttons/close' mode='block'/></span>"""><$macrocall $name="hideIf"/>
\end
<div style='position:fixed;bottom:10px;border:3px solid black;left:10px;width:400px;background-color:#fff;margin:0px;padding:0px 5px 0 5px;z-index:9999999;' class='boxShadow'>
<<closeButton>>
{{$:/core/ui/Buttons/new-tiddler}} | {{$:/core/ui/Buttons/save-wiki}} | {{$:/core/ui/Buttons/import}} | {{$:/zhishiqAdmin/popup}} | <<dropDlist $:/Res/KeyCtrls "Key ctrls">> | {{$:/RunThrough/AdminButton}}
<$edit-text tiddler='$:/Controls/myEditTiddler/Temp' tag='input' placeholder='Type name of file to edit'/> <$set name='ifThis' filter='[title{$:/Controls/myEditTiddler/Temp}!is[missing]]' value="""<$button message='tm-edit-tiddler' param={{$:/Controls/myEditTiddler/Temp}}>Edit </$button> """ emptyValue="""<$button style='border:none;background-color:transparent;'>{{$:/core/images/options-button}}</$button>"""><<ifThis>></$set> {{$:/PublicPrivate}}
{{$:/Controls/myEditTiddler/Temp||$:/copy}}
<$macrocall $name='tabs' tabsList='[tag[$:/Controls]]'>
</$list>">>
</div>
{
"tiddlers": {
"$:/Acknowledgements": {
"title": "$:/Acknowledgements",
"type": "text/vnd.tiddlywiki",
"text": "TiddlyWiki incorporates code from these fine OpenSource projects:\n\n* [[The Stanford Javascript Crypto Library|http://bitwiseshiftleft.github.io/sjcl/]]\n* [[The Jasmine JavaScript Test Framework|http://pivotal.github.io/jasmine/]]\n* [[Normalize.css by Nicolas Gallagher|http://necolas.github.io/normalize.css/]]\n\nAnd media from these projects:\n\n* World flag icons from [[Wikipedia|http://commons.wikimedia.org/wiki/Category:SVG_flags_by_country]]\n"
},
"$:/core/copyright.txt": {
"title": "$:/core/copyright.txt",
"type": "text/plain",
"text": "TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\n\nCopyright (c) 2004-2007, Jeremy Ruston\nCopyright (c) 2007-2017, UnaMesa Association\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
},
"$:/core/icon": {
"title": "$:/core/icon",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path d=\"M64 0l54.56 32v64L64 128 9.44 96V32L64 0zm21.127 95.408c-3.578-.103-5.15-.094-6.974-3.152l-1.42.042c-1.653-.075-.964-.04-2.067-.097-1.844-.07-1.548-1.86-1.873-2.8-.52-3.202.687-6.43.65-9.632-.014-1.14-1.593-5.17-2.157-6.61-1.768.34-3.546.406-5.34.497-4.134-.01-8.24-.527-12.317-1.183-.8 3.35-3.16 8.036-1.21 11.44 2.37 3.52 4.03 4.495 6.61 4.707 2.572.212 3.16 3.18 2.53 4.242-.55.73-1.52.864-2.346 1.04l-1.65.08c-1.296-.046-2.455-.404-3.61-.955-1.93-1.097-3.925-3.383-5.406-5.024.345.658.55 1.938.24 2.53-.878 1.27-4.665 1.26-6.4.47-1.97-.89-6.73-7.162-7.468-11.86 1.96-3.78 4.812-7.07 6.255-11.186-3.146-2.05-4.83-5.384-4.61-9.16l.08-.44c-3.097.59-1.49.37-4.82.628-10.608-.032-19.935-7.37-14.68-18.774.34-.673.664-1.287 1.243-.994.466.237.4 1.18.166 2.227-3.005 13.627 11.67 13.732 20.69 11.21.89-.25 2.67-1.936 3.905-2.495 2.016-.91 4.205-1.282 6.376-1.55 5.4-.63 11.893 2.276 15.19 2.37 3.3.096 7.99-.805 10.87-.615 2.09.098 4.143.483 6.16 1.03 1.306-6.49 1.4-11.27 4.492-12.38 1.814.293 3.213 2.818 4.25 4.167 2.112-.086 4.12.46 6.115 1.066 3.61-.522 6.642-2.593 9.833-4.203-3.234 2.69-3.673 7.075-3.303 11.127.138 2.103-.444 4.386-1.164 6.54-1.348 3.507-3.95 7.204-6.97 7.014-1.14-.036-1.805-.695-2.653-1.4-.164 1.427-.81 2.7-1.434 3.96-1.44 2.797-5.203 4.03-8.687 7.016-3.484 2.985 1.114 13.65 2.23 15.594 1.114 1.94 4.226 2.652 3.02 4.406-.37.58-.936.785-1.54 1.01l-.82.11zm-40.097-8.85l.553.14c.694-.27 2.09.15 2.83.353-1.363-1.31-3.417-3.24-4.897-4.46-.485-1.47-.278-2.96-.174-4.46l.02-.123c-.582 1.205-1.322 2.376-1.72 3.645-.465 1.71 2.07 3.557 3.052 4.615l.336.3z\" fill-rule=\"evenodd\"/></svg>"
},
"$:/core/images/advanced-search-button": {
"title": "$:/core/images/advanced-search-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-advanced-search-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M74.5651535,87.9848361 C66.9581537,93.0488876 57.8237115,96 48,96 C21.490332,96 0,74.509668 0,48 C0,21.490332 21.490332,0 48,0 C74.509668,0 96,21.490332 96,48 C96,57.8541369 93.0305793,67.0147285 87.9377231,74.6357895 L122.284919,108.982985 C125.978897,112.676963 125.973757,118.65366 122.284271,122.343146 C118.593975,126.033442 112.613238,126.032921 108.92411,122.343793 L74.5651535,87.9848361 Z M48,80 C65.673112,80 80,65.673112 80,48 C80,30.326888 65.673112,16 48,16 C30.326888,16 16,30.326888 16,48 C16,65.673112 30.326888,80 48,80 Z\"></path>\n <circle cx=\"48\" cy=\"48\" r=\"8\"></circle>\n <circle cx=\"28\" cy=\"48\" r=\"8\"></circle>\n <circle cx=\"68\" cy=\"48\" r=\"8\"></circle>\n </g>\n</svg>"
},
"$:/core/images/auto-height": {
"title": "$:/core/images/auto-height",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-auto-height tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <path d=\"M67.9867828,114.356363 L67.9579626,99.8785426 C67.9550688,98.4248183 67.1636987,97.087107 65.8909901,96.3845863 L49.9251455,87.5716209 L47.992126,95.0735397 L79.8995411,95.0735397 C84.1215894,95.0735397 85.4638131,89.3810359 81.686497,87.4948823 L49.7971476,71.5713518 L48.0101917,79.1500092 L79.992126,79.1500092 C84.2093753,79.1500092 85.5558421,73.4676733 81.7869993,71.5753162 L49.805065,55.517008 L48.0101916,63.0917009 L79.9921259,63.0917015 C84.2035118,63.0917016 85.5551434,57.4217887 81.7966702,55.5218807 L65.7625147,47.4166161 L67.9579705,50.9864368 L67.9579705,35.6148245 L77.1715737,44.8284272 C78.7336709,46.3905243 81.2663308,46.3905243 82.8284279,44.8284271 C84.390525,43.2663299 84.390525,40.7336699 82.8284278,39.1715728 L66.8284271,23.1715728 C65.2663299,21.6094757 62.73367,21.6094757 61.1715729,23.1715729 L45.1715729,39.1715729 C43.6094757,40.73367 43.6094757,43.26633 45.1715729,44.8284271 C46.73367,46.3905243 49.26633,46.3905243 50.8284271,44.8284271 L59.9579705,35.6988837 L59.9579705,50.9864368 C59.9579705,52.495201 60.806922,53.8755997 62.1534263,54.5562576 L78.1875818,62.6615223 L79.9921261,55.0917015 L48.0101917,55.0917009 C43.7929424,55.0917008 42.4464755,60.7740368 46.2153183,62.6663939 L78.1972526,78.7247021 L79.992126,71.1500092 L48.0101917,71.1500092 C43.7881433,71.1500092 42.4459197,76.842513 46.2232358,78.7286665 L78.1125852,94.6521971 L79.8995411,87.0735397 L47.992126,87.0735397 C43.8588276,87.0735397 42.4404876,92.5780219 46.0591064,94.5754586 L62.024951,103.388424 L59.9579785,99.8944677 L59.9867142,114.32986 L50.8284271,105.171573 C49.26633,103.609476 46.73367,103.609476 45.1715729,105.171573 C43.6094757,106.73367 43.6094757,109.26633 45.1715729,110.828427 L61.1715729,126.828427 C62.73367,128.390524 65.2663299,128.390524 66.8284271,126.828427 L82.8284278,110.828427 C84.390525,109.26633 84.390525,106.73367 82.8284279,105.171573 C81.2663308,103.609476 78.7336709,103.609476 77.1715737,105.171573 L67.9867828,114.356363 L67.9867828,114.356363 Z M16,20 L112,20 C114.209139,20 116,18.209139 116,16 C116,13.790861 114.209139,12 112,12 L16,12 C13.790861,12 12,13.790861 12,16 C12,18.209139 13.790861,20 16,20 L16,20 Z\"></path>\n</svg>"
},
"$:/core/images/blank": {
"title": "$:/core/images/blank",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-blank tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\"></svg>"
},
"$:/core/images/bold": {
"title": "$:/core/images/bold",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-bold tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M41.1456583,51.8095238 L41.1456583,21.8711485 L67.4985994,21.8711485 C70.0084159,21.8711485 72.4285598,22.0802967 74.7591036,22.4985994 C77.0896475,22.9169022 79.1512515,23.6638602 80.9439776,24.7394958 C82.7367036,25.8151314 84.170863,27.3090474 85.2464986,29.2212885 C86.3221342,31.1335296 86.859944,33.5835518 86.859944,36.5714286 C86.859944,41.9496067 85.2465147,45.8337882 82.0196078,48.2240896 C78.792701,50.614391 74.6694929,51.8095238 69.6498599,51.8095238 L41.1456583,51.8095238 Z M13,0 L13,128 L75.0280112,128 C80.7647346,128 86.3519803,127.28292 91.789916,125.848739 C97.2278517,124.414559 102.068139,122.203563 106.310924,119.215686 C110.553709,116.22781 113.929959,112.373506 116.439776,107.652661 C118.949592,102.931816 120.204482,97.3445701 120.204482,90.8907563 C120.204482,82.8832466 118.262391,76.0411115 114.378151,70.3641457 C110.493911,64.6871798 104.607883,60.7133634 96.719888,58.442577 C102.456611,55.6937304 106.788968,52.1680887 109.717087,47.8655462 C112.645206,43.5630037 114.109244,38.1849062 114.109244,31.7310924 C114.109244,25.7553389 113.123259,20.7357813 111.151261,16.6722689 C109.179262,12.6087565 106.400578,9.35201972 102.815126,6.90196078 C99.2296739,4.45190185 94.927196,2.68908101 89.907563,1.61344538 C84.8879301,0.537809748 79.3305627,0 73.2352941,0 L13,0 Z M41.1456583,106.128852 L41.1456583,70.9915966 L71.8011204,70.9915966 C77.896389,70.9915966 82.7964334,72.3958776 86.5014006,75.2044818 C90.2063677,78.0130859 92.0588235,82.7039821 92.0588235,89.2773109 C92.0588235,92.6237329 91.4911355,95.3725383 90.3557423,97.5238095 C89.2203491,99.6750808 87.6965548,101.378145 85.7843137,102.633053 C83.8720726,103.887961 81.661077,104.784311 79.1512605,105.322129 C76.641444,105.859947 74.0121519,106.128852 71.2633053,106.128852 L41.1456583,106.128852 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/cancel-button": {
"title": "$:/core/images/cancel-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-cancel-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n\t<g fill-rule=\"evenodd\">\n\t <path d=\"M64,76.3137085 L47.0294734,93.2842351 C43.9038742,96.4098343 38.8399231,96.4084656 35.7157288,93.2842712 C32.5978915,90.166434 32.5915506,85.0947409 35.7157649,81.9705266 L52.6862915,65 L35.7157649,48.0294734 C32.5901657,44.9038742 32.5915344,39.8399231 35.7157288,36.7157288 C38.833566,33.5978915 43.9052591,33.5915506 47.0294734,36.7157649 L64,53.6862915 L80.9705266,36.7157649 C84.0961258,33.5901657 89.1600769,33.5915344 92.2842712,36.7157288 C95.4021085,39.833566 95.4084494,44.9052591 92.2842351,48.0294734 L75.3137085,65 L92.2842351,81.9705266 C95.4098343,85.0961258 95.4084656,90.1600769 92.2842712,93.2842712 C89.166434,96.4021085 84.0947409,96.4084494 80.9705266,93.2842351 L64,76.3137085 Z M64,129 C99.346224,129 128,100.346224 128,65 C128,29.653776 99.346224,1 64,1 C28.653776,1 1.13686838e-13,29.653776 1.13686838e-13,65 C1.13686838e-13,100.346224 28.653776,129 64,129 Z M64,113 C90.509668,113 112,91.509668 112,65 C112,38.490332 90.509668,17 64,17 C37.490332,17 16,38.490332 16,65 C16,91.509668 37.490332,113 64,113 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/chevron-down": {
"title": "$:/core/images/chevron-down",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-chevron-down tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n\t<g fill-rule=\"evenodd\" transform=\"translate(64.000000, 40.500000) rotate(-270.000000) translate(-64.000000, -40.500000) translate(-22.500000, -26.500000)\">\n <path d=\"M112.743107,112.12741 C111.310627,113.561013 109.331747,114.449239 107.145951,114.449239 L27.9777917,114.449239 C23.6126002,114.449239 20.0618714,110.904826 20.0618714,106.532572 C20.0618714,102.169214 23.6059497,98.6159054 27.9777917,98.6159054 L99.2285381,98.6159054 L99.2285381,27.365159 C99.2285381,22.9999675 102.77295,19.4492387 107.145205,19.4492387 C111.508562,19.4492387 115.061871,22.993317 115.061871,27.365159 L115.061871,106.533318 C115.061871,108.71579 114.175869,110.694669 112.743378,112.127981 Z\" transform=\"translate(67.561871, 66.949239) rotate(-45.000000) translate(-67.561871, -66.949239) \"></path>\n <path d=\"M151.35638,112.12741 C149.923899,113.561013 147.94502,114.449239 145.759224,114.449239 L66.5910645,114.449239 C62.225873,114.449239 58.6751442,110.904826 58.6751442,106.532572 C58.6751442,102.169214 62.2192225,98.6159054 66.5910645,98.6159054 L137.841811,98.6159054 L137.841811,27.365159 C137.841811,22.9999675 141.386223,19.4492387 145.758478,19.4492387 C150.121835,19.4492387 153.675144,22.993317 153.675144,27.365159 L153.675144,106.533318 C153.675144,108.71579 152.789142,110.694669 151.356651,112.127981 Z\" transform=\"translate(106.175144, 66.949239) rotate(-45.000000) translate(-106.175144, -66.949239) \"></path>\n\t</g>\n</svg>"
},
"$:/core/images/chevron-left": {
"title": "$:/core/images/chevron-left",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-chevron-left tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\" version=\"1.1\">\n <g fill-rule=\"evenodd\" transform=\"translate(92.500000, 64.000000) rotate(-180.000000) translate(-92.500000, -64.000000) translate(6.000000, -3.000000)\">\n <path d=\"M112.743107,112.12741 C111.310627,113.561013 109.331747,114.449239 107.145951,114.449239 L27.9777917,114.449239 C23.6126002,114.449239 20.0618714,110.904826 20.0618714,106.532572 C20.0618714,102.169214 23.6059497,98.6159054 27.9777917,98.6159054 L99.2285381,98.6159054 L99.2285381,27.365159 C99.2285381,22.9999675 102.77295,19.4492387 107.145205,19.4492387 C111.508562,19.4492387 115.061871,22.993317 115.061871,27.365159 L115.061871,106.533318 C115.061871,108.71579 114.175869,110.694669 112.743378,112.127981 Z\" transform=\"translate(67.561871, 66.949239) rotate(-45.000000) translate(-67.561871, -66.949239) \"></path>\n <path d=\"M151.35638,112.12741 C149.923899,113.561013 147.94502,114.449239 145.759224,114.449239 L66.5910645,114.449239 C62.225873,114.449239 58.6751442,110.904826 58.6751442,106.532572 C58.6751442,102.169214 62.2192225,98.6159054 66.5910645,98.6159054 L137.841811,98.6159054 L137.841811,27.365159 C137.841811,22.9999675 141.386223,19.4492387 145.758478,19.4492387 C150.121835,19.4492387 153.675144,22.993317 153.675144,27.365159 L153.675144,106.533318 C153.675144,108.71579 152.789142,110.694669 151.356651,112.127981 Z\" transform=\"translate(106.175144, 66.949239) rotate(-45.000000) translate(-106.175144, -66.949239) \"></path>\n </g>\n</svg>"
},
"$:/core/images/chevron-right": {
"title": "$:/core/images/chevron-right",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-chevron-right tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\" transform=\"translate(-48.000000, -3.000000)\">\n <path d=\"M112.743107,112.12741 C111.310627,113.561013 109.331747,114.449239 107.145951,114.449239 L27.9777917,114.449239 C23.6126002,114.449239 20.0618714,110.904826 20.0618714,106.532572 C20.0618714,102.169214 23.6059497,98.6159054 27.9777917,98.6159054 L99.2285381,98.6159054 L99.2285381,27.365159 C99.2285381,22.9999675 102.77295,19.4492387 107.145205,19.4492387 C111.508562,19.4492387 115.061871,22.993317 115.061871,27.365159 L115.061871,106.533318 C115.061871,108.71579 114.175869,110.694669 112.743378,112.127981 Z\" transform=\"translate(67.561871, 66.949239) rotate(-45.000000) translate(-67.561871, -66.949239) \"></path>\n <path d=\"M151.35638,112.12741 C149.923899,113.561013 147.94502,114.449239 145.759224,114.449239 L66.5910645,114.449239 C62.225873,114.449239 58.6751442,110.904826 58.6751442,106.532572 C58.6751442,102.169214 62.2192225,98.6159054 66.5910645,98.6159054 L137.841811,98.6159054 L137.841811,27.365159 C137.841811,22.9999675 141.386223,19.4492387 145.758478,19.4492387 C150.121835,19.4492387 153.675144,22.993317 153.675144,27.365159 L153.675144,106.533318 C153.675144,108.71579 152.789142,110.694669 151.356651,112.127981 Z\" transform=\"translate(106.175144, 66.949239) rotate(-45.000000) translate(-106.175144, -66.949239) \"></path>\n </g>\n</svg>"
},
"$:/core/images/chevron-up": {
"title": "$:/core/images/chevron-up",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-chevron-up tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n\t<g fill-rule=\"evenodd\" transform=\"translate(64.000000, 89.500000) rotate(-90.000000) translate(-64.000000, -89.500000) translate(-22.500000, 22.500000)\">\n <path d=\"M112.743107,112.12741 C111.310627,113.561013 109.331747,114.449239 107.145951,114.449239 L27.9777917,114.449239 C23.6126002,114.449239 20.0618714,110.904826 20.0618714,106.532572 C20.0618714,102.169214 23.6059497,98.6159054 27.9777917,98.6159054 L99.2285381,98.6159054 L99.2285381,27.365159 C99.2285381,22.9999675 102.77295,19.4492387 107.145205,19.4492387 C111.508562,19.4492387 115.061871,22.993317 115.061871,27.365159 L115.061871,106.533318 C115.061871,108.71579 114.175869,110.694669 112.743378,112.127981 Z\" transform=\"translate(67.561871, 66.949239) rotate(-45.000000) translate(-67.561871, -66.949239) \"></path>\n <path d=\"M151.35638,112.12741 C149.923899,113.561013 147.94502,114.449239 145.759224,114.449239 L66.5910645,114.449239 C62.225873,114.449239 58.6751442,110.904826 58.6751442,106.532572 C58.6751442,102.169214 62.2192225,98.6159054 66.5910645,98.6159054 L137.841811,98.6159054 L137.841811,27.365159 C137.841811,22.9999675 141.386223,19.4492387 145.758478,19.4492387 C150.121835,19.4492387 153.675144,22.993317 153.675144,27.365159 L153.675144,106.533318 C153.675144,108.71579 152.789142,110.694669 151.356651,112.127981 Z\" transform=\"translate(106.175144, 66.949239) rotate(-45.000000) translate(-106.175144, -66.949239) \"></path>\n\t</g>\n</svg>"
},
"$:/core/images/clone-button": {
"title": "$:/core/images/clone-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-clone-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M32.2650915,96 L32.2650915,120.002359 C32.2650915,124.419334 35.8432884,128 40.2627323,128 L120.002359,128 C124.419334,128 128,124.421803 128,120.002359 L128,40.2627323 C128,35.8457573 124.421803,32.2650915 120.002359,32.2650915 L96,32.2650915 L96,48 L108.858899,48 C110.519357,48 111.853018,49.3405131 111.853018,50.9941198 L111.853018,108.858899 C111.853018,110.519357 110.512505,111.853018 108.858899,111.853018 L50.9941198,111.853018 C49.333661,111.853018 48,110.512505 48,108.858899 L48,96 L32.2650915,96 Z\"></path>\n <path d=\"M40,56 L32.0070969,56 C27.5881712,56 24,52.418278 24,48 C24,43.5907123 27.5848994,40 32.0070969,40 L40,40 L40,32.0070969 C40,27.5881712 43.581722,24 48,24 C52.4092877,24 56,27.5848994 56,32.0070969 L56,40 L63.9929031,40 C68.4118288,40 72,43.581722 72,48 C72,52.4092877 68.4151006,56 63.9929031,56 L56,56 L56,63.9929031 C56,68.4118288 52.418278,72 48,72 C43.5907123,72 40,68.4151006 40,63.9929031 L40,56 Z M7.9992458,0 C3.58138434,0 0,3.5881049 0,7.9992458 L0,88.0007542 C0,92.4186157 3.5881049,96 7.9992458,96 L88.0007542,96 C92.4186157,96 96,92.4118951 96,88.0007542 L96,7.9992458 C96,3.58138434 92.4118951,0 88.0007542,0 L7.9992458,0 Z M19.0010118,16 C17.3435988,16 16,17.336731 16,19.0010118 L16,76.9989882 C16,78.6564012 17.336731,80 19.0010118,80 L76.9989882,80 C78.6564012,80 80,78.663269 80,76.9989882 L80,19.0010118 C80,17.3435988 78.663269,16 76.9989882,16 L19.0010118,16 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/close-all-button": {
"title": "$:/core/images/close-all-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-close-all-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\" transform=\"translate(-23.000000, -23.000000)\">\n <path d=\"M43,131 L22.9976794,131 C18.5827987,131 15,127.418278 15,123 C15,118.590712 18.5806831,115 22.9976794,115 L43,115 L43,94.9976794 C43,90.5827987 46.581722,87 51,87 C55.4092877,87 59,90.5806831 59,94.9976794 L59,115 L79.0023206,115 C83.4172013,115 87,118.581722 87,123 C87,127.409288 83.4193169,131 79.0023206,131 L59,131 L59,151.002321 C59,155.417201 55.418278,159 51,159 C46.5907123,159 43,155.419317 43,151.002321 L43,131 Z\" transform=\"translate(51.000000, 123.000000) rotate(-45.000000) translate(-51.000000, -123.000000) \"></path>\n <path d=\"M43,59 L22.9976794,59 C18.5827987,59 15,55.418278 15,51 C15,46.5907123 18.5806831,43 22.9976794,43 L43,43 L43,22.9976794 C43,18.5827987 46.581722,15 51,15 C55.4092877,15 59,18.5806831 59,22.9976794 L59,43 L79.0023206,43 C83.4172013,43 87,46.581722 87,51 C87,55.4092877 83.4193169,59 79.0023206,59 L59,59 L59,79.0023206 C59,83.4172013 55.418278,87 51,87 C46.5907123,87 43,83.4193169 43,79.0023206 L43,59 Z\" transform=\"translate(51.000000, 51.000000) rotate(-45.000000) translate(-51.000000, -51.000000) \"></path>\n <path d=\"M115,59 L94.9976794,59 C90.5827987,59 87,55.418278 87,51 C87,46.5907123 90.5806831,43 94.9976794,43 L115,43 L115,22.9976794 C115,18.5827987 118.581722,15 123,15 C127.409288,15 131,18.5806831 131,22.9976794 L131,43 L151.002321,43 C155.417201,43 159,46.581722 159,51 C159,55.4092877 155.419317,59 151.002321,59 L131,59 L131,79.0023206 C131,83.4172013 127.418278,87 123,87 C118.590712,87 115,83.4193169 115,79.0023206 L115,59 Z\" transform=\"translate(123.000000, 51.000000) rotate(-45.000000) translate(-123.000000, -51.000000) \"></path>\n <path d=\"M115,131 L94.9976794,131 C90.5827987,131 87,127.418278 87,123 C87,118.590712 90.5806831,115 94.9976794,115 L115,115 L115,94.9976794 C115,90.5827987 118.581722,87 123,87 C127.409288,87 131,90.5806831 131,94.9976794 L131,115 L151.002321,115 C155.417201,115 159,118.581722 159,123 C159,127.409288 155.419317,131 151.002321,131 L131,131 L131,151.002321 C131,155.417201 127.418278,159 123,159 C118.590712,159 115,155.419317 115,151.002321 L115,131 Z\" transform=\"translate(123.000000, 123.000000) rotate(-45.000000) translate(-123.000000, -123.000000) \"></path>\n </g>\n</svg>"
},
"$:/core/images/close-button": {
"title": "$:/core/images/close-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-close-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\">\n <path d=\"M65.0864256,75.4091629 L14.9727349,125.522854 C11.8515951,128.643993 6.78104858,128.64922 3.65685425,125.525026 C0.539017023,122.407189 0.5336324,117.334539 3.65902635,114.209145 L53.7727171,64.0954544 L3.65902635,13.9817637 C0.537886594,10.8606239 0.532659916,5.79007744 3.65685425,2.6658831 C6.77469148,-0.451954124 11.8473409,-0.457338747 14.9727349,2.66805521 L65.0864256,52.7817459 L115.200116,2.66805521 C118.321256,-0.453084553 123.391803,-0.458311231 126.515997,2.6658831 C129.633834,5.78372033 129.639219,10.8563698 126.513825,13.9817637 L76.4001341,64.0954544 L126.513825,114.209145 C129.634965,117.330285 129.640191,122.400831 126.515997,125.525026 C123.39816,128.642863 118.32551,128.648248 115.200116,125.522854 L65.0864256,75.4091629 L65.0864256,75.4091629 Z\"></path>\n </g>\n</svg>\n"
},
"$:/core/images/close-others-button": {
"title": "$:/core/images/close-others-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-close-others-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M64,128 C99.346224,128 128,99.346224 128,64 C128,28.653776 99.346224,0 64,0 C28.653776,0 0,28.653776 0,64 C0,99.346224 28.653776,128 64,128 Z M64,112 C90.509668,112 112,90.509668 112,64 C112,37.490332 90.509668,16 64,16 C37.490332,16 16,37.490332 16,64 C16,90.509668 37.490332,112 64,112 Z M64,96 C81.673112,96 96,81.673112 96,64 C96,46.326888 81.673112,32 64,32 C46.326888,32 32,46.326888 32,64 C32,81.673112 46.326888,96 64,96 Z M64,80 C72.836556,80 80,72.836556 80,64 C80,55.163444 72.836556,48 64,48 C55.163444,48 48,55.163444 48,64 C48,72.836556 55.163444,80 64,80 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/copy-clipboard": {
"title": "$:/core/images/copy-clipboard",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-copy-clipboard tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n\t<g fill-rule=\"evenodd\">\n\t\t<rect x=\"40\" y=\"40\" width=\"33\" height=\"8\" rx=\"4\"></rect>\n\t\t<rect x=\"40\" y=\"82\" width=\"17\" height=\"8\" rx=\"4\"></rect>\n\t\t<rect x=\"40\" y=\"54\" width=\"17\" height=\"8\" rx=\"4\"></rect>\n\t\t<rect x=\"40\" y=\"96\" width=\"33\" height=\"8\" rx=\"4\"></rect>\n\t\t<rect x=\"40\" y=\"68\" width=\"12\" height=\"8\" rx=\"4\"></rect>\n\t\t<path d=\"M40,16 L23.9992458,16 C19.5813843,16 16,19.5907123 16,24 C16,24.0016363 16.0000005,24.0032725 16.0000015,24.0049086 C16.0000005,24.0065441 16,24.0081803 16,24.0098166 L16,119.990183 C16,119.99182 16.0000005,119.993456 16.0000015,119.995092 C16.0000005,119.996727 16,119.998364 16,120 C16,124.409288 19.5813843,128 23.9992458,128 L104.000754,128 C106.205061,128 108.203844,127.105595 109.652065,125.659342 C111.102424,124.21251 112,122.214511 112,120.007595 L112,103.992405 C112,99.5776607 108.418278,96 104,96 C99.5907123,96 96,99.5783218 96,103.992405 L96,112 L32,112 L32,32 L96,32 L96,40.0075946 C96,44.4223393 99.581722,48 104,48 C108.409288,48 112,44.4216782 112,40.0075946 L112,23.9924054 C112,21.7851587 111.104671,19.7871591 109.657101,18.3409203 C108.203844,16.8944047 106.205061,16 104.000754,16 L88,16 C88,11.5907123 84.4151006,8 79.9929031,8 L48.0070969,8 C43.5881712,8 40,11.581722 40,16 Z M44,14.9958262 C44,12.7889923 45.7964248,11 48.0000255,11 L79.9999745,11 C82.2091276,11 84,12.7965212 84,14.9958262 L84,19.0041738 C84,21.2110077 82.2035752,23 79.9999745,23 L48.0000255,23 C45.7908724,23 44,21.2034788 44,19.0041738 L44,14.9958262 Z\"></path>\n\t\t<rect x=\"62\" y=\"64\" width=\"66\" height=\"16\" rx=\"8\"></rect>\n\t\t<path d=\"M60.6568542,85.6568542 L76.6568542,69.6568543 L65.3431458,69.6568542 L81.3431458,85.6568542 C84.4673401,88.7810486 89.5326599,88.7810486 92.6568542,85.6568542 C95.7810486,82.5326599 95.7810486,77.4673401 92.6568542,74.3431458 L76.6568542,58.3431458 C73.5326599,55.2189514 68.4673401,55.2189514 65.3431458,58.3431457 L49.3431458,74.3431457 C46.2189514,77.4673401 46.2189514,82.5326599 49.3431457,85.6568542 C52.4673401,88.7810486 57.5326599,88.7810486 60.6568542,85.6568542 L60.6568542,85.6568542 Z\" transform=\"translate(71.000000, 72.000000) rotate(-90.000000) translate(-71.000000, -72.000000) \"></path>\n\t</g>\n</svg>"
},
"$:/core/images/delete-button": {
"title": "$:/core/images/delete-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-delete-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\" transform=\"translate(12.000000, 0.000000)\">\n <rect x=\"0\" y=\"11\" width=\"105\" height=\"16\" rx=\"8\"></rect>\n <rect x=\"28\" y=\"0\" width=\"48\" height=\"16\" rx=\"8\"></rect>\n <rect x=\"8\" y=\"16\" width=\"16\" height=\"112\" rx=\"8\"></rect>\n <rect x=\"8\" y=\"112\" width=\"88\" height=\"16\" rx=\"8\"></rect>\n <rect x=\"80\" y=\"16\" width=\"16\" height=\"112\" rx=\"8\"></rect>\n <rect x=\"56\" y=\"16\" width=\"16\" height=\"112\" rx=\"8\"></rect>\n <rect x=\"32\" y=\"16\" width=\"16\" height=\"112\" rx=\"8\"></rect>\n </g>\n</svg>"
},
"$:/core/images/done-button": {
"title": "$:/core/images/done-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-done-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\">\n <path d=\"M3.52445141,76.8322939 C2.07397484,75.3828178 1.17514421,73.3795385 1.17514421,71.1666288 L1.17514421,23.1836596 C1.17514421,18.7531992 4.75686621,15.1751442 9.17514421,15.1751442 C13.5844319,15.1751442 17.1751442,18.7606787 17.1751442,23.1836596 L17.1751442,63.1751442 L119.173716,63.1751442 C123.590457,63.1751442 127.175144,66.7568662 127.175144,71.1751442 C127.175144,75.5844319 123.592783,79.1751442 119.173716,79.1751442 L9.17657227,79.1751442 C6.96796403,79.1751442 4.9674142,78.279521 3.51911285,76.8315312 Z\" id=\"Rectangle-285\" transform=\"translate(64.175144, 47.175144) rotate(-45.000000) translate(-64.175144, -47.175144) \"></path>\n </g>\n</svg>"
},
"$:/core/images/down-arrow": {
"title": "$:/core/images/down-arrow",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-down-arrow tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <path d=\"M109.35638,81.3533152 C107.923899,82.7869182 105.94502,83.6751442 103.759224,83.6751442 L24.5910645,83.6751442 C20.225873,83.6751442 16.6751442,80.1307318 16.6751442,75.7584775 C16.6751442,71.3951199 20.2192225,67.8418109 24.5910645,67.8418109 L95.8418109,67.8418109 L95.8418109,-3.40893546 C95.8418109,-7.77412698 99.3862233,-11.3248558 103.758478,-11.3248558 C108.121835,-11.3248558 111.675144,-7.78077754 111.675144,-3.40893546 L111.675144,75.7592239 C111.675144,77.9416955 110.789142,79.9205745 109.356651,81.3538862 Z\" transform=\"translate(64.175144, 36.175144) rotate(45.000000) translate(-64.175144, -36.175144) \"></path>\n</svg>"
},
"$:/core/images/download-button": {
"title": "$:/core/images/download-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-download-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path class=\"tc-image-download-button-ring\" d=\"M64,128 C99.346224,128 128,99.346224 128,64 C128,28.653776 99.346224,0 64,0 C28.653776,0 0,28.653776 0,64 C0,99.346224 28.653776,128 64,128 Z M64,112 C90.509668,112 112,90.509668 112,64 C112,37.490332 90.509668,16 64,16 C37.490332,16 16,37.490332 16,64 C16,90.509668 37.490332,112 64,112 Z\"/><path d=\"M34.3496823,66.4308767 L61.2415823,93.634668 C63.0411536,95.4551107 65.9588502,95.4551107 67.7584215,93.634668 L94.6503215,66.4308767 C96.4498928,64.610434 96.4498928,61.6588981 94.6503215,59.8384554 C93.7861334,58.9642445 92.6140473,58.4731195 91.3919019,58.4731195 L82.9324098,58.4731195 C80.3874318,58.4731195 78.3243078,56.3860674 78.3243078,53.8115729 L78.3243078,38.6615466 C78.3243078,36.0870521 76.2611837,34 73.7162058,34 L55.283798,34 C52.7388201,34 50.675696,36.0870521 50.675696,38.6615466 L50.675696,38.6615466 L50.675696,53.8115729 C50.675696,56.3860674 48.612572,58.4731195 46.0675941,58.4731195 L37.608102,58.4731195 C35.063124,58.4731195 33,60.5601716 33,63.134666 C33,64.3709859 33.4854943,65.5566658 34.3496823,66.4308767 L34.3496823,66.4308767 Z\"/></g></svg>"
},
"$:/core/images/edit-button": {
"title": "$:/core/images/edit-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-edit-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\">\n <path d=\"M116.870058,45.3431458 L108.870058,45.3431458 L108.870058,45.3431458 L108.870058,61.3431458 L116.870058,61.3431458 L116.870058,45.3431458 Z M124.870058,45.3431458 L127.649881,45.3431458 C132.066101,45.3431458 135.656854,48.9248678 135.656854,53.3431458 C135.656854,57.7524334 132.07201,61.3431458 127.649881,61.3431458 L124.870058,61.3431458 L124.870058,45.3431458 Z M100.870058,45.3431458 L15.6638275,45.3431458 C15.5064377,45.3431458 15.3501085,45.3476943 15.1949638,45.3566664 L15.1949638,45.3566664 C15.0628002,45.3477039 14.928279,45.3431458 14.7913977,45.3431458 C6.68160973,45.3431458 -8.34314575,53.3431458 -8.34314575,53.3431458 C-8.34314575,53.3431458 6.85614548,61.3431458 14.7913977,61.3431458 C14.9266533,61.3431458 15.0596543,61.3384973 15.190398,61.3293588 C15.3470529,61.3385075 15.5049057,61.3431458 15.6638275,61.3431458 L100.870058,61.3431458 L100.870058,45.3431458 L100.870058,45.3431458 Z\" transform=\"translate(63.656854, 53.343146) rotate(-45.000000) translate(-63.656854, -53.343146) \"></path>\n <path d=\"M35.1714596,124.189544 C41.9594858,123.613403 49.068777,121.917633 58.85987,118.842282 C60.6854386,118.268877 62.4306907,117.705515 65.1957709,116.802278 C81.1962861,111.575575 87.0734839,109.994907 93.9414474,109.655721 C102.29855,109.242993 107.795169,111.785371 111.520478,118.355045 C112.610163,120.276732 115.051363,120.951203 116.97305,119.861518 C118.894737,118.771832 119.569207,116.330633 118.479522,114.408946 C113.146151,105.003414 104.734907,101.112919 93.5468356,101.66546 C85.6716631,102.054388 79.4899908,103.716944 62.7116783,109.197722 C59.9734132,110.092199 58.2519873,110.64787 56.4625698,111.20992 C37.002649,117.322218 25.6914684,118.282267 16.8654804,112.957098 C14.9739614,111.815848 12.5154166,112.424061 11.3741667,114.31558 C10.2329168,116.207099 10.84113,118.665644 12.7326489,119.806894 C19.0655164,123.627836 26.4866335,124.926678 35.1714596,124.189544 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/erase": {
"title": "$:/core/images/erase",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-erase tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M60.0870401,127.996166 L123.102318,64.980888 C129.636723,58.4464827 129.629513,47.8655877 123.098967,41.3350425 L99.4657866,17.7018617 C92.927448,11.1635231 82.3486358,11.1698163 75.8199411,17.698511 L4.89768189,88.6207702 C-1.63672343,95.1551755 -1.6295126,105.736071 4.90103262,112.266616 L20.6305829,127.996166 L60.0870401,127.996166 Z M25.1375576,120.682546 L10.812569,106.357558 C7.5455063,103.090495 7.54523836,97.793808 10.8048093,94.5342371 L46.2691086,59.0699377 L81.7308914,94.5317205 L55.5800654,120.682546 L25.1375576,120.682546 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/excise": {
"title": "$:/core/images/excise",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-excise tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M56,107.313709 L53.6568542,109.656854 C50.5326599,112.781049 45.4673401,112.781049 42.3431457,109.656854 C39.2189514,106.53266 39.2189514,101.46734 42.3431458,98.3431457 L58.3431458,82.3431457 C61.4673401,79.2189514 66.5326599,79.2189514 69.6568542,82.3431458 L85.6568542,98.3431458 C88.7810486,101.46734 88.7810486,106.53266 85.6568542,109.656854 C82.5326599,112.781049 77.4673401,112.781049 74.3431458,109.656854 L72,107.313708 L72,121.597798 C72,125.133636 68.418278,128 64,128 C59.581722,128 56,125.133636 56,121.597798 L56,107.313709 Z M0,40.0070969 C0,35.5848994 3.59071231,32 8,32 C12.418278,32 16,35.5881712 16,40.0070969 L16,71.9929031 C16,76.4151006 12.4092877,80 8,80 C3.581722,80 0,76.4118288 0,71.9929031 L0,40.0070969 Z M32,40.0070969 C32,35.5848994 35.5907123,32 40,32 C44.418278,32 48,35.5881712 48,40.0070969 L48,71.9929031 C48,76.4151006 44.4092877,80 40,80 C35.581722,80 32,76.4118288 32,71.9929031 L32,40.0070969 Z M80,40.0070969 C80,35.5848994 83.5907123,32 88,32 C92.418278,32 96,35.5881712 96,40.0070969 L96,71.9929031 C96,76.4151006 92.4092877,80 88,80 C83.581722,80 80,76.4118288 80,71.9929031 L80,40.0070969 Z M56,8.00709688 C56,3.58489938 59.5907123,0 64,0 C68.418278,0 72,3.58817117 72,8.00709688 L72,39.9929031 C72,44.4151006 68.4092877,48 64,48 C59.581722,48 56,44.4118288 56,39.9929031 L56,8.00709688 Z M112,40.0070969 C112,35.5848994 115.590712,32 120,32 C124.418278,32 128,35.5881712 128,40.0070969 L128,71.9929031 C128,76.4151006 124.409288,80 120,80 C115.581722,80 112,76.4118288 112,71.9929031 L112,40.0070969 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/export-button": {
"title": "$:/core/images/export-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-export-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M8.00348646,127.999999 C8.00464867,128 8.00581094,128 8.00697327,128 L119.993027,128 C122.205254,128 124.207939,127.101378 125.657096,125.651198 L125.656838,125.65759 C127.104563,124.210109 128,122.21009 128,119.999949 L128,56.0000511 C128,51.5817449 124.409288,48 120,48 C115.581722,48 112,51.5797863 112,56.0000511 L112,112 L16,112 L16,56.0000511 C16,51.5817449 12.4092877,48 8,48 C3.581722,48 7.10542736e-15,51.5797863 7.10542736e-15,56.0000511 L7.10542736e-15,119.999949 C7.10542736e-15,124.418255 3.59071231,128 8,128 C8.00116233,128 8.0023246,128 8.00348681,127.999999 Z M56.6235633,27.3113724 L47.6580188,36.2769169 C44.5333664,39.4015692 39.4634864,39.4061295 36.339292,36.2819351 C33.2214548,33.1640979 33.2173444,28.0901742 36.3443103,24.9632084 L58.9616908,2.34582788 C60.5248533,0.782665335 62.5748436,0.000361191261 64.624516,2.38225238e-14 L64.6193616,0.00151809229 C66.6695374,0.000796251595 68.7211167,0.781508799 70.2854358,2.34582788 L92.9028163,24.9632084 C96.0274686,28.0878607 96.0320289,33.1577408 92.9078345,36.2819351 C89.7899973,39.3997724 84.7160736,39.4038827 81.5891078,36.2769169 L72.6235633,27.3113724 L72.6235633,88.5669606 C72.6235633,92.9781015 69.0418413,96.5662064 64.6235633,96.5662064 C60.2142756,96.5662064 56.6235633,92.984822 56.6235633,88.5669606 L56.6235633,27.3113724 L56.6235633,27.3113724 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/file": {
"title": "$:/core/images/file",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-file tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"nonzero\">\n <path d=\"M111.96811,30.5 L112,30.5 L112,119.999079 C112,124.417866 108.419113,128 104.000754,128 L23.9992458,128 C19.5813843,128 16,124.417687 16,119.999079 L16,8.00092105 C16,3.58213437 19.5808867,0 23.9992458,0 L81,0 L81,0.0201838424 C83.1589869,-0.071534047 85.3482153,0.707077645 86.9982489,2.35711116 L109.625176,24.9840387 C111.151676,26.510538 111.932942,28.4998414 111.96811,30.5 L111.96811,30.5 Z M81,8 L24,8 L24,120 L104,120 L104,30.5 L89.0003461,30.5 C84.5818769,30.5 81,26.9216269 81,22.4996539 L81,8 Z\"></path>\n <rect x=\"32\" y=\"36\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n <rect x=\"32\" y=\"52\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n <rect x=\"32\" y=\"68\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n <rect x=\"32\" y=\"84\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n <rect x=\"32\" y=\"100\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n <rect x=\"32\" y=\"20\" width=\"40\" height=\"8\" rx=\"4\"></rect>\n </g>\n</svg>"
},
"$:/core/images/fixed-height": {
"title": "$:/core/images/fixed-height",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-fixed-height tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M60,35.6568542 L50.8284271,44.8284271 C49.26633,46.3905243 46.73367,46.3905243 45.1715729,44.8284271 C43.6094757,43.26633 43.6094757,40.73367 45.1715729,39.1715729 L61.1715729,23.1715729 C62.73367,21.6094757 65.2663299,21.6094757 66.8284271,23.1715728 L82.8284278,39.1715728 C84.390525,40.7336699 84.390525,43.2663299 82.8284279,44.8284271 C81.2663308,46.3905243 78.7336709,46.3905243 77.1715737,44.8284272 L68,35.6568539 L68,93.3431461 L77.1715737,84.1715728 C78.7336709,82.6094757 81.2663308,82.6094757 82.8284279,84.1715729 C84.390525,85.7336701 84.390525,88.2663301 82.8284278,89.8284272 L66.8284271,105.828427 C65.2663299,107.390524 62.73367,107.390524 61.1715729,105.828427 L45.1715729,89.8284271 C43.6094757,88.26633 43.6094757,85.73367 45.1715729,84.1715729 C46.73367,82.6094757 49.26633,82.6094757 50.8284271,84.1715729 L60,93.3431458 L60,35.6568542 L60,35.6568542 Z M16,116 L112,116 C114.209139,116 116,114.209139 116,112 C116,109.790861 114.209139,108 112,108 L16,108 C13.790861,108 12,109.790861 12,112 C12,114.209139 13.790861,116 16,116 L16,116 Z M16,20 L112,20 C114.209139,20 116,18.209139 116,16 C116,13.790861 114.209139,12 112,12 L16,12 C13.790861,12 12,13.790861 12,16 C12,18.209139 13.790861,20 16,20 L16,20 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/fold-all-button": {
"title": "$:/core/images/fold-all-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-fold-all tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <rect x=\"0\" y=\"0\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n <rect x=\"0\" y=\"64\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n <path d=\"M64.0292774,58.6235628 C61.9791013,58.6242848 59.9275217,57.8435723 58.3632024,56.279253 L35.7458219,33.6618725 C32.6211696,30.5372202 32.6166093,25.4673401 35.7408036,22.3431458 C38.8586409,19.2253085 43.9325646,19.2211982 47.0595304,22.348164 L64.0250749,39.3137085 L80.9906194,22.348164 C84.1152717,19.2235117 89.1851518,19.2189514 92.3093461,22.3431458 C95.4271834,25.460983 95.4312937,30.5349067 92.3043279,33.6618725 L69.6869474,56.279253 C68.1237851,57.8424153 66.0737951,58.6247195 64.0241231,58.6250809 Z\" transform=\"translate(64.024316, 39.313708) scale(1, -1) translate(-64.024316, -39.313708) \"></path>\n <path d=\"M64.0292774,123.621227 C61.9791013,123.621949 59.9275217,122.841236 58.3632024,121.276917 L35.7458219,98.6595365 C32.6211696,95.5348842 32.6166093,90.4650041 35.7408036,87.3408098 C38.8586409,84.2229725 43.9325646,84.2188622 47.0595304,87.345828 L64.0250749,104.311373 L80.9906194,87.345828 C84.1152717,84.2211757 89.1851518,84.2166154 92.3093461,87.3408098 C95.4271834,90.458647 95.4312937,95.5325707 92.3043279,98.6595365 L69.6869474,121.276917 C68.1237851,122.840079 66.0737951,123.622383 64.0241231,123.622745 Z\" transform=\"translate(64.024316, 104.311372) scale(1, -1) translate(-64.024316, -104.311372) \"></path>\n </g>\n</svg>"
},
"$:/core/images/fold-button": {
"title": "$:/core/images/fold-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-fold tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <rect x=\"0\" y=\"0\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n <path d=\"M64.0292774,63.6235628 C61.9791013,63.6242848 59.9275217,62.8435723 58.3632024,61.279253 L35.7458219,38.6618725 C32.6211696,35.5372202 32.6166093,30.4673401 35.7408036,27.3431458 C38.8586409,24.2253085 43.9325646,24.2211982 47.0595304,27.348164 L64.0250749,44.3137085 L80.9906194,27.348164 C84.1152717,24.2235117 89.1851518,24.2189514 92.3093461,27.3431458 C95.4271834,30.460983 95.4312937,35.5349067 92.3043279,38.6618725 L69.6869474,61.279253 C68.1237851,62.8424153 66.0737951,63.6247195 64.0241231,63.6250809 Z\" transform=\"translate(64.024316, 44.313708) scale(1, -1) translate(-64.024316, -44.313708) \"></path>\n <path d=\"M64.0049614,105.998482 C61.9547853,105.999204 59.9032057,105.218491 58.3388864,103.654172 L35.7215059,81.0367916 C32.5968535,77.9121393 32.5922933,72.8422592 35.7164876,69.7180649 C38.8343248,66.6002276 43.9082485,66.5961173 47.0352144,69.7230831 L64.0007589,86.6886276 L80.9663034,69.7230831 C84.0909557,66.5984308 89.1608358,66.5938705 92.2850301,69.7180649 C95.4028673,72.8359021 95.4069777,77.9098258 92.2800119,81.0367916 L69.6626314,103.654172 C68.099469,105.217334 66.0494791,105.999639 63.999807,106 Z\" transform=\"translate(64.000000, 86.688628) scale(1, -1) translate(-64.000000, -86.688628) \"></path>\n </g>\n</svg>"
},
"$:/core/images/fold-others-button": {
"title": "$:/core/images/fold-others-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-fold-others tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <rect x=\"0\" y=\"56.0314331\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n <path d=\"M101.657101,104.948818 C100.207918,103.498614 98.2051847,102.599976 95.9929031,102.599976 L72,102.599976 L72,78.6070725 C72,76.3964271 71.1036108,74.3936927 69.6545293,72.9441002 L69.6571005,72.9488183 C68.2079177,71.4986143 66.2051847,70.5999756 63.9929031,70.5999756 L32.0070969,70.5999756 C27.5881712,70.5999756 24,74.1816976 24,78.5999756 C24,83.0092633 27.5848994,86.5999756 32.0070969,86.5999756 L56,86.5999756 L56,110.592879 C56,112.803524 56.8963895,114.806259 58.3454713,116.255852 L58.3429,116.251133 C59.7920828,117.701337 61.7948156,118.599976 64.0070969,118.599976 L88,118.599976 L88,142.592879 C88,147.011804 91.581722,150.599976 96,150.599976 C100.409288,150.599976 104,147.015076 104,142.592879 L104,110.607072 C104,108.396427 103.103611,106.393693 101.654529,104.9441 Z\" transform=\"translate(64.000000, 110.599976) rotate(-45.000000) translate(-64.000000, -110.599976) \"></path>\n <path d=\"M101.725643,11.7488671 C100.27646,10.2986632 98.2737272,9.40002441 96.0614456,9.40002441 L72.0685425,9.40002441 L72.0685425,-14.5928787 C72.0685425,-16.8035241 71.1721533,-18.8062584 69.7230718,-20.255851 L69.725643,-20.2511329 C68.2764602,-21.7013368 66.2737272,-22.5999756 64.0614456,-22.5999756 L32.0756394,-22.5999756 C27.6567137,-22.5999756 24.0685425,-19.0182536 24.0685425,-14.5999756 C24.0685425,-10.1906879 27.6534419,-6.59997559 32.0756394,-6.59997559 L56.0685425,-6.59997559 L56.0685425,17.3929275 C56.0685425,19.6035732 56.964932,21.6063078 58.4140138,23.0559004 L58.4114425,23.0511823 C59.8606253,24.5013859 61.8633581,25.4000244 64.0756394,25.4000244 L88.0685425,25.4000244 L88.0685425,49.3929275 C88.0685425,53.8118532 91.6502645,57.4000244 96.0685425,57.4000244 C100.47783,57.4000244 104.068542,53.815125 104.068542,49.3929275 L104.068542,17.4071213 C104.068542,15.1964759 103.172153,13.1937416 101.723072,11.744149 Z\" transform=\"translate(64.068542, 17.400024) scale(1, -1) rotate(-45.000000) translate(-64.068542, -17.400024) \"></path>\n </g>\n</svg>"
},
"$:/core/images/folder": {
"title": "$:/core/images/folder",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-folder tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M55.6943257,128.000004 L7.99859666,128.000004 C3.5810937,128.000004 0,124.413822 0,119.996384 L0,48.0036243 C0,43.5833471 3.58387508,40.0000044 7.99859666,40.0000044 L16,40.0000044 L16,31.9999914 C16,27.5817181 19.5783731,24 24.0003461,24 L55.9996539,24 C60.4181231,24 64,27.5800761 64,31.9999914 L64,40.0000044 L104.001403,40.0000044 C108.418906,40.0000044 112,43.5861868 112,48.0036243 L112,59.8298353 L104,59.7475921 L104,51.9994189 C104,49.7887607 102.207895,48.0000044 99.9972215,48.0000044 L56,48.0000044 L56,36.0000255 C56,33.7898932 54.2072328,32 51.9957423,32 L28.0042577,32 C25.7890275,32 24,33.7908724 24,36.0000255 L24,48.0000044 L12.0027785,48.0000044 C9.78987688,48.0000044 8,49.7906032 8,51.9994189 L8,116.00059 C8,118.211248 9.79210499,120.000004 12.0027785,120.000004 L58.7630167,120.000004 L55.6943257,128.000004 L55.6943257,128.000004 Z\"></path>\n <path d=\"M23.8728955,55.5 L119.875702,55.5 C124.293205,55.5 126.87957,59.5532655 125.650111,64.5630007 L112.305967,118.936999 C111.077582,123.942356 106.497904,128 102.083183,128 L6.08037597,128 C1.66287302,128 -0.923492342,123.946735 0.305967145,118.936999 L13.650111,64.5630007 C14.878496,59.5576436 19.4581739,55.5 23.8728955,55.5 L23.8728955,55.5 L23.8728955,55.5 Z M25.6530124,64 L113.647455,64 C115.858129,64 117.151473,66.0930612 116.538306,68.6662267 L105.417772,115.333773 C104.803671,117.910859 102.515967,120 100.303066,120 L12.3086228,120 C10.0979492,120 8.8046054,117.906939 9.41777189,115.333773 L20.5383062,68.6662267 C21.1524069,66.0891409 23.4401107,64 25.6530124,64 L25.6530124,64 L25.6530124,64 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/full-screen-button": {
"title": "$:/core/images/full-screen-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-full-screen-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g>\n <g>\n <path d=\"M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z\"></path>\n </g>\n <g transform=\"translate(104.000000, 104.000000) rotate(-180.000000) translate(-104.000000, -104.000000) translate(80.000000, 80.000000)\">\n <path d=\"M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z\"></path>\n </g>\n <g transform=\"translate(24.000000, 104.000000) rotate(-90.000000) translate(-24.000000, -104.000000) translate(0.000000, 80.000000)\">\n <path d=\"M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z\"></path>\n </g>\n <g transform=\"translate(104.000000, 24.000000) rotate(90.000000) translate(-104.000000, -24.000000) translate(80.000000, 0.000000)\">\n <path d=\"M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z\"></path>\n </g>\n </g>\n</svg>"
},
"$:/core/images/github": {
"title": "$:/core/images/github",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-github tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M63.9383506,1.60695328 C28.6017227,1.60695328 -0.055756057,30.2970814 -0.055756057,65.6906208 C-0.055756057,94.003092 18.2804728,118.019715 43.7123154,126.493393 C46.9143781,127.083482 48.0812647,125.104717 48.0812647,123.405261 C48.0812647,121.886765 48.02626,117.85449 47.9948287,112.508284 C30.1929317,116.379268 26.4368926,103.916587 26.4368926,103.916587 C23.5255693,96.5129372 19.3294921,94.5420399 19.3294921,94.5420399 C13.5186324,90.5687739 19.7695302,90.6474524 19.7695302,90.6474524 C26.1933001,91.099854 29.5721638,97.2525155 29.5721638,97.2525155 C35.2808718,107.044059 44.5531024,104.215566 48.1991321,102.575118 C48.7806109,98.4366275 50.4346826,95.612068 52.2616263,94.0109598 C38.0507543,92.3941159 23.1091047,86.8944862 23.1091047,62.3389152 C23.1091047,55.3443933 25.6039634,49.6205298 29.6978889,45.1437211 C29.0378318,43.5229433 26.8415704,37.0044266 30.3265147,28.1845627 C30.3265147,28.1845627 35.6973364,26.4615028 47.9241083,34.7542205 C53.027764,33.330139 58.5046663,32.6220321 63.9462084,32.5944947 C69.3838216,32.6220321 74.856795,33.330139 79.9683085,34.7542205 C92.1872225,26.4615028 97.5501864,28.1845627 97.5501864,28.1845627 C101.042989,37.0044266 98.8467271,43.5229433 98.190599,45.1437211 C102.292382,49.6205298 104.767596,55.3443933 104.767596,62.3389152 C104.767596,86.9574291 89.8023734,92.3744463 75.5482834,93.9598188 C77.8427675,95.9385839 79.8897303,99.8489072 79.8897303,105.828476 C79.8897303,114.392635 79.8111521,121.304544 79.8111521,123.405261 C79.8111521,125.120453 80.966252,127.114954 84.2115327,126.489459 C109.623731,117.996111 127.944244,93.9952241 127.944244,65.6906208 C127.944244,30.2970814 99.2867652,1.60695328 63.9383506,1.60695328\"></path>\n </g>\n </svg>\n"
},
"$:/core/images/globe": {
"title": "$:/core/images/globe",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-globe tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M72.8111354,37.1275855 C72.8111354,37.9789875 72.8111354,38.8303894 72.8111354,39.6817913 C72.8111354,41.8784743 73.7885604,46.5631866 72.8111354,48.5143758 C71.3445471,51.4420595 68.1617327,52.0543531 66.4170946,54.3812641 C65.2352215,55.9575873 61.7987417,64.9821523 62.7262858,67.3005778 C66.6959269,77.2228204 74.26087,70.4881886 80.6887657,76.594328 C81.5527211,77.415037 83.5758191,78.8666631 83.985137,79.8899578 C87.2742852,88.1128283 76.4086873,94.8989524 87.7419325,106.189751 C88.9872885,107.430443 91.555495,102.372895 91.8205061,101.575869 C92.6726866,99.0129203 98.5458765,96.1267309 100.908882,94.5234439 C102.928056,93.1534443 105.782168,91.8557166 107.236936,89.7775886 C109.507391,86.5342557 108.717505,82.2640435 110.334606,79.0328716 C112.473794,74.7585014 114.163418,69.3979002 116.332726,65.0674086 C120.230862,57.2857361 121.054075,67.1596684 121.400359,67.5059523 C121.757734,67.8633269 122.411167,67.5059523 122.916571,67.5059523 C123.011132,67.5059523 124.364019,67.6048489 124.432783,67.5059523 C125.0832,66.5705216 123.390209,49.5852316 123.114531,48.2089091 C121.710578,41.1996597 116.17083,32.4278331 111.249523,27.7092761 C104.975994,21.6942076 104.160516,11.5121686 92.9912146,12.7547535 C92.7872931,12.7774397 87.906794,22.9027026 85.2136766,26.2672064 C81.486311,30.9237934 82.7434931,22.1144904 78.6876623,22.1144904 C78.6065806,22.1144904 77.5045497,22.0107615 77.4353971,22.1144904 C76.8488637,22.9942905 75.9952305,26.0101404 75.1288269,26.5311533 C74.8635477,26.6906793 73.4071369,26.2924966 73.2826811,26.5311533 C71.0401728,30.8313939 81.5394677,28.7427264 79.075427,34.482926 C76.7225098,39.9642538 72.747373,32.4860199 72.747373,43.0434079\"></path>\n <path d=\"M44.4668556,7.01044608 C54.151517,13.1403033 45.1489715,19.2084878 47.1611905,23.2253896 C48.8157833,26.5283781 51.4021933,28.6198851 48.8753629,33.038878 C46.8123257,36.6467763 42.0052989,37.0050492 39.251679,39.7621111 C36.2115749,42.8060154 33.7884281,48.7028116 32.4624592,52.6732691 C30.8452419,57.5158356 47.0088721,59.5388126 44.5246867,63.6811917 C43.1386839,65.9923513 37.7785192,65.1466282 36.0880227,63.8791519 C34.9234453,63.0059918 32.4946425,63.3331166 31.6713597,62.0997342 C29.0575851,58.1839669 29.4107339,54.0758543 28.0457962,49.9707786 C27.1076833,47.1493864 21.732611,47.8501656 20.2022714,49.3776393 C19.6790362,49.8998948 19.8723378,51.1703278 19.8723378,51.8829111 C19.8723378,57.1682405 26.9914913,55.1986414 26.9914913,58.3421973 C26.9914913,72.9792302 30.9191897,64.8771867 38.1313873,69.6793121 C48.1678018,76.3618966 45.9763926,76.981595 53.0777543,84.0829567 C56.7511941,87.7563965 60.8192437,87.7689005 62.503478,93.3767069 C64.1046972,98.7081071 53.1759798,98.7157031 50.786754,100.825053 C49.663965,101.816317 47.9736094,104.970571 46.5680513,105.439676 C44.7757187,106.037867 43.334221,105.93607 41.6242359,107.219093 C39.1967302,109.040481 37.7241465,112.151588 37.6034934,112.030935 C35.4555278,109.88297 34.0848666,96.5511248 33.7147244,93.7726273 C33.1258872,89.3524817 28.1241923,88.2337027 26.7275443,84.7420826 C25.1572737,80.8164061 28.2518481,75.223612 25.599097,70.9819941 C19.0797019,60.557804 13.7775712,56.4811506 10.2493953,44.6896152 C9.3074899,41.5416683 13.5912267,38.1609942 15.1264825,35.8570308 C17.0029359,33.0410312 17.7876232,30.0028946 19.8723378,27.2224065 C22.146793,24.1888519 40.8551166,9.46076832 43.8574051,8.63490613 L44.4668556,7.01044608 Z\"></path>\n <path d=\"M64,126 C98.2416545,126 126,98.2416545 126,64 C126,29.7583455 98.2416545,2 64,2 C29.7583455,2 2,29.7583455 2,64 C2,98.2416545 29.7583455,126 64,126 Z M64,120 C94.927946,120 120,94.927946 120,64 C120,33.072054 94.927946,8 64,8 C33.072054,8 8,33.072054 8,64 C8,94.927946 33.072054,120 64,120 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/heading-1": {
"title": "$:/core/images/heading-1",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-heading-1 tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M14,30 L27.25,30 L27.25,60.104 L61.7,60.104 L61.7,30 L74.95,30 L74.95,105.684 L61.7,105.684 L61.7,71.552 L27.25,71.552 L27.25,105.684 L14,105.684 L14,30 Z M84.3350766,43.78 C86.8790893,43.78 89.3523979,43.5680021 91.7550766,43.144 C94.1577553,42.7199979 96.3307336,42.0133383 98.2740766,41.024 C100.21742,40.0346617 101.87807,38.7626744 103.256077,37.208 C104.634084,35.6533256 105.535075,33.7453446 105.959077,31.484 L115.817077,31.484 L115.817077,105.684 L102.567077,105.684 L102.567077,53.32 L84.3350766,53.32 L84.3350766,43.78 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/heading-2": {
"title": "$:/core/images/heading-2",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-heading-2 tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M6,30 L19.25,30 L19.25,60.104 L53.7,60.104 L53.7,30 L66.95,30 L66.95,105.684 L53.7,105.684 L53.7,71.552 L19.25,71.552 L19.25,105.684 L6,105.684 L6,30 Z M125.519077,105.684 L74.8510766,105.684 C74.9217436,99.5359693 76.4057288,94.1653563 79.3030766,89.572 C82.2004244,84.9786437 86.1577182,80.986017 91.1750766,77.594 C93.5777553,75.8273245 96.0863969,74.113675 98.7010766,72.453 C101.315756,70.792325 103.718399,69.0080095 105.909077,67.1 C108.099754,65.1919905 109.901736,63.1250111 111.315077,60.899 C112.728417,58.6729889 113.47041,56.1113478 113.541077,53.214 C113.541077,51.8713266 113.382078,50.4403409 113.064077,48.921 C112.746075,47.4016591 112.127748,45.9883399 111.209077,44.681 C110.290405,43.3736601 109.018418,42.2783377 107.393077,41.395 C105.767735,40.5116622 103.647756,40.07 101.033077,40.07 C98.6303979,40.07 96.6340846,40.5469952 95.0440766,41.501 C93.4540687,42.4550048 92.1820814,43.762325 91.2280766,45.423 C90.2740719,47.083675 89.5674123,49.0446554 89.1080766,51.306 C88.648741,53.5673446 88.3837436,56.0053203 88.3130766,58.62 L76.2290766,58.62 C76.2290766,54.5213128 76.7767378,50.7230175 77.8720766,47.225 C78.9674154,43.7269825 80.610399,40.7060127 82.8010766,38.162 C84.9917542,35.6179873 87.6593942,33.6216739 90.8040766,32.173 C93.948759,30.7243261 97.6057224,30 101.775077,30 C106.297766,30 110.078395,30.7419926 113.117077,32.226 C116.155758,33.7100074 118.611401,35.5826554 120.484077,37.844 C122.356753,40.1053446 123.681739,42.5609868 124.459077,45.211 C125.236414,47.8610133 125.625077,50.3873213 125.625077,52.79 C125.625077,55.7580148 125.165748,58.4433213 124.247077,60.846 C123.328405,63.2486787 122.091751,65.4569899 120.537077,67.471 C118.982402,69.4850101 117.215753,71.3399915 115.237077,73.036 C113.2584,74.7320085 111.209087,76.3219926 109.089077,77.806 C106.969066,79.2900074 104.849087,80.7033266 102.729077,82.046 C100.609066,83.3886734 98.6480856,84.7313266 96.8460766,86.074 C95.0440676,87.4166734 93.47175,88.8123261 92.1290766,90.261 C90.7864032,91.7096739 89.8677458,93.2466585 89.3730766,94.872 L125.519077,94.872 L125.519077,105.684 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/heading-3": {
"title": "$:/core/images/heading-3",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-heading-3 tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M6,30 L19.25,30 L19.25,60.104 L53.7,60.104 L53.7,30 L66.95,30 L66.95,105.684 L53.7,105.684 L53.7,71.552 L19.25,71.552 L19.25,105.684 L6,105.684 L6,30 Z M94.8850766,62.224 C96.8637532,62.294667 98.8424001,62.1533351 100.821077,61.8 C102.799753,61.4466649 104.566402,60.8283378 106.121077,59.945 C107.675751,59.0616623 108.930072,57.8426744 109.884077,56.288 C110.838081,54.7333256 111.315077,52.8253446 111.315077,50.564 C111.315077,47.3839841 110.237421,44.8400095 108.082077,42.932 C105.926733,41.0239905 103.153094,40.07 99.7610766,40.07 C97.641066,40.07 95.8037511,40.4939958 94.2490766,41.342 C92.6944022,42.1900042 91.4047484,43.3383261 90.3800766,44.787 C89.3554048,46.2356739 88.5957458,47.860991 88.1010766,49.663 C87.6064075,51.465009 87.3944096,53.3199905 87.4650766,55.228 L75.3810766,55.228 C75.5224107,51.623982 76.1937373,48.2850154 77.3950766,45.211 C78.596416,42.1369846 80.2393995,39.4693446 82.3240766,37.208 C84.4087537,34.9466554 86.9350618,33.1800064 89.9030766,31.908 C92.8710915,30.6359936 96.2277246,30 99.9730766,30 C102.870424,30 105.714729,30.4239958 108.506077,31.272 C111.297424,32.1200042 113.806065,33.3566585 116.032077,34.982 C118.258088,36.6073415 120.042403,38.6743208 121.385077,41.183 C122.72775,43.6916792 123.399077,46.5713171 123.399077,49.822 C123.399077,53.5673521 122.551085,56.8356527 120.855077,59.627 C119.159068,62.4183473 116.509095,64.4499936 112.905077,65.722 L112.905077,65.934 C117.145098,66.7820042 120.448731,68.8843166 122.816077,72.241 C125.183422,75.5976835 126.367077,79.6786426 126.367077,84.484 C126.367077,88.017351 125.660417,91.1796527 124.247077,93.971 C122.833736,96.7623473 120.925755,99.129657 118.523077,101.073 C116.120398,103.016343 113.329093,104.517995 110.149077,105.578 C106.969061,106.638005 103.612428,107.168 100.079077,107.168 C95.7683884,107.168 92.005426,106.549673 88.7900766,105.313 C85.5747272,104.076327 82.8894207,102.327345 80.7340766,100.066 C78.5787325,97.8046554 76.9357489,95.0840159 75.8050766,91.904 C74.6744043,88.7239841 74.0737436,85.1906861 74.0030766,81.304 L86.0870766,81.304 C85.9457426,85.8266893 87.0587315,89.5896517 89.4260766,92.593 C91.7934218,95.5963483 95.3443863,97.098 100.079077,97.098 C104.107097,97.098 107.481396,95.9496782 110.202077,93.653 C112.922757,91.3563219 114.283077,88.0880212 114.283077,83.848 C114.283077,80.9506522 113.717749,78.6540085 112.587077,76.958 C111.456404,75.2619915 109.972419,73.9723378 108.135077,73.089 C106.297734,72.2056623 104.230755,71.6580011 101.934077,71.446 C99.6373985,71.2339989 97.2877553,71.163333 94.8850766,71.234 L94.8850766,62.224 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/heading-4": {
"title": "$:/core/images/heading-4",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-heading-4 tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M8,30 L21.25,30 L21.25,60.104 L55.7,60.104 L55.7,30 L68.95,30 L68.95,105.684 L55.7,105.684 L55.7,71.552 L21.25,71.552 L21.25,105.684 L8,105.684 L8,30 Z M84.5890766,78.548 L107.061077,78.548 L107.061077,45.9 L106.849077,45.9 L84.5890766,78.548 Z M128.049077,88.088 L118.509077,88.088 L118.509077,105.684 L107.061077,105.684 L107.061077,88.088 L75.2610766,88.088 L75.2610766,76.11 L107.061077,31.484 L118.509077,31.484 L118.509077,78.548 L128.049077,78.548 L128.049077,88.088 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/heading-5": {
"title": "$:/core/images/heading-5",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-heading-5 tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M6,30 L19.25,30 L19.25,60.104 L53.7,60.104 L53.7,30 L66.95,30 L66.95,105.684 L53.7,105.684 L53.7,71.552 L19.25,71.552 L19.25,105.684 L6,105.684 L6,30 Z M83.7550766,31.484 L122.127077,31.484 L122.127077,42.296 L92.7650766,42.296 L88.9490766,61.164 L89.1610766,61.376 C90.7864181,59.5386575 92.8533974,58.1430048 95.3620766,57.189 C97.8707558,56.2349952 100.361731,55.758 102.835077,55.758 C106.509762,55.758 109.795729,56.3763272 112.693077,57.613 C115.590424,58.8496729 118.0284,60.5809889 120.007077,62.807 C121.985753,65.0330111 123.487405,67.6653181 124.512077,70.704 C125.536748,73.7426819 126.049077,77.028649 126.049077,80.562 C126.049077,83.5300148 125.572081,86.5863176 124.618077,89.731 C123.664072,92.8756824 122.144754,95.7376538 120.060077,98.317 C117.9754,100.896346 115.30776,103.016325 112.057077,104.677 C108.806394,106.337675 104.919766,107.168 100.397077,107.168 C96.7930586,107.168 93.454092,106.691005 90.3800766,105.737 C87.3060613,104.782995 84.6030883,103.35201 82.2710766,101.444 C79.939065,99.5359905 78.0840835,97.1863473 76.7060766,94.395 C75.3280697,91.6036527 74.5684107,88.3353521 74.4270766,84.59 L86.5110766,84.59 C86.8644117,88.6180201 88.2423979,91.7096559 90.6450766,93.865 C93.0477553,96.0203441 96.2277235,97.098 100.185077,97.098 C102.729089,97.098 104.884401,96.6740042 106.651077,95.826 C108.417752,94.9779958 109.848738,93.8120074 110.944077,92.328 C112.039415,90.8439926 112.816741,89.1126766 113.276077,87.134 C113.735412,85.1553234 113.965077,83.0353446 113.965077,80.774 C113.965077,78.7246564 113.682413,76.763676 113.117077,74.891 C112.55174,73.018324 111.703749,71.3753404 110.573077,69.962 C109.442404,68.5486596 107.976086,67.4180042 106.174077,66.57 C104.372068,65.7219958 102.269755,65.298 99.8670766,65.298 C97.3230639,65.298 94.9380878,65.7749952 92.7120766,66.729 C90.4860655,67.6830048 88.8784149,69.4673203 87.8890766,72.082 L75.8050766,72.082 L83.7550766,31.484 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/heading-6": {
"title": "$:/core/images/heading-6",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-heading-6 tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M6,30 L19.25,30 L19.25,60.104 L53.7,60.104 L53.7,30 L66.95,30 L66.95,105.684 L53.7,105.684 L53.7,71.552 L19.25,71.552 L19.25,105.684 L6,105.684 L6,30 Z M112.587077,50.246 C112.304409,47.2073181 111.226753,44.751676 109.354077,42.879 C107.481401,41.006324 104.955093,40.07 101.775077,40.07 C99.584399,40.07 97.6940846,40.4763293 96.1040766,41.289 C94.5140687,42.1016707 93.1714154,43.1793266 92.0760766,44.522 C90.9807378,45.8646734 90.0974133,47.401658 89.4260766,49.133 C88.7547399,50.864342 88.2070787,52.6839905 87.7830766,54.592 C87.3590745,56.5000095 87.0587442,58.390324 86.8820766,60.263 C86.7054091,62.135676 86.5464107,63.8846585 86.4050766,65.51 L86.6170766,65.722 C88.2424181,62.7539852 90.4860623,60.5456739 93.3480766,59.097 C96.2100909,57.6483261 99.3017267,56.924 102.623077,56.924 C106.297762,56.924 109.583729,57.5599936 112.481077,58.832 C115.378424,60.1040064 117.834067,61.8529889 119.848077,64.079 C121.862087,66.3050111 123.399071,68.9373181 124.459077,71.976 C125.519082,75.0146819 126.049077,78.300649 126.049077,81.834 C126.049077,85.438018 125.466082,88.7769846 124.300077,91.851 C123.134071,94.9250154 121.455754,97.6103219 119.265077,99.907 C117.074399,102.203678 114.459758,103.987994 111.421077,105.26 C108.382395,106.532006 105.025762,107.168 101.351077,107.168 C95.9097161,107.168 91.4400941,106.16101 87.9420766,104.147 C84.4440591,102.13299 81.6880867,99.3770175 79.6740766,95.879 C77.6600666,92.3809825 76.2644138,88.2823568 75.4870766,83.583 C74.7097394,78.8836432 74.3210766,73.8133605 74.3210766,68.372 C74.3210766,63.9199777 74.7980719,59.4326893 75.7520766,54.91 C76.7060814,50.3873107 78.278399,46.2710186 80.4690766,42.561 C82.6597542,38.8509815 85.5393921,35.8300117 89.1080766,33.498 C92.6767611,31.1659883 97.0757171,30 102.305077,30 C105.273091,30 108.064397,30.4946617 110.679077,31.484 C113.293756,32.4733383 115.608067,33.8513245 117.622077,35.618 C119.636087,37.3846755 121.27907,39.5046543 122.551077,41.978 C123.823083,44.4513457 124.529743,47.2073181 124.671077,50.246 L112.587077,50.246 Z M100.927077,97.098 C103.117754,97.098 105.025735,96.6563378 106.651077,95.773 C108.276418,94.8896623 109.636738,93.7413404 110.732077,92.328 C111.827415,90.9146596 112.640074,89.271676 113.170077,87.399 C113.700079,85.526324 113.965077,83.6006766 113.965077,81.622 C113.965077,79.6433234 113.700079,77.7353425 113.170077,75.898 C112.640074,74.0606575 111.827415,72.4530069 110.732077,71.075 C109.636738,69.6969931 108.276418,68.5840042 106.651077,67.736 C105.025735,66.8879958 103.117754,66.464 100.927077,66.464 C98.736399,66.464 96.8107516,66.8703293 95.1500766,67.683 C93.4894017,68.4956707 92.0937489,69.5909931 90.9630766,70.969 C89.8324043,72.3470069 88.9844128,73.9546575 88.4190766,75.792 C87.8537405,77.6293425 87.5710766,79.5726564 87.5710766,81.622 C87.5710766,83.6713436 87.8537405,85.6146575 88.4190766,87.452 C88.9844128,89.2893425 89.8324043,90.9323261 90.9630766,92.381 C92.0937489,93.8296739 93.4894017,94.9779958 95.1500766,95.826 C96.8107516,96.6740042 98.736399,97.098 100.927077,97.098 L100.927077,97.098 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/help": {
"title": "$:/core/images/help",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-help tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M36.0548906,111.44117 C30.8157418,115.837088 20.8865444,118.803477 9.5,118.803477 C7.86465619,118.803477 6.25937294,118.742289 4.69372699,118.624467 C12.612543,115.984876 18.7559465,110.02454 21.0611049,102.609942 C8.74739781,92.845129 1.04940554,78.9359851 1.04940554,63.5 C1.04940554,33.9527659 29.2554663,10 64.0494055,10 C98.8433448,10 127.049406,33.9527659 127.049406,63.5 C127.049406,93.0472341 98.8433448,117 64.0494055,117 C53.9936953,117 44.48824,114.999337 36.0548906,111.44117 L36.0548906,111.44117 Z M71.4042554,77.5980086 C71.406883,77.2865764 71.4095079,76.9382011 71.4119569,76.5610548 C71.4199751,75.3262169 71.4242825,74.0811293 71.422912,72.9158546 C71.4215244,71.736154 71.4143321,70.709635 71.4001396,69.8743525 C71.4078362,68.5173028 71.9951951,67.7870427 75.1273009,65.6385471 C75.2388969,65.5619968 76.2124091,64.8981068 76.5126553,64.6910879 C79.6062455,62.5580654 81.5345849,60.9050204 83.2750652,58.5038955 C85.6146327,55.2762841 86.8327108,51.426982 86.8327108,46.8554323 C86.8327108,33.5625756 76.972994,24.9029551 65.3778484,24.9029551 C54.2752771,24.9029551 42.8794554,34.5115163 41.3121702,47.1975534 C40.9043016,50.4989536 43.2499725,53.50591 46.5513726,53.9137786 C49.8527728,54.3216471 52.8597292,51.9759763 53.2675978,48.6745761 C54.0739246,42.1479456 60.2395837,36.9492759 65.3778484,36.9492759 C70.6427674,36.9492759 74.78639,40.5885487 74.78639,46.8554323 C74.78639,50.4892974 73.6853224,52.008304 69.6746221,54.7736715 C69.4052605,54.9593956 68.448509,55.6118556 68.3131127,55.7047319 C65.6309785,57.5445655 64.0858213,58.803255 62.6123358,60.6352315 C60.5044618,63.2559399 59.3714208,66.3518252 59.3547527,69.9487679 C59.3684999,70.8407274 59.3752803,71.8084521 59.3765995,72.9300232 C59.3779294,74.0607297 59.3737237,75.2764258 59.36589,76.482835 C59.3634936,76.8518793 59.3609272,77.1924914 59.3583633,77.4963784 C59.3568319,77.6778944 59.3556368,77.8074256 59.3549845,77.8730928 C59.3219814,81.1994287 61.9917551,83.9227111 65.318091,83.9557142 C68.644427,83.9887173 71.3677093,81.3189435 71.4007124,77.9926076 C71.4014444,77.9187458 71.402672,77.7856841 71.4042554,77.5980086 Z M65.3778489,102.097045 C69.5359735,102.097045 72.9067994,98.7262189 72.9067994,94.5680944 C72.9067994,90.4099698 69.5359735,87.0391439 65.3778489,87.0391439 C61.2197243,87.0391439 57.8488984,90.4099698 57.8488984,94.5680944 C57.8488984,98.7262189 61.2197243,102.097045 65.3778489,102.097045 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/home-button": {
"title": "$:/core/images/home-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-home-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\">\n <path d=\"M112.9847,119.501583 C112.99485,119.336814 113,119.170705 113,119.003406 L113,67.56802 C116.137461,70.5156358 121.076014,70.4518569 124.133985,67.3938855 C127.25818,64.2696912 127.260618,59.2068102 124.131541,56.0777326 L70.3963143,2.34250601 C68.8331348,0.779326498 66.7828947,-0.000743167069 64.7337457,1.61675364e-05 C62.691312,-0.00409949529 60.6426632,0.777559815 59.077717,2.34250601 L33,28.420223 L33,28.420223 L33,8.00697327 C33,3.58484404 29.4092877,0 25,0 C20.581722,0 17,3.59075293 17,8.00697327 L17,44.420223 L5.3424904,56.0777326 C2.21694607,59.2032769 2.22220878,64.2760483 5.34004601,67.3938855 C8.46424034,70.5180798 13.5271213,70.5205187 16.6561989,67.3914411 L17,67.04764 L17,119.993027 C17,119.994189 17.0000002,119.995351 17.0000007,119.996514 C17.0000002,119.997675 17,119.998838 17,120 C17,124.418278 20.5881049,128 24.9992458,128 L105.000754,128 C109.418616,128 113,124.409288 113,120 C113,119.832611 112.99485,119.666422 112.9847,119.501583 Z M97,112 L97,51.5736087 L97,51.5736087 L64.7370156,19.3106244 L33,51.04764 L33,112 L97,112 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/import-button": {
"title": "$:/core/images/import-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-import-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M105.449437,94.2138951 C105.449437,94.2138951 110.049457,94.1897106 110.049457,99.4026111 C110.049457,104.615512 105.163246,104.615511 105.163246,104.615511 L45.0075072,105.157833 C45.0075072,105.157833 0.367531803,106.289842 0.367532368,66.6449212 C0.367532934,27.0000003 45.0428249,27.0000003 45.0428249,27.0000003 L105.532495,27.0000003 C105.532495,27.0000003 138.996741,25.6734987 138.996741,55.1771866 C138.996741,84.6808745 105.727102,82.8457535 105.727102,82.8457535 L56.1735087,82.8457535 C56.1735087,82.8457535 22.6899229,85.1500223 22.6899229,66.0913753 C22.6899229,47.0327282 56.1735087,49.3383013 56.1735087,49.3383013 L105.727102,49.3383013 C105.727102,49.3383013 111.245209,49.3383024 111.245209,54.8231115 C111.245209,60.3079206 105.727102,60.5074524 105.727102,60.5074524 L56.1735087,60.5074524 C56.1735087,60.5074524 37.48913,60.5074528 37.48913,66.6449195 C37.48913,72.7823862 56.1735087,71.6766023 56.1735087,71.6766023 L105.727102,71.6766029 C105.727102,71.6766029 127.835546,73.1411469 127.835546,55.1771866 C127.835546,35.5304025 105.727102,38.3035317 105.727102,38.3035317 L45.0428249,38.3035317 C45.0428249,38.3035317 11.5287276,38.3035313 11.5287276,66.6449208 C11.5287276,94.9863103 45.0428244,93.9579678 45.0428244,93.9579678 L105.449437,94.2138951 Z\" transform=\"translate(69.367532, 66.000000) rotate(-45.000000) translate(-69.367532, -66.000000) \"></path>\n </g>\n</svg>"
},
"$:/core/images/info-button": {
"title": "$:/core/images/info-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-info-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\">\n <g transform=\"translate(0.049406, 0.000000)\">\n <path d=\"M64,128 C99.346224,128 128,99.346224 128,64 C128,28.653776 99.346224,0 64,0 C28.653776,0 0,28.653776 0,64 C0,99.346224 28.653776,128 64,128 Z M64,112 C90.509668,112 112,90.509668 112,64 C112,37.490332 90.509668,16 64,16 C37.490332,16 16,37.490332 16,64 C16,90.509668 37.490332,112 64,112 Z\"></path>\n <circle cx=\"64\" cy=\"32\" r=\"8\"></circle>\n <rect x=\"56\" y=\"48\" width=\"16\" height=\"56\" rx=\"8\"></rect>\n </g>\n </g>\n</svg>"
},
"$:/core/images/italic": {
"title": "$:/core/images/italic",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-italic tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <polygon points=\"66.7114846 0 89.1204482 0 62.4089636 128 40 128\"></polygon>\n </g>\n</svg>"
},
"$:/core/images/left-arrow": {
"created": "20150315234410875",
"modified": "20150315235324760",
"tags": "$:/tags/Image",
"title": "$:/core/images/left-arrow",
"text": "<svg class=\"tc-image-left-arrow tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <path transform=\"rotate(135, 63.8945, 64.1752)\" d=\"m109.07576,109.35336c-1.43248,1.43361 -3.41136,2.32182 -5.59717,2.32182l-79.16816,0c-4.36519,0 -7.91592,-3.5444 -7.91592,-7.91666c0,-4.36337 3.54408,-7.91667 7.91592,-7.91667l71.25075,0l0,-71.25075c0,-4.3652 3.54442,-7.91592 7.91667,-7.91592c4.36336,0 7.91667,3.54408 7.91667,7.91592l0,79.16815c0,2.1825 -0.88602,4.16136 -2.3185,5.59467l-0.00027,-0.00056z\"/>\n</svg>\n"
},
"$:/core/images/line-width": {
"title": "$:/core/images/line-width",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-line-width tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M128,-97 L112.992786,-97 C112.452362,-97 112,-96.5522847 112,-96 C112,-95.4438648 112.444486,-95 112.992786,-95 L128,-95 L128,-97 Z M128,-78.6794919 L111.216185,-88.3696322 C110.748163,-88.6398444 110.132549,-88.4782926 109.856406,-88 C109.578339,-87.5183728 109.741342,-86.9117318 110.216185,-86.6375814 L128,-76.3700908 L128,-78.6794919 Z M78.6794919,-128 L88.3696322,-111.216185 C88.6437826,-110.741342 88.4816272,-110.134474 88,-109.856406 C87.5217074,-109.580264 86.9077936,-109.748163 86.6375814,-110.216185 L76.3700908,-128 L78.6794919,-128 Z M97,-128 L97,-112.992786 C97,-112.444486 96.5561352,-112 96,-112 C95.4477153,-112 95,-112.452362 95,-112.992786 L95,-128 L97,-128 Z M115.629909,-128 L105.362419,-110.216185 C105.088268,-109.741342 104.481627,-109.578339 104,-109.856406 C103.521707,-110.132549 103.360156,-110.748163 103.630368,-111.216185 L113.320508,-128 L115.629909,-128 Z M128,-113.320508 L111.216185,-103.630368 C110.741342,-103.356217 110.134474,-103.518373 109.856406,-104 C109.580264,-104.478293 109.748163,-105.092206 110.216185,-105.362419 L128,-115.629909 L128,-113.320508 Z M48,-96 C48,-96.5522847 48.4523621,-97 48.9927864,-97 L79.0072136,-97 C79.5555144,-97 80,-96.5561352 80,-96 C80,-95.4477153 79.5476379,-95 79.0072136,-95 L48.9927864,-95 C48.4444856,-95 48,-95.4438648 48,-96 Z M54.4307806,-120 C54.706923,-120.478293 55.3225377,-120.639844 55.7905589,-120.369632 L81.7838153,-105.362419 C82.2586577,-105.088268 82.4216611,-104.481627 82.1435935,-104 C81.8674512,-103.521707 81.2518365,-103.360156 80.7838153,-103.630368 L54.7905589,-118.637581 C54.3157165,-118.911732 54.152713,-119.518373 54.4307806,-120 Z M104,-82.1435935 C104.478293,-82.4197359 105.092206,-82.2518365 105.362419,-81.7838153 L120.369632,-55.7905589 C120.643783,-55.3157165 120.481627,-54.7088482 120,-54.4307806 C119.521707,-54.1546382 118.907794,-54.3225377 118.637581,-54.7905589 L103.630368,-80.7838153 C103.356217,-81.2586577 103.518373,-81.865526 104,-82.1435935 Z M96,-80 C96.5522847,-80 97,-79.5476379 97,-79.0072136 L97,-48.9927864 C97,-48.4444856 96.5561352,-48 96,-48 C95.4477153,-48 95,-48.4523621 95,-48.9927864 L95,-79.0072136 C95,-79.5555144 95.4438648,-80 96,-80 Z M88,-82.1435935 C88.4782926,-81.8674512 88.6398444,-81.2518365 88.3696322,-80.7838153 L73.3624186,-54.7905589 C73.0882682,-54.3157165 72.4816272,-54.152713 72,-54.4307806 C71.5217074,-54.706923 71.3601556,-55.3225377 71.6303678,-55.7905589 L86.6375814,-81.7838153 C86.9117318,-82.2586577 87.5183728,-82.4216611 88,-82.1435935 Z M82.1435935,-88 C82.4197359,-87.5217074 82.2518365,-86.9077936 81.7838153,-86.6375814 L55.7905589,-71.6303678 C55.3157165,-71.3562174 54.7088482,-71.5183728 54.4307806,-72 C54.1546382,-72.4782926 54.3225377,-73.0922064 54.7905589,-73.3624186 L80.7838153,-88.3696322 C81.2586577,-88.6437826 81.865526,-88.4816272 82.1435935,-88 Z M1.30626177e-08,-41.9868843 L15.0170091,-57.9923909 L20.7983821,-52.9749272 L44.7207091,-81.2095939 L73.4260467,-42.1002685 L85.984793,-56.6159488 L104.48741,-34.0310661 L127.969109,-47.4978019 L127.969109,7.99473128e-07 L1.30626177e-08,7.99473128e-07 L1.30626177e-08,-41.9868843 Z M96,-84 C102.627417,-84 108,-89.372583 108,-96 C108,-102.627417 102.627417,-108 96,-108 C89.372583,-108 84,-102.627417 84,-96 C84,-89.372583 89.372583,-84 96,-84 Z\"></path>\n <path d=\"M16,18 L112,18 C113.104569,18 114,17.1045695 114,16 C114,14.8954305 113.104569,14 112,14 L16,14 C14.8954305,14 14,14.8954305 14,16 C14,17.1045695 14.8954305,18 16,18 L16,18 Z M16,35 L112,35 C114.209139,35 116,33.209139 116,31 C116,28.790861 114.209139,27 112,27 L16,27 C13.790861,27 12,28.790861 12,31 C12,33.209139 13.790861,35 16,35 L16,35 Z M16,56 L112,56 C115.313708,56 118,53.3137085 118,50 C118,46.6862915 115.313708,44 112,44 L16,44 C12.6862915,44 10,46.6862915 10,50 C10,53.3137085 12.6862915,56 16,56 L16,56 Z M16,85 L112,85 C117.522847,85 122,80.5228475 122,75 C122,69.4771525 117.522847,65 112,65 L16,65 C10.4771525,65 6,69.4771525 6,75 C6,80.5228475 10.4771525,85 16,85 L16,85 Z M16,128 L112,128 C120.836556,128 128,120.836556 128,112 C128,103.163444 120.836556,96 112,96 L16,96 C7.163444,96 0,103.163444 0,112 C0,120.836556 7.163444,128 16,128 L16,128 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/link": {
"title": "$:/core/images/link",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-link tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M128.719999,57.568543 C130.219553,53.8628171 131.045202,49.8121445 131.045202,45.5685425 C131.045202,27.8915447 116.718329,13.5685425 99.0452364,13.5685425 L67.0451674,13.5685425 C49.3655063,13.5685425 35.0452019,27.8954305 35.0452019,45.5685425 C35.0452019,63.2455403 49.3720745,77.5685425 67.0451674,77.5685425 L99.0452364,77.5685425 C100.406772,77.5685425 101.748384,77.4835732 103.065066,77.3186499 C96.4792444,73.7895096 91.1190212,68.272192 87.7873041,61.5685425 L67.0506214,61.5685425 C58.2110723,61.5685425 51.0452019,54.4070414 51.0452019,45.5685425 C51.0452019,36.7319865 58.2005234,29.5685425 67.0506214,29.5685425 L99.0397824,29.5685425 C107.879331,29.5685425 115.045202,36.7300436 115.045202,45.5685425 C115.045202,48.9465282 113.99957,52.0800164 112.21335,54.6623005 C114.314383,56.4735917 117.050039,57.5685425 120.041423,57.5685425 L128.720003,57.5685425 Z\" transform=\"translate(83.045202, 45.568542) rotate(-225.000000) translate(-83.045202, -45.568542)\"></path>\n <path d=\"M-0.106255113,71.0452019 C-1.60580855,74.7509276 -2.43145751,78.8016001 -2.43145751,83.0452019 C-2.43145751,100.7222 11.8954151,115.045202 29.568508,115.045202 L61.568577,115.045202 C79.2482381,115.045202 93.5685425,100.718314 93.5685425,83.0452019 C93.5685425,65.3682041 79.2416699,51.0452019 61.568577,51.0452019 L29.568508,51.0452019 C28.206973,51.0452019 26.8653616,51.1301711 25.5486799,51.2950943 C32.1345,54.8242347 37.4947231,60.3415524 40.8264403,67.0452019 L61.563123,67.0452019 C70.4026721,67.0452019 77.5685425,74.206703 77.5685425,83.0452019 C77.5685425,91.8817579 70.413221,99.0452019 61.563123,99.0452019 L29.573962,99.0452019 C20.7344129,99.0452019 13.5685425,91.8837008 13.5685425,83.0452019 C13.5685425,79.6672162 14.6141741,76.533728 16.4003949,73.9514439 C14.2993609,72.1401527 11.5637054,71.0452019 8.5723215,71.0452019 L-0.106255113,71.0452019 Z\" transform=\"translate(45.568542, 83.045202) rotate(-225.000000) translate(-45.568542, -83.045202)\"></path>\n </g>\n</svg>"
},
"$:/core/images/list-bullet": {
"title": "$:/core/images/list-bullet",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-list-bullet tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M11.6363636,40.2727273 C18.0629498,40.2727273 23.2727273,35.0629498 23.2727273,28.6363636 C23.2727273,22.2097775 18.0629498,17 11.6363636,17 C5.20977746,17 0,22.2097775 0,28.6363636 C0,35.0629498 5.20977746,40.2727273 11.6363636,40.2727273 Z M11.6363636,75.1818182 C18.0629498,75.1818182 23.2727273,69.9720407 23.2727273,63.5454545 C23.2727273,57.1188684 18.0629498,51.9090909 11.6363636,51.9090909 C5.20977746,51.9090909 0,57.1188684 0,63.5454545 C0,69.9720407 5.20977746,75.1818182 11.6363636,75.1818182 Z M11.6363636,110.090909 C18.0629498,110.090909 23.2727273,104.881132 23.2727273,98.4545455 C23.2727273,92.0279593 18.0629498,86.8181818 11.6363636,86.8181818 C5.20977746,86.8181818 0,92.0279593 0,98.4545455 C0,104.881132 5.20977746,110.090909 11.6363636,110.090909 Z M34.9090909,22.8181818 L128,22.8181818 L128,34.4545455 L34.9090909,34.4545455 L34.9090909,22.8181818 Z M34.9090909,57.7272727 L128,57.7272727 L128,69.3636364 L34.9090909,69.3636364 L34.9090909,57.7272727 Z M34.9090909,92.6363636 L128,92.6363636 L128,104.272727 L34.9090909,104.272727 L34.9090909,92.6363636 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/list-number": {
"title": "$:/core/images/list-number",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-list-number tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M33.8390805,22.3563218 L128,22.3563218 L128,34.1264368 L33.8390805,34.1264368 L33.8390805,22.3563218 Z M33.8390805,57.6666667 L128,57.6666667 L128,69.4367816 L33.8390805,69.4367816 L33.8390805,57.6666667 Z M33.8390805,92.9770115 L128,92.9770115 L128,104.747126 L33.8390805,104.747126 L33.8390805,92.9770115 Z M0.379509711,42.6307008 L0.379509711,40.4082314 L1.37821948,40.4082314 C2.20382368,40.4082314 2.82301754,40.268077 3.23581964,39.9877642 C3.64862174,39.7074513 3.85501969,39.0400498 3.85501969,37.9855395 L3.85501969,22.7686318 C3.85501969,21.3270228 3.66193774,20.4327047 3.27576803,20.0856507 C2.88959832,19.7385967 1.79768657,19.5650723 0,19.5650723 L0,17.4226919 C3.50215975,17.2758613 6.25191314,16.4683055 8.24934266,15 L10.3666074,15 L10.3666074,37.865406 C10.3666074,38.786434 10.5164123,39.4404875 10.8160268,39.8275862 C11.1156412,40.2146849 11.764796,40.4082314 12.7635108,40.4082314 L13.7622206,40.4082314 L13.7622206,42.6307008 L0.379509711,42.6307008 Z M0.0798967812,77.9873934 L0.0798967812,76.0852799 C7.27064304,69.5312983 10.8659622,63.5046623 10.8659622,58.005191 C10.8659622,56.4434479 10.5397203,55.195407 9.88722667,54.2610308 C9.23473303,53.3266546 8.36253522,52.8594735 7.27060709,52.8594735 C6.3784219,52.8594735 5.61608107,53.1764892 4.98356173,53.8105302 C4.35104238,54.4445712 4.03478745,55.1753759 4.03478745,56.0029663 C4.03478745,56.9773871 4.28113339,57.8316611 4.77383268,58.5658139 C4.88036225,58.7259926 4.93362624,58.8461249 4.93362624,58.9262143 C4.93362624,59.0730449 4.77383427,59.2065252 4.45424555,59.3266593 C4.2411864,59.4067486 3.70188852,59.6336652 2.83633573,60.0074156 C1.99741533,60.3811661 1.47809145,60.5680386 1.2783485,60.5680386 C1.03865696,60.5680386 0.765679018,60.1976307 0.459406492,59.4568039 C0.153133966,58.715977 0,57.9184322 0,57.0641453 C0,55.1153036 0.848894811,53.5202138 2.5467099,52.2788283 C4.24452499,51.0374428 6.34512352,50.4167594 8.84856852,50.4167594 C11.3120649,50.4167594 13.3793735,51.0874979 15.0505562,52.4289952 C16.7217389,53.7704924 17.5573177,55.5224215 17.5573177,57.684835 C17.5573177,58.9662652 17.2743527,60.2076321 16.7084144,61.4089729 C16.142476,62.6103138 14.7875733,64.4623531 12.6436656,66.9651465 C10.4997579,69.4679398 8.40914641,71.7804862 6.3717683,73.902855 L17.8169822,73.902855 L16.7982982,79.6292176 L14.6810335,79.6292176 C14.7609307,79.3489048 14.8008787,79.0952922 14.8008787,78.8683723 C14.8008787,78.4812736 14.7010087,78.237672 14.5012658,78.1375603 C14.3015228,78.0374485 13.9020429,77.9873934 13.3028141,77.9873934 L0.0798967812,77.9873934 Z M12.2042333,97.1935484 C13.9486551,97.2335931 15.4400468,97.8309175 16.6784531,98.9855395 C17.9168594,100.140162 18.5360532,101.75861 18.5360532,103.840934 C18.5360532,106.830938 17.4041935,109.233584 15.14044,111.048943 C12.8766866,112.864303 10.1402492,113.771969 6.93104577,113.771969 C4.92030005,113.771969 3.26245842,113.388213 1.95747114,112.62069 C0.652483855,111.853166 0,110.848727 0,109.607341 C0,108.833144 0.26964894,108.209124 0.808954909,107.735261 C1.34826088,107.261399 1.93749375,107.024472 2.57667119,107.024472 C3.21584864,107.024472 3.73850152,107.224692 4.14464552,107.625139 C4.55078953,108.025586 4.92696644,108.67964 5.27318756,109.587319 C5.73925445,110.855401 6.51158227,111.489433 7.59019421,111.489433 C8.85523291,111.489433 9.87723568,111.012241 10.6562332,110.057842 C11.4352307,109.103444 11.8247236,107.371536 11.8247236,104.862069 C11.8247236,103.153495 11.7048796,101.838714 11.4651881,100.917686 C11.2254966,99.9966584 10.6728827,99.5361513 9.80732989,99.5361513 C9.22141723,99.5361513 8.62219737,99.843156 8.00965231,100.457175 C7.51695303,100.951059 7.07752513,101.197998 6.69135542,101.197998 C6.3584505,101.197998 6.08880156,101.051169 5.88240051,100.757508 C5.67599946,100.463847 5.57280049,100.183539 5.57280049,99.916574 C5.57280049,99.5962164 5.67599946,99.3225818 5.88240051,99.0956618 C6.08880156,98.8687419 6.57150646,98.5016711 7.33052967,97.9944383 C10.2068282,96.0722929 11.6449559,93.9766521 11.6449559,91.7074527 C11.6449559,90.5194601 11.3386879,89.615131 10.7261429,88.9944383 C10.1135978,88.3737455 9.37455999,88.0634038 8.5090072,88.0634038 C7.71003539,88.0634038 6.98431355,88.3270274 6.33181991,88.8542825 C5.67932627,89.3815377 5.35308434,90.0122321 5.35308434,90.7463849 C5.35308434,91.3871 5.60608828,91.9810874 6.11210376,92.5283648 C6.28521432,92.7285883 6.3717683,92.8954387 6.3717683,93.028921 C6.3717683,93.1490551 5.80250943,93.4560598 4.6639746,93.9499444 C3.52543978,94.4438289 2.80970494,94.6907675 2.51674861,94.6907675 C2.10394651,94.6907675 1.76771758,94.3570667 1.50805174,93.6896552 C1.24838591,93.0222436 1.11855494,92.4082342 1.11855494,91.8476085 C1.11855494,90.0989901 2.04734573,88.6240327 3.90495518,87.4226919 C5.76256463,86.2213511 7.86982116,85.6206897 10.226788,85.6206897 C12.2907985,85.6206897 14.0784711,86.0678487 15.5898594,86.9621802 C17.1012478,87.8565117 17.8569306,89.0778566 17.8569306,90.6262514 C17.8569306,91.987771 17.2876717,93.2491599 16.1491369,94.4104561 C15.0106021,95.5717522 13.6956474,96.4994404 12.2042333,97.1935484 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/list": {
"title": "$:/core/images/list",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-list tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M0.719999312,185.568543 C2.21955287,181.862817 3.0452019,177.812144 3.0452019,173.568542 C3.0452019,155.891545 -11.2816707,141.568542 -28.9547636,141.568542 L-60.9548326,141.568542 C-78.6344937,141.568542 -92.9547981,155.895431 -92.9547981,173.568542 C-92.9547981,191.24554 -78.6279255,205.568542 -60.9548326,205.568542 L-28.9547636,205.568542 C-27.593228,205.568542 -26.2516158,205.483573 -24.9349335,205.31865 C-31.5207556,201.78951 -36.8809788,196.272192 -40.2126959,189.568542 L-60.9493786,189.568542 C-69.7889277,189.568542 -76.9547981,182.407041 -76.9547981,173.568542 C-76.9547981,164.731986 -69.7994766,157.568542 -60.9493786,157.568542 L-28.9602176,157.568542 C-20.1206685,157.568542 -12.9547981,164.730044 -12.9547981,173.568542 C-12.9547981,176.946528 -14.0004297,180.080016 -15.7866505,182.6623 C-13.6856165,184.473592 -10.949961,185.568542 -7.9585771,185.568542 L0.720002586,185.568542 Z\" transform=\"translate(-44.954798, 173.568542) rotate(-225.000000) translate(44.954798, -173.568542) \"></path>\n <path d=\"M87.7480315,128 L23.9992458,128 C19.5813843,128 16,124.409247 16,119.993027 L16,8.00697327 C16,3.58484404 19.5881049,0 23.9992458,0 L104.000754,0 C108.418616,0 112,3.59075293 112,8.00697327 L112,104 L91.2492027,104 C90.2848199,104 89.410573,104.391703 88.7768998,105.025201 C88.1373658,105.661376 87.7480315,106.53563 87.7480315,107.501171 L87.7480315,128 Z M95.7480315,127.879386 L111.627417,112 L95.7480315,112 L95.7480315,127.879386 Z M40,15.5089165 C40,13.5709954 41.5636015,12 43.4998101,12 L98.5001899,12 C100.433082,12 102,13.5614718 102,15.5089165 L102,16.4910835 C102,18.4290046 100.436399,20 98.5001899,20 L43.4998101,20 C41.5669183,20 40,18.4385282 40,16.4910835 L40,15.5089165 Z M32,22 C35.3137085,22 38,19.3137085 38,16 C38,12.6862915 35.3137085,10 32,10 C28.6862915,10 26,12.6862915 26,16 C26,19.3137085 28.6862915,22 32,22 Z M40,31.5089165 C40,29.5709954 41.5636015,28 43.4998101,28 L98.5001899,28 C100.433082,28 102,29.5614718 102,31.5089165 L102,32.4910835 C102,34.4290046 100.436399,36 98.5001899,36 L43.4998101,36 C41.5669183,36 40,34.4385282 40,32.4910835 L40,31.5089165 Z M40,47.5089165 C40,45.5709954 41.5636015,44 43.4998101,44 L98.5001899,44 C100.433082,44 102,45.5614718 102,47.5089165 L102,48.4910835 C102,50.4290046 100.436399,52 98.5001899,52 L43.4998101,52 C41.5669183,52 40,50.4385282 40,48.4910835 L40,47.5089165 Z M40,63.5089165 C40,61.5709954 41.5636015,60 43.4998101,60 L98.5001899,60 C100.433082,60 102,61.5614718 102,63.5089165 L102,64.4910835 C102,66.4290046 100.436399,68 98.5001899,68 L43.4998101,68 C41.5669183,68 40,66.4385282 40,64.4910835 L40,63.5089165 Z M40,79.5089165 C40,77.5709954 41.5636015,76 43.4998101,76 L98.5001899,76 C100.433082,76 102,77.5614718 102,79.5089165 L102,80.4910835 C102,82.4290046 100.436399,84 98.5001899,84 L43.4998101,84 C41.5669183,84 40,82.4385282 40,80.4910835 L40,79.5089165 Z M40,95.5089165 C40,93.5709954 41.5636015,92 43.4998101,92 L98.5001899,92 C100.433082,92 102,93.5614718 102,95.5089165 L102,96.4910835 C102,98.4290046 100.436399,100 98.5001899,100 L43.4998101,100 C41.5669183,100 40,98.4385282 40,96.4910835 L40,95.5089165 Z M40,111.508916 C40,109.570995 41.5680474,108 43.4972017,108 L76.5027983,108 C78.4342495,108 80,109.561472 80,111.508916 L80,112.491084 C80,114.429005 78.4319526,116 76.5027983,116 L43.4972017,116 C41.5657505,116 40,114.438528 40,112.491084 L40,111.508916 Z M32,38 C35.3137085,38 38,35.3137085 38,32 C38,28.6862915 35.3137085,26 32,26 C28.6862915,26 26,28.6862915 26,32 C26,35.3137085 28.6862915,38 32,38 Z M32,54 C35.3137085,54 38,51.3137085 38,48 C38,44.6862915 35.3137085,42 32,42 C28.6862915,42 26,44.6862915 26,48 C26,51.3137085 28.6862915,54 32,54 Z M32,70 C35.3137085,70 38,67.3137085 38,64 C38,60.6862915 35.3137085,58 32,58 C28.6862915,58 26,60.6862915 26,64 C26,67.3137085 28.6862915,70 32,70 Z M32,86 C35.3137085,86 38,83.3137085 38,80 C38,76.6862915 35.3137085,74 32,74 C28.6862915,74 26,76.6862915 26,80 C26,83.3137085 28.6862915,86 32,86 Z M32,102 C35.3137085,102 38,99.3137085 38,96 C38,92.6862915 35.3137085,90 32,90 C28.6862915,90 26,92.6862915 26,96 C26,99.3137085 28.6862915,102 32,102 Z M32,118 C35.3137085,118 38,115.313708 38,112 C38,108.686292 35.3137085,106 32,106 C28.6862915,106 26,108.686292 26,112 C26,115.313708 28.6862915,118 32,118 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/locked-padlock": {
"title": "$:/core/images/locked-padlock",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-locked-padlock tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M96.4723753,64 L105,64 L105,96.0097716 C105,113.673909 90.6736461,128 73.001193,128 L55.998807,128 C38.3179793,128 24,113.677487 24,96.0097716 L24,64 L32.0000269,64 C32.0028554,48.2766389 32.3030338,16.2688026 64.1594984,16.2688041 C95.9543927,16.2688056 96.4648869,48.325931 96.4723753,64 Z M80.5749059,64 L48.4413579,64 C48.4426205,47.71306 48.5829272,31.9999996 64.1595001,31.9999996 C79.8437473,31.9999996 81.1369461,48.1359182 80.5749059,64 Z M67.7315279,92.3641717 C70.8232551,91.0923621 73,88.0503841 73,84.5 C73,79.8055796 69.1944204,76 64.5,76 C59.8055796,76 56,79.8055796 56,84.5 C56,87.947435 58.0523387,90.9155206 61.0018621,92.2491029 L55.9067479,115.020857 L72.8008958,115.020857 L67.7315279,92.3641717 L67.7315279,92.3641717 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/mail": {
"title": "$:/core/images/mail",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-mail tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M122.826782,104.894066 C121.945525,105.22777 120.990324,105.41043 119.993027,105.41043 L8.00697327,105.41043 C7.19458381,105.41043 6.41045219,105.289614 5.67161357,105.064967 L5.67161357,105.064967 L39.8346483,70.9019325 L60.6765759,91.7438601 C61.6118278,92.679112 62.8865166,93.0560851 64.0946097,92.8783815 C65.2975108,93.0473238 66.5641085,92.6696979 67.4899463,91.7438601 L88.5941459,70.6396605 C88.6693095,70.7292352 88.7490098,70.8162939 88.8332479,70.9005321 L122.826782,104.894066 Z M127.903244,98.6568194 C127.966933,98.2506602 128,97.8343714 128,97.4103789 L128,33.410481 C128,32.7414504 127.917877,32.0916738 127.763157,31.4706493 L94.2292399,65.0045665 C94.3188145,65.0797417 94.4058701,65.1594458 94.4901021,65.2436778 L127.903244,98.6568194 Z M0.205060636,99.2178117 C0.0709009529,98.6370366 0,98.0320192 0,97.4103789 L0,33.410481 C0,32.694007 0.0944223363,31.9995312 0.27147538,31.3387595 L0.27147538,31.3387595 L34.1777941,65.2450783 L0.205060636,99.2178117 L0.205060636,99.2178117 Z M5.92934613,25.6829218 C6.59211333,25.5051988 7.28862283,25.4104299 8.00697327,25.4104299 L119.993027,25.4104299 C120.759109,25.4104299 121.500064,25.5178649 122.201605,25.7184927 L122.201605,25.7184927 L64.0832611,83.8368368 L5.92934613,25.6829218 L5.92934613,25.6829218 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/menu-button": {
"title": "$:/core/images/menu-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-menu-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <rect x=\"0\" y=\"16\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n <rect x=\"0\" y=\"56\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n <rect x=\"0\" y=\"96\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n</svg>"
},
"$:/core/images/mono-block": {
"title": "$:/core/images/mono-block",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-mono-block tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M23.9653488,32.9670593 L24.3217888,32.9670593 C25.0766067,32.9670593 25.6497006,33.1592554 26.0410876,33.5436534 C26.4324747,33.9280514 26.6281653,34.4906619 26.6281653,35.2315017 C26.6281653,36.0562101 26.4219913,36.6502709 26.009637,37.0137017 C25.5972828,37.3771326 24.9158602,37.5588453 23.9653488,37.5588453 L17.6542639,37.5588453 C16.6897744,37.5588453 16.0048573,37.380627 15.5994921,37.0241852 C15.1941269,36.6677435 14.9914474,36.0701882 14.9914474,35.2315017 C14.9914474,34.4207713 15.1941269,33.8406885 15.5994921,33.4912358 C16.0048573,33.141783 16.6897744,32.9670593 17.6542639,32.9670593 L18.388111,32.9670593 L17.5284616,30.5139133 L8.47069195,30.5139133 L7.5691084,32.9670593 L8.30295547,32.9670593 C9.25346691,32.9670593 9.93488953,33.1452775 10.3472438,33.5017193 C10.759598,33.8581611 10.965772,34.4347494 10.965772,35.2315017 C10.965772,36.0562101 10.759598,36.6502709 10.3472438,37.0137017 C9.93488953,37.3771326 9.25346691,37.5588453 8.30295547,37.5588453 L2.89345418,37.5588453 C1.92896463,37.5588453 1.24404754,37.3771326 0.838682371,37.0137017 C0.433317198,36.6502709 0.230637652,36.0562101 0.230637652,35.2315017 C0.230637652,34.4906619 0.426328248,33.9280514 0.817715312,33.5436534 C1.20910238,33.1592554 1.78219626,32.9670593 2.53701417,32.9670593 L2.89345418,32.9670593 L8.51262607,17.3256331 L6.83526132,17.3256331 C5.88474988,17.3256331 5.20332727,17.1439204 4.79097304,16.7804895 C4.37861882,16.4170587 4.1724448,15.8299869 4.1724448,15.0192565 C4.1724448,14.1945481 4.37861882,13.6004873 4.79097304,13.2370565 C5.20332727,12.8736257 5.88474988,12.691913 6.83526132,12.691913 L14.6979086,12.691913 C15.9419603,12.691913 16.815579,13.3628521 17.318791,14.7047506 L17.318791,14.7676518 L23.9653488,32.9670593 Z M12.9786097,17.3256331 L9.9383861,26.1737321 L16.0188333,26.1737321 L12.9786097,17.3256331 Z M35.3809383,26.6979086 L35.3809383,33.0928616 L38.5259972,33.0928616 C40.7485166,33.0928616 42.3140414,32.8482484 43.2226185,32.3590146 C44.1311956,31.8697807 44.5854773,31.0520736 44.5854773,29.9058686 C44.5854773,28.7456855 44.1521624,27.9209895 43.2855197,27.4317556 C42.4188769,26.9425218 40.9022748,26.6979086 38.7356678,26.6979086 L35.3809383,26.6979086 Z M46.0741385,24.370565 C47.5977525,24.9296893 48.7159844,25.6949794 49.428868,26.666458 C50.1417516,27.6379366 50.498188,28.8784752 50.498188,30.388111 C50.498188,31.6601189 50.1906743,32.8202846 49.5756374,33.8686428 C48.9606006,34.917001 48.0799929,35.7766419 46.933788,36.4475911 C46.2628387,36.8389782 45.5115266,37.1220307 44.6798291,37.296757 C43.8481316,37.4714834 42.6704935,37.5588453 41.1468796,37.5588453 L39.3856466,37.5588453 L30.2020747,37.5588453 C29.2795194,37.5588453 28.6190637,37.3771326 28.2206876,37.0137017 C27.8223114,36.6502709 27.6231264,36.0562101 27.6231264,35.2315017 C27.6231264,34.4906619 27.811828,33.9280514 28.189237,33.5436534 C28.5666459,33.1592554 29.118773,32.9670593 29.8456347,32.9670593 L30.2020747,32.9670593 L30.2020747,17.3256331 L29.8456347,17.3256331 C29.118773,17.3256331 28.5666459,17.1299425 28.189237,16.7385554 C27.811828,16.3471683 27.6231264,15.7740744 27.6231264,15.0192565 C27.6231264,14.2085262 27.8258059,13.6179599 28.2311711,13.24754 C28.6365363,12.8771201 29.2934976,12.691913 30.2020747,12.691913 L39.8469219,12.691913 C42.796303,12.691913 45.0362615,13.2650068 46.5668644,14.4112118 C48.0974674,15.5574168 48.8627574,17.2347648 48.8627574,19.443306 C48.8627574,20.5335986 48.6286276,21.4945792 48.1603609,22.3262767 C47.6920943,23.1579742 46.9966938,23.8393968 46.0741385,24.370565 L46.0741385,24.370565 Z M35.3809383,17.1998307 L35.3809383,22.4835296 L38.2114913,22.4835296 C39.9307988,22.4835296 41.1433816,22.2808501 41.8492761,21.8754849 C42.5551706,21.4701197 42.9081126,20.7852027 42.9081126,19.8207131 C42.9081126,18.912136 42.5901154,18.2481858 41.9541114,17.8288425 C41.3181074,17.4094992 40.2872373,17.1998307 38.8614701,17.1998307 L35.3809383,17.1998307 Z M71.244119,13.3838259 C71.5236812,12.880614 71.8102281,12.5241775 72.1037684,12.3145059 C72.3973087,12.1048342 72.7677231,12 73.2150226,12 C73.8999499,12 74.3856819,12.1817127 74.6722332,12.5451435 C74.9587844,12.9085744 75.1020579,13.5305909 75.1020579,14.4112118 L75.143992,19.8626472 C75.143992,20.8271368 74.9867406,21.4771091 74.6722332,21.8125837 C74.3577257,22.1480584 73.7881263,22.3157932 72.9634178,22.3157932 C72.3763372,22.3157932 71.92555,22.1760142 71.6110425,21.896452 C71.2965351,21.6168898 71.0274605,21.0997075 70.8038107,20.3448896 C70.4403799,19.0169692 69.8602971,18.0629775 69.0635448,17.482886 C68.2667926,16.9027945 67.1625385,16.612753 65.7507494,16.612753 C63.5981206,16.612753 61.9487284,17.3396038 60.8025235,18.7933272 C59.6563185,20.2470506 59.0832246,22.3507245 59.0832246,25.104412 C59.0832246,27.8441215 59.6633074,29.9477954 60.8234905,31.4154969 C61.9836736,32.8831984 63.6400547,33.6170381 65.7926836,33.6170381 C67.2603851,33.6170381 68.878327,33.1278116 70.6465578,32.149344 C72.4147886,31.1708763 73.5295261,30.6816498 73.9908037,30.6816498 C74.53595,30.6816498 74.9937262,30.9122852 75.3641461,31.3735628 C75.734566,31.8348404 75.9197732,32.4079343 75.9197732,33.0928616 C75.9197732,34.3229353 74.836486,35.4831009 72.669879,36.5733935 C70.5032721,37.663686 68.0641285,38.2088241 65.3523753,38.2088241 C61.6901107,38.2088241 58.7267959,36.9997358 56.4623422,34.5815228 C54.1978885,32.1633099 53.0656786,29.0043046 53.0656786,25.104412 C53.0656786,21.3443006 54.2118664,18.22024 56.5042763,15.7321366 C58.7966863,13.2440331 61.7040894,12 65.226573,12 C66.2190187,12 67.1974717,12.1118232 68.1619613,12.3354729 C69.1264508,12.5591227 70.1538264,12.9085702 71.244119,13.3838259 L71.244119,13.3838259 Z M81.4645862,32.9670593 L81.4645862,17.3256331 L81.1081461,17.3256331 C80.3533282,17.3256331 79.7802344,17.1299425 79.3888473,16.7385554 C78.9974602,16.3471683 78.8017696,15.7740744 78.8017696,15.0192565 C78.8017696,14.2085262 79.0114381,13.6179599 79.4307814,13.24754 C79.8501247,12.8771201 80.5280528,12.691913 81.4645862,12.691913 L85.4063933,12.691913 L86.6434498,12.691913 C89.5648747,12.691913 91.7034933,12.8177141 93.0593699,13.06932 C94.4152465,13.320926 95.5684233,13.740263 96.5189347,14.3273436 C98.210286,15.3337675 99.5067362,16.7699967 100.408324,18.6360743 C101.309912,20.5021519 101.7607,22.6582429 101.7607,25.104412 C101.7607,27.6903623 101.247012,29.9512876 100.219621,31.8872557 C99.1922296,33.8232239 97.7350336,35.2874089 95.8479888,36.2798546 C94.9953241,36.7271541 93.9959043,37.0521403 92.8496993,37.2548229 C91.7034944,37.4575055 89.9981906,37.5588453 87.7337369,37.5588453 L85.4063933,37.5588453 L81.4645862,37.5588453 C80.5000966,37.5588453 79.8151795,37.380627 79.4098143,37.0241852 C79.0044492,36.6677435 78.8017696,36.0701882 78.8017696,35.2315017 C78.8017696,34.4906619 78.9974602,33.9280514 79.3888473,33.5436534 C79.7802344,33.1592554 80.3533282,32.9670593 81.1081461,32.9670593 L81.4645862,32.9670593 Z M86.8740874,17.2417648 L86.8740874,32.9670593 L88.0692098,32.9670593 C90.7110725,32.9670593 92.6609895,32.3205814 93.9190194,31.0276063 C95.1770492,29.7346312 95.8060547,27.7462749 95.8060547,25.0624779 C95.8060547,22.4206153 95.1665658,20.4497314 93.8875688,19.1497672 C92.6085718,17.849803 90.6831161,17.1998307 88.1111439,17.1998307 C87.7756693,17.1998307 87.5205727,17.2033252 87.3458463,17.2103142 C87.1711199,17.2173033 87.0138685,17.2277867 86.8740874,17.2417648 L86.8740874,17.2417648 Z M121.94052,17.1159625 L112.190837,17.1159625 L112.190837,22.4835296 L115.88104,22.4835296 L115.88104,22.2319249 C115.88104,21.4351727 116.055763,20.841112 116.405216,20.4497249 C116.754669,20.0583378 117.285829,19.8626472 117.998713,19.8626472 C118.627728,19.8626472 119.141415,20.0408655 119.539792,20.3973072 C119.938168,20.753749 120.137353,21.2045363 120.137353,21.7496826 C120.137353,21.7776388 120.144342,21.8684951 120.15832,22.0222543 C120.172298,22.1760135 120.179287,22.3297704 120.179287,22.4835296 L120.179287,26.8237109 C120.179287,27.7602442 120.011552,28.4311834 119.676077,28.8365486 C119.340603,29.2419138 118.795465,29.4445933 118.040647,29.4445933 C117.327763,29.4445933 116.789614,29.2558917 116.426183,28.8784827 C116.062752,28.5010738 115.88104,27.9419578 115.88104,27.201118 L115.88104,26.8237109 L112.190837,26.8237109 L112.190837,33.0928616 L121.94052,33.0928616 L121.94052,30.5977816 C121.94052,29.6612482 122.118738,28.9903091 122.47518,28.5849439 C122.831622,28.1795787 123.415199,27.9768992 124.225929,27.9768992 C125.022682,27.9768992 125.592281,28.1760842 125.934745,28.5744604 C126.277208,28.9728365 126.448438,29.6472701 126.448438,30.5977816 L126.448438,35.6718099 C126.448438,36.4266278 126.30167,36.9298322 126.008129,37.1814382 C125.714589,37.4330442 125.134506,37.5588453 124.267863,37.5588453 L107.095842,37.5588453 C106.173287,37.5588453 105.512831,37.3771326 105.114455,37.0137017 C104.716079,36.6502709 104.516894,36.0562101 104.516894,35.2315017 C104.516894,34.4906619 104.705595,33.9280514 105.083004,33.5436534 C105.460413,33.1592554 106.01254,32.9670593 106.739402,32.9670593 L107.095842,32.9670593 L107.095842,17.3256331 L106.739402,17.3256331 C106.026518,17.3256331 105.477886,17.126448 105.093488,16.7280719 C104.70909,16.3296957 104.516894,15.7600963 104.516894,15.0192565 C104.516894,14.2085262 104.719573,13.6179599 105.124938,13.24754 C105.530304,12.8771201 106.187265,12.691913 107.095842,12.691913 L124.267863,12.691913 C125.120528,12.691913 125.697116,12.8212085 125.997646,13.0798036 C126.298175,13.3383986 126.448438,13.8520864 126.448438,14.6208824 L126.448438,19.3175037 C126.448438,20.2680151 126.273714,20.9494377 125.924261,21.361792 C125.574808,21.7741462 125.008703,21.9803202 124.225929,21.9803202 C123.415199,21.9803202 122.831622,21.7706517 122.47518,21.3513084 C122.118738,20.9319652 121.94052,20.254037 121.94052,19.3175037 L121.94052,17.1159625 Z M19.7719369,47.6405477 C20.037521,47.1373358 20.3205734,46.7808993 20.6211028,46.5712277 C20.9216322,46.361556 21.295541,46.2567218 21.7428405,46.2567218 C22.4277678,46.2567218 22.9134998,46.4384345 23.2000511,46.8018653 C23.4866023,47.1652962 23.6298758,47.7873127 23.6298758,48.6679336 L23.6718099,54.119369 C23.6718099,55.0838586 23.5145586,55.7338309 23.2000511,56.0693055 C22.8855436,56.4047802 22.3089553,56.572515 21.4702687,56.572515 C20.8831881,56.572515 20.4254119,56.4292415 20.0969263,56.1426902 C19.7684407,55.856139 19.4993662,55.3424512 19.2896945,54.6016114 C18.9122856,53.2597129 18.3322027,52.3022267 17.5494286,51.7291243 C16.7666545,51.1560218 15.6693894,50.8694748 14.2576003,50.8694748 C12.1049715,50.8694748 10.4590738,51.5963256 9.31985785,53.050049 C8.18064193,54.5037724 7.61104252,56.6074463 7.61104252,59.3611338 C7.61104252,62.1148214 8.20859773,64.2429566 9.40372609,65.7456034 C10.5988544,67.2482501 12.2936748,67.9995623 14.488238,67.9995623 C14.9914499,67.9995623 15.5645438,67.9401562 16.2075368,67.8213423 C16.8505299,67.7025283 17.6053364,67.5173212 18.4719792,67.2657152 L18.4719792,63.9529198 L16.1027015,63.9529198 C15.1521901,63.9529198 14.4777564,63.7781961 14.0793803,63.4287433 C13.6810042,63.0792906 13.4818191,62.4992078 13.4818191,61.6884774 C13.4818191,60.8497908 13.6810042,60.2522356 14.0793803,59.8957938 C14.4777564,59.5393521 15.1521901,59.3611338 16.1027015,59.3611338 L23.6718099,59.3611338 C24.6502776,59.3611338 25.3386891,59.5358576 25.7370653,59.8853103 C26.1354414,60.2347631 26.3346265,60.8218348 26.3346265,61.6465433 C26.3346265,62.3873831 26.1354414,62.9569825 25.7370653,63.3553586 C25.3386891,63.7537347 24.7621008,63.9529198 24.0072829,63.9529198 L23.6718099,63.9529198 L23.6718099,68.9430799 L23.6718099,69.1946846 C23.6718099,69.6419841 23.6228873,69.9529924 23.5250405,70.1277188 C23.4271937,70.3024451 23.2315031,70.4806634 22.9379628,70.6623788 C22.1412106,71.1376345 20.8762107,71.5569715 19.1429251,71.9204023 C17.4096396,72.2838332 15.6554131,72.4655459 13.8801932,72.4655459 C10.2179286,72.4655459 7.25461383,71.2564576 4.99016011,68.8382446 C2.72570638,66.4200317 1.59349651,63.2610264 1.59349651,59.3611338 C1.59349651,55.6010224 2.73968428,52.4769618 5.03209423,49.9888583 C7.32450417,47.5007549 10.2319073,46.2567218 13.7543909,46.2567218 C14.7328585,46.2567218 15.7078171,46.368545 16.6792957,46.5921947 C17.6507743,46.8158445 18.6816444,47.165292 19.7719369,47.6405477 L19.7719369,47.6405477 Z M35.611576,51.5823548 L35.611576,56.4047785 L42.4678043,56.4047785 L42.4678043,51.5823548 L42.1323314,51.5823548 C41.3775135,51.5823548 40.8009251,51.3866642 40.402549,50.9952772 C40.0041729,50.6038901 39.8049878,50.0307962 39.8049878,49.2759783 C39.8049878,48.4512699 40.0111618,47.8572091 40.4235161,47.4937783 C40.8358703,47.1303474 41.5172929,46.9486347 42.4678043,46.9486347 L47.8773056,46.9486347 C48.8278171,46.9486347 49.5022507,47.1303474 49.9006269,47.4937783 C50.299003,47.8572091 50.498188,48.4512699 50.498188,49.2759783 C50.498188,50.0307962 50.3059919,50.6038901 49.9215939,50.9952772 C49.5371959,51.3866642 48.9745854,51.5823548 48.2337456,51.5823548 L47.8773056,51.5823548 L47.8773056,67.2237811 L48.2337456,67.2237811 C48.9885636,67.2237811 49.5616574,67.4159772 49.9530445,67.8003752 C50.3444316,68.1847732 50.5401222,68.7473837 50.5401222,69.4882235 C50.5401222,70.3129319 50.3374426,70.9069927 49.9320774,71.2704235 C49.5267123,71.6338543 48.8417952,71.815567 47.8773056,71.815567 L42.4678043,71.815567 C41.5033148,71.815567 40.8183977,71.6373488 40.4130325,71.280907 C40.0076674,70.9244652 39.8049878,70.32691 39.8049878,69.4882235 C39.8049878,68.7473837 40.0041729,68.1847732 40.402549,67.8003752 C40.8009251,67.4159772 41.3775135,67.2237811 42.1323314,67.2237811 L42.4678043,67.2237811 L42.4678043,61.0384986 L35.611576,61.0384986 L35.611576,67.2237811 L35.9470489,67.2237811 C36.7018668,67.2237811 37.2784552,67.4159772 37.6768313,67.8003752 C38.0752074,68.1847732 38.2743925,68.7473837 38.2743925,69.4882235 C38.2743925,70.3129319 38.0682185,70.9069927 37.6558642,71.2704235 C37.24351,71.6338543 36.5620874,71.815567 35.611576,71.815567 L30.2020747,71.815567 C29.2375851,71.815567 28.552668,71.6373488 28.1473029,71.280907 C27.7419377,70.9244652 27.5392581,70.32691 27.5392581,69.4882235 C27.5392581,68.7473837 27.7349487,68.1847732 28.1263358,67.8003752 C28.5177229,67.4159772 29.0908168,67.2237811 29.8456347,67.2237811 L30.2020747,67.2237811 L30.2020747,51.5823548 L29.8456347,51.5823548 C29.1047949,51.5823548 28.5421844,51.3866642 28.1577864,50.9952772 C27.7733884,50.6038901 27.5811923,50.0307962 27.5811923,49.2759783 C27.5811923,48.4512699 27.7803773,47.8572091 28.1787534,47.4937783 C28.5771296,47.1303474 29.2515632,46.9486347 30.2020747,46.9486347 L35.611576,46.9486347 C36.5481093,46.9486347 37.2260374,47.1303474 37.6453807,47.4937783 C38.064724,47.8572091 38.2743925,48.4512699 38.2743925,49.2759783 C38.2743925,50.0307962 38.0752074,50.6038901 37.6768313,50.9952772 C37.2784552,51.3866642 36.7018668,51.5823548 35.9470489,51.5823548 L35.611576,51.5823548 Z M67.365213,51.5823548 L67.365213,67.2237811 L70.887679,67.2237811 C71.8381904,67.2237811 72.519613,67.4019993 72.9319673,67.7584411 C73.3443215,68.1148829 73.5504955,68.6914712 73.5504955,69.4882235 C73.5504955,70.2989538 73.340827,70.8895201 72.9214837,71.25994 C72.5021404,71.6303599 71.8242123,71.815567 70.887679,71.815567 L58.4332458,71.815567 C57.4827343,71.815567 56.8013117,71.6338543 56.3889575,71.2704235 C55.9766033,70.9069927 55.7704292,70.3129319 55.7704292,69.4882235 C55.7704292,68.6774931 55.9731088,68.0974103 56.378474,67.7479575 C56.7838391,67.3985048 57.4687562,67.2237811 58.4332458,67.2237811 L61.9557117,67.2237811 L61.9557117,51.5823548 L58.4332458,51.5823548 C57.4827343,51.5823548 56.8013117,51.4006421 56.3889575,51.0372113 C55.9766033,50.6737805 55.7704292,50.0867087 55.7704292,49.2759783 C55.7704292,48.4512699 55.9731088,47.8641981 56.378474,47.5147453 C56.7838391,47.1652926 57.4687562,46.9905689 58.4332458,46.9905689 L70.887679,46.9905689 C71.8801247,46.9905689 72.5720308,47.1652926 72.9634178,47.5147453 C73.3548049,47.8641981 73.5504955,48.4512699 73.5504955,49.2759783 C73.5504955,50.0867087 73.347816,50.6737805 72.9424508,51.0372113 C72.5370856,51.4006421 71.8521685,51.5823548 70.887679,51.5823548 L67.365213,51.5823548 Z M97.8608265,51.5823548 L97.8608265,63.1771386 L97.8608265,63.5755127 C97.8608265,65.4485794 97.7385199,66.8044357 97.493903,67.6431222 C97.2492861,68.4818088 96.8404325,69.2296264 96.26733,69.8865976 C95.5264902,70.7392623 94.4991146,71.3822457 93.1851723,71.815567 C91.87123,72.2488884 90.2917273,72.4655459 88.4466169,72.4655459 C87.1466527,72.4655459 85.8921362,72.3397448 84.6830298,72.0881388 C83.4739233,71.8365328 82.3102631,71.4591296 81.1920144,70.9559176 C80.5769776,70.6763554 80.175113,70.31293 79.9864085,69.8656305 C79.797704,69.418331 79.7033532,68.6914802 79.7033532,67.6850564 L79.7033532,63.3658422 C79.7033532,62.1637247 79.8780769,61.3250508 80.2275297,60.849795 C80.5769824,60.3745393 81.185021,60.136915 82.0516638,60.136915 C83.2957156,60.136915 83.9806326,61.0524675 84.1064356,62.8835998 C84.1204137,63.2050963 84.1413806,63.4497096 84.1693368,63.6174469 C84.3370741,65.2389076 84.7144774,66.3466561 85.301558,66.9407258 C85.8886386,67.5347954 86.8251579,67.8318258 88.1111439,67.8318258 C89.7046484,67.8318258 90.8263749,67.4089943 91.476357,66.5633187 C92.126339,65.7176431 92.4513252,64.1765796 92.4513252,61.9400821 L92.4513252,51.5823548 L88.9288593,51.5823548 C87.9783478,51.5823548 87.2969252,51.4006421 86.884571,51.0372113 C86.4722168,50.6737805 86.2660427,50.0867087 86.2660427,49.2759783 C86.2660427,48.4512699 86.4652278,47.8641981 86.8636039,47.5147453 C87.26198,47.1652926 87.9503916,46.9905689 88.9288593,46.9905689 L99.6220595,46.9905689 C100.600527,46.9905689 101.288939,47.1652926 101.687315,47.5147453 C102.085691,47.8641981 102.284876,48.4512699 102.284876,49.2759783 C102.284876,50.0867087 102.078702,50.6737805 101.666348,51.0372113 C101.253994,51.4006421 100.572571,51.5823548 99.6220595,51.5823548 L97.8608265,51.5823548 Z M112.505343,51.5823548 L112.505343,57.9353738 L118.984165,51.4565525 C118.257303,51.3726838 117.747109,51.1665098 117.453569,50.8380242 C117.160029,50.5095387 117.013261,49.9888619 117.013261,49.2759783 C117.013261,48.4512699 117.212446,47.8572091 117.610822,47.4937783 C118.009198,47.1303474 118.683632,46.9486347 119.634143,46.9486347 L124.771073,46.9486347 C125.721584,46.9486347 126.396018,47.1303474 126.794394,47.4937783 C127.19277,47.8572091 127.391955,48.4512699 127.391955,49.2759783 C127.391955,50.0447743 127.19277,50.6213627 126.794394,51.0057607 C126.396018,51.3901587 125.812441,51.5823548 125.043645,51.5823548 L124.561402,51.5823548 L118.459988,57.641835 C119.592215,58.4805215 120.626579,59.5812811 121.563113,60.9441468 C122.499646,62.3070125 123.596911,64.400203 124.854941,67.2237811 L125.127513,67.2237811 L125.546854,67.2237811 C126.371563,67.2237811 126.98659,67.4124827 127.391955,67.7898917 C127.79732,68.1673006 128,68.7334056 128,69.4882235 C128,70.3129319 127.793826,70.9069927 127.381472,71.2704235 C126.969118,71.6338543 126.287695,71.815567 125.337183,71.815567 L122.758235,71.815567 C121.626008,71.815567 120.710456,71.0537715 120.01155,69.5301576 C119.885747,69.2505954 119.787902,69.026949 119.718012,68.8592117 C118.795456,66.9022764 117.949793,65.3926632 117.180997,64.3303269 C116.412201,63.2679906 115.510627,62.2965265 114.476247,61.4159056 L112.505343,63.302941 L112.505343,67.2237811 L112.840816,67.2237811 C113.595634,67.2237811 114.172222,67.4159772 114.570599,67.8003752 C114.968975,68.1847732 115.16816,68.7473837 115.16816,69.4882235 C115.16816,70.3129319 114.961986,70.9069927 114.549631,71.2704235 C114.137277,71.6338543 113.455855,71.815567 112.505343,71.815567 L107.095842,71.815567 C106.131352,71.815567 105.446435,71.6373488 105.04107,71.280907 C104.635705,70.9244652 104.433025,70.32691 104.433025,69.4882235 C104.433025,68.7473837 104.628716,68.1847732 105.020103,67.8003752 C105.41149,67.4159772 105.984584,67.2237811 106.739402,67.2237811 L107.095842,67.2237811 L107.095842,51.5823548 L106.739402,51.5823548 C105.998562,51.5823548 105.435952,51.3866642 105.051554,50.9952772 C104.667156,50.6038901 104.474959,50.0307962 104.474959,49.2759783 C104.474959,48.4512699 104.674145,47.8572091 105.072521,47.4937783 C105.470897,47.1303474 106.14533,46.9486347 107.095842,46.9486347 L112.505343,46.9486347 C113.441877,46.9486347 114.119805,47.1303474 114.539148,47.4937783 C114.958491,47.8572091 115.16816,48.4512699 115.16816,49.2759783 C115.16816,50.0307962 114.968975,50.6038901 114.570599,50.9952772 C114.172222,51.3866642 113.595634,51.5823548 112.840816,51.5823548 L112.505343,51.5823548 Z M13.439885,96.325622 L17.4445933,84.4372993 C17.6961993,83.6545252 18.0456468,83.0849258 18.4929463,82.728484 C18.9402458,82.3720422 19.5343065,82.193824 20.2751463,82.193824 L23.5460076,82.193824 C24.496519,82.193824 25.1779416,82.3755367 25.5902958,82.7389675 C26.0026501,83.1023984 26.2088241,83.6964591 26.2088241,84.5211676 C26.2088241,85.2759855 26.009639,85.8490794 25.6112629,86.2404664 C25.2128868,86.6318535 24.6362984,86.8275441 23.8814805,86.8275441 L23.5460076,86.8275441 L24.1330852,102.46897 L24.4895252,102.46897 C25.2443431,102.46897 25.8104481,102.661166 26.187857,103.045564 C26.565266,103.429962 26.7539676,103.992573 26.7539676,104.733413 C26.7539676,105.558121 26.5547826,106.152182 26.1564064,106.515613 C25.7580303,106.879044 25.0835967,107.060756 24.1330852,107.060756 L19.4154969,107.060756 C18.4649855,107.060756 17.7905518,106.882538 17.3921757,106.526096 C16.9937996,106.169654 16.7946145,105.572099 16.7946145,104.733413 C16.7946145,103.992573 16.9868106,103.429962 17.3712086,103.045564 C17.7556066,102.661166 18.325206,102.46897 19.0800239,102.46897 L19.4154969,102.46897 L19.1219581,89.6790642 L16.0607674,99.1981091 C15.8371177,99.9109927 15.5191204,100.42468 15.1067662,100.739188 C14.694412,101.053695 14.1248126,101.210947 13.3979509,101.210947 C12.6710892,101.210947 12.0945008,101.053695 11.6681685,100.739188 C11.2418362,100.42468 10.91685,99.9109927 10.6932002,99.1981091 L7.65297664,89.6790642 L7.35943781,102.46897 L7.69491075,102.46897 C8.44972866,102.46897 9.01932808,102.661166 9.40372609,103.045564 C9.78812409,103.429962 9.98032022,103.992573 9.98032022,104.733413 C9.98032022,105.558121 9.77764067,106.152182 9.3722755,106.515613 C8.96691032,106.879044 8.29597114,107.060756 7.35943781,107.060756 L2.62088241,107.060756 C1.68434908,107.060756 1.01340989,106.879044 0.608044719,106.515613 C0.202679546,106.152182 0,105.558121 0,104.733413 C0,103.992573 0.192196121,103.429962 0.57659413,103.045564 C0.960992139,102.661166 1.53059155,102.46897 2.28540946,102.46897 L2.62088241,102.46897 L3.22892713,86.8275441 L2.89345418,86.8275441 C2.13863627,86.8275441 1.56204791,86.6318535 1.16367179,86.2404664 C0.765295672,85.8490794 0.5661106,85.2759855 0.5661106,84.5211676 C0.5661106,83.6964591 0.772284622,83.1023984 1.18463885,82.7389675 C1.59699308,82.3755367 2.27841569,82.193824 3.22892713,82.193824 L6.49978838,82.193824 C7.22665007,82.193824 7.81022738,82.3685477 8.25053783,82.7180005 C8.69084827,83.0674532 9.05077919,83.6405471 9.33034138,84.4372993 L13.439885,96.325622 Z M43.8935644,98.3803938 L43.8935644,86.8275441 L42.7403761,86.8275441 C41.8178209,86.8275441 41.1573651,86.6458314 40.758989,86.2824006 C40.3606129,85.9189697 40.1614278,85.3318979 40.1614278,84.5211676 C40.1614278,83.7104372 40.3606129,83.119871 40.758989,82.7494511 C41.1573651,82.3790312 41.8178209,82.193824 42.7403761,82.193824 L48.6950209,82.193824 C49.6035981,82.193824 50.2605593,82.3790312 50.6659245,82.7494511 C51.0712897,83.119871 51.2739692,83.7104372 51.2739692,84.5211676 C51.2739692,85.2620074 51.0817731,85.8316068 50.6973751,86.2299829 C50.3129771,86.628359 49.7643445,86.8275441 49.051461,86.8275441 L48.6950209,86.8275441 L48.6950209,105.865634 C48.6950209,106.522605 48.6251315,106.934953 48.4853504,107.10269 C48.3455693,107.270428 48.0310665,107.354295 47.5418327,107.354295 L45.4451268,107.354295 C44.7741775,107.354295 44.3024234,107.284406 44.0298503,107.144625 C43.7572771,107.004843 43.5231473,106.76023 43.3274538,106.410777 L34.6051571,91.0838571 L34.6051571,102.46897 L35.8212466,102.46897 C36.7298237,102.46897 37.379796,102.643694 37.7711831,102.993147 C38.1625701,103.3426 38.3582607,103.922682 38.3582607,104.733413 C38.3582607,105.558121 38.1590757,106.152182 37.7606995,106.515613 C37.3623234,106.879044 36.7158456,107.060756 35.8212466,107.060756 L29.8037005,107.060756 C28.8951234,107.060756 28.2381621,106.879044 27.832797,106.515613 C27.4274318,106.152182 27.2247522,105.558121 27.2247522,104.733413 C27.2247522,103.992573 27.4134539,103.429962 27.7908629,103.045564 C28.1682718,102.661166 28.7273878,102.46897 29.4682276,102.46897 L29.8037005,102.46897 L29.8037005,86.8275441 L29.4682276,86.8275441 C28.755344,86.8275441 28.203217,86.628359 27.8118299,86.2299829 C27.4204428,85.8316068 27.2247522,85.2620074 27.2247522,84.5211676 C27.2247522,83.7104372 27.4309263,83.119871 27.8432805,82.7494511 C28.2556347,82.3790312 28.9091015,82.193824 29.8037005,82.193824 L33.2422983,82.193824 C34.0670067,82.193824 34.6261227,82.3021527 34.919663,82.5188134 C35.2132033,82.7354741 35.5416839,83.1722835 35.9051148,83.8292546 L43.8935644,98.3803938 Z M64.6604624,86.3662688 C62.8572863,86.3662688 61.4420239,87.0931196 60.4146329,88.546843 C59.3872418,90.0005663 58.873554,92.0203728 58.873554,94.6063231 C58.873554,97.1922733 59.3907363,99.2190688 60.4251164,100.68677 C61.4594965,102.154472 62.8712644,102.888312 64.6604624,102.888312 C66.4636385,102.888312 67.8823953,102.157966 68.9167754,100.697254 C69.9511555,99.2365414 70.4683378,97.2062514 70.4683378,94.6063231 C70.4683378,92.0203728 69.95465,90.0005663 68.9272589,88.546843 C67.8998679,87.0931196 66.4776166,86.3662688 64.6604624,86.3662688 L64.6604624,86.3662688 Z M64.6604624,81.501911 C68.0990773,81.501911 70.929602,82.7319662 73.1521214,85.1921135 C75.3746408,87.6522607 76.4858838,90.7902992 76.4858838,94.6063231 C76.4858838,98.4503032 75.3816297,101.595331 73.1730884,104.0415 C70.9645471,106.487669 68.1270335,107.710735 64.6604624,107.710735 C61.2358256,107.710735 58.4053009,106.477185 56.1688034,104.010049 C53.9323059,101.542913 52.8140739,98.4083688 52.8140739,94.6063231 C52.8140739,90.7763211 53.9218224,87.6347881 56.1373528,85.1816299 C58.3528831,82.7284717 61.1938912,81.501911 64.6604624,81.501911 L64.6604624,81.501911 Z M87.4611651,98.1707232 L87.4611651,102.46897 L89.6207722,102.46897 C90.5293493,102.46897 91.1758272,102.643694 91.5602252,102.993147 C91.9446232,103.3426 92.1368193,103.922682 92.1368193,104.733413 C92.1368193,105.558121 91.9411287,106.152182 91.5497417,106.515613 C91.1583546,106.879044 90.5153712,107.060756 89.6207722,107.060756 L82.3661697,107.060756 C81.4436145,107.060756 80.7831587,106.879044 80.3847826,106.515613 C79.9864065,106.152182 79.7872214,105.558121 79.7872214,104.733413 C79.7872214,103.992573 79.9759231,103.429962 80.353332,103.045564 C80.730741,102.661166 81.282868,102.46897 82.0097297,102.46897 L82.3661697,102.46897 L82.3661697,86.8275441 L82.0097297,86.8275441 C81.2968461,86.8275441 80.7482136,86.628359 80.3638155,86.2299829 C79.9794175,85.8316068 79.7872214,85.2620074 79.7872214,84.5211676 C79.7872214,83.7104372 79.989901,83.119871 80.3952661,82.7494511 C80.8006313,82.3790312 81.4575926,82.193824 82.3661697,82.193824 L91.0255652,82.193824 C94.450202,82.193824 97.0396079,82.8507853 98.7938606,84.1647276 C100.548113,85.4786699 101.425227,87.414609 101.425227,89.972603 C101.425227,92.6703781 100.551608,94.7111515 98.8043442,96.0949843 C97.0570805,97.4788171 94.4641801,98.1707232 91.0255652,98.1707232 L87.4611651,98.1707232 Z M87.4611651,86.8275441 L87.4611651,93.4531348 L90.4384875,93.4531348 C92.0879044,93.4531348 93.328443,93.1735768 94.1601405,92.6144525 C94.9918381,92.0553281 95.4076806,91.2166541 95.4076806,90.0984053 C95.4076806,89.0500471 94.9778602,88.2428234 94.1182064,87.67671 C93.2585527,87.1105966 92.031992,86.8275441 90.4384875,86.8275441 L87.4611651,86.8275441 Z M114.727851,107.396229 L113.092421,109.03166 C113.69348,108.835966 114.284046,108.689198 114.864137,108.591352 C115.444229,108.493505 116.013828,108.444582 116.572953,108.444582 C117.677223,108.444582 118.840883,108.608823 120.063968,108.937308 C121.287053,109.265794 122.031376,109.430034 122.29696,109.430034 C122.744259,109.430034 123.327837,109.279772 124.047709,108.979242 C124.767582,108.678713 125.253314,108.52845 125.50492,108.52845 C126.02211,108.52845 126.45193,108.727636 126.794394,109.126012 C127.136858,109.524388 127.308087,110.024098 127.308087,110.625156 C127.308087,111.421909 126.836333,112.099837 125.892811,112.658961 C124.949288,113.218086 123.792617,113.497643 122.422762,113.497643 C121.486229,113.497643 120.28413,113.277492 118.816428,112.837181 C117.348727,112.396871 116.286406,112.176719 115.629435,112.176719 C114.636989,112.176719 113.518757,112.449288 112.274706,112.994434 C111.030654,113.53958 110.261869,113.812149 109.968329,113.812149 C109.36727,113.812149 108.857077,113.612964 108.437734,113.214588 C108.01839,112.816212 107.808722,112.337469 107.808722,111.778345 C107.808722,111.386958 107.941512,110.971115 108.207096,110.530805 C108.47268,110.090494 108.94094,109.520895 109.611889,108.821989 L111.729562,106.683349 C109.395218,105.830685 107.536157,104.29661 106.152324,102.08108 C104.768491,99.8655494 104.076585,97.3180772 104.076585,94.4385866 C104.076585,90.6365409 105.180839,87.5299526 107.389381,85.1187288 C109.597922,82.7075049 112.442425,81.501911 115.922974,81.501911 C119.389545,81.501911 122.227059,82.7109994 124.4356,85.1292123 C126.644141,87.5474252 127.748395,90.650519 127.748395,94.4385866 C127.748395,98.2126762 126.65113,101.322759 124.456567,103.768928 C122.262004,106.215097 119.480402,107.438163 116.111677,107.438163 C115.888028,107.438163 115.660887,107.434669 115.430248,107.42768 C115.199609,107.420691 114.965479,107.410207 114.727851,107.396229 L114.727851,107.396229 Z M115.922974,86.3662688 C114.119798,86.3662688 112.704535,87.0931196 111.677144,88.546843 C110.649753,90.0005663 110.136065,92.0203728 110.136065,94.6063231 C110.136065,97.1922733 110.653248,99.2190688 111.687628,100.68677 C112.722008,102.154472 114.133776,102.888312 115.922974,102.888312 C117.72615,102.888312 119.144907,102.157966 120.179287,100.697254 C121.213667,99.2365414 121.730849,97.2062514 121.730849,94.6063231 C121.730849,92.0203728 121.217161,90.0005663 120.18977,88.546843 C119.162379,87.0931196 117.740128,86.3662688 115.922974,86.3662688 L115.922974,86.3662688 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/mono-line": {
"title": "$:/core/images/mono-line",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-mono-line tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M60.4374591,84.522627 L61.3450888,84.522627 C63.2671377,84.522627 64.7264493,85.0120303 65.7230673,85.9908515 C66.7196852,86.9696727 67.2179868,88.4022896 67.2179868,90.288745 C67.2179868,92.3887615 66.6929905,93.9014625 65.6429823,94.8268935 C64.5929741,95.7523244 62.857817,96.215033 60.4374591,96.215033 L44.3670747,96.215033 C41.9111232,96.215033 40.1670679,95.7612227 39.1348565,94.8535884 C38.102645,93.9459542 37.586547,92.424355 37.586547,90.288745 C37.586547,88.2243221 38.102645,86.747214 39.1348565,85.8573766 C40.1670679,84.9675391 41.9111232,84.522627 44.3670747,84.522627 L46.235724,84.522627 L44.0467348,78.2759992 L20.9822627,78.2759992 L18.6864935,84.522627 L20.5551429,84.522627 C22.9755008,84.522627 24.7106579,84.9764373 25.7606661,85.8840716 C26.8106743,86.7917058 27.3356705,88.2599156 27.3356705,90.288745 C27.3356705,92.3887615 26.8106743,93.9014625 25.7606661,94.8268935 C24.7106579,95.7523244 22.9755008,96.215033 20.5551429,96.215033 L6.78052766,96.215033 C4.32457622,96.215033 2.58052094,95.7523244 1.54830946,94.8268935 C0.516097994,93.9014625 0,92.3887615 0,90.288745 C0,88.4022896 0.498301511,86.9696727 1.49491948,85.9908515 C2.49153745,85.0120303 3.95084902,84.522627 5.87289797,84.522627 L6.78052766,84.522627 L21.0890427,44.6937008 L16.8178442,44.6937008 C14.3974863,44.6937008 12.6623292,44.2309922 11.612321,43.3055613 C10.5623128,42.3801303 10.0373165,40.8852258 10.0373165,38.8208028 C10.0373165,36.7207864 10.5623128,35.2080854 11.612321,34.2826544 C12.6623292,33.3572234 14.3974863,32.8945149 16.8178442,32.8945149 L36.8390873,32.8945149 C40.0069087,32.8945149 42.231469,34.6029772 43.512835,38.0199531 L43.512835,38.180123 L60.4374591,84.522627 Z M32.4611088,44.6937008 L24.7195615,67.224273 L40.2026561,67.224273 L32.4611088,44.6937008 Z M89.5058233,68.5590225 L89.5058233,84.8429669 L97.5143205,84.8429669 C103.173687,84.8429669 107.160099,84.22009 109.473676,82.9743176 C111.787254,81.7285451 112.944025,79.6463566 112.944025,76.7276897 C112.944025,73.7734293 111.840643,71.6734444 109.633846,70.4276719 C107.427049,69.1818994 103.565213,68.5590225 98.0482204,68.5590225 L89.5058233,68.5590225 Z M116.734714,62.6327346 C120.614405,64.0564746 123.461842,66.0051894 125.277111,68.4789376 C127.092379,70.9526857 128,74.1115614 128,77.9556593 C128,81.1946677 127.216955,84.1488838 125.650841,86.8183962 C124.084727,89.4879087 121.84237,91.676876 118.923703,93.385364 C117.215215,94.3819819 115.302093,95.1027395 113.18428,95.5476582 C111.066467,95.9925769 108.06776,96.215033 104.188068,96.215033 L99.7033098,96.215033 L76.3184979,96.215033 C73.9693269,96.215033 72.2875593,95.7523244 71.2731446,94.8268935 C70.2587299,93.9014625 69.7515301,92.3887615 69.7515301,90.288745 C69.7515301,88.4022896 70.2320352,86.9696727 71.1930596,85.9908515 C72.1540841,85.0120303 73.5600062,84.522627 75.4108682,84.522627 L76.3184979,84.522627 L76.3184979,44.6937008 L75.4108682,44.6937008 C73.5600062,44.6937008 72.1540841,44.1953993 71.1930596,43.1987813 C70.2320352,42.2021633 69.7515301,40.7428518 69.7515301,38.8208028 C69.7515301,36.7563799 70.2676281,35.2525771 71.2998396,34.3093494 C72.3320511,33.3661217 74.0049204,32.8945149 76.3184979,32.8945149 L100.877889,32.8945149 C108.388118,32.8945149 114.09189,34.3538264 117.989378,37.2724934 C121.886867,40.1911603 123.835581,44.4623161 123.835581,50.0860889 C123.835581,52.8623819 123.239399,55.3093982 122.047017,57.4272114 C120.854635,59.5450246 119.083885,61.2801816 116.734714,62.6327346 L116.734714,62.6327346 Z M89.5058233,44.3733609 L89.5058233,57.8276363 L96.7134708,57.8276363 C101.091471,57.8276363 104.179161,57.3115383 105.976633,56.2793268 C107.774104,55.2471153 108.672827,53.50306 108.672827,51.0471086 C108.672827,48.7335312 107.863087,47.0428653 106.243583,45.9750604 C104.624078,44.9072554 101.999097,44.3733609 98.3685602,44.3733609 L89.5058233,44.3733609 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/new-button": {
"title": "$:/core/images/new-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-new-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\">\n <path d=\"M56,72 L8.00697327,72 C3.59075293,72 0,68.418278 0,64 C0,59.5907123 3.58484404,56 8.00697327,56 L56,56 L56,8.00697327 C56,3.59075293 59.581722,0 64,0 C68.4092877,0 72,3.58484404 72,8.00697327 L72,56 L119.993027,56 C124.409247,56 128,59.581722 128,64 C128,68.4092877 124.415156,72 119.993027,72 L72,72 L72,119.993027 C72,124.409247 68.418278,128 64,128 C59.5907123,128 56,124.415156 56,119.993027 L56,72 L56,72 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/new-here-button": {
"title": "$:/core/images/new-here-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-new-here-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n \t<g transform=\"translate(52.233611, 64.389922) rotate(75.000000) translate(-52.233611, -64.389922) translate(-7.734417, 3.702450)\">\n\t <path d=\"M18.9270186,45.959338 L18.9080585,49.6521741 C18.8884833,53.4648378 21.0574548,58.7482162 23.7526408,61.4434022 L78.5671839,116.257945 C81.2617332,118.952495 85.6348701,118.950391 88.3334363,116.251825 L115.863237,88.7220241 C118.555265,86.0299959 118.564544,81.6509578 115.869358,78.9557717 L61.0548144,24.1412286 C58.3602652,21.4466794 53.0787224,19.2788426 49.2595808,19.3006519 L25.9781737,19.4336012 C22.1633003,19.4553862 19.0471195,22.5673232 19.0275223,26.3842526 L18.9871663,34.2443819 C19.0818862,34.255617 19.1779758,34.2665345 19.2754441,34.2771502 C22.6891275,34.6489512 27.0485594,34.2348566 31.513244,33.2285542 C31.7789418,32.8671684 32.075337,32.5211298 32.4024112,32.1940556 C34.8567584,29.7397084 38.3789778,29.0128681 41.4406288,30.0213822 C41.5958829,29.9543375 41.7503946,29.8866669 41.9041198,29.8183808 L42.1110981,30.2733467 C43.1114373,30.6972371 44.0473796,31.3160521 44.8614145,32.1300869 C48.2842088,35.5528813 48.2555691,41.130967 44.7974459,44.5890903 C41.4339531,47.952583 36.0649346,48.0717177 32.6241879,44.9262969 C27.8170558,45.8919233 23.0726921,46.2881596 18.9270186,45.959338 Z\"></path>\n\t <path d=\"M45.4903462,38.8768094 C36.7300141,42.6833154 26.099618,44.7997354 18.1909048,43.9383587 C7.2512621,42.7468685 1.50150083,35.8404432 4.66865776,24.7010202 C7.51507386,14.6896965 15.4908218,6.92103848 24.3842626,4.38423012 C34.1310219,1.60401701 42.4070208,6.15882777 42.4070209,16.3101169 L34.5379395,16.310117 C34.5379394,11.9285862 31.728784,10.3825286 26.5666962,11.8549876 C20.2597508,13.6540114 14.3453742,19.4148216 12.2444303,26.8041943 C10.4963869,32.9523565 12.6250796,35.5092726 19.0530263,36.2093718 C25.5557042,36.9176104 35.0513021,34.9907189 42.7038419,31.5913902 L42.7421786,31.6756595 C44.3874154,31.5384763 47.8846101,37.3706354 45.9274416,38.6772897 L45.9302799,38.6835285 C45.9166992,38.6895612 45.9031139,38.6955897 45.8895238,38.7016142 C45.8389288,38.7327898 45.7849056,38.7611034 45.7273406,38.7863919 C45.6506459,38.8200841 45.571574,38.8501593 45.4903462,38.8768094 Z\"></path>\n </g>\n <rect x=\"96\" y=\"80\" width=\"16\" height=\"48\" rx=\"8\"></rect>\n <rect x=\"80\" y=\"96\" width=\"48\" height=\"16\" rx=\"8\"></rect>\n </g>\n </g>\n</svg>"
},
"$:/core/images/new-image-button": {
"title": "$:/core/images/new-image-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-new-image-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\">\n <path d=\"M81.3619177,73.6270062 L97.1875317,46.2162388 C97.91364,44.9585822 97.4824378,43.3533085 96.2260476,42.6279312 L46.2162388,13.7547547 C44.9585822,13.0286463 43.3533085,13.4598485 42.6279312,14.7162388 L30.0575956,36.4886988 L40.0978909,31.2276186 C43.1404959,29.6333041 46.8692155,31.3421319 47.6479264,34.6877101 L51.2545483,52.3903732 L61.1353556,53.2399953 C63.2899974,53.4346096 65.1046382,54.9309951 65.706105,57.0091178 C65.7395572,57.1246982 65.8069154,57.3539875 65.9047035,57.6813669 C66.0696435,58.2335608 66.2581528,58.852952 66.4667073,59.5238092 C67.0618822,61.4383079 67.6960725,63.3742727 68.3393254,65.2021174 C68.5462918,65.7902259 68.7511789,66.3583016 68.953259,66.9034738 C69.5777086,68.5881157 70.1617856,70.0172008 70.6783305,71.110045 C70.9334784,71.6498566 71.1627732,72.0871602 71.4035746,72.5373068 C71.6178999,72.7492946 71.9508843,72.9623307 72.4151452,73.1586945 C73.5561502,73.6412938 75.1990755,73.899146 77.0720271,73.9171651 C77.9355886,73.9254732 78.7819239,73.8832103 79.5638842,73.8072782 C80.0123946,73.7637257 80.3172916,73.7224469 80.4352582,73.7027375 C80.7503629,73.6500912 81.0598053,73.6256267 81.3619177,73.6270062 L81.3619177,73.6270062 L81.3619177,73.6270062 L81.3619177,73.6270062 Z M37.4707881,2.64867269 C38.9217993,0.135447653 42.1388058,-0.723707984 44.6486727,0.725364314 L108.293614,37.4707881 C110.806839,38.9217993 111.665994,42.1388058 110.216922,44.6486727 L73.4714982,108.293614 C72.0204871,110.806839 68.8034805,111.665994 66.2936136,110.216922 L2.64867269,73.4714982 C0.135447653,72.0204871 -0.723707984,68.8034805 0.725364314,66.2936136 L37.4707881,2.64867269 L37.4707881,2.64867269 L37.4707881,2.64867269 L37.4707881,2.64867269 Z M80.3080975,53.1397764 C82.8191338,54.5895239 86.0299834,53.7291793 87.4797308,51.218143 C88.9294783,48.7071068 88.0691338,45.4962571 85.5580975,44.0465097 C83.0470612,42.5967622 79.8362116,43.4571068 78.3864641,45.968143 C76.9367166,48.4791793 77.7970612,51.6900289 80.3080975,53.1397764 L80.3080975,53.1397764 L80.3080975,53.1397764 L80.3080975,53.1397764 Z M96,112 L88.0070969,112 C83.5881712,112 80,108.418278 80,104 C80,99.5907123 83.5848994,96 88.0070969,96 L96,96 L96,88.0070969 C96,83.5881712 99.581722,80 104,80 C108.409288,80 112,83.5848994 112,88.0070969 L112,96 L119.992903,96 C124.411829,96 128,99.581722 128,104 C128,108.409288 124.415101,112 119.992903,112 L112,112 L112,119.992903 C112,124.411829 108.418278,128 104,128 C99.5907123,128 96,124.415101 96,119.992903 L96,112 L96,112 Z M33.3471097,51.7910932 C40.7754579,59.7394511 42.3564368,62.4818351 40.7958321,65.1848818 C39.2352273,67.8879286 26.9581062,62.8571718 24.7019652,66.7649227 C22.4458242,70.6726735 23.7947046,70.0228006 22.2648667,72.6725575 L41.9944593,84.0634431 C41.9944593,84.0634431 36.3904568,75.8079231 37.7602356,73.4353966 C40.2754811,69.0788636 46.5298923,72.1787882 48.1248275,69.4162793 C50.538989,65.234829 43.0222016,59.7770885 33.3471097,51.7910932 L33.3471097,51.7910932 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/new-journal-button": {
"title": "$:/core/images/new-journal-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-new-journal-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M102.545455,112.818182 L102.545455,124.636364 L102.545455,124.636364 L102.545455,124.636364 C102.545455,125.941761 103.630828,127 104.969697,127 L111.030303,127 C112.369172,127 113.454545,125.941761 113.454545,124.636364 L113.454545,112.818182 L125.575758,112.818182 C126.914626,112.818182 128,111.759982 128,110.454545 L128,104.545455 C128,103.240018 126.914626,102.181818 125.575758,102.181818 L113.454545,102.181818 L113.454545,90.3636364 C113.454545,89.0582 112.369172,88 111.030303,88 L104.969697,88 L104.969697,88 C103.630828,88 102.545455,89.0582 102.545455,90.3636364 L102.545455,102.181818 L90.4242424,102.181818 L90.4242424,102.181818 C89.0853705,102.181818 88,103.240018 88,104.545455 L88,110.454545 L88,110.454545 L88,110.454545 C88,111.759982 89.0853705,112.818182 90.4242424,112.818182 L102.545455,112.818182 Z\"></path>\n <g transform=\"translate(59.816987, 64.316987) rotate(30.000000) translate(-59.816987, -64.316987) translate(20.316987, 12.816987)\">\n <g transform=\"translate(0.000000, 0.000000)\">\n <path d=\"M9.99631148,0 C4.4755011,0 -2.27373675e-13,4.48070044 -2.27373675e-13,9.99759461 L-2.27373675e-13,91.6128884 C-2.27373675e-13,97.1344074 4.46966773,101.610483 9.99631148,101.610483 L68.9318917,101.610483 C74.4527021,101.610483 78.9282032,97.1297826 78.9282032,91.6128884 L78.9282032,9.99759461 C78.9282032,4.47607557 74.4585355,0 68.9318917,0 L9.99631148,0 Z M20.8885263,26 C24.2022348,26 26.8885263,23.3137085 26.8885263,20 C26.8885263,16.6862915 24.2022348,14 20.8885263,14 C17.5748178,14 14.8885263,16.6862915 14.8885263,20 C14.8885263,23.3137085 17.5748178,26 20.8885263,26 Z M57.3033321,25.6783342 C60.6170406,25.6783342 63.3033321,22.9920427 63.3033321,19.6783342 C63.3033321,16.3646258 60.6170406,13.6783342 57.3033321,13.6783342 C53.9896236,13.6783342 51.3033321,16.3646258 51.3033321,19.6783342 C51.3033321,22.9920427 53.9896236,25.6783342 57.3033321,25.6783342 Z\"></path>\n <text font-family=\"Helvetica\" font-size=\"47.1724138\" font-weight=\"bold\" fill=\"#FFFFFF\">\n <tspan x=\"42\" y=\"77.4847912\" text-anchor=\"middle\"><<now \"DD\">></tspan>\n </text>\n </g>\n </g>\n </g>\n</svg>"
},
"$:/core/images/opacity": {
"title": "$:/core/images/opacity",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-opacity tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M102.361773,65 C101.833691,67.051742 101.183534,69.0544767 100.419508,71 L82.5835324,71 C83.7602504,69.1098924 84.7666304,67.1027366 85.581205,65 L102.361773,65 Z M102.834311,63 C103.256674,61.0388326 103.568427,59.0365486 103.762717,57 L87.6555706,57 C87.3692052,59.0609452 86.9083652,61.0660782 86.2884493,63 L102.834311,63 Z M99.5852583,73 C98.6682925,75.0747721 97.6196148,77.0783056 96.4498253,79 L75.8124196,79 C77.8387053,77.2115633 79.6621163,75.1985844 81.2437158,73 L99.5852583,73 Z M95.1689122,81 C93.7449202,83.1155572 92.1695234,85.1207336 90.458251,87 L60.4614747,87 C65.1836162,85.86248 69.5430327,83.794147 73.3347255,81 L95.1689122,81 Z M87.6555706,47 L103.762717,47 C101.246684,20.6269305 79.0321807,0 52,0 C23.281193,0 0,23.281193 0,52 C0,77.2277755 17.9651296,98.2595701 41.8000051,103 L62.1999949,103 C67.8794003,101.870444 73.2255333,99.8158975 78.074754,97 L39,97 L39,95 L81.2493857,95 C83.8589242,93.2215015 86.2981855,91.2116653 88.5376609,89 L39,89 L39,87 L43.5385253,87 C27.7389671,83.1940333 16,68.967908 16,52 C16,32.117749 32.117749,16 52,16 C70.1856127,16 85.2217929,29.4843233 87.6555706,47 Z M87.8767787,49 L103.914907,49 C103.971379,49.9928025 104,50.9930589 104,52 C104,53.0069411 103.971379,54.0071975 103.914907,55 L87.8767787,55 C87.958386,54.0107999 88,53.0102597 88,52 C88,50.9897403 87.958386,49.9892001 87.8767787,49 Z\"></path>\n <path d=\"M76,128 C104.718807,128 128,104.718807 128,76 C128,47.281193 104.718807,24 76,24 C47.281193,24 24,47.281193 24,76 C24,104.718807 47.281193,128 76,128 L76,128 Z M76,112 C95.882251,112 112,95.882251 112,76 C112,56.117749 95.882251,40 76,40 C56.117749,40 40,56.117749 40,76 C40,95.882251 56.117749,112 76,112 L76,112 Z\"></path>\n <path d=\"M37,58 L90,58 L90,62 L37,62 L37,58 L37,58 Z M40,50 L93,50 L93,54 L40,54 L40,50 L40,50 Z M40,42 L93,42 L93,46 L40,46 L40,42 L40,42 Z M32,66 L85,66 L85,70 L32,70 L32,66 L32,66 Z M30,74 L83,74 L83,78 L30,78 L30,74 L30,74 Z M27,82 L80,82 L80,86 L27,86 L27,82 L27,82 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/open-window": {
"title": "$:/core/images/open-window",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-open-window tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M16,112 L104.993898,112 C108.863261,112 112,115.590712 112,120 C112,124.418278 108.858091,128 104.993898,128 L7.00610161,128 C3.13673853,128 0,124.409288 0,120 C0,119.998364 4.30952878e-07,119.996727 1.29273572e-06,119.995091 C4.89579306e-07,119.993456 0,119.99182 0,119.990183 L0,24.0098166 C0,19.586117 3.59071231,16 8,16 C12.418278,16 16,19.5838751 16,24.0098166 L16,112 Z\"></path>\n <path d=\"M96,43.1959595 L96,56 C96,60.418278 99.581722,64 104,64 C108.418278,64 112,60.418278 112,56 L112,24 C112,19.5907123 108.415101,16 103.992903,16 L72.0070969,16 C67.5881712,16 64,19.581722 64,24 C64,28.4092877 67.5848994,32 72.0070969,32 L84.5685425,32 L48.2698369,68.2987056 C45.1421332,71.4264093 45.1434327,76.4904296 48.267627,79.614624 C51.3854642,82.7324612 56.4581306,82.7378289 59.5835454,79.6124141 L96,43.1959595 Z M32,7.9992458 C32,3.58138434 35.5881049,0 39.9992458,0 L120.000754,0 C124.418616,0 128,3.5881049 128,7.9992458 L128,88.0007542 C128,92.4186157 124.411895,96 120.000754,96 L39.9992458,96 C35.5813843,96 32,92.4118951 32,88.0007542 L32,7.9992458 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/options-button": {
"title": "$:/core/images/options-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-options-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M110.48779,76.0002544 C109.354214,80.4045063 107.611262,84.5641217 105.354171,88.3838625 L105.354171,88.3838625 L112.07833,95.1080219 C115.20107,98.2307613 115.210098,103.299824 112.089164,106.420759 L106.420504,112.089418 C103.301049,115.208874 98.2346851,115.205502 95.1077675,112.078585 L88.3836082,105.354425 C84.5638673,107.611516 80.4042519,109.354468 76,110.488045 L76,110.488045 L76,119.993281 C76,124.409501 72.4220153,128.000254 68.0083475,128.000254 L59.9916525,128.000254 C55.5800761,128.000254 52,124.41541 52,119.993281 L52,110.488045 C47.5957481,109.354468 43.4361327,107.611516 39.6163918,105.354425 L32.8922325,112.078585 C29.7694931,115.201324 24.7004301,115.210353 21.5794957,112.089418 L15.9108363,106.420759 C12.7913807,103.301303 12.7947522,98.2349395 15.9216697,95.1080219 L22.6458291,88.3838625 C20.3887383,84.5641217 18.6457859,80.4045063 17.5122098,76.0002544 L8.00697327,76.0002544 C3.59075293,76.0002544 2.19088375e-16,72.4222697 4.89347582e-16,68.0086019 L9.80228577e-16,59.9919069 C1.25035972e-15,55.5803305 3.58484404,52.0002544 8.00697327,52.0002544 L17.5122098,52.0002544 C18.6457859,47.5960025 20.3887383,43.4363871 22.6458291,39.6166462 L15.9216697,32.8924868 C12.7989304,29.7697475 12.7899019,24.7006845 15.9108363,21.5797501 L21.5794957,15.9110907 C24.6989513,12.7916351 29.7653149,12.7950065 32.8922325,15.9219241 L39.6163918,22.6460835 C43.4361327,20.3889927 47.5957481,18.6460403 52,17.5124642 L52,8.00722764 C52,3.5910073 55.5779847,0.000254375069 59.9916525,0.000254375069 L68.0083475,0.000254375069 C72.4199239,0.000254375069 76,3.58509841 76,8.00722764 L76,17.5124642 C80.4042519,18.6460403 84.5638673,20.3889927 88.3836082,22.6460835 L95.1077675,15.9219241 C98.2305069,12.7991848 103.29957,12.7901562 106.420504,15.9110907 L112.089164,21.5797501 C115.208619,24.6992057 115.205248,29.7655693 112.07833,32.8924868 L105.354171,39.6166462 L105.354171,39.6166462 C107.611262,43.4363871 109.354214,47.5960025 110.48779,52.0002544 L119.993027,52.0002544 C124.409247,52.0002544 128,55.5782391 128,59.9919069 L128,68.0086019 C128,72.4201783 124.415156,76.0002544 119.993027,76.0002544 L110.48779,76.0002544 L110.48779,76.0002544 Z M64,96.0002544 C81.673112,96.0002544 96,81.6733664 96,64.0002544 C96,46.3271424 81.673112,32.0002544 64,32.0002544 C46.326888,32.0002544 32,46.3271424 32,64.0002544 C32,81.6733664 46.326888,96.0002544 64,96.0002544 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/paint": {
"title": "$:/core/images/paint",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-paint tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M83.5265806,76.1907935 C90.430962,69.2864121 91.8921169,59.0000433 87.9100453,50.6642209 L125.812763,12.7615036 C128.732035,9.84223095 128.72611,5.10322984 125.812796,2.18991592 C122.893542,-0.729338085 118.161775,-0.730617045 115.241209,2.18994966 L77.3384914,40.092667 C69.002669,36.1105954 58.7163002,37.5717503 51.8119188,44.4761317 L83.5265806,76.1907935 L83.5265806,76.1907935 L83.5265806,76.1907935 L83.5265806,76.1907935 Z M80.8836921,78.8336819 L49.1690303,47.1190201 C49.1690303,47.1190201 8.50573364,81.242543 0,80.2820711 C0,80.2820711 3.78222974,85.8744423 6.82737483,88.320684 C20.8514801,82.630792 44.1526049,63.720771 44.1526049,63.720771 L44.8144806,64.3803375 C44.8144806,64.3803375 19.450356,90.2231043 9.18040433,92.0477601 C10.4017154,93.4877138 13.5343883,96.1014812 15.4269991,97.8235871 C20.8439164,96.3356979 50.1595367,69.253789 50.1595367,69.253789 L50.8214124,69.9133555 L18.4136144,100.936036 L23.6993903,106.221812 L56.1060358,75.2002881 L56.7679115,75.8598546 C56.7679115,75.8598546 28.9040131,106.396168 28.0841366,108.291555 C28.0841366,108.291555 34.1159238,115.144621 35.6529617,116.115796 C36.3545333,113.280171 63.5365402,82.6307925 63.5365402,82.6307925 L64.1984159,83.290359 C64.1984159,83.290359 43.6013016,107.04575 39.2343772,120.022559 C42.443736,123.571575 46.7339155,125.159692 50.1595362,126.321151 C47.9699978,114.504469 80.8836921,78.8336819 80.8836921,78.8336819 L80.8836921,78.8336819 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/palette": {
"title": "$:/core/images/palette",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-palette tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M80.2470434,39.1821571 C75.0645698,38.2680897 69.6261555,37.7814854 64.0193999,37.7814854 C28.6624616,37.7814854 0,57.1324214 0,81.0030106 C0,90.644534 4.67604329,99.5487133 12.5805659,106.738252 C23.5031767,91.1899067 26.3405471,72.3946229 36.8885698,63.5622337 C52.0716764,50.8486559 63.4268694,55.7343343 63.4268694,55.7343343 L80.2470434,39.1821571 Z M106.781666,48.8370714 C119.830962,56.749628 128.0388,68.229191 128.0388,81.0030106 C128.0388,90.3534932 128.557501,98.4142085 116.165191,106.082518 C105.367708,112.763955 112.341384,99.546808 104.321443,95.1851533 C96.3015017,90.8234987 84.3749007,96.492742 86.1084305,103.091059 C89.3087234,115.272303 105.529892,114.54645 92.4224435,119.748569 C79.3149955,124.950687 74.2201582,124.224536 64.0193999,124.224536 C56.1979176,124.224536 48.7040365,123.277578 41.7755684,121.544216 C51.620343,117.347916 69.6563669,109.006202 75.129737,102.088562 C82.7876655,92.4099199 87.3713218,80.0000002 83.3235694,72.4837191 C83.1303943,72.1250117 94.5392656,60.81569 106.781666,48.8370714 Z M1.13430476,123.866563 C0.914084026,123.867944 0.693884185,123.868637 0.473712455,123.868637 C33.9526848,108.928928 22.6351223,59.642592 59.2924543,59.6425917 C59.6085574,61.0606542 59.9358353,62.5865065 60.3541977,64.1372318 C34.4465025,59.9707319 36.7873124,112.168427 1.13429588,123.866563 L1.13430476,123.866563 Z M1.84669213,123.859694 C40.7185279,123.354338 79.9985412,101.513051 79.9985401,79.0466836 C70.7284906,79.0466835 65.9257264,75.5670082 63.1833375,71.1051511 C46.585768,64.1019718 32.81846,116.819636 1.84665952,123.859695 L1.84669213,123.859694 Z M67.1980193,59.8524981 C62.748213,63.9666823 72.0838429,76.2846822 78.5155805,71.1700593 C89.8331416,59.8524993 112.468264,37.2173758 123.785825,25.8998146 C135.103386,14.5822535 123.785825,3.26469247 112.468264,14.5822535 C101.150703,25.8998144 78.9500931,48.9868127 67.1980193,59.8524981 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/permalink-button": {
"title": "$:/core/images/permalink-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-permalink-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M80.4834582,48 L73.0956761,80 L73.0956761,80 L47.5165418,80 L54.9043239,48 L80.4834582,48 Z M84.1773493,32 L89.8007299,7.64246248 C90.7941633,3.33942958 95.0918297,0.64641956 99.3968675,1.64031585 C103.693145,2.63218977 106.385414,6.93288901 105.390651,11.2416793 L100.598215,32 L104.000754,32 C108.411895,32 112,35.581722 112,40 C112,44.4092877 108.418616,48 104.000754,48 L96.9043239,48 L89.5165418,80 L104.000754,80 C108.411895,80 112,83.581722 112,88 C112,92.4092877 108.418616,96 104.000754,96 L85.8226507,96 L80.1992701,120.357538 C79.2058367,124.66057 74.9081703,127.35358 70.6031325,126.359684 C66.3068546,125.36781 63.6145865,121.067111 64.6093491,116.758321 L69.401785,96 L43.8226507,96 L38.1992701,120.357538 C37.2058367,124.66057 32.9081703,127.35358 28.6031325,126.359684 C24.3068546,125.36781 21.6145865,121.067111 22.6093491,116.758321 L27.401785,96 L23.9992458,96 C19.5881049,96 16,92.418278 16,88 C16,83.5907123 19.5813843,80 23.9992458,80 L31.0956761,80 L38.4834582,48 L23.9992458,48 C19.5881049,48 16,44.418278 16,40 C16,35.5907123 19.5813843,32 23.9992458,32 L42.1773493,32 L47.8007299,7.64246248 C48.7941633,3.33942958 53.0918297,0.64641956 57.3968675,1.64031585 C61.6931454,2.63218977 64.3854135,6.93288901 63.3906509,11.2416793 L58.598215,32 L84.1773493,32 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/permaview-button": {
"title": "$:/core/images/permaview-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-permaview-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M81.4834582,48 L79.6365127,56 L79.6365127,56 L74.0573784,56 L75.9043239,48 L81.4834582,48 Z M85.1773493,32 L90.8007299,7.64246248 C91.7941633,3.33942958 96.0918297,0.64641956 100.396867,1.64031585 C104.693145,2.63218977 107.385414,6.93288901 106.390651,11.2416793 L101.598215,32 L104.000754,32 C108.411895,32 112,35.581722 112,40 C112,44.4092877 108.418616,48 104.000754,48 L97.9043239,48 L96.0573784,56 L104.000754,56 C108.411895,56 112,59.581722 112,64 C112,68.4092877 108.418616,72 104.000754,72 L92.3634873,72 L90.5165418,80 L104.000754,80 C108.411895,80 112,83.581722 112,88 C112,92.4092877 108.418616,96 104.000754,96 L86.8226507,96 L81.1992701,120.357538 C80.2058367,124.66057 75.9081703,127.35358 71.6031325,126.359684 C67.3068546,125.36781 64.6145865,121.067111 65.6093491,116.758321 L70.401785,96 L64.8226507,96 L59.1992701,120.357538 C58.2058367,124.66057 53.9081703,127.35358 49.6031325,126.359684 C45.3068546,125.36781 42.6145865,121.067111 43.6093491,116.758321 L48.401785,96 L42.8226507,96 L37.1992701,120.357538 C36.2058367,124.66057 31.9081703,127.35358 27.6031325,126.359684 C23.3068546,125.36781 20.6145865,121.067111 21.6093491,116.758321 L26.401785,96 L23.9992458,96 C19.5881049,96 16,92.418278 16,88 C16,83.5907123 19.5813843,80 23.9992458,80 L30.0956761,80 L31.9426216,72 L23.9992458,72 C19.5881049,72 16,68.418278 16,64 C16,59.5907123 19.5813843,56 23.9992458,56 L35.6365127,56 L37.4834582,48 L23.9992458,48 C19.5881049,48 16,44.418278 16,40 C16,35.5907123 19.5813843,32 23.9992458,32 L41.1773493,32 L46.8007299,7.64246248 C47.7941633,3.33942958 52.0918297,0.64641956 56.3968675,1.64031585 C60.6931454,2.63218977 63.3854135,6.93288901 62.3906509,11.2416793 L57.598215,32 L63.1773493,32 L68.8007299,7.64246248 C69.7941633,3.33942958 74.0918297,0.64641956 78.3968675,1.64031585 C82.6931454,2.63218977 85.3854135,6.93288901 84.3906509,11.2416793 L79.598215,32 L85.1773493,32 Z M53.9043239,48 L52.0573784,56 L57.6365127,56 L59.4834582,48 L53.9043239,48 Z M75.9426216,72 L74.0956761,80 L74.0956761,80 L68.5165418,80 L70.3634873,72 L75.9426216,72 L75.9426216,72 Z M48.3634873,72 L46.5165418,80 L52.0956761,80 L53.9426216,72 L48.3634873,72 L48.3634873,72 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/picture": {
"title": "$:/core/images/picture",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-picture tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M112,68.2332211 L112,20.0027785 C112,17.7898769 110.207895,16 107.997221,16 L20.0027785,16 C17.7898769,16 16,17.792105 16,20.0027785 L16,58.312373 L25.2413115,43.7197989 C28.041793,39.297674 34.2643908,38.7118128 37.8410347,42.5335275 L56.0882845,63.1470817 L69.7748997,56.7400579 C72.766567,55.3552503 76.3013751,55.9473836 78.678437,58.2315339 C78.8106437,58.3585731 79.0742301,58.609836 79.4527088,58.9673596 C80.0910923,59.570398 80.8117772,60.2441563 81.598127,60.9705595 C83.8422198,63.043576 86.1541548,65.1151944 88.3956721,67.0372264 C89.1168795,67.6556396 89.8200801,68.2492007 90.5021258,68.8146755 C92.6097224,70.5620551 94.4693308,72.0029474 95.9836366,73.0515697 C96.7316295,73.5695379 97.3674038,73.9719282 98.0281481,74.3824999 C98.4724987,74.4989557 99.0742374,74.5263881 99.8365134,74.4317984 C101.709944,74.1993272 104.074502,73.2878514 106.559886,71.8846196 C107.705822,71.2376318 108.790494,70.5370325 109.764561,69.8410487 C110.323259,69.4418522 110.694168,69.1550757 110.834827,69.0391868 C111.210545,68.7296319 111.600264,68.4615815 112,68.2332211 L112,68.2332211 Z M0,8.00697327 C0,3.58484404 3.59075293,0 8.00697327,0 L119.993027,0 C124.415156,0 128,3.59075293 128,8.00697327 L128,119.993027 C128,124.415156 124.409247,128 119.993027,128 L8.00697327,128 C3.58484404,128 0,124.409247 0,119.993027 L0,8.00697327 L0,8.00697327 Z M95,42 C99.418278,42 103,38.418278 103,34 C103,29.581722 99.418278,26 95,26 C90.581722,26 87,29.581722 87,34 C87,38.418278 90.581722,42 95,42 L95,42 Z M32,76 C47.8587691,80.8294182 52.0345556,83.2438712 52.0345556,88 C52.0345556,92.7561288 32,95.4712486 32,102.347107 C32,109.222965 33.2849191,107.337637 33.2849191,112 L67.999999,112 C67.999999,112 54.3147136,105.375255 54.3147136,101.200691 C54.3147136,93.535181 64.9302432,92.860755 64.9302432,88 C64.9302432,80.6425555 50.8523779,79.167282 32,76 L32,76 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/plugin-generic-language": {
"title": "$:/core/images/plugin-generic-language",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M61.2072232,68.1369825 C56.8829239,70.9319564 54.2082892,74.793177 54.2082892,79.0581634 C54.2082892,86.9638335 63.3980995,93.4821994 75.2498076,94.3940006 C77.412197,98.2964184 83.8475284,101.178858 91.5684735,101.403106 C86.4420125,100.27851 82.4506393,97.6624107 80.9477167,94.3948272 C92.8046245,93.4861461 102,86.9662269 102,79.0581634 C102,70.5281905 91.3014611,63.6132813 78.1041446,63.6132813 C71.5054863,63.6132813 65.5315225,65.3420086 61.2072232,68.1369825 Z M74.001066,53.9793443 C69.6767667,56.7743182 63.7028029,58.5030456 57.1041446,58.5030456 C54.4851745,58.5030456 51.9646095,58.2307276 49.6065315,57.7275105 C46.2945155,59.9778212 41.2235699,61.4171743 35.5395922,61.4171743 C35.4545771,61.4171743 35.3696991,61.4168523 35.2849622,61.4162104 C39.404008,60.5235193 42.7961717,58.6691298 44.7630507,56.286533 C37.8379411,53.5817651 33.2082892,48.669413 33.2082892,43.0581634 C33.2082892,34.5281905 43.9068281,27.6132812 57.1041446,27.6132812 C70.3014611,27.6132812 81,34.5281905 81,43.0581634 C81,47.3231498 78.3253653,51.1843704 74.001066,53.9793443 Z M64,0 L118.5596,32 L118.5596,96 L64,128 L9.44039956,96 L9.44039956,32 L64,0 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/plugin-generic-plugin": {
"title": "$:/core/images/plugin-generic-plugin",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M40.3972881,76.4456988 L40.3972881,95.3404069 L54.5170166,95.3404069 L54.5170166,95.3404069 C54.5165526,95.3385183 54.516089,95.3366295 54.515626,95.3347404 C54.6093153,95.3385061 54.7034848,95.3404069 54.7980982,95.3404069 C58.6157051,95.3404069 61.710487,92.245625 61.710487,88.4280181 C61.710487,86.6197822 61.01617,84.9737128 59.8795929,83.7418666 L59.8795929,83.7418666 C59.8949905,83.7341665 59.9104102,83.7265043 59.925852,83.7188798 C58.8840576,82.5086663 58.2542926,80.9336277 58.2542926,79.2114996 C58.2542926,75.3938927 61.3490745,72.2991108 65.1666814,72.2991108 C68.9842884,72.2991108 72.0790703,75.3938927 72.0790703,79.2114996 C72.0790703,81.1954221 71.2432806,82.9841354 69.9045961,84.2447446 L69.9045961,84.2447446 C69.9333407,84.2629251 69.9619885,84.281245 69.9905383,84.2997032 L69.9905383,84.2997032 C69.1314315,85.4516923 68.6228758,86.8804654 68.6228758,88.4280181 C68.6228758,91.8584969 71.1218232,94.7053153 74.3986526,95.2474079 C74.3913315,95.2784624 74.3838688,95.3094624 74.3762652,95.3404069 L95.6963988,95.3404069 L95.6963988,75.5678578 L95.6963988,75.5678578 C95.6466539,75.5808558 95.5967614,75.5934886 95.5467242,75.6057531 C95.5504899,75.5120637 95.5523907,75.4178943 95.5523907,75.3232809 C95.5523907,71.505674 92.4576088,68.4108921 88.6400019,68.4108921 C86.831766,68.4108921 85.1856966,69.105209 83.9538504,70.2417862 L83.9538504,70.2417862 C83.9461503,70.2263886 83.938488,70.2109688 83.9308636,70.1955271 C82.7206501,71.2373215 81.1456115,71.8670865 79.4234834,71.8670865 C75.6058765,71.8670865 72.5110946,68.7723046 72.5110946,64.9546976 C72.5110946,61.1370907 75.6058765,58.0423088 79.4234834,58.0423088 C81.4074059,58.0423088 83.1961192,58.8780985 84.4567284,60.2167829 L84.4567284,60.2167829 C84.4749089,60.1880383 84.4932288,60.1593906 84.511687,60.1308407 L84.511687,60.1308407 C85.6636761,60.9899475 87.0924492,61.4985032 88.6400019,61.4985032 C92.0704807,61.4985032 94.9172991,58.9995558 95.4593917,55.7227265 C95.538755,55.7414363 95.6177614,55.761071 95.6963988,55.7816184 L95.6963988,40.0412962 L74.3762652,40.0412962 L74.3762652,40.0412962 C74.3838688,40.0103516 74.3913315,39.9793517 74.3986526,39.9482971 L74.3986526,39.9482971 C71.1218232,39.4062046 68.6228758,36.5593862 68.6228758,33.1289073 C68.6228758,31.5813547 69.1314315,30.1525815 69.9905383,29.0005925 C69.9619885,28.9821342 69.9333407,28.9638143 69.9045961,28.9456339 C71.2432806,27.6850247 72.0790703,25.8963113 72.0790703,23.9123888 C72.0790703,20.0947819 68.9842884,17 65.1666814,17 C61.3490745,17 58.2542926,20.0947819 58.2542926,23.9123888 C58.2542926,25.6345169 58.8840576,27.2095556 59.925852,28.419769 L59.925852,28.419769 C59.9104102,28.4273935 59.8949905,28.4350558 59.8795929,28.4427558 C61.01617,29.674602 61.710487,31.3206715 61.710487,33.1289073 C61.710487,36.9465143 58.6157051,40.0412962 54.7980982,40.0412962 C54.7034848,40.0412962 54.6093153,40.0393953 54.515626,40.0356296 L54.515626,40.0356296 C54.516089,40.0375187 54.5165526,40.0394075 54.5170166,40.0412962 L40.3972881,40.0412962 L40.3972881,52.887664 L40.3972881,52.887664 C40.4916889,53.3430132 40.5412962,53.8147625 40.5412962,54.2980982 C40.5412962,58.1157051 37.4465143,61.210487 33.6289073,61.210487 C32.0813547,61.210487 30.6525815,60.7019313 29.5005925,59.8428245 C29.4821342,59.8713744 29.4638143,59.9000221 29.4456339,59.9287667 C28.1850247,58.5900823 26.3963113,57.7542926 24.4123888,57.7542926 C20.5947819,57.7542926 17.5,60.8490745 17.5,64.6666814 C17.5,68.4842884 20.5947819,71.5790703 24.4123888,71.5790703 C26.134517,71.5790703 27.7095556,70.9493053 28.919769,69.9075109 L28.919769,69.9075109 C28.9273935,69.9229526 28.9350558,69.9383724 28.9427558,69.95377 C30.174602,68.8171928 31.8206715,68.1228758 33.6289073,68.1228758 C37.4465143,68.1228758 40.5412962,71.2176578 40.5412962,75.0352647 C40.5412962,75.5186004 40.4916889,75.9903496 40.3972881,76.4456988 Z M64,0 L118.5596,32 L118.5596,96 L64,128 L9.44039956,96 L9.44039956,32 L64,0 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/plugin-generic-theme": {
"title": "$:/core/images/plugin-generic-theme",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M29.4078519,91.4716406 L51.4693474,69.4101451 L51.4646675,69.4054652 C50.5969502,68.5377479 50.5929779,67.1348725 51.4693474,66.2585029 C52.3396494,65.3882009 53.7499654,65.3874786 54.6163097,66.2538229 L64.0805963,75.7181095 C64.9483136,76.5858268 64.9522859,77.9887022 64.0759163,78.8650718 C63.2056143,79.7353737 61.7952984,79.736096 60.9289541,78.8697517 L60.9242741,78.8650718 L60.9242741,78.8650718 L38.8627786,100.926567 C36.2518727,103.537473 32.0187578,103.537473 29.4078519,100.926567 C26.796946,98.3156614 26.796946,94.0825465 29.4078519,91.4716406 Z M60.8017407,66.3810363 C58.3659178,63.6765806 56.3370667,61.2899536 54.9851735,59.5123615 C48.1295381,50.4979488 44.671561,55.2444054 40.7586738,59.5123614 C36.8457866,63.7803174 41.789473,67.2384487 38.0759896,70.2532832 C34.3625062,73.2681177 34.5917646,74.3131575 28.3243876,68.7977024 C22.0570105,63.2822473 21.6235306,61.7636888 24.5005999,58.6166112 C27.3776691,55.4695337 29.7823103,60.4247912 35.6595047,54.8320442 C41.5366991,49.2392972 36.5996215,44.2825646 36.5996215,44.2825646 C36.5996215,44.2825646 48.8365511,19.267683 65.1880231,21.1152173 C81.5394952,22.9627517 59.0022276,18.7228947 53.3962199,38.3410355 C50.9960082,46.7405407 53.8429162,44.7613399 58.3941742,48.3090467 C59.7875202,49.3951602 64.4244828,52.7100463 70.1884353,56.9943417 L90.8648751,36.3179019 L92.4795866,31.5515482 L100.319802,26.8629752 L103.471444,30.0146174 L98.782871,37.8548326 L94.0165173,39.4695441 L73.7934912,59.6925702 C86.4558549,69.2403631 102.104532,81.8392557 102.104532,86.4016913 C102.104533,93.6189834 99.0337832,97.9277545 92.5695848,95.5655717 C87.8765989,93.8506351 73.8015497,80.3744087 63.8173444,69.668717 L60.9242741,72.5617873 L57.7726319,69.4101451 L60.8017407,66.3810363 L60.8017407,66.3810363 Z M63.9533761,1.42108547e-13 L118.512977,32 L118.512977,96 L63.9533761,128 L9.39377563,96 L9.39377563,32 L63.9533761,1.42108547e-13 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/preview-closed": {
"title": "$:/core/images/preview-closed",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-preview-closed tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M0.0881363238,64 C-0.210292223,65.8846266 0.249135869,67.8634737 1.4664206,69.4579969 C16.2465319,88.8184886 39.1692554,100.414336 64,100.414336 C88.8307446,100.414336 111.753468,88.8184886 126.533579,69.4579969 C127.750864,67.8634737 128.210292,65.8846266 127.911864,64 C110.582357,78.4158332 88.3036732,87.0858436 64,87.0858436 C39.6963268,87.0858436 17.4176431,78.4158332 0.0881363238,64 Z\"></path>\n <rect x=\"62\" y=\"96\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n <rect transform=\"translate(80.000000, 101.000000) rotate(-5.000000) translate(-80.000000, -101.000000) \" x=\"78\" y=\"93\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n <rect transform=\"translate(48.000000, 101.000000) rotate(-355.000000) translate(-48.000000, -101.000000) \" x=\"46\" y=\"93\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n <rect transform=\"translate(32.000000, 96.000000) rotate(-350.000000) translate(-32.000000, -96.000000) \" x=\"30\" y=\"88\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n <rect transform=\"translate(96.000000, 96.000000) rotate(-10.000000) translate(-96.000000, -96.000000) \" x=\"94\" y=\"88\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n <rect transform=\"translate(112.000000, 88.000000) rotate(-20.000000) translate(-112.000000, -88.000000) \" x=\"110\" y=\"80\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n <rect transform=\"translate(16.000000, 88.000000) rotate(-340.000000) translate(-16.000000, -88.000000) \" x=\"14\" y=\"80\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n </g>\n</svg>"
},
"$:/core/images/preview-open": {
"title": "$:/core/images/preview-open",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-preview-open tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M64.1099282,99.5876785 C39.2791836,99.5876785 16.3564602,87.9918313 1.57634884,68.6313396 C-0.378878622,66.070184 -0.378878622,62.5174945 1.57634884,59.9563389 C16.3564602,40.5958472 39.2791836,29 64.1099282,29 C88.9406729,29 111.863396,40.5958472 126.643508,59.9563389 C128.598735,62.5174945 128.598735,66.070184 126.643508,68.6313396 C111.863396,87.9918313 88.9406729,99.5876785 64.1099282,99.5876785 Z M110.213805,67.5808331 C111.654168,66.0569335 111.654168,63.9430665 110.213805,62.4191669 C99.3257042,50.8995835 82.4391647,44 64.1470385,44 C45.8549124,44 28.9683729,50.8995835 18.0802717,62.4191669 C16.6399094,63.9430665 16.6399094,66.0569335 18.0802717,67.5808331 C28.9683729,79.1004165 45.8549124,86 64.1470385,86 C82.4391647,86 99.3257042,79.1004165 110.213805,67.5808331 Z\"></path>\n <path d=\"M63.5,88 C76.4786916,88 87,77.4786916 87,64.5 C87,51.5213084 76.4786916,41 63.5,41 C50.5213084,41 40,51.5213084 40,64.5 C40,77.4786916 50.5213084,88 63.5,88 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/print-button": {
"title": "$:/core/images/print-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-print-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\">\n <path d=\"M112,71 L112,30.5 L111.96811,30.5 L111.96811,30.5 C111.932942,28.4998414 111.151676,26.510538 109.625176,24.9840387 L86.9982489,2.35711116 C85.3482153,0.707077645 83.1589869,-0.071534047 81,0.0201838424 L81,0 L23.9992458,0 C19.5808867,0 16,3.58213437 16,8.00092105 L16,71 L24,71 L24,8 L81,8 L81,22.4996539 C81,26.9216269 84.5818769,30.5 89.0003461,30.5 L104,30.5 L104,71 L112,71 Z\"></path>\n <rect x=\"32\" y=\"36\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n <rect x=\"32\" y=\"52\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n <rect x=\"32\" y=\"20\" width=\"40\" height=\"8\" rx=\"4\"></rect>\n <path d=\"M0,80.0054195 C0,71.1658704 7.15611005,64 16.0008841,64 L111.999116,64 C120.83616,64 128,71.1553215 128,80.0054195 L128,111.99458 C128,120.83413 120.84389,128 111.999116,128 L16.0008841,128 C7.16383982,128 0,120.844679 0,111.99458 L0,80.0054195 Z M104,96 C108.418278,96 112,92.418278 112,88 C112,83.581722 108.418278,80 104,80 C99.581722,80 96,83.581722 96,88 C96,92.418278 99.581722,96 104,96 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/quote": {
"title": "$:/core/images/quote",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-quote tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M51.2188077,117.712501 L51.2188077,62.1993386 L27.4274524,62.1993386 C27.4274524,53.3075754 29.1096526,45.797753 32.4741035,39.669646 C35.8385544,33.541539 42.0867267,28.9154883 51.2188077,25.7913554 L51.2188077,2 C43.7689521,2.96127169 36.8599155,5.18417913 30.4914905,8.668789 C24.1230656,12.1533989 18.6559149,16.5391352 14.0898743,21.8261295 C9.52383382,27.1131238 5.97919764,33.2411389 3.45585945,40.2103586 C0.932521268,47.1795784 -0.208971741,54.6293222 0.0313461819,62.5598136 L0.0313461819,117.712501 L51.2188077,117.712501 Z M128,117.712501 L128,62.1993386 L104.208645,62.1993386 C104.208645,53.3075754 105.890845,45.797753 109.255296,39.669646 C112.619747,33.541539 118.867919,28.9154883 128,25.7913554 L128,2 C120.550144,2.96127169 113.641108,5.18417913 107.272683,8.668789 C100.904258,12.1533989 95.4371072,16.5391352 90.8710666,21.8261295 C86.3050261,27.1131238 82.7603899,33.2411389 80.2370517,40.2103586 C77.7137136,47.1795784 76.5722206,54.6293222 76.8125385,62.5598136 L76.8125385,117.712501 L128,117.712501 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/refresh-button": {
"title": "$:/core/images/refresh-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-refresh-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M106.369002,39.4325143 C116.529932,60.3119371 112.939592,86.1974934 95.5979797,103.539105 C73.7286194,125.408466 38.2713806,125.408466 16.4020203,103.539105 C-5.46734008,81.6697449 -5.46734008,46.2125061 16.4020203,24.3431458 C19.5262146,21.2189514 24.5915344,21.2189514 27.7157288,24.3431458 C30.8399231,27.4673401 30.8399231,32.5326599 27.7157288,35.6568542 C12.0947571,51.2778259 12.0947571,76.6044251 27.7157288,92.2253967 C43.3367004,107.846368 68.6632996,107.846368 84.2842712,92.2253967 C97.71993,78.7897379 99.5995262,58.1740623 89.9230597,42.729491 L83.4844861,54.9932839 C81.4307001,58.9052072 76.5945372,60.4115251 72.682614,58.3577391 C68.7706907,56.3039532 67.2643728,51.4677903 69.3181587,47.555867 L84.4354914,18.7613158 C86.4966389,14.8353707 91.3577499,13.3347805 95.273202,15.415792 L124.145886,30.7612457 C128.047354,32.8348248 129.52915,37.6785572 127.455571,41.5800249 C125.381992,45.4814927 120.53826,46.9632892 116.636792,44.8897102 L106.369002,39.4325143 Z M98.1470904,27.0648707 C97.9798954,26.8741582 97.811187,26.6843098 97.6409651,26.4953413 L98.6018187,26.1987327 L98.1470904,27.0648707 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/right-arrow": {
"title": "$:/core/images/right-arrow",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-right-arrow tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <path d=\"M80.3563798,109.353315 C78.9238993,110.786918 76.9450203,111.675144 74.7592239,111.675144 L-4.40893546,111.675144 C-8.77412698,111.675144 -12.3248558,108.130732 -12.3248558,103.758478 C-12.3248558,99.3951199 -8.78077754,95.8418109 -4.40893546,95.8418109 L66.8418109,95.8418109 L66.8418109,24.5910645 C66.8418109,20.225873 70.3862233,16.6751442 74.7584775,16.6751442 C79.1218352,16.6751442 82.6751442,20.2192225 82.6751442,24.5910645 L82.6751442,103.759224 C82.6751442,105.941695 81.7891419,107.920575 80.3566508,109.353886 Z\" transform=\"translate(35.175144, 64.175144) rotate(-45.000000) translate(-35.175144, -64.175144) \"></path>\n</svg>"
},
"$:/core/images/save-button": {
"title": "$:/core/images/save-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-save-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\">\n <path d=\"M120.78304,34.329058 C125.424287,43.1924006 128.049406,53.2778608 128.049406,63.9764502 C128.049406,99.3226742 99.3956295,127.97645 64.0494055,127.97645 C28.7031816,127.97645 0.0494055385,99.3226742 0.0494055385,63.9764502 C0.0494055385,28.6302262 28.7031816,-0.0235498012 64.0494055,-0.0235498012 C82.8568763,-0.0235498012 99.769563,8.08898558 111.479045,21.0056358 L114.159581,18.3250998 C117.289194,15.1954866 122.356036,15.1939641 125.480231,18.3181584 C128.598068,21.4359957 128.601317,26.5107804 125.473289,29.6388083 L120.78304,34.329058 Z M108.72451,46.3875877 C110.870571,51.8341374 112.049406,57.767628 112.049406,63.9764502 C112.049406,90.4861182 90.5590735,111.97645 64.0494055,111.97645 C37.5397375,111.97645 16.0494055,90.4861182 16.0494055,63.9764502 C16.0494055,37.4667822 37.5397375,15.9764502 64.0494055,15.9764502 C78.438886,15.9764502 91.3495036,22.308215 100.147097,32.3375836 L58.9411255,73.5435552 L41.975581,56.5780107 C38.8486152,53.4510448 33.7746915,53.4551552 30.6568542,56.5729924 C27.5326599,59.6971868 27.5372202,64.7670668 30.6618725,67.8917192 L53.279253,90.5090997 C54.8435723,92.073419 56.8951519,92.8541315 58.9380216,92.8558261 C60.987971,92.8559239 63.0389578,92.0731398 64.6049211,90.5071765 L108.72451,46.3875877 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/size": {
"title": "$:/core/images/size",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-size tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <path d=\"M92.3431458,26 L83.1715729,35.1715729 C81.6094757,36.73367 81.6094757,39.26633 83.1715729,40.8284271 C84.73367,42.3905243 87.26633,42.3905243 88.8284271,40.8284271 L104.828427,24.8284271 C106.390524,23.26633 106.390524,20.73367 104.828427,19.1715729 L88.8284271,3.17157288 C87.26633,1.60947571 84.73367,1.60947571 83.1715729,3.17157288 C81.6094757,4.73367004 81.6094757,7.26632996 83.1715729,8.82842712 L92.3431457,18 L22,18 C19.790861,18 18,19.790861 18,22 L18,92.3431458 L8.82842712,83.1715729 C7.26632996,81.6094757 4.73367004,81.6094757 3.17157288,83.1715729 C1.60947571,84.73367 1.60947571,87.26633 3.17157288,88.8284271 L19.1715729,104.828427 C20.73367,106.390524 23.26633,106.390524 24.8284271,104.828427 L40.8284271,88.8284271 C42.3905243,87.26633 42.3905243,84.73367 40.8284271,83.1715729 C39.26633,81.6094757 36.73367,81.6094757 35.1715729,83.1715729 L26,92.3431458 L26,22 L22,26 L92.3431458,26 L92.3431458,26 Z M112,52 L112,116 L116,112 L52,112 C49.790861,112 48,113.790861 48,116 C48,118.209139 49.790861,120 52,120 L116,120 C118.209139,120 120,118.209139 120,116 L120,52 C120,49.790861 118.209139,48 116,48 C113.790861,48 112,49.790861 112,52 L112,52 Z\"></path>\n</svg>"
},
"$:/core/images/spiral": {
"title": "$:/core/images/spiral",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-spiral tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"nonzero\">\n <path d=\"M64.534 68.348c3.39 0 6.097-2.62 6.476-5.968l-4.755-.538 4.75.583c.377-3.07-1.194-6.054-3.89-7.78-2.757-1.773-6.34-2.01-9.566-.7-3.46 1.403-6.14 4.392-7.35 8.148l-.01.026c-1.3 4.08-.72 8.64 1.58 12.52 2.5 4.2 6.77 7.2 11.76 8.27 5.37 1.15 11.11-.05 15.83-3.31 5.04-3.51 8.46-9.02 9.45-15.3 1.05-6.7-.72-13.63-4.92-19.19l.02.02c-4.42-5.93-11.2-9.82-18.78-10.78-7.96-1.01-16.13 1.31-22.59 6.43-6.81 5.39-11.18 13.41-12.11 22.26-.98 9.27 1.87 18.65 7.93 26.02 6.32 7.69 15.6 12.56 25.74 13.48 10.54.96 21.15-2.42 29.45-9.4l.01-.01c8.58-7.25 13.94-17.78 14.86-29.21.94-11.84-2.96-23.69-10.86-32.9-8.19-9.5-19.95-15.36-32.69-16.27-13.16-.94-26.24 3.49-36.34 12.34l.01-.01c-10.41 9.08-16.78 22.1-17.68 36.15-.93 14.44 4.03 28.77 13.79 39.78 10.03 11.32 24.28 18.2 39.6 19.09 15.73.92 31.31-4.56 43.24-15.234 12.23-10.954 19.61-26.44 20.5-43.074.14-2.64-1.89-4.89-4.52-5.03-2.64-.14-4.89 1.88-5.03 4.52-.75 14.1-7 27.2-17.33 36.45-10.03 8.98-23.11 13.58-36.3 12.81-12.79-.75-24.67-6.48-33-15.89-8.07-9.11-12.17-20.94-11.41-32.827.74-11.52 5.942-22.15 14.43-29.54l.01-.01c8.18-7.17 18.74-10.75 29.35-9.998 10.21.726 19.6 5.41 26.11 12.96 6.24 7.273 9.32 16.61 8.573 25.894-.718 8.9-4.88 17.064-11.504 22.66l.01-.007c-6.36 5.342-14.44 7.92-22.425 7.19-7.604-.68-14.52-4.314-19.21-10.027-4.44-5.4-6.517-12.23-5.806-18.94.67-6.3 3.76-11.977 8.54-15.766 4.46-3.54 10.05-5.128 15.44-4.44 5.03.63 9.46 3.18 12.32 7.01l.02.024c2.65 3.5 3.75 7.814 3.1 11.92-.59 3.71-2.58 6.925-5.45 8.924-2.56 1.767-5.61 2.403-8.38 1.81-2.42-.516-4.42-1.92-5.53-3.79-.93-1.56-1.15-3.3-.69-4.75l-4.56-1.446L59.325 65c.36-1.12 1.068-1.905 1.84-2.22.25-.103.48-.14.668-.13.06.006.11.015.14.025.01 0 .01 0-.01-.01-.02-.015-.054-.045-.094-.088-.06-.064-.12-.145-.17-.244-.15-.29-.23-.678-.18-1.11l-.005.04c.15-1.332 1.38-2.523 3.035-2.523-2.65 0-4.79 2.144-4.79 4.787s2.14 4.785 4.78 4.785z\"></path>\n </g>\n</svg>"
},
"$:/core/images/stamp": {
"title": "$:/core/images/stamp",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-stamp tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M49.7334301,64 L16.0098166,64 C11.5838751,64 8,67.5829053 8,72.002643 L8,74.4986785 L8,97 L120,97 L120,74.4986785 L120,72.002643 C120,67.5737547 116.413883,64 111.990183,64 L78.2665699,64 C76.502049,60.7519149 75.5,57.0311962 75.5,53.0769231 C75.5,46.6017951 78.1869052,40.7529228 82.5087769,36.5800577 C85.3313113,32.7688808 87,28.0549983 87,22.952183 C87,10.2760423 76.7025492,0 64,0 C51.2974508,0 41,10.2760423 41,22.952183 C41,28.0549983 42.6686887,32.7688808 45.4912231,36.5800577 C49.8130948,40.7529228 52.5,46.6017951 52.5,53.0769231 C52.5,57.0311962 51.497951,60.7519149 49.7334301,64 Z M8,104 L120,104 L120,112 L8,112 L8,104 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/star-filled": {
"title": "$:/core/images/star-filled",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-star-filled tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"nonzero\">\n <path d=\"M61.8361286,96.8228569 L99.1627704,124.110219 C101.883827,126.099427 105.541968,123.420868 104.505636,120.198072 L90.2895569,75.9887263 L89.0292911,79.8977279 L126.314504,52.5528988 C129.032541,50.5595011 127.635256,46.2255025 124.273711,46.2229134 L78.1610486,46.1873965 L81.4604673,48.6032923 L67.1773543,4.41589688 C66.1361365,1.19470104 61.6144265,1.19470104 60.5732087,4.41589688 L46.2900957,48.6032923 L49.5895144,46.1873965 L3.47685231,46.2229134 C0.115307373,46.2255025 -1.28197785,50.5595011 1.43605908,52.5528988 L38.7212719,79.8977279 L37.4610061,75.9887263 L23.2449266,120.198072 C22.2085954,123.420868 25.8667356,126.099427 28.5877926,124.110219 L65.9144344,96.8228569 L61.8361286,96.8228569 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/storyview-classic": {
"title": "$:/core/images/storyview-classic",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-storyview-classic tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M8.00697327,0 C3.58484404,0 0,3.59075293 0,8.00697327 L0,119.993027 C0,124.415156 3.59075293,128 8.00697327,128 L119.993027,128 C124.415156,128 128,124.409247 128,119.993027 L128,8.00697327 C128,3.58484404 124.409247,0 119.993027,0 L8.00697327,0 L8.00697327,0 Z M23.9992458,16 C19.5813843,16 16,19.5776607 16,23.9924054 L16,40.0075946 C16,44.4216782 19.5881049,48 23.9992458,48 L104.000754,48 C108.418616,48 112,44.4223393 112,40.0075946 L112,23.9924054 C112,19.5783218 108.411895,16 104.000754,16 L23.9992458,16 L23.9992458,16 Z M23.9992458,64 C19.5813843,64 16,67.5907123 16,72 C16,76.418278 19.5881049,80 23.9992458,80 L104.000754,80 C108.418616,80 112,76.4092877 112,72 C112,67.581722 108.411895,64 104.000754,64 L23.9992458,64 L23.9992458,64 Z M23.9992458,96 C19.5813843,96 16,99.5907123 16,104 C16,108.418278 19.5881049,112 23.9992458,112 L104.000754,112 C108.418616,112 112,108.409288 112,104 C112,99.581722 108.411895,96 104.000754,96 L23.9992458,96 L23.9992458,96 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/storyview-pop": {
"title": "$:/core/images/storyview-pop",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-storyview-pop tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M8.00697327,0 C3.58484404,0 0,3.59075293 0,8.00697327 L0,119.993027 C0,124.415156 3.59075293,128 8.00697327,128 L119.993027,128 C124.415156,128 128,124.409247 128,119.993027 L128,8.00697327 C128,3.58484404 124.409247,0 119.993027,0 L8.00697327,0 L8.00697327,0 Z M23.9992458,16 C19.5813843,16 16,19.5776607 16,23.9924054 L16,40.0075946 C16,44.4216782 19.5881049,48 23.9992458,48 L104.000754,48 C108.418616,48 112,44.4223393 112,40.0075946 L112,23.9924054 C112,19.5783218 108.411895,16 104.000754,16 L23.9992458,16 L23.9992458,16 Z M16.0098166,56 C11.586117,56 8,59.5776607 8,63.9924054 L8,80.0075946 C8,84.4216782 11.5838751,88 16.0098166,88 L111.990183,88 C116.413883,88 120,84.4223393 120,80.0075946 L120,63.9924054 C120,59.5783218 116.416125,56 111.990183,56 L16.0098166,56 L16.0098166,56 Z M23.9992458,96 C19.5813843,96 16,99.5907123 16,104 C16,108.418278 19.5881049,112 23.9992458,112 L104.000754,112 C108.418616,112 112,108.409288 112,104 C112,99.581722 108.411895,96 104.000754,96 L23.9992458,96 L23.9992458,96 Z M23.9992458,64 C19.5813843,64 16,67.5907123 16,72 C16,76.418278 19.5881049,80 23.9992458,80 L104.000754,80 C108.418616,80 112,76.4092877 112,72 C112,67.581722 108.411895,64 104.000754,64 L23.9992458,64 L23.9992458,64 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/storyview-zoomin": {
"title": "$:/core/images/storyview-zoomin",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-storyview-zoomin tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M8.00697327,0 C3.58484404,0 0,3.59075293 0,8.00697327 L0,119.993027 C0,124.415156 3.59075293,128 8.00697327,128 L119.993027,128 C124.415156,128 128,124.409247 128,119.993027 L128,8.00697327 C128,3.58484404 124.409247,0 119.993027,0 L8.00697327,0 L8.00697327,0 Z M23.9992458,16 C19.5813843,16 16,19.578055 16,24.0085154 L16,71.9914846 C16,76.4144655 19.5881049,80 23.9992458,80 L104.000754,80 C108.418616,80 112,76.421945 112,71.9914846 L112,24.0085154 C112,19.5855345 108.411895,16 104.000754,16 L23.9992458,16 L23.9992458,16 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/strikethrough": {
"title": "$:/core/images/strikethrough",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-strikethrough tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M92.793842,38.7255689 L108.215529,38.7255689 C107.987058,31.985687 106.70193,26.1883331 104.360107,21.3333333 C102.018284,16.4783336 98.8197436,12.4516001 94.7643909,9.25301205 C90.7090382,6.05442399 85.9969032,3.71263572 80.6278447,2.22757697 C75.2587862,0.742518233 69.4328739,0 63.1499331,0 C57.552404,0 52.0977508,0.713959839 46.7858099,2.14190094 C41.473869,3.56984203 36.7331757,5.74027995 32.5635877,8.65327979 C28.3939997,11.5662796 25.0526676,15.2788708 22.5394913,19.7911647 C20.026315,24.3034585 18.7697456,29.6438781 18.7697456,35.8125837 C18.7697456,41.4101128 19.883523,46.0651309 22.1111111,49.7777778 C24.3386992,53.4904246 27.3087722,56.5176144 31.021419,58.8594378 C34.7340659,61.2012612 38.9321497,63.0861151 43.6157965,64.5140562 C48.2994433,65.9419973 53.068695,67.1985666 57.9236948,68.2838019 C62.7786945,69.3690371 67.5479462,70.4256977 72.231593,71.4538153 C76.9152398,72.4819329 81.1133237,73.8241773 84.8259705,75.480589 C88.5386174,77.1370007 91.5086903,79.2788802 93.7362784,81.9062918 C95.9638666,84.5337035 97.0776439,87.9607107 97.0776439,92.1874163 C97.0776439,96.6425926 96.1637753,100.298067 94.3360107,103.153949 C92.5082461,106.009831 90.109341,108.265944 87.1392236,109.922356 C84.1691061,111.578768 80.827774,112.749662 77.1151272,113.435074 C73.4024803,114.120485 69.7184476,114.463186 66.0629183,114.463186 C61.4935068,114.463186 57.0383974,113.892018 52.6974565,112.749665 C48.3565156,111.607312 44.5582492,109.836692 41.3025435,107.437751 C38.0468378,105.03881 35.4194656,101.983062 33.4203481,98.270415 C31.4212305,94.5577681 30.4216867,90.1312171 30.4216867,84.9906292 L15,84.9906292 C15,92.4159229 16.3422445,98.8415614 19.0267738,104.267738 C21.711303,109.693914 25.3667774,114.149023 29.9933066,117.633199 C34.6198357,121.117376 39.9888137,123.71619 46.1004016,125.429719 C52.2119895,127.143248 58.6947448,128 65.5488621,128 C71.1463912,128 76.7723948,127.343157 82.4270415,126.029451 C88.0816882,124.715745 93.1936407,122.602424 97.7630522,119.689424 C102.332464,116.776425 106.073613,113.006717 108.986613,108.380187 C111.899613,103.753658 113.356091,98.1847715 113.356091,91.6733601 C113.356091,85.6188899 112.242314,80.5926126 110.014726,76.5943775 C107.787137,72.5961424 104.817065,69.2833688 101.104418,66.6559572 C97.3917708,64.0285455 93.193687,61.9437828 88.5100402,60.4016064 C83.8263934,58.85943 79.0571416,57.5171855 74.2021419,56.3748327 C69.3471422,55.2324798 64.5778904,54.1758192 59.8942436,53.2048193 C55.2105968,52.2338193 51.012513,51.0058084 47.2998661,49.5207497 C43.5872193,48.0356909 40.6171463,46.1222786 38.3895582,43.7804552 C36.1619701,41.4386318 35.0481928,38.3828836 35.0481928,34.6131191 C35.0481928,30.6148841 35.8192694,27.273552 37.3614458,24.5890228 C38.9036222,21.9044935 40.9598265,19.762614 43.5301205,18.1633199 C46.1004145,16.5640259 49.041929,15.4216902 52.3547523,14.7362784 C55.6675757,14.0508667 59.0374661,13.708166 62.4645248,13.708166 C70.9179361,13.708166 77.8576257,15.6786952 83.2838019,19.6198126 C88.709978,23.56093 91.8799597,29.9294518 92.793842,38.7255689 L92.793842,38.7255689 Z\"></path>\n <rect x=\"5\" y=\"54\" width=\"118\" height=\"16\"></rect>\n </g>\n</svg>"
},
"$:/core/images/subscript": {
"title": "$:/core/images/subscript",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-subscript tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M2.27170276,16 L22.1825093,16 L43.8305003,49.6746527 L66.4138983,16 L85.1220387,16 L53.5854592,61.9685735 L87.3937414,111.411516 L67.0820462,111.411516 L43.295982,74.9306422 L19.1090291,111.411516 L0,111.411516 L33.8082822,61.9685735 L2.27170276,16 Z M127.910914,128.411516 L85.3276227,128.411516 C85.3870139,123.24448 86.6342108,118.730815 89.0692508,114.870386 C91.5042907,111.009956 94.8301491,107.654403 99.0469256,104.803624 C101.066227,103.318844 103.174584,101.878629 105.372059,100.482935 C107.569534,99.0872413 109.588805,97.5876355 111.429933,95.9840726 C113.271061,94.3805097 114.785514,92.6433426 115.973338,90.7725192 C117.161163,88.9016958 117.784761,86.7487964 117.844152,84.3137564 C117.844152,83.1853233 117.710524,81.9826691 117.443264,80.7057579 C117.176003,79.4288467 116.656338,78.2410402 115.884252,77.1423026 C115.112166,76.0435651 114.04314,75.123015 112.677142,74.3806248 C111.311144,73.6382345 109.529434,73.267045 107.331959,73.267045 C105.312658,73.267045 103.634881,73.6679297 102.298579,74.4697112 C100.962276,75.2714926 99.8932503,76.3702137 99.0914688,77.7659073 C98.2896874,79.161601 97.6957841,80.8096826 97.3097412,82.7102016 C96.9236982,84.6107206 96.7009845,86.6596869 96.6415933,88.857162 L86.4857457,88.857162 C86.4857457,85.4124713 86.9460207,82.2202411 87.8665846,79.2803758 C88.7871485,76.3405105 90.1679736,73.801574 92.0091014,71.6634901 C93.8502292,69.5254062 96.092214,67.8476295 98.7351233,66.6301095 C101.378033,65.4125895 104.451482,64.8038386 107.955564,64.8038386 C111.756602,64.8038386 114.933984,65.4274371 117.487807,66.6746527 C120.041629,67.9218683 122.105443,69.4957119 123.67931,71.3962309 C125.253178,73.2967499 126.366746,75.3605638 127.02005,77.5877345 C127.673353,79.8149053 128,81.9381095 128,83.9574109 C128,86.4518421 127.613963,88.7086746 126.841877,90.727976 C126.069791,92.7472774 125.03046,94.6032252 123.723854,96.2958749 C122.417247,97.9885247 120.932489,99.5475208 119.269534,100.97291 C117.60658,102.398299 115.884261,103.734582 114.102524,104.981797 C112.320788,106.229013 110.539078,107.416819 108.757341,108.545253 C106.975605,109.673686 105.327523,110.802102 103.813047,111.930535 C102.298571,113.058968 100.977136,114.231927 99.8487031,115.449447 C98.7202699,116.666967 97.9481956,117.958707 97.5324571,119.324705 L127.910914,119.324705 L127.910914,128.411516 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/superscript": {
"title": "$:/core/images/superscript",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-superscript tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M2.27170276,16 L22.1825093,16 L43.8305003,49.6746527 L66.4138983,16 L85.1220387,16 L53.5854592,61.9685735 L87.3937414,111.411516 L67.0820462,111.411516 L43.295982,74.9306422 L19.1090291,111.411516 L0,111.411516 L33.8082822,61.9685735 L2.27170276,16 Z M127.910914,63.4115159 L85.3276227,63.4115159 C85.3870139,58.2444799 86.6342108,53.7308149 89.0692508,49.8703857 C91.5042907,46.0099565 94.8301491,42.654403 99.0469256,39.8036245 C101.066227,38.318844 103.174584,36.8786285 105.372059,35.4829349 C107.569534,34.0872413 109.588805,32.5876355 111.429933,30.9840726 C113.271061,29.3805097 114.785514,27.6433426 115.973338,25.7725192 C117.161163,23.9016958 117.784761,21.7487964 117.844152,19.3137564 C117.844152,18.1853233 117.710524,16.9826691 117.443264,15.7057579 C117.176003,14.4288467 116.656338,13.2410402 115.884252,12.1423026 C115.112166,11.0435651 114.04314,10.123015 112.677142,9.38062477 C111.311144,8.63823453 109.529434,8.26704499 107.331959,8.26704499 C105.312658,8.26704499 103.634881,8.6679297 102.298579,9.46971115 C100.962276,10.2714926 99.8932503,11.3702137 99.0914688,12.7659073 C98.2896874,14.161601 97.6957841,15.8096826 97.3097412,17.7102016 C96.9236982,19.6107206 96.7009845,21.6596869 96.6415933,23.857162 L86.4857457,23.857162 C86.4857457,20.4124713 86.9460207,17.2202411 87.8665846,14.2803758 C88.7871485,11.3405105 90.1679736,8.80157397 92.0091014,6.6634901 C93.8502292,4.52540622 96.092214,2.84762946 98.7351233,1.63010947 C101.378033,0.412589489 104.451482,-0.196161372 107.955564,-0.196161372 C111.756602,-0.196161372 114.933984,0.427437071 117.487807,1.67465266 C120.041629,2.92186826 122.105443,4.49571195 123.67931,6.39623095 C125.253178,8.29674995 126.366746,10.3605638 127.02005,12.5877345 C127.673353,14.8149053 128,16.9381095 128,18.9574109 C128,21.4518421 127.613963,23.7086746 126.841877,25.727976 C126.069791,27.7472774 125.03046,29.6032252 123.723854,31.2958749 C122.417247,32.9885247 120.932489,34.5475208 119.269534,35.97291 C117.60658,37.3982993 115.884261,38.7345816 114.102524,39.9817972 C112.320788,41.2290128 110.539078,42.4168194 108.757341,43.5452525 C106.975605,44.6736857 105.327523,45.8021019 103.813047,46.9305351 C102.298571,48.0589682 100.977136,49.2319272 99.8487031,50.4494472 C98.7202699,51.6669672 97.9481956,52.9587068 97.5324571,54.3247048 L127.910914,54.3247048 L127.910914,63.4115159 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/tag-button": {
"title": "$:/core/images/tag-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-tag-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M18.1643182,47.6600756 L18.1677196,51.7651887 C18.1708869,55.5878829 20.3581578,60.8623899 23.0531352,63.5573673 L84.9021823,125.406414 C87.5996731,128.103905 91.971139,128.096834 94.6717387,125.396234 L125.766905,94.3010679 C128.473612,91.5943612 128.472063,87.2264889 125.777085,84.5315115 L63.9280381,22.6824644 C61.2305472,19.9849735 55.9517395,17.801995 52.1318769,17.8010313 L25.0560441,17.7942007 C21.2311475,17.7932358 18.1421354,20.8872832 18.1452985,24.7049463 L18.1535504,34.6641936 C18.2481119,34.6754562 18.3439134,34.6864294 18.4409623,34.6971263 C22.1702157,35.1081705 26.9295004,34.6530132 31.806204,33.5444844 C32.1342781,33.0700515 32.5094815,32.6184036 32.9318197,32.1960654 C35.6385117,29.4893734 39.5490441,28.718649 42.94592,29.8824694 C43.0432142,29.8394357 43.1402334,29.7961748 43.2369683,29.7526887 L43.3646982,30.0368244 C44.566601,30.5115916 45.6933052,31.2351533 46.6655958,32.2074439 C50.4612154,36.0030635 50.4663097,42.1518845 46.6769742,45.94122 C43.0594074,49.5587868 37.2914155,49.7181264 33.4734256,46.422636 C28.1082519,47.5454734 22.7987486,48.0186448 18.1643182,47.6600756 Z\"></path>\n <path d=\"M47.6333528,39.5324628 L47.6562932,39.5834939 C37.9670934,43.9391617 26.0718874,46.3819521 17.260095,45.4107025 C5.27267473,44.0894301 -1.02778744,36.4307276 2.44271359,24.0779512 C5.56175386,12.9761516 14.3014034,4.36129832 24.0466405,1.54817001 C34.7269254,-1.53487574 43.7955833,3.51606438 43.7955834,14.7730751 L35.1728168,14.7730752 C35.1728167,9.91428944 32.0946059,8.19982862 26.4381034,9.83267419 C19.5270911,11.8276553 13.046247,18.2159574 10.7440788,26.4102121 C8.82861123,33.2280582 11.161186,36.0634845 18.2047888,36.8398415 C25.3302805,37.6252244 35.7353482,35.4884477 44.1208333,31.7188498 L44.1475077,31.7781871 C44.159701,31.7725635 44.1718402,31.7671479 44.1839238,31.7619434 C45.9448098,31.0035157 50.4503245,38.3109156 47.7081571,39.5012767 C47.6834429,39.512005 47.6585061,39.5223987 47.6333528,39.5324628 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/theme-button": {
"title": "$:/core/images/theme-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-theme-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M55.854113,66.9453198 C54.3299482,65.1432292 53.0133883,63.518995 51.9542746,62.1263761 C40.8899947,47.578055 35.3091807,55.2383404 28.9941893,62.1263758 C22.6791979,69.0144112 30.6577916,74.5954741 24.6646171,79.4611023 C18.6714426,84.3267304 19.0414417,86.0133155 8.92654943,77.1119468 C-1.18834284,68.2105781 -1.88793412,65.7597832 2.7553553,60.6807286 C7.39864472,55.601674 11.2794845,63.5989423 20.7646627,54.5728325 C30.2498409,45.5467226 22.2819131,37.5470737 22.2819131,37.5470737 C22.2819131,37.5470737 42.0310399,-2.82433362 68.4206088,0.157393922 C94.8101776,3.13912147 58.4373806,-3.70356506 49.3898693,27.958066 C45.5161782,41.5139906 50.1107906,38.3197672 57.4560458,44.0453955 C59.1625767,45.3756367 63.8839488,48.777453 70.127165,53.3625321 C63.9980513,59.2416709 58.9704753,64.0315459 55.854113,66.9453198 Z M67.4952439,79.8919946 C83.5082212,96.9282402 105.237121,117.617674 112.611591,120.312493 C123.044132,124.12481 128.000001,117.170903 128,105.522947 C127.999999,98.3705516 104.170675,78.980486 84.0760493,63.7529565 C76.6683337,70.9090328 70.7000957,76.7055226 67.4952439,79.8919946 Z\"></path>\n <path d=\"M58.2852966,138.232794 L58.2852966,88.3943645 C56.318874,88.3923153 54.7254089,86.7952906 54.7254089,84.8344788 C54.7254089,82.8684071 56.3175932,81.2745911 58.2890859,81.2745911 L79.6408336,81.2745911 C81.608998,81.2745911 83.2045105,82.8724076 83.2045105,84.8344788 C83.2045105,86.7992907 81.614366,88.3923238 79.6446228,88.3943645 L79.6446228,88.3943646 L79.6446228,138.232794 C79.6446228,144.131009 74.8631748,148.912457 68.9649597,148.912457 C63.0667446,148.912457 58.2852966,144.131009 58.2852966,138.232794 Z M65.405072,-14.8423767 L72.5248474,-14.8423767 L76.0847351,-0.690681892 L72.5248474,6.51694947 L72.5248474,81.2745911 L65.405072,81.2745911 L65.405072,6.51694947 L61.8451843,-0.690681892 L65.405072,-14.8423767 Z\" transform=\"translate(68.964960, 67.035040) rotate(45.000000) translate(-68.964960, -67.035040) \"></path>\n </g>\n</svg>"
},
"$:/core/images/timestamp-off": {
"title": "$:/core/images/timestamp-off",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-timestamp-off tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10c-2.762 0-5-2.24-5-5-.004-2.756 2.238-5 5-5H66.69c2.762 0 5.002 2.24 5 5 .006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M58.25 35.88c-18.777 0-33.998 15.224-33.998 33.998 0 18.773 15.22 34.002 33.998 34.002 18.784 0 34.002-15.23 34.002-34.002 0-18.774-15.218-33.998-34.002-33.998zm-3.03 50.123H44.196v-34H55.22v34zm16.976 0H61.17v-34h11.025v34z\"/>\n </g>\n</svg>\n"
},
"$:/core/images/timestamp-on": {
"title": "$:/core/images/timestamp-on",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-timestamp-on tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10c-2.762 0-5-2.24-5-5-.004-2.756 2.238-5 5-5H66.69c2.762 0 5.002 2.24 5 5 .006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M13.41 27.178c-2.116 1.775-5.27 1.498-7.045-.613-1.772-2.11-1.498-5.27.616-7.047l9.95-8.348c2.115-1.774 5.27-1.5 7.045.618 1.775 2.108 1.498 5.27-.616 7.043l-9.95 8.348zM102.983 27.178c2.116 1.775 5.27 1.498 7.045-.613 1.772-2.11 1.498-5.27-.616-7.047l-9.95-8.348c-2.114-1.774-5.27-1.5-7.044.618-1.775 2.108-1.498 5.27.616 7.043l9.95 8.348zM65.097 71.072c0 3.826-3.09 6.928-6.897 6.928-3.804.006-6.9-3.102-6.903-6.928 0 0 4.76-39.072 6.903-39.072s6.897 39.072 6.897 39.072z\"/>\n </g>\n</svg>\n"
},
"$:/core/images/tip": {
"title": "$:/core/images/tip",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-tip tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M64,128.241818 C99.346224,128.241818 128,99.5880417 128,64.2418177 C128,28.8955937 99.346224,0.241817675 64,0.241817675 C28.653776,0.241817675 0,28.8955937 0,64.2418177 C0,99.5880417 28.653776,128.241818 64,128.241818 Z M75.9358659,91.4531941 C75.3115438,95.581915 70.2059206,98.8016748 64,98.8016748 C57.7940794,98.8016748 52.6884562,95.581915 52.0641341,91.4531941 C54.3299053,94.0502127 58.8248941,95.8192805 64,95.8192805 C69.1751059,95.8192805 73.6700947,94.0502127 75.9358659,91.4531941 L75.9358659,91.4531941 Z M75.9358659,95.9453413 C75.3115438,100.074062 70.2059206,103.293822 64,103.293822 C57.7940794,103.293822 52.6884562,100.074062 52.0641341,95.9453413 C54.3299053,98.5423599 58.8248941,100.311428 64,100.311428 C69.1751059,100.311428 73.6700947,98.5423599 75.9358659,95.9453413 L75.9358659,95.9453413 Z M75.9358659,100.40119 C75.3115438,104.529911 70.2059206,107.74967 64,107.74967 C57.7940794,107.74967 52.6884562,104.529911 52.0641341,100.40119 C54.3299053,102.998208 58.8248941,104.767276 64,104.767276 C69.1751059,104.767276 73.6700947,102.998208 75.9358659,100.40119 L75.9358659,100.40119 Z M75.9358659,104.893337 C75.3115438,109.022058 70.2059206,112.241818 64,112.241818 C57.7940794,112.241818 52.6884562,109.022058 52.0641341,104.893337 C54.3299053,107.490356 58.8248941,109.259423 64,109.259423 C69.1751059,109.259423 73.6700947,107.490356 75.9358659,104.893337 L75.9358659,104.893337 Z M64.3010456,24.2418177 C75.9193117,24.2418188 88.0000013,32.0619847 88,48.4419659 C87.9999987,64.8219472 75.9193018,71.7540963 75.9193021,83.5755932 C75.9193022,89.4486648 70.0521957,92.8368862 63.9999994,92.8368862 C57.947803,92.8368862 51.9731007,89.8295115 51.9731007,83.5755932 C51.9731007,71.1469799 39.9999998,65.4700602 40,48.4419647 C40.0000002,31.4138691 52.6827796,24.2418166 64.3010456,24.2418177 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/twitter": {
"title": "$:/core/images/twitter",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-twitter tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M41.6263422,115.803477 C27.0279663,115.803477 13.4398394,111.540813 1.99987456,104.234833 C4.02221627,104.472643 6.08004574,104.594302 8.16644978,104.594302 C20.277456,104.594302 31.4238403,100.47763 40.270894,93.5715185 C28.9590538,93.3635501 19.4123842,85.9189246 16.1230832,75.6885328 C17.7011365,75.9892376 19.320669,76.1503787 20.9862896,76.1503787 C23.344152,76.1503787 25.6278127,75.8359011 27.7971751,75.247346 C15.9709927,72.8821073 7.06079851,62.4745062 7.06079851,49.9982394 C7.06079851,49.8898938 7.06079851,49.7820074 7.06264203,49.67458 C10.5482779,51.6032228 14.5339687,52.7615103 18.7717609,52.8951059 C11.8355159,48.277565 7.2714207,40.3958845 7.2714207,31.4624258 C7.2714207,26.7434257 8.54621495,22.3200804 10.7713439,18.5169676 C23.5211299,34.0957738 42.568842,44.3472839 64.0532269,45.4210985 C63.6126256,43.5365285 63.3835682,41.5711584 63.3835682,39.5529928 C63.3835682,25.3326379 74.95811,13.8034766 89.2347917,13.8034766 C96.6697089,13.8034766 103.387958,16.930807 108.103682,21.9353619 C113.991886,20.780288 119.52429,18.6372496 124.518847,15.6866694 C122.588682,21.6993889 118.490075,26.7457211 113.152623,29.9327334 C118.381769,29.3102055 123.363882,27.926045 127.999875,25.8780385 C124.534056,31.0418981 120.151087,35.5772616 115.100763,39.2077561 C115.150538,40.3118708 115.175426,41.4224128 115.175426,42.538923 C115.175426,76.5663154 89.1744164,115.803477 41.6263422,115.803477\"></path>\n </g>\n</svg>\n"
},
"$:/core/images/underline": {
"title": "$:/core/images/underline",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-underline tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M7,117.421488 L121.247934,117.421488 L121.247934,128 L7,128 L7,117.421488 Z M104.871212,98.8958333 L104.871212,0 L88.6117424,0 L88.6117424,55.8560606 C88.6117424,60.3194668 88.0060035,64.432115 86.7945076,68.1941288 C85.5830116,71.9561425 83.7657949,75.239885 81.342803,78.0454545 C78.9198111,80.8510241 75.8911167,83.0189317 72.2566288,84.5492424 C68.6221409,86.0795531 64.3182067,86.844697 59.344697,86.844697 C53.0959284,86.844697 48.1862552,85.0593613 44.6155303,81.4886364 C41.0448054,77.9179114 39.2594697,73.0720003 39.2594697,66.9507576 L39.2594697,0 L23,0 L23,65.0378788 C23,70.3939662 23.5419769,75.2717583 24.625947,79.6714015 C25.709917,84.0710447 27.5908957,87.864883 30.2689394,91.0530303 C32.9469831,94.2411776 36.4538925,96.6960141 40.7897727,98.4176136 C45.125653,100.139213 50.545422,101 57.0492424,101 C64.3182182,101 70.630655,99.5653553 75.9867424,96.6960227 C81.3428298,93.8266902 85.742407,89.33147 89.1856061,83.2102273 L89.5681818,83.2102273 L89.5681818,98.8958333 L104.871212,98.8958333 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/unfold-all-button": {
"title": "$:/core/images/unfold-all-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-unfold-all tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <rect x=\"0\" y=\"0\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n <rect x=\"0\" y=\"64\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n <path d=\"M85.598226,8.34884273 C84.1490432,6.89863875 82.1463102,6 79.9340286,6 L47.9482224,6 C43.5292967,6 39.9411255,9.581722 39.9411255,14 C39.9411255,18.4092877 43.5260249,22 47.9482224,22 L71.9411255,22 L71.9411255,45.9929031 C71.9411255,50.4118288 75.5228475,54 79.9411255,54 C84.3504132,54 87.9411255,50.4151006 87.9411255,45.9929031 L87.9411255,14.0070969 C87.9411255,11.7964515 87.0447363,9.79371715 85.5956548,8.34412458 Z\" transform=\"translate(63.941125, 30.000000) scale(1, -1) rotate(-45.000000) translate(-63.941125, -30.000000) \"></path>\n <path d=\"M85.6571005,72.2899682 C84.2079177,70.8397642 82.2051847,69.9411255 79.9929031,69.9411255 L48.0070969,69.9411255 C43.5881712,69.9411255 40,73.5228475 40,77.9411255 C40,82.3504132 43.5848994,85.9411255 48.0070969,85.9411255 L72,85.9411255 L72,109.934029 C72,114.352954 75.581722,117.941125 80,117.941125 C84.4092877,117.941125 88,114.356226 88,109.934029 L88,77.9482224 C88,75.737577 87.1036108,73.7348426 85.6545293,72.2852501 Z\" transform=\"translate(64.000000, 93.941125) scale(1, -1) rotate(-45.000000) translate(-64.000000, -93.941125) \"></path>\n </g>\n</svg>"
},
"$:/core/images/unfold-button": {
"title": "$:/core/images/unfold-button",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-unfold tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <rect x=\"0\" y=\"0\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n <path d=\"M85.598226,11.3488427 C84.1490432,9.89863875 82.1463102,9 79.9340286,9 L47.9482224,9 C43.5292967,9 39.9411255,12.581722 39.9411255,17 C39.9411255,21.4092877 43.5260249,25 47.9482224,25 L71.9411255,25 L71.9411255,48.9929031 C71.9411255,53.4118288 75.5228475,57 79.9411255,57 C84.3504132,57 87.9411255,53.4151006 87.9411255,48.9929031 L87.9411255,17.0070969 C87.9411255,14.7964515 87.0447363,12.7937171 85.5956548,11.3441246 Z\" transform=\"translate(63.941125, 33.000000) scale(1, -1) rotate(-45.000000) translate(-63.941125, -33.000000) \"></path>\n <path d=\"M85.6571005,53.4077172 C84.2079177,51.9575133 82.2051847,51.0588745 79.9929031,51.0588745 L48.0070969,51.0588745 C43.5881712,51.0588745 40,54.6405965 40,59.0588745 C40,63.4681622 43.5848994,67.0588745 48.0070969,67.0588745 L72,67.0588745 L72,91.0517776 C72,95.4707033 75.581722,99.0588745 80,99.0588745 C84.4092877,99.0588745 88,95.4739751 88,91.0517776 L88,59.0659714 C88,56.855326 87.1036108,54.8525917 85.6545293,53.4029991 Z\" transform=\"translate(64.000000, 75.058875) scale(1, -1) rotate(-45.000000) translate(-64.000000, -75.058875) \"></path>\n </g>\n</svg>"
},
"$:/core/images/unlocked-padlock": {
"title": "$:/core/images/unlocked-padlock",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-unlocked-padlock tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M48.6266053,64 L105,64 L105,96.0097716 C105,113.673909 90.6736461,128 73.001193,128 L55.998807,128 C38.3179793,128 24,113.677487 24,96.0097716 L24,64 L30.136303,64 C19.6806213,51.3490406 2.77158986,28.2115132 25.8366966,8.85759246 C50.4723026,-11.8141335 71.6711028,13.2108337 81.613302,25.0594855 C91.5555012,36.9081373 78.9368488,47.4964439 69.1559674,34.9513593 C59.375086,22.4062748 47.9893192,10.8049522 35.9485154,20.9083862 C23.9077117,31.0118202 34.192312,43.2685325 44.7624679,55.8655518 C47.229397,58.805523 48.403443,61.5979188 48.6266053,64 Z M67.7315279,92.3641717 C70.8232551,91.0923621 73,88.0503841 73,84.5 C73,79.8055796 69.1944204,76 64.5,76 C59.8055796,76 56,79.8055796 56,84.5 C56,87.947435 58.0523387,90.9155206 61.0018621,92.2491029 L55.9067479,115.020857 L72.8008958,115.020857 L67.7315279,92.3641717 L67.7315279,92.3641717 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/up-arrow": {
"created": "20150316000544368",
"modified": "20150316000831867",
"tags": "$:/tags/Image",
"title": "$:/core/images/up-arrow",
"text": "<svg class=\"tc-image-up-arrow tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n<path transform=\"rotate(-135, 63.8945, 64.1752)\" d=\"m109.07576,109.35336c-1.43248,1.43361 -3.41136,2.32182 -5.59717,2.32182l-79.16816,0c-4.36519,0 -7.91592,-3.5444 -7.91592,-7.91666c0,-4.36337 3.54408,-7.91667 7.91592,-7.91667l71.25075,0l0,-71.25074c0,-4.3652 3.54442,-7.91592 7.91667,-7.91592c4.36336,0 7.91667,3.54408 7.91667,7.91592l0,79.16815c0,2.1825 -0.88602,4.16136 -2.3185,5.59467l-0.00027,-0.00056l0.00001,-0.00001z\" />\n</svg>\n \n"
},
"$:/core/images/video": {
"title": "$:/core/images/video",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-video tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M64,12 C29.0909091,12 8.72727273,14.9166667 5.81818182,17.8333333 C2.90909091,20.75 1.93784382e-15,41.1666667 0,64.5 C1.93784382e-15,87.8333333 2.90909091,108.25 5.81818182,111.166667 C8.72727273,114.083333 29.0909091,117 64,117 C98.9090909,117 119.272727,114.083333 122.181818,111.166667 C125.090909,108.25 128,87.8333333 128,64.5 C128,41.1666667 125.090909,20.75 122.181818,17.8333333 C119.272727,14.9166667 98.9090909,12 64,12 Z M54.9161194,44.6182253 C51.102648,42.0759111 48.0112186,43.7391738 48.0112186,48.3159447 L48.0112186,79.6840553 C48.0112186,84.2685636 51.109784,85.9193316 54.9161194,83.3817747 L77.0838806,68.6032672 C80.897352,66.0609529 80.890216,61.9342897 77.0838806,59.3967328 L54.9161194,44.6182253 Z\"></path>\n </g>\n</svg>"
},
"$:/core/images/warning": {
"title": "$:/core/images/warning",
"tags": "$:/tags/Image",
"text": "<svg class=\"tc-image-warning tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M57.0717968,11 C60.1509982,5.66666667 67.8490018,5.66666667 70.9282032,11 L126.353829,107 C129.433031,112.333333 125.584029,119 119.425626,119 L8.57437416,119 C2.41597129,119 -1.43303051,112.333333 1.64617093,107 L57.0717968,11 Z M64,37 C59.581722,37 56,40.5820489 56,44.9935776 L56,73.0064224 C56,77.4211534 59.5907123,81 64,81 C68.418278,81 72,77.4179511 72,73.0064224 L72,44.9935776 C72,40.5788466 68.4092877,37 64,37 Z M64,104 C68.418278,104 72,100.418278 72,96 C72,91.581722 68.418278,88 64,88 C59.581722,88 56,91.581722 56,96 C56,100.418278 59.581722,104 64,104 Z\"></path>\n </g>\n</svg>"
},
"$:/language/Buttons/AdvancedSearch/Caption": {
"title": "$:/language/Buttons/AdvancedSearch/Caption",
"text": "advanced search"
},
"$:/language/Buttons/AdvancedSearch/Hint": {
"title": "$:/language/Buttons/AdvancedSearch/Hint",
"text": "Advanced search"
},
"$:/language/Buttons/Cancel/Caption": {
"title": "$:/language/Buttons/Cancel/Caption",
"text": "cancel"
},
"$:/language/Buttons/Cancel/Hint": {
"title": "$:/language/Buttons/Cancel/Hint",
"text": "Discard changes to this tiddler"
},
"$:/language/Buttons/Clone/Caption": {
"title": "$:/language/Buttons/Clone/Caption",
"text": "clone"
},
"$:/language/Buttons/Clone/Hint": {
"title": "$:/language/Buttons/Clone/Hint",
"text": "Clone this tiddler"
},
"$:/language/Buttons/Close/Caption": {
"title": "$:/language/Buttons/Close/Caption",
"text": "close"
},
"$:/language/Buttons/Close/Hint": {
"title": "$:/language/Buttons/Close/Hint",
"text": "Close this tiddler"
},
"$:/language/Buttons/CloseAll/Caption": {
"title": "$:/language/Buttons/CloseAll/Caption",
"text": "close all"
},
"$:/language/Buttons/CloseAll/Hint": {
"title": "$:/language/Buttons/CloseAll/Hint",
"text": "Close all tiddlers"
},
"$:/language/Buttons/CloseOthers/Caption": {
"title": "$:/language/Buttons/CloseOthers/Caption",
"text": "close others"
},
"$:/language/Buttons/CloseOthers/Hint": {
"title": "$:/language/Buttons/CloseOthers/Hint",
"text": "Close other tiddlers"
},
"$:/language/Buttons/ControlPanel/Caption": {
"title": "$:/language/Buttons/ControlPanel/Caption",
"text": "control panel"
},
"$:/language/Buttons/ControlPanel/Hint": {
"title": "$:/language/Buttons/ControlPanel/Hint",
"text": "Open control panel"
},
"$:/language/Buttons/Delete/Caption": {
"title": "$:/language/Buttons/Delete/Caption",
"text": "delete"
},
"$:/language/Buttons/Delete/Hint": {
"title": "$:/language/Buttons/Delete/Hint",
"text": "Delete this tiddler"
},
"$:/language/Buttons/Edit/Caption": {
"title": "$:/language/Buttons/Edit/Caption",
"text": "edit"
},
"$:/language/Buttons/Edit/Hint": {
"title": "$:/language/Buttons/Edit/Hint",
"text": "Edit this tiddler"
},
"$:/language/Buttons/Encryption/Caption": {
"title": "$:/language/Buttons/Encryption/Caption",
"text": "encryption"
},
"$:/language/Buttons/Encryption/Hint": {
"title": "$:/language/Buttons/Encryption/Hint",
"text": "Set or clear a password for saving this wiki"
},
"$:/language/Buttons/Encryption/ClearPassword/Caption": {
"title": "$:/language/Buttons/Encryption/ClearPassword/Caption",
"text": "clear password"
},
"$:/language/Buttons/Encryption/ClearPassword/Hint": {
"title": "$:/language/Buttons/Encryption/ClearPassword/Hint",
"text": "Clear the password and save this wiki without encryption"
},
"$:/language/Buttons/Encryption/SetPassword/Caption": {
"title": "$:/language/Buttons/Encryption/SetPassword/Caption",
"text": "set password"
},
"$:/language/Buttons/Encryption/SetPassword/Hint": {
"title": "$:/language/Buttons/Encryption/SetPassword/Hint",
"text": "Set a password for saving this wiki with encryption"
},
"$:/language/Buttons/ExportPage/Caption": {
"title": "$:/language/Buttons/ExportPage/Caption",
"text": "export all"
},
"$:/language/Buttons/ExportPage/Hint": {
"title": "$:/language/Buttons/ExportPage/Hint",
"text": "Export all tiddlers"
},
"$:/language/Buttons/ExportTiddler/Caption": {
"title": "$:/language/Buttons/ExportTiddler/Caption",
"text": "export tiddler"
},
"$:/language/Buttons/ExportTiddler/Hint": {
"title": "$:/language/Buttons/ExportTiddler/Hint",
"text": "Export tiddler"
},
"$:/language/Buttons/ExportTiddlers/Caption": {
"title": "$:/language/Buttons/ExportTiddlers/Caption",
"text": "export tiddlers"
},
"$:/language/Buttons/ExportTiddlers/Hint": {
"title": "$:/language/Buttons/ExportTiddlers/Hint",
"text": "Export tiddlers"
},
"$:/language/Buttons/Fold/Caption": {
"title": "$:/language/Buttons/Fold/Caption",
"text": "fold tiddler"
},
"$:/language/Buttons/Fold/Hint": {
"title": "$:/language/Buttons/Fold/Hint",
"text": "Fold the body of this tiddler"
},
"$:/language/Buttons/Fold/FoldBar/Caption": {
"title": "$:/language/Buttons/Fold/FoldBar/Caption",
"text": "fold-bar"
},
"$:/language/Buttons/Fold/FoldBar/Hint": {
"title": "$:/language/Buttons/Fold/FoldBar/Hint",
"text": "Optional bars to fold and unfold tiddlers"
},
"$:/language/Buttons/Unfold/Caption": {
"title": "$:/language/Buttons/Unfold/Caption",
"text": "unfold tiddler"
},
"$:/language/Buttons/Unfold/Hint": {
"title": "$:/language/Buttons/Unfold/Hint",
"text": "Unfold the body of this tiddler"
},
"$:/language/Buttons/FoldOthers/Caption": {
"title": "$:/language/Buttons/FoldOthers/Caption",
"text": "fold other tiddlers"
},
"$:/language/Buttons/FoldOthers/Hint": {
"title": "$:/language/Buttons/FoldOthers/Hint",
"text": "Fold the bodies of other opened tiddlers"
},
"$:/language/Buttons/FoldAll/Caption": {
"title": "$:/language/Buttons/FoldAll/Caption",
"text": "fold all tiddlers"
},
"$:/language/Buttons/FoldAll/Hint": {
"title": "$:/language/Buttons/FoldAll/Hint",
"text": "Fold the bodies of all opened tiddlers"
},
"$:/language/Buttons/UnfoldAll/Caption": {
"title": "$:/language/Buttons/UnfoldAll/Caption",
"text": "unfold all tiddlers"
},
"$:/language/Buttons/UnfoldAll/Hint": {
"title": "$:/language/Buttons/UnfoldAll/Hint",
"text": "Unfold the bodies of all opened tiddlers"
},
"$:/language/Buttons/FullScreen/Caption": {
"title": "$:/language/Buttons/FullScreen/Caption",
"text": "full-screen"
},
"$:/language/Buttons/FullScreen/Hint": {
"title": "$:/language/Buttons/FullScreen/Hint",
"text": "Enter or leave full-screen mode"
},
"$:/language/Buttons/Help/Caption": {
"title": "$:/language/Buttons/Help/Caption",
"text": "help"
},
"$:/language/Buttons/Help/Hint": {
"title": "$:/language/Buttons/Help/Hint",
"text": "Show help panel"
},
"$:/language/Buttons/Import/Caption": {
"title": "$:/language/Buttons/Import/Caption",
"text": "import"
},
"$:/language/Buttons/Import/Hint": {
"title": "$:/language/Buttons/Import/Hint",
"text": "Import many types of file including text, image, TiddlyWiki or JSON"
},
"$:/language/Buttons/Info/Caption": {
"title": "$:/language/Buttons/Info/Caption",
"text": "info"
},
"$:/language/Buttons/Info/Hint": {
"title": "$:/language/Buttons/Info/Hint",
"text": "Show information for this tiddler"
},
"$:/language/Buttons/Home/Caption": {
"title": "$:/language/Buttons/Home/Caption",
"text": "home"
},
"$:/language/Buttons/Home/Hint": {
"title": "$:/language/Buttons/Home/Hint",
"text": "Open the default tiddlers"
},
"$:/language/Buttons/Language/Caption": {
"title": "$:/language/Buttons/Language/Caption",
"text": "language"
},
"$:/language/Buttons/Language/Hint": {
"title": "$:/language/Buttons/Language/Hint",
"text": "Choose the user interface language"
},
"$:/language/Buttons/Manager/Caption": {
"title": "$:/language/Buttons/Manager/Caption",
"text": "tiddler manager"
},
"$:/language/Buttons/Manager/Hint": {
"title": "$:/language/Buttons/Manager/Hint",
"text": "Open tiddler manager"
},
"$:/language/Buttons/More/Caption": {
"title": "$:/language/Buttons/More/Caption",
"text": "more"
},
"$:/language/Buttons/More/Hint": {
"title": "$:/language/Buttons/More/Hint",
"text": "More actions"
},
"$:/language/Buttons/NewHere/Caption": {
"title": "$:/language/Buttons/NewHere/Caption",
"text": "new here"
},
"$:/language/Buttons/NewHere/Hint": {
"title": "$:/language/Buttons/NewHere/Hint",
"text": "Create a new tiddler tagged with this one"
},
"$:/language/Buttons/NewJournal/Caption": {
"title": "$:/language/Buttons/NewJournal/Caption",
"text": "new journal"
},
"$:/language/Buttons/NewJournal/Hint": {
"title": "$:/language/Buttons/NewJournal/Hint",
"text": "Create a new journal tiddler"
},
"$:/language/Buttons/NewJournalHere/Caption": {
"title": "$:/language/Buttons/NewJournalHere/Caption",
"text": "new journal here"
},
"$:/language/Buttons/NewJournalHere/Hint": {
"title": "$:/language/Buttons/NewJournalHere/Hint",
"text": "Create a new journal tiddler tagged with this one"
},
"$:/language/Buttons/NewImage/Caption": {
"title": "$:/language/Buttons/NewImage/Caption",
"text": "new image"
},
"$:/language/Buttons/NewImage/Hint": {
"title": "$:/language/Buttons/NewImage/Hint",
"text": "Create a new image tiddler"
},
"$:/language/Buttons/NewMarkdown/Caption": {
"title": "$:/language/Buttons/NewMarkdown/Caption",
"text": "new Markdown tiddler"
},
"$:/language/Buttons/NewMarkdown/Hint": {
"title": "$:/language/Buttons/NewMarkdown/Hint",
"text": "Create a new Markdown tiddler"
},
"$:/language/Buttons/NewTiddler/Caption": {
"title": "$:/language/Buttons/NewTiddler/Caption",
"text": "new tiddler"
},
"$:/language/Buttons/NewTiddler/Hint": {
"title": "$:/language/Buttons/NewTiddler/Hint",
"text": "Create a new tiddler"
},
"$:/language/Buttons/OpenWindow/Caption": {
"title": "$:/language/Buttons/OpenWindow/Caption",
"text": "open in new window"
},
"$:/language/Buttons/OpenWindow/Hint": {
"title": "$:/language/Buttons/OpenWindow/Hint",
"text": "Open tiddler in new window"
},
"$:/language/Buttons/Palette/Caption": {
"title": "$:/language/Buttons/Palette/Caption",
"text": "palette"
},
"$:/language/Buttons/Palette/Hint": {
"title": "$:/language/Buttons/Palette/Hint",
"text": "Choose the colour palette"
},
"$:/language/Buttons/Permalink/Caption": {
"title": "$:/language/Buttons/Permalink/Caption",
"text": "permalink"
},
"$:/language/Buttons/Permalink/Hint": {
"title": "$:/language/Buttons/Permalink/Hint",
"text": "Set browser address bar to a direct link to this tiddler"
},
"$:/language/Buttons/Permaview/Caption": {
"title": "$:/language/Buttons/Permaview/Caption",
"text": "permaview"
},
"$:/language/Buttons/Permaview/Hint": {
"title": "$:/language/Buttons/Permaview/Hint",
"text": "Set browser address bar to a direct link to all the tiddlers in this story"
},
"$:/language/Buttons/Print/Caption": {
"title": "$:/language/Buttons/Print/Caption",
"text": "print page"
},
"$:/language/Buttons/Print/Hint": {
"title": "$:/language/Buttons/Print/Hint",
"text": "Print the current page"
},
"$:/language/Buttons/Refresh/Caption": {
"title": "$:/language/Buttons/Refresh/Caption",
"text": "refresh"
},
"$:/language/Buttons/Refresh/Hint": {
"title": "$:/language/Buttons/Refresh/Hint",
"text": "Perform a full refresh of the wiki"
},
"$:/language/Buttons/Save/Caption": {
"title": "$:/language/Buttons/Save/Caption",
"text": "ok"
},
"$:/language/Buttons/Save/Hint": {
"title": "$:/language/Buttons/Save/Hint",
"text": "Confirm changes to this tiddler"
},
"$:/language/Buttons/SaveWiki/Caption": {
"title": "$:/language/Buttons/SaveWiki/Caption",
"text": "save changes"
},
"$:/language/Buttons/SaveWiki/Hint": {
"title": "$:/language/Buttons/SaveWiki/Hint",
"text": "Save changes"
},
"$:/language/Buttons/StoryView/Caption": {
"title": "$:/language/Buttons/StoryView/Caption",
"text": "storyview"
},
"$:/language/Buttons/StoryView/Hint": {
"title": "$:/language/Buttons/StoryView/Hint",
"text": "Choose the story visualisation"
},
"$:/language/Buttons/HideSideBar/Caption": {
"title": "$:/language/Buttons/HideSideBar/Caption",
"text": "hide sidebar"
},
"$:/language/Buttons/HideSideBar/Hint": {
"title": "$:/language/Buttons/HideSideBar/Hint",
"text": "Hide sidebar"
},
"$:/language/Buttons/ShowSideBar/Caption": {
"title": "$:/language/Buttons/ShowSideBar/Caption",
"text": "show sidebar"
},
"$:/language/Buttons/ShowSideBar/Hint": {
"title": "$:/language/Buttons/ShowSideBar/Hint",
"text": "Show sidebar"
},
"$:/language/Buttons/TagManager/Caption": {
"title": "$:/language/Buttons/TagManager/Caption",
"text": "tag manager"
},
"$:/language/Buttons/TagManager/Hint": {
"title": "$:/language/Buttons/TagManager/Hint",
"text": "Open tag manager"
},
"$:/language/Buttons/Timestamp/Caption": {
"title": "$:/language/Buttons/Timestamp/Caption",
"text": "timestamps"
},
"$:/language/Buttons/Timestamp/Hint": {
"title": "$:/language/Buttons/Timestamp/Hint",
"text": "Choose whether modifications update timestamps"
},
"$:/language/Buttons/Timestamp/On/Caption": {
"title": "$:/language/Buttons/Timestamp/On/Caption",
"text": "timestamps are on"
},
"$:/language/Buttons/Timestamp/On/Hint": {
"title": "$:/language/Buttons/Timestamp/On/Hint",
"text": "Update timestamps when tiddlers are modified"
},
"$:/language/Buttons/Timestamp/Off/Caption": {
"title": "$:/language/Buttons/Timestamp/Off/Caption",
"text": "timestamps are off"
},
"$:/language/Buttons/Timestamp/Off/Hint": {
"title": "$:/language/Buttons/Timestamp/Off/Hint",
"text": "Don't update timestamps when tiddlers are modified"
},
"$:/language/Buttons/Theme/Caption": {
"title": "$:/language/Buttons/Theme/Caption",
"text": "theme"
},
"$:/language/Buttons/Theme/Hint": {
"title": "$:/language/Buttons/Theme/Hint",
"text": "Choose the display theme"
},
"$:/language/Buttons/Bold/Caption": {
"title": "$:/language/Buttons/Bold/Caption",
"text": "bold"
},
"$:/language/Buttons/Bold/Hint": {
"title": "$:/language/Buttons/Bold/Hint",
"text": "Apply bold formatting to selection"
},
"$:/language/Buttons/Clear/Caption": {
"title": "$:/language/Buttons/Clear/Caption",
"text": "clear"
},
"$:/language/Buttons/Clear/Hint": {
"title": "$:/language/Buttons/Clear/Hint",
"text": "Clear image to solid colour"
},
"$:/language/Buttons/EditorHeight/Caption": {
"title": "$:/language/Buttons/EditorHeight/Caption",
"text": "editor height"
},
"$:/language/Buttons/EditorHeight/Caption/Auto": {
"title": "$:/language/Buttons/EditorHeight/Caption/Auto",
"text": "Automatically adjust height to fit content"
},
"$:/language/Buttons/EditorHeight/Caption/Fixed": {
"title": "$:/language/Buttons/EditorHeight/Caption/Fixed",
"text": "Fixed height:"
},
"$:/language/Buttons/EditorHeight/Hint": {
"title": "$:/language/Buttons/EditorHeight/Hint",
"text": "Choose the height of the text editor"
},
"$:/language/Buttons/Excise/Caption": {
"title": "$:/language/Buttons/Excise/Caption",
"text": "excise"
},
"$:/language/Buttons/Excise/Caption/Excise": {
"title": "$:/language/Buttons/Excise/Caption/Excise",
"text": "Perform excision"
},
"$:/language/Buttons/Excise/Caption/MacroName": {
"title": "$:/language/Buttons/Excise/Caption/MacroName",
"text": "Macro name:"
},
"$:/language/Buttons/Excise/Caption/NewTitle": {
"title": "$:/language/Buttons/Excise/Caption/NewTitle",
"text": "Title of new tiddler:"
},
"$:/language/Buttons/Excise/Caption/Replace": {
"title": "$:/language/Buttons/Excise/Caption/Replace",
"text": "Replace excised text with:"
},
"$:/language/Buttons/Excise/Caption/Replace/Macro": {
"title": "$:/language/Buttons/Excise/Caption/Replace/Macro",
"text": "macro"
},
"$:/language/Buttons/Excise/Caption/Replace/Link": {
"title": "$:/language/Buttons/Excise/Caption/Replace/Link",
"text": "link"
},
"$:/language/Buttons/Excise/Caption/Replace/Transclusion": {
"title": "$:/language/Buttons/Excise/Caption/Replace/Transclusion",
"text": "transclusion"
},
"$:/language/Buttons/Excise/Caption/Tag": {
"title": "$:/language/Buttons/Excise/Caption/Tag",
"text": "Tag new tiddler with the title of this tiddler"
},
"$:/language/Buttons/Excise/Caption/TiddlerExists": {
"title": "$:/language/Buttons/Excise/Caption/TiddlerExists",
"text": "Warning: tiddler already exists"
},
"$:/language/Buttons/Excise/Hint": {
"title": "$:/language/Buttons/Excise/Hint",
"text": "Excise the selected text into a new tiddler"
},
"$:/language/Buttons/Heading1/Caption": {
"title": "$:/language/Buttons/Heading1/Caption",
"text": "heading 1"
},
"$:/language/Buttons/Heading1/Hint": {
"title": "$:/language/Buttons/Heading1/Hint",
"text": "Apply heading level 1 formatting to lines containing selection"
},
"$:/language/Buttons/Heading2/Caption": {
"title": "$:/language/Buttons/Heading2/Caption",
"text": "heading 2"
},
"$:/language/Buttons/Heading2/Hint": {
"title": "$:/language/Buttons/Heading2/Hint",
"text": "Apply heading level 2 formatting to lines containing selection"
},
"$:/language/Buttons/Heading3/Caption": {
"title": "$:/language/Buttons/Heading3/Caption",
"text": "heading 3"
},
"$:/language/Buttons/Heading3/Hint": {
"title": "$:/language/Buttons/Heading3/Hint",
"text": "Apply heading level 3 formatting to lines containing selection"
},
"$:/language/Buttons/Heading4/Caption": {
"title": "$:/language/Buttons/Heading4/Caption",
"text": "heading 4"
},
"$:/language/Buttons/Heading4/Hint": {
"title": "$:/language/Buttons/Heading4/Hint",
"text": "Apply heading level 4 formatting to lines containing selection"
},
"$:/language/Buttons/Heading5/Caption": {
"title": "$:/language/Buttons/Heading5/Caption",
"text": "heading 5"
},
"$:/language/Buttons/Heading5/Hint": {
"title": "$:/language/Buttons/Heading5/Hint",
"text": "Apply heading level 5 formatting to lines containing selection"
},
"$:/language/Buttons/Heading6/Caption": {
"title": "$:/language/Buttons/Heading6/Caption",
"text": "heading 6"
},
"$:/language/Buttons/Heading6/Hint": {
"title": "$:/language/Buttons/Heading6/Hint",
"text": "Apply heading level 6 formatting to lines containing selection"
},
"$:/language/Buttons/Italic/Caption": {
"title": "$:/language/Buttons/Italic/Caption",
"text": "italic"
},
"$:/language/Buttons/Italic/Hint": {
"title": "$:/language/Buttons/Italic/Hint",
"text": "Apply italic formatting to selection"
},
"$:/language/Buttons/LineWidth/Caption": {
"title": "$:/language/Buttons/LineWidth/Caption",
"text": "line width"
},
"$:/language/Buttons/LineWidth/Hint": {
"title": "$:/language/Buttons/LineWidth/Hint",
"text": "Set line width for painting"
},
"$:/language/Buttons/Link/Caption": {
"title": "$:/language/Buttons/Link/Caption",
"text": "link"
},
"$:/language/Buttons/Link/Hint": {
"title": "$:/language/Buttons/Link/Hint",
"text": "Create wikitext link"
},
"$:/language/Buttons/ListBullet/Caption": {
"title": "$:/language/Buttons/ListBullet/Caption",
"text": "bulleted list"
},
"$:/language/Buttons/ListBullet/Hint": {
"title": "$:/language/Buttons/ListBullet/Hint",
"text": "Apply bulleted list formatting to lines containing selection"
},
"$:/language/Buttons/ListNumber/Caption": {
"title": "$:/language/Buttons/ListNumber/Caption",
"text": "numbered list"
},
"$:/language/Buttons/ListNumber/Hint": {
"title": "$:/language/Buttons/ListNumber/Hint",
"text": "Apply numbered list formatting to lines containing selection"
},
"$:/language/Buttons/MonoBlock/Caption": {
"title": "$:/language/Buttons/MonoBlock/Caption",
"text": "monospaced block"
},
"$:/language/Buttons/MonoBlock/Hint": {
"title": "$:/language/Buttons/MonoBlock/Hint",
"text": "Apply monospaced block formatting to lines containing selection"
},
"$:/language/Buttons/MonoLine/Caption": {
"title": "$:/language/Buttons/MonoLine/Caption",
"text": "monospaced"
},
"$:/language/Buttons/MonoLine/Hint": {
"title": "$:/language/Buttons/MonoLine/Hint",
"text": "Apply monospaced character formatting to selection"
},
"$:/language/Buttons/Opacity/Caption": {
"title": "$:/language/Buttons/Opacity/Caption",
"text": "opacity"
},
"$:/language/Buttons/Opacity/Hint": {
"title": "$:/language/Buttons/Opacity/Hint",
"text": "Set painting opacity"
},
"$:/language/Buttons/Paint/Caption": {
"title": "$:/language/Buttons/Paint/Caption",
"text": "paint colour"
},
"$:/language/Buttons/Paint/Hint": {
"title": "$:/language/Buttons/Paint/Hint",
"text": "Set painting colour"
},
"$:/language/Buttons/Picture/Caption": {
"title": "$:/language/Buttons/Picture/Caption",
"text": "picture"
},
"$:/language/Buttons/Picture/Hint": {
"title": "$:/language/Buttons/Picture/Hint",
"text": "Insert picture"
},
"$:/language/Buttons/Preview/Caption": {
"title": "$:/language/Buttons/Preview/Caption",
"text": "preview"
},
"$:/language/Buttons/Preview/Hint": {
"title": "$:/language/Buttons/Preview/Hint",
"text": "Show preview pane"
},
"$:/language/Buttons/PreviewType/Caption": {
"title": "$:/language/Buttons/PreviewType/Caption",
"text": "preview type"
},
"$:/language/Buttons/PreviewType/Hint": {
"title": "$:/language/Buttons/PreviewType/Hint",
"text": "Choose preview type"
},
"$:/language/Buttons/Quote/Caption": {
"title": "$:/language/Buttons/Quote/Caption",
"text": "quote"
},
"$:/language/Buttons/Quote/Hint": {
"title": "$:/language/Buttons/Quote/Hint",
"text": "Apply quoted text formatting to lines containing selection"
},
"$:/language/Buttons/Size/Caption": {
"title": "$:/language/Buttons/Size/Caption",
"text": "image size"
},
"$:/language/Buttons/Size/Caption/Height": {
"title": "$:/language/Buttons/Size/Caption/Height",
"text": "Height:"
},
"$:/language/Buttons/Size/Caption/Resize": {
"title": "$:/language/Buttons/Size/Caption/Resize",
"text": "Resize image"
},
"$:/language/Buttons/Size/Caption/Width": {
"title": "$:/language/Buttons/Size/Caption/Width",
"text": "Width:"
},
"$:/language/Buttons/Size/Hint": {
"title": "$:/language/Buttons/Size/Hint",
"text": "Set image size"
},
"$:/language/Buttons/Stamp/Caption": {
"title": "$:/language/Buttons/Stamp/Caption",
"text": "stamp"
},
"$:/language/Buttons/Stamp/Caption/New": {
"title": "$:/language/Buttons/Stamp/Caption/New",
"text": "Add your own"
},
"$:/language/Buttons/Stamp/Hint": {
"title": "$:/language/Buttons/Stamp/Hint",
"text": "Insert a preconfigured snippet of text"
},
"$:/language/Buttons/Stamp/New/Title": {
"title": "$:/language/Buttons/Stamp/New/Title",
"text": "Name as shown in menu"
},
"$:/language/Buttons/Stamp/New/Text": {
"title": "$:/language/Buttons/Stamp/New/Text",
"text": "Text of snippet. (Remember to add a descriptive title in the caption field)."
},
"$:/language/Buttons/Strikethrough/Caption": {
"title": "$:/language/Buttons/Strikethrough/Caption",
"text": "strikethrough"
},
"$:/language/Buttons/Strikethrough/Hint": {
"title": "$:/language/Buttons/Strikethrough/Hint",
"text": "Apply strikethrough formatting to selection"
},
"$:/language/Buttons/Subscript/Caption": {
"title": "$:/language/Buttons/Subscript/Caption",
"text": "subscript"
},
"$:/language/Buttons/Subscript/Hint": {
"title": "$:/language/Buttons/Subscript/Hint",
"text": "Apply subscript formatting to selection"
},
"$:/language/Buttons/Superscript/Caption": {
"title": "$:/language/Buttons/Superscript/Caption",
"text": "superscript"
},
"$:/language/Buttons/Superscript/Hint": {
"title": "$:/language/Buttons/Superscript/Hint",
"text": "Apply superscript formatting to selection"
},
"$:/language/Buttons/Underline/Caption": {
"title": "$:/language/Buttons/Underline/Caption",
"text": "underline"
},
"$:/language/Buttons/Underline/Hint": {
"title": "$:/language/Buttons/Underline/Hint",
"text": "Apply underline formatting to selection"
},
"$:/language/ControlPanel/Advanced/Caption": {
"title": "$:/language/ControlPanel/Advanced/Caption",
"text": "Advanced"
},
"$:/language/ControlPanel/Advanced/Hint": {
"title": "$:/language/ControlPanel/Advanced/Hint",
"text": "Internal information about this TiddlyWiki"
},
"$:/language/ControlPanel/Appearance/Caption": {
"title": "$:/language/ControlPanel/Appearance/Caption",
"text": "Appearance"
},
"$:/language/ControlPanel/Appearance/Hint": {
"title": "$:/language/ControlPanel/Appearance/Hint",
"text": "Ways to customise the appearance of your TiddlyWiki."
},
"$:/language/ControlPanel/Basics/AnimDuration/Prompt": {
"title": "$:/language/ControlPanel/Basics/AnimDuration/Prompt",
"text": "Animation duration:"
},
"$:/language/ControlPanel/Basics/Caption": {
"title": "$:/language/ControlPanel/Basics/Caption",
"text": "Basics"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint",
"text": "Use [[double square brackets]] for titles with spaces. Or you can choose to <$button set=\"$:/DefaultTiddlers\" setTo=\"[list[$:/StoryList]]\">retain story ordering</$button>"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt",
"text": "Default tiddlers:"
},
"$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint": {
"title": "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint",
"text": "Choose which tiddlers are displayed at startup:"
},
"$:/language/ControlPanel/Basics/Language/Prompt": {
"title": "$:/language/ControlPanel/Basics/Language/Prompt",
"text": "Hello! Current language:"
},
"$:/language/ControlPanel/Basics/NewJournal/Title/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt",
"text": "Title of new journal tiddlers"
},
"$:/language/ControlPanel/Basics/NewJournal/Text/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt",
"text": "Text for new journal tiddlers"
},
"$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt",
"text": "Tags for new journal tiddlers"
},
"$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt",
"text": "Number of overridden shadow tiddlers:"
},
"$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt",
"text": "Number of shadow tiddlers:"
},
"$:/language/ControlPanel/Basics/Subtitle/Prompt": {
"title": "$:/language/ControlPanel/Basics/Subtitle/Prompt",
"text": "Subtitle:"
},
"$:/language/ControlPanel/Basics/SystemTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt",
"text": "Number of system tiddlers:"
},
"$:/language/ControlPanel/Basics/Tags/Prompt": {
"title": "$:/language/ControlPanel/Basics/Tags/Prompt",
"text": "Number of tags:"
},
"$:/language/ControlPanel/Basics/Tiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/Tiddlers/Prompt",
"text": "Number of tiddlers:"
},
"$:/language/ControlPanel/Basics/Title/Prompt": {
"title": "$:/language/ControlPanel/Basics/Title/Prompt",
"text": "Title of this ~TiddlyWiki:"
},
"$:/language/ControlPanel/Basics/Username/Prompt": {
"title": "$:/language/ControlPanel/Basics/Username/Prompt",
"text": "Username for signing edits:"
},
"$:/language/ControlPanel/Basics/Version/Prompt": {
"title": "$:/language/ControlPanel/Basics/Version/Prompt",
"text": "~TiddlyWiki version:"
},
"$:/language/ControlPanel/EditorTypes/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Caption",
"text": "Editor Types"
},
"$:/language/ControlPanel/EditorTypes/Editor/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Editor/Caption",
"text": "Editor"
},
"$:/language/ControlPanel/EditorTypes/Hint": {
"title": "$:/language/ControlPanel/EditorTypes/Hint",
"text": "These tiddlers determine which editor is used to edit specific tiddler types."
},
"$:/language/ControlPanel/EditorTypes/Type/Caption": {
"title": "$:/language/ControlPanel/EditorTypes/Type/Caption",
"text": "Type"
},
"$:/language/ControlPanel/Info/Caption": {
"title": "$:/language/ControlPanel/Info/Caption",
"text": "Info"
},
"$:/language/ControlPanel/Info/Hint": {
"title": "$:/language/ControlPanel/Info/Hint",
"text": "Information about this TiddlyWiki"
},
"$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt",
"text": "Type shortcut here"
},
"$:/language/ControlPanel/KeyboardShortcuts/Add/Caption": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption",
"text": "add shortcut"
},
"$:/language/ControlPanel/KeyboardShortcuts/Caption": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Caption",
"text": "Keyboard Shortcuts"
},
"$:/language/ControlPanel/KeyboardShortcuts/Hint": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Hint",
"text": "Manage keyboard shortcut assignments"
},
"$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption",
"text": "No keyboard shortcuts assigned"
},
"$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint",
"text": "remove keyboard shortcut"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/All": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/All",
"text": "All platforms"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac",
"text": "Macintosh platform only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac",
"text": "Non-Macintosh platforms only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux",
"text": "Linux platform only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux",
"text": "Non-Linux platforms only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows",
"text": "Windows platform only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows",
"text": "Non-Windows platforms only"
},
"$:/language/ControlPanel/LoadedModules/Caption": {
"title": "$:/language/ControlPanel/LoadedModules/Caption",
"text": "Loaded Modules"
},
"$:/language/ControlPanel/LoadedModules/Hint": {
"title": "$:/language/ControlPanel/LoadedModules/Hint",
"text": "These are the currently loaded tiddler modules linked to their source tiddlers. Any italicised modules lack a source tiddler, typically because they were setup during the boot process."
},
"$:/language/ControlPanel/Palette/Caption": {
"title": "$:/language/ControlPanel/Palette/Caption",
"text": "Palette"
},
"$:/language/ControlPanel/Palette/Editor/Clone/Caption": {
"title": "$:/language/ControlPanel/Palette/Editor/Clone/Caption",
"text": "clone"
},
"$:/language/ControlPanel/Palette/Editor/Clone/Prompt": {
"title": "$:/language/ControlPanel/Palette/Editor/Clone/Prompt",
"text": "It is recommended that you clone this shadow palette before editing it"
},
"$:/language/ControlPanel/Palette/Editor/Prompt/Modified": {
"title": "$:/language/ControlPanel/Palette/Editor/Prompt/Modified",
"text": "This shadow palette has been modified"
},
"$:/language/ControlPanel/Palette/Editor/Prompt": {
"title": "$:/language/ControlPanel/Palette/Editor/Prompt",
"text": "Editing"
},
"$:/language/ControlPanel/Palette/Editor/Reset/Caption": {
"title": "$:/language/ControlPanel/Palette/Editor/Reset/Caption",
"text": "reset"
},
"$:/language/ControlPanel/Palette/HideEditor/Caption": {
"title": "$:/language/ControlPanel/Palette/HideEditor/Caption",
"text": "hide editor"
},
"$:/language/ControlPanel/Palette/Prompt": {
"title": "$:/language/ControlPanel/Palette/Prompt",
"text": "Current palette:"
},
"$:/language/ControlPanel/Palette/ShowEditor/Caption": {
"title": "$:/language/ControlPanel/Palette/ShowEditor/Caption",
"text": "show editor"
},
"$:/language/ControlPanel/Parsing/Caption": {
"title": "$:/language/ControlPanel/Parsing/Caption",
"text": "Parsing"
},
"$:/language/ControlPanel/Parsing/Hint": {
"title": "$:/language/ControlPanel/Parsing/Hint",
"text": "Here you can globally disable/enable wiki parser rules. For changes to take effect, save and reload your wiki. Disabling certain parser rules can prevent <$text text=\"TiddlyWiki\"/> from functioning correctly. Use [[safe mode|http://tiddlywiki.com/#SafeMode]] to restore normal operation."
},
"$:/language/ControlPanel/Parsing/Block/Caption": {
"title": "$:/language/ControlPanel/Parsing/Block/Caption",
"text": "Block Parse Rules"
},
"$:/language/ControlPanel/Parsing/Inline/Caption": {
"title": "$:/language/ControlPanel/Parsing/Inline/Caption",
"text": "Inline Parse Rules"
},
"$:/language/ControlPanel/Parsing/Pragma/Caption": {
"title": "$:/language/ControlPanel/Parsing/Pragma/Caption",
"text": "Pragma Parse Rules"
},
"$:/language/ControlPanel/Plugins/Add/Caption": {
"title": "$:/language/ControlPanel/Plugins/Add/Caption",
"text": "Get more plugins"
},
"$:/language/ControlPanel/Plugins/Add/Hint": {
"title": "$:/language/ControlPanel/Plugins/Add/Hint",
"text": "Install plugins from the official library"
},
"$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint": {
"title": "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint",
"text": "This plugin is already installed at version <$text text=<<installedVersion>>/>"
},
"$:/language/ControlPanel/Plugins/Caption": {
"title": "$:/language/ControlPanel/Plugins/Caption",
"text": "Plugins"
},
"$:/language/ControlPanel/Plugins/Disable/Caption": {
"title": "$:/language/ControlPanel/Plugins/Disable/Caption",
"text": "disable"
},
"$:/language/ControlPanel/Plugins/Disable/Hint": {
"title": "$:/language/ControlPanel/Plugins/Disable/Hint",
"text": "Disable this plugin when reloading page"
},
"$:/language/ControlPanel/Plugins/Disabled/Status": {
"title": "$:/language/ControlPanel/Plugins/Disabled/Status",
"text": "(disabled)"
},
"$:/language/ControlPanel/Plugins/Empty/Hint": {
"title": "$:/language/ControlPanel/Plugins/Empty/Hint",
"text": "None"
},
"$:/language/ControlPanel/Plugins/Enable/Caption": {
"title": "$:/language/ControlPanel/Plugins/Enable/Caption",
"text": "enable"
},
"$:/language/ControlPanel/Plugins/Enable/Hint": {
"title": "$:/language/ControlPanel/Plugins/Enable/Hint",
"text": "Enable this plugin when reloading page"
},
"$:/language/ControlPanel/Plugins/Install/Caption": {
"title": "$:/language/ControlPanel/Plugins/Install/Caption",
"text": "install"
},
"$:/language/ControlPanel/Plugins/Installed/Hint": {
"title": "$:/language/ControlPanel/Plugins/Installed/Hint",
"text": "Currently installed plugins:"
},
"$:/language/ControlPanel/Plugins/Languages/Caption": {
"title": "$:/language/ControlPanel/Plugins/Languages/Caption",
"text": "Languages"
},
"$:/language/ControlPanel/Plugins/Languages/Hint": {
"title": "$:/language/ControlPanel/Plugins/Languages/Hint",
"text": "Language pack plugins"
},
"$:/language/ControlPanel/Plugins/NoInfoFound/Hint": {
"title": "$:/language/ControlPanel/Plugins/NoInfoFound/Hint",
"text": "No ''\"<$text text=<<currentTab>>/>\"'' found"
},
"$:/language/ControlPanel/Plugins/NoInformation/Hint": {
"title": "$:/language/ControlPanel/Plugins/NoInformation/Hint",
"text": "No information provided"
},
"$:/language/ControlPanel/Plugins/NotInstalled/Hint": {
"title": "$:/language/ControlPanel/Plugins/NotInstalled/Hint",
"text": "This plugin is not currently installed"
},
"$:/language/ControlPanel/Plugins/OpenPluginLibrary": {
"title": "$:/language/ControlPanel/Plugins/OpenPluginLibrary",
"text": "open plugin library"
},
"$:/language/ControlPanel/Plugins/ClosePluginLibrary": {
"title": "$:/language/ControlPanel/Plugins/ClosePluginLibrary",
"text": "close plugin library"
},
"$:/language/ControlPanel/Plugins/Plugins/Caption": {
"title": "$:/language/ControlPanel/Plugins/Plugins/Caption",
"text": "Plugins"
},
"$:/language/ControlPanel/Plugins/Plugins/Hint": {
"title": "$:/language/ControlPanel/Plugins/Plugins/Hint",
"text": "Plugins"
},
"$:/language/ControlPanel/Plugins/Reinstall/Caption": {
"title": "$:/language/ControlPanel/Plugins/Reinstall/Caption",
"text": "reinstall"
},
"$:/language/ControlPanel/Plugins/Themes/Caption": {
"title": "$:/language/ControlPanel/Plugins/Themes/Caption",
"text": "Themes"
},
"$:/language/ControlPanel/Plugins/Themes/Hint": {
"title": "$:/language/ControlPanel/Plugins/Themes/Hint",
"text": "Theme plugins"
},
"$:/language/ControlPanel/Saving/Caption": {
"title": "$:/language/ControlPanel/Saving/Caption",
"text": "Saving"
},
"$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description",
"text": "Permit automatic saving for the download saver"
},
"$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint",
"text": "Enable Autosave for Download Saver"
},
"$:/language/ControlPanel/Saving/DownloadSaver/Caption": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/Caption",
"text": "Download Saver"
},
"$:/language/ControlPanel/Saving/DownloadSaver/Hint": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/Hint",
"text": "These settings apply to the HTML5-compatible download saver"
},
"$:/language/ControlPanel/Saving/General/Caption": {
"title": "$:/language/ControlPanel/Saving/General/Caption",
"text": "General"
},
"$:/language/ControlPanel/Saving/General/Hint": {
"title": "$:/language/ControlPanel/Saving/General/Hint",
"text": "These settings apply to all the loaded savers"
},
"$:/language/ControlPanel/Saving/Hint": {
"title": "$:/language/ControlPanel/Saving/Hint",
"text": "Settings used for saving the entire TiddlyWiki as a single file via a saver module"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading",
"text": "Advanced Settings"
},
"$:/language/ControlPanel/Saving/TiddlySpot/BackupDir": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir",
"text": "Backup Directory"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Backups": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Backups",
"text": "Backups"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Caption": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Caption",
"text": "~TiddlySpot Saver"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Description": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Description",
"text": "These settings are only used when saving to http://tiddlyspot.com or a compatible remote server"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Filename": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Filename",
"text": "Upload Filename"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Heading": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Heading",
"text": "~TiddlySpot"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Hint": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Hint",
"text": "//The server URL defaults to `http://<wikiname>.tiddlyspot.com/store.cgi` and can be changed to use a custom server address, e.g. `http://example.com/store.php`.//"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Password": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Password",
"text": "Password"
},
"$:/language/ControlPanel/Saving/TiddlySpot/ServerURL": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL",
"text": "Server URL"
},
"$:/language/ControlPanel/Saving/TiddlySpot/UploadDir": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir",
"text": "Upload Directory"
},
"$:/language/ControlPanel/Saving/TiddlySpot/UserName": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/UserName",
"text": "Wiki Name"
},
"$:/language/ControlPanel/Settings/AutoSave/Caption": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Caption",
"text": "Autosave"
},
"$:/language/ControlPanel/Settings/AutoSave/Disabled/Description": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description",
"text": "Do not save changes automatically"
},
"$:/language/ControlPanel/Settings/AutoSave/Enabled/Description": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description",
"text": "Save changes automatically"
},
"$:/language/ControlPanel/Settings/AutoSave/Hint": {
"title": "$:/language/ControlPanel/Settings/AutoSave/Hint",
"text": "Attempt to automatically save changes during editing when using a supporting saver"
},
"$:/language/ControlPanel/Settings/CamelCase/Caption": {
"title": "$:/language/ControlPanel/Settings/CamelCase/Caption",
"text": "Camel Case Wiki Links"
},
"$:/language/ControlPanel/Settings/CamelCase/Hint": {
"title": "$:/language/ControlPanel/Settings/CamelCase/Hint",
"text": "You can globally disable automatic linking of ~CamelCase phrases. Requires reload to take effect"
},
"$:/language/ControlPanel/Settings/CamelCase/Description": {
"title": "$:/language/ControlPanel/Settings/CamelCase/Description",
"text": "Enable automatic ~CamelCase linking"
},
"$:/language/ControlPanel/Settings/Caption": {
"title": "$:/language/ControlPanel/Settings/Caption",
"text": "Settings"
},
"$:/language/ControlPanel/Settings/EditorToolbar/Caption": {
"title": "$:/language/ControlPanel/Settings/EditorToolbar/Caption",
"text": "Editor Toolbar"
},
"$:/language/ControlPanel/Settings/EditorToolbar/Hint": {
"title": "$:/language/ControlPanel/Settings/EditorToolbar/Hint",
"text": "Enable or disable the editor toolbar:"
},
"$:/language/ControlPanel/Settings/EditorToolbar/Description": {
"title": "$:/language/ControlPanel/Settings/EditorToolbar/Description",
"text": "Show editor toolbar"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Caption": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Caption",
"text": "Tiddler Info Panel Mode"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Hint": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Hint",
"text": "Control when the tiddler info panel closes:"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description",
"text": "Tiddler info panel closes automatically"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description",
"text": "Tiddler info panel stays open until explicitly closed"
},
"$:/language/ControlPanel/Settings/Hint": {
"title": "$:/language/ControlPanel/Settings/Hint",
"text": "These settings let you customise the behaviour of TiddlyWiki."
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Caption": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption",
"text": "Navigation Address Bar"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Hint": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint",
"text": "Behaviour of the browser address bar when navigating to a tiddler:"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description",
"text": "Do not update the address bar"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description",
"text": "Include the target tiddler"
},
"$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description",
"text": "Include the target tiddler and the current story sequence"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Caption": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Caption",
"text": "Navigation History"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Hint": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Hint",
"text": "Update browser history when navigating to a tiddler:"
},
"$:/language/ControlPanel/Settings/NavigationHistory/No/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/No/Description",
"text": "Do not update history"
},
"$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description",
"text": "Update history"
},
"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption": {
"title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption",
"text": "Performance Instrumentation"
},
"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint": {
"title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint",
"text": "Displays performance statistics in the browser developer console. Requires reload to take effect"
},
"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description": {
"title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description",
"text": "Enable performance instrumentation"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption",
"text": "Toolbar Button Style"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint",
"text": "Choose the style for toolbar buttons:"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless",
"text": "Borderless"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed",
"text": "Boxed"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded",
"text": "Rounded"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Caption": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Caption",
"text": "Toolbar Buttons"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Hint": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Hint",
"text": "Default toolbar button appearance:"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description",
"text": "Include icon"
},
"$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description",
"text": "Include text"
},
"$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption": {
"title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption",
"text": "Default Sidebar Tab"
},
"$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint": {
"title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint",
"text": "Specify which sidebar tab is displayed by default"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/Caption": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption",
"text": "Tiddler Opening Behaviour"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint",
"text": "Navigation from //within// the story river"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint",
"text": "Navigation from //outside// the story river"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove",
"text": "Open above the current tiddler"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow",
"text": "Open below the current tiddler"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop",
"text": "Open at the top of the story river"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom",
"text": "Open at the bottom of the story river"
},
"$:/language/ControlPanel/Settings/TitleLinks/Caption": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Caption",
"text": "Tiddler Titles"
},
"$:/language/ControlPanel/Settings/TitleLinks/Hint": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Hint",
"text": "Optionally display tiddler titles as links"
},
"$:/language/ControlPanel/Settings/TitleLinks/No/Description": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/No/Description",
"text": "Do not display tiddler titles as links"
},
"$:/language/ControlPanel/Settings/TitleLinks/Yes/Description": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description",
"text": "Display tiddler titles as links"
},
"$:/language/ControlPanel/Settings/MissingLinks/Caption": {
"title": "$:/language/ControlPanel/Settings/MissingLinks/Caption",
"text": "Wiki Links"
},
"$:/language/ControlPanel/Settings/MissingLinks/Hint": {
"title": "$:/language/ControlPanel/Settings/MissingLinks/Hint",
"text": "Choose whether to link to tiddlers that do not exist yet"
},
"$:/language/ControlPanel/Settings/MissingLinks/Description": {
"title": "$:/language/ControlPanel/Settings/MissingLinks/Description",
"text": "Enable links to missing tiddlers"
},
"$:/language/ControlPanel/StoryView/Caption": {
"title": "$:/language/ControlPanel/StoryView/Caption",
"text": "Story View"
},
"$:/language/ControlPanel/StoryView/Prompt": {
"title": "$:/language/ControlPanel/StoryView/Prompt",
"text": "Current view:"
},
"$:/language/ControlPanel/Theme/Caption": {
"title": "$:/language/ControlPanel/Theme/Caption",
"text": "Theme"
},
"$:/language/ControlPanel/Theme/Prompt": {
"title": "$:/language/ControlPanel/Theme/Prompt",
"text": "Current theme:"
},
"$:/language/ControlPanel/TiddlerFields/Caption": {
"title": "$:/language/ControlPanel/TiddlerFields/Caption",
"text": "Tiddler Fields"
},
"$:/language/ControlPanel/TiddlerFields/Hint": {
"title": "$:/language/ControlPanel/TiddlerFields/Hint",
"text": "This is the full set of TiddlerFields in use in this wiki (including system tiddlers but excluding shadow tiddlers)."
},
"$:/language/ControlPanel/Toolbars/Caption": {
"title": "$:/language/ControlPanel/Toolbars/Caption",
"text": "Toolbars"
},
"$:/language/ControlPanel/Toolbars/EditToolbar/Caption": {
"title": "$:/language/ControlPanel/Toolbars/EditToolbar/Caption",
"text": "Edit Toolbar"
},
"$:/language/ControlPanel/Toolbars/EditToolbar/Hint": {
"title": "$:/language/ControlPanel/Toolbars/EditToolbar/Hint",
"text": "Choose which buttons are displayed for tiddlers in edit mode. Drag and drop to change the ordering"
},
"$:/language/ControlPanel/Toolbars/Hint": {
"title": "$:/language/ControlPanel/Toolbars/Hint",
"text": "Select which toolbar buttons are displayed"
},
"$:/language/ControlPanel/Toolbars/PageControls/Caption": {
"title": "$:/language/ControlPanel/Toolbars/PageControls/Caption",
"text": "Page Toolbar"
},
"$:/language/ControlPanel/Toolbars/PageControls/Hint": {
"title": "$:/language/ControlPanel/Toolbars/PageControls/Hint",
"text": "Choose which buttons are displayed on the main page toolbar. Drag and drop to change the ordering"
},
"$:/language/ControlPanel/Toolbars/EditorToolbar/Caption": {
"title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption",
"text": "Editor Toolbar"
},
"$:/language/ControlPanel/Toolbars/EditorToolbar/Hint": {
"title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint",
"text": "Choose which buttons are displayed in the editor toolbar. Note that some buttons will only appear when editing tiddlers of a certain type. Drag and drop to change the ordering"
},
"$:/language/ControlPanel/Toolbars/ViewToolbar/Caption": {
"title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption",
"text": "View Toolbar"
},
"$:/language/ControlPanel/Toolbars/ViewToolbar/Hint": {
"title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint",
"text": "Choose which buttons are displayed for tiddlers in view mode. Drag and drop to change the ordering"
},
"$:/language/ControlPanel/Tools/Download/Full/Caption": {
"title": "$:/language/ControlPanel/Tools/Download/Full/Caption",
"text": "Download full wiki"
},
"$:/language/Date/DaySuffix/1": {
"title": "$:/language/Date/DaySuffix/1",
"text": "st"
},
"$:/language/Date/DaySuffix/2": {
"title": "$:/language/Date/DaySuffix/2",
"text": "nd"
},
"$:/language/Date/DaySuffix/3": {
"title": "$:/language/Date/DaySuffix/3",
"text": "rd"
},
"$:/language/Date/DaySuffix/4": {
"title": "$:/language/Date/DaySuffix/4",
"text": "th"
},
"$:/language/Date/DaySuffix/5": {
"title": "$:/language/Date/DaySuffix/5",
"text": "th"
},
"$:/language/Date/DaySuffix/6": {
"title": "$:/language/Date/DaySuffix/6",
"text": "th"
},
"$:/language/Date/DaySuffix/7": {
"title": "$:/language/Date/DaySuffix/7",
"text": "th"
},
"$:/language/Date/DaySuffix/8": {
"title": "$:/language/Date/DaySuffix/8",
"text": "th"
},
"$:/language/Date/DaySuffix/9": {
"title": "$:/language/Date/DaySuffix/9",
"text": "th"
},
"$:/language/Date/DaySuffix/10": {
"title": "$:/language/Date/DaySuffix/10",
"text": "th"
},
"$:/language/Date/DaySuffix/11": {
"title": "$:/language/Date/DaySuffix/11",
"text": "th"
},
"$:/language/Date/DaySuffix/12": {
"title": "$:/language/Date/DaySuffix/12",
"text": "th"
},
"$:/language/Date/DaySuffix/13": {
"title": "$:/language/Date/DaySuffix/13",
"text": "th"
},
"$:/language/Date/DaySuffix/14": {
"title": "$:/language/Date/DaySuffix/14",
"text": "th"
},
"$:/language/Date/DaySuffix/15": {
"title": "$:/language/Date/DaySuffix/15",
"text": "th"
},
"$:/language/Date/DaySuffix/16": {
"title": "$:/language/Date/DaySuffix/16",
"text": "th"
},
"$:/language/Date/DaySuffix/17": {
"title": "$:/language/Date/DaySuffix/17",
"text": "th"
},
"$:/language/Date/DaySuffix/18": {
"title": "$:/language/Date/DaySuffix/18",
"text": "th"
},
"$:/language/Date/DaySuffix/19": {
"title": "$:/language/Date/DaySuffix/19",
"text": "th"
},
"$:/language/Date/DaySuffix/20": {
"title": "$:/language/Date/DaySuffix/20",
"text": "th"
},
"$:/language/Date/DaySuffix/21": {
"title": "$:/language/Date/DaySuffix/21",
"text": "st"
},
"$:/language/Date/DaySuffix/22": {
"title": "$:/language/Date/DaySuffix/22",
"text": "nd"
},
"$:/language/Date/DaySuffix/23": {
"title": "$:/language/Date/DaySuffix/23",
"text": "rd"
},
"$:/language/Date/DaySuffix/24": {
"title": "$:/language/Date/DaySuffix/24",
"text": "th"
},
"$:/language/Date/DaySuffix/25": {
"title": "$:/language/Date/DaySuffix/25",
"text": "th"
},
"$:/language/Date/DaySuffix/26": {
"title": "$:/language/Date/DaySuffix/26",
"text": "th"
},
"$:/language/Date/DaySuffix/27": {
"title": "$:/language/Date/DaySuffix/27",
"text": "th"
},
"$:/language/Date/DaySuffix/28": {
"title": "$:/language/Date/DaySuffix/28",
"text": "th"
},
"$:/language/Date/DaySuffix/29": {
"title": "$:/language/Date/DaySuffix/29",
"text": "th"
},
"$:/language/Date/DaySuffix/30": {
"title": "$:/language/Date/DaySuffix/30",
"text": "th"
},
"$:/language/Date/DaySuffix/31": {
"title": "$:/language/Date/DaySuffix/31",
"text": "st"
},
"$:/language/Date/Long/Day/0": {
"title": "$:/language/Date/Long/Day/0",
"text": "Sunday"
},
"$:/language/Date/Long/Day/1": {
"title": "$:/language/Date/Long/Day/1",
"text": "Monday"
},
"$:/language/Date/Long/Day/2": {
"title": "$:/language/Date/Long/Day/2",
"text": "Tuesday"
},
"$:/language/Date/Long/Day/3": {
"title": "$:/language/Date/Long/Day/3",
"text": "Wednesday"
},
"$:/language/Date/Long/Day/4": {
"title": "$:/language/Date/Long/Day/4",
"text": "Thursday"
},
"$:/language/Date/Long/Day/5": {
"title": "$:/language/Date/Long/Day/5",
"text": "Friday"
},
"$:/language/Date/Long/Day/6": {
"title": "$:/language/Date/Long/Day/6",
"text": "Saturday"
},
"$:/language/Date/Long/Month/1": {
"title": "$:/language/Date/Long/Month/1",
"text": "January"
},
"$:/language/Date/Long/Month/2": {
"title": "$:/language/Date/Long/Month/2",
"text": "February"
},
"$:/language/Date/Long/Month/3": {
"title": "$:/language/Date/Long/Month/3",
"text": "March"
},
"$:/language/Date/Long/Month/4": {
"title": "$:/language/Date/Long/Month/4",
"text": "April"
},
"$:/language/Date/Long/Month/5": {
"title": "$:/language/Date/Long/Month/5",
"text": "May"
},
"$:/language/Date/Long/Month/6": {
"title": "$:/language/Date/Long/Month/6",
"text": "June"
},
"$:/language/Date/Long/Month/7": {
"title": "$:/language/Date/Long/Month/7",
"text": "July"
},
"$:/language/Date/Long/Month/8": {
"title": "$:/language/Date/Long/Month/8",
"text": "August"
},
"$:/language/Date/Long/Month/9": {
"title": "$:/language/Date/Long/Month/9",
"text": "September"
},
"$:/language/Date/Long/Month/10": {
"title": "$:/language/Date/Long/Month/10",
"text": "October"
},
"$:/language/Date/Long/Month/11": {
"title": "$:/language/Date/Long/Month/11",
"text": "November"
},
"$:/language/Date/Long/Month/12": {
"title": "$:/language/Date/Long/Month/12",
"text": "December"
},
"$:/language/Date/Period/am": {
"title": "$:/language/Date/Period/am",
"text": "am"
},
"$:/language/Date/Period/pm": {
"title": "$:/language/Date/Period/pm",
"text": "pm"
},
"$:/language/Date/Short/Day/0": {
"title": "$:/language/Date/Short/Day/0",
"text": "Sun"
},
"$:/language/Date/Short/Day/1": {
"title": "$:/language/Date/Short/Day/1",
"text": "Mon"
},
"$:/language/Date/Short/Day/2": {
"title": "$:/language/Date/Short/Day/2",
"text": "Tue"
},
"$:/language/Date/Short/Day/3": {
"title": "$:/language/Date/Short/Day/3",
"text": "Wed"
},
"$:/language/Date/Short/Day/4": {
"title": "$:/language/Date/Short/Day/4",
"text": "Thu"
},
"$:/language/Date/Short/Day/5": {
"title": "$:/language/Date/Short/Day/5",
"text": "Fri"
},
"$:/language/Date/Short/Day/6": {
"title": "$:/language/Date/Short/Day/6",
"text": "Sat"
},
"$:/language/Date/Short/Month/1": {
"title": "$:/language/Date/Short/Month/1",
"text": "Jan"
},
"$:/language/Date/Short/Month/2": {
"title": "$:/language/Date/Short/Month/2",
"text": "Feb"
},
"$:/language/Date/Short/Month/3": {
"title": "$:/language/Date/Short/Month/3",
"text": "Mar"
},
"$:/language/Date/Short/Month/4": {
"title": "$:/language/Date/Short/Month/4",
"text": "Apr"
},
"$:/language/Date/Short/Month/5": {
"title": "$:/language/Date/Short/Month/5",
"text": "May"
},
"$:/language/Date/Short/Month/6": {
"title": "$:/language/Date/Short/Month/6",
"text": "Jun"
},
"$:/language/Date/Short/Month/7": {
"title": "$:/language/Date/Short/Month/7",
"text": "Jul"
},
"$:/language/Date/Short/Month/8": {
"title": "$:/language/Date/Short/Month/8",
"text": "Aug"
},
"$:/language/Date/Short/Month/9": {
"title": "$:/language/Date/Short/Month/9",
"text": "Sep"
},
"$:/language/Date/Short/Month/10": {
"title": "$:/language/Date/Short/Month/10",
"text": "Oct"
},
"$:/language/Date/Short/Month/11": {
"title": "$:/language/Date/Short/Month/11",
"text": "Nov"
},
"$:/language/Date/Short/Month/12": {
"title": "$:/language/Date/Short/Month/12",
"text": "Dec"
},
"$:/language/RelativeDate/Future/Days": {
"title": "$:/language/RelativeDate/Future/Days",
"text": "<<period>> days from now"
},
"$:/language/RelativeDate/Future/Hours": {
"title": "$:/language/RelativeDate/Future/Hours",
"text": "<<period>> hours from now"
},
"$:/language/RelativeDate/Future/Minutes": {
"title": "$:/language/RelativeDate/Future/Minutes",
"text": "<<period>> minutes from now"
},
"$:/language/RelativeDate/Future/Months": {
"title": "$:/language/RelativeDate/Future/Months",
"text": "<<period>> months from now"
},
"$:/language/RelativeDate/Future/Second": {
"title": "$:/language/RelativeDate/Future/Second",
"text": "1 second from now"
},
"$:/language/RelativeDate/Future/Seconds": {
"title": "$:/language/RelativeDate/Future/Seconds",
"text": "<<period>> seconds from now"
},
"$:/language/RelativeDate/Future/Years": {
"title": "$:/language/RelativeDate/Future/Years",
"text": "<<period>> years from now"
},
"$:/language/RelativeDate/Past/Days": {
"title": "$:/language/RelativeDate/Past/Days",
"text": "<<period>> days ago"
},
"$:/language/RelativeDate/Past/Hours": {
"title": "$:/language/RelativeDate/Past/Hours",
"text": "<<period>> hours ago"
},
"$:/language/RelativeDate/Past/Minutes": {
"title": "$:/language/RelativeDate/Past/Minutes",
"text": "<<period>> minutes ago"
},
"$:/language/RelativeDate/Past/Months": {
"title": "$:/language/RelativeDate/Past/Months",
"text": "<<period>> months ago"
},
"$:/language/RelativeDate/Past/Second": {
"title": "$:/language/RelativeDate/Past/Second",
"text": "1 second ago"
},
"$:/language/RelativeDate/Past/Seconds": {
"title": "$:/language/RelativeDate/Past/Seconds",
"text": "<<period>> seconds ago"
},
"$:/language/RelativeDate/Past/Years": {
"title": "$:/language/RelativeDate/Past/Years",
"text": "<<period>> years ago"
},
"$:/language/Docs/ModuleTypes/allfilteroperator": {
"title": "$:/language/Docs/ModuleTypes/allfilteroperator",
"text": "A sub-operator for the ''all'' filter operator."
},
"$:/language/Docs/ModuleTypes/animation": {
"title": "$:/language/Docs/ModuleTypes/animation",
"text": "Animations that may be used with the RevealWidget."
},
"$:/language/Docs/ModuleTypes/bitmapeditoroperation": {
"title": "$:/language/Docs/ModuleTypes/bitmapeditoroperation",
"text": "A bitmap editor toolbar operation."
},
"$:/language/Docs/ModuleTypes/command": {
"title": "$:/language/Docs/ModuleTypes/command",
"text": "Commands that can be executed under Node.js."
},
"$:/language/Docs/ModuleTypes/config": {
"title": "$:/language/Docs/ModuleTypes/config",
"text": "Data to be inserted into `$tw.config`."
},
"$:/language/Docs/ModuleTypes/filteroperator": {
"title": "$:/language/Docs/ModuleTypes/filteroperator",
"text": "Individual filter operator methods."
},
"$:/language/Docs/ModuleTypes/global": {
"title": "$:/language/Docs/ModuleTypes/global",
"text": "Global data to be inserted into `$tw`."
},
"$:/language/Docs/ModuleTypes/info": {
"title": "$:/language/Docs/ModuleTypes/info",
"text": "Publishes system information via the [[$:/temp/info-plugin]] pseudo-plugin."
},
"$:/language/Docs/ModuleTypes/isfilteroperator": {
"title": "$:/language/Docs/ModuleTypes/isfilteroperator",
"text": "Operands for the ''is'' filter operator."
},
"$:/language/Docs/ModuleTypes/library": {
"title": "$:/language/Docs/ModuleTypes/library",
"text": "Generic module type for general purpose JavaScript modules."
},
"$:/language/Docs/ModuleTypes/macro": {
"title": "$:/language/Docs/ModuleTypes/macro",
"text": "JavaScript macro definitions."
},
"$:/language/Docs/ModuleTypes/parser": {
"title": "$:/language/Docs/ModuleTypes/parser",
"text": "Parsers for different content types."
},
"$:/language/Docs/ModuleTypes/saver": {
"title": "$:/language/Docs/ModuleTypes/saver",
"text": "Savers handle different methods for saving files from the browser."
},
"$:/language/Docs/ModuleTypes/startup": {
"title": "$:/language/Docs/ModuleTypes/startup",
"text": "Startup functions."
},
"$:/language/Docs/ModuleTypes/storyview": {
"title": "$:/language/Docs/ModuleTypes/storyview",
"text": "Story views customise the animation and behaviour of list widgets."
},
"$:/language/Docs/ModuleTypes/texteditoroperation": {
"title": "$:/language/Docs/ModuleTypes/texteditoroperation",
"text": "A text editor toolbar operation."
},
"$:/language/Docs/ModuleTypes/tiddlerdeserializer": {
"title": "$:/language/Docs/ModuleTypes/tiddlerdeserializer",
"text": "Converts different content types into tiddlers."
},
"$:/language/Docs/ModuleTypes/tiddlerfield": {
"title": "$:/language/Docs/ModuleTypes/tiddlerfield",
"text": "Defines the behaviour of an individual tiddler field."
},
"$:/language/Docs/ModuleTypes/tiddlermethod": {
"title": "$:/language/Docs/ModuleTypes/tiddlermethod",
"text": "Adds methods to the `$tw.Tiddler` prototype."
},
"$:/language/Docs/ModuleTypes/upgrader": {
"title": "$:/language/Docs/ModuleTypes/upgrader",
"text": "Applies upgrade processing to tiddlers during an upgrade/import."
},
"$:/language/Docs/ModuleTypes/utils": {
"title": "$:/language/Docs/ModuleTypes/utils",
"text": "Adds methods to `$tw.utils`."
},
"$:/language/Docs/ModuleTypes/utils-node": {
"title": "$:/language/Docs/ModuleTypes/utils-node",
"text": "Adds Node.js-specific methods to `$tw.utils`."
},
"$:/language/Docs/ModuleTypes/widget": {
"title": "$:/language/Docs/ModuleTypes/widget",
"text": "Widgets encapsulate DOM rendering and refreshing."
},
"$:/language/Docs/ModuleTypes/wikimethod": {
"title": "$:/language/Docs/ModuleTypes/wikimethod",
"text": "Adds methods to `$tw.Wiki`."
},
"$:/language/Docs/ModuleTypes/wikirule": {
"title": "$:/language/Docs/ModuleTypes/wikirule",
"text": "Individual parser rules for the main WikiText parser."
},
"$:/language/Docs/PaletteColours/alert-background": {
"title": "$:/language/Docs/PaletteColours/alert-background",
"text": "Alert background"
},
"$:/language/Docs/PaletteColours/alert-border": {
"title": "$:/language/Docs/PaletteColours/alert-border",
"text": "Alert border"
},
"$:/language/Docs/PaletteColours/alert-highlight": {
"title": "$:/language/Docs/PaletteColours/alert-highlight",
"text": "Alert highlight"
},
"$:/language/Docs/PaletteColours/alert-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/alert-muted-foreground",
"text": "Alert muted foreground"
},
"$:/language/Docs/PaletteColours/background": {
"title": "$:/language/Docs/PaletteColours/background",
"text": "General background"
},
"$:/language/Docs/PaletteColours/blockquote-bar": {
"title": "$:/language/Docs/PaletteColours/blockquote-bar",
"text": "Blockquote bar"
},
"$:/language/Docs/PaletteColours/button-background": {
"title": "$:/language/Docs/PaletteColours/button-background",
"text": "Default button background"
},
"$:/language/Docs/PaletteColours/button-border": {
"title": "$:/language/Docs/PaletteColours/button-border",
"text": "Default button border"
},
"$:/language/Docs/PaletteColours/button-foreground": {
"title": "$:/language/Docs/PaletteColours/button-foreground",
"text": "Default button foreground"
},
"$:/language/Docs/PaletteColours/dirty-indicator": {
"title": "$:/language/Docs/PaletteColours/dirty-indicator",
"text": "Unsaved changes indicator"
},
"$:/language/Docs/PaletteColours/code-background": {
"title": "$:/language/Docs/PaletteColours/code-background",
"text": "Code background"
},
"$:/language/Docs/PaletteColours/code-border": {
"title": "$:/language/Docs/PaletteColours/code-border",
"text": "Code border"
},
"$:/language/Docs/PaletteColours/code-foreground": {
"title": "$:/language/Docs/PaletteColours/code-foreground",
"text": "Code foreground"
},
"$:/language/Docs/PaletteColours/download-background": {
"title": "$:/language/Docs/PaletteColours/download-background",
"text": "Download button background"
},
"$:/language/Docs/PaletteColours/download-foreground": {
"title": "$:/language/Docs/PaletteColours/download-foreground",
"text": "Download button foreground"
},
"$:/language/Docs/PaletteColours/dragger-background": {
"title": "$:/language/Docs/PaletteColours/dragger-background",
"text": "Dragger background"
},
"$:/language/Docs/PaletteColours/dragger-foreground": {
"title": "$:/language/Docs/PaletteColours/dragger-foreground",
"text": "Dragger foreground"
},
"$:/language/Docs/PaletteColours/dropdown-background": {
"title": "$:/language/Docs/PaletteColours/dropdown-background",
"text": "Dropdown background"
},
"$:/language/Docs/PaletteColours/dropdown-border": {
"title": "$:/language/Docs/PaletteColours/dropdown-border",
"text": "Dropdown border"
},
"$:/language/Docs/PaletteColours/dropdown-tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/dropdown-tab-background-selected",
"text": "Dropdown tab background for selected tabs"
},
"$:/language/Docs/PaletteColours/dropdown-tab-background": {
"title": "$:/language/Docs/PaletteColours/dropdown-tab-background",
"text": "Dropdown tab background"
},
"$:/language/Docs/PaletteColours/dropzone-background": {
"title": "$:/language/Docs/PaletteColours/dropzone-background",
"text": "Dropzone background"
},
"$:/language/Docs/PaletteColours/external-link-background-hover": {
"title": "$:/language/Docs/PaletteColours/external-link-background-hover",
"text": "External link background hover"
},
"$:/language/Docs/PaletteColours/external-link-background-visited": {
"title": "$:/language/Docs/PaletteColours/external-link-background-visited",
"text": "External link background visited"
},
"$:/language/Docs/PaletteColours/external-link-background": {
"title": "$:/language/Docs/PaletteColours/external-link-background",
"text": "External link background"
},
"$:/language/Docs/PaletteColours/external-link-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground-hover",
"text": "External link foreground hover"
},
"$:/language/Docs/PaletteColours/external-link-foreground-visited": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground-visited",
"text": "External link foreground visited"
},
"$:/language/Docs/PaletteColours/external-link-foreground": {
"title": "$:/language/Docs/PaletteColours/external-link-foreground",
"text": "External link foreground"
},
"$:/language/Docs/PaletteColours/foreground": {
"title": "$:/language/Docs/PaletteColours/foreground",
"text": "General foreground"
},
"$:/language/Docs/PaletteColours/message-background": {
"title": "$:/language/Docs/PaletteColours/message-background",
"text": "Message box background"
},
"$:/language/Docs/PaletteColours/message-border": {
"title": "$:/language/Docs/PaletteColours/message-border",
"text": "Message box border"
},
"$:/language/Docs/PaletteColours/message-foreground": {
"title": "$:/language/Docs/PaletteColours/message-foreground",
"text": "Message box foreground"
},
"$:/language/Docs/PaletteColours/modal-backdrop": {
"title": "$:/language/Docs/PaletteColours/modal-backdrop",
"text": "Modal backdrop"
},
"$:/language/Docs/PaletteColours/modal-background": {
"title": "$:/language/Docs/PaletteColours/modal-background",
"text": "Modal background"
},
"$:/language/Docs/PaletteColours/modal-border": {
"title": "$:/language/Docs/PaletteColours/modal-border",
"text": "Modal border"
},
"$:/language/Docs/PaletteColours/modal-footer-background": {
"title": "$:/language/Docs/PaletteColours/modal-footer-background",
"text": "Modal footer background"
},
"$:/language/Docs/PaletteColours/modal-footer-border": {
"title": "$:/language/Docs/PaletteColours/modal-footer-border",
"text": "Modal footer border"
},
"$:/language/Docs/PaletteColours/modal-header-border": {
"title": "$:/language/Docs/PaletteColours/modal-header-border",
"text": "Modal header border"
},
"$:/language/Docs/PaletteColours/muted-foreground": {
"title": "$:/language/Docs/PaletteColours/muted-foreground",
"text": "General muted foreground"
},
"$:/language/Docs/PaletteColours/notification-background": {
"title": "$:/language/Docs/PaletteColours/notification-background",
"text": "Notification background"
},
"$:/language/Docs/PaletteColours/notification-border": {
"title": "$:/language/Docs/PaletteColours/notification-border",
"text": "Notification border"
},
"$:/language/Docs/PaletteColours/page-background": {
"title": "$:/language/Docs/PaletteColours/page-background",
"text": "Page background"
},
"$:/language/Docs/PaletteColours/pre-background": {
"title": "$:/language/Docs/PaletteColours/pre-background",
"text": "Preformatted code background"
},
"$:/language/Docs/PaletteColours/pre-border": {
"title": "$:/language/Docs/PaletteColours/pre-border",
"text": "Preformatted code border"
},
"$:/language/Docs/PaletteColours/primary": {
"title": "$:/language/Docs/PaletteColours/primary",
"text": "General primary"
},
"$:/language/Docs/PaletteColours/sidebar-button-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-button-foreground",
"text": "Sidebar button foreground"
},
"$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover",
"text": "Sidebar controls foreground hover"
},
"$:/language/Docs/PaletteColours/sidebar-controls-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground",
"text": "Sidebar controls foreground"
},
"$:/language/Docs/PaletteColours/sidebar-foreground-shadow": {
"title": "$:/language/Docs/PaletteColours/sidebar-foreground-shadow",
"text": "Sidebar foreground shadow"
},
"$:/language/Docs/PaletteColours/sidebar-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-foreground",
"text": "Sidebar foreground"
},
"$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover",
"text": "Sidebar muted foreground hover"
},
"$:/language/Docs/PaletteColours/sidebar-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground",
"text": "Sidebar muted foreground"
},
"$:/language/Docs/PaletteColours/sidebar-tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-background-selected",
"text": "Sidebar tab background for selected tabs"
},
"$:/language/Docs/PaletteColours/sidebar-tab-background": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-background",
"text": "Sidebar tab background"
},
"$:/language/Docs/PaletteColours/sidebar-tab-border-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-border-selected",
"text": "Sidebar tab border for selected tabs"
},
"$:/language/Docs/PaletteColours/sidebar-tab-border": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-border",
"text": "Sidebar tab border"
},
"$:/language/Docs/PaletteColours/sidebar-tab-divider": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-divider",
"text": "Sidebar tab divider"
},
"$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected",
"text": "Sidebar tab foreground for selected tabs"
},
"$:/language/Docs/PaletteColours/sidebar-tab-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground",
"text": "Sidebar tab foreground"
},
"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover",
"text": "Sidebar tiddler link foreground hover"
},
"$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground": {
"title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground",
"text": "Sidebar tiddler link foreground"
},
"$:/language/Docs/PaletteColours/site-title-foreground": {
"title": "$:/language/Docs/PaletteColours/site-title-foreground",
"text": "Site title foreground"
},
"$:/language/Docs/PaletteColours/static-alert-foreground": {
"title": "$:/language/Docs/PaletteColours/static-alert-foreground",
"text": "Static alert foreground"
},
"$:/language/Docs/PaletteColours/tab-background-selected": {
"title": "$:/language/Docs/PaletteColours/tab-background-selected",
"text": "Tab background for selected tabs"
},
"$:/language/Docs/PaletteColours/tab-background": {
"title": "$:/language/Docs/PaletteColours/tab-background",
"text": "Tab background"
},
"$:/language/Docs/PaletteColours/tab-border-selected": {
"title": "$:/language/Docs/PaletteColours/tab-border-selected",
"text": "Tab border for selected tabs"
},
"$:/language/Docs/PaletteColours/tab-border": {
"title": "$:/language/Docs/PaletteColours/tab-border",
"text": "Tab border"
},
"$:/language/Docs/PaletteColours/tab-divider": {
"title": "$:/language/Docs/PaletteColours/tab-divider",
"text": "Tab divider"
},
"$:/language/Docs/PaletteColours/tab-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/tab-foreground-selected",
"text": "Tab foreground for selected tabs"
},
"$:/language/Docs/PaletteColours/tab-foreground": {
"title": "$:/language/Docs/PaletteColours/tab-foreground",
"text": "Tab foreground"
},
"$:/language/Docs/PaletteColours/table-border": {
"title": "$:/language/Docs/PaletteColours/table-border",
"text": "Table border"
},
"$:/language/Docs/PaletteColours/table-footer-background": {
"title": "$:/language/Docs/PaletteColours/table-footer-background",
"text": "Table footer background"
},
"$:/language/Docs/PaletteColours/table-header-background": {
"title": "$:/language/Docs/PaletteColours/table-header-background",
"text": "Table header background"
},
"$:/language/Docs/PaletteColours/tag-background": {
"title": "$:/language/Docs/PaletteColours/tag-background",
"text": "Tag background"
},
"$:/language/Docs/PaletteColours/tag-foreground": {
"title": "$:/language/Docs/PaletteColours/tag-foreground",
"text": "Tag foreground"
},
"$:/language/Docs/PaletteColours/tiddler-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-background",
"text": "Tiddler background"
},
"$:/language/Docs/PaletteColours/tiddler-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-border",
"text": "Tiddler border"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover",
"text": "Tiddler controls foreground hover"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected",
"text": "Tiddler controls foreground for selected controls"
},
"$:/language/Docs/PaletteColours/tiddler-controls-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground",
"text": "Tiddler controls foreground"
},
"$:/language/Docs/PaletteColours/tiddler-editor-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-background",
"text": "Tiddler editor background"
},
"$:/language/Docs/PaletteColours/tiddler-editor-border-image": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-border-image",
"text": "Tiddler editor border image"
},
"$:/language/Docs/PaletteColours/tiddler-editor-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-border",
"text": "Tiddler editor border"
},
"$:/language/Docs/PaletteColours/tiddler-editor-fields-even": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-even",
"text": "Tiddler editor background for even fields"
},
"$:/language/Docs/PaletteColours/tiddler-editor-fields-odd": {
"title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd",
"text": "Tiddler editor background for odd fields"
},
"$:/language/Docs/PaletteColours/tiddler-info-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-background",
"text": "Tiddler info panel background"
},
"$:/language/Docs/PaletteColours/tiddler-info-border": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-border",
"text": "Tiddler info panel border"
},
"$:/language/Docs/PaletteColours/tiddler-info-tab-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-info-tab-background",
"text": "Tiddler info panel tab background"
},
"$:/language/Docs/PaletteColours/tiddler-link-background": {
"title": "$:/language/Docs/PaletteColours/tiddler-link-background",
"text": "Tiddler link background"
},
"$:/language/Docs/PaletteColours/tiddler-link-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-link-foreground",
"text": "Tiddler link foreground"
},
"$:/language/Docs/PaletteColours/tiddler-subtitle-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground",
"text": "Tiddler subtitle foreground"
},
"$:/language/Docs/PaletteColours/tiddler-title-foreground": {
"title": "$:/language/Docs/PaletteColours/tiddler-title-foreground",
"text": "Tiddler title foreground"
},
"$:/language/Docs/PaletteColours/toolbar-new-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-new-button",
"text": "Toolbar 'new tiddler' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-options-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-options-button",
"text": "Toolbar 'options' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-save-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-save-button",
"text": "Toolbar 'save' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-info-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-info-button",
"text": "Toolbar 'info' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-edit-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-edit-button",
"text": "Toolbar 'edit' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-close-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-close-button",
"text": "Toolbar 'close' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-delete-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-delete-button",
"text": "Toolbar 'delete' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-cancel-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-cancel-button",
"text": "Toolbar 'cancel' button foreground"
},
"$:/language/Docs/PaletteColours/toolbar-done-button": {
"title": "$:/language/Docs/PaletteColours/toolbar-done-button",
"text": "Toolbar 'done' button foreground"
},
"$:/language/Docs/PaletteColours/untagged-background": {
"title": "$:/language/Docs/PaletteColours/untagged-background",
"text": "Untagged pill background"
},
"$:/language/Docs/PaletteColours/very-muted-foreground": {
"title": "$:/language/Docs/PaletteColours/very-muted-foreground",
"text": "Very muted foreground"
},
"$:/language/EditTemplate/Body/External/Hint": {
"title": "$:/language/EditTemplate/Body/External/Hint",
"text": "This is an external tiddler stored outside of the main TiddlyWiki file. You can edit the tags and fields but cannot directly edit the content itself"
},
"$:/language/EditTemplate/Body/Placeholder": {
"title": "$:/language/EditTemplate/Body/Placeholder",
"text": "Type the text for this tiddler"
},
"$:/language/EditTemplate/Body/Preview/Type/Output": {
"title": "$:/language/EditTemplate/Body/Preview/Type/Output",
"text": "output"
},
"$:/language/EditTemplate/Field/Remove/Caption": {
"title": "$:/language/EditTemplate/Field/Remove/Caption",
"text": "remove field"
},
"$:/language/EditTemplate/Field/Remove/Hint": {
"title": "$:/language/EditTemplate/Field/Remove/Hint",
"text": "Remove field"
},
"$:/language/EditTemplate/Fields/Add/Button": {
"title": "$:/language/EditTemplate/Fields/Add/Button",
"text": "add"
},
"$:/language/EditTemplate/Fields/Add/Name/Placeholder": {
"title": "$:/language/EditTemplate/Fields/Add/Name/Placeholder",
"text": "field name"
},
"$:/language/EditTemplate/Fields/Add/Prompt": {
"title": "$:/language/EditTemplate/Fields/Add/Prompt",
"text": "Add a new field:"
},
"$:/language/EditTemplate/Fields/Add/Value/Placeholder": {
"title": "$:/language/EditTemplate/Fields/Add/Value/Placeholder",
"text": "field value"
},
"$:/language/EditTemplate/Fields/Add/Dropdown/System": {
"title": "$:/language/EditTemplate/Fields/Add/Dropdown/System",
"text": "System fields"
},
"$:/language/EditTemplate/Fields/Add/Dropdown/User": {
"title": "$:/language/EditTemplate/Fields/Add/Dropdown/User",
"text": "User fields"
},
"$:/language/EditTemplate/Shadow/Warning": {
"title": "$:/language/EditTemplate/Shadow/Warning",
"text": "This is a shadow tiddler. Any changes you make will override the default version from the plugin <<pluginLink>>"
},
"$:/language/EditTemplate/Shadow/OverriddenWarning": {
"title": "$:/language/EditTemplate/Shadow/OverriddenWarning",
"text": "This is a modified shadow tiddler. You can revert to the default version in the plugin <<pluginLink>> by deleting this tiddler"
},
"$:/language/EditTemplate/Tags/Add/Button": {
"title": "$:/language/EditTemplate/Tags/Add/Button",
"text": "add"
},
"$:/language/EditTemplate/Tags/Add/Placeholder": {
"title": "$:/language/EditTemplate/Tags/Add/Placeholder",
"text": "tag name"
},
"$:/language/EditTemplate/Tags/Dropdown/Caption": {
"title": "$:/language/EditTemplate/Tags/Dropdown/Caption",
"text": "tag list"
},
"$:/language/EditTemplate/Tags/Dropdown/Hint": {
"title": "$:/language/EditTemplate/Tags/Dropdown/Hint",
"text": "Show tag list"
},
"$:/language/EditTemplate/Title/BadCharacterWarning": {
"title": "$:/language/EditTemplate/Title/BadCharacterWarning",
"text": "Warning: avoid using any of the characters <<bad-chars>> in tiddler titles"
},
"$:/language/EditTemplate/Title/Exists/Prompt": {
"title": "$:/language/EditTemplate/Title/Exists/Prompt",
"text": "Target tiddler already exists"
},
"$:/language/EditTemplate/Title/Relink/Prompt": {
"title": "$:/language/EditTemplate/Title/Relink/Prompt",
"text": "Update ''<$text text=<<fromTitle>>/>'' to ''<$text text=<<toTitle>>/>'' in the //tags// and //list// fields of other tiddlers"
},
"$:/language/EditTemplate/Type/Dropdown/Caption": {
"title": "$:/language/EditTemplate/Type/Dropdown/Caption",
"text": "content type list"
},
"$:/language/EditTemplate/Type/Dropdown/Hint": {
"title": "$:/language/EditTemplate/Type/Dropdown/Hint",
"text": "Show content type list"
},
"$:/language/EditTemplate/Type/Delete/Caption": {
"title": "$:/language/EditTemplate/Type/Delete/Caption",
"text": "delete content type"
},
"$:/language/EditTemplate/Type/Delete/Hint": {
"title": "$:/language/EditTemplate/Type/Delete/Hint",
"text": "Delete content type"
},
"$:/language/EditTemplate/Type/Placeholder": {
"title": "$:/language/EditTemplate/Type/Placeholder",
"text": "content type"
},
"$:/language/EditTemplate/Type/Prompt": {
"title": "$:/language/EditTemplate/Type/Prompt",
"text": "Type:"
},
"$:/language/Exporters/StaticRiver": {
"title": "$:/language/Exporters/StaticRiver",
"text": "Static HTML"
},
"$:/language/Exporters/JsonFile": {
"title": "$:/language/Exporters/JsonFile",
"text": "JSON file"
},
"$:/language/Exporters/CsvFile": {
"title": "$:/language/Exporters/CsvFile",
"text": "CSV file"
},
"$:/language/Exporters/TidFile": {
"title": "$:/language/Exporters/TidFile",
"text": "\".tid\" file"
},
"$:/language/Docs/Fields/_canonical_uri": {
"title": "$:/language/Docs/Fields/_canonical_uri",
"text": "The full URI of an external image tiddler"
},
"$:/language/Docs/Fields/bag": {
"title": "$:/language/Docs/Fields/bag",
"text": "The name of the bag from which a tiddler came"
},
"$:/language/Docs/Fields/caption": {
"title": "$:/language/Docs/Fields/caption",
"text": "The text to be displayed on a tab or button"
},
"$:/language/Docs/Fields/color": {
"title": "$:/language/Docs/Fields/color",
"text": "The CSS color value associated with a tiddler"
},
"$:/language/Docs/Fields/component": {
"title": "$:/language/Docs/Fields/component",
"text": "The name of the component responsible for an [[alert tiddler|AlertMechanism]]"
},
"$:/language/Docs/Fields/current-tiddler": {
"title": "$:/language/Docs/Fields/current-tiddler",
"text": "Used to cache the top tiddler in a [[history list|HistoryMechanism]]"
},
"$:/language/Docs/Fields/created": {
"title": "$:/language/Docs/Fields/created",
"text": "The date a tiddler was created"
},
"$:/language/Docs/Fields/creator": {
"title": "$:/language/Docs/Fields/creator",
"text": "The name of the person who created a tiddler"
},
"$:/language/Docs/Fields/dependents": {
"title": "$:/language/Docs/Fields/dependents",
"text": "For a plugin, lists the dependent plugin titles"
},
"$:/language/Docs/Fields/description": {
"title": "$:/language/Docs/Fields/description",
"text": "The descriptive text for a plugin, or a modal dialogue"
},
"$:/language/Docs/Fields/draft.of": {
"title": "$:/language/Docs/Fields/draft.of",
"text": "For draft tiddlers, contains the title of the tiddler of which this is a draft"
},
"$:/language/Docs/Fields/draft.title": {
"title": "$:/language/Docs/Fields/draft.title",
"text": "For draft tiddlers, contains the proposed new title of the tiddler"
},
"$:/language/Docs/Fields/footer": {
"title": "$:/language/Docs/Fields/footer",
"text": "The footer text for a wizard"
},
"$:/language/Docs/Fields/hack-to-give-us-something-to-compare-against": {
"title": "$:/language/Docs/Fields/hack-to-give-us-something-to-compare-against",
"text": "A temporary storage field used in [[$:/core/templates/static.content]]"
},
"$:/language/Docs/Fields/icon": {
"title": "$:/language/Docs/Fields/icon",
"text": "The title of the tiddler containing the icon associated with a tiddler"
},
"$:/language/Docs/Fields/library": {
"title": "$:/language/Docs/Fields/library",
"text": "If set to \"yes\" indicates that a tiddler should be saved as a JavaScript library"
},
"$:/language/Docs/Fields/list": {
"title": "$:/language/Docs/Fields/list",
"text": "An ordered list of tiddler titles associated with a tiddler"
},
"$:/language/Docs/Fields/list-before": {
"title": "$:/language/Docs/Fields/list-before",
"text": "If set, the title of a tiddler before which this tiddler should be added to the ordered list of tiddler titles, or at the start of the list if this field is present but empty"
},
"$:/language/Docs/Fields/list-after": {
"title": "$:/language/Docs/Fields/list-after",
"text": "If set, the title of the tiddler after which this tiddler should be added to the ordered list of tiddler titles"
},
"$:/language/Docs/Fields/modified": {
"title": "$:/language/Docs/Fields/modified",
"text": "The date and time at which a tiddler was last modified"
},
"$:/language/Docs/Fields/modifier": {
"title": "$:/language/Docs/Fields/modifier",
"text": "The tiddler title associated with the person who last modified a tiddler"
},
"$:/language/Docs/Fields/name": {
"title": "$:/language/Docs/Fields/name",
"text": "The human readable name associated with a plugin tiddler"
},
"$:/language/Docs/Fields/plugin-priority": {
"title": "$:/language/Docs/Fields/plugin-priority",
"text": "A numerical value indicating the priority of a plugin tiddler"
},
"$:/language/Docs/Fields/plugin-type": {
"title": "$:/language/Docs/Fields/plugin-type",
"text": "The type of plugin in a plugin tiddler"
},
"$:/language/Docs/Fields/revision": {
"title": "$:/language/Docs/Fields/revision",
"text": "The revision of the tiddler held at the server"
},
"$:/language/Docs/Fields/released": {
"title": "$:/language/Docs/Fields/released",
"text": "Date of a TiddlyWiki release"
},
"$:/language/Docs/Fields/source": {
"title": "$:/language/Docs/Fields/source",
"text": "The source URL associated with a tiddler"
},
"$:/language/Docs/Fields/subtitle": {
"title": "$:/language/Docs/Fields/subtitle",
"text": "The subtitle text for a wizard"
},
"$:/language/Docs/Fields/tags": {
"title": "$:/language/Docs/Fields/tags",
"text": "A list of tags associated with a tiddler"
},
"$:/language/Docs/Fields/text": {
"title": "$:/language/Docs/Fields/text",
"text": "The body text of a tiddler"
},
"$:/language/Docs/Fields/title": {
"title": "$:/language/Docs/Fields/title",
"text": "The unique name of a tiddler"
},
"$:/language/Docs/Fields/type": {
"title": "$:/language/Docs/Fields/type",
"text": "The content type of a tiddler"
},
"$:/language/Docs/Fields/version": {
"title": "$:/language/Docs/Fields/version",
"text": "Version information for a plugin"
},
"$:/language/Filters/AllTiddlers": {
"title": "$:/language/Filters/AllTiddlers",
"text": "All tiddlers except system tiddlers"
},
"$:/language/Filters/RecentSystemTiddlers": {
"title": "$:/language/Filters/RecentSystemTiddlers",
"text": "Recently modified tiddlers, including system tiddlers"
},
"$:/language/Filters/RecentTiddlers": {
"title": "$:/language/Filters/RecentTiddlers",
"text": "Recently modified tiddlers"
},
"$:/language/Filters/AllTags": {
"title": "$:/language/Filters/AllTags",
"text": "All tags except system tags"
},
"$:/language/Filters/Missing": {
"title": "$:/language/Filters/Missing",
"text": "Missing tiddlers"
},
"$:/language/Filters/Drafts": {
"title": "$:/language/Filters/Drafts",
"text": "Draft tiddlers"
},
"$:/language/Filters/Orphans": {
"title": "$:/language/Filters/Orphans",
"text": "Orphan tiddlers"
},
"$:/language/Filters/SystemTiddlers": {
"title": "$:/language/Filters/SystemTiddlers",
"text": "System tiddlers"
},
"$:/language/Filters/ShadowTiddlers": {
"title": "$:/language/Filters/ShadowTiddlers",
"text": "Shadow tiddlers"
},
"$:/language/Filters/OverriddenShadowTiddlers": {
"title": "$:/language/Filters/OverriddenShadowTiddlers",
"text": "Overridden shadow tiddlers"
},
"$:/language/Filters/SystemTags": {
"title": "$:/language/Filters/SystemTags",
"text": "System tags"
},
"$:/language/Filters/StoryList": {
"title": "$:/language/Filters/StoryList",
"text": "Tiddlers in the story river, excluding <$text text=\"$:/AdvancedSearch\"/>"
},
"$:/language/Filters/TypedTiddlers": {
"title": "$:/language/Filters/TypedTiddlers",
"text": "Non wiki-text tiddlers"
},
"GettingStarted": {
"title": "GettingStarted",
"text": "\\define lingo-base() $:/language/ControlPanel/Basics/\nWelcome to ~TiddlyWiki and the ~TiddlyWiki community\n\nBefore you start storing important information in ~TiddlyWiki it is important to make sure that you can reliably save changes. See http://tiddlywiki.com/#GettingStarted for details\n\n!! Set up this ~TiddlyWiki\n\n<div class=\"tc-control-panel\">\n\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n</div>\n\nSee the [[control panel|$:/ControlPanel]] for more options.\n"
},
"$:/language/Help/build": {
"title": "$:/language/Help/build",
"description": "Automatically run configured commands",
"text": "Build the specified build targets for the current wiki. If no build targets are specified then all available targets will be built.\n\n```\n--build <target> [<target> ...]\n```\n\nBuild targets are defined in the `tiddlywiki.info` file of a wiki folder.\n\n"
},
"$:/language/Help/clearpassword": {
"title": "$:/language/Help/clearpassword",
"description": "Clear a password for subsequent crypto operations",
"text": "Clear the password for subsequent crypto operations\n\n```\n--clearpassword\n```\n"
},
"$:/language/Help/default": {
"title": "$:/language/Help/default",
"text": "\\define commandTitle()\n$:/language/Help/$(command)$\n\\end\n```\nusage: tiddlywiki [<wikifolder>] [--<command> [<args>...]...]\n```\n\nAvailable commands:\n\n<ul>\n<$list filter=\"[commands[]sort[title]]\" variable=\"command\">\n<li><$link to=<<commandTitle>>><$macrocall $name=\"command\" $type=\"text/plain\" $output=\"text/plain\"/></$link>: <$transclude tiddler=<<commandTitle>> field=\"description\"/></li>\n</$list>\n</ul>\n\nTo get detailed help on a command:\n\n```\ntiddlywiki --help <command>\n```\n"
},
"$:/language/Help/editions": {
"title": "$:/language/Help/editions",
"description": "Lists the available editions of TiddlyWiki",
"text": "Lists the names and descriptions of the available editions. You can create a new wiki of a specified edition with the `--init` command.\n\n```\n--editions\n```\n"
},
"$:/language/Help/fetch": {
"title": "$:/language/Help/fetch",
"description": "Fetch tiddlers from wiki by URL",
"text": "Fetch one or more files over HTTP/HTTPS, and import the tiddlers matching a filter, optionally transforming the incoming titles.\n\n```\n--fetch file <url> <import-filter> <transform-filter>\n--fetch files <url-filter> <import-filter> <transform-filter>\n```\n\nWith the \"file\" variant only a single file is fetched and the first parameter is the URL of the file to read.\n\nWith the \"files\" variant, multiple files are fetched and the first parameter is a filter yielding a list of URLs of the files to read. For example, given a set of tiddlers tagged \"remote-server\" that have a field \"url\" the filter `[tag[remote-server]get[url]]` will retrieve all the available URLs.\n\nThe `<import-filter>` parameter specifies a filter determining which tiddlers are imported. It defaults to `[all[tiddlers]]` if not provided.\n\nThe `<transform-filter>` parameter specifies an optional filter that transforms the titles of the imported tiddlers. For example, `[addprefix[$:/myimports/]]` would add the prefix `$:/myimports/` to each title.\n\nPreceding the `--fetch` command with `--verbose` will output progress information during the import.\n\nNote that TiddlyWiki will not fetch an older version of an already loaded plugin.\n\nThe following example retrieves all the non-system tiddlers from http://tiddlywiki.com and saves them to a JSON file:\n\n```\ntiddlywiki --verbose --fetch file \"http://tiddlywiki.com/\" \"[!is[system]]\" \"\" --rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[!is[system]]\"\n```\n\n"
},
"$:/language/Help/help": {
"title": "$:/language/Help/help",
"description": "Display help for TiddlyWiki commands",
"text": "Displays help text for a command:\n\n```\n--help [<command>]\n```\n\nIf the command name is omitted then a list of available commands is displayed.\n"
},
"$:/language/Help/init": {
"title": "$:/language/Help/init",
"description": "Initialise a new wiki folder",
"text": "Initialise an empty [[WikiFolder|WikiFolders]] with a copy of the specified edition.\n\n```\n--init <edition> [<edition> ...]\n```\n\nFor example:\n\n```\ntiddlywiki ./MyWikiFolder --init empty\n```\n\nNote:\n\n* The wiki folder directory will be created if necessary\n* The \"edition\" defaults to ''empty''\n* The init command will fail if the wiki folder is not empty\n* The init command removes any `includeWikis` definitions in the edition's `tiddlywiki.info` file\n* When multiple editions are specified, editions initialised later will overwrite any files shared with earlier editions (so, the final `tiddlywiki.info` file will be copied from the last edition)\n* `--editions` returns a list of available editions\n"
},
"$:/language/Help/load": {
"title": "$:/language/Help/load",
"description": "Load tiddlers from a file",
"text": "Load tiddlers from 2.x.x TiddlyWiki files (`.html`), `.tiddler`, `.tid`, `.json` or other files\n\n```\n--load <filepath>\n```\n\nTo load tiddlers from an encrypted TiddlyWiki file you should first specify the password with the PasswordCommand. For example:\n\n```\ntiddlywiki ./MyWiki --password pa55w0rd --load my_encrypted_wiki.html\n```\n\nNote that TiddlyWiki will not load an older version of an already loaded plugin.\n"
},
"$:/language/Help/makelibrary": {
"title": "$:/language/Help/makelibrary",
"description": "Construct library plugin required by upgrade process",
"text": "Constructs the `$:/UpgradeLibrary` tiddler for the upgrade process.\n\nThe upgrade library is formatted as an ordinary plugin tiddler with the plugin type `library`. It contains a copy of each of the plugins, themes and language packs available within the TiddlyWiki5 repository.\n\nThis command is intended for internal use; it is only relevant to users constructing a custom upgrade procedure.\n\n```\n--makelibrary <title>\n```\n\nThe title argument defaults to `$:/UpgradeLibrary`.\n"
},
"$:/language/Help/notfound": {
"title": "$:/language/Help/notfound",
"text": "No such help item"
},
"$:/language/Help/output": {
"title": "$:/language/Help/output",
"description": "Set the base output directory for subsequent commands",
"text": "Sets the base output directory for subsequent commands. The default output directory is the `output` subdirectory of the edition directory.\n\n```\n--output <pathname>\n```\n\nIf the specified pathname is relative then it is resolved relative to the current working directory. For example `--output .` sets the output directory to the current working directory.\n\n"
},
"$:/language/Help/password": {
"title": "$:/language/Help/password",
"description": "Set a password for subsequent crypto operations",
"text": "Set a password for subsequent crypto operations\n\n```\n--password <password>\n```\n\n''Note'': This should not be used for serving TiddlyWiki with password protection. Instead, see the password option under the [[ServerCommand]].\n"
},
"$:/language/Help/rendertiddler": {
"title": "$:/language/Help/rendertiddler",
"description": "Render an individual tiddler as a specified ContentType",
"text": "Render an individual tiddler as a specified ContentType, defaulting to `text/html` and save it to the specified filename.\n\nOptionally the title of a template tiddler can be specified, in which case the template tiddler is rendered with the \"currentTiddler\" variable set to the tiddler that is being rendered (the first parameter value).\n\nA name and value for an additional variable may optionally also be specified.\n\n```\n--rendertiddler <title> <filename> [<type>] [<template>] [<name>] [<value>]\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n\nFor example, the following command saves all tiddlers matching the filter `[tag[done]]` to a JSON file titled `output.json` by employing the core template `$:/core/templates/exporters/JsonFile`.\n\n```\n--rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[tag[done]]\"\n```\n"
},
"$:/language/Help/rendertiddlers": {
"title": "$:/language/Help/rendertiddlers",
"description": "Render tiddlers matching a filter to a specified ContentType",
"text": "Render a set of tiddlers matching a filter to separate files of a specified ContentType (defaults to `text/html`) and extension (defaults to `.html`).\n\n```\n--rendertiddlers <filter> <template> <pathname> [<type>] [<extension>] [\"noclean\"]\n```\n\nFor example:\n\n```\n--rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html ./static text/plain\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny files in the target directory are deleted unless the ''noclean'' flag is specified. The target directory is recursively created if it is missing.\n"
},
"$:/language/Help/savetiddler": {
"title": "$:/language/Help/savetiddler",
"description": "Saves a raw tiddler to a file",
"text": "Saves an individual tiddler in its raw text or binary format to the specified filename.\n\n```\n--savetiddler <title> <filename>\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n"
},
"$:/language/Help/savetiddlers": {
"title": "$:/language/Help/savetiddlers",
"description": "Saves a group of raw tiddlers to a directory",
"text": "Saves a group of tiddlers in their raw text or binary format to the specified directory.\n\n```\n--savetiddlers <filter> <pathname> [\"noclean\"]\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nThe output directory is cleared of existing files before saving the specified files. The deletion can be disabled by specifying the ''noclean'' flag.\n\nAny missing directories in the pathname are automatically created.\n"
},
"$:/language/Help/server": {
"title": "$:/language/Help/server",
"description": "Provides an HTTP server interface to TiddlyWiki",
"text": "The server built in to TiddlyWiki5 is very simple. Although compatible with TiddlyWeb it doesn't support many of the features needed for robust Internet-facing usage.\n\nAt the root, it serves a rendering of a specified tiddler. Away from the root, it serves individual tiddlers encoded in JSON, and supports the basic HTTP operations for `GET`, `PUT` and `DELETE`.\n\n```\n--server <port> <roottiddler> <rendertype> <servetype> <username> <password> <host> <pathprefix>\n```\n\nThe parameters are:\n\n* ''port'' - port number to serve from (defaults to \"8080\")\n* ''roottiddler'' - the tiddler to serve at the root (defaults to \"$:/core/save/all\")\n* ''rendertype'' - the content type to which the root tiddler should be rendered (defaults to \"text/plain\")\n* ''servetype'' - the content type with which the root tiddler should be served (defaults to \"text/html\")\n* ''username'' - the default username for signing edits\n* ''password'' - optional password for basic authentication\n* ''host'' - optional hostname to serve from (defaults to \"127.0.0.1\" aka \"localhost\")\n* ''pathprefix'' - optional prefix for paths\n\nIf the password parameter is specified then the browser will prompt the user for the username and password. Note that the password is transmitted in plain text so this implementation isn't suitable for general use.\n\nFor example:\n\n```\n--server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n\nThe username and password can be specified as empty strings if you need to set the hostname or pathprefix and don't want to require a password:\n\n```\n--server 8080 $:/core/save/all text/plain text/html \"\" \"\" 192.168.0.245\n```\n\nTo run multiple TiddlyWiki servers at the same time you'll need to put each one on a different port.\n"
},
"$:/language/Help/setfield": {
"title": "$:/language/Help/setfield",
"description": "Prepares external tiddlers for use",
"text": "//Note that this command is experimental and may change or be replaced before being finalised//\n\nSets the specified field of a group of tiddlers to the result of wikifying a template tiddler with the `currentTiddler` variable set to the tiddler.\n\n```\n--setfield <filter> <fieldname> <templatetitle> <rendertype>\n```\n\nThe parameters are:\n\n* ''filter'' - filter identifying the tiddlers to be affected\n* ''fieldname'' - the field to modify (defaults to \"text\")\n* ''templatetitle'' - the tiddler to wikify into the specified field. If blank or missing then the specified field is deleted\n* ''rendertype'' - the text type to render (defaults to \"text/plain\"; \"text/html\" can be used to include HTML tags)\n"
},
"$:/language/Help/unpackplugin": {
"title": "$:/language/Help/unpackplugin",
"description": "Unpack the payload tiddlers from a plugin",
"text": "Extract the payload tiddlers from a plugin, creating them as ordinary tiddlers:\n\n```\n--unpackplugin <title>\n```\n"
},
"$:/language/Help/verbose": {
"title": "$:/language/Help/verbose",
"description": "Triggers verbose output mode",
"text": "Triggers verbose output, useful for debugging\n\n```\n--verbose\n```\n"
},
"$:/language/Help/version": {
"title": "$:/language/Help/version",
"description": "Displays the version number of TiddlyWiki",
"text": "Displays the version number of TiddlyWiki.\n\n```\n--version\n```\n"
},
"$:/language/Import/Imported/Hint": {
"title": "$:/language/Import/Imported/Hint",
"text": "The following tiddlers were imported:"
},
"$:/language/Import/Listing/Cancel/Caption": {
"title": "$:/language/Import/Listing/Cancel/Caption",
"text": "Cancel"
},
"$:/language/Import/Listing/Hint": {
"title": "$:/language/Import/Listing/Hint",
"text": "These tiddlers are ready to import:"
},
"$:/language/Import/Listing/Import/Caption": {
"title": "$:/language/Import/Listing/Import/Caption",
"text": "Import"
},
"$:/language/Import/Listing/Select/Caption": {
"title": "$:/language/Import/Listing/Select/Caption",
"text": "Select"
},
"$:/language/Import/Listing/Status/Caption": {
"title": "$:/language/Import/Listing/Status/Caption",
"text": "Status"
},
"$:/language/Import/Listing/Title/Caption": {
"title": "$:/language/Import/Listing/Title/Caption",
"text": "Title"
},
"$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible": {
"title": "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible",
"text": "Blocked incompatible or obsolete plugin"
},
"$:/language/Import/Upgrader/Plugins/Suppressed/Version": {
"title": "$:/language/Import/Upgrader/Plugins/Suppressed/Version",
"text": "Blocked plugin (due to incoming <<incoming>> being older than existing <<existing>>)"
},
"$:/language/Import/Upgrader/Plugins/Upgraded": {
"title": "$:/language/Import/Upgrader/Plugins/Upgraded",
"text": "Upgraded plugin from <<incoming>> to <<upgraded>>"
},
"$:/language/Import/Upgrader/State/Suppressed": {
"title": "$:/language/Import/Upgrader/State/Suppressed",
"text": "Blocked temporary state tiddler"
},
"$:/language/Import/Upgrader/System/Suppressed": {
"title": "$:/language/Import/Upgrader/System/Suppressed",
"text": "Blocked system tiddler"
},
"$:/language/Import/Upgrader/ThemeTweaks/Created": {
"title": "$:/language/Import/Upgrader/ThemeTweaks/Created",
"text": "Migrated theme tweak from <$text text=<<from>>/>"
},
"$:/language/AboveStory/ClassicPlugin/Warning": {
"title": "$:/language/AboveStory/ClassicPlugin/Warning",
"text": "It looks like you are trying to load a plugin designed for ~TiddlyWiki Classic. Please note that [[these plugins do not work with TiddlyWiki version 5.x.x|http://tiddlywiki.com/#TiddlyWikiClassic]]. ~TiddlyWiki Classic plugins detected:"
},
"$:/language/BinaryWarning/Prompt": {
"title": "$:/language/BinaryWarning/Prompt",
"text": "This tiddler contains binary data"
},
"$:/language/ClassicWarning/Hint": {
"title": "$:/language/ClassicWarning/Hint",
"text": "This tiddler is written in TiddlyWiki Classic wiki text format, which is not fully compatible with TiddlyWiki version 5. See http://tiddlywiki.com/static/Upgrading.html for more details."
},
"$:/language/ClassicWarning/Upgrade/Caption": {
"title": "$:/language/ClassicWarning/Upgrade/Caption",
"text": "upgrade"
},
"$:/language/CloseAll/Button": {
"title": "$:/language/CloseAll/Button",
"text": "close all"
},
"$:/language/ColourPicker/Recent": {
"title": "$:/language/ColourPicker/Recent",
"text": "Recent:"
},
"$:/language/ConfirmCancelTiddler": {
"title": "$:/language/ConfirmCancelTiddler",
"text": "Do you wish to discard changes to the tiddler \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmDeleteTiddler": {
"title": "$:/language/ConfirmDeleteTiddler",
"text": "Do you wish to delete the tiddler \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmOverwriteTiddler": {
"title": "$:/language/ConfirmOverwriteTiddler",
"text": "Do you wish to overwrite the tiddler \"<$text text=<<title>>/>\"?"
},
"$:/language/ConfirmEditShadowTiddler": {
"title": "$:/language/ConfirmEditShadowTiddler",
"text": "You are about to edit a ShadowTiddler. Any changes will override the default system making future upgrades non-trivial. Are you sure you want to edit \"<$text text=<<title>>/>\"?"
},
"$:/language/Count": {
"title": "$:/language/Count",
"text": "count"
},
"$:/language/DefaultNewTiddlerTitle": {
"title": "$:/language/DefaultNewTiddlerTitle",
"text": "New Tiddler"
},
"$:/language/DropMessage": {
"title": "$:/language/DropMessage",
"text": "Drop here (or use the 'Escape' key to cancel)"
},
"$:/language/Encryption/Cancel": {
"title": "$:/language/Encryption/Cancel",
"text": "Cancel"
},
"$:/language/Encryption/ConfirmClearPassword": {
"title": "$:/language/Encryption/ConfirmClearPassword",
"text": "Do you wish to clear the password? This will remove the encryption applied when saving this wiki"
},
"$:/language/Encryption/PromptSetPassword": {
"title": "$:/language/Encryption/PromptSetPassword",
"text": "Set a new password for this TiddlyWiki"
},
"$:/language/Encryption/Username": {
"title": "$:/language/Encryption/Username",
"text": "Username"
},
"$:/language/Encryption/Password": {
"title": "$:/language/Encryption/Password",
"text": "Password"
},
"$:/language/Encryption/RepeatPassword": {
"title": "$:/language/Encryption/RepeatPassword",
"text": "Repeat password"
},
"$:/language/Encryption/PasswordNoMatch": {
"title": "$:/language/Encryption/PasswordNoMatch",
"text": "Passwords do not match"
},
"$:/language/Encryption/SetPassword": {
"title": "$:/language/Encryption/SetPassword",
"text": "Set password"
},
"$:/language/Error/Caption": {
"title": "$:/language/Error/Caption",
"text": "Error"
},
"$:/language/Error/EditConflict": {
"title": "$:/language/Error/EditConflict",
"text": "File changed on server"
},
"$:/language/Error/Filter": {
"title": "$:/language/Error/Filter",
"text": "Filter error"
},
"$:/language/Error/FilterSyntax": {
"title": "$:/language/Error/FilterSyntax",
"text": "Syntax error in filter expression"
},
"$:/language/Error/IsFilterOperator": {
"title": "$:/language/Error/IsFilterOperator",
"text": "Filter Error: Unknown operand for the 'is' filter operator"
},
"$:/language/Error/LoadingPluginLibrary": {
"title": "$:/language/Error/LoadingPluginLibrary",
"text": "Error loading plugin library"
},
"$:/language/Error/RecursiveTransclusion": {
"title": "$:/language/Error/RecursiveTransclusion",
"text": "Recursive transclusion error in transclude widget"
},
"$:/language/Error/RetrievingSkinny": {
"title": "$:/language/Error/RetrievingSkinny",
"text": "Error retrieving skinny tiddler list"
},
"$:/language/Error/SavingToTWEdit": {
"title": "$:/language/Error/SavingToTWEdit",
"text": "Error saving to TWEdit"
},
"$:/language/Error/WhileSaving": {
"title": "$:/language/Error/WhileSaving",
"text": "Error while saving"
},
"$:/language/Error/XMLHttpRequest": {
"title": "$:/language/Error/XMLHttpRequest",
"text": "XMLHttpRequest error code"
},
"$:/language/InternalJavaScriptError/Title": {
"title": "$:/language/InternalJavaScriptError/Title",
"text": "Internal JavaScript Error"
},
"$:/language/InternalJavaScriptError/Hint": {
"title": "$:/language/InternalJavaScriptError/Hint",
"text": "Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser"
},
"$:/language/InvalidFieldName": {
"title": "$:/language/InvalidFieldName",
"text": "Illegal characters in field name \"<$text text=<<fieldName>>/>\". Fields can only contain lowercase letters, digits and the characters underscore (`_`), hyphen (`-`) and period (`.`)"
},
"$:/language/LazyLoadingWarning": {
"title": "$:/language/LazyLoadingWarning",
"text": "<p>Loading external text from ''<$text text={{!!_canonical_uri}}/>''</p><p>If this message doesn't disappear you may be using a browser that doesn't support external text in this configuration. See http://tiddlywiki.com/#ExternalText</p>"
},
"$:/language/LoginToTiddlySpace": {
"title": "$:/language/LoginToTiddlySpace",
"text": "Login to TiddlySpace"
},
"$:/language/Manager/Controls/FilterByTag/None": {
"title": "$:/language/Manager/Controls/FilterByTag/None",
"text": "(none)"
},
"$:/language/Manager/Controls/FilterByTag/Prompt": {
"title": "$:/language/Manager/Controls/FilterByTag/Prompt",
"text": "Filter by tag:"
},
"$:/language/Manager/Controls/Order/Prompt": {
"title": "$:/language/Manager/Controls/Order/Prompt",
"text": "Reverse order"
},
"$:/language/Manager/Controls/Search/Placeholder": {
"title": "$:/language/Manager/Controls/Search/Placeholder",
"text": "Search"
},
"$:/language/Manager/Controls/Search/Prompt": {
"title": "$:/language/Manager/Controls/Search/Prompt",
"text": "Search:"
},
"$:/language/Manager/Controls/Show/Option/Tags": {
"title": "$:/language/Manager/Controls/Show/Option/Tags",
"text": "tags"
},
"$:/language/Manager/Controls/Show/Option/Tiddlers": {
"title": "$:/language/Manager/Controls/Show/Option/Tiddlers",
"text": "tiddlers"
},
"$:/language/Manager/Controls/Show/Prompt": {
"title": "$:/language/Manager/Controls/Show/Prompt",
"text": "Show:"
},
"$:/language/Manager/Controls/Sort/Prompt": {
"title": "$:/language/Manager/Controls/Sort/Prompt",
"text": "Sort by:"
},
"$:/language/Manager/Item/Colour": {
"title": "$:/language/Manager/Item/Colour",
"text": "Colour"
},
"$:/language/Manager/Item/Fields": {
"title": "$:/language/Manager/Item/Fields",
"text": "Fields"
},
"$:/language/Manager/Item/Icon/None": {
"title": "$:/language/Manager/Item/Icon/None",
"text": "(none)"
},
"$:/language/Manager/Item/Icon": {
"title": "$:/language/Manager/Item/Icon",
"text": "Icon"
},
"$:/language/Manager/Item/RawText": {
"title": "$:/language/Manager/Item/RawText",
"text": "Raw text"
},
"$:/language/Manager/Item/Tags": {
"title": "$:/language/Manager/Item/Tags",
"text": "Tags"
},
"$:/language/Manager/Item/Tools": {
"title": "$:/language/Manager/Item/Tools",
"text": "Tools"
},
"$:/language/Manager/Item/WikifiedText": {
"title": "$:/language/Manager/Item/WikifiedText",
"text": "Wikified text"
},
"$:/language/MissingTiddler/Hint": {
"title": "$:/language/MissingTiddler/Hint",
"text": "Missing tiddler \"<$text text=<<currentTiddler>>/>\" - click {{$:/core/images/edit-button}} to create"
},
"$:/language/No": {
"title": "$:/language/No",
"text": "No"
},
"$:/language/OfficialPluginLibrary": {
"title": "$:/language/OfficialPluginLibrary",
"text": "Official ~TiddlyWiki Plugin Library"
},
"$:/language/OfficialPluginLibrary/Hint": {
"title": "$:/language/OfficialPluginLibrary/Hint",
"text": "The official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team."
},
"$:/language/PluginReloadWarning": {
"title": "$:/language/PluginReloadWarning",
"text": "Please save {{$:/core/ui/Buttons/save-wiki}} and reload {{$:/core/ui/Buttons/refresh}} to allow changes to plugins to take effect"
},
"$:/language/RecentChanges/DateFormat": {
"title": "$:/language/RecentChanges/DateFormat",
"text": "DDth MMM YYYY"
},
"$:/language/SystemTiddler/Tooltip": {
"title": "$:/language/SystemTiddler/Tooltip",
"text": "This is a system tiddler"
},
"$:/language/SystemTiddlers/Include/Prompt": {
"title": "$:/language/SystemTiddlers/Include/Prompt",
"text": "Include system tiddlers"
},
"$:/language/TagManager/Colour/Heading": {
"title": "$:/language/TagManager/Colour/Heading",
"text": "Colour"
},
"$:/language/TagManager/Count/Heading": {
"title": "$:/language/TagManager/Count/Heading",
"text": "Count"
},
"$:/language/TagManager/Icon/Heading": {
"title": "$:/language/TagManager/Icon/Heading",
"text": "Icon"
},
"$:/language/TagManager/Info/Heading": {
"title": "$:/language/TagManager/Info/Heading",
"text": "Info"
},
"$:/language/TagManager/Tag/Heading": {
"title": "$:/language/TagManager/Tag/Heading",
"text": "Tag"
},
"$:/language/Tiddler/DateFormat": {
"title": "$:/language/Tiddler/DateFormat",
"text": "DDth MMM YYYY at hh12:0mmam"
},
"$:/language/UnsavedChangesWarning": {
"title": "$:/language/UnsavedChangesWarning",
"text": "You have unsaved changes in TiddlyWiki"
},
"$:/language/Yes": {
"title": "$:/language/Yes",
"text": "Yes"
},
"$:/language/Modals/Download": {
"title": "$:/language/Modals/Download",
"type": "text/vnd.tiddlywiki",
"subtitle": "Download changes",
"footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
"help": "http://tiddlywiki.com/static/DownloadingChanges.html",
"text": "Your browser only supports manual saving.\n\nTo save your modified wiki, right click on the download link below and select \"Download file\" or \"Save file\", and then choose the folder and filename.\n\n//You can marginally speed things up by clicking the link with the control key (Windows) or the options/alt key (Mac OS X). You will not be prompted for the folder or filename, but your browser is likely to give it an unrecognisable name -- you may need to rename the file to include an `.html` extension before you can do anything useful with it.//\n\nOn smartphones that do not allow files to be downloaded you can instead bookmark the link, and then sync your bookmarks to a desktop computer from where the wiki can be saved normally.\n"
},
"$:/language/Modals/SaveInstructions": {
"title": "$:/language/Modals/SaveInstructions",
"type": "text/vnd.tiddlywiki",
"subtitle": "Save your work",
"footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
"help": "http://tiddlywiki.com/static/SavingChanges.html",
"text": "Your changes to this wiki need to be saved as a ~TiddlyWiki HTML file.\n\n!!! Desktop browsers\n\n# Select ''Save As'' from the ''File'' menu\n# Choose a filename and location\n#* Some browsers also require you to explicitly specify the file saving format as ''Webpage, HTML only'' or similar\n# Close this tab\n\n!!! Smartphone browsers\n\n# Create a bookmark to this page\n#* If you've got iCloud or Google Sync set up then the bookmark will automatically sync to your desktop where you can open it and save it as above\n# Close this tab\n\n//If you open the bookmark again in Mobile Safari you will see this message again. If you want to go ahead and use the file, just click the ''close'' button below//\n"
},
"$:/config/NewJournal/Title": {
"title": "$:/config/NewJournal/Title",
"text": "DDth MMM YYYY"
},
"$:/config/NewJournal/Text": {
"title": "$:/config/NewJournal/Text",
"text": ""
},
"$:/config/NewJournal/Tags": {
"title": "$:/config/NewJournal/Tags",
"text": "Journal"
},
"$:/language/Notifications/Save/Done": {
"title": "$:/language/Notifications/Save/Done",
"text": "Saved wiki"
},
"$:/language/Notifications/Save/Starting": {
"title": "$:/language/Notifications/Save/Starting",
"text": "Starting to save wiki"
},
"$:/language/Search/DefaultResults/Caption": {
"title": "$:/language/Search/DefaultResults/Caption",
"text": "List"
},
"$:/language/Search/Filter/Caption": {
"title": "$:/language/Search/Filter/Caption",
"text": "Filter"
},
"$:/language/Search/Filter/Hint": {
"title": "$:/language/Search/Filter/Hint",
"text": "Search via a [[filter expression|http://tiddlywiki.com/static/Filters.html]]"
},
"$:/language/Search/Filter/Matches": {
"title": "$:/language/Search/Filter/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/Matches": {
"title": "$:/language/Search/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/Matches/All": {
"title": "$:/language/Search/Matches/All",
"text": "All matches:"
},
"$:/language/Search/Matches/Title": {
"title": "$:/language/Search/Matches/Title",
"text": "Title matches:"
},
"$:/language/Search/Search": {
"title": "$:/language/Search/Search",
"text": "Search"
},
"$:/language/Search/Search/TooShort": {
"title": "$:/language/Search/Search/TooShort",
"text": "Search text too short"
},
"$:/language/Search/Shadows/Caption": {
"title": "$:/language/Search/Shadows/Caption",
"text": "Shadows"
},
"$:/language/Search/Shadows/Hint": {
"title": "$:/language/Search/Shadows/Hint",
"text": "Search for shadow tiddlers"
},
"$:/language/Search/Shadows/Matches": {
"title": "$:/language/Search/Shadows/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/Standard/Caption": {
"title": "$:/language/Search/Standard/Caption",
"text": "Standard"
},
"$:/language/Search/Standard/Hint": {
"title": "$:/language/Search/Standard/Hint",
"text": "Search for standard tiddlers"
},
"$:/language/Search/Standard/Matches": {
"title": "$:/language/Search/Standard/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/Search/System/Caption": {
"title": "$:/language/Search/System/Caption",
"text": "System"
},
"$:/language/Search/System/Hint": {
"title": "$:/language/Search/System/Hint",
"text": "Search for system tiddlers"
},
"$:/language/Search/System/Matches": {
"title": "$:/language/Search/System/Matches",
"text": "//<small><<resultCount>> matches</small>//"
},
"$:/language/SideBar/All/Caption": {
"title": "$:/language/SideBar/All/Caption",
"text": "All"
},
"$:/language/SideBar/Contents/Caption": {
"title": "$:/language/SideBar/Contents/Caption",
"text": "Contents"
},
"$:/language/SideBar/Drafts/Caption": {
"title": "$:/language/SideBar/Drafts/Caption",
"text": "Drafts"
},
"$:/language/SideBar/Missing/Caption": {
"title": "$:/language/SideBar/Missing/Caption",
"text": "Missing"
},
"$:/language/SideBar/More/Caption": {
"title": "$:/language/SideBar/More/Caption",
"text": "More"
},
"$:/language/SideBar/Open/Caption": {
"title": "$:/language/SideBar/Open/Caption",
"text": "Open"
},
"$:/language/SideBar/Orphans/Caption": {
"title": "$:/language/SideBar/Orphans/Caption",
"text": "Orphans"
},
"$:/language/SideBar/Recent/Caption": {
"title": "$:/language/SideBar/Recent/Caption",
"text": "Recent"
},
"$:/language/SideBar/Shadows/Caption": {
"title": "$:/language/SideBar/Shadows/Caption",
"text": "Shadows"
},
"$:/language/SideBar/System/Caption": {
"title": "$:/language/SideBar/System/Caption",
"text": "System"
},
"$:/language/SideBar/Tags/Caption": {
"title": "$:/language/SideBar/Tags/Caption",
"text": "Tags"
},
"$:/language/SideBar/Tags/Untagged/Caption": {
"title": "$:/language/SideBar/Tags/Untagged/Caption",
"text": "untagged"
},
"$:/language/SideBar/Tools/Caption": {
"title": "$:/language/SideBar/Tools/Caption",
"text": "Tools"
},
"$:/language/SideBar/Types/Caption": {
"title": "$:/language/SideBar/Types/Caption",
"text": "Types"
},
"$:/SiteSubtitle": {
"title": "$:/SiteSubtitle",
"text": "a non-linear personal web notebook"
},
"$:/SiteTitle": {
"title": "$:/SiteTitle",
"text": "My ~TiddlyWiki"
},
"$:/language/Snippets/ListByTag": {
"title": "$:/language/Snippets/ListByTag",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "List of tiddlers by tag",
"text": "<<list-links \"[tag[task]sort[title]]\">>\n"
},
"$:/language/Snippets/MacroDefinition": {
"title": "$:/language/Snippets/MacroDefinition",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "Macro definition",
"text": "\\define macroName(param1:\"default value\",param2)\nText of the macro\n\\end\n"
},
"$:/language/Snippets/Table4x3": {
"title": "$:/language/Snippets/Table4x3",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "Table with 4 columns by 3 rows",
"text": "|! |!Alpha |!Beta |!Gamma |!Delta |\n|!One | | | | |\n|!Two | | | | |\n|!Three | | | | |\n"
},
"$:/language/Snippets/TableOfContents": {
"title": "$:/language/Snippets/TableOfContents",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "Table of Contents",
"text": "<div class=\"tc-table-of-contents\">\n\n<<toc-selective-expandable 'TableOfContents'>>\n\n</div>"
},
"$:/language/ThemeTweaks/ThemeTweaks": {
"title": "$:/language/ThemeTweaks/ThemeTweaks",
"text": "Theme Tweaks"
},
"$:/language/ThemeTweaks/ThemeTweaks/Hint": {
"title": "$:/language/ThemeTweaks/ThemeTweaks/Hint",
"text": "You can tweak certain aspects of the ''Vanilla'' theme."
},
"$:/language/ThemeTweaks/Options": {
"title": "$:/language/ThemeTweaks/Options",
"text": "Options"
},
"$:/language/ThemeTweaks/Options/SidebarLayout": {
"title": "$:/language/ThemeTweaks/Options/SidebarLayout",
"text": "Sidebar layout"
},
"$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid": {
"title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid",
"text": "Fixed story, fluid sidebar"
},
"$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed": {
"title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed",
"text": "Fluid story, fixed sidebar"
},
"$:/language/ThemeTweaks/Options/StickyTitles": {
"title": "$:/language/ThemeTweaks/Options/StickyTitles",
"text": "Sticky titles"
},
"$:/language/ThemeTweaks/Options/StickyTitles/Hint": {
"title": "$:/language/ThemeTweaks/Options/StickyTitles/Hint",
"text": "Causes tiddler titles to \"stick\" to the top of the browser window. Caution: Does not work at all with Chrome, and causes some layout issues in Firefox"
},
"$:/language/ThemeTweaks/Options/CodeWrapping": {
"title": "$:/language/ThemeTweaks/Options/CodeWrapping",
"text": "Wrap long lines in code blocks"
},
"$:/language/ThemeTweaks/Settings": {
"title": "$:/language/ThemeTweaks/Settings",
"text": "Settings"
},
"$:/language/ThemeTweaks/Settings/FontFamily": {
"title": "$:/language/ThemeTweaks/Settings/FontFamily",
"text": "Font family"
},
"$:/language/ThemeTweaks/Settings/CodeFontFamily": {
"title": "$:/language/ThemeTweaks/Settings/CodeFontFamily",
"text": "Code font family"
},
"$:/language/ThemeTweaks/Settings/BackgroundImage": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImage",
"text": "Page background image"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment",
"text": "Page background image attachment"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll",
"text": "Scroll with tiddlers"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed",
"text": "Fixed to window"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize",
"text": "Page background image size"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto",
"text": "Auto"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover",
"text": "Cover"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain",
"text": "Contain"
},
"$:/language/ThemeTweaks/Metrics": {
"title": "$:/language/ThemeTweaks/Metrics",
"text": "Sizes"
},
"$:/language/ThemeTweaks/Metrics/FontSize": {
"title": "$:/language/ThemeTweaks/Metrics/FontSize",
"text": "Font size"
},
"$:/language/ThemeTweaks/Metrics/LineHeight": {
"title": "$:/language/ThemeTweaks/Metrics/LineHeight",
"text": "Line height"
},
"$:/language/ThemeTweaks/Metrics/BodyFontSize": {
"title": "$:/language/ThemeTweaks/Metrics/BodyFontSize",
"text": "Font size for tiddler body"
},
"$:/language/ThemeTweaks/Metrics/BodyLineHeight": {
"title": "$:/language/ThemeTweaks/Metrics/BodyLineHeight",
"text": "Line height for tiddler body"
},
"$:/language/ThemeTweaks/Metrics/StoryLeft": {
"title": "$:/language/ThemeTweaks/Metrics/StoryLeft",
"text": "Story left position"
},
"$:/language/ThemeTweaks/Metrics/StoryLeft/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint",
"text": "how far the left margin of the story river<br>(tiddler area) is from the left of the page"
},
"$:/language/ThemeTweaks/Metrics/StoryTop": {
"title": "$:/language/ThemeTweaks/Metrics/StoryTop",
"text": "Story top position"
},
"$:/language/ThemeTweaks/Metrics/StoryTop/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryTop/Hint",
"text": "how far the top margin of the story river<br>is from the top of the page"
},
"$:/language/ThemeTweaks/Metrics/StoryRight": {
"title": "$:/language/ThemeTweaks/Metrics/StoryRight",
"text": "Story right"
},
"$:/language/ThemeTweaks/Metrics/StoryRight/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryRight/Hint",
"text": "how far the left margin of the sidebar <br>is from the left of the page"
},
"$:/language/ThemeTweaks/Metrics/StoryWidth": {
"title": "$:/language/ThemeTweaks/Metrics/StoryWidth",
"text": "Story width"
},
"$:/language/ThemeTweaks/Metrics/StoryWidth/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint",
"text": "the overall width of the story river"
},
"$:/language/ThemeTweaks/Metrics/TiddlerWidth": {
"title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth",
"text": "Tiddler width"
},
"$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint",
"text": "within the story river"
},
"$:/language/ThemeTweaks/Metrics/SidebarBreakpoint": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint",
"text": "Sidebar breakpoint"
},
"$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint",
"text": "the minimum page width at which the story<br>river and sidebar will appear side by side"
},
"$:/language/ThemeTweaks/Metrics/SidebarWidth": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarWidth",
"text": "Sidebar width"
},
"$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint",
"text": "the width of the sidebar in fluid-fixed layout"
},
"$:/language/TiddlerInfo/Advanced/Caption": {
"title": "$:/language/TiddlerInfo/Advanced/Caption",
"text": "Advanced"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint",
"text": "none"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Heading": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading",
"text": "Plugin Details"
},
"$:/language/TiddlerInfo/Advanced/PluginInfo/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint",
"text": "This plugin contains the following shadow tiddlers:"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading",
"text": "Shadow Status"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint",
"text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is not a shadow tiddler"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint",
"text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is a shadow tiddler"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source",
"text": "It is defined in the plugin <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link>"
},
"$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint": {
"title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint",
"text": "It is overridden by an ordinary tiddler"
},
"$:/language/TiddlerInfo/Fields/Caption": {
"title": "$:/language/TiddlerInfo/Fields/Caption",
"text": "Fields"
},
"$:/language/TiddlerInfo/List/Caption": {
"title": "$:/language/TiddlerInfo/List/Caption",
"text": "List"
},
"$:/language/TiddlerInfo/List/Empty": {
"title": "$:/language/TiddlerInfo/List/Empty",
"text": "This tiddler does not have a list"
},
"$:/language/TiddlerInfo/Listed/Caption": {
"title": "$:/language/TiddlerInfo/Listed/Caption",
"text": "Listed"
},
"$:/language/TiddlerInfo/Listed/Empty": {
"title": "$:/language/TiddlerInfo/Listed/Empty",
"text": "This tiddler is not listed by any others"
},
"$:/language/TiddlerInfo/References/Caption": {
"title": "$:/language/TiddlerInfo/References/Caption",
"text": "References"
},
"$:/language/TiddlerInfo/References/Empty": {
"title": "$:/language/TiddlerInfo/References/Empty",
"text": "No tiddlers link to this one"
},
"$:/language/TiddlerInfo/Tagging/Caption": {
"title": "$:/language/TiddlerInfo/Tagging/Caption",
"text": "Tagging"
},
"$:/language/TiddlerInfo/Tagging/Empty": {
"title": "$:/language/TiddlerInfo/Tagging/Empty",
"text": "No tiddlers are tagged with this one"
},
"$:/language/TiddlerInfo/Tools/Caption": {
"title": "$:/language/TiddlerInfo/Tools/Caption",
"text": "Tools"
},
"$:/language/Docs/Types/application/javascript": {
"title": "$:/language/Docs/Types/application/javascript",
"description": "JavaScript code",
"name": "application/javascript",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/application/json": {
"title": "$:/language/Docs/Types/application/json",
"description": "JSON data",
"name": "application/json",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/application/x-tiddler-dictionary": {
"title": "$:/language/Docs/Types/application/x-tiddler-dictionary",
"description": "Data dictionary",
"name": "application/x-tiddler-dictionary",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/image/gif": {
"title": "$:/language/Docs/Types/image/gif",
"description": "GIF image",
"name": "image/gif",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/jpeg": {
"title": "$:/language/Docs/Types/image/jpeg",
"description": "JPEG image",
"name": "image/jpeg",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/png": {
"title": "$:/language/Docs/Types/image/png",
"description": "PNG image",
"name": "image/png",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/svg+xml": {
"title": "$:/language/Docs/Types/image/svg+xml",
"description": "Structured Vector Graphics image",
"name": "image/svg+xml",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/x-icon": {
"title": "$:/language/Docs/Types/image/x-icon",
"description": "ICO format icon file",
"name": "image/x-icon",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/text/css": {
"title": "$:/language/Docs/Types/text/css",
"description": "Static stylesheet",
"name": "text/css",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/text/html": {
"title": "$:/language/Docs/Types/text/html",
"description": "HTML markup",
"name": "text/html",
"group": "Text",
"group-sort": "0"
},
"$:/language/Docs/Types/text/plain": {
"title": "$:/language/Docs/Types/text/plain",
"description": "Plain text",
"name": "text/plain",
"group": "Text",
"group-sort": "0"
},
"$:/language/Docs/Types/text/vnd.tiddlywiki": {
"title": "$:/language/Docs/Types/text/vnd.tiddlywiki",
"description": "TiddlyWiki 5",
"name": "text/vnd.tiddlywiki",
"group": "Text",
"group-sort": "0"
},
"$:/language/Docs/Types/text/x-tiddlywiki": {
"title": "$:/language/Docs/Types/text/x-tiddlywiki",
"description": "TiddlyWiki Classic",
"name": "text/x-tiddlywiki",
"group": "Text",
"group-sort": "0"
},
"$:/languages/en-GB/icon": {
"title": "$:/languages/en-GB/icon",
"type": "image/svg+xml",
"text": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 60 30\" width=\"1200\" height=\"600\">\n<clipPath id=\"t\">\n\t<path d=\"M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z\"/>\n</clipPath>\n<path d=\"M0,0 v30 h60 v-30 z\" fill=\"#00247d\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" stroke=\"#fff\" stroke-width=\"6\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" clip-path=\"url(#t)\" stroke=\"#cf142b\" stroke-width=\"4\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#fff\" stroke-width=\"10\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#cf142b\" stroke-width=\"6\"/>\n</svg>\n"
},
"$:/languages/en-GB": {
"title": "$:/languages/en-GB",
"name": "en-GB",
"description": "English (British)",
"author": "JeremyRuston",
"core-version": ">=5.0.0\"",
"text": "Stub pseudo-plugin for the default language"
},
"$:/core/modules/commander.js": {
"text": "/*\\\ntitle: $:/core/modules/commander.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Commander class is a command interpreter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParse a sequence of commands\n\tcommandTokens: an array of command string tokens\n\twiki: reference to the wiki store object\n\tstreams: {output:, error:}, each of which has a write(string) method\n\tcallback: a callback invoked as callback(err) where err is null if there was no error\n*/\nvar Commander = function(commandTokens,callback,wiki,streams) {\n\tvar path = require(\"path\");\n\tthis.commandTokens = commandTokens;\n\tthis.nextToken = 0;\n\tthis.callback = callback;\n\tthis.wiki = wiki;\n\tthis.streams = streams;\n\tthis.outputPath = path.resolve($tw.boot.wikiPath,$tw.config.wikiOutputSubDir);\n};\n\n/*\nLog a string if verbose flag is set\n*/\nCommander.prototype.log = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str + \"\\n\");\n\t}\n};\n\n/*\nWrite a string if verbose flag is set\n*/\nCommander.prototype.write = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str);\n\t}\n};\n\n/*\nAdd a string of tokens to the command queue\n*/\nCommander.prototype.addCommandTokens = function(commandTokens) {\n\tvar params = commandTokens.slice(0);\n\tparams.unshift(0);\n\tparams.unshift(this.nextToken);\n\tArray.prototype.splice.apply(this.commandTokens,params);\n};\n\n/*\nExecute the sequence of commands and invoke a callback on completion\n*/\nCommander.prototype.execute = function() {\n\tthis.executeNextCommand();\n};\n\n/*\nExecute the next command in the sequence\n*/\nCommander.prototype.executeNextCommand = function() {\n\tvar self = this;\n\t// Invoke the callback if there are no more commands\n\tif(this.nextToken >= this.commandTokens.length) {\n\t\tthis.callback(null);\n\t} else {\n\t\t// Get and check the command token\n\t\tvar commandName = this.commandTokens[this.nextToken++];\n\t\tif(commandName.substr(0,2) !== \"--\") {\n\t\t\tthis.callback(\"Missing command: \" + commandName);\n\t\t} else {\n\t\t\tcommandName = commandName.substr(2); // Trim off the --\n\t\t\t// Accumulate the parameters to the command\n\t\t\tvar params = [];\n\t\t\twhile(this.nextToken < this.commandTokens.length && \n\t\t\t\tthis.commandTokens[this.nextToken].substr(0,2) !== \"--\") {\n\t\t\t\tparams.push(this.commandTokens[this.nextToken++]);\n\t\t\t}\n\t\t\t// Get the command info\n\t\t\tvar command = $tw.commands[commandName],\n\t\t\t\tc,err;\n\t\t\tif(!command) {\n\t\t\t\tthis.callback(\"Unknown command: \" + commandName);\n\t\t\t} else {\n\t\t\t\tif(this.verbose) {\n\t\t\t\t\tthis.streams.output.write(\"Executing command: \" + commandName + \" \" + params.join(\" \") + \"\\n\");\n\t\t\t\t}\n\t\t\t\tif(command.info.synchronous) {\n\t\t\t\t\t// Synchronous command\n\t\t\t\t\tc = new command.Command(params,this);\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.executeNextCommand();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Asynchronous command\n\t\t\t\t\tc = new command.Command(params,this,function(err) {\n\t\t\t\t\t\tif(err) {\n\t\t\t\t\t\t\tself.callback(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.executeNextCommand();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nCommander.initCommands = function(moduleType) {\n\tmoduleType = moduleType || \"command\";\n\t$tw.commands = {};\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tvar c = $tw.commands[module.info.name] = {};\n\t\t// Add the methods defined by the module\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\tc[f] = module[f];\n\t\t\t}\n\t\t}\n\t});\n};\n\nexports.Commander = Commander;\n\n})();\n",
"title": "$:/core/modules/commander.js",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/commands/build.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/build.js\ntype: application/javascript\nmodule-type: command\n\nCommand to build a build target\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"build\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\t// Get the build targets defined in the wiki\n\tvar buildTargets = $tw.boot.wikiInfo.build;\n\tif(!buildTargets) {\n\t\treturn \"No build targets defined\";\n\t}\n\t// Loop through each of the specified targets\n\tvar targets;\n\tif(this.params.length > 0) {\n\t\ttargets = this.params;\n\t} else {\n\t\ttargets = Object.keys(buildTargets);\n\t}\n\tfor(var targetIndex=0; targetIndex<targets.length; targetIndex++) {\n\t\tvar target = targets[targetIndex],\n\t\t\tcommands = buildTargets[target];\n\t\tif(!commands) {\n\t\t\treturn \"Build target '\" + target + \"' not found\";\n\t\t}\n\t\t// Add the commands to the queue\n\t\tthis.commander.addCommandTokens(commands);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/build.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/clearpassword.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/clearpassword.js\ntype: application/javascript\nmodule-type: command\n\nClear password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"clearpassword\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\t$tw.crypto.setPassword(null);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/clearpassword.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/editions.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/editions.js\ntype: application/javascript\nmodule-type: command\n\nCommand to list the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"editions\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this;\n\t// Output the list\n\tthis.commander.streams.output.write(\"Available editions:\\n\\n\");\n\tvar editionInfo = $tw.utils.getEditionInfo();\n\t$tw.utils.each(editionInfo,function(info,name) {\n\t\tself.commander.streams.output.write(\" \" + name + \": \" + info.description + \"\\n\");\n\t});\n\tthis.commander.streams.output.write(\"\\n\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/editions.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/fetch.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/fetch.js\ntype: application/javascript\nmodule-type: command\n\nCommands to fetch external tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"fetch\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing subcommand and url\";\n\t}\n\tvar subcommand = this.params[0],\n\t\turl = this.params[1],\n\t\timportFilter = this.params[2] || \"[all[tiddlers]]\",\n\t\ttransformFilter = this.params[3] || \"\";\n\tswitch(subcommand) {\n\t\tcase \"file\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turl: url,\n\t\t\t\timportFilter: importFilter,\n\t\t\t\ttransformFilter: transformFilter,\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"files\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turlFilter: url,\n\t\t\t\timportFilter: importFilter,\n\t\t\t\ttransformFilter: transformFilter,\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t}\n\treturn null;\n};\n\nCommand.prototype.fetchFiles = function(options) {\n\tvar self = this;\n\t// Get the list of URLs\n\tvar urls;\n\tif(options.url) {\n\t\turls = [options.url]\n\t} else if(options.urlFilter) {\n\t\turls = $tw.wiki.filterTiddlers(options.urlFilter);\n\t} else {\n\t\treturn \"Missing URL\";\n\t}\n\t// Process each URL in turn\n\tvar next = 0;\n\tvar getNextFile = function(err) {\n\t\tif(err) {\n\t\t\treturn options.callback(err);\n\t\t}\n\t\tif(next < urls.length) {\n\t\t\tself.fetchFile(urls[next++],options,getNextFile);\n\t\t} else {\n\t\t\toptions.callback(null);\n\t\t}\n\t};\n\tgetNextFile(null);\n\t// Success\n\treturn null;\n};\n\nCommand.prototype.fetchFile = function(url,options,callback) {\n\tvar self = this,\n\t\tlib = url.substr(0,8) === \"https://\" ? require(\"https\") : require(\"http\");\n\tlib.get(url).on(\"response\",function(response) {\n\t var type = (response.headers[\"content-type\"] || \"\").split(\";\")[0],\n\t \tbody = \"\";\n\t self.commander.write(\"Reading \" + url + \": \");\n\t response.on(\"data\",function(chunk) {\n\t body += chunk;\n\t self.commander.write(\".\");\n\t });\n\t response.on(\"end\",function() {\n\t self.commander.write(\"\\n\");\n\t if(response.statusCode === 200) {\n\t\t self.processBody(body,type,options);\n\t\t callback(null);\n\t } else {\n\t \tcallback(\"Error \" + response.statusCode + \" retrieving \" + url)\n\t }\n\t \t});\n\t \tresponse.on(\"error\",function(e) {\n\t\t\tconsole.log(\"Error on GET request: \" + e);\n\t\t\tcallback(e);\n\t \t});\n\t});\n\treturn null;\n};\n\nCommand.prototype.processBody = function(body,type,options) {\n\t// Deserialise the HTML file and put the tiddlers in their own wiki\n\tvar self = this,\n\t\tincomingWiki = new $tw.Wiki(),\n\t\ttiddlers = this.commander.wiki.deserializeTiddlers(type || \"text/html\",body,{});\n\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\tincomingWiki.addTiddler(new $tw.Tiddler(tiddler));\n\t});\n\t// Filter the tiddlers to select the ones we want\n\tvar filteredTitles = incomingWiki.filterTiddlers(options.importFilter);\n\t// Import the selected tiddlers\n\tvar count = 0;\n\tincomingWiki.each(function(tiddler,title) {\n\t\tif(filteredTitles.indexOf(title) !== -1) {\n\t\t\tvar newTiddler;\n\t\t\tif(options.transformFilter) {\n\t\t\t\tvar transformedTitle = (incomingWiki.filterTiddlers(options.transformFilter,null,self.commander.wiki.makeTiddlerIterator([title])) || [\"\"])[0];\n\t\t\t\tif(transformedTitle) {\n\t\t\t\t\tself.commander.log(\"Importing \" + title + \" as \" + transformedTitle)\n\t\t\t\t\tnewTiddler = new $tw.Tiddler(tiddler,{title: transformedTitle});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.commander.log(\"Importing \" + title)\n\t\t\t\tnewTiddler = tiddler;\n\t\t\t}\n\t\t\tself.commander.wiki.importTiddler(newTiddler);\n\t\t\tcount++;\n\t\t}\n\t});\n\tself.commander.log(\"Imported \" + count + \" tiddlers\")\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/fetch.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/help.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/help.js\ntype: application/javascript\nmodule-type: command\n\nHelp command\n\n\\*/\n(function(){\n\n/*jshint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"help\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar subhelp = this.params[0] || \"default\",\n\t\thelpBase = \"$:/language/Help/\",\n\t\ttext;\n\tif(!this.commander.wiki.getTiddler(helpBase + subhelp)) {\n\t\tsubhelp = \"notfound\";\n\t}\n\t// Wikify the help as formatted text (ie block elements generate newlines)\n\ttext = this.commander.wiki.renderTiddler(\"text/plain-formatted\",helpBase + subhelp);\n\t// Remove any leading linebreaks\n\ttext = text.replace(/^(\\r?\\n)*/g,\"\");\n\tthis.commander.streams.output.write(text);\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/help.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/init.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/init.js\ntype: application/javascript\nmodule-type: command\n\nCommand to initialise an empty wiki folder\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"init\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\t// Check that we don't already have a valid wiki folder\n\tif($tw.boot.wikiTiddlersPath || ($tw.utils.isDirectory($tw.boot.wikiPath) && !$tw.utils.isDirectoryEmpty($tw.boot.wikiPath))) {\n\t\treturn \"Wiki folder is not empty\";\n\t}\n\t// Loop through each of the specified editions\n\tvar editions = this.params.length > 0 ? this.params : [\"empty\"];\n\tfor(var editionIndex=0; editionIndex<editions.length; editionIndex++) {\n\t\tvar editionName = editions[editionIndex];\n\t\t// Check the edition exists\n\t\tvar editionPath = $tw.findLibraryItem(editionName,$tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar));\n\t\tif(!$tw.utils.isDirectory(editionPath)) {\n\t\t\treturn \"Edition '\" + editionName + \"' not found\";\n\t\t}\n\t\t// Copy the edition content\n\t\tvar err = $tw.utils.copyDirectory(editionPath,$tw.boot.wikiPath);\n\t\tif(!err) {\n\t\t\tthis.commander.streams.output.write(\"Copied edition '\" + editionName + \"' to \" + $tw.boot.wikiPath + \"\\n\");\n\t\t} else {\n\t\t\treturn err;\n\t\t}\n\t}\n\t// Tweak the tiddlywiki.info to remove any included wikis\n\tvar packagePath = $tw.boot.wikiPath + \"/tiddlywiki.info\",\n\t\tpackageJson = JSON.parse(fs.readFileSync(packagePath));\n\tdelete packageJson.includeWikis;\n\tfs.writeFileSync(packagePath,JSON.stringify(packageJson,null,$tw.config.preferences.jsonSpaces));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/init.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/load.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/load.js\ntype: application/javascript\nmodule-type: command\n\nCommand to load tiddlers from a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"load\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar ext = path.extname(self.params[0]),\n\t\tstat = fs.statSync(self.params[0]),\n\t\ttiddlers = $tw.loadTiddlersFromPath(self.params[0]),\n\t\tcount = 0;\n\t$tw.utils.each(tiddlers,function(tiddlerInfo) {\n\t\t$tw.utils.each(tiddlerInfo.tiddlers,function(tiddler) {\n\t\t\tself.commander.wiki.importTiddler(new $tw.Tiddler(tiddler));\n\t\t\tcount++;\n\t\t});\n\t});\n\tif(!count) {\n\t\tself.callback(\"No tiddlers found in file \\\"\" + self.params[0] + \"\\\"\");\n\t} else {\n\t\tself.callback(null);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/load.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/makelibrary.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/makelibrary.js\ntype: application/javascript\nmodule-type: command\n\nCommand to pack all of the plugins in the library into a plugin tiddler of type \"library\"\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"makelibrary\",\n\tsynchronous: true\n};\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar wiki = this.commander.wiki,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tupgradeLibraryTitle = this.params[0] || UPGRADE_LIBRARY_TITLE,\n\t\ttiddlers = {};\n\t// Collect up the library plugins\n\tvar collectPlugins = function(folder) {\n\t\t\tvar pluginFolders = fs.readdirSync(folder);\n\t\t\tfor(var p=0; p<pluginFolders.length; p++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(pluginFolders[p])) {\n\t\t\t\t\tpluginFields = $tw.loadPluginFolder(path.resolve(folder,\"./\" + pluginFolders[p]));\n\t\t\t\t\tif(pluginFields && pluginFields.title) {\n\t\t\t\t\t\ttiddlers[pluginFields.title] = pluginFields;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcollectPublisherPlugins = function(folder) {\n\t\t\tvar publisherFolders = fs.readdirSync(folder);\n\t\t\tfor(var t=0; t<publisherFolders.length; t++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(publisherFolders[t])) {\n\t\t\t\t\tcollectPlugins(path.resolve(folder,\"./\" + publisherFolders[t]));\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\tcollectPublisherPlugins(path.resolve($tw.boot.corePath,$tw.config.pluginsPath));\n\tcollectPublisherPlugins(path.resolve($tw.boot.corePath,$tw.config.themesPath));\n\tcollectPlugins(path.resolve($tw.boot.corePath,$tw.config.languagesPath));\n\t// Save the upgrade library tiddler\n\tvar pluginFields = {\n\t\ttitle: upgradeLibraryTitle,\n\t\ttype: \"application/json\",\n\t\t\"plugin-type\": \"library\",\n\t\t\"text\": JSON.stringify({tiddlers: tiddlers},null,$tw.config.preferences.jsonSpaces)\n\t};\n\twiki.addTiddler(new $tw.Tiddler(pluginFields));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/makelibrary.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/output.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/output.js\ntype: application/javascript\nmodule-type: command\n\nCommand to set the default output location (defaults to current working directory)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"output\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing output path\";\n\t}\n\tthis.commander.outputPath = path.resolve(process.cwd(),this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/output.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/password.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/password.js\ntype: application/javascript\nmodule-type: command\n\nSave password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"password\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing password\";\n\t}\n\t$tw.crypto.setPassword(this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/password.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/rendertiddler.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/rendertiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render a tiddler and save it to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"rendertiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttype = this.params[2] || \"text/html\",\n\t\ttemplate = this.params[3],\n\t\tname = this.params[4],\n\t\tvalue = this.params[5],\n\t\tvariables = {};\n\t$tw.utils.createFileDirectories(filename);\n\tif(template) {\n\t\tvariables.currentTiddler = title;\n\t\ttitle = template;\n\t}\n\tif(name && value) {\n\t\tvariables[name] = value;\n\t}\n\tfs.writeFile(filename,this.commander.wiki.renderTiddler(type,title,{variables: variables}),\"utf8\",function(err) {\n\t\tself.callback(err);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/rendertiddler.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/rendertiddlers.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/rendertiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"rendertiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\ttemplate = this.params[1],\n\t\toutputPath = this.commander.outputPath,\n\t\tpathname = path.resolve(outputPath,this.params[2]),\t\t\n\t\ttype = this.params[3] || \"text/html\",\n\t\textension = this.params[4] || \".html\",\n\t\tdeleteDirectory = (this.params[5] || \"\").toLowerCase() !== \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(template),\n\t\t\twidgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}}),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\tvar text = type === \"text/html\" ? container.innerHTML : container.textContent,\n\t\t\texportPath = null;\n\t\tif($tw.utils.hop($tw.macros,\"tv-get-export-path\")) {\n\t\t\tvar macroPath = $tw.macros[\"tv-get-export-path\"].run.apply(self,[title]);\n\t\t\tif(macroPath) {\n\t\t\t\texportPath = path.resolve(outputPath,macroPath + extension);\n\t\t\t}\n\t\t}\n\t\tvar finalPath = exportPath || path.resolve(pathname,encodeURIComponent(title) + extension);\n\t\t$tw.utils.createFileDirectories(finalPath);\n\t\tfs.writeFileSync(finalPath,text,\"utf8\");\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/rendertiddlers.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savelibrarytiddlers.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/savelibrarytiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the subtiddlers of a bundle tiddler as a series of JSON files\n\n--savelibrarytiddlers <tiddler> <pathname> <skinnylisting>\n\nThe tiddler identifies the bundle tiddler that contains the subtiddlers.\n\nThe pathname specifies the pathname to the folder in which the JSON files should be saved. The filename is the URL encoded title of the subtiddler.\n\nThe skinnylisting specifies the title of the tiddler to which a JSON catalogue of the subtiddlers will be saved. The JSON file contains the same data as the bundle tiddler but with the `text` field removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savelibrarytiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tcontainerTitle = this.params[0],\n\t\tfilter = this.params[1],\n\t\tbasepath = this.params[2],\n\t\tskinnyListTitle = this.params[3];\n\t// Get the container tiddler as data\n\tvar containerData = self.commander.wiki.getTiddlerDataCached(containerTitle,undefined);\n\tif(!containerData) {\n\t\treturn \"'\" + containerTitle + \"' is not a tiddler bundle\";\n\t}\n\t// Filter the list of plugins\n\tvar pluginList = [];\n\t$tw.utils.each(containerData.tiddlers,function(tiddler,title) {\n\t\tpluginList.push(title);\n\t});\n\tvar filteredPluginList;\n\tif(filter) {\n\t\tfilteredPluginList = self.commander.wiki.filterTiddlers(filter,null,self.commander.wiki.makeTiddlerIterator(pluginList));\n\t} else {\n\t\tfilteredPluginList = pluginList;\n\t}\n\t// Iterate through the plugins\n\tvar skinnyList = [];\n\t$tw.utils.each(filteredPluginList,function(title) {\n\t\tvar tiddler = containerData.tiddlers[title];\n\t\t// Save each JSON file and collect the skinny data\n\t\tvar pathname = path.resolve(self.commander.outputPath,basepath + encodeURIComponent(title) + \".json\");\n\t\t$tw.utils.createFileDirectories(pathname);\n\t\tfs.writeFileSync(pathname,JSON.stringify(tiddler,null,$tw.config.preferences.jsonSpaces),\"utf8\");\n\t\t// Collect the skinny list data\n\t\tvar pluginTiddlers = JSON.parse(tiddler.text),\n\t\t\treadmeContent = (pluginTiddlers.tiddlers[title + \"/readme\"] || {}).text,\n\t\t\ticonTiddler = pluginTiddlers.tiddlers[title + \"/icon\"] || {},\n\t\t\ticonType = iconTiddler.type,\n\t\t\ticonText = iconTiddler.text,\n\t\t\ticonContent;\n\t\tif(iconType && iconText) {\n\t\t\ticonContent = $tw.utils.makeDataUri(iconText,iconType);\n\t\t}\n\t\tskinnyList.push($tw.utils.extend({},tiddler,{text: undefined, readme: readmeContent, icon: iconContent}));\n\t});\n\t// Save the catalogue tiddler\n\tif(skinnyListTitle) {\n\t\tself.commander.wiki.setTiddlerData(skinnyListTitle,skinnyList);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/savelibrarytiddlers.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savetiddler.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/savetiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the content of a tiddler to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savetiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttiddler = this.commander.wiki.getTiddler(title);\n\tif(tiddler) {\n\t\tvar type = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"};\n\t\t$tw.utils.createFileDirectories(filename);\n\t\tfs.writeFile(filename,tiddler.fields.text,contentTypeInfo.encoding,function(err) {\n\t\t\tself.callback(err);\n\t\t});\n\t} else {\n\t\treturn \"Missing tiddler: \" + title;\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/savetiddler.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savetiddlers.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/savetiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"savetiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tpathname = path.resolve(this.commander.outputPath,this.params[1]),\n\t\tdeleteDirectory = (this.params[2] || \"\").toLowerCase() !== \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.createDirectory(pathname);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.commander.wiki.getTiddler(title),\n\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"},\n\t\t\tfilename = path.resolve(pathname,encodeURIComponent(title));\n\t\tfs.writeFileSync(filename,tiddler.fields.text,contentTypeInfo.encoding);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/savetiddlers.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/server.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/server.js\ntype: application/javascript\nmodule-type: command\n\nServe tiddlers over http\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nif($tw.node) {\n\tvar util = require(\"util\"),\n\t\tfs = require(\"fs\"),\n\t\turl = require(\"url\"),\n\t\tpath = require(\"path\"),\n\t\thttp = require(\"http\");\n}\n\nexports.info = {\n\tname: \"server\",\n\tsynchronous: true\n};\n\n/*\nA simple HTTP server with regexp-based routes\n*/\nfunction SimpleServer(options) {\n\tthis.routes = options.routes || [];\n\tthis.wiki = options.wiki;\n\tthis.variables = options.variables || {};\n}\n\nSimpleServer.prototype.set = function(obj) {\n\tvar self = this;\n\t$tw.utils.each(obj,function(value,name) {\n\t\tself.variables[name] = value;\n\t});\n};\n\nSimpleServer.prototype.get = function(name) {\n\treturn this.variables[name];\n};\n\nSimpleServer.prototype.addRoute = function(route) {\n\tthis.routes.push(route);\n};\n\nSimpleServer.prototype.findMatchingRoute = function(request,state) {\n\tvar pathprefix = this.get(\"pathprefix\") || \"\";\n\tfor(var t=0; t<this.routes.length; t++) {\n\t\tvar potentialRoute = this.routes[t],\n\t\t\tpathRegExp = potentialRoute.path,\n\t\t\tpathname = state.urlInfo.pathname,\n\t\t\tmatch;\n\t\tif(pathprefix) {\n\t\t\tif(pathname.substr(0,pathprefix.length) === pathprefix) {\n\t\t\t\tpathname = pathname.substr(pathprefix.length);\n\t\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t\t} else {\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t} else {\n\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t}\n\t\tif(match && request.method === potentialRoute.method) {\n\t\t\tstate.params = [];\n\t\t\tfor(var p=1; p<match.length; p++) {\n\t\t\t\tstate.params.push(match[p]);\n\t\t\t}\n\t\t\treturn potentialRoute;\n\t\t}\n\t}\n\treturn null;\n};\n\nSimpleServer.prototype.checkCredentials = function(request,incomingUsername,incomingPassword) {\n\tvar header = request.headers.authorization || \"\",\n\t\ttoken = header.split(/\\s+/).pop() || \"\",\n\t\tauth = $tw.utils.base64Decode(token),\n\t\tparts = auth.split(/:/),\n\t\tusername = parts[0],\n\t\tpassword = parts[1];\n\tif(incomingUsername === username && incomingPassword === password) {\n\t\treturn \"ALLOWED\";\n\t} else {\n\t\treturn \"DENIED\";\n\t}\n};\n\nSimpleServer.prototype.requestHandler = function(request,response) {\n\t// Compose the state object\n\tvar self = this;\n\tvar state = {};\n\tstate.wiki = self.wiki;\n\tstate.server = self;\n\tstate.urlInfo = url.parse(request.url);\n\t// Find the route that matches this path\n\tvar route = self.findMatchingRoute(request,state);\n\t// Check for the username and password if we've got one\n\tvar username = self.get(\"username\"),\n\t\tpassword = self.get(\"password\");\n\tif(username && password) {\n\t\t// Check they match\n\t\tif(self.checkCredentials(request,username,password) !== \"ALLOWED\") {\n\t\t\tvar servername = state.wiki.getTiddlerText(\"$:/SiteTitle\") || \"TiddlyWiki5\";\n\t\t\tresponse.writeHead(401,\"Authentication required\",{\n\t\t\t\t\"WWW-Authenticate\": 'Basic realm=\"Please provide your username and password to login to ' + servername + '\"'\n\t\t\t});\n\t\t\tresponse.end();\n\t\t\treturn;\n\t\t}\n\t}\n\t// Return a 404 if we didn't find a route\n\tif(!route) {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t\treturn;\n\t}\n\t// Set the encoding for the incoming request\n\t// TODO: Presumably this would need tweaking if we supported PUTting binary tiddlers\n\trequest.setEncoding(\"utf8\");\n\t// Dispatch the appropriate method\n\tswitch(request.method) {\n\t\tcase \"GET\": // Intentional fall-through\n\t\tcase \"DELETE\":\n\t\t\troute.handler(request,response,state);\n\t\t\tbreak;\n\t\tcase \"PUT\":\n\t\t\tvar data = \"\";\n\t\t\trequest.on(\"data\",function(chunk) {\n\t\t\t\tdata += chunk.toString();\n\t\t\t});\n\t\t\trequest.on(\"end\",function() {\n\t\t\t\tstate.data = data;\n\t\t\t\troute.handler(request,response,state);\n\t\t\t});\n\t\t\tbreak;\n\t}\n};\n\t\nSimpleServer.prototype.listen = function(port,host) {\n\thttp.createServer(this.requestHandler.bind(this)).listen(port,host);\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n\t// Set up server\n\tthis.server = new SimpleServer({\n\t\twiki: this.commander.wiki\n\t});\n\t// Add route handlers\n\tthis.server.addRoute({\n\t\tmethod: \"PUT\",\n\t\tpath: /^\\/recipes\\/default\\/tiddlers\\/(.+)$/,\n\t\thandler: function(request,response,state) {\n\t\t\tvar title = decodeURIComponent(state.params[0]),\n\t\t\t\tfields = JSON.parse(state.data);\n\t\t\t// Pull up any subfields in the `fields` object\n\t\t\tif(fields.fields) {\n\t\t\t\t$tw.utils.each(fields.fields,function(field,name) {\n\t\t\t\t\tfields[name] = field;\n\t\t\t\t});\n\t\t\t\tdelete fields.fields;\n\t\t\t}\n\t\t\t// Remove any revision field\n\t\t\tif(fields.revision) {\n\t\t\t\tdelete fields.revision;\n\t\t\t}\n\t\t\tstate.wiki.addTiddler(new $tw.Tiddler(state.wiki.getCreationFields(),fields,{title: title},state.wiki.getModificationFields()));\n\t\t\tvar changeCount = state.wiki.getChangeCount(title).toString();\n\t\t\tresponse.writeHead(204, \"OK\",{\n\t\t\t\tEtag: \"\\\"default/\" + encodeURIComponent(title) + \"/\" + changeCount + \":\\\"\",\n\t\t\t\t\"Content-Type\": \"text/plain\"\n\t\t\t});\n\t\t\tresponse.end();\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \"DELETE\",\n\t\tpath: /^\\/bags\\/default\\/tiddlers\\/(.+)$/,\n\t\thandler: function(request,response,state) {\n\t\t\tvar title = decodeURIComponent(state.params[0]);\n\t\t\tstate.wiki.deleteTiddler(title);\n\t\t\tresponse.writeHead(204, \"OK\", {\n\t\t\t\t\"Content-Type\": \"text/plain\"\n\t\t\t});\n\t\t\tresponse.end();\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \"GET\",\n\t\tpath: /^\\/$/,\n\t\thandler: function(request,response,state) {\n\t\t\tresponse.writeHead(200, {\"Content-Type\": state.server.get(\"serveType\")});\n\t\t\tvar text = state.wiki.renderTiddler(state.server.get(\"renderType\"),state.server.get(\"rootTiddler\"));\n\t\t\tresponse.end(text,\"utf8\");\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \"GET\",\n\t\tpath: /^\\/status$/,\n\t\thandler: function(request,response,state) {\n\t\t\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\t\t\tvar text = JSON.stringify({\n\t\t\t\tusername: state.server.get(\"username\"),\n\t\t\t\tspace: {\n\t\t\t\t\trecipe: \"default\"\n\t\t\t\t},\n\t\t\t\ttiddlywiki_version: $tw.version\n\t\t\t});\n\t\t\tresponse.end(text,\"utf8\");\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \"GET\",\n\t\tpath: /^\\/favicon.ico$/,\n\t\thandler: function(request,response,state) {\n\t\t\tresponse.writeHead(200, {\"Content-Type\": \"image/x-icon\"});\n\t\t\tvar buffer = state.wiki.getTiddlerText(\"$:/favicon.ico\",\"\");\n\t\t\tresponse.end(buffer,\"base64\");\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \"GET\",\n\t\tpath: /^\\/recipes\\/default\\/tiddlers.json$/,\n\t\thandler: function(request,response,state) {\n\t\t\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\t\t\tvar tiddlers = [];\n\t\t\tstate.wiki.forEachTiddler({sortField: \"title\"},function(title,tiddler) {\n\t\t\t\tvar tiddlerFields = {};\n\t\t\t\t$tw.utils.each(tiddler.fields,function(field,name) {\n\t\t\t\t\tif(name !== \"text\") {\n\t\t\t\t\t\ttiddlerFields[name] = tiddler.getFieldString(name);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\t\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\t\t\ttiddlers.push(tiddlerFields);\n\t\t\t});\n\t\t\tvar text = JSON.stringify(tiddlers);\n\t\t\tresponse.end(text,\"utf8\");\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \"GET\",\n\t\tpath: /^\\/recipes\\/default\\/tiddlers\\/(.+)$/,\n\t\thandler: function(request,response,state) {\n\t\t\tvar title = decodeURIComponent(state.params[0]),\n\t\t\t\ttiddler = state.wiki.getTiddler(title),\n\t\t\t\ttiddlerFields = {},\n\t\t\t\tknownFields = [\n\t\t\t\t\t\"bag\", \"created\", \"creator\", \"modified\", \"modifier\", \"permissions\", \"recipe\", \"revision\", \"tags\", \"text\", \"title\", \"type\", \"uri\"\n\t\t\t\t];\n\t\t\tif(tiddler) {\n\t\t\t\t$tw.utils.each(tiddler.fields,function(field,name) {\n\t\t\t\t\tvar value = tiddler.getFieldString(name);\n\t\t\t\t\tif(knownFields.indexOf(name) !== -1) {\n\t\t\t\t\t\ttiddlerFields[name] = value;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttiddlerFields.fields = tiddlerFields.fields || {};\n\t\t\t\t\t\ttiddlerFields.fields[name] = value;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\t\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\t\t\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\t\t\t\tresponse.end(JSON.stringify(tiddlerFields),\"utf8\");\n\t\t\t} else {\n\t\t\t\tresponse.writeHead(404);\n\t\t\t\tresponse.end();\n\t\t\t}\n\t\t}\n\t});\n};\n\nCommand.prototype.execute = function() {\n\tif(!$tw.boot.wikiTiddlersPath) {\n\t\t$tw.utils.warning(\"Warning: Wiki folder '\" + $tw.boot.wikiPath + \"' does not exist or is missing a tiddlywiki.info file\");\n\t}\n\tvar port = this.params[0] || \"8080\",\n\t\trootTiddler = this.params[1] || \"$:/core/save/all\",\n\t\trenderType = this.params[2] || \"text/plain\",\n\t\tserveType = this.params[3] || \"text/html\",\n\t\tusername = this.params[4],\n\t\tpassword = this.params[5],\n\t\thost = this.params[6] || \"127.0.0.1\",\n\t\tpathprefix = this.params[7];\n\tthis.server.set({\n\t\trootTiddler: rootTiddler,\n\t\trenderType: renderType,\n\t\tserveType: serveType,\n\t\tusername: username,\n\t\tpassword: password,\n\t\tpathprefix: pathprefix\n\t});\n\tthis.server.listen(port,host);\n\tconsole.log(\"Serving on \" + host + \":\" + port);\n\tconsole.log(\"(press ctrl-C to exit)\");\n\t// Warn if required plugins are missing\n\tif(!$tw.wiki.getTiddler(\"$:/plugins/tiddlywiki/tiddlyweb\") || !$tw.wiki.getTiddler(\"$:/plugins/tiddlywiki/filesystem\")) {\n\t\t$tw.utils.warning(\"Warning: Plugins required for client-server operation (\\\"tiddlywiki/filesystem\\\" and \\\"tiddlywiki/tiddlyweb\\\") are missing from tiddlywiki.info file\");\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/server.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/setfield.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/setfield.js\ntype: application/javascript\nmodule-type: command\n\nCommand to modify selected tiddlers to set a field to the text of a template tiddler that has been wikified with the selected tiddler as the current tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"setfield\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 4) {\n\t\treturn \"Missing parameters\";\n\t}\n\tvar self = this,\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tfieldname = this.params[1] || \"text\",\n\t\ttemplatetitle = this.params[2],\n\t\trendertype = this.params[3] || \"text/plain\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(templatetitle),\n\t\t\tnewFields = {},\n\t\t\ttiddler = wiki.getTiddler(title);\n\t\tif(parser) {\n\t\t\tvar widgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}});\n\t\t\tvar container = $tw.fakeDocument.createElement(\"div\");\n\t\t\twidgetNode.render(container,null);\n\t\t\tnewFields[fieldname] = rendertype === \"text/html\" ? container.innerHTML : container.textContent;\n\t\t} else {\n\t\t\tnewFields[fieldname] = undefined;\n\t\t}\n\t\twiki.addTiddler(new $tw.Tiddler(tiddler,newFields));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/setfield.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/unpackplugin.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/unpackplugin.js\ntype: application/javascript\nmodule-type: command\n\nCommand to extract the shadow tiddlers from within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"unpackplugin\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing plugin name\";\n\t}\n\tvar self = this,\n\t\ttitle = this.params[0],\n\t\tpluginData = this.commander.wiki.getTiddlerDataCached(title);\n\tif(!pluginData) {\n\t\treturn \"Plugin '\" + title + \"' not found\";\n\t}\n\t$tw.utils.each(pluginData.tiddlers,function(tiddler) {\n\t\tself.commander.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/unpackplugin.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/verbose.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/verbose.js\ntype: application/javascript\nmodule-type: command\n\nVerbose command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"verbose\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.verbose = true;\n\t// Output the boot message log\n\tthis.commander.streams.output.write(\"Boot log:\\n \" + $tw.boot.logMessages.join(\"\\n \") + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/verbose.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/version.js": {
"text": "/*\\\ntitle: $:/core/modules/commands/version.js\ntype: application/javascript\nmodule-type: command\n\nVersion command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"version\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.streams.output.write($tw.version + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
"title": "$:/core/modules/commands/version.js",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/config.js": {
"text": "/*\\\ntitle: $:/core/modules/config.js\ntype: application/javascript\nmodule-type: config\n\nCore configuration constants\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.preferences = {};\n\nexports.preferences.notificationDuration = 3 * 1000;\nexports.preferences.jsonSpaces = 4;\n\nexports.textPrimitives = {\n\tupperLetter: \"[A-Z\\u00c0-\\u00d6\\u00d8-\\u00de\\u0150\\u0170]\",\n\tlowerLetter: \"[a-z\\u00df-\\u00f6\\u00f8-\\u00ff\\u0151\\u0171]\",\n\tanyLetter: \"[A-Za-z0-9\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\",\n\tblockPrefixLetters:\t\"[A-Za-z0-9-_\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\"\n};\n\nexports.textPrimitives.unWikiLink = \"~\";\nexports.textPrimitives.wikiLink = exports.textPrimitives.upperLetter + \"+\" +\n\texports.textPrimitives.lowerLetter + \"+\" +\n\texports.textPrimitives.upperLetter +\n\texports.textPrimitives.anyLetter + \"*\";\n\nexports.htmlEntities = {quot:34, amp:38, apos:39, lt:60, gt:62, nbsp:160, iexcl:161, cent:162, pound:163, curren:164, yen:165, brvbar:166, sect:167, uml:168, copy:169, ordf:170, laquo:171, not:172, shy:173, reg:174, macr:175, deg:176, plusmn:177, sup2:178, sup3:179, acute:180, micro:181, para:182, middot:183, cedil:184, sup1:185, ordm:186, raquo:187, frac14:188, frac12:189, frac34:190, iquest:191, Agrave:192, Aacute:193, Acirc:194, Atilde:195, Auml:196, Aring:197, AElig:198, Ccedil:199, Egrave:200, Eacute:201, Ecirc:202, Euml:203, Igrave:204, Iacute:205, Icirc:206, Iuml:207, ETH:208, Ntilde:209, Ograve:210, Oacute:211, Ocirc:212, Otilde:213, Ouml:214, times:215, Oslash:216, Ugrave:217, Uacute:218, Ucirc:219, Uuml:220, Yacute:221, THORN:222, szlig:223, agrave:224, aacute:225, acirc:226, atilde:227, auml:228, aring:229, aelig:230, ccedil:231, egrave:232, eacute:233, ecirc:234, euml:235, igrave:236, iacute:237, icirc:238, iuml:239, eth:240, ntilde:241, ograve:242, oacute:243, ocirc:244, otilde:245, ouml:246, divide:247, oslash:248, ugrave:249, uacute:250, ucirc:251, uuml:252, yacute:253, thorn:254, yuml:255, OElig:338, oelig:339, Scaron:352, scaron:353, Yuml:376, fnof:402, circ:710, tilde:732, Alpha:913, Beta:914, Gamma:915, Delta:916, Epsilon:917, Zeta:918, Eta:919, Theta:920, Iota:921, Kappa:922, Lambda:923, Mu:924, Nu:925, Xi:926, Omicron:927, Pi:928, Rho:929, Sigma:931, Tau:932, Upsilon:933, Phi:934, Chi:935, Psi:936, Omega:937, alpha:945, beta:946, gamma:947, delta:948, epsilon:949, zeta:950, eta:951, theta:952, iota:953, kappa:954, lambda:955, mu:956, nu:957, xi:958, omicron:959, pi:960, rho:961, sigmaf:962, sigma:963, tau:964, upsilon:965, phi:966, chi:967, psi:968, omega:969, thetasym:977, upsih:978, piv:982, ensp:8194, emsp:8195, thinsp:8201, zwnj:8204, zwj:8205, lrm:8206, rlm:8207, ndash:8211, mdash:8212, lsquo:8216, rsquo:8217, sbquo:8218, ldquo:8220, rdquo:8221, bdquo:8222, dagger:8224, Dagger:8225, bull:8226, hellip:8230, permil:8240, prime:8242, Prime:8243, lsaquo:8249, rsaquo:8250, oline:8254, frasl:8260, euro:8364, image:8465, weierp:8472, real:8476, trade:8482, alefsym:8501, larr:8592, uarr:8593, rarr:8594, darr:8595, harr:8596, crarr:8629, lArr:8656, uArr:8657, rArr:8658, dArr:8659, hArr:8660, forall:8704, part:8706, exist:8707, empty:8709, nabla:8711, isin:8712, notin:8713, ni:8715, prod:8719, sum:8721, minus:8722, lowast:8727, radic:8730, prop:8733, infin:8734, ang:8736, and:8743, or:8744, cap:8745, cup:8746, int:8747, there4:8756, sim:8764, cong:8773, asymp:8776, ne:8800, equiv:8801, le:8804, ge:8805, sub:8834, sup:8835, nsub:8836, sube:8838, supe:8839, oplus:8853, otimes:8855, perp:8869, sdot:8901, lceil:8968, rceil:8969, lfloor:8970, rfloor:8971, lang:9001, rang:9002, loz:9674, spades:9824, clubs:9827, hearts:9829, diams:9830 };\n\nexports.htmlVoidElements = \"area,base,br,col,command,embed,hr,img,input,keygen,link,meta,param,source,track,wbr\".split(\",\");\n\nexports.htmlBlockElements = \"address,article,aside,audio,blockquote,canvas,dd,div,dl,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,hr,li,noscript,ol,output,p,pre,section,table,tfoot,ul,video\".split(\",\");\n\nexports.htmlUnsafeElements = \"script\".split(\",\");\n\n})();\n",
"title": "$:/core/modules/config.js",
"type": "application/javascript",
"module-type": "config"
},
"$:/core/modules/deserializers.js": {
"text": "/*\\\ntitle: $:/core/modules/deserializers.js\ntype: application/javascript\nmodule-type: tiddlerdeserializer\n\nFunctions to deserialise tiddlers from a block of text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nUtility function to parse an old-style tiddler DIV in a *.tid file. It looks like this:\n\n<div title=\"Title\" creator=\"JoeBloggs\" modifier=\"JoeBloggs\" created=\"201102111106\" modified=\"201102111310\" tags=\"myTag [[my long tag]]\">\n<pre>The text of the tiddler (without the expected HTML encoding).\n</pre>\n</div>\n\nNote that the field attributes are HTML encoded, but that the body of the <PRE> tag is not encoded.\n\nWhen these tiddler DIVs are encountered within a TiddlyWiki HTML file then the body is encoded in the usual way.\n*/\nvar parseTiddlerDiv = function(text /* [,fields] */) {\n\t// Slot together the default results\n\tvar result = {};\n\tif(arguments.length > 1) {\n\t\tfor(var f=1; f<arguments.length; f++) {\n\t\t\tvar fields = arguments[f];\n\t\t\tfor(var t in fields) {\n\t\t\t\tresult[t] = fields[t];\t\t\n\t\t\t}\n\t\t}\n\t}\n\t// Parse the DIV body\n\tvar startRegExp = /^\\s*<div\\s+([^>]*)>(\\s*<pre>)?/gi,\n\t\tendRegExp,\n\t\tmatch = startRegExp.exec(text);\n\tif(match) {\n\t\t// Old-style DIVs don't have the <pre> tag\n\t\tif(match[2]) {\n\t\t\tendRegExp = /<\\/pre>\\s*<\\/div>\\s*$/gi;\n\t\t} else {\n\t\t\tendRegExp = /<\\/div>\\s*$/gi;\n\t\t}\n\t\tvar endMatch = endRegExp.exec(text);\n\t\tif(endMatch) {\n\t\t\t// Extract the text\n\t\t\tresult.text = text.substring(match.index + match[0].length,endMatch.index);\n\t\t\t// Process the attributes\n\t\t\tvar attrRegExp = /\\s*([^=\\s]+)\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)')/gi,\n\t\t\t\tattrMatch;\n\t\t\tdo {\n\t\t\t\tattrMatch = attrRegExp.exec(match[1]);\n\t\t\t\tif(attrMatch) {\n\t\t\t\t\tvar name = attrMatch[1];\n\t\t\t\t\tvar value = attrMatch[2] !== undefined ? attrMatch[2] : attrMatch[3];\n\t\t\t\t\tresult[name] = value;\n\t\t\t\t}\n\t\t\t} while(attrMatch);\n\t\t\treturn result;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports[\"application/x-tiddler-html-div\"] = function(text,fields) {\n\treturn [parseTiddlerDiv(text,fields)];\n};\n\nexports[\"application/json\"] = function(text,fields) {\n\tvar incoming,\n\t\tresults = [];\n\ttry {\n\t\tincoming = JSON.parse(text);\n\t} catch(e) {\n\t\tincoming = [{\n\t\t\ttitle: \"JSON error: \" + e,\n\t\t\ttext: \"\"\n\t\t}]\n\t}\n\tif(!$tw.utils.isArray(incoming)) {\n\t\tincoming = [incoming];\n\t}\n\tfor(var t=0; t<incoming.length; t++) {\n\t\tvar incomingFields = incoming[t],\n\t\t\tfields = {};\n\t\tfor(var f in incomingFields) {\n\t\t\tif(typeof incomingFields[f] === \"string\") {\n\t\t\t\tfields[f] = incomingFields[f];\n\t\t\t}\n\t\t}\n\t\tresults.push(fields);\n\t}\n\treturn results;\n};\n\n/*\nParse an HTML file into tiddlers. There are three possibilities:\n# A TiddlyWiki classic HTML file containing `text/x-tiddlywiki` tiddlers\n# A TiddlyWiki5 HTML file containing `text/vnd.tiddlywiki` tiddlers\n# An ordinary HTML file\n*/\nexports[\"text/html\"] = function(text,fields) {\n\t// Check if we've got a store area\n\tvar storeAreaMarkerRegExp = /<div id=[\"']?storeArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\tmatch = storeAreaMarkerRegExp.exec(text);\n\tif(match) {\n\t\t// If so, it's either a classic TiddlyWiki file or an unencrypted TW5 file\n\t\t// First read the normal tiddlers\n\t\tvar results = deserializeTiddlyWikiFile(text,storeAreaMarkerRegExp.lastIndex,!!match[1],fields);\n\t\t// Then any system tiddlers\n\t\tvar systemAreaMarkerRegExp = /<div id=[\"']?systemArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\t\tsysMatch = systemAreaMarkerRegExp.exec(text);\n\t\tif(sysMatch) {\n\t\t\tresults.push.apply(results,deserializeTiddlyWikiFile(text,systemAreaMarkerRegExp.lastIndex,!!sysMatch[1],fields));\n\t\t}\n\t\treturn results;\n\t} else {\n\t\t// Check whether we've got an encrypted file\n\t\tvar encryptedStoreArea = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedStoreArea) {\n\t\t\t// If so, attempt to decrypt it using the current password\n\t\t\treturn $tw.utils.decryptStoreArea(encryptedStoreArea);\n\t\t} else {\n\t\t\t// It's not a TiddlyWiki so we'll return the entire HTML file as a tiddler\n\t\t\treturn deserializeHtmlFile(text,fields);\n\t\t}\n\t}\n};\n\nfunction deserializeHtmlFile(text,fields) {\n\tvar result = {};\n\t$tw.utils.each(fields,function(value,name) {\n\t\tresult[name] = value;\n\t});\n\tresult.text = text;\n\tresult.type = \"text/html\";\n\treturn [result];\n}\n\nfunction deserializeTiddlyWikiFile(text,storeAreaEnd,isTiddlyWiki5,fields) {\n\tvar results = [],\n\t\tendOfDivRegExp = /(<\\/div>\\s*)/gi,\n\t\tstartPos = storeAreaEnd,\n\t\tdefaultType = isTiddlyWiki5 ? undefined : \"text/x-tiddlywiki\";\n\tendOfDivRegExp.lastIndex = startPos;\n\tvar match = endOfDivRegExp.exec(text);\n\twhile(match) {\n\t\tvar endPos = endOfDivRegExp.lastIndex,\n\t\t\ttiddlerFields = parseTiddlerDiv(text.substring(startPos,endPos),fields,{type: defaultType});\n\t\tif(!tiddlerFields) {\n\t\t\tbreak;\n\t\t}\n\t\t$tw.utils.each(tiddlerFields,function(value,name) {\n\t\t\tif(typeof value === \"string\") {\n\t\t\t\ttiddlerFields[name] = $tw.utils.htmlDecode(value);\n\t\t\t}\n\t\t});\n\t\tif(tiddlerFields.text !== null) {\n\t\t\tresults.push(tiddlerFields);\n\t\t}\n\t\tstartPos = endPos;\n\t\tmatch = endOfDivRegExp.exec(text);\n\t}\n\treturn results;\n}\n\n})();\n",
"title": "$:/core/modules/deserializers.js",
"type": "application/javascript",
"module-type": "tiddlerdeserializer"
},
"$:/core/modules/editor/engines/framed.js": {
"text": "/*\\\ntitle: $:/core/modules/editor/engines/framed.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea within an iframe. This is done so that the selection is preserved even when clicking away from the textarea\n\n\\*/\n(function(){\n\n/*jslint node: true,browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\nfunction FramedEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Create our hidden dummy text area for reading styles\n\tthis.dummyTextArea = this.widget.document.createElement(\"textarea\");\n\tif(this.widget.editClass) {\n\t\tthis.dummyTextArea.className = this.widget.editClass;\n\t}\n\tthis.dummyTextArea.setAttribute(\"hidden\",\"true\");\n\tthis.parentNode.insertBefore(this.dummyTextArea,this.nextSibling);\n\tthis.widget.domNodes.push(this.dummyTextArea);\n\t// Create the iframe\n\tthis.iframeNode = this.widget.document.createElement(\"iframe\");\n\tthis.parentNode.insertBefore(this.iframeNode,this.nextSibling);\n\tthis.iframeDoc = this.iframeNode.contentWindow.document;\n\t// (Firefox requires us to put some empty content in the iframe)\n\tthis.iframeDoc.open();\n\tthis.iframeDoc.write(\"\");\n\tthis.iframeDoc.close();\n\t// Style the iframe\n\tthis.iframeNode.className = this.dummyTextArea.className;\n\tthis.iframeNode.style.border = \"none\";\n\tthis.iframeNode.style.padding = \"0\";\n\tthis.iframeNode.style.resize = \"none\";\n\tthis.iframeDoc.body.style.margin = \"0\";\n\tthis.iframeDoc.body.style.padding = \"0\";\n\tthis.widget.domNodes.push(this.iframeNode);\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.iframeDoc.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.iframeDoc.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\t// Copy the styles from the dummy textarea\n\tthis.copyStyles();\n\t// Add event listeners\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \"input\",handlerObject: this,handlerMethod: \"handleInputEvent\"},\n\t\t{name: \"keydown\",handlerObject: this.widget,handlerMethod: \"handleKeydownEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.iframeDoc.body.appendChild(this.domNode);\n}\n\n/*\nCopy styles from the dummy text area to the textarea in the iframe\n*/\nFramedEngine.prototype.copyStyles = function() {\n\t// Copy all styles\n\t$tw.utils.copyStyles(this.dummyTextArea,this.domNode);\n\t// Override the ones that should not be set the same as the dummy textarea\n\tthis.domNode.style.display = \"block\";\n\tthis.domNode.style.width = \"100%\";\n\tthis.domNode.style.margin = \"0\";\n\t// In Chrome setting -webkit-text-fill-color overrides the placeholder text colour\n\tthis.domNode.style[\"-webkit-text-fill-color\"] = \"currentcolor\";\n};\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nFramedEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode) {\n\t\t\tthis.domNode.value = text;\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nGet the text of the engine\n*/\nFramedEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nFramedEngine.prototype.fixHeight = function() {\n\t// Make sure styles are updated\n\tthis.copyStyles();\n\t// Adjust height\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\tvar newHeight = $tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t\tthis.iframeNode.style.height = (newHeight + 14) + \"px\"; // +14 for the border on the textarea\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t\tthis.iframeNode.style.height = (fixedHeight + 14) + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nFramedEngine.prototype.focus = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nFramedEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nFramedEngine.prototype.createTextOperation = function() {\n\tvar operation = {\n\t\ttext: this.domNode.value,\n\t\tselStart: this.domNode.selectionStart,\n\t\tselEnd: this.domNode.selectionEnd,\n\t\tcutStart: null,\n\t\tcutEnd: null,\n\t\treplacement: null,\n\t\tnewSelStart: null,\n\t\tnewSelEnd: null\n\t};\n\toperation.selection = operation.text.substring(operation.selStart,operation.selEnd);\n\treturn operation;\n};\n\n/*\nExecute a text operation\n*/\nFramedEngine.prototype.executeTextOperation = function(operation) {\n\t// Perform the required changes to the text area and the underlying tiddler\n\tvar newText = operation.text;\n\tif(operation.replacement !== null) {\n\t\tnewText = operation.text.substring(0,operation.cutStart) + operation.replacement + operation.text.substring(operation.cutEnd);\n\t\t// Attempt to use a execCommand to modify the value of the control\n\t\tif(this.iframeDoc.queryCommandSupported(\"insertText\") && this.iframeDoc.queryCommandSupported(\"delete\") && !$tw.browser.isFirefox) {\n\t\t\tthis.domNode.focus();\n\t\t\tthis.domNode.setSelectionRange(operation.cutStart,operation.cutEnd);\n\t\t\tif(operation.replacement === \"\") {\n\t\t\t\tthis.iframeDoc.execCommand(\"delete\",false,\"\");\n\t\t\t} else {\n\t\t\t\tthis.iframeDoc.execCommand(\"insertText\",false,operation.replacement);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.domNode.value = newText;\n\t\t}\n\t\tthis.domNode.focus();\n\t\tthis.domNode.setSelectionRange(operation.newSelStart,operation.newSelEnd);\n\t}\n\tthis.domNode.focus();\n\treturn newText;\n};\n\nexports.FramedEngine = FramedEngine;\n\n})();\n",
"title": "$:/core/modules/editor/engines/framed.js",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/editor/engines/simple.js": {
"text": "/*\\\ntitle: $:/core/modules/editor/engines/simple.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\nfunction SimpleEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.widget.document.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.widget.document.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\tif(this.widget.editClass) {\n\t\tthis.domNode.className = this.widget.editClass;\n\t}\n\t// Add an input event handler\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \"focus\", handlerObject: this, handlerMethod: \"handleFocusEvent\"},\n\t\t{name: \"input\", handlerObject: this, handlerMethod: \"handleInputEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.parentNode.insertBefore(this.domNode,this.nextSibling);\n\tthis.widget.domNodes.push(this.domNode);\n}\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nSimpleEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode || text === \"\") {\n\t\t\tthis.domNode.value = text;\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nGet the text of the engine\n*/\nSimpleEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nSimpleEngine.prototype.fixHeight = function() {\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\t$tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nSimpleEngine.prototype.focus = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nSimpleEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nHandle a dom \"focus\" event\n*/\nSimpleEngine.prototype.handleFocusEvent = function(event) {\n\tif(this.widget.editFocusPopup) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNode,\n\t\t\ttitle: this.widget.editFocusPopup,\n\t\t\twiki: this.widget.wiki,\n\t\t\tforce: true\n\t\t});\n\t}\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nSimpleEngine.prototype.createTextOperation = function() {\n\treturn null;\n};\n\n/*\nExecute a text operation\n*/\nSimpleEngine.prototype.executeTextOperation = function(operation) {\n};\n\nexports.SimpleEngine = SimpleEngine;\n\n})();\n",
"title": "$:/core/modules/editor/engines/simple.js",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/editor/factory.js": {
"text": "/*\\\ntitle: $:/core/modules/editor/factory.js\ntype: application/javascript\nmodule-type: library\n\nFactory for constructing text editor widgets with specified engines for the toolbar and non-toolbar cases\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DEFAULT_MIN_TEXT_AREA_HEIGHT = \"100px\"; // Minimum height of textareas in pixels\n\n// Configuration tiddlers\nvar HEIGHT_MODE_TITLE = \"$:/config/TextEditor/EditorHeight/Mode\";\nvar ENABLE_TOOLBAR_TITLE = \"$:/config/TextEditor/EnableToolbar\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nfunction editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {\n\n\tvar EditTextWidget = function(parseTreeNode,options) {\n\t\t// Initialise the editor operations if they've not been done already\n\t\tif(!this.editorOperations) {\n\t\t\tEditTextWidget.prototype.editorOperations = {};\n\t\t\t$tw.modules.applyMethods(\"texteditoroperation\",this.editorOperations);\n\t\t}\n\t\tthis.initialise(parseTreeNode,options);\n\t};\n\n\t/*\n\tInherit from the base widget class\n\t*/\n\tEditTextWidget.prototype = new Widget();\n\n\t/*\n\tRender this widget into the DOM\n\t*/\n\tEditTextWidget.prototype.render = function(parent,nextSibling) {\n\t\t// Save the parent dom node\n\t\tthis.parentDomNode = parent;\n\t\t// Compute our attributes\n\t\tthis.computeAttributes();\n\t\t// Execute our logic\n\t\tthis.execute();\n\t\t// Create the wrapper for the toolbar and render its content\n\t\tif(this.editShowToolbar) {\n\t\t\tthis.toolbarNode = this.document.createElement(\"div\");\n\t\t\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\t\t\tparent.insertBefore(this.toolbarNode,nextSibling);\n\t\t\tthis.renderChildren(this.toolbarNode,null);\n\t\t\tthis.domNodes.push(this.toolbarNode);\n\t\t}\n\t\t// Create our element\n\t\tvar editInfo = this.getEditInfo(),\n\t\t\tEngine = this.editShowToolbar ? toolbarEngine : nonToolbarEngine;\n\t\tthis.engine = new Engine({\n\t\t\t\twidget: this,\n\t\t\t\tvalue: editInfo.value,\n\t\t\t\ttype: editInfo.type,\n\t\t\t\tparentNode: parent,\n\t\t\t\tnextSibling: nextSibling\n\t\t\t});\n\t\t// Call the postRender hook\n\t\tif(this.postRender) {\n\t\t\tthis.postRender();\n\t\t}\n\t\t// Fix height\n\t\tthis.engine.fixHeight();\n\t\t// Focus if required\n\t\tif(this.editFocus === \"true\" || this.editFocus === \"yes\") {\n\t\t\tthis.engine.focus();\n\t\t}\n\t\t// Add widget message listeners\n\t\tthis.addEventListeners([\n\t\t\t{type: \"tm-edit-text-operation\", handler: \"handleEditTextOperationMessage\"}\n\t\t]);\n\t};\n\n\t/*\n\tGet the tiddler being edited and current value\n\t*/\n\tEditTextWidget.prototype.getEditInfo = function() {\n\t\t// Get the edit value\n\t\tvar self = this,\n\t\t\tvalue,\n\t\t\ttype = \"text/plain\",\n\t\t\tupdate;\n\t\tif(this.editIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(this.editTitle,this.editIndex,this.editDefault);\n\t\t\tupdate = function(value) {\n\t\t\t\tvar data = self.wiki.getTiddlerData(self.editTitle,{});\n\t\t\t\tif(data[self.editIndex] !== value) {\n\t\t\t\t\tdata[self.editIndex] = value;\n\t\t\t\t\tself.wiki.setTiddlerData(self.editTitle,data);\n\t\t\t\t}\n\t\t\t};\n\t\t} else {\n\t\t\t// Get the current tiddler and the field name\n\t\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\t\tif(tiddler) {\n\t\t\t\t// If we've got a tiddler, the value to display is the field string value\n\t\t\t\tvalue = tiddler.getFieldString(this.editField);\n\t\t\t\tif(this.editField === \"text\") {\n\t\t\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\";\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise, we need to construct a default value for the editor\n\t\t\t\tswitch(this.editField) {\n\t\t\t\t\tcase \"text\":\n\t\t\t\t\t\tvalue = \"Type the text for the tiddler '\" + this.editTitle + \"'\";\n\t\t\t\t\t\ttype = \"text/vnd.tiddlywiki\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"title\":\n\t\t\t\t\t\tvalue = this.editTitle;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(this.editDefault !== undefined) {\n\t\t\t\t\tvalue = this.editDefault;\n\t\t\t\t}\n\t\t\t}\n\t\t\tupdate = function(value) {\n\t\t\t\tvar tiddler = self.wiki.getTiddler(self.editTitle),\n\t\t\t\t\tupdateFields = {\n\t\t\t\t\t\ttitle: self.editTitle\n\t\t\t\t\t};\n\t\t\t\tupdateFields[self.editField] = value;\n\t\t\t\tself.wiki.addTiddler(new $tw.Tiddler(self.wiki.getCreationFields(),tiddler,updateFields,self.wiki.getModificationFields()));\n\t\t\t};\n\t\t}\n\t\tif(this.editType) {\n\t\t\ttype = this.editType;\n\t\t}\n\t\treturn {value: value || \"\", type: type, update: update};\n\t};\n\n\t/*\n\tHandle an edit text operation message from the toolbar\n\t*/\n\tEditTextWidget.prototype.handleEditTextOperationMessage = function(event) {\n\t\t// Prepare information about the operation\n\t\tvar operation = this.engine.createTextOperation();\n\t\t// Invoke the handler for the selected operation\n\t\tvar handler = this.editorOperations[event.param];\n\t\tif(handler) {\n\t\t\thandler.call(this,event,operation);\n\t\t}\n\t\t// Execute the operation via the engine\n\t\tvar newText = this.engine.executeTextOperation(operation);\n\t\t// Fix the tiddler height and save changes\n\t\tthis.engine.fixHeight();\n\t\tthis.saveChanges(newText);\n\t};\n\n\t/*\n\tCompute the internal state of the widget\n\t*/\n\tEditTextWidget.prototype.execute = function() {\n\t\t// Get our parameters\n\t\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t\tthis.editField = this.getAttribute(\"field\",\"text\");\n\t\tthis.editIndex = this.getAttribute(\"index\");\n\t\tthis.editDefault = this.getAttribute(\"default\");\n\t\tthis.editClass = this.getAttribute(\"class\");\n\t\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\t\tthis.editSize = this.getAttribute(\"size\");\n\t\tthis.editRows = this.getAttribute(\"rows\");\n\t\tthis.editAutoHeight = this.wiki.getTiddlerText(HEIGHT_MODE_TITLE,\"auto\");\n\t\tthis.editAutoHeight = this.getAttribute(\"autoHeight\",this.editAutoHeight === \"auto\" ? \"yes\" : \"no\") === \"yes\";\n\t\tthis.editMinHeight = this.getAttribute(\"minHeight\",DEFAULT_MIN_TEXT_AREA_HEIGHT);\n\t\tthis.editFocusPopup = this.getAttribute(\"focusPopup\");\n\t\tthis.editFocus = this.getAttribute(\"focus\");\n\t\t// Get the default editor element tag and type\n\t\tvar tag,type;\n\t\tif(this.editField === \"text\") {\n\t\t\ttag = \"textarea\";\n\t\t} else {\n\t\t\ttag = \"input\";\n\t\t\tvar fieldModule = $tw.Tiddler.fieldModules[this.editField];\n\t\t\tif(fieldModule && fieldModule.editTag) {\n\t\t\t\ttag = fieldModule.editTag;\n\t\t\t}\n\t\t\tif(fieldModule && fieldModule.editType) {\n\t\t\t\ttype = fieldModule.editType;\n\t\t\t}\n\t\t\ttype = type || \"text\";\n\t\t}\n\t\t// Get the rest of our parameters\n\t\tthis.editTag = this.getAttribute(\"tag\",tag);\n\t\tthis.editType = this.getAttribute(\"type\",type);\n\t\t// Make the child widgets\n\t\tthis.makeChildWidgets();\n\t\t// Determine whether to show the toolbar\n\t\tthis.editShowToolbar = this.wiki.getTiddlerText(ENABLE_TOOLBAR_TITLE,\"yes\");\n\t\tthis.editShowToolbar = (this.editShowToolbar === \"yes\") && !!(this.children && this.children.length > 0);\n\t};\n\n\t/*\n\tSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n\t*/\n\tEditTextWidget.prototype.refresh = function(changedTiddlers) {\n\t\tvar changedAttributes = this.computeAttributes();\n\t\t// Completely rerender if any of our attributes have changed\n\t\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.placeholder || changedAttributes.size || changedAttributes.autoHeight || changedAttributes.minHeight || changedAttributes.focusPopup || changedAttributes.rows || changedTiddlers[HEIGHT_MODE_TITLE] || changedTiddlers[ENABLE_TOOLBAR_TITLE]) {\n\t\t\tthis.refreshSelf();\n\t\t\treturn true;\n\t\t} else if(changedTiddlers[this.editTitle]) {\n\t\t\tvar editInfo = this.getEditInfo();\n\t\t\tthis.updateEditor(editInfo.value,editInfo.type);\n\t\t}\n\t\tthis.engine.fixHeight();\n\t\tif(this.editShowToolbar) {\n\t\t\treturn this.refreshChildren(changedTiddlers);\t\t\t\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t/*\n\tUpdate the editor with new text. This method is separate from updateEditorDomNode()\n\tso that subclasses can override updateEditor() and still use updateEditorDomNode()\n\t*/\n\tEditTextWidget.prototype.updateEditor = function(text,type) {\n\t\tthis.updateEditorDomNode(text,type);\n\t};\n\n\t/*\n\tUpdate the editor dom node with new text\n\t*/\n\tEditTextWidget.prototype.updateEditorDomNode = function(text,type) {\n\t\tthis.engine.setText(text,type);\n\t};\n\n\t/*\n\tSave changes back to the tiddler store\n\t*/\n\tEditTextWidget.prototype.saveChanges = function(text) {\n\t\tvar editInfo = this.getEditInfo();\n\t\tif(text !== editInfo.value) {\n\t\t\teditInfo.update(text);\n\t\t}\n\t};\n\n\t/*\n\tHandle a dom \"keydown\" event, which we'll bubble up to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.handleKeydownEvent = function(event) {\n\t\t// Check for a keyboard shortcut\n\t\tif(this.toolbarNode) {\n\t\t\tvar shortcutElements = this.toolbarNode.querySelectorAll(\"[data-tw-keyboard-shortcut]\");\n\t\t\tfor(var index=0; index<shortcutElements.length; index++) {\n\t\t\t\tvar el = shortcutElements[index],\n\t\t\t\t\tshortcutData = el.getAttribute(\"data-tw-keyboard-shortcut\"),\n\t\t\t\t\tkeyInfoArray = $tw.keyboardManager.parseKeyDescriptors(shortcutData,{\n\t\t\t\t\t\twiki: this.wiki\n\t\t\t\t\t});\n\t\t\t\tif($tw.keyboardManager.checkKeyDescriptors(event,keyInfoArray)) {\n\t\t\t\t\tvar clickEvent = this.document.createEvent(\"Events\");\n\t\t\t\t clickEvent.initEvent(\"click\",true,false);\n\t\t\t\t el.dispatchEvent(clickEvent);\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\treturn true;\t\t\t\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Propogate the event to the container\n\t\tif(this.propogateKeydownEvent(event)) {\n\t\t\t// Ignore the keydown if it was already handled\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\treturn true;\n\t\t}\n\t\t// Otherwise, process the keydown normally\n\t\treturn false;\n\t};\n\n\t/*\n\tPropogate keydown events to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.propogateKeydownEvent = function(event) {\n\t\tvar newEvent = this.document.createEventObject ? this.document.createEventObject() : this.document.createEvent(\"Events\");\n\t\tif(newEvent.initEvent) {\n\t\t\tnewEvent.initEvent(\"keydown\", true, true);\n\t\t}\n\t\tnewEvent.keyCode = event.keyCode;\n\t\tnewEvent.which = event.which;\n\t\tnewEvent.metaKey = event.metaKey;\n\t\tnewEvent.ctrlKey = event.ctrlKey;\n\t\tnewEvent.altKey = event.altKey;\n\t\tnewEvent.shiftKey = event.shiftKey;\n\t\treturn !this.parentDomNode.dispatchEvent(newEvent);\n\t};\n\n\treturn EditTextWidget;\n\n}\n\nexports.editTextWidgetFactory = editTextWidgetFactory;\n\n})();\n",
"title": "$:/core/modules/editor/factory.js",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/editor/operations/bitmap/clear.js": {
"text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/clear.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to clear the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"clear\"] = function(event) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.globalAlpha = 1;\n\tctx.fillStyle = event.paramObject.colour || \"white\";\n\tctx.fillRect(0,0,this.canvasDomNode.width,this.canvasDomNode.height);\n\t// Save changes\n\tthis.strokeEnd();\n};\n\n})();\n",
"title": "$:/core/modules/editor/operations/bitmap/clear.js",
"type": "application/javascript",
"module-type": "bitmapeditoroperation"
},
"$:/core/modules/editor/operations/bitmap/resize.js": {
"text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/resize.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to resize the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"resize\"] = function(event) {\n\t// Get the new width\n\tvar newWidth = parseInt(event.paramObject.width || this.canvasDomNode.width,10),\n\t\tnewHeight = parseInt(event.paramObject.height || this.canvasDomNode.height,10);\n\t// Update if necessary\n\tif(newWidth > 0 && newHeight > 0 && !(newWidth === this.currCanvas.width && newHeight === this.currCanvas.height)) {\n\t\tthis.changeCanvasSize(newWidth,newHeight);\n\t}\n\t// Update the input controls\n\tthis.refreshToolbar();\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\n})();\n",
"title": "$:/core/modules/editor/operations/bitmap/resize.js",
"type": "application/javascript",
"module-type": "bitmapeditoroperation"
},
"$:/core/modules/editor/operations/text/excise.js": {
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/excise.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to excise the selection to a new tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"excise\"] = function(event,operation) {\n\tvar editTiddler = this.wiki.getTiddler(this.editTitle),\n\t\teditTiddlerTitle = this.editTitle;\n\tif(editTiddler && editTiddler.fields[\"draft.of\"]) {\n\t\teditTiddlerTitle = editTiddler.fields[\"draft.of\"];\n\t}\n\tvar excisionTitle = event.paramObject.title || this.wiki.generateNewTitle(\"New Excision\");\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\tthis.wiki.getModificationFields(),\n\t\t{\n\t\t\ttitle: excisionTitle,\n\t\t\ttext: operation.selection,\n\t\t\ttags: event.paramObject.tagnew === \"yes\" ? [editTiddlerTitle] : []\n\t\t}\n\t));\n\toperation.replacement = excisionTitle;\n\tswitch(event.paramObject.type || \"transclude\") {\n\t\tcase \"transclude\":\n\t\t\toperation.replacement = \"{{\" + operation.replacement+ \"}}\";\n\t\t\tbreak;\n\t\tcase \"link\":\n\t\t\toperation.replacement = \"[[\" + operation.replacement+ \"]]\";\n\t\t\tbreak;\n\t\tcase \"macro\":\n\t\t\toperation.replacement = \"<<\" + (event.paramObject.macro || \"translink\") + \" \\\"\\\"\\\"\" + operation.replacement + \"\\\"\\\"\\\">>\";\n\t\t\tbreak;\n\t}\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
"title": "$:/core/modules/editor/operations/text/excise.js",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/make-link.js": {
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/make-link.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to make a link\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"make-link\"] = function(event,operation) {\n\tif(operation.selection) {\n\t\toperation.replacement = \"[[\" + operation.selection + \"|\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t} else {\n\t\toperation.replacement = \"[[\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t}\n\toperation.newSelStart = operation.selStart + operation.replacement.length;\n\toperation.newSelEnd = operation.newSelStart;\n};\n\n})();\n",
"title": "$:/core/modules/editor/operations/text/make-link.js",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/prefix-lines.js": {
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/prefix-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to add a prefix to the selected lines\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"prefix-lines\"] = function(event,operation) {\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Compose the required prefix\n\tvar prefix = $tw.utils.repeat(event.paramObject.character,event.paramObject.count);\n\t// Process each line\n\tvar lines = operation.text.substring(operation.cutStart,operation.cutEnd).split(/\\r?\\n/mg);\n\t$tw.utils.each(lines,function(line,index) {\n\t\t// Remove and count any existing prefix characters\n\t\tvar count = 0;\n\t\twhile(line.charAt(0) === event.paramObject.character) {\n\t\t\tline = line.substring(1);\n\t\t\tcount++;\n\t\t}\n\t\t// Remove any whitespace\n\t\twhile(line.charAt(0) === \" \") {\n\t\t\tline = line.substring(1);\n\t\t}\n\t\t// We're done if we removed the exact required prefix, otherwise add it\n\t\tif(count !== event.paramObject.count) {\n\t\t\t// Apply the prefix\n\t\t\tline = prefix + \" \" + line;\n\t\t}\n\t\t// Save the modified line\n\t\tlines[index] = line;\n\t});\n\t// Stitch the replacement text together and set the selection\n\toperation.replacement = lines.join(\"\\n\");\n\tif(lines.length === 1) {\n\t\toperation.newSelStart = operation.cutStart + operation.replacement.length;\n\t\toperation.newSelEnd = operation.newSelStart;\n\t} else {\n\t\toperation.newSelStart = operation.cutStart;\n\t\toperation.newSelEnd = operation.newSelStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/editor/operations/text/prefix-lines.js",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/replace-all.js": {
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-all.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the entire text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-all\"] = function(event,operation) {\n\toperation.cutStart = 0;\n\toperation.cutEnd = operation.text.length;\n\toperation.replacement = event.paramObject.text;\n\toperation.newSelStart = 0;\n\toperation.newSelEnd = operation.replacement.length;\n};\n\n})();\n",
"title": "$:/core/modules/editor/operations/text/replace-all.js",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/replace-selection.js": {
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the selection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-selection\"] = function(event,operation) {\n\toperation.replacement = event.paramObject.text;\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
"title": "$:/core/modules/editor/operations/text/replace-selection.js",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/wrap-lines.js": {
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selected lines with a prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-lines\"] = function(event,operation) {\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Add the prefix and suffix\n\toperation.replacement = event.paramObject.prefix + \"\\n\" +\n\t\t\t\toperation.text.substring(operation.cutStart,operation.cutEnd) + \"\\n\" +\n\t\t\t\tevent.paramObject.suffix + \"\\n\";\n\toperation.newSelStart = operation.cutStart + event.paramObject.prefix.length + 1;\n\toperation.newSelEnd = operation.newSelStart + (operation.cutEnd - operation.cutStart);\n};\n\n})();\n",
"title": "$:/core/modules/editor/operations/text/wrap-lines.js",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/wrap-selection.js": {
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selection with the specified prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-selection\"] = function(event,operation) {\n\tif(operation.selStart === operation.selEnd) {\n\t\t// No selection; check if we're within the prefix/suffix\n\t\tif(operation.text.substring(operation.selStart - event.paramObject.prefix.length,operation.selStart + event.paramObject.suffix.length) === event.paramObject.prefix + event.paramObject.suffix) {\n\t\t\t// Remove the prefix and suffix unless they comprise the entire text\n\t\t\tif(operation.selStart > event.paramObject.prefix.length || (operation.selEnd + event.paramObject.suffix.length) < operation.text.length ) {\n\t\t\t\toperation.cutStart = operation.selStart - event.paramObject.prefix.length;\n\t\t\t\toperation.cutEnd = operation.selEnd + event.paramObject.suffix.length;\n\t\t\t\toperation.replacement = \"\";\n\t\t\t\toperation.newSelStart = operation.cutStart;\n\t\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t\t}\n\t\t} else {\n\t\t\t// Wrap the cursor instead\n\t\t\toperation.cutStart = operation.selStart;\n\t\t\toperation.cutEnd = operation.selEnd;\n\t\t\toperation.replacement = event.paramObject.prefix + event.paramObject.suffix;\n\t\t\toperation.newSelStart = operation.selStart + event.paramObject.prefix.length;\n\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t}\n\t} else if(operation.text.substring(operation.selStart,operation.selStart + event.paramObject.prefix.length) === event.paramObject.prefix && operation.text.substring(operation.selEnd - event.paramObject.suffix.length,operation.selEnd) === event.paramObject.suffix) {\n\t\t// Prefix and suffix are already present, so remove them\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = operation.selection.substring(event.paramObject.prefix.length,operation.selection.length - event.paramObject.suffix.length);\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t} else {\n\t\t// Add the prefix and suffix\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = event.paramObject.prefix + operation.selection + event.paramObject.suffix;\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/editor/operations/text/wrap-selection.js",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/filters/addprefix.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/addprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a prefix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.addprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(operator.operand + title);\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/addprefix.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/addsuffix.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/addsuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a suffix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.addsuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title + operator.operand);\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/addsuffix.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/after.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/after.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is after the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.after = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index === -1 || index > (results.length - 2)) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index + 1]];\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/filters/after.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/all/current.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/all/current.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar currTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(currTiddlerTitle) {\n\t\treturn [currTiddlerTitle];\n\t} else {\n\t\treturn [];\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/filters/all/current.js",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/missing.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/all/missing.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\treturn options.wiki.getMissingTitles();\n};\n\n})();\n",
"title": "$:/core/modules/filters/all/missing.js",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/orphans.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/all/orphans.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[orphans]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.orphans = function(source,prefix,options) {\n\treturn options.wiki.getOrphanTitles();\n};\n\n})();\n",
"title": "$:/core/modules/filters/all/orphans.js",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/shadows.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/all/shadows.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[shadows]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadows = function(source,prefix,options) {\n\treturn options.wiki.allShadowTitles();\n};\n\n})();\n",
"title": "$:/core/modules/filters/all/shadows.js",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/tags.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/all/tags.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tags]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tags = function(source,prefix,options) {\n\treturn Object.keys(options.wiki.getTagMap());\n};\n\n})();\n",
"title": "$:/core/modules/filters/all/tags.js",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/tiddlers.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/all/tiddlers.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tiddlers = function(source,prefix,options) {\n\treturn options.wiki.allTitles();\n};\n\n})();\n",
"title": "$:/core/modules/filters/all/tiddlers.js",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/all.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for selecting tiddlers\n\n[all[shadows+tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar allFilterOperators;\n\nfunction getAllFilterOperators() {\n\tif(!allFilterOperators) {\n\t\tallFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"allfilteroperator\",allFilterOperators);\n\t}\n\treturn allFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.all = function(source,operator,options) {\n\t// Get our suboperators\n\tvar allFilterOperators = getAllFilterOperators();\n\t// Cycle through the suboperators accumulating their results\n\tvar results = [],\n\t\tsubops = operator.operand.split(\"+\");\n\t// Check for common optimisations\n\tif(subops.length === 1 && subops[0] === \"\") {\n\t\treturn source;\n\t} else if(subops.length === 1 && subops[0] === \"tiddlers\") {\n\t\treturn options.wiki.each;\n\t} else if(subops.length === 1 && subops[0] === \"shadows\") {\n\t\treturn options.wiki.eachShadow;\n\t} else if(subops.length === 2 && subops[0] === \"tiddlers\" && subops[1] === \"shadows\") {\n\t\treturn options.wiki.eachTiddlerPlusShadows;\n\t} else if(subops.length === 2 && subops[0] === \"shadows\" && subops[1] === \"tiddlers\") {\n\t\treturn options.wiki.eachShadowPlusTiddlers;\n\t}\n\t// Do it the hard way\n\tfor(var t=0; t<subops.length; t++) {\n\t\tvar subop = allFilterOperators[subops[t]];\n\t\tif(subop) {\n\t\t\t$tw.utils.pushTop(results,subop(source,operator.prefix,options));\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/all.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/backlinks.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/backlinks.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the backlinks from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.backlinks = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerBacklinks(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/backlinks.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/before.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/before.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is before the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.before = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index <= 0) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index - 1]];\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/filters/before.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/commands.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/commands.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the commands available in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.commands = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.commands,function(commandInfo,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/commands.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/count.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/count.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the number of entries in the current list.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.count = function(source,operator,options) {\n\tvar count = 0;\n\tsource(function(tiddler,title) {\n\t\tcount++;\n\t});\n\treturn [count + \"\"];\n};\n\n})();\n",
"title": "$:/core/modules/filters/count.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/days.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/days.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a specified date field within a specified date interval.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.days = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\tdayInterval = (parseInt(operator.operand,10)||0),\n\t\tdayIntervalSign = $tw.utils.sign(dayInterval),\n\t\ttargetTimeStamp = (new Date()).setHours(0,0,0,0) + 1000*60*60*24*dayInterval,\n\t\tisWithinDays = function(dateField) {\n\t\t\tvar sign = $tw.utils.sign(targetTimeStamp - (new Date(dateField)).setHours(0,0,0,0));\n\t\t\treturn sign === 0 || sign === dayIntervalSign;\n\t\t};\n\n\tif(operator.prefix === \"!\") {\n\t\ttargetTimeStamp = targetTimeStamp - 1000*60*60*24*dayIntervalSign;\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(!isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/days.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/each.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/each.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique value of the specified field.\nWith suffix \"list\", selects all tiddlers that are values in a specified list field.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.each = function(source,operator,options) {\n\tvar results =[] ,\n\t\tvalue,values = {},\n\t\tfield = operator.operand || \"title\";\n\tif(operator.suffix !== \"list-item\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvalue = (field === \"title\") ? title : tiddler.getFieldString(field);\n\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\t$tw.utils.each(\n\t\t\t\t\toptions.wiki.getTiddlerList(title,field),\n\t\t\t\t\tfunction(value) {\n\t\t\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\t\t\tresults.push(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/each.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/eachday.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/eachday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique day covered by the specified date field\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.eachday = function(source,operator,options) {\n\tvar results = [],\n\t\tvalues = [],\n\t\tfieldName = operator.operand || \"modified\";\n\t// Function to convert a date/time to a date integer\n\tvar toDate = function(value) {\n\t\tvalue = (new Date(value)).setHours(0,0,0,0);\n\t\treturn value+0;\n\t};\n\tsource(function(tiddler,title) {\n\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\tvar value = toDate($tw.utils.parseDate(tiddler.fields[fieldName]));\n\t\t\tif(values.indexOf(value) === -1) {\n\t\t\t\tvalues.push(value);\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/eachday.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/editiondescription.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/editiondescription.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the descriptions of the specified edition names\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.editiondescription = function(source,operator,options) {\n\tvar results = [],\n\t\teditionInfo = $tw.utils.getEditionInfo();\n\tif(editionInfo) {\n\t\tsource(function(tiddler,title) {\n\t\t\tif($tw.utils.hop(editionInfo,title)) {\n\t\t\t\tresults.push(editionInfo[title].description || \"\");\t\t\t\t\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/editiondescription.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/editions.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/editions.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the available editions in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.editions = function(source,operator,options) {\n\tvar results = [],\n\t\teditionInfo = $tw.utils.getEditionInfo();\n\tif(editionInfo) {\n\t\t$tw.utils.each(editionInfo,function(info,name) {\n\t\t\tresults.push(name);\n\t\t});\n\t}\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/editions.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/decodeuricomponent.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/decodeuricomponent.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for applying decodeURIComponent() to each item.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter functions\n*/\n\nexports.decodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(decodeURIComponent(title));\n\t});\n\treturn results;\n};\n\nexports.encodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURIComponent(title));\n\t});\n\treturn results;\n};\n\nexports.decodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(decodeURI(title));\n\t});\n\treturn results;\n};\n\nexports.encodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURI(title));\n\t});\n\treturn results;\n};\n\nexports.decodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlDecode(title));\n\t});\n\treturn results;\n};\n\nexports.encodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlEncode(title));\n\t});\n\treturn results;\n};\n\nexports.stringify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.stringify(title));\n\t});\n\treturn results;\n};\n\nexports.escaperegexp = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.escapeRegExp(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/decodeuricomponent.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/enlist.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/enlist.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning its operand parsed as a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.enlist = function(source,operator,options) {\n\tvar list = $tw.utils.parseStringArray(operator.operand);\n\tif(operator.prefix === \"!\") {\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t\treturn results;\n\t} else {\n\t\treturn list;\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/filters/enlist.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/field.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/field.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing fields for equality\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.field = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || operator.operator || \"title\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text !== operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !!operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text === operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/field.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/fields.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/fields.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the fields on the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.fields = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tfor(var fieldName in tiddler.fields) {\n\t\t\t\t$tw.utils.pushTop(results,fieldName);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/fields.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/get.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/get.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing tiddler titles by the value of the field specified in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.get = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tvar value = tiddler.getFieldString(operator.operand);\n\t\t\tif(value) {\n\t\t\t\tresults.push(value);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/get.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/getindex.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/getindex.js\ntype: application/javascript\nmodule-type: filteroperator\n\nreturns the value at a given index of datatiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.getindex = function(source,operator,options) {\n\tvar data,title,results = [];\n\tif(operator.operand){\n\t\tsource(function(tiddler,title) {\n\t\t\ttitle = tiddler ? tiddler.fields.title : title;\n\t\t\tdata = options.wiki.extractTiddlerDataItem(tiddler,operator.operand);\n\t\t\tif(data) {\n\t\t\t\tresults.push(data);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/getindex.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/has.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/has.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a tiddler has the specified field\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.has = function(source,operator,options) {\n\tvar results = [],\n\t\tinvert = operator.prefix === \"!\";\n\n\tif(operator.suffix === \"field\") {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || (tiddler && (!$tw.utils.hop(tiddler.fields,operator.operand)))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || !$tw.utils.hop(tiddler.fields,operator.operand) || (tiddler.fields[operator.operand] === \"\")) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,operator.operand) && !(tiddler.fields[operator.operand] === \"\" || tiddler.fields[operator.operand].length === 0)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/has.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/haschanged.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/haschanged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returns tiddlers from the list that have a non-zero changecount.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.haschanged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) === 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) > 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/haschanged.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/indexes.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/indexes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the indexes of a data tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.indexes = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar data = options.wiki.getTiddlerDataCached(title);\n\t\tif(data) {\n\t\t\t$tw.utils.pushTop(results,Object.keys(data));\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/indexes.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/insertbefore.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/insertbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nInsert an item before another item in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOrder a list\n*/\nexports.insertbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar target = options.widget && options.widget.getVariable(operator.suffix || \"currentTiddler\");\n\tif(target !== operator.operand) {\n\t\t// Remove the entry from the list if it is present\n\t\tvar pos = results.indexOf(operator.operand);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,1);\n\t\t}\n\t\t// Insert the entry before the target marker\n\t\tpos = results.indexOf(target);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,0,operator.operand);\n\t\t} else {\n\t\t\tresults.push(operator.operand);\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/insertbefore.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/is/current.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/is/current.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar results = [],\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title !== currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title === currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/is/current.js",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/image.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/is/image.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[image]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.image = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/is/image.js",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/missing.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/is/missing.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/is/missing.js",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/orphan.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/is/orphan.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[orphan]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.orphan = function(source,prefix,options) {\n\tvar results = [],\n\t\torphanTitles = options.wiki.getOrphanTitles();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) !== -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/is/orphan.js",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/shadow.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/is/shadow.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[shadow]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadow = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/is/shadow.js",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/system.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/is/system.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[system]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.system = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/is/system.js",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/tag.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/is/tag.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tag]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tag = function(source,prefix,options) {\n\tvar results = [],\n\t\ttagMap = options.wiki.getTagMap();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!$tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif($tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/is/tag.js",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/tiddler.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/is/tiddler.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tiddler]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tiddler = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/is/tiddler.js",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/is.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking tiddler properties\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar isFilterOperators;\n\nfunction getIsFilterOperators() {\n\tif(!isFilterOperators) {\n\t\tisFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"isfilteroperator\",isFilterOperators);\n\t}\n\treturn isFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.is = function(source,operator,options) {\n\t// Dispatch to the correct isfilteroperator\n\tvar isFilterOperators = getIsFilterOperators();\n\tif(operator.operand) {\n\t\tvar isFilterOperator = isFilterOperators[operator.operand];\n\t\tif(isFilterOperator) {\n\t\t\treturn isFilterOperator(source,operator.prefix,options);\n\t\t} else {\n\t\t\treturn [$tw.language.getString(\"Error/IsFilterOperator\")];\n\t\t}\n\t} else {\n\t\t// Return all tiddlers if the operand is missing\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t\treturn results;\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/filters/is.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/limit.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/limit.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for chopping the results to a specified maximum number of entries\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.limit = function(source,operator,options) {\n\tvar results = [];\n\t// Convert to an array\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\t// Slice the array if necessary\n\tvar limit = Math.min(results.length,parseInt(operator.operand,10));\n\tif(operator.prefix === \"!\") {\n\t\tresults = results.slice(-limit);\n\t} else {\n\t\tresults = results.slice(0,limit);\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/limit.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/links.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/links.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the links from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.links = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerLinks(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/links.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/list.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/list.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddlers whose title is listed in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.list = function(source,operator,options) {\n\tvar results = [],\n\t\ttr = $tw.utils.parseTextReference(operator.operand),\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\"),\n\t\tlist = options.wiki.getTiddlerList(tr.title || currTiddlerTitle,tr.field,tr.index);\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults = list;\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/list.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/listed.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/listed.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that have the selected tiddlers in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.listed = function(source,operator,options) {\n\tvar field = operator.operand || \"list\",\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.findListingsOfTiddler(title,field));\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/listed.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/listops.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for manipulating the current selection list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOrder a list\n*/\nexports.order = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.operand.toLowerCase() === \"reverse\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.unshift(title);\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\t\t\n\t}\n\treturn results;\n};\n\n/*\nReverse list\n*/\nexports.reverse = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.unshift(title);\n\t});\n\treturn results;\n};\n\n/*\nFirst entry/entries in list\n*/\nexports.first = function(source,operator,options) {\n\tvar count = parseInt(operator.operand) || 1,\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,count);\n};\n\n/*\nLast entry/entries in list\n*/\nexports.last = function(source,operator,options) {\n\tvar count = parseInt(operator.operand) || 1,\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(-count);\n};\n\n/*\nAll but the first entry/entries of the list\n*/\nexports.rest = function(source,operator,options) {\n\tvar count = parseInt(operator.operand) || 1,\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count);\n};\nexports.butfirst = exports.rest;\nexports.bf = exports.rest;\n\n/*\nAll but the last entry/entries of the list\n*/\nexports.butlast = function(source,operator,options) {\n\tvar count = parseInt(operator.operand) || 1,\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,-count);\n};\nexports.bl = exports.butlast;\n\n/*\nThe nth member of the list\n*/\nexports.nth = function(source,operator,options) {\n\tvar count = parseInt(operator.operand) || 1,\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count - 1,count);\n};\n\n})();\n",
"title": "$:/core/modules/filters/listops.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/minlength.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/minlength.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for filtering out titles that don't meet the minimum length in the operand\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.minlength = function(source,operator,options) {\n\tvar results = [],\n\t\tminLength = parseInt(operator.operand || \"\",10) || 0;\n\tsource(function(tiddler,title) {\n\t\tif(title.length >= minLength) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/minlength.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/modules.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/modules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the modules of a given type in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.modules = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.each($tw.modules.types[title],function(moduleInfo,moduleName) {\n\t\t\tresults.push(moduleName);\n\t\t});\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/modules.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/moduletypes.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/moduletypes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the module types in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.moduletypes = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.modules.types,function(moduleInfo,type) {\n\t\tresults.push(type);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/moduletypes.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/next.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/next.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs next in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.next = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch++;\n\t\tif(match > 0 && match < list.length) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/next.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/plugintiddlers.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/plugintiddlers.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the shadow tiddlers within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.plugintiddlers = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar pluginInfo = options.wiki.getPluginInfo(title) || options.wiki.getTiddlerDataCached(title,{tiddlers:[]});\n\t\tif(pluginInfo && pluginInfo.tiddlers) {\n\t\t\t$tw.utils.each(pluginInfo.tiddlers,function(fields,title) {\n\t\t\t\tresults.push(title);\n\t\t\t});\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/plugintiddlers.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/prefix.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/prefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title starts with a prefix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.prefix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/prefix.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/previous.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/previous.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs immediately prior in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.previous = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch--;\n\t\tif(match >= 0) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/previous.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/regexp.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/regexp.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for regexp matching\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.regexp = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"title\").toLowerCase(),\n\t\tregexpString, regexp, flags = \"\", match,\n\t\tgetFieldString = function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\treturn tiddler.getFieldString(fieldname);\n\t\t\t} else if(fieldname === \"title\") {\n\t\t\t\treturn title;\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\t// Process flags and construct regexp\n\tregexpString = operator.operand;\n\tmatch = /^\\(\\?([gim]+)\\)/.exec(regexpString);\n\tif(match) {\n\t\tflags = match[1];\n\t\tregexpString = regexpString.substr(match[0].length);\n\t} else {\n\t\tmatch = /\\(\\?([gim]+)\\)$/.exec(regexpString);\n\t\tif(match) {\n\t\t\tflags = match[1];\n\t\t\tregexpString = regexpString.substr(0,regexpString.length - match[0].length);\n\t\t}\n\t}\n\ttry {\n\t\tregexp = new RegExp(regexpString,flags);\n\t} catch(e) {\n\t\treturn [\"\" + e];\n\t}\n\t// Process the incoming tiddlers\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/regexp.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/removeprefix.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/removeprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a prefix from each title in the list. Titles that do not start with the prefix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.removeprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/removeprefix.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/removesuffix.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/removesuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a suffix from each title in the list. Titles that do not end with the suffix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.removesuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title.substr(-operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(0,title.length - operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/removesuffix.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/sameday.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/sameday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a modified date field on the same day as the provided value.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sameday = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\ttargetDate = (new Date($tw.utils.parseDate(operator.operand))).setHours(0,0,0,0);\n\t// Function to convert a date/time to a date integer\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tif(tiddler.getFieldDay(fieldName) === targetDate) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/sameday.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/search.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/search.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for searching for the text in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.search = function(source,operator,options) {\n\tvar invert = operator.prefix === \"!\";\n\tif(operator.suffix) {\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert,\n\t\t\tfield: operator.suffix\n\t\t});\n\t} else {\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert\n\t\t});\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/filters/search.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/shadowsource.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/shadowsource.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the source plugins for shadow tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadowsource = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar source = options.wiki.getShadowSource(title);\n\t\tif(source) {\n\t\t\t$tw.utils.pushTop(results,source);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/shadowsource.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/sort.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/sort.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for sorting\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,false);\n\treturn results;\n};\n\nexports.nsort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,true);\n\treturn results;\n};\n\nexports.sortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,false);\n\treturn results;\n};\n\nexports.nsortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,true);\n\treturn results;\n};\n\nvar prepare_results = function (source) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/sort.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/splitbefore.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/splitbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that splits each result on the first occurance of the specified separator and returns the unique values.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.splitbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar parts = title.split(operator.operand);\n\t\tif(parts.length === 1) {\n\t\t\t$tw.utils.pushTop(results,parts[0]);\n\t\t} else {\n\t\t\t$tw.utils.pushTop(results,parts[0] + operator.operand);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/splitbefore.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/storyviews.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/storyviews.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the story views in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.storyviews = function(source,operator,options) {\n\tvar results = [],\n\t\tstoryviews = {};\n\t$tw.modules.applyMethods(\"storyview\",storyviews);\n\t$tw.utils.each(storyviews,function(info,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/storyviews.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/suffix.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/suffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title ends with a suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.suffix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/suffix.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/tag.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/tag.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking for the presence of a tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tag = function(source,operator,options) {\n\tvar results = [];\n\tif((operator.suffix || \"\").toLowerCase() === \"strict\" && !operator.operand) {\n\t\t// New semantics:\n\t\t// Always return copy of input if operator.operand is missing\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t} else {\n\t\t// Old semantics:\n\t\tif(operator.prefix === \"!\") {\n\t\t\t// Returns a copy of the input if operator.operand is missing\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && !tiddler.hasTag(operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t// Returns empty results if operator.operand is missing\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && tiddler.hasTag(operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t\tresults = options.wiki.sortByList(results,operator.operand);\n\t\t}\t\t\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/tag.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/tagging.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/tagging.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that are tagged with the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tagging = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlersWithTag(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/tagging.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/tags.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/tags.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the tags of the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tags = function(source,operator,options) {\n\tvar tags = {};\n\tsource(function(tiddler,title) {\n\t\tvar t, length;\n\t\tif(tiddler && tiddler.fields.tags) {\n\t\t\tfor(t=0, length=tiddler.fields.tags.length; t<length; t++) {\n\t\t\t\ttags[tiddler.fields.tags[t]] = true;\n\t\t\t}\n\t\t}\n\t});\n\treturn Object.keys(tags);\n};\n\n})();\n",
"title": "$:/core/modules/filters/tags.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/title.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/title.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing title fields for equality\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.title = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields.title !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults.push(operator.operand);\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/title.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/untagged.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/untagged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the selected tiddlers that are untagged\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.untagged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && $tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length > 0) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!tiddler || !tiddler.hasField(\"tags\") || ($tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length === 0)) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/untagged.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/wikiparserrules.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/wikiparserrules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the wiki parser rules in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.wikiparserrules = function(source,operator,options) {\n\tvar results = [],\n\t\toperand = operator.operand;\n\t$tw.utils.each($tw.modules.types.wikirule,function(mod) {\n\t\tvar exp = mod.exports;\n\t\tif(!operand || exp.types[operand]) {\n\t\t\tresults.push(exp.name);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"title": "$:/core/modules/filters/wikiparserrules.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/x-listops.js": {
"text": "/*\\\ntitle: $:/core/modules/filters/x-listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nExtended filter operators to manipulate the current list.\n\n\\*/\n(function () {\n\n /*jslint node: true, browser: true */\n /*global $tw: false */\n \"use strict\";\n\n /*\n Fetch titles from the current list\n */\n var prepare_results = function (source) {\n var results = [];\n source(function (tiddler, title) {\n results.push(title);\n });\n return results;\n };\n\n /*\n Moves a number of items from the tail of the current list before the item named in the operand\n */\n exports.putbefore = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand),\n count = parseInt(operator.suffix) || 1;\n return (index === -1) ?\n results.slice(0, -1) :\n results.slice(0, index).concat(results.slice(-count)).concat(results.slice(index, -count));\n };\n\n /*\n Moves a number of items from the tail of the current list after the item named in the operand\n */\n exports.putafter = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand),\n count = parseInt(operator.suffix) || 1;\n return (index === -1) ?\n results.slice(0, -1) :\n results.slice(0, index + 1).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n };\n\n /*\n Replaces the item named in the operand with a number of items from the tail of the current list\n */\n exports.replace = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand),\n count = parseInt(operator.suffix) || 1;\n return (index === -1) ?\n results.slice(0, -count) :\n results.slice(0, index).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n };\n\n /*\n Moves a number of items from the tail of the current list to the head of the list\n */\n exports.putfirst = function (source, operator) {\n var results = prepare_results(source),\n count = parseInt(operator.suffix) || 1;\n return results.slice(-count).concat(results.slice(0, -count));\n };\n\n /*\n Moves a number of items from the head of the current list to the tail of the list\n */\n exports.putlast = function (source, operator) {\n var results = prepare_results(source),\n count = parseInt(operator.suffix) || 1;\n return results.slice(count).concat(results.slice(0, count));\n };\n\n /*\n Moves the item named in the operand a number of places forward or backward in the list\n */\n exports.move = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand),\n count = parseInt(operator.suffix) || 1,\n marker = results.splice(index, 1),\n offset = (index + count) > 0 ? index + count : 0;\n return results.slice(0, offset).concat(marker).concat(results.slice(offset));\n };\n\n /*\n Returns the items from the current list that are after the item named in the operand\n */\n exports.allafter = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand);\n return (index === -1 || index > (results.length - 2)) ? [] :\n (operator.suffix) ? results.slice(index) :\n results.slice(index + 1);\n };\n\n /*\n Returns the items from the current list that are before the item named in the operand\n */\n exports.allbefore = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand);\n return (index <= 0) ? [] :\n (operator.suffix) ? results.slice(0, index + 1) :\n results.slice(0, index);\n };\n\n /*\n Appends the items listed in the operand array to the tail of the current list\n */\n exports.append = function (source, operator) {\n var append = $tw.utils.parseStringArray(operator.operand, \"true\"),\n results = prepare_results(source),\n count = parseInt(operator.suffix) || append.length;\n return (append.length === 0) ? results :\n (operator.prefix) ? results.concat(append.slice(-count)) :\n results.concat(append.slice(0, count));\n };\n\n /*\n Prepends the items listed in the operand array to the head of the current list\n */\n exports.prepend = function (source, operator) {\n var prepend = $tw.utils.parseStringArray(operator.operand, \"true\"),\n results = prepare_results(source),\n count = parseInt(operator.suffix) || prepend.length;\n return (prepend.length === 0) ? results :\n (operator.prefix) ? prepend.slice(-count).concat(results) :\n prepend.slice(0, count).concat(results);\n };\n\n /*\n Returns all items from the current list except the items listed in the operand array\n */\n exports.remove = function (source, operator) {\n var array = $tw.utils.parseStringArray(operator.operand, \"true\"),\n results = prepare_results(source),\n count = parseInt(operator.suffix) || array.length,\n p,\n len,\n index;\n len = array.length - 1;\n for (p = 0; p < count; ++p) {\n if (operator.prefix) {\n index = results.indexOf(array[len - p]);\n } else {\n index = results.indexOf(array[p]);\n }\n if (index !== -1) {\n results.splice(index, 1);\n }\n }\n return results;\n };\n\n /*\n Returns all items from the current list sorted in the order of the items in the operand array\n */\n exports.sortby = function (source, operator) {\n var results = prepare_results(source);\n if (!results || results.length < 2) {\n return results;\n }\n var lookup = $tw.utils.parseStringArray(operator.operand, \"true\");\n results.sort(function (a, b) {\n return lookup.indexOf(a) - lookup.indexOf(b);\n });\n return results;\n };\n\n /*\n Removes all duplicate items from the current list\n */\n exports.unique = function (source, operator) {\n var results = prepare_results(source);\n var set = results.reduce(function (a, b) {\n if (a.indexOf(b) < 0) {\n a.push(b);\n }\n return a;\n }, []);\n return set;\n };\n})();\n",
"title": "$:/core/modules/filters/x-listops.js",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters.js": {
"text": "/*\\\ntitle: $:/core/modules/filters.js\ntype: application/javascript\nmodule-type: wikimethod\n\nAdds tiddler filtering methods to the $tw.Wiki object.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParses an operation (i.e. a run) within a filter string\n\toperators: Array of array of operator nodes into which results should be inserted\n\tfilterString: filter string\n\tp: start position within the string\nReturns the new start position, after the parsed operation\n*/\nfunction parseFilterOperation(operators,filterString,p) {\n\tvar nextBracketPos, operator;\n\t// Skip the starting square bracket\n\tif(filterString.charAt(p++) !== \"[\") {\n\t\tthrow \"Missing [ in filter expression\";\n\t}\n\t// Process each operator in turn\n\tdo {\n\t\toperator = {};\n\t\t// Check for an operator prefix\n\t\tif(filterString.charAt(p) === \"!\") {\n\t\t\toperator.prefix = filterString.charAt(p++);\n\t\t}\n\t\t// Get the operator name\n\t\tnextBracketPos = filterString.substring(p).search(/[\\[\\{<\\/]/);\n\t\tif(nextBracketPos === -1) {\n\t\t\tthrow \"Missing [ in filter expression\";\n\t\t}\n\t\tnextBracketPos += p;\n\t\tvar bracket = filterString.charAt(nextBracketPos);\n\t\toperator.operator = filterString.substring(p,nextBracketPos);\n\n\t\t// Any suffix?\n\t\tvar colon = operator.operator.indexOf(':');\n\t\tif(colon > -1) {\n\t\t\toperator.suffix = operator.operator.substring(colon + 1);\n\t\t\toperator.operator = operator.operator.substring(0,colon) || \"field\";\n\t\t}\n\t\t// Empty operator means: title\n\t\telse if(operator.operator === \"\") {\n\t\t\toperator.operator = \"title\";\n\t\t}\n\n\t\tp = nextBracketPos + 1;\n\t\tswitch (bracket) {\n\t\t\tcase \"{\": // Curly brackets\n\t\t\t\toperator.indirect = true;\n\t\t\t\tnextBracketPos = filterString.indexOf(\"}\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"[\": // Square brackets\n\t\t\t\tnextBracketPos = filterString.indexOf(\"]\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"<\": // Angle brackets\n\t\t\t\toperator.variable = true;\n\t\t\t\tnextBracketPos = filterString.indexOf(\">\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"/\": // regexp brackets\n\t\t\t\tvar rex = /^((?:[^\\\\\\/]*|\\\\.)*)\\/(?:\\(([mygi]+)\\))?/g,\n\t\t\t\t\trexMatch = rex.exec(filterString.substring(p));\n\t\t\t\tif(rexMatch) {\n\t\t\t\t\toperator.regexp = new RegExp(rexMatch[1], rexMatch[2]);\n// DEPRECATION WARNING\nconsole.log(\"WARNING: Filter\",operator.operator,\"has a deprecated regexp operand\",operator.regexp);\n\t\t\t\t\tnextBracketPos = p + rex.lastIndex - 1;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthrow \"Unterminated regular expression in filter expression\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(nextBracketPos === -1) {\n\t\t\tthrow \"Missing closing bracket in filter expression\";\n\t\t}\n\t\tif(!operator.regexp) {\n\t\t\toperator.operand = filterString.substring(p,nextBracketPos);\n\t\t}\n\t\tp = nextBracketPos + 1;\n\n\t\t// Push this operator\n\t\toperators.push(operator);\n\t} while(filterString.charAt(p) !== \"]\");\n\t// Skip the ending square bracket\n\tif(filterString.charAt(p++) !== \"]\") {\n\t\tthrow \"Missing ] in filter expression\";\n\t}\n\t// Return the parsing position\n\treturn p;\n}\n\n/*\nParse a filter string\n*/\nexports.parseFilter = function(filterString) {\n\tfilterString = filterString || \"\";\n\tvar results = [], // Array of arrays of operator nodes {operator:,operand:}\n\t\tp = 0, // Current position in the filter string\n\t\tmatch;\n\tvar whitespaceRegExp = /(\\s+)/mg,\n\t\toperandRegExp = /((?:\\+|\\-)?)(?:(\\[)|(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s\\[\\]]+))/mg;\n\twhile(p < filterString.length) {\n\t\t// Skip any whitespace\n\t\twhitespaceRegExp.lastIndex = p;\n\t\tmatch = whitespaceRegExp.exec(filterString);\n\t\tif(match && match.index === p) {\n\t\t\tp = p + match[0].length;\n\t\t}\n\t\t// Match the start of the operation\n\t\tif(p < filterString.length) {\n\t\t\toperandRegExp.lastIndex = p;\n\t\t\tmatch = operandRegExp.exec(filterString);\n\t\t\tif(!match || match.index !== p) {\n\t\t\t\tthrow $tw.language.getString(\"Error/FilterSyntax\");\n\t\t\t}\n\t\t\tvar operation = {\n\t\t\t\tprefix: \"\",\n\t\t\t\toperators: []\n\t\t\t};\n\t\t\tif(match[1]) {\n\t\t\t\toperation.prefix = match[1];\n\t\t\t\tp++;\n\t\t\t}\n\t\t\tif(match[2]) { // Opening square bracket\n\t\t\t\tp = parseFilterOperation(operation.operators,filterString,p);\n\t\t\t} else {\n\t\t\t\tp = match.index + match[0].length;\n\t\t\t}\n\t\t\tif(match[3] || match[4] || match[5]) { // Double quoted string, single quoted string or unquoted title\n\t\t\t\toperation.operators.push(\n\t\t\t\t\t{operator: \"title\", operand: match[3] || match[4] || match[5]}\n\t\t\t\t);\n\t\t\t}\n\t\t\tresults.push(operation);\n\t\t}\n\t}\n\treturn results;\n};\n\nexports.getFilterOperators = function() {\n\tif(!this.filterOperators) {\n\t\t$tw.Wiki.prototype.filterOperators = {};\n\t\t$tw.modules.applyMethods(\"filteroperator\",this.filterOperators);\n\t}\n\treturn this.filterOperators;\n};\n\nexports.filterTiddlers = function(filterString,widget,source) {\n\tvar fn = this.compileFilter(filterString);\n\treturn fn.call(this,source,widget);\n};\n\n/*\nCompile a filter into a function with the signature fn(source,widget) where:\nsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\nwidget: an optional widget node for retrieving the current tiddler etc.\n*/\nexports.compileFilter = function(filterString) {\n\tvar filterParseTree;\n\ttry {\n\t\tfilterParseTree = this.parseFilter(filterString);\n\t} catch(e) {\n\t\treturn function(source,widget) {\n\t\t\treturn [$tw.language.getString(\"Error/Filter\") + \": \" + e];\n\t\t};\n\t}\n\t// Get the hashmap of filter operator functions\n\tvar filterOperators = this.getFilterOperators();\n\t// Assemble array of functions, one for each operation\n\tvar operationFunctions = [];\n\t// Step through the operations\n\tvar self = this;\n\t$tw.utils.each(filterParseTree,function(operation) {\n\t\t// Create a function for the chain of operators in the operation\n\t\tvar operationSubFunction = function(source,widget) {\n\t\t\tvar accumulator = source,\n\t\t\t\tresults = [],\n\t\t\t\tcurrTiddlerTitle = widget && widget.getVariable(\"currentTiddler\");\n\t\t\t$tw.utils.each(operation.operators,function(operator) {\n\t\t\t\tvar operand = operator.operand,\n\t\t\t\t\toperatorFunction;\n\t\t\t\tif(!operator.operator) {\n\t\t\t\t\toperatorFunction = filterOperators.title;\n\t\t\t\t} else if(!filterOperators[operator.operator]) {\n\t\t\t\t\toperatorFunction = filterOperators.field;\n\t\t\t\t} else {\n\t\t\t\t\toperatorFunction = filterOperators[operator.operator];\n\t\t\t\t}\n\t\t\t\tif(operator.indirect) {\n\t\t\t\t\toperand = self.getTextReference(operator.operand,\"\",currTiddlerTitle);\n\t\t\t\t}\n\t\t\t\tif(operator.variable) {\n\t\t\t\t\toperand = widget.getVariable(operator.operand,{defaultValue: \"\"});\n\t\t\t\t}\n\t\t\t\t// Invoke the appropriate filteroperator module\n\t\t\t\tresults = operatorFunction(accumulator,{\n\t\t\t\t\t\t\toperator: operator.operator,\n\t\t\t\t\t\t\toperand: operand,\n\t\t\t\t\t\t\tprefix: operator.prefix,\n\t\t\t\t\t\t\tsuffix: operator.suffix,\n\t\t\t\t\t\t\tregexp: operator.regexp\n\t\t\t\t\t\t},{\n\t\t\t\t\t\t\twiki: self,\n\t\t\t\t\t\t\twidget: widget\n\t\t\t\t\t\t});\n\t\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\t\taccumulator = self.makeTiddlerIterator(results);\n\t\t\t\t} else {\n\t\t\t\t\taccumulator = results;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\treturn results;\n\t\t\t} else {\n\t\t\t\tvar resultArray = [];\n\t\t\t\tresults(function(tiddler,title) {\n\t\t\t\t\tresultArray.push(title);\n\t\t\t\t});\n\t\t\t\treturn resultArray;\n\t\t\t}\n\t\t};\n\t\t// Wrap the operator functions in a wrapper function that depends on the prefix\n\t\toperationFunctions.push((function() {\n\t\t\tswitch(operation.prefix || \"\") {\n\t\t\t\tcase \"\": // No prefix means that the operation is unioned into the result\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t$tw.utils.pushTop(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"-\": // The results of this operation are removed from the main result\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t$tw.utils.removeArrayEntries(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"+\": // This operation is applied to the main results so far\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t// This replaces all the elements of the array, but keeps the actual array so that references to it are preserved\n\t\t\t\t\t\tsource = self.makeTiddlerIterator(results);\n\t\t\t\t\t\tresults.splice(0,results.length);\n\t\t\t\t\t\t$tw.utils.pushTop(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t}\n\t\t})());\n\t});\n\t// Return a function that applies the operations to a source iterator of tiddler titles\n\treturn $tw.perf.measure(\"filter\",function filterFunction(source,widget) {\n\t\tif(!source) {\n\t\t\tsource = self.each;\n\t\t} else if(typeof source === \"object\") { // Array or hashmap\n\t\t\tsource = self.makeTiddlerIterator(source);\n\t\t}\n\t\tvar results = [];\n\t\t$tw.utils.each(operationFunctions,function(operationFunction) {\n\t\t\toperationFunction(results,source,widget);\n\t\t});\n\t\treturn results;\n\t});\n};\n\n})();\n",
"title": "$:/core/modules/filters.js",
"type": "application/javascript",
"module-type": "wikimethod"
},
"$:/core/modules/info/platform.js": {
"text": "/*\\\ntitle: $:/core/modules/info/platform.js\ntype: application/javascript\nmodule-type: info\n\nInitialise basic platform $:/info/ tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.getInfoTiddlerFields = function() {\n\tvar mapBoolean = function(value) {return value ? \"yes\" : \"no\";},\n\t\tinfoTiddlerFields = [];\n\t// Basics\n\tinfoTiddlerFields.push({title: \"$:/info/browser\", text: mapBoolean(!!$tw.browser)});\n\tinfoTiddlerFields.push({title: \"$:/info/node\", text: mapBoolean(!!$tw.node)});\n\t// Document location\n\tif($tw.browser) {\n\t\tvar setLocationProperty = function(name,value) {\n\t\t\t\tinfoTiddlerFields.push({title: \"$:/info/url/\" + name, text: value});\t\t\t\n\t\t\t},\n\t\t\tlocation = document.location;\n\t\tsetLocationProperty(\"full\", (location.toString()).split(\"#\")[0]);\n\t\tsetLocationProperty(\"host\", location.host);\n\t\tsetLocationProperty(\"hostname\", location.hostname);\n\t\tsetLocationProperty(\"protocol\", location.protocol);\n\t\tsetLocationProperty(\"port\", location.port);\n\t\tsetLocationProperty(\"pathname\", location.pathname);\n\t\tsetLocationProperty(\"search\", location.search);\n\t\tsetLocationProperty(\"origin\", location.origin);\n\t}\n\treturn infoTiddlerFields;\n};\n\n})();\n",
"title": "$:/core/modules/info/platform.js",
"type": "application/javascript",
"module-type": "info"
},
"$:/core/modules/keyboard.js": {
"text": "/*\\\ntitle: $:/core/modules/keyboard.js\ntype: application/javascript\nmodule-type: global\n\nKeyboard handling utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar namedKeys = {\n\t\"cancel\": 3,\n\t\"help\": 6,\n\t\"backspace\": 8,\n\t\"tab\": 9,\n\t\"clear\": 12,\n\t\"return\": 13,\n\t\"enter\": 13,\n\t\"pause\": 19,\n\t\"escape\": 27,\n\t\"space\": 32,\n\t\"page_up\": 33,\n\t\"page_down\": 34,\n\t\"end\": 35,\n\t\"home\": 36,\n\t\"left\": 37,\n\t\"up\": 38,\n\t\"right\": 39,\n\t\"down\": 40,\n\t\"printscreen\": 44,\n\t\"insert\": 45,\n\t\"delete\": 46,\n\t\"0\": 48,\n\t\"1\": 49,\n\t\"2\": 50,\n\t\"3\": 51,\n\t\"4\": 52,\n\t\"5\": 53,\n\t\"6\": 54,\n\t\"7\": 55,\n\t\"8\": 56,\n\t\"9\": 57,\n\t\"firefoxsemicolon\": 59,\n\t\"firefoxequals\": 61,\n\t\"a\": 65,\n\t\"b\": 66,\n\t\"c\": 67,\n\t\"d\": 68,\n\t\"e\": 69,\n\t\"f\": 70,\n\t\"g\": 71,\n\t\"h\": 72,\n\t\"i\": 73,\n\t\"j\": 74,\n\t\"k\": 75,\n\t\"l\": 76,\n\t\"m\": 77,\n\t\"n\": 78,\n\t\"o\": 79,\n\t\"p\": 80,\n\t\"q\": 81,\n\t\"r\": 82,\n\t\"s\": 83,\n\t\"t\": 84,\n\t\"u\": 85,\n\t\"v\": 86,\n\t\"w\": 87,\n\t\"x\": 88,\n\t\"y\": 89,\n\t\"z\": 90,\n\t\"numpad0\": 96,\n\t\"numpad1\": 97,\n\t\"numpad2\": 98,\n\t\"numpad3\": 99,\n\t\"numpad4\": 100,\n\t\"numpad5\": 101,\n\t\"numpad6\": 102,\n\t\"numpad7\": 103,\n\t\"numpad8\": 104,\n\t\"numpad9\": 105,\n\t\"multiply\": 106,\n\t\"add\": 107,\n\t\"separator\": 108,\n\t\"subtract\": 109,\n\t\"decimal\": 110,\n\t\"divide\": 111,\n\t\"f1\": 112,\n\t\"f2\": 113,\n\t\"f3\": 114,\n\t\"f4\": 115,\n\t\"f5\": 116,\n\t\"f6\": 117,\n\t\"f7\": 118,\n\t\"f8\": 119,\n\t\"f9\": 120,\n\t\"f10\": 121,\n\t\"f11\": 122,\n\t\"f12\": 123,\n\t\"f13\": 124,\n\t\"f14\": 125,\n\t\"f15\": 126,\n\t\"f16\": 127,\n\t\"f17\": 128,\n\t\"f18\": 129,\n\t\"f19\": 130,\n\t\"f20\": 131,\n\t\"f21\": 132,\n\t\"f22\": 133,\n\t\"f23\": 134,\n\t\"f24\": 135,\n\t\"firefoxminus\": 173,\n\t\"semicolon\": 186,\n\t\"equals\": 187,\n\t\"comma\": 188,\n\t\"dash\": 189,\n\t\"period\": 190,\n\t\"slash\": 191,\n\t\"backquote\": 192,\n\t\"openbracket\": 219,\n\t\"backslash\": 220,\n\t\"closebracket\": 221,\n\t\"quote\": 222\n};\n\nfunction KeyboardManager(options) {\n\tvar self = this;\n\toptions = options || \"\";\n\t// Save the named key hashmap\n\tthis.namedKeys = namedKeys;\n\t// Create a reverse mapping of code to keyname\n\tthis.keyNames = [];\n\t$tw.utils.each(namedKeys,function(keyCode,name) {\n\t\tself.keyNames[keyCode] = name.substr(0,1).toUpperCase() + name.substr(1);\n\t});\n\t// Save the platform-specific name of the \"meta\" key\n\tthis.metaKeyName = $tw.platform.isMac ? \"cmd-\" : \"win-\";\n}\n\n/*\nReturn an array of keycodes for the modifier keys ctrl, shift, alt, meta\n*/\nKeyboardManager.prototype.getModifierKeys = function() {\n\treturn [\n\t\t16, // Shift\n\t\t17, // Ctrl\n\t\t18, // Alt\n\t\t20, // CAPS LOCK\n\t\t91, // Meta (left)\n\t\t93, // Meta (right)\n\t\t224 // Meta (Firefox)\n\t]\n};\n\n/*\nParses a key descriptor into the structure:\n{\n\tkeyCode: numeric keycode\n\tshiftKey: boolean\n\taltKey: boolean\n\tctrlKey: boolean\n\tmetaKey: boolean\n}\nKey descriptors have the following format:\n\tctrl+enter\n\tctrl+shift+alt+A\n*/\nKeyboardManager.prototype.parseKeyDescriptor = function(keyDescriptor) {\n\tvar components = keyDescriptor.split(/\\+|\\-/),\n\t\tinfo = {\n\t\t\tkeyCode: 0,\n\t\t\tshiftKey: false,\n\t\t\taltKey: false,\n\t\t\tctrlKey: false,\n\t\t\tmetaKey: false\n\t\t};\n\tfor(var t=0; t<components.length; t++) {\n\t\tvar s = components[t].toLowerCase(),\n\t\t\tc = s.charCodeAt(0);\n\t\t// Look for modifier keys\n\t\tif(s === \"ctrl\") {\n\t\t\tinfo.ctrlKey = true;\n\t\t} else if(s === \"shift\") {\n\t\t\tinfo.shiftKey = true;\n\t\t} else if(s === \"alt\") {\n\t\t\tinfo.altKey = true;\n\t\t} else if(s === \"meta\" || s === \"cmd\" || s === \"win\") {\n\t\t\tinfo.metaKey = true;\n\t\t}\n\t\t// Replace named keys with their code\n\t\tif(this.namedKeys[s]) {\n\t\t\tinfo.keyCode = this.namedKeys[s];\n\t\t}\n\t}\n\tif(info.keyCode) {\n\t\treturn info;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nParse a list of key descriptors into an array of keyInfo objects. The key descriptors can be passed as an array of strings or a space separated string\n*/\nKeyboardManager.prototype.parseKeyDescriptors = function(keyDescriptors,options) {\n\tvar self = this;\n\toptions = options || {};\n\toptions.stack = options.stack || [];\n\tvar wiki = options.wiki || $tw.wiki;\n\tif(typeof keyDescriptors === \"string\" && keyDescriptors === \"\") {\n\t\treturn [];\n\t}\n\tif(!$tw.utils.isArray(keyDescriptors)) {\n\t\tkeyDescriptors = keyDescriptors.split(\" \");\n\t}\n\tvar result = [];\n\t$tw.utils.each(keyDescriptors,function(keyDescriptor) {\n\t\t// Look for a named shortcut\n\t\tif(keyDescriptor.substr(0,2) === \"((\" && keyDescriptor.substr(-2,2) === \"))\") {\n\t\t\tif(options.stack.indexOf(keyDescriptor) === -1) {\n\t\t\t\toptions.stack.push(keyDescriptor);\n\t\t\t\tvar name = keyDescriptor.substring(2,keyDescriptor.length - 2),\n\t\t\t\t\tlookupName = function(configName) {\n\t\t\t\t\t\tvar keyDescriptors = wiki.getTiddlerText(\"$:/config/\" + configName + \"/\" + name);\n\t\t\t\t\t\tif(keyDescriptors) {\n\t\t\t\t\t\t\tresult.push.apply(result,self.parseKeyDescriptors(keyDescriptors,options));\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\tlookupName(\"shortcuts\");\n\t\t\t\tlookupName($tw.platform.isMac ? \"shortcuts-mac\" : \"shortcuts-not-mac\");\n\t\t\t\tlookupName($tw.platform.isWindows ? \"shortcuts-windows\" : \"shortcuts-not-windows\");\n\t\t\t\tlookupName($tw.platform.isLinux ? \"shortcuts-linux\" : \"shortcuts-not-linux\");\n\t\t\t}\n\t\t} else {\n\t\t\tresult.push(self.parseKeyDescriptor(keyDescriptor));\n\t\t}\n\t});\n\treturn result;\n};\n\nKeyboardManager.prototype.getPrintableShortcuts = function(keyInfoArray) {\n\tvar self = this,\n\t\tresult = [];\n\t$tw.utils.each(keyInfoArray,function(keyInfo) {\n\t\tif(keyInfo) {\n\t\t\tresult.push((keyInfo.ctrlKey ? \"ctrl-\" : \"\") + \n\t\t\t\t (keyInfo.shiftKey ? \"shift-\" : \"\") + \n\t\t\t\t (keyInfo.altKey ? \"alt-\" : \"\") + \n\t\t\t\t (keyInfo.metaKey ? self.metaKeyName : \"\") + \n\t\t\t\t (self.keyNames[keyInfo.keyCode]));\n\t\t}\n\t});\n\treturn result;\n}\n\nKeyboardManager.prototype.checkKeyDescriptor = function(event,keyInfo) {\n\treturn keyInfo &&\n\t\t\tevent.keyCode === keyInfo.keyCode && \n\t\t\tevent.shiftKey === keyInfo.shiftKey && \n\t\t\tevent.altKey === keyInfo.altKey && \n\t\t\tevent.ctrlKey === keyInfo.ctrlKey && \n\t\t\tevent.metaKey === keyInfo.metaKey;\n};\n\nKeyboardManager.prototype.checkKeyDescriptors = function(event,keyInfoArray) {\n\tfor(var t=0; t<keyInfoArray.length; t++) {\n\t\tif(this.checkKeyDescriptor(event,keyInfoArray[t])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\nexports.KeyboardManager = KeyboardManager;\n\n})();\n",
"title": "$:/core/modules/keyboard.js",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/language.js": {
"text": "/*\\\ntitle: $:/core/modules/language.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Language() manages translateable strings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate an instance of the language manager. Options include:\nwiki: wiki from which to retrieve translation tiddlers\n*/\nfunction Language(options) {\n\toptions = options || \"\";\n\tthis.wiki = options.wiki || $tw.wiki;\n}\n\n/*\nReturn a wikified translateable string. The title is automatically prefixed with \"$:/language/\"\nOptions include:\nvariables: optional hashmap of variables to supply to the language wikification\n*/\nLanguage.prototype.getString = function(title,options) {\n\toptions = options || {};\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.renderTiddler(\"text/plain\",title,{variables: options.variables});\n};\n\n/*\nReturn a raw, unwikified translateable string. The title is automatically prefixed with \"$:/language/\"\n*/\nLanguage.prototype.getRawString = function(title) {\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.getTiddlerText(title);\n};\n\nexports.Language = Language;\n\n})();\n",
"title": "$:/core/modules/language.js",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/macros/changecount.js": {
"text": "/*\\\ntitle: $:/core/modules/macros/changecount.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the changecount for the current tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"changecount\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn this.wiki.getChangeCount(this.getVariable(\"currentTiddler\")) + \"\";\n};\n\n})();\n",
"title": "$:/core/modules/macros/changecount.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/contrastcolour.js": {
"text": "/*\\\ntitle: $:/core/modules/macros/contrastcolour.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to choose which of two colours has the highest contrast with a base colour\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"contrastcolour\";\n\nexports.params = [\n\t{name: \"target\"},\n\t{name: \"fallbackTarget\"},\n\t{name: \"colourA\"},\n\t{name: \"colourB\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(target,fallbackTarget,colourA,colourB) {\n\tvar rgbTarget = $tw.utils.parseCSSColor(target) || $tw.utils.parseCSSColor(fallbackTarget);\n\tif(!rgbTarget) {\n\t\treturn colourA;\n\t}\n\tvar rgbColourA = $tw.utils.parseCSSColor(colourA),\n\t\trgbColourB = $tw.utils.parseCSSColor(colourB);\n\tif(rgbColourA && !rgbColourB) {\n\t\treturn rgbColourA;\n\t}\n\tif(rgbColourB && !rgbColourA) {\n\t\treturn rgbColourB;\n\t}\n\tif(!rgbColourA && !rgbColourB) {\n\t\t// If neither colour is readable, return a crude inverse of the target\n\t\treturn [255 - rgbTarget[0],255 - rgbTarget[1],255 - rgbTarget[2],rgbTarget[3]];\n\t}\n\t// Colour brightness formula derived from http://www.w3.org/WAI/ER/WD-AERT/#color-contrast\n\tvar brightnessTarget = rgbTarget[0] * 0.299 + rgbTarget[1] * 0.587 + rgbTarget[2] * 0.114,\n\t\tbrightnessA = rgbColourA[0] * 0.299 + rgbColourA[1] * 0.587 + rgbColourA[2] * 0.114,\n\t\tbrightnessB = rgbColourB[0] * 0.299 + rgbColourB[1] * 0.587 + rgbColourB[2] * 0.114;\n\treturn Math.abs(brightnessTarget - brightnessA) > Math.abs(brightnessTarget - brightnessB) ? colourA : colourB;\n};\n\n})();\n",
"title": "$:/core/modules/macros/contrastcolour.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/csvtiddlers.js": {
"text": "/*\\\ntitle: $:/core/modules/macros/csvtiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to CSV\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"csvtiddlers\";\n\nexports.params = [\n\t{name: \"filter\"},\n\t{name: \"format\"},\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter,format) {\n\tvar self = this,\n\t\ttiddlers = this.wiki.filterTiddlers(filter),\n\t\ttiddler,\n\t\tfields = [],\n\t\tt,f;\n\t// Collect all the fields\n\tfor(t=0;t<tiddlers.length; t++) {\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\tfor(f in tiddler.fields) {\n\t\t\tif(fields.indexOf(f) === -1) {\n\t\t\t\tfields.push(f);\n\t\t\t}\n\t\t}\n\t}\n\t// Sort the fields and bring the standard ones to the front\n\tfields.sort();\n\t\"title text modified modifier created creator\".split(\" \").reverse().forEach(function(value,index) {\n\t\tvar p = fields.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tfields.splice(p,1);\n\t\t\tfields.unshift(value)\n\t\t}\n\t});\n\t// Output the column headings\n\tvar output = [], row = [];\n\tfields.forEach(function(value) {\n\t\trow.push(quoteAndEscape(value))\n\t});\n\toutput.push(row.join(\",\"));\n\t// Output each tiddler\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\trow = [];\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\t\tfor(f=0; f<fields.length; f++) {\n\t\t\t\trow.push(quoteAndEscape(tiddler ? tiddler.getFieldString(fields[f]) || \"\" : \"\"));\n\t\t\t}\n\t\toutput.push(row.join(\",\"));\n\t}\n\treturn output.join(\"\\n\");\n};\n\nfunction quoteAndEscape(value) {\n\treturn \"\\\"\" + value.replace(/\"/mg,\"\\\"\\\"\") + \"\\\"\";\n}\n\n})();\n",
"title": "$:/core/modules/macros/csvtiddlers.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/displayshortcuts.js": {
"text": "/*\\\ntitle: $:/core/modules/macros/displayshortcuts.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to display a list of keyboard shortcuts in human readable form. Notably, it resolves named shortcuts like `((bold))` to the underlying keystrokes.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"displayshortcuts\";\n\nexports.params = [\n\t{name: \"shortcuts\"},\n\t{name: \"prefix\"},\n\t{name: \"separator\"},\n\t{name: \"suffix\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(shortcuts,prefix,separator,suffix) {\n\tvar shortcutArray = $tw.keyboardManager.getPrintableShortcuts($tw.keyboardManager.parseKeyDescriptors(shortcuts,{\n\t\twiki: this.wiki\n\t}));\n\tif(shortcutArray.length > 0) {\n\t\tshortcutArray.sort(function(a,b) {\n\t\t return a.toLowerCase().localeCompare(b.toLowerCase());\n\t\t})\n\t\treturn prefix + shortcutArray.join(separator) + suffix;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/macros/displayshortcuts.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/dumpvariables.js": {
"text": "/*\\\ntitle: $:/core/modules/macros/dumpvariables.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to dump all active variable values\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"dumpvariables\";\n\nexports.params = [\n];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\tvar output = [\"|!Variable |!Value |\"],\n\t\tvariables = [], variable;\n\tfor(variable in this.variables) {\n\t\tvariables.push(variable);\n\t}\n\tvariables.sort();\n\tfor(var index=0; index<variables.length; index++) {\n\t\tvar variable = variables[index];\n\t\toutput.push(\"|\" + variable + \" |<input size=50 value=<<\" + variable + \">>/> |\")\n\t}\n\treturn output.join(\"\\n\");\n};\n\n})();\n",
"title": "$:/core/modules/macros/dumpvariables.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/jsontiddler.js": {
"text": "/*\\\ntitle: $:/core/modules/macros/jsontiddler.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output a single tiddler to JSON\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"jsontiddler\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\ttitle = title || this.getVariable(\"currentTiddler\");\n\tvar tiddler = !!title && this.wiki.getTiddler(title),\n\t\tfields = new Object();\n\tif(tiddler) {\n\t\tfor(var field in tiddler.fields) {\n\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t}\n\t}\n\treturn JSON.stringify(fields,null,$tw.config.preferences.jsonSpaces);\n};\n\n})();\n",
"title": "$:/core/modules/macros/jsontiddler.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/jsontiddlers.js": {
"text": "/*\\\ntitle: $:/core/modules/macros/jsontiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to JSON\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"jsontiddlers\";\n\nexports.params = [\n\t{name: \"filter\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter) {\n\tvar tiddlers = this.wiki.filterTiddlers(filter),\n\t\tdata = [];\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\tvar tiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\tif(tiddler) {\n\t\t\tvar fields = new Object();\n\t\t\tfor(var field in tiddler.fields) {\n\t\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t\t}\n\t\t\tdata.push(fields);\n\t\t}\n\t}\n\treturn JSON.stringify(data,null,$tw.config.preferences.jsonSpaces);\n};\n\n})();\n",
"title": "$:/core/modules/macros/jsontiddlers.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/makedatauri.js": {
"text": "/*\\\ntitle: $:/core/modules/macros/makedatauri.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to convert a string of text to a data URI\n\n<<makedatauri text:\"Text to be converted\" type:\"text/vnd.tiddlywiki\">>\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"makedatauri\";\n\nexports.params = [\n\t{name: \"text\"},\n\t{name: \"type\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(text,type) {\n\treturn $tw.utils.makeDataUri(text,type);\n};\n\n})();\n",
"title": "$:/core/modules/macros/makedatauri.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/now.js": {
"text": "/*\\\ntitle: $:/core/modules/macros/now.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return a formatted version of the current time\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"now\";\n\nexports.params = [\n\t{name: \"format\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(format) {\n\treturn $tw.utils.formatDateString(new Date(),format || \"0hh:0mm, DDth MMM YYYY\");\n};\n\n})();\n",
"title": "$:/core/modules/macros/now.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/qualify.js": {
"text": "/*\\\ntitle: $:/core/modules/macros/qualify.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to qualify a state tiddler title according\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"qualify\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\treturn title + \"-\" + this.getStateQualifier();\n};\n\n})();\n",
"title": "$:/core/modules/macros/qualify.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/resolvepath.js": {
"text": "/*\\\ntitle: $:/core/modules/macros/resolvepath.js\ntype: application/javascript\nmodule-type: macro\n\nResolves a relative path for an absolute rootpath.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"resolvepath\";\n\nexports.params = [\n\t{name: \"source\"},\n\t{name: \"root\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(source, root) {\n\treturn $tw.utils.resolvePath(source, root);\n};\n\n})();\n",
"title": "$:/core/modules/macros/resolvepath.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/version.js": {
"text": "/*\\\ntitle: $:/core/modules/macros/version.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the TiddlyWiki core version number\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"version\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn $tw.version;\n};\n\n})();\n",
"title": "$:/core/modules/macros/version.js",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/parsers/audioparser.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/audioparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe audio parser parses an audio tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar AudioParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"audio\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"}\n\t\t\t}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"audio/ogg\"] = AudioParser;\nexports[\"audio/mpeg\"] = AudioParser;\nexports[\"audio/mp3\"] = AudioParser;\nexports[\"audio/mp4\"] = AudioParser;\n\n})();\n\n",
"title": "$:/core/modules/parsers/audioparser.js",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/csvparser.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/csvparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe CSV text parser processes CSV files into a table wrapped in a scrollable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar CsvParser = function(type,text,options) {\n\t// Table framework\n\tthis.tree = [{\n\t\t\"type\": \"scrollable\", \"children\": [{\n\t\t\t\"type\": \"element\", \"tag\": \"table\", \"children\": [{\n\t\t\t\t\"type\": \"element\", \"tag\": \"tbody\", \"children\": []\n\t\t\t}], \"attributes\": {\n\t\t\t\t\"class\": {\"type\": \"string\", \"value\": \"tc-csv-table\"}\n\t\t\t}\n\t\t}]\n\t}];\n\t// Split the text into lines\n\tvar lines = text.split(/\\r?\\n/mg),\n\t\ttag = \"th\";\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar lineText = lines[line];\n\t\tif(lineText) {\n\t\t\tvar row = {\n\t\t\t\t\t\"type\": \"element\", \"tag\": \"tr\", \"children\": []\n\t\t\t\t};\n\t\t\tvar columns = lineText.split(\",\");\n\t\t\tfor(var column=0; column<columns.length; column++) {\n\t\t\t\trow.children.push({\n\t\t\t\t\t\t\"type\": \"element\", \"tag\": tag, \"children\": [{\n\t\t\t\t\t\t\t\"type\": \"text\",\n\t\t\t\t\t\t\t\"text\": columns[column]\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t}\n\t\t\ttag = \"td\";\n\t\t\tthis.tree[0].children[0].children[0].children.push(row);\n\t\t}\n\t}\n};\n\nexports[\"text/csv\"] = CsvParser;\n\n})();\n\n",
"title": "$:/core/modules/parsers/csvparser.js",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/htmlparser.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/htmlparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe HTML parser displays text as raw HTML\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HtmlParser = function(type,text,options) {\n\tvar src;\n\tif(options._canonical_uri) {\n\t\tsrc = options._canonical_uri;\n\t} else if(text) {\n\t\tsrc = \"data:text/html;charset=utf-8,\" + encodeURIComponent(text);\n\t}\n\tthis.tree = [{\n\t\ttype: \"element\",\n\t\ttag: \"iframe\",\n\t\tattributes: {\n\t\t\tsrc: {type: \"string\", value: src},\n\t\t\tsandbox: {type: \"string\", value: \"\"}\n\t\t}\n\t}];\n};\n\nexports[\"text/html\"] = HtmlParser;\n\n})();\n\n",
"title": "$:/core/modules/parsers/htmlparser.js",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/imageparser.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/imageparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe image parser parses an image into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ImageParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"img\",\n\t\t\tattributes: {}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\tif(type === \"image/svg+xml\" || type === \".svg\") {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:image/svg+xml,\" + encodeURIComponent(text)};\n\t\t} else {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t\t}\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"image/svg+xml\"] = ImageParser;\nexports[\"image/jpg\"] = ImageParser;\nexports[\"image/jpeg\"] = ImageParser;\nexports[\"image/png\"] = ImageParser;\nexports[\"image/gif\"] = ImageParser;\nexports[\"image/x-icon\"] = ImageParser;\n\n})();\n\n",
"title": "$:/core/modules/parsers/imageparser.js",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/utils/parseutils.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/parseutils.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions concerned with parsing text into tokens.\n\nMost functions have the following pattern:\n\n* The parameters are:\n** `source`: the source string being parsed\n** `pos`: the current parse position within the string\n** Any further parameters are used to identify the token that is being parsed\n* The return value is:\n** null if the token was not found at the specified position\n** an object representing the token with the following standard fields:\n*** `type`: string indicating the type of the token\n*** `start`: start position of the token in the source string\n*** `end`: end position of the token in the source string\n*** Any further fields required to describe the token\n\nThe exception is `skipWhiteSpace`, which just returns the position after the whitespace.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for a whitespace token. Returns null if not found, otherwise returns {type: \"whitespace\", start:, end:,}\n*/\nexports.parseWhiteSpace = function(source,pos) {\n\tvar p = pos,c;\n\twhile(true) {\n\t\tc = source.charAt(p);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tp++;\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n\tif(p === pos) {\n\t\treturn null;\n\t} else {\n\t\treturn {\n\t\t\ttype: \"whitespace\",\n\t\t\tstart: pos,\n\t\t\tend: p\n\t\t}\n\t}\n};\n\n/*\nConvenience wrapper for parseWhiteSpace. Returns the position after the whitespace\n*/\nexports.skipWhiteSpace = function(source,pos) {\n\tvar c;\n\twhile(true) {\n\t\tc = source.charAt(pos);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tpos++;\n\t\t} else {\n\t\t\treturn pos;\n\t\t}\n\t}\n};\n\n/*\nLook for a given string token. Returns null if not found, otherwise returns {type: \"token\", value:, start:, end:,}\n*/\nexports.parseTokenString = function(source,pos,token) {\n\tvar match = source.indexOf(token,pos) === pos;\n\tif(match) {\n\t\treturn {\n\t\t\ttype: \"token\",\n\t\t\tvalue: token,\n\t\t\tstart: pos,\n\t\t\tend: pos + token.length\n\t\t};\n\t}\n\treturn null;\n};\n\n/*\nLook for a token matching a regex. Returns null if not found, otherwise returns {type: \"regexp\", match:, start:, end:,}\n*/\nexports.parseTokenRegExp = function(source,pos,reToken) {\n\tvar node = {\n\t\ttype: \"regexp\",\n\t\tstart: pos\n\t};\n\treToken.lastIndex = pos;\n\tnode.match = reToken.exec(source);\n\tif(node.match && node.match.index === pos) {\n\t\tnode.end = pos + node.match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a string literal. Returns null if not found, otherwise returns {type: \"string\", value:, start:, end:,}\n*/\nexports.parseStringLiteral = function(source,pos) {\n\tvar node = {\n\t\ttype: \"string\",\n\t\tstart: pos\n\t};\n\tvar reString = /(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\")|(?:'([^']*)')/g;\n\treString.lastIndex = pos;\n\tvar match = reString.exec(source);\n\tif(match && match.index === pos) {\n\t\tnode.value = match[1] !== undefined ? match[1] :(\n\t\t\tmatch[2] !== undefined ? match[2] : match[3] \n\t\t\t\t\t);\n\t\tnode.end = pos + match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a macro invocation parameter. Returns null if not found, or {type: \"macro-parameter\", name:, value:, start:, end:}\n*/\nexports.parseMacroParameter = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macro-parameter\",\n\t\tstart: pos\n\t};\n\t// Define our regexp\n\tvar reMacroParameter = /(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\\s>\"'=]+)))/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the parameter\n\tvar token = $tw.utils.parseTokenRegExp(source,pos,reMacroParameter);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the parameter details\n\tnode.value = token.match[2] !== undefined ? token.match[2] : (\n\t\t\t\t\ttoken.match[3] !== undefined ? token.match[3] : (\n\t\t\t\t\t\ttoken.match[4] !== undefined ? token.match[4] : (\n\t\t\t\t\t\t\ttoken.match[5] !== undefined ? token.match[5] : (\n\t\t\t\t\t\t\t\ttoken.match[6] !== undefined ? token.match[6] : (\n\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t);\n\tif(token.match[1]) {\n\t\tnode.name = token.match[1];\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for a macro invocation. Returns null if not found, or {type: \"macrocall\", name:, parameters:, start:, end:}\n*/\nexports.parseMacroInvocation = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macrocall\",\n\t\tstart: pos,\n\t\tparams: []\n\t};\n\t// Define our regexps\n\tvar reMacroName = /([^\\s>\"'=]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double less than sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"<<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the macro name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reMacroName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Process parameters\n\tvar parameter = $tw.utils.parseMacroParameter(source,pos);\n\twhile(parameter) {\n\t\tnode.params.push(parameter);\n\t\tpos = parameter.end;\n\t\t// Get the next parameter\n\t\tparameter = $tw.utils.parseMacroParameter(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">>\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for an HTML attribute definition. Returns null if not found, otherwise returns {type: \"attribute\", name:, valueType: \"string|indirect|macro\", value:, start:, end:,}\n*/\nexports.parseAttribute = function(source,pos) {\n\tvar node = {\n\t\tstart: pos\n\t};\n\t// Define our regexps\n\tvar reAttributeName = /([^\\/\\s>\"'=]+)/g,\n\t\treUnquotedAttribute = /([^\\/\\s<>\"'=]+)/g,\n\t\treFilteredValue = /\\{\\{\\{(.+?)\\}\\}\\}/g,\n\t\treIndirectValue = /\\{\\{([^\\}]+)\\}\\}/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the attribute name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reAttributeName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for an equals sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"=\");\n\tif(token) {\n\t\tpos = token.end;\n\t\t// Skip whitespace\n\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t// Look for a string literal\n\t\tvar stringLiteral = $tw.utils.parseStringLiteral(source,pos);\n\t\tif(stringLiteral) {\n\t\t\tpos = stringLiteral.end;\n\t\t\tnode.type = \"string\";\n\t\t\tnode.value = stringLiteral.value;\n\t\t} else {\n\t\t\t// Look for a filtered value\n\t\t\tvar filteredValue = $tw.utils.parseTokenRegExp(source,pos,reFilteredValue);\n\t\t\tif(filteredValue) {\n\t\t\t\tpos = filteredValue.end;\n\t\t\t\tnode.type = \"filtered\";\n\t\t\t\tnode.filter = filteredValue.match[1];\n\t\t\t} else {\n\t\t\t\t// Look for an indirect value\n\t\t\t\tvar indirectValue = $tw.utils.parseTokenRegExp(source,pos,reIndirectValue);\n\t\t\t\tif(indirectValue) {\n\t\t\t\t\tpos = indirectValue.end;\n\t\t\t\t\tnode.type = \"indirect\";\n\t\t\t\t\tnode.textReference = indirectValue.match[1];\n\t\t\t\t} else {\n\t\t\t\t\t// Look for a unquoted value\n\t\t\t\t\tvar unquotedValue = $tw.utils.parseTokenRegExp(source,pos,reUnquotedAttribute);\n\t\t\t\t\tif(unquotedValue) {\n\t\t\t\t\t\tpos = unquotedValue.end;\n\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\tnode.value = unquotedValue.match[1];\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Look for a macro invocation value\n\t\t\t\t\t\tvar macroInvocation = $tw.utils.parseMacroInvocation(source,pos);\n\t\t\t\t\t\tif(macroInvocation) {\n\t\t\t\t\t\t\tpos = macroInvocation.end;\n\t\t\t\t\t\t\tnode.type = \"macro\";\n\t\t\t\t\t\t\tnode.value = macroInvocation;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\t\tnode.value = \"true\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tnode.type = \"string\";\n\t\tnode.value = \"true\";\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
"title": "$:/core/modules/utils/parseutils.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/parsers/pdfparser.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/pdfparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe PDF parser embeds a PDF viewer\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ImageParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"embed\",\n\t\t\tattributes: {}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:application/pdf;base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"application/pdf\"] = ImageParser;\n\n})();\n\n",
"title": "$:/core/modules/parsers/pdfparser.js",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/textparser.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/textparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe plain text parser processes blocks of source text into a degenerate parse tree consisting of a single text node\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar TextParser = function(type,text,options) {\n\tthis.tree = [{\n\t\ttype: \"codeblock\",\n\t\tattributes: {\n\t\t\tcode: {type: \"string\", value: text},\n\t\t\tlanguage: {type: \"string\", value: type}\n\t\t}\n\t}];\n};\n\nexports[\"text/plain\"] = TextParser;\nexports[\"text/x-tiddlywiki\"] = TextParser;\nexports[\"application/javascript\"] = TextParser;\nexports[\"application/json\"] = TextParser;\nexports[\"text/css\"] = TextParser;\nexports[\"application/x-tiddler-dictionary\"] = TextParser;\n\n})();\n\n",
"title": "$:/core/modules/parsers/textparser.js",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/videoparser.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/videoparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe video parser parses a video tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar VideoParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"video\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"}\n\t\t\t}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"video/mp4\"] = VideoParser;\nexports[\"video/quicktime\"] = VideoParser;\n\n})();\n\n",
"title": "$:/core/modules/parsers/videoparser.js",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/wikiparser/rules/codeblock.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for code blocks. For example:\n\n```\n\t```\n\tThis text will not be //wikified//\n\t```\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match and get language if defined\n\tthis.matchRegExp = /```([\\w-]*)\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\\r?\\n```$)/mg;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\t// Return the $codeblock widget\n\treturn [{\n\t\t\ttype: \"codeblock\",\n\t\t\tattributes: {\n\t\t\t\t\tcode: {type: \"string\", value: text},\n\t\t\t\t\tlanguage: {type: \"string\", value: this.match[1]}\n\t\t\t}\n\t}];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/codeblock.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/codeinline.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for code runs. For example:\n\n```\n\tThis is a `code run`.\n\tThis is another ``code run``\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(``?)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar reEnd = new RegExp(this.match[1], \"mg\");\n\t// Look for the end marker\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the text\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"code\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: text\n\t\t}]\n\t}];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/codeinline.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/commentblock.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = startPos + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/commentblock.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/commentinline.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = startPos + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/commentinline.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/dash.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/dash.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for dashes. For example:\n\n```\nThis is an en-dash: --\n\nThis is an em-dash: ---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"dash\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{2,3}(?!-)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar dash = this.match[0].length === 2 ? \"–\" : \"—\";\n\treturn [{\n\t\ttype: \"entity\",\n\t\tentity: dash\n\t}];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/dash.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/bold.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - bold. For example:\n\n```\n\tThis is ''bold'' text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except bold \n\\rules only bold \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"bold\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /''/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/''/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strong\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/italic.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - italic. For example:\n\n```\n\tThis is //italic// text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except italic\n\\rules only italic\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"italic\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\/\\//mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\/\\//mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"em\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - strikethrough. For example:\n\n```\n\tThis is ~~strikethrough~~ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except strikethrough \n\\rules only strikethrough \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"strikethrough\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~~/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/~~/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strike\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - subscript. For example:\n\n```\n\tThis is ,,subscript,, text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except subscript \n\\rules only subscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"subscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /,,/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/,,/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sub\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - superscript. For example:\n\n```\n\tThis is ^^superscript^^ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except superscript \n\\rules only superscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"superscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\^\\^/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\^\\^/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sup\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - underscore. For example:\n\n```\n\tThis is __underscore__ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except underscore \n\\rules only underscore\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"underscore\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /__/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/__/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"u\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
"title": "$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/entity.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/entity.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML entities. For example:\n\n```\n\tThis is a copyright symbol: ©\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"entity\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(&#?[a-zA-Z0-9]{2,8};)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar entityString = this.match[1];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Return the entity\n\treturn [{type: \"entity\", entity: this.match[0]}];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/entity.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/extlink.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/extlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\nAn external link: http://www.tiddlywiki.com/\n\nA suppressed external link: ~http://www.tiddlyspace.com/\n```\n\nExternal links can be suppressed by preceding them with `~`.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"extlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~?(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(this.match[0].substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: this.match[0].substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: this.match[0]},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"},\n\t\t\t\trel: {type: \"string\", value: \"noopener noreferrer\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: this.match[0]\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/extlink.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level filtered transclusion. For example:\n\n```\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t},\n\t\tisBlock: true\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline filtered transclusion. For example:\n\n```\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t}\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for marking areas with hard line breaks. For example:\n\n```\n\"\"\"\nThis is some text\nThat is set like\nIt is a Poem\nWhen it is\nClearly\nNot\n\"\"\"\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"hardlinebreaks\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\"\"\"(?:\\r?\\n)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\"\"\")|(\\r?\\n)/mg,\n\t\ttree = [],\n\t\tmatch;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tdo {\n\t\t// Parse the run up to the terminator\n\t\ttree.push.apply(tree,this.parser.parseInlineRun(reEnd,{eatTerminator: false}));\n\t\t// Redo the terminator match\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tmatch = reEnd.exec(this.parser.source);\n\t\tif(match) {\n\t\t\tthis.parser.pos = reEnd.lastIndex;\n\t\t\t// Add a line break if the terminator was a line break\n\t\t\tif(match[2]) {\n\t\t\t\ttree.push({type: \"element\", tag: \"br\"});\n\t\t\t}\n\t\t}\n\t} while(match && !match[1]);\n\t// Return the nodes\n\treturn tree;\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/heading.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/heading.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for headings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"heading\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(!{1,6})/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar headingLevel = this.match[1].length;\n\t// Move past the !s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse any classes, whitespace and then the heading itself\n\tvar classes = this.parser.parseClasses();\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// Return the heading\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"h\" + headingLevel, \n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: classes.join(\" \")}\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/heading.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/horizrule.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/horizrule.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for rules. For example:\n\n```\n---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"horizrule\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{3,}\\r?(?:\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\treturn [{type: \"element\", tag: \"hr\"}];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/horizrule.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/html.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/html.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for HTML elements and widgets. For example:\n\n{{{\n<aside>\nThis is an HTML5 aside element\n</aside>\n\n<$slider target=\"MyTiddler\">\nThis is a widget invocation\n</$slider>\n\n}}}\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"html\";\nexports.types = {inline: true, block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextTag = this.findNextTag(this.parser.source,startPos,{\n\t\trequireLineBreak: this.is.block\n\t});\n\treturn this.nextTag ? this.nextTag.start : undefined;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Retrieve the most recent match so that recursive calls don't overwrite it\n\tvar tag = this.nextTag;\n\tthis.nextTag = null;\n\t// Advance the parser position to past the tag\n\tthis.parser.pos = tag.end;\n\t// Check for an immediately following double linebreak\n\tvar hasLineBreak = !tag.isSelfClosing && !!$tw.utils.parseTokenRegExp(this.parser.source,this.parser.pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t// Set whether we're in block mode\n\ttag.isBlock = this.is.block || hasLineBreak;\n\t// Parse the body if we need to\n\tif(!tag.isSelfClosing && $tw.config.htmlVoidElements.indexOf(tag.tag) === -1) {\n\t\t\tvar reEndString = \"</\" + $tw.utils.escapeRegExp(tag.tag) + \">\",\n\t\t\t\treEnd = new RegExp(\"(\" + reEndString + \")\",\"mg\");\n\t\tif(hasLineBreak) {\n\t\t\ttag.children = this.parser.parseBlocks(reEndString);\n\t\t} else {\n\t\t\ttag.children = this.parser.parseInlineRun(reEnd);\n\t\t}\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tvar endMatch = reEnd.exec(this.parser.source);\n\t\tif(endMatch && endMatch.index === this.parser.pos) {\n\t\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t\t}\n\t}\n\t// Return the tag\n\treturn [tag];\n};\n\n/*\nLook for an HTML tag. Returns null if not found, otherwise returns {type: \"element\", name:, attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseTag = function(source,pos,options) {\n\toptions = options || {};\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Define our regexps\n\tvar reTagName = /([a-zA-Z0-9\\-\\$]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a less than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\"<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the tag name\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,reTagName);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tnode.tag = token.match[1];\n\tif(node.tag.charAt(0) === \"$\") {\n\t\tnode.type = node.tag.substr(1);\n\t}\n\tpos = token.end;\n\t// Check that the tag is terminated by a space, / or >\n\tif(!$tw.utils.parseWhiteSpace(source,pos) && !(source.charAt(pos) === \"/\") && !(source.charAt(pos) === \">\") ) {\n\t\treturn null;\n\t}\n\t// Process attributes\n\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\twhile(attribute) {\n\t\tnode.attributes[attribute.name] = attribute;\n\t\tpos = attribute.end;\n\t\t// Get the next attribute\n\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a closing slash\n\ttoken = $tw.utils.parseTokenString(source,pos,\"/\");\n\tif(token) {\n\t\tpos = token.end;\n\t\tnode.isSelfClosing = true;\n\t}\n\t// Look for a greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Check for a required line break\n\tif(options.requireLineBreak) {\n\t\ttoken = $tw.utils.parseTokenRegExp(source,pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t\tif(!token) {\n\t\t\treturn null;\n\t\t}\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\nexports.findNextTag = function(source,pos,options) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /<([a-zA-Z\\-\\$]+)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseTag(source,match.index,options);\n\t\t// Return success\n\t\tif(tag && this.isLegalTag(tag)) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\nexports.isLegalTag = function(tag) {\n\t// Widgets are always OK\n\tif(tag.type !== \"element\") {\n\t\treturn true;\n\t// If it's an HTML tag that starts with a dash then it's not legal\n\t} else if(tag.tag.charAt(0) === \"-\") {\n\t\treturn false;\n\t} else {\n\t\t// Otherwise it's OK\n\t\treturn true;\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/html.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/image.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/image.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for embedding images. For example:\n\n```\n[img[http://tiddlywiki.com/fractalveg.jpg]]\n[img width=23 height=24 [http://tiddlywiki.com/fractalveg.jpg]]\n[img width={{!!width}} height={{!!height}} [http://tiddlywiki.com/fractalveg.jpg]]\n[img[Description of image|http://tiddlywiki.com/fractalveg.jpg]]\n[img[TiddlerTitle]]\n[img[Description of image|TiddlerTitle]]\n```\n\nGenerates the `<$image>` widget.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"image\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextImage = this.findNextImage(this.parser.source,startPos);\n\treturn this.nextImage ? this.nextImage.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextImage.end;\n\tvar node = {\n\t\ttype: \"image\",\n\t\tattributes: this.nextImage.attributes\n\t};\n\treturn [node];\n};\n\n/*\nFind the next image from the current position\n*/\nexports.findNextImage = function(source,pos) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /(\\[img)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseImage(source,match.index);\n\t\t// Return success\n\t\tif(tag) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an image at the specified position. Returns null if not found, otherwise returns {type: \"image\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseImage = function(source,pos) {\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"image\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[img`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[img\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Process attributes\n\tif(source.charAt(pos) !== \"[\") {\n\t\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\t\twhile(attribute) {\n\t\t\tnode.attributes[attribute.name] = attribute;\n\t\t\tpos = attribute.end;\n\t\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t\tif(source.charAt(pos) !== \"[\") {\n\t\t\t\t// Get the next attribute\n\t\t\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t\t\t} else {\n\t\t\t\tattribute = null;\n\t\t\t}\n\t\t}\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[` after the attributes\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the source up to the terminating `]]`\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,/(?:([^|\\]]*?)\\|)?([^\\]]+?)\\]\\]/g);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\tif(token.match[1]) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: token.match[1].trim()};\n\t}\n\tnode.attributes.source = {type: \"string\", value: (token.match[2] || \"\").trim()};\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/image.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/list.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/list.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for lists. For example:\n\n```\n* This is an unordered list\n* It has two items\n\n# This is a numbered list\n## With a subitem\n# And a third item\n\n; This is a term that is being defined\n: This is the definition of that term\n```\n\nNote that lists can be nested arbitrarily:\n\n```\n#** One\n#* Two\n#** Three\n#**** Four\n#**# Five\n#**## Six\n## Seven\n### Eight\n## Nine\n```\n\nA CSS class can be applied to a list item as follows:\n\n```\n* List item one\n*.active List item two has the class `active`\n* List item three\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"list\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /([\\*#;:>]+)/mg;\n};\n\nvar listTypes = {\n\t\"*\": {listTag: \"ul\", itemTag: \"li\"},\n\t\"#\": {listTag: \"ol\", itemTag: \"li\"},\n\t\";\": {listTag: \"dl\", itemTag: \"dt\"},\n\t\":\": {listTag: \"dl\", itemTag: \"dd\"},\n\t\">\": {listTag: \"blockquote\", itemTag: \"p\"}\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Array of parse tree nodes for the previous row of the list\n\tvar listStack = [];\n\t// Cycle through the items in the list\n\twhile(true) {\n\t\t// Match the list marker\n\t\tvar reMatch = /([\\*#;:>]+)/mg;\n\t\treMatch.lastIndex = this.parser.pos;\n\t\tvar match = reMatch.exec(this.parser.source);\n\t\tif(!match || match.index !== this.parser.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check whether the list type of the top level matches\n\t\tvar listInfo = listTypes[match[0].charAt(0)];\n\t\tif(listStack.length > 0 && listStack[0].tag !== listInfo.listTag) {\n\t\t\tbreak;\n\t\t}\n\t\t// Move past the list marker\n\t\tthis.parser.pos = match.index + match[0].length;\n\t\t// Walk through the list markers for the current row\n\t\tfor(var t=0; t<match[0].length; t++) {\n\t\t\tlistInfo = listTypes[match[0].charAt(t)];\n\t\t\t// Remove any stacked up element if we can't re-use it because the list type doesn't match\n\t\t\tif(listStack.length > t && listStack[t].tag !== listInfo.listTag) {\n\t\t\t\tlistStack.splice(t,listStack.length - t);\n\t\t\t}\n\t\t\t// Construct the list element or reuse the previous one at this level\n\t\t\tif(listStack.length <= t) {\n\t\t\t\tvar listElement = {type: \"element\", tag: listInfo.listTag, children: [\n\t\t\t\t\t{type: \"element\", tag: listInfo.itemTag, children: []}\n\t\t\t\t]};\n\t\t\t\t// Link this list element into the last child item of the parent list item\n\t\t\t\tif(t) {\n\t\t\t\t\tvar prevListItem = listStack[t-1].children[listStack[t-1].children.length-1];\n\t\t\t\t\tprevListItem.children.push(listElement);\n\t\t\t\t}\n\t\t\t\t// Save this element in the stack\n\t\t\t\tlistStack[t] = listElement;\n\t\t\t} else if(t === (match[0].length - 1)) {\n\t\t\t\tlistStack[t].children.push({type: \"element\", tag: listInfo.itemTag, children: []});\n\t\t\t}\n\t\t}\n\t\tif(listStack.length > match[0].length) {\n\t\t\tlistStack.splice(match[0].length,listStack.length - match[0].length);\n\t\t}\n\t\t// Process the body of the list item into the last list item\n\t\tvar lastListChildren = listStack[listStack.length-1].children,\n\t\t\tlastListItem = lastListChildren[lastListChildren.length-1],\n\t\t\tclasses = this.parser.parseClasses();\n\t\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\t\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t\tlastListItem.children.push.apply(lastListItem.children,tree);\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(lastListItem,classes.join(\" \"));\n\t\t}\n\t\t// Consume any whitespace following the list item\n\t\tthis.parser.skipWhitespace();\n\t}\n\t// Return the root element of the list\n\treturn [listStack[0]];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/list.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/macrocallblock.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for block macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /<<([^>\\s]+)(?:\\s*)((?:[^>]|(?:>(?!>)))*?)>>(?:\\r?\\n|$)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params,\n\t\tisBlock: true\n\t}];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/macrocallblock.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/macrocallinline.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /<<([^\\s>]+)\\s*([\\s\\S]*?)>>/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5]|| paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params\n\t}];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/macrocallinline.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/macrodef.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrodef.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for macro definitions\n\n```\n\\define name(param:defaultvalue,param2:defaultvalue)\ndefinition text, including $param$ markers\n\\end\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrodef\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\define\\s+([^(\\s]+)\\(\\s*([^)]*)\\)(\\s*\\r?\\n)?/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the macro name and parameters\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the parameters\n\tvar paramString = this.match[2],\n\t\tparams = [];\n\tif(paramString !== \"\") {\n\t\tvar reParam = /\\s*([A-Za-z0-9\\-_]+)(?:\\s*:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))?/mg,\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\twhile(paramMatch) {\n\t\t\t// Save the parameter details\n\t\t\tvar paramInfo = {name: paramMatch[1]},\n\t\t\t\tdefaultValue = paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6];\n\t\t\tif(defaultValue) {\n\t\t\t\tparamInfo[\"default\"] = defaultValue;\n\t\t\t}\n\t\t\tparams.push(paramInfo);\n\t\t\t// Look for the next parameter\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\t}\n\t}\n\t// Is this a multiline definition?\n\tvar reEnd;\n\tif(this.match[3]) {\n\t\t// If so, the end of the body is marked with \\end\n\t\treEnd = /(\\r?\\n\\\\end[^\\S\\n\\r]*(?:$|\\r?\\n))/mg;\n\t} else {\n\t\t// Otherwise, the end of the definition is marked by the end of the line\n\t\treEnd = /($|\\r?\\n)/mg;\n\t\t// Move past any whitespace\n\t\tthis.parser.pos = $tw.utils.skipWhiteSpace(this.parser.source,this.parser.pos);\n\t}\n\t// Find the end of the definition\n\treEnd.lastIndex = this.parser.pos;\n\tvar text,\n\t\tendMatch = reEnd.exec(this.parser.source);\n\tif(endMatch) {\n\t\ttext = this.parser.source.substring(this.parser.pos,endMatch.index);\n\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t} else {\n\t\t// We didn't find the end of the definition, so we'll make it blank\n\t\ttext = \"\";\n\t}\n\t// Save the macro definition\n\treturn [{\n\t\ttype: \"set\",\n\t\tattributes: {\n\t\t\tname: {type: \"string\", value: this.match[1]},\n\t\t\tvalue: {type: \"string\", value: text}\n\t\t},\n\t\tchildren: [],\n\t\tparams: params\n\t}];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/macrodef.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/prettyextlink.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettyextlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\n[ext[http://tiddlywiki.com/fractalveg.jpg]]\n[ext[Tooltip|http://tiddlywiki.com/fractalveg.jpg]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettyextlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextLink = this.findNextLink(this.parser.source,startPos);\n\treturn this.nextLink ? this.nextLink.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextLink.end;\n\treturn [this.nextLink];\n};\n\n/*\nFind the next link from the current position\n*/\nexports.findNextLink = function(source,pos) {\n\t// A regexp for finding candidate links\n\tvar reLookahead = /(\\[ext\\[)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a link\n\t\tvar link = this.parseLink(source,match.index);\n\t\t// Return success\n\t\tif(link) {\n\t\t\treturn link;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an link at the specified position. Returns null if not found, otherwise returns {type: \"element\", tag: \"a\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseLink = function(source,pos) {\n\tvar token,\n\t\ttextNode = {\n\t\t\ttype: \"text\"\n\t\t},\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tstart: pos,\n\t\t\tattributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t},\n\t\t\tchildren: [textNode]\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[ext[`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[ext[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Look ahead for the terminating `]]`\n\tvar closePos = source.indexOf(\"]]\",pos);\n\tif(closePos === -1) {\n\t\treturn null;\n\t}\n\t// Look for a `|` separating the tooltip\n\tvar splitPos = source.indexOf(\"|\",pos);\n\tif(splitPos === -1 || splitPos > closePos) {\n\t\tsplitPos = null;\n\t}\n\t// Pull out the tooltip and URL\n\tvar tooltip, URL;\n\tif(splitPos) {\n\t\tURL = source.substring(splitPos + 1,closePos).trim();\n\t\ttextNode.text = source.substring(pos,splitPos).trim();\n\t} else {\n\t\tURL = source.substring(pos,closePos).trim();\n\t\ttextNode.text = URL;\n\t}\n\tnode.attributes.href = {type: \"string\", value: URL};\n\tnode.attributes.target = {type: \"string\", value: \"_blank\"};\n\tnode.attributes.rel = {type: \"string\", value: \"noopener noreferrer\"};\n\t// Update the end position\n\tnode.end = closePos + 2;\n\treturn node;\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/prettyextlink.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/prettylink.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettylink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for pretty links. For example:\n\n```\n[[Introduction]]\n\n[[Link description|TiddlerTitle]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettylink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\[\\[(.*?)(?:\\|(.*?))?\\]\\]/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Process the link\n\tvar text = this.match[1],\n\t\tlink = this.match[2] || text;\n\tif($tw.utils.isLinkExternal(link)) {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: link},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"},\n\t\t\t\trel: {type: \"string\", value: \"noopener noreferrer\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: link}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/prettylink.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/quoteblock.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/quoteblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for quote blocks. For example:\n\n```\n\t<<<.optionalClass(es) optional cited from\n\ta quote\n\t<<<\n\t\n\t<<<.optionalClass(es)\n\ta quote\n\t<<< optional cited from\n```\n\nQuotes can be quoted by putting more <s\n\n```\n\t<<<\n\tQuote Level 1\n\t\n\t<<<<\n\tQuoteLevel 2\n\t<<<<\n\t\n\t<<<\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"quoteblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(<<<+)/mg;\n};\n\nexports.parse = function() {\n\tvar classes = [\"tc-quote\"];\n\t// Get all the details of the match\n\tvar reEndString = \"^\" + this.match[1] + \"(?!<)\";\n\t// Move past the <s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\n\t// Parse any classes, whitespace and then the optional cite itself\n\tclasses.push.apply(classes, this.parser.parseClasses());\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar cite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// before handling the cite, parse the body of the quote\n\tvar tree= this.parser.parseBlocks(reEndString);\n\t// If we got a cite, put it before the text\n\tif(cite.length > 0) {\n\t\ttree.unshift({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Parse any optional cite\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tcite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// If we got a cite, push it\n\tif(cite.length > 0) {\n\t\ttree.push({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Return the blockquote element\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"blockquote\",\n\t\tattributes: {\n\t\t\tclass: { type: \"string\", value: classes.join(\" \") },\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/quoteblock.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/rules.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/rules.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for rules specifications\n\n```\n\\rules except ruleone ruletwo rulethree\n\\rules only ruleone ruletwo rulethree\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"rules\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\rules[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse whitespace delimited tokens terminated by a line break\n\tvar reMatch = /[^\\S\\n]*(\\S+)|(\\r?\\n)/mg,\n\t\ttokens = [];\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\twhile(match && match.index === this.parser.pos) {\n\t\tthis.parser.pos = reMatch.lastIndex;\n\t\t// Exit if we've got the line break\n\t\tif(match[2]) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the token\n\t\tif(match[1]) {\n\t\t\ttokens.push(match[1]);\n\t\t}\n\t\t// Match the next token\n\t\tmatch = reMatch.exec(this.parser.source);\n\t}\n\t// Process the tokens\n\tif(tokens.length > 0) {\n\t\tthis.parser.amendRules(tokens[0],tokens.slice(1));\n\t}\n\t// No parse tree nodes to return\n\treturn [];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/rules.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/styleblock.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for assigning styles and classes to paragraphs and other blocks. For example:\n\n```\n@@.myClass\n@@background-color:red;\nThis paragraph will have the CSS class `myClass`.\n\n* The `<ul>` around this list will also have the class `myClass`\n* List item 2\n\n@@\n```\n\nNote that classes and styles can be mixed subject to the rule that styles must precede classes. For example\n\n```\n@@.myFirstClass.mySecondClass\n@@width:100px;.myThirdClass\nThis is a paragraph\n@@\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(?:\\.([^\\r\\n\\s]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEndString = \"^@@(?:\\\\r?\\\\n)?\";\n\tvar classes = [], styles = [];\n\tdo {\n\t\t// Get the class and style\n\t\tif(this.match[1]) {\n\t\t\tstyles.push(this.match[1]);\n\t\t}\n\t\tif(this.match[2]) {\n\t\t\tclasses.push(this.match[2].split(\".\").join(\" \"));\n\t\t}\n\t\t// Move past the match\n\t\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\t// Look for another line of classes and styles\n\t\tthis.match = this.matchRegExp.exec(this.parser.source);\n\t} while(this.match && this.match.index === this.parser.pos);\n\t// Parse the body\n\tvar tree = this.parser.parseBlocks(reEndString);\n\tfor(var t=0; t<tree.length; t++) {\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(tree[t],classes.join(\" \"));\n\t\t}\n\t\tif(styles.length > 0) {\n\t\t\t$tw.utils.addAttributeToParseTreeNode(tree[t],\"style\",styles.join(\"\"));\n\t\t}\n\t}\n\treturn tree;\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/styleblock.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/styleinline.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for assigning styles and classes to inline runs. For example:\n\n```\n@@.myClass This is some text with a class@@\n@@background-color:red;This is some text with a background colour@@\n@@width:100px;.myClass This is some text with a class and a width@@\n```\n\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(\\.(?:[^\\r\\n\\s]+)\\s+)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /@@/g;\n\t// Get the styles and class\n\tvar stylesString = this.match[1],\n\t\tclassString = this.match[2] ? this.match[2].split(\".\").join(\" \") : undefined;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the run up to the terminator\n\tvar tree = this.parser.parseInlineRun(reEnd,{eatTerminator: true});\n\t// Return the classed span\n\tvar node = {\n\t\ttype: \"element\",\n\t\ttag: \"span\",\n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: \"tc-inline-style\"}\n\t\t},\n\t\tchildren: tree\n\t};\n\tif(classString) {\n\t\t$tw.utils.addClassToParseTreeNode(node,classString);\n\t}\n\tif(stylesString) {\n\t\t$tw.utils.addAttributeToParseTreeNode(node,\"style\",stylesString);\n\t}\n\treturn [node];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/styleinline.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/syslink.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/syslink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for system tiddler links.\nCan be suppressed preceding them with `~`.\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"syslink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp(\n\t\t\"~?\\\\$:\\\\/[\" +\n\t\t$tw.config.textPrimitives.anyLetter.substr(1,$tw.config.textPrimitives.anyLetter.length - 2) +\n\t\t\"\\/._-]+\",\n\t\t\"mg\"\n\t);\n};\n\nexports.parse = function() {\n\tvar match = this.match[0];\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(match.substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: match.substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: match}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: match\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();",
"title": "$:/core/modules/parsers/wikiparser/rules/syslink.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/table.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/table.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for tables.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"table\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\|(?:[^\\n]*)\\|(?:[fhck]?)\\r?(?:\\n|$)/mg;\n};\n\nvar processRow = function(prevColumns) {\n\tvar cellRegExp = /(?:\\|([^\\n\\|]*)\\|)|(\\|[fhck]?\\r?(?:\\n|$))/mg,\n\t\tcellTermRegExp = /((?:\\x20*)\\|)/mg,\n\t\ttree = [],\n\t\tcol = 0,\n\t\tcolSpanCount = 1,\n\t\tprevCell,\n\t\tvAlign;\n\t// Match a single cell\n\tcellRegExp.lastIndex = this.parser.pos;\n\tvar cellMatch = cellRegExp.exec(this.parser.source);\n\twhile(cellMatch && cellMatch.index === this.parser.pos) {\n\t\tif(cellMatch[1] === \"~\") {\n\t\t\t// Rowspan\n\t\t\tvar last = prevColumns[col];\n\t\t\tif(last) {\n\t\t\t\tlast.rowSpanCount++;\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"rowspan\",last.rowSpanCount);\n\t\t\t\tvAlign = $tw.utils.getAttributeValueFromParseTreeNode(last.element,\"valign\",\"center\");\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"valign\",vAlign);\n\t\t\t\tif(colSpanCount > 1) {\n\t\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"colspan\",colSpanCount);\n\t\t\t\t\tcolSpanCount = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \">\") {\n\t\t\t// Colspan\n\t\t\tcolSpanCount++;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \"<\" && prevCell) {\n\t\t\tcolSpanCount = 1 + $tw.utils.getAttributeValueFromParseTreeNode(prevCell,\"colspan\",1);\n\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\tcolSpanCount = 1;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[2]) {\n\t\t\t// End of row\n\t\t\tif(prevCell && colSpanCount > 1) {\n\t\t\t\tif(prevCell.attributes && prevCell.attributes && prevCell.attributes.colspan) {\n\t\t\t\t\t\tcolSpanCount += prevCell.attributes.colspan.value;\n\t\t\t\t} else {\n\t\t\t\t\tcolSpanCount -= 1;\n\t\t\t\t}\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\t}\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t\tbreak;\n\t\t} else {\n\t\t\t// For ordinary cells, step beyond the opening `|`\n\t\t\tthis.parser.pos++;\n\t\t\t// Look for a space at the start of the cell\n\t\t\tvar spaceLeft = false;\n\t\t\tvAlign = null;\n\t\t\tif(this.parser.source.substr(this.parser.pos).search(/^\\^([^\\^]|\\^\\^)/) === 0) {\n\t\t\t\tvAlign = \"top\";\n\t\t\t} else if(this.parser.source.substr(this.parser.pos).search(/^,([^,]|,,)/) === 0) {\n\t\t\t\tvAlign = \"bottom\";\n\t\t\t}\n\t\t\tif(vAlign) {\n\t\t\t\tthis.parser.pos++;\n\t\t\t}\n\t\t\tvar chr = this.parser.source.substr(this.parser.pos,1);\n\t\t\twhile(chr === \" \") {\n\t\t\t\tspaceLeft = true;\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tchr = this.parser.source.substr(this.parser.pos,1);\n\t\t\t}\n\t\t\t// Check whether this is a heading cell\n\t\t\tvar cell;\n\t\t\tif(chr === \"!\") {\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tcell = {type: \"element\", tag: \"th\", children: []};\n\t\t\t} else {\n\t\t\t\tcell = {type: \"element\", tag: \"td\", children: []};\n\t\t\t}\n\t\t\ttree.push(cell);\n\t\t\t// Record information about this cell\n\t\t\tprevCell = cell;\n\t\t\tprevColumns[col] = {rowSpanCount:1,element:cell};\n\t\t\t// Check for a colspan\n\t\t\tif(colSpanCount > 1) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"colspan\",colSpanCount);\n\t\t\t\tcolSpanCount = 1;\n\t\t\t}\n\t\t\t// Parse the cell\n\t\t\tcell.children = this.parser.parseInlineRun(cellTermRegExp,{eatTerminator: true});\n\t\t\t// Set the alignment for the cell\n\t\t\tif(vAlign) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"valign\",vAlign);\n\t\t\t}\n\t\t\tif(this.parser.source.substr(this.parser.pos - 2,1) === \" \") { // spaceRight\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",spaceLeft ? \"center\" : \"left\");\n\t\t\t} else if(spaceLeft) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",\"right\");\n\t\t\t}\n\t\t\t// Move back to the closing `|`\n\t\t\tthis.parser.pos--;\n\t\t}\n\t\tcol++;\n\t\tcellRegExp.lastIndex = this.parser.pos;\n\t\tcellMatch = cellRegExp.exec(this.parser.source);\n\t}\n\treturn tree;\n};\n\nexports.parse = function() {\n\tvar rowContainerTypes = {\"c\":\"caption\", \"h\":\"thead\", \"\":\"tbody\", \"f\":\"tfoot\"},\n\t\ttable = {type: \"element\", tag: \"table\", children: []},\n\t\trowRegExp = /^\\|([^\\n]*)\\|([fhck]?)\\r?(?:\\n|$)/mg,\n\t\trowTermRegExp = /(\\|(?:[fhck]?)\\r?(?:\\n|$))/mg,\n\t\tprevColumns = [],\n\t\tcurrRowType,\n\t\trowContainer,\n\t\trowCount = 0;\n\t// Match the row\n\trowRegExp.lastIndex = this.parser.pos;\n\tvar rowMatch = rowRegExp.exec(this.parser.source);\n\twhile(rowMatch && rowMatch.index === this.parser.pos) {\n\t\tvar rowType = rowMatch[2];\n\t\t// Check if it is a class assignment\n\t\tif(rowType === \"k\") {\n\t\t\t$tw.utils.addClassToParseTreeNode(table,rowMatch[1]);\n\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t} else {\n\t\t\t// Otherwise, create a new row if this one is of a different type\n\t\t\tif(rowType !== currRowType) {\n\t\t\t\trowContainer = {type: \"element\", tag: rowContainerTypes[rowType], children: []};\n\t\t\t\ttable.children.push(rowContainer);\n\t\t\t\tcurrRowType = rowType;\n\t\t\t}\n\t\t\t// Is this a caption row?\n\t\t\tif(currRowType === \"c\") {\n\t\t\t\t// If so, move past the opening `|` of the row\n\t\t\t\tthis.parser.pos++;\n\t\t\t\t// Move the caption to the first row if it isn't already\n\t\t\t\tif(table.children.length !== 1) {\n\t\t\t\t\ttable.children.pop(); // Take rowContainer out of the children array\n\t\t\t\t\ttable.children.splice(0,0,rowContainer); // Insert it at the bottom\t\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t// Set the alignment - TODO: figure out why TW did this\n//\t\t\t\trowContainer.attributes.align = rowCount === 0 ? \"top\" : \"bottom\";\n\t\t\t\t// Parse the caption\n\t\t\t\trowContainer.children = this.parser.parseInlineRun(rowTermRegExp,{eatTerminator: true});\n\t\t\t} else {\n\t\t\t\t// Create the row\n\t\t\t\tvar theRow = {type: \"element\", tag: \"tr\", children: []};\n\t\t\t\t$tw.utils.addClassToParseTreeNode(theRow,rowCount%2 ? \"oddRow\" : \"evenRow\");\n\t\t\t\trowContainer.children.push(theRow);\n\t\t\t\t// Process the row\n\t\t\t\ttheRow.children = processRow.call(this,prevColumns);\n\t\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t\t\t// Increment the row count\n\t\t\t\trowCount++;\n\t\t\t}\n\t\t}\n\t\trowMatch = rowRegExp.exec(this.parser.source);\n\t}\n\treturn [table];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/table.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/transcludeblock.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {},\n\t\t\tisBlock: true\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tisBlock: true,\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/transcludeblock.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/transcludeinline.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {}\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/transcludeinline.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/typedblock.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/typedblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for typed blocks. For example:\n\n```\n$$$.js\nThis will be rendered as JavaScript\n$$$\n\n$$$.svg\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"150\" height=\"100\">\n <circle cx=\"100\" cy=\"50\" r=\"40\" stroke=\"black\" stroke-width=\"2\" fill=\"red\" />\n</svg>\n$$$\n\n$$$text/vnd.tiddlywiki>text/html\nThis will be rendered as an //HTML representation// of WikiText\n$$$\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.name = \"typedblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\$\\$\\$([^ >\\r\\n]*)(?: *> *([^ \\r\\n]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /\\r?\\n\\$\\$\\$\\r?(?:\\n|$)/mg;\n\t// Save the type\n\tvar parseType = this.match[1],\n\t\trenderType = this.match[2];\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\t// Parse the block according to the specified type\n\tvar parser = this.parser.wiki.parseText(parseType,text,{defaultType: \"text/plain\"});\n\t// If there's no render type, just return the parse tree\n\tif(!renderType) {\n\t\treturn parser.tree;\n\t} else {\n\t\t// Otherwise, render to the rendertype and return in a <PRE> tag\n\t\tvar widgetNode = this.parser.wiki.makeWidget(parser),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\ttext = renderType === \"text/html\" ? container.innerHTML : container.textContent;\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"pre\",\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/typedblock.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/wikilink.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikilink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for wiki links. For example:\n\n```\nAWikiLink\nAnotherLink\n~SuppressedLink\n```\n\nPrecede a camel case word with `~` to prevent it from being recognised as a link.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"wikilink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp($tw.config.textPrimitives.unWikiLink + \"?\" + $tw.config.textPrimitives.wikiLink,\"mg\");\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get the details of the match\n\tvar linkText = this.match[0];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// If the link starts with the unwikilink character then just output it as plain text\n\tif(linkText.substr(0,1) === $tw.config.textPrimitives.unWikiLink) {\n\t\treturn [{type: \"text\", text: linkText.substr(1)}];\n\t}\n\t// If the link has been preceded with a blocked letter then don't treat it as a link\n\tif(this.match.index > 0) {\n\t\tvar preRegExp = new RegExp($tw.config.textPrimitives.blockPrefixLetters,\"mg\");\n\t\tpreRegExp.lastIndex = this.match.index-1;\n\t\tvar preMatch = preRegExp.exec(this.parser.source);\n\t\tif(preMatch && preMatch.index === this.match.index-1) {\n\t\t\treturn [{type: \"text\", text: linkText}];\n\t\t}\n\t}\n\treturn [{\n\t\ttype: \"link\",\n\t\tattributes: {\n\t\t\tto: {type: \"string\", value: linkText}\n\t\t},\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: linkText\n\t\t}]\n\t}];\n};\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/wikilink.js",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/wikiparser.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/wikiparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe wiki text parser processes blocks of source text into a parse tree.\n\nThe parse tree is made up of nested arrays of these JavaScript objects:\n\n\t{type: \"element\", tag: <string>, attributes: {}, children: []} - an HTML element\n\t{type: \"text\", text: <string>} - a text node\n\t{type: \"entity\", value: <string>} - an entity\n\t{type: \"raw\", html: <string>} - raw HTML\n\nAttributes are stored as hashmaps of the following objects:\n\n\t{type: \"string\", value: <string>} - literal string\n\t{type: \"indirect\", textReference: <textReference>} - indirect through a text reference\n\t{type: \"macro\", macro: <TBD>} - indirect through a macro invocation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar WikiParser = function(type,text,options) {\n\tthis.wiki = options.wiki;\n\tvar self = this;\n\t// Check for an externally linked tiddler\n\tif($tw.browser && (text || \"\") === \"\" && options._canonical_uri) {\n\t\tthis.loadRemoteTiddler(options._canonical_uri);\n\t\ttext = $tw.language.getRawString(\"LazyLoadingWarning\");\n\t}\n\t// Initialise the classes if we don't have them already\n\tif(!this.pragmaRuleClasses) {\n\t\tWikiParser.prototype.pragmaRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"pragma\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.pragmaRuleClasses,\"$:/config/WikiParserRules/Pragmas/\");\n\t}\n\tif(!this.blockRuleClasses) {\n\t\tWikiParser.prototype.blockRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"block\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.blockRuleClasses,\"$:/config/WikiParserRules/Block/\");\n\t}\n\tif(!this.inlineRuleClasses) {\n\t\tWikiParser.prototype.inlineRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"inline\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.inlineRuleClasses,\"$:/config/WikiParserRules/Inline/\");\n\t}\n\t// Save the parse text\n\tthis.type = type || \"text/vnd.tiddlywiki\";\n\tthis.source = text || \"\";\n\tthis.sourceLength = this.source.length;\n\t// Set current parse position\n\tthis.pos = 0;\n\t// Instantiate the pragma parse rules\n\tthis.pragmaRules = this.instantiateRules(this.pragmaRuleClasses,\"pragma\",0);\n\t// Instantiate the parser block and inline rules\n\tthis.blockRules = this.instantiateRules(this.blockRuleClasses,\"block\",0);\n\tthis.inlineRules = this.instantiateRules(this.inlineRuleClasses,\"inline\",0);\n\t// Parse any pragmas\n\tthis.tree = [];\n\tvar topBranch = this.parsePragmas();\n\t// Parse the text into inline runs or blocks\n\tif(options.parseAsInline) {\n\t\ttopBranch.push.apply(topBranch,this.parseInlineRun());\n\t} else {\n\t\ttopBranch.push.apply(topBranch,this.parseBlocks());\n\t}\n\t// Return the parse tree\n};\n\n/*\n*/\nWikiParser.prototype.loadRemoteTiddler = function(url) {\n\tvar self = this;\n\t$tw.utils.httpRequest({\n\t\turl: url,\n\t\ttype: \"GET\",\n\t\tcallback: function(err,data) {\n\t\t\tif(!err) {\n\t\t\t\tvar tiddlers = self.wiki.deserializeTiddlers(\".tid\",data,self.wiki.getCreationFields());\n\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\ttiddler[\"_canonical_uri\"] = url;\n\t\t\t\t});\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tself.wiki.addTiddlers(tiddlers);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\n*/\nWikiParser.prototype.setupRules = function(proto,configPrefix) {\n\tvar self = this;\n\tif(!$tw.safemode) {\n\t\t$tw.utils.each(proto,function(object,name) {\n\t\t\tif(self.wiki.getTiddlerText(configPrefix + name,\"enable\") !== \"enable\") {\n\t\t\t\tdelete proto[name];\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nInstantiate an array of parse rules\n*/\nWikiParser.prototype.instantiateRules = function(classes,type,startPos) {\n\tvar rulesInfo = [],\n\t\tself = this;\n\t$tw.utils.each(classes,function(RuleClass) {\n\t\t// Instantiate the rule\n\t\tvar rule = new RuleClass(self);\n\t\trule.is = {};\n\t\trule.is[type] = true;\n\t\trule.init(self);\n\t\tvar matchIndex = rule.findNextMatch(startPos);\n\t\tif(matchIndex !== undefined) {\n\t\t\trulesInfo.push({\n\t\t\t\trule: rule,\n\t\t\t\tmatchIndex: matchIndex\n\t\t\t});\n\t\t}\n\t});\n\treturn rulesInfo;\n};\n\n/*\nSkip any whitespace at the current position. Options are:\n\ttreatNewlinesAsNonWhitespace: true if newlines are NOT to be treated as whitespace\n*/\nWikiParser.prototype.skipWhitespace = function(options) {\n\toptions = options || {};\n\tvar whitespaceRegExp = options.treatNewlinesAsNonWhitespace ? /([^\\S\\n]+)/mg : /(\\s+)/mg;\n\twhitespaceRegExp.lastIndex = this.pos;\n\tvar whitespaceMatch = whitespaceRegExp.exec(this.source);\n\tif(whitespaceMatch && whitespaceMatch.index === this.pos) {\n\t\tthis.pos = whitespaceRegExp.lastIndex;\n\t}\n};\n\n/*\nGet the next match out of an array of parse rule instances\n*/\nWikiParser.prototype.findNextMatch = function(rules,startPos) {\n\t// Find the best matching rule by finding the closest match position\n\tvar matchingRule,\n\t\tmatchingRulePos = this.sourceLength;\n\t// Step through each rule\n\tfor(var t=0; t<rules.length; t++) {\n\t\tvar ruleInfo = rules[t];\n\t\t// Ask the rule to get the next match if we've moved past the current one\n\t\tif(ruleInfo.matchIndex !== undefined && ruleInfo.matchIndex < startPos) {\n\t\t\truleInfo.matchIndex = ruleInfo.rule.findNextMatch(startPos);\n\t\t}\n\t\t// Adopt this match if it's closer than the current best match\n\t\tif(ruleInfo.matchIndex !== undefined && ruleInfo.matchIndex <= matchingRulePos) {\n\t\t\tmatchingRule = ruleInfo;\n\t\t\tmatchingRulePos = ruleInfo.matchIndex;\n\t\t}\n\t}\n\treturn matchingRule;\n};\n\n/*\nParse any pragmas at the beginning of a block of parse text\n*/\nWikiParser.prototype.parsePragmas = function() {\n\tvar currentTreeBranch = this.tree;\n\twhile(true) {\n\t\t// Skip whitespace\n\t\tthis.skipWhitespace();\n\t\t// Check for the end of the text\n\t\tif(this.pos >= this.sourceLength) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check if we've arrived at a pragma rule match\n\t\tvar nextMatch = this.findNextMatch(this.pragmaRules,this.pos);\n\t\t// If not, just exit\n\t\tif(!nextMatch || nextMatch.matchIndex !== this.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the pragma rule\n\t\tvar subTree = nextMatch.rule.parse();\n\t\tif(subTree.length > 0) {\n\t\t\t// Quick hack; we only cope with a single parse tree node being returned, which is true at the moment\n\t\t\tcurrentTreeBranch.push.apply(currentTreeBranch,subTree);\n\t\t\tsubTree[0].children = [];\n\t\t\tcurrentTreeBranch = subTree[0].children;\n\t\t}\n\t}\n\treturn currentTreeBranch;\n};\n\n/*\nParse a block from the current position\n\tterminatorRegExpString: optional regular expression string that identifies the end of plain paragraphs. Must not include capturing parenthesis\n*/\nWikiParser.prototype.parseBlock = function(terminatorRegExpString) {\n\tvar terminatorRegExp = terminatorRegExpString ? new RegExp(\"(\" + terminatorRegExpString + \"|\\\\r?\\\\n\\\\r?\\\\n)\",\"mg\") : /(\\r?\\n\\r?\\n)/mg;\n\tthis.skipWhitespace();\n\tif(this.pos >= this.sourceLength) {\n\t\treturn [];\n\t}\n\t// Look for a block rule that applies at the current position\n\tvar nextMatch = this.findNextMatch(this.blockRules,this.pos);\n\tif(nextMatch && nextMatch.matchIndex === this.pos) {\n\t\treturn nextMatch.rule.parse();\n\t}\n\t// Treat it as a paragraph if we didn't find a block rule\n\treturn [{type: \"element\", tag: \"p\", children: this.parseInlineRun(terminatorRegExp)}];\n};\n\n/*\nParse a series of blocks of text until a terminating regexp is encountered or the end of the text\n\tterminatorRegExpString: terminating regular expression\n*/\nWikiParser.prototype.parseBlocks = function(terminatorRegExpString) {\n\tif(terminatorRegExpString) {\n\t\treturn this.parseBlocksTerminated(terminatorRegExpString);\n\t} else {\n\t\treturn this.parseBlocksUnterminated();\n\t}\n};\n\n/*\nParse a block from the current position to the end of the text\n*/\nWikiParser.prototype.parseBlocksUnterminated = function() {\n\tvar tree = [];\n\twhile(this.pos < this.sourceLength) {\n\t\ttree.push.apply(tree,this.parseBlock());\n\t}\n\treturn tree;\n};\n\n/*\nParse blocks of text until a terminating regexp is encountered\n*/\nWikiParser.prototype.parseBlocksTerminated = function(terminatorRegExpString) {\n\tvar terminatorRegExp = new RegExp(\"(\" + terminatorRegExpString + \")\",\"mg\"),\n\t\ttree = [];\n\t// Skip any whitespace\n\tthis.skipWhitespace();\n\t// Check if we've got the end marker\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar match = terminatorRegExp.exec(this.source);\n\t// Parse the text into blocks\n\twhile(this.pos < this.sourceLength && !(match && match.index === this.pos)) {\n\t\tvar blocks = this.parseBlock(terminatorRegExpString);\n\t\ttree.push.apply(tree,blocks);\n\t\t// Skip any whitespace\n\t\tthis.skipWhitespace();\n\t\t// Check if we've got the end marker\n\t\tterminatorRegExp.lastIndex = this.pos;\n\t\tmatch = terminatorRegExp.exec(this.source);\n\t}\n\tif(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t}\n\treturn tree;\n};\n\n/*\nParse a run of text at the current position\n\tterminatorRegExp: a regexp at which to stop the run\n\toptions: see below\nOptions available:\n\teatTerminator: move the parse position past any encountered terminator (default false)\n*/\nWikiParser.prototype.parseInlineRun = function(terminatorRegExp,options) {\n\tif(terminatorRegExp) {\n\t\treturn this.parseInlineRunTerminated(terminatorRegExp,options);\n\t} else {\n\t\treturn this.parseInlineRunUnterminated(options);\n\t}\n};\n\nWikiParser.prototype.parseInlineRunUnterminated = function(options) {\n\tvar tree = [];\n\t// Find the next occurrence of an inline rule\n\tvar nextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t// Loop around the matches until we've reached the end of the text\n\twhile(this.pos < this.sourceLength && nextMatch) {\n\t\t// Process the text preceding the run rule\n\t\tif(nextMatch.matchIndex > this.pos) {\n\t\t\ttree.push({type: \"text\", text: this.source.substring(this.pos,nextMatch.matchIndex)});\n\t\t\tthis.pos = nextMatch.matchIndex;\n\t\t}\n\t\t// Process the run rule\n\t\ttree.push.apply(tree,nextMatch.rule.parse());\n\t\t// Look for the next run rule\n\t\tnextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t}\n\t// Process the remaining text\n\tif(this.pos < this.sourceLength) {\n\t\ttree.push({type: \"text\", text: this.source.substr(this.pos)});\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\nWikiParser.prototype.parseInlineRunTerminated = function(terminatorRegExp,options) {\n\toptions = options || {};\n\tvar tree = [];\n\t// Find the next occurrence of the terminator\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar terminatorMatch = terminatorRegExp.exec(this.source);\n\t// Find the next occurrence of a inlinerule\n\tvar inlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t// Loop around until we've reached the end of the text\n\twhile(this.pos < this.sourceLength && (terminatorMatch || inlineRuleMatch)) {\n\t\t// Return if we've found the terminator, and it precedes any inline rule match\n\t\tif(terminatorMatch) {\n\t\t\tif(!inlineRuleMatch || inlineRuleMatch.matchIndex >= terminatorMatch.index) {\n\t\t\t\tif(terminatorMatch.index > this.pos) {\n\t\t\t\t\ttree.push({type: \"text\", text: this.source.substring(this.pos,terminatorMatch.index)});\n\t\t\t\t}\n\t\t\t\tthis.pos = terminatorMatch.index;\n\t\t\t\tif(options.eatTerminator) {\n\t\t\t\t\tthis.pos += terminatorMatch[0].length;\n\t\t\t\t}\n\t\t\t\treturn tree;\n\t\t\t}\n\t\t}\n\t\t// Process any inline rule, along with the text preceding it\n\t\tif(inlineRuleMatch) {\n\t\t\t// Preceding text\n\t\t\tif(inlineRuleMatch.matchIndex > this.pos) {\n\t\t\t\ttree.push({type: \"text\", text: this.source.substring(this.pos,inlineRuleMatch.matchIndex)});\n\t\t\t\tthis.pos = inlineRuleMatch.matchIndex;\n\t\t\t}\n\t\t\t// Process the inline rule\n\t\t\ttree.push.apply(tree,inlineRuleMatch.rule.parse());\n\t\t\t// Look for the next inline rule\n\t\t\tinlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t\t\t// Look for the next terminator match\n\t\t\tterminatorRegExp.lastIndex = this.pos;\n\t\t\tterminatorMatch = terminatorRegExp.exec(this.source);\n\t\t}\n\t}\n\t// Process the remaining text\n\tif(this.pos < this.sourceLength) {\n\t\ttree.push({type: \"text\", text: this.source.substr(this.pos)});\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\n/*\nParse zero or more class specifiers `.classname`\n*/\nWikiParser.prototype.parseClasses = function() {\n\tvar classRegExp = /\\.([^\\s\\.]+)/mg,\n\t\tclassNames = [];\n\tclassRegExp.lastIndex = this.pos;\n\tvar match = classRegExp.exec(this.source);\n\twhile(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t\tclassNames.push(match[1]);\n\t\tmatch = classRegExp.exec(this.source);\n\t}\n\treturn classNames;\n};\n\n/*\nAmend the rules used by this instance of the parser\n\ttype: `only` keeps just the named rules, `except` keeps all but the named rules\n\tnames: array of rule names\n*/\nWikiParser.prototype.amendRules = function(type,names) {\n\tnames = names || [];\n\t// Define the filter function\n\tvar keepFilter;\n\tif(type === \"only\") {\n\t\tkeepFilter = function(name) {\n\t\t\treturn names.indexOf(name) !== -1;\n\t\t};\n\t} else if(type === \"except\") {\n\t\tkeepFilter = function(name) {\n\t\t\treturn names.indexOf(name) === -1;\n\t\t};\n\t} else {\n\t\treturn;\n\t}\n\t// Define a function to process each of our rule arrays\n\tvar processRuleArray = function(ruleArray) {\n\t\tfor(var t=ruleArray.length-1; t>=0; t--) {\n\t\t\tif(!keepFilter(ruleArray[t].rule.name)) {\n\t\t\t\truleArray.splice(t,1);\n\t\t\t}\n\t\t}\n\t};\n\t// Process each rule array\n\tprocessRuleArray(this.pragmaRules);\n\tprocessRuleArray(this.blockRules);\n\tprocessRuleArray(this.inlineRules);\n};\n\nexports[\"text/vnd.tiddlywiki\"] = WikiParser;\n\n})();\n\n",
"title": "$:/core/modules/parsers/wikiparser/wikiparser.js",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/wikiparser/rules/wikirulebase.js": {
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikirulebase.js\ntype: application/javascript\nmodule-type: global\n\nBase class for wiki parser rules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nThis constructor is always overridden with a blank constructor, and so shouldn't be used\n*/\nvar WikiRuleBase = function() {\n};\n\n/*\nTo be overridden by individual rules\n*/\nWikiRuleBase.prototype.init = function(parser) {\n\tthis.parser = parser;\n};\n\n/*\nDefault implementation of findNextMatch uses RegExp matching\n*/\nWikiRuleBase.prototype.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\treturn this.match ? this.match.index : undefined;\n};\n\nexports.WikiRuleBase = WikiRuleBase;\n\n})();\n",
"title": "$:/core/modules/parsers/wikiparser/rules/wikirulebase.js",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/pluginswitcher.js": {
"text": "/*\\\ntitle: $:/core/modules/pluginswitcher.js\ntype: application/javascript\nmodule-type: global\n\nManages switching plugins for themes and languages.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\noptions:\nwiki: wiki store to be used\npluginType: type of plugin to be switched\ncontrollerTitle: title of tiddler used to control switching of this resource\ndefaultPlugins: array of default plugins to be used if nominated plugin isn't found\nonSwitch: callback when plugin is switched (single parameter is array of plugin titles)\n*/\nfunction PluginSwitcher(options) {\n\tthis.wiki = options.wiki;\n\tthis.pluginType = options.pluginType;\n\tthis.controllerTitle = options.controllerTitle;\n\tthis.defaultPlugins = options.defaultPlugins || [];\n\tthis.onSwitch = options.onSwitch;\n\t// Switch to the current plugin\n\tthis.switchPlugins();\n\t// Listen for changes to the selected plugin\n\tvar self = this;\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,self.controllerTitle)) {\n\t\t\tself.switchPlugins();\n\t\t}\n\t});\n}\n\nPluginSwitcher.prototype.switchPlugins = function() {\n\t// Get the name of the current theme\n\tvar selectedPluginTitle = this.wiki.getTiddlerText(this.controllerTitle);\n\t// If it doesn't exist, then fallback to one of the default themes\n\tvar index = 0;\n\twhile(!this.wiki.getTiddler(selectedPluginTitle) && index < this.defaultPlugins.length) {\n\t\tselectedPluginTitle = this.defaultPlugins[index++];\n\t}\n\t// Accumulate the titles of the plugins that we need to load\n\tvar plugins = [],\n\t\tself = this,\n\t\taccumulatePlugin = function(title) {\n\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\tif(tiddler && tiddler.isPlugin() && plugins.indexOf(title) === -1) {\n\t\t\t\tplugins.push(title);\n\t\t\t\tvar pluginInfo = JSON.parse(self.wiki.getTiddlerText(title)),\n\t\t\t\t\tdependents = $tw.utils.parseStringArray(tiddler.fields.dependents || \"\");\n\t\t\t\t$tw.utils.each(dependents,function(title) {\n\t\t\t\t\taccumulatePlugin(title);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\taccumulatePlugin(selectedPluginTitle);\n\t// Unregister any existing theme tiddlers\n\tvar unregisteredTiddlers = $tw.wiki.unregisterPluginTiddlers(this.pluginType);\n\t// Register any new theme tiddlers\n\tvar registeredTiddlers = $tw.wiki.registerPluginTiddlers(this.pluginType,plugins);\n\t// Unpack the current theme tiddlers\n\t$tw.wiki.unpackPluginTiddlers();\n\t// Call the switch handler\n\tif(this.onSwitch) {\n\t\tthis.onSwitch(plugins);\n\t}\n};\n\nexports.PluginSwitcher = PluginSwitcher;\n\n})();\n",
"title": "$:/core/modules/pluginswitcher.js",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/saver-handler.js": {
"text": "/*\\\ntitle: $:/core/modules/saver-handler.js\ntype: application/javascript\nmodule-type: global\n\nThe saver handler tracks changes to the store and handles saving the entire wiki via saver modules.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInstantiate the saver handler with the following options:\nwiki: wiki to be synced\ndirtyTracking: true if dirty tracking should be performed\n*/\nfunction SaverHandler(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\tthis.dirtyTracking = options.dirtyTracking;\n\tthis.pendingAutoSave = false;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"saver-handler\");\n\t// Initialise our savers\n\tif($tw.browser) {\n\t\tthis.initSavers();\n\t}\n\t// Only do dirty tracking if required\n\tif($tw.browser && this.dirtyTracking) {\n\t\t// Compile the dirty tiddler filter\n\t\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t\t// Count of changes that have not yet been saved\n\t\tthis.numChanges = 0;\n\t\t// Listen out for changes to tiddlers\n\t\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\t\t// Filter the changes so that we only count changes to tiddlers that we care about\n\t\t\tvar filteredChanges = self.filterFn.call(self.wiki,function(iterator) {\n\t\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\t\titerator(tiddler,title);\n\t\t\t\t});\n\t\t\t});\n\t\t\t// Adjust the number of changes\n\t\t\tself.numChanges += filteredChanges.length;\n\t\t\tself.updateDirtyStatus();\n\t\t\t// Do any autosave if one is pending and there's no more change events\n\t\t\tif(self.pendingAutoSave && self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tself.pendingAutoSave = false;\n\t\t\t}\n\t\t});\n\t\t// Listen for the autosave event\n\t\t$tw.rootWidget.addEventListener(\"tm-auto-save-wiki\",function(event) {\n\t\t\t// Do the autosave unless there are outstanding tiddler change events\n\t\t\tif(self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise put ourselves in the \"pending autosave\" state and wait for the change event before we do the autosave\n\t\t\t\tself.pendingAutoSave = true;\n\t\t\t}\n\t\t});\n\t\t// Set up our beforeunload handler\n\t\t$tw.addUnloadTask(function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t});\n\t}\n\t// Install the save action handlers\n\tif($tw.browser) {\n\t\t$tw.rootWidget.addEventListener(\"tm-save-wiki\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-download-file\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\tmethod: \"download\",\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t}\n}\n\nSaverHandler.prototype.titleSyncFilter = \"$:/config/SaverFilter\";\nSaverHandler.prototype.titleAutoSave = \"$:/config/AutoSave\";\nSaverHandler.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\n\n/*\nSelect the appropriate saver modules and set them up\n*/\nSaverHandler.prototype.initSavers = function(moduleType) {\n\tmoduleType = moduleType || \"saver\";\n\t// Instantiate the available savers\n\tthis.savers = [];\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tif(module.canSave(self)) {\n\t\t\tself.savers.push(module.create(self.wiki));\n\t\t}\n\t});\n\t// Sort the savers into priority order\n\tthis.savers.sort(function(a,b) {\n\t\tif(a.info.priority < b.info.priority) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(a.info.priority > b.info.priority) {\n\t\t\t\treturn +1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nSave the wiki contents. Options are:\n\tmethod: \"save\", \"autosave\" or \"download\"\n\ttemplate: the tiddler containing the template to save\n\tdownloadType: the content type for the saved file\n*/\nSaverHandler.prototype.saveWiki = function(options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tmethod = options.method || \"save\",\n\t\tvariables = options.variables || {},\n\t\ttemplate = options.template || \"$:/core/save/all\",\n\t\tdownloadType = options.downloadType || \"text/plain\",\n\t\ttext = this.wiki.renderTiddler(downloadType,template,options),\n\t\tcallback = function(err) {\n\t\t\tif(err) {\n\t\t\t\talert($tw.language.getString(\"Error/WhileSaving\") + \":\\n\\n\" + err);\n\t\t\t} else {\n\t\t\t\t// Clear the task queue if we're saving (rather than downloading)\n\t\t\t\tif(method !== \"download\") {\n\t\t\t\t\tself.numChanges = 0;\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t}\n\t\t\t\t$tw.notifier.display(self.titleSavedNotification);\n\t\t\t\tif(options.callback) {\n\t\t\t\t\toptions.callback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t// Ignore autosave if disabled\n\tif(method === \"autosave\" && this.wiki.getTiddlerText(this.titleAutoSave,\"yes\") !== \"yes\") {\n\t\treturn false;\n\t}\n\t// Call the highest priority saver that supports this method\n\tfor(var t=this.savers.length-1; t>=0; t--) {\n\t\tvar saver = this.savers[t];\n\t\tif(saver.info.capabilities.indexOf(method) !== -1 && saver.save(text,method,callback,{variables: {filename: variables.filename}})) {\n\t\t\tthis.logger.log(\"Saving wiki with method\",method,\"through saver\",saver.info.name);\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSaverHandler.prototype.isDirty = function() {\n\treturn this.numChanges > 0;\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSaverHandler.prototype.updateDirtyStatus = function() {\n\tif($tw.browser) {\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",this.isDirty());\n\t}\n};\n\nexports.SaverHandler = SaverHandler;\n\n})();\n",
"title": "$:/core/modules/saver-handler.js",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/savers/andtidwiki.js": {
"text": "/*\\\ntitle: $:/core/modules/savers/andtidwiki.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the AndTidWiki Android app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar AndTidWiki = function(wiki) {\n};\n\nAndTidWiki.prototype.save = function(text,method,callback) {\n\t// Get the pathname of this document\n\tvar pathname = decodeURIComponent(document.location.toString().split(\"#\")[0]);\n\t// Strip the file://\n\tif(pathname.indexOf(\"file://\") === 0) {\n\t\tpathname = pathname.substr(7);\n\t}\n\t// Strip any query or location part\n\tvar p = pathname.indexOf(\"?\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\tp = pathname.indexOf(\"#\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\t// Save the file\n\twindow.twi.saveFile(pathname,text);\n\t// Call the callback\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nAndTidWiki.prototype.info = {\n\tname: \"andtidwiki\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.twi && !!window.twi.saveFile;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new AndTidWiki(wiki);\n};\n\n})();\n",
"title": "$:/core/modules/savers/andtidwiki.js",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/beaker.js": {
"text": "/*\\\ntitle: $:/core/modules/savers/beaker.js\ntype: application/javascript\nmodule-type: saver\n\nSaves files using the Beaker browser's (https://beakerbrowser.com) Dat protocol (https://datproject.org/)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet up the saver\n*/\nvar BeakerSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nBeakerSaver.prototype.save = function(text,method,callback) {\n\tvar url = (location.toString()).split(\"#\")[0];\n\tdat.stat(url).then(function(value) {\n\t\tif(value.type === \"directory\") {\n\t\t\turl = url + \"/index.html\";\n\t\t}\n\t\tdat.writeFile(url,text,\"utf8\").then(function(value) {\n\t\t\tcallback(null);\n\t\t},function(reason) {\n\t\t\tcallback(\"Beaker Saver Write Error: \" + reason);\n\t\t});\t\t\n\t},function(reason) {\n\t\tcallback(\"Beaker Saver Stat Error: \" + reason);\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nBeakerSaver.prototype.info = {\n\tname: \"beaker\",\n\tpriority: 3000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.dat;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new BeakerSaver(wiki);\n};\n\n})();\n",
"title": "$:/core/modules/savers/beaker.js",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/download.js": {
"text": "/*\\\ntitle: $:/core/modules/savers/download.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar DownloadSaver = function(wiki) {\n};\n\nDownloadSaver.prototype.save = function(text,method,callback,options) {\n\toptions = options || {};\n\t// Get the current filename\n\tvar filename = options.variables.filename;\n\tif(!filename) {\n\t\tvar p = document.location.pathname.lastIndexOf(\"/\");\n\t\tif(p !== -1) {\n\t\t\tfilename = document.location.pathname.substr(p+1);\n\t\t}\n\t}\n\tif(!filename) {\n\t\tfilename = \"tiddlywiki.html\";\n\t}\n\t// Set up the link\n\tvar link = document.createElement(\"a\");\n\tif(Blob !== undefined) {\n\t\tvar blob = new Blob([text], {type: \"text/html\"});\n\t\tlink.setAttribute(\"href\", URL.createObjectURL(blob));\n\t} else {\n\t\tlink.setAttribute(\"href\",\"data:text/html,\" + encodeURIComponent(text));\n\t}\n\tlink.setAttribute(\"download\",filename);\n\tdocument.body.appendChild(link);\n\tlink.click();\n\tdocument.body.removeChild(link);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nDownloadSaver.prototype.info = {\n\tname: \"download\",\n\tpriority: 100\n};\n\nObject.defineProperty(DownloadSaver.prototype.info, \"capabilities\", {\n\tget: function() {\n\t\tvar capabilities = [\"save\", \"download\"];\n\t\tif(($tw.wiki.getTextReference(\"$:/config/DownloadSaver/AutoSave\") || \"\").toLowerCase() === \"yes\") {\n\t\t\tcapabilities.push(\"autosave\");\n\t\t}\n\t\treturn capabilities;\n\t}\n});\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn document.createElement(\"a\").download !== undefined;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new DownloadSaver(wiki);\n};\n\n})();\n",
"title": "$:/core/modules/savers/download.js",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/fsosaver.js": {
"text": "/*\\\ntitle: $:/core/modules/savers/fsosaver.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via MS FileSystemObject ActiveXObject\n\nNote: Since TiddlyWiki's markup contains the MOTW, the FileSystemObject normally won't be available. \nHowever, if the wiki is loaded as an .HTA file (Windows HTML Applications) then the FSO can be used.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar FSOSaver = function(wiki) {\n};\n\nFSOSaver.prototype.save = function(text,method,callback) {\n\t// Get the pathname of this document\n\tvar pathname = unescape(document.location.pathname);\n\t// Test for a Windows path of the form /x:\\blah...\n\tif(/^\\/[A-Z]\\:\\\\[^\\\\]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t} else if(document.location.hostname !== \"\" && /^\\/\\\\[^\\\\]+\\\\[^\\\\]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t\t// reconstruct UNC path\n\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t} else {\n\t\treturn false;\n\t}\n\t// Save the file (as UTF-16)\n\tvar fso = new ActiveXObject(\"Scripting.FileSystemObject\");\n\tvar file = fso.OpenTextFile(pathname,2,-1,-1);\n\tfile.Write(text);\n\tfile.Close();\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nFSOSaver.prototype.info = {\n\tname: \"FSOSaver\",\n\tpriority: 120,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\ttry {\n\t\treturn (window.location.protocol === \"file:\") && !!(new ActiveXObject(\"Scripting.FileSystemObject\"));\n\t} catch(e) { return false; }\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new FSOSaver(wiki);\n};\n\n})();\n",
"title": "$:/core/modules/savers/fsosaver.js",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/manualdownload.js": {
"text": "/*\\\ntitle: $:/core/modules/savers/manualdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Title of the tiddler containing the download message\nvar downloadInstructionsTitle = \"$:/language/Modals/Download\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar ManualDownloadSaver = function(wiki) {\n};\n\nManualDownloadSaver.prototype.save = function(text,method,callback) {\n\t$tw.modal.display(downloadInstructionsTitle,{\n\t\tdownloadLink: \"data:text/html,\" + encodeURIComponent(text)\n\t});\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nManualDownloadSaver.prototype.info = {\n\tname: \"manualdownload\",\n\tpriority: 0,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new ManualDownloadSaver(wiki);\n};\n\n})();\n",
"title": "$:/core/modules/savers/manualdownload.js",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/msdownload.js": {
"text": "/*\\\ntitle: $:/core/modules/savers/msdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via window.navigator.msSaveBlob()\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar MsDownloadSaver = function(wiki) {\n};\n\nMsDownloadSaver.prototype.save = function(text,method,callback) {\n\t// Get the current filename\n\tvar filename = \"tiddlywiki.html\",\n\t\tp = document.location.pathname.lastIndexOf(\"/\");\n\tif(p !== -1) {\n\t\tfilename = document.location.pathname.substr(p+1);\n\t}\n\t// Set up the link\n\tvar blob = new Blob([text], {type: \"text/html\"});\n\twindow.navigator.msSaveBlob(blob,filename);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nMsDownloadSaver.prototype.info = {\n\tname: \"msdownload\",\n\tpriority: 110,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.navigator.msSaveBlob;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new MsDownloadSaver(wiki);\n};\n\n})();\n",
"title": "$:/core/modules/savers/msdownload.js",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/put.js": {
"text": "/*\\\ntitle: $:/core/modules/savers/put.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by performing a PUT request to the server\n\nWorks with any server which accepts a PUT request\nto the current URL, such as a WebDAV server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar PutSaver = function(wiki) {\n\tthis.wiki = wiki;\n\tvar self = this;\n\tvar uri = this.uri();\n\t// Async server probe. Until probe finishes, save will fail fast\n\t// See also https://github.com/Jermolene/TiddlyWiki5/issues/2276\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"OPTIONS\",\n\t\tcallback: function(err, data, xhr) {\n\t\t\t// Check DAV header http://www.webdav.org/specs/rfc2518.html#rfc.section.9.1\n\t\t\tif(!err) {\n\t\t\t\tself.serverAcceptsPuts = xhr.status === 200 && !!xhr.getResponseHeader(\"dav\");\n\t\t\t}\n\t\t}\n\t});\n\t// Retrieve ETag if available\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"HEAD\",\n\t\tcallback: function(err, data, xhr) {\n\t\t\tif(!err) {\n\t\t\t\tself.etag = xhr.getResponseHeader(\"ETag\");\n\t\t\t}\n\t\t}\n\t});\n};\n\nPutSaver.prototype.uri = function() {\n\treturn encodeURI(document.location.toString().split(\"#\")[0]);\n};\n\n// TODO: in case of edit conflict\n// Prompt: Do you want to save over this? Y/N\n// Merging would be ideal, and may be possible using future generic merge flow\nPutSaver.prototype.save = function(text, method, callback) {\n\tif(!this.serverAcceptsPuts) {\n\t\treturn false;\n\t}\n\tvar self = this;\n\tvar headers = { \"Content-Type\": \"text/html;charset=UTF-8\" };\n\tif(this.etag) {\n\t\theaders[\"If-Match\"] = this.etag;\n\t}\n\t$tw.utils.httpRequest({\n\t\turl: this.uri(),\n\t\ttype: \"PUT\",\n\t\theaders: headers,\n\t\tdata: text,\n\t\tcallback: function(err, data, xhr) {\n\t\t\tif(err) {\n\t\t\t\tcallback(err);\n\t\t\t} if(xhr.status === 200 || xhr.status === 201) {\n\t\t\t\tself.etag = xhr.getResponseHeader(\"ETag\");\n\t\t\t\tcallback(null); // success\n\t\t\t} else if(xhr.status === 412) { // edit conflict\n\t\t\t\tvar message = $tw.language.getString(\"Error/EditConflict\");\n\t\t\t\tcallback(message);\n\t\t\t} else {\n\t\t\t\tcallback(xhr.responseText); // fail\n\t\t\t}\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nPutSaver.prototype.info = {\n\tname: \"put\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn /^https?:/.test(location.protocol);\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new PutSaver(wiki);\n};\n\n})();\n",
"title": "$:/core/modules/savers/put.js",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/tiddlyfox.js": {
"text": "/*\\\ntitle: $:/core/modules/savers/tiddlyfox.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TiddlyFox file extension\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TiddlyFoxSaver = function(wiki) {\n};\n\nTiddlyFoxSaver.prototype.save = function(text,method,callback) {\n\tvar messageBox = document.getElementById(\"tiddlyfox-message-box\");\n\tif(messageBox) {\n\t\t// Get the pathname of this document\n\t\tvar pathname = document.location.toString().split(\"#\")[0];\n\t\t// Replace file://localhost/ with file:///\n\t\tif(pathname.indexOf(\"file://localhost/\") === 0) {\n\t\t\tpathname = \"file://\" + pathname.substr(16);\n\t\t}\n\t\t// Windows path file:///x:/blah/blah --> x:\\blah\\blah\n\t\tif(/^file\\:\\/\\/\\/[A-Z]\\:\\//i.test(pathname)) {\n\t\t\t// Remove the leading slash and convert slashes to backslashes\n\t\t\tpathname = pathname.substr(8).replace(/\\//g,\"\\\\\");\n\t\t// Firefox Windows network path file://///server/share/blah/blah --> //server/share/blah/blah\n\t\t} else if(pathname.indexOf(\"file://///\") === 0) {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(10)).replace(/\\//g,\"\\\\\");\n\t\t// Mac/Unix local path file:///path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:///\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(7));\n\t\t// Mac/Unix local path file:/path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:/\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(5));\n\t\t// Otherwise Windows networth path file://server/share/path/path --> \\\\server\\share\\path\\path\n\t\t} else {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(7)).replace(new RegExp(\"/\",\"g\"),\"\\\\\");\n\t\t}\n\t\t// Create the message element and put it in the message box\n\t\tvar message = document.createElement(\"div\");\n\t\tmessage.setAttribute(\"data-tiddlyfox-path\",decodeURIComponent(pathname));\n\t\tmessage.setAttribute(\"data-tiddlyfox-content\",text);\n\t\tmessageBox.appendChild(message);\n\t\t// Add an event handler for when the file has been saved\n\t\tmessage.addEventListener(\"tiddlyfox-have-saved-file\",function(event) {\n\t\t\tcallback(null);\n\t\t}, false);\n\t\t// Create and dispatch the custom event to the extension\n\t\tvar event = document.createEvent(\"Events\");\n\t\tevent.initEvent(\"tiddlyfox-save-file\",true,false);\n\t\tmessage.dispatchEvent(event);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyFoxSaver.prototype.info = {\n\tname: \"tiddlyfox\",\n\tpriority: 1500,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyFoxSaver(wiki);\n};\n\n})();\n",
"title": "$:/core/modules/savers/tiddlyfox.js",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/tiddlyie.js": {
"text": "/*\\\ntitle: $:/core/modules/savers/tiddlyie.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via Internet Explorer BHO extenion (TiddlyIE)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar TiddlyIESaver = function(wiki) {\n};\n\nTiddlyIESaver.prototype.save = function(text,method,callback) {\n\t// Check existence of TiddlyIE BHO extension (note: only works after document is complete)\n\tif(typeof(window.TiddlyIE) != \"undefined\") {\n\t\t// Get the pathname of this document\n\t\tvar pathname = unescape(document.location.pathname);\n\t\t// Test for a Windows path of the form /x:/blah...\n\t\tif(/^\\/[A-Z]\\:\\/[^\\/]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+ (is this better?: ^/[a-z]:/[^/]+(/[^/]+)*\\.[^/]+ )\n\t\t\t// Remove the leading slash\n\t\t\tpathname = pathname.substr(1);\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t} else if(document.hostname !== \"\" && /^\\/[^\\/]+\\/[^\\/]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t\t// reconstruct UNC path\n\t\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t\t} else return false;\n\t\t// Prompt the user to save the file\n\t\twindow.TiddlyIE.save(pathname, text);\n\t\t// Callback that we succeeded\n\t\tcallback(null);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyIESaver.prototype.info = {\n\tname: \"tiddlyiesaver\",\n\tpriority: 1500,\n\tcapabilities: [\"save\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn (window.location.protocol === \"file:\");\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyIESaver(wiki);\n};\n\n})();\n",
"title": "$:/core/modules/savers/tiddlyie.js",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/twedit.js": {
"text": "/*\\\ntitle: $:/core/modules/savers/twedit.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TWEdit iOS app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TWEditSaver = function(wiki) {\n};\n\nTWEditSaver.prototype.save = function(text,method,callback) {\n\t// Bail if we're not running under TWEdit\n\tif(typeof DeviceInfo !== \"object\") {\n\t\treturn false;\n\t}\n\t// Get the pathname of this document\n\tvar pathname = decodeURIComponent(document.location.pathname);\n\t// Strip any query or location part\n\tvar p = pathname.indexOf(\"?\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\tp = pathname.indexOf(\"#\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\t// Remove the leading \"/Documents\" from path\n\tvar prefix = \"/Documents\";\n\tif(pathname.indexOf(prefix) === 0) {\n\t\tpathname = pathname.substr(prefix.length);\n\t}\n\t// Error handler\n\tvar errorHandler = function(event) {\n\t\t// Error\n\t\tcallback($tw.language.getString(\"Error/SavingToTWEdit\") + \": \" + event.target.error.code);\n\t};\n\t// Get the file system\n\twindow.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem) {\n\t\t// Now we've got the filesystem, get the fileEntry\n\t\tfileSystem.root.getFile(pathname, {create: true}, function(fileEntry) {\n\t\t\t// Now we've got the fileEntry, create the writer\n\t\t\tfileEntry.createWriter(function(writer) {\n\t\t\t\twriter.onerror = errorHandler;\n\t\t\t\twriter.onwrite = function() {\n\t\t\t\t\tcallback(null);\n\t\t\t\t};\n\t\t\t\twriter.position = 0;\n\t\t\t\twriter.write(text);\n\t\t\t},errorHandler);\n\t\t}, errorHandler);\n\t}, errorHandler);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nTWEditSaver.prototype.info = {\n\tname: \"twedit\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TWEditSaver(wiki);\n};\n\n/////////////////////////// Hack\n// HACK: This ensures that TWEdit recognises us as a TiddlyWiki document\nif($tw.browser) {\n\twindow.version = {title: \"TiddlyWiki\"};\n}\n\n})();\n",
"title": "$:/core/modules/savers/twedit.js",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/upload.js": {
"text": "/*\\\ntitle: $:/core/modules/savers/upload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via upload to a server.\n\nDesigned to be compatible with BidiX's UploadPlugin at http://tiddlywiki.bidix.info/#UploadPlugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar UploadSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nUploadSaver.prototype.save = function(text,method,callback) {\n\t// Get the various parameters we need\n\tvar backupDir = this.wiki.getTextReference(\"$:/UploadBackupDir\") || \".\",\n\t\tusername = this.wiki.getTextReference(\"$:/UploadName\"),\n\t\tpassword = $tw.utils.getPassword(\"upload\"),\n\t\tuploadDir = this.wiki.getTextReference(\"$:/UploadDir\") || \".\",\n\t\tuploadFilename = this.wiki.getTextReference(\"$:/UploadFilename\") || \"index.html\",\n\t\turl = this.wiki.getTextReference(\"$:/UploadURL\");\n\t// Bail out if we don't have the bits we need\n\tif(!username || username.toString().trim() === \"\" || !password || password.toString().trim() === \"\") {\n\t\treturn false;\n\t}\n\t// Construct the url if not provided\n\tif(!url) {\n\t\turl = \"http://\" + username + \".tiddlyspot.com/store.cgi\";\n\t}\n\t// Assemble the header\n\tvar boundary = \"---------------------------\" + \"AaB03x\";\t\n\tvar uploadFormName = \"UploadPlugin\";\n\tvar head = [];\n\thead.push(\"--\" + boundary + \"\\r\\nContent-disposition: form-data; name=\\\"UploadPlugin\\\"\\r\\n\");\n\thead.push(\"backupDir=\" + backupDir + \";user=\" + username + \";password=\" + password + \";uploaddir=\" + uploadDir + \";;\"); \n\thead.push(\"\\r\\n\" + \"--\" + boundary);\n\thead.push(\"Content-disposition: form-data; name=\\\"userfile\\\"; filename=\\\"\" + uploadFilename + \"\\\"\");\n\thead.push(\"Content-Type: text/html;charset=UTF-8\");\n\thead.push(\"Content-Length: \" + text.length + \"\\r\\n\");\n\thead.push(\"\");\n\t// Assemble the tail and the data itself\n\tvar tail = \"\\r\\n--\" + boundary + \"--\\r\\n\",\n\t\tdata = head.join(\"\\r\\n\") + text + tail;\n\t// Do the HTTP post\n\tvar http = new XMLHttpRequest();\n\thttp.open(\"POST\",url,true,username,password);\n\thttp.setRequestHeader(\"Content-Type\",\"multipart/form-data; charset=UTF-8; boundary=\" + boundary);\n\thttp.onreadystatechange = function() {\n\t\tif(http.readyState == 4 && http.status == 200) {\n\t\t\tif(http.responseText.substr(0,4) === \"0 - \") {\n\t\t\t\tcallback(null);\n\t\t\t} else {\n\t\t\t\tcallback(http.responseText);\n\t\t\t}\n\t\t}\n\t};\n\ttry {\n\t\thttp.send(data);\n\t} catch(ex) {\n\t\treturn callback($tw.language.getString(\"Error/Caption\") + \":\" + ex);\n\t}\n\t$tw.notifier.display(\"$:/language/Notifications/Save/Starting\");\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nUploadSaver.prototype.info = {\n\tname: \"upload\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new UploadSaver(wiki);\n};\n\n})();\n",
"title": "$:/core/modules/savers/upload.js",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/browser-messaging.js": {
"text": "/*\\\ntitle: $:/core/modules/browser-messaging.js\ntype: application/javascript\nmodule-type: startup\n\nBrowser message handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"browser-messaging\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n/*\nLoad a specified url as an iframe and call the callback when it is loaded. If the url is already loaded then the existing iframe instance is used\n*/\nfunction loadIFrame(url,callback) {\n\t// Check if iframe already exists\n\tvar iframeInfo = $tw.browserMessaging.iframeInfoMap[url];\n\tif(iframeInfo) {\n\t\t// We've already got the iframe\n\t\tcallback(null,iframeInfo);\n\t} else {\n\t\t// Create the iframe and save it in the list\n\t\tvar iframe = document.createElement(\"iframe\");\n\t\tiframeInfo = {\n\t\t\turl: url,\n\t\t\tstatus: \"loading\",\n\t\t\tdomNode: iframe\n\t\t};\n\t\t$tw.browserMessaging.iframeInfoMap[url] = iframeInfo;\n\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t// Add the iframe to the DOM and hide it\n\t\tiframe.style.display = \"none\";\n\t\tiframe.setAttribute(\"library\",\"true\");\n\t\tdocument.body.appendChild(iframe);\n\t\t// Set up onload\n\t\tiframe.onload = function() {\n\t\t\tiframeInfo.status = \"loaded\";\n\t\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t\tcallback(null,iframeInfo);\n\t\t};\n\t\tiframe.onerror = function() {\n\t\t\tcallback(\"Cannot load iframe\");\n\t\t};\n\t\ttry {\n\t\t\tiframe.src = url;\n\t\t} catch(ex) {\n\t\t\tcallback(ex);\n\t\t}\n\t}\n}\n\n/*\nUnload library iframe for given url\n*/\nfunction unloadIFrame(url){\n\t$tw.utils.each(document.getElementsByTagName('iframe'), function(iframe) {\n\t\tif(iframe.getAttribute(\"library\") === \"true\" &&\n\t\t iframe.getAttribute(\"src\") === url) {\n\t\t\tiframe.parentNode.removeChild(iframe);\n\t\t}\n\t});\n}\n\nfunction saveIFrameInfoTiddler(iframeInfo) {\n\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),{\n\t\ttitle: \"$:/temp/ServerConnection/\" + iframeInfo.url,\n\t\ttext: iframeInfo.status,\n\t\ttags: [\"$:/tags/ServerConnection\"],\n\t\turl: iframeInfo.url\n\t},$tw.wiki.getModificationFields()));\n}\n\nexports.startup = function() {\n\t// Initialise the store of iframes we've created\n\t$tw.browserMessaging = {\n\t\tiframeInfoMap: {} // Hashmap by URL of {url:,status:\"loading/loaded\",domNode:}\n\t};\n\t// Listen for widget messages to control loading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\tif(url) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers.json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-info\",\n\t\t\t\t\t\t\tinfoTitlePrefix: paramObject.infoTitlePrefix || \"$:/temp/RemoteAssetInfo/\",\n\t\t\t\t\t\t\turl: url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\"*\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Listen for widget messages to control unloading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-unload-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\t$tw.browserMessaging.iframeInfoMap[url] = undefined;\n\t\tif(url) {\n\t\t\tunloadIFrame(url);\n\t\t\t$tw.utils.each(\n\t\t\t\t$tw.wiki.filterTiddlers(\"[[$:/temp/ServerConnection/\" + url + \"]] [prefix[$:/temp/RemoteAssetInfo/\" + url + \"/]]\"),\n\t\t\t\tfunction(title) {\n\t\t\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-from-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url,\n\t\t\ttitle = paramObject.title;\n\t\tif(url && title) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers/\" + encodeURIComponent(title) + \".json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-tiddler\",\n\t\t\t\t\t\t\turl: url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\"*\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Listen for window messages from other windows\n\twindow.addEventListener(\"message\",function listener(event){\n\t\tconsole.log(\"browser-messaging: \",document.location.toString())\n\t\tconsole.log(\"browser-messaging: Received message from\",event.origin);\n\t\tconsole.log(\"browser-messaging: Message content\",event.data);\n\t\tswitch(event.data.verb) {\n\t\t\tcase \"GET-RESPONSE\":\n\t\t\t\tif(event.data.status.charAt(0) === \"2\") {\n\t\t\t\t\tif(event.data.cookies) {\n\t\t\t\t\t\tif(event.data.cookies.type === \"save-info\") {\n\t\t\t\t\t\t\tvar tiddlers = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\t\t\t\t\ttitle: event.data.cookies.infoTitlePrefix + event.data.cookies.url + \"/\" + tiddler.title,\n\t\t\t\t\t\t\t\t\t\"original-title\": tiddler.title,\n\t\t\t\t\t\t\t\t\ttext: \"\",\n\t\t\t\t\t\t\t\t\ttype: \"text/vnd.tiddlywiki\",\n\t\t\t\t\t\t\t\t\t\"original-type\": tiddler.type,\n\t\t\t\t\t\t\t\t\t\"plugin-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-plugin-type\": tiddler[\"plugin-type\"],\n\t\t\t\t\t\t\t\t\t\"module-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-module-type\": tiddler[\"module-type\"],\n\t\t\t\t\t\t\t\t\ttags: [\"$:/tags/RemoteAssetInfo\"],\n\t\t\t\t\t\t\t\t\t\"original-tags\": $tw.utils.stringifyList(tiddler.tags || []),\n\t\t\t\t\t\t\t\t\t\"server-url\": event.data.cookies.url\n\t\t\t\t\t\t\t\t},$tw.wiki.getModificationFields()));\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else if(event.data.cookies.type === \"save-tiddler\") {\n\t\t\t\t\t\t\tvar tiddler = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t},false);\n};\n\n})();\n",
"title": "$:/core/modules/browser-messaging.js",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/commands.js": {
"text": "/*\\\ntitle: $:/core/modules/startup/commands.js\ntype: application/javascript\nmodule-type: startup\n\nCommand processing\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"commands\";\nexports.platforms = [\"node\"];\nexports.after = [\"story\"];\nexports.synchronous = false;\n\nexports.startup = function(callback) {\n\t// On the server, start a commander with the command line arguments\n\tvar commander = new $tw.Commander(\n\t\t$tw.boot.argv,\n\t\tfunction(err) {\n\t\t\tif(err) {\n\t\t\t\treturn $tw.utils.error(\"Error: \" + err);\n\t\t\t}\n\t\t\tcallback();\n\t\t},\n\t\t$tw.wiki,\n\t\t{output: process.stdout, error: process.stderr}\n\t);\n\tcommander.execute();\n};\n\n})();\n",
"title": "$:/core/modules/startup/commands.js",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/favicon.js": {
"text": "/*\\\ntitle: $:/core/modules/startup/favicon.js\ntype: application/javascript\nmodule-type: startup\n\nFavicon handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"favicon\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\t\t\n// Favicon tiddler\nvar FAVICON_TITLE = \"$:/favicon.ico\";\n\nexports.startup = function() {\n\t// Set up the favicon\n\tsetFavicon();\n\t// Reset the favicon when the tiddler changes\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,FAVICON_TITLE)) {\n\t\t\tsetFavicon();\n\t\t}\n\t});\n};\n\nfunction setFavicon() {\n\tvar tiddler = $tw.wiki.getTiddler(FAVICON_TITLE);\n\tif(tiddler) {\n\t\tvar faviconLink = document.getElementById(\"faviconLink\");\n\t\tfaviconLink.setAttribute(\"href\",\"data:\" + tiddler.fields.type + \";base64,\" + tiddler.fields.text);\n\t}\n}\n\n})();\n",
"title": "$:/core/modules/startup/favicon.js",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/info.js": {
"text": "/*\\\ntitle: $:/core/modules/startup/info.js\ntype: application/javascript\nmodule-type: startup\n\nInitialise $:/info tiddlers via $:/temp/info-plugin pseudo-plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"info\";\nexports.before = [\"startup\"];\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Collect up the info tiddlers\n\tvar infoTiddlerFields = {};\n\t// Give each info module a chance to fill in as many info tiddlers as they want\n\t$tw.modules.forEachModuleOfType(\"info\",function(title,moduleExports) {\n\t\tif(moduleExports && moduleExports.getInfoTiddlerFields) {\n\t\t\tvar tiddlerFieldsArray = moduleExports.getInfoTiddlerFields(infoTiddlerFields);\n\t\t\t$tw.utils.each(tiddlerFieldsArray,function(fields) {\n\t\t\t\tif(fields) {\n\t\t\t\t\tinfoTiddlerFields[fields.title] = fields;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Bake the info tiddlers into a plugin\n\tvar fields = {\n\t\ttitle: \"$:/temp/info-plugin\",\n\t\ttype: \"application/json\",\n\t\t\"plugin-type\": \"info\",\n\t\ttext: JSON.stringify({tiddlers: infoTiddlerFields},null,$tw.config.preferences.jsonSpaces)\n\t};\n\t$tw.wiki.addTiddler(new $tw.Tiddler(fields));\n\t$tw.wiki.readPluginInfo();\n\t$tw.wiki.registerPluginTiddlers(\"info\");\n\t$tw.wiki.unpackPluginTiddlers();\n};\n\n})();\n",
"title": "$:/core/modules/startup/info.js",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/load-modules.js": {
"text": "/*\\\ntitle: $:/core/modules/startup/load-modules.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"load-modules\";\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Load modules\n\t$tw.modules.applyMethods(\"utils\",$tw.utils);\n\tif($tw.node) {\n\t\t$tw.modules.applyMethods(\"utils-node\",$tw.utils);\n\t}\n\t$tw.modules.applyMethods(\"global\",$tw);\n\t$tw.modules.applyMethods(\"config\",$tw.config);\n\t$tw.Tiddler.fieldModules = $tw.modules.getModulesByTypeAsHashmap(\"tiddlerfield\");\n\t$tw.modules.applyMethods(\"tiddlermethod\",$tw.Tiddler.prototype);\n\t$tw.modules.applyMethods(\"wikimethod\",$tw.Wiki.prototype);\n\t$tw.modules.applyMethods(\"tiddlerdeserializer\",$tw.Wiki.tiddlerDeserializerModules);\n\t$tw.macros = $tw.modules.getModulesByTypeAsHashmap(\"macro\");\n\t$tw.wiki.initParsers();\n\t$tw.Commander.initCommands();\n};\n\n})();\n",
"title": "$:/core/modules/startup/load-modules.js",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/password.js": {
"text": "/*\\\ntitle: $:/core/modules/startup/password.js\ntype: application/javascript\nmodule-type: startup\n\nPassword handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"password\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t$tw.rootWidget.addEventListener(\"tm-set-password\",function(event) {\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: $tw.language.getString(\"Encryption/PromptSetPassword\"),\n\t\t\tnoUserName: true,\n\t\t\tsubmitText: $tw.language.getString(\"Encryption/SetPassword\"),\n\t\t\tcanCancel: true,\n\t\t\trepeatPassword: true,\n\t\t\tcallback: function(data) {\n\t\t\t\tif(data) {\n\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t}\n\t\t\t\treturn true; // Get rid of the password prompt\n\t\t\t}\n\t\t});\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-clear-password\",function(event) {\n\t\tif($tw.browser) {\n\t\t\tif(!confirm($tw.language.getString(\"Encryption/ConfirmClearPassword\"))) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t$tw.crypto.setPassword(null);\n\t});\n\t// Ensure that $:/isEncrypted is maintained properly\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,\"$:/isEncrypted\")) {\n\t\t\t$tw.crypto.updateCryptoStateTiddler();\n\t\t}\n\t});\n};\n\n})();\n",
"title": "$:/core/modules/startup/password.js",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/render.js": {
"text": "/*\\\ntitle: $:/core/modules/startup/render.js\ntype: application/javascript\nmodule-type: startup\n\nTitle, stylesheet and page rendering\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"render\";\nexports.platforms = [\"browser\"];\nexports.after = [\"story\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar PAGE_TITLE_TITLE = \"$:/core/wiki/title\";\nvar PAGE_STYLESHEET_TITLE = \"$:/core/ui/PageStylesheet\";\nvar PAGE_TEMPLATE_TITLE = \"$:/core/ui/PageTemplate\";\n\n// Time (in ms) that we defer refreshing changes to draft tiddlers\nvar DRAFT_TIDDLER_TIMEOUT_TITLE = \"$:/config/Drafts/TypingTimeout\";\nvar DRAFT_TIDDLER_TIMEOUT = 400;\n\nexports.startup = function() {\n\t// Set up the title\n\t$tw.titleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TITLE_TITLE,{document: $tw.fakeDocument, parseAsInline: true});\n\t$tw.titleContainer = $tw.fakeDocument.createElement(\"div\");\n\t$tw.titleWidgetNode.render($tw.titleContainer,null);\n\tdocument.title = $tw.titleContainer.textContent;\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.titleWidgetNode.refresh(changes,$tw.titleContainer,null)) {\n\t\t\tdocument.title = $tw.titleContainer.textContent;\n\t\t}\n\t});\n\t// Set up the styles\n\t$tw.styleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_STYLESHEET_TITLE,{document: $tw.fakeDocument});\n\t$tw.styleContainer = $tw.fakeDocument.createElement(\"style\");\n\t$tw.styleWidgetNode.render($tw.styleContainer,null);\n\t$tw.styleElement = document.createElement(\"style\");\n\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\tdocument.head.insertBefore($tw.styleElement,document.head.firstChild);\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"styleRefresh\",function(changes) {\n\t\tif($tw.styleWidgetNode.refresh(changes,$tw.styleContainer,null)) {\n\t\t\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\t\t}\n\t}));\n\t// Display the $:/core/ui/PageTemplate tiddler to kick off the display\n\t$tw.perf.report(\"mainRender\",function() {\n\t\t$tw.pageWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TEMPLATE_TITLE,{document: document, parentWidget: $tw.rootWidget});\n\t\t$tw.pageContainer = document.createElement(\"div\");\n\t\t$tw.utils.addClass($tw.pageContainer,\"tc-page-container-wrapper\");\n\t\tdocument.body.insertBefore($tw.pageContainer,document.body.firstChild);\n\t\t$tw.pageWidgetNode.render($tw.pageContainer,null);\n\t})();\n\t// Prepare refresh mechanism\n\tvar deferredChanges = Object.create(null),\n\t\ttimerId;\n\tfunction refresh() {\n\t\t// Process the refresh\n\t\t$tw.pageWidgetNode.refresh(deferredChanges);\n\t\tdeferredChanges = Object.create(null);\n\t}\n\t// Add the change event handler\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"mainRefresh\",function(changes) {\n\t\t// Check if only drafts have changed\n\t\tvar onlyDraftsHaveChanged = true;\n\t\tfor(var title in changes) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(!tiddler || !tiddler.hasField(\"draft.of\")) {\n\t\t\t\tonlyDraftsHaveChanged = false;\n\t\t\t}\n\t\t}\n\t\t// Defer the change if only drafts have changed\n\t\tif(timerId) {\n\t\t\tclearTimeout(timerId);\n\t\t}\n\t\ttimerId = null;\n\t\tif(onlyDraftsHaveChanged) {\n\t\t\tvar timeout = parseInt($tw.wiki.getTiddlerText(DRAFT_TIDDLER_TIMEOUT_TITLE,\"\"),10);\n\t\t\tif(isNaN(timeout)) {\n\t\t\t\ttimeout = DRAFT_TIDDLER_TIMEOUT;\n\t\t\t}\n\t\t\ttimerId = setTimeout(refresh,timeout);\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t} else {\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t\trefresh();\n\t\t}\n\t}));\n\t// Fix up the link between the root widget and the page container\n\t$tw.rootWidget.domNodes = [$tw.pageContainer];\n\t$tw.rootWidget.children = [$tw.pageWidgetNode];\n};\n\n})();\n",
"title": "$:/core/modules/startup/render.js",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/rootwidget.js": {
"text": "/*\\\ntitle: $:/core/modules/startup/rootwidget.js\ntype: application/javascript\nmodule-type: startup\n\nSetup the root widget and the core root widget handlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"rootwidget\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.before = [\"story\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Install the modal message mechanism\n\t$tw.modal = new $tw.utils.Modal($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-modal\",function(event) {\n\t\t$tw.modal.display(event.param,{variables: event.paramObject});\n\t});\n\t// Install the notification mechanism\n\t$tw.notifier = new $tw.utils.Notifier($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-notify\",function(event) {\n\t\t$tw.notifier.display(event.param,{variables: event.paramObject});\n\t});\n\t// Install the scroller\n\t$tw.pageScroller = new $tw.utils.PageScroller();\n\t$tw.rootWidget.addEventListener(\"tm-scroll\",function(event) {\n\t\t$tw.pageScroller.handleEvent(event);\n\t});\n\tvar fullscreen = $tw.utils.getFullScreenApis();\n\tif(fullscreen) {\n\t\t$tw.rootWidget.addEventListener(\"tm-full-screen\",function(event) {\n\t\t\tif(document[fullscreen._fullscreenElement]) {\n\t\t\t\tdocument[fullscreen._exitFullscreen]();\n\t\t\t} else {\n\t\t\t\tdocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);\n\t\t\t}\n\t\t});\n\t}\n\t// If we're being viewed on a data: URI then give instructions for how to save\n\tif(document.location.protocol === \"data:\") {\n\t\t$tw.rootWidget.dispatchEvent({\n\t\t\ttype: \"tm-modal\",\n\t\t\tparam: \"$:/language/Modals/SaveInstructions\"\n\t\t});\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/startup/rootwidget.js",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup.js": {
"text": "/*\\\ntitle: $:/core/modules/startup.js\ntype: application/javascript\nmodule-type: startup\n\nMiscellaneous startup logic for both the client and server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"startup\";\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\n// Set to `true` to enable performance instrumentation\nvar PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE = \"$:/config/Performance/Instrumentation\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.startup = function() {\n\tvar modules,n,m,f;\n\t// Minimal browser detection\n\tif($tw.browser) {\n\t\t$tw.browser.isIE = (/msie|trident/i.test(navigator.userAgent));\n\t\t$tw.browser.isFirefox = !!document.mozFullScreenEnabled;\n\t}\n\t// Platform detection\n\t$tw.platform = {};\n\tif($tw.browser) {\n\t\t$tw.platform.isMac = /Mac/.test(navigator.platform);\n\t\t$tw.platform.isWindows = /win/i.test(navigator.platform);\n\t\t$tw.platform.isLinux = /Linux/i.test(navigator.appVersion);\n\t} else {\n\t\tswitch(require(\"os\").platform()) {\n\t\t\tcase \"darwin\":\n\t\t\t\t$tw.platform.isMac = true;\n\t\t\t\tbreak;\n\t\t\tcase \"win32\":\n\t\t\t\t$tw.platform.isWindows = true;\n\t\t\t\tbreak;\n\t\t\tcase \"freebsd\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t\tcase \"linux\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\t// Initialise version\n\t$tw.version = $tw.utils.extractVersionInfo();\n\t// Set up the performance framework\n\t$tw.perf = new $tw.Performance($tw.wiki.getTiddlerText(PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE,\"no\") === \"yes\");\n\t// Kick off the language manager and switcher\n\t$tw.language = new $tw.Language();\n\t$tw.languageSwitcher = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"language\",\n\t\tcontrollerTitle: \"$:/language\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/languages/en-US\"\n\t\t],\n\t\tonSwitch: function(plugins) {\n\t\t\tif($tw.browser) {\n\t\t\t\tvar pluginTiddler = $tw.wiki.getTiddler(plugins[0]);\n\t\t\t\tif(pluginTiddler) {\n\t\t\t\t\tdocument.documentElement.setAttribute(\"dir\",pluginTiddler.getFieldString(\"text-direction\") || \"auto\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.documentElement.removeAttribute(\"dir\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t// Kick off the theme manager\n\t$tw.themeManager = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"theme\",\n\t\tcontrollerTitle: \"$:/theme\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/themes/tiddlywiki/snowwhite\",\n\t\t\t\"$:/themes/tiddlywiki/vanilla\"\n\t\t]\n\t});\n\t// Kick off the keyboard manager\n\t$tw.keyboardManager = new $tw.KeyboardManager();\n\t// Clear outstanding tiddler store change events to avoid an unnecessary refresh cycle at startup\n\t$tw.wiki.clearTiddlerEventQueue();\n\t// Create a root widget for attaching event handlers. By using it as the parentWidget for another widget tree, one can reuse the event handlers\n\tif($tw.browser) {\n\t\t$tw.rootWidget = new widget.widget({\n\t\t\ttype: \"widget\",\n\t\t\tchildren: []\n\t\t},{\n\t\t\twiki: $tw.wiki,\n\t\t\tdocument: document\n\t\t});\n\t}\n\t// Find a working syncadaptor\n\t$tw.syncadaptor = undefined;\n\t$tw.modules.forEachModuleOfType(\"syncadaptor\",function(title,module) {\n\t\tif(!$tw.syncadaptor && module.adaptorClass) {\n\t\t\t$tw.syncadaptor = new module.adaptorClass({wiki: $tw.wiki});\n\t\t}\n\t});\n\t// Set up the syncer object if we've got a syncadaptor\n\tif($tw.syncadaptor) {\n\t\t$tw.syncer = new $tw.Syncer({wiki: $tw.wiki, syncadaptor: $tw.syncadaptor});\n\t} \n\t// Setup the saver handler\n\t$tw.saverHandler = new $tw.SaverHandler({wiki: $tw.wiki, dirtyTracking: !$tw.syncadaptor});\n\t// Host-specific startup\n\tif($tw.browser) {\n\t\t// Install the popup manager\n\t\t$tw.popup = new $tw.utils.Popup();\n\t\t// Install the animator\n\t\t$tw.anim = new $tw.utils.Animator();\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/startup.js",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/story.js": {
"text": "/*\\\ntitle: $:/core/modules/startup/story.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"story\";\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar DEFAULT_STORY_TITLE = \"$:/StoryList\";\nvar DEFAULT_HISTORY_TITLE = \"$:/HistoryList\";\n\n// Default tiddlers\nvar DEFAULT_TIDDLERS_TITLE = \"$:/DefaultTiddlers\";\n\n// Config\nvar CONFIG_UPDATE_ADDRESS_BAR = \"$:/config/Navigation/UpdateAddressBar\"; // Can be \"no\", \"permalink\", \"permaview\"\nvar CONFIG_UPDATE_HISTORY = \"$:/config/Navigation/UpdateHistory\"; // Can be \"yes\" or \"no\"\n\nexports.startup = function() {\n\t// Open startup tiddlers\n\topenStartupTiddlers();\n\tif($tw.browser) {\n\t\t// Set up location hash update\n\t\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\t\tif($tw.utils.hop(changes,DEFAULT_STORY_TITLE) || $tw.utils.hop(changes,DEFAULT_HISTORY_TITLE)) {\n\t\t\t\tupdateLocationHash({\n\t\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_UPDATE_ADDRESS_BAR,\"permaview\").trim(),\n\t\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim()\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t// Listen for changes to the browser location hash\n\t\twindow.addEventListener(\"hashchange\",function() {\n\t\t\tvar hash = $tw.utils.getLocationHash();\n\t\t\tif(hash !== $tw.locationHash) {\n\t\t\t\t$tw.locationHash = hash;\n\t\t\t\topenStartupTiddlers({defaultToCurrentStory: true});\n\t\t\t}\n\t\t},false);\n\t\t// Listen for the tm-browser-refresh message\n\t\t$tw.rootWidget.addEventListener(\"tm-browser-refresh\",function(event) {\n\t\t\twindow.location.reload(true);\n\t\t});\n\t\t// Listen for the tm-print message\n\t\t$tw.rootWidget.addEventListener(\"tm-print\",function(event) {\n\t\t\t(event.event.view || window).print();\n\t\t});\n\t\t// Listen for the tm-home message\n\t\t$tw.rootWidget.addEventListener(\"tm-home\",function(event) {\n\t\t\twindow.location.hash = \"\";\n\t\t\tvar storyFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE),\n\t\t\t\tstoryList = $tw.wiki.filterTiddlers(storyFilter);\n\t\t\t//invoke any hooks that might change the default story list\n\t\t\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t\t\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t\t\tif(storyList[0]) {\n\t\t\t\t$tw.wiki.addToHistory(storyList[0]);\t\t\t\t\n\t\t\t}\n\t\t});\n\t\t// Listen for the tm-permalink message\n\t\t$tw.rootWidget.addEventListener(\"tm-permalink\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: \"permalink\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle\n\t\t\t});\n\t\t});\n\t\t// Listen for the tm-permaview message\n\t\t$tw.rootWidget.addEventListener(\"tm-permaview\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: \"permaview\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle\n\t\t\t});\n\t\t});\n\t}\n};\n\n/*\nProcess the location hash to open the specified tiddlers. Options:\ndefaultToCurrentStory: If true, the current story is retained as the default, instead of opening the default tiddlers\n*/\nfunction openStartupTiddlers(options) {\n\toptions = options || {};\n\t// Work out the target tiddler and the story filter. \"null\" means \"unspecified\"\n\tvar target = null,\n\t\tstoryFilter = null;\n\tif($tw.locationHash.length > 1) {\n\t\tvar hash = $tw.locationHash.substr(1),\n\t\t\tsplit = hash.indexOf(\":\");\n\t\tif(split === -1) {\n\t\t\ttarget = decodeURIComponent(hash.trim());\n\t\t} else {\n\t\t\ttarget = decodeURIComponent(hash.substr(0,split).trim());\n\t\t\tstoryFilter = decodeURIComponent(hash.substr(split + 1).trim());\n\t\t}\n\t}\n\t// If the story wasn't specified use the current tiddlers or a blank story\n\tif(storyFilter === null) {\n\t\tif(options.defaultToCurrentStory) {\n\t\t\tvar currStoryList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE);\n\t\t\tstoryFilter = $tw.utils.stringifyList(currStoryList);\n\t\t} else {\n\t\t\tif(target && target !== \"\") {\n\t\t\t\tstoryFilter = \"\";\n\t\t\t} else {\n\t\t\t\tstoryFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE);\n\t\t\t}\n\t\t}\n\t}\n\t// Process the story filter to get the story list\n\tvar storyList = $tw.wiki.filterTiddlers(storyFilter);\n\t// Invoke any hooks that want to change the default story list\n\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t// If the target tiddler isn't included then splice it in at the top\n\tif(target && storyList.indexOf(target) === -1) {\n\t\tstoryList.unshift(target);\n\t}\n\t// Save the story list\n\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t// If a target tiddler was specified add it to the history stack\n\tif(target && target !== \"\") {\n\t\t// The target tiddler doesn't need double square brackets, but we'll silently remove them if they're present\n\t\tif(target.indexOf(\"[[\") === 0 && target.substr(-2) === \"]]\") {\n\t\t\ttarget = target.substr(2,target.length - 4);\n\t\t}\n\t\t$tw.wiki.addToHistory(target);\n\t} else if(storyList.length > 0) {\n\t\t$tw.wiki.addToHistory(storyList[0]);\n\t}\n}\n\n/*\noptions: See below\noptions.updateAddressBar: \"permalink\", \"permaview\" or \"no\" (defaults to \"permaview\")\noptions.updateHistory: \"yes\" or \"no\" (defaults to \"no\")\noptions.targetTiddler: optional title of target tiddler for permalink\n*/\nfunction updateLocationHash(options) {\n\tif(options.updateAddressBar !== \"no\") {\n\t\t// Get the story and the history stack\n\t\tvar storyList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE),\n\t\t\thistoryList = $tw.wiki.getTiddlerData(DEFAULT_HISTORY_TITLE,[]),\n\t\t\ttargetTiddler = \"\";\n\t\tif(options.targetTiddler) {\n\t\t\ttargetTiddler = options.targetTiddler;\n\t\t} else {\n\t\t\t// The target tiddler is the one at the top of the stack\n\t\t\tif(historyList.length > 0) {\n\t\t\t\ttargetTiddler = historyList[historyList.length-1].title;\n\t\t\t}\n\t\t\t// Blank the target tiddler if it isn't present in the story\n\t\t\tif(storyList.indexOf(targetTiddler) === -1) {\n\t\t\t\ttargetTiddler = \"\";\n\t\t\t}\n\t\t}\n\t\t// Assemble the location hash\n\t\tif(options.updateAddressBar === \"permalink\") {\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler);\n\t\t} else {\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler) + \":\" + encodeURIComponent($tw.utils.stringifyList(storyList));\n\t\t}\n\t\t// Only change the location hash if we must, thus avoiding unnecessary onhashchange events\n\t\tif($tw.utils.getLocationHash() !== $tw.locationHash) {\n\t\t\tif(options.updateHistory === \"yes\") {\n\t\t\t\t// Assign the location hash so that history is updated\n\t\t\t\twindow.location.hash = $tw.locationHash;\n\t\t\t} else {\n\t\t\t\t// We use replace so that browser history isn't affected\n\t\t\t\twindow.location.replace(window.location.toString().split(\"#\")[0] + $tw.locationHash);\n\t\t\t}\n\t\t}\n\t}\n}\n\n})();\n",
"title": "$:/core/modules/startup/story.js",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/windows.js": {
"text": "/*\\\ntitle: $:/core/modules/startup/windows.js\ntype: application/javascript\nmodule-type: startup\n\nSetup root widget handlers for the messages concerned with opening external browser windows\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"windows\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Global to keep track of open windows (hashmap by title)\nvar windows = {};\n\nexports.startup = function() {\n\t// Handle open window message\n\t$tw.rootWidget.addEventListener(\"tm-open-window\",function(event) {\n\t\t// Get the parameters\n\t\tvar refreshHandler,\n\t\t\ttitle = event.param || event.tiddlerTitle,\n\t\t\tparamObject = event.paramObject || {},\n\t\t\ttemplate = paramObject.template || \"$:/core/templates/single.tiddler.window\",\n\t\t\twidth = paramObject.width || \"700\",\n\t\t\theight = paramObject.height || \"600\",\n\t\t\tvariables = $tw.utils.extend({},paramObject,{currentTiddler: title});\n\t\t// Open the window\n\t\tvar srcWindow = window.open(\"\",\"external-\" + title,\"scrollbars,width=\" + width + \",height=\" + height),\n\t\t\tsrcDocument = srcWindow.document;\n\t\twindows[title] = srcWindow;\n\t\t// Check for reopening the same window\n\t\tif(srcWindow.haveInitialisedWindow) {\n\t\t\treturn;\n\t\t}\n\t\t// Initialise the document\n\t\tsrcDocument.write(\"<html><head></head><body class='tc-body tc-single-tiddler-window'></body></html>\");\n\t\tsrcDocument.close();\n\t\tsrcDocument.title = title;\n\t\tsrcWindow.addEventListener(\"beforeunload\",function(event) {\n\t\t\tdelete windows[title];\n\t\t\t$tw.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t},false);\n\t\t// Set up the styles\n\t\tvar styleWidgetNode = $tw.wiki.makeTranscludeWidget(\"$:/core/ui/PageStylesheet\",{\n\t\t\t\tdocument: $tw.fakeDocument,\n\t\t\t\tvariables: variables,\n\t\t\t\timportPageMacros: true}),\n\t\t\tstyleContainer = $tw.fakeDocument.createElement(\"style\");\n\t\tstyleWidgetNode.render(styleContainer,null);\n\t\tvar styleElement = srcDocument.createElement(\"style\");\n\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\tsrcDocument.head.insertBefore(styleElement,srcDocument.head.firstChild);\n\t\t// Render the text of the tiddler\n\t\tvar parser = $tw.wiki.parseTiddler(template),\n\t\t\twidgetNode = $tw.wiki.makeWidget(parser,{document: srcDocument, parentWidget: $tw.rootWidget, variables: variables});\n\t\twidgetNode.render(srcDocument.body,srcDocument.body.firstChild);\n\t\t// Function to handle refreshes\n\t\trefreshHandler = function(changes) {\n\t\t\tif(styleWidgetNode.refresh(changes,styleContainer,null)) {\n\t\t\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\t\t}\n\t\t\twidgetNode.refresh(changes);\n\t\t};\n\t\t$tw.wiki.addEventListener(\"change\",refreshHandler);\n\t\tsrcWindow.haveInitialisedWindow = true;\n\t});\n\t// Close open windows when unloading main window\n\t$tw.addUnloadTask(function() {\n\t\t$tw.utils.each(windows,function(win) {\n\t\t\twin.close();\n\t\t});\n\t});\n\n};\n\n})();\n",
"title": "$:/core/modules/startup/windows.js",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/story.js": {
"text": "/*\\\ntitle: $:/core/modules/story.js\ntype: application/javascript\nmodule-type: global\n\nLightweight object for managing interactions with the story and history lists.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nConstruct Story object with options:\nwiki: reference to wiki object to use to resolve tiddler titles\nstoryTitle: title of story list tiddler\nhistoryTitle: title of history list tiddler\n*/\nfunction Story(options) {\n\toptions = options || {};\n\tthis.wiki = options.wiki || $tw.wiki;\n\tthis.storyTitle = options.storyTitle || \"$:/StoryList\";\n\tthis.historyTitle = options.historyTitle || \"$:/HistoryList\";\n};\n\nStory.prototype.navigateTiddler = function(navigateTo,navigateFromTitle,navigateFromClientRect) {\n\tthis.addToStory(navigateTo,navigateFromTitle);\n\tthis.addToHistory(navigateTo,navigateFromClientRect);\n};\n\nStory.prototype.getStoryList = function() {\n\treturn this.wiki.getTiddlerList(this.storyTitle) || [];\n};\n\nStory.prototype.addToStory = function(navigateTo,navigateFromTitle,options) {\n\toptions = options || {};\n\tvar storyList = this.getStoryList();\n\t// See if the tiddler is already there\n\tvar slot = storyList.indexOf(navigateTo);\n\t// Quit if it already exists in the story river\n\tif(slot >= 0) {\n\t\treturn;\n\t}\n\t// First we try to find the position of the story element we navigated from\n\tvar fromIndex = storyList.indexOf(navigateFromTitle);\n\tif(fromIndex >= 0) {\n\t\t// The tiddler is added from inside the river\n\t\t// Determine where to insert the tiddler; Fallback is \"below\"\n\t\tswitch(options.openLinkFromInsideRiver) {\n\t\t\tcase \"top\":\n\t\t\t\tslot = 0;\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\tslot = storyList.length;\n\t\t\t\tbreak;\n\t\t\tcase \"above\":\n\t\t\t\tslot = fromIndex;\n\t\t\t\tbreak;\n\t\t\tcase \"below\": // Intentional fall-through\n\t\t\tdefault:\n\t\t\t\tslot = fromIndex + 1;\n\t\t\t\tbreak;\n\t\t}\n\t} else {\n\t\t// The tiddler is opened from outside the river. Determine where to insert the tiddler; default is \"top\"\n\t\tif(options.openLinkFromOutsideRiver === \"bottom\") {\n\t\t\t// Insert at bottom\n\t\t\tslot = storyList.length;\n\t\t} else {\n\t\t\t// Insert at top\n\t\t\tslot = 0;\n\t\t}\n\t}\n\t// Add the tiddler\n\tstoryList.splice(slot,0,navigateTo);\n\t// Save the story\n\tthis.saveStoryList(storyList);\n};\n\nStory.prototype.saveStoryList = function(storyList) {\n\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\t{title: this.storyTitle},\n\t\tstoryTiddler,\n\t\t{list: storyList},\n\t\tthis.wiki.getModificationFields()\n\t));\n};\n\nStory.prototype.addToHistory = function(navigateTo,navigateFromClientRect) {\n\tvar titles = $tw.utils.isArray(navigateTo) ? navigateTo : [navigateTo];\n\t// Add a new record to the top of the history stack\n\tvar historyList = this.wiki.getTiddlerData(this.historyTitle,[]);\n\t$tw.utils.each(titles,function(title) {\n\t\thistoryList.push({title: title, fromPageRect: navigateFromClientRect});\n\t});\n\tthis.wiki.setTiddlerData(this.historyTitle,historyList,{\"current-tiddler\": titles[titles.length-1]});\n};\n\nStory.prototype.storyCloseTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCloseAllTiddlers = function() {\n// TBD\n};\n\nStory.prototype.storyCloseOtherTiddlers = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyEditTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyDeleteTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storySaveTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCancelTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyNewTiddler = function(targetTitle) {\n// TBD\n};\n\nexports.Story = Story;\n\n\n})();\n",
"title": "$:/core/modules/story.js",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/storyviews/classic.js": {
"text": "/*\\\ntitle: $:/core/modules/storyviews/classic.js\ntype: application/javascript\nmodule-type: storyview\n\nViews the story as a linear sequence\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ClassicStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nClassicStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Scroll the node into view\n\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\n};\n\nClassicStoryView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Get the current height of the tiddler\n\tvar computedStyle = window.getComputedStyle(targetElement),\n\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t// Reset the margin once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"}\n\t\t]);\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t// Transition to the final position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n};\n\nClassicStoryView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\twidget.removeChildDomNodes();\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Get the current height of the tiddler\n\tvar currWidth = targetElement.offsetWidth,\n\t\tcomputedStyle = window.getComputedStyle(targetElement),\n\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t// Remove the dom nodes of the widget at the end of the transition\n\tsetTimeout(removeElement,duration);\n\t// Animate the closure\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"translateX(0px)\"},\n\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t{transform: \"translateX(-\" + currWidth + \"px)\"},\n\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n};\n\nexports.classic = ClassicStoryView;\n\n})();",
"title": "$:/core/modules/storyviews/classic.js",
"type": "application/javascript",
"module-type": "storyview"
},
"$:/core/modules/storyviews/pop.js": {
"text": "/*\\\ntitle: $:/core/modules/storyviews/pop.js\ntype: application/javascript\nmodule-type: storyview\n\nAnimates list insertions and removals\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar PopStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nPopStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Scroll the node into view\n\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\n};\n\nPopStoryView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Reset once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{transform: \"none\"}\n\t\t]);\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(2)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t// Transition to the final position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n};\n\nPopStoryView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\tif(targetElement.parentNode) {\n\t\t\t\twidget.removeChildDomNodes();\n\t\t\t}\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Remove the element at the end of the transition\n\tsetTimeout(removeElement,duration);\n\t// Animate the closure\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(0.1)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n};\n\nexports.pop = PopStoryView;\n\n})();\n",
"title": "$:/core/modules/storyviews/pop.js",
"type": "application/javascript",
"module-type": "storyview"
},
"$:/core/modules/storyviews/zoomin.js": {
"text": "/*\\\ntitle: $:/core/modules/storyviews/zoomin.js\ntype: application/javascript\nmodule-type: storyview\n\nZooms between individual tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ZoominListView = function(listWidget) {\n\tvar self = this;\n\tthis.listWidget = listWidget;\n\t// Get the index of the tiddler that is at the top of the history\n\tvar history = this.listWidget.wiki.getTiddlerDataCached(this.listWidget.historyTitle,[]),\n\t\ttargetTiddler;\n\tif(history.length > 0) {\n\t\ttargetTiddler = history[history.length-1].title;\n\t}\n\t// Make all the tiddlers position absolute, and hide all but the top (or first) one\n\t$tw.utils.each(this.listWidget.children,function(itemWidget,index) {\n\t\tvar domNode = itemWidget.findFirstDomNode();\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(domNode instanceof Element)) {\n\t\t\treturn;\n\t\t}\n\t\tif((targetTiddler && targetTiddler !== itemWidget.parseTreeNode.itemTitle) || (!targetTiddler && index)) {\n\t\t\tdomNode.style.display = \"none\";\n\t\t} else {\n\t\t\tself.currentTiddlerDomNode = domNode;\n\t\t}\n\t\t$tw.utils.addClass(domNode,\"tc-storyview-zoomin-tiddler\");\n\t});\n};\n\nZoominListView.prototype.navigateTo = function(historyInfo) {\n\tvar duration = $tw.utils.getAnimationDuration(),\n\t\tlistElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the new tiddler be position absolute and visible so that we can measure it\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"0 0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t// Get the position of the source node, or use the centre of the window as the source position\n\tvar sourceBounds = historyInfo.fromPageRect || {\n\t\t\tleft: window.innerWidth/2 - 2,\n\t\t\ttop: window.innerHeight/2 - 2,\n\t\t\twidth: window.innerWidth/8,\n\t\t\theight: window.innerHeight/8\n\t\t};\n\t// Try to find the title node in the target tiddler\n\tvar titleDomNode = findTitleDomNode(listItemWidget) || listItemWidget.findFirstDomNode(),\n\t\tzoomBounds = titleDomNode.getBoundingClientRect();\n\t// Compute the transform for the target tiddler to make the title lie over the source rectange\n\tvar targetBounds = targetElement.getBoundingClientRect(),\n\t\tscale = sourceBounds.width / zoomBounds.width,\n\t\tx = sourceBounds.left - targetBounds.left - (zoomBounds.left - targetBounds.left) * scale,\n\t\ty = sourceBounds.top - targetBounds.top - (zoomBounds.top - targetBounds.top) * scale;\n\t// Transform the target tiddler to its starting position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(targetElement);\n\t// Apply the ending transitions with a timeout to ensure that the previously applied transformations are applied first\n\tvar self = this,\n\t\tprevCurrentTiddler = this.currentTiddlerDomNode;\n\tthis.currentTiddlerDomNode = targetElement;\n\t// Transform the target tiddler to its natural size\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{zIndex: \"500\"},\n\t]);\n\t// Transform the previous tiddler out of the way and then hide it\n\tif(prevCurrentTiddler && prevCurrentTiddler !== targetElement) {\n\t\tscale = zoomBounds.width / sourceBounds.width;\n\t\tx = zoomBounds.left - targetBounds.left - (sourceBounds.left - targetBounds.left) * scale;\n\t\ty = zoomBounds.top - targetBounds.top - (sourceBounds.top - targetBounds.top) * scale;\n\t\t$tw.utils.setStyle(prevCurrentTiddler,[\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transformOrigin: \"0 0\"},\n\t\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"},\n\t\t\t{zIndex: \"0\"}\n\t\t]);\n\t\t// Hide the tiddler when the transition has finished\n\t\tsetTimeout(function() {\n\t\t\tif(self.currentTiddlerDomNode !== prevCurrentTiddler) {\n\t\t\t\tprevCurrentTiddler.style.display = \"none\";\n\t\t\t}\n\t\t},duration);\n\t}\n\t// Scroll the target into view\n//\t$tw.pageScroller.scrollIntoView(targetElement);\n};\n\n/*\nFind the first child DOM node of a widget that has the class \"tc-title\"\n*/\nfunction findTitleDomNode(widget,targetClass) {\n\ttargetClass = targetClass || \"tc-title\";\n\tvar domNode = widget.findFirstDomNode();\n\tif(domNode && domNode.querySelector) {\n\t\treturn domNode.querySelector(\".\" + targetClass);\n\t}\n\treturn null;\n}\n\nZoominListView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the newly inserted node position absolute and hidden\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"none\"}\n\t]);\n};\n\nZoominListView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\twidget.removeChildDomNodes();\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Abandon if hidden\n\tif(targetElement.style.display != \"block\" ) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Set up the tiddler that is being closed\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\t// We'll move back to the previous or next element in the story\n\tvar toWidget = widget.previousSibling();\n\tif(!toWidget) {\n\t\ttoWidget = widget.nextSibling();\n\t}\n\tvar toWidgetDomNode = toWidget && toWidget.findFirstDomNode();\n\t// Set up the tiddler we're moving back in\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.addClass(toWidgetDomNode,\"tc-storyview-zoomin-tiddler\");\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{display: \"block\"},\n\t\t\t{transformOrigin: \"50% 50%\"},\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(10)\"},\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0\"},\n\t\t\t{zIndex: \"500\"}\n\t\t]);\n\t\tthis.currentTiddlerDomNode = toWidgetDomNode;\n\t}\n\t// Animate them both\n\t// Force layout\n\t$tw.utils.forceLayout(this.listWidget.parentDomNode);\n\t// First, the tiddler we're closing\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(0.1)\"},\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"0\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\tsetTimeout(removeElement,duration);\n\t// Now the tiddler we're going back to\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t\t{opacity: \"1\"}\n\t\t]);\n\t}\n\treturn true; // Indicate that we'll delete the DOM node\n};\n\nexports.zoomin = ZoominListView;\n\n})();\n",
"title": "$:/core/modules/storyviews/zoomin.js",
"type": "application/javascript",
"module-type": "storyview"
},
"$:/core/modules/syncer.js": {
"text": "/*\\\ntitle: $:/core/modules/syncer.js\ntype: application/javascript\nmodule-type: global\n\nThe syncer tracks changes to the store. If a syncadaptor is used then individual tiddlers are synchronised through it. If there is no syncadaptor then the entire wiki is saved via saver modules.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDefaults\n*/\nSyncer.prototype.titleIsLoggedIn = \"$:/status/IsLoggedIn\";\nSyncer.prototype.titleUserName = \"$:/status/UserName\";\nSyncer.prototype.titleSyncFilter = \"$:/config/SyncFilter\";\nSyncer.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\nSyncer.prototype.taskTimerInterval = 1 * 1000; // Interval for sync timer\nSyncer.prototype.throttleInterval = 1 * 1000; // Defer saving tiddlers if they've changed in the last 1s...\nSyncer.prototype.fallbackInterval = 10 * 1000; // Unless the task is older than 10s\nSyncer.prototype.pollTimerInterval = 60 * 1000; // Interval for polling for changes from the adaptor\n\n/*\nInstantiate the syncer with the following options:\nsyncadaptor: reference to syncadaptor to be used\nwiki: wiki to be synced\n*/\nfunction Syncer(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\tthis.syncadaptor = options.syncadaptor;\n\tthis.titleIsLoggedIn = options.titleIsLoggedIn || this.titleIsLoggedIn;\n\tthis.titleUserName = options.titleUserName || this.titleUserName;\n\tthis.titleSyncFilter = options.titleSyncFilter || this.titleSyncFilter;\n\tthis.titleSavedNotification = options.titleSavedNotification || this.titleSavedNotification;\n\tthis.taskTimerInterval = options.taskTimerInterval || this.taskTimerInterval;\n\tthis.throttleInterval = options.throttleInterval || this.throttleInterval;\n\tthis.fallbackInterval = options.fallbackInterval || this.fallbackInterval;\n\tthis.pollTimerInterval = options.pollTimerInterval || this.pollTimerInterval;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"syncer\" + ($tw.browser ? \"-browser\" : \"\") + ($tw.node ? \"-server\" : \"\") + (this.syncadaptor.name ? (\"-\" + this.syncadaptor.name) : \"\"));\n\t// Compile the dirty tiddler filter\n\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t// Record information for known tiddlers\n\tthis.readTiddlerInfo();\n\t// Tasks are {type: \"load\"/\"save\"/\"delete\", title:, queueTime:, lastModificationTime:}\n\tthis.taskQueue = {}; // Hashmap of tasks yet to be performed\n\tthis.taskInProgress = {}; // Hash of tasks in progress\n\tthis.taskTimerId = null; // Timer for task dispatch\n\tthis.pollTimerId = null; // Timer for polling server\n\t// Listen out for changes to tiddlers\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\tself.syncToServer(changes);\n\t});\n\t// Browser event handlers\n\tif($tw.browser) {\n\t\t// Set up our beforeunload handler\n\t\t$tw.addUnloadTask(function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t});\n\t\t// Listen out for login/logout/refresh events in the browser\n\t\t$tw.rootWidget.addEventListener(\"tm-login\",function() {\n\t\t\tself.handleLoginEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-logout\",function() {\n\t\t\tself.handleLogoutEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-server-refresh\",function() {\n\t\t\tself.handleRefreshEvent();\n\t\t});\n\t}\n\t// Listen out for lazyLoad events\n\tthis.wiki.addEventListener(\"lazyLoad\",function(title) {\n\t\tself.handleLazyLoadEvent(title);\n\t});\n\t// Get the login status\n\tthis.getStatus(function(err,isLoggedIn) {\n\t\t// Do a sync from the server\n\t\tself.syncFromServer();\n\t});\n}\n\n/*\nRead (or re-read) the latest tiddler info from the store\n*/\nSyncer.prototype.readTiddlerInfo = function() {\n\t// Hashmap by title of {revision:,changeCount:,adaptorInfo:}\n\tthis.tiddlerInfo = {};\n\t// Record information for known tiddlers\n\tvar self = this,\n\t\ttiddlers = this.filterFn.call(this.wiki);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\tself.tiddlerInfo[title] = {\n\t\t\trevision: tiddler.fields.revision,\n\t\t\tadaptorInfo: self.syncadaptor && self.syncadaptor.getTiddlerInfo(tiddler),\n\t\t\tchangeCount: self.wiki.getChangeCount(title),\n\t\t\thasBeenLazyLoaded: false\n\t\t};\n\t});\n};\n\n/*\nCreate an tiddlerInfo structure if it doesn't already exist\n*/\nSyncer.prototype.createTiddlerInfo = function(title) {\n\tif(!$tw.utils.hop(this.tiddlerInfo,title)) {\n\t\tthis.tiddlerInfo[title] = {\n\t\t\trevision: null,\n\t\t\tadaptorInfo: {},\n\t\t\tchangeCount: -1,\n\t\t\thasBeenLazyLoaded: false\n\t\t};\n\t}\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSyncer.prototype.isDirty = function() {\n\treturn (this.numTasksInQueue() > 0) || (this.numTasksInProgress() > 0);\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSyncer.prototype.updateDirtyStatus = function() {\n\tif($tw.browser) {\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",this.isDirty());\n\t}\n};\n\n/*\nSave an incoming tiddler in the store, and updates the associated tiddlerInfo\n*/\nSyncer.prototype.storeTiddler = function(tiddlerFields,hasBeenLazyLoaded) {\n\t// Save the tiddler\n\tvar tiddler = new $tw.Tiddler(this.wiki.getTiddler(tiddlerFields.title),tiddlerFields);\n\tthis.wiki.addTiddler(tiddler);\n\t// Save the tiddler revision and changeCount details\n\tthis.tiddlerInfo[tiddlerFields.title] = {\n\t\trevision: tiddlerFields.revision,\n\t\tadaptorInfo: this.syncadaptor.getTiddlerInfo(tiddler),\n\t\tchangeCount: this.wiki.getChangeCount(tiddlerFields.title),\n\t\thasBeenLazyLoaded: hasBeenLazyLoaded !== undefined ? hasBeenLazyLoaded : true\n\t};\n};\n\nSyncer.prototype.getStatus = function(callback) {\n\tvar self = this;\n\t// Check if the adaptor supports getStatus()\n\tif(this.syncadaptor && this.syncadaptor.getStatus) {\n\t\t// Mark us as not logged in\n\t\tthis.wiki.addTiddler({title: this.titleIsLoggedIn,text: \"no\"});\n\t\t// Get login status\n\t\tthis.syncadaptor.getStatus(function(err,isLoggedIn,username) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Set the various status tiddlers\n\t\t\tself.wiki.addTiddler({title: self.titleIsLoggedIn,text: isLoggedIn ? \"yes\" : \"no\"});\n\t\t\tif(isLoggedIn) {\n\t\t\t\tself.wiki.addTiddler({title: self.titleUserName,text: username || \"\"});\n\t\t\t} else {\n\t\t\t\tself.wiki.deleteTiddler(self.titleUserName);\n\t\t\t}\n\t\t\t// Invoke the callback\n\t\t\tif(callback) {\n\t\t\t\tcallback(err,isLoggedIn,username);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tcallback(null,true,\"UNAUTHENTICATED\");\n\t}\n};\n\n/*\nSynchronise from the server by reading the skinny tiddler list and queuing up loads for any tiddlers that we don't already have up to date\n*/\nSyncer.prototype.syncFromServer = function() {\n\tif(this.syncadaptor && this.syncadaptor.getSkinnyTiddlers) {\n\t\tthis.logger.log(\"Retrieving skinny tiddler list\");\n\t\tvar self = this;\n\t\tif(this.pollTimerId) {\n\t\t\tclearTimeout(this.pollTimerId);\n\t\t\tthis.pollTimerId = null;\n\t\t}\n\t\tthis.syncadaptor.getSkinnyTiddlers(function(err,tiddlers) {\n\t\t\t// Trigger the next sync\n\t\t\tself.pollTimerId = setTimeout(function() {\n\t\t\t\tself.pollTimerId = null;\n\t\t\t\tself.syncFromServer.call(self);\n\t\t\t},self.pollTimerInterval);\n\t\t\t// Check for errors\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert($tw.language.getString(\"Error/RetrievingSkinny\") + \":\",err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Process each incoming tiddler\n\t\t\tfor(var t=0; t<tiddlers.length; t++) {\n\t\t\t\t// Get the incoming tiddler fields, and the existing tiddler\n\t\t\t\tvar tiddlerFields = tiddlers[t],\n\t\t\t\t\tincomingRevision = tiddlerFields.revision + \"\",\n\t\t\t\t\ttiddler = self.wiki.getTiddler(tiddlerFields.title),\n\t\t\t\t\ttiddlerInfo = self.tiddlerInfo[tiddlerFields.title],\n\t\t\t\t\tcurrRevision = tiddlerInfo ? tiddlerInfo.revision : null;\n\t\t\t\t// Ignore the incoming tiddler if it's the same as the revision we've already got\n\t\t\t\tif(currRevision !== incomingRevision) {\n\t\t\t\t\t// Do a full load if we've already got a fat version of the tiddler\n\t\t\t\t\tif(tiddler && tiddler.fields.text !== undefined) {\n\t\t\t\t\t\t// Do a full load of this tiddler\n\t\t\t\t\t\tself.enqueueSyncTask({\n\t\t\t\t\t\t\ttype: \"load\",\n\t\t\t\t\t\t\ttitle: tiddlerFields.title\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Load the skinny version of the tiddler\n\t\t\t\t\t\tself.storeTiddler(tiddlerFields,false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nSynchronise a set of changes to the server\n*/\nSyncer.prototype.syncToServer = function(changes) {\n\tvar self = this,\n\t\tnow = Date.now(),\n\t\tfilteredChanges = this.filterFn.call(this.wiki,function(callback) {\n\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\tcallback(tiddler,title);\n\t\t\t});\n\t\t});\n\t$tw.utils.each(changes,function(change,title,object) {\n\t\t// Process the change if it is a deletion of a tiddler we're already syncing, or is on the filtered change list\n\t\tif((change.deleted && $tw.utils.hop(self.tiddlerInfo,title)) || filteredChanges.indexOf(title) !== -1) {\n\t\t\t// Queue a task to sync this tiddler\n\t\t\tself.enqueueSyncTask({\n\t\t\t\ttype: change.deleted ? \"delete\" : \"save\",\n\t\t\t\ttitle: title\n\t\t\t});\n\t\t}\n\t});\n};\n\n/*\nLazily load a skinny tiddler if we can\n*/\nSyncer.prototype.handleLazyLoadEvent = function(title) {\n\t// Don't lazy load the same tiddler twice\n\tvar info = this.tiddlerInfo[title];\n\tif(!info || !info.hasBeenLazyLoaded) {\n\t\tthis.createTiddlerInfo(title);\n\t\tthis.tiddlerInfo[title].hasBeenLazyLoaded = true;\n\t\t// Queue up a sync task to load this tiddler\n\t\tthis.enqueueSyncTask({\n\t\t\ttype: \"load\",\n\t\t\ttitle: title\n\t\t});\t\t\n\t}\n};\n\n/*\nDispay a password prompt and allow the user to login\n*/\nSyncer.prototype.handleLoginEvent = function() {\n\tvar self = this;\n\tthis.getStatus(function(err,isLoggedIn,username) {\n\t\tif(!isLoggedIn) {\n\t\t\t$tw.passwordPrompt.createPrompt({\n\t\t\t\tserviceName: $tw.language.getString(\"LoginToTiddlySpace\"),\n\t\t\t\tcallback: function(data) {\n\t\t\t\t\tself.login(data.username,data.password,function(err,isLoggedIn) {\n\t\t\t\t\t\tself.syncFromServer();\n\t\t\t\t\t});\n\t\t\t\t\treturn true; // Get rid of the password prompt\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n};\n\n/*\nAttempt to login to TiddlyWeb.\n\tusername: username\n\tpassword: password\n\tcallback: invoked with arguments (err,isLoggedIn)\n*/\nSyncer.prototype.login = function(username,password,callback) {\n\tthis.logger.log(\"Attempting to login as\",username);\n\tvar self = this;\n\tif(this.syncadaptor.login) {\n\t\tthis.syncadaptor.login(username,password,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.getStatus(function(err,isLoggedIn,username) {\n\t\t\t\tif(callback) {\n\t\t\t\t\tcallback(null,isLoggedIn);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t} else {\n\t\tcallback(null,true);\n\t}\n};\n\n/*\nAttempt to log out of TiddlyWeb\n*/\nSyncer.prototype.handleLogoutEvent = function() {\n\tthis.logger.log(\"Attempting to logout\");\n\tvar self = this;\n\tif(this.syncadaptor.logout) {\n\t\tthis.syncadaptor.logout(function(err) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t} else {\n\t\t\t\tself.getStatus();\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nImmediately refresh from the server\n*/\nSyncer.prototype.handleRefreshEvent = function() {\n\tthis.syncFromServer();\n};\n\n/*\nQueue up a sync task. If there is already a pending task for the tiddler, just update the last modification time\n*/\nSyncer.prototype.enqueueSyncTask = function(task) {\n\tvar self = this,\n\t\tnow = Date.now();\n\t// Set the timestamps on this task\n\ttask.queueTime = now;\n\ttask.lastModificationTime = now;\n\t// Fill in some tiddlerInfo if the tiddler is one we haven't seen before\n\tthis.createTiddlerInfo(task.title);\n\t// Bail if this is a save and the tiddler is already at the changeCount that the server has\n\tif(task.type === \"save\" && this.wiki.getChangeCount(task.title) <= this.tiddlerInfo[task.title].changeCount) {\n\t\treturn;\n\t}\n\t// Check if this tiddler is already in the queue\n\tif($tw.utils.hop(this.taskQueue,task.title)) {\n\t\t// this.logger.log(\"Re-queueing up sync task with type:\",task.type,\"title:\",task.title);\n\t\tvar existingTask = this.taskQueue[task.title];\n\t\t// If so, just update the last modification time\n\t\texistingTask.lastModificationTime = task.lastModificationTime;\n\t\t// If the new task is a save then we upgrade the existing task to a save. Thus a pending load is turned into a save if the tiddler changes locally in the meantime. But a pending save is not modified to become a load\n\t\tif(task.type === \"save\" || task.type === \"delete\") {\n\t\t\texistingTask.type = task.type;\n\t\t}\n\t} else {\n\t\t// this.logger.log(\"Queuing up sync task with type:\",task.type,\"title:\",task.title);\n\t\t// If it is not in the queue, insert it\n\t\tthis.taskQueue[task.title] = task;\n\t\tthis.updateDirtyStatus();\n\t}\n\t// Process the queue\n\t$tw.utils.nextTick(function() {self.processTaskQueue.call(self);});\n};\n\n/*\nReturn the number of tasks in progress\n*/\nSyncer.prototype.numTasksInProgress = function() {\n\treturn $tw.utils.count(this.taskInProgress);\n};\n\n/*\nReturn the number of tasks in the queue\n*/\nSyncer.prototype.numTasksInQueue = function() {\n\treturn $tw.utils.count(this.taskQueue);\n};\n\n/*\nTrigger a timeout if one isn't already outstanding\n*/\nSyncer.prototype.triggerTimeout = function() {\n\tvar self = this;\n\tif(!this.taskTimerId) {\n\t\tthis.taskTimerId = setTimeout(function() {\n\t\t\tself.taskTimerId = null;\n\t\t\tself.processTaskQueue.call(self);\n\t\t},self.taskTimerInterval);\n\t}\n};\n\n/*\nProcess the task queue, performing the next task if appropriate\n*/\nSyncer.prototype.processTaskQueue = function() {\n\tvar self = this;\n\t// Only process a task if the sync adaptor is fully initialised and we're not already performing a task. If we are already performing a task then we'll dispatch the next one when it completes\n\tif((!this.syncadaptor.isReady || this.syncadaptor.isReady()) && this.numTasksInProgress() === 0) {\n\t\t// Choose the next task to perform\n\t\tvar task = this.chooseNextTask();\n\t\t// Perform the task if we had one\n\t\tif(task) {\n\t\t\t// Remove the task from the queue and add it to the in progress list\n\t\t\tdelete this.taskQueue[task.title];\n\t\t\tthis.taskInProgress[task.title] = task;\n\t\t\tthis.updateDirtyStatus();\n\t\t\t// Dispatch the task\n\t\t\tthis.dispatchTask(task,function(err) {\n\t\t\t\tif(err) {\n\t\t\t\t\tself.logger.alert(\"Sync error while processing '\" + task.title + \"':\\n\" + err);\n\t\t\t\t}\n\t\t\t\t// Mark that this task is no longer in progress\n\t\t\t\tdelete self.taskInProgress[task.title];\n\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t// Process the next task\n\t\t\t\tself.processTaskQueue.call(self);\n\t\t\t});\n\t\t} else {\n\t\t\t// Make sure we've set a time if there wasn't a task to perform, but we've still got tasks in the queue\n\t\t\tif(this.numTasksInQueue() > 0) {\n\t\t\t\tthis.triggerTimeout();\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nChoose the next applicable task\n*/\nSyncer.prototype.chooseNextTask = function() {\n\tvar self = this,\n\t\tcandidateTask = null,\n\t\tnow = Date.now();\n\t// Select the best candidate task\n\t$tw.utils.each(this.taskQueue,function(task,title) {\n\t\t// Exclude the task if there's one of the same name in progress\n\t\tif($tw.utils.hop(self.taskInProgress,title)) {\n\t\t\treturn;\n\t\t}\n\t\t// Exclude the task if it is a save and the tiddler has been modified recently, but not hit the fallback time\n\t\tif(task.type === \"save\" && (now - task.lastModificationTime) < self.throttleInterval &&\n\t\t\t(now - task.queueTime) < self.fallbackInterval) {\n\t\t\treturn;\n\t\t}\n\t\t// Exclude the task if it is newer than the current best candidate\n\t\tif(candidateTask && candidateTask.queueTime < task.queueTime) {\n\t\t\treturn;\n\t\t}\n\t\t// Now this is our best candidate\n\t\tcandidateTask = task;\n\t});\n\treturn candidateTask;\n};\n\n/*\nDispatch a task and invoke the callback\n*/\nSyncer.prototype.dispatchTask = function(task,callback) {\n\tvar self = this;\n\tif(task.type === \"save\") {\n\t\tvar changeCount = this.wiki.getChangeCount(task.title),\n\t\t\ttiddler = this.wiki.getTiddler(task.title);\n\t\tthis.logger.log(\"Dispatching 'save' task:\",task.title);\n\t\tif(tiddler) {\n\t\t\tthis.syncadaptor.saveTiddler(tiddler,function(err,adaptorInfo,revision) {\n\t\t\t\tif(err) {\n\t\t\t\t\treturn callback(err);\n\t\t\t\t}\n\t\t\t\t// Adjust the info stored about this tiddler\n\t\t\t\tself.tiddlerInfo[task.title] = {\n\t\t\t\t\tchangeCount: changeCount,\n\t\t\t\t\tadaptorInfo: adaptorInfo,\n\t\t\t\t\trevision: revision\n\t\t\t\t};\n\t\t\t\t// Invoke the callback\n\t\t\t\tcallback(null);\n\t\t\t},{\n\t\t\t\ttiddlerInfo: self.tiddlerInfo[task.title]\n\t\t\t});\n\t\t} else {\n\t\t\tthis.logger.log(\" Not Dispatching 'save' task:\",task.title,\"tiddler does not exist\");\n\t\t\treturn callback(null);\n\t\t}\n\t} else if(task.type === \"load\") {\n\t\t// Load the tiddler\n\t\tthis.logger.log(\"Dispatching 'load' task:\",task.title);\n\t\tthis.syncadaptor.loadTiddler(task.title,function(err,tiddlerFields) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\t// Store the tiddler\n\t\t\tif(tiddlerFields) {\n\t\t\t\tself.storeTiddler(tiddlerFields,true);\n\t\t\t}\n\t\t\t// Invoke the callback\n\t\t\tcallback(null);\n\t\t});\n\t} else if(task.type === \"delete\") {\n\t\t// Delete the tiddler\n\t\tthis.logger.log(\"Dispatching 'delete' task:\",task.title);\n\t\tthis.syncadaptor.deleteTiddler(task.title,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tdelete self.tiddlerInfo[task.title];\n\t\t\t// Invoke the callback\n\t\t\tcallback(null);\n\t\t},{\n\t\t\ttiddlerInfo: self.tiddlerInfo[task.title]\n\t\t});\n\t}\n};\n\nexports.Syncer = Syncer;\n\n})();\n",
"title": "$:/core/modules/syncer.js",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/tiddler.js": {
"text": "/*\\\ntitle: $:/core/modules/tiddler.js\ntype: application/javascript\nmodule-type: tiddlermethod\n\nExtension methods for the $tw.Tiddler object (constructor and methods required at boot time are in boot/boot.js)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.hasTag = function(tag) {\n\treturn this.fields.tags && this.fields.tags.indexOf(tag) !== -1;\n};\n\nexports.isPlugin = function() {\n\treturn this.fields.type === \"application/json\" && this.hasField(\"plugin-type\");\n};\n\nexports.isDraft = function() {\n\treturn this.hasField(\"draft.of\");\n};\n\nexports.getFieldString = function(field) {\n\tvar value = this.fields[field];\n\t// Check for a missing field\n\tif(value === undefined || value === null) {\n\t\treturn \"\";\n\t}\n\t// Parse the field with the associated module (if any)\n\tvar fieldModule = $tw.Tiddler.fieldModules[field];\n\tif(fieldModule && fieldModule.stringify) {\n\t\treturn fieldModule.stringify.call(this,value);\n\t} else {\n\t\treturn value.toString();\n\t}\n};\n\n/*\nGet all the fields as a hashmap of strings. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStrings = function(options) {\n\toptions = options || {};\n\tvar exclude = options.exclude || [];\n\tvar fields = {};\n\tfor(var field in this.fields) {\n\t\tif($tw.utils.hop(this.fields,field)) {\n\t\t\tif(exclude.indexOf(field) === -1) {\n\t\t\t\tfields[field] = this.getFieldString(field);\n\t\t\t}\n\t\t}\n\t}\n\treturn fields;\n};\n\n/*\nGet all the fields as a name:value block. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStringBlock = function(options) {\n\toptions = options || {};\n\tvar exclude = options.exclude || [];\n\tvar fields = [];\n\tfor(var field in this.fields) {\n\t\tif($tw.utils.hop(this.fields,field)) {\n\t\t\tif(exclude.indexOf(field) === -1) {\n\t\t\t\tfields.push(field + \": \" + this.getFieldString(field));\n\t\t\t}\n\t\t}\n\t}\n\treturn fields.join(\"\\n\");\n};\n\n/*\nCompare two tiddlers for equality\ntiddler: the tiddler to compare\nexcludeFields: array of field names to exclude from the comparison\n*/\nexports.isEqual = function(tiddler,excludeFields) {\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\treturn false;\n\t}\n\texcludeFields = excludeFields || [];\n\tvar self = this,\n\t\tdifferences = []; // Fields that have differences\n\t// Add to the differences array\n\tfunction addDifference(fieldName) {\n\t\t// Check for this field being excluded\n\t\tif(excludeFields.indexOf(fieldName) === -1) {\n\t\t\t// Save the field as a difference\n\t\t\t$tw.utils.pushTop(differences,fieldName);\n\t\t}\n\t}\n\t// Returns true if the two values of this field are equal\n\tfunction isFieldValueEqual(fieldName) {\n\t\tvar valueA = self.fields[fieldName],\n\t\t\tvalueB = tiddler.fields[fieldName];\n\t\t// Check for identical string values\n\t\tif(typeof(valueA) === \"string\" && typeof(valueB) === \"string\" && valueA === valueB) {\n\t\t\treturn true;\n\t\t}\n\t\t// Check for identical array values\n\t\tif($tw.utils.isArray(valueA) && $tw.utils.isArray(valueB) && $tw.utils.isArrayEqual(valueA,valueB)) {\n\t\t\treturn true;\n\t\t}\n\t\t// Otherwise the fields must be different\n\t\treturn false;\n\t}\n\t// Compare our fields\n\tfor(var fieldName in this.fields) {\n\t\tif(!isFieldValueEqual(fieldName)) {\n\t\t\taddDifference(fieldName);\n\t\t}\n\t}\n\t// There's a difference for every field in the other tiddler that we don't have\n\tfor(fieldName in tiddler.fields) {\n\t\tif(!(fieldName in this.fields)) {\n\t\t\taddDifference(fieldName);\n\t\t}\n\t}\n\t// Return whether there were any differences\n\treturn differences.length === 0;\n};\n\nexports.getFieldDay = function(field) {\n\tif(this.cache && this.cache.day && $tw.utils.hop(this.cache.day,field) ) {\n\t\treturn this.cache.day[field];\n\t}\n\tvar day = \"\";\n\tif(this.fields[field]) {\n\t\tday = (new Date($tw.utils.parseDate(this.fields[field]))).setHours(0,0,0,0);\n\t}\n\tthis.cache.day = this.cache.day || {};\n\tthis.cache.day[field] = day;\n\treturn day;\n};\n\n})();\n",
"title": "$:/core/modules/tiddler.js",
"type": "application/javascript",
"module-type": "tiddlermethod"
},
"$:/core/modules/upgraders/plugins.js": {
"text": "/*\\\ntitle: $:/core/modules/upgraders/plugins.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that checks that plugins are newer than any already installed version\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar BLOCKED_PLUGINS = {\n\t\"$:/themes/tiddlywiki/stickytitles\": {\n\t\tversions: [\"*\"]\n\t},\n\t\"$:/plugins/tiddlywiki/fullscreen\": {\n\t\tversions: [\"*\"]\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {},\n\t\tupgradeLibrary,\n\t\tgetLibraryTiddler = function(title) {\n\t\t\tif(!upgradeLibrary) {\n\t\t\t\tupgradeLibrary = wiki.getTiddlerData(UPGRADE_LIBRARY_TITLE,{});\n\t\t\t\tupgradeLibrary.tiddlers = upgradeLibrary.tiddlers || {};\n\t\t\t}\n\t\t\treturn upgradeLibrary.tiddlers[title];\n\t\t};\n\n\t// Go through all the incoming tiddlers\n\t$tw.utils.each(titles,function(title) {\n\t\tvar incomingTiddler = tiddlers[title];\n\t\t// Check if we're dealing with a plugin\n\t\tif(incomingTiddler && incomingTiddler[\"plugin-type\"] && incomingTiddler.version) {\n\t\t\t// Upgrade the incoming plugin if it is in the upgrade library\n\t\t\tvar libraryTiddler = getLibraryTiddler(title);\n\t\t\tif(libraryTiddler && libraryTiddler[\"plugin-type\"] && libraryTiddler.version) {\n\t\t\t\ttiddlers[title] = libraryTiddler;\n\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Upgraded\",{variables: {incoming: incomingTiddler.version, upgraded: libraryTiddler.version}});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Suppress the incoming plugin if it is older than the currently installed one\n\t\t\tvar existingTiddler = wiki.getTiddler(title);\n\t\t\tif(existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t\t\t// Reject the incoming plugin by blanking all its fields\n\t\t\t\tif($tw.utils.checkVersions(existingTiddler.fields.version,incomingTiddler.version)) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Version\",{variables: {incoming: incomingTiddler.version, existing: existingTiddler.fields.version}});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif(incomingTiddler && incomingTiddler[\"plugin-type\"]) {\n\t\t\t// Check whether the plugin is on the blocked list\n\t\t\tvar blockInfo = BLOCKED_PLUGINS[title];\n\t\t\tif(blockInfo) {\n\t\t\t\tif(blockInfo.versions.indexOf(\"*\") !== -1 || (incomingTiddler.version && blockInfo.versions.indexOf(incomingTiddler.version) !== -1)) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Incompatible\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
"title": "$:/core/modules/upgraders/plugins.js",
"type": "application/javascript",
"module-type": "upgrader"
},
"$:/core/modules/upgraders/system.js": {
"text": "/*\\\ntitle: $:/core/modules/upgraders/system.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that suppresses certain system tiddlers that shouldn't be imported\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DONT_IMPORT_LIST = [\"$:/StoryList\",\"$:/HistoryList\"],\n\tDONT_IMPORT_PREFIX_LIST = [\"$:/temp/\",\"$:/state/\"];\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {};\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tif(DONT_IMPORT_LIST.indexOf(title) !== -1) {\n\t\t\ttiddlers[title] = Object.create(null);\n\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/System/Suppressed\");\n\t\t} else {\n\t\t\tfor(var t=0; t<DONT_IMPORT_PREFIX_LIST.length; t++) {\n\t\t\t\tvar prefix = DONT_IMPORT_PREFIX_LIST[t];\n\t\t\t\tif(title.substr(0,prefix.length) === prefix) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/State/Suppressed\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
"title": "$:/core/modules/upgraders/system.js",
"type": "application/javascript",
"module-type": "upgrader"
},
"$:/core/modules/upgraders/themetweaks.js": {
"text": "/*\\\ntitle: $:/core/modules/upgraders/themetweaks.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that handles the change in theme tweak storage introduced in 5.0.14-beta.\n\nPreviously, theme tweaks were stored in two data tiddlers:\n\n* $:/themes/tiddlywiki/vanilla/metrics\n* $:/themes/tiddlywiki/vanilla/settings\n\nNow, each tweak is stored in its own separate tiddler.\n\nThis upgrader copies any values from the old format to the new. The old data tiddlers are not deleted in case they have been used to store additional indexes.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar MAPPINGS = {\n\t\"$:/themes/tiddlywiki/vanilla/metrics\": {\n\t\t\"fontsize\": \"$:/themes/tiddlywiki/vanilla/metrics/fontsize\",\n\t\t\"lineheight\": \"$:/themes/tiddlywiki/vanilla/metrics/lineheight\",\n\t\t\"storyleft\": \"$:/themes/tiddlywiki/vanilla/metrics/storyleft\",\n\t\t\"storytop\": \"$:/themes/tiddlywiki/vanilla/metrics/storytop\",\n\t\t\"storyright\": \"$:/themes/tiddlywiki/vanilla/metrics/storyright\",\n\t\t\"storywidth\": \"$:/themes/tiddlywiki/vanilla/metrics/storywidth\",\n\t\t\"tiddlerwidth\": \"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"\n\t},\n\t\"$:/themes/tiddlywiki/vanilla/settings\": {\n\t\t\"fontfamily\": \"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {};\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tvar mapping = MAPPINGS[title];\n\t\tif(mapping) {\n\t\t\tvar tiddler = new $tw.Tiddler(tiddlers[title]),\n\t\t\t\ttiddlerData = wiki.getTiddlerDataCached(tiddler,{});\n\t\t\tfor(var index in mapping) {\n\t\t\t\tvar mappedTitle = mapping[index];\n\t\t\t\tif(!tiddlers[mappedTitle] || tiddlers[mappedTitle].title !== mappedTitle) {\n\t\t\t\t\ttiddlers[mappedTitle] = {\n\t\t\t\t\t\ttitle: mappedTitle,\n\t\t\t\t\t\ttext: tiddlerData[index]\n\t\t\t\t\t};\n\t\t\t\t\tmessages[mappedTitle] = $tw.language.getString(\"Import/Upgrader/ThemeTweaks/Created\",{variables: {\n\t\t\t\t\t\tfrom: title + \"##\" + index\n\t\t\t\t\t}});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
"title": "$:/core/modules/upgraders/themetweaks.js",
"type": "application/javascript",
"module-type": "upgrader"
},
"$:/core/modules/utils/crypto.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/crypto.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions related to crypto.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for an encrypted store area in the text of a TiddlyWiki file\n*/\nexports.extractEncryptedStoreArea = function(text) {\n\tvar encryptedStoreAreaStartMarker = \"<pre id=\\\"encryptedStoreArea\\\" type=\\\"text/plain\\\" style=\\\"display:none;\\\">\",\n\t\tencryptedStoreAreaStart = text.indexOf(encryptedStoreAreaStartMarker);\n\tif(encryptedStoreAreaStart !== -1) {\n\t\tvar encryptedStoreAreaEnd = text.indexOf(\"</pre>\",encryptedStoreAreaStart);\n\t\tif(encryptedStoreAreaEnd !== -1) {\n\t\t\treturn $tw.utils.htmlDecode(text.substring(encryptedStoreAreaStart + encryptedStoreAreaStartMarker.length,encryptedStoreAreaEnd-1));\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If the password is not provided then the password in the password store will be used\n*/\nexports.decryptStoreArea = function(encryptedStoreArea,password) {\n\tvar decryptedText = $tw.crypto.decrypt(encryptedStoreArea,password);\n\tif(decryptedText) {\n\t\tvar json = JSON.parse(decryptedText),\n\t\t\ttiddlers = [];\n\t\tfor(var title in json) {\n\t\t\tif(title !== \"$:/isEncrypted\") {\n\t\t\t\ttiddlers.push(json[title]);\n\t\t\t}\n\t\t}\n\t\treturn tiddlers;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If that fails, the user is prompted for a password.\nencryptedStoreArea: text of the TiddlyWiki encrypted store area\ncallback: function(tiddlers) called with the array of decrypted tiddlers\n\nThe following configuration settings are supported:\n\n$tw.config.usePasswordVault: causes any password entered by the user to also be put into the system password vault\n*/\nexports.decryptStoreAreaInteractive = function(encryptedStoreArea,callback,options) {\n\t// Try to decrypt with the current password\n\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea);\n\tif(tiddlers) {\n\t\tcallback(tiddlers);\n\t} else {\n\t\t// Prompt for a new password and keep trying\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: \"Enter a password to decrypt the imported TiddlyWiki\",\n\t\t\tnoUserName: true,\n\t\t\tcanCancel: true,\n\t\t\tsubmitText: \"Decrypt\",\n\t\t\tcallback: function(data) {\n\t\t\t\t// Exit if the user cancelled\n\t\t\t\tif(!data) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// Attempt to decrypt the tiddlers\n\t\t\t\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea,data.password);\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tif($tw.config.usePasswordVault) {\n\t\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t\t}\n\t\t\t\t\tcallback(tiddlers);\n\t\t\t\t\t// Exit and remove the password prompt\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\t\t\t\t\t// We didn't decrypt everything, so continue to prompt for password\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/utils/crypto.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/animations/slide.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/dom/animations/slide.js\ntype: application/javascript\nmodule-type: animation\n\nA simple slide animation that varies the height of the element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction slideOpen(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration();\n\t// Get the current height of the domNode\n\tvar computedStyle = window.getComputedStyle(domNode),\n\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\tcurrPaddingBottom = parseInt(computedStyle.paddingBottom,10),\n\t\tcurrPaddingTop = parseInt(computedStyle.paddingTop,10),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Reset the margin once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"none\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t{marginTop: currMarginTop + \"px\"},\n\t\t{paddingBottom: currPaddingBottom + \"px\"},\n\t\t{paddingTop: currPaddingTop + \"px\"},\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n}\n\nfunction slideClosed(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration(),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Clear the properties we've set when the animation is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n}\n\nexports.slide = {\n\topen: slideOpen,\n\tclose: slideClosed\n};\n\n})();\n",
"title": "$:/core/modules/utils/dom/animations/slide.js",
"type": "application/javascript",
"module-type": "animation"
},
"$:/core/modules/utils/dom/animator.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/dom/animator.js\ntype: application/javascript\nmodule-type: utils\n\nOrchestrates animations and transitions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Animator() {\n\t// Get the registered animation modules\n\tthis.animations = {};\n\t$tw.modules.applyMethods(\"animation\",this.animations);\n}\n\nAnimator.prototype.perform = function(type,domNode,options) {\n\toptions = options || {};\n\t// Find an animation that can handle this type\n\tvar chosenAnimation;\n\t$tw.utils.each(this.animations,function(animation,name) {\n\t\tif($tw.utils.hop(animation,type)) {\n\t\t\tchosenAnimation = animation[type];\n\t\t}\n\t});\n\tif(!chosenAnimation) {\n\t\tchosenAnimation = function(domNode,options) {\n\t\t\tif(options.callback) {\n\t\t\t\toptions.callback();\n\t\t\t}\n\t\t};\n\t}\n\t// Call the animation\n\tchosenAnimation(domNode,options);\n};\n\nexports.Animator = Animator;\n\n})();\n",
"title": "$:/core/modules/utils/dom/animator.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/browser.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/dom/browser.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser feature detection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet style properties of an element\n\telement: dom node\n\tstyles: ordered array of {name: value} pairs\n*/\nexports.setStyle = function(element,styles) {\n\tif(element.nodeType === 1) { // Element.ELEMENT_NODE\n\t\tfor(var t=0; t<styles.length; t++) {\n\t\t\tfor(var styleName in styles[t]) {\n\t\t\t\telement.style[$tw.utils.convertStyleNameToPropertyName(styleName)] = styles[t][styleName];\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nConverts a standard CSS property name into the local browser-specific equivalent. For example:\n\t\"background-color\" --> \"backgroundColor\"\n\t\"transition\" --> \"webkitTransition\"\n*/\n\nvar styleNameCache = {}; // We'll cache the style name conversions\n\nexports.convertStyleNameToPropertyName = function(styleName) {\n\t// Return from the cache if we can\n\tif(styleNameCache[styleName]) {\n\t\treturn styleNameCache[styleName];\n\t}\n\t// Convert it by first removing any hyphens\n\tvar propertyName = $tw.utils.unHyphenateCss(styleName);\n\t// Then check if it needs a prefix\n\tif($tw.browser && document.body.style[propertyName] === undefined) {\n\t\tvar prefixes = [\"O\",\"MS\",\"Moz\",\"webkit\"];\n\t\tfor(var t=0; t<prefixes.length; t++) {\n\t\t\tvar prefixedName = prefixes[t] + propertyName.substr(0,1).toUpperCase() + propertyName.substr(1);\n\t\t\tif(document.body.style[prefixedName] !== undefined) {\n\t\t\t\tpropertyName = prefixedName;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t// Put it in the cache too\n\tstyleNameCache[styleName] = propertyName;\n\treturn propertyName;\n};\n\n/*\nConverts a JS format CSS property name back into the dashed form used in CSS declarations. For example:\n\t\"backgroundColor\" --> \"background-color\"\n\t\"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.convertPropertyNameToStyleName = function(propertyName) {\n\t// Rehyphenate the name\n\tvar styleName = $tw.utils.hyphenateCss(propertyName);\n\t// If there's a webkit prefix, add a dash (other browsers have uppercase prefixes, and so get the dash automatically)\n\tif(styleName.indexOf(\"webkit\") === 0) {\n\t\tstyleName = \"-\" + styleName;\n\t} else if(styleName.indexOf(\"-m-s\") === 0) {\n\t\tstyleName = \"-ms\" + styleName.substr(4);\n\t}\n\treturn styleName;\n};\n\n/*\nRound trip a stylename to a property name and back again. For example:\n\t\"transform\" --> \"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.roundTripPropertyName = function(propertyName) {\n\treturn $tw.utils.convertPropertyNameToStyleName($tw.utils.convertStyleNameToPropertyName(propertyName));\n};\n\n/*\nConverts a standard event name into the local browser specific equivalent. For example:\n\t\"animationEnd\" --> \"webkitAnimationEnd\"\n*/\n\nvar eventNameCache = {}; // We'll cache the conversions\n\nvar eventNameMappings = {\n\t\"transitionEnd\": {\n\t\tcorrespondingCssProperty: \"transition\",\n\t\tmappings: {\n\t\t\ttransition: \"transitionend\",\n\t\t\tOTransition: \"oTransitionEnd\",\n\t\t\tMSTransition: \"msTransitionEnd\",\n\t\t\tMozTransition: \"transitionend\",\n\t\t\twebkitTransition: \"webkitTransitionEnd\"\n\t\t}\n\t},\n\t\"animationEnd\": {\n\t\tcorrespondingCssProperty: \"animation\",\n\t\tmappings: {\n\t\t\tanimation: \"animationend\",\n\t\t\tOAnimation: \"oAnimationEnd\",\n\t\t\tMSAnimation: \"msAnimationEnd\",\n\t\t\tMozAnimation: \"animationend\",\n\t\t\twebkitAnimation: \"webkitAnimationEnd\"\n\t\t}\n\t}\n};\n\nexports.convertEventName = function(eventName) {\n\tif(eventNameCache[eventName]) {\n\t\treturn eventNameCache[eventName];\n\t}\n\tvar newEventName = eventName,\n\t\tmappings = eventNameMappings[eventName];\n\tif(mappings) {\n\t\tvar convertedProperty = $tw.utils.convertStyleNameToPropertyName(mappings.correspondingCssProperty);\n\t\tif(mappings.mappings[convertedProperty]) {\n\t\t\tnewEventName = mappings.mappings[convertedProperty];\n\t\t}\n\t}\n\t// Put it in the cache too\n\teventNameCache[eventName] = newEventName;\n\treturn newEventName;\n};\n\n/*\nReturn the names of the fullscreen APIs\n*/\nexports.getFullScreenApis = function() {\n\tvar d = document,\n\t\tdb = d.body,\n\t\tresult = {\n\t\t\"_requestFullscreen\": db.webkitRequestFullscreen !== undefined ? \"webkitRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.mozRequestFullScreen !== undefined ? \"mozRequestFullScreen\" :\n\t\t\t\t\t\t\tdb.msRequestFullscreen !== undefined ? \"msRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.requestFullscreen !== undefined ? \"requestFullscreen\" : \"\",\n\t\t\"_exitFullscreen\": d.webkitExitFullscreen !== undefined ? \"webkitExitFullscreen\" :\n\t\t\t\t\t\t\td.mozCancelFullScreen !== undefined ? \"mozCancelFullScreen\" :\n\t\t\t\t\t\t\td.msExitFullscreen !== undefined ? \"msExitFullscreen\" :\n\t\t\t\t\t\t\td.exitFullscreen !== undefined ? \"exitFullscreen\" : \"\",\n\t\t\"_fullscreenElement\": d.webkitFullscreenElement !== undefined ? \"webkitFullscreenElement\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozFullScreenElement\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"msFullscreenElement\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenElement\" : \"\",\n\t\t\"_fullscreenChange\": d.webkitFullscreenElement !== undefined ? \"webkitfullscreenchange\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozfullscreenchange\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"MSFullscreenChange\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenchange\" : \"\"\n\t};\n\tif(!result._requestFullscreen || !result._exitFullscreen || !result._fullscreenElement || !result._fullscreenChange) {\n\t\treturn null;\n\t} else {\n\t\treturn result;\n\t}\n};\n\n})();\n",
"title": "$:/core/modules/utils/dom/browser.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/csscolorparser.js": {
"text": "// (c) Dean McNamee <dean@gmail.com>, 2012.\n//\n// https://github.com/deanm/css-color-parser-js\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n\n// http://www.w3.org/TR/css3-color/\nvar kCSSColorTable = {\n \"transparent\": [0,0,0,0], \"aliceblue\": [240,248,255,1],\n \"antiquewhite\": [250,235,215,1], \"aqua\": [0,255,255,1],\n \"aquamarine\": [127,255,212,1], \"azure\": [240,255,255,1],\n \"beige\": [245,245,220,1], \"bisque\": [255,228,196,1],\n \"black\": [0,0,0,1], \"blanchedalmond\": [255,235,205,1],\n \"blue\": [0,0,255,1], \"blueviolet\": [138,43,226,1],\n \"brown\": [165,42,42,1], \"burlywood\": [222,184,135,1],\n \"cadetblue\": [95,158,160,1], \"chartreuse\": [127,255,0,1],\n \"chocolate\": [210,105,30,1], \"coral\": [255,127,80,1],\n \"cornflowerblue\": [100,149,237,1], \"cornsilk\": [255,248,220,1],\n \"crimson\": [220,20,60,1], \"cyan\": [0,255,255,1],\n \"darkblue\": [0,0,139,1], \"darkcyan\": [0,139,139,1],\n \"darkgoldenrod\": [184,134,11,1], \"darkgray\": [169,169,169,1],\n \"darkgreen\": [0,100,0,1], \"darkgrey\": [169,169,169,1],\n \"darkkhaki\": [189,183,107,1], \"darkmagenta\": [139,0,139,1],\n \"darkolivegreen\": [85,107,47,1], \"darkorange\": [255,140,0,1],\n \"darkorchid\": [153,50,204,1], \"darkred\": [139,0,0,1],\n \"darksalmon\": [233,150,122,1], \"darkseagreen\": [143,188,143,1],\n \"darkslateblue\": [72,61,139,1], \"darkslategray\": [47,79,79,1],\n \"darkslategrey\": [47,79,79,1], \"darkturquoise\": [0,206,209,1],\n \"darkviolet\": [148,0,211,1], \"deeppink\": [255,20,147,1],\n \"deepskyblue\": [0,191,255,1], \"dimgray\": [105,105,105,1],\n \"dimgrey\": [105,105,105,1], \"dodgerblue\": [30,144,255,1],\n \"firebrick\": [178,34,34,1], \"floralwhite\": [255,250,240,1],\n \"forestgreen\": [34,139,34,1], \"fuchsia\": [255,0,255,1],\n \"gainsboro\": [220,220,220,1], \"ghostwhite\": [248,248,255,1],\n \"gold\": [255,215,0,1], \"goldenrod\": [218,165,32,1],\n \"gray\": [128,128,128,1], \"green\": [0,128,0,1],\n \"greenyellow\": [173,255,47,1], \"grey\": [128,128,128,1],\n \"honeydew\": [240,255,240,1], \"hotpink\": [255,105,180,1],\n \"indianred\": [205,92,92,1], \"indigo\": [75,0,130,1],\n \"ivory\": [255,255,240,1], \"khaki\": [240,230,140,1],\n \"lavender\": [230,230,250,1], \"lavenderblush\": [255,240,245,1],\n \"lawngreen\": [124,252,0,1], \"lemonchiffon\": [255,250,205,1],\n \"lightblue\": [173,216,230,1], \"lightcoral\": [240,128,128,1],\n \"lightcyan\": [224,255,255,1], \"lightgoldenrodyellow\": [250,250,210,1],\n \"lightgray\": [211,211,211,1], \"lightgreen\": [144,238,144,1],\n \"lightgrey\": [211,211,211,1], \"lightpink\": [255,182,193,1],\n \"lightsalmon\": [255,160,122,1], \"lightseagreen\": [32,178,170,1],\n \"lightskyblue\": [135,206,250,1], \"lightslategray\": [119,136,153,1],\n \"lightslategrey\": [119,136,153,1], \"lightsteelblue\": [176,196,222,1],\n \"lightyellow\": [255,255,224,1], \"lime\": [0,255,0,1],\n \"limegreen\": [50,205,50,1], \"linen\": [250,240,230,1],\n \"magenta\": [255,0,255,1], \"maroon\": [128,0,0,1],\n \"mediumaquamarine\": [102,205,170,1], \"mediumblue\": [0,0,205,1],\n \"mediumorchid\": [186,85,211,1], \"mediumpurple\": [147,112,219,1],\n \"mediumseagreen\": [60,179,113,1], \"mediumslateblue\": [123,104,238,1],\n \"mediumspringgreen\": [0,250,154,1], \"mediumturquoise\": [72,209,204,1],\n \"mediumvioletred\": [199,21,133,1], \"midnightblue\": [25,25,112,1],\n \"mintcream\": [245,255,250,1], \"mistyrose\": [255,228,225,1],\n \"moccasin\": [255,228,181,1], \"navajowhite\": [255,222,173,1],\n \"navy\": [0,0,128,1], \"oldlace\": [253,245,230,1],\n \"olive\": [128,128,0,1], \"olivedrab\": [107,142,35,1],\n \"orange\": [255,165,0,1], \"orangered\": [255,69,0,1],\n \"orchid\": [218,112,214,1], \"palegoldenrod\": [238,232,170,1],\n \"palegreen\": [152,251,152,1], \"paleturquoise\": [175,238,238,1],\n \"palevioletred\": [219,112,147,1], \"papayawhip\": [255,239,213,1],\n \"peachpuff\": [255,218,185,1], \"peru\": [205,133,63,1],\n \"pink\": [255,192,203,1], \"plum\": [221,160,221,1],\n \"powderblue\": [176,224,230,1], \"purple\": [128,0,128,1],\n \"red\": [255,0,0,1], \"rosybrown\": [188,143,143,1],\n \"royalblue\": [65,105,225,1], \"saddlebrown\": [139,69,19,1],\n \"salmon\": [250,128,114,1], \"sandybrown\": [244,164,96,1],\n \"seagreen\": [46,139,87,1], \"seashell\": [255,245,238,1],\n \"sienna\": [160,82,45,1], \"silver\": [192,192,192,1],\n \"skyblue\": [135,206,235,1], \"slateblue\": [106,90,205,1],\n \"slategray\": [112,128,144,1], \"slategrey\": [112,128,144,1],\n \"snow\": [255,250,250,1], \"springgreen\": [0,255,127,1],\n \"steelblue\": [70,130,180,1], \"tan\": [210,180,140,1],\n \"teal\": [0,128,128,1], \"thistle\": [216,191,216,1],\n \"tomato\": [255,99,71,1], \"turquoise\": [64,224,208,1],\n \"violet\": [238,130,238,1], \"wheat\": [245,222,179,1],\n \"white\": [255,255,255,1], \"whitesmoke\": [245,245,245,1],\n \"yellow\": [255,255,0,1], \"yellowgreen\": [154,205,50,1]}\n\nfunction clamp_css_byte(i) { // Clamp to integer 0 .. 255.\n i = Math.round(i); // Seems to be what Chrome does (vs truncation).\n return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clamp_css_float(f) { // Clamp to float 0.0 .. 1.0.\n return f < 0 ? 0 : f > 1 ? 1 : f;\n}\n\nfunction parse_css_int(str) { // int or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_byte(parseFloat(str) / 100 * 255);\n return clamp_css_byte(parseInt(str));\n}\n\nfunction parse_css_float(str) { // float or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_float(parseFloat(str) / 100);\n return clamp_css_float(parseFloat(str));\n}\n\nfunction css_hue_to_rgb(m1, m2, h) {\n if (h < 0) h += 1;\n else if (h > 1) h -= 1;\n\n if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;\n if (h * 2 < 1) return m2;\n if (h * 3 < 2) return m1 + (m2 - m1) * (2/3 - h) * 6;\n return m1;\n}\n\nfunction parseCSSColor(css_str) {\n // Remove all whitespace, not compliant, but should just be more accepting.\n var str = css_str.replace(/ /g, '').toLowerCase();\n\n // Color keywords (and transparent) lookup.\n if (str in kCSSColorTable) return kCSSColorTable[str].slice(); // dup.\n\n // #abc and #abc123 syntax.\n if (str[0] === '#') {\n if (str.length === 4) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xfff)) return null; // Covers NaN.\n return [((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8),\n (iv & 0xf0) | ((iv & 0xf0) >> 4),\n (iv & 0xf) | ((iv & 0xf) << 4),\n 1];\n } else if (str.length === 7) {\n var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 0xffffff)) return null; // Covers NaN.\n return [(iv & 0xff0000) >> 16,\n (iv & 0xff00) >> 8,\n iv & 0xff,\n 1];\n }\n\n return null;\n }\n\n var op = str.indexOf('('), ep = str.indexOf(')');\n if (op !== -1 && ep + 1 === str.length) {\n var fname = str.substr(0, op);\n var params = str.substr(op+1, ep-(op+1)).split(',');\n var alpha = 1; // To allow case fallthrough.\n switch (fname) {\n case 'rgba':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'rgb':\n if (params.length !== 3) return null;\n return [parse_css_int(params[0]),\n parse_css_int(params[1]),\n parse_css_int(params[2]),\n alpha];\n case 'hsla':\n if (params.length !== 4) return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'hsl':\n if (params.length !== 3) return null;\n var h = (((parseFloat(params[0]) % 360) + 360) % 360) / 360; // 0 .. 1\n // NOTE(deanm): According to the CSS spec s/l should only be\n // percentages, but we don't bother and let float or percentage.\n var s = parse_css_float(params[1]);\n var l = parse_css_float(params[2]);\n var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var m1 = l * 2 - m2;\n return [clamp_css_byte(css_hue_to_rgb(m1, m2, h+1/3) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h-1/3) * 255),\n alpha];\n default:\n return null;\n }\n }\n\n return null;\n}\n\ntry { exports.parseCSSColor = parseCSSColor } catch(e) { }\n",
"title": "$:/core/modules/utils/dom/csscolorparser.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/dom.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static DOM-related utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDetermines whether element 'a' contains element 'b'\nCode thanks to John Resig, http://ejohn.org/blog/comparing-document-position/\n*/\nexports.domContains = function(a,b) {\n\treturn a.contains ?\n\t\ta !== b && a.contains(b) :\n\t\t!!(a.compareDocumentPosition(b) & 16);\n};\n\nexports.removeChildren = function(node) {\n\twhile(node.hasChildNodes()) {\n\t\tnode.removeChild(node.firstChild);\n\t}\n};\n\nexports.hasClass = function(el,className) {\n\treturn el && el.className && el.className.toString().split(\" \").indexOf(className) !== -1;\n};\n\nexports.addClass = function(el,className) {\n\tvar c = el.className.split(\" \");\n\tif(c.indexOf(className) === -1) {\n\t\tc.push(className);\n\t}\n\tel.className = c.join(\" \");\n};\n\nexports.removeClass = function(el,className) {\n\tvar c = el.className.split(\" \"),\n\t\tp = c.indexOf(className);\n\tif(p !== -1) {\n\t\tc.splice(p,1);\n\t\tel.className = c.join(\" \");\n\t}\n};\n\nexports.toggleClass = function(el,className,status) {\n\tif(status === undefined) {\n\t\tstatus = !exports.hasClass(el,className);\n\t}\n\tif(status) {\n\t\texports.addClass(el,className);\n\t} else {\n\t\texports.removeClass(el,className);\n\t}\n};\n\n/*\nGet the first parent element that has scrollbars or use the body as fallback.\n*/\nexports.getScrollContainer = function(el) {\n\tvar doc = el.ownerDocument;\n\twhile(el.parentNode) {\t\n\t\tel = el.parentNode;\n\t\tif(el.scrollTop) {\n\t\t\treturn el;\n\t\t}\n\t}\n\treturn doc.body;\n};\n\n/*\nGet the scroll position of the viewport\nReturns:\n\t{\n\t\tx: horizontal scroll position in pixels,\n\t\ty: vertical scroll position in pixels\n\t}\n*/\nexports.getScrollPosition = function() {\n\tif(\"scrollX\" in window) {\n\t\treturn {x: window.scrollX, y: window.scrollY};\n\t} else {\n\t\treturn {x: document.documentElement.scrollLeft, y: document.documentElement.scrollTop};\n\t}\n};\n\n/*\nAdjust the height of a textarea to fit its content, preserving scroll position, and return the height\n*/\nexports.resizeTextAreaToFit = function(domNode,minHeight) {\n\t// Get the scroll container and register the current scroll position\n\tvar container = $tw.utils.getScrollContainer(domNode),\n\t\tscrollTop = container.scrollTop;\n // Measure the specified minimum height\n\tdomNode.style.height = minHeight;\n\tvar measuredHeight = domNode.offsetHeight;\n\t// Set its height to auto so that it snaps to the correct height\n\tdomNode.style.height = \"auto\";\n\t// Calculate the revised height\n\tvar newHeight = Math.max(domNode.scrollHeight + domNode.offsetHeight - domNode.clientHeight,measuredHeight);\n\t// Only try to change the height if it has changed\n\tif(newHeight !== domNode.offsetHeight) {\n\t\tdomNode.style.height = newHeight + \"px\";\n\t\t// Make sure that the dimensions of the textarea are recalculated\n\t\t$tw.utils.forceLayout(domNode);\n\t\t// Set the container to the position we registered at the beginning\n\t\tcontainer.scrollTop = scrollTop;\n\t}\n\treturn newHeight;\n};\n\n/*\nGets the bounding rectangle of an element in absolute page coordinates\n*/\nexports.getBoundingPageRect = function(element) {\n\tvar scrollPos = $tw.utils.getScrollPosition(),\n\t\tclientRect = element.getBoundingClientRect();\n\treturn {\n\t\tleft: clientRect.left + scrollPos.x,\n\t\twidth: clientRect.width,\n\t\tright: clientRect.right + scrollPos.x,\n\t\ttop: clientRect.top + scrollPos.y,\n\t\theight: clientRect.height,\n\t\tbottom: clientRect.bottom + scrollPos.y\n\t};\n};\n\n/*\nSaves a named password in the browser\n*/\nexports.savePassword = function(name,password) {\n\ttry {\n\t\tif(window.localStorage) {\n\t\t\tlocalStorage.setItem(\"tw5-password-\" + name,password);\n\t\t}\n\t} catch(e) {\n\t}\n};\n\n/*\nRetrieve a named password from the browser\n*/\nexports.getPassword = function(name) {\n\ttry {\n\t\treturn window.localStorage ? localStorage.getItem(\"tw5-password-\" + name) : \"\";\n\t} catch(e) {\n\t\treturn \"\";\n\t}\n};\n\n/*\nForce layout of a dom node and its descendents\n*/\nexports.forceLayout = function(element) {\n\tvar dummy = element.offsetWidth;\n};\n\n/*\nPulse an element for debugging purposes\n*/\nexports.pulseElement = function(element) {\n\t// Event handler to remove the class at the end\n\telement.addEventListener($tw.browser.animationEnd,function handler(event) {\n\t\telement.removeEventListener($tw.browser.animationEnd,handler,false);\n\t\t$tw.utils.removeClass(element,\"pulse\");\n\t},false);\n\t// Apply the pulse class\n\t$tw.utils.removeClass(element,\"pulse\");\n\t$tw.utils.forceLayout(element);\n\t$tw.utils.addClass(element,\"pulse\");\n};\n\n/*\nAttach specified event handlers to a DOM node\ndomNode: where to attach the event handlers\nevents: array of event handlers to be added (see below)\nEach entry in the events array is an object with these properties:\nhandlerFunction: optional event handler function\nhandlerObject: optional event handler object\nhandlerMethod: optionally specifies object handler method name (defaults to `handleEvent`)\n*/\nexports.addEventListeners = function(domNode,events) {\n\t$tw.utils.each(events,function(eventInfo) {\n\t\tvar handler;\n\t\tif(eventInfo.handlerFunction) {\n\t\t\thandler = eventInfo.handlerFunction;\n\t\t} else if(eventInfo.handlerObject) {\n\t\t\tif(eventInfo.handlerMethod) {\n\t\t\t\thandler = function(event) {\n\t\t\t\t\teventInfo.handlerObject[eventInfo.handlerMethod].call(eventInfo.handlerObject,event);\n\t\t\t\t};\t\n\t\t\t} else {\n\t\t\t\thandler = eventInfo.handlerObject;\n\t\t\t}\n\t\t}\n\t\tdomNode.addEventListener(eventInfo.name,handler,false);\n\t});\n};\n\n/*\nGet the computed styles applied to an element as an array of strings of individual CSS properties\n*/\nexports.getComputedStyles = function(domNode) {\n\tvar textAreaStyles = window.getComputedStyle(domNode,null),\n\t\tstyleDefs = [],\n\t\tname;\n\tfor(var t=0; t<textAreaStyles.length; t++) {\n\t\tname = textAreaStyles[t];\n\t\tstyleDefs.push(name + \": \" + textAreaStyles.getPropertyValue(name) + \";\");\n\t}\n\treturn styleDefs;\n};\n\n/*\nApply a set of styles passed as an array of strings of individual CSS properties\n*/\nexports.setStyles = function(domNode,styleDefs) {\n\tdomNode.style.cssText = styleDefs.join(\"\");\n};\n\n/*\nCopy the computed styles from a source element to a destination element\n*/\nexports.copyStyles = function(srcDomNode,dstDomNode) {\n\t$tw.utils.setStyles(dstDomNode,$tw.utils.getComputedStyles(srcDomNode));\n};\n\n})();\n",
"title": "$:/core/modules/utils/dom.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/dragndrop.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/dom/dragndrop.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser data transfer utilities, used with the clipboard and drag and drop\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOptions:\n\ndomNode: dom node to make draggable\ndragImageType: \"pill\" or \"dom\"\ndragTiddlerFn: optional function to retrieve the title of tiddler to drag\ndragFilterFn: optional function to retreive the filter defining a list of tiddlers to drag\nwidget: widget to use as the contect for the filter\n*/\nexports.makeDraggable = function(options) {\n\tvar dragImageType = options.dragImageType || \"dom\",\n\t\tdragImage,\n\t\tdomNode = options.domNode;\n\t// Make the dom node draggable (not necessary for anchor tags)\n\tif((domNode.tagName || \"\").toLowerCase() !== \"a\") {\n\t\tdomNode.setAttribute(\"draggable\",\"true\");\t\t\n\t}\n\t// Add event handlers\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"dragstart\", handlerFunction: function(event) {\n\t\t\t// Collect the tiddlers being dragged\n\t\t\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\n\t\t\t\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\n\t\t\t\ttitles = dragTiddler ? [dragTiddler] : [];\n\t\t\tif(dragFilter) {\n\t\t\t\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\n\t\t\t}\n\t\t\tvar titleString = $tw.utils.stringifyList(titles);\n\t\t\t// Check that we've something to drag\n\t\t\tif(titles.length > 0 && event.target === domNode) {\n\t\t\t\t// Mark the drag in progress\n\t\t\t\t$tw.dragInProgress = domNode;\n\t\t\t\t// Set the dragging class on the element being dragged\n\t\t\t\t$tw.utils.addClass(event.target,\"tc-dragging\");\n\t\t\t\t// Create the drag image elements\n\t\t\t\tdragImage = options.widget.document.createElement(\"div\");\n\t\t\t\tdragImage.className = \"tc-tiddler-dragger\";\n\t\t\t\tvar inner = options.widget.document.createElement(\"div\");\n\t\t\t\tinner.className = \"tc-tiddler-dragger-inner\";\n\t\t\t\tinner.appendChild(options.widget.document.createTextNode(\n\t\t\t\t\ttitles.length === 1 ? \n\t\t\t\t\t\ttitles[0] :\n\t\t\t\t\t\ttitles.length + \" tiddlers\"\n\t\t\t\t));\n\t\t\t\tdragImage.appendChild(inner);\n\t\t\t\toptions.widget.document.body.appendChild(dragImage);\n\t\t\t\t// Set the data transfer properties\n\t\t\t\tvar dataTransfer = event.dataTransfer;\n\t\t\t\t// Set up the image\n\t\t\t\tdataTransfer.effectAllowed = \"all\";\n\t\t\t\tif(dataTransfer.setDragImage) {\n\t\t\t\t\tif(dragImageType === \"pill\") {\n\t\t\t\t\t\tdataTransfer.setDragImage(dragImage.firstChild,-16,-16);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar r = domNode.getBoundingClientRect();\n\t\t\t\t\t\tdataTransfer.setDragImage(domNode,event.clientX-r.left,event.clientY-r.top);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Set up the data transfer\n\t\t\t\tif(dataTransfer.clearData) {\n\t\t\t\t\tdataTransfer.clearData();\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\tvar jsonData = [];\n\t\t\t\tif(titles.length > 1) {\n\t\t\t\t\ttitles.forEach(function(title) {\n\t\t\t\t\t\tjsonData.push(options.widget.wiki.getTiddlerAsJson(title));\n\t\t\t\t\t});\n\t\t\t\t\tjsonData = \"[\" + jsonData.join(\",\") + \"]\";\n\t\t\t\t} else {\n\t\t\t\t\tjsonData = options.widget.wiki.getTiddlerAsJson(titles[0]);\n\t\t\t\t}\n\t\t\t\t// IE doesn't like these content types\n\t\t\t\tif(!$tw.browser.isIE) {\n\t\t\t\t\tdataTransfer.setData(\"text/vnd.tiddler\",jsonData);\n\t\t\t\t\tdataTransfer.setData(\"text/plain\",titleString);\n\t\t\t\t\tdataTransfer.setData(\"text/x-moz-url\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\t}\n\t\t\t\tdataTransfer.setData(\"URL\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\tdataTransfer.setData(\"Text\",titleString);\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t\treturn false;\n\t\t}},\n\t\t{name: \"dragend\", handlerFunction: function(event) {\n\t\t\tif(event.target === domNode) {\n\t\t\t\t$tw.dragInProgress = null;\n\t\t\t\t// Remove the dragging class on the element being dragged\n\t\t\t\t$tw.utils.removeClass(event.target,\"tc-dragging\");\n\t\t\t\t// Delete the drag image element\n\t\t\t\tif(dragImage) {\n\t\t\t\t\tdragImage.parentNode.removeChild(dragImage);\n\t\t\t\t\tdragImage = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}}\n\t]);\n};\n\nexports.importDataTransfer = function(dataTransfer,fallbackTitle,callback) {\n\t// Try each provided data type in turn\n\tfor(var t=0; t<importDataTypes.length; t++) {\n\t\tif(!$tw.browser.isIE || importDataTypes[t].IECompatible) {\n\t\t\t// Get the data\n\t\t\tvar dataType = importDataTypes[t];\n\t\t\t\tvar data = dataTransfer.getData(dataType.type);\n\t\t\t// Import the tiddlers in the data\n\t\t\tif(data !== \"\" && data !== null) {\n\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\tconsole.log(\"Importing data type '\" + dataType.type + \"', data: '\" + data + \"'\")\n\t\t\t\t}\n\t\t\t\tvar tiddlerFields = dataType.toTiddlerFieldsArray(data,fallbackTitle);\n\t\t\t\tcallback(tiddlerFields);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar importDataTypes = [\n\t{type: \"text/vnd.tiddler\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn parseJSONTiddlers(data,fallbackTitle);\n\t}},\n\t{type: \"URL\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/x-moz-url\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/html\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/plain\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"Text\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/uri-list\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}}\n];\n\nfunction parseJSONTiddlers(json,fallbackTitle) {\n\tvar data = JSON.parse(json);\n\tif(!$tw.utils.isArray(data)) {\n\t\tdata = [data];\n\t}\n\tdata.forEach(function(fields) {\n\t\tfields.title = fields.title || fallbackTitle;\n\t});\n\treturn data;\n};\n\n})();\n",
"title": "$:/core/modules/utils/dom/dragndrop.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/http.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/dom/http.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser HTTP support\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nA quick and dirty HTTP function; to be refactored later. Options are:\n\turl: URL to retrieve\n\ttype: GET, PUT, POST etc\n\tcallback: function invoked with (err,data)\n\treturnProp: string name of the property to return as first argument of callback\n*/\nexports.httpRequest = function(options) {\n\tvar type = options.type || \"GET\",\n\t\theaders = options.headers || {accept: \"application/json\"},\n\t\treturnProp = options.returnProp || \"responseText\",\n\t\trequest = new XMLHttpRequest(),\n\t\tdata = \"\",\n\t\tf,results;\n\t// Massage the data hashmap into a string\n\tif(options.data) {\n\t\tif(typeof options.data === \"string\") { // Already a string\n\t\t\tdata = options.data;\n\t\t} else { // A hashmap of strings\n\t\t\tresults = [];\n\t\t\t$tw.utils.each(options.data,function(dataItem,dataItemTitle) {\n\t\t\t\tresults.push(dataItemTitle + \"=\" + encodeURIComponent(dataItem));\n\t\t\t});\n\t\t\tdata = results.join(\"&\");\n\t\t}\n\t}\n\t// Set up the state change handler\n\trequest.onreadystatechange = function() {\n\t\tif(this.readyState === 4) {\n\t\t\tif(this.status === 200 || this.status === 201 || this.status === 204) {\n\t\t\t\t// Success!\n\t\t\t\toptions.callback(null,this[returnProp],this);\n\t\t\t\treturn;\n\t\t\t}\n\t\t// Something went wrong\n\t\toptions.callback($tw.language.getString(\"Error/XMLHttpRequest\") + \": \" + this.status);\n\t\t}\n\t};\n\t// Make the request\n\trequest.open(type,options.url,true);\n\tif(headers) {\n\t\t$tw.utils.each(headers,function(header,headerTitle,object) {\n\t\t\trequest.setRequestHeader(headerTitle,header);\n\t\t});\n\t}\n\tif(data && !$tw.utils.hop(headers,\"Content-type\")) {\n\t\trequest.setRequestHeader(\"Content-type\",\"application/x-www-form-urlencoded; charset=UTF-8\");\n\t}\n\ttry {\n\t\trequest.send(data);\n\t} catch(e) {\n\t\toptions.callback(e);\n\t}\n\treturn request;\n};\n\n})();\n",
"title": "$:/core/modules/utils/dom/http.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/keyboard.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/dom/keyboard.js\ntype: application/javascript\nmodule-type: utils\n\nKeyboard utilities; now deprecated. Instead, use $tw.keyboardManager\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n[\"parseKeyDescriptor\",\"checkKeyDescriptor\"].forEach(function(method) {\n\texports[method] = function() {\n\t\tif($tw.keyboardManager) {\n\t\t\treturn $tw.keyboardManager[method].apply($tw.keyboardManager,Array.prototype.slice.call(arguments,0));\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t};\n});\n\n})();\n",
"title": "$:/core/modules/utils/dom/keyboard.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/modal.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/dom/modal.js\ntype: application/javascript\nmodule-type: utils\n\nModal message mechanism\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar Modal = function(wiki) {\n\tthis.wiki = wiki;\n\tthis.modalCount = 0;\n};\n\n/*\nDisplay a modal dialogue\n\ttitle: Title of tiddler to display\n\toptions: see below\nOptions include:\n\tdownloadLink: Text of a big download link to include\n*/\nModal.prototype.display = function(title,options) {\n\toptions = options || {};\n\tvar self = this,\n\t\trefreshHandler,\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\ttiddler = this.wiki.getTiddler(title);\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Create the variables\n\tvar variables = $tw.utils.extend({currentTiddler: title},options.variables);\n\t// Create the wrapper divs\n\tvar wrapper = document.createElement(\"div\"),\n\t\tmodalBackdrop = document.createElement(\"div\"),\n\t\tmodalWrapper = document.createElement(\"div\"),\n\t\tmodalHeader = document.createElement(\"div\"),\n\t\theaderTitle = document.createElement(\"h3\"),\n\t\tmodalBody = document.createElement(\"div\"),\n\t\tmodalLink = document.createElement(\"a\"),\n\t\tmodalFooter = document.createElement(\"div\"),\n\t\tmodalFooterHelp = document.createElement(\"span\"),\n\t\tmodalFooterButtons = document.createElement(\"span\");\n\t// Up the modal count and adjust the body class\n\tthis.modalCount++;\n\tthis.adjustPageClass();\n\t// Add classes\n\t$tw.utils.addClass(wrapper,\"tc-modal-wrapper\");\n\t$tw.utils.addClass(modalBackdrop,\"tc-modal-backdrop\");\n\t$tw.utils.addClass(modalWrapper,\"tc-modal\");\n\t$tw.utils.addClass(modalHeader,\"tc-modal-header\");\n\t$tw.utils.addClass(modalBody,\"tc-modal-body\");\n\t$tw.utils.addClass(modalFooter,\"tc-modal-footer\");\n\t// Join them together\n\twrapper.appendChild(modalBackdrop);\n\twrapper.appendChild(modalWrapper);\n\tmodalHeader.appendChild(headerTitle);\n\tmodalWrapper.appendChild(modalHeader);\n\tmodalWrapper.appendChild(modalBody);\n\tmodalFooter.appendChild(modalFooterHelp);\n\tmodalFooter.appendChild(modalFooterButtons);\n\tmodalWrapper.appendChild(modalFooter);\n\t// Render the title of the message\n\tvar headerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"subtitle\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\tattributes: {\n\t\t\t\ttext: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title\n\t\t}}}],\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: document,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\theaderWidgetNode.render(headerTitle,null);\n\t// Render the body of the message\n\tvar bodyWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: document,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\tbodyWidgetNode.render(modalBody,null);\n\t// Setup the link if present\n\tif(options.downloadLink) {\n\t\tmodalLink.href = options.downloadLink;\n\t\tmodalLink.appendChild(document.createTextNode(\"Right-click to save changes\"));\n\t\tmodalBody.appendChild(modalLink);\n\t}\n\t// Render the footer of the message\n\tif(tiddler && tiddler.fields && tiddler.fields.help) {\n\t\tvar link = document.createElement(\"a\");\n\t\tlink.setAttribute(\"href\",tiddler.fields.help);\n\t\tlink.setAttribute(\"target\",\"_blank\");\n\t\tlink.setAttribute(\"rel\",\"noopener noreferrer\");\n\t\tlink.appendChild(document.createTextNode(\"Help\"));\n\t\tmodalFooterHelp.appendChild(link);\n\t\tmodalFooterHelp.style.float = \"left\";\n\t}\n\tvar footerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"footer\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"button\",\n\t\t\tattributes: {\n\t\t\t\tmessage: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: \"tm-close-tiddler\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\tattributes: {\n\t\t\t\t\ttext: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tvalue: $tw.language.getString(\"Buttons/Close/Caption\")\n\t\t\t}}}\n\t\t]}],\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: document,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\tfooterWidgetNode.render(modalFooterButtons,null);\n\t// Set up the refresh handler\n\trefreshHandler = function(changes) {\n\t\theaderWidgetNode.refresh(changes,modalHeader,null);\n\t\tbodyWidgetNode.refresh(changes,modalBody,null);\n\t\tfooterWidgetNode.refresh(changes,modalFooterButtons,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\n\t// Add the close event handler\n\tvar closeHandler = function(event) {\n\t\t// Remove our refresh handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t// Decrease the modal count and adjust the body class\n\t\tself.modalCount--;\n\t\tself.adjustPageClass();\n\t\t// Force layout and animate the modal message away\n\t\t$tw.utils.forceLayout(modalBackdrop);\n\t\t$tw.utils.forceLayout(modalWrapper);\n\t\t$tw.utils.setStyle(modalBackdrop,[\n\t\t\t{opacity: \"0\"}\n\t\t]);\n\t\t$tw.utils.setStyle(modalWrapper,[\n\t\t\t{transform: \"translateY(\" + window.innerHeight + \"px)\"}\n\t\t]);\n\t\t// Set up an event for the transition end\n\t\twindow.setTimeout(function() {\n\t\t\tif(wrapper.parentNode) {\n\t\t\t\t// Remove the modal message from the DOM\n\t\t\t\tdocument.body.removeChild(wrapper);\n\t\t\t}\n\t\t},duration);\n\t\t// Don't let anyone else handle the tm-close-tiddler message\n\t\treturn false;\n\t};\n\theaderWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tbodyWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tfooterWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\t// Set the initial styles for the message\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-window.innerHeight) + \"px)\"}\n\t]);\n\t// Put the message into the document\n\tdocument.body.appendChild(wrapper);\n\t// Set up animation for the styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{transition: \"opacity \" + duration + \"ms ease-out\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(modalBackdrop);\n\t$tw.utils.forceLayout(modalWrapper);\n\t// Set final animated styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0.7\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n};\n\nModal.prototype.adjustPageClass = function() {\n\tif($tw.pageContainer) {\n\t\t$tw.utils.toggleClass($tw.pageContainer,\"tc-modal-displayed\",this.modalCount > 0);\n\t}\n};\n\nexports.Modal = Modal;\n\n})();\n",
"title": "$:/core/modules/utils/dom/modal.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/notifier.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/dom/notifier.js\ntype: application/javascript\nmodule-type: utils\n\nNotifier mechanism\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar Notifier = function(wiki) {\n\tthis.wiki = wiki;\n};\n\n/*\nDisplay a notification\n\ttitle: Title of tiddler containing the notification text\n\toptions: see below\nOptions include:\n*/\nNotifier.prototype.display = function(title,options) {\n\toptions = options || {};\n\t// Create the wrapper divs\n\tvar self = this,\n\t\tnotification = document.createElement(\"div\"),\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\trefreshHandler;\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Add classes\n\t$tw.utils.addClass(notification,\"tc-notification\");\n\t// Create the variables\n\tvar variables = $tw.utils.extend({currentTiddler: title},options.variables);\n\t// Render the body of the notification\n\tvar widgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: document,\n\t\tvariables: variables,\n\t\timportPageMacros: true});\n\twidgetNode.render(notification,null);\n\trefreshHandler = function(changes) {\n\t\twidgetNode.refresh(changes,notification,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\n\t// Set the initial styles for the notification\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"0\"},\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-window.innerHeight) + \"px)\"},\n\t\t{transition: \"opacity \" + duration + \"ms ease-out, \" + $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Add the notification to the DOM\n\tdocument.body.appendChild(notification);\n\t// Force layout\n\t$tw.utils.forceLayout(notification);\n\t// Set final animated styles\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n\t// Set a timer to remove the notification\n\twindow.setTimeout(function() {\n\t\t// Remove our change event handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t// Force layout and animate the notification away\n\t\t$tw.utils.forceLayout(notification);\n\t\t$tw.utils.setStyle(notification,[\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transform: \"translateX(\" + (notification.offsetWidth) + \"px)\"}\n\t\t]);\n\t\t// Remove the modal message from the DOM once the transition ends\n\t\tsetTimeout(function() {\n\t\t\tif(notification.parentNode) {\n\t\t\t\tdocument.body.removeChild(notification);\n\t\t\t}\n\t\t},duration);\n\t},$tw.config.preferences.notificationDuration);\n};\n\nexports.Notifier = Notifier;\n\n})();\n",
"title": "$:/core/modules/utils/dom/notifier.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/popup.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/dom/popup.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Popup object prototype that manages popups in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreates a Popup object with these options:\n\trootElement: the DOM element to which the popup zapper should be attached\n*/\nvar Popup = function(options) {\n\toptions = options || {};\n\tthis.rootElement = options.rootElement || document.documentElement;\n\tthis.popups = []; // Array of {title:,wiki:,domNode:} objects\n};\n\n/*\nTrigger a popup open or closed. Parameters are in a hashmap:\n\ttitle: title of the tiddler where the popup details are stored\n\tdomNode: dom node to which the popup will be positioned\n\twiki: wiki\n\tforce: if specified, forces the popup state to true or false (instead of toggling it)\n*/\nPopup.prototype.triggerPopup = function(options) {\n\t// Check if this popup is already active\n\tvar index = this.findPopup(options.title);\n\t// Compute the new state\n\tvar state = index === -1;\n\tif(options.force !== undefined) {\n\t\tstate = options.force;\n\t}\n\t// Show or cancel the popup according to the new state\n\tif(state) {\n\t\tthis.show(options);\n\t} else {\n\t\tthis.cancel(index);\n\t}\n};\n\nPopup.prototype.findPopup = function(title) {\n\tvar index = -1;\n\tfor(var t=0; t<this.popups.length; t++) {\n\t\tif(this.popups[t].title === title) {\n\t\t\tindex = t;\n\t\t}\n\t}\n\treturn index;\n};\n\nPopup.prototype.handleEvent = function(event) {\n\tif(event.type === \"click\") {\n\t\t// Find out what was clicked on\n\t\tvar info = this.popupInfo(event.target),\n\t\t\tcancelLevel = info.popupLevel - 1;\n\t\t// Don't remove the level that was clicked on if we clicked on a handle\n\t\tif(info.isHandle) {\n\t\t\tcancelLevel++;\n\t\t}\n\t\t// Cancel\n\t\tthis.cancel(cancelLevel);\n\t}\n};\n\n/*\nFind the popup level containing a DOM node. Returns:\npopupLevel: count of the number of nested popups containing the specified element\nisHandle: true if the specified element is within a popup handle\n*/\nPopup.prototype.popupInfo = function(domNode) {\n\tvar isHandle = false,\n\t\tpopupCount = 0,\n\t\tnode = domNode;\n\t// First check ancestors to see if we're within a popup handle\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup-handle\")) {\n\t\t\tisHandle = true;\n\t\t\tpopupCount++;\n\t\t}\n\t\tif($tw.utils.hasClass(node,\"tc-popup-keep\")) {\n\t\t\tisHandle = true;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\t// Then count the number of ancestor popups\n\tnode = domNode;\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup\")) {\n\t\t\tpopupCount++;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\tvar info = {\n\t\tpopupLevel: popupCount,\n\t\tisHandle: isHandle\n\t};\n\treturn info;\n};\n\n/*\nDisplay a popup by adding it to the stack\n*/\nPopup.prototype.show = function(options) {\n\t// Find out what was clicked on\n\tvar info = this.popupInfo(options.domNode);\n\t// Cancel any higher level popups\n\tthis.cancel(info.popupLevel);\n\t// Store the popup details if not already there\n\tif(this.findPopup(options.title) === -1) {\n\t\tthis.popups.push({\n\t\t\ttitle: options.title,\n\t\t\twiki: options.wiki,\n\t\t\tdomNode: options.domNode\n\t\t});\n\t}\n\t// Set the state tiddler\n\toptions.wiki.setTextReference(options.title,\n\t\t\t\"(\" + options.domNode.offsetLeft + \",\" + options.domNode.offsetTop + \",\" + \n\t\t\t\toptions.domNode.offsetWidth + \",\" + options.domNode.offsetHeight + \")\");\n\t// Add the click handler if we have any popups\n\tif(this.popups.length > 0) {\n\t\tthis.rootElement.addEventListener(\"click\",this,true);\t\t\n\t}\n};\n\n/*\nCancel all popups at or above a specified level or DOM node\nlevel: popup level to cancel (0 cancels all popups)\n*/\nPopup.prototype.cancel = function(level) {\n\tvar numPopups = this.popups.length;\n\tlevel = Math.max(0,Math.min(level,numPopups));\n\tfor(var t=level; t<numPopups; t++) {\n\t\tvar popup = this.popups.pop();\n\t\tif(popup.title) {\n\t\t\tpopup.wiki.deleteTiddler(popup.title);\n\t\t}\n\t}\n\tif(this.popups.length === 0) {\n\t\tthis.rootElement.removeEventListener(\"click\",this,false);\n\t}\n};\n\n/*\nReturns true if the specified title and text identifies an active popup\n*/\nPopup.prototype.readPopupState = function(text) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/;\n\treturn popupLocationRegExp.test(text);\n};\n\nexports.Popup = Popup;\n\n})();\n",
"title": "$:/core/modules/utils/dom/popup.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/scroller.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/dom/scroller.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Scroller object prototype that manages scrolling in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nEvent handler for when the `tm-scroll` event hits the document body\n*/\nvar PageScroller = function() {\n\tthis.idRequestFrame = null;\n\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\twindow.webkitRequestAnimationFrame ||\n\t\twindow.mozRequestAnimationFrame ||\n\t\tfunction(callback) {\n\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t};\n\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\twindow.webkitCancelAnimationFrame ||\n\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\twindow.mozCancelAnimationFrame ||\n\t\twindow.mozCancelRequestAnimationFrame ||\n\t\tfunction(id) {\n\t\t\twindow.clearTimeout(id);\n\t\t};\n};\n\nPageScroller.prototype.cancelScroll = function() {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(window,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle an event\n*/\nPageScroller.prototype.handleEvent = function(event) {\n\tif(event.type === \"tm-scroll\") {\n\t\treturn this.scrollIntoView(event.target);\n\t}\n\treturn true;\n};\n\n/*\nHandle a scroll event hitting the page document\n*/\nPageScroller.prototype.scrollIntoView = function(element) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\t// Now get ready to scroll the body\n\tthis.cancelScroll();\n\tthis.startTime = Date.now();\n\tvar scrollPosition = $tw.utils.getScrollPosition();\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar clientBounds = element.getBoundingClientRect(),\n\t\tbounds = {\n\t\t\tleft: clientBounds.left + scrollPosition.x,\n\t\t\ttop: clientBounds.top + scrollPosition.y,\n\t\t\twidth: clientBounds.width,\n\t\t\theight: clientBounds.height\n\t\t};\n\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\t// targetPos/targetSize - position and size of the target element\n\t// currentPos/currentSize - position and size of the current scroll viewport\n\t// returns: new position of the scroll viewport\n\tvar getEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\tvar newPos = currentPos;\n\t\t\t// If the target is above/left of the current view, then scroll to it's top/left\n\t\t\tif(targetPos <= currentPos) {\n\t\t\t\tnewPos = targetPos;\n\t\t\t// If the target is smaller than the window and the scroll position is too far up, then scroll till the target is at the bottom of the window\n\t\t\t} else if(targetSize < currentSize && currentPos < (targetPos + targetSize - currentSize)) {\n\t\t\t\tnewPos = targetPos + targetSize - currentSize;\n\t\t\t// If the target is big, then just scroll to the top\n\t\t\t} else if(currentPos < targetPos) {\n\t\t\t\tnewPos = targetPos;\n\t\t\t// Otherwise, stay where we are\n\t\t\t} else {\n\t\t\t\tnewPos = currentPos;\n\t\t\t}\n\t\t\t// If we are scrolling within 50 pixels of the top/left then snap to zero\n\t\t\tif(newPos < 50) {\n\t\t\t\tnewPos = 0;\n\t\t\t}\n\t\t\treturn newPos;\n\t\t},\n\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,window.innerWidth),\n\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,window.innerHeight);\n\t// Only scroll if the position has changed\n\tif(endX !== scrollPosition.x || endY !== scrollPosition.y) {\n\t\tvar self = this,\n\t\t\tdrawFrame;\n\t\tdrawFrame = function () {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll();\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\twindow.scrollTo(scrollPosition.x + (endX - scrollPosition.x) * t,scrollPosition.y + (endY - scrollPosition.y) * t);\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(window,drawFrame);\n\t\t\t}\n\t\t};\n\t\tdrawFrame();\n\t}\n};\n\nexports.PageScroller = PageScroller;\n\n})();\n",
"title": "$:/core/modules/utils/dom/scroller.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/edition-info.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/edition-info.js\ntype: application/javascript\nmodule-type: utils-node\n\nInformation about the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\nvar editionInfo;\n\nexports.getEditionInfo = function() {\n\tif(!editionInfo) {\n\t\t// Enumerate the edition paths\n\t\tvar editionPaths = $tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar);\n\t\teditionInfo = {};\n\t\tfor(var editionIndex=0; editionIndex<editionPaths.length; editionIndex++) {\n\t\t\tvar editionPath = editionPaths[editionIndex];\n\t\t\t// Enumerate the folders\n\t\t\tvar entries = fs.readdirSync(editionPath);\n\t\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\t\tvar entry = entries[entryIndex];\n\t\t\t\t// Check if directories have a valid tiddlywiki.info\n\t\t\t\tif(!editionInfo[entry] && $tw.utils.isDirectory(path.resolve(editionPath,entry))) {\n\t\t\t\t\tvar info;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tinfo = JSON.parse(fs.readFileSync(path.resolve(editionPath,entry,\"tiddlywiki.info\"),\"utf8\"));\n\t\t\t\t\t} catch(ex) {\n\t\t\t\t\t}\n\t\t\t\t\tif(info) {\n\t\t\t\t\t\teditionInfo[entry] = info;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn editionInfo;\n};\n\n})();\n",
"title": "$:/core/modules/utils/edition-info.js",
"type": "application/javascript",
"module-type": "utils-node"
},
"$:/core/modules/utils/fakedom.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/fakedom.js\ntype: application/javascript\nmodule-type: global\n\nA barebones implementation of DOM interfaces needed by the rendering mechanism.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Sequence number used to enable us to track objects for testing\nvar sequenceNumber = null;\n\nvar bumpSequenceNumber = function(object) {\n\tif(sequenceNumber !== null) {\n\t\tobject.sequenceNumber = sequenceNumber++;\n\t}\n};\n\nvar TW_TextNode = function(text) {\n\tbumpSequenceNumber(this);\n\tthis.textContent = text + \"\";\n};\n\nObject.defineProperty(TW_TextNode.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn 3;\n\t}\n});\n\nObject.defineProperty(TW_TextNode.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\treturn this.textContent.replace(/(\\r?\\n)/g,\"\");\n\t}\n});\n\nvar TW_Element = function(tag,namespace) {\n\tbumpSequenceNumber(this);\n\tthis.isTiddlyWikiFakeDom = true;\n\tthis.tag = tag;\n\tthis.attributes = {};\n\tthis.isRaw = false;\n\tthis.children = [];\n\tthis.style = {};\n\tthis.namespaceURI = namespace || \"http://www.w3.org/1999/xhtml\";\n};\n\nObject.defineProperty(TW_Element.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn 1;\n\t}\n});\n\nTW_Element.prototype.getAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot getAttribute on a raw TW_Element\";\n\t}\n\treturn this.attributes[name];\n};\n\nTW_Element.prototype.setAttribute = function(name,value) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot setAttribute on a raw TW_Element\";\n\t}\n\tthis.attributes[name] = value + \"\";\n};\n\nTW_Element.prototype.setAttributeNS = function(namespace,name,value) {\n\tthis.setAttribute(name,value);\n};\n\nTW_Element.prototype.removeAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot removeAttribute on a raw TW_Element\";\n\t}\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\tdelete this.attributes[name];\n\t}\n};\n\nTW_Element.prototype.appendChild = function(node) {\n\tthis.children.push(node);\n\tnode.parentNode = this;\n};\n\nTW_Element.prototype.insertBefore = function(node,nextSibling) {\n\tif(nextSibling) {\n\t\tvar p = this.children.indexOf(nextSibling);\n\t\tif(p !== -1) {\n\t\t\tthis.children.splice(p,0,node);\n\t\t\tnode.parentNode = this;\n\t\t} else {\n\t\t\tthis.appendChild(node);\n\t\t}\n\t} else {\n\t\tthis.appendChild(node);\n\t}\n};\n\nTW_Element.prototype.removeChild = function(node) {\n\tvar p = this.children.indexOf(node);\n\tif(p !== -1) {\n\t\tthis.children.splice(p,1);\n\t}\n};\n\nTW_Element.prototype.hasChildNodes = function() {\n\treturn !!this.children.length;\n};\n\nObject.defineProperty(TW_Element.prototype, \"childNodes\", {\n\tget: function() {\n\t\treturn this.children;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"firstChild\", {\n\tget: function() {\n\t\treturn this.children[0];\n\t}\n});\n\nTW_Element.prototype.addEventListener = function(type,listener,useCapture) {\n\t// Do nothing\n};\n\nObject.defineProperty(TW_Element.prototype, \"tagName\", {\n\tget: function() {\n\t\treturn this.tag || \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"className\", {\n\tget: function() {\n\t\treturn this.attributes[\"class\"] || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes[\"class\"] = value + \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"value\", {\n\tget: function() {\n\t\treturn this.attributes.value || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes.value = value + \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"outerHTML\", {\n\tget: function() {\n\t\tvar output = [],attr,a,v;\n\t\toutput.push(\"<\",this.tag);\n\t\tif(this.attributes) {\n\t\t\tattr = [];\n\t\t\tfor(a in this.attributes) {\n\t\t\t\tattr.push(a);\n\t\t\t}\n\t\t\tattr.sort();\n\t\t\tfor(a=0; a<attr.length; a++) {\n\t\t\t\tv = this.attributes[attr[a]];\n\t\t\t\tif(v !== undefined) {\n\t\t\t\t\toutput.push(\" \",attr[a],\"=\\\"\",$tw.utils.htmlEncode(v),\"\\\"\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif(this.style) {\n\t\t\tvar style = [];\n\t\t\tfor(var s in this.style) {\n\t\t\t\tstyle.push(s + \":\" + this.style[s] + \";\");\n\t\t\t}\n\t\t\tif(style.length > 0) {\n\t\t\t\toutput.push(\" style=\\\"\",style.join(\"\"),\"\\\"\")\n\t\t\t}\n\t\t}\n\t\toutput.push(\">\");\n\t\tif($tw.config.htmlVoidElements.indexOf(this.tag) === -1) {\n\t\t\toutput.push(this.innerHTML);\n\t\t\toutput.push(\"</\",this.tag,\">\");\n\t\t}\n\t\treturn output.join(\"\");\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"innerHTML\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\treturn this.rawHTML;\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tif(node instanceof TW_Element) {\n\t\t\t\t\tb.push(node.outerHTML);\n\t\t\t\t} else if(node instanceof TW_TextNode) {\n\t\t\t\t\tb.push($tw.utils.htmlEncode(node.textContent));\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.isRaw = true;\n\t\tthis.rawHTML = value;\n\t\tthis.rawTextContent = null;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textInnerHTML\", {\n\tset: function(value) {\n\t\tif(this.isRaw) {\n\t\t\tthis.rawTextContent = value;\n\t\t} else {\n\t\t\tthrow \"Cannot set textInnerHTML of a non-raw TW_Element\";\n\t\t}\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\tif(this.rawTextContent === null) {\n\t\t\t\tconsole.log(booboo)\n\t\t\t\tthrow \"Cannot get textContent on a raw TW_Element\";\t\t\t\t\n\t\t\t} else {\n\t\t\t\treturn this.rawTextContent;\n\t\t\t}\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.textContent);\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.children = [new TW_TextNode(value)];\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\tthrow \"Cannot get formattedTextContent on a raw TW_Element\";\n\t\t} else {\n\t\t\tvar b = [],\n\t\t\t\tisBlock = $tw.config.htmlBlockElements.indexOf(this.tag) !== -1;\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\tif(this.tag === \"li\") {\n\t\t\t\tb.push(\"* \");\n\t\t\t}\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.formattedTextContent);\n\t\t\t});\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\treturn b.join(\"\");\n\t\t}\n\t}\n});\n\nvar document = {\n\tsetSequenceNumber: function(value) {\n\t\tsequenceNumber = value;\n\t},\n\tcreateElementNS: function(namespace,tag) {\n\t\treturn new TW_Element(tag,namespace);\n\t},\n\tcreateElement: function(tag) {\n\t\treturn new TW_Element(tag);\n\t},\n\tcreateTextNode: function(text) {\n\t\treturn new TW_TextNode(text);\n\t},\n\tcompatMode: \"CSS1Compat\", // For KaTeX to know that we're not a browser in quirks mode\n\tisTiddlyWikiFakeDom: true\n};\n\nexports.fakeDocument = document;\n\n})();\n",
"title": "$:/core/modules/utils/fakedom.js",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/utils/filesystem.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/filesystem.js\ntype: application/javascript\nmodule-type: utils-node\n\nFile system utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\n/*\nRecursively (and synchronously) copy a directory and all its content\n*/\nexports.copyDirectory = function(srcPath,dstPath) {\n\t// Remove any trailing path separators\n\tsrcPath = $tw.utils.removeTrailingSeparator(srcPath);\n\tdstPath = $tw.utils.removeTrailingSeparator(dstPath);\n\t// Create the destination directory\n\tvar err = $tw.utils.createDirectory(dstPath);\n\tif(err) {\n\t\treturn err;\n\t}\n\t// Function to copy a folder full of files\n\tvar copy = function(srcPath,dstPath) {\n\t\tvar srcStats = fs.lstatSync(srcPath),\n\t\t\tdstExists = fs.existsSync(dstPath);\n\t\tif(srcStats.isFile()) {\n\t\t\t$tw.utils.copyFile(srcPath,dstPath);\n\t\t} else if(srcStats.isDirectory()) {\n\t\t\tvar items = fs.readdirSync(srcPath);\n\t\t\tfor(var t=0; t<items.length; t++) {\n\t\t\t\tvar item = items[t],\n\t\t\t\t\terr = copy(srcPath + path.sep + item,dstPath + path.sep + item);\n\t\t\t\tif(err) {\n\t\t\t\t\treturn err;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\tcopy(srcPath,dstPath);\n\treturn null;\n};\n\n/*\nCopy a file\n*/\nvar FILE_BUFFER_LENGTH = 64 * 1024,\n\tfileBuffer;\n\nexports.copyFile = function(srcPath,dstPath) {\n\t// Create buffer if required\n\tif(!fileBuffer) {\n\t\tfileBuffer = new Buffer(FILE_BUFFER_LENGTH);\n\t}\n\t// Create any directories in the destination\n\t$tw.utils.createDirectory(path.dirname(dstPath));\n\t// Copy the file\n\tvar srcFile = fs.openSync(srcPath,\"r\"),\n\t\tdstFile = fs.openSync(dstPath,\"w\"),\n\t\tbytesRead = 1,\n\t\tpos = 0;\n\twhile (bytesRead > 0) {\n\t\tbytesRead = fs.readSync(srcFile,fileBuffer,0,FILE_BUFFER_LENGTH,pos);\n\t\tfs.writeSync(dstFile,fileBuffer,0,bytesRead);\n\t\tpos += bytesRead;\n\t}\n\tfs.closeSync(srcFile);\n\tfs.closeSync(dstFile);\n\treturn null;\n};\n\n/*\nRemove trailing path separator\n*/\nexports.removeTrailingSeparator = function(dirPath) {\n\tvar len = dirPath.length;\n\tif(dirPath.charAt(len-1) === path.sep) {\n\t\tdirPath = dirPath.substr(0,len-1);\n\t}\n\treturn dirPath;\n};\n\n/*\nRecursively create a directory\n*/\nexports.createDirectory = function(dirPath) {\n\tif(dirPath.substr(dirPath.length-1,1) !== path.sep) {\n\t\tdirPath = dirPath + path.sep;\n\t}\n\tvar pos = 1;\n\tpos = dirPath.indexOf(path.sep,pos);\n\twhile(pos !== -1) {\n\t\tvar subDirPath = dirPath.substr(0,pos);\n\t\tif(!$tw.utils.isDirectory(subDirPath)) {\n\t\t\ttry {\n\t\t\t\tfs.mkdirSync(subDirPath);\n\t\t\t} catch(e) {\n\t\t\t\treturn \"Error creating directory '\" + subDirPath + \"'\";\n\t\t\t}\n\t\t}\n\t\tpos = dirPath.indexOf(path.sep,pos + 1);\n\t}\n\treturn null;\n};\n\n/*\nRecursively create directories needed to contain a specified file\n*/\nexports.createFileDirectories = function(filePath) {\n\treturn $tw.utils.createDirectory(path.dirname(filePath));\n};\n\n/*\nRecursively delete a directory\n*/\nexports.deleteDirectory = function(dirPath) {\n\tif(fs.existsSync(dirPath)) {\n\t\tvar entries = fs.readdirSync(dirPath);\n\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\tvar currPath = dirPath + path.sep + entries[entryIndex];\n\t\t\tif(fs.lstatSync(currPath).isDirectory()) {\n\t\t\t\t$tw.utils.deleteDirectory(currPath);\n\t\t\t} else {\n\t\t\t\tfs.unlinkSync(currPath);\n\t\t\t}\n\t\t}\n\tfs.rmdirSync(dirPath);\n\t}\n\treturn null;\n};\n\n/*\nCheck if a path identifies a directory\n*/\nexports.isDirectory = function(dirPath) {\n\treturn fs.existsSync(dirPath) && fs.statSync(dirPath).isDirectory();\n};\n\n/*\nCheck if a path identifies a directory that is empty\n*/\nexports.isDirectoryEmpty = function(dirPath) {\n\tif(!$tw.utils.isDirectory(dirPath)) {\n\t\treturn false;\n\t}\n\tvar files = fs.readdirSync(dirPath),\n\t\tempty = true;\n\t$tw.utils.each(files,function(file,index) {\n\t\tif(file.charAt(0) !== \".\") {\n\t\t\tempty = false;\n\t\t}\n\t});\n\treturn empty;\n};\n\n/*\nRecursively delete a tree of empty directories\n*/\nexports.deleteEmptyDirs = function(dirpath,callback) {\n\tvar self = this;\n\tfs.readdir(dirpath,function(err,files) {\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\tif(files.length > 0) {\n\t\t\treturn callback(null);\n\t\t}\n\t\tfs.rmdir(dirpath,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.deleteEmptyDirs(path.dirname(dirpath),callback);\n\t\t});\n\t});\n};\n\n})();\n",
"title": "$:/core/modules/utils/filesystem.js",
"type": "application/javascript",
"module-type": "utils-node"
},
"$:/core/modules/utils/logger.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/logger.js\ntype: application/javascript\nmodule-type: utils\n\nA basic logging implementation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ALERT_TAG = \"$:/tags/Alert\";\n\n/*\nMake a new logger\n*/\nfunction Logger(componentName) {\n\tthis.componentName = componentName || \"\";\n}\n\n/*\nLog a message\n*/\nLogger.prototype.log = function(/* args */) {\n\tif(console !== undefined && console.log !== undefined) {\n\t\treturn Function.apply.call(console.log, console, [this.componentName + \":\"].concat(Array.prototype.slice.call(arguments,0)));\n\t}\n};\n\n/*\nAlert a message\n*/\nLogger.prototype.alert = function(/* args */) {\n\t// Prepare the text of the alert\n\tvar text = Array.prototype.join.call(arguments,\" \");\n\t// Create alert tiddlers in the browser\n\tif($tw.browser) {\n\t\t// Check if there is an existing alert with the same text and the same component\n\t\tvar existingAlerts = $tw.wiki.getTiddlersWithTag(ALERT_TAG),\n\t\t\talertFields,\n\t\t\texistingCount,\n\t\t\tself = this;\n\t\t$tw.utils.each(existingAlerts,function(title) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(tiddler.fields.text === text && tiddler.fields.component === self.componentName && tiddler.fields.modified && (!alertFields || tiddler.fields.modified < alertFields.modified)) {\n\t\t\t\t\talertFields = $tw.utils.extend({},tiddler.fields);\n\t\t\t}\n\t\t});\n\t\tif(alertFields) {\n\t\t\texistingCount = alertFields.count || 1;\n\t\t} else {\n\t\t\talertFields = {\n\t\t\t\ttitle: $tw.wiki.generateNewTitle(\"$:/temp/alerts/alert\",{prefix: \"\"}),\n\t\t\t\ttext: text,\n\t\t\t\ttags: [ALERT_TAG],\n\t\t\t\tcomponent: this.componentName\n\t\t\t};\n\t\t\texistingCount = 0;\n\t\t}\n\t\talertFields.modified = new Date();\n\t\tif(++existingCount > 1) {\n\t\t\talertFields.count = existingCount;\n\t\t} else {\n\t\t\talertFields.count = undefined;\n\t\t}\n\t\t$tw.wiki.addTiddler(new $tw.Tiddler(alertFields));\n\t\t// Log the alert as well\n\t\tthis.log.apply(this,Array.prototype.slice.call(arguments,0));\n\t} else {\n\t\t// Print an orange message to the console if not in the browser\n\t\tconsole.error(\"\\x1b[1;33m\" + text + \"\\x1b[0m\");\n\t}\n};\n\nexports.Logger = Logger;\n\n})();\n",
"title": "$:/core/modules/utils/logger.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/parsetree.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/parsetree.js\ntype: application/javascript\nmodule-type: utils\n\nParse tree utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.addAttributeToParseTreeNode = function(node,name,value) {\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[name] = {type: \"string\", value: value};\n};\n\nexports.getAttributeValueFromParseTreeNode = function(node,name,defaultValue) {\n\tif(node.attributes && node.attributes[name] && node.attributes[name].value !== undefined) {\n\t\treturn node.attributes[name].value;\n\t}\n\treturn defaultValue;\n};\n\nexports.addClassToParseTreeNode = function(node,classString) {\n\tvar classes = [];\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[\"class\"] = node.attributes[\"class\"] || {type: \"string\", value: \"\"};\n\tif(node.attributes[\"class\"].type === \"string\") {\n\t\tif(node.attributes[\"class\"].value !== \"\") {\n\t\t\tclasses = node.attributes[\"class\"].value.split(\" \");\n\t\t}\n\t\tif(classString !== \"\") {\n\t\t\t$tw.utils.pushTop(classes,classString.split(\" \"));\n\t\t}\n\t\tnode.attributes[\"class\"].value = classes.join(\" \");\n\t}\n};\n\nexports.addStyleToParseTreeNode = function(node,name,value) {\n\t\tnode.attributes = node.attributes || {};\n\t\tnode.attributes.style = node.attributes.style || {type: \"string\", value: \"\"};\n\t\tif(node.attributes.style.type === \"string\") {\n\t\t\tnode.attributes.style.value += name + \":\" + value + \";\";\n\t\t}\n};\n\nexports.findParseTreeNode = function(nodeArray,search) {\n\tfor(var t=0; t<nodeArray.length; t++) {\n\t\tif(nodeArray[t].type === search.type && nodeArray[t].tag === search.tag) {\n\t\t\treturn nodeArray[t];\n\t\t}\n\t}\n\treturn undefined;\n};\n\n/*\nHelper to get the text of a parse tree node or array of nodes\n*/\nexports.getParseTreeText = function getParseTreeText(tree) {\n\tvar output = [];\n\tif($tw.utils.isArray(tree)) {\n\t\t$tw.utils.each(tree,function(node) {\n\t\t\toutput.push(getParseTreeText(node));\n\t\t});\n\t} else {\n\t\tif(tree.type === \"text\") {\n\t\t\toutput.push(tree.text);\n\t\t}\n\t\tif(tree.children) {\n\t\t\treturn getParseTreeText(tree.children);\n\t\t}\n\t}\n\treturn output.join(\"\");\n};\n\n})();\n",
"title": "$:/core/modules/utils/parsetree.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/performance.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/performance.js\ntype: application/javascript\nmodule-type: global\n\nPerformance measurement.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Performance(enabled) {\n\tthis.enabled = !!enabled;\n\tthis.measures = {}; // Hashmap of current values of measurements\n\tthis.logger = new $tw.utils.Logger(\"performance\");\n}\n\n/*\nWrap performance reporting around a top level function\n*/\nPerformance.prototype.report = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tself.measures = {};\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments);\n\t\t\tself.logger.log(name + \": \" + $tw.utils.timer(startTime).toFixed(2) + \"ms\");\n\t\t\tfor(var m in self.measures) {\n\t\t\t\tself.logger.log(\"+\" + m + \": \" + self.measures[m].toFixed(2) + \"ms\");\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\n/*\nWrap performance measurements around a subfunction\n*/\nPerformance.prototype.measure = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments),\n\t\t\t\tvalue = self.measures[name] || 0;\n\t\t\tself.measures[name] = value + $tw.utils.timer(startTime);\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\nexports.Performance = Performance;\n\n})();\n",
"title": "$:/core/modules/utils/performance.js",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/utils/pluginmaker.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/pluginmaker.js\ntype: application/javascript\nmodule-type: utils\n\nA quick and dirty way to pack up plugins within the browser.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRepack a plugin, and then delete any non-shadow payload tiddlers\n*/\nexports.repackPlugin = function(title,additionalTiddlers,excludeTiddlers) {\n\tadditionalTiddlers = additionalTiddlers || [];\n\texcludeTiddlers = excludeTiddlers || [];\n\t// Get the plugin tiddler\n\tvar pluginTiddler = $tw.wiki.getTiddler(title);\n\tif(!pluginTiddler) {\n\t\tthrow \"No such tiddler as \" + title;\n\t}\n\t// Extract the JSON\n\tvar jsonPluginTiddler;\n\ttry {\n\t\tjsonPluginTiddler = JSON.parse(pluginTiddler.fields.text);\n\t} catch(e) {\n\t\tthrow \"Cannot parse plugin tiddler \" + title + \"\\n\" + $tw.language.getString(\"Error/Caption\") + \": \" + e;\n\t}\n\t// Get the list of tiddlers\n\tvar tiddlers = Object.keys(jsonPluginTiddler.tiddlers);\n\t// Add the additional tiddlers\n\t$tw.utils.pushTop(tiddlers,additionalTiddlers);\n\t// Remove any excluded tiddlers\n\tfor(var t=tiddlers.length-1; t>=0; t--) {\n\t\tif(excludeTiddlers.indexOf(tiddlers[t]) !== -1) {\n\t\t\ttiddlers.splice(t,1);\n\t\t}\n\t}\n\t// Pack up the tiddlers into a block of JSON\n\tvar plugins = {};\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = $tw.wiki.getTiddler(title),\n\t\t\tfields = {};\n\t\t$tw.utils.each(tiddler.fields,function (value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\tplugins[title] = fields;\n\t});\n\t// Retrieve and bump the version number\n\tvar pluginVersion = $tw.utils.parseVersion(pluginTiddler.getFieldString(\"version\") || \"0.0.0\") || {\n\t\t\tmajor: \"0\",\n\t\t\tminor: \"0\",\n\t\t\tpatch: \"0\"\n\t\t};\n\tpluginVersion.patch++;\n\tvar version = pluginVersion.major + \".\" + pluginVersion.minor + \".\" + pluginVersion.patch;\n\tif(pluginVersion.prerelease) {\n\t\tversion += \"-\" + pluginVersion.prerelease;\n\t}\n\tif(pluginVersion.build) {\n\t\tversion += \"+\" + pluginVersion.build;\n\t}\n\t// Save the tiddler\n\t$tw.wiki.addTiddler(new $tw.Tiddler(pluginTiddler,{text: JSON.stringify({tiddlers: plugins},null,4), version: version}));\n\t// Delete any non-shadow constituent tiddlers\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tif($tw.wiki.tiddlerExists(title)) {\n\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t}\n\t});\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t// Return a heartwarming confirmation\n\treturn \"Plugin \" + title + \" successfully saved\";\n};\n\n})();\n",
"title": "$:/core/modules/utils/pluginmaker.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/utils.js": {
"text": "/*\\\ntitle: $:/core/modules/utils/utils.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDisplay a warning, in colour if we're on a terminal\n*/\nexports.warning = function(text) {\n\tconsole.log($tw.node ? \"\\x1b[1;33m\" + text + \"\\x1b[0m\" : text);\n};\n\n/*\nRepeatedly replaces a substring within a string. Like String.prototype.replace, but without any of the default special handling of $ sequences in the replace string\n*/\nexports.replaceString = function(text,search,replace) {\n\treturn text.replace(search,function() {\n\t\treturn replace;\n\t});\n};\n\n/*\nRepeats a string\n*/\nexports.repeat = function(str,count) {\n\tvar result = \"\";\n\tfor(var t=0;t<count;t++) {\n\t\tresult += str;\n\t}\n\treturn result;\n};\n\n/*\nTrim whitespace from the start and end of a string\nThanks to Steven Levithan, http://blog.stevenlevithan.com/archives/faster-trim-javascript\n*/\nexports.trim = function(str) {\n\tif(typeof str === \"string\") {\n\t\treturn str.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n\t} else {\n\t\treturn str;\n\t}\n};\n\n/*\nFind the line break preceding a given position in a string\nReturns position immediately after that line break, or the start of the string\n*/\nexports.findPrecedingLineBreak = function(text,pos) {\n\tvar result = text.lastIndexOf(\"\\n\",pos - 1);\n\tif(result === -1) {\n\t\tresult = 0;\n\t} else {\n\t\tresult++;\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nFind the line break following a given position in a string\n*/\nexports.findFollowingLineBreak = function(text,pos) {\n\t// Cut to just past the following line break, or to the end of the text\n\tvar result = text.indexOf(\"\\n\",pos);\n\tif(result === -1) {\n\t\tresult = text.length;\n\t} else {\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nReturn the number of keys in an object\n*/\nexports.count = function(object) {\n\treturn Object.keys(object || {}).length;\n};\n\n/*\nCheck if an array is equal by value and by reference.\n*/\nexports.isArrayEqual = function(array1,array2) {\n\tif(array1 === array2) {\n\t\treturn true;\n\t}\n\tarray1 = array1 || [];\n\tarray2 = array2 || [];\n\tif(array1.length !== array2.length) {\n\t\treturn false;\n\t}\n\treturn array1.every(function(value,index) {\n\t\treturn value === array2[index];\n\t});\n};\n\n/*\nPush entries onto an array, removing them first if they already exist in the array\n\tarray: array to modify (assumed to be free of duplicates)\n\tvalue: a single value to push or an array of values to push\n*/\nexports.pushTop = function(array,value) {\n\tvar t,p;\n\tif($tw.utils.isArray(value)) {\n\t\t// Remove any array entries that are duplicated in the new values\n\t\tif(value.length !== 0) {\n\t\t\tif(array.length !== 0) {\n\t\t\t\tif(value.length < array.length) {\n\t\t\t\t\tfor(t=0; t<value.length; t++) {\n\t\t\t\t\t\tp = array.indexOf(value[t]);\n\t\t\t\t\t\tif(p !== -1) {\n\t\t\t\t\t\t\tarray.splice(p,1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfor(t=array.length-1; t>=0; t--) {\n\t\t\t\t\t\tp = value.indexOf(array[t]);\n\t\t\t\t\t\tif(p !== -1) {\n\t\t\t\t\t\t\tarray.splice(t,1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Push the values on top of the main array\n\t\t\tarray.push.apply(array,value);\n\t\t}\n\t} else {\n\t\tp = array.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tarray.splice(p,1);\n\t\t}\n\t\tarray.push(value);\n\t}\n\treturn array;\n};\n\n/*\nRemove entries from an array\n\tarray: array to modify\n\tvalue: a single value to remove, or an array of values to remove\n*/\nexports.removeArrayEntries = function(array,value) {\n\tvar t,p;\n\tif($tw.utils.isArray(value)) {\n\t\tfor(t=0; t<value.length; t++) {\n\t\t\tp = array.indexOf(value[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tarray.splice(p,1);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tp = array.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tarray.splice(p,1);\n\t\t}\n\t}\n};\n\n/*\nCheck whether any members of a hashmap are present in another hashmap\n*/\nexports.checkDependencies = function(dependencies,changes) {\n\tvar hit = false;\n\t$tw.utils.each(changes,function(change,title) {\n\t\tif($tw.utils.hop(dependencies,title)) {\n\t\t\thit = true;\n\t\t}\n\t});\n\treturn hit;\n};\n\nexports.extend = function(object /* [, src] */) {\n\t$tw.utils.each(Array.prototype.slice.call(arguments, 1), function(source) {\n\t\tif(source) {\n\t\t\tfor(var property in source) {\n\t\t\t\tobject[property] = source[property];\n\t\t\t}\n\t\t}\n\t});\n\treturn object;\n};\n\nexports.deepCopy = function(object) {\n\tvar result,t;\n\tif($tw.utils.isArray(object)) {\n\t\t// Copy arrays\n\t\tresult = object.slice(0);\n\t} else if(typeof object === \"object\") {\n\t\tresult = {};\n\t\tfor(t in object) {\n\t\t\tif(object[t] !== undefined) {\n\t\t\t\tresult[t] = $tw.utils.deepCopy(object[t]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tresult = object;\n\t}\n\treturn result;\n};\n\nexports.extendDeepCopy = function(object,extendedProperties) {\n\tvar result = $tw.utils.deepCopy(object),t;\n\tfor(t in extendedProperties) {\n\t\tif(extendedProperties[t] !== undefined) {\n\t\t\tresult[t] = $tw.utils.deepCopy(extendedProperties[t]);\n\t\t}\n\t}\n\treturn result;\n};\n\nexports.deepFreeze = function deepFreeze(object) {\n\tvar property, key;\n\tif(object) {\n\t\tObject.freeze(object);\n\t\tfor(key in object) {\n\t\t\tproperty = object[key];\n\t\t\tif($tw.utils.hop(object,key) && (typeof property === \"object\") && !Object.isFrozen(property)) {\n\t\t\t\tdeepFreeze(property);\n\t\t\t}\n\t\t}\n\t}\n};\n\nexports.slowInSlowOut = function(t) {\n\treturn (1 - ((Math.cos(t * Math.PI) + 1) / 2));\n};\n\nexports.formatDateString = function(date,template) {\n\tvar result = \"\",\n\t\tt = template,\n\t\tmatches = [\n\t\t\t[/^0hh12/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getHours12(date));\n\t\t\t}],\n\t\t\t[/^wYYYY/, function() {\n\t\t\t\treturn $tw.utils.getYearForWeekNo(date);\n\t\t\t}],\n\t\t\t[/^hh12/, function() {\n\t\t\t\treturn $tw.utils.getHours12(date);\n\t\t\t}],\n\t\t\t[/^DDth/, function() {\n\t\t\t\treturn date.getDate() + $tw.utils.getDaySuffix(date);\n\t\t\t}],\n\t\t\t[/^YYYY/, function() {\n\t\t\t\treturn date.getFullYear();\n\t\t\t}],\n\t\t\t[/^0hh/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getHours());\n\t\t\t}],\n\t\t\t[/^0mm/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMinutes());\n\t\t\t}],\n\t\t\t[/^0ss/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getSeconds());\n\t\t\t}],\n\t\t\t[/^0DD/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getDate());\n\t\t\t}],\n\t\t\t[/^0MM/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMonth()+1);\n\t\t\t}],\n\t\t\t[/^0WW/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getWeek(date));\n\t\t\t}],\n\t\t\t[/^ddd/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^mmm/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^DDD/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^MMM/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^TZD/, function() {\n\t\t\t\tvar tz = date.getTimezoneOffset(),\n\t\t\t\tatz = Math.abs(tz);\n\t\t\t\treturn (tz < 0 ? '+' : '-') + $tw.utils.pad(Math.floor(atz / 60)) + ':' + $tw.utils.pad(atz % 60);\n\t\t\t}],\n\t\t\t[/^wYY/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getYearForWeekNo(date) - 2000);\n\t\t\t}],\n\t\t\t[/^[ap]m/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toLowerCase();\n\t\t\t}],\n\t\t\t[/^hh/, function() {\n\t\t\t\treturn date.getHours();\n\t\t\t}],\n\t\t\t[/^mm/, function() {\n\t\t\t\treturn date.getMinutes();\n\t\t\t}],\n\t\t\t[/^ss/, function() {\n\t\t\t\treturn date.getSeconds();\n\t\t\t}],\n\t\t\t[/^[AP]M/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toUpperCase();\n\t\t\t}],\n\t\t\t[/^DD/, function() {\n\t\t\t\treturn date.getDate();\n\t\t\t}],\n\t\t\t[/^MM/, function() {\n\t\t\t\treturn date.getMonth() + 1;\n\t\t\t}],\n\t\t\t[/^WW/, function() {\n\t\t\t\treturn $tw.utils.getWeek(date);\n\t\t\t}],\n\t\t\t[/^YY/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getFullYear() - 2000);\n\t\t\t}]\n\t\t];\n\twhile(t.length){\n\t\tvar matchString = \"\";\n\t\t$tw.utils.each(matches, function(m) {\n\t\t\tvar match = m[0].exec(t);\n\t\t\tif(match) {\n\t\t\t\tmatchString = m[1].call();\n\t\t\t\tt = t.substr(match[0].length);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif(matchString) {\n\t\t\tresult += matchString;\n\t\t} else {\n\t\t\tresult += t.charAt(0);\n\t\t\tt = t.substr(1);\n\t\t}\n\t}\n\tresult = result.replace(/\\\\(.)/g,\"$1\");\n\treturn result;\n};\n\nexports.getAmPm = function(date) {\n\treturn $tw.language.getString(\"Date/Period/\" + (date.getHours() >= 12 ? \"pm\" : \"am\"));\n};\n\nexports.getDaySuffix = function(date) {\n\treturn $tw.language.getString(\"Date/DaySuffix/\" + date.getDate());\n};\n\nexports.getWeek = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week to calculate weekNo\n\tvar x = new Date(dt.getFullYear(),0,1);\n\tvar n = Math.floor((dt.getTime() - x.getTime()) / 86400000);\n\treturn Math.floor(n / 7) + 1;\n};\n\nexports.getYearForWeekNo = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week\n\treturn dt.getFullYear();\n};\n\nexports.getHours12 = function(date) {\n\tvar h = date.getHours();\n\treturn h > 12 ? h-12 : ( h > 0 ? h : 12 );\n};\n\n/*\nConvert a date delta in milliseconds into a string representation of \"23 seconds ago\", \"27 minutes ago\" etc.\n\tdelta: delta in milliseconds\nReturns an object with these members:\n\tdescription: string describing the delta period\n\tupdatePeriod: time in millisecond until the string will be inaccurate\n*/\nexports.getRelativeDate = function(delta) {\n\tvar futurep = false;\n\tif(delta < 0) {\n\t\tdelta = -1 * delta;\n\t\tfuturep = true;\n\t}\n\tvar units = [\n\t\t{name: \"Years\", duration: 365 * 24 * 60 * 60 * 1000},\n\t\t{name: \"Months\", duration: (365/12) * 24 * 60 * 60 * 1000},\n\t\t{name: \"Days\", duration: 24 * 60 * 60 * 1000},\n\t\t{name: \"Hours\", duration: 60 * 60 * 1000},\n\t\t{name: \"Minutes\", duration: 60 * 1000},\n\t\t{name: \"Seconds\", duration: 1000}\n\t];\n\tfor(var t=0; t<units.length; t++) {\n\t\tvar result = Math.floor(delta / units[t].duration);\n\t\tif(result >= 2) {\n\t\t\treturn {\n\t\t\t\tdelta: delta,\n\t\t\t\tdescription: $tw.language.getString(\n\t\t\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/\" + units[t].name,\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{period: result.toString()}\n\t\t\t\t\t}\n\t\t\t\t),\n\t\t\t\tupdatePeriod: units[t].duration\n\t\t\t};\n\t\t}\n\t}\n\treturn {\n\t\tdelta: delta,\n\t\tdescription: $tw.language.getString(\n\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/Second\",\n\t\t\t{variables:\n\t\t\t\t{period: \"1\"}\n\t\t\t}\n\t\t),\n\t\tupdatePeriod: 1000\n\t};\n};\n\n// Convert & to \"&\", < to \"<\", > to \">\", \" to \""\"\nexports.htmlEncode = function(s) {\n\tif(s) {\n\t\treturn s.toString().replace(/&/mg,\"&\").replace(/</mg,\"<\").replace(/>/mg,\">\").replace(/\\\"/mg,\""\");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n// Converts all HTML entities to their character equivalents\nexports.entityDecode = function(s) {\n\tvar converter = String.fromCodePoint || String.fromCharCode,\n\t\te = s.substr(1,s.length-2); // Strip the & and the ;\n\tif(e.charAt(0) === \"#\") {\n\t\tif(e.charAt(1) === \"x\" || e.charAt(1) === \"X\") {\n\t\t\treturn converter(parseInt(e.substr(2),16));\t\n\t\t} else {\n\t\t\treturn converter(parseInt(e.substr(1),10));\n\t\t}\n\t} else {\n\t\tvar c = $tw.config.htmlEntities[e];\n\t\tif(c) {\n\t\t\treturn converter(c);\n\t\t} else {\n\t\t\treturn s; // Couldn't convert it as an entity, just return it raw\n\t\t}\n\t}\n};\n\nexports.unescapeLineBreaks = function(s) {\n\treturn s.replace(/\\\\n/mg,\"\\n\").replace(/\\\\b/mg,\" \").replace(/\\\\s/mg,\"\\\\\").replace(/\\r/mg,\"\");\n};\n\n/*\n * Returns an escape sequence for given character. Uses \\x for characters <=\n * 0xFF to save space, \\u for the rest.\n *\n * The code needs to be in sync with th code template in the compilation\n * function for \"action\" nodes.\n */\n// Copied from peg.js, thanks to David Majda\nexports.escape = function(ch) {\n\tvar charCode = ch.charCodeAt(0);\n\tif(charCode <= 0xFF) {\n\t\treturn '\\\\x' + $tw.utils.pad(charCode.toString(16).toUpperCase());\n\t} else {\n\t\treturn '\\\\u' + $tw.utils.pad(charCode.toString(16).toUpperCase(),4);\n\t}\n};\n\n// Turns a string into a legal JavaScript string\n// Copied from peg.js, thanks to David Majda\nexports.stringify = function(s) {\n\t/*\n\t* ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a string\n\t* literal except for the closing quote character, backslash, carriage return,\n\t* line separator, paragraph separator, and line feed. Any character may\n\t* appear in the form of an escape sequence.\n\t*\n\t* For portability, we also escape all non-ASCII characters.\n\t*/\n\treturn (s || \"\")\n\t\t.replace(/\\\\/g, '\\\\\\\\') // backslash\n\t\t.replace(/\"/g, '\\\\\"') // double quote character\n\t\t.replace(/'/g, \"\\\\'\") // single quote character\n\t\t.replace(/\\r/g, '\\\\r') // carriage return\n\t\t.replace(/\\n/g, '\\\\n') // line feed\n\t\t.replace(/[\\x80-\\uFFFF]/g, exports.escape); // non-ASCII characters\n};\n\n/*\nEscape the RegExp special characters with a preceding backslash\n*/\nexports.escapeRegExp = function(s) {\n return s.replace(/[\\-\\/\\\\\\^\\$\\*\\+\\?\\.\\(\\)\\|\\[\\]\\{\\}]/g, '\\\\$&');\n};\n\n// Checks whether a link target is external, i.e. not a tiddler title\nexports.isLinkExternal = function(to) {\n\tvar externalRegExp = /^(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/i;\n\treturn externalRegExp.test(to);\n};\n\nexports.nextTick = function(fn) {\n/*global window: false */\n\tif(typeof process === \"undefined\") {\n\t\t// Apparently it would be faster to use postMessage - http://dbaron.org/log/20100309-faster-timeouts\n\t\twindow.setTimeout(fn,4);\n\t} else {\n\t\tprocess.nextTick(fn);\n\t}\n};\n\n/*\nConvert a hyphenated CSS property name into a camel case one\n*/\nexports.unHyphenateCss = function(propName) {\n\treturn propName.replace(/-([a-z])/gi, function(match0,match1) {\n\t\treturn match1.toUpperCase();\n\t});\n};\n\n/*\nConvert a camelcase CSS property name into a dashed one (\"backgroundColor\" --> \"background-color\")\n*/\nexports.hyphenateCss = function(propName) {\n\treturn propName.replace(/([A-Z])/g, function(match0,match1) {\n\t\treturn \"-\" + match1.toLowerCase();\n\t});\n};\n\n/*\nParse a text reference of one of these forms:\n* title\n* !!field\n* title!!field\n* title##index\n* etc\nReturns an object with the following fields, all optional:\n* title: tiddler title\n* field: tiddler field name\n* index: JSON property index\n*/\nexports.parseTextReference = function(textRef) {\n\t// Separate out the title, field name and/or JSON indices\n\tvar reTextRef = /(?:(.*?)!!(.+))|(?:(.*?)##(.+))|(.*)/mg,\n\t\tmatch = reTextRef.exec(textRef),\n\t\tresult = {};\n\tif(match && reTextRef.lastIndex === textRef.length) {\n\t\t// Return the parts\n\t\tif(match[1]) {\n\t\t\tresult.title = match[1];\n\t\t}\n\t\tif(match[2]) {\n\t\t\tresult.field = match[2];\n\t\t}\n\t\tif(match[3]) {\n\t\t\tresult.title = match[3];\n\t\t}\n\t\tif(match[4]) {\n\t\t\tresult.index = match[4];\n\t\t}\n\t\tif(match[5]) {\n\t\t\tresult.title = match[5];\n\t\t}\n\t} else {\n\t\t// If we couldn't parse it\n\t\tresult.title = textRef\n\t}\n\treturn result;\n};\n\n/*\nChecks whether a string is a valid fieldname\n*/\nexports.isValidFieldName = function(name) {\n\tif(!name || typeof name !== \"string\") {\n\t\treturn false;\n\t}\n\tname = name.toLowerCase().trim();\n\tvar fieldValidatorRegEx = /^[a-z0-9\\-\\._]+$/mg;\n\treturn fieldValidatorRegEx.test(name);\n};\n\n/*\nExtract the version number from the meta tag or from the boot file\n*/\n\n// Browser version\nexports.extractVersionInfo = function() {\n\tif($tw.packageInfo) {\n\t\treturn $tw.packageInfo.version;\n\t} else {\n\t\tvar metatags = document.getElementsByTagName(\"meta\");\n\t\tfor(var t=0; t<metatags.length; t++) {\n\t\t\tvar m = metatags[t];\n\t\t\tif(m.name === \"tiddlywiki-version\") {\n\t\t\t\treturn m.content;\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the animation duration in ms\n*/\nexports.getAnimationDuration = function() {\n\treturn parseInt($tw.wiki.getTiddlerText(\"$:/config/AnimationDuration\",\"400\"),10);\n};\n\n/*\nHash a string to a number\nDerived from http://stackoverflow.com/a/15710692\n*/\nexports.hashString = function(str) {\n\treturn str.split(\"\").reduce(function(a,b) {\n\t\ta = ((a << 5) - a) + b.charCodeAt(0);\n\t\treturn a & a;\n\t},0);\n};\n\n/*\nDecode a base64 string\n*/\nexports.base64Decode = function(string64) {\n\tif($tw.browser) {\n\t\t// TODO\n\t\tthrow \"$tw.utils.base64Decode() doesn't work in the browser\";\n\t} else {\n\t\treturn (new Buffer(string64,\"base64\")).toString();\n\t}\n};\n\n/*\nConvert a hashmap into a tiddler dictionary format sequence of name:value pairs\n*/\nexports.makeTiddlerDictionary = function(data) {\n\tvar output = [];\n\tfor(var name in data) {\n\t\toutput.push(name + \": \" + data[name]);\n\t}\n\treturn output.join(\"\\n\");\n};\n\n/*\nHigh resolution microsecond timer for profiling\n*/\nexports.timer = function(base) {\n\tvar m;\n\tif($tw.node) {\n\t\tvar r = process.hrtime();\t\t\n\t\tm = r[0] * 1e3 + (r[1] / 1e6);\n\t} else if(window.performance) {\n\t\tm = performance.now();\n\t} else {\n\t\tm = Date.now();\n\t}\n\tif(typeof base !== \"undefined\") {\n\t\tm = m - base;\n\t}\n\treturn m;\n};\n\n/*\nConvert text and content type to a data URI\n*/\nexports.makeDataUri = function(text,type) {\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar typeInfo = $tw.config.contentTypeInfo[type] || $tw.config.contentTypeInfo[\"text/plain\"],\n\t\tisBase64 = typeInfo.encoding === \"base64\",\n\t\tparts = [];\n\tparts.push(\"data:\");\n\tparts.push(type);\n\tparts.push(isBase64 ? \";base64\" : \"\");\n\tparts.push(\",\");\n\tparts.push(isBase64 ? text : encodeURIComponent(text));\n\treturn parts.join(\"\");\n};\n\n/*\nUseful for finding out the fully escaped CSS selector equivalent to a given tag. For example:\n\n$tw.utils.tagToCssSelector(\"$:/tags/Stylesheet\") --> tc-tagged-\\%24\\%3A\\%2Ftags\\%2FStylesheet\n*/\nexports.tagToCssSelector = function(tagName) {\n\treturn \"tc-tagged-\" + encodeURIComponent(tagName).replace(/[!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^`{\\|}~,]/mg,function(c) {\n\t\treturn \"\\\\\" + c;\n\t});\n};\n\n/*\nIE does not have sign function\n*/\nexports.sign = Math.sign || function(x) {\n\tx = +x; // convert to a number\n\tif (x === 0 || isNaN(x)) {\n\t\treturn x;\n\t}\n\treturn x > 0 ? 1 : -1;\n};\n\n/*\nIE does not have an endsWith function\n*/\nexports.strEndsWith = function(str,ending,position) {\n\tif(str.endsWith) {\n\t\treturn str.endsWith(ending,position);\n\t} else {\n\t\tif (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > str.length) {\n\t\t\tposition = str.length;\n\t\t}\n\t\tposition -= ending.length;\n\t\tvar lastIndex = str.indexOf(ending, position);\n\t\treturn lastIndex !== -1 && lastIndex === position;\n\t}\n};\n\n/*\nTransliterate string from eg. Cyrillic Russian to Latin\n*/\nvar transliterationPairs = {\n\t\"Ё\":\"YO\",\n\t\"Й\":\"I\",\n\t\"Ц\":\"TS\",\n\t\"У\":\"U\",\n\t\"К\":\"K\",\n\t\"Е\":\"E\",\n\t\"Н\":\"N\",\n\t\"Г\":\"G\",\n\t\"Ш\":\"SH\",\n\t\"Щ\":\"SCH\",\n\t\"З\":\"Z\",\n\t\"Х\":\"H\",\n\t\"Ъ\":\"'\",\n\t\"ё\":\"yo\",\n\t\"й\":\"i\",\n\t\"ц\":\"ts\",\n\t\"у\":\"u\",\n\t\"к\":\"k\",\n\t\"е\":\"e\",\n\t\"н\":\"n\",\n\t\"г\":\"g\",\n\t\"ш\":\"sh\",\n\t\"щ\":\"sch\",\n\t\"з\":\"z\",\n\t\"х\":\"h\",\n\t\"ъ\":\"'\",\n\t\"Ф\":\"F\",\n\t\"Ы\":\"I\",\n\t\"В\":\"V\",\n\t\"А\":\"a\",\n\t\"П\":\"P\",\n\t\"Р\":\"R\",\n\t\"О\":\"O\",\n\t\"Л\":\"L\",\n\t\"Д\":\"D\",\n\t\"Ж\":\"ZH\",\n\t\"Э\":\"E\",\n\t\"ф\":\"f\",\n\t\"ы\":\"i\",\n\t\"в\":\"v\",\n\t\"а\":\"a\",\n\t\"п\":\"p\",\n\t\"р\":\"r\",\n\t\"о\":\"o\",\n\t\"л\":\"l\",\n\t\"д\":\"d\",\n\t\"ж\":\"zh\",\n\t\"э\":\"e\",\n\t\"Я\":\"Ya\",\n\t\"Ч\":\"CH\",\n\t\"С\":\"S\",\n\t\"М\":\"M\",\n\t\"И\":\"I\",\n\t\"Т\":\"T\",\n\t\"Ь\":\"'\",\n\t\"Б\":\"B\",\n\t\"Ю\":\"YU\",\n\t\"я\":\"ya\",\n\t\"ч\":\"ch\",\n\t\"с\":\"s\",\n\t\"м\":\"m\",\n\t\"и\":\"i\",\n\t\"т\":\"t\",\n\t\"ь\":\"'\",\n\t\"б\":\"b\",\n\t\"ю\":\"yu\"\n};\n\nexports.transliterate = function(str) {\n\treturn str.split(\"\").map(function(char) {\n\t\treturn transliterationPairs[char] || char;\n\t}).join(\"\");\n};\n\n})();\n",
"title": "$:/core/modules/utils/utils.js",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/widgets/action-createtiddler.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/action-createtiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to create a new tiddler with a unique name and specified fields.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CreateTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCreateTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCreateTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nCreateTiddlerWidget.prototype.execute = function() {\n\tthis.actionBaseTitle = this.getAttribute(\"$basetitle\");\n\tthis.actionSaveTitle = this.getAttribute(\"$savetitle\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nCreateTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nCreateTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar title = this.wiki.generateNewTitle(this.actionBaseTitle),\n\t\tfields = {},\n\t\tcreationFields,\n\t\tmodificationFields;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tfields[name] = attribute;\n\t\t}\n\t});\n\tif(this.actionTimestamp) {\n\t\tcreationFields = this.wiki.getCreationFields();\n\t\tmodificationFields = this.wiki.getModificationFields();\n\t}\n\tvar tiddler = this.wiki.addTiddler(new $tw.Tiddler(creationFields,fields,modificationFields,{title: title}));\n\tif(this.actionSaveTitle) {\n\t\tthis.wiki.setTextReference(this.actionSaveTitle,title,this.getVariable(\"currentTiddler\"));\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-createtiddler\"] = CreateTiddlerWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/action-createtiddler.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-deletefield.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/action-deletefield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete fields of a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DeleteFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nDeleteFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this,\n\t\ttiddler = this.wiki.getTiddler(self.actionTiddler),\n\t\tremoveFields = {},\n\t\thasChanged = false;\n\tif(this.actionField) {\n\t\tremoveFields[this.actionField] = undefined;\n\t\tif(this.actionField in tiddler.fields) {\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(tiddler) {\n\t\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\t\tif(name.charAt(0) !== \"$\" && name !== \"title\") {\n\t\t\t\tremoveFields[name] = undefined;\n\t\t\t\thasChanged = true;\n\t\t\t}\n\t\t});\n\t\tif(hasChanged) {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,removeFields,this.wiki.getModificationFields()));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletefield\"] = DeleteFieldWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/action-deletefield.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-deletetiddler.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/action-deletetiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DeleteTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteTiddlerWidget.prototype.execute = function() {\n\tthis.actionFilter = this.getAttribute(\"$filter\");\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$filter\"] || changedAttributes[\"$tiddler\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nDeleteTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar tiddlers = [];\n\tif(this.actionFilter) {\n\t\ttiddlers = this.wiki.filterTiddlers(this.actionFilter,this);\n\t}\n\tif(this.actionTiddler) {\n\t\ttiddlers.push(this.actionTiddler);\n\t}\n\tfor(var t=0; t<tiddlers.length; t++) {\n\t\tthis.wiki.deleteTiddler(tiddlers[t]);\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletetiddler\"] = DeleteTiddlerWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/action-deletetiddler.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-listops.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/action-listops.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to apply list operations to any tiddler field (defaults to the 'list' field of the current tiddler)\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar ActionListopsWidget = function(parseTreeNode, options) {\n\tthis.initialise(parseTreeNode, options);\n};\n/**\n * Inherit from the base widget class\n */\nActionListopsWidget.prototype = new Widget();\n/**\n * Render this widget into the DOM\n */\nActionListopsWidget.prototype.render = function(parent, nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n/**\n * Compute the internal state of the widget\n */\nActionListopsWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.target = this.getAttribute(\"$tiddler\", this.getVariable(\n\t\t\"currentTiddler\"));\n\tthis.filter = this.getAttribute(\"$filter\");\n\tthis.subfilter = this.getAttribute(\"$subfilter\");\n\tthis.listField = this.getAttribute(\"$field\", \"list\");\n\tthis.listIndex = this.getAttribute(\"$index\");\n\tthis.filtertags = this.getAttribute(\"$tags\");\n};\n/**\n * \tRefresh the widget by ensuring our attributes are up to date\n */\nActionListopsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.$tiddler || changedAttributes.$filter ||\n\t\tchangedAttributes.$subfilter || changedAttributes.$field ||\n\t\tchangedAttributes.$index || changedAttributes.$tags) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n/**\n * \tInvoke the action associated with this widget\n */\nActionListopsWidget.prototype.invokeAction = function(triggeringWidget,\n\tevent) {\n\t//Apply the specified filters to the lists\n\tvar field = this.listField,\n\t\tindex,\n\t\ttype = \"!!\",\n\t\tlist = this.listField;\n\tif(this.listIndex) {\n\t\tfield = undefined;\n\t\tindex = this.listIndex;\n\t\ttype = \"##\";\n\t\tlist = this.listIndex;\n\t}\n\tif(this.filter) {\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(this.filter, this)));\n\t}\n\tif(this.subfilter) {\n\t\tvar subfilter = \"[list[\" + this.target + type + list + \"]] \" + this.subfilter;\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(subfilter, this)));\n\t}\n\tif(this.filtertags) {\n\t\tvar tiddler = this.wiki.getTiddler(this.target),\n\t\t\toldtags = tiddler ? (tiddler.fields.tags || []).slice(0) : [],\n\t\t\ttagfilter = \"[list[\" + this.target + \"!!tags]] \" + this.filtertags,\n\t\t\tnewtags = this.wiki.filterTiddlers(tagfilter,this);\n\t\tif($tw.utils.stringifyList(oldtags.sort()) !== $tw.utils.stringifyList(newtags.sort())) {\n\t\t\tthis.wiki.setText(this.target,\"tags\",undefined,$tw.utils.stringifyList(newtags));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-listops\"] = ActionListopsWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/action-listops.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-navigate.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/action-navigate.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to navigate to a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NavigateWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigateWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigateWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigateWidget.prototype.execute = function() {\n\tthis.actionTo = this.getAttribute(\"$to\");\n\tthis.actionScroll = this.getAttribute(\"$scroll\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nNavigateWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$to\"] || changedAttributes[\"$scroll\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nNavigateWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar bounds = triggeringWidget && triggeringWidget.getBoundingClientRect && triggeringWidget.getBoundingClientRect(),\n\t\tsuppressNavigation = event.metaKey || event.ctrlKey || (event.button === 1);\n\tif(this.actionScroll === \"yes\") {\n\t\tsuppressNavigation = false;\n\t} else if(this.actionScroll === \"no\") {\n\t\tsuppressNavigation = true;\n\t}\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.actionTo === undefined ? this.getVariable(\"currentTiddler\") : this.actionTo,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: triggeringWidget,\n\t\tnavigateFromClientRect: bounds && { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: suppressNavigation\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-navigate\"] = NavigateWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/action-navigate.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-sendmessage.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/action-sendmessage.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to send a message\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SendMessageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSendMessageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSendMessageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSendMessageWidget.prototype.execute = function() {\n\tthis.actionMessage = this.getAttribute(\"$message\");\n\tthis.actionParam = this.getAttribute(\"$param\");\n\tthis.actionName = this.getAttribute(\"$name\");\n\tthis.actionValue = this.getAttribute(\"$value\",\"\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSendMessageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(Object.keys(changedAttributes).length) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nSendMessageWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\t// Get the string parameter\n\tvar param = this.actionParam;\n\t// Assemble the attributes as a hashmap\n\tvar paramObject = Object.create(null);\n\tvar count = 0;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparamObject[name] = attribute;\n\t\t\tcount++;\n\t\t}\n\t});\n\t// Add name/value pair if present\n\tif(this.actionName) {\n\t\tparamObject[this.actionName] = this.actionValue;\n\t}\n\t// Dispatch the message\n\tthis.dispatchEvent({\n\t\ttype: this.actionMessage,\n\t\tparam: param,\n\t\tparamObject: paramObject,\n\t\ttiddlerTitle: this.getVariable(\"currentTiddler\"),\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tevent: event\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-sendmessage\"] = SendMessageWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/action-sendmessage.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-setfield.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/action-setfield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to set a single field or index on a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SetFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n\tthis.actionIndex = this.getAttribute(\"$index\");\n\tthis.actionValue = this.getAttribute(\"$value\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSetFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"] || changedAttributes[\"$field\"] || changedAttributes[\"$index\"] || changedAttributes[\"$value\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nSetFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this,\n\t\toptions = {};\n\toptions.suppressTimestamp = !this.actionTimestamp;\n\tif((typeof this.actionField == \"string\") || (typeof this.actionIndex == \"string\") || (typeof this.actionValue == \"string\")) {\n\t\tthis.wiki.setText(this.actionTiddler,this.actionField,this.actionIndex,this.actionValue,options);\n\t}\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tself.wiki.setText(self.actionTiddler,name,undefined,attribute,options);\n\t\t}\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-setfield\"] = SetFieldWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/action-setfield.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/browse.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/browse.js\ntype: application/javascript\nmodule-type: widget\n\nBrowse widget for browsing for files to import\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar BrowseWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nBrowseWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nBrowseWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"file\");\n\tif(this.browseMultiple) {\n\t\tdomNode.setAttribute(\"multiple\",\"multiple\");\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\t// Nw.js supports \"nwsaveas\" to force a \"save as\" dialogue that allows a new or existing file to be selected\n\tif(this.nwsaveas) {\n\t\tdomNode.setAttribute(\"nwsaveas\",this.nwsaveas);\n\t}\n\t// Nw.js supports \"webkitdirectory\" to allow a directory to be selected\n\tif(this.webkitdirectory) {\n\t\tdomNode.setAttribute(\"webkitdirectory\",this.webkitdirectory);\n\t}\n\t// Add a click event handler\n\tdomNode.addEventListener(\"change\",function (event) {\n\t\tif(self.message) {\n\t\t\tself.dispatchEvent({type: self.message, param: self.param, files: event.target.files});\n\t\t} else {\n\t\t\tself.wiki.readFiles(event.target.files,function(tiddlerFieldsArray) {\n\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nBrowseWidget.prototype.execute = function() {\n\tthis.browseMultiple = this.getAttribute(\"multiple\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.nwsaveas = this.getAttribute(\"nwsaveas\");\n\tthis.webkitdirectory = this.getAttribute(\"webkitdirectory\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nBrowseWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.browse = BrowseWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/browse.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/button.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/button.js\ntype: application/javascript\nmodule-type: widget\n\nButton widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ButtonWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nButtonWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nButtonWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar tag = \"button\";\n\tif(this.buttonTag && $tw.config.htmlUnsafeElements.indexOf(this.buttonTag) === -1) {\n\t\ttag = this.buttonTag;\n\t}\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = this[\"class\"].split(\" \") || [],\n\t\tisPoppedUp = this.popup && this.isPoppedUp();\n\tif(this.selectedClass) {\n\t\tif(this.set && this.setTo && this.isSelected()) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t\tif(isPoppedUp) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t}\n\tif(isPoppedUp) {\n\t\t$tw.utils.pushTop(classes,\"tc-popup-handle\");\n\t}\n\tdomNode.className = classes.join(\" \");\n\t// Assign other attributes\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Add a click event handler\n\tdomNode.addEventListener(\"click\",function (event) {\n\t\tvar handled = false;\n\t\tif(self.invokeActions(this,event)) {\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.to) {\n\t\t\tself.navigateTo(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.message) {\n\t\t\tself.dispatchMessage(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.popup) {\n\t\t\tself.triggerPopup(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.set) {\n\t\t\tself.setTiddler();\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.actions) {\n\t\t\tself.invokeActionString(self.actions,self,event);\n\t\t}\n\t\tif(handled) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t\treturn handled;\n\t},false);\n\t// Make it draggable if required\n\tif(this.dragTiddler || this.dragFilter) {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.dragTiddler;},\n\t\t\tdragFilterFn: function() {return self.dragFilter;},\n\t\t\twidget: this\n\t\t});\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nWe don't allow actions to propagate because we trigger actions ourselves\n*/\nButtonWidget.prototype.allowActionPropagation = function() {\n\treturn false;\n};\n\nButtonWidget.prototype.getBoundingClientRect = function() {\n\treturn this.domNodes[0].getBoundingClientRect();\n};\n\nButtonWidget.prototype.isSelected = function() {\n return this.wiki.getTextReference(this.set,this.defaultSetValue,this.getVariable(\"currentTiddler\")) === this.setTo;\n};\n\nButtonWidget.prototype.isPoppedUp = function() {\n\tvar tiddler = this.wiki.getTiddler(this.popup);\n\tvar result = tiddler && tiddler.fields.text ? $tw.popup.readPopupState(tiddler.fields.text) : false;\n\treturn result;\n};\n\nButtonWidget.prototype.navigateTo = function(event) {\n\tvar bounds = this.getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1),\n\t\tevent: event\n\t});\n};\n\nButtonWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\"), event: event});\n};\n\nButtonWidget.prototype.triggerPopup = function(event) {\n\t$tw.popup.triggerPopup({\n\t\tdomNode: this.domNodes[0],\n\t\ttitle: this.popup,\n\t\twiki: this.wiki\n\t});\n};\n\nButtonWidget.prototype.setTiddler = function() {\n\tthis.wiki.setTextReference(this.set,this.setTo,this.getVariable(\"currentTiddler\"));\n};\n\n/*\nCompute the internal state of the widget\n*/\nButtonWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\");\n\tthis.to = this.getAttribute(\"to\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.set = this.getAttribute(\"set\");\n\tthis.setTo = this.getAttribute(\"setTo\");\n\tthis.popup = this.getAttribute(\"popup\");\n\tthis.hover = this.getAttribute(\"hover\");\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.style = this.getAttribute(\"style\");\n\tthis.selectedClass = this.getAttribute(\"selectedClass\");\n\tthis.defaultSetValue = this.getAttribute(\"default\",\"\");\n\tthis.buttonTag = this.getAttribute(\"tag\");\n\tthis.dragTiddler = this.getAttribute(\"dragTiddler\");\n\tthis.dragFilter = this.getAttribute(\"dragFilter\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nButtonWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedAttributes.message || changedAttributes.param || changedAttributes.set || changedAttributes.setTo || changedAttributes.popup || changedAttributes.hover || changedAttributes[\"class\"] || changedAttributes.selectedClass || changedAttributes.style || changedAttributes.dragFilter || changedAttributes.dragTiddler || (this.set && changedTiddlers[this.set]) || (this.popup && changedTiddlers[this.popup])) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.button = ButtonWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/button.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/checkbox.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/checkbox.js\ntype: application/javascript\nmodule-type: widget\n\nCheckbox widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CheckboxWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCheckboxWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCheckboxWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",this.checkboxClass);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"checkbox\");\n\tif(this.getValue()) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nCheckboxWidget.prototype.getValue = function() {\n\tvar tiddler = this.wiki.getTiddler(this.checkboxTitle);\n\tif(tiddler) {\n\t\tif(this.checkboxTag) {\n\t\t\tif(this.checkboxInvertTag) {\n\t\t\t\treturn !tiddler.hasTag(this.checkboxTag);\n\t\t\t} else {\n\t\t\t\treturn tiddler.hasTag(this.checkboxTag);\n\t\t\t}\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tvar value;\n\t\t\tif($tw.utils.hop(tiddler.fields,this.checkboxField)) {\n\t\t\t\tvalue = tiddler.fields[this.checkboxField] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = this.checkboxDefault || \"\";\n\t\t\t}\n\t\t\tif(value === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(value === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\tif(this.checkboxIndex) {\n\t\t\tvar value = this.wiki.extractTiddlerDataItem(tiddler,this.checkboxIndex,this.checkboxDefault || \"\");\n\t\t\tif(value === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(value === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif(this.checkboxTag) {\n\t\t\treturn false;\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tif(this.checkboxDefault === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(this.checkboxDefault === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\nCheckboxWidget.prototype.handleChangeEvent = function(event) {\n\tvar checked = this.inputDomNode.checked,\n\t\ttiddler = this.wiki.getTiddler(this.checkboxTitle),\n\t\tfallbackFields = {text: \"\"},\n\t\tnewFields = {title: this.checkboxTitle},\n\t\thasChanged = false,\n\t\ttagCheck = false,\n\t\thasTag = tiddler && tiddler.hasTag(this.checkboxTag),\n\t\tvalue = checked ? this.checkboxChecked : this.checkboxUnchecked;\n\tif(this.checkboxTag && this.checkboxInvertTag === \"yes\") {\n\t\ttagCheck = hasTag === checked;\n\t} else {\n\t\ttagCheck = hasTag !== checked;\n\t}\n\t// Set the tag if specified\n\tif(this.checkboxTag && (!tiddler || tagCheck)) {\n\t\tnewFields.tags = tiddler ? (tiddler.fields.tags || []).slice(0) : [];\n\t\tvar pos = newFields.tags.indexOf(this.checkboxTag);\n\t\tif(pos !== -1) {\n\t\t\tnewFields.tags.splice(pos,1);\n\t\t}\n\t\tif(this.checkboxInvertTag === \"yes\" && !checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t} else if(this.checkboxInvertTag !== \"yes\" && checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t}\n\t\thasChanged = true;\n\t}\n\t// Set the field if specified\n\tif(this.checkboxField) {\n\t\tif(!tiddler || tiddler.fields[this.checkboxField] !== value) {\n\t\t\tnewFields[this.checkboxField] = value;\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\t// Set the index if specified\n\tif(this.checkboxIndex) {\n\t\tvar indexValue = this.wiki.extractTiddlerDataItem(this.checkboxTitle,this.checkboxIndex);\n\t\tif(!tiddler || indexValue !== value) {\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(hasChanged) {\n\t\tif(this.checkboxIndex) {\n\t\t\tthis.wiki.setText(this.checkboxTitle,\"\",this.checkboxIndex,value);\n\t\t} else {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),fallbackFields,tiddler,newFields,this.wiki.getModificationFields()));\n\t\t}\n\t}\n\t// Trigger actions\n\tif(this.checkboxActions) {\n\t\tthis.invokeActionString(this.checkboxActions,this,event);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCheckboxWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.checkboxActions = this.getAttribute(\"actions\");\n\tthis.checkboxTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.checkboxTag = this.getAttribute(\"tag\");\n\tthis.checkboxField = this.getAttribute(\"field\");\n\tthis.checkboxIndex = this.getAttribute(\"index\");\n\tthis.checkboxChecked = this.getAttribute(\"checked\");\n\tthis.checkboxUnchecked = this.getAttribute(\"unchecked\");\n\tthis.checkboxDefault = this.getAttribute(\"default\");\n\tthis.checkboxClass = this.getAttribute(\"class\",\"\");\n\tthis.checkboxInvertTag = this.getAttribute(\"invertTag\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCheckboxWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.tag || changedAttributes.invertTag || changedAttributes.field || changedAttributes.index || changedAttributes.checked || changedAttributes.unchecked || changedAttributes[\"default\"] || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.checkboxTitle]) {\n\t\t\tthis.inputDomNode.checked = this.getValue();\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.checkbox = CheckboxWidget;\n\n})();",
"title": "$:/core/modules/widgets/checkbox.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/codeblock.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/codeblock.js\ntype: application/javascript\nmodule-type: widget\n\nCode block node widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CodeBlockWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCodeBlockWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCodeBlockWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar codeNode = this.document.createElement(\"code\"),\n\t\tdomNode = this.document.createElement(\"pre\");\n\tcodeNode.appendChild(this.document.createTextNode(this.getAttribute(\"code\")));\n\tdomNode.appendChild(codeNode);\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n\tif(this.postRender) {\n\t\tthis.postRender();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCodeBlockWidget.prototype.execute = function() {\n\tthis.language = this.getAttribute(\"language\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCodeBlockWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.codeblock = CodeBlockWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/codeblock.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/count.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/count.js\ntype: application/javascript\nmodule-type: widget\n\nCount widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CountWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCountWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCountWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.currentCount);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nCountWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Execute the filter\n\tif(this.filter) {\n\t\tthis.currentCount = this.wiki.filterTiddlers(this.filter,this).length;\n\t} else {\n\t\tthis.currentCount = undefined;\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCountWidget.prototype.refresh = function(changedTiddlers) {\n\t// Re-execute the filter to get the count\n\tthis.computeAttributes();\n\tvar oldCount = this.currentCount;\n\tthis.execute();\n\tif(this.currentCount !== oldCount) {\n\t\t// Regenerate and rerender the widget and replace the existing DOM node\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n\n};\n\nexports.count = CountWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/count.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/draggable.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/draggable.js\ntype: application/javascript\nmodule-type: widget\n\nDraggable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DraggableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDraggableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDraggableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Sanitise the specified tag\n\tvar tag = this.draggableTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"div\";\n\t}\n\t// Create our element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = [\"tc-draggable\"];\n\tif(this.draggableClasses) {\n\t\tclasses.push(this.draggableClasses);\n\t}\n\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t// Add event handlers\n\t$tw.utils.makeDraggable({\n\t\tdomNode: domNode,\n\t\tdragTiddlerFn: function() {return self.getAttribute(\"tiddler\");},\n\t\tdragFilterFn: function() {return self.getAttribute(\"filter\");},\n\t\twidget: this\n\t});\n\t// Insert the link into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nDraggableWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.draggableTag = this.getAttribute(\"tag\",\"div\");\n\tthis.draggableClasses = this.getAttribute(\"class\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDraggableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedTiddlers.tag || changedTiddlers[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.draggable = DraggableWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/draggable.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/droppable.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/droppable.js\ntype: application/javascript\nmodule-type: widget\n\nDroppable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DroppableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDroppableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDroppableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.droppableTag && $tw.config.htmlUnsafeElements.indexOf(this.droppableTag) === -1) {\n\t\ttag = this.droppableTag;\n\t}\n\t// Create element and assign classes\n\tvar domNode = this.document.createElement(tag),\n\t\tclasses = (this[\"class\"] || \"\").split(\" \");\n\tclasses.push(\"tc-droppable\");\n\tdomNode.className = classes.join(\" \");\n\t// Add event handlers\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"}\n\t]);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDroppableWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDroppableWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally. The hacky second condition is to resolve a problem with Firefox whereby there is an erroneous dragenter event if the node being dragged is within the dropzone\n\tif(this.currentlyEntered.length === 0 || (this.currentlyEntered.length === 1 && this.currentlyEntered[0] === $tw.dragInProgress)) {\n\t\tthis.currentlyEntered = [];\n\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t}\n};\n\nDroppableWidget.prototype.handleDragEnterEvent = function(event) {\n\tthis.enterDrag(event);\n\t// Tell the browser that we're ready to handle the drop\n\tevent.preventDefault();\n\t// Tell the browser not to ripple the drag up to any parent drop handlers\n\tevent.stopPropagation();\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDragOverEvent = function(event) {\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\t// Set the drop effect\n\tevent.dataTransfer.dropEffect = this.droppableEffect;\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDragLeaveEvent = function(event) {\n\tthis.leaveDrag(event);\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDropEvent = function(event) {\n\tvar self = this;\n\tthis.leaveDrag(event);\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\tvar dataTransfer = event.dataTransfer;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Try to import the various data types we understand\n\t$tw.utils.importDataTransfer(dataTransfer,null,function(fieldsArray) {\n\t\tfieldsArray.forEach(function(fields) {\n\t\t\tself.performActions(fields.title || fields.text,event);\n\t\t});\n\t});\n\t// Tell the browser that we handled the drop\n\tevent.preventDefault();\n\t// Stop the drop ripple up to any parent handlers\n\tevent.stopPropagation();\n\treturn false;\n};\n\nDroppableWidget.prototype.performActions = function(title,event) {\n\tif(this.droppableActions) {\n\t\tthis.invokeActionString(this.droppableActions,this,event,{actionTiddler: title});\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDroppableWidget.prototype.execute = function() {\n\tthis.droppableActions = this.getAttribute(\"actions\");\n\tthis.droppableEffect = this.getAttribute(\"effect\",\"copy\");\n\tthis.droppableTag = this.getAttribute(\"tag\");\n\tthis.droppableClass = this.getAttribute(\"class\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDroppableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"class\"] || changedAttributes.tag) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.droppable = DroppableWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/droppable.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/dropzone.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/dropzone.js\ntype: application/javascript\nmodule-type: widget\n\nDropzone widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DropZoneWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDropZoneWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDropZoneWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"div\");\n\tdomNode.className = \"tc-dropzone\";\n\t// Add event handlers\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"},\n\t\t{name: \"paste\", handlerObject: this, handlerMethod: \"handlePasteEvent\"}\n\t]);\n\tdomNode.addEventListener(\"click\",function (event) {\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDropZoneWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDropZoneWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally\n\tif(this.currentlyEntered.length === 0) {\n\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t}\n};\n\nDropZoneWidget.prototype.handleDragEnterEvent = function(event) {\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tthis.enterDrag(event);\n\t// Tell the browser that we're ready to handle the drop\n\tevent.preventDefault();\n\t// Tell the browser not to ripple the drag up to any parent drop handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.handleDragOverEvent = function(event) {\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\t// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\tevent.dataTransfer.dropEffect = \"copy\"; // Explicitly show this is a copy\n};\n\nDropZoneWidget.prototype.handleDragLeaveEvent = function(event) {\n\tthis.leaveDrag(event);\n};\n\nDropZoneWidget.prototype.handleDropEvent = function(event) {\n\tvar self = this;\n\tthis.leaveDrag(event);\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tvar self = this,\n\t\tdataTransfer = event.dataTransfer;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Import any files in the drop\n\tvar numFiles = 0;\n\tif(dataTransfer.files) {\n\t\tnumFiles = this.wiki.readFiles(dataTransfer.files,function(tiddlerFieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t});\n\t}\n\t// Try to import the various data types we understand\n\tif(numFiles === 0) {\n\t\t$tw.utils.importDataTransfer(dataTransfer,this.wiki.generateNewTitle(\"Untitled\"),function(fieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(fieldsArray)});\n\t\t});\n\t}\n\t// Tell the browser that we handled the drop\n\tevent.preventDefault();\n\t// Stop the drop ripple up to any parent handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.handlePasteEvent = function(event) {\n\t// Let the browser handle it if we're in a textarea or input box\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) == -1) {\n\t\tvar self = this,\n\t\t\titems = event.clipboardData.items;\n\t\t// Enumerate the clipboard items\n\t\tfor(var t = 0; t<items.length; t++) {\n\t\t\tvar item = items[t];\n\t\t\tif(item.kind === \"file\") {\n\t\t\t\t// Import any files\n\t\t\t\tthis.wiki.readFile(item.getAsFile(),function(tiddlerFieldsArray) {\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t\t\t});\n\t\t\t} else if(item.kind === \"string\") {\n\t\t\t\t// Create tiddlers from string items\n\t\t\t\tvar type = item.type;\n\t\t\t\titem.getAsString(function(str) {\n\t\t\t\t\tvar tiddlerFields = {\n\t\t\t\t\t\ttitle: self.wiki.generateNewTitle(\"Untitled\"),\n\t\t\t\t\t\ttext: str,\n\t\t\t\t\t\ttype: type\n\t\t\t\t\t};\n\t\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\t\tconsole.log(\"Importing string '\" + str + \"', type: '\" + type + \"'\");\n\t\t\t\t\t}\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify([tiddlerFields])});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t// Tell the browser that we've handled the paste\n\t\tevent.stopPropagation();\n\t\tevent.preventDefault();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDropZoneWidget.prototype.execute = function() {\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDropZoneWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.dropzone = DropZoneWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/dropzone.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-binary.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-binary.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-binary widget; placeholder for editing binary tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar BINARY_WARNING_MESSAGE = \"$:/core/ui/BinaryWarning\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBinaryWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBinaryWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBinaryWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBinaryWidget.prototype.execute = function() {\n\t// Construct the child widgets\n\tthis.makeChildWidgets([{\n\t\ttype: \"transclude\",\n\t\tattributes: {\n\t\t\ttiddler: {type: \"string\", value: BINARY_WARNING_MESSAGE}\n\t\t}\n\t}]);\n};\n\n/*\nRefresh by refreshing our child widget\n*/\nEditBinaryWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"edit-binary\"] = EditBinaryWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/edit-binary.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-bitmap.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-bitmap.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-bitmap widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Default image sizes\nvar DEFAULT_IMAGE_WIDTH = 600,\n\tDEFAULT_IMAGE_HEIGHT = 370;\n\n// Configuration tiddlers\nvar LINE_WIDTH_TITLE = \"$:/config/BitmapEditor/LineWidth\",\n\tLINE_COLOUR_TITLE = \"$:/config/BitmapEditor/Colour\",\n\tLINE_OPACITY_TITLE = \"$:/config/BitmapEditor/Opacity\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBitmapWidget = function(parseTreeNode,options) {\n\t// Initialise the editor operations if they've not been done already\n\tif(!this.editorOperations) {\n\t\tEditBitmapWidget.prototype.editorOperations = {};\n\t\t$tw.modules.applyMethods(\"bitmapeditoroperation\",this.editorOperations);\n\t}\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBitmapWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBitmapWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create the wrapper for the toolbar and render its content\n\tthis.toolbarNode = this.document.createElement(\"div\");\n\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\tparent.insertBefore(this.toolbarNode,nextSibling);\n\tthis.domNodes.push(this.toolbarNode);\n\t// Create the on-screen canvas\n\tthis.canvasDomNode = $tw.utils.domMaker(\"canvas\",{\n\t\tdocument: this.document,\n\t\t\"class\":\"tc-edit-bitmapeditor\",\n\t\teventListeners: [{\n\t\t\tname: \"touchstart\", handlerObject: this, handlerMethod: \"handleTouchStartEvent\"\n\t\t},{\n\t\t\tname: \"touchmove\", handlerObject: this, handlerMethod: \"handleTouchMoveEvent\"\n\t\t},{\n\t\t\tname: \"touchend\", handlerObject: this, handlerMethod: \"handleTouchEndEvent\"\n\t\t},{\n\t\t\tname: \"mousedown\", handlerObject: this, handlerMethod: \"handleMouseDownEvent\"\n\t\t},{\n\t\t\tname: \"mousemove\", handlerObject: this, handlerMethod: \"handleMouseMoveEvent\"\n\t\t},{\n\t\t\tname: \"mouseup\", handlerObject: this, handlerMethod: \"handleMouseUpEvent\"\n\t\t}]\n\t});\n\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Render toolbar child widgets\n\tthis.renderChildren(this.toolbarNode,null);\n\t// // Insert the elements into the DOM\n\tparent.insertBefore(this.canvasDomNode,nextSibling);\n\tthis.domNodes.push(this.canvasDomNode);\n\t// Load the image into the canvas\n\tif($tw.browser) {\n\t\tthis.loadCanvas();\n\t}\n\t// Add widget message listeners\n\tthis.addEventListeners([\n\t\t{type: \"tm-edit-bitmap-operation\", handler: \"handleEditBitmapOperationMessage\"}\n\t]);\n};\n\n/*\nHandle an edit bitmap operation message from the toolbar\n*/\nEditBitmapWidget.prototype.handleEditBitmapOperationMessage = function(event) {\n\t// Invoke the handler\n\tvar handler = this.editorOperations[event.param];\n\tif(handler) {\n\t\thandler.call(this,event);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBitmapWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nJust refresh the toolbar\n*/\nEditBitmapWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nSet the bitmap size variables and refresh the toolbar\n*/\nEditBitmapWidget.prototype.refreshToolbar = function() {\n\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Refresh each of our child widgets\n\t$tw.utils.each(this.children,function(childWidget) {\n\t\tchildWidget.refreshSelf();\n\t});\n};\n\nEditBitmapWidget.prototype.loadCanvas = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle),\n\t\tcurrImage = new Image();\n\t// Set up event handlers for loading the image\n\tvar self = this;\n\tcurrImage.onload = function() {\n\t\t// Copy the image to the on-screen canvas\n\t\tself.initCanvas(self.canvasDomNode,currImage.width,currImage.height,currImage);\n\t\t// And also copy the current bitmap to the off-screen canvas\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,currImage.width,currImage.height,currImage);\n\t\t// Set the width and height input boxes\n\t\tself.refreshToolbar();\n\t};\n\tcurrImage.onerror = function() {\n\t\t// Set the on-screen canvas size and clear it\n\t\tself.initCanvas(self.canvasDomNode,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the off-screen canvas size and clear it\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the width and height input boxes\n\t\tself.refreshToolbar();\n\t};\n\t// Get the current bitmap into an image object\n\tcurrImage.src = \"data:\" + tiddler.fields.type + \";base64,\" + tiddler.fields.text;\n};\n\nEditBitmapWidget.prototype.initCanvas = function(canvas,width,height,image) {\n\tcanvas.width = width;\n\tcanvas.height = height;\n\tvar ctx = canvas.getContext(\"2d\");\n\tif(image) {\n\t\tctx.drawImage(image,0,0);\n\t} else {\n\t\tctx.fillStyle = \"#fff\";\n\t\tctx.fillRect(0,0,canvas.width,canvas.height);\n\t}\n};\n\n/*\n** Change the size of the canvas, preserving the current image\n*/\nEditBitmapWidget.prototype.changeCanvasSize = function(newWidth,newHeight) {\n\t// Create and size a new canvas\n\tvar newCanvas = this.document.createElement(\"canvas\");\n\tthis.initCanvas(newCanvas,newWidth,newHeight);\n\t// Copy the old image\n\tvar ctx = newCanvas.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Set the new canvas as the current one\n\tthis.currCanvas = newCanvas;\n\t// Set the size of the onscreen canvas\n\tthis.canvasDomNode.width = newWidth;\n\tthis.canvasDomNode.height = newHeight;\n\t// Paint the onscreen canvas with the offscreen canvas\n\tctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n};\n\nEditBitmapWidget.prototype.handleTouchStartEvent = function(event) {\n\tthis.brushDown = true;\n\tthis.strokeStart(event.touches[0].clientX,event.touches[0].clientY);\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.touches[0].clientX,event.touches[0].clientY);\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchEndEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseDownEvent = function(event) {\n\tthis.strokeStart(event.clientX,event.clientY);\n\tthis.brushDown = true;\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.clientX,event.clientY);\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.handleMouseUpEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.adjustCoordinates = function(x,y) {\n\tvar canvasRect = this.canvasDomNode.getBoundingClientRect(),\n\t\tscale = this.canvasDomNode.width/canvasRect.width;\n\treturn {x: (x - canvasRect.left) * scale, y: (y - canvasRect.top) * scale};\n};\n\nEditBitmapWidget.prototype.strokeStart = function(x,y) {\n\t// Start off a new stroke\n\tthis.stroke = [this.adjustCoordinates(x,y)];\n};\n\nEditBitmapWidget.prototype.strokeMove = function(x,y) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\"),\n\t\tt;\n\t// Add the new position to the end of the stroke\n\tthis.stroke.push(this.adjustCoordinates(x,y));\n\t// Redraw the previous image\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Render the stroke\n\tctx.globalAlpha = parseFloat(this.wiki.getTiddlerText(LINE_OPACITY_TITLE,\"1.0\"));\n\tctx.strokeStyle = this.wiki.getTiddlerText(LINE_COLOUR_TITLE,\"#ff0\");\n\tctx.lineWidth = parseFloat(this.wiki.getTiddlerText(LINE_WIDTH_TITLE,\"3\"));\n\tctx.lineCap = \"round\";\n\tctx.lineJoin = \"round\";\n\tctx.beginPath();\n\tctx.moveTo(this.stroke[0].x,this.stroke[0].y);\n\tfor(t=1; t<this.stroke.length-1; t++) {\n\t\tvar s1 = this.stroke[t],\n\t\t\ts2 = this.stroke[t-1],\n\t\t\ttx = (s1.x + s2.x)/2,\n\t\t\tty = (s1.y + s2.y)/2;\n\t\tctx.quadraticCurveTo(s2.x,s2.y,tx,ty);\n\t}\n\tctx.stroke();\n};\n\nEditBitmapWidget.prototype.strokeEnd = function() {\n\t// Copy the bitmap to the off-screen canvas\n\tvar ctx = this.currCanvas.getContext(\"2d\");\n\tctx.drawImage(this.canvasDomNode,0,0);\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\nEditBitmapWidget.prototype.saveChanges = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\tif(tiddler) {\n\t\t// data URIs look like \"data:<type>;base64,<text>\"\n\t\tvar dataURL = this.canvasDomNode.toDataURL(tiddler.fields.type),\n\t\t\tposColon = dataURL.indexOf(\":\"),\n\t\t\tposSemiColon = dataURL.indexOf(\";\"),\n\t\t\tposComma = dataURL.indexOf(\",\"),\n\t\t\ttype = dataURL.substring(posColon+1,posSemiColon),\n\t\t\ttext = dataURL.substring(posComma+1);\n\t\tvar update = {type: type, text: text};\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getModificationFields(),tiddler,update,this.wiki.getCreationFields()));\n\t}\n};\n\nexports[\"edit-bitmap\"] = EditBitmapWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/edit-bitmap.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-shortcut.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-shortcut.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to display an editable keyboard shortcut\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditShortcutWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditShortcutWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditShortcutWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.inputNode = this.document.createElement(\"input\");\n\t// Assign classes\n\tif(this.shortcutClass) {\n\t\tthis.inputNode.className = this.shortcutClass;\t\t\n\t}\n\t// Assign other attributes\n\tif(this.shortcutStyle) {\n\t\tthis.inputNode.setAttribute(\"style\",this.shortcutStyle);\n\t}\n\tif(this.shortcutTooltip) {\n\t\tthis.inputNode.setAttribute(\"title\",this.shortcutTooltip);\n\t}\n\tif(this.shortcutPlaceholder) {\n\t\tthis.inputNode.setAttribute(\"placeholder\",this.shortcutPlaceholder);\n\t}\n\tif(this.shortcutAriaLabel) {\n\t\tthis.inputNode.setAttribute(\"aria-label\",this.shortcutAriaLabel);\n\t}\n\t// Assign the current shortcut\n\tthis.updateInputNode();\n\t// Add event handlers\n\t$tw.utils.addEventListeners(this.inputNode,[\n\t\t{name: \"keydown\", handlerObject: this, handlerMethod: \"handleKeydownEvent\"}\n\t]);\n\t// Link into the DOM\n\tparent.insertBefore(this.inputNode,nextSibling);\n\tthis.domNodes.push(this.inputNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditShortcutWidget.prototype.execute = function() {\n\tthis.shortcutTiddler = this.getAttribute(\"tiddler\");\n\tthis.shortcutField = this.getAttribute(\"field\");\n\tthis.shortcutIndex = this.getAttribute(\"index\");\n\tthis.shortcutPlaceholder = this.getAttribute(\"placeholder\");\n\tthis.shortcutDefault = this.getAttribute(\"default\",\"\");\n\tthis.shortcutClass = this.getAttribute(\"class\");\n\tthis.shortcutStyle = this.getAttribute(\"style\");\n\tthis.shortcutTooltip = this.getAttribute(\"tooltip\");\n\tthis.shortcutAriaLabel = this.getAttribute(\"aria-label\");\n};\n\n/*\nUpdate the value of the input node\n*/\nEditShortcutWidget.prototype.updateInputNode = function() {\n\tif(this.shortcutField) {\n\t\tvar tiddler = this.wiki.getTiddler(this.shortcutTiddler);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,this.shortcutField)) {\n\t\t\tthis.inputNode.value = tiddler.getFieldString(this.shortcutField);\n\t\t} else {\n\t\t\tthis.inputNode.value = this.shortcutDefault;\n\t\t}\n\t} else if(this.shortcutIndex) {\n\t\tthis.inputNode.value = this.wiki.extractTiddlerDataItem(this.shortcutTiddler,this.shortcutIndex,this.shortcutDefault);\n\t} else {\n\t\tthis.inputNode.value = this.wiki.getTiddlerText(this.shortcutTiddler,this.shortcutDefault);\n\t}\n};\n\n/*\nHandle a dom \"keydown\" event\n*/\nEditShortcutWidget.prototype.handleKeydownEvent = function(event) {\n\t// Ignore shift, ctrl, meta, alt\n\tif(event.keyCode && $tw.keyboardManager.getModifierKeys().indexOf(event.keyCode) === -1) {\n\t\t// Get the shortcut text representation\n\t\tvar value = $tw.keyboardManager.getPrintableShortcuts([{\n\t\t\tctrlKey: event.ctrlKey,\n\t\t\tshiftKey: event.shiftKey,\n\t\t\taltKey: event.altKey,\n\t\t\tmetaKey: event.metaKey,\n\t\t\tkeyCode: event.keyCode\n\t\t}]);\n\t\tif(value.length > 0) {\n\t\t\tthis.wiki.setText(this.shortcutTiddler,this.shortcutField,this.shortcutIndex,value[0]);\n\t\t}\n\t\t// Ignore the keydown if it was already handled\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn true;\t\t\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget needed re-rendering\n*/\nEditShortcutWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.placeholder || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.style || changedAttributes.tooltip || changedAttributes[\"aria-label\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedTiddlers[this.shortcutTiddler]) {\n\t\tthis.updateInputNode();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports[\"edit-shortcut\"] = EditShortcutWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/edit-shortcut.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-text.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-text.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-text widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar editTextWidgetFactory = require(\"$:/core/modules/editor/factory.js\").editTextWidgetFactory,\n\tFramedEngine = require(\"$:/core/modules/editor/engines/framed.js\").FramedEngine,\n\tSimpleEngine = require(\"$:/core/modules/editor/engines/simple.js\").SimpleEngine;\n\nexports[\"edit-text\"] = editTextWidgetFactory(FramedEngine,SimpleEngine);\n\n})();\n",
"title": "$:/core/modules/widgets/edit-text.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/edit.js\ntype: application/javascript\nmodule-type: widget\n\nEdit widget is a meta-widget chooses the appropriate actual editting widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n// Mappings from content type to editor type are stored in tiddlers with this prefix\nvar EDITOR_MAPPING_PREFIX = \"$:/config/EditorTypeMappings/\";\n\n/*\nCompute the internal state of the widget\n*/\nEditWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.editField = this.getAttribute(\"field\",\"text\");\n\tthis.editIndex = this.getAttribute(\"index\");\n\tthis.editClass = this.getAttribute(\"class\");\n\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\t// Choose the appropriate edit widget\n\tthis.editorType = this.getEditorType();\n\t// Make the child widgets\n\tthis.makeChildWidgets([{\n\t\ttype: \"edit-\" + this.editorType,\n\t\tattributes: {\n\t\t\ttiddler: {type: \"string\", value: this.editTitle},\n\t\t\tfield: {type: \"string\", value: this.editField},\n\t\t\tindex: {type: \"string\", value: this.editIndex},\n\t\t\t\"class\": {type: \"string\", value: this.editClass},\n\t\t\t\"placeholder\": {type: \"string\", value: this.editPlaceholder}\n\t\t},\n\t\tchildren: this.parseTreeNode.children\n\t}]);\n};\n\nEditWidget.prototype.getEditorType = function() {\n\t// Get the content type of the thing we're editing\n\tvar type;\n\tif(this.editField === \"text\") {\n\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\tif(tiddler) {\n\t\t\ttype = tiddler.fields.type;\n\t\t}\n\t}\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar editorType = this.wiki.getTiddlerText(EDITOR_MAPPING_PREFIX + type);\n\tif(!editorType) {\n\t\tvar typeInfo = $tw.config.contentTypeInfo[type];\n\t\tif(typeInfo && typeInfo.encoding === \"base64\") {\n\t\t\teditorType = \"binary\";\n\t\t} else {\n\t\t\teditorType = \"text\";\n\t\t}\n\t}\n\treturn editorType;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEditWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh if an attribute has changed, or the type associated with the target tiddler has changed\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || (changedTiddlers[this.editTitle] && this.getEditorType() !== this.editorType)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.edit = EditWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/edit.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/element.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/element.js\ntype: application/javascript\nmodule-type: widget\n\nElement widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ElementWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nElementWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nElementWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Neuter blacklisted elements\n\tvar tag = this.parseTreeNode.tag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"safe-\" + tag;\n\t}\n\tvar domNode = this.document.createElementNS(this.namespace,tag);\n\tthis.assignAttributes(domNode,{excludeEventAttributes: true});\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nElementWidget.prototype.execute = function() {\n\t// Select the namespace for the tag\n\tvar tagNamespaces = {\n\t\t\tsvg: \"http://www.w3.org/2000/svg\",\n\t\t\tmath: \"http://www.w3.org/1998/Math/MathML\",\n\t\t\tbody: \"http://www.w3.org/1999/xhtml\"\n\t\t};\n\tthis.namespace = tagNamespaces[this.parseTreeNode.tag];\n\tif(this.namespace) {\n\t\tthis.setVariable(\"namespace\",this.namespace);\n\t} else {\n\t\tthis.namespace = this.getVariable(\"namespace\",{defaultValue: \"http://www.w3.org/1999/xhtml\"});\n\t}\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nElementWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\thasChangedAttributes = $tw.utils.count(changedAttributes) > 0;\n\tif(hasChangedAttributes) {\n\t\t// Update our attributes\n\t\tthis.assignAttributes(this.domNodes[0],{excludeEventAttributes: true});\n\t}\n\treturn this.refreshChildren(changedTiddlers) || hasChangedAttributes;\n};\n\nexports.element = ElementWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/element.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/encrypt.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/encrypt.js\ntype: application/javascript\nmodule-type: widget\n\nEncrypt widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EncryptWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEncryptWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEncryptWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.encryptedText);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEncryptWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\",\"[!is[system]]\");\n\t// Encrypt the filtered tiddlers\n\tvar tiddlers = this.wiki.filterTiddlers(this.filter),\n\t\tjson = {},\n\t\tself = this;\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title),\n\t\t\tjsonTiddler = {};\n\t\tfor(var f in tiddler.fields) {\n\t\t\tjsonTiddler[f] = tiddler.getFieldString(f);\n\t\t}\n\t\tjson[title] = jsonTiddler;\n\t});\n\tthis.encryptedText = $tw.utils.htmlEncode($tw.crypto.encrypt(JSON.stringify(json)));\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEncryptWidget.prototype.refresh = function(changedTiddlers) {\n\t// We don't need to worry about refreshing because the encrypt widget isn't for interactive use\n\treturn false;\n};\n\nexports.encrypt = EncryptWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/encrypt.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/entity.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/entity.js\ntype: application/javascript\nmodule-type: widget\n\nHTML entity widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EntityWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEntityWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEntityWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tvar entityString = this.getAttribute(\"entity\",this.parseTreeNode.entity || \"\"),\n\t\ttextNode = this.document.createTextNode($tw.utils.entityDecode(entityString));\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEntityWidget.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEntityWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.entity) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.entity = EntityWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/entity.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/fieldmangler.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/fieldmangler.js\ntype: application/javascript\nmodule-type: widget\n\nField mangler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FieldManglerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-remove-field\", handler: \"handleRemoveFieldEvent\"},\n\t\t{type: \"tm-add-field\", handler: \"handleAddFieldEvent\"},\n\t\t{type: \"tm-remove-tag\", handler: \"handleRemoveTagEvent\"},\n\t\t{type: \"tm-add-tag\", handler: \"handleAddTagEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldManglerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldManglerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldManglerWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.mangleTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldManglerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nFieldManglerWidget.prototype.handleRemoveFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tdeletion = {};\n\tdeletion[event.param] = undefined;\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,deletion));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\taddition = this.wiki.getModificationFields(),\n\t\thadInvalidFieldName = false,\n\t\taddField = function(name,value) {\n\t\t\tvar trimmedName = name.toLowerCase().trim();\n\t\t\tif(!$tw.utils.isValidFieldName(trimmedName)) {\n\t\t\t\tif(!hadInvalidFieldName) {\n\t\t\t\t\talert($tw.language.getString(\n\t\t\t\t\t\t\"InvalidFieldName\",\n\t\t\t\t\t\t{variables:\n\t\t\t\t\t\t\t{fieldName: trimmedName}\n\t\t\t\t\t\t}\n\t\t\t\t\t));\n\t\t\t\t\thadInvalidFieldName = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif(!value && tiddler) {\n\t\t\t\t\tvalue = tiddler.fields[trimmedName];\n\t\t\t\t}\n\t\t\t\taddition[trimmedName] = value || \"\";\n\t\t\t}\n\t\t\treturn;\n\t\t};\n\taddition.title = this.mangleTitle;\n\tif(typeof event.param === \"string\") {\n\t\taddField(event.param,\"\");\n\t}\n\tif(typeof event.paramObject === \"object\") {\n\t\tfor(var name in event.paramObject) {\n\t\t\taddField(name,event.paramObject[name]);\n\t\t}\n\t}\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,addition));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleRemoveTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle);\n\tif(tiddler && tiddler.fields.tags) {\n\t\tvar p = tiddler.fields.tags.indexOf(event.param);\n\t\tif(p !== -1) {\n\t\t\tvar modification = this.wiki.getModificationFields();\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\tmodification.tags.splice(p,1);\n\t\t\tif(modification.tags.length === 0) {\n\t\t\t\tmodification.tags = undefined;\n\t\t\t}\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\n\t\t}\n\t}\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle);\n\tif(tiddler && typeof event.param === \"string\") {\n\t\tvar tag = event.param.trim();\n\t\tif(tag !== \"\") {\n\t\t\tvar modification = this.wiki.getModificationFields();\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\t$tw.utils.pushTop(modification.tags,tag);\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\t\t\t\n\t\t}\n\t} else if(typeof event.param === \"string\" && event.param.trim() !== \"\" && this.mangleTitle.trim() !== \"\") {\n\t\tvar tag = [];\n\t\ttag.push(event.param.trim());\n\t\tthis.wiki.addTiddler({title: this.mangleTitle, tags: tag});\t\t\n\t}\n\treturn true;\n};\n\nexports.fieldmangler = FieldManglerWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/fieldmangler.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/fields.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/fields.js\ntype: application/javascript\nmodule-type: widget\n\nFields widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FieldsWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldsWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldsWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.template = this.getAttribute(\"template\");\n\tthis.exclude = this.getAttribute(\"exclude\");\n\tthis.stripTitlePrefix = this.getAttribute(\"stripTitlePrefix\",\"no\") === \"yes\";\n\t// Get the value to display\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\t// Get the exclusion list\n\tvar exclude;\n\tif(this.exclude) {\n\t\texclude = this.exclude.split(\" \");\n\t} else {\n\t\texclude = [\"text\"]; \n\t}\n\t// Compose the template\n\tvar text = [];\n\tif(this.template && tiddler) {\n\t\tvar fields = [];\n\t\tfor(var fieldName in tiddler.fields) {\n\t\t\tif(exclude.indexOf(fieldName) === -1) {\n\t\t\t\tfields.push(fieldName);\n\t\t\t}\n\t\t}\n\t\tfields.sort();\n\t\tfor(var f=0; f<fields.length; f++) {\n\t\t\tfieldName = fields[f];\n\t\t\tif(exclude.indexOf(fieldName) === -1) {\n\t\t\t\tvar row = this.template,\n\t\t\t\t\tvalue = tiddler.getFieldString(fieldName);\n\t\t\t\tif(this.stripTitlePrefix && fieldName === \"title\") {\n\t\t\t\t\tvar reStrip = /^\\{[^\\}]+\\}(.+)/mg,\n\t\t\t\t\t\treMatch = reStrip.exec(value);\n\t\t\t\t\tif(reMatch) {\n\t\t\t\t\t\tvalue = reMatch[1];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trow = $tw.utils.replaceString(row,\"$name$\",fieldName);\n\t\t\t\trow = $tw.utils.replaceString(row,\"$value$\",value);\n\t\t\t\trow = $tw.utils.replaceString(row,\"$encoded_value$\",$tw.utils.htmlEncode(value));\n\t\t\t\ttext.push(row);\n\t\t\t}\n\t\t}\n\t}\n\tthis.text = text.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.template || changedAttributes.exclude || changedAttributes.stripTitlePrefix || changedTiddlers[this.tiddlerTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.fields = FieldsWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/fields.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/image.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/image.js\ntype: application/javascript\nmodule-type: widget\n\nThe image widget displays an image referenced with an external URI or with a local tiddler title.\n\n```\n<$image src=\"TiddlerTitle\" width=\"320\" height=\"400\" class=\"classnames\">\n```\n\nThe image source can be the title of an existing tiddler or the URL of an external image.\n\nExternal images always generate an HTML `<img>` tag.\n\nTiddlers that have a _canonical_uri field generate an HTML `<img>` tag with the src attribute containing the URI.\n\nTiddlers that contain image data generate an HTML `<img>` tag with the src attribute containing a base64 representation of the image.\n\nTiddlers that contain wikitext could be rendered to a DIV of the usual size of a tiddler, and then transformed to the size requested.\n\nThe width and height attributes are interpreted as a number of pixels, and do not need to include the \"px\" suffix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ImageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\t// Determine what type of image it is\n\tvar tag = \"img\", src = \"\",\n\t\ttiddler = this.wiki.getTiddler(this.imageSource);\n\tif(!tiddler) {\n\t\t// The source isn't the title of a tiddler, so we'll assume it's a URL\n\t\tsrc = this.getVariable(\"tv-get-export-image-link\",{params: [{name: \"src\",value: this.imageSource}],defaultValue: this.imageSource});\n\t} else {\n\t\t// Check if it is an image tiddler\n\t\tif(this.wiki.isImageTiddler(this.imageSource)) {\n\t\t\tvar type = tiddler.fields.type,\n\t\t\t\ttext = tiddler.fields.text,\n\t\t\t\t_canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t// If the tiddler has body text then it doesn't need to be lazily loaded\n\t\t\tif(text) {\n\t\t\t\t// Render the appropriate element for the image type\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = \"data:application/pdf;base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = \"data:image/svg+xml,\" + encodeURIComponent(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = \"data:\" + type + \";base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else if(_canonical_uri) {\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\t\n\t\t\t} else {\n\t\t\t\t// Just trigger loading of the tiddler\n\t\t\t\tthis.wiki.getTiddlerText(this.imageSource);\n\t\t\t}\n\t\t}\n\t}\n\t// Create the element and assign the attributes\n\tvar domNode = this.document.createElement(tag);\n\tdomNode.setAttribute(\"src\",src);\n\tif(this.imageClass) {\n\t\tdomNode.setAttribute(\"class\",this.imageClass);\t\t\n\t}\n\tif(this.imageWidth) {\n\t\tdomNode.setAttribute(\"width\",this.imageWidth);\n\t}\n\tif(this.imageHeight) {\n\t\tdomNode.setAttribute(\"height\",this.imageHeight);\n\t}\n\tif(this.imageTooltip) {\n\t\tdomNode.setAttribute(\"title\",this.imageTooltip);\t\t\n\t}\n\tif(this.imageAlt) {\n\t\tdomNode.setAttribute(\"alt\",this.imageAlt);\t\t\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImageWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.imageSource = this.getAttribute(\"source\");\n\tthis.imageWidth = this.getAttribute(\"width\");\n\tthis.imageHeight = this.getAttribute(\"height\");\n\tthis.imageClass = this.getAttribute(\"class\");\n\tthis.imageTooltip = this.getAttribute(\"tooltip\");\n\tthis.imageAlt = this.getAttribute(\"alt\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.source || changedAttributes.width || changedAttributes.height || changedAttributes[\"class\"] || changedAttributes.tooltip || changedTiddlers[this.imageSource]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\t\n\t}\n};\n\nexports.image = ImageWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/image.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/importvariables.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/importvariables.js\ntype: application/javascript\nmodule-type: widget\n\nImport variable definitions from other tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ImportVariablesWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImportVariablesWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImportVariablesWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImportVariablesWidget.prototype.execute = function(tiddlerList) {\n\tvar self = this;\n\t// Get our parameters\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Compute the filter\n\tthis.tiddlerList = tiddlerList || this.wiki.filterTiddlers(this.filter,this);\n\t// Accumulate the <$set> widgets from each tiddler\n\tvar widgetStackStart,widgetStackEnd;\n\tfunction addWidgetNode(widgetNode) {\n\t\tif(widgetNode) {\n\t\t\tif(!widgetStackStart && !widgetStackEnd) {\n\t\t\t\twidgetStackStart = widgetNode;\n\t\t\t\twidgetStackEnd = widgetNode;\n\t\t\t} else {\n\t\t\t\twidgetStackEnd.children = [widgetNode];\n\t\t\t\twidgetStackEnd = widgetNode;\n\t\t\t}\n\t\t}\n\t}\n\t$tw.utils.each(this.tiddlerList,function(title) {\n\t\tvar parser = self.wiki.parseTiddler(title);\n\t\tif(parser) {\n\t\t\tvar parseTreeNode = parser.tree[0];\n\t\t\twhile(parseTreeNode && parseTreeNode.type === \"set\") {\n\t\t\t\taddWidgetNode({\n\t\t\t\t\ttype: \"set\",\n\t\t\t\t\tattributes: parseTreeNode.attributes,\n\t\t\t\t\tparams: parseTreeNode.params\n\t\t\t\t});\n\t\t\t\tparseTreeNode = parseTreeNode.children[0];\n\t\t\t}\n\t\t} \n\t});\n\t// Add our own children to the end of the pile\n\tvar parseTreeNodes;\n\tif(widgetStackStart && widgetStackEnd) {\n\t\tparseTreeNodes = [widgetStackStart];\n\t\twidgetStackEnd.children = this.parseTreeNode.children;\n\t} else {\n\t\tparseTreeNodes = this.parseTreeNode.children;\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImportVariablesWidget.prototype.refresh = function(changedTiddlers) {\n\t// Recompute our attributes and the filter list\n\tvar changedAttributes = this.computeAttributes(),\n\t\ttiddlerList = this.wiki.filterTiddlers(this.getAttribute(\"filter\"),this);\n\t// Refresh if the filter has changed, or the list of tiddlers has changed, or any of the tiddlers in the list has changed\n\tfunction haveListedTiddlersChanged() {\n\t\tvar changed = false;\n\t\ttiddlerList.forEach(function(title) {\n\t\t\tif(changedTiddlers[title]) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t});\n\t\treturn changed;\n\t}\n\tif(changedAttributes.filter || !$tw.utils.isArrayEqual(this.tiddlerList,tiddlerList) || haveListedTiddlersChanged()) {\n\t\t// Compute the filter\n\t\tthis.removeChildDomNodes();\n\t\tthis.execute(tiddlerList);\n\t\tthis.renderChildren(this.parentDomNode,this.findNextSiblingDomNode());\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.importvariables = ImportVariablesWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/importvariables.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/keyboard.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/keyboard.js\ntype: application/javascript\nmodule-type: widget\n\nKeyboard shortcut widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar KeyboardWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nKeyboardWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nKeyboardWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.tag && $tw.config.htmlUnsafeElements.indexOf(this.tag) === -1) {\n\t\ttag = this.tag;\n\t}\n\t// Create element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = (this[\"class\"] || \"\").split(\" \");\n\tclasses.push(\"tc-keyboard\");\n\tdomNode.className = classes.join(\" \");\n\t// Add a keyboard event handler\n\tdomNode.addEventListener(\"keydown\",function (event) {\n\t\tif($tw.keyboardManager.checkKeyDescriptors(event,self.keyInfoArray)) {\n\t\t\tself.invokeActions(self,event);\n\t\t\tif(self.actions) {\n\t\t\t\tself.invokeActionString(self.actions,self,event);\n\t\t\t}\n\t\t\tself.dispatchMessage(event);\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nKeyboardWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\")});\n};\n\n/*\nCompute the internal state of the widget\n*/\nKeyboardWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.key = this.getAttribute(\"key\");\n\tthis.tag = this.getAttribute(\"tag\");\n\tthis.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);\n\tthis[\"class\"] = this.getAttribute(\"class\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nKeyboardWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.message || changedAttributes.param || changedAttributes.key || changedAttributes[\"class\"] || changedAttributes.tag) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.keyboard = KeyboardWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/keyboard.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/link.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/link.js\ntype: application/javascript\nmodule-type: widget\n\nLink widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar MISSING_LINK_CONFIG_TITLE = \"$:/config/MissingLinks\";\n\nvar LinkWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the value of the tv-wikilinks configuration macro\n\tvar wikiLinksMacro = this.getVariable(\"tv-wikilinks\"),\n\t\tuseWikiLinks = wikiLinksMacro ? (wikiLinksMacro.trim() !== \"no\") : true,\n\t\tmissingLinksEnabled = !(this.hideMissingLinks && this.isMissing && !this.isShadow);\n\t// Render the link if required\n\tif(useWikiLinks && missingLinksEnabled) {\n\t\tthis.renderLink(parent,nextSibling);\n\t} else {\n\t\t// Just insert the link text\n\t\tvar domNode = this.document.createElement(\"span\");\n\t\tparent.insertBefore(domNode,nextSibling);\n\t\tthis.renderChildren(domNode,null);\n\t\tthis.domNodes.push(domNode);\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.renderLink = function(parent,nextSibling) {\n\tvar self = this;\n\t// Sanitise the specified tag\n\tvar tag = this.linkTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"a\";\n\t}\n\t// Create our element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = [];\n\tif(this.linkClasses) {\n\t\tclasses.push(this.linkClasses);\n\t}\n\tclasses.push(\"tc-tiddlylink\");\n\tif(this.isShadow) {\n\t\tclasses.push(\"tc-tiddlylink-shadow\");\n\t}\n\tif(this.isMissing && !this.isShadow) {\n\t\tclasses.push(\"tc-tiddlylink-missing\");\n\t} else {\n\t\tif(!this.isMissing) {\n\t\t\tclasses.push(\"tc-tiddlylink-resolves\");\n\t\t}\n\t}\n\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t// Set an href\n\tvar wikiLinkTemplateMacro = this.getVariable(\"tv-wikilink-template\"),\n\t\twikiLinkTemplate = wikiLinkTemplateMacro ? wikiLinkTemplateMacro.trim() : \"#$uri_encoded$\",\n\t\twikiLinkText = $tw.utils.replaceString(wikiLinkTemplate,\"$uri_encoded$\",encodeURIComponent(this.to));\n\twikiLinkText = $tw.utils.replaceString(wikiLinkText,\"$uri_doubleencoded$\",encodeURIComponent(encodeURIComponent(this.to)));\n\twikiLinkText = this.getVariable(\"tv-get-export-link\",{params: [{name: \"to\",value: this.to}],defaultValue: wikiLinkText});\n\tif(tag === \"a\") {\n\t\tdomNode.setAttribute(\"href\",wikiLinkText);\n\t}\n\tif(this.tabIndex) {\n\t\tdomNode.setAttribute(\"tabindex\",this.tabIndex);\n\t}\n\t// Set the tooltip\n\t// HACK: Performance issues with re-parsing the tooltip prevent us defaulting the tooltip to \"<$transclude field='tooltip'><$transclude field='title'/></$transclude>\"\n\tvar tooltipWikiText = this.tooltip || this.getVariable(\"tv-wikilink-tooltip\");\n\tif(tooltipWikiText) {\n\t\tvar tooltipText = this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",tooltipWikiText,{\n\t\t\t\tparseAsInline: true,\n\t\t\t\tvariables: {\n\t\t\t\t\tcurrentTiddler: this.to\n\t\t\t\t},\n\t\t\t\tparentWidget: this\n\t\t\t});\n\t\tdomNode.setAttribute(\"title\",tooltipText);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"click\", handlerObject: this, handlerMethod: \"handleClickEvent\"},\n\t]);\n\t// Make the link draggable if required\n\tif(this.draggable === \"yes\") {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.to;},\n\t\t\twidget: this\n\t\t});\n\t}\n\t// Insert the link into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nLinkWidget.prototype.handleClickEvent = function(event) {\n\t// Send the click on its way as a navigate event\n\tvar bounds = this.domNodes[0].getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1)\n\t});\n\tif(this.domNodes[0].hasAttribute(\"href\")) {\n\t\tevent.preventDefault();\n\t}\n\tevent.stopPropagation();\n\treturn false;\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.to = this.getAttribute(\"to\",this.getVariable(\"currentTiddler\"));\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.linkClasses = this.getAttribute(\"class\");\n\tthis.tabIndex = this.getAttribute(\"tabindex\");\n\tthis.draggable = this.getAttribute(\"draggable\",\"yes\");\n\tthis.linkTag = this.getAttribute(\"tag\",\"a\");\n\t// Determine the link characteristics\n\tthis.isMissing = !this.wiki.tiddlerExists(this.to);\n\tthis.isShadow = this.wiki.isShadowTiddler(this.to);\n\tthis.hideMissingLinks = ($tw.wiki.getTiddlerText(MISSING_LINK_CONFIG_TITLE,\"yes\") === \"no\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedTiddlers[this.to] || changedAttributes[\"aria-label\"] || changedAttributes.tooltip || changedTiddlers[MISSING_LINK_CONFIG_TITLE]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.link = LinkWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/link.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/linkcatcher.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/linkcatcher.js\ntype: application/javascript\nmodule-type: widget\n\nLinkcatcher widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LinkCatcherWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkCatcherWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkCatcherWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkCatcherWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.catchTo = this.getAttribute(\"to\");\n\tthis.catchMessage = this.getAttribute(\"message\");\n\tthis.catchSet = this.getAttribute(\"set\");\n\tthis.catchSetTo = this.getAttribute(\"setTo\");\n\tthis.catchActions = this.getAttribute(\"actions\");\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkCatcherWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedAttributes.message || changedAttributes.set || changedAttributes.setTo) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\n/*\nHandle a tm-navigate event\n*/\nLinkCatcherWidget.prototype.handleNavigateEvent = function(event) {\n\tif(this.catchTo) {\n\t\tthis.wiki.setTextReference(this.catchTo,event.navigateTo,this.getVariable(\"currentTiddler\"));\n\t}\n\tif(this.catchMessage && this.parentWidget) {\n\t\tthis.parentWidget.dispatchEvent({\n\t\t\ttype: this.catchMessage,\n\t\t\tparam: event.navigateTo,\n\t\t\tnavigateTo: event.navigateTo\n\t\t});\n\t}\n\tif(this.catchSet) {\n\t\tvar tiddler = this.wiki.getTiddler(this.catchSet);\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,{title: this.catchSet, text: this.catchSetTo}));\n\t}\n\tif(this.catchActions) {\n\t\tthis.invokeActionString(this.catchActions,this);\n\t}\n\treturn false;\n};\n\nexports.linkcatcher = LinkCatcherWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/linkcatcher.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/list.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/list.js\ntype: application/javascript\nmodule-type: widget\n\nList and list item widgets\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\n/*\nThe list widget creates list element sub-widgets that reach back into the list widget for their configuration\n*/\n\nvar ListWidget = function(parseTreeNode,options) {\n\t// Initialise the storyviews if they've not been done already\n\tif(!this.storyViews) {\n\t\tListWidget.prototype.storyViews = {};\n\t\t$tw.modules.applyMethods(\"storyview\",this.storyViews);\n\t}\n\t// Main initialisation inherited from widget.js\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\t// Construct the storyview\n\tvar StoryView = this.storyViews[this.storyViewName];\n\tif(this.storyViewName && !StoryView) {\n\t\tStoryView = this.storyViews[\"classic\"];\n\t}\n\tif(StoryView && !this.document.isTiddlyWikiFakeDom) {\n\t\tthis.storyview = new StoryView(this);\n\t} else {\n\t\tthis.storyview = null;\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nListWidget.prototype.execute = function() {\n\t// Get our attributes\n\tthis.template = this.getAttribute(\"template\");\n\tthis.editTemplate = this.getAttribute(\"editTemplate\");\n\tthis.variableName = this.getAttribute(\"variable\",\"currentTiddler\");\n\tthis.storyViewName = this.getAttribute(\"storyview\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\t// Compose the list elements\n\tthis.list = this.getTiddlerList();\n\tvar members = [],\n\t\tself = this;\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\tmembers = this.getEmptyMessage();\n\t} else {\n\t\t$tw.utils.each(this.list,function(title,index) {\n\t\t\tmembers.push(self.makeItemTemplate(title));\n\t\t});\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(members);\n\t// Clear the last history\n\tthis.history = [];\n};\n\nListWidget.prototype.getTiddlerList = function() {\n\tvar defaultFilter = \"[!is[system]sort[title]]\";\n\treturn this.wiki.filterTiddlers(this.getAttribute(\"filter\",defaultFilter),this);\n};\n\nListWidget.prototype.getEmptyMessage = function() {\n\tvar emptyMessage = this.getAttribute(\"emptyMessage\",\"\"),\n\t\tparser = this.wiki.parseText(\"text/vnd.tiddlywiki\",emptyMessage,{parseAsInline: true});\n\tif(parser) {\n\t\treturn parser.tree;\n\t} else {\n\t\treturn [];\n\t}\n};\n\n/*\nCompose the template for a list item\n*/\nListWidget.prototype.makeItemTemplate = function(title) {\n\t// Check if the tiddler is a draft\n\tvar tiddler = this.wiki.getTiddler(title),\n\t\tisDraft = tiddler && tiddler.hasField(\"draft.of\"),\n\t\ttemplate = this.template,\n\t\ttemplateTree;\n\tif(isDraft && this.editTemplate) {\n\t\ttemplate = this.editTemplate;\n\t}\n\t// Compose the transclusion of the template\n\tif(template) {\n\t\ttemplateTree = [{type: \"transclude\", attributes: {tiddler: {type: \"string\", value: template}}}];\n\t} else {\n\t\tif(this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\t\ttemplateTree = this.parseTreeNode.children;\n\t\t} else {\n\t\t\t// Default template is a link to the title\n\t\t\ttemplateTree = [{type: \"element\", tag: this.parseTreeNode.isBlock ? \"div\" : \"span\", children: [{type: \"link\", attributes: {to: {type: \"string\", value: title}}, children: [\n\t\t\t\t\t{type: \"text\", text: title}\n\t\t\t]}]}];\n\t\t}\n\t}\n\t// Return the list item\n\treturn {type: \"listitem\", itemTitle: title, variableName: this.variableName, children: templateTree};\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tresult;\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshStart) {\n\t\tthis.storyview.refreshStart(changedTiddlers,changedAttributes);\n\t}\n\t// Completely refresh if any of our attributes have changed\n\tif(changedAttributes.filter || changedAttributes.template || changedAttributes.editTemplate || changedAttributes.emptyMessage || changedAttributes.storyview || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\tresult = true;\n\t} else {\n\t\t// Handle any changes to the list\n\t\tresult = this.handleListChanges(changedTiddlers);\n\t\t// Handle any changes to the history stack\n\t\tif(this.historyTitle && changedTiddlers[this.historyTitle]) {\n\t\t\tthis.handleHistoryChanges();\n\t\t}\n\t}\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshEnd) {\n\t\tthis.storyview.refreshEnd(changedTiddlers,changedAttributes);\n\t}\n\treturn result;\n};\n\n/*\nHandle any changes to the history list\n*/\nListWidget.prototype.handleHistoryChanges = function() {\n\t// Get the history data\n\tvar newHistory = this.wiki.getTiddlerDataCached(this.historyTitle,[]);\n\t// Ignore any entries of the history that match the previous history\n\tvar entry = 0;\n\twhile(entry < newHistory.length && entry < this.history.length && newHistory[entry].title === this.history[entry].title) {\n\t\tentry++;\n\t}\n\t// Navigate forwards to each of the new tiddlers\n\twhile(entry < newHistory.length) {\n\t\tif(this.storyview && this.storyview.navigateTo) {\n\t\t\tthis.storyview.navigateTo(newHistory[entry]);\n\t\t}\n\t\tentry++;\n\t}\n\t// Update the history\n\tthis.history = newHistory;\n};\n\n/*\nProcess any changes to the list\n*/\nListWidget.prototype.handleListChanges = function(changedTiddlers) {\n\t// Get the new list\n\tvar prevList = this.list;\n\tthis.list = this.getTiddlerList();\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\t// Check if it was empty before\n\t\tif(prevList.length === 0) {\n\t\t\t// If so, just refresh the empty message\n\t\t\treturn this.refreshChildren(changedTiddlers);\n\t\t} else {\n\t\t\t// Replace the previous content with the empty message\n\t\t\tfor(t=this.children.length-1; t>=0; t--) {\n\t\t\t\tthis.removeListItem(t);\n\t\t\t}\n\t\t\tvar nextSibling = this.findNextSiblingDomNode();\n\t\t\tthis.makeChildWidgets(this.getEmptyMessage());\n\t\t\tthis.renderChildren(this.parentDomNode,nextSibling);\n\t\t\treturn true;\n\t\t}\n\t} else {\n\t\t// If the list was empty then we need to remove the empty message\n\t\tif(prevList.length === 0) {\n\t\t\tthis.removeChildDomNodes();\n\t\t\tthis.children = [];\n\t\t}\n\t\t// Cycle through the list, inserting and removing list items as needed\n\t\tvar hasRefreshed = false;\n\t\tfor(var t=0; t<this.list.length; t++) {\n\t\t\tvar index = this.findListItem(t,this.list[t]);\n\t\t\tif(index === undefined) {\n\t\t\t\t// The list item must be inserted\n\t\t\t\tthis.insertListItem(t,this.list[t]);\n\t\t\t\thasRefreshed = true;\n\t\t\t} else {\n\t\t\t\t// There are intervening list items that must be removed\n\t\t\t\tfor(var n=index-1; n>=t; n--) {\n\t\t\t\t\tthis.removeListItem(n);\n\t\t\t\t\thasRefreshed = true;\n\t\t\t\t}\n\t\t\t\t// Refresh the item we're reusing\n\t\t\t\tvar refreshed = this.children[t].refresh(changedTiddlers);\n\t\t\t\thasRefreshed = hasRefreshed || refreshed;\n\t\t\t}\n\t\t}\n\t\t// Remove any left over items\n\t\tfor(t=this.children.length-1; t>=this.list.length; t--) {\n\t\t\tthis.removeListItem(t);\n\t\t\thasRefreshed = true;\n\t\t}\n\t\treturn hasRefreshed;\n\t}\n};\n\n/*\nFind the list item with a given title, starting from a specified position\n*/\nListWidget.prototype.findListItem = function(startIndex,title) {\n\twhile(startIndex < this.children.length) {\n\t\tif(this.children[startIndex].parseTreeNode.itemTitle === title) {\n\t\t\treturn startIndex;\n\t\t}\n\t\tstartIndex++;\n\t}\n\treturn undefined;\n};\n\n/*\nInsert a new list item at the specified index\n*/\nListWidget.prototype.insertListItem = function(index,title) {\n\t// Create, insert and render the new child widgets\n\tvar widget = this.makeChildWidget(this.makeItemTemplate(title));\n\twidget.parentDomNode = this.parentDomNode; // Hack to enable findNextSiblingDomNode() to work\n\tthis.children.splice(index,0,widget);\n\tvar nextSibling = widget.findNextSiblingDomNode();\n\twidget.render(this.parentDomNode,nextSibling);\n\t// Animate the insertion if required\n\tif(this.storyview && this.storyview.insert) {\n\t\tthis.storyview.insert(widget);\n\t}\n\treturn true;\n};\n\n/*\nRemove the specified list item\n*/\nListWidget.prototype.removeListItem = function(index) {\n\tvar widget = this.children[index];\n\t// Animate the removal if required\n\tif(this.storyview && this.storyview.remove) {\n\t\tthis.storyview.remove(widget);\n\t} else {\n\t\twidget.removeChildDomNodes();\n\t}\n\t// Remove the child widget\n\tthis.children.splice(index,1);\n};\n\nexports.list = ListWidget;\n\nvar ListItemWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListItemWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListItemWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nListItemWidget.prototype.execute = function() {\n\t// Set the current list item title\n\tthis.setVariable(this.parseTreeNode.variableName,this.parseTreeNode.itemTitle);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListItemWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.listitem = ListItemWidget;\n\n})();",
"title": "$:/core/modules/widgets/list.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/macrocall.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/macrocall.js\ntype: application/javascript\nmodule-type: widget\n\nMacrocall widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar MacroCallWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nMacroCallWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nMacroCallWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nMacroCallWidget.prototype.execute = function() {\n\t// Get the parse type if specified\n\tthis.parseType = this.getAttribute(\"$type\",\"text/vnd.tiddlywiki\");\n\tthis.renderOutput = this.getAttribute(\"$output\",\"text/html\");\n\t// Merge together the parameters specified in the parse tree with the specified attributes\n\tvar params = this.parseTreeNode.params ? this.parseTreeNode.params.slice(0) : [];\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparams.push({name: name, value: attribute});\t\t\t\n\t\t}\n\t});\n\t// Get the macro value\n\tvar text = this.getVariable(this.parseTreeNode.name || this.getAttribute(\"$name\"),{params: params}),\n\t\tparseTreeNodes;\n\t// Are we rendering to HTML?\n\tif(this.renderOutput === \"text/html\") {\n\t\t// If so we'll return the parsed macro\n\t\tvar parser = this.wiki.parseText(this.parseType,text,\n\t\t\t\t\t\t\t{parseAsInline: !this.parseTreeNode.isBlock});\n\t\tparseTreeNodes = parser ? parser.tree : [];\n\t} else {\n\t\t// Otherwise, we'll render the text\n\t\tvar plainText = this.wiki.renderText(\"text/plain\",this.parseType,text,{parentWidget: this});\n\t\tparseTreeNodes = [{type: \"text\", text: plainText}];\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nMacroCallWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\t// Rerender ourselves\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.macrocall = MacroCallWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/macrocall.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/navigator.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/navigator.js\ntype: application/javascript\nmodule-type: widget\n\nNavigator widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar IMPORT_TITLE = \"$:/Import\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NavigatorWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"},\n\t\t{type: \"tm-edit-tiddler\", handler: \"handleEditTiddlerEvent\"},\n\t\t{type: \"tm-delete-tiddler\", handler: \"handleDeleteTiddlerEvent\"},\n\t\t{type: \"tm-save-tiddler\", handler: \"handleSaveTiddlerEvent\"},\n\t\t{type: \"tm-cancel-tiddler\", handler: \"handleCancelTiddlerEvent\"},\n\t\t{type: \"tm-close-tiddler\", handler: \"handleCloseTiddlerEvent\"},\n\t\t{type: \"tm-close-all-tiddlers\", handler: \"handleCloseAllTiddlersEvent\"},\n\t\t{type: \"tm-close-other-tiddlers\", handler: \"handleCloseOtherTiddlersEvent\"},\n\t\t{type: \"tm-new-tiddler\", handler: \"handleNewTiddlerEvent\"},\n\t\t{type: \"tm-import-tiddlers\", handler: \"handleImportTiddlersEvent\"},\n\t\t{type: \"tm-perform-import\", handler: \"handlePerformImportEvent\"},\n\t\t{type: \"tm-fold-tiddler\", handler: \"handleFoldTiddlerEvent\"},\n\t\t{type: \"tm-fold-other-tiddlers\", handler: \"handleFoldOtherTiddlersEvent\"},\n\t\t{type: \"tm-fold-all-tiddlers\", handler: \"handleFoldAllTiddlersEvent\"},\n\t\t{type: \"tm-unfold-all-tiddlers\", handler: \"handleUnfoldAllTiddlersEvent\"},\n\t\t{type: \"tm-rename-tiddler\", handler: \"handleRenameTiddlerEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigatorWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigatorWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigatorWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.storyTitle = this.getAttribute(\"story\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nNavigatorWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.story || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nNavigatorWidget.prototype.getStoryList = function() {\n\treturn this.storyTitle ? this.wiki.getTiddlerList(this.storyTitle) : null;\n};\n\nNavigatorWidget.prototype.saveStoryList = function(storyList) {\n\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\t{title: this.storyTitle},\n\t\tstoryTiddler,\n\t\t{list: storyList}\n\t));\n};\n\nNavigatorWidget.prototype.removeTitleFromStory = function(storyList,title) {\n\tvar p = storyList.indexOf(title);\n\twhile(p !== -1) {\n\t\tstoryList.splice(p,1);\n\t\tp = storyList.indexOf(title);\n\t}\n};\n\nNavigatorWidget.prototype.replaceFirstTitleInStory = function(storyList,oldTitle,newTitle) {\n\tvar pos = storyList.indexOf(oldTitle);\n\tif(pos !== -1) {\n\t\tstoryList[pos] = newTitle;\n\t\tdo {\n\t\t\tpos = storyList.indexOf(oldTitle,pos + 1);\n\t\t\tif(pos !== -1) {\n\t\t\t\tstoryList.splice(pos,1);\n\t\t\t}\n\t\t} while(pos !== -1);\n\t} else {\n\t\tstoryList.splice(0,0,newTitle);\n\t}\n};\n\nNavigatorWidget.prototype.addToStory = function(title,fromTitle) {\n\tvar storyList = this.getStoryList();\n\t// Quit if we cannot get hold of the story list\n\tif(!storyList) {\n\t\treturn;\n\t}\n\t// See if the tiddler is already there\n\tvar slot = storyList.indexOf(title);\n\t// Quit if it already exists in the story river\n\tif(slot >= 0) {\n\t\treturn;\n\t}\n\t// First we try to find the position of the story element we navigated from\n\tvar fromIndex = storyList.indexOf(fromTitle);\n\tif(fromIndex >= 0) {\n\t\t// The tiddler is added from inside the river\n\t\t// Determine where to insert the tiddler; Fallback is \"below\"\n\t\tswitch(this.getAttribute(\"openLinkFromInsideRiver\",\"below\")) {\n\t\t\tcase \"top\":\n\t\t\t\tslot = 0;\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\tslot = storyList.length;\n\t\t\t\tbreak;\n\t\t\tcase \"above\":\n\t\t\t\tslot = fromIndex;\n\t\t\t\tbreak;\n\t\t\tcase \"below\": // Intentional fall-through\n\t\t\tdefault:\n\t\t\t\tslot = fromIndex + 1;\n\t\t\t\tbreak;\n\t\t}\n\t} else {\n\t\t// The tiddler is opened from outside the river. Determine where to insert the tiddler; default is \"top\"\n\t\tif(this.getAttribute(\"openLinkFromOutsideRiver\",\"top\") === \"bottom\") {\n\t\t\t// Insert at bottom\n\t\t\tslot = storyList.length;\n\t\t} else {\n\t\t\t// Insert at top\n\t\t\tslot = 0;\n\t\t}\n\t}\n\t// Add the tiddler\n\tstoryList.splice(slot,0,title);\n\t// Save the story\n\tthis.saveStoryList(storyList);\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\n*/\nNavigatorWidget.prototype.addToHistory = function(title,fromPageRect) {\n\tthis.wiki.addToHistory(title,fromPageRect,this.historyTitle);\n};\n\n/*\nHandle a tm-navigate event\n*/\nNavigatorWidget.prototype.handleNavigateEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-navigating\",event);\n\tif(event.navigateTo) {\n\t\tthis.addToStory(event.navigateTo,event.navigateFromTitle);\n\t\tif(!event.navigateSuppressNavigation) {\n\t\t\tthis.addToHistory(event.navigateTo,event.navigateFromClientRect);\n\t\t}\n\t}\n\treturn false;\n};\n\n// Close a specified tiddler\nNavigatorWidget.prototype.handleCloseTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\tstoryList = this.getStoryList();\n\t// Look for tiddlers with this title to close\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\treturn false;\n};\n\n// Close all tiddlers\nNavigatorWidget.prototype.handleCloseAllTiddlersEvent = function(event) {\n\tthis.saveStoryList([]);\n\treturn false;\n};\n\n// Close other tiddlers\nNavigatorWidget.prototype.handleCloseOtherTiddlersEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle;\n\tthis.saveStoryList([title]);\n\treturn false;\n};\n\n// Place a tiddler in edit mode\nNavigatorWidget.prototype.handleEditTiddlerEvent = function(event) {\n\tvar self = this;\n\tfunction isUnmodifiedShadow(title) {\n\t\treturn self.wiki.isShadowTiddler(title) && !self.wiki.tiddlerExists(title);\n\t}\n\tfunction confirmEditShadow(title) {\n\t\treturn confirm($tw.language.getString(\n\t\t\t\"ConfirmEditShadowTiddler\",\n\t\t\t{variables:\n\t\t\t\t{title: title}\n\t\t\t}\n\t\t));\n\t}\n\tvar title = event.param || event.tiddlerTitle;\n\tif(isUnmodifiedShadow(title) && !confirmEditShadow(title)) {\n\t\treturn false;\n\t}\n\t// Replace the specified tiddler with a draft in edit mode\n\tvar draftTiddler = this.makeDraftTiddler(title);\n\t// Update the story and history if required\n\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\tvar draftTitle = draftTiddler.fields.title,\n\t\t\tstoryList = this.getStoryList();\n\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\tthis.saveStoryList(storyList);\n\t\treturn false;\n\t}\n};\n\n// Delete a tiddler\nNavigatorWidget.prototype.handleDeleteTiddlerEvent = function(event) {\n\t// Get the tiddler we're deleting\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList(),\n\t\toriginalTitle = tiddler ? tiddler.fields[\"draft.of\"] : \"\",\n\t\toriginalTiddler = originalTitle ? this.wiki.getTiddler(originalTitle) : undefined,\n\t\tconfirmationTitle;\n\tif(!tiddler) {\n\t\treturn false;\n\t}\n\t// Check if the tiddler we're deleting is in draft mode\n\tif(originalTitle) {\n\t\t// If so, we'll prompt for confirmation referencing the original tiddler\n\t\tconfirmationTitle = originalTitle;\n\t} else {\n\t\t// If not a draft, then prompt for confirmation referencing the specified tiddler\n\t\tconfirmationTitle = title;\n\t}\n\t// Seek confirmation\n\tif((this.wiki.getTiddler(originalTitle) || (tiddler.fields.text || \"\") !== \"\") && !confirm($tw.language.getString(\n\t\t\t\t\"ConfirmDeleteTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: confirmationTitle}\n\t\t\t\t}\n\t\t\t))) {\n\t\treturn false;\n\t}\n\t// Delete the original tiddler\n\tif(originalTitle) {\n\t\tif(originalTiddler) {\n\t\t\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",originalTiddler);\n\t\t}\n\t\tthis.wiki.deleteTiddler(originalTitle);\n\t\tthis.removeTitleFromStory(storyList,originalTitle);\n\t}\n\t// Invoke the hook function and delete this tiddler\n\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",tiddler);\n\tthis.wiki.deleteTiddler(title);\n\t// Remove the closed tiddler from the story\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\treturn false;\n};\n\n/*\nCreate/reuse the draft tiddler for a given title\n*/\nNavigatorWidget.prototype.makeDraftTiddler = function(targetTitle) {\n\t// See if there is already a draft tiddler for this tiddler\n\tvar draftTitle = this.wiki.findDraft(targetTitle);\n\tif(draftTitle) {\n\t\treturn this.wiki.getTiddler(draftTitle);\n\t}\n\t// Get the current value of the tiddler we're editing\n\tvar tiddler = this.wiki.getTiddler(targetTitle);\n\t// Save the initial value of the draft tiddler\n\tdraftTitle = this.generateDraftTitle(targetTitle);\n\tvar draftTiddler = new $tw.Tiddler(\n\t\t\ttiddler,\n\t\t\t{\n\t\t\t\ttitle: draftTitle,\n\t\t\t\t\"draft.title\": targetTitle,\n\t\t\t\t\"draft.of\": targetTitle\n\t\t\t},\n\t\t\tthis.wiki.getModificationFields()\n\t\t);\n\tthis.wiki.addTiddler(draftTiddler);\n\treturn draftTiddler;\n};\n\n/*\nGenerate a title for the draft of a given tiddler\n*/\nNavigatorWidget.prototype.generateDraftTitle = function(title) {\n\tvar c = 0,\n\t\tdraftTitle;\n\tdo {\n\t\tdraftTitle = \"Draft \" + (c ? (c + 1) + \" \" : \"\") + \"of '\" + title + \"'\";\n\t\tc++;\n\t} while(this.wiki.tiddlerExists(draftTitle));\n\treturn draftTitle;\n};\n\n// Take a tiddler out of edit mode, saving the changes\nNavigatorWidget.prototype.handleSaveTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList();\n\t// Replace the original tiddler with the draft\n\tif(tiddler) {\n\t\tvar draftTitle = (tiddler.fields[\"draft.title\"] || \"\").trim(),\n\t\t\tdraftOf = (tiddler.fields[\"draft.of\"] || \"\").trim();\n\t\tif(draftTitle) {\n\t\t\tvar isRename = draftOf !== draftTitle,\n\t\t\t\tisConfirmed = true;\n\t\t\tif(isRename && this.wiki.tiddlerExists(draftTitle)) {\n\t\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\t\"ConfirmOverwriteTiddler\",\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{title: draftTitle}\n\t\t\t\t\t}\n\t\t\t\t));\n\t\t\t}\n\t\t\tif(isConfirmed) {\n\t\t\t\t// Create the new tiddler and pass it through the th-saving-tiddler hook\n\t\t\t\tvar newTiddler = new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\ttitle: draftTitle,\n\t\t\t\t\t\"draft.title\": undefined,\n\t\t\t\t\t\"draft.of\": undefined\n\t\t\t\t},this.wiki.getModificationFields());\n\t\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-saving-tiddler\",newTiddler);\n\t\t\t\tthis.wiki.addTiddler(newTiddler);\n\t\t\t\t// If enabled, relink references to renamed tiddler\n\t\t\t\tvar shouldRelink = this.getAttribute(\"relinkOnRename\",\"no\").toLowerCase().trim() === \"yes\";\n\t\t\t\tif(isRename && shouldRelink && this.wiki.tiddlerExists(draftOf)) {\nconsole.log(\"Relinking '\" + draftOf + \"' to '\" + draftTitle + \"'\");\n\t\t\t\t\tthis.wiki.relinkTiddler(draftOf,draftTitle);\n\t\t\t\t}\n\t\t\t\t// Remove the draft tiddler\n\t\t\t\tthis.wiki.deleteTiddler(title);\n\t\t\t\t// Remove the original tiddler if we're renaming it\n\t\t\t\tif(isRename) {\n\t\t\t\t\tthis.wiki.deleteTiddler(draftOf);\n\t\t\t\t}\n\t\t\t\t// #2381 always remove new title & old\n\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\tthis.removeTitleFromStory(storyList,draftOf);\n\t\t\t\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\t\t// Replace the draft in the story with the original\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\t\t\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\t\t\t\tif(draftTitle !== this.storyTitle) {\n\t\t\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Trigger an autosave\n\t\t\t\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\n// Take a tiddler out of edit mode without saving the changes\nNavigatorWidget.prototype.handleCancelTiddlerEvent = function(event) {\n\t// Flip the specified tiddler from draft back to the original\n\tvar draftTitle = event.param || event.tiddlerTitle,\n\t\tdraftTiddler = this.wiki.getTiddler(draftTitle),\n\t\toriginalTitle = draftTiddler && draftTiddler.fields[\"draft.of\"];\n\tif(draftTiddler && originalTitle) {\n\t\t// Ask for confirmation if the tiddler text has changed\n\t\tvar isConfirmed = true,\n\t\t\toriginalTiddler = this.wiki.getTiddler(originalTitle),\n\t\t\tstoryList = this.getStoryList();\n\t\tif(this.wiki.isDraftModified(draftTitle)) {\n\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\"ConfirmCancelTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: draftTitle}\n\t\t\t\t}\n\t\t\t));\n\t\t}\n\t\t// Remove the draft tiddler\n\t\tif(isConfirmed) {\n\t\t\tthis.wiki.deleteTiddler(draftTitle);\n\t\t\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\tif(originalTiddler) {\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,draftTitle,originalTitle);\n\t\t\t\t\tthis.addToHistory(originalTitle,event.navigateFromClientRect);\n\t\t\t\t} else {\n\t\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\t}\n\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\n// Create a new draft tiddler\n// event.param can either be the title of a template tiddler, or a hashmap of fields.\n//\n// The title of the newly created tiddler follows these rules:\n// * If a hashmap was used and a title field was specified, use that title\n// * If a hashmap was used without a title field, use a default title, if necessary making it unique with a numeric suffix\n// * If a template tiddler was used, use the title of the template, if necessary making it unique with a numeric suffix\n//\n// If a draft of the target tiddler already exists then it is reused\nNavigatorWidget.prototype.handleNewTiddlerEvent = function(event) {\n\t// Get the story details\n\tvar storyList = this.getStoryList(),\n\t\ttemplateTiddler, additionalFields, title, draftTitle, existingTiddler;\n\t// Get the template tiddler (if any)\n\tif(typeof event.param === \"string\") {\n\t\t// Get the template tiddler\n\t\ttemplateTiddler = this.wiki.getTiddler(event.param);\n\t\t// Generate a new title\n\t\ttitle = this.wiki.generateNewTitle(event.param || $tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t}\n\t// Get the specified additional fields\n\tif(typeof event.paramObject === \"object\") {\n\t\tadditionalFields = event.paramObject;\n\t}\n\tif(typeof event.param === \"object\") { // Backwards compatibility with 5.1.3\n\t\tadditionalFields = event.param;\n\t}\n\tif(additionalFields && additionalFields.title) {\n\t\ttitle = additionalFields.title;\n\t}\n\t// Generate a title if we don't have one\n\ttitle = title || this.wiki.generateNewTitle($tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t// Find any existing draft for this tiddler\n\tdraftTitle = this.wiki.findDraft(title);\n\t// Pull in any existing tiddler\n\tif(draftTitle) {\n\t\texistingTiddler = this.wiki.getTiddler(draftTitle);\n\t} else {\n\t\tdraftTitle = this.generateDraftTitle(title);\n\t\texistingTiddler = this.wiki.getTiddler(title);\n\t}\n\t// Merge the tags\n\tvar mergedTags = [];\n\tif(existingTiddler && existingTiddler.fields.tags) {\n\t\t$tw.utils.pushTop(mergedTags,existingTiddler.fields.tags);\n\t}\n\tif(additionalFields && additionalFields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,$tw.utils.parseStringArray(additionalFields.tags));\n\t}\n\tif(templateTiddler && templateTiddler.fields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,templateTiddler.fields.tags);\n\t}\n\t// Save the draft tiddler\n\tvar draftTiddler = new $tw.Tiddler({\n\t\t\ttext: \"\",\n\t\t\t\"draft.title\": title\n\t\t},\n\t\ttemplateTiddler,\n\t\texistingTiddler,\n\t\tadditionalFields,\n\t\tthis.wiki.getCreationFields(),\n\t\t{\n\t\t\ttitle: draftTitle,\n\t\t\t\"draft.of\": title,\n\t\t\ttags: mergedTags\n\t\t},this.wiki.getModificationFields());\n\tthis.wiki.addTiddler(draftTiddler);\n\t// Update the story to insert the new draft at the top and remove any existing tiddler\n\tif(storyList.indexOf(draftTitle) === -1) {\n\t\tvar slot = storyList.indexOf(event.navigateFromTitle);\n\t\tstoryList.splice(slot + 1,0,draftTitle);\n\t}\n\tif(storyList.indexOf(title) !== -1) {\n\t\tstoryList.splice(storyList.indexOf(title),1);\t\t\n\t}\n\tthis.saveStoryList(storyList);\n\t// Add a new record to the top of the history stack\n\tthis.addToHistory(draftTitle);\n\treturn false;\n};\n\n// Import JSON tiddlers into a pending import tiddler\nNavigatorWidget.prototype.handleImportTiddlersEvent = function(event) {\n\t// Get the tiddlers\n\tvar tiddlers = [];\n\ttry {\n\t\ttiddlers = JSON.parse(event.param);\t\n\t} catch(e) {\n\t}\n\t// Get the current $:/Import tiddler\n\tvar importTiddler = this.wiki.getTiddler(IMPORT_TITLE),\n\t\timportData = this.wiki.getTiddlerData(IMPORT_TITLE,{}),\n\t\tnewFields = new Object({\n\t\t\ttitle: IMPORT_TITLE,\n\t\t\ttype: \"application/json\",\n\t\t\t\"plugin-type\": \"import\",\n\t\t\t\"status\": \"pending\"\n\t\t}),\n\t\tincomingTiddlers = [];\n\t// Process each tiddler\n\timportData.tiddlers = importData.tiddlers || {};\n\t$tw.utils.each(tiddlers,function(tiddlerFields) {\n\t\tvar title = tiddlerFields.title;\n\t\tif(title) {\n\t\t\tincomingTiddlers.push(title);\n\t\t\timportData.tiddlers[title] = tiddlerFields;\n\t\t}\n\t});\n\t// Give the active upgrader modules a chance to process the incoming tiddlers\n\tvar messages = this.wiki.invokeUpgraders(incomingTiddlers,importData.tiddlers);\n\t$tw.utils.each(messages,function(message,title) {\n\t\tnewFields[\"message-\" + title] = message;\n\t});\n\t// Deselect any suppressed tiddlers\n\t$tw.utils.each(importData.tiddlers,function(tiddler,title) {\n\t\tif($tw.utils.count(tiddler) === 0) {\n\t\t\tnewFields[\"selection-\" + title] = \"unchecked\";\n\t\t}\n\t});\n\t// Save the $:/Import tiddler\n\tnewFields.text = JSON.stringify(importData,null,$tw.config.preferences.jsonSpaces);\n\tthis.wiki.addTiddler(new $tw.Tiddler(importTiddler,newFields));\n\t// Update the story and history details\n\tif(this.getVariable(\"tv-auto-open-on-import\") !== \"no\") {\n\t\tvar storyList = this.getStoryList(),\n\t\t\thistory = [];\n\t\t// Add it to the story\n\t\tif(storyList.indexOf(IMPORT_TITLE) === -1) {\n\t\t\tstoryList.unshift(IMPORT_TITLE);\n\t\t}\n\t\t// And to history\n\t\thistory.push(IMPORT_TITLE);\n\t\t// Save the updated story and history\n\t\tthis.saveStoryList(storyList);\n\t\tthis.addToHistory(history);\n\t}\n\treturn false;\n};\n\n// \nNavigatorWidget.prototype.handlePerformImportEvent = function(event) {\n\tvar self = this,\n\t\timportTiddler = this.wiki.getTiddler(event.param),\n\t\timportData = this.wiki.getTiddlerDataCached(event.param,{tiddlers: {}}),\n\t\timportReport = [];\n\t// Add the tiddlers to the store\n\timportReport.push($tw.language.getString(\"Import/Imported/Hint\") + \"\\n\");\n\t$tw.utils.each(importData.tiddlers,function(tiddlerFields) {\n\t\tvar title = tiddlerFields.title;\n\t\tif(title && importTiddler && importTiddler.fields[\"selection-\" + title] !== \"unchecked\") {\n\t\t\tvar tiddler = new $tw.Tiddler(tiddlerFields);\n\t\t\ttiddler = $tw.hooks.invokeHook(\"th-importing-tiddler\",tiddler);\n\t\t\tself.wiki.addTiddler(tiddler);\n\t\t\timportReport.push(\"# [[\" + tiddlerFields.title + \"]]\");\n\t\t}\n\t});\n\t// Replace the $:/Import tiddler with an import report\n\tthis.wiki.addTiddler(new $tw.Tiddler({\n\t\ttitle: event.param,\n\t\ttext: importReport.join(\"\\n\"),\n\t\t\"status\": \"complete\"\n\t}));\n\t// Navigate to the $:/Import tiddler\n\tthis.addToHistory([event.param]);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n};\n\nNavigatorWidget.prototype.handleFoldTiddlerEvent = function(event) {\n\tvar paramObject = event.paramObject || {};\n\tif(paramObject.foldedState) {\n\t\tvar foldedState = this.wiki.getTiddlerText(paramObject.foldedState,\"show\") === \"show\" ? \"hide\" : \"show\";\n\t\tthis.wiki.setText(paramObject.foldedState,\"text\",null,foldedState);\n\t}\n};\n\nNavigatorWidget.prototype.handleFoldOtherTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,event.param === title ? \"show\" : \"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleFoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleUnfoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"show\");\n\t});\n};\n\nNavigatorWidget.prototype.handleRenameTiddlerEvent = function(event) {\n\tvar paramObject = event.paramObject || {},\n\t\tfrom = paramObject.from || event.tiddlerTitle,\n\t\tto = paramObject.to;\n\t$tw.wiki.renameTiddler(from,to);\n};\n\nexports.navigator = NavigatorWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/navigator.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/password.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/password.js\ntype: application/javascript\nmodule-type: widget\n\nPassword widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar PasswordWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nPasswordWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nPasswordWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the current password\n\tvar password = $tw.browser ? $tw.utils.getPassword(this.passwordName) || \"\" : \"\";\n\t// Create our element\n\tvar domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"password\");\n\tdomNode.setAttribute(\"value\",password);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nPasswordWidget.prototype.handleChangeEvent = function(event) {\n\tvar password = this.domNodes[0].value;\n\treturn $tw.utils.savePassword(this.passwordName,password);\n};\n\n/*\nCompute the internal state of the widget\n*/\nPasswordWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.passwordName = this.getAttribute(\"name\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nPasswordWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.password = PasswordWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/password.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/radio.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/radio.js\ntype: application/javascript\nmodule-type: widget\n\nSet a field or index at a given tiddler via radio buttons\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RadioWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRadioWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRadioWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",this.radioClass);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"radio\");\n\tif(this.getValue() == this.radioValue) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nRadioWidget.prototype.getValue = function() {\n\tvar value,\n\t\ttiddler = this.wiki.getTiddler(this.radioTitle);\n\tif (this.radioIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.radioTitle,this.radioIndex);\n\t} else {\n\t\tvalue = tiddler && tiddler.getFieldString(this.radioField);\n\t}\n\treturn value;\n};\n\nRadioWidget.prototype.setValue = function() {\n\tif(this.radioIndex) {\n\t\tthis.wiki.setText(this.radioTitle,\"\",this.radioIndex,this.radioValue);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.radioTitle),\n\t\t\taddition = {};\n\t\taddition[this.radioField] = this.radioValue;\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),{title: this.radioTitle},tiddler,addition,this.wiki.getModificationFields()));\n\t}\n};\n\nRadioWidget.prototype.handleChangeEvent = function(event) {\n\tif(this.inputDomNode.checked) {\n\t\tthis.setValue();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRadioWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.radioTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.radioField = this.getAttribute(\"field\",\"text\");\n\tthis.radioIndex = this.getAttribute(\"index\");\n\tthis.radioValue = this.getAttribute(\"value\");\n\tthis.radioClass = this.getAttribute(\"class\",\"\");\n\tif(this.radioClass !== \"\") {\n\t\tthis.radioClass += \" \";\n\t}\n\tthis.radioClass += \"tc-radio\";\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRadioWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.value || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.radioTitle]) {\n\t\t\tthis.inputDomNode.checked = this.getValue() === this.radioValue;\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.radio = RadioWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/radio.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/raw.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/raw.js\ntype: application/javascript\nmodule-type: widget\n\nRaw widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RawWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRawWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRawWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tvar div = this.document.createElement(\"div\");\n\tdiv.innerHTML=this.parseTreeNode.html;\n\tparent.insertBefore(div,nextSibling);\n\tthis.domNodes.push(div);\t\n};\n\n/*\nCompute the internal state of the widget\n*/\nRawWidget.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRawWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.raw = RawWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/raw.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/reveal.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/reveal.js\ntype: application/javascript\nmodule-type: widget\n\nReveal widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RevealWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRevealWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRevealWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.revealTag && $tw.config.htmlUnsafeElements.indexOf(this.revealTag) === -1) {\n\t\ttag = this.revealTag;\n\t}\n\tvar domNode = this.document.createElement(tag);\n\tvar classes = this[\"class\"].split(\" \") || [];\n\tclasses.push(\"tc-reveal\");\n\tdomNode.className = classes.join(\" \");\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\t}\n\tif(!this.isOpen) {\n\t\tdomNode.setAttribute(\"hidden\",\"true\");\n\t}\n\tthis.domNodes.push(domNode);\n};\n\nRevealWidget.prototype.positionPopup = function(domNode) {\n\tdomNode.style.position = \"absolute\";\n\tdomNode.style.zIndex = \"1000\";\n\tswitch(this.position) {\n\t\tcase \"left\":\n\t\t\tdomNode.style.left = (this.popup.left - domNode.offsetWidth) + \"px\";\n\t\t\tdomNode.style.top = this.popup.top + \"px\";\n\t\t\tbreak;\n\t\tcase \"above\":\n\t\t\tdomNode.style.left = this.popup.left + \"px\";\n\t\t\tdomNode.style.top = (this.popup.top - domNode.offsetHeight) + \"px\";\n\t\t\tbreak;\n\t\tcase \"aboveright\":\n\t\t\tdomNode.style.left = (this.popup.left + this.popup.width) + \"px\";\n\t\t\tdomNode.style.top = (this.popup.top + this.popup.height - domNode.offsetHeight) + \"px\";\n\t\t\tbreak;\n\t\tcase \"right\":\n\t\t\tdomNode.style.left = (this.popup.left + this.popup.width) + \"px\";\n\t\t\tdomNode.style.top = this.popup.top + \"px\";\n\t\t\tbreak;\n\t\tcase \"belowleft\":\n\t\t\tdomNode.style.left = (this.popup.left + this.popup.width - domNode.offsetWidth) + \"px\";\n\t\t\tdomNode.style.top = (this.popup.top + this.popup.height) + \"px\";\n\t\t\tbreak;\n\t\tdefault: // Below\n\t\t\tdomNode.style.left = this.popup.left + \"px\";\n\t\t\tdomNode.style.top = (this.popup.top + this.popup.height) + \"px\";\n\t\t\tbreak;\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRevealWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.state = this.getAttribute(\"state\");\n\tthis.revealTag = this.getAttribute(\"tag\");\n\tthis.type = this.getAttribute(\"type\");\n\tthis.text = this.getAttribute(\"text\");\n\tthis.position = this.getAttribute(\"position\");\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tthis.style = this.getAttribute(\"style\",\"\");\n\tthis[\"default\"] = this.getAttribute(\"default\",\"\");\n\tthis.animate = this.getAttribute(\"animate\",\"no\");\n\tthis.retain = this.getAttribute(\"retain\",\"no\");\n\tthis.openAnimation = this.animate === \"no\" ? undefined : \"open\";\n\tthis.closeAnimation = this.animate === \"no\" ? undefined : \"close\";\n\t// Compute the title of the state tiddler and read it\n\tthis.stateTitle = this.state;\n\tthis.readState();\n\t// Construct the child widgets\n\tvar childNodes = this.isOpen ? this.parseTreeNode.children : [];\n\tthis.hasChildNodes = this.isOpen;\n\tthis.makeChildWidgets(childNodes);\n};\n\n/*\nRead the state tiddler\n*/\nRevealWidget.prototype.readState = function() {\n\t// Read the information from the state tiddler\n\tvar state = this.stateTitle ? this.wiki.getTextReference(this.stateTitle,this[\"default\"],this.getVariable(\"currentTiddler\")) : this[\"default\"];\n\tswitch(this.type) {\n\t\tcase \"popup\":\n\t\t\tthis.readPopupState(state);\n\t\t\tbreak;\n\t\tcase \"match\":\n\t\t\tthis.readMatchState(state);\n\t\t\tbreak;\n\t\tcase \"nomatch\":\n\t\t\tthis.readMatchState(state);\n\t\t\tthis.isOpen = !this.isOpen;\n\t\t\tbreak;\n\t}\n};\n\nRevealWidget.prototype.readMatchState = function(state) {\n\tthis.isOpen = state === this.text;\n};\n\nRevealWidget.prototype.readPopupState = function(state) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/,\n\t\tmatch = popupLocationRegExp.exec(state);\n\t// Check if the state matches the location regexp\n\tif(match) {\n\t\t// If so, we're open\n\t\tthis.isOpen = true;\n\t\t// Get the location\n\t\tthis.popup = {\n\t\t\tleft: parseFloat(match[1]),\n\t\t\ttop: parseFloat(match[2]),\n\t\t\twidth: parseFloat(match[3]),\n\t\t\theight: parseFloat(match[4])\n\t\t};\n\t} else {\n\t\t// If not, we're closed\n\t\tthis.isOpen = false;\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRevealWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.state || changedAttributes.type || changedAttributes.text || changedAttributes.position || changedAttributes[\"default\"] || changedAttributes.animate) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false,\n\t\t\tcurrentlyOpen = this.isOpen;\n\t\tthis.readState();\n\t\tif(this.isOpen !== currentlyOpen) {\n\t\t\tif(this.retain === \"yes\") {\n\t\t\t\tthis.updateState();\n\t\t\t} else {\n\t\t\t\tthis.refreshSelf();\n\t\t\t\trefreshed = true;\n\t\t\t}\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\n/*\nCalled by refresh() to dynamically show or hide the content\n*/\nRevealWidget.prototype.updateState = function() {\n\t// Read the current state\n\tthis.readState();\n\t// Construct the child nodes if needed\n\tvar domNode = this.domNodes[0];\n\tif(this.isOpen && !this.hasChildNodes) {\n\t\tthis.hasChildNodes = true;\n\t\tthis.makeChildWidgets(this.parseTreeNode.children);\n\t\tthis.renderChildren(domNode,null);\n\t}\n\t// Animate our DOM node\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\n\t}\n\tif(this.isOpen) {\n\t\tdomNode.removeAttribute(\"hidden\");\n $tw.anim.perform(this.openAnimation,domNode);\n\t} else {\n\t\t$tw.anim.perform(this.closeAnimation,domNode,{callback: function() {\n\t\t\tdomNode.setAttribute(\"hidden\",\"true\");\n }});\n\t}\n};\n\nexports.reveal = RevealWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/reveal.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/scrollable.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/scrollable.js\ntype: application/javascript\nmodule-type: widget\n\nScrollable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ScrollableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.scaleFactor = 1;\n\tthis.addEventListeners([\n\t\t{type: \"tm-scroll\", handler: \"handleScrollEvent\"}\n\t]);\n\tif($tw.browser) {\n\t\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\tfunction(callback) {\n\t\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t\t};\n\t\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\t\twindow.webkitCancelAnimationFrame ||\n\t\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\t\twindow.mozCancelAnimationFrame ||\n\t\t\twindow.mozCancelRequestAnimationFrame ||\n\t\t\tfunction(id) {\n\t\t\t\twindow.clearTimeout(id);\n\t\t\t};\n\t}\n};\n\n/*\nInherit from the base widget class\n*/\nScrollableWidget.prototype = new Widget();\n\nScrollableWidget.prototype.cancelScroll = function() {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(window,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle a scroll event\n*/\nScrollableWidget.prototype.handleScrollEvent = function(event) {\n\t// Pass the scroll event through if our offsetsize is larger than our scrollsize\n\tif(this.outerDomNode.scrollWidth <= this.outerDomNode.offsetWidth && this.outerDomNode.scrollHeight <= this.outerDomNode.offsetHeight && this.fallthrough === \"yes\") {\n\t\treturn true;\n\t}\n\tthis.scrollIntoView(event.target);\n\treturn false; // Handled event\n};\n\n/*\nScroll an element into view\n*/\nScrollableWidget.prototype.scrollIntoView = function(element) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tthis.cancelScroll();\n\tthis.startTime = Date.now();\n\tvar scrollPosition = {\n\t\tx: this.outerDomNode.scrollLeft,\n\t\ty: this.outerDomNode.scrollTop\n\t};\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar scrollableBounds = this.outerDomNode.getBoundingClientRect(),\n\t\tclientTargetBounds = element.getBoundingClientRect(),\n\t\tbounds = {\n\t\t\tleft: clientTargetBounds.left + scrollPosition.x - scrollableBounds.left,\n\t\t\ttop: clientTargetBounds.top + scrollPosition.y - scrollableBounds.top,\n\t\t\twidth: clientTargetBounds.width,\n\t\t\theight: clientTargetBounds.height\n\t\t};\n\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\tvar getEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\t// If the target is already visible then stay where we are\n\t\t\tif(targetPos >= currentPos && (targetPos + targetSize) <= (currentPos + currentSize)) {\n\t\t\t\treturn currentPos;\n\t\t\t// If the target is above/left of the current view, then scroll to its top/left\n\t\t\t} else if(targetPos <= currentPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// If the target is smaller than the window and the scroll position is too far up, then scroll till the target is at the bottom of the window\n\t\t\t} else if(targetSize < currentSize && currentPos < (targetPos + targetSize - currentSize)) {\n\t\t\t\treturn targetPos + targetSize - currentSize;\n\t\t\t// If the target is big, then just scroll to the top\n\t\t\t} else if(currentPos < targetPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// Otherwise, stay where we are\n\t\t\t} else {\n\t\t\t\treturn currentPos;\n\t\t\t}\n\t\t},\n\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,this.outerDomNode.offsetWidth),\n\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,this.outerDomNode.offsetHeight);\n\t// Only scroll if necessary\n\tif(endX !== scrollPosition.x || endY !== scrollPosition.y) {\n\t\tvar self = this,\n\t\t\tdrawFrame;\n\t\tdrawFrame = function () {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll();\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\tself.outerDomNode.scrollLeft = scrollPosition.x + (endX - scrollPosition.x) * t;\n\t\t\tself.outerDomNode.scrollTop = scrollPosition.y + (endY - scrollPosition.y) * t;\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(window,drawFrame);\n\t\t\t}\n\t\t};\n\t\tdrawFrame();\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nScrollableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create elements\n\tthis.outerDomNode = this.document.createElement(\"div\");\n\t$tw.utils.setStyle(this.outerDomNode,[\n\t\t{overflowY: \"auto\"},\n\t\t{overflowX: \"auto\"},\n\t\t{webkitOverflowScrolling: \"touch\"}\n\t]);\n\tthis.innerDomNode = this.document.createElement(\"div\");\n\tthis.outerDomNode.appendChild(this.innerDomNode);\n\t// Assign classes\n\tthis.outerDomNode.className = this[\"class\"] || \"\";\n\t// Insert element\n\tparent.insertBefore(this.outerDomNode,nextSibling);\n\tthis.renderChildren(this.innerDomNode,null);\n\tthis.domNodes.push(this.outerDomNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nScrollableWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.fallthrough = this.getAttribute(\"fallthrough\",\"yes\");\n\tthis[\"class\"] = this.getAttribute(\"class\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nScrollableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.scrollable = ScrollableWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/scrollable.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/select.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/select.js\ntype: application/javascript\nmodule-type: widget\n\nSelect widget:\n\n```\n<$select tiddler=\"MyTiddler\" field=\"text\">\n<$list filter=\"[tag[chapter]]\">\n<option value=<<currentTiddler>>>\n<$view field=\"description\"/>\n</option>\n</$list>\n</$select>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SelectWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSelectWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSelectWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\tthis.setSelectValue();\n\t$tw.utils.addEventListeners(this.getSelectDomNode(),[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n};\n\n/*\nHandle a change event\n*/\nSelectWidget.prototype.handleChangeEvent = function(event) {\n\t// Get the new value and assign it to the tiddler\n\tif(this.selectMultiple == false) {\n\t\tvar value = this.getSelectDomNode().value;\n\t} else {\n\t\tvar value = this.getSelectValues()\n\t\t\t\tvalue = $tw.utils.stringifyList(value);\n\t}\n\tthis.wiki.setText(this.selectTitle,this.selectField,this.selectIndex,value);\n\t// Trigger actions\n\tif(this.selectActions) {\n\t\tthis.invokeActionString(this.selectActions,this,event);\n\t}\n};\n\n/*\nIf necessary, set the value of the select element to the current value\n*/\nSelectWidget.prototype.setSelectValue = function() {\n\tvar value = this.selectDefault;\n\t// Get the value\n\tif(this.selectIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.selectTitle,this.selectIndex);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.selectTitle);\n\t\tif(tiddler) {\n\t\t\tif(this.selectField === \"text\") {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.selectTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.selectField)) {\n\t\t\t\t\tvalue = tiddler.getFieldString(this.selectField);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.selectField === \"title\") {\n\t\t\t\tvalue = this.selectTitle;\n\t\t\t}\n\t\t}\n\t}\n\t// Assign it to the select element if it's different than the current value\n\tif (this.selectMultiple) {\n\t\tvalue = value === undefined ? \"\" : value;\n\t\tvar select = this.getSelectDomNode();\n\t\tvar values = Array.isArray(value) ? value : $tw.utils.parseStringArray(value);\n\t\tfor(var i=0; i < select.children.length; i++){\n\t\t\tif(values.indexOf(select.children[i].value) != -1) {\n\t\t\t\tselect.children[i].selected = true;\n\t\t\t}\n\t\t}\n\t\t\n\t} else {\n\t\tvar domNode = this.getSelectDomNode();\n\t\tif(domNode.value !== value) {\n\t\t\tdomNode.value = value;\n\t\t}\n\t}\n};\n\n/*\nGet the DOM node of the select element\n*/\nSelectWidget.prototype.getSelectDomNode = function() {\n\treturn this.children[0].domNodes[0];\n};\n\n// Return an array of the selected opion values\n// select is an HTML select element\nSelectWidget.prototype.getSelectValues = function() {\n\tvar select, result, options, opt;\n\tselect = this.getSelectDomNode();\n\tresult = [];\n\toptions = select && select.options;\n\tfor (var i=0; i<options.length; i++) {\n\t\topt = options[i];\n\t\tif (opt.selected) {\n\t\t\tresult.push(opt.value || opt.text);\n\t\t}\n\t}\n\treturn result;\n}\n\n/*\nCompute the internal state of the widget\n*/\nSelectWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.selectActions = this.getAttribute(\"actions\");\n\tthis.selectTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.selectField = this.getAttribute(\"field\",\"text\");\n\tthis.selectIndex = this.getAttribute(\"index\");\n\tthis.selectClass = this.getAttribute(\"class\");\n\tthis.selectDefault = this.getAttribute(\"default\");\n\tthis.selectMultiple = this.getAttribute(\"multiple\", false);\n\tthis.selectSize = this.getAttribute(\"size\");\n\t// Make the child widgets\n\tvar selectNode = {\n\t\ttype: \"element\",\n\t\ttag: \"select\",\n\t\tchildren: this.parseTreeNode.children\n\t};\n\tif(this.selectClass) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"class\",this.selectClass);\n\t}\n\tif(this.selectMultiple) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"multiple\",\"multiple\");\n\t}\n\tif(this.selectSize) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"size\",this.selectSize);\n\t}\n\tthis.makeChildWidgets([selectNode]);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSelectWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// If we're using a different tiddler/field/index then completely refresh ourselves\n\tif(changedAttributes.selectTitle || changedAttributes.selectField || changedAttributes.selectIndex) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t// If the target tiddler value has changed, just update setting and refresh the children\n\t} else {\n\t\tvar childrenRefreshed = this.refreshChildren(changedTiddlers);\n\t\tif(changedTiddlers[this.selectTitle] || childrenRefreshed) {\n\t\t\tthis.setSelectValue();\n\t\t} \n\t\treturn childrenRefreshed;\n\t}\n};\n\nexports.select = SelectWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/select.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/set.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/set.js\ntype: application/javascript\nmodule-type: widget\n\nSet variable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SetWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.setName = this.getAttribute(\"name\",\"currentTiddler\");\n\tthis.setFilter = this.getAttribute(\"filter\");\n\tthis.setSelect = this.getAttribute(\"select\");\n\tthis.setValue = this.getAttribute(\"value\");\n\tthis.setEmptyValue = this.getAttribute(\"emptyValue\");\n\t// Set context variable\n\tthis.setVariable(this.setName,this.getValue(),this.parseTreeNode.params);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nGet the value to be assigned\n*/\nSetWidget.prototype.getValue = function() {\n\tvar value = this.setValue;\n\tif(this.setFilter) {\n\t\tvar results = this.wiki.filterTiddlers(this.setFilter,this);\n\t\tif(!this.setValue) {\n\t\t\tvar select;\n\t\t\tif(this.setSelect) {\n\t\t\t\tselect = parseInt(this.setSelect,10);\n\t\t\t}\n\t\t\tif(select !== undefined) {\n\t\t\t\tvalue = results[select] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = $tw.utils.stringifyList(results);\t\t\t\n\t\t\t}\n\t\t}\n\t\tif(results.length === 0 && this.setEmptyValue !== undefined) {\n\t\t\tvalue = this.setEmptyValue;\n\t\t}\n\t} else if(!value && this.setEmptyValue) {\n\t\tvalue = this.setEmptyValue;\n\t}\n\treturn value;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSetWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name || changedAttributes.filter || changedAttributes.select ||changedAttributes.value || changedAttributes.emptyValue ||\n\t (this.setFilter && this.getValue() != this.variables[this.setName].value)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.setvariable = SetWidget;\nexports.set = SetWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/set.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/text.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/text.js\ntype: application/javascript\nmodule-type: widget\n\nText node widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TextNodeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTextNodeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTextNodeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar text = this.getAttribute(\"text\",this.parseTreeNode.text || \"\");\n\ttext = text.replace(/\\r/mg,\"\");\n\tvar textNode = this.document.createTextNode(text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTextNodeWidget.prototype.execute = function() {\n\t// Nothing to do for a text node\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTextNodeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.text) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.text = TextNodeWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/text.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/tiddler.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/tiddler.js\ntype: application/javascript\nmodule-type: widget\n\nTiddler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTiddlerWidget.prototype.execute = function() {\n\tthis.tiddlerState = this.computeTiddlerState();\n\tthis.setVariable(\"currentTiddler\",this.tiddlerState.currentTiddler);\n\tthis.setVariable(\"missingTiddlerClass\",this.tiddlerState.missingTiddlerClass);\n\tthis.setVariable(\"shadowTiddlerClass\",this.tiddlerState.shadowTiddlerClass);\n\tthis.setVariable(\"systemTiddlerClass\",this.tiddlerState.systemTiddlerClass);\n\tthis.setVariable(\"tiddlerTagClasses\",this.tiddlerState.tiddlerTagClasses);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nCompute the tiddler state flags\n*/\nTiddlerWidget.prototype.computeTiddlerState = function() {\n\t// Get our parameters\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Compute the state\n\tvar state = {\n\t\tcurrentTiddler: this.tiddlerTitle || \"\",\n\t\tmissingTiddlerClass: (this.wiki.tiddlerExists(this.tiddlerTitle) || this.wiki.isShadowTiddler(this.tiddlerTitle)) ? \"tc-tiddler-exists\" : \"tc-tiddler-missing\",\n\t\tshadowTiddlerClass: this.wiki.isShadowTiddler(this.tiddlerTitle) ? \"tc-tiddler-shadow\" : \"\",\n\t\tsystemTiddlerClass: this.wiki.isSystemTiddler(this.tiddlerTitle) ? \"tc-tiddler-system\" : \"\",\n\t\ttiddlerTagClasses: this.getTagClasses()\n\t};\n\t// Compute a simple hash to make it easier to detect changes\n\tstate.hash = state.currentTiddler + state.missingTiddlerClass + state.shadowTiddlerClass + state.systemTiddlerClass + state.tiddlerTagClasses;\n\treturn state;\n};\n\n/*\nCreate a string of CSS classes derived from the tags of the current tiddler\n*/\nTiddlerWidget.prototype.getTagClasses = function() {\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\tif(tiddler) {\n\t\tvar tags = [];\n\t\t$tw.utils.each(tiddler.fields.tags,function(tag) {\n\t\t\ttags.push(\"tc-tagged-\" + encodeURIComponent(tag));\n\t\t});\n\t\treturn tags.join(\" \");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tnewTiddlerState = this.computeTiddlerState();\n\tif(changedAttributes.tiddler || newTiddlerState.hash !== this.tiddlerState.hash) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.tiddler = TiddlerWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/tiddler.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/transclude.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/transclude.js\ntype: application/javascript\nmodule-type: widget\n\nTransclude widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TranscludeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTranscludeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTranscludeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTranscludeWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.transcludeTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.transcludeSubTiddler = this.getAttribute(\"subtiddler\");\n\tthis.transcludeField = this.getAttribute(\"field\");\n\tthis.transcludeIndex = this.getAttribute(\"index\");\n\tthis.transcludeMode = this.getAttribute(\"mode\");\n\t// Parse the text reference\n\tvar parseAsInline = !this.parseTreeNode.isBlock;\n\tif(this.transcludeMode === \"inline\") {\n\t\tparseAsInline = true;\n\t} else if(this.transcludeMode === \"block\") {\n\t\tparseAsInline = false;\n\t}\n\tvar parser = this.wiki.parseTextReference(\n\t\t\t\t\t\tthis.transcludeTitle,\n\t\t\t\t\t\tthis.transcludeField,\n\t\t\t\t\t\tthis.transcludeIndex,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tparseAsInline: parseAsInline,\n\t\t\t\t\t\t\tsubTiddler: this.transcludeSubTiddler\n\t\t\t\t\t\t}),\n\t\tparseTreeNodes = parser ? parser.tree : this.parseTreeNode.children;\n\t// Set context variables for recursion detection\n\tvar recursionMarker = this.makeRecursionMarker();\n\tthis.setVariable(\"transclusion\",recursionMarker);\n\t// Check for recursion\n\tif(parser) {\n\t\tif(this.parentWidget && this.parentWidget.hasVariable(\"transclusion\",recursionMarker)) {\n\t\t\tparseTreeNodes = [{type: \"element\", tag: \"span\", attributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-error\"}\n\t\t\t}, children: [\n\t\t\t\t{type: \"text\", text: $tw.language.getString(\"Error/RecursiveTransclusion\")}\n\t\t\t]}];\n\t\t}\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nCompose a string comprising the title, field and/or index to identify this transclusion for recursion detection\n*/\nTranscludeWidget.prototype.makeRecursionMarker = function() {\n\tvar output = [];\n\toutput.push(\"{\");\n\toutput.push(this.getVariable(\"currentTiddler\",{defaultValue: \"\"}));\n\toutput.push(\"|\");\n\toutput.push(this.transcludeTitle || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeField || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeIndex || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeSubTiddler || \"\");\n\toutput.push(\"}\");\n\treturn output.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTranscludeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedTiddlers[this.transcludeTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.transclude = TranscludeWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/transclude.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/vars.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/vars.js\ntype: application/javascript\nmodule-type: widget\n\nThis widget allows multiple variables to be set in one go:\n\n```\n\\define helloworld() Hello world!\n<$vars greeting=\"Hi\" me={{!!title}} sentence=<<helloworld>>>\n <<greeting>>! I am <<me>> and I say: <<sentence>>\n</$vars>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar VarsWidget = function(parseTreeNode,options) {\n\t// Call the constructor\n\tWidget.call(this);\n\t// Initialise\t\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nVarsWidget.prototype = Object.create(Widget.prototype);\n\n/*\nRender this widget into the DOM\n*/\nVarsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nVarsWidget.prototype.execute = function() {\n\t// Parse variables\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(val,key) {\n\t\tif(key.charAt(0) !== \"$\") {\n\t\t\tself.setVariable(key,val);\n\t\t}\n\t});\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nVarsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(Object.keys(changedAttributes).length) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"vars\"] = VarsWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/vars.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/view.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/view.js\ntype: application/javascript\nmodule-type: widget\n\nView widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ViewWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nViewWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nViewWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tif(this.text) {\n\t\tvar textNode = this.document.createTextNode(this.text);\n\t\tparent.insertBefore(textNode,nextSibling);\n\t\tthis.domNodes.push(textNode);\n\t} else {\n\t\tthis.makeChildWidgets();\n\t\tthis.renderChildren(parent,nextSibling);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nViewWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.viewTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.viewSubtiddler = this.getAttribute(\"subtiddler\");\n\tthis.viewField = this.getAttribute(\"field\",\"text\");\n\tthis.viewIndex = this.getAttribute(\"index\");\n\tthis.viewFormat = this.getAttribute(\"format\",\"text\");\n\tthis.viewTemplate = this.getAttribute(\"template\",\"\");\n\tswitch(this.viewFormat) {\n\t\tcase \"htmlwikified\":\n\t\t\tthis.text = this.getValueAsHtmlWikified();\n\t\t\tbreak;\n\t\tcase \"plainwikified\":\n\t\t\tthis.text = this.getValueAsPlainWikified();\n\t\t\tbreak;\n\t\tcase \"htmlencodedplainwikified\":\n\t\t\tthis.text = this.getValueAsHtmlEncodedPlainWikified();\n\t\t\tbreak;\n\t\tcase \"htmlencoded\":\n\t\t\tthis.text = this.getValueAsHtmlEncoded();\n\t\t\tbreak;\n\t\tcase \"urlencoded\":\n\t\t\tthis.text = this.getValueAsUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"doubleurlencoded\":\n\t\t\tthis.text = this.getValueAsDoubleUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"date\":\n\t\t\tthis.text = this.getValueAsDate(this.viewTemplate);\n\t\t\tbreak;\n\t\tcase \"relativedate\":\n\t\t\tthis.text = this.getValueAsRelativeDate();\n\t\t\tbreak;\n\t\tcase \"stripcomments\":\n\t\t\tthis.text = this.getValueAsStrippedComments();\n\t\t\tbreak;\n\t\tcase \"jsencoded\":\n\t\t\tthis.text = this.getValueAsJsEncoded();\n\t\t\tbreak;\n\t\tdefault: // \"text\"\n\t\t\tthis.text = this.getValueAsText();\n\t\t\tbreak;\n\t}\n};\n\n/*\nThe various formatter functions are baked into this widget for the moment. Eventually they will be replaced by macro functions\n*/\n\n/*\nRetrieve the value of the widget. Options are:\nasString: Optionally return the value as a string\n*/\nViewWidget.prototype.getValue = function(options) {\n\toptions = options || {};\n\tvar value = options.asString ? \"\" : undefined;\n\tif(this.viewIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.viewTitle,this.viewIndex);\n\t} else {\n\t\tvar tiddler;\n\t\tif(this.viewSubtiddler) {\n\t\t\ttiddler = this.wiki.getSubTiddler(this.viewTitle,this.viewSubtiddler);\t\n\t\t} else {\n\t\t\ttiddler = this.wiki.getTiddler(this.viewTitle);\n\t\t}\n\t\tif(tiddler) {\n\t\t\tif(this.viewField === \"text\" && !this.viewSubtiddler) {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.viewTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.viewField)) {\n\t\t\t\t\tif(options.asString) {\n\t\t\t\t\t\tvalue = tiddler.getFieldString(this.viewField);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue = tiddler.fields[this.viewField];\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.viewField === \"title\") {\n\t\t\t\tvalue = this.viewTitle;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\nViewWidget.prototype.getValueAsText = function() {\n\treturn this.getValue({asString: true});\n};\n\nViewWidget.prototype.getValueAsHtmlWikified = function() {\n\treturn this.wiki.renderText(\"text/html\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{parentWidget: this});\n};\n\nViewWidget.prototype.getValueAsPlainWikified = function() {\n\treturn this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{parentWidget: this});\n};\n\nViewWidget.prototype.getValueAsHtmlEncodedPlainWikified = function() {\n\treturn $tw.utils.htmlEncode(this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{parentWidget: this}));\n};\n\nViewWidget.prototype.getValueAsHtmlEncoded = function() {\n\treturn $tw.utils.htmlEncode(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsUrlEncoded = function() {\n\treturn encodeURIComponent(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsDoubleUrlEncoded = function() {\n\treturn encodeURIComponent(encodeURIComponent(this.getValueAsText()));\n};\n\nViewWidget.prototype.getValueAsDate = function(format) {\n\tformat = format || \"YYYY MM DD 0hh:0mm\";\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.formatDateString(value,format);\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsRelativeDate = function(format) {\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.getRelativeDate((new Date()) - (new Date(value))).description;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsStrippedComments = function() {\n\tvar lines = this.getValueAsText().split(\"\\n\"),\n\t\tout = [];\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar text = lines[line];\n\t\tif(!/^\\s*\\/\\/#/.test(text)) {\n\t\t\tout.push(text);\n\t\t}\n\t}\n\treturn out.join(\"\\n\");\n};\n\nViewWidget.prototype.getValueAsJsEncoded = function() {\n\treturn $tw.utils.stringify(this.getValueAsText());\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nViewWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.template || changedAttributes.format || changedTiddlers[this.viewTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.view = ViewWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/view.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/widget.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/widget.js\ntype: application/javascript\nmodule-type: widget\n\nWidget base class\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate a widget object for a parse tree node\n\tparseTreeNode: reference to the parse tree node to be rendered\n\toptions: see below\nOptions include:\n\twiki: mandatory reference to wiki associated with this render tree\n\tparentWidget: optional reference to a parent renderer node for the context chain\n\tdocument: optional document object to use instead of global document\n*/\nvar Widget = function(parseTreeNode,options) {\n\tif(arguments.length > 0) {\n\t\tthis.initialise(parseTreeNode,options);\n\t}\n};\n\n/*\nInitialise widget properties. These steps are pulled out of the constructor so that we can reuse them in subclasses\n*/\nWidget.prototype.initialise = function(parseTreeNode,options) {\n\toptions = options || {};\n\t// Save widget info\n\tthis.parseTreeNode = parseTreeNode;\n\tthis.wiki = options.wiki;\n\tthis.parentWidget = options.parentWidget;\n\tthis.variablesConstructor = function() {};\n\tthis.variablesConstructor.prototype = this.parentWidget ? this.parentWidget.variables : {};\n\tthis.variables = new this.variablesConstructor();\n\tthis.document = options.document;\n\tthis.attributes = {};\n\tthis.children = [];\n\tthis.domNodes = [];\n\tthis.eventListeners = {};\n\t// Hashmap of the widget classes\n\tif(!this.widgetClasses) {\n\t\tWidget.prototype.widgetClasses = $tw.modules.applyMethods(\"widget\");\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWidget.prototype.execute = function() {\n\tthis.makeChildWidgets();\n};\n\n/*\nSet the value of a context variable\nname: name of the variable\nvalue: value of the variable\nparams: array of {name:, default:} for each parameter\n*/\nWidget.prototype.setVariable = function(name,value,params) {\n\tthis.variables[name] = {value: value, params: params};\n};\n\n/*\nGet the prevailing value of a context variable\nname: name of variable\noptions: see below\nOptions include\nparams: array of {name:, value:} for each parameter\ndefaultValue: default value if the variable is not defined\n*/\nWidget.prototype.getVariable = function(name,options) {\n\toptions = options || {};\n\tvar actualParams = options.params || [],\n\t\tparentWidget = this.parentWidget;\n\t// Check for the variable defined in the parent widget (or an ancestor in the prototype chain)\n\tif(parentWidget && name in parentWidget.variables) {\n\t\tvar variable = parentWidget.variables[name],\n\t\t\tvalue = variable.value;\n\t\t// Substitute any parameters specified in the definition\n\t\tvalue = this.substituteVariableParameters(value,variable.params,actualParams);\n\t\tvalue = this.substituteVariableReferences(value);\n\t\treturn value;\n\t}\n\t// If the variable doesn't exist in the parent widget then look for a macro module\n\treturn this.evaluateMacroModule(name,actualParams,options.defaultValue);\n};\n\nWidget.prototype.substituteVariableParameters = function(text,formalParams,actualParams) {\n\tif(formalParams) {\n\t\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\t\tparamInfo, paramValue;\n\t\t// Step through each of the parameters in the macro definition\n\t\tfor(var p=0; p<formalParams.length; p++) {\n\t\t\t// Check if we've got a macro call parameter with the same name\n\t\t\tparamInfo = formalParams[p];\n\t\t\tparamValue = undefined;\n\t\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If not, use the next available anonymous macro call parameter\n\t\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\t\tnextAnonParameter++;\n\t\t\t}\n\t\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t\t}\n\t\t\t// If we've still not got a value, use the default, if any\n\t\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t\t// Replace any instances of this parameter\n\t\t\ttext = $tw.utils.replaceString(text,new RegExp(\"\\\\$\" + $tw.utils.escapeRegExp(paramInfo.name) + \"\\\\$\",\"mg\"),paramValue);\n\t\t}\n\t}\n\treturn text;\n};\n\nWidget.prototype.substituteVariableReferences = function(text) {\n\tvar self = this;\n\treturn (text || \"\").replace(/\\$\\(([^\\)\\$]+)\\)\\$/g,function(match,p1,offset,string) {\n\t\treturn self.getVariable(p1,{defaultValue: \"\"});\n\t});\n};\n\nWidget.prototype.evaluateMacroModule = function(name,actualParams,defaultValue) {\n\tif($tw.utils.hop($tw.macros,name)) {\n\t\tvar macro = $tw.macros[name],\n\t\t\targs = [];\n\t\tif(macro.params.length > 0) {\n\t\t\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\t\t\tparamInfo, paramValue;\n\t\t\t// Step through each of the parameters in the macro definition\n\t\t\tfor(var p=0; p<macro.params.length; p++) {\n\t\t\t\t// Check if we've got a macro call parameter with the same name\n\t\t\t\tparamInfo = macro.params[p];\n\t\t\t\tparamValue = undefined;\n\t\t\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If not, use the next available anonymous macro call parameter\n\t\t\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\t\t\tnextAnonParameter++;\n\t\t\t\t}\n\t\t\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t\t\t}\n\t\t\t\t// If we've still not got a value, use the default, if any\n\t\t\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t\t\t// Save the parameter\n\t\t\t\targs.push(paramValue);\n\t\t\t}\n\t\t}\n\t\telse for(var i=0; i<actualParams.length; ++i) {\n\t\t\targs.push(actualParams[i].value);\n\t\t}\n\t\treturn (macro.run.apply(this,args) || \"\").toString();\n\t} else {\n\t\treturn defaultValue;\n\t}\n};\n\n/*\nCheck whether a given context variable value exists in the parent chain\n*/\nWidget.prototype.hasVariable = function(name,value) {\n\tvar node = this;\n\twhile(node) {\n\t\tif($tw.utils.hop(node.variables,name) && node.variables[name].value === value) {\n\t\t\treturn true;\n\t\t}\n\t\tnode = node.parentWidget;\n\t}\n\treturn false;\n};\n\n/*\nConstruct a qualifying string based on a hash of concatenating the values of a given variable in the parent chain\n*/\nWidget.prototype.getStateQualifier = function(name) {\n\tthis.qualifiers = this.qualifiers || Object.create(null);\n\tname = name || \"transclusion\";\n\tif(this.qualifiers[name]) {\n\t\treturn this.qualifiers[name];\n\t} else {\n\t\tvar output = [],\n\t\t\tnode = this;\n\t\twhile(node && node.parentWidget) {\n\t\t\tif($tw.utils.hop(node.parentWidget.variables,name)) {\n\t\t\t\toutput.push(node.getVariable(name));\n\t\t\t}\n\t\t\tnode = node.parentWidget;\n\t\t}\n\t\tvar value = $tw.utils.hashString(output.join(\"\"));\n\t\tthis.qualifiers[name] = value;\n\t\treturn value;\n\t}\n};\n\n/*\nCompute the current values of the attributes of the widget. Returns a hashmap of the names of the attributes that have changed\n*/\nWidget.prototype.computeAttributes = function() {\n\tvar changedAttributes = {},\n\t\tself = this,\n\t\tvalue;\n\t$tw.utils.each(this.parseTreeNode.attributes,function(attribute,name) {\n\t\tif(attribute.type === \"filtered\") {\n\t\t\tvalue = self.wiki.filterTiddlers(attribute.filter,self)[0] || \"\";\n\t\t} else if(attribute.type === \"indirect\") {\n\t\t\tvalue = self.wiki.getTextReference(attribute.textReference,\"\",self.getVariable(\"currentTiddler\"));\n\t\t} else if(attribute.type === \"macro\") {\n\t\t\tvalue = self.getVariable(attribute.value.name,{params: attribute.value.params});\n\t\t} else { // String attribute\n\t\t\tvalue = attribute.value;\n\t\t}\n\t\t// Check whether the attribute has changed\n\t\tif(self.attributes[name] !== value) {\n\t\t\tself.attributes[name] = value;\n\t\t\tchangedAttributes[name] = true;\n\t\t}\n\t});\n\treturn changedAttributes;\n};\n\n/*\nCheck for the presence of an attribute\n*/\nWidget.prototype.hasAttribute = function(name) {\n\treturn $tw.utils.hop(this.attributes,name);\n};\n\n/*\nGet the value of an attribute\n*/\nWidget.prototype.getAttribute = function(name,defaultText) {\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\treturn this.attributes[name];\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nAssign the computed attributes of the widget to a domNode\noptions include:\nexcludeEventAttributes: ignores attributes whose name begins with \"on\"\n*/\nWidget.prototype.assignAttributes = function(domNode,options) {\n\toptions = options || {};\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(v,a) {\n\t\t// Check exclusions\n\t\tif(options.excludeEventAttributes && a.substr(0,2) === \"on\") {\n\t\t\tv = undefined;\n\t\t}\n\t\tif(v !== undefined) {\n\t\t\tvar b = a.split(\":\");\n\t\t\t// Setting certain attributes can cause a DOM error (eg xmlns on the svg element)\n\t\t\ttry {\n\t\t\t\tif (b.length == 2 && b[0] == \"xlink\"){\n\t\t\t\t\tdomNode.setAttributeNS(\"http://www.w3.org/1999/xlink\",b[1],v);\n\t\t\t\t} else {\n\t\t\t\t\tdomNode.setAttributeNS(null,a,v);\n\t\t\t\t}\n\t\t\t} catch(e) {\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nMake child widgets correspondng to specified parseTreeNodes\n*/\nWidget.prototype.makeChildWidgets = function(parseTreeNodes) {\n\tthis.children = [];\n\tvar self = this;\n\t$tw.utils.each(parseTreeNodes || (this.parseTreeNode && this.parseTreeNode.children),function(childNode) {\n\t\tself.children.push(self.makeChildWidget(childNode));\n\t});\n};\n\n/*\nConstruct the widget object for a parse tree node\n*/\nWidget.prototype.makeChildWidget = function(parseTreeNode) {\n\tvar WidgetClass = this.widgetClasses[parseTreeNode.type];\n\tif(!WidgetClass) {\n\t\tWidgetClass = this.widgetClasses.text;\n\t\tparseTreeNode = {type: \"text\", text: \"Undefined widget '\" + parseTreeNode.type + \"'\"};\n\t}\n\treturn new WidgetClass(parseTreeNode,{\n\t\twiki: this.wiki,\n\t\tvariables: {},\n\t\tparentWidget: this,\n\t\tdocument: this.document\n\t});\n};\n\n/*\nGet the next sibling of this widget\n*/\nWidget.prototype.nextSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index < this.parentWidget.children.length-1) {\n\t\t\treturn this.parentWidget.children[index+1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the previous sibling of this widget\n*/\nWidget.prototype.previousSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index > 0) {\n\t\t\treturn this.parentWidget.children[index-1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRender the children of this widget into the DOM\n*/\nWidget.prototype.renderChildren = function(parent,nextSibling) {\n\t$tw.utils.each(this.children,function(childWidget) {\n\t\tchildWidget.render(parent,nextSibling);\n\t});\n};\n\n/*\nAdd a list of event listeners from an array [{type:,handler:},...]\n*/\nWidget.prototype.addEventListeners = function(listeners) {\n\tvar self = this;\n\t$tw.utils.each(listeners,function(listenerInfo) {\n\t\tself.addEventListener(listenerInfo.type,listenerInfo.handler);\n\t});\n};\n\n/*\nAdd an event listener\n*/\nWidget.prototype.addEventListener = function(type,handler) {\n\tvar self = this;\n\tif(typeof handler === \"string\") { // The handler is a method name on this widget\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn self[handler].call(self,event);\n\t\t};\n\t} else { // The handler is a function\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn handler.call(self,event);\n\t\t};\n\t}\n};\n\n/*\nDispatch an event to a widget. If the widget doesn't handle the event then it is also dispatched to the parent widget\n*/\nWidget.prototype.dispatchEvent = function(event) {\n\t// Dispatch the event if this widget handles it\n\tvar listener = this.eventListeners[event.type];\n\tif(listener) {\n\t\t// Don't propagate the event if the listener returned false\n\t\tif(!listener(event)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Dispatch the event to the parent widget\n\tif(this.parentWidget) {\n\t\treturn this.parentWidget.dispatchEvent(event);\n\t}\n\treturn true;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nRebuild a previously rendered widget\n*/\nWidget.prototype.refreshSelf = function() {\n\tvar nextSibling = this.findNextSiblingDomNode();\n\tthis.removeChildDomNodes();\n\tthis.render(this.parentDomNode,nextSibling);\n};\n\n/*\nRefresh all the children of a widget\n*/\nWidget.prototype.refreshChildren = function(changedTiddlers) {\n\tvar self = this,\n\t\trefreshed = false;\n\t$tw.utils.each(this.children,function(childWidget) {\n\t\trefreshed = childWidget.refresh(changedTiddlers) || refreshed;\n\t});\n\treturn refreshed;\n};\n\n/*\nFind the next sibling in the DOM to this widget. This is done by scanning the widget tree through all next siblings and their descendents that share the same parent DOM node\n*/\nWidget.prototype.findNextSiblingDomNode = function(startIndex) {\n\t// Refer to this widget by its index within its parents children\n\tvar parent = this.parentWidget,\n\t\tindex = startIndex !== undefined ? startIndex : parent.children.indexOf(this);\nif(index === -1) {\n\tthrow \"node not found in parents children\";\n}\n\t// Look for a DOM node in the later siblings\n\twhile(++index < parent.children.length) {\n\t\tvar domNode = parent.children[index].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\t// Go back and look for later siblings of our parent if it has the same parent dom node\n\tvar grandParent = parent.parentWidget;\n\tif(grandParent && parent.parentDomNode === this.parentDomNode) {\n\t\tindex = grandParent.children.indexOf(parent);\n\t\tif(index !== -1) {\n\t\t\treturn parent.findNextSiblingDomNode(index);\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nFind the first DOM node generated by a widget or its children\n*/\nWidget.prototype.findFirstDomNode = function() {\n\t// Return the first dom node of this widget, if we've got one\n\tif(this.domNodes.length > 0) {\n\t\treturn this.domNodes[0];\n\t}\n\t// Otherwise, recursively call our children\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar domNode = this.children[t].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRemove any DOM nodes created by this widget or its children\n*/\nWidget.prototype.removeChildDomNodes = function() {\n\t// If this widget has directly created DOM nodes, delete them and exit. This assumes that any child widgets are contained within the created DOM nodes, which would normally be the case\n\tif(this.domNodes.length > 0) {\n\t\t$tw.utils.each(this.domNodes,function(domNode) {\n\t\t\tdomNode.parentNode.removeChild(domNode);\n\t\t});\n\t\tthis.domNodes = [];\n\t} else {\n\t\t// Otherwise, ask the child widgets to delete their DOM nodes\n\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\tchildWidget.removeChildDomNodes();\n\t\t});\n\t}\n};\n\n/*\nInvoke the action widgets that are descendents of the current widget.\n*/\nWidget.prototype.invokeActions = function(triggeringWidget,event) {\n\tvar handled = false;\n\t// For each child widget\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar child = this.children[t];\n\t\t// Invoke the child if it is an action widget\n\t\tif(child.invokeAction) {\n\t\t\tchild.refreshSelf();\n\t\t\tif(child.invokeAction(triggeringWidget,event)) {\n\t\t\t\thandled = true;\n\t\t\t}\n\t\t}\n\t\t// Propagate through through the child if it permits it\n\t\tif(child.allowActionPropagation() && child.invokeActions(triggeringWidget,event)) {\n\t\t\thandled = true;\n\t\t}\n\t}\n\treturn handled;\n};\n\n/*\nInvoke the action widgets defined in a string\n*/\nWidget.prototype.invokeActionString = function(actions,triggeringWidget,event,variables) {\n\tactions = actions || \"\";\n\tvar parser = this.wiki.parseText(\"text/vnd.tiddlywiki\",actions,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document\n\t\t}),\n\t\twidgetNode = this.wiki.makeWidget(parser,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document,\n\t\t\tvariables: variables\n\t\t});\n\tvar container = this.document.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn widgetNode.invokeActions(this,event);\n};\n\nWidget.prototype.allowActionPropagation = function() {\n\treturn true;\n};\n\nexports.widget = Widget;\n\n})();\n",
"title": "$:/core/modules/widgets/widget.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/wikify.js": {
"text": "/*\\\ntitle: $:/core/modules/widgets/wikify.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to wikify text into a variable\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar WikifyWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nWikifyWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nWikifyWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWikifyWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.wikifyName = this.getAttribute(\"name\");\n\tthis.wikifyText = this.getAttribute(\"text\");\n\tthis.wikifyType = this.getAttribute(\"type\");\n\tthis.wikifyMode = this.getAttribute(\"mode\",\"block\");\n\tthis.wikifyOutput = this.getAttribute(\"output\",\"text\");\n\t// Create the parse tree\n\tthis.wikifyParser = this.wiki.parseText(this.wikifyType,this.wikifyText,{\n\t\t\tparseAsInline: this.wikifyMode === \"inline\"\n\t\t});\n\t// Create the widget tree \n\tthis.wikifyWidgetNode = this.wiki.makeWidget(this.wikifyParser,{\n\t\t\tdocument: $tw.fakeDocument,\n\t\t\tparentWidget: this\n\t\t});\n\t// Render the widget tree to the container\n\tthis.wikifyContainer = $tw.fakeDocument.createElement(\"div\");\n\tthis.wikifyWidgetNode.render(this.wikifyContainer,null);\n\tthis.wikifyResult = this.getResult();\n\t// Set context variable\n\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nReturn the result string\n*/\nWikifyWidget.prototype.getResult = function() {\n\tvar result;\n\tswitch(this.wikifyOutput) {\n\t\tcase \"text\":\n\t\t\tresult = this.wikifyContainer.textContent;\n\t\t\tbreak;\n\t\tcase \"formattedtext\":\n\t\t\tresult = this.wikifyContainer.formattedTextContent;\n\t\t\tbreak;\n\t\tcase \"html\":\n\t\t\tresult = this.wikifyContainer.innerHTML;\n\t\t\tbreak;\n\t\tcase \"parsetree\":\n\t\t\tresult = JSON.stringify(this.wikifyParser.tree,0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t\tcase \"widgettree\":\n\t\t\tresult = JSON.stringify(this.getWidgetTree(),0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t}\n\treturn result;\n};\n\n/*\nReturn a string of the widget tree\n*/\nWikifyWidget.prototype.getWidgetTree = function() {\n\tvar copyNode = function(widgetNode,resultNode) {\n\t\t\tvar type = widgetNode.parseTreeNode.type;\n\t\t\tresultNode.type = type;\n\t\t\tswitch(type) {\n\t\t\t\tcase \"element\":\n\t\t\t\t\tresultNode.tag = widgetNode.parseTreeNode.tag;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"text\":\n\t\t\t\t\tresultNode.text = widgetNode.parseTreeNode.text;\n\t\t\t\t\tbreak;\t\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.attributes || {}).length > 0) {\n\t\t\t\tresultNode.attributes = {};\n\t\t\t\t$tw.utils.each(widgetNode.attributes,function(attr,attrName) {\n\t\t\t\t\tresultNode.attributes[attrName] = widgetNode.getAttribute(attrName);\n\t\t\t\t});\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.children || {}).length > 0) {\n\t\t\t\tresultNode.children = [];\n\t\t\t\t$tw.utils.each(widgetNode.children,function(widgetChildNode) {\n\t\t\t\t\tvar node = {};\n\t\t\t\t\tresultNode.children.push(node);\n\t\t\t\t\tcopyNode(widgetChildNode,node);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tresults = {};\n\tcopyNode(this.wikifyWidgetNode,results);\n\treturn results;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWikifyWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh ourselves entirely if any of our attributes have changed\n\tif(changedAttributes.name || changedAttributes.text || changedAttributes.type || changedAttributes.mode || changedAttributes.output) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\t// Refresh the widget tree\n\t\tif(this.wikifyWidgetNode.refresh(changedTiddlers)) {\n\t\t\t// Check if there was any change\n\t\t\tvar result = this.getResult();\n\t\t\tif(result !== this.wikifyResult) {\n\t\t\t\t// If so, save the change\n\t\t\t\tthis.wikifyResult = result;\n\t\t\t\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t\t\t\t// Refresh each of our child widgets\n\t\t\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\t\t\tchildWidget.refreshSelf();\n\t\t\t\t});\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// Just refresh the children\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.wikify = WikifyWidget;\n\n})();\n",
"title": "$:/core/modules/widgets/wikify.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/wiki-bulkops.js": {
"text": "/*\\\ntitle: $:/core/modules/wiki-bulkops.js\ntype: application/javascript\nmodule-type: wikimethod\n\nBulk tiddler operations such as rename.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRename a tiddler, and relink any tags or lists that reference it.\n*/\nfunction renameTiddler(fromTitle,toTitle,options) {\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\t// Rename the tiddler itself\n\t\tvar oldTiddler = this.getTiddler(fromTitle),\n\t\t\tnewTiddler = new $tw.Tiddler(oldTiddler,{title: toTitle},this.getModificationFields());\n\t\tnewTiddler = $tw.hooks.invokeHook(\"th-renaming-tiddler\",newTiddler,oldTiddler);\n\t\tthis.addTiddler(newTiddler);\n\t\tthis.deleteTiddler(fromTitle);\n\t\t// Rename any tags or lists that reference it\n\t\tthis.relinkTiddler(fromTitle,toTitle,options)\n\t}\n}\n\n/*\nRelink any tags or lists that reference a given tiddler\n*/\nfunction relinkTiddler(fromTitle,toTitle,options) {\n\tvar self = this;\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\tthis.each(function(tiddler,title) {\n\t\t\tvar type = tiddler.fields.type || \"\";\n\t\t\t// Don't touch plugins or JavaScript modules\n\t\t\tif(!tiddler.fields[\"plugin-type\"] && type !== \"application/javascript\") {\n\t\t\t\tvar tags = (tiddler.fields.tags || []).slice(0),\n\t\t\t\t\tlist = (tiddler.fields.list || []).slice(0),\n\t\t\t\t\tisModified = false;\n\t\t\t\tif(!options.dontRenameInTags) {\n\t\t\t\t\t// Rename tags\n\t\t\t\t\t$tw.utils.each(tags,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming tag '\" + tags[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\ttags[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(!options.dontRenameInLists) {\n\t\t\t\t\t// Rename lists\n\t\t\t\t\t$tw.utils.each(list,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming list item '\" + list[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\tlist[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(isModified) {\n\t\t\t\t\tvar newTiddler = new $tw.Tiddler(tiddler,{tags: tags, list: list},self.getModificationFields())\n\t\t\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-relinking-tiddler\",newTiddler,tiddler);\n\t\t\t\t\tself.addTiddler(newTiddler);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\nexports.renameTiddler = renameTiddler;\nexports.relinkTiddler = relinkTiddler;\n\n})();\n",
"title": "$:/core/modules/wiki-bulkops.js",
"type": "application/javascript",
"module-type": "wikimethod"
},
"$:/core/modules/wiki.js": {
"text": "/*\\\ntitle: $:/core/modules/wiki.js\ntype: application/javascript\nmodule-type: wikimethod\n\nExtension methods for the $tw.Wiki object\n\nAdds the following properties to the wiki object:\n\n* `eventListeners` is a hashmap by type of arrays of listener functions\n* `changedTiddlers` is a hashmap describing changes to named tiddlers since wiki change events were last dispatched. Each entry is a hashmap containing two fields:\n\tmodified: true/false\n\tdeleted: true/false\n* `changeCount` is a hashmap by tiddler title containing a numerical index that starts at zero and is incremented each time a tiddler is created changed or deleted\n* `caches` is a hashmap by tiddler title containing a further hashmap of named cache objects. Caches are automatically cleared when a tiddler is modified or deleted\n* `globalCache` is a hashmap by cache name of cache objects that are cleared whenever any tiddler change occurs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar USER_NAME_TITLE = \"$:/status/UserName\",\n\tTIMESTAMP_DISABLE_TITLE = \"$:/config/TimestampDisable\";\n\n/*\nGet the value of a text reference. Text references can have any of these forms:\n\t<tiddlertitle>\n\t<tiddlertitle>!!<fieldname>\n\t!!<fieldname> - specifies a field of the current tiddlers\n\t<tiddlertitle>##<index>\n*/\nexports.getTextReference = function(textRef,defaultText,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tif(tr.field) {\n\t\tvar tiddler = this.getTiddler(title);\n\t\tif(tr.field === \"title\") { // Special case so we can return the title of a non-existent tiddler\n\t\t\treturn title;\n\t\t} else if(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\treturn tiddler.getFieldString(tr.field);\n\t\t} else {\n\t\t\treturn defaultText;\n\t\t}\n\t} else if(tr.index) {\n\t\treturn this.extractTiddlerDataItem(title,tr.index,defaultText);\n\t} else {\n\t\treturn this.getTiddlerText(title,defaultText);\n\t}\n};\n\nexports.setTextReference = function(textRef,value,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tthis.setText(title,tr.field,tr.index,value);\n};\n\nexports.setText = function(title,field,index,value,options) {\n\toptions = options || {};\n\tvar creationFields = options.suppressTimestamp ? {} : this.getCreationFields(),\n\t\tmodificationFields = options.suppressTimestamp ? {} : this.getModificationFields();\n\t// Check if it is a reference to a tiddler field\n\tif(index) {\n\t\tvar data = this.getTiddlerData(title,Object.create(null));\n\t\tif(value !== undefined) {\n\t\t\tdata[index] = value;\n\t\t} else {\n\t\t\tdelete data[index];\n\t\t}\n\t\tthis.setTiddlerData(title,data,modificationFields);\n\t} else {\n\t\tvar tiddler = this.getTiddler(title),\n\t\t\tfields = {title: title};\n\t\tfields[field || \"text\"] = value;\n\t\tthis.addTiddler(new $tw.Tiddler(creationFields,tiddler,fields,modificationFields));\n\t}\n};\n\nexports.deleteTextReference = function(textRef,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle,tiddler,fields;\n\t// Check if it is a reference to a tiddler\n\tif(tr.title && !tr.field) {\n\t\tthis.deleteTiddler(tr.title);\n\t// Else check for a field reference\n\t} else if(tr.field) {\n\t\ttitle = tr.title || currTiddlerTitle;\n\t\ttiddler = this.getTiddler(title);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\tfields = Object.create(null);\n\t\t\tfields[tr.field] = undefined;\n\t\t\tthis.addTiddler(new $tw.Tiddler(tiddler,fields,this.getModificationFields()));\n\t\t}\n\t}\n};\n\nexports.addEventListener = function(type,listener) {\n\tthis.eventListeners = this.eventListeners || {};\n\tthis.eventListeners[type] = this.eventListeners[type] || [];\n\tthis.eventListeners[type].push(listener);\t\n};\n\nexports.removeEventListener = function(type,listener) {\n\tvar listeners = this.eventListeners[type];\n\tif(listeners) {\n\t\tvar p = listeners.indexOf(listener);\n\t\tif(p !== -1) {\n\t\t\tlisteners.splice(p,1);\n\t\t}\n\t}\n};\n\nexports.dispatchEvent = function(type /*, args */) {\n\tvar args = Array.prototype.slice.call(arguments,1),\n\t\tlisteners = this.eventListeners[type];\n\tif(listeners) {\n\t\tfor(var p=0; p<listeners.length; p++) {\n\t\t\tvar listener = listeners[p];\n\t\t\tlistener.apply(listener,args);\n\t\t}\n\t}\n};\n\n/*\nCauses a tiddler to be marked as changed, incrementing the change count, and triggers event handlers.\nThis method should be called after the changes it describes have been made to the wiki.tiddlers[] array.\n\ttitle: Title of tiddler\n\tisDeleted: defaults to false (meaning the tiddler has been created or modified),\n\t\ttrue if the tiddler has been deleted\n*/\nexports.enqueueTiddlerEvent = function(title,isDeleted) {\n\t// Record the touch in the list of changed tiddlers\n\tthis.changedTiddlers = this.changedTiddlers || Object.create(null);\n\tthis.changedTiddlers[title] = this.changedTiddlers[title] || Object.create(null);\n\tthis.changedTiddlers[title][isDeleted ? \"deleted\" : \"modified\"] = true;\n\t// Increment the change count\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\tthis.changeCount[title]++;\n\t} else {\n\t\tthis.changeCount[title] = 1;\n\t}\n\t// Trigger events\n\tthis.eventListeners = this.eventListeners || {};\n\tif(!this.eventsTriggered) {\n\t\tvar self = this;\n\t\t$tw.utils.nextTick(function() {\n\t\t\tvar changes = self.changedTiddlers;\n\t\t\tself.changedTiddlers = Object.create(null);\n\t\t\tself.eventsTriggered = false;\n\t\t\tif($tw.utils.count(changes) > 0) {\n\t\t\t\tself.dispatchEvent(\"change\",changes);\n\t\t\t}\n\t\t});\n\t\tthis.eventsTriggered = true;\n\t}\n};\n\nexports.getSizeOfTiddlerEventQueue = function() {\n\treturn $tw.utils.count(this.changedTiddlers);\n};\n\nexports.clearTiddlerEventQueue = function() {\n\tthis.changedTiddlers = Object.create(null);\n\tthis.changeCount = Object.create(null);\n};\n\nexports.getChangeCount = function(title) {\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\treturn this.changeCount[title];\n\t} else {\n\t\treturn 0;\n\t}\n};\n\n/*\nGenerate an unused title from the specified base\n*/\nexports.generateNewTitle = function(baseTitle,options) {\n\toptions = options || {};\n\tvar c = 0,\n\t\ttitle = baseTitle;\n\twhile(this.tiddlerExists(title) || this.isShadowTiddler(title) || this.findDraft(title)) {\n\t\ttitle = baseTitle + \n\t\t\t(options.prefix || \" \") + \n\t\t\t(++c);\n\t}\n\treturn title;\n};\n\nexports.isSystemTiddler = function(title) {\n\treturn title && title.indexOf(\"$:/\") === 0;\n};\n\nexports.isTemporaryTiddler = function(title) {\n\treturn title && title.indexOf(\"$:/temp/\") === 0;\n};\n\nexports.isImageTiddler = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\t\t\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/vnd.tiddlywiki\"];\n\t\treturn !!contentTypeInfo && contentTypeInfo.flags.indexOf(\"image\") !== -1;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLike addTiddler() except it will silently reject any plugin tiddlers that are older than the currently loaded version. Returns true if the tiddler was imported\n*/\nexports.importTiddler = function(tiddler) {\n\tvar existingTiddler = this.getTiddler(tiddler.fields.title);\n\t// Check if we're dealing with a plugin\n\tif(tiddler && tiddler.hasField(\"plugin-type\") && tiddler.hasField(\"version\") && existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t// Reject the incoming plugin if it is older\n\t\tif(!$tw.utils.checkVersions(tiddler.fields.version,existingTiddler.fields.version)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Fall through to adding the tiddler\n\tthis.addTiddler(tiddler);\n\treturn true;\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is created\n*/\nexports.getCreationFields = function() {\n\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = {\n\t\t\t\tcreated: new Date()\n\t\t\t},\n\t\t\tcreator = this.getTiddlerText(USER_NAME_TITLE);\n\t\tif(creator) {\n\t\t\tfields.creator = creator;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is modified\n*/\nexports.getModificationFields = function() {\n\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = Object.create(null),\n\t\t\tmodifier = this.getTiddlerText(USER_NAME_TITLE);\n\t\tfields.modified = new Date();\n\t\tif(modifier) {\n\t\t\tfields.modifier = modifier;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\n};\n\n/*\nReturn a sorted array of tiddler titles. Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.getTiddlers = function(options) {\n\toptions = options || Object.create(null);\n\tvar self = this,\n\t\tsortField = options.sortField || \"title\",\n\t\ttiddlers = [], t, titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tif(options.includeSystem || !self.isSystemTiddler(title)) {\n\t\t\tif(!options.excludeTag || !tiddler.hasTag(options.excludeTag)) {\n\t\t\t\ttiddlers.push(tiddler);\n\t\t\t}\n\t\t}\n\t});\n\ttiddlers.sort(function(a,b) {\n\t\tvar aa = a.fields[sortField].toLowerCase() || \"\",\n\t\t\tbb = b.fields[sortField].toLowerCase() || \"\";\n\t\tif(aa < bb) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(aa > bb) {\n\t\t\t\treturn 1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n\tfor(t=0; t<tiddlers.length; t++) {\n\t\ttitles.push(tiddlers[t].fields.title);\n\t}\n\treturn titles;\n};\n\nexports.countTiddlers = function(excludeTag) {\n\tvar tiddlers = this.getTiddlers({excludeTag: excludeTag});\n\treturn $tw.utils.count(tiddlers);\n};\n\n/*\nReturns a function iterator(callback) that iterates through the specified titles, and invokes the callback with callback(tiddler,title)\n*/\nexports.makeTiddlerIterator = function(titles) {\n\tvar self = this;\n\tif(!$tw.utils.isArray(titles)) {\n\t\ttitles = Object.keys(titles);\n\t} else {\n\t\ttitles = titles.slice(0);\n\t}\n\treturn function(callback) {\n\t\ttitles.forEach(function(title) {\n\t\t\tcallback(self.getTiddler(title),title);\n\t\t});\n\t};\n};\n\n/*\nSort an array of tiddler titles by a specified field\n\ttitles: array of titles (sorted in place)\n\tsortField: name of field to sort by\n\tisDescending: true if the sort should be descending\n\tisCaseSensitive: true if the sort should consider upper and lower case letters to be different\n*/\nexports.sortTiddlers = function(titles,sortField,isDescending,isCaseSensitive,isNumeric) {\n\tvar self = this;\n\ttitles.sort(function(a,b) {\n\t\tvar x,y,\n\t\t\tcompareNumbers = function(x,y) {\n\t\t\t\tvar result = \n\t\t\t\t\tisNaN(x) && !isNaN(y) ? (isDescending ? -1 : 1) :\n\t\t\t\t\t!isNaN(x) && isNaN(y) ? (isDescending ? 1 : -1) :\n\t\t\t\t\t\t\t\t\t\t\t(isDescending ? y - x : x - y);\n\t\t\t\treturn result;\n\t\t\t};\n\t\tif(sortField !== \"title\") {\n\t\t\tvar tiddlerA = self.getTiddler(a),\n\t\t\t\ttiddlerB = self.getTiddler(b);\n\t\t\tif(tiddlerA) {\n\t\t\t\ta = tiddlerA.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\ta = \"\";\n\t\t\t}\n\t\t\tif(tiddlerB) {\n\t\t\t\tb = tiddlerB.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\tb = \"\";\n\t\t\t}\n\t\t}\n\t\tx = Number(a);\n\t\ty = Number(b);\n\t\tif(isNumeric && (!isNaN(x) || !isNaN(y))) {\n\t\t\treturn compareNumbers(x,y);\n\t\t} else if($tw.utils.isDate(a) && $tw.utils.isDate(b)) {\n\t\t\treturn isDescending ? b - a : a - b;\n\t\t} else {\n\t\t\ta = String(a);\n\t\t\tb = String(b);\n\t\t\tif(!isCaseSensitive) {\n\t\t\t\ta = a.toLowerCase();\n\t\t\t\tb = b.toLowerCase();\n\t\t\t}\n\t\t\treturn isDescending ? b.localeCompare(a) : a.localeCompare(b);\n\t\t}\n\t});\n};\n\n/*\nFor every tiddler invoke a callback(title,tiddler) with `this` set to the wiki object. Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.forEachTiddler = function(/* [options,]callback */) {\n\tvar arg = 0,\n\t\toptions = arguments.length >= 2 ? arguments[arg++] : {},\n\t\tcallback = arguments[arg++],\n\t\ttitles = this.getTiddlers(options),\n\t\tt, tiddler;\n\tfor(t=0; t<titles.length; t++) {\n\t\ttiddler = this.getTiddler(titles[t]);\n\t\tif(tiddler) {\n\t\t\tcallback.call(this,tiddler.fields.title,tiddler);\n\t\t}\n\t}\n};\n\n/*\nReturn an array of tiddler titles that are directly linked from the specified tiddler\n*/\nexports.getTiddlerLinks = function(title) {\n\tvar self = this;\n\t// We'll cache the links so they only get computed if the tiddler changes\n\treturn this.getCacheForTiddler(title,\"links\",function() {\n\t\t// Parse the tiddler\n\t\tvar parser = self.parseTiddler(title);\n\t\t// Count up the links\n\t\tvar links = [],\n\t\t\tcheckParseTree = function(parseTree) {\n\t\t\t\tfor(var t=0; t<parseTree.length; t++) {\n\t\t\t\t\tvar parseTreeNode = parseTree[t];\n\t\t\t\t\tif(parseTreeNode.type === \"link\" && parseTreeNode.attributes.to && parseTreeNode.attributes.to.type === \"string\") {\n\t\t\t\t\t\tvar value = parseTreeNode.attributes.to.value;\n\t\t\t\t\t\tif(links.indexOf(value) === -1) {\n\t\t\t\t\t\t\tlinks.push(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(parseTreeNode.children) {\n\t\t\t\t\t\tcheckParseTree(parseTreeNode.children);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\tif(parser) {\n\t\t\tcheckParseTree(parser.tree);\n\t\t}\n\t\treturn links;\n\t});\n};\n\n/*\nReturn an array of tiddler titles that link to the specified tiddler\n*/\nexports.getTiddlerBacklinks = function(targetTitle) {\n\tvar self = this,\n\t\tbacklinks = [];\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\tif(links.indexOf(targetTitle) !== -1) {\n\t\t\tbacklinks.push(title);\n\t\t}\n\t});\n\treturn backlinks;\n};\n\n/*\nReturn a hashmap of tiddler titles that are referenced but not defined. Each value is the number of times the missing tiddler is referenced\n*/\nexports.getMissingTitles = function() {\n\tvar self = this,\n\t\tmissing = [];\n// We should cache the missing tiddler list, even if we recreate it every time any tiddler is modified\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tif((!self.tiddlerExists(link) && !self.isShadowTiddler(link)) && missing.indexOf(link) === -1) {\n\t\t\t\tmissing.push(link);\n\t\t\t}\n\t\t});\n\t});\n\treturn missing;\n};\n\nexports.getOrphanTitles = function() {\n\tvar self = this,\n\t\torphans = this.getTiddlers();\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tvar p = orphans.indexOf(link);\n\t\t\tif(p !== -1) {\n\t\t\t\torphans.splice(p,1);\n\t\t\t}\n\t\t});\n\t});\n\treturn orphans; // Todo\n};\n\n/*\nRetrieves a list of the tiddler titles that are tagged with a given tag\n*/\nexports.getTiddlersWithTag = function(tag) {\n\tvar self = this;\n\treturn this.getGlobalCache(\"taglist-\" + tag,function() {\n\t\tvar tagmap = self.getTagMap();\n\t\treturn self.sortByList(tagmap[tag],tag);\n\t});\n};\n\n/*\nGet a hashmap by tag of arrays of tiddler titles\n*/\nexports.getTagMap = function() {\n\tvar self = this;\n\treturn this.getGlobalCache(\"tagmap\",function() {\n\t\tvar tags = Object.create(null),\n\t\t\tstoreTags = function(tagArray,title) {\n\t\t\t\tif(tagArray) {\n\t\t\t\t\tfor(var index=0; index<tagArray.length; index++) {\n\t\t\t\t\t\tvar tag = tagArray[index];\n\t\t\t\t\t\tif($tw.utils.hop(tags,tag)) {\n\t\t\t\t\t\t\ttags[tag].push(title);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttags[tag] = [title];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\ttitle, tiddler;\n\t\t// Collect up all the tags\n\t\tself.eachShadow(function(tiddler,title) {\n\t\t\tif(!self.tiddlerExists(title)) {\n\t\t\t\ttiddler = self.getTiddler(title);\n\t\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t\t}\n\t\t});\n\t\tself.each(function(tiddler,title) {\n\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t});\n\t\treturn tags;\n\t});\n};\n\n/*\nLookup a given tiddler and return a list of all the tiddlers that include it in the specified list field\n*/\nexports.findListingsOfTiddler = function(targetTitle,fieldName) {\n\tfieldName = fieldName || \"list\";\n\tvar titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tvar list = $tw.utils.parseStringArray(tiddler.fields[fieldName]);\n\t\tif(list && list.indexOf(targetTitle) !== -1) {\n\t\t\ttitles.push(title);\n\t\t}\n\t});\n\treturn titles;\n};\n\n/*\nSorts an array of tiddler titles according to an ordered list\n*/\nexports.sortByList = function(array,listTitle) {\n\tvar list = this.getTiddlerList(listTitle);\n\tif(!array || array.length === 0) {\n\t\treturn [];\n\t} else {\n\t\tvar titles = [], t, title;\n\t\t// First place any entries that are present in the list\n\t\tfor(t=0; t<list.length; t++) {\n\t\t\ttitle = list[t];\n\t\t\tif(array.indexOf(title) !== -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Then place any remaining entries\n\t\tfor(t=0; t<array.length; t++) {\n\t\t\ttitle = array[t];\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Finally obey the list-before and list-after fields of each tiddler in turn\n\t\tvar sortedTitles = titles.slice(0);\n\t\tfor(t=0; t<sortedTitles.length; t++) {\n\t\t\ttitle = sortedTitles[t];\n\t\t\tvar currPos = titles.indexOf(title),\n\t\t\t\tnewPos = -1,\n\t\t\t\ttiddler = this.getTiddler(title);\n\t\t\tif(tiddler) {\n\t\t\t\tvar beforeTitle = tiddler.fields[\"list-before\"],\n\t\t\t\t\tafterTitle = tiddler.fields[\"list-after\"];\n\t\t\t\tif(beforeTitle === \"\") {\n\t\t\t\t\tnewPos = 0;\n\t\t\t\t} else if(beforeTitle) {\n\t\t\t\t\tnewPos = titles.indexOf(beforeTitle);\n\t\t\t\t} else if(afterTitle) {\n\t\t\t\t\tnewPos = titles.indexOf(afterTitle);\n\t\t\t\t\tif(newPos >= 0) {\n\t\t\t\t\t\t++newPos;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(newPos === -1) {\n\t\t\t\t\tnewPos = currPos;\n\t\t\t\t}\n\t\t\t\tif(newPos !== currPos) {\n\t\t\t\t\ttitles.splice(currPos,1);\n\t\t\t\t\tif(newPos >= currPos) {\n\t\t\t\t\t\tnewPos--;\n\t\t\t\t\t}\n\t\t\t\t\ttitles.splice(newPos,0,title);\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t\treturn titles;\n\t}\n};\n\nexports.getSubTiddler = function(title,subTiddlerTitle) {\n\tvar bundleInfo = this.getPluginInfo(title) || this.getTiddlerDataCached(title);\n\tif(bundleInfo && bundleInfo.tiddlers) {\n\t\tvar subTiddler = bundleInfo.tiddlers[subTiddlerTitle];\n\t\tif(subTiddler) {\n\t\t\treturn new $tw.Tiddler(subTiddler);\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRetrieve a tiddler as a JSON string of the fields\n*/\nexports.getTiddlerAsJson = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\tvar fields = Object.create(null);\n\t\t$tw.utils.each(tiddler.fields,function(value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\treturn JSON.stringify(fields);\n\t} else {\n\t\treturn JSON.stringify({title: title});\n\t}\n};\n\n/*\nGet the content of a tiddler as a JavaScript object. How this is done depends on the type of the tiddler:\n\napplication/json: the tiddler JSON is parsed into an object\napplication/x-tiddler-dictionary: the tiddler is parsed as sequence of name:value pairs\n\nOther types currently just return null.\n\ntitleOrTiddler: string tiddler title or a tiddler object\ndefaultData: default data to be returned if the tiddler is missing or doesn't contain data\n\nNote that the same value is returned for repeated calls for the same tiddler data. The value is frozen to prevent modification; otherwise modifications would be visible to all callers\n*/\nexports.getTiddlerDataCached = function(titleOrTiddler,defaultData) {\n\tvar self = this,\n\t\ttiddler = titleOrTiddler;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler) {\n\t\treturn this.getCacheForTiddler(tiddler.fields.title,\"data\",function() {\n\t\t\t// Return the frozen value\n\t\t\tvar value = self.getTiddlerData(tiddler.fields.title,undefined);\n\t\t\t$tw.utils.deepFreeze(value);\n\t\t\treturn value;\n\t\t}) || defaultData;\n\t} else {\n\t\treturn defaultData;\n\t}\n};\n\n/*\nAlternative, uncached version of getTiddlerDataCached(). The return value can be mutated freely and reused\n*/\nexports.getTiddlerData = function(titleOrTiddler,defaultData) {\n\tvar tiddler = titleOrTiddler,\n\t\tdata;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler && tiddler.fields.text) {\n\t\tswitch(tiddler.fields.type) {\n\t\t\tcase \"application/json\":\n\t\t\t\t// JSON tiddler\n\t\t\t\ttry {\n\t\t\t\t\tdata = JSON.parse(tiddler.fields.text);\n\t\t\t\t} catch(ex) {\n\t\t\t\t\treturn defaultData;\n\t\t\t\t}\n\t\t\t\treturn data;\n\t\t\tcase \"application/x-tiddler-dictionary\":\n\t\t\t\treturn $tw.utils.parseFields(tiddler.fields.text);\n\t\t}\n\t}\n\treturn defaultData;\n};\n\n/*\nExtract an indexed field from within a data tiddler\n*/\nexports.extractTiddlerDataItem = function(titleOrTiddler,index,defaultText) {\n\tvar data = this.getTiddlerDataCached(titleOrTiddler,Object.create(null)),\n\t\ttext;\n\tif(data && $tw.utils.hop(data,index)) {\n\t\ttext = data[index];\n\t}\n\tif(typeof text === \"string\" || typeof text === \"number\") {\n\t\treturn text.toString();\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nSet a tiddlers content to a JavaScript object. Currently this is done by setting the tiddler's type to \"application/json\" and setting the text to the JSON text of the data.\ntitle: title of tiddler\ndata: object that can be serialised to JSON\nfields: optional hashmap of additional tiddler fields to be set\n*/\nexports.setTiddlerData = function(title,data,fields) {\n\tvar existingTiddler = this.getTiddler(title),\n\t\tnewFields = {\n\t\t\ttitle: title\n\t};\n\tif(existingTiddler && existingTiddler.fields.type === \"application/x-tiddler-dictionary\") {\n\t\tnewFields.text = $tw.utils.makeTiddlerDictionary(data);\n\t} else {\n\t\tnewFields.type = \"application/json\";\n\t\tnewFields.text = JSON.stringify(data,null,$tw.config.preferences.jsonSpaces);\n\t}\n\tthis.addTiddler(new $tw.Tiddler(this.getCreationFields(),existingTiddler,fields,newFields,this.getModificationFields()));\n};\n\n/*\nReturn the content of a tiddler as an array containing each line\n*/\nexports.getTiddlerList = function(title,field,index) {\n\tif(index) {\n\t\treturn $tw.utils.parseStringArray(this.extractTiddlerDataItem(title,index,\"\"));\n\t}\n\tfield = field || \"list\";\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\treturn ($tw.utils.parseStringArray(tiddler.fields[field]) || []).slice(0);\n\t}\n\treturn [];\n};\n\n// Return a named global cache object. Global cache objects are cleared whenever a tiddler change occurs\nexports.getGlobalCache = function(cacheName,initializer) {\n\tthis.globalCache = this.globalCache || Object.create(null);\n\tif($tw.utils.hop(this.globalCache,cacheName)) {\n\t\treturn this.globalCache[cacheName];\n\t} else {\n\t\tthis.globalCache[cacheName] = initializer();\n\t\treturn this.globalCache[cacheName];\n\t}\n};\n\nexports.clearGlobalCache = function() {\n\tthis.globalCache = Object.create(null);\n};\n\n// Return the named cache object for a tiddler. If the cache doesn't exist then the initializer function is invoked to create it\nexports.getCacheForTiddler = function(title,cacheName,initializer) {\n\tthis.caches = this.caches || Object.create(null);\n\tvar caches = this.caches[title];\n\tif(caches && caches[cacheName]) {\n\t\treturn caches[cacheName];\n\t} else {\n\t\tif(!caches) {\n\t\t\tcaches = Object.create(null);\n\t\t\tthis.caches[title] = caches;\n\t\t}\n\t\tcaches[cacheName] = initializer();\n\t\treturn caches[cacheName];\n\t}\n};\n\n// Clear all caches associated with a particular tiddler, or, if the title is null, clear all the caches for all the tiddlers\nexports.clearCache = function(title) {\n\tif(title) {\n\t\tthis.caches = this.caches || Object.create(null);\n\t\tif($tw.utils.hop(this.caches,title)) {\n\t\t\tdelete this.caches[title];\n\t\t}\n\t} else {\n\t\tthis.caches = Object.create(null);\n\t}\n};\n\nexports.initParsers = function(moduleType) {\n\t// Install the parser modules\n\t$tw.Wiki.parsers = {};\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(\"parser\",function(title,module) {\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\t$tw.Wiki.parsers[f] = module[f]; // Store the parser class\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nParse a block of text of a specified MIME type\n\ttype: content type of text to be parsed\n\ttext: text\n\toptions: see below\nOptions include:\n\tparseAsInline: if true, the text of the tiddler will be parsed as an inline run\n\t_canonical_uri: optional string of the canonical URI of this content\n*/\nexports.parseText = function(type,text,options) {\n\ttext = text || \"\";\n\toptions = options || {};\n\t// Select a parser\n\tvar Parser = $tw.Wiki.parsers[type];\n\tif(!Parser && $tw.utils.getFileExtensionInfo(type)) {\n\t\tParser = $tw.Wiki.parsers[$tw.utils.getFileExtensionInfo(type).type];\n\t}\n\tif(!Parser) {\n\t\tParser = $tw.Wiki.parsers[options.defaultType || \"text/vnd.tiddlywiki\"];\n\t}\n\tif(!Parser) {\n\t\treturn null;\n\t}\n\t// Return the parser instance\n\treturn new Parser(type,text,{\n\t\tparseAsInline: options.parseAsInline,\n\t\twiki: this,\n\t\t_canonical_uri: options._canonical_uri\n\t});\n};\n\n/*\nParse a tiddler according to its MIME type\n*/\nexports.parseTiddler = function(title,options) {\n\toptions = $tw.utils.extend({},options);\n\tvar cacheType = options.parseAsInline ? \"inlineParseTree\" : \"blockParseTree\",\n\t\ttiddler = this.getTiddler(title),\n\t\tself = this;\n\treturn tiddler ? this.getCacheForTiddler(title,cacheType,function() {\n\t\t\tif(tiddler.hasField(\"_canonical_uri\")) {\n\t\t\t\toptions._canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t}\n\t\t\treturn self.parseText(tiddler.fields.type,tiddler.fields.text,options);\n\t\t}) : null;\n};\n\nexports.parseTextReference = function(title,field,index,options) {\n\tvar tiddler,text;\n\tif(options.subTiddler) {\n\t\ttiddler = this.getSubTiddler(title,options.subTiddler);\n\t} else {\n\t\ttiddler = this.getTiddler(title);\n\t\tif(field === \"text\" || (!field && !index)) {\n\t\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\t\treturn this.parseTiddler(title,options);\n\t\t}\n\t}\n\tif(field === \"text\" || (!field && !index)) {\n\t\tif(tiddler && tiddler.fields) {\n\t\t\treturn this.parseText(tiddler.fields.type || \"text/vnd.tiddlywiki\",tiddler.fields.text,options);\t\t\t\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t} else if(field) {\n\t\tif(field === \"title\") {\n\t\t\ttext = title;\n\t\t} else {\n\t\t\tif(!tiddler || !tiddler.hasField(field)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\ttext = tiddler.fields[field];\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text.toString(),options);\n\t} else if(index) {\n\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\ttext = this.extractTiddlerDataItem(tiddler,index,undefined);\n\t\tif(text === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text,options);\n\t}\n};\n\n/*\nMake a widget tree for a parse tree\nparser: parser object\noptions: see below\nOptions include:\ndocument: optional document to use\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.makeWidget = function(parser,options) {\n\toptions = options || {};\n\tvar widgetNode = {\n\t\t\ttype: \"widget\",\n\t\t\tchildren: []\n\t\t},\n\t\tcurrWidgetNode = widgetNode;\n\t// Create set variable widgets for each variable\n\t$tw.utils.each(options.variables,function(value,name) {\n\t\tvar setVariableWidget = {\n\t\t\ttype: \"set\",\n\t\t\tattributes: {\n\t\t\t\tname: {type: \"string\", value: name},\n\t\t\t\tvalue: {type: \"string\", value: value}\n\t\t\t},\n\t\t\tchildren: []\n\t\t};\n\t\tcurrWidgetNode.children = [setVariableWidget];\n\t\tcurrWidgetNode = setVariableWidget;\n\t});\n\t// Add in the supplied parse tree nodes\n\tcurrWidgetNode.children = parser ? parser.tree : [];\n\t// Create the widget\n\treturn new widget.widget(widgetNode,{\n\t\twiki: this,\n\t\tdocument: options.document || $tw.fakeDocument,\n\t\tparentWidget: options.parentWidget\n\t});\n};\n\n/*\nMake a widget tree for transclusion\ntitle: target tiddler title\noptions: as for wiki.makeWidget() plus:\noptions.field: optional field to transclude (defaults to \"text\")\noptions.mode: transclusion mode \"inline\" or \"block\"\noptions.children: optional array of children for the transclude widget\noptions.importVariables: optional importvariables filter string for macros to be included\noptions.importPageMacros: optional boolean; if true, equivalent to passing \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\" to options.importVariables\n*/\nexports.makeTranscludeWidget = function(title,options) {\n\toptions = options || {};\n\tvar parseTreeDiv = {tree: [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"div\",\n\t\t\tchildren: []}]},\n\t\tparseTreeImportVariables = {\n\t\t\ttype: \"importvariables\",\n\t\t\tattributes: {\n\t\t\t\tfilter: {\n\t\t\t\t\tname: \"filter\",\n\t\t\t\t\ttype: \"string\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tisBlock: false,\n\t\t\tchildren: []},\n\t\tparseTreeTransclude = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {\n\t\t\t\t\tname: \"tiddler\",\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title}},\n\t\t\tisBlock: !options.parseAsInline};\n\tif(options.importVariables || options.importPageMacros) {\n\t\tif(options.importVariables) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = options.importVariables;\n\t\t} else if(options.importPageMacros) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\";\n\t\t}\n\t\tparseTreeDiv.tree[0].children.push(parseTreeImportVariables);\n\t\tparseTreeImportVariables.children.push(parseTreeTransclude);\n\t} else {\n\t\tparseTreeDiv.tree[0].children.push(parseTreeTransclude);\n\t}\n\tif(options.field) {\n\t\tparseTreeTransclude.attributes.field = {type: \"string\", value: options.field};\n\t}\n\tif(options.mode) {\n\t\tparseTreeTransclude.attributes.mode = {type: \"string\", value: options.mode};\n\t}\n\tif(options.children) {\n\t\tparseTreeTransclude.children = options.children;\n\t}\n\treturn $tw.wiki.makeWidget(parseTreeDiv,options);\n};\n\n/*\nParse text in a specified format and render it into another format\n\toutputType: content type for the output\n\ttextType: content type of the input text\n\ttext: input text\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderText = function(outputType,textType,text,options) {\n\toptions = options || {};\n\tvar parser = this.parseText(textType,text,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : container.textContent;\n};\n\n/*\nParse text from a tiddler and render it into another format\n\toutputType: content type for the output\n\ttitle: title of the tiddler to be rendered\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderTiddler = function(outputType,title,options) {\n\toptions = options || {};\n\tvar parser = this.parseTiddler(title,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : (outputType === \"text/plain-formatted\" ? container.formattedTextContent : container.textContent);\n};\n\n/*\nReturn an array of tiddler titles that match a search string\n\ttext: The text string to search for\n\toptions: see below\nOptions available:\n\tsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\n\texclude: An array of tiddler titles to exclude from the search\n\tinvert: If true returns tiddlers that do not contain the specified string\n\tcaseSensitive: If true forces a case sensitive search\n\tliteral: If true, searches for literal string, rather than separate search terms\n\tfield: If specified, restricts the search to the specified field\n*/\nexports.search = function(text,options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tt,\n\t\tinvert = !!options.invert;\n\t// Convert the search string into a regexp for each term\n\tvar terms, searchTermsRegExps,\n\t\tflags = options.caseSensitive ? \"\" : \"i\";\n\tif(options.literal) {\n\t\tif(text.length === 0) {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [new RegExp(\"(\" + $tw.utils.escapeRegExp(text) + \")\",flags)];\n\t\t}\n\t} else {\n\t\tterms = text.split(/ +/);\n\t\tif(terms.length === 1 && terms[0] === \"\") {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [];\n\t\t\tfor(t=0; t<terms.length; t++) {\n\t\t\t\tsearchTermsRegExps.push(new RegExp(\"(\" + $tw.utils.escapeRegExp(terms[t]) + \")\",flags));\n\t\t\t}\n\t\t}\n\t}\n\t// Function to check a given tiddler for the search term\n\tvar searchTiddler = function(title) {\n\t\tif(!searchTermsRegExps) {\n\t\t\treturn true;\n\t\t}\n\t\tvar tiddler = self.getTiddler(title);\n\t\tif(!tiddler) {\n\t\t\ttiddler = new $tw.Tiddler({title: title, text: \"\", type: \"text/vnd.tiddlywiki\"});\n\t\t}\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type] || $tw.config.contentTypeInfo[\"text/vnd.tiddlywiki\"],\n\t\t\tmatch;\n\t\tfor(var t=0; t<searchTermsRegExps.length; t++) {\n\t\t\tmatch = false;\n\t\t\tif(options.field) {\n\t\t\t\tmatch = searchTermsRegExps[t].test(tiddler.getFieldString(options.field));\n\t\t\t} else {\n\t\t\t\t// Search title, tags and body\n\t\t\t\tif(contentTypeInfo.encoding === \"utf8\") {\n\t\t\t\t\tmatch = match || searchTermsRegExps[t].test(tiddler.fields.text);\n\t\t\t\t}\n\t\t\t\tvar tags = tiddler.fields.tags ? tiddler.fields.tags.join(\"\\0\") : \"\";\n\t\t\t\tmatch = match || searchTermsRegExps[t].test(tags) || searchTermsRegExps[t].test(tiddler.fields.title);\n\t\t\t}\n\t\t\tif(!match) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t};\n\t// Loop through all the tiddlers doing the search\n\tvar results = [],\n\t\tsource = options.source || this.each;\n\tsource(function(tiddler,title) {\n\t\tif(searchTiddler(title) !== options.invert) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\t// Remove any of the results we have to exclude\n\tif(options.exclude) {\n\t\tfor(t=0; t<options.exclude.length; t++) {\n\t\t\tvar p = results.indexOf(options.exclude[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tresults.splice(p,1);\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n};\n\n/*\nTrigger a load for a tiddler if it is skinny. Returns the text, or undefined if the tiddler is missing, null if the tiddler is being lazily loaded.\n*/\nexports.getTiddlerText = function(title,defaultText) {\n\tvar tiddler = this.getTiddler(title);\n\t// Return undefined if the tiddler isn't found\n\tif(!tiddler) {\n\t\treturn defaultText;\n\t}\n\tif(tiddler.fields.text !== undefined) {\n\t\t// Just return the text if we've got it\n\t\treturn tiddler.fields.text;\n\t} else {\n\t\t// Tell any listeners about the need to lazily load this tiddler\n\t\tthis.dispatchEvent(\"lazyLoad\",title);\n\t\t// Indicate that the text is being loaded\n\t\treturn null;\n\t}\n};\n\n/*\nCheck whether the text of a tiddler matches a given value. By default, the comparison is case insensitive, and any spaces at either end of the tiddler text is trimmed\n*/\nexports.checkTiddlerText = function(title,targetText,options) {\n\toptions = options || {};\n\tvar text = this.getTiddlerText(title,\"\");\n\tif(!options.noTrim) {\n\t\ttext = text.trim();\n\t}\n\tif(!options.caseSensitive) {\n\t\ttext = text.toLowerCase();\n\t\ttargetText = targetText.toLowerCase();\n\t}\n\treturn text === targetText;\n}\n\n/*\nRead an array of browser File objects, invoking callback(tiddlerFieldsArray) once they're all read\n*/\nexports.readFiles = function(files,callback) {\n\tvar result = [],\n\t\toutstanding = files.length;\n\tfor(var f=0; f<files.length; f++) {\n\t\tthis.readFile(files[f],function(tiddlerFieldsArray) {\n\t\t\tresult.push.apply(result,tiddlerFieldsArray);\n\t\t\tif(--outstanding === 0) {\n\t\t\t\tcallback(result);\n\t\t\t}\n\t\t});\n\t}\n\treturn files.length;\n};\n\n/*\nRead a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects\n*/\nexports.readFile = function(file,callback) {\n\t// Get the type, falling back to the filename extension\n\tvar self = this,\n\t\ttype = file.type;\n\tif(type === \"\" || !type) {\n\t\tvar dotPos = file.name.lastIndexOf(\".\");\n\t\tif(dotPos !== -1) {\n\t\t\tvar fileExtensionInfo = $tw.utils.getFileExtensionInfo(file.name.substr(dotPos));\n\t\t\tif(fileExtensionInfo) {\n\t\t\t\ttype = fileExtensionInfo.type;\n\t\t\t}\n\t\t}\n\t}\n\t// Figure out if we're reading a binary file\n\tvar contentTypeInfo = $tw.config.contentTypeInfo[type],\n\t\tisBinary = contentTypeInfo ? contentTypeInfo.encoding === \"base64\" : false;\n\t// Log some debugging information\n\tif($tw.log.IMPORT) {\n\t\tconsole.log(\"Importing file '\" + file.name + \"', type: '\" + type + \"', isBinary: \" + isBinary);\n\t}\n\t// Create the FileReader\n\tvar reader = new FileReader();\n\t// Onload\n\treader.onload = function(event) {\n\t\tvar text = event.target.result,\n\t\t\ttiddlerFields = {title: file.name || \"Untitled\", type: type};\n\t\tif(isBinary) {\n\t\t\tvar commaPos = text.indexOf(\",\");\n\t\t\tif(commaPos !== -1) {\n\t\t\t\ttext = text.substr(commaPos + 1);\n\t\t\t}\n\t\t}\n\t\t// Check whether this is an encrypted TiddlyWiki file\n\t\tvar encryptedJson = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedJson) {\n\t\t\t// If so, attempt to decrypt it with the current password\n\t\t\t$tw.utils.decryptStoreAreaInteractive(encryptedJson,function(tiddlers) {\n\t\t\t\tcallback(tiddlers);\n\t\t\t});\n\t\t} else {\n\t\t\t// Otherwise, just try to deserialise any tiddlers in the file\n\t\t\tcallback(self.deserializeTiddlers(type,text,tiddlerFields));\n\t\t}\n\t};\n\t// Kick off the read\n\tif(isBinary) {\n\t\treader.readAsDataURL(file);\n\t} else {\n\t\treader.readAsText(file);\n\t}\n};\n\n/*\nFind any existing draft of a specified tiddler\n*/\nexports.findDraft = function(targetTitle) {\n\tvar draftTitle = undefined;\n\tthis.forEachTiddler({includeSystem: true},function(title,tiddler) {\n\t\tif(tiddler.fields[\"draft.title\"] && tiddler.fields[\"draft.of\"] === targetTitle) {\n\t\t\tdraftTitle = title;\n\t\t}\n\t});\n\treturn draftTitle;\n}\n\n/*\nCheck whether the specified draft tiddler has been modified.\nIf the original tiddler doesn't exist, create a vanilla tiddler variable,\nto check if additional fields have been added.\n*/\nexports.isDraftModified = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(!tiddler.isDraft()) {\n\t\treturn false;\n\t}\n\tvar ignoredFields = [\"created\", \"modified\", \"title\", \"draft.title\", \"draft.of\"],\n\t\torigTiddler = this.getTiddler(tiddler.fields[\"draft.of\"]) || new $tw.Tiddler({text:\"\", tags:[]}),\n\t\ttitleModified = tiddler.fields[\"draft.title\"] !== tiddler.fields[\"draft.of\"];\n\treturn titleModified || !tiddler.isEqual(origTiddler,ignoredFields);\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\nhistoryTitle: title of history tiddler (defaults to $:/HistoryList)\n*/\nexports.addToHistory = function(title,fromPageRect,historyTitle) {\n\tvar story = new $tw.Story({wiki: this, historyTitle: historyTitle});\n\tstory.addToHistory(title,fromPageRect);\n};\n\n/*\nInvoke the available upgrader modules\ntitles: array of tiddler titles to be processed\ntiddlers: hashmap by title of tiddler fields of pending import tiddlers. These can be modified by the upgraders. An entry with no fields indicates a tiddler that was pending import has been suppressed. When entries are added to the pending import the tiddlers hashmap may have entries that are not present in the titles array\nReturns a hashmap of messages keyed by tiddler title.\n*/\nexports.invokeUpgraders = function(titles,tiddlers) {\n\t// Collect up the available upgrader modules\n\tvar self = this;\n\tif(!this.upgraderModules) {\n\t\tthis.upgraderModules = [];\n\t\t$tw.modules.forEachModuleOfType(\"upgrader\",function(title,module) {\n\t\t\tif(module.upgrade) {\n\t\t\t\tself.upgraderModules.push(module);\n\t\t\t}\n\t\t});\n\t}\n\t// Invoke each upgrader in turn\n\tvar messages = {};\n\tfor(var t=0; t<this.upgraderModules.length; t++) {\n\t\tvar upgrader = this.upgraderModules[t],\n\t\t\tupgraderMessages = upgrader.upgrade(this,titles,tiddlers);\n\t\t$tw.utils.extend(messages,upgraderMessages);\n\t}\n\treturn messages;\n};\n\n})();\n\n",
"title": "$:/core/modules/wiki.js",
"type": "application/javascript",
"module-type": "wikimethod"
},
"$:/palettes/Blanca": {
"title": "$:/palettes/Blanca",
"name": "Blanca",
"description": "A clean white palette to let you focus",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #66cccc\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ffffff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #7897f3\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ccc\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #ffffff\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #7897f3\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #eeeeee\ntab-border-selected: #cccccc\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffeedd\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: #eee\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #ff9900\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/Blue": {
"title": "$:/palettes/Blue",
"name": "Blue",
"description": "A blue theme",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333353\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ddddff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #5959c0\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: #ccccdd\ntab-border-selected: #ccccdd\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #eeeeff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #666666\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #ffffff\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #ffffff\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #5959c0\ntoolbar-new-button: #5eb95e\ntoolbar-options-button: rgb(128, 88, 165)\ntoolbar-save-button: #0e90d2\ntoolbar-info-button: #0e90d2\ntoolbar-edit-button: rgb(243, 123, 29)\ntoolbar-close-button: #dd514c\ntoolbar-delete-button: #dd514c\ntoolbar-cancel-button: rgb(243, 123, 29)\ntoolbar-done-button: #5eb95e\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/Muted": {
"title": "$:/palettes/Muted",
"name": "Muted",
"description": "Bright tiddlers on a muted background",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #6f6f70\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #29a6ee\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #c2c1c2\nsidebar-foreground-shadow: rgba(255,255,255,0)\nsidebar-foreground: #d3d2d4\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #6f6f70\nsidebar-tab-background: #666667\nsidebar-tab-border-selected: #999\nsidebar-tab-border: #515151\nsidebar-tab-divider: #999\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: #999\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #d1d0d2\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #d5ad34\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/ContrastLight": {
"title": "$:/palettes/ContrastLight",
"name": "Contrast (Light)",
"description": "High contrast and unambiguous (light version)",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #00a\nexternal-link-foreground: #00e\nforeground: #000\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #000\ntag-foreground: #fff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour foreground>>\nvery-muted-foreground: #888888\n"
},
"$:/palettes/ContrastDark": {
"title": "$:/palettes/ContrastDark",
"name": "Contrast (Dark)",
"description": "High contrast and unambiguous (dark version)",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #000\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #00a\nexternal-link-foreground: #00e\nforeground: #fff\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #fff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour foreground>>\nvery-muted-foreground: #888888\n"
},
"$:/palettes/DarkPhotos": {
"created": "20150402111612188",
"description": "Good with dark photo backgrounds",
"modified": "20150402112344080",
"name": "DarkPhotos",
"tags": "$:/tags/Palette",
"title": "$:/palettes/DarkPhotos",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: \nbutton-foreground: \nbutton-border: \ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #ddd\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #336438\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #ccf\nsidebar-controls-foreground: #fff\nsidebar-foreground-shadow: rgba(0,0,0, 0.5)\nsidebar-foreground: #fff\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #eee\nsidebar-tab-background-selected: rgba(255,255,255, 0.8)\nsidebar-tab-background: rgba(255,255,255, 0.4)\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: rgba(255,255,255, 0.2)\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #aaf\nsidebar-tiddler-link-foreground: #ddf\nsite-title-foreground: #fff\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/Rocker": {
"title": "$:/palettes/Rocker",
"name": "Rocker",
"description": "A dark theme",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #000\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #cc0000\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.0)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #000\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #ffbb99\nsidebar-tiddler-link-foreground: #cc0000\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffbb99\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #cc0000\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/SolarFlare": {
"title": "$:/palettes/SolarFlare",
"name": "Solar Flare",
"description": "Warm, relaxing earth colours",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": ": Background Tones\n\nbase03: #002b36\nbase02: #073642\n\n: Content Tones\n\nbase01: #586e75\nbase00: #657b83\nbase0: #839496\nbase1: #93a1a1\n\n: Background Tones\n\nbase2: #eee8d5\nbase3: #fdf6e3\n\n: Accent Colors\n\nyellow: #b58900\norange: #cb4b16\nred: #dc322f\nmagenta: #d33682\nviolet: #6c71c4\nblue: #268bd2\ncyan: #2aa198\ngreen: #859900\n\n: Additional Tones (RA)\n\nbase10: #c0c4bb\nviolet-muted: #7c81b0\nblue-muted: #4e7baa\n\nyellow-hot: #ffcc44\norange-hot: #eb6d20\nred-hot: #ff2222\nblue-hot: #2298ee\ngreen-hot: #98ee22\n\n: Palette\n\n: Do not use colour macro for background and foreground\nbackground: #fdf6e3\n download-foreground: <<colour background>>\n dragger-foreground: <<colour background>>\n dropdown-background: <<colour background>>\n modal-background: <<colour background>>\n sidebar-foreground-shadow: <<colour background>>\n tiddler-background: <<colour background>>\n tiddler-border: <<colour background>>\n tiddler-link-background: <<colour background>>\n tab-background-selected: <<colour background>>\n dropdown-tab-background-selected: <<colour tab-background-selected>>\nforeground: #657b83\n dragger-background: <<colour foreground>>\n tab-foreground: <<colour foreground>>\n tab-foreground-selected: <<colour tab-foreground>>\n sidebar-tab-foreground-selected: <<colour tab-foreground-selected>>\n sidebar-tab-foreground: <<colour tab-foreground>>\n sidebar-button-foreground: <<colour foreground>>\n sidebar-controls-foreground: <<colour foreground>>\n sidebar-foreground: <<colour foreground>>\n: base03\n: base02\n: base01\n alert-muted-foreground: <<colour base01>>\n: base00\n code-foreground: <<colour base00>>\n message-foreground: <<colour base00>>\n tag-foreground: <<colour base00>>\n: base0\n sidebar-tiddler-link-foreground: <<colour base0>>\n: base1\n muted-foreground: <<colour base1>>\n blockquote-bar: <<colour muted-foreground>>\n dropdown-border: <<colour muted-foreground>>\n sidebar-muted-foreground: <<colour muted-foreground>>\n tiddler-title-foreground: <<colour muted-foreground>>\n site-title-foreground: <<colour tiddler-title-foreground>>\n: base2\n modal-footer-background: <<colour base2>>\n page-background: <<colour base2>>\n modal-backdrop: <<colour page-background>>\n notification-background: <<colour page-background>>\n code-background: <<colour page-background>>\n code-border: <<colour code-background>>\n pre-background: <<colour page-background>>\n pre-border: <<colour pre-background>>\n sidebar-tab-background-selected: <<colour page-background>>\n table-header-background: <<colour base2>>\n tag-background: <<colour base2>>\n tiddler-editor-background: <<colour base2>>\n tiddler-info-background: <<colour base2>>\n tiddler-info-tab-background: <<colour base2>>\n tab-background: <<colour base2>>\n dropdown-tab-background: <<colour tab-background>>\n: base3\n alert-background: <<colour base3>>\n message-background: <<colour base3>>\n: yellow\n: orange\n: red\n: magenta\n alert-highlight: <<colour magenta>>\n: violet\n external-link-foreground: <<colour violet>>\n: blue\n: cyan\n: green\n: base10\n tiddler-controls-foreground: <<colour base10>>\n: violet-muted\n external-link-foreground-visited: <<colour violet-muted>>\n: blue-muted\n primary: <<colour blue-muted>>\n download-background: <<colour primary>>\n tiddler-link-foreground: <<colour primary>>\n\nalert-border: #b99e2f\ndirty-indicator: #ff0000\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nmessage-border: #cfd6e6\nmodal-border: #999999\nsidebar-controls-foreground-hover:\nsidebar-muted-foreground-hover:\nsidebar-tab-background: #ded8c5\nsidebar-tiddler-link-foreground-hover:\nstatic-alert-foreground: #aaaaaa\ntab-border: #cccccc\n modal-footer-border: <<colour tab-border>>\n modal-header-border: <<colour tab-border>>\n notification-border: <<colour tab-border>>\n sidebar-tab-border: <<colour tab-border>>\n tab-border-selected: <<colour tab-border>>\n sidebar-tab-border-selected: <<colour tab-border-selected>>\ntab-divider: #d8d8d8\n sidebar-tab-divider: <<colour tab-divider>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-border: #dddddd\ntiddler-subtitle-foreground: #c0c0c0\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/palettes/Vanilla": {
"title": "$:/palettes/Vanilla",
"name": "Vanilla",
"description": "Pale and unobtrusive",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #f4f4f4\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #aaaaaa\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #f4f4f4\nsidebar-tab-background: #e0e0e0\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: #e4e4e4\nsidebar-tab-foreground-selected:\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #999999\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
},
"$:/core/readme": {
"title": "$:/core/readme",
"text": "This plugin contains TiddlyWiki's core components, comprising:\n\n* JavaScript code modules\n* Icons\n* Templates needed to create TiddlyWiki's user interface\n* British English (''en-GB'') translations of the localisable strings used by the core\n"
},
"$:/library/sjcl.js/license": {
"title": "$:/library/sjcl.js/license",
"type": "text/plain",
"text": "SJCL is open. You can use, modify and redistribute it under a BSD\nlicense or under the GNU GPL, version 2.0.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/BSD-2-Clause\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n1. Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright\nnotice, this list of conditions and the following disclaimer in the\ndocumentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\nIS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\nTO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\nPARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/GPL-2.0\n\nThe Stanford Javascript Crypto Library (hosted here on GitHub) is a\nproject by the Stanford Computer Security Lab to build a secure,\npowerful, fast, small, easy-to-use, cross-browser library for\ncryptography in Javascript.\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University.\n\nThis program is free software; you can redistribute it and/or modify it\nunder the terms of the GNU General Public License as published by the\nFree Software Foundation; either version 2 of the License, or (at your\noption) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General\nPublic License for more details.\n\nYou should have received a copy of the GNU General Public License along\nwith this program; if not, write to the Free Software Foundation, Inc.,\n59 Temple Place, Suite 330, Boston, MA 02111-1307 USA"
},
"$:/core/templates/MOTW.html": {
"title": "$:/core/templates/MOTW.html",
"text": "\\rules only filteredtranscludeinline transcludeinline entity\n<!-- The following comment is called a MOTW comment and is necessary for the TiddlyIE Internet Explorer extension -->\n<!-- saved from url=(0021)http://tiddlywiki.com --> "
},
"$:/core/templates/alltiddlers.template.html": {
"title": "$:/core/templates/alltiddlers.template.html",
"type": "text/vnd.tiddlywiki-html",
"text": "<!-- This template is provided for backwards compatibility with older versions of TiddlyWiki -->\n\n<$set name=\"exportFilter\" value=\"[!is[system]sort[title]]\">\n\n{{$:/core/templates/exporters/StaticRiver}}\n\n</$set>\n"
},
"$:/core/templates/canonical-uri-external-image": {
"title": "$:/core/templates/canonical-uri-external-image",
"text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external images.\n\nChange the `./images/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./images/<$view field=\"title\" format=\"doubleurlencoded\"/>"
},
"$:/core/templates/canonical-uri-external-text": {
"title": "$:/core/templates/canonical-uri-external-text",
"text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external text files.\n\nChange the `./text/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./text/<$view field=\"title\" format=\"doubleurlencoded\"/>.tid"
},
"$:/core/templates/css-tiddler": {
"title": "$:/core/templates/css-tiddler",
"text": "<!--\n\nThis template is used for saving CSS tiddlers as a style tag with data attributes representing the tiddler fields.\n\n-->`<style`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/css\">`<$view field=\"text\" format=\"text\" />`</style>`"
},
"$:/core/templates/exporters/CsvFile": {
"title": "$:/core/templates/exporters/CsvFile",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/CsvFile}}",
"extension": ".csv",
"text": "\\define renderContent()\n<$text text=<<csvtiddlers filter:\"\"\"$(exportFilter)$\"\"\" format:\"quoted-comma-sep\">>/>\n\\end\n<<renderContent>>\n"
},
"$:/core/templates/exporters/JsonFile": {
"title": "$:/core/templates/exporters/JsonFile",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/JsonFile}}",
"extension": ".json",
"text": "\\define renderContent()\n<$text text=<<jsontiddlers filter:\"\"\"$(exportFilter)$\"\"\">>/>\n\\end\n<<renderContent>>\n"
},
"$:/core/templates/exporters/StaticRiver": {
"title": "$:/core/templates/exporters/StaticRiver",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/StaticRiver}}",
"extension": ".html",
"text": "\\define tv-wikilink-template() #$uri_encoded$\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n<section class=\"tc-story-river\">\n{{$:/core/templates/exporters/StaticRiver/Content||$:/core/templates/html-tiddler}}\n</section>\n</body>\n</html>\n"
},
"$:/core/templates/exporters/StaticRiver/Content": {
"title": "$:/core/templates/exporters/StaticRiver/Content",
"text": "\\define renderContent()\n{{{ $(exportFilter)$ ||$:/core/templates/static-tiddler}}}\n\\end\n<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\">\n<<renderContent>>\n</$importvariables>\n"
},
"$:/core/templates/exporters/TidFile": {
"title": "$:/core/templates/exporters/TidFile",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/TidFile}}",
"extension": ".tid",
"text": "\\define renderContent()\n{{{ $(exportFilter)$ +[limit[1]] ||$:/core/templates/tid-tiddler}}}\n\\end\n<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\"><<renderContent>></$importvariables>"
},
"$:/core/templates/html-div-tiddler": {
"title": "$:/core/templates/html-div-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as an HTML DIV tag with attributes representing the tiddler fields.\n\n-->`<div`<$fields template=' $name$=\"$encoded_value$\"'></$fields>`>\n<pre>`<$view field=\"text\" format=\"htmlencoded\" />`</pre>\n</div>`\n"
},
"$:/core/templates/html-tiddler": {
"title": "$:/core/templates/html-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as raw HTML\n\n--><$view field=\"text\" format=\"htmlwikified\" />"
},
"$:/core/templates/javascript-tiddler": {
"title": "$:/core/templates/javascript-tiddler",
"text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields.\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\">`<$view field=\"text\" format=\"text\" />`</script>`"
},
"$:/core/templates/json-tiddler": {
"title": "$:/core/templates/json-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as raw JSON\n\n--><$text text=<<jsontiddler>>/>"
},
"$:/core/templates/module-tiddler": {
"title": "$:/core/templates/module-tiddler",
"text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields. The body of the tiddler is wrapped in a call to the `$tw.modules.define` function in order to define the body of the tiddler as a module\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\" data-module=\"yes\">$tw.modules.define(\"`<$view field=\"title\" format=\"jsencoded\" />`\",\"`<$view field=\"module-type\" format=\"jsencoded\" />`\",function(module,exports,require) {`<$view field=\"text\" format=\"text\" />`});\n</script>`"
},
"$:/core/templates/plain-text-tiddler": {
"title": "$:/core/templates/plain-text-tiddler",
"text": "<$view field=\"text\" format=\"text\" />"
},
"$:/core/templates/raw-static-tiddler": {
"title": "$:/core/templates/raw-static-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as static HTML\n\n--><$view field=\"text\" format=\"plainwikified\" />"
},
"$:/core/save/all": {
"title": "$:/core/save/all",
"text": "\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/save/empty": {
"title": "$:/core/save/empty",
"text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/save/lazy-all": {
"title": "$:/core/save/lazy-all",
"text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] \n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/save/lazy-images": {
"title": "$:/core/save/lazy-images",
"text": "\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] -[!is[system]is[image]] +[sort[title]] \n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/templates/single.tiddler.window": {
"title": "$:/core/templates/single.tiddler.window",
"text": "<$set name=\"themeTitle\" value={{$:/view}}>\n\n<$set name=\"tempCurrentTiddler\" value=<<currentTiddler>>>\n\n<$set name=\"currentTiddler\" value={{$:/language}}>\n\n<$set name=\"languageTitle\" value={{!!name}}>\n\n<$set name=\"currentTiddler\" value=<<tempCurrentTiddler>>>\n\n<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\">\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n\n<$transclude mode=\"block\"/>\n\n</$navigator>\n\n</$importvariables>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n"
},
"$:/core/templates/split-recipe": {
"title": "$:/core/templates/split-recipe",
"text": "<$list filter=\"[!is[system]]\">\ntiddler: <$view field=\"title\" format=\"urlencoded\"/>.tid\n</$list>\n"
},
"$:/core/templates/static-tiddler": {
"title": "$:/core/templates/static-tiddler",
"text": "<a name=<<currentTiddler>>>\n<$transclude tiddler=\"$:/core/ui/ViewTemplate\"/>\n</a>"
},
"$:/core/templates/static.area": {
"title": "$:/core/templates/static.area",
"text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawStaticContent]!has[draft.of]] ||$:/core/templates/raw-static-tiddler}}}\n{{$:/core/templates/static.content||$:/core/templates/html-tiddler}}\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\nThis file contains an encrypted ~TiddlyWiki. Enable ~JavaScript and enter the decryption password when prompted.\n</$reveal>\n"
},
"$:/core/templates/static.content": {
"title": "$:/core/templates/static.content",
"type": "text/vnd.tiddlywiki",
"text": "<!-- For Google, and people without JavaScript-->\nThis [[TiddlyWiki|http://tiddlywiki.com]] contains the following tiddlers:\n\n<ul>\n<$list filter=<<saveTiddlerFilter>>>\n<li><$view field=\"title\" format=\"text\"></$view></li>\n</$list>\n</ul>\n"
},
"$:/core/templates/static.template.css": {
"title": "$:/core/templates/static.template.css",
"text": "{{$:/boot/boot.css||$:/core/templates/plain-text-tiddler}}\n\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n"
},
"$:/core/templates/static.template.html": {
"title": "$:/core/templates/static.template.html",
"type": "text/vnd.tiddlywiki-html",
"text": "\\define tv-wikilink-template() static/$uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n{{$:/core/ui/PageTemplate||$:/core/templates/html-tiddler}}\n</body>\n</html>\n"
},
"$:/core/templates/static.tiddler.html": {
"title": "$:/core/templates/static.tiddler.html",
"text": "\\define tv-wikilink-template() $uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n`<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"`{{$:/core/templates/version}}`\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<link rel=\"stylesheet\" href=\"static.css\">\n<title>`<$view field=\"caption\"><$view field=\"title\"/></$view>: {{$:/core/wiki/title}}`</title>\n</head>\n<body class=\"tc-body\">\n`{{$:/StaticBanner||$:/core/templates/html-tiddler}}`\n<section class=\"tc-story-river\">\n`<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\">\n<$view tiddler=\"$:/core/ui/ViewTemplate\" format=\"htmlwikified\"/>\n</$importvariables>`\n</section>\n</body>\n</html>\n`"
},
"$:/core/templates/store.area.template.html": {
"title": "$:/core/templates/store.area.template.html",
"text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n`<div id=\"storeArea\" style=\"display:none;\">`\n<$list filter=<<saveTiddlerFilter>> template=\"$:/core/templates/html-div-tiddler\"/>\n`</div>`\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n`<!--~~ Encrypted tiddlers ~~-->`\n`<pre id=\"encryptedStoreArea\" type=\"text/plain\" style=\"display:none;\">`\n<$encrypt filter=<<saveTiddlerFilter>>/>\n`</pre>`\n</$reveal>"
},
"$:/core/templates/tid-tiddler": {
"title": "$:/core/templates/tid-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers in TiddlyWeb *.tid format\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>`\n`<$view field=\"text\" format=\"text\" />"
},
"$:/core/templates/tiddler-metadata": {
"title": "$:/core/templates/tiddler-metadata",
"text": "<!--\n\nThis template is used for saving tiddler metadata *.meta files\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>"
},
"$:/core/templates/tiddlywiki5.html": {
"title": "$:/core/templates/tiddlywiki5.html",
"text": "\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n{{$:/core/templates/MOTW.html}}<html>\n<head>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\">\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"application-name\" content=\"TiddlyWiki\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\" />\n<meta name=\"copyright\" content=\"{{$:/core/copyright.txt}}\" />\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\n\n<!--~~ Raw markup ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/core/wiki/rawmarkup]] [all[shadows+tiddlers]tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}\n</head>\n<body class=\"tc-body\">\n<!--~~ Static styles ~~-->\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<!--~~ Static content for Google and browsers without JavaScript ~~-->\n<noscript>\n<div id=\"splashArea\">\n{{$:/core/templates/static.area}}\n</div>\n</noscript>\n<!--~~ Ordinary tiddlers ~~-->\n{{$:/core/templates/store.area.template.html}}\n<!--~~ Library modules ~~-->\n<div id=\"libraryModules\" style=\"display:none;\">\n{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/javascript-tiddler}}}\n</div>\n<!--~~ Boot kernel prologue ~~-->\n<div id=\"bootKernelPrefix\" style=\"display:none;\">\n{{ $:/boot/bootprefix.js ||$:/core/templates/javascript-tiddler}}\n</div>\n<!--~~ Boot kernel ~~-->\n<div id=\"bootKernel\" style=\"display:none;\">\n{{ $:/boot/boot.js ||$:/core/templates/javascript-tiddler}}\n</div>\n</body>\n</html>\n"
},
"$:/core/templates/version": {
"title": "$:/core/templates/version",
"text": "<<version>>"
},
"$:/core/templates/wikified-tiddler": {
"title": "$:/core/templates/wikified-tiddler",
"text": "<$transclude />"
},
"$:/core/ui/AboveStory/tw2-plugin-check": {
"title": "$:/core/ui/AboveStory/tw2-plugin-check",
"tags": "$:/tags/AboveStory",
"text": "\\define lingo-base() $:/language/AboveStory/ClassicPlugin/\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]limit[1]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n<ul>\n\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]]\">\n\n<li>\n\n<$link><$view field=\"title\"/></$link>\n\n</li>\n\n</$list>\n\n</ul>\n\n</div>\n\n</$list>\n"
},
"$:/core/ui/AdvancedSearch/Filter": {
"title": "$:/core/ui/AdvancedSearch/Filter",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/Filter/Caption}}",
"text": "\\define lingo-base() $:/language/Search/\n<<lingo Filter/Hint>>\n\n<div class=\"tc-search tc-advanced-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\"/>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch/FilterButton]!has[draft.of]]\"><$transclude/></$list>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\n<div class=\"tc-search-results\">\n<<lingo Filter/Matches>>\n<$list filter={{$:/temp/advancedsearch}} template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$set>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button popup=<<qualify \"$:/state/filterDeleteDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/delete-button}}\n</$button>\n</$reveal>\n\n<$reveal state=<<qualify \"$:/state/filterDeleteDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<div class=\"tc-dropdown-item-plain\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\nAre you sure you wish to delete <<resultCount>> tiddler(s)?\n</$set>\n</div>\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn\">\n<$action-deletetiddler $filter={{$:/temp/advancedsearch}}/>\nDelete these tiddlers\n</$button>\n</div>\n</div>\n</div>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/filterDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</span>\n\n<$reveal state=<<qualify \"$:/state/filterDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Filter]]\"><$link to={{!!filter}}><$transclude field=\"description\"/></$link>\n</$list>\n</div>\n</div>\n</$linkcatcher>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/export": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/export",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$macrocall $name=\"exportButton\" exportFilter={{$:/temp/advancedsearch}} lingoBase=\"$:/language/Buttons/ExportTiddlers/\"/>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Shadows": {
"title": "$:/core/ui/AdvancedSearch/Shadows",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/Shadows/Caption}}",
"text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo Shadows/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[all[shadows]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo Shadows/Matches>>\n\n<$list filter=\"[all[shadows]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Standard": {
"title": "$:/core/ui/AdvancedSearch/Standard",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/Standard/Caption}}",
"text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo Standard/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$set name=\"searchTiddler\" value=\"$:/temp/advancedsearch\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude/>\n</$list>\n\"\"\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}}/>\n</$list>\n</$set>\n</$list>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/System": {
"title": "$:/core/ui/AdvancedSearch/System",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/System/Caption}}",
"text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo System/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[is[system]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo System/Matches>>\n\n<$list filter=\"[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
},
"$:/AdvancedSearch": {
"title": "$:/AdvancedSearch",
"icon": "$:/core/images/advanced-search-button",
"color": "#bbb",
"text": "<div class=\"tc-advanced-search\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch]!has[draft.of]]\" \"$:/core/ui/AdvancedSearch/System\">>\n</div>\n"
},
"$:/core/ui/AlertTemplate": {
"title": "$:/core/ui/AlertTemplate",
"text": "<div class=\"tc-alert\">\n<div class=\"tc-alert-toolbar\">\n<$button class=\"tc-btn-invisible\"><$action-deletetiddler $tiddler=<<currentTiddler>>/>{{$:/core/images/delete-button}}</$button>\n</div>\n<div class=\"tc-alert-subtitle\">\n<$view field=\"component\"/> - <$view field=\"modified\" format=\"date\" template=\"0hh:0mm:0ss DD MM YYYY\"/> <$reveal type=\"nomatch\" state=\"!!count\" text=\"\"><span class=\"tc-alert-highlight\">({{$:/language/Count}}: <$view field=\"count\"/>)</span></$reveal>\n</div>\n<div class=\"tc-alert-body\">\n\n<$transclude/>\n\n</div>\n</div>\n"
},
"$:/core/ui/BinaryWarning": {
"title": "$:/core/ui/BinaryWarning",
"text": "\\define lingo-base() $:/language/BinaryWarning/\n<div class=\"tc-binary-warning\">\n\n<<lingo Prompt>>\n\n</div>\n"
},
"$:/core/ui/Components/plugin-info": {
"title": "$:/core/ui/Components/plugin-info",
"text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define popup-state-macro()\n$(qualified-state)$-$(currentTiddler)$\n\\end\n\n\\define tabs-state-macro()\n$(popup-state)$-$(pluginInfoType)$\n\\end\n\n\\define plugin-icon-title()\n$(currentTiddler)$/icon\n\\end\n\n\\define plugin-disable-title()\n$:/config/Plugins/Disabled/$(currentTiddler)$\n\\end\n\n\\define plugin-table-body(type,disabledMessage,default-popup-state)\n<div class=\"tc-plugin-info-chunk tc-small-icon\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<plugin-icon-title>>>\n<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\n</$transclude>\n</div>\n<div class=\"tc-plugin-info-chunk\">\n<h1>\n''<$view field=\"description\"><$view field=\"title\"/></$view>'' $disabledMessage$\n</h1>\n<h2>\n<$view field=\"title\"/>\n</h2>\n<h2>\n<div><em><$view field=\"version\"/></em></div>\n</h2>\n</div>\n\\end\n\n\\define plugin-info(type,default-popup-state)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info tc-plugin-info-disabled\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\" disabledMessage:\"<$macrocall $name='lingo' title='Disabled/Status'/>\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>> default=\"\"\"$default-popup-state$\"\"\">\n<div class=\"tc-plugin-info-dropdown\">\n<div class=\"tc-plugin-info-dropdown-body\">\n<$list filter=\"[all[current]] -[[$:/core]]\">\n<div style=\"float:right;\">\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"yes\" tooltip={{$:/language/ControlPanel/Plugins/Disable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Disable/Caption}}>\n<<lingo Disable/Caption>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"no\" tooltip={{$:/language/ControlPanel/Plugins/Enable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Enable/Caption}}>\n<<lingo Enable/Caption>>\n</$button>\n</$reveal>\n</div>\n</$list>\n<$reveal type=\"nomatch\" text=\"\" state=\"!!list\">\n<$set name=\"tabsList\" filter=\"[<currentTiddler>list[]] contents\">\n<$macrocall $name=\"tabs\" state=<<tabs-state-macro>> tabsList=<<tabsList>> default=\"readme\" template=\"$:/core/ui/PluginInfo\"/>\n</$set>\n</$reveal>\n<$reveal type=\"match\" text=\"\" state=\"!!list\">\n<<lingo NoInformation/Hint>>\n</$reveal>\n</div>\n</div>\n</$reveal>\n</$set>\n\\end\n\n<$macrocall $name=\"plugin-info\" type=<<plugin-type>> default-popup-state=<<default-popup-state>>/>\n"
},
"$:/core/ui/Components/tag-link": {
"title": "$:/core/ui/Components/tag-link",
"text": "<$link>\n<$set name=\"backgroundColor\" value={{!!color}}>\n<span style=<<tag-styles>> class=\"tc-tag-label\">\n<$view field=\"title\" format=\"text\"/>\n</span>\n</$set>\n</$link>"
},
"$:/core/ui/ControlPanel/Advanced": {
"title": "$:/core/ui/ControlPanel/Advanced",
"tags": "$:/tags/ControlPanel/Info",
"caption": "{{$:/language/ControlPanel/Advanced/Caption}}",
"text": "{{$:/language/ControlPanel/Advanced/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Advanced]!has[draft.of]]\" \"$:/core/ui/ControlPanel/TiddlerFields\">>\n</div>\n"
},
"$:/core/ui/ControlPanel/Appearance": {
"title": "$:/core/ui/ControlPanel/Appearance",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Appearance/Caption}}",
"text": "{{$:/language/ControlPanel/Appearance/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Appearance]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Theme\">>\n</div>\n"
},
"$:/core/ui/ControlPanel/Basics": {
"title": "$:/core/ui/ControlPanel/Basics",
"tags": "$:/tags/ControlPanel/Info",
"caption": "{{$:/language/ControlPanel/Basics/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Basics/\n\n\\define show-filter-count(filter)\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $value=\"\"\"$filter$\"\"\"/>\n<$action-setfield $tiddler=\"$:/state/tab--1498284803\" $value=\"$:/core/ui/AdvancedSearch/Filter\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n''<$count filter=\"\"\"$filter$\"\"\"/>''\n{{$:/core/images/advanced-search-button}}\n</$button>\n\\end\n\n|<<lingo Version/Prompt>> |''<<version>>'' |\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/status/UserName\"><<lingo Username/Prompt>></$link> |<$edit-text tiddler=\"$:/status/UserName\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/AnimationDuration\"><<lingo AnimDuration/Prompt>></$link> |<$edit-text tiddler=\"$:/config/AnimationDuration\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\" class=\"tc-edit-texteditor\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n|<$link to=\"$:/config/NewJournal/Title\"><<lingo NewJournal/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/config/NewJournal/Title\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/NewJournal/Text\"><<lingo NewJournal/Text/Prompt>></$link> |<$edit tiddler=\"$:/config/NewJournal/Text\" tag=\"textarea\" class=\"tc-edit-texteditor\" default=\"\"/> |\n|<$link to=\"$:/config/NewJournal/Tags\"><<lingo NewJournal/Tags/Prompt>></$link> |<$edit-text tiddler=\"$:/config/NewJournal/Tags\" default=\"\" tag=\"input\"/> |\n|<<lingo Language/Prompt>> |{{$:/snippets/minilanguageswitcher}} |\n|<<lingo Tiddlers/Prompt>> |<<show-filter-count \"[!is[system]sort[title]]\">> |\n|<<lingo Tags/Prompt>> |<<show-filter-count \"[tags[]sort[title]]\">> |\n|<<lingo SystemTiddlers/Prompt>> |<<show-filter-count \"[is[system]sort[title]]\">> |\n|<<lingo ShadowTiddlers/Prompt>> |<<show-filter-count \"[all[shadows]sort[title]]\">> |\n|<<lingo OverriddenShadowTiddlers/Prompt>> |<<show-filter-count \"[is[tiddler]is[shadow]sort[title]]\">> |\n"
},
"$:/core/ui/ControlPanel/EditorTypes": {
"title": "$:/core/ui/ControlPanel/EditorTypes",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/EditorTypes/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/EditorTypes/\n\n<<lingo Hint>>\n\n<table>\n<tbody>\n<tr>\n<th><<lingo Type/Caption>></th>\n<th><<lingo Editor/Caption>></th>\n</tr>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/config/EditorTypeMappings/]sort[title]]\">\n<tr>\n<td>\n<$link>\n<$list filter=\"[all[current]removeprefix[$:/config/EditorTypeMappings/]]\">\n<$text text={{!!title}}/>\n</$list>\n</$link>\n</td>\n<td>\n<$view field=\"text\"/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ControlPanel/Info": {
"title": "$:/core/ui/ControlPanel/Info",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Info/Caption}}",
"text": "{{$:/language/ControlPanel/Info/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Info]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Basics\">>\n</div>\n"
},
"$:/core/ui/ControlPanel/KeyboardShortcuts": {
"title": "$:/core/ui/ControlPanel/KeyboardShortcuts",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/KeyboardShortcuts/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/KeyboardShortcuts/\n\n\\define new-shortcut(title)\n<div class=\"tc-dropdown-item-plain\">\n<$edit-shortcut tiddler=\"$title$\" placeholder={{$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt}} style=\"width:auto;\"/> <$button>\n<<lingo Add/Caption>>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"[{$title$}]\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"$title$\"\n/>\n</$button>\n</div>\n\\end\n\n\\define shortcut-list-item(caption)\n<td>\n</td>\n<td style=\"text-align:right;font-size:0.7em;\">\n<<lingo Platform/$caption$>>\n</td>\n<td>\n<div style=\"position:relative;\">\n<$button popup=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> class=\"tc-btn-invisible\">\n{{$:/core/images/edit-button}}\n</$button>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutTitle)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\n<$reveal state=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown tc-popup-keep\">\n<$list filter=\"[list[$(shortcutTitle)$!!text]sort[title]]\" variable=\"shortcut\" emptyMessage=\"\"\"\n<div class=\"tc-dropdown-item-plain\">\n//<<lingo NoShortcuts/Caption>>//\n</div>\n\"\"\">\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn-invisible\" tooltip=<<lingo Remove/Hint>>>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"+[remove<shortcut>]\"\n/>\n×\n</$button>\n<kbd>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts=<<shortcut>>/>\n</kbd>\n</div>\n</$list>\n<hr/>\n<$macrocall $name=\"new-shortcut\" title=<<qualify \"$:/state/new-shortcut/$(shortcutTitle)$\">>/>\n</div>\n</div>\n</$reveal>\n</div>\n</td>\n\\end\n\n\\define shortcut-list(caption,prefix)\n<tr>\n<$list filter=\"[all[tiddlers+shadows][$prefix$$(shortcutName)$]]\" variable=\"shortcutTitle\">\n<<shortcut-list-item \"$caption$\">>\n</$list>\n</tr>\n\\end\n\n\\define shortcut-editor()\n<<shortcut-list \"All\" \"$:/config/shortcuts/\">>\n<<shortcut-list \"Mac\" \"$:/config/shortcuts-mac/\">>\n<<shortcut-list \"NonMac\" \"$:/config/shortcuts-not-mac/\">>\n<<shortcut-list \"Linux\" \"$:/config/shortcuts-linux/\">>\n<<shortcut-list \"NonLinux\" \"$:/config/shortcuts-not-linux/\">>\n<<shortcut-list \"Windows\" \"$:/config/shortcuts-windows/\">>\n<<shortcut-list \"NonWindows\" \"$:/config/shortcuts-not-windows/\">>\n\\end\n\n\\define shortcut-preview()\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutPrefix)$$(shortcutName)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\\end\n\n\\define shortcut-item-inner()\n<tr>\n<td>\n<$reveal type=\"nomatch\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"open\"\n/>\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"close\"\n/>\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n''<$text text=<<shortcutName>>/>''\n</td>\n<td>\n<$transclude tiddler=\"$:/config/ShortcutInfo/$(shortcutName)$\"/>\n</td>\n<td>\n<$list filter=\"$:/config/shortcuts/ $:/config/shortcuts-mac/ $:/config/shortcuts-not-mac/ $:/config/shortcuts-linux/ $:/config/shortcuts-not-linux/ $:/config/shortcuts-windows/ $:/config/shortcuts-not-windows/\" variable=\"shortcutPrefix\">\n<<shortcut-preview>>\n</$list>\n</td>\n</tr>\n<$set name=\"dropdownState\" value={{$(dropdownStateTitle)$}}>\n<$list filter=\"[<dropdownState>prefix[open]]\" variable=\"listItem\">\n<<shortcut-editor>>\n</$list>\n</$set>\n\\end\n\n\\define shortcut-item()\n<$set name=\"dropdownStateTitle\" value=<<qualify \"$:/state/dropdown/keyboardshortcut/$(shortcutName)$\">>>\n<<shortcut-item-inner>>\n</$set>\n\\end\n\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]removeprefix[$:/config/ShortcutInfo/]]\" variable=\"shortcutName\">\n<<shortcut-item>>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ControlPanel/LoadedModules": {
"title": "$:/core/ui/ControlPanel/LoadedModules",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/LoadedModules/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n<<lingo LoadedModules/Hint>>\n\n{{$:/snippets/modules}}\n"
},
"$:/core/ui/ControlPanel/Modals/AddPlugins": {
"title": "$:/core/ui/ControlPanel/Modals/AddPlugins",
"subtitle": "{{$:/core/images/download-button}} {{$:/language/ControlPanel/Plugins/Add/Caption}}",
"text": "\\define install-plugin-button()\n<$button>\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url={{!!url}} title={{$(assetInfo)$!!original-title}}/>\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"installedVersion\" emptyMessage=\"\"\"{{$:/language/ControlPanel/Plugins/Install/Caption}}\"\"\">\n{{$:/language/ControlPanel/Plugins/Reinstall/Caption}}\n</$list>\n</$button>\n\\end\n\n\\define popup-state-macro()\n$:/state/add-plugin-info/$(connectionTiddler)$/$(assetInfo)$\n\\end\n\n\\define display-plugin-info(type)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<div class=\"tc-plugin-info\">\n<div class=\"tc-plugin-info-chunk tc-small-icon\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk\">\n<$list filter=\"[<assetInfo>has[icon]]\" emptyMessage=\"\"\"<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\"\"\">\n<img src={{$(assetInfo)$!!icon}}/>\n</$list>\n</div>\n<div class=\"tc-plugin-info-chunk\">\n<h1><$view tiddler=<<assetInfo>> field=\"description\"/></h1>\n<h2><$view tiddler=<<assetInfo>> field=\"original-title\"/></h2>\n<div><em><$view tiddler=<<assetInfo>> field=\"version\"/></em></div>\n</div>\n<div class=\"tc-plugin-info-chunk\">\n<<install-plugin-button>>\n</div>\n</div>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>>>\n<div class=\"tc-plugin-info-dropdown\">\n<div class=\"tc-plugin-info-dropdown-message\">\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"installedVersion\" emptyMessage=\"\"\"{{$:/language/ControlPanel/Plugins/NotInstalled/Hint}}\"\"\">\n<em>\n{{$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint}}\n</em>\n</$list>\n</div>\n<div class=\"tc-plugin-info-dropdown-body\">\n<$transclude tiddler=<<assetInfo>> field=\"readme\" mode=\"block\"/>\n</div>\n</div>\n</$reveal>\n</$set>\n\\end\n\n\\define load-plugin-library-button()\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-load-plugin-library\" url={{!!url}} infoTitlePrefix=\"$:/temp/RemoteAssetInfo/\"/>\n{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Plugins/OpenPluginLibrary}}\n</$button>\n\\end\n\n\\define display-server-assets(type)\n{{$:/language/Search/Search}}: <$edit-text tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" default=\"\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n<div class=\"tc-plugin-library-listing\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]search{$:/temp/RemoteAssetSearch/$(currentTiddler)$}sort[description]]\" variable=\"assetInfo\">\n<<display-plugin-info \"$type$\">>\n</$list>\n</div>\n\\end\n\n\\define display-server-connection()\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/ServerConnection]suffix{!!url}]\" variable=\"connectionTiddler\" emptyMessage=<<load-plugin-library-button>>>\n\n<<tabs \"[[$:/core/ui/ControlPanel/Plugins/Add/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Add/Themes]] [[$:/core/ui/ControlPanel/Plugins/Add/Languages]]\" \"$:/core/ui/ControlPanel/Plugins/Add/Plugins\">>\n\n</$list>\n\\end\n\n\\define close-library-button()\n<$reveal type='nomatch' state='$:/temp/ServerConnection/$(PluginLibraryURL)$' text=''>\n<$button class='tc-btn-big-green'>\n<$action-sendmessage $message=\"tm-unload-plugin-library\" url={{!!url}}/>\n{{$:/core/images/chevron-left}} {{$:/language/ControlPanel/Plugins/ClosePluginLibrary}}\n<$action-deletetiddler $filter=\"[prefix[$:/temp/ServerConnection/$(PluginLibraryURL)$]][prefix[$:/temp/RemoteAssetInfo/$(PluginLibraryURL)$]]\"/>\n</$button>\n</$reveal>\n\\end\n\n\\define plugin-library-listing()\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<div class=\"tc-plugin-library\">\n\n!! <$link><$transclude field=\"caption\"><$view field=\"title\"/></$transclude></$link>\n\n//<$view field=\"url\"/>//\n\n<$transclude/>\n\n<$set name=PluginLibraryURL value={{!!url}}>\n<<close-library-button>>\n</$set>\n\n<<display-server-connection>>\n</div>\n</$list>\n\\end\n\n<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\">\n\n<div>\n<<plugin-library-listing>>\n</div>\n\n</$importvariables>\n"
},
"$:/core/ui/ControlPanel/Palette": {
"title": "$:/core/ui/ControlPanel/Palette",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/Palette/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Palette/\n\n{{$:/snippets/paletteswitcher}}\n\n<$reveal type=\"nomatch\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"yes\"><<lingo ShowEditor/Caption>></$button>\n\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"no\"><<lingo HideEditor/Caption>></$button>\n{{$:/snippets/paletteeditor}}\n\n</$reveal>\n\n"
},
"$:/core/ui/ControlPanel/Parsing": {
"title": "$:/core/ui/ControlPanel/Parsing",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/Parsing/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Parsing/\n\n\\define toggle(Type)\n<$checkbox\ntiddler=\"\"\"$:/config/WikiParserRules/$Type$/$(rule)$\"\"\"\nfield=\"text\"\nchecked=\"enable\"\nunchecked=\"disable\"\ndefault=\"enable\">\n<<rule>>\n</$checkbox>\n\\end\n\n\\define rules(type,Type)\n<$list filter=\"[wikiparserrules[$type$]]\" variable=\"rule\">\n<dd><<toggle $Type$>></dd>\n</$list>\n\\end\n\n<<lingo Hint>>\n\n<dl>\n<dt><<lingo Pragma/Caption>></dt>\n<<rules pragma Pragma>>\n<dt><<lingo Inline/Caption>></dt>\n<<rules inline Inline>>\n<dt><<lingo Block/Caption>></dt>\n<<rules block Block>>\n</dl>"
},
"$:/core/ui/ControlPanel/Plugins/Add/Languages": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Languages",
"caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[language]]\"/>)",
"text": "<<display-server-assets language>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Add/Plugins": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[plugin]]\"/>)",
"text": "<<display-server-assets plugin>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Add/Themes": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Themes",
"caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[theme]]\"/>)",
"text": "<<display-server-assets theme>>\n"
},
"$:/core/ui/ControlPanel/Plugins/AddPlugins": {
"title": "$:/core/ui/ControlPanel/Plugins/AddPlugins",
"text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n<$button message=\"tm-modal\" param=\"$:/core/ui/ControlPanel/Modals/AddPlugins\" tooltip={{$:/language/ControlPanel/Plugins/Add/Hint}} class=\"tc-btn-big-green\" style=\"background:blue;\">\n{{$:/core/images/download-button}} <<lingo Add/Caption>>\n</$button>\n"
},
"$:/core/ui/ControlPanel/Plugins/Installed/Languages": {
"title": "$:/core/ui/ControlPanel/Plugins/Installed/Languages",
"caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[language]]\"/>)",
"text": "<<plugin-table language>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Installed/Plugins": {
"title": "$:/core/ui/ControlPanel/Plugins/Installed/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[plugin]]\"/>)",
"text": "<<plugin-table plugin>>\n"
},
"$:/core/ui/ControlPanel/Plugins/Installed/Themes": {
"title": "$:/core/ui/ControlPanel/Plugins/Installed/Themes",
"caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[theme]]\"/>)",
"text": "<<plugin-table theme>>\n"
},
"$:/core/ui/ControlPanel/Plugins": {
"title": "$:/core/ui/ControlPanel/Plugins",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define plugin-table(type)\n<$set name=\"plugin-type\" value=\"\"\"$type$\"\"\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n<$list filter=\"[!has[draft.of]plugin-type[$type$]sort[description]]\" emptyMessage=<<lingo \"Empty/Hint\">> template=\"$:/core/ui/Components/plugin-info\"/>\n</$set>\n</$set>\n\\end\n\n{{$:/core/ui/ControlPanel/Plugins/AddPlugins}}\n\n<<lingo Installed/Hint>>\n\n<<tabs \"[[$:/core/ui/ControlPanel/Plugins/Installed/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Installed/Themes]] [[$:/core/ui/ControlPanel/Plugins/Installed/Languages]]\" \"$:/core/ui/ControlPanel/Plugins/Installed/Plugins\">>\n"
},
"$:/core/ui/ControlPanel/Saving/DownloadSaver": {
"title": "$:/core/ui/ControlPanel/Saving/DownloadSaver",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/DownloadSaver/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/DownloadSaver/\n\n<<lingo Hint>>\n\n!! <$link to=\"$:/config/DownloadSaver/AutoSave\"><<lingo AutoSave/Hint>></$link>\n\n<$checkbox tiddler=\"$:/config/DownloadSaver/AutoSave\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <<lingo AutoSave/Description>> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Saving/General": {
"title": "$:/core/ui/ControlPanel/Saving/General",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/General/Caption}}",
"list-before": "",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n{{$:/language/ControlPanel/Saving/General/Hint}}\n\n!! <$link to=\"$:/config/AutoSave\"><<lingo AutoSave/Caption>></$link>\n\n<<lingo AutoSave/Hint>>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"yes\"> <<lingo AutoSave/Enabled/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"no\"> <<lingo AutoSave/Disabled/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Saving/TiddlySpot": {
"title": "$:/core/ui/ControlPanel/Saving/TiddlySpot",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/TiddlySpot/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/TiddlySpot/\n\n\\define backupURL()\nhttp://$(userName)$.tiddlyspot.com/backup/\n\\end\n\\define backupLink()\n<$reveal type=\"nomatch\" state=\"$:/UploadName\" text=\"\">\n<$set name=\"userName\" value={{$:/UploadName}}>\n<$reveal type=\"match\" state=\"$:/UploadURL\" text=\"\">\n<<backupURL>>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/UploadURL\" text=\"\">\n<$macrocall $name=resolvePath source={{$:/UploadBackupDir}} root={{$:/UploadURL}}>>\n</$reveal>\n</$set>\n</$reveal>\n\\end\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/UploadName\" default=\"\" tag=\"input\"/> |\n|<<lingo Password>> |<$password name=\"upload\"/> |\n|<<lingo Backups>> |<<backupLink>> |\n\n''<<lingo Advanced/Heading>>''\n\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/UploadURL\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/UploadFilename\" default=\"index.html\" tag=\"input\"/> |\n|<<lingo UploadDir>> |<$edit-text tiddler=\"$:/UploadDir\" default=\".\" tag=\"input\"/> |\n|<<lingo BackupDir>> |<$edit-text tiddler=\"$:/UploadBackupDir\" default=\".\" tag=\"input\"/> |\n\n<<lingo TiddlySpot/Hint>>"
},
"$:/core/ui/ControlPanel/Saving": {
"title": "$:/core/ui/ControlPanel/Saving",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Saving/Caption}}",
"text": "{{$:/language/ControlPanel/Saving/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Saving]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Saving/General\">>\n</div>\n"
},
"$:/core/buttonstyles/Borderless": {
"title": "$:/core/buttonstyles/Borderless",
"tags": "$:/tags/ToolbarButtonStyle",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless}}",
"text": "tc-btn-invisible"
},
"$:/core/buttonstyles/Boxed": {
"title": "$:/core/buttonstyles/Boxed",
"tags": "$:/tags/ToolbarButtonStyle",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed}}",
"text": "tc-btn-boxed"
},
"$:/core/buttonstyles/Rounded": {
"title": "$:/core/buttonstyles/Rounded",
"tags": "$:/tags/ToolbarButtonStyle",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded}}",
"text": "tc-btn-rounded"
},
"$:/core/ui/ControlPanel/Settings/CamelCase": {
"title": "$:/core/ui/ControlPanel/Settings/CamelCase",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/CamelCase/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/CamelCase/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/WikiParserRules/Inline/wikilink\" field=\"text\" checked=\"enable\" unchecked=\"disable\" default=\"enable\"> <$link to=\"$:/config/WikiParserRules/Inline/wikilink\"><<lingo Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings/DefaultSidebarTab": {
"caption": "{{$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption}}",
"tags": "$:/tags/ControlPanel/Settings",
"title": "$:/core/ui/ControlPanel/Settings/DefaultSidebarTab",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/DefaultSidebarTab/\n\n<$link to=\"$:/config/DefaultSidebarTab\"><<lingo Hint>></$link>\n\n<$select tiddler=\"$:/config/DefaultSidebarTab\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\">\n<option value=<<currentTiddler>>><$transclude field=\"caption\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/EditorToolbar": {
"title": "$:/core/ui/ControlPanel/Settings/EditorToolbar",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/EditorToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/EditorToolbar/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/TextEditor/EnableToolbar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/TextEditor/EnableToolbar\"><<lingo Description>></$link> </$checkbox>\n\n"
},
"$:/core/ui/ControlPanel/Settings/InfoPanelMode": {
"title": "$:/core/ui/ControlPanel/Settings/InfoPanelMode",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/InfoPanelMode/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/InfoPanelMode/\n<$link to=\"$:/config/TiddlerInfo/Mode\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"popup\"> <<lingo Popup/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"sticky\"> <<lingo Sticky/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/LinkToBehaviour": {
"title": "$:/core/ui/ControlPanel/Settings/LinkToBehaviour",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/LinkToBehaviour/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/LinkToBehaviour/\n\n<$link to=\"$:/config/Navigation/openLinkFromInsideRiver\"><<lingo \"InsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromInsideRiver\">\n <option value=\"above\"><<lingo \"OpenAbove\">></option>\n <option value=\"below\"><<lingo \"OpenBelow\">></option>\n <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n\n<$link to=\"$:/config/Navigation/openLinkFromOutsideRiver\"><<lingo \"OutsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromOutsideRiver\">\n <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/MissingLinks": {
"title": "$:/core/ui/ControlPanel/Settings/MissingLinks",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/MissingLinks/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/MissingLinks/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/MissingLinks\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/MissingLinks\"><<lingo Description>></$link> </$checkbox>\n\n"
},
"$:/core/ui/ControlPanel/Settings/NavigationAddressBar": {
"title": "$:/core/ui/ControlPanel/Settings/NavigationAddressBar",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/NavigationAddressBar/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationAddressBar/\n\n<$link to=\"$:/config/Navigation/UpdateAddressBar\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permaview\"> <<lingo Permaview/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permalink\"> <<lingo Permalink/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/NavigationHistory": {
"title": "$:/core/ui/ControlPanel/Settings/NavigationHistory",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/NavigationHistory/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationHistory/\n<$link to=\"$:/config/Navigation/UpdateHistory\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation": {
"title": "$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/PerformanceInstrumentation/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Performance/Instrumentation\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Performance/Instrumentation\"><<lingo Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings/TitleLinks": {
"title": "$:/core/ui/ControlPanel/Settings/TitleLinks",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/TitleLinks/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/TitleLinks/\n<$link to=\"$:/config/Tiddlers/TitleLinks\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle": {
"title": "$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtonStyle/\n<$link to=\"$:/config/Toolbar/ButtonClass\"><<lingo \"Hint\">></$link>\n\n<$select tiddler=\"$:/config/Toolbar/ButtonClass\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ToolbarButtonStyle]]\">\n<option value={{!!text}}>{{!!caption}}</option>\n</$list>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/ToolbarButtons": {
"title": "$:/core/ui/ControlPanel/Settings/ToolbarButtons",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtons/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtons/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Icons\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Toolbar/Icons\"><<lingo Icons/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Text\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Toolbar/Text\"><<lingo Text/Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings": {
"title": "$:/core/ui/ControlPanel/Settings",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Settings/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n<<lingo Hint>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Settings]]\">\n\n<div style=\"border-top:1px solid #eee;\">\n\n!! <$link><$transclude field=\"caption\"/></$link>\n\n<$transclude/>\n\n</div>\n\n</$list>\n"
},
"$:/core/ui/ControlPanel/StoryView": {
"title": "$:/core/ui/ControlPanel/StoryView",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/StoryView/Caption}}",
"text": "{{$:/snippets/viewswitcher}}\n"
},
"$:/core/ui/ControlPanel/Theme": {
"title": "$:/core/ui/ControlPanel/Theme",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/Theme/Caption}}",
"text": "{{$:/snippets/themeswitcher}}\n"
},
"$:/core/ui/ControlPanel/TiddlerFields": {
"title": "$:/core/ui/ControlPanel/TiddlerFields",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/TiddlerFields/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo TiddlerFields/Hint>>\n\n{{$:/snippets/allfields}}"
},
"$:/core/ui/ControlPanel/Toolbars/EditToolbar": {
"title": "$:/core/ui/ControlPanel/Toolbars/EditToolbar",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/EditToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>"
},
"$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate": {
"title": "$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate",
"text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"><$transclude tiddler={{!!icon}}/></span> <$transclude field=\"caption\"/> -- <i class=\"tc-muted\"><$transclude field=\"description\"/></i>\n</$draggable>\n"
},
"$:/core/ui/ControlPanel/Toolbars/EditorToolbar": {
"title": "$:/core/ui/ControlPanel/Toolbars/EditorToolbar",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/EditorToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditorToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditorToolbar/Hint}}\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditorToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate\"/>\n"
},
"$:/core/ui/ControlPanel/Toolbars/ItemTemplate": {
"title": "$:/core/ui/ControlPanel/Toolbars/ItemTemplate",
"text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"> <$transclude field=\"caption\"/> <i class=\"tc-muted\">-- <$transclude field=\"description\"/></i></span>\n</$draggable>\n"
},
"$:/core/ui/ControlPanel/Toolbars/PageControls": {
"title": "$:/core/ui/ControlPanel/Toolbars/PageControls",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/PageControls/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/PageControlButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/PageControls/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/PageControls\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/ControlPanel/Toolbars/ViewToolbar": {
"title": "$:/core/ui/ControlPanel/Toolbars/ViewToolbar",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/ViewToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/ViewToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/ViewToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/ViewToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/ControlPanel/Toolbars": {
"title": "$:/core/ui/ControlPanel/Toolbars",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/Toolbars/Caption}}",
"text": "{{$:/language/ControlPanel/Toolbars/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Toolbars]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Toolbars/ViewToolbar\" \"$:/state/tabs/controlpanel/toolbars\" \"tc-vertical\">>\n</div>\n"
},
"$:/ControlPanel": {
"title": "$:/ControlPanel",
"icon": "$:/core/images/options-button",
"color": "#bbb",
"text": "<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Info\">>\n</div>\n"
},
"$:/core/ui/DefaultSearchResultList": {
"title": "$:/core/ui/DefaultSearchResultList",
"tags": "$:/tags/SearchResults",
"caption": "{{$:/language/Search/DefaultResults/Caption}}",
"text": "\\define searchResultList()\n//<small>{{$:/language/Search/Matches/Title}}</small>//\n\n<$list filter=\"[!is[system]search:title{$(searchTiddler)$}sort[title]limit[250]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n//<small>{{$:/language/Search/Matches/All}}</small>//\n\n<$list filter=\"[!is[system]search{$(searchTiddler)$}sort[title]limit[250]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n\\end\n<<searchResultList>>\n"
},
"$:/core/ui/EditTemplate/body/preview/output": {
"title": "$:/core/ui/EditTemplate/body/preview/output",
"tags": "$:/tags/EditPreview",
"caption": "{{$:/language/EditTemplate/Body/Preview/Type/Output}}",
"text": "<$set name=\"tv-tiddler-preview\" value=\"yes\">\n\n<$transclude />\n\n</$set>\n"
},
"$:/core/ui/EditTemplate/body/editor": {
"title": "$:/core/ui/EditTemplate/body/editor",
"text": "<$edit\n\n field=\"text\"\n class=\"tc-edit-texteditor\"\n placeholder={{$:/language/EditTemplate/Body/Placeholder}}\n\n><$set\n\n name=\"targetTiddler\"\n value=<<currentTiddler>>\n\n><$list\n\n filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]]\"\n\n><$reveal\n\n type=\"nomatch\"\n state=<<config-visibility-title>>\n text=\"hide\"\n class=\"tc-text-editor-toolbar-item-wrapper\"\n\n><$transclude\n\n tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\"\n mode=\"inline\"\n\n/></$reveal></$list></$set></$edit>\n"
},
"$:/core/ui/EditTemplate/body/toolbar/button": {
"title": "$:/core/ui/EditTemplate/body/toolbar/button",
"text": "\\define toolbar-button-icon()\n<$list\n\n filter=\"[all[current]!has[custom-icon]]\"\n variable=\"no-custom-icon\"\n\n><$transclude\n\n tiddler={{!!icon}}\n\n/></$list>\n\\end\n\n\\define toolbar-button-tooltip()\n{{!!description}}<$macrocall $name=\"displayshortcuts\" $output=\"text/plain\" shortcuts={{!!shortcuts}} prefix=\"` - [\" separator=\"] [\" suffix=\"]`\"/>\n\\end\n\n\\define toolbar-button()\n<$list\n\n filter={{!!condition}}\n variable=\"list-condition\"\n\n><$wikify\n\n name=\"tooltip-text\"\n text=<<toolbar-button-tooltip>>\n mode=\"inline\"\n output=\"text\"\n\n><$list\n\n filter=\"[all[current]!has[dropdown]]\"\n variable=\"no-dropdown\"\n\n><$button\n\n class=\"tc-btn-invisible $(buttonClasses)$\"\n tooltip=<<tooltip-text>>\n\n><span\n\n data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n tiddler=<<currentTiddler>>\n field=\"text\"\n\n/></$button></$list><$list\n\n filter=\"[all[current]has[dropdown]]\"\n variable=\"dropdown\"\n\n><$set\n\n name=\"dropdown-state\"\n value=<<qualify \"$:/state/EditorToolbarDropdown\">>\n\n><$button\n\n popup=<<dropdown-state>>\n class=\"tc-popup-keep tc-btn-invisible $(buttonClasses)$\"\n selectedClass=\"tc-selected\"\n tooltip=<<tooltip-text>>\n\n><span\n\n data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n tiddler=<<currentTiddler>>\n field=\"text\"\n\n/></$button><$reveal\n\n state=<<dropdown-state>>\n type=\"popup\"\n position=\"below\"\n animate=\"yes\"\n tag=\"span\"\n\n><div\n\n class=\"tc-drop-down tc-popup-keep\"\n\n><$transclude\n\n tiddler={{!!dropdown}}\n mode=\"block\"\n\n/></div></$reveal></$set></$list></$wikify></$list>\n\\end\n\n\\define toolbar-button-outer()\n<$set\n\n name=\"buttonClasses\"\n value={{!!button-classes}}\n\n><<toolbar-button>></$set>\n\\end\n\n<<toolbar-button-outer>>"
},
"$:/core/ui/EditTemplate/body": {
"title": "$:/core/ui/EditTemplate/body",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/Body/\n\\define config-visibility-title()\n$:/config/EditorToolbarButtons/Visibility/$(currentTiddler)$\n\\end\n<$list filter=\"[is[current]has[_canonical_uri]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo External/Hint>>\n\n<a href={{!!_canonical_uri}}><$text text={{!!_canonical_uri}}/></a>\n\n<$edit-text field=\"_canonical_uri\" class=\"tc-edit-fields\"></$edit-text>\n\n</div>\n\n</$list>\n\n<$list filter=\"[is[current]!has[_canonical_uri]]\">\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\">\n\n<div class=\"tc-tiddler-preview\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n<div class=\"tc-tiddler-preview-preview\">\n\n<$transclude tiddler={{$:/state/editpreviewtype}} mode=\"inline\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/preview/output\" mode=\"inline\"/>\n\n</$transclude>\n\n</div>\n\n</div>\n\n</$reveal>\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n</$reveal>\n\n</$list>\n"
},
"$:/core/ui/EditTemplate/controls": {
"title": "$:/core/ui/EditTemplate/controls",
"tags": "$:/tags/EditTemplate",
"text": "\\define config-title()\n$:/config/EditToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title tc-tiddler-edit-title\">\n<$view field=\"title\"/>\n<span class=\"tc-tiddler-controls tc-titlebar\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$transclude tiddler=<<listItem>>/></$reveal></$list></span>\n<div style=\"clear: both;\"></div>\n</div>\n"
},
"$:/core/ui/EditTemplate/fields": {
"title": "$:/core/ui/EditTemplate/fields",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/\n\\define config-title()\n$:/config/EditTemplateFields/Visibility/$(currentField)$\n\\end\n\n\\define config-filter()\n[[hide]] -[title{$(config-title)$}]\n\\end\n\n\\define new-field-inner()\n<$reveal type=\"nomatch\" text=\"\" default=<<name>>>\n<$button>\n<$action-sendmessage $message=\"tm-add-field\" $name=<<name>> $value=<<value>>/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldname\"/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldvalue\"/>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" text=\"\" default=<<name>>>\n<$button>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n\\end\n\n\\define new-field()\n<$set name=\"name\" value={{$:/temp/newfieldname}}>\n<$set name=\"value\" value={{$:/temp/newfieldvalue}}>\n<<new-field-inner>>\n</$set>\n</$set>\n\\end\n\n<div class=\"tc-edit-fields\">\n<table class=\"tc-edit-fields\">\n<tbody>\n<$list filter=\"[all[current]fields[]] +[sort[title]]\" variable=\"currentField\">\n<$list filter=<<config-filter>> variable=\"temp\">\n<tr class=\"tc-edit-field\">\n<td class=\"tc-edit-field-name\">\n<$text text=<<currentField>>/>:</td>\n<td class=\"tc-edit-field-value\">\n<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}}/>\n</td>\n<td class=\"tc-edit-field-remove\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\n<$action-deletefield $field=<<currentField>>/>\n{{$:/core/images/delete-button}}\n</$button>\n</td>\n</tr>\n</$list>\n</$list>\n</tbody>\n</table>\n</div>\n\n<$fieldmangler>\n<div class=\"tc-edit-field-add\">\n<em class=\"tc-edit\">\n<<lingo Fields/Add/Prompt>>\n</em>\n<span class=\"tc-edit-field-add-name\">\n<$edit-text tiddler=\"$:/temp/newfieldname\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}} focusPopup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-edit-texteditor tc-popup-handle\"/>\n</span>\n<$button popup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/field-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$linkcatcher to=\"$:/temp/newfieldname\">\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/User>>\n</div>\n<$list filter=\"[!is[shadow]!is[system]fields[]search:title{$:/temp/newfieldname}sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type\" variable=\"currentField\">\n<$link to=<<currentField>>>\n<<currentField>>\n</$link>\n</$list>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/System>>\n</div>\n<$list filter=\"[fields[]search:title{$:/temp/newfieldname}sort[]] -[!is[shadow]!is[system]fields[]]\" variable=\"currentField\">\n<$link to=<<currentField>>>\n<<currentField>>\n</$link>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>\n<span class=\"tc-edit-field-add-value\">\n<$edit-text tiddler=\"$:/temp/newfieldvalue\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class=\"tc-edit-texteditor\"/>\n</span>\n<span class=\"tc-edit-field-add-button\">\n<$macrocall $name=\"new-field\"/>\n</span>\n</div>\n</$fieldmangler>\n"
},
"$:/core/ui/EditTemplate/shadow": {
"title": "$:/core/ui/EditTemplate/shadow",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/Shadow/\n\\define pluginLinkBody()\n<$link to=\"\"\"$(pluginTitle)$\"\"\">\n<$text text=\"\"\"$(pluginTitle)$\"\"\"/>\n</$link>\n\\end\n<$list filter=\"[all[current]get[draft.of]is[shadow]!is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>\n\n<$list filter=\"[all[current]get[draft.of]is[shadow]is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo OverriddenWarning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>"
},
"$:/core/ui/EditTemplate/tags": {
"title": "$:/core/ui/EditTemplate/tags",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/\n\n\\define tag-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-body-inner(colour,fallbackTarget,colourA,colourB)\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<span style=<<tag-styles>> class=\"tc-tag-label\">\n<$view field=\"title\" format=\"text\" />\n<$button message=\"tm-remove-tag\" param={{!!title}} class=\"tc-btn-invisible tc-remove-tag-button\">×</$button>\n</span>\n</$vars>\n\\end\n\n\\define tag-body(colour,palette)\n<$macrocall $name=\"tag-body-inner\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}}/>\n\\end\n\n\\define tag-picker-actions()\n<$action-listops\n\t$tiddler=<<currentTiddler>>\n\t$field=\"tags\"\n\t$subfilter=\"[<tag>] [all[current]tags[]]\"\n/>\n\\end\n\n<div class=\"tc-edit-tags\">\n<$fieldmangler>\n<$list filter=\"[all[current]tags[]sort[title]]\" storyview=\"pop\">\n<$macrocall $name=\"tag-body\" colour={{!!color}} palette={{$:/palette}}/>\n</$list>\n</$fieldmangler>\n<$macrocall $name=\"tag-picker\" actions=<<tag-picker-actions>>/>\n</div>\n"
},
"$:/core/ui/EditTemplate/title": {
"title": "$:/core/ui/EditTemplate/title",
"tags": "$:/tags/EditTemplate",
"text": "<$edit-text field=\"draft.title\" class=\"tc-titlebar tc-edit-texteditor\" focus=\"true\"/>\n\n<$vars pattern=\"\"\"[\\|\\[\\]{}]\"\"\" bad-chars=\"\"\"`| [ ] { }`\"\"\">\n\n<$list filter=\"[is[current]regexp:draft.title<pattern>]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/BadCharacterWarning}}\n\n</div>\n\n</$list>\n\n</$vars>\n\n<$reveal state=\"!!draft.title\" type=\"nomatch\" text={{!!draft.of}} tag=\"div\">\n\n<$list filter=\"[{!!draft.title}!is[missing]]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/Exists/Prompt}}\n\n</div>\n\n</$list>\n\n<$list filter=\"[{!!draft.of}!is[missing]]\" variable=\"listItem\">\n\n<$vars fromTitle={{!!draft.of}} toTitle={{!!draft.title}}>\n\n<$checkbox tiddler=\"$:/config/RelinkOnRename\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> {{$:/language/EditTemplate/Title/Relink/Prompt}}</$checkbox>\n\n</$vars>\n\n</$list>\n\n</$reveal>\n\n\n"
},
"$:/core/ui/EditTemplate/type": {
"title": "$:/core/ui/EditTemplate/type",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/\n<div class=\"tc-type-selector\"><$fieldmangler>\n<em class=\"tc-edit\"><<lingo Type/Prompt>></em> <$edit-text field=\"type\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-edit-typeeditor tc-popup-handle\"/> <$button popup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> <$button message=\"tm-remove-field\" param=\"type\" class=\"tc-btn-invisible tc-btn-icon\" tooltip={{$:/language/EditTemplate/Type/Delete/Hint}} aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}>{{$:/core/images/delete-button}}</$button>\n</$fieldmangler></div>\n\n<div class=\"tc-block-dropdown-wrapper\">\n<$reveal state=<<qualify \"$:/state/popup/type-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$linkcatcher to=\"!!type\">\n<$list filter='[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]each[group]sort[group-sort]]'>\n<div class=\"tc-dropdown-item\">\n<$text text={{!!group}}/>\n</div>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}] +[sort[description]]\"><$link to={{!!name}}><$view field=\"description\"/> (<$view field=\"name\"/>)</$link>\n</$list>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>\n</div>"
},
"$:/core/ui/EditTemplate": {
"title": "$:/core/ui/EditTemplate",
"text": "\\define actions()\n<$action-sendmessage $message=\"tm-add-tag\" $param={{$:/temp/NewTagName}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/NewTagName\"/>\n<$action-sendmessage $message=\"tm-add-field\" $name={{$:/temp/newfieldname}} $value={{$:/temp/newfieldvalue}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldname\"/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldvalue\"/>\n<$action-sendmessage $message=\"tm-save-tiddler\"/>\n\\end\n\\define frame-classes()\ntc-tiddler-frame tc-tiddler-edit-frame $(missingTiddlerClass)$ $(shadowTiddlerClass)$ $(systemTiddlerClass)$\n\\end\n<div class=<<frame-classes>>>\n<$fieldmangler>\n<$set name=\"storyTiddler\" value=<<currentTiddler>>>\n<$keyboard key=\"((cancel-edit-tiddler))\" message=\"tm-cancel-tiddler\">\n<$keyboard key=\"((save-tiddler))\" actions=<<actions>>>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditTemplate]!has[draft.of]]\" variable=\"listItem\">\n<$transclude tiddler=<<listItem>>/>\n</$list>\n</$keyboard>\n</$keyboard>\n</$set>\n</$fieldmangler>\n</div>\n"
},
"$:/core/ui/Buttons/cancel": {
"title": "$:/core/ui/Buttons/cancel",
"tags": "$:/tags/EditToolbar",
"caption": "{{$:/core/images/cancel-button}} {{$:/language/Buttons/Cancel/Caption}}",
"description": "{{$:/language/Buttons/Cancel/Hint}}",
"text": "<$button message=\"tm-cancel-tiddler\" tooltip={{$:/language/Buttons/Cancel/Hint}} aria-label={{$:/language/Buttons/Cancel/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/cancel-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Cancel/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/delete": {
"title": "$:/core/ui/Buttons/delete",
"tags": "$:/tags/EditToolbar $:/tags/ViewToolbar",
"caption": "{{$:/core/images/delete-button}} {{$:/language/Buttons/Delete/Caption}}",
"description": "{{$:/language/Buttons/Delete/Hint}}",
"text": "<$button message=\"tm-delete-tiddler\" tooltip={{$:/language/Buttons/Delete/Hint}} aria-label={{$:/language/Buttons/Delete/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/delete-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Delete/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/save": {
"title": "$:/core/ui/Buttons/save",
"tags": "$:/tags/EditToolbar",
"caption": "{{$:/core/images/done-button}} {{$:/language/Buttons/Save/Caption}}",
"description": "{{$:/language/Buttons/Save/Hint}}",
"text": "<$fieldmangler><$button tooltip={{$:/language/Buttons/Save/Hint}} aria-label={{$:/language/Buttons/Save/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-add-tag\" $param={{$:/temp/NewTagName}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/NewTagName\"/>\n<$action-sendmessage $message=\"tm-add-field\" $name={{$:/temp/newfieldname}} $value={{$:/temp/newfieldvalue}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldname\"/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldvalue\"/>\n<$action-sendmessage $message=\"tm-save-tiddler\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/done-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Save/Caption}}/></span>\n</$list>\n</$button>\n</$fieldmangler>\n"
},
"$:/core/ui/EditorToolbar/bold": {
"title": "$:/core/ui/EditorToolbar/bold",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/bold",
"caption": "{{$:/language/Buttons/Bold/Caption}}",
"description": "{{$:/language/Buttons/Bold/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((bold))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"''\"\n\tsuffix=\"''\"\n/>\n"
},
"$:/core/ui/EditorToolbar/clear-dropdown": {
"title": "$:/core/ui/EditorToolbar/clear-dropdown",
"text": "''{{$:/language/Buttons/Clear/Hint}}''\n\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"clear\"\n\tcolour=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n\n</div>\n"
},
"$:/core/ui/EditorToolbar/clear": {
"title": "$:/core/ui/EditorToolbar/clear",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/erase",
"caption": "{{$:/language/Buttons/Clear/Caption}}",
"description": "{{$:/language/Buttons/Clear/Hint}}",
"condition": "[<targetTiddler>is[image]]",
"dropdown": "$:/core/ui/EditorToolbar/clear-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/editor-height-dropdown": {
"title": "$:/core/ui/EditorToolbar/editor-height-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/EditorHeight/\n''<<lingo Hint>>''\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"auto\"> {{$:/core/images/auto-height}} <<lingo Caption/Auto>></$radio>\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"fixed\"> {{$:/core/images/fixed-height}} <<lingo Caption/Fixed>> <$edit-text tag=\"input\" tiddler=\"$:/config/TextEditor/EditorHeight/Height\" default=\"100px\"/></$radio>\n"
},
"$:/core/ui/EditorToolbar/editor-height": {
"title": "$:/core/ui/EditorToolbar/editor-height",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/fixed-height",
"custom-icon": "yes",
"caption": "{{$:/language/Buttons/EditorHeight/Caption}}",
"description": "{{$:/language/Buttons/EditorHeight/Hint}}",
"condition": "[<targetTiddler>!is[image]]",
"dropdown": "$:/core/ui/EditorToolbar/editor-height-dropdown",
"text": "<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n{{$:/core/images/fixed-height}}\n</$reveal>\n<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n{{$:/core/images/auto-height}}\n</$reveal>\n"
},
"$:/core/ui/EditorToolbar/excise-dropdown": {
"title": "$:/core/ui/EditorToolbar/excise-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Excise/\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<<lingo Caption/NewTitle>> <$edit-text tag=\"input\" tiddler=\"$config-title$/new-title\" default=\"\" focus=\"true\"/>\n\n<$set name=\"new-title\" value={{$config-title$/new-title}}>\n<$list filter=\"\"\"[<new-title>is[tiddler]]\"\"\">\n<div class=\"tc-error\">\n<<lingo Caption/TiddlerExists>>\n</div>\n</$list>\n</$set>\n\n<$checkbox tiddler=\"\"\"$config-title$/tagnew\"\"\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"false\"> <<lingo Caption/Tag>></$checkbox>\n\n<<lingo Caption/Replace>> <$select tiddler=\"\"\"$config-title$/type\"\"\" default=\"transclude\">\n<option value=\"link\"><<lingo Caption/Replace/Link>></option>\n<option value=\"transclude\"><<lingo Caption/Replace/Transclusion>></option>\n<option value=\"macro\"><<lingo Caption/Replace/Macro>></option>\n</$select>\n\n<$reveal state=\"\"\"$config-title$/type\"\"\" type=\"match\" text=\"macro\">\n<<lingo Caption/MacroName>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/macro-title\"\"\" default=\"translink\"/>\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"excise\"\n\ttitle={{$config-title$/new-title}}\n\ttype={{$config-title$/type}}\n\tmacro={{$config-title$/macro-title}}\n\ttagnew={{$config-title$/tagnew}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"$config-title$/new-title\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Excise>>\n</$button>\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Excise/\">>/>\n"
},
"$:/core/ui/EditorToolbar/excise": {
"title": "$:/core/ui/EditorToolbar/excise",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/excise",
"caption": "{{$:/language/Buttons/Excise/Caption}}",
"description": "{{$:/language/Buttons/Excise/Hint}}",
"condition": "[<targetTiddler>!is[image]]",
"shortcuts": "((excise))",
"dropdown": "$:/core/ui/EditorToolbar/excise-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/heading-1": {
"title": "$:/core/ui/EditorToolbar/heading-1",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-1",
"caption": "{{$:/language/Buttons/Heading1/Caption}}",
"description": "{{$:/language/Buttons/Heading1/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((heading-1))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"1\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-2": {
"title": "$:/core/ui/EditorToolbar/heading-2",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-2",
"caption": "{{$:/language/Buttons/Heading2/Caption}}",
"description": "{{$:/language/Buttons/Heading2/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-2))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"2\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-3": {
"title": "$:/core/ui/EditorToolbar/heading-3",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-3",
"caption": "{{$:/language/Buttons/Heading3/Caption}}",
"description": "{{$:/language/Buttons/Heading3/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-3))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"3\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-4": {
"title": "$:/core/ui/EditorToolbar/heading-4",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-4",
"caption": "{{$:/language/Buttons/Heading4/Caption}}",
"description": "{{$:/language/Buttons/Heading4/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-4))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"4\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-5": {
"title": "$:/core/ui/EditorToolbar/heading-5",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-5",
"caption": "{{$:/language/Buttons/Heading5/Caption}}",
"description": "{{$:/language/Buttons/Heading5/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-5))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"5\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-6": {
"title": "$:/core/ui/EditorToolbar/heading-6",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-6",
"caption": "{{$:/language/Buttons/Heading6/Caption}}",
"description": "{{$:/language/Buttons/Heading6/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-6))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"6\"\n/>\n"
},
"$:/core/ui/EditorToolbar/italic": {
"title": "$:/core/ui/EditorToolbar/italic",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/italic",
"caption": "{{$:/language/Buttons/Italic/Caption}}",
"description": "{{$:/language/Buttons/Italic/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((italic))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"//\"\n\tsuffix=\"//\"\n/>\n"
},
"$:/core/ui/EditorToolbar/line-width-dropdown": {
"title": "$:/core/ui/EditorToolbar/line-width-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/LineWidth/\n\n\\define toolbar-line-width-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(line-width)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/LineWidth\"\n\t$value=\"$(line-width)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; margin: 4px calc(80px - $(line-width)$); background-color: #000; width: calc(100px + $(line-width)$ * 2); height: $(line-width)$; border-radius: 120px; vertical-align: middle;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(line-width)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/LineWidth\" type=\"match\" text=\"\"\"$(line-width)$\"\"\" tag=\"span\">\n\n<$entity entity=\" \"/>\n\n<$entity entity=\"✓\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/LineWidths}} variable=\"line-width\">\n\n<<toolbar-line-width-inner>>\n\n</$list>\n"
},
"$:/core/ui/EditorToolbar/line-width": {
"title": "$:/core/ui/EditorToolbar/line-width",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/line-width",
"caption": "{{$:/language/Buttons/LineWidth/Caption}}",
"description": "{{$:/language/Buttons/LineWidth/Hint}}",
"condition": "[<targetTiddler>is[image]]",
"dropdown": "$:/core/ui/EditorToolbar/line-width-dropdown",
"text": "<$text text={{$:/config/BitmapEditor/LineWidth}}/>"
},
"$:/core/ui/EditorToolbar/link-dropdown": {
"title": "$:/core/ui/EditorToolbar/link-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Link/\n\n\\define link-actions()\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"make-link\"\n\ttext={{$(linkTiddler)$}}\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<searchTiddler>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<linkTiddler>>\n/>\n\\end\n\n\\define external-link()\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\">\n<$action-sendmessage $message=\"tm-edit-text-operation\" $param=\"make-link\" text={{$(searchTiddler)$}}\n/>\n{{$:/core/images/chevron-right}}\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<searchTiddler>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<linkTiddler>>\n/>\n</$button>\n\\end\n\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<$vars searchTiddler=\"\"\"$config-title$/search\"\"\" linkTiddler=\"\"\"$config-title$/link\"\"\" linktext=\"\" >\n\n<$edit-text tiddler=<<searchTiddler>> type=\"search\" tag=\"input\" focus=\"true\" placeholder={{$:/language/Search/Search}} default=\"\"/>\n<$reveal tag=\"span\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n<<external-link>>\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\">\n<$action-setfield $tiddler=<<searchTiddler>> text=\"\" />\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n\n<$reveal tag=\"div\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n\n<$linkcatcher actions=<<link-actions>> to=<<linkTiddler>>>\n\n{{$:/core/ui/SearchResults}}\n\n</$linkcatcher>\n\n</$reveal>\n\n</$vars>\n\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Link/\">>/>"
},
"$:/core/ui/EditorToolbar/link": {
"title": "$:/core/ui/EditorToolbar/link",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/link",
"caption": "{{$:/language/Buttons/Link/Caption}}",
"description": "{{$:/language/Buttons/Link/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((link))",
"dropdown": "$:/core/ui/EditorToolbar/link-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/list-bullet": {
"title": "$:/core/ui/EditorToolbar/list-bullet",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/list-bullet",
"caption": "{{$:/language/Buttons/ListBullet/Caption}}",
"description": "{{$:/language/Buttons/ListBullet/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((list-bullet))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"*\"\n\tcount=\"1\"\n/>\n"
},
"$:/core/ui/EditorToolbar/list-number": {
"title": "$:/core/ui/EditorToolbar/list-number",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/list-number",
"caption": "{{$:/language/Buttons/ListNumber/Caption}}",
"description": "{{$:/language/Buttons/ListNumber/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((list-number))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"1\"\n/>\n"
},
"$:/core/ui/EditorToolbar/mono-block": {
"title": "$:/core/ui/EditorToolbar/mono-block",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/mono-block",
"caption": "{{$:/language/Buttons/MonoBlock/Caption}}",
"description": "{{$:/language/Buttons/MonoBlock/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((mono-block))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n```\"\n\tsuffix=\"```\"\n/>\n"
},
"$:/core/ui/EditorToolbar/mono-line": {
"title": "$:/core/ui/EditorToolbar/mono-line",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/mono-line",
"caption": "{{$:/language/Buttons/MonoLine/Caption}}",
"description": "{{$:/language/Buttons/MonoLine/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((mono-line))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"`\"\n\tsuffix=\"`\"\n/>\n"
},
"$:/core/ui/EditorToolbar/more-dropdown": {
"title": "$:/core/ui/EditorToolbar/more-dropdown",
"text": "\\define config-title()\n$:/config/EditorToolbarButtons/Visibility/$(toolbarItem)$\n\\end\n\n\\define conditional-button()\n<$list filter={{$(toolbarItem)$!!condition}} variable=\"condition\">\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\" mode=\"inline\"/> <$transclude tiddler=<<toolbarItem>> field=\"description\"/>\n</$list>\n\\end\n\n<div class=\"tc-text-editor-toolbar-more\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]] -[[$:/core/ui/EditorToolbar/more]]\">\n<$reveal type=\"match\" state=<<config-visibility-title>> text=\"hide\" tag=\"div\">\n<<conditional-button>>\n</$reveal>\n</$list>\n</div>\n"
},
"$:/core/ui/EditorToolbar/more": {
"title": "$:/core/ui/EditorToolbar/more",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/down-arrow",
"caption": "{{$:/language/Buttons/More/Caption}}",
"description": "{{$:/language/Buttons/More/Hint}}",
"condition": "[<targetTiddler>]",
"dropdown": "$:/core/ui/EditorToolbar/more-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/opacity-dropdown": {
"title": "$:/core/ui/EditorToolbar/opacity-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Opacity/\n\n\\define toolbar-opacity-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(opacity)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Opacity\"\n\t$value=\"$(opacity)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(current-paint-colour)$; opacity: $(opacity)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(opacity)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/Opacity\" type=\"match\" text=\"\"\"$(opacity)$\"\"\" tag=\"span\">\n\n<$entity entity=\" \"/>\n\n<$entity entity=\"✓\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n\\define toolbar-opacity()\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/Opacities}} variable=\"opacity\">\n\n<<toolbar-opacity-inner>>\n\n</$list>\n\\end\n\n<$set name=\"current-paint-colour\" value={{$:/config/BitmapEditor/Colour}}>\n\n<$set name=\"current-opacity\" value={{$:/config/BitmapEditor/Opacity}}>\n\n<<toolbar-opacity>>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/EditorToolbar/opacity": {
"title": "$:/core/ui/EditorToolbar/opacity",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/opacity",
"caption": "{{$:/language/Buttons/Opacity/Caption}}",
"description": "{{$:/language/Buttons/Opacity/Hint}}",
"condition": "[<targetTiddler>is[image]]",
"dropdown": "$:/core/ui/EditorToolbar/opacity-dropdown",
"text": "<$text text={{$:/config/BitmapEditor/Opacity}}/>\n"
},
"$:/core/ui/EditorToolbar/paint-dropdown": {
"title": "$:/core/ui/EditorToolbar/paint-dropdown",
"text": "''{{$:/language/Buttons/Paint/Hint}}''\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Colour\"\n\t$value=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
},
"$:/core/ui/EditorToolbar/paint": {
"title": "$:/core/ui/EditorToolbar/paint",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/paint",
"caption": "{{$:/language/Buttons/Paint/Caption}}",
"description": "{{$:/language/Buttons/Paint/Hint}}",
"condition": "[<targetTiddler>is[image]]",
"dropdown": "$:/core/ui/EditorToolbar/paint-dropdown",
"text": "\\define toolbar-paint()\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(colour-picker-value)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\\end\n<$set name=\"colour-picker-value\" value={{$:/config/BitmapEditor/Colour}}>\n<<toolbar-paint>>\n</$set>\n"
},
"$:/core/ui/EditorToolbar/picture-dropdown": {
"title": "$:/core/ui/EditorToolbar/picture-dropdown",
"text": "\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n''{{$:/language/Buttons/Picture/Hint}}''\n\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext=<<replacement-text>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
},
"$:/core/ui/EditorToolbar/picture": {
"title": "$:/core/ui/EditorToolbar/picture",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/picture",
"caption": "{{$:/language/Buttons/Picture/Caption}}",
"description": "{{$:/language/Buttons/Picture/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((picture))",
"dropdown": "$:/core/ui/EditorToolbar/picture-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/preview-type-dropdown": {
"title": "$:/core/ui/EditorToolbar/preview-type-dropdown",
"text": "\\define preview-type-button()\n<$button tag=\"a\">\n\n<$action-setfield $tiddler=\"$:/state/editpreviewtype\" $value=\"$(previewType)$\"/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$transclude tiddler=<<previewType>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<previewType>> field=\"title\" mode=\"inline\"/>\n\n</$transclude> \n\n<$reveal tag=\"span\" state=\"$:/state/editpreviewtype\" type=\"match\" text=<<previewType>> default=\"$:/core/ui/EditTemplate/body/preview/output\">\n\n<$entity entity=\" \"/>\n\n<$entity entity=\"✓\"/>\n\n</$reveal>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]]\" variable=\"previewType\">\n\n<<preview-type-button>>\n\n</$list>\n"
},
"$:/core/ui/EditorToolbar/preview-type": {
"title": "$:/core/ui/EditorToolbar/preview-type",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/chevron-down",
"caption": "{{$:/language/Buttons/PreviewType/Caption}}",
"description": "{{$:/language/Buttons/PreviewType/Hint}}",
"condition": "[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]butfirst[]limit[1]]",
"button-classes": "tc-text-editor-toolbar-item-adjunct",
"dropdown": "$:/core/ui/EditorToolbar/preview-type-dropdown"
},
"$:/core/ui/EditorToolbar/preview": {
"title": "$:/core/ui/EditorToolbar/preview",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/preview-open",
"custom-icon": "yes",
"caption": "{{$:/language/Buttons/Preview/Caption}}",
"description": "{{$:/language/Buttons/Preview/Hint}}",
"condition": "[<targetTiddler>]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((preview))",
"text": "<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-open}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"no\"/>\n</$reveal>\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-closed}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"yes\"/>\n</$reveal>\n"
},
"$:/core/ui/EditorToolbar/quote": {
"title": "$:/core/ui/EditorToolbar/quote",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/quote",
"caption": "{{$:/language/Buttons/Quote/Caption}}",
"description": "{{$:/language/Buttons/Quote/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((quote))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n<<<\"\n\tsuffix=\"<<<\"\n/>\n"
},
"$:/core/ui/EditorToolbar/size-dropdown": {
"title": "$:/core/ui/EditorToolbar/size-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Size/\n\n\\define toolbar-button-size-preset(config-title)\n<$set name=\"width\" filter=\"$(sizePair)$ +[first[]]\">\n\n<$set name=\"height\" filter=\"$(sizePair)$ +[last[]]\">\n\n<$button tag=\"a\">\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n\t$value=<<width>>\n/>\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n\t$value=<<height>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/presets-popup\"\"\"\n/>\n\n<$text text=<<width>>/> × <$text text=<<height>>/>\n\n</$button>\n\n</$set>\n\n</$set>\n\\end\n\n\\define toolbar-button-size(config-title)\n''{{$:/language/Buttons/Size/Hint}}''\n\n<<lingo Caption/Width>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-width\"\"\" default=<<tv-bitmap-editor-width>> focus=\"true\" size=\"8\"/> <<lingo Caption/Height>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-height\"\"\" default=<<tv-bitmap-editor-height>> size=\"8\"/> <$button popup=\"\"\"$config-title$/presets-popup\"\"\" class=\"tc-btn-invisible tc-popup-keep\" style=\"width: auto; display: inline-block; background-colour: inherit;\" selectedClass=\"tc-selected\">\n{{$:/core/images/down-arrow}}\n</$button>\n\n<$reveal tag=\"span\" state=\"\"\"$config-title$/presets-popup\"\"\" type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n<div class=\"tc-drop-down tc-popup-keep\">\n\n<$list filter={{$:/config/BitmapEditor/ImageSizes}} variable=\"sizePair\">\n\n<$macrocall $name=\"toolbar-button-size-preset\" config-title=\"$config-title$\"/>\n\n</$list>\n\n</div>\n\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"resize\"\n\twidth={{$config-title$/new-width}}\n\theight={{$config-title$/new-height}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Resize>>\n</$button>\n\\end\n\n<$macrocall $name=\"toolbar-button-size\" config-title=<<qualify \"$:/state/Size/\">>/>\n"
},
"$:/core/ui/EditorToolbar/size": {
"title": "$:/core/ui/EditorToolbar/size",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/size",
"caption": "{{$:/language/Buttons/Size/Caption}}",
"description": "{{$:/language/Buttons/Size/Hint}}",
"condition": "[<targetTiddler>is[image]]",
"dropdown": "$:/core/ui/EditorToolbar/size-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/stamp-dropdown": {
"title": "$:/core/ui/EditorToolbar/stamp-dropdown",
"text": "\\define toolbar-button-stamp-inner()\n<$button tag=\"a\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext={{$(snippetTitle)$}}\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$view tiddler=<<snippetTitle>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<snippetTitle>> field=\"title\" mode=\"inline\"/>\n\n</$view>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TextEditor/Snippet]!has[draft.of]sort[caption]]\" variable=\"snippetTitle\">\n\n<<toolbar-button-stamp-inner>>\n\n</$list>\n\n----\n\n<$button tag=\"a\">\n\n<$action-sendmessage\n\t$message=\"tm-new-tiddler\"\n\ttags=\"$:/tags/TextEditor/Snippet\"\n\tcaption={{$:/language/Buttons/Stamp/New/Title}}\n\ttext={{$:/language/Buttons/Stamp/New/Text}}\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<em>\n\n<$text text={{$:/language/Buttons/Stamp/Caption/New}}/>\n\n</em>\n\n</$button>\n"
},
"$:/core/ui/EditorToolbar/stamp": {
"title": "$:/core/ui/EditorToolbar/stamp",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/stamp",
"caption": "{{$:/language/Buttons/Stamp/Caption}}",
"description": "{{$:/language/Buttons/Stamp/Hint}}",
"condition": "[<targetTiddler>!is[image]]",
"shortcuts": "((stamp))",
"dropdown": "$:/core/ui/EditorToolbar/stamp-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/strikethrough": {
"title": "$:/core/ui/EditorToolbar/strikethrough",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/strikethrough",
"caption": "{{$:/language/Buttons/Strikethrough/Caption}}",
"description": "{{$:/language/Buttons/Strikethrough/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((strikethrough))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"~~\"\n\tsuffix=\"~~\"\n/>\n"
},
"$:/core/ui/EditorToolbar/subscript": {
"title": "$:/core/ui/EditorToolbar/subscript",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/subscript",
"caption": "{{$:/language/Buttons/Subscript/Caption}}",
"description": "{{$:/language/Buttons/Subscript/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((subscript))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\",,\"\n\tsuffix=\",,\"\n/>\n"
},
"$:/core/ui/EditorToolbar/superscript": {
"title": "$:/core/ui/EditorToolbar/superscript",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/superscript",
"caption": "{{$:/language/Buttons/Superscript/Caption}}",
"description": "{{$:/language/Buttons/Superscript/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((superscript))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"^^\"\n\tsuffix=\"^^\"\n/>\n"
},
"$:/core/ui/EditorToolbar/underline": {
"title": "$:/core/ui/EditorToolbar/underline",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/underline",
"caption": "{{$:/language/Buttons/Underline/Caption}}",
"description": "{{$:/language/Buttons/Underline/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((underline))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"__\"\n\tsuffix=\"__\"\n/>\n"
},
"$:/core/Filters/AllTags": {
"title": "$:/core/Filters/AllTags",
"tags": "$:/tags/Filter",
"filter": "[tags[]!is[system]sort[title]]",
"description": "{{$:/language/Filters/AllTags}}",
"text": ""
},
"$:/core/Filters/AllTiddlers": {
"title": "$:/core/Filters/AllTiddlers",
"tags": "$:/tags/Filter",
"filter": "[!is[system]sort[title]]",
"description": "{{$:/language/Filters/AllTiddlers}}",
"text": ""
},
"$:/core/Filters/Drafts": {
"title": "$:/core/Filters/Drafts",
"tags": "$:/tags/Filter",
"filter": "[has[draft.of]sort[title]]",
"description": "{{$:/language/Filters/Drafts}}",
"text": ""
},
"$:/core/Filters/Missing": {
"title": "$:/core/Filters/Missing",
"tags": "$:/tags/Filter",
"filter": "[all[missing]sort[title]]",
"description": "{{$:/language/Filters/Missing}}",
"text": ""
},
"$:/core/Filters/Orphans": {
"title": "$:/core/Filters/Orphans",
"tags": "$:/tags/Filter",
"filter": "[all[orphans]sort[title]]",
"description": "{{$:/language/Filters/Orphans}}",
"text": ""
},
"$:/core/Filters/OverriddenShadowTiddlers": {
"title": "$:/core/Filters/OverriddenShadowTiddlers",
"tags": "$:/tags/Filter",
"filter": "[is[shadow]]",
"description": "{{$:/language/Filters/OverriddenShadowTiddlers}}",
"text": ""
},
"$:/core/Filters/RecentSystemTiddlers": {
"title": "$:/core/Filters/RecentSystemTiddlers",
"tags": "$:/tags/Filter",
"filter": "[has[modified]!sort[modified]limit[50]]",
"description": "{{$:/language/Filters/RecentSystemTiddlers}}",
"text": ""
},
"$:/core/Filters/RecentTiddlers": {
"title": "$:/core/Filters/RecentTiddlers",
"tags": "$:/tags/Filter",
"filter": "[!is[system]has[modified]!sort[modified]limit[50]]",
"description": "{{$:/language/Filters/RecentTiddlers}}",
"text": ""
},
"$:/core/Filters/ShadowTiddlers": {
"title": "$:/core/Filters/ShadowTiddlers",
"tags": "$:/tags/Filter",
"filter": "[all[shadows]sort[title]]",
"description": "{{$:/language/Filters/ShadowTiddlers}}",
"text": ""
},
"$:/core/Filters/StoryList": {
"title": "$:/core/Filters/StoryList",
"tags": "$:/tags/Filter",
"filter": "[list[$:/StoryList]] -$:/AdvancedSearch",
"description": "{{$:/language/Filters/StoryList}}",
"text": ""
},
"$:/core/Filters/SystemTags": {
"title": "$:/core/Filters/SystemTags",
"tags": "$:/tags/Filter",
"filter": "[all[shadows+tiddlers]tags[]is[system]sort[title]]",
"description": "{{$:/language/Filters/SystemTags}}",
"text": ""
},
"$:/core/Filters/SystemTiddlers": {
"title": "$:/core/Filters/SystemTiddlers",
"tags": "$:/tags/Filter",
"filter": "[is[system]sort[title]]",
"description": "{{$:/language/Filters/SystemTiddlers}}",
"text": ""
},
"$:/core/Filters/TypedTiddlers": {
"title": "$:/core/Filters/TypedTiddlers",
"tags": "$:/tags/Filter",
"filter": "[!is[system]has[type]each[type]sort[type]] -[type[text/vnd.tiddlywiki]]",
"description": "{{$:/language/Filters/TypedTiddlers}}",
"text": ""
},
"$:/core/ui/ImportListing": {
"title": "$:/core/ui/ImportListing",
"text": "\\define lingo-base() $:/language/Import/\n\n\\define messageField()\nmessage-$(payloadTiddler)$\n\\end\n\n\\define selectionField()\nselection-$(payloadTiddler)$\n\\end\n\n\\define previewPopupState()\n$(currentTiddler)$!!popup-$(payloadTiddler)$\n\\end\n\n\\define select-all-actions()\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<$action-setfield $field={{{ [<payloadTiddler>addprefix[selection-]] }}} $value={{$:/state/import/select-all}}/>\n</$list>\n\\end\n\n<table>\n<tbody>\n<tr>\n<th>\n<$checkbox tiddler=\"$:/state/import/select-all\" field=\"text\" checked=\"checked\" unchecked=\"unchecked\" default=\"checked\" actions=<<select-all-actions>>>\n<<lingo Listing/Select/Caption>>\n</$checkbox>\n</th>\n<th>\n<<lingo Listing/Title/Caption>>\n</th>\n<th>\n<<lingo Listing/Status/Caption>>\n</th>\n</tr>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<tr>\n<td>\n<$checkbox field=<<selectionField>> checked=\"checked\" unchecked=\"unchecked\" default=\"checked\"/>\n</td>\n<td>\n<$reveal type=\"nomatch\" state=<<previewPopupState>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<previewPopupState>> setTo=\"yes\">\n{{$:/core/images/right-arrow}} <$text text=<<payloadTiddler>>/>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<previewPopupState>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<previewPopupState>> setTo=\"no\">\n{{$:/core/images/down-arrow}} <$text text=<<payloadTiddler>>/>\n</$button>\n</$reveal>\n</td>\n<td>\n<$view field=<<messageField>>/>\n</td>\n</tr>\n<tr>\n<td colspan=\"3\">\n<$reveal type=\"match\" text=\"yes\" state=<<previewPopupState>>>\n<$transclude subtiddler=<<payloadTiddler>> mode=\"block\"/>\n</$reveal>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ListItemTemplate": {
"title": "$:/core/ui/ListItemTemplate",
"text": "<div class=\"tc-menu-list-item\">\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</div>"
},
"$:/Manager/ItemMain/Fields": {
"title": "$:/Manager/ItemMain/Fields",
"tags": "$:/tags/Manager/ItemMain",
"caption": "{{$:/language/Manager/Item/Fields}}",
"text": "<table>\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
},
"$:/Manager/ItemMain/RawText": {
"title": "$:/Manager/ItemMain/RawText",
"tags": "$:/tags/Manager/ItemMain",
"caption": "{{$:/language/Manager/Item/RawText}}",
"text": "<pre><code><$view/></code></pre>\n"
},
"$:/Manager/ItemMain/WikifiedText": {
"title": "$:/Manager/ItemMain/WikifiedText",
"tags": "$:/tags/Manager/ItemMain",
"caption": "{{$:/language/Manager/Item/WikifiedText}}",
"text": "<$transclude mode=\"block\"/>\n"
},
"$:/Manager/ItemSidebar/Colour": {
"title": "$:/Manager/ItemSidebar/Colour",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Colour}}",
"text": "\\define swatch-styles()\nheight: 1em;\nbackground-color: $(colour)$\n\\end\n\n<$vars colour={{!!color}}>\n<p style=<<swatch-styles>>/>\n</$vars>\n<p>\n<$edit-text field=\"color\" tag=\"input\" type=\"color\"/> / <$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/>\n</p>\n"
},
"$:/Manager/ItemSidebar/Icon": {
"title": "$:/Manager/ItemSidebar/Icon",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Icon}}",
"text": "<p>\n<div class=\"tc-manager-icon-editor\">\n<$button popup=<<qualify \"$:/state/popup/image-picker\">> class=\"tc-btn-invisible\">\n<$transclude tiddler={{!!icon}}>\n{{$:/language/Manager/Item/Icon/None}}\n</$transclude>\n</$button>\n<div class=\"tc-block-dropdown-wrapper\" style=\"position: static;\">\n<$reveal state=<<qualify \"$:/state/popup/image-picker\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-popup\">\n<div class=\"tc-block-dropdown tc-popup-keep\" style=\"width: 80%; left: 10%; right: 10%; padding: 0.5em;\">\n<$macrocall $name=\"image-picker-include-tagged-images\" actions=\"\"\"\n<$action-setfield $field=\"icon\" $value=<<imageTitle>>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/image-picker\">>/>\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n</div>\n</p>\n"
},
"$:/Manager/ItemSidebar/Tags": {
"title": "$:/Manager/ItemSidebar/Tags",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Tags}}",
"text": "\\define tag-checkbox-actions()\n<$action-listops\n\t$tiddler=\"$:/config/Manager/RecentTags\"\n\t$subfilter=\"[<tag>] [list[$:/config/Manager/RecentTags]] +[limit[12]]\"\n/>\n\\end\n\n\\define tag-picker-actions()\n<<tag-checkbox-actions>>\n<$action-listops\n\t$tiddler=<<currentTiddler>>\n\t$field=\"tags\"\n\t$subfilter=\"[<tag>] [all[current]tags[]]\"\n/>\n\\end\n\n<p>\n<$list filter=\"[is[current]tags[]] [list[$:/config/Manager/RecentTags]] +[sort[title]] \" variable=\"tag\">\n<div>\n<$checkbox tiddler=<<currentTiddler>> tag=<<tag>> actions=<<tag-checkbox-actions>>>\n<$macrocall $name=\"tag-pill\" tag=<<tag>>/>\n</$checkbox>\n</div>\n</$list>\n</p>\n<p>\n<$macrocall $name=\"tag-picker\" actions=<<tag-picker-actions>>/>\n</p>\n"
},
"$:/Manager/ItemSidebar/Tools": {
"title": "$:/Manager/ItemSidebar/Tools",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Tools}}",
"text": "<p>\n<$button to=<<currentTiddler>>>{{$:/core/images/link}} open</$button>\n</p>\n<p>\n<$button message=\"tm-edit-tiddler\" param=<<currentTiddler>>>{{$:/core/images/edit-button}} edit</$button>\n</p>\n"
},
"$:/Manager": {
"title": "$:/Manager",
"icon": "$:/core/images/list",
"color": "#bbb",
"text": "\\define lingo-base() $:/language/Manager/\n\n\\define list-item-content-item()\n<div class=\"tc-manager-list-item-content-item\">\n\t<$vars state-title=\"\"\"$:/state/popup/manager/item/$(listItem)$\"\"\">\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"hide\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/down-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"nomatch\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"show\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/right-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\" class=\"tc-manager-list-item-content-item-body\">\n\t\t\t<$transclude tiddler=<<listItem>>/>\n\t\t</$reveal>\n\t</$vars>\n</div>\n\\end\n\n<div class=\"tc-manager-wrapper\">\n\t<div class=\"tc-manager-controls\">\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Show/Prompt>> <$select tiddler=\"$:/config/Manager/Show\" default=\"tiddlers\">\n\t\t\t\t<option value=\"tiddlers\"><<lingo Controls/Show/Option/Tiddlers>></option>\n\t\t\t\t<option value=\"tags\"><<lingo Controls/Show/Option/Tags>></option>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Search/Prompt>> <$edit-text tiddler=\"$:/config/Manager/Filter\" tag=\"input\" default=\"\" placeholder={{$:/language/Manager/Controls/Search/Placeholder}}/>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/FilterByTag/Prompt>> <$select tiddler=\"$:/config/Manager/Tag\" default=\"\">\n\t\t\t\t<option value=\"\"><<lingo Controls/FilterByTag/None>></option>\n\t\t\t\t<$list filter=\"[!is{$:/config/Manager/System}tags[]!is[system]sort[title]]\" variable=\"tag\">\n\t\t\t\t\t<option value=<<tag>>><$text text=<<tag>>/></option>\n\t\t\t\t</$list>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Sort/Prompt>> <$select tiddler=\"$:/config/Manager/Sort\" default=\"title\">\n\t\t\t\t<optgroup label=\"Common\">\n\t\t\t\t\t<$list filter=\"title modified modifier created creator created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t\t<optgroup label=\"All\">\n\t\t\t\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}fields[]sort[title]] -title -modified -modifier -created -creator -created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t</$select>\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/Order\" field=\"text\" checked=\"reverse\" unchecked=\"forward\" default=\"forward\">\n\t\t\t\t<<lingo Controls/Order/Prompt>>\n\t\t\t</$checkbox>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/System\" field=\"text\" checked=\"\" unchecked=\"system\" default=\"system\">\n\t\t\t\t{{$:/language/SystemTiddlers/Include/Prompt}}\n\t\t\t</$checkbox>\n\t\t</div>\n\t</div>\n\t<div class=\"tc-manager-list\">\n\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/Tag}sort{$:/config/Manager/Sort}order{$:/config/Manager/Order}]\">\n\t\t\t<$vars transclusion=<<currentTiddler>>>\n\t\t\t\t<div style=\"tc-manager-list-item\">\n\t\t\t\t\t<$button popup=<<qualify \"$:/state/manager/popup\">> class=\"tc-btn-invisible tc-manager-list-item-heading\" selectedClass=\"tc-manager-list-item-heading-selected\">\n\t\t\t\t\t\t<$text text=<<currentTiddler>>/>\n\t\t\t\t\t</$button>\n\t\t\t\t\t<$reveal state=<<qualify \"$:/state/manager/popup\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-manager-list-item-content tc-popup-handle\">\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-tiddler\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemMain]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-sidebar\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemSidebar]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</$reveal>\n\t\t\t\t</div>\n\t\t\t</$vars>\n\t\t</$list>\n\t</div>\n</div>\n"
},
"$:/core/ui/MissingTemplate": {
"title": "$:/core/ui/MissingTemplate",
"text": "<div class=\"tc-tiddler-missing\">\n<$button popup=<<qualify \"$:/state/popup/missing\">> class=\"tc-btn-invisible tc-missing-tiddler-label\">\n<$view field=\"title\" format=\"text\" />\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/missing\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n<hr>\n<$list filter=\"[all[current]backlinks[]sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n</div>\n"
},
"$:/core/ui/MoreSideBar/All": {
"title": "$:/core/ui/MoreSideBar/All",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/All/Caption}}",
"text": "<$list filter={{$:/core/Filters/AllTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Drafts": {
"title": "$:/core/ui/MoreSideBar/Drafts",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Drafts/Caption}}",
"text": "<$list filter={{$:/core/Filters/Drafts!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Missing": {
"title": "$:/core/ui/MoreSideBar/Missing",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Missing/Caption}}",
"text": "<$list filter={{$:/core/Filters/Missing!!filter}} template=\"$:/core/ui/MissingTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Orphans": {
"title": "$:/core/ui/MoreSideBar/Orphans",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Orphans/Caption}}",
"text": "<$list filter={{$:/core/Filters/Orphans!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Plugins": {
"title": "$:/core/ui/MoreSideBar/Plugins",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
"text": "\n{{$:/language/ControlPanel/Plugins/Installed/Hint}}\n\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar/Plugins]!has[draft.of]]\" \"$:/core/ui/MoreSideBar/Plugins/Plugins\">>\n"
},
"$:/core/ui/MoreSideBar/Recent": {
"title": "$:/core/ui/MoreSideBar/Recent",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Recent/Caption}}",
"text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
},
"$:/core/ui/MoreSideBar/Shadows": {
"title": "$:/core/ui/MoreSideBar/Shadows",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Shadows/Caption}}",
"text": "<$list filter={{$:/core/Filters/ShadowTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/System": {
"title": "$:/core/ui/MoreSideBar/System",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/System/Caption}}",
"text": "<$list filter={{$:/core/Filters/SystemTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/MoreSideBar/Tags": {
"title": "$:/core/ui/MoreSideBar/Tags",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Tags/Caption}}",
"text": "<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n{{$:/core/ui/Buttons/tag-manager}}\n\n</$set>\n\n</$set>\n\n</$set>\n\n<$list filter={{$:/core/Filters/AllTags!!filter}}>\n\n<$transclude tiddler=\"$:/core/ui/TagTemplate\"/>\n\n</$list>\n\n<hr class=\"tc-untagged-separator\">\n\n{{$:/core/ui/UntaggedTemplate}}\n"
},
"$:/core/ui/MoreSideBar/Types": {
"title": "$:/core/ui/MoreSideBar/Types",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Types/Caption}}",
"text": "<$list filter={{$:/core/Filters/TypedTiddlers!!filter}}>\n<div class=\"tc-menu-list-item\">\n<$view field=\"type\"/>\n<$list filter=\"[type{!!type}!is[system]sort[title]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}><$view field=\"title\"/></$link>\n</div>\n</$list>\n</div>\n</$list>\n"
},
"$:/core/ui/MoreSideBar/Plugins/Languages": {
"title": "$:/core/ui/MoreSideBar/Plugins/Languages",
"tags": "$:/tags/MoreSideBar/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}}",
"text": "<$list filter=\"[!has[draft.of]plugin-type[language]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
},
"$:/core/ui/MoreSideBar/Plugins/Plugins": {
"title": "$:/core/ui/MoreSideBar/Plugins/Plugins",
"tags": "$:/tags/MoreSideBar/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}}",
"text": "<$list filter=\"[!has[draft.of]plugin-type[plugin]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}>>/>\n"
},
"$:/core/ui/MoreSideBar/Plugins/Theme": {
"title": "$:/core/ui/MoreSideBar/Plugins/Theme",
"tags": "$:/tags/MoreSideBar/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}}",
"text": "<$list filter=\"[!has[draft.of]plugin-type[theme]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
},
"$:/core/ui/Buttons/advanced-search": {
"title": "$:/core/ui/Buttons/advanced-search",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/advanced-search-button}} {{$:/language/Buttons/AdvancedSearch/Caption}}",
"description": "{{$:/language/Buttons/AdvancedSearch/Hint}}",
"text": "\\define control-panel-button(class)\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/advanced-search-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/AdvancedSearch/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/AdvancedSearch]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/close-all": {
"title": "$:/core/ui/Buttons/close-all",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/close-all-button}} {{$:/language/Buttons/CloseAll/Caption}}",
"description": "{{$:/language/Buttons/CloseAll/Hint}}",
"text": "<$button message=\"tm-close-all-tiddlers\" tooltip={{$:/language/Buttons/CloseAll/Hint}} aria-label={{$:/language/Buttons/CloseAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/close-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/CloseAll/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/control-panel": {
"title": "$:/core/ui/Buttons/control-panel",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/options-button}} {{$:/language/Buttons/ControlPanel/Caption}}",
"description": "{{$:/language/Buttons/ControlPanel/Hint}}",
"text": "\\define control-panel-button(class)\n<$button to=\"$:/ControlPanel\" tooltip={{$:/language/Buttons/ControlPanel/Hint}} aria-label={{$:/language/Buttons/ControlPanel/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/options-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/ControlPanel/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/ControlPanel]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/encryption": {
"title": "$:/core/ui/Buttons/encryption",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/locked-padlock}} {{$:/language/Buttons/Encryption/Caption}}",
"description": "{{$:/language/Buttons/Encryption/Hint}}",
"text": "<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-clear-password\" tooltip={{$:/language/Buttons/Encryption/ClearPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/ClearPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/locked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/ClearPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-set-password\" tooltip={{$:/language/Buttons/Encryption/SetPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/SetPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/unlocked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/SetPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>"
},
"$:/core/ui/Buttons/export-page": {
"title": "$:/core/ui/Buttons/export-page",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportPage/Caption}}",
"description": "{{$:/language/Buttons/ExportPage/Hint}}",
"text": "<$macrocall $name=\"exportButton\" exportFilter=\"[!is[system]sort[title]]\" lingoBase=\"$:/language/Buttons/ExportPage/\"/>"
},
"$:/core/ui/Buttons/fold-all": {
"title": "$:/core/ui/Buttons/fold-all",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/fold-all-button}} {{$:/language/Buttons/FoldAll/Caption}}",
"description": "{{$:/language/Buttons/FoldAll/Hint}}",
"text": "<$button tooltip={{$:/language/Buttons/FoldAll/Hint}} aria-label={{$:/language/Buttons/FoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FoldAll/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/full-screen": {
"title": "$:/core/ui/Buttons/full-screen",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/full-screen-button}} {{$:/language/Buttons/FullScreen/Caption}}",
"description": "{{$:/language/Buttons/FullScreen/Hint}}",
"text": "<$button message=\"tm-full-screen\" tooltip={{$:/language/Buttons/FullScreen/Hint}} aria-label={{$:/language/Buttons/FullScreen/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/full-screen-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FullScreen/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/home": {
"title": "$:/core/ui/Buttons/home",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/home-button}} {{$:/language/Buttons/Home/Caption}}",
"description": "{{$:/language/Buttons/Home/Hint}}",
"text": "<$button message=\"tm-home\" tooltip={{$:/language/Buttons/Home/Hint}} aria-label={{$:/language/Buttons/Home/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/home-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Home/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/import": {
"title": "$:/core/ui/Buttons/import",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/import-button}} {{$:/language/Buttons/Import/Caption}}",
"description": "{{$:/language/Buttons/Import/Hint}}",
"text": "<div class=\"tc-file-input-wrapper\">\n<$button tooltip={{$:/language/Buttons/Import/Hint}} aria-label={{$:/language/Buttons/Import/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/import-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Import/Caption}}/></span>\n</$list>\n</$button>\n<$browse tooltip={{$:/language/Buttons/Import/Hint}}/>\n</div>"
},
"$:/core/ui/Buttons/language": {
"title": "$:/core/ui/Buttons/language",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/globe}} {{$:/language/Buttons/Language/Caption}}",
"description": "{{$:/language/Buttons/Language/Hint}}",
"text": "\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/language\">> tooltip={{$:/language/Buttons/Language/Hint}} aria-label={{$:/language/Buttons/Language/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value={{$:/language}}>\n<$image source=<<flag-title>>/>\n</$set>\n</span>\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Language/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/language\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down tc-drop-down-language-chooser\">\n<$linkcatcher to=\"$:/language\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[description]]\">\n<$link>\n<span class=\"tc-drop-down-bullet\">\n<$reveal type=\"match\" state=\"$:/language\" text=<<currentTiddler>>>\n•\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/language\" text=<<currentTiddler>>>\n \n</$reveal>\n</span>\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value=<<currentTiddler>>>\n<$transclude subtiddler=<<flag-title>>>\n<$list filter=\"[all[current]field:title[$:/languages/en-GB]]\">\n<$transclude tiddler=\"$:/languages/en-GB/icon\"/>\n</$list>\n</$transclude>\n</$set>\n</span>\n<$view field=\"description\">\n<$view field=\"name\">\n<$view field=\"title\"/>\n</$view>\n</$view>\n</$link>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>"
},
"$:/core/ui/Buttons/manager": {
"title": "$:/core/ui/Buttons/manager",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/list}} {{$:/language/Buttons/Manager/Caption}}",
"description": "{{$:/language/Buttons/Manager/Hint}}",
"text": "\\define manager-button(class)\n<$button to=\"$:/Manager\" tooltip={{$:/language/Buttons/Manager/Hint}} aria-label={{$:/language/Buttons/Manager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/list}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Manager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/Manager]]\" emptyMessage=<<manager-button>>>\n<<manager-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/more-page-actions": {
"title": "$:/core/ui/Buttons/more-page-actions",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}",
"description": "{{$:/language/Buttons/More/Hint}}",
"text": "\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/More/Caption}}/></span>\n</$list>\n</$button><$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"below\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]] -[[$:/core/ui/Buttons/more-page-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"
},
"$:/core/ui/Buttons/new-image": {
"title": "$:/core/ui/Buttons/new-image",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/new-image-button}} {{$:/language/Buttons/NewImage/Caption}}",
"description": "{{$:/language/Buttons/NewImage/Hint}}",
"text": "<$button tooltip={{$:/language/Buttons/NewImage/Hint}} aria-label={{$:/language/Buttons/NewImage/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-new-tiddler\" type=\"image/jpeg\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/new-image-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewImage/Caption}}/></span>\n</$list>\n</$button>\n"
},
"$:/core/ui/Buttons/new-journal": {
"title": "$:/core/ui/Buttons/new-journal",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournal/Caption}}",
"description": "{{$:/language/Buttons/NewJournal/Hint}}",
"text": "\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournal/Hint}} aria-label={{$:/language/Buttons/NewJournal/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<now \"$(journalTitleTemplate)$\">> tags=\"$(journalTags)$\" text=\"$(journalText)$\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewJournal/Caption}}/></span>\n</$list>\n</$button>\n\\end\n<$set name=\"journalTitleTemplate\" value={{$:/config/NewJournal/Title}}>\n<$set name=\"journalTags\" value={{$:/config/NewJournal/Tags}}>\n<$set name=\"journalText\" value={{$:/config/NewJournal/Text}}>\n<<journalButton>>\n</$set></$set></$set>"
},
"$:/core/ui/Buttons/new-tiddler": {
"title": "$:/core/ui/Buttons/new-tiddler",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/new-button}} {{$:/language/Buttons/NewTiddler/Caption}}",
"description": "{{$:/language/Buttons/NewTiddler/Hint}}",
"text": "<$button message=\"tm-new-tiddler\" tooltip={{$:/language/Buttons/NewTiddler/Hint}} aria-label={{$:/language/Buttons/NewTiddler/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/new-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewTiddler/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/palette": {
"title": "$:/core/ui/Buttons/palette",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/palette}} {{$:/language/Buttons/Palette/Caption}}",
"description": "{{$:/language/Buttons/Palette/Hint}}",
"text": "<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/palette\">> tooltip={{$:/language/Buttons/Palette/Hint}} aria-label={{$:/language/Buttons/Palette/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/palette}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Palette/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/palette\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\" style=\"font-size:0.7em;\">\n{{$:/snippets/paletteswitcher}}\n</div>\n</$reveal>"
},
"$:/core/ui/Buttons/print": {
"title": "$:/core/ui/Buttons/print",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/print-button}} {{$:/language/Buttons/Print/Caption}}",
"description": "{{$:/language/Buttons/Print/Hint}}",
"text": "<$button message=\"tm-print\" tooltip={{$:/language/Buttons/Print/Hint}} aria-label={{$:/language/Buttons/Print/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/print-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Print/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/refresh": {
"title": "$:/core/ui/Buttons/refresh",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/refresh-button}} {{$:/language/Buttons/Refresh/Caption}}",
"description": "{{$:/language/Buttons/Refresh/Hint}}",
"text": "<$button message=\"tm-browser-refresh\" tooltip={{$:/language/Buttons/Refresh/Hint}} aria-label={{$:/language/Buttons/Refresh/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/refresh-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Refresh/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/save-wiki": {
"title": "$:/core/ui/Buttons/save-wiki",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/save-button}} {{$:/language/Buttons/SaveWiki/Caption}}",
"description": "{{$:/language/Buttons/SaveWiki/Hint}}",
"text": "<$button message=\"tm-save-wiki\" param={{$:/config/SaveWikiButton/Template}} tooltip={{$:/language/Buttons/SaveWiki/Hint}} aria-label={{$:/language/Buttons/SaveWiki/Caption}} class=<<tv-config-toolbar-class>>>\n<span class=\"tc-dirty-indicator\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/save-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/SaveWiki/Caption}}/></span>\n</$list>\n</span>\n</$button>"
},
"$:/core/ui/Buttons/storyview": {
"title": "$:/core/ui/Buttons/storyview",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/storyview-classic}} {{$:/language/Buttons/StoryView/Caption}}",
"description": "{{$:/language/Buttons/StoryView/Hint}}",
"text": "\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/storyview\">> tooltip={{$:/language/Buttons/StoryView/Hint}} aria-label={{$:/language/Buttons/StoryView/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n<$set name=\"storyview\" value={{$:/view}}>\n<$transclude tiddler=<<icon>>/>\n</$set>\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/StoryView/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/storyview\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$linkcatcher to=\"$:/view\">\n<$list filter=\"[storyviews[]]\" variable=\"storyview\">\n<$link to=<<storyview>>>\n<span class=\"tc-drop-down-bullet\">\n<$reveal type=\"match\" state=\"$:/view\" text=<<storyview>>>\n•\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/view\" text=<<storyview>>>\n \n</$reveal>\n</span>\n<$transclude tiddler=<<icon>>/>\n<$text text=<<storyview>>/></$link>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>"
},
"$:/core/ui/Buttons/tag-manager": {
"title": "$:/core/ui/Buttons/tag-manager",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/tag-button}} {{$:/language/Buttons/TagManager/Caption}}",
"description": "{{$:/language/Buttons/TagManager/Hint}}",
"text": "\\define control-panel-button(class)\n<$button to=\"$:/TagManager\" tooltip={{$:/language/Buttons/TagManager/Hint}} aria-label={{$:/language/Buttons/TagManager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/tag-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/TagManager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/TagManager]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
},
"$:/core/ui/Buttons/theme": {
"title": "$:/core/ui/Buttons/theme",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/theme-button}} {{$:/language/Buttons/Theme/Caption}}",
"description": "{{$:/language/Buttons/Theme/Hint}}",
"text": "<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/theme\">> tooltip={{$:/language/Buttons/Theme/Hint}} aria-label={{$:/language/Buttons/Theme/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/theme-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Theme/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/theme\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$linkcatcher to=\"$:/theme\">\n<$list filter=\"[plugin-type[theme]sort[title]]\" variable=\"themeTitle\">\n<$link to=<<themeTitle>>>\n<span class=\"tc-drop-down-bullet\">\n<$reveal type=\"match\" state=\"$:/theme\" text=<<themeTitle>>>\n•\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/theme\" text=<<themeTitle>>>\n \n</$reveal>\n</span>\n<$view tiddler=<<themeTitle>> field=\"name\"/>\n</$link>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>"
},
"$:/core/ui/Buttons/timestamp": {
"title": "$:/core/ui/Buttons/timestamp",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/timestamp-on}} {{$:/language/Buttons/Timestamp/Caption}}",
"description": "{{$:/language/Buttons/Timestamp/Hint}}",
"text": "<$reveal type=\"nomatch\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/On/Hint}} aria-label={{$:/language/Buttons/Timestamp/On/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"yes\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/timestamp-on}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/On/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/Off/Hint}} aria-label={{$:/language/Buttons/Timestamp/Off/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"no\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/timestamp-off}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/Off/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>"
},
"$:/core/ui/Buttons/unfold-all": {
"title": "$:/core/ui/Buttons/unfold-all",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/unfold-all-button}} {{$:/language/Buttons/UnfoldAll/Caption}}",
"description": "{{$:/language/Buttons/UnfoldAll/Hint}}",
"text": "<$button tooltip={{$:/language/Buttons/UnfoldAll/Hint}} aria-label={{$:/language/Buttons/UnfoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-unfold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/UnfoldAll/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/PageTemplate/pagecontrols": {
"title": "$:/core/ui/PageTemplate/pagecontrols",
"text": "\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-page-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n<$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\">\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n</$reveal>\n</$list>\n</div>\n\n"
},
"$:/core/ui/PageStylesheet": {
"title": "$:/core/ui/PageStylesheet",
"text": "<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\">\n\n<$set name=\"currentTiddler\" value={{$:/language}}>\n\n<$set name=\"languageTitle\" value={{!!name}}>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\n</$set>\n\n</$set>\n\n</$importvariables>\n"
},
"$:/core/ui/PageTemplate/alerts": {
"title": "$:/core/ui/PageTemplate/alerts",
"tags": "$:/tags/PageTemplate",
"text": "<div class=\"tc-alerts\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Alert]!has[draft.of]]\" template=\"$:/core/ui/AlertTemplate\" storyview=\"pop\"/>\n\n</div>\n"
},
"$:/core/ui/PageTemplate/pluginreloadwarning": {
"title": "$:/core/ui/PageTemplate/pluginreloadwarning",
"tags": "$:/tags/PageTemplate",
"text": "\\define lingo-base() $:/language/\n\n<$list filter=\"[has[plugin-type]haschanged[]!plugin-type[import]limit[1]]\">\n\n<$reveal type=\"nomatch\" state=\"$:/temp/HidePluginWarning\" text=\"yes\">\n\n<div class=\"tc-plugin-reload-warning\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<<lingo PluginReloadWarning>> <$button set=\"$:/temp/HidePluginWarning\" setTo=\"yes\" class=\"tc-btn-invisible\">{{$:/core/images/close-button}}</$button>\n\n</$set>\n\n</div>\n\n</$reveal>\n\n</$list>\n"
},
"$:/core/ui/PageTemplate/sidebar": {
"title": "$:/core/ui/PageTemplate/sidebar",
"tags": "$:/tags/PageTemplate",
"text": "<$scrollable fallthrough=\"no\" class=\"tc-sidebar-scrollable\">\n\n<div class=\"tc-sidebar-header\">\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\" retain=\"yes\" animate=\"yes\">\n\n<h1 class=\"tc-site-title\">\n\n<$transclude tiddler=\"$:/SiteTitle\" mode=\"inline\"/>\n\n</h1>\n\n<div class=\"tc-site-subtitle\">\n\n<$transclude tiddler=\"$:/SiteSubtitle\" mode=\"inline\"/>\n\n</div>\n\n{{||$:/core/ui/PageTemplate/pagecontrols}}\n\n<$transclude tiddler=\"$:/core/ui/SideBarLists\" mode=\"inline\"/>\n\n</$reveal>\n\n</div>\n\n</$scrollable>"
},
"$:/core/ui/PageTemplate/story": {
"title": "$:/core/ui/PageTemplate/story",
"tags": "$:/tags/PageTemplate",
"text": "<section class=\"tc-story-river\">\n\n<section class=\"story-backdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AboveStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n<$list filter=\"[list[$:/StoryList]]\" history=\"$:/HistoryList\" template=\"$:/core/ui/ViewTemplate\" editTemplate=\"$:/core/ui/EditTemplate\" storyview={{$:/view}} emptyMessage={{$:/config/EmptyStoryMessage}}/>\n\n<section class=\"story-frontdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/BelowStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n</section>\n"
},
"$:/core/ui/PageTemplate/topleftbar": {
"title": "$:/core/ui/PageTemplate/topleftbar",
"tags": "$:/tags/PageTemplate",
"text": "<span class=\"tc-topbar tc-topbar-left\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopLeftBar]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
},
"$:/core/ui/PageTemplate/toprightbar": {
"title": "$:/core/ui/PageTemplate/toprightbar",
"tags": "$:/tags/PageTemplate",
"text": "<span class=\"tc-topbar tc-topbar-right\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopRightBar]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
},
"$:/core/ui/PageTemplate": {
"title": "$:/core/ui/PageTemplate",
"text": "\\define containerClasses()\ntc-page-container tc-page-view-$(themeTitle)$ tc-language-$(languageTitle)$\n\\end\n\n<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\">\n\n<$set name=\"tv-config-toolbar-icons\" value={{$:/config/Toolbar/Icons}}>\n\n<$set name=\"tv-config-toolbar-text\" value={{$:/config/Toolbar/Text}}>\n\n<$set name=\"tv-config-toolbar-class\" value={{$:/config/Toolbar/ButtonClass}}>\n\n<$set name=\"themeTitle\" value={{$:/view}}>\n\n<$set name=\"currentTiddler\" value={{$:/language}}>\n\n<$set name=\"languageTitle\" value={{!!name}}>\n\n<$set name=\"currentTiddler\" value=\"\">\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n\n<$dropzone>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageTemplate]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n\n</$dropzone>\n\n</$navigator>\n\n</div>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$importvariables>\n"
},
"$:/core/ui/PluginInfo": {
"title": "$:/core/ui/PluginInfo",
"text": "\\define localised-info-tiddler-title()\n$(currentTiddler)$/$(languageTitle)$/$(currentTab)$\n\\end\n\\define info-tiddler-title()\n$(currentTiddler)$/$(currentTab)$\n\\end\n\\define default-tiddler-title()\n$:/core/ui/PluginInfo/Default/$(currentTab)$\n\\end\n<$transclude tiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<default-tiddler-title>> mode=\"block\">\n{{$:/language/ControlPanel/Plugin/NoInfoFound/Hint}}\n</$transclude>\n</$transclude>\n</$transclude>\n</$transclude>\n"
},
"$:/core/ui/PluginInfo/Default/contents": {
"title": "$:/core/ui/PluginInfo/Default/contents",
"text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</li>\n</$list>\n</ul>\n"
},
"$:/core/ui/PluginListItemTemplate": {
"title": "$:/core/ui/PluginListItemTemplate",
"text": "<div class=\"tc-menu-list-item\">\n<$link to={{!!title}}>\n<$view field=\"description\">\n<$view field=\"title\"/>\n</$view>\n</$link>\n</div>"
},
"$:/core/ui/SearchResults": {
"title": "$:/core/ui/SearchResults",
"text": "<div class=\"tc-search-results\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\"\"\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}}/>\n\n</$list>\n\n</div>\n"
},
"$:/core/ui/SideBar/More": {
"title": "$:/core/ui/SideBar/More",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/More/Caption}}",
"text": "<div class=\"tc-more-sidebar\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\" \"$:/core/ui/MoreSideBar/Tags\" \"$:/state/tab/moresidebar\" \"tc-vertical\">>\n</div>\n"
},
"$:/core/ui/SideBar/Open": {
"title": "$:/core/ui/SideBar/Open",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/Open/Caption}}",
"text": "\\define lingo-base() $:/language/CloseAll/\n\n\\define drop-actions()\n<$action-listops $tiddler=\"$:/StoryList\" $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n<$list filter=\"[list[$:/StoryList]]\" history=\"$:/HistoryList\" storyview=\"pop\">\n<div style=\"position: relative;\">\n<$droppable actions=<<drop-actions>>>\n<div class=\"tc-droppable-placeholder\">\n \n</div>\n<div>\n<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=\"tc-btn-invisible tc-btn-mini\">×</$button> <$link to={{!!title}}><$view field=\"title\"/></$link>\n</div>\n</$droppable>\n</div>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=<<drop-actions>>>\n<div class=\"tc-droppable-placeholder\">\n \n</div>\n<$button message=\"tm-close-all-tiddlers\" class=\"tc-btn-invisible tc-btn-mini\"><<lingo Button>></$button>\n</$droppable>\n</$tiddler>\n"
},
"$:/core/ui/SideBar/Recent": {
"title": "$:/core/ui/SideBar/Recent",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/Recent/Caption}}",
"text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
},
"$:/core/ui/SideBar/Tools": {
"title": "$:/core/ui/SideBar/Tools",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/Tools/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n\n<<lingo Basics/Version/Prompt>> <<version>>\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n\n<div style=\"position:relative;\">\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</div>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/SideBarLists": {
"title": "$:/core/ui/SideBarLists",
"text": "<div class=\"tc-sidebar-lists\">\n\n<$set name=\"searchTiddler\" value=\"$:/temp/search\">\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/search\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}} focusPopup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-popup-handle\"/>\n<$reveal state=\"$:/temp/search\" type=\"nomatch\" text=\"\">\n<$button tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text={{$:/temp/search}}/>\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n{{$:/core/images/advanced-search-button}}\n</$button>\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\" />\n{{$:/core/images/close-button}}\n</$button>\n<$button popup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n<$list filter=\"[{$:/temp/search}minlength{$:/config/Search/MinLength}limit[1]]\" variable=\"listItem\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[!is[system]search{$(searchTiddler)$}]\"/>\"\"\">\n{{$:/language/Search/Matches}}\n</$set>\n</$list>\n</$button>\n</$reveal>\n<$reveal state=\"$:/temp/search\" type=\"match\" text=\"\">\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/advanced-search-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown-wrapper\" state=\"$:/temp/search\" type=\"nomatch\" text=\"\">\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown tc-search-drop-down tc-popup-handle\" state=<<qualify \"$:/state/popup/search-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n\n<$list filter=\"[{$:/temp/search}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n{{$:/core/ui/SearchResults}}\n\n</$list>\n\n</$reveal>\n\n</$reveal>\n\n</$set>\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\" default={{$:/config/DefaultSidebarTab}} state=\"$:/state/tab/sidebar\" />\n\n</div>\n"
},
"$:/TagManager": {
"title": "$:/TagManager",
"icon": "$:/core/images/tag-button",
"color": "#bbb",
"caption": "{{$:/language/TagManager/Caption}}",
"text": "\\define lingo-base() $:/language/TagManager/\n\\define iconEditorTab(type)\n<$list filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[sort[title]] +[$type$is[system]]\">\n<$link to={{!!title}}>\n<$transclude/> <$view field=\"title\"/>\n</$link>\n</$list>\n\\end\n\\define iconEditor(title)\n<div class=\"tc-drop-down-wrapper\">\n<$button popup=<<qualify \"$:/state/popup/icon/$title$\">> class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/icon/$title$\">> type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$linkcatcher to=\"$title$!!icon\">\n<<iconEditorTab type:\"!\">>\n<hr/>\n<<iconEditorTab type:\"\">>\n</$linkcatcher>\n</div>\n</$reveal>\n</div>\n\\end\n\\define qualifyTitle(title)\n$title$$(currentTiddler)$\n\\end\n\\define toggleButton(state)\n<$reveal state=\"$state$\" type=\"match\" text=\"closed\" default=\"closed\">\n<$button set=\"$state$\" setTo=\"open\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n<$reveal state=\"$state$\" type=\"match\" text=\"open\" default=\"closed\">\n<$button set=\"$state$\" setTo=\"closed\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n\\end\n<table class=\"tc-tag-manager-table\">\n<tbody>\n<tr>\n<th><<lingo Colour/Heading>></th>\n<th class=\"tc-tag-manager-tag\"><<lingo Tag/Heading>></th>\n<th><<lingo Count/Heading>></th>\n<th><<lingo Icon/Heading>></th>\n<th><<lingo Info/Heading>></th>\n</tr>\n<$list filter=\"[tags[]!is[system]sort[title]]\">\n<tr>\n<td><$edit-text field=\"color\" tag=\"input\" type=\"color\"/></td>\n<td><$macrocall $name=\"tag\" tag=<<currentTiddler>>/></td>\n<td><$count filter=\"[all[current]tagging[]]\"/></td>\n<td>\n<$macrocall $name=\"iconEditor\" title={{!!title}}/>\n</td>\n<td>\n<$macrocall $name=\"toggleButton\" state=<<qualifyTitle \"$:/state/tag-manager/\">> /> \n</td>\n</tr>\n<tr>\n<td></td>\n<td colspan=\"4\">\n<$reveal state=<<qualifyTitle \"$:/state/tag-manager/\">> type=\"match\" text=\"open\" default=\"\">\n<table>\n<tbody>\n<tr><td><<lingo Colour/Heading>></td><td><$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/></td></tr>\n<tr><td><<lingo Icon/Heading>></td><td><$edit-text field=\"icon\" tag=\"input\" size=\"45\"/></td></tr>\n</tbody>\n</table>\n</$reveal>\n</td>\n</tr>\n</$list>\n<tr>\n<td></td>\n<td>\n{{$:/core/ui/UntaggedTemplate}}\n</td>\n<td>\n<small class=\"tc-menu-list-count\"><$count filter=\"[untagged[]!is[system]] -[tags[]]\"/></small>\n</td>\n<td></td>\n<td></td>\n</tr>\n</tbody>\n</table>\n"
},
"$:/core/ui/TagTemplate": {
"title": "$:/core/ui/TagTemplate",
"text": "<span class=\"tc-tag-list-item\">\n<$set name=\"transclusion\" value=<<currentTiddler>>>\n<$macrocall $name=\"tag-pill-body\" tag=<<currentTiddler>> icon={{!!icon}} colour={{!!color}} palette={{$:/palette}} element-tag=\"\"\"$button\"\"\" element-attributes=\"\"\"popup=<<qualify \"$:/state/popup/tag\">> dragFilter='[all[current]tagging[]]' tag='span'\"\"\"/>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\" animate=\"yes\" class=\"tc-drop-down\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]\" variable=\"listItem\"> \n<$transclude tiddler=<<listItem>>/> \n</$list>\n<hr>\n<$macrocall $name=\"list-tagged-draggable\" tag=<<currentTiddler>>/>\n</$reveal>\n</$set>\n</span>\n"
},
"$:/core/ui/TiddlerFieldTemplate": {
"title": "$:/core/ui/TiddlerFieldTemplate",
"text": "<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<listItem>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<listItem>>/>\n</td>\n</tr>"
},
"$:/core/ui/TiddlerFields": {
"title": "$:/core/ui/TiddlerFields",
"text": "<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
},
"$:/core/ui/TiddlerInfo/Advanced/PluginInfo": {
"title": "$:/core/ui/TiddlerInfo/Advanced/PluginInfo",
"tags": "$:/tags/TiddlerInfo/Advanced",
"text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<$list filter=\"[all[current]has[plugin-type]]\">\n\n! <<lingo Heading>>\n\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</li>\n</$list>\n</ul>\n\n</$list>\n"
},
"$:/core/ui/TiddlerInfo/Advanced/ShadowInfo": {
"title": "$:/core/ui/TiddlerInfo/Advanced/ShadowInfo",
"tags": "$:/tags/TiddlerInfo/Advanced",
"text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/ShadowInfo/\n<$set name=\"infoTiddler\" value=<<currentTiddler>>>\n\n''<<lingo Heading>>''\n\n<$list filter=\"[all[current]!is[shadow]]\">\n\n<<lingo NotShadow/Hint>>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]]\">\n\n<<lingo Shadow/Hint>>\n\n<$list filter=\"[all[current]shadowsource[]]\">\n\n<$set name=\"pluginTiddler\" value=<<currentTiddler>>>\n<<lingo Shadow/Source>>\n</$set>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\">\n\n<<lingo OverriddenShadow/Hint>>\n\n</$list>\n\n\n</$list>\n</$set>\n"
},
"$:/core/ui/TiddlerInfo/Advanced": {
"title": "$:/core/ui/TiddlerInfo/Advanced",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Advanced/Caption}}",
"text": "<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo/Advanced]!has[draft.of]]\" variable=\"listItem\">\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n"
},
"$:/core/ui/TiddlerInfo/Fields": {
"title": "$:/core/ui/TiddlerInfo/Fields",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Fields/Caption}}",
"text": "<$transclude tiddler=\"$:/core/ui/TiddlerFields\"/>\n"
},
"$:/core/ui/TiddlerInfo/List": {
"title": "$:/core/ui/TiddlerInfo/List",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/List/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[list{!!title}]\" emptyMessage=<<lingo List/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/TiddlerInfo/Listed": {
"title": "$:/core/ui/TiddlerInfo/Listed",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Listed/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]listed[]!is[system]]\" emptyMessage=<<lingo Listed/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/TiddlerInfo/References": {
"title": "$:/core/ui/TiddlerInfo/References",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/References/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]backlinks[]sort[title]]\" emptyMessage=<<lingo References/Empty>> template=\"$:/core/ui/ListItemTemplate\">\n</$list>\n"
},
"$:/core/ui/TiddlerInfo/Tagging": {
"title": "$:/core/ui/TiddlerInfo/Tagging",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Tagging/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]tagging[]]\" emptyMessage=<<lingo Tagging/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
},
"$:/core/ui/TiddlerInfo/Tools": {
"title": "$:/core/ui/TiddlerInfo/Tools",
"tags": "$:/tags/TiddlerInfo",
"caption": "{{$:/language/TiddlerInfo/Tools/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\">\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/TiddlerInfo": {
"title": "$:/core/ui/TiddlerInfo",
"text": "<div style=\"position:relative;\">\n<div class=\"tc-tiddler-controls\" style=\"position:absolute;right:0;\">\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n</div>\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo]!has[draft.of]]\" default={{$:/config/TiddlerInfo/Default}}/>"
},
"$:/core/ui/TopBar/menu": {
"title": "$:/core/ui/TopBar/menu",
"tags": "$:/tags/TopRightBar",
"text": "<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"no\">\n<$button set=\"$:/state/sidebar\" setTo=\"no\" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class=\"tc-btn-invisible\">{{$:/core/images/chevron-right}}</$button>\n</$reveal>\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"no\">\n<$button set=\"$:/state/sidebar\" setTo=\"yes\" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class=\"tc-btn-invisible\">{{$:/core/images/chevron-left}}</$button>\n</$reveal>\n"
},
"$:/core/ui/UntaggedTemplate": {
"title": "$:/core/ui/UntaggedTemplate",
"text": "\\define lingo-base() $:/language/SideBar/\n<$button popup=<<qualify \"$:/state/popup/tag\">> class=\"tc-btn-invisible tc-untagged-label tc-tag-label\">\n<<lingo Tags/Untagged/Caption>>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[untagged[]!is[system]] -[tags[]] +[sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/body": {
"title": "$:/core/ui/ViewTemplate/body",
"tags": "$:/tags/ViewTemplate",
"text": "<$reveal tag=\"div\" class=\"tc-tiddler-body\" type=\"nomatch\" state=<<folded-state>> text=\"hide\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[current]!has[plugin-type]!field:hide-body[yes]]\">\n\n<$transclude>\n\n<$transclude tiddler=\"$:/language/MissingTiddler/Hint\"/>\n\n</$transclude>\n\n</$list>\n\n</$reveal>"
},
"$:/core/ui/ViewTemplate/classic": {
"title": "$:/core/ui/ViewTemplate/classic",
"tags": "$:/tags/ViewTemplate $:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/ClassicWarning/\n<$list filter=\"[all[current]type[text/x-tiddlywiki]]\">\n<div class=\"tc-message-box\">\n\n<<lingo Hint>>\n\n<$button set=\"!!type\" setTo=\"text/vnd.tiddlywiki\"><<lingo Upgrade/Caption>></$button>\n\n</div>\n</$list>\n"
},
"$:/core/ui/ViewTemplate/import": {
"title": "$:/core/ui/ViewTemplate/import",
"tags": "$:/tags/ViewTemplate",
"text": "\\define lingo-base() $:/language/Import/\n\n<$list filter=\"[all[current]field:plugin-type[import]]\">\n\n<div class=\"tc-import\">\n\n<<lingo Listing/Hint>>\n\n<$button message=\"tm-delete-tiddler\" param=<<currentTiddler>>><<lingo Listing/Cancel/Caption>></$button>\n<$button message=\"tm-perform-import\" param=<<currentTiddler>>><<lingo Listing/Import/Caption>></$button>\n\n{{||$:/core/ui/ImportListing}}\n\n<$button message=\"tm-delete-tiddler\" param=<<currentTiddler>>><<lingo Listing/Cancel/Caption>></$button>\n<$button message=\"tm-perform-import\" param=<<currentTiddler>>><<lingo Listing/Import/Caption>></$button>\n\n</div>\n\n</$list>\n"
},
"$:/core/ui/ViewTemplate/plugin": {
"title": "$:/core/ui/ViewTemplate/plugin",
"tags": "$:/tags/ViewTemplate",
"text": "<$list filter=\"[all[current]has[plugin-type]] -[all[current]field:plugin-type[import]]\">\n<$set name=\"plugin-type\" value={{!!plugin-type}}>\n<$set name=\"default-popup-state\" value=\"yes\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n{{||$:/core/ui/Components/plugin-info}}\n</$set>\n</$set>\n</$set>\n</$list>\n"
},
"$:/core/ui/ViewTemplate/subtitle": {
"title": "$:/core/ui/ViewTemplate/subtitle",
"tags": "$:/tags/ViewTemplate",
"text": "<$reveal type=\"nomatch\" state=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-subtitle\">\n<$link to={{!!modifier}}>\n<$view field=\"modifier\"/>\n</$link> <$view field=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/tags": {
"title": "$:/core/ui/ViewTemplate/tags",
"tags": "$:/tags/ViewTemplate",
"text": "<$reveal type=\"nomatch\" state=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-tags-wrapper\"><$list filter=\"[all[current]tags[]sort[title]]\" template=\"$:/core/ui/TagTemplate\" storyview=\"pop\"/></div>\n</$reveal>"
},
"$:/core/ui/ViewTemplate/title": {
"title": "$:/core/ui/ViewTemplate/title",
"tags": "$:/tags/ViewTemplate",
"text": "\\define title-styles()\nfill:$(foregroundColor)$;\n\\end\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<span class=\"tc-tiddler-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$transclude tiddler=<<listItem>>/></$reveal></$list>\n</span>\n<$set name=\"tv-wikilinks\" value={{$:/config/Tiddlers/TitleLinks}}>\n<$link>\n<$set name=\"foregroundColor\" value={{!!color}}>\n<span class=\"tc-tiddler-title-icon\" style=<<title-styles>>>\n<$transclude tiddler={{!!icon}}/>\n</span>\n</$set>\n<$list filter=\"[all[current]removeprefix[$:/]]\">\n<h2 class=\"tc-title\" title={{$:/language/SystemTiddler/Tooltip}}>\n<span class=\"tc-system-title-prefix\">$:/</span><$text text=<<currentTiddler>>/>\n</h2>\n</$list>\n<$list filter=\"[all[current]!prefix[$:/]]\">\n<h2 class=\"tc-title\">\n<$view field=\"title\"/>\n</h2>\n</$list>\n</$link>\n</$set>\n</div>\n\n<$reveal type=\"nomatch\" text=\"\" default=\"\" state=<<tiddlerInfoState>> class=\"tc-tiddler-info tc-popup-handle\" animate=\"yes\" retain=\"yes\">\n\n<$transclude tiddler=\"$:/core/ui/TiddlerInfo\"/>\n\n</$reveal>\n</div>"
},
"$:/core/ui/ViewTemplate/unfold": {
"title": "$:/core/ui/ViewTemplate/unfold",
"tags": "$:/tags/ViewTemplate",
"text": "<$reveal tag=\"div\" type=\"nomatch\" state=\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar\" text=\"hide\">\n<$reveal tag=\"div\" type=\"nomatch\" state=<<folded-state>> text=\"hide\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=\"tc-fold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-up}}\n</$button>\n</$reveal>\n<$reveal tag=\"div\" type=\"nomatch\" state=<<folded-state>> text=\"show\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=\"tc-unfold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate": {
"title": "$:/core/ui/ViewTemplate",
"text": "\\define frame-classes()\ntc-tiddler-frame tc-tiddler-view-frame $(missingTiddlerClass)$ $(shadowTiddlerClass)$ $(systemTiddlerClass)$ $(tiddlerTagClasses)$\n\\end\n\\define folded-state()\n$:/state/folded/$(currentTiddler)$\n\\end\n<$set name=\"storyTiddler\" value=<<currentTiddler>>><$set name=\"tiddlerInfoState\" value=<<qualify \"$:/state/popup/tiddler-info\">>><$tiddler tiddler=<<currentTiddler>>><div class=<<frame-classes>>><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]!has[draft.of]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>>/></$list>\n</div>\n</$tiddler></$set></$set>\n"
},
"$:/core/ui/Buttons/clone": {
"title": "$:/core/ui/Buttons/clone",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/clone-button}} {{$:/language/Buttons/Clone/Caption}}",
"description": "{{$:/language/Buttons/Clone/Hint}}",
"text": "<$button message=\"tm-new-tiddler\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/Clone/Hint}} aria-label={{$:/language/Buttons/Clone/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/clone-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Clone/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/close-others": {
"title": "$:/core/ui/Buttons/close-others",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/close-others-button}} {{$:/language/Buttons/CloseOthers/Caption}}",
"description": "{{$:/language/Buttons/CloseOthers/Hint}}",
"text": "<$button message=\"tm-close-other-tiddlers\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/CloseOthers/Hint}} aria-label={{$:/language/Buttons/CloseOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/close-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/CloseOthers/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/close": {
"title": "$:/core/ui/Buttons/close",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/close-button}} {{$:/language/Buttons/Close/Caption}}",
"description": "{{$:/language/Buttons/Close/Hint}}",
"text": "<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/close-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Close/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/edit": {
"title": "$:/core/ui/Buttons/edit",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/edit-button}} {{$:/language/Buttons/Edit/Caption}}",
"description": "{{$:/language/Buttons/Edit/Hint}}",
"text": "<$button message=\"tm-edit-tiddler\" tooltip={{$:/language/Buttons/Edit/Hint}} aria-label={{$:/language/Buttons/Edit/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/edit-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Edit/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/export-tiddler": {
"title": "$:/core/ui/Buttons/export-tiddler",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportTiddler/Caption}}",
"description": "{{$:/language/Buttons/ExportTiddler/Hint}}",
"text": "\\define makeExportFilter()\n[[$(currentTiddler)$]]\n\\end\n<$macrocall $name=\"exportButton\" exportFilter=<<makeExportFilter>> lingoBase=\"$:/language/Buttons/ExportTiddler/\" baseFilename=<<currentTiddler>>/>"
},
"$:/core/ui/Buttons/fold-bar": {
"title": "$:/core/ui/Buttons/fold-bar",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/chevron-up}} {{$:/language/Buttons/Fold/FoldBar/Caption}}",
"description": "{{$:/language/Buttons/Fold/FoldBar/Hint}}",
"text": "<!-- This dummy toolbar button is here to allow visibility of the fold-bar to be controlled as if it were a toolbar button -->"
},
"$:/core/ui/Buttons/fold-others": {
"title": "$:/core/ui/Buttons/fold-others",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/fold-others-button}} {{$:/language/Buttons/FoldOthers/Caption}}",
"description": "{{$:/language/Buttons/FoldOthers/Hint}}",
"text": "<$button tooltip={{$:/language/Buttons/FoldOthers/Hint}} aria-label={{$:/language/Buttons/FoldOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-other-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FoldOthers/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/fold": {
"title": "$:/core/ui/Buttons/fold",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/fold-button}} {{$:/language/Buttons/Fold/Caption}}",
"description": "{{$:/language/Buttons/Fold/Hint}}",
"text": "<$reveal type=\"nomatch\" state=<<folded-state>> text=\"hide\" default=\"show\"><$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Fold/Caption}}/>\n</span>\n</$list>\n</$button></$reveal><$reveal type=\"match\" state=<<folded-state>> text=\"hide\" default=\"show\"><$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Unfold/Caption}}/>\n</span>\n</$list>\n</$button></$reveal>"
},
"$:/core/ui/Buttons/info": {
"title": "$:/core/ui/Buttons/info",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/info-button}} {{$:/language/Buttons/Info/Caption}}",
"description": "{{$:/language/Buttons/Info/Hint}}",
"text": "\\define button-content()\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/info-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Info/Caption}}/></span>\n</$list>\n\\end\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"popup\">\n<$button popup=<<tiddlerInfoState>> tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$reveal state=<<tiddlerInfoState>> type=\"match\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"yes\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=<<tiddlerInfoState>> type=\"nomatch\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n</$reveal>"
},
"$:/core/ui/Buttons/more-tiddler-actions": {
"title": "$:/core/ui/Buttons/more-tiddler-actions",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}",
"description": "{{$:/language/Buttons/More/Hint}}",
"text": "\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/More/Caption}}/></span>\n</$list>\n</$button><$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"below\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]] -[[$:/core/ui/Buttons/more-tiddler-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"
},
"$:/core/ui/Buttons/new-here": {
"title": "$:/core/ui/Buttons/new-here",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/new-here-button}} {{$:/language/Buttons/NewHere/Caption}}",
"description": "{{$:/language/Buttons/NewHere/Hint}}",
"text": "\\define newHereButtonTags()\n[[$(currentTiddler)$]]\n\\end\n\\define newHereButton()\n<$button tooltip={{$:/language/Buttons/NewHere/Hint}} aria-label={{$:/language/Buttons/NewHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-new-tiddler\" tags=<<newHereButtonTags>>/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/new-here-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewHere/Caption}}/></span>\n</$list>\n</$button>\n\\end\n<<newHereButton>>"
},
"$:/core/ui/Buttons/new-journal-here": {
"title": "$:/core/ui/Buttons/new-journal-here",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournalHere/Caption}}",
"description": "{{$:/language/Buttons/NewJournalHere/Hint}}",
"text": "\\define journalButtonTags()\n[[$(currentTiddlerTag)$]] $(journalTags)$\n\\end\n\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournalHere/Hint}} aria-label={{$:/language/Buttons/NewJournalHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<now \"$(journalTitleTemplate)$\">> tags=<<journalButtonTags>>/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewJournalHere/Caption}}/></span>\n</$list>\n</$button>\n\\end\n<$set name=\"journalTitleTemplate\" value={{$:/config/NewJournal/Title}}>\n<$set name=\"journalTags\" value={{$:/config/NewJournal/Tags}}>\n<$set name=\"currentTiddlerTag\" value=<<currentTiddler>>>\n<<journalButton>>\n</$set></$set></$set>"
},
"$:/core/ui/Buttons/open-window": {
"title": "$:/core/ui/Buttons/open-window",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/open-window}} {{$:/language/Buttons/OpenWindow/Caption}}",
"description": "{{$:/language/Buttons/OpenWindow/Hint}}",
"text": "<$button message=\"tm-open-window\" tooltip={{$:/language/Buttons/OpenWindow/Hint}} aria-label={{$:/language/Buttons/OpenWindow/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/open-window}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/OpenWindow/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/permalink": {
"title": "$:/core/ui/Buttons/permalink",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/permalink-button}} {{$:/language/Buttons/Permalink/Caption}}",
"description": "{{$:/language/Buttons/Permalink/Hint}}",
"text": "<$button message=\"tm-permalink\" tooltip={{$:/language/Buttons/Permalink/Hint}} aria-label={{$:/language/Buttons/Permalink/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/permalink-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Permalink/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/permaview": {
"title": "$:/core/ui/Buttons/permaview",
"tags": "$:/tags/ViewToolbar $:/tags/PageControls",
"caption": "{{$:/core/images/permaview-button}} {{$:/language/Buttons/Permaview/Caption}}",
"description": "{{$:/language/Buttons/Permaview/Hint}}",
"text": "<$button message=\"tm-permaview\" tooltip={{$:/language/Buttons/Permaview/Hint}} aria-label={{$:/language/Buttons/Permaview/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/permaview-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Permaview/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/DefaultTiddlers": {
"title": "$:/DefaultTiddlers",
"text": "GettingStarted\n"
},
"$:/temp/advancedsearch": {
"title": "$:/temp/advancedsearch",
"text": ""
},
"$:/snippets/allfields": {
"title": "$:/snippets/allfields",
"text": "\\define renderfield(title)\n<tr class=\"tc-view-field\"><td class=\"tc-view-field-name\">''$title$'':</td><td class=\"tc-view-field-value\">//{{$:/language/Docs/Fields/$title$}}//</td></tr>\n\\end\n<table class=\"tc-view-field-table\"><tbody><$list filter=\"[fields[]sort[title]]\" variable=\"listItem\"><$macrocall $name=\"renderfield\" title=<<listItem>>/></$list>\n</tbody></table>\n"
},
"$:/config/AnimationDuration": {
"title": "$:/config/AnimationDuration",
"text": "400"
},
"$:/config/AutoSave": {
"title": "$:/config/AutoSave",
"text": "yes"
},
"$:/config/BitmapEditor/Colour": {
"title": "$:/config/BitmapEditor/Colour",
"text": "#444"
},
"$:/config/BitmapEditor/ImageSizes": {
"title": "$:/config/BitmapEditor/ImageSizes",
"text": "[[62px 100px]] [[100px 62px]] [[124px 200px]] [[200px 124px]] [[248px 400px]] [[371px 600px]] [[400px 248px]] [[556px 900px]] [[600px 371px]] [[742px 1200px]] [[900px 556px]] [[1200px 742px]]"
},
"$:/config/BitmapEditor/LineWidth": {
"title": "$:/config/BitmapEditor/LineWidth",
"text": "3px"
},
"$:/config/BitmapEditor/LineWidths": {
"title": "$:/config/BitmapEditor/LineWidths",
"text": "0.25px 0.5px 1px 2px 3px 4px 6px 8px 10px 16px 20px 28px 40px 56px 80px"
},
"$:/config/BitmapEditor/Opacities": {
"title": "$:/config/BitmapEditor/Opacities",
"text": "0.01 0.025 0.05 0.075 0.1 0.15 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0"
},
"$:/config/BitmapEditor/Opacity": {
"title": "$:/config/BitmapEditor/Opacity",
"text": "1.0"
},
"$:/config/DefaultSidebarTab": {
"title": "$:/config/DefaultSidebarTab",
"text": "$:/core/ui/SideBar/Open"
},
"$:/config/DownloadSaver/AutoSave": {
"title": "$:/config/DownloadSaver/AutoSave",
"text": "no"
},
"$:/config/Drafts/TypingTimeout": {
"title": "$:/config/Drafts/TypingTimeout",
"text": "400"
},
"$:/config/EditTemplateFields/Visibility/title": {
"title": "$:/config/EditTemplateFields/Visibility/title",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/tags": {
"title": "$:/config/EditTemplateFields/Visibility/tags",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/text": {
"title": "$:/config/EditTemplateFields/Visibility/text",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/creator": {
"title": "$:/config/EditTemplateFields/Visibility/creator",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/created": {
"title": "$:/config/EditTemplateFields/Visibility/created",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/modified": {
"title": "$:/config/EditTemplateFields/Visibility/modified",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/modifier": {
"title": "$:/config/EditTemplateFields/Visibility/modifier",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/type": {
"title": "$:/config/EditTemplateFields/Visibility/type",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/draft.title": {
"title": "$:/config/EditTemplateFields/Visibility/draft.title",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/draft.of": {
"title": "$:/config/EditTemplateFields/Visibility/draft.of",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/revision": {
"title": "$:/config/EditTemplateFields/Visibility/revision",
"text": "hide"
},
"$:/config/EditTemplateFields/Visibility/bag": {
"title": "$:/config/EditTemplateFields/Visibility/bag",
"text": "hide"
},
"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4": {
"title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4",
"text": "hide"
},
"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5": {
"title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5",
"text": "hide"
},
"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6": {
"title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6",
"text": "hide"
},
"$:/config/EditorTypeMappings/image/gif": {
"title": "$:/config/EditorTypeMappings/image/gif",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/jpeg": {
"title": "$:/config/EditorTypeMappings/image/jpeg",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/jpg": {
"title": "$:/config/EditorTypeMappings/image/jpg",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/png": {
"title": "$:/config/EditorTypeMappings/image/png",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/x-icon": {
"title": "$:/config/EditorTypeMappings/image/x-icon",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/text/vnd.tiddlywiki": {
"title": "$:/config/EditorTypeMappings/text/vnd.tiddlywiki",
"text": "text"
},
"$:/config/Manager/Show": {
"title": "$:/config/Manager/Show",
"text": "tiddlers"
},
"$:/config/Manager/Filter": {
"title": "$:/config/Manager/Filter",
"text": ""
},
"$:/config/Manager/Order": {
"title": "$:/config/Manager/Order",
"text": "forward"
},
"$:/config/Manager/Sort": {
"title": "$:/config/Manager/Sort",
"text": "title"
},
"$:/config/Manager/System": {
"title": "$:/config/Manager/System",
"text": "system"
},
"$:/config/Manager/Tag": {
"title": "$:/config/Manager/Tag",
"text": ""
},
"$:/state/popup/manager/item/$:/Manager/ItemMain/RawText": {
"title": "$:/state/popup/manager/item/$:/Manager/ItemMain/RawText",
"text": "hide"
},
"$:/config/MissingLinks": {
"title": "$:/config/MissingLinks",
"text": "yes"
},
"$:/config/Navigation/UpdateAddressBar": {
"title": "$:/config/Navigation/UpdateAddressBar",
"text": "no"
},
"$:/config/Navigation/UpdateHistory": {
"title": "$:/config/Navigation/UpdateHistory",
"text": "no"
},
"$:/config/OfficialPluginLibrary": {
"title": "$:/config/OfficialPluginLibrary",
"tags": "$:/tags/PluginLibrary",
"url": "http://tiddlywiki.com/library/v5.1.14/index.html",
"caption": "{{$:/language/OfficialPluginLibrary}}",
"text": "{{$:/language/OfficialPluginLibrary/Hint}}\n"
},
"$:/config/Navigation/openLinkFromInsideRiver": {
"title": "$:/config/Navigation/openLinkFromInsideRiver",
"text": "below"
},
"$:/config/Navigation/openLinkFromOutsideRiver": {
"title": "$:/config/Navigation/openLinkFromOutsideRiver",
"text": "top"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all",
"text": "hide"
},
"$:/config/Performance/Instrumentation": {
"title": "$:/config/Performance/Instrumentation",
"text": "no"
},
"$:/config/SaveWikiButton/Template": {
"title": "$:/config/SaveWikiButton/Template",
"text": "$:/core/save/all"
},
"$:/config/SaverFilter": {
"title": "$:/config/SaverFilter",
"text": "[all[]] -[[$:/HistoryList]] -[[$:/StoryList]] -[[$:/Import]] -[[$:/isEncrypted]] -[[$:/UploadName]] -[prefix[$:/state/]] -[prefix[$:/temp/]]"
},
"$:/config/Search/AutoFocus": {
"title": "$:/config/Search/AutoFocus",
"text": "true"
},
"$:/config/Search/MinLength": {
"title": "$:/config/Search/MinLength",
"text": "3"
},
"$:/config/SearchResults/Default": {
"title": "$:/config/SearchResults/Default",
"text": "$:/core/ui/DefaultSearchResultList"
},
"$:/config/ShortcutInfo/bold": {
"title": "$:/config/ShortcutInfo/bold",
"text": "{{$:/language/Buttons/Bold/Hint}}"
},
"$:/config/ShortcutInfo/cancel-edit-tiddler": {
"title": "$:/config/ShortcutInfo/cancel-edit-tiddler",
"text": "{{$:/language/Buttons/Cancel/Hint}}"
},
"$:/config/ShortcutInfo/excise": {
"title": "$:/config/ShortcutInfo/excise",
"text": "{{$:/language/Buttons/Excise/Hint}}"
},
"$:/config/ShortcutInfo/heading-1": {
"title": "$:/config/ShortcutInfo/heading-1",
"text": "{{$:/language/Buttons/Heading1/Hint}}"
},
"$:/config/ShortcutInfo/heading-2": {
"title": "$:/config/ShortcutInfo/heading-2",
"text": "{{$:/language/Buttons/Heading2/Hint}}"
},
"$:/config/ShortcutInfo/heading-3": {
"title": "$:/config/ShortcutInfo/heading-3",
"text": "{{$:/language/Buttons/Heading3/Hint}}"
},
"$:/config/ShortcutInfo/heading-4": {
"title": "$:/config/ShortcutInfo/heading-4",
"text": "{{$:/language/Buttons/Heading4/Hint}}"
},
"$:/config/ShortcutInfo/heading-5": {
"title": "$:/config/ShortcutInfo/heading-5",
"text": "{{$:/language/Buttons/Heading5/Hint}}"
},
"$:/config/ShortcutInfo/heading-6": {
"title": "$:/config/ShortcutInfo/heading-6",
"text": "{{$:/language/Buttons/Heading6/Hint}}"
},
"$:/config/ShortcutInfo/italic": {
"title": "$:/config/ShortcutInfo/italic",
"text": "{{$:/language/Buttons/Italic/Hint}}"
},
"$:/config/ShortcutInfo/link": {
"title": "$:/config/ShortcutInfo/link",
"text": "{{$:/language/Buttons/Link/Hint}}"
},
"$:/config/ShortcutInfo/list-bullet": {
"title": "$:/config/ShortcutInfo/list-bullet",
"text": "{{$:/language/Buttons/ListBullet/Hint}}"
},
"$:/config/ShortcutInfo/list-number": {
"title": "$:/config/ShortcutInfo/list-number",
"text": "{{$:/language/Buttons/ListNumber/Hint}}"
},
"$:/config/ShortcutInfo/mono-block": {
"title": "$:/config/ShortcutInfo/mono-block",
"text": "{{$:/language/Buttons/MonoBlock/Hint}}"
},
"$:/config/ShortcutInfo/mono-line": {
"title": "$:/config/ShortcutInfo/mono-line",
"text": "{{$:/language/Buttons/MonoLine/Hint}}"
},
"$:/config/ShortcutInfo/picture": {
"title": "$:/config/ShortcutInfo/picture",
"text": "{{$:/language/Buttons/Picture/Hint}}"
},
"$:/config/ShortcutInfo/preview": {
"title": "$:/config/ShortcutInfo/preview",
"text": "{{$:/language/Buttons/Preview/Hint}}"
},
"$:/config/ShortcutInfo/quote": {
"title": "$:/config/ShortcutInfo/quote",
"text": "{{$:/language/Buttons/Quote/Hint}}"
},
"$:/config/ShortcutInfo/save-tiddler": {
"title": "$:/config/ShortcutInfo/save-tiddler",
"text": "{{$:/language/Buttons/Save/Hint}}"
},
"$:/config/ShortcutInfo/stamp": {
"title": "$:/config/ShortcutInfo/stamp",
"text": "{{$:/language/Buttons/Stamp/Hint}}"
},
"$:/config/ShortcutInfo/strikethrough": {
"title": "$:/config/ShortcutInfo/strikethrough",
"text": "{{$:/language/Buttons/Strikethrough/Hint}}"
},
"$:/config/ShortcutInfo/subscript": {
"title": "$:/config/ShortcutInfo/subscript",
"text": "{{$:/language/Buttons/Subscript/Hint}}"
},
"$:/config/ShortcutInfo/superscript": {
"title": "$:/config/ShortcutInfo/superscript",
"text": "{{$:/language/Buttons/Superscript/Hint}}"
},
"$:/config/ShortcutInfo/underline": {
"title": "$:/config/ShortcutInfo/underline",
"text": "{{$:/language/Buttons/Underline/Hint}}"
},
"$:/config/SyncFilter": {
"title": "$:/config/SyncFilter",
"text": "[is[tiddler]] -[[$:/HistoryList]] -[[$:/Import]] -[[$:/isEncrypted]] -[prefix[$:/status/]] -[prefix[$:/state/]] -[prefix[$:/temp/]]"
},
"$:/config/TextEditor/EditorHeight/Height": {
"title": "$:/config/TextEditor/EditorHeight/Height",
"text": "400px"
},
"$:/config/TextEditor/EditorHeight/Mode": {
"title": "$:/config/TextEditor/EditorHeight/Mode",
"text": "auto"
},
"$:/config/TiddlerInfo/Default": {
"title": "$:/config/TiddlerInfo/Default",
"text": "$:/core/ui/TiddlerInfo/Fields"
},
"$:/config/TiddlerInfo/Mode": {
"title": "$:/config/TiddlerInfo/Mode",
"text": "popup"
},
"$:/config/Tiddlers/TitleLinks": {
"title": "$:/config/Tiddlers/TitleLinks",
"text": "no"
},
"$:/config/Toolbar/ButtonClass": {
"title": "$:/config/Toolbar/ButtonClass",
"text": "tc-btn-invisible"
},
"$:/config/Toolbar/Icons": {
"title": "$:/config/Toolbar/Icons",
"text": "yes"
},
"$:/config/Toolbar/Text": {
"title": "$:/config/Toolbar/Text",
"text": "no"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions",
"text": "show"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others",
"text": "hide"
},
"$:/config/shortcuts-mac/bold": {
"title": "$:/config/shortcuts-mac/bold",
"text": "meta-B"
},
"$:/config/shortcuts-mac/italic": {
"title": "$:/config/shortcuts-mac/italic",
"text": "meta-I"
},
"$:/config/shortcuts-mac/underline": {
"title": "$:/config/shortcuts-mac/underline",
"text": "meta-U"
},
"$:/config/shortcuts-not-mac/bold": {
"title": "$:/config/shortcuts-not-mac/bold",
"text": "ctrl-B"
},
"$:/config/shortcuts-not-mac/italic": {
"title": "$:/config/shortcuts-not-mac/italic",
"text": "ctrl-I"
},
"$:/config/shortcuts-not-mac/underline": {
"title": "$:/config/shortcuts-not-mac/underline",
"text": "ctrl-U"
},
"$:/config/shortcuts/cancel-edit-tiddler": {
"title": "$:/config/shortcuts/cancel-edit-tiddler",
"text": "escape"
},
"$:/config/shortcuts/excise": {
"title": "$:/config/shortcuts/excise",
"text": "ctrl-E"
},
"$:/config/shortcuts/heading-1": {
"title": "$:/config/shortcuts/heading-1",
"text": "ctrl-1"
},
"$:/config/shortcuts/heading-2": {
"title": "$:/config/shortcuts/heading-2",
"text": "ctrl-2"
},
"$:/config/shortcuts/heading-3": {
"title": "$:/config/shortcuts/heading-3",
"text": "ctrl-3"
},
"$:/config/shortcuts/heading-4": {
"title": "$:/config/shortcuts/heading-4",
"text": "ctrl-4"
},
"$:/config/shortcuts/heading-5": {
"title": "$:/config/shortcuts/heading-5",
"text": "ctrl-5"
},
"$:/config/shortcuts/heading-6": {
"title": "$:/config/shortcuts/heading-6",
"text": "ctrl-6"
},
"$:/config/shortcuts/link": {
"title": "$:/config/shortcuts/link",
"text": "ctrl-L"
},
"$:/config/shortcuts/list-bullet": {
"title": "$:/config/shortcuts/list-bullet",
"text": "ctrl-shift-L"
},
"$:/config/shortcuts/list-number": {
"title": "$:/config/shortcuts/list-number",
"text": "ctrl-shift-N"
},
"$:/config/shortcuts/mono-block": {
"title": "$:/config/shortcuts/mono-block",
"text": "ctrl-shift-M"
},
"$:/config/shortcuts/mono-line": {
"title": "$:/config/shortcuts/mono-line",
"text": "ctrl-M"
},
"$:/config/shortcuts/picture": {
"title": "$:/config/shortcuts/picture",
"text": "ctrl-shift-I"
},
"$:/config/shortcuts/preview": {
"title": "$:/config/shortcuts/preview",
"text": "alt-P"
},
"$:/config/shortcuts/quote": {
"title": "$:/config/shortcuts/quote",
"text": "ctrl-Q"
},
"$:/config/shortcuts/save-tiddler": {
"title": "$:/config/shortcuts/save-tiddler",
"text": "ctrl+enter"
},
"$:/config/shortcuts/stamp": {
"title": "$:/config/shortcuts/stamp",
"text": "ctrl-S"
},
"$:/config/shortcuts/strikethrough": {
"title": "$:/config/shortcuts/strikethrough",
"text": "ctrl-T"
},
"$:/config/shortcuts/subscript": {
"title": "$:/config/shortcuts/subscript",
"text": "ctrl-shift-B"
},
"$:/config/shortcuts/superscript": {
"title": "$:/config/shortcuts/superscript",
"text": "ctrl-shift-P"
},
"$:/config/WikiParserRules/Inline/wikilink": {
"title": "$:/config/WikiParserRules/Inline/wikilink",
"text": "enable"
},
"$:/snippets/currpalettepreview": {
"title": "$:/snippets/currpalettepreview",
"text": "\\define swatchStyle()\nbackground-color: $(swatchColour)$;\n\\end\n\\define swatch(colour)\n<$set name=\"swatchColour\" value={{##$colour$}}>\n<div class=\"tc-swatch\" style=<<swatchStyle>>/>\n</$set>\n\\end\n<div class=\"tc-swatches-horiz\">\n<<swatch foreground>>\n<<swatch background>>\n<<swatch muted-foreground>>\n<<swatch primary>>\n<<swatch page-background>>\n<<swatch tab-background>>\n<<swatch tiddler-info-background>>\n</div>\n"
},
"$:/snippets/download-wiki-button": {
"title": "$:/snippets/download-wiki-button",
"text": "\\define lingo-base() $:/language/ControlPanel/Tools/Download/\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-download-file\" $param=\"$:/core/save/all\" filename=\"index.html\"/>\n<<lingo Full/Caption>> {{$:/core/images/save-button}}\n</$button>"
},
"$:/language": {
"title": "$:/language",
"text": "$:/languages/en-GB"
},
"$:/snippets/languageswitcher": {
"title": "$:/snippets/languageswitcher",
"text": "{{$:/language/ControlPanel/Basics/Language/Prompt}} <$select tiddler=\"$:/language\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[description]]\">\n<option value=<<currentTiddler>>><$view field=\"description\"><$view field=\"name\"><$view field=\"title\"/></$view></$view></option>\n</$list>\n</$select>"
},
"$:/core/macros/CSS": {
"title": "$:/core/macros/CSS",
"tags": "$:/tags/Macro",
"text": "\\define colour(name)\n<$transclude tiddler={{$:/palette}} index=\"$name$\"><$transclude tiddler=\"$:/palettes/Vanilla\" index=\"$name$\"/></$transclude>\n\\end\n\n\\define color(name)\n<<colour $name$>>\n\\end\n\n\\define box-shadow(shadow)\n``\n -webkit-box-shadow: $shadow$;\n -moz-box-shadow: $shadow$;\n box-shadow: $shadow$;\n``\n\\end\n\n\\define filter(filter)\n``\n -webkit-filter: $filter$;\n -moz-filter: $filter$;\n filter: $filter$;\n``\n\\end\n\n\\define transition(transition)\n``\n -webkit-transition: $transition$;\n -moz-transition: $transition$;\n transition: $transition$;\n``\n\\end\n\n\\define transform-origin(origin)\n``\n -webkit-transform-origin: $origin$;\n -moz-transform-origin: $origin$;\n transform-origin: $origin$;\n``\n\\end\n\n\\define background-linear-gradient(gradient)\n``\nbackground-image: linear-gradient($gradient$);\nbackground-image: -o-linear-gradient($gradient$);\nbackground-image: -moz-linear-gradient($gradient$);\nbackground-image: -webkit-linear-gradient($gradient$);\nbackground-image: -ms-linear-gradient($gradient$);\n``\n\\end\n\n\\define column-count(columns)\n``\n-moz-column-count: $columns$;\n-webkit-column-count: $columns$;\ncolumn-count: $columns$;\n``\n\\end\n\n\\define datauri(title)\n<$macrocall $name=\"makedatauri\" type={{$title$!!type}} text={{$title$}}/>\n\\end\n\n\\define if-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n\n\\define if-no-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n"
},
"$:/core/macros/colour-picker": {
"title": "$:/core/macros/colour-picker",
"tags": "$:/tags/Macro",
"text": "\\define colour-picker-update-recent()\n<$action-listops\n\t$tiddler=\"$:/config/ColourPicker/Recent\"\n\t$subfilter=\"$(colour-picker-value)$ [list[$:/config/ColourPicker/Recent]remove[$(colour-picker-value)$]] +[limit[8]]\"\n/>\n\\end\n\n\\define colour-picker-inner(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(colour-picker-value)$\"\"\">\n\n$(colour-picker-update-recent)$\n\n$actions$\n\n<div style=\"background-color: $(colour-picker-value)$; width: 100%; height: 100%; border-radius: 50%;\"/>\n\n</$button>\n\\end\n\n\\define colour-picker-recent-inner(actions)\n<$set name=\"colour-picker-value\" value=\"$(recentColour)$\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\\end\n\n\\define colour-picker-recent(actions)\n{{$:/language/ColourPicker/Recent}} <$list filter=\"[list[$:/config/ColourPicker/Recent]]\" variable=\"recentColour\">\n<$macrocall $name=\"colour-picker-recent-inner\" actions=\"\"\"$actions$\"\"\"/></$list>\n\\end\n\n\\define colour-picker(actions)\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker-recent\" actions=\"\"\"$actions$\"\"\"/>\n\n---\n\n<$list filter=\"LightPink Pink Crimson LavenderBlush PaleVioletRed HotPink DeepPink MediumVioletRed Orchid Thistle Plum Violet Magenta Fuchsia DarkMagenta Purple MediumOrchid DarkViolet DarkOrchid Indigo BlueViolet MediumPurple MediumSlateBlue SlateBlue DarkSlateBlue Lavender GhostWhite Blue MediumBlue MidnightBlue DarkBlue Navy RoyalBlue CornflowerBlue LightSteelBlue LightSlateGrey SlateGrey DodgerBlue AliceBlue SteelBlue LightSkyBlue SkyBlue DeepSkyBlue LightBlue PowderBlue CadetBlue Azure LightCyan PaleTurquoise Cyan Aqua DarkTurquoise DarkSlateGrey DarkCyan Teal MediumTurquoise LightSeaGreen Turquoise Aquamarine MediumAquamarine MediumSpringGreen MintCream SpringGreen MediumSeaGreen SeaGreen Honeydew LightGreen PaleGreen DarkSeaGreen LimeGreen Lime ForestGreen Green DarkGreen Chartreuse LawnGreen GreenYellow DarkOliveGreen YellowGreen OliveDrab Beige LightGoldenrodYellow Ivory LightYellow Yellow Olive DarkKhaki LemonChiffon PaleGoldenrod Khaki Gold Cornsilk Goldenrod DarkGoldenrod FloralWhite OldLace Wheat Moccasin Orange PapayaWhip BlanchedAlmond NavajoWhite AntiqueWhite Tan BurlyWood Bisque DarkOrange Linen Peru PeachPuff SandyBrown Chocolate SaddleBrown Seashell Sienna LightSalmon Coral OrangeRed DarkSalmon Tomato MistyRose Salmon Snow LightCoral RosyBrown IndianRed Red Brown FireBrick DarkRed Maroon White WhiteSmoke Gainsboro LightGrey Silver DarkGrey Grey DimGrey Black\" variable=\"colour-picker-value\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\n---\n\n<$edit-text tiddler=\"$:/config/ColourPicker/New\" tag=\"input\" default=\"\" placeholder=\"\"/> \n<$edit-text tiddler=\"$:/config/ColourPicker/New\" type=\"color\" tag=\"input\"/>\n<$set name=\"colour-picker-value\" value={{$:/config/ColourPicker/New}}>\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\n</div>\n\n\\end\n"
},
"$:/core/macros/export": {
"title": "$:/core/macros/export",
"tags": "$:/tags/Macro",
"text": "\\define exportButtonFilename(baseFilename)\n$baseFilename$$(extension)$\n\\end\n\n\\define exportButton(exportFilter:\"[!is[system]sort[title]]\",lingoBase,baseFilename:\"tiddlers\")\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/export\">> tooltip={{$lingoBase$Hint}} aria-label={{$lingoBase$Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/export-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$lingoBase$Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/export\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Exporter]]\">\n<$set name=\"extension\" value={{!!extension}}>\n<$button class=\"tc-btn-invisible\">\n<$action-sendmessage $message=\"tm-download-file\" $param=<<currentTiddler>> exportFilter=\"\"\"$exportFilter$\"\"\" filename=<<exportButtonFilename \"\"\"$baseFilename$\"\"\">>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/export\">>/>\n<$transclude field=\"description\"/>\n</$button>\n</$set>\n</$list>\n</div>\n</$reveal>\n\\end\n"
},
"$:/core/macros/image-picker": {
"title": "$:/core/macros/image-picker",
"tags": "$:/tags/Macro",
"text": "\\define image-picker-thumbnail(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(imageTitle)$\"\"\">\n$actions$\n<$transclude tiddler=<<imageTitle>>/>\n</$button>\n\\end\n\n\\define image-picker-list(filter,actions)\n<$list filter=\"\"\"$filter$\"\"\" variable=\"imageTitle\">\n<$macrocall $name=\"image-picker-thumbnail\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\\end\n\n\\define image-picker(actions,filter:\"[all[shadows+tiddlers]is[image]] -[type[application/pdf]] +[!has[draft.of]sort[title]]\")\n<div class=\"tc-image-chooser\">\n<$vars state-system=<<qualify \"$:/state/image-picker/system\">>>\n<$checkbox tiddler=<<state-system>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"hide\">\n{{$:/language/SystemTiddlers/Include/Prompt}}\n</$checkbox>\n<$reveal state=<<state-system>> type=\"match\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$ +[!is[system]]\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n<$reveal state=<<state-system>> type=\"nomatch\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n</$vars>\n</div>\n\\end\n\n\\define image-picker-include-tagged-images(actions)\n<$macrocall $name=\"image-picker\" filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[!has[draft.of]sort[title]]\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n"
},
"$:/core/macros/lingo": {
"title": "$:/core/macros/lingo",
"tags": "$:/tags/Macro",
"text": "\\define lingo-base()\n$:/language/\n\\end\n\n\\define lingo(title)\n{{$(lingo-base)$$title$}}\n\\end\n"
},
"$:/core/macros/list": {
"title": "$:/core/macros/list",
"tags": "$:/tags/Macro",
"text": "\\define list-links(filter,type:\"ul\",subtype:\"li\",class:\"\")\n<$type$ class=\"$class$\">\n<$list filter=\"$filter$\">\n<$subtype$>\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$subtype$>\n</$list>\n</$type$>\n\\end\n\n\\define list-links-draggable-drop-actions()\n<$action-listops $tiddler=<<targetTiddler>> $field=<<targetField>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define list-links-draggable(tiddler,field:\"list\",type:\"ul\",subtype:\"li\",class:\"\",itemTemplate)\n<$vars targetTiddler=\"\"\"$tiddler$\"\"\" targetField=\"\"\"$field$\"\"\">\n<$type$ class=\"$class$\">\n<$list filter=\"[list[$tiddler$!!$field$]]\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"\"\"$subtype$\"\"\">\n<div class=\"tc-droppable-placeholder\">\n \n</div>\n<div>\n<$link to={{!!title}}>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$transclude>\n</$link>\n</div>\n</$droppable>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"\"\"$subtype$\"\"\">\n<div class=\"tc-droppable-placeholder\">\n \n</div>\n<div>\n \n</div>\n</$droppable>\n</$tiddler>\n</$type$>\n</$vars>\n\\end\n\n\\define list-tagged-draggable-drop-actions()\n<!-- Save the current ordering of the tiddlers with this tag -->\n<$set name=\"order\" filter=\"[<tag>tagging[]]\">\n<!-- Remove any list-after or list-before fields from the tiddlers with this tag -->\n<$list filter=\"[<tag>tagging[]]\">\n<$action-deletefield $field=\"list-before\"/>\n<$action-deletefield $field=\"list-after\"/>\n</$list>\n<!-- Assign the list field of the tag with the current ordering -->\n<$action-setfield $tiddler=<<tag>> $field=\"list\" $value=<<order>>/>\n<!-- Add the newly inserted item to the list -->\n<$action-listops $tiddler=<<tag>> $field=\"list\" $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n<!-- Make sure the newly added item has the right tag -->\n<$action-listops $tiddler=<<actionTiddler>> $tags=\"[<tag>]\"/>\n</$set>\n\\end\n\n\\define list-tagged-draggable(tag,itemTemplate,elementTag:\"div\")\n<$set name=\"tag\" value=\"\"\"$tag$\"\"\">\n<$list filter=\"[<tag>tagging[]]\">\n<$elementTag$ class=\"tc-menu-list-item\">\n<$droppable actions=<<list-tagged-draggable-drop-actions>>>\n<$elementTag$ class=\"tc-droppable-placeholder\">\n \n</$elementTag$>\n<$elementTag$>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</$transclude>\n</$elementTag$>\n</$droppable>\n</$elementTag$>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=<<list-tagged-draggable-drop-actions>>>\n<$elementTag$ class=\"tc-droppable-placeholder\">\n \n</$elementTag$>\n<$elementTag$ style=\"height:0.5em;\">\n</$elementTag$>\n</$droppable>\n</$tiddler>\n</$set>\n\\end\n"
},
"$:/core/macros/tabs": {
"title": "$:/core/macros/tabs",
"tags": "$:/tags/Macro",
"text": "\\define tabs(tabsList,default,state:\"$:/state/tab\",class,template)\n<div class=\"tc-tab-set $class$\">\n<div class=\"tc-tab-buttons $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\"><$set name=\"save-currentTiddler\" value=<<currentTiddler>>><$tiddler tiddler=<<currentTab>>><$button set=<<qualify \"$state$\">> setTo=<<currentTab>> default=\"$default$\" selectedClass=\"tc-tab-selected\" tooltip={{!!tooltip}}>\n<$tiddler tiddler=<<save-currentTiddler>>>\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude tiddler=<<currentTab>> field=\"caption\">\n<$macrocall $name=\"currentTab\" $type=\"text/plain\" $output=\"text/plain\"/>\n</$transclude>\n</$set></$tiddler></$button></$tiddler></$set></$list>\n</div>\n<div class=\"tc-tab-divider $class$\"/>\n<div class=\"tc-tab-content $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\">\n\n<$reveal type=\"match\" state=<<qualify \"$state$\">> text=<<currentTab>> default=\"$default$\">\n\n<$transclude tiddler=\"$template$\" mode=\"block\">\n\n<$transclude tiddler=<<currentTab>> mode=\"block\"/>\n\n</$transclude>\n\n</$reveal>\n\n</$list>\n</div>\n</div>\n\\end\n"
},
"$:/core/macros/tag-picker": {
"title": "$:/core/macros/tag-picker",
"tags": "$:/tags/Macro",
"text": "\\define add-tag-actions()\n<$action-sendmessage $message=\"tm-add-tag\" $param={{$:/temp/NewTagName}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/NewTagName\"/>\n\\end\n\n\\define tag-button()\n<$button class=\"tc-btn-invisible\" tag=\"a\">\n$(actions)$\n<$action-deletetiddler $tiddler=\"$:/temp/NewTagName\"/>\n<$macrocall $name=\"tag-pill\" tag=<<tag>>/>\n</$button>\n\\end\n\n\\define tag-picker(actions)\n<$set name=\"actions\" value=\"\"\"$actions$\"\"\">\n<div class=\"tc-edit-add-tag\">\n<span class=\"tc-add-tag-name\">\n<$keyboard key=\"ENTER\" actions=<<add-tag-actions>>>\n<$edit-text tiddler=\"$:/temp/NewTagName\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}} focusPopup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-edit-texteditor tc-popup-handle\"/>\n</$keyboard>\n</span> <$button popup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> <span class=\"tc-add-tag-button\">\n<$set name=\"tag\" value={{$:/temp/NewTagName}}>\n<$button set=\"$:/temp/NewTagName\" setTo=\"\" class=\"\">\n$actions$\n<$action-deletetiddler $tiddler=\"$:/temp/NewTagName\"/>\n{{$:/language/EditTemplate/Tags/Add/Button}}\n</$button>\n</$set>\n</span>\n</div>\n<div class=\"tc-block-dropdown-wrapper\">\n<$reveal state=<<qualify \"$:/state/popup/tags-auto-complete\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown\">\n<$list filter=\"[tags[]!is[system]search:title{$:/temp/NewTagName}sort[]]\" variable=\"tag\">\n<<tag-button>>\n</$list>\n<hr>\n<$list filter=\"[tags[]is[system]search:title{$:/temp/NewTagName}sort[]]\" variable=\"tag\">\n<<tag-button>>\n</$list>\n</div>\n</$reveal>\n</div>\n</$set>\n\\end\n"
},
"$:/core/macros/tag": {
"title": "$:/core/macros/tag",
"tags": "$:/tags/Macro",
"text": "\\define tag-pill-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-pill-inner(tag,icon,colour,fallbackTarget,colourA,colourB,element-tag,element-attributes,actions)\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<$element-tag$ $element-attributes$ class=\"tc-tag-label tc-btn-invisible\" style=<<tag-pill-styles>>>\n$actions$<$transclude tiddler=\"\"\"$icon$\"\"\"/> <$view tiddler=\"\"\"$tag$\"\"\" field=\"title\" format=\"text\" />\n</$element-tag$>\n</$vars>\n\\end\n\n\\define tag-pill-body(tag,icon,colour,palette,element-tag,element-attributes,actions)\n<$macrocall $name=\"tag-pill-inner\" tag=\"\"\"$tag$\"\"\" icon=\"\"\"$icon$\"\"\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n\n\\define tag-pill(tag,element-tag:\"span\",element-attributes:\"\",actions:\"\")\n<span class=\"tc-tag-list-item\">\n<$macrocall $name=\"tag-pill-body\" tag=\"\"\"$tag$\"\"\" icon={{$tag$!!icon}} colour={{$tag$!!color}} palette={{$:/palette}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</span>\n\\end\n\n\\define tag(tag)\n{{$tag$||$:/core/ui/TagTemplate}}\n\\end\n"
},
"$:/core/macros/thumbnails": {
"title": "$:/core/macros/thumbnails",
"tags": "$:/tags/Macro",
"text": "\\define thumbnail(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<$link to=\"\"\"$link$\"\"\"><div class=\"tc-thumbnail-wrapper\">\n<div class=\"tc-thumbnail-image\" style=\"width:$width$px;height:$height$px;\"><$reveal type=\"nomatch\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" style=\"width:$width$px;height:$height$px;\">\n[img[$image$]]\n</$reveal><$reveal type=\"match\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" class=\"tc-thumbnail-background\" style=\"width:$width$px;height:$height$px;background-color:$background-color$;\"></$reveal></div><div class=\"tc-thumbnail-icon\" style=\"fill:$color$;color:$color$;\">\n$icon$\n</div><div class=\"tc-thumbnail-caption\">\n$caption$\n</div>\n</div></$link>\n\\end\n\n\\define thumbnail-right(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<div class=\"tc-thumbnail-right-wrapper\"><<thumbnail \"\"\"$link$\"\"\" \"\"\"$icon$\"\"\" \"\"\"$color$\"\"\" \"\"\"$background-color$\"\"\" \"\"\"$image$\"\"\" \"\"\"$caption$\"\"\" \"\"\"$width$\"\"\" \"\"\"$height$\"\"\">></div>\n\\end\n\n\\define list-thumbnails(filter,width:\"280\",height:\"157\")\n<$list filter=\"\"\"$filter$\"\"\"><$macrocall $name=\"thumbnail\" link={{!!link}} icon={{!!icon}} color={{!!color}} background-color={{!!background-color}} image={{!!image}} caption={{!!caption}} width=\"\"\"$width$\"\"\" height=\"\"\"$height$\"\"\"/></$list>\n\\end\n"
},
"$:/core/macros/timeline": {
"created": "20141212105914482",
"modified": "20141212110330815",
"tags": "$:/tags/Macro",
"title": "$:/core/macros/timeline",
"type": "text/vnd.tiddlywiki",
"text": "\\define timeline-title()\n<!-- Override this macro with a global macro \n of the same name if you need to change \n how titles are displayed on the timeline \n -->\n<$view field=\"title\"/>\n\\end\n\\define timeline(limit:\"100\",format:\"DDth MMM YYYY\",subfilter:\"\",dateField:\"modified\")\n<div class=\"tc-timeline\">\n<$list filter=\"[!is[system]$subfilter$has[$dateField$]!sort[$dateField$]limit[$limit$]eachday[$dateField$]]\">\n<div class=\"tc-menu-list-item\">\n<$view field=\"$dateField$\" format=\"date\" template=\"$format$\"/>\n<$list filter=\"[sameday:$dateField${!!$dateField$}!is[system]$subfilter$!sort[$dateField$]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}>\n<<timeline-title>>\n</$link>\n</div>\n</$list>\n</div>\n</$list>\n</div>\n\\end\n"
},
"$:/core/macros/toc": {
"title": "$:/core/macros/toc",
"tags": "$:/tags/Macro",
"text": "\\define toc-caption()\n<$set name=\"tv-wikilinks\" value=\"no\">\n <$transclude field=\"caption\">\n <$view field=\"title\"/>\n </$transclude>\n</$set>\n\\end\n\n\\define toc-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<ol class=\"tc-toc\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$] $exclude$\"\"\">\n <$vars item=<<currentTiddler>> path=\"\"\"$path$/$tag$\"\"\" excluded=\"\"\"$exclude$ -[[$tag$]]\"\"\">\n <$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" emptyValue=\"toc-item\" value=\"toc-item-selected\">\n <li class=<<toc-item-class>>>\n <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=\"<$link><$view field='caption'><$view field='title'/></$view></$link>\">\n <<toc-caption>>\n </$list>\n <$macrocall $name=\"toc-body\" tag=<<item>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=<<excluded>> path=<<path>>/>\n </li>\n </$set>\n </$vars>\n </$list>\n</ol>\n\\end\n\n\\define toc(tag,sort:\"\",itemClassFilter:\" \")\n<<toc-body tag:\"\"\"$tag$\"\"\" sort:\"\"\"$sort$\"\"\" itemClassFilter:\"\"\"$itemClassFilter$\"\"\">>\n\\end\n\n\\define toc-linked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<!-- helper function -->\n<$set name=\"toc-state\" value=<<qualify \"\"\"$:/state/toc$path$-$(currentTiddler)$\"\"\">>>\n <$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" emptyValue=\"toc-item\" value=\"toc-item-selected\">\n <li class=<<toc-item-class>>>\n <$link>\n <$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n <$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible\">\n {{$:/core/images/right-arrow}}\n </$button>\n </$reveal>\n <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n <$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible\">\n {{$:/core/images/down-arrow}}\n </$button>\n </$reveal>\n <<toc-caption>>\n </$link>\n <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=\"\"\"$exclude$\"\"\" path=\"\"\"$path$\"\"\"/>\n </$reveal>\n </li>\n </$set>\n</$set>\n\\end\n\n\\define toc-unlinked-expandable-body(tag,sort:\"\",itemClassFilter:\" \",exclude,path)\n<!-- helper function -->\n<$set name=\"toc-state\" value=<<qualify \"\"\"$:/state/toc$path$-$(currentTiddler)$\"\"\">>>\n <$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" emptyValue=\"toc-item\" value=\"toc-item-selected\">\n <li class=<<toc-item-class>>>\n <$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n <$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible\">\n {{$:/core/images/right-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n <$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible\">\n {{$:/core/images/down-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=\"\"\"$exclude$\"\"\" path=\"\"\"$path$\"\"\"/>\n </$reveal>\n </li>\n </$set>\n</$set>\n\\end\n\n\\define toc-expandable-empty-message()\n<<toc-linked-expandable-body tag:\"\"\"$(tag)$\"\"\" sort:\"\"\"$(sort)$\"\"\" itemClassFilter:\"\"\"$(itemClassFilter)$\"\"\" exclude:\"\"\"$(excluded)$\"\"\" path:\"\"\"$(path)$\"\"\">>\n\\end\n\n\\define toc-expandable(tag,sort:\"\",itemClassFilter:\" \",exclude,path)\n<$vars tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" excluded=\"\"\"$exclude$ -[[$tag$]]\"\"\" path=\"\"\"$path$/$tag$\"\"\">\n <ol class=\"tc-toc toc-expandable\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$] $exclude$\"\"\">\n <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=<<toc-expandable-empty-message>> >\n <$macrocall $name=\"toc-unlinked-expandable-body\" tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"itemClassFilter\"\"\" exclude=<<excluded>> path=<<path>> />\n </$list>\n </$list>\n </ol>\n</$vars>\n\\end\n\n\\define toc-linked-selective-expandable-body(tag,sort:\"\",itemClassFilter:\" \",exclude,path)\n<$set name=\"toc-state\" value=<<qualify \"\"\"$:/state/toc$path$-$(currentTiddler)$\"\"\">>>\n <$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" emptyValue=\"toc-item\" value=\"toc-item-selected\" >\n <li class=<<toc-item-class>>>\n <$link>\n <$list filter=\"[all[current]tagging[]limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>\">\n <$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n <$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible\">\n {{$:/core/images/right-arrow}}\n </$button>\n </$reveal>\n <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n <$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible\">\n {{$:/core/images/down-arrow}}\n </$button>\n </$reveal>\n </$list>\n <<toc-caption>>\n </$link>\n <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=\"\"\"$exclude$\"\"\" path=\"\"\"$path$\"\"\"/>\n </$reveal>\n </li>\n </$set>\n</$set>\n\\end\n\n\\define toc-unlinked-selective-expandable-body(tag,sort:\"\",itemClassFilter:\" \",exclude,path)\n<$set name=\"toc-state\" value=<<qualify \"\"\"$:/state/toc$path$-$(currentTiddler)$\"\"\">>>\n <$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" emptyValue=\"toc-item\" value=\"toc-item-selected\">\n <li class=<<toc-item-class>>>\n <$list filter=\"[all[current]tagging[]limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button> <$view field='caption'><$view field='title'/></$view>\">\n <$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n <$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible\">\n {{$:/core/images/right-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n <$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible\">\n {{$:/core/images/down-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n </$list>\n <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n <$macrocall $name=\"\"\"toc-selective-expandable\"\"\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=\"\"\"$exclude$\"\"\" path=\"\"\"$path$\"\"\"/>\n </$reveal>\n </li>\n </$set>\n</$set>\n\\end\n\n\\define toc-selective-expandable-empty-message()\n<<toc-linked-selective-expandable-body tag:\"\"\"$(tag)$\"\"\" sort:\"\"\"$(sort)$\"\"\" itemClassFilter:\"\"\"$(itemClassFilter)$\"\"\" exclude:\"\"\"$(excluded)$\"\"\" path:\"\"\"$(path)$\"\"\">>\n\\end\n\n\\define toc-selective-expandable(tag,sort:\"\",itemClassFilter,exclude,path)\n<$vars tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" excluded=\"\"\"$exclude$ -[[$tag$]]\"\"\" path=\"\"\"$path$/$tag$\"\"\">\n <ol class=\"tc-toc toc-selective-expandable\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$] $exclude$\"\"\">\n <$list filter=\"[all[current]toc-link[no]]\" variable=\"ignore\" emptyMessage=<<toc-selective-expandable-empty-message>> >\n <$macrocall $name=toc-unlinked-selective-expandable-body tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=<<excluded>> path=<<path>> >\n </$list>\n </$list>\n </ol>\n</$vars>\n\\end\n\n\\define toc-tabbed-selected-item-filter(selectedTiddler)\n[all[current]field:title{$selectedTiddler$}]\n\\end\n\n\\define toc-tabbed-external-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$tiddler tiddler={{$selectedTiddler$}}>\n <div class=\"tc-tabbed-table-of-contents\">\n <$linkcatcher to=\"$selectedTiddler$\">\n <div class=\"tc-table-of-contents\">\n <$macrocall $name=\"toc-selective-expandable\" tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=<<toc-tabbed-selected-item-filter selectedTiddler:\"\"\"$selectedTiddler$\"\"\">>/>\n </div>\n </$linkcatcher>\n <div class=\"tc-tabbed-table-of-contents-content\">\n <$reveal state=\"\"\"$selectedTiddler$\"\"\" type=\"nomatch\" text=\"\">\n <$transclude mode=\"block\" tiddler=\"$template$\">\n <h1><<toc-caption>></h1>\n <$transclude mode=\"block\">$missingText$</$transclude>\n </$transclude>\n </$reveal>\n <$reveal state=\"\"\"$selectedTiddler$\"\"\" type=\"match\" text=\"\">\n $unselectedText$\n </$reveal>\n </div>\n </div>\n</$tiddler>\n\\end\n\n\\define toc-tabbed-internal-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$linkcatcher to=\"\"\"$selectedTiddler$\"\"\">\n <$macrocall $name=\"toc-tabbed-external-nav\" tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" selectedTiddler=\"\"\"$selectedTiddler$\"\"\" unselectedText=\"\"\"$unselectedText$\"\"\" missingText=\"\"\"$missingText$\"\"\" template=\"\"\"$template$\"\"\"/>\n</$linkcatcher>\n\\end\n\n"
},
"$:/core/macros/translink": {
"title": "$:/core/macros/translink",
"tags": "$:/tags/Macro",
"text": "\\define translink(title,mode:\"block\")\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: black; foreground; white;\">\n<$link to=\"\"\"$title$\"\"\">\n<$text text=\"\"\"$title$\"\"\"/>\n</$link>\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: white; foreground; black;\">\n<$transclude tiddler=\"\"\"$title$\"\"\" mode=\"$mode$\">\n\"<$text text=\"\"\"$title$\"\"\"/>\" is missing\n</$transclude>\n</div>\n</div>\n\\end\n"
},
"$:/snippets/minilanguageswitcher": {
"title": "$:/snippets/minilanguageswitcher",
"text": "<$select tiddler=\"$:/language\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"description\"><$view field=\"name\"><$view field=\"title\"/></$view></$view></option>\n</$list>\n</$select>"
},
"$:/snippets/minithemeswitcher": {
"title": "$:/snippets/minithemeswitcher",
"text": "\\define lingo-base() $:/language/ControlPanel/Theme/\n<<lingo Prompt>> <$select tiddler=\"$:/theme\">\n<$list filter=\"[plugin-type[theme]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"name\"><$view field=\"title\"/></$view></option>\n</$list>\n</$select>"
},
"$:/snippets/modules": {
"title": "$:/snippets/modules",
"text": "\\define describeModuleType(type)\n{{$:/language/Docs/ModuleTypes/$type$}}\n\\end\n<$list filter=\"[moduletypes[]]\">\n\n!! <$macrocall $name=\"currentTiddler\" $type=\"text/plain\" $output=\"text/plain\"/>\n\n<$macrocall $name=\"describeModuleType\" type=<<currentTiddler>>/>\n\n<ul><$list filter=\"[all[current]modules[]]\"><li><$link><<currentTiddler>></$link>\n</li>\n</$list>\n</ul>\n</$list>\n"
},
"$:/palette": {
"title": "$:/palette",
"text": "$:/palettes/Vanilla"
},
"$:/snippets/paletteeditor": {
"title": "$:/snippets/paletteeditor",
"text": "\\define lingo-base() $:/language/ControlPanel/Palette/Editor/\n\\define describePaletteColour(colour)\n<$transclude tiddler=\"$:/language/Docs/PaletteColours/$colour$\"><$text text=\"$colour$\"/></$transclude>\n\\end\n<$set name=\"currentTiddler\" value={{$:/palette}}>\n\n<<lingo Prompt>> <$link to={{$:/palette}}><$macrocall $name=\"currentTiddler\" $output=\"text/plain\"/></$link>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\" variable=\"listItem\">\n<<lingo Prompt/Modified>>\n<$button message=\"tm-delete-tiddler\" param={{$:/palette}}><<lingo Reset/Caption>></$button>\n</$list>\n\n<$list filter=\"[all[current]is[shadow]!is[tiddler]]\" variable=\"listItem\">\n<<lingo Clone/Prompt>>\n</$list>\n\n<$button message=\"tm-new-tiddler\" param={{$:/palette}}><<lingo Clone/Caption>></$button>\n\n<table>\n<tbody>\n<$list filter=\"[all[current]indexes[]]\" variable=\"colourName\">\n<tr>\n<td>\n''<$macrocall $name=\"describePaletteColour\" colour=<<colourName>>/>''<br/>\n<$macrocall $name=\"colourName\" $output=\"text/plain\"/>\n</td>\n<td>\n<$edit-text index=<<colourName>> tag=\"input\"/>\n<br>\n<$edit-text index=<<colourName>> type=\"color\" tag=\"input\"/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n</$set>\n"
},
"$:/snippets/palettepreview": {
"title": "$:/snippets/palettepreview",
"text": "<$set name=\"currentTiddler\" value={{$:/palette}}>\n<$transclude tiddler=\"$:/snippets/currpalettepreview\"/>\n</$set>\n"
},
"$:/snippets/paletteswitcher": {
"title": "$:/snippets/paletteswitcher",
"text": "\\define lingo-base() $:/language/ControlPanel/Palette/\n<div class=\"tc-prompt\">\n<<lingo Prompt>> <$view tiddler={{$:/palette}} field=\"name\"/>\n</div>\n\n<$linkcatcher to=\"$:/palette\">\n<div class=\"tc-chooser\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]sort[description]]\"><div class=\"tc-chooser-item\"><$link to={{!!title}}><div><$reveal state=\"$:/palette\" type=\"match\" text={{!!title}}>•</$reveal><$reveal state=\"$:/palette\" type=\"nomatch\" text={{!!title}}> </$reveal> ''<$view field=\"name\" format=\"text\"/>'' - <$view field=\"description\" format=\"text\"/></div><$transclude tiddler=\"$:/snippets/currpalettepreview\"/></$link></div>\n</$list>\n</div>\n</$linkcatcher>"
},
"$:/temp/search": {
"title": "$:/temp/search",
"text": ""
},
"$:/tags/AdvancedSearch": {
"title": "$:/tags/AdvancedSearch",
"list": "[[$:/core/ui/AdvancedSearch/Standard]] [[$:/core/ui/AdvancedSearch/System]] [[$:/core/ui/AdvancedSearch/Shadows]] [[$:/core/ui/AdvancedSearch/Filter]]"
},
"$:/tags/AdvancedSearch/FilterButton": {
"title": "$:/tags/AdvancedSearch/FilterButton",
"list": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown $:/core/ui/AdvancedSearch/Filter/FilterButtons/clear $:/core/ui/AdvancedSearch/Filter/FilterButtons/export $:/core/ui/AdvancedSearch/Filter/FilterButtons/delete"
},
"$:/tags/ControlPanel": {
"title": "$:/tags/ControlPanel",
"list": "$:/core/ui/ControlPanel/Info $:/core/ui/ControlPanel/Appearance $:/core/ui/ControlPanel/Settings $:/core/ui/ControlPanel/Saving $:/core/ui/ControlPanel/Plugins $:/core/ui/ControlPanel/Tools $:/core/ui/ControlPanel/Internals"
},
"$:/tags/ControlPanel/Info": {
"title": "$:/tags/ControlPanel/Info",
"list": "$:/core/ui/ControlPanel/Basics $:/core/ui/ControlPanel/Advanced"
},
"$:/tags/ControlPanel/Plugins": {
"title": "$:/tags/ControlPanel/Plugins",
"list": "[[$:/core/ui/ControlPanel/Plugins/Installed]] [[$:/core/ui/ControlPanel/Plugins/Add]]"
},
"$:/tags/EditTemplate": {
"title": "$:/tags/EditTemplate",
"list": "[[$:/core/ui/EditTemplate/controls]] [[$:/core/ui/EditTemplate/title]] [[$:/core/ui/EditTemplate/tags]] [[$:/core/ui/EditTemplate/shadow]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/EditTemplate/body]] [[$:/core/ui/EditTemplate/type]] [[$:/core/ui/EditTemplate/fields]]"
},
"$:/tags/EditToolbar": {
"title": "$:/tags/EditToolbar",
"list": "[[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/cancel]] [[$:/core/ui/Buttons/save]]"
},
"$:/tags/EditorToolbar": {
"title": "$:/tags/EditorToolbar",
"list": "$:/core/ui/EditorToolbar/paint $:/core/ui/EditorToolbar/opacity $:/core/ui/EditorToolbar/line-width $:/core/ui/EditorToolbar/clear $:/core/ui/EditorToolbar/bold $:/core/ui/EditorToolbar/italic $:/core/ui/EditorToolbar/strikethrough $:/core/ui/EditorToolbar/underline $:/core/ui/EditorToolbar/superscript $:/core/ui/EditorToolbar/subscript $:/core/ui/EditorToolbar/mono-line $:/core/ui/EditorToolbar/mono-block $:/core/ui/EditorToolbar/quote $:/core/ui/EditorToolbar/list-bullet $:/core/ui/EditorToolbar/list-number $:/core/ui/EditorToolbar/heading-1 $:/core/ui/EditorToolbar/heading-2 $:/core/ui/EditorToolbar/heading-3 $:/core/ui/EditorToolbar/heading-4 $:/core/ui/EditorToolbar/heading-5 $:/core/ui/EditorToolbar/heading-6 $:/core/ui/EditorToolbar/link $:/core/ui/EditorToolbar/excise $:/core/ui/EditorToolbar/picture $:/core/ui/EditorToolbar/stamp $:/core/ui/EditorToolbar/size $:/core/ui/EditorToolbar/editor-height $:/core/ui/EditorToolbar/more $:/core/ui/EditorToolbar/preview $:/core/ui/EditorToolbar/preview-type"
},
"$:/tags/Manager/ItemMain": {
"title": "$:/tags/Manager/ItemMain",
"list": "$:/Manager/ItemMain/WikifiedText $:/Manager/ItemMain/RawText $:/Manager/ItemMain/Fields"
},
"$:/tags/Manager/ItemSidebar": {
"title": "$:/tags/Manager/ItemSidebar",
"list": "$:/Manager/ItemSidebar/Tags $:/Manager/ItemSidebar/Colour $:/Manager/ItemSidebar/Icon $:/Manager/ItemSidebar/Tools"
},
"$:/tags/MoreSideBar": {
"title": "$:/tags/MoreSideBar",
"list": "[[$:/core/ui/MoreSideBar/All]] [[$:/core/ui/MoreSideBar/Recent]] [[$:/core/ui/MoreSideBar/Tags]] [[$:/core/ui/MoreSideBar/Missing]] [[$:/core/ui/MoreSideBar/Drafts]] [[$:/core/ui/MoreSideBar/Orphans]] [[$:/core/ui/MoreSideBar/Types]] [[$:/core/ui/MoreSideBar/System]] [[$:/core/ui/MoreSideBar/Shadows]] [[$:/core/ui/MoreSideBar/Plugins]]",
"text": ""
},
"$:/tags/PageControls": {
"title": "$:/tags/PageControls",
"list": "[[$:/core/ui/Buttons/home]] [[$:/core/ui/Buttons/close-all]] [[$:/core/ui/Buttons/fold-all]] [[$:/core/ui/Buttons/unfold-all]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/new-tiddler]] [[$:/core/ui/Buttons/new-journal]] [[$:/core/ui/Buttons/new-image]] [[$:/core/ui/Buttons/import]] [[$:/core/ui/Buttons/export-page]] [[$:/core/ui/Buttons/control-panel]] [[$:/core/ui/Buttons/advanced-search]] [[$:/core/ui/Buttons/manager]] [[$:/core/ui/Buttons/tag-manager]] [[$:/core/ui/Buttons/language]] [[$:/core/ui/Buttons/palette]] [[$:/core/ui/Buttons/theme]] [[$:/core/ui/Buttons/storyview]] [[$:/core/ui/Buttons/encryption]] [[$:/core/ui/Buttons/timestamp]] [[$:/core/ui/Buttons/full-screen]] [[$:/core/ui/Buttons/print]] [[$:/core/ui/Buttons/save-wiki]] [[$:/core/ui/Buttons/refresh]] [[$:/core/ui/Buttons/more-page-actions]]"
},
"$:/tags/PageTemplate": {
"title": "$:/tags/PageTemplate",
"list": "[[$:/core/ui/PageTemplate/topleftbar]] [[$:/core/ui/PageTemplate/toprightbar]] [[$:/core/ui/PageTemplate/sidebar]] [[$:/core/ui/PageTemplate/story]] [[$:/core/ui/PageTemplate/alerts]]",
"text": ""
},
"$:/tags/SideBar": {
"title": "$:/tags/SideBar",
"list": "[[$:/core/ui/SideBar/Open]] [[$:/core/ui/SideBar/Recent]] [[$:/core/ui/SideBar/Tools]] [[$:/core/ui/SideBar/More]]",
"text": ""
},
"$:/tags/TiddlerInfo": {
"title": "$:/tags/TiddlerInfo",
"list": "[[$:/core/ui/TiddlerInfo/Tools]] [[$:/core/ui/TiddlerInfo/References]] [[$:/core/ui/TiddlerInfo/Tagging]] [[$:/core/ui/TiddlerInfo/List]] [[$:/core/ui/TiddlerInfo/Listed]] [[$:/core/ui/TiddlerInfo/Fields]]",
"text": ""
},
"$:/tags/TiddlerInfo/Advanced": {
"title": "$:/tags/TiddlerInfo/Advanced",
"list": "[[$:/core/ui/TiddlerInfo/Advanced/ShadowInfo]] [[$:/core/ui/TiddlerInfo/Advanced/PluginInfo]]"
},
"$:/tags/ViewTemplate": {
"title": "$:/tags/ViewTemplate",
"list": "[[$:/core/ui/ViewTemplate/title]] [[$:/core/ui/ViewTemplate/unfold]] [[$:/core/ui/ViewTemplate/subtitle]] [[$:/core/ui/ViewTemplate/tags]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/ViewTemplate/body]]"
},
"$:/tags/ViewToolbar": {
"title": "$:/tags/ViewToolbar",
"list": "[[$:/core/ui/Buttons/more-tiddler-actions]] [[$:/core/ui/Buttons/info]] [[$:/core/ui/Buttons/new-here]] [[$:/core/ui/Buttons/new-journal-here]] [[$:/core/ui/Buttons/clone]] [[$:/core/ui/Buttons/export-tiddler]] [[$:/core/ui/Buttons/edit]] [[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/permalink]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/open-window]] [[$:/core/ui/Buttons/close-others]] [[$:/core/ui/Buttons/close]] [[$:/core/ui/Buttons/fold-others]] [[$:/core/ui/Buttons/fold]]"
},
"$:/snippets/themeswitcher": {
"title": "$:/snippets/themeswitcher",
"text": "\\define lingo-base() $:/language/ControlPanel/Theme/\n<<lingo Prompt>> <$view tiddler={{$:/theme}} field=\"name\"/>\n\n<$linkcatcher to=\"$:/theme\">\n<$list filter=\"[plugin-type[theme]sort[title]]\"><div><$reveal state=\"$:/theme\" type=\"match\" text={{!!title}}>•</$reveal><$reveal state=\"$:/theme\" type=\"nomatch\" text={{!!title}}> </$reveal> <$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' <$view field=\"description\" format=\"text\"/></$link></div>\n</$list>\n</$linkcatcher>"
},
"$:/core/wiki/title": {
"title": "$:/core/wiki/title",
"type": "text/vnd.tiddlywiki",
"text": "{{$:/SiteTitle}} --- {{$:/SiteSubtitle}}"
},
"$:/view": {
"title": "$:/view",
"text": "classic"
},
"$:/snippets/viewswitcher": {
"title": "$:/snippets/viewswitcher",
"text": "\\define lingo-base() $:/language/ControlPanel/StoryView/\n<<lingo Prompt>> <$select tiddler=\"$:/view\">\n<$list filter=\"[storyviews[]]\">\n<option><$view field=\"title\"/></option>\n</$list>\n</$select>"
}
}
}
<svg class="tc-image-blank tc-image-button" viewBox="0 0 128 128" width="22pt" height="22pt"></svg>
<svg class="tc-image-chevron-down tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
<g fill-rule="evenodd" transform="translate(64.000000, 40.500000) rotate(-270.000000) translate(-64.000000, -40.500000) translate(-22.500000, -26.500000)">
<path d="M112.743107,112.12741 C111.310627,113.561013 109.331747,114.449239 107.145951,114.449239 L27.9777917,114.449239 C23.6126002,114.449239 20.0618714,110.904826 20.0618714,106.532572 C20.0618714,102.169214 23.6059497,98.6159054 27.9777917,98.6159054 L99.2285381,98.6159054 L99.2285381,27.365159 C99.2285381,22.9999675 102.77295,19.4492387 107.145205,19.4492387 C111.508562,19.4492387 115.061871,22.993317 115.061871,27.365159 L115.061871,106.533318 C115.061871,108.71579 114.175869,110.694669 112.743378,112.127981 Z" transform="translate(67.561871, 66.949239) rotate(-45.000000) translate(-67.561871, -66.949239) "></path>
<path d="M151.35638,112.12741 C149.923899,113.561013 147.94502,114.449239 145.759224,114.449239 L66.5910645,114.449239 C62.225873,114.449239 58.6751442,110.904826 58.6751442,106.532572 C58.6751442,102.169214 62.2192225,98.6159054 66.5910645,98.6159054 L137.841811,98.6159054 L137.841811,27.365159 C137.841811,22.9999675 141.386223,19.4492387 145.758478,19.4492387 C150.121835,19.4492387 153.675144,22.993317 153.675144,27.365159 L153.675144,106.533318 C153.675144,108.71579 152.789142,110.694669 151.356651,112.127981 Z" transform="translate(106.175144, 66.949239) rotate(-45.000000) translate(-106.175144, -66.949239) "></path>
</g>
</svg>
<svg class="tc-image-download-button tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 128"><g fill-rule="evenodd"><path class="tc-image-download-button-ring" d="M64,128 C99.346224,128 128,99.346224 128,64 C128,28.653776 99.346224,0 64,0 C28.653776,0 0,28.653776 0,64 C0,99.346224 28.653776,128 64,128 Z M64,112 C90.509668,112 112,90.509668 112,64 C112,37.490332 90.509668,16 64,16 C37.490332,16 16,37.490332 16,64 C16,90.509668 37.490332,112 64,112 Z"/><path d="M34.3496823,66.4308767 L61.2415823,93.634668 C63.0411536,95.4551107 65.9588502,95.4551107 67.7584215,93.634668 L94.6503215,66.4308767 C96.4498928,64.610434 96.4498928,61.6588981 94.6503215,59.8384554 C93.7861334,58.9642445 92.6140473,58.4731195 91.3919019,58.4731195 L82.9324098,58.4731195 C80.3874318,58.4731195 78.3243078,56.3860674 78.3243078,53.8115729 L78.3243078,38.6615466 C78.3243078,36.0870521 76.2611837,34 73.7162058,34 L55.283798,34 C52.7388201,34 50.675696,36.0870521 50.675696,38.6615466 L50.675696,38.6615466 L50.675696,53.8115729 C50.675696,56.3860674 48.612572,58.4731195 46.0675941,58.4731195 L37.608102,58.4731195 C35.063124,58.4731195 33,60.5601716 33,63.134666 C33,64.3709859 33.4854943,65.5566658 34.3496823,66.4308767 L34.3496823,66.4308767 Z"/></g></svg>
<svg class="tc-image-permaview-button tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
<g fill-rule="evenodd">
<path d="M81.4834582,48 L79.6365127,56 L79.6365127,56 L74.0573784,56 L75.9043239,48 L81.4834582,48 Z M85.1773493,32 L90.8007299,7.64246248 C91.7941633,3.33942958 96.0918297,0.64641956 100.396867,1.64031585 C104.693145,2.63218977 107.385414,6.93288901 106.390651,11.2416793 L101.598215,32 L104.000754,32 C108.411895,32 112,35.581722 112,40 C112,44.4092877 108.418616,48 104.000754,48 L97.9043239,48 L96.0573784,56 L104.000754,56 C108.411895,56 112,59.581722 112,64 C112,68.4092877 108.418616,72 104.000754,72 L92.3634873,72 L90.5165418,80 L104.000754,80 C108.411895,80 112,83.581722 112,88 C112,92.4092877 108.418616,96 104.000754,96 L86.8226507,96 L81.1992701,120.357538 C80.2058367,124.66057 75.9081703,127.35358 71.6031325,126.359684 C67.3068546,125.36781 64.6145865,121.067111 65.6093491,116.758321 L70.401785,96 L64.8226507,96 L59.1992701,120.357538 C58.2058367,124.66057 53.9081703,127.35358 49.6031325,126.359684 C45.3068546,125.36781 42.6145865,121.067111 43.6093491,116.758321 L48.401785,96 L42.8226507,96 L37.1992701,120.357538 C36.2058367,124.66057 31.9081703,127.35358 27.6031325,126.359684 C23.3068546,125.36781 20.6145865,121.067111 21.6093491,116.758321 L26.401785,96 L23.9992458,96 C19.5881049,96 16,92.418278 16,88 C16,83.5907123 19.5813843,80 23.9992458,80 L30.0956761,80 L31.9426216,72 L23.9992458,72 C19.5881049,72 16,68.418278 16,64 C16,59.5907123 19.5813843,56 23.9992458,56 L35.6365127,56 L37.4834582,48 L23.9992458,48 C19.5881049,48 16,44.418278 16,40 C16,35.5907123 19.5813843,32 23.9992458,32 L41.1773493,32 L46.8007299,7.64246248 C47.7941633,3.33942958 52.0918297,0.64641956 56.3968675,1.64031585 C60.6931454,2.63218977 63.3854135,6.93288901 62.3906509,11.2416793 L57.598215,32 L63.1773493,32 L68.8007299,7.64246248 C69.7941633,3.33942958 74.0918297,0.64641956 78.3968675,1.64031585 C82.6931454,2.63218977 85.3854135,6.93288901 84.3906509,11.2416793 L79.598215,32 L85.1773493,32 Z M53.9043239,48 L52.0573784,56 L57.6365127,56 L59.4834582,48 L53.9043239,48 Z M75.9426216,72 L74.0956761,80 L74.0956761,80 L68.5165418,80 L70.3634873,72 L75.9426216,72 L75.9426216,72 Z M48.3634873,72 L46.5165418,80 L52.0956761,80 L53.9426216,72 L48.3634873,72 L48.3634873,72 Z"></path>
</g>
</svg>
<svg class="tc-image-quote tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
<g fill-rule="evenodd">
<path d="M51.2188077,117.712501 L51.2188077,62.1993386 L27.4274524,62.1993386 C27.4274524,53.3075754 29.1096526,45.797753 32.4741035,39.669646 C35.8385544,33.541539 42.0867267,28.9154883 51.2188077,25.7913554 L51.2188077,2 C43.7689521,2.96127169 36.8599155,5.18417913 30.4914905,8.668789 C24.1230656,12.1533989 18.6559149,16.5391352 14.0898743,21.8261295 C9.52383382,27.1131238 5.97919764,33.2411389 3.45585945,40.2103586 C0.932521268,47.1795784 -0.208971741,54.6293222 0.0313461819,62.5598136 L0.0313461819,117.712501 L51.2188077,117.712501 Z M128,117.712501 L128,62.1993386 L104.208645,62.1993386 C104.208645,53.3075754 105.890845,45.797753 109.255296,39.669646 C112.619747,33.541539 118.867919,28.9154883 128,25.7913554 L128,2 C120.550144,2.96127169 113.641108,5.18417913 107.272683,8.668789 C100.904258,12.1533989 95.4371072,16.5391352 90.8710666,21.8261295 C86.3050261,27.1131238 82.7603899,33.2411389 80.2370517,40.2103586 C77.7137136,47.1795784 76.5722206,54.6293222 76.8125385,62.5598136 L76.8125385,117.712501 L128,117.712501 Z"></path>
</g>
</svg>
/*\
title: $:/core/modules/editor/factory.js
type: application/javascript
module-type: library
Factory for constructing text editor widgets with specified engines for the toolbar and non-toolbar cases
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
var DEFAULT_MIN_TEXT_AREA_HEIGHT = "100px"; // Minimum height of textareas in pixels
// Configuration tiddlers
var HEIGHT_MODE_TITLE = "$:/config/TextEditor/EditorHeight/Mode";
var ENABLE_TOOLBAR_TITLE = "$:/config/TextEditor/EnableToolbar";
var Widget = require("$:/core/modules/widgets/widget.js").widget;
function editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {
var EditTextWidget = function(parseTreeNode,options) {
// Initialise the editor operations if they've not been done already
if(!this.editorOperations) {
EditTextWidget.prototype.editorOperations = {};
$tw.modules.applyMethods("texteditoroperation",this.editorOperations);
}
this.initialise(parseTreeNode,options);
};
/*
Inherit from the base widget class
*/
EditTextWidget.prototype = new Widget();
/*
Render this widget into the DOM
*/
EditTextWidget.prototype.render = function(parent,nextSibling) {
// Save the parent dom node
this.parentDomNode = parent;
// Compute our attributes
this.computeAttributes();
// Execute our logic
this.execute();
// Create the wrapper for the toolbar and render its content
if(this.editShowToolbar) {
this.toolbarNode = this.document.createElement("div");
this.toolbarNode.className = "tc-editor-toolbar";
parent.insertBefore(this.toolbarNode,nextSibling);
this.renderChildren(this.toolbarNode,null);
this.domNodes.push(this.toolbarNode);
}
// Create our element
var editInfo = this.getEditInfo(),
Engine = this.editShowToolbar ? toolbarEngine : nonToolbarEngine;
this.engine = new Engine({
widget: this,
value: editInfo.value,
type: editInfo.type,
parentNode: parent,
nextSibling: nextSibling
});
// Call the postRender hook
if(this.postRender) {
this.postRender();
}
// Fix height
this.engine.fixHeight();
// Focus if required
if(this.editFocus === "true" || this.editFocus === "yes") {
this.engine.focus();
}
// Add widget message listeners
this.addEventListeners([
{type: "tm-edit-text-operation", handler: "handleEditTextOperationMessage"}
]);
};
/*
Get the tiddler being edited and current value
*/
EditTextWidget.prototype.getEditInfo = function() {
// Get the edit value
var self = this,
value,
type = "text/plain",
update;
if(this.editIndex) {
value = this.wiki.extractTiddlerDataItem(this.editTitle,this.editIndex,this.editDefault);
update = function(value) {
var data = self.wiki.getTiddlerData(self.editTitle,{});
if(data[self.editIndex] !== value) {
data[self.editIndex] = value;
self.wiki.setTiddlerData(self.editTitle,data);
}
};
} else {
// Get the current tiddler and the field name
var tiddler = this.wiki.getTiddler(this.editTitle);
if(tiddler) {
// If we've got a tiddler, the value to display is the field string value
value = tiddler.getFieldString(this.editField);
if(this.editField === "text") {
type = tiddler.fields.type || "text/vnd.tiddlywiki";
}
} else {
// Otherwise, we need to construct a default value for the editor
switch(this.editField) {
case "text":
value = "";
type = "text/vnd.tiddlywiki";
break;
case "title":
value = "";
break;
default:
value = "";
break;
}
if(this.editDefault !== undefined) {
value = this.editDefault;
}
}
update = function(value) {
var tiddler = self.wiki.getTiddler(self.editTitle),
updateFields = {
title: self.editTitle
};
updateFields[self.editField] = value;
self.wiki.addTiddler(new $tw.Tiddler(self.wiki.getCreationFields(),tiddler,updateFields,self.wiki.getModificationFields()));
};
}
if(this.editType) {
type = this.editType;
}
return {value: value || "", type: type, update: update};
};
/*
Handle an edit text operation message from the toolbar
*/
EditTextWidget.prototype.handleEditTextOperationMessage = function(event) {
// Prepare information about the operation
var operation = this.engine.createTextOperation();
// Invoke the handler for the selected operation
var handler = this.editorOperations[event.param];
if(handler) {
handler.call(this,event,operation);
}
// Execute the operation via the engine
var newText = this.engine.executeTextOperation(operation);
// Fix the tiddler height and save changes
this.engine.fixHeight();
this.saveChanges(newText);
};
/*
Compute the internal state of the widget
*/
EditTextWidget.prototype.execute = function() {
// Get our parameters
this.editTitle = this.getAttribute("tiddler",this.getVariable("currentTiddler"));
this.editField = this.getAttribute("field","text");
this.editIndex = this.getAttribute("index");
this.editDefault = this.getAttribute("default");
this.editClass = this.getAttribute("class");
this.editPlaceholder = this.getAttribute("placeholder");
this.editSize = this.getAttribute("size");
this.editRows = this.getAttribute("rows");
this.editAutoHeight = this.wiki.getTiddlerText(HEIGHT_MODE_TITLE,"auto");
this.editAutoHeight = this.getAttribute("autoHeight",this.editAutoHeight === "auto" ? "yes" : "no") === "yes";
this.editMinHeight = this.getAttribute("minHeight",DEFAULT_MIN_TEXT_AREA_HEIGHT);
this.editFocusPopup = this.getAttribute("focusPopup");
this.editFocus = this.getAttribute("focus");
// Get the default editor element tag and type
var tag,type;
if(this.editField === "text") {
tag = "textarea";
} else {
tag = "input";
var fieldModule = $tw.Tiddler.fieldModules[this.editField];
if(fieldModule && fieldModule.editTag) {
tag = fieldModule.editTag;
}
if(fieldModule && fieldModule.editType) {
type = fieldModule.editType;
}
type = type || "text";
}
// Get the rest of our parameters
this.editTag = this.getAttribute("tag",tag);
this.editType = this.getAttribute("type",type);
// Make the child widgets
this.makeChildWidgets();
// Determine whether to show the toolbar
this.editShowToolbar = this.wiki.getTiddlerText(ENABLE_TOOLBAR_TITLE,"yes");
this.editShowToolbar = (this.editShowToolbar === "yes") && !!(this.children && this.children.length > 0);
};
/*
Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering
*/
EditTextWidget.prototype.refresh = function(changedTiddlers) {
var changedAttributes = this.computeAttributes();
// Completely rerender if any of our attributes have changed
if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes["default"] || changedAttributes["class"] || changedAttributes.placeholder || changedAttributes.size || changedAttributes.autoHeight || changedAttributes.minHeight || changedAttributes.focusPopup || changedAttributes.rows || changedTiddlers[HEIGHT_MODE_TITLE] || changedTiddlers[ENABLE_TOOLBAR_TITLE]) {
this.refreshSelf();
return true;
} else if(changedTiddlers[this.editTitle]) {
var editInfo = this.getEditInfo();
this.updateEditor(editInfo.value,editInfo.type);
}
this.engine.fixHeight();
if(this.editShowToolbar) {
return this.refreshChildren(changedTiddlers);
} else {
return false;
}
};
/*
Update the editor with new text. This method is separate from updateEditorDomNode()
so that subclasses can override updateEditor() and still use updateEditorDomNode()
*/
EditTextWidget.prototype.updateEditor = function(text,type) {
this.updateEditorDomNode(text,type);
};
/*
Update the editor dom node with new text
*/
EditTextWidget.prototype.updateEditorDomNode = function(text,type) {
this.engine.setText(text,type);
};
/*
Save changes back to the tiddler store
*/
EditTextWidget.prototype.saveChanges = function(text) {
var editInfo = this.getEditInfo();
if(text !== editInfo.value) {
editInfo.update(text);
}
};
/*
Handle a dom "keydown" event, which we'll bubble up to our container for the keyboard widgets benefit
*/
EditTextWidget.prototype.handleKeydownEvent = function(event) {
// Check for a keyboard shortcut
if(this.toolbarNode) {
var shortcutElements = this.toolbarNode.querySelectorAll("[data-tw-keyboard-shortcut]");
for(var index=0; index<shortcutElements.length; index++) {
var el = shortcutElements[index],
shortcutData = el.getAttribute("data-tw-keyboard-shortcut"),
keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(shortcutData,{
wiki: this.wiki
});
if($tw.keyboardManager.checkKeyDescriptors(event,keyInfoArray)) {
var clickEvent = this.document.createEvent("Events");
clickEvent.initEvent("click",true,false);
el.dispatchEvent(clickEvent);
event.preventDefault();
event.stopPropagation();
return true;
}
}
}
// Propogate the event to the container
if(this.propogateKeydownEvent(event)) {
// Ignore the keydown if it was already handled
event.preventDefault();
event.stopPropagation();
return true;
}
// Otherwise, process the keydown normally
return false;
};
/*
Propogate keydown events to our container for the keyboard widgets benefit
*/
EditTextWidget.prototype.propogateKeydownEvent = function(event) {
var newEvent = this.document.createEventObject ? this.document.createEventObject() : this.document.createEvent("Events");
if(newEvent.initEvent) {
newEvent.initEvent("keydown", true, true);
}
newEvent.keyCode = event.keyCode;
newEvent.which = event.which;
newEvent.metaKey = event.metaKey;
newEvent.ctrlKey = event.ctrlKey;
newEvent.altKey = event.altKey;
newEvent.shiftKey = event.shiftKey;
return !this.parentDomNode.dispatchEvent(newEvent);
};
return EditTextWidget;
}
exports.editTextWidgetFactory = editTextWidgetFactory;
})();
\define tv-wikilink-template() http://tiddlywiki.com/static/$uri_doubleencoded$.html
<!-- For Google, and people without JavaScript-->
<$reveal state="!!hack-to-give-us-something-to-compare-against" type="nomatch" text=<<savingEmpty>>>
It looks like this browser doesn't run JavaScript. You can use one of these static HTML versions to browse the same content:
* http://tiddlywiki.com/static.html - browse individual tiddlers as separate pages
* http://tiddlywiki.com/alltiddlers.html#HelloThere - single file containing all tiddlers
---
{{HelloThere}}
{{TiddlyWiki}}
{{Features}}
{{Community}}
{{HelpingTiddlyWiki}}
</$reveal>
<div class="tc-search tc-advanced-search">
<$edit-text tiddler="$:/temp/advancedsearch" type="search" tag="input"/>
<$list filter="[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch/FilterButton]!has[draft.of]]"><$transclude/></$list>
</div>
<$reveal state="$:/temp/advancedsearch" type="nomatch" text="">
<$set name="resultCount" value="""<$count filter={{$:/temp/advancedsearch}}/>""">
<div class="tc-search-results">
<<lingo Filter/Matches>>
<$list filter={{$:/temp/advancedsearch}} template="$:/core/ui/ListItemTemplate"/>
</div>
</$set>
</$reveal>
<$linkcatcher to="$:/temp/advancedsearch">
<div class="tc-search">
<$edit-text tiddler="$:/temp/advancedsearch" type="search" tag="input"/>
<$reveal state="$:/temp/advancedsearch" type="nomatch" text="">
<$button class="tc-btn-invisible">
<$action-setfield $tiddler="$:/temp/advancedsearch" $field="text" $value=""/>
{{$:/core/images/close-button}}
</$button>
</$reveal>
</div>
</$linkcatcher>
<$reveal state="$:/temp/advancedsearch" type="nomatch" text="">
<$list filter="[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]" emptyMessage="""<div class="tc-search-results">{{$:/language/Search/Search/TooShort}}</div>""" variable="listItem">
<$set name="searchTiddler" value="$:/temp/advancedsearch">
<$list filter="[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]" emptyMessage="""
<$list filter="[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]">
<$transclude/>
</$list>
""">
<$macrocall $name="tabs" tabsList="[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]" default={{$:/config/SearchResults/Default}}/>
</$list>
</$set>
</$list>
</$reveal>
<$linkcatcher to="$:/temp/advancedsearch">
<div class="tc-search">
<$edit-text tiddler="$:/temp/advancedsearch" type="search" tag="input"/>
<$reveal state="$:/temp/advancedsearch" type="nomatch" text="">
<$button class="tc-btn-invisible">
<$action-setfield $tiddler="$:/temp/advancedsearch" $field="text" $value=""/>
{{$:/core/images/close-button}}
</$button>
</$reveal>
</div>
</$linkcatcher>
<$reveal state="$:/temp/advancedsearch" type="nomatch" text="">
<$list filter="[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]" emptyMessage="""<div class="tc-search-results">{{$:/language/Search/Search/TooShort}}</div>""" variable="listItem">
<$set name="resultCount" value="""<$count filter="[is[system]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]]"/>""">
<div class="tc-search-results">
<<lingo System/Matches>>
<$scrollable class='myScrollable'>
<$list filter="[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]]" template="$:/core/ui/ListItemTemplate"/>
</$scrollable>
</div>
</$set>
</$list>
</$reveal>
<$reveal state="$:/temp/advancedsearch" type="match" text="">
</$reveal>
<$button message="tm-edit-tiddler" tooltip={{$:/language/Buttons/Edit/Hint}} aria-label={{$:/language/Buttons/Edit/Caption}} class=<<tv-config-toolbar-class>>>
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
{{$:/core/images/edit-button}}
</$list>
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
<span class="tc-btn-text"><$text text={{$:/language/Buttons/Edit/Caption}}/></span>
</$list>
</$button>
\define manager-button(class)
<$button to="$:/Manager" tooltip={{$:/language/Buttons/Manager/Hint}} aria-label={{$:/language/Buttons/Manager/Caption}} class="""$(tv-config-toolbar-class)$ $class$""">
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
{{$:/core/images/list}}
</$list>
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
<span class="tc-btn-text"><$text text={{$:/language/Buttons/Manager/Caption}}/></span>
</$list>
</$button>
\end
<$list filter="[list[$:/StoryList]] +[field:title[$:/Manager]]" emptyMessage=<<manager-button>>>
<<manager-button "tc-selected">>
</$list>
<$button message="tm-new-tiddler" tooltip={{$:/language/Buttons/NewTiddler/Hint}} aria-label={{$:/language/Buttons/NewTiddler/Caption}} class=<<tv-config-toolbar-class>>>
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
New {{$:/core/images/new-button}}
</$list>
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
<span class="tc-btn-text"><$text text={{$:/language/Buttons/NewTiddler/Caption}}/></span>
</$list>
</$button>
<$button message="tm-permaview" tooltip={{$:/language/Buttons/Permaview/Hint}} aria-label={{$:/language/Buttons/Permaview/Caption}} class=<<tv-config-toolbar-class>>>
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
{{$:/core/images/permaview-button}}
</$list>
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
<span class="tc-btn-text"><$text text={{$:/language/Buttons/Permaview/Caption}}/></span>
</$list>
</$button>
<$fieldmangler><$button tooltip={{$:/language/Buttons/Save/Hint}} aria-label={{$:/language/Buttons/Save/Caption}} class=<<tv-config-toolbar-class>>>
<$action-sendmessage $message="tm-add-tag" $param={{$:/temp/NewTagName}}/>
<$action-deletetiddler $tiddler="$:/temp/NewTagName"/>
<$action-sendmessage $message="tm-add-field" $name={{$:/temp/newfieldname}} $value={{$:/temp/newfieldvalue}}/>
<$action-deletetiddler $tiddler="$:/temp/newfieldname"/>
<$action-deletetiddler $tiddler="$:/temp/newfieldvalue"/>
<$action-sendmessage $message="tm-save-tiddler"/>
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
{{$:/core/images/done-button}}
</$list>
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
<span class="tc-btn-text"><$text text={{$:/language/Buttons/Save/Caption}}/></span>
</$list>
</$button>
</$fieldmangler>
<$button message="tm-save-wiki" param={{$:/config/SaveWikiButton/Template}} tooltip={{$:/language/Buttons/SaveWiki/Hint}} aria-label={{$:/language/Buttons/SaveWiki/Caption}} class=<<tv-config-toolbar-class>>>
<span class="tc-dirty-indicator">
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
{{$:/core/images/save-button}}
</$list>
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
<span class="tc-btn-text"><$text text={{$:/language/Buttons/SaveWiki/Caption}}/></span>
</$list>
</span>
</$button>
\define lingo-base() $:/language/ControlPanel/Saving/TiddlySpot/
\define backupURL()
http://$(userName)$.tiddlyspot.com/backup/
\end
\define backupLink()
<$reveal type="nomatch" state="$:/UploadName" text="">
<$set name="userName" value={{$:/UploadName}}>
<$reveal type="match" state="$:/UploadURL" text="">
<<backupURL>>
</$reveal>
<$reveal type="nomatch" state="$:/UploadURL" text="">
<$macrocall $name=resolvePath source={{$:/UploadBackupDir}} root={{$:/UploadURL}}>>
</$reveal>
</$set>
</$reveal>
\end
<<lingo Description>>
|<<lingo UserName>> |<$edit-text tiddler="$:/UploadName" default="" tag="input"/> |
|<<lingo Password>> |<$password name="upload"/> |
|<<lingo Backups>> |<<backupLink>> |
''<<lingo Advanced/Heading>>''
|<<lingo ServerURL>> |<$edit-text tiddler="$:/UploadURL" default="" tag="input"/> |
|<<lingo Filename>> |<$edit-text tiddler="$:/UploadFilename" default="index.html" tag="input"/> |
|<<lingo UploadDir>> |<$edit-text tiddler="$:/UploadDir" default="." tag="input"/> |
|<<lingo BackupDir>> |<$edit-text tiddler="$:/UploadBackupDir" default="." tag="input"/> |
<<lingo TiddlySpot/Hint>>
\define searchResultList()
//<small>Matches:</small>//
<$list filter="[!is[system]$(searchType)${$(searchTiddler)$}!is[image]!prefix[Draft of]sort[title]limit{$:/searchN}]" template="$:/core/ui/ListItemTemplate"/>
\end
<$set name='searchType' value={{$:/searchType/Temp}}>
<<searchResultList>>
<div class="tc-menu-list-item"><$reveal type='match' state='$:/Login!!s' text='$:/'><$button style='background-color:transparent;border:none;' set='$:/Controls/myEditTiddler/Temp' setTo={{!!title}}><$action-setfield $tiddler="$:/temp/advancedsearch" $field="text" $value=""/>{{$:/core/images/close-others-button}}</$button></$reveal><$link to={{!!title}}><$view field="title"/></$link> </div>
<$scrollable fallthrough="no" class="tc-sidebar-scrollable">
<div class="tc-sidebar-header">
<$reveal state="$:/state/sidebar" type="match" text="yes" default="yes" retain="yes" animate="yes">
<h1 class="tc-site-title">
<$transclude tiddler="$:/SiteTitle" mode="inline"/>
</h1>
<div class="tc-site-subtitle">
<$transclude tiddler="$:/SiteSubtitle" mode="inline"/>
</div>
{{||$:/core/ui/PageTemplate/pagecontrols}}
<$transclude tiddler="$:/core/ui/SideBarLists" mode="inline"/>
</$reveal>
</div>
</$scrollable>
<div class="tc-search-results">
<$list filter="[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]" emptyMessage="""
<$list filter="[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]">
<$transclude mode="block"/>
</$list>
""">
<$macrocall $name="tabs" tabsList="[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]" default={{$:/config/SearchResults/Default}}/>
</$list>
</div>
<div class="tc-more-sidebar">
<<tabs "[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]" "$:/core/ui/MoreSideBar/Tags" "$:/state/tab/moresidebar" "tc-vertical">>
</div>
\define lingo-base() $:/language/CloseAll/
\define drop-actions()
<$action-listops $tiddler="$:/StoryList" $subfilter="+[insertbefore:currentTiddler<actionTiddler>]"/>
\end
<$list filter="[list[$:/StoryList]!prefix[$:/]]" history="$:/HistoryList" storyview="pop">
<$button message="tm-close-tiddler" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class="tc-btn-invisible tc-btn-mini">×</$button> <$link to={{!!title}}><$view field="title"/></$link>
</$list>
\define lingo-base() $:/language/ControlPanel/
\define config-title()
$:/config/PageControlButtons/Visibility/$(listItem)$
\end
<<lingo Basics/Version/Prompt>> <<version>>
<$set name="tv-config-toolbar-icons" value="yes">
<$set name="tv-config-toolbar-text" value="yes">
<$set name="tv-config-toolbar-class" value="">
<$list filter="[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]" variable="listItem">
<div style="position:relative;">
<$checkbox tiddler=<<config-title>> field="text" checked="show" unchecked="hide" default="show"/> <$transclude tiddler=<<listItem>>/> <i class="tc-muted"><$transclude tiddler=<<listItem>> field="description"/></i>
</div>
</$list>
</$set>
</$set>
</$set>
\define rC()
<$count filter="[!is[system]$(searchType)${$(searchTiddler)$}]"/>
\end
<head><link href="https://fonts.googleapis.com/css?family=Baloo+Bhaijaan" rel="stylesheet"></head>
<style>
.tc-tagged-tips blockquote {font-family:courier; font-size:125%;}
.tc-tagged-tips blockquote ul li {font-family:arial; font-size:100%;}
.tc-tagged-tips blockquote p {font-family:arial; font-size:100%;}
.tc-tagged-tips blockquote span {font-family:arial; font-size:100%;}
.scrollZ {
border: none;
background-color: transparent;
padding: 0;
height: 600px;
position: relative;
width:600px;
}
.boxCorner
{
position: relative;
}
.boxCorner:after
{
z-index: -1;
position: absolute;
content: "";
bottom: 15px;
right: 10px;
left: auto;
width: 50%;
top: 80%;
max-width:300px;
background: #777;
-webkit-box-shadow: 0 15px 10px #777;
-moz-box-shadow: 0 15px 10px #777;
box-shadow: 0 15px 10px #777;
-webkit-transform: rotate(3deg);
-moz-transform: rotate(3deg);
-o-transform: rotate(3deg);
-ms-transform: rotate(3deg);
transform: rotate(3deg);
}
.cardBox {background-color:#fff;padding:15px;box-shadow: 0px 1px 5px rgba(0, 0, 0, 0.5);-moz-box-shadow: 0px 1px 5px rgba(0, 0, 0, 0.5);box-shadow: 0px 1px 5px rgba(0, 0, 0, 0.5);padding:2px 15px;margin-bottom:30px;}
.toggle {background-color:grey;color:#fff;border:none;fill:#fff;}
.toggle:hover {background-color:#5778D9;}
.toggled {background-color:#5778D9;}
.searchButton { background-color:transparent;border:none; font-size:200%;margin:0 0 20px 0; }
.tc-tagged-cleanBackground {
background-color:transparent;
border:none;
box-shadow:none;
height:1px;
padding:0;
}
.tc-tagged-cleanBackground .tc-tiddler-body {
font-size: 1em;
}
</style>
<$reveal type='match' state='$:/Login!!s' text="$:/">
<div style='margin-top:50px;'>
<div style='margin-bottom:5px;margin-left:65px;font-size:200%;'><$button message="tm-close-tiddler" param="Welcome" class="tc-btn-invisible"><$action-navigate $to="$:/FindThis"/>{{$:/core/images/advanced-search-button}}</$button></div>
<$transclude tiddler='$:/NewSideBar' mode='block'/>
</div>
<div class='clearfix'></div>
<$reveal state="$:/state/sidebar" type="nomatch" text="no">
<$button set="$:/state/sidebar" setTo="no" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class="tc-btn-invisible">{{$:/core/images/chevron-right}}</$button>
</$reveal>
<$reveal state="$:/state/sidebar" type="match" text="no">
<$button set="$:/state/sidebar" setTo="yes" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class="tc-btn-invisible">{{$:/core/images/chevron-left}}</$button>
</$reveal>
\define frame-classes()
tc-tiddler-frame tc-tiddler-view-frame $(missingTiddlerClass)$ $(shadowTiddlerClass)$ $(systemTiddlerClass)$ $(tiddlerTagClasses)$
\end
\define folded-state()
$:/state/folded/$(currentTiddler)$
\end
<$set name="storyTiddler" value=<<currentTiddler>>><$set name="tiddlerInfoState" value=<<qualify "$:/state/popup/tiddler-info">>><$tiddler tiddler=<<currentTiddler>>><div class=<<frame-classes>>><$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]!has[draft.of]prefix{!!skip}]" variable="listItem"><$transclude tiddler=<<listItem>>/></$list>
</div>
</$tiddler></$set></$set>
<$reveal type='nomatch' state='!!marked' text='1'>
<$set name='ifNot' filter='[title<currentTiddler>prefix{$:/Login!!s}]' value=
"""
<$reveal type="nomatch" state=<<folded-state>> text="hide" tag="div" retain="yes" animate="yes">
<div class="tc-subtitle">
<$link to={{!!modifier}}>
<$view field="modifier"/>
</$link> <$view field="modified" format="date" template={{$:/language/Tiddler/DateFormat}}/>
</div>
</$reveal>
""" emptyValue="""<span style='line-height:0;color:#fffl'></span>""">
<<ifNot>>
<$reveal type="nomatch" state=<<folded-state>> text="hide" tag="div" retain="yes" animate="yes">
<div class="tc-tags-wrapper"><$list filter="[all[current]tags[]sort[title]]" template="$:/core/ui/TagTemplate" storyview="pop"/></div>
</$reveal>
\define title-styles()
fill:$(foregroundColor)$;
\end
\define config-title()
$:/config/ViewToolbarButtons/Visibility/$(listItem)$
\end
<style>
.close-button {float:right;background-color:transparent;border:none;line-height:1.2;margin:0;font-size:24px;padding:0 7px 2px 7px;border-radius:7px;}
.my-title {font-size:125%;text-transform:uppercase;font-family: 'Baloo Bhaijaan', cursive;margin-bottom:0;}
</style>
<$reveal type='nomatch' state='!!marked' text='1'>
<div class="tc-tiddler-title"><div class="tc-titlebar">
<$set name='ifNot' filter='[title<currentTiddler>prefix[$:/]]' value=
"""
<span class="tc-tiddler-controls"><$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]" variable="listItem">
<$reveal type="nomatch" state=<<config-title>> text="hide"><$transclude tiddler=<<listItem>>/></$reveal></$list>
</span>
""" emptyValue="""<$button class='close-button'>×
<$action-sendmessage $message='tm-close-tiddler' $param=<<currentTiddler>>/>
</$button>
<$reveal type='match' state='$:/AdminBar/State!!text' text='show'><$transclude tiddler='$:/core/ui/Buttons/clone' mode='inline'/>
<$button message="tm-edit-tiddler" tooltip={{$:/language/Buttons/Edit/Hint}} class=<<tv-config-toolbar-class>>>
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
{{$:/core/images/edit-button}}
</$list>
</$button><$button message="tm-permaview" tooltip={{$:/language/Buttons/Permaview/Hint}} class=<<tv-config-toolbar-class>>>
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
{{$:/core/images/permaview-button}}
</$list>
</$button>
</$reveal>
""">
<<ifNot>></$set>
<$set name="tv-wikilinks" value={{$:/config/Tiddlers/TitleLinks}}>
<$link>
<$set name="foregroundColor" value={{!!color}}>
<span class="tc-tiddler-title-icon" style=<<title-styles>>>
<$transclude tiddler={{!!icon}}/>
</span>
</$set>
<$list filter="[all[current]removeprefix[$:/]]">
<span class="my-title" title={{$:/language/SystemTiddler/Tooltip}}>
<span class="tc-system-title-prefix">$:/</span><$text text=<<currentTiddler>>/>
</span>
</$list>
<$list filter="[all[current]!prefix[$:/]]">
<span class="my-title">
<$view field="title"/>
</span>
</$list>
</$link>
</$set>
</div>
</div>
</$reveal>
\define saveButtonSet()
<$action-sendmessage $message="tm-download-file" $param="$:/CoverSheet/main" filename="Document for $(clientName)$ from $(advisorName)$ (Task: $(taskID)$).doc"/>
\end
\define downLoadVIP(l)
<$set name='advisorName' value={{$:/Login!!name}}>
<$set name='taskID' value={{$:/cs/od/anotherTaskID}}>
<$set name='clientName' value={{$:/cs/od/Client}}>
<$button class='downloader'>
<span>{{$:/core/images/download-button}} .doc</span> $l$
<<saveButtonSet>>
</$button>
</$set></$set></$set>
\end
<<downLoadVIP>>
\define addResearchQ()
<$action-listops $tiddler="$:/VIPQ" $field="rlist" $subfilter="[list[$:/VIPQ!!rlist]append{$:/VIPQ_R!!list}]"/>
\end
\define removeResearchQ()
<$action-setfield $tiddler="$:/VIPQ" $field="rlist" $value=''/>
\end
<style>
.selectedButton {background-color:pink;}
.ab {border:none;padding:5px 10px;}
</style>
<<st "Task details">>
<$edit-text tiddler='$:/VIPQ/Client' field='text' tag='input' size='20' placeholder='Client name'/> <$edit-text tiddler='$:/VIPQ/Task' field='text' tag='input' size='7' placeholder='Task ID'/>
<<st "Message to client">>
<$edit-text tiddler='$:/VIPQ/Client/Message' field='text' tag='textarea' minHeight='170px' class='tc-edit-texteditor' placeholder='Write your message to the client here.'/>
<<st "Task type">>
<$radio tiddler='$:/VIPQ/TaskType' value='p'> Package task</$radio> <$radio tiddler='$:/VIPQ/TaskType' value='v'> VIP task</$radio>
<<st "Include research-orientated questions?">>
Is this an ~SoP/ an application to a graduate program that will include a research component?
<$button class='ab' selectedClass='selectedButton' set='$:/VIPQ/SoP' setTo='1'><<addResearchQ>> Yes</$button> <$button class='ab' selectedClass='selectedButton' set='$:/VIPQ/SoP' setTo='0'> <<removeResearchQ>>No</$button>
{{$:/CoverSheet/pre}}
<$view tiddler="$:/CoverSheet/Template" format="htmlwikified"/>
{{$:/VIPQholder/post}}
\define breakDown()
$:/cs/od/OfficialReq/Bullet/$()$
\end
\define enterHere(p)
<$edit-text tiddler="$p$" tag='input' size='50' placeholder={{$p$!!p}}/>
\end
<style>
table td {vertical-align:middle;}
table th {text-align:left;}
</style>
<<enterHere $:/cs/od/Client>>
<<enterHere $:/cs/od/Subject>>
<<enterHere $:/cs/od/TargetSchool>>
<$edit-text tiddler="$:/cs/od/anotherTaskID" tag='input' size='50' placeholder="task ID"/>
<table class='1'><tr>
<th>Target application level </th><td><$list filter='[list[$:/cs/od/TargetAppType]]'> <$radio tiddler='$:/cs/od/TargetAppType/Temp' value={{!!title}}> {{!!title}} </$radio> </$list></td></tr>
<tr><th>Target school location</th><td><$list filter='[list[$:/cs/od/TargetCountry]]'><$radio tiddler='$:/cs/od/TargetCountry/Temp' value={{!!title}}> {{!!title}} </$radio></$list><$reveal type='match' state='$:/cs/od/TargetCountry/Temp' text='Other'><$edit-text tiddler='$:/cs/od/TargetCountry/Other/Temp' tag='input' placeholder='Type name of country' size='50'/></$reveal></td></tr>
<tr><th>Service level</th><td><$list filter='[tag[$:/Services]]'><$radio tiddler='$:/cs/od/ServiceLevel/Temp' value={{!!ln}}> {{!!title}}</$radio> </$list></td>
</tr><tr>
<th>Iteration# </th>
<td><$edit-text tiddler='$:/cs/od/Iteration/Temp' size='4' default='1' tag='input'/></td>
</tr></table>
<$reveal type='nomatch' state='$:/cs/od/ServiceLevel/Temp' text='1'>
<$list filter='[tag[DocType]]'>
<$radio tiddler='$:/cs/od/DocType/Temp' value={{!!title}}> {{!!title}}</$radio>
</$list>
<div style='font-size:120%;'>''Official requirement''</div>
<$edit-text tiddler='$:/cs/od/OfficialReq/Temp' tag='textarea' class='tc-edit-texteditor' placeholder='Copy + paste the details your client has included on their order page under Official requirement'/>
<$reveal type='nomatch' state='$:/cs/od/OfficialReq/Temp' text=''>
<div style='font-size:120%;'>''Breakdown the question''</div>
<$set name='makeN' filter='[{$:/cs/od/OfficialReq/Bullet/Temp/Current}next[$:/Tools/Numbers]]'>
<$set name='makeNcontainer' filter='[title<makeN>addprefix[$:/cs/od/OfficialReq/Bullet/]addsuffix[/Temp]]'>
<table style='border:none;' width='75%'>
<$list filter='[prefix[$:/cs/od/OfficialReq/Bullet/]!prefix[$:/cs/od/OfficialReq/Bullet/1/]suffix[Temp]]'>
<tr><td style='border:none;border-bottom:1px dotted grey;' width='70%'><$edit-text tiddler={{!!title}} tag='textarea' class='tc-edit-texteditor' minHeight='10px' placeholder=''/></td><td style='vertical-align:middle;border:none;border-bottom:1px dotted grey;' width='5%'><$button style='border:none;background-color:#fff;float:right;'>
<$action-deletetiddler $tiddler={{!!title}}/>
{{$:/core/images/delete-button}}
</$button></td></tr>
</$list>
<$button class='tabtag' style='fill:#fff;padding-bottom:7px;'>{{$:/core/images/new-button}}
<$action-setfield $tiddler='$:/cs/od/OfficialReq/Bullet/Temp/Current' $value=<<makeN>>/>
<$action-setfield $tiddler=<<makeNcontainer>> $field='1' $value='x'/>
</$button>
<br><br>
<div style='font-size:120%;'>''Client message to you''</div>
<$edit-text tiddler='$:/cs/od/ClientMessage/Temp' tag='textarea' class='tc-edit-texteditor' placeholder='Copy + paste the client message from the order page'/>
<div style='font-size:120%;'>''Your message to client''</div>
<$edit-text tiddler='$:/cs/od/AdvisorMessage/Temp' tag='textarea' class='tc-edit-texteditor' placeholder='Copy + paste the client message from the order page'/>
<div style='float:left;margin-right:10px;border-right:1px dotted black;padding-right:10px;;'><$list filter='[prefix[$:/download/coversheet/]app[Pages]sort[level]]'>
<a href={{!!text}} target="_blank">{{!!caption}} ({{!!app}})</a>
</$list></div>
<div style='float:left;'>
<$list filter='[prefix[$:/download/coversheet/]app[Word]sort[level]]'>
<a href={{!!text}} target="_blank">{{!!caption}} ({{!!app}})</a>
</$list>
</div>
<div class='clearfix'></div>
\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock
<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'><meta http-equiv=Content-Type content="text/html; charset=utf-8">
<head><title>Cover Sheet</title>
<!--[if gte mso 9]>
<xml>
<w:WordDocument>
<w:View>Print</w:View>
<w:Zoom>100</w:Zoom>
<w:DoNotOptimizeForBrowser/>
</w:WordDocument>
</xml>
<![endif]-->
<style><!--
@page
{
size:21cm 29.7cmt; /* A4 */
margin:2.54cm 2.54cm; /* Margins: 2.5 cm on each side */
mso-page-orientation: portrait;
}
@page Section1 { }
div.Section1 { page:Section1; }
p.MsoHeader, p.MsoFooter { border: 1px solid none; }
--></style>
</head>
<body>
<div class=Section1>
\define serviceName()
$:/Zh/Level$(sType)$
\end
<$set name='sType' value={{$:/cs/od/ServiceLevel/Temp}}>
<table style='width:468pt;'><tr><td rowspan='2' style='width:50pt;height:50pt;'><span style='text-align:center;background-color:#EB5321;color:#fff;font-size:400%;'>芝</span></td><td style='text-align:left;font-size:350%;padding-left:10px;border-bottom:1px solid black;'><$transclude tiddler=<<serviceName>>/></td></tr><tr><td style='padding-left:15px;'><h3 style='margin-top:0px;text-transform:uppercase;text-align:left;'>Application to study {{$:/cs/od/Subject}} at {{$:/cs/od/TargetSchool}}</h3></td></tr></table>
<table style='width:468pt;'>
<tr>
<td style='border:1px solid grey;padding:0 5px;'>
<p style='margin:1px 0;'><b>Dear {{$:/cs/od/Client}}</b></p>
{{$:/cs/od/AdvisorMessage/Temp}}
</td></tr>
<tr>
<td style='border:1px solid grey;text-align:left;background-color:#EB5321;color:#fff;font-size:100%;padding:0 5px;'>{{$:/Login!!name}} | <span style='font-size:80%;'>Advisor</span><br>{{ZHISHIQ}}<br><a style='color:#fff;' href='http://www.zhishiq.com/zh/product/service-text/graduate'>zhishiq.com</a>
</td>
</tr>
</table>
<$reveal type='nomatch' state='$:/cs/od/ServiceLevel/Temp' text='1'><br>
<div style='text-transform:uppercase;font-weight:bold;'>The question</div>
<blockquote>{{$:/cs/od/OfficialReq/Temp}}</blockquote>
<div style='text-transform:uppercase;font-weight:bold;'>Breakdown</div>
<ul>
<$list filter='[prefix[$:/cs/od/]suffix[/Temp]regexp:title[Bullet]!field:text[]]'>
<li>{{!!text}}</li>
</$list>
</ul>
<div style='text-transform:uppercase;font-weight:bold;'>The document</div>
</$reveal>
[PASTE TEXT HERE]
<div style='text-transform:uppercase;font-weight:bold;'>Notes</div>
*<b>New materials</b>: Materials submitted after the first iteration may only be submitted with the express permission of the advisor or at the specific request of the relevant advisor (which may happen regularly!)
*<b>Service add-on request procedure</b>: Documents will be completed in accordance with the details you provide on your order form at the time the advisor commences work on the document for the first time. If you need to update anything, please do so as a matter of urgency.
*<b>Service add-ons available</b>: If you need any of the following, please contact ZHISHIQ office staff in the first instance:
**Uploading documents that exceed the purchased service’s word count limits.
**Applying to multiple different types of programs.
**Asking for multiple, different questions to be addressed during the same service.
**Seeking expedited services beyond the service description.
**An additional iteration after the service has been closed.
*<b>How to request a service add-on?</b>: Please contact ZHISHIQ staff to make your request. They will be happy to confirm your requirements, liaise with your advisor, and help you make the additional payment required for your service add-on.
*<b>Ethical applications</b>: Advisors do not and cannot prepare materials on client’s behalf because it is unethical and puts both the client's application and the advisor's personal integrity at risk.
\define makeRunThrough()
<$action-createtiddler $basetitle="""$:/RunThroughs/RunThrough.$(runThroughContainer)$/Tags"""/>
<$action-createtiddler $basetitle="$(runThroughContainer)$" text="""$(inStructions)$<$macrocall $name="runThroughViewer" n="$(runThroughContainer)$"/>""" tags="$(deckTag)$"/>
<$action-createtiddler $basetitle="""$:/RunThroughs/RunThrough.$(runThroughContainer)$/Text"""/>
<$action-navigate $to="$(runThroughContainer)$"/>
Create run through
<$action-setfield $tiddler="$:/runThroughContainer" $value="$(ifThenDontDelete)$"/>
\end
<$edit-text placeholder="Name of runThrough" tag="input" tiddler="$:/runThroughContainer"/>
<$checkbox tiddler="$:/runThroughContainer/instructions" field="text" checked="1" unchecked=""> Include instructions at top?</$checkbox>
<$checkbox tiddler="$:/runThroughContainer/deck" field="text" checked="1" unchecked=""> Part of a set?</$checkbox>
<$reveal type='match' state='$:/runThroughContainer/deck' text='1'>
<$edit-text tag="input" placeholder="Name of set" tiddler="$:/runThroughContainer/deckname"/>
<$list filter="[prefix[Sentence tips]]">
</$list>
</$reveal>
<$set name="runThroughContainer" value={{$:/runThroughContainer}}>
<$set name="inStructions" filter="[title[$:/runThroughContainer/instructions]field:text[1]]" value="""<<st Instructions>> <p>Click the <$button class="tc-btn-invisible">{{$:/core/images/close-others-button}}</$button> to highlight issue and reveal comments. Click again to remove.</p>""" emptyValue="""<span></span>""">
<$set name="makeDeckTag" filter="[title[$:/runThroughContainer/deckname]get[text]]">
<$set name="deckTag" filter="[title[$:/runThroughContainer/deck]field:text[1]]" value=<<makeDeckTag>> emptyValue="tips">
<$set name="ifThenDontDelete" filter="[title[$:/runThroughContainer/deck]field:text[1]]" value={{$:/runThroughContainer}} emptyValue="">
<$button>
<<makeRunThrough>>
</$button>
</$set>
</$set>
To do
*Add $:/ prefix when it is part of a deck.
*Change nav when it is part of a deck so it will navigate to the tiddlers with the incremented $basetitle$.
*Add auto 'next card' buttons at the bottom of each item in a deck
*Get those nav buttons to create next item when in admin edit mode and normal navigation when in user view mode.
.five-sixths,
.four-sixths,
.one-fourth,
.one-half,
.one-sixth,
.one-third,
.three-fourths,
.three-sixths,
.two-fourths,
.two-sixths,
.two-thirds {
float: left;
margin-left: 2.564102564102564%;
}
.one-half,
.three-sixths,
.two-fourths {
width: 48.717948717948715%;
}
.one-third,
.two-sixths {
width: 31.623931623931625%;
}
.four-sixths,
.two-thirds {
width: 65.81196581196582%;
}
.one-fourth {
width: 23.076923076923077%;
}
.three-fourths {
width: 74.35897435897436%;
}
.one-sixth {
width: 14.52991452991453%;
}
.five-sixths {
width: 82.90598290598291%;
}
.first {
clear: both;
margin-left: 0;
}
.clearfix::before {
content: " ";
display: table;
}
.clearfix::after {
clear: both;
content: " ";
display: table;
}
<$reveal type='match' state='$:/Login!!password' text={{$:/Login/Password!!admin}}><$button class='menu'>
<$action-navigate $to='$:/Controls'/>ctrl
</$button></$reveal>
<$list filter='[all[tiddlers]!is[system]prefix[]!sort[]limit[25]]'>
<$button><$action-deletetiddler $tiddler={{!!title}}/>Delete
</$button> <$link to={{!!title}}>{{!!title}}</$link><br>
These are very problematic for our business for reasons that should be obvious. We deal with complaints as swiftly and effectively as possible (see [[Complaints handling]]. However it is not always possible to placate dissatisfied clients. The consequence of this is not only the loss of business from one indivdual, but often a whole network of their friends and contacts. Please bear this in mind, and go the extra mile when necessary.
Client reviews of *** or less will be treated in exactly the same way as Peer Reviews. I.e. they will not result in an automatic penalty to your account, however they will trigger an alert to administrators who will determine what feedback may be beneficial, and whether a penalty needs to be applied to your account.
Please see [[Peer Reviews]] for more information about how this works.
\define widthSize()
width:$(ifFullWidth)$;float:left;margin-bottom:28px;
\end
\define widthSizeR()
width:$(ifNoLeft)$;float:left;margin-left:$(ifNoLeftMargin)$;
\end
\define selectState()
$:/$(mainHolder)$/showstate
\end
<head><link href="https://fonts.googleapis.com/css?family=Baloo+Bhaijaan" rel="stylesheet"></head>
<<closeButton>>
<$set name='ifFullWidth' filter='[title[$:/fullWidth]field:text[on]]' value='98%' emptyValue='68%'>
<$set name='ifNoLeft' filter='[title[$:/DisplayConfig/Left]field:list[]]' value='98%' emptyValue='28%'>
<$set name='ifNoLeftMargin' filter='[title[$:/DisplayConfig/Left]field:list[]]' value='0%' emptyValue='1.5%'>
<div style='width:100%;padding:0;margin:0;'>
<div style="margin-bottom:-30px;font-size:200%;text-transform:uppercase;font-family: 'Baloo Bhaijaan', cursive;">''{{!!caption}}''</div><br><br>
<$list filter='[list[$:/DisplayConfig/tempStore]]'>
<$reveal type='nomatch' state='$:/showState' text={{!!title}}>
<$button set='$:/showState' setTo={{!!title}} class='tabtag';><div class='my-title'>{{!!title}}</div></$button></$reveal><$reveal type='match' state='$:/showState' text={{!!title}}><$button set='$:/showState' setTo='' class=''><div class='my-title'>{{!!title}}</div></$button>
</$reveal>
</$list>
<$list filter='[title{$:/DisplayConfig/Current}]'>
<$list filter='[tag{!!caption}first[3]]'>
{{!!title}}
<$reveal type='match' state='$:/showState' text={{!!title}}>
<div style='border:none;box-shadow:none;background-color:transparent;padding:10px 10px;margin-top:24px;'>
<$set name='itemTitle' filter='[title{!!title}]'>
<div class='first' style='width:48%;float:left;text-align:center;'>
<$button class='tabtag2'>
<$action-listops $tiddler='$:/DisplayConfig/Left' $field='list' $subfilter='[list[$:/DisplayConfig/Left]prepend<itemTitle>]'/>
{{$:/core/images/chevron-down}}
<$action-listops $tiddler='$:/DisplayConfig/tempStore' $field='list' $subfilter='[list[$:/DisplayConfig/tempStore]] +[remove<itemTitle>]'/>
</$button>
</div>
<div style='width:48%;float:left;text-align:center;'>
<$button style='margin-left:25px;' class='tabtag2'>
<$action-listops $tiddler='$:/DisplayConfig/Right' $field='list' $subfilter='[list[$:/DisplayConfig/Right]prepend<itemTitle>]'/>
{{$:/core/images/chevron-down}}
<$action-listops $tiddler='$:/DisplayConfig/tempStore' $field='list' $subfilter='[list[$:/DisplayConfig/tempStore]] +[remove<itemTitle>]'/>
</$button>
</div>
</$set>
</div>
</$reveal></$list><br>
<div style=<<widthSize>>>
<$list filter='[list[$:/DisplayConfig/Left]]'>
<$set name='itemTitle' filter='[title{!!title}]'>
<div style='float:right;'>
<$button set='$:/showState' setTo='' style='border:none;'>
<$action-listops $tiddler='$:/DisplayConfig/tempStore' $field='list' $subfilter='[list[$:/DisplayConfig/tempStore]append<itemTitle>]'/>
<$action-listops $tiddler='$:/DisplayConfig/Left' $field='list' $subfilter='[list[$:/DisplayConfig/Left]] +[remove<itemTitle>]'/>×
</$button>
</div>
<div class='my-title' style='margin-top:24px;'><$transclude tiddler={{!!title}} field='title'/></div>
<div style='background-color:#fff;border-radius:5px;padding:5px 10px;' class='boxShadow'>
<$transclude tiddler={{!!title}} mode='block'/></div></$set>
</$list></div>
<$reveal type='nomatch' state='$:/fullWidth' text='on'>
<div style=<<widthSizeR>>>
<$list filter='[list[$:/DisplayConfig/Right]]'>
<$set name='itemTitle' filter='[title{!!title}]'>
<div style='float:right;'><$button set='$:/showState' setTo='' style='border:none;'>
<$action-listops $tiddler='$:/DisplayConfig/tempStore' $field='list' $subfilter='[list[$:/DisplayConfig/tempStore]append<itemTitle>]'/>
<$action-listops $tiddler='$:/DisplayConfig/Right' $field='list' $subfilter='[list[$:/DisplayConfig/Right]] +[remove<itemTitle>]'/>×
</$button></div>
</$set>
<div class='my-title' style='margin-top:24px;'><$transclude tiddler={{!!title}} field='title'/></div>
<div style='background-color:transparent;border-radius:5px;padding:0px 5px 0px 10px;border:none;'>
<$transclude tiddler={{!!title}} mode='block'/></div>
</$list>
</div>
<div class='clearfix'></div>
<style>
.side {
border: none;
background-color: transparent;
padding: 0;
height: 650px;
position: relative;
}
</style>
<div style='width:100%;margin:0;padding:0;'></div>
<div style='width:60%;'></div>
<div style='position:fixed;top:70px;z-index:500000000;border:2px solid black;padding:0 10px;right:0px;background-color:#fff;width:40%;'>
<<closeButton>>
<$scrollable class='side'>
<$list filter='[tag[$:/NavTemplate]]'>
<small>
''{{!!caption}}''<br>
<center><$edit-text field='left' tag='textarea'/> <$edit-text field='store' tag='textarea'/> <$edit-text field='right' tag='textarea'/></center>
<center><$edit-text field='list' tag='textarea'/></center>
</small><br>
</$list>
</div>
<div class='clearfix' style='width:100%;margin:0;padding:0;'></div>
<$set name="preAppendWhat" filter="[title[Peer Reviews]]">
<$button>
<$action-listops $tiddler='$:/DisplayConfig/Left' $field='list' $subfilter='[list[$:/DisplayConfig/Left]prepend[Incentives]]'/>
</$button>
<$button>
<$action-listops $tiddler='$:/DisplayConfig/Right' $field='list' $subfilter='[list[$:/DisplayConfig/Right]prepend<preAppendWhat>]'/>
</$button>
<$range tiddler=someTiddler field=someField min=minValue max=maxValue step=stepSize class=someCSSClass/>
<$set name='ifFullWidth' filter='[title[$:/fullWidth]field:text[on]]' value='98%' emptyValue='48%'>
<$set name='ifNoLeft' filter='[title[$:/DisplayConfig/Left]field:list[]]' value='98%' emptyValue='48%'>
<$set name='ifNoLeftMargin' filter='[title[$:/DisplayConfig/Left]field:list[]]' value='0%' emptyValue='1.5%'>
<$set name='ifOffChoose' filter='[title[$:/fullWidth]field:text[off]]' value="""<$action-setfield $tiddler='$:/showViewChoices' $value='hide'/>""" emptyValue="""<$action-setfield $tiddler='$:/showViewChoices' $value='hide'/>""">
<$button set='$:/fullWidth' selectedClass='selected' setTo='off'>Full screen off</$button>
<$button set='$:/fullWidth' selectedClass='selected' setTo='on'><<ifOffChoose>>Full screen on</$button>
<$reveal type='match' state='$:/showViewChoices' text='show'>
<div style='position:absolute;background-color:#fff;'>
<b>Select item to open</b>
{{$:/userSearch}}
</div>
</$reveal>
<<list-links-draggable tag:"$:/DisplayConfig/Right">>
\define dispLay(tag,n)
<style>
.scrollZ {
border: none;
background-color: transparent;
padding: 0;
height: 400px;
position: relative;
width:650px;
}
</style>
<table style='border:none;'><tr><td width='200px' style='border:none;vertical-align:top;'>
<$list filter='[tag[$tag$]]'>
<div style='text-align:right;'>
<$set name='checkCaption' filter='[title{!!title}has[caption]]' value={{!!caption}} emptyValue={{!!title}}>
<$button style='font-size:75%;padding:5px;border-radius:5px;text-align:left;' class='toggle' selected='toggled' set='$:/displayViewer/state$n$' setTo={{!!title}}><<checkCaption>></$button>
</$set>
</div>
</$list>
</td><td width='800px' style='border:none;padding-left:20px;'>
<div class='cardBox' style='width:700px;padding-right:20px;'>
<$scrollable class='scrollZ'>
<$set name='checkCaption2' filter='[title{$:/displayViewer/state$n$}has[caption]]' value="""<$transclude tiddler={{$:/displayViewer/state$n$}} field='caption' mode='block'/>""" emptyValue="""<$transclude tiddler={{$:/displayViewer/state$n$}} field='title' mode='block'/>""">
<small><$macrocall $name='st' t=<<checkCaption2>>/><$transclude tiddler={{$:/displayViewer/state$n$}} mode='block'/></small>
</$set>
</$scrollable>
</div>
</td></tr></table>
\end
Tailoring questions based on question breakdown to help client improve questionnaire responses
Ask about accomplishments not responsibilities
Strong VIP outline example
Uninformative or vague material
When to send attachments via the messaging system
Common causes of complaints
Accept/ Confirm Checklist
How package task types are displayed
\define arrow(d)
<div style='float:left;font-size:300%;width:50px;margin-top:35px;'>$d$</div>
\end
\define instruct(t)
<div style='padding:5px 5px 0 5px;border-radius:14px;float:left;width:100px;border:1px solid grey;'>$t$</div>
\end
<div style='height:200px;font-size:80%;padding:0;width:100%;position:relative;margin-bottom:0;'>
<<instruct "Are the claims relevant to:
<ul style='padding-bottom:0;padding-left:20px;'><li>the course?</li><li style='padding:0;'>the question?</li></ul>">>
<<arrow "<-">><div style='float:left;width:150px;font-size:150%;text-align:center;'>What are the key claims in this candidate's case for admission?</div>
<<arrow "->">><<instruct "What factual information is presented to support these claims?">><<arrow "->">><<instruct "Is this factual information presented in the most effective way possible?">>
<div class='clearfix'></div>
https://www.dropbox.com/s/9hkbqtbeabffvy6/Level%201.pages?dl=0
https://www.dropbox.com/s/yxenmqcgmpvbjzl/Level%202.pages?dl=0
https://www.dropbox.com/s/jgw0j2bcdc5j4kq/VIP.pages?dl=0
https://www.dropbox.com/s/79ntxmlzkjy2c8q/Level%201%20Cover%20Sheet.docx?dl=0
https://www.dropbox.com/s/bdw8tltp6i7et25/Level%202%20Cover%20Sheet.docx?dl=0
https://www.dropbox.com/s/c5fspwum3h51fn7/VIP%20Cover%20Sheet.docx?dl=0
/*\
title: $:/edition/tw5.com/dropbox-url.js
type: application/javascript
tags: $:/tags/Macro
module-type: macro
Implements the Dropbox URL converter macro.
```
<$macrocall $name="dropbox-url" url={{$:/temp/dropbox}}/>
```
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.name = "dropbox-url";
exports.params = [
{name: "url", default: "https://www.dropbox.com/s/<gobbledegook>/mywiki.html"}
];
exports.run = function(url) {
url = url.replace("www.dropbox.com","dl.dropboxusercontent.com");
return "`" + url + "` <small>([[open|" + url + "]])</small>";
};
})();
\define .concat(1,2,3,4,5) $1$$2$$3$$4$$5$
\define .def(_) <dfn class="doc-def">$_$</dfn>
\define .em(_) <em class="doc-em">$_$</em>
\define .strong(_) <strong class="doc-strong">$_$</strong>
\define .place(_) <code class="doc-place">$_$</code>
\define .word(_) "$_$"
\define .preamble(_) :.doc-preamble $_$
\define .note(_)
@@.doc-note
;Note
: $_$
@@
\end
\define .tid(_) <code class="doc-tiddler">$_$</code>
\define .tag(_) <code class="doc-tag">$_$</code>
\define .field(_) <code class="doc-field">$_$</code>
\define .value(_) <code class="doc-value">$_$</code>
\define .op(_) <code class="doc-operator">$_$</code>
\define .var(_) <code class="doc-var">$_$</code>
\define .wid(_) <code class="doc-widget">$$_$</code>
\define .attr(_) <code class="doc-attr">$_$</code>
\define .param(_) <code class="doc-param">$_$</code>
\define .mtitle(_) $_$ Macro
\define .otitle(_) $_$ Operator
\define .vtitle(_) $_$ Variable
\define .link(_,to) <$link to="$to$">$_$</$link>
\define .clink(_,to) <span class="doc-clink"><<.link """$_$""" "$to$">></span>
\define .dlink(_,to) <$macrocall $name=".link" _=<<.def "$_$">> to="$to$">/>
\define .dlink-ex(_,to) <a href="$to$" class="tc-tiddlylink-external" target="_blank" rel="noopener noreferrer"><<.def "$_$">></a>
\define .flink(to) <$macrocall $name=".link" _=<<.field {{$to$!!caption}}>> to="$to$"/>
\define .mlink(_,to) <$macrocall $name=".link" _=<<.var "$_$">> to=<<.mtitle "$_$">>/>
\define .mlink2(_,to) <$macrocall $name=".link" _=<<.var "$_$">> to="$to$"/>
\define .olink(_) <$macrocall $name=".link" _=<<.op "$_$">> to=<<.otitle "$_$">>/>
\define .olink2(_,to) <$macrocall $name=".link" _=<<.op "$_$">> to=<<.otitle "$to$">>/>
\define .vlink(_,to) <$macrocall $name=".link" _=<<.var "$_$">> to=<<.vtitle "$_$">>/>
\define .vlink2(_,to) <$macrocall $name=".link" _=<<.var "$_$">> to="$to$"/>
\define .wlink(to) <$macrocall $name=".link" _=<<.wid {{$to$!!caption}}>> to="$to$"/>
\define .wlink2(_,to) <$macrocall $name=".link" _="$_$" to="$to$"/>
\define .key(_) <span class="doc-key">$_$</span>
\define .combokey(_) <$macrocall $name=".if" cond="$_$" then=<<.key '$_$'>>/>
\define .keycombo(1,2,3,4) <<.combokey "$1$">><<.if "$2$" +>><<.combokey "$2$">><<.if "$3$" +>><<.combokey "$3$">><<.if "$4$" +>><<.combokey "$4$">>
\define .tab(_) <span class="doc-tab">{{$_$!!caption}}</span>
\define .sidebar-tab(_) <<.tab "$:/core/ui/SideBar/$_$">>
\define .more-tab(_) <<.tab "$:/core/ui/MoreSideBar/$_$">>
\define .info-tab(_) <<.tab "$:/core/ui/TiddlerInfo/$_$">>
\define .controlpanel-tab(_) <<.tab "$:/core/ui/ControlPanel/$_$">>
\define .advancedsearch-tab(_) <<.tab "$:/core/ui/AdvancedSearch/$_$">>
\define .toc-tab() <<.tab "TableOfContents">>
\define .example-tab(_) <span class="doc-tab">$_$</span>
\define .button(_) <span class="doc-button">{{$:/core/ui/Buttons/$_$!!caption}}</span>
\define .tip(_) <div class="doc-icon-block"><div class="doc-block-icon">{{$:/core/images/tip}}</div> $_$</div>
\define .warning(_) <div class="doc-icon-block"><div class="doc-block-icon">{{$:/core/images/warning}}</div> $_$</div>
\define .state-prefix() $:/state/editions/tw5.com/
\define .lorem()
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
\end
\define .toc-lorem()
This is an example tiddler. See [[Table-of-Contents Macros (Examples)]].
<<.lorem>>
\end
\define .example(n,eg,egvar:NO-SUCH-VAR)
<div class="doc-example">
<$reveal default="$egvar$" type="match" text="NO-SUCH-VAR">
<$codeblock code="""$eg$"""/>
</$reveal>
<$reveal default="$egvar$" type="nomatch" text="NO-SUCH-VAR">
<!-- allow an example to contain """ -->
<$codeblock code=<<$egvar$>>/>
</$reveal>
<$list filter="[title<.state-prefix>addsuffix{!!title}addsuffix[/]addsuffix[$n$]]" variable=".state">
<$reveal state=<<.state>> type="nomatch" text="show">
<dl>
<dd><$button set=<<.state>> setTo="show">Try it</$button></dd>
</dl>
</$reveal>
<$reveal state=<<.state>> type="match" text="show">
<dl>
<dd><$button set=<<.state>> setTo="">Hide</$button></dd>
</dl>
<blockquote class="doc-example-result">
<$reveal default="$egvar$" type="match" text="NO-SUCH-VAR">
$eg$
</$reveal>
<$reveal default="$egvar$" type="nomatch" text="NO-SUCH-VAR">
<<$egvar$>>
</$reveal>
</blockquote>
</$reveal>
</$list>
\end
.doc-def {
font-style: normal;
font-weight: bold;
}
.doc-em {
font-style: italic;
font-variant: small-caps;
text-decoration: none;
}
.doc-strong {
color: <<colour alert-highlight>>;
font-style: normal;
font-weight: bold;
}
.doc-foreign {
font-style: italic;
}
.doc-place {
background-color: <<color background>>;
border: none;
color: <<color very-muted-foreground>>;
font-style: normal;
font-weight: bold;
}
.doc-button,
.doc-tab,
.doc-tag,
.doc-tiddler,
.doc-field,
.doc-value,
.doc-operator,
.doc-var,
.doc-widget,
.doc-attr,
.doc-param {
background-color: <<color background>>;
border: none;
color: <<color very-muted-foreground>>;
font-weight: bold;
padding: 0;
}
a .doc-place,
a .doc-button,
a .doc-tab,
a .doc-tag,
a .doc-tiddler,
a .doc-field,
a .doc-value,
a .doc-operator,
a .doc-var,
a .doc-widget,
a .doc-attr {
color: <<color tiddler-link-foreground>>;
}
.doc-button svg {
height: 1em;
}
td svg {
height: 1em;
}
.doc-key {
color: <<color very-muted-foreground>>;
font-weight: bold;
}
.doc-clink code {
color: <<colour tiddler-link-foreground>>;
}
.doc-preamble {
border: 2px solid <<colour code-border>>;
color: <<colour very-muted-foreground>>;
font-size: 90%;
margin-left: 0;
padding: 0.5em 0.7em;
}
.doc-note dt {
color: <<colour very-muted-foreground>>;
}
.doc-note dd {
border-left: 2px solid <<colour code-border>>;
padding-left: 0.6em;
}
.doc-example {
margin: 1em 0;
padding: 0.8em 0;
}
.doc-example:hover {
background-color: <<colour code-background>>;
}
.doc-example ul {
margin-bottom: 0;
padding-bottom: 0;
margin-top: 0.2em;
}
.doc-example pre:first-child {
margin-top: 0;
}
.doc-example-result {
border-left: 5px solid <<colour blockquote-bar>>;
border-right: 5px solid <<colour blockquote-bar>>;
margin-left: 0;
margin-right: 0;
padding: 0 10px;
}
.doc-example-result ul {
margin-left: 0;
padding-left: 10px;
}
.doc-example-result ol {
margin-left: 0;
padding-left: 20px;
}
.doc-table th, .doc-table tr {
vertical-align: top;
}
.doc-table th a {
font-weight: bold;
}
tr.doc-table-subheading {
height: 2em;
vertical-align: middle;
}
.doc-table.before-tiddler-body {
margin-top: 2em;
}
.doc-icon-block {
border-left: 2px solid <<colour code-border>>;
margin-left: 3em;
padding-left: 0.6em;
position: relative;
}
.doc-block-icon {
position: absolute;
left: -3em;
top: 0.2em;
}
.doc-block-icon .tc-image-tip {
fill: <<colour primary>>;
}
.doc-block-icon .tc-image-warning {
fill: <<colour alert-highlight>>;
}
.doc-from-version {
display: inline-block;
border-radius: 1em;
background: <<colour tiddler-controls-foreground>>;
color: <<colour background>>;
fill: <<colour background>>;
padding: 0 0.4em;
font-size: 0.7em;
text-transform: uppercase;
font-weight: bold;
line-height: 1.5;
vertical-align: text-bottom;
}
.doc-from-version svg {
width: 1em;
height: 1em;
vertical-align: text-bottom;
}
\define saveTiddlerFilter()
[[$:/core]] [[$:/isEncrypted]] [[$:/themes/tiddlywiki/snowwhite]] [[$:/themes/tiddlywiki/vanilla]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]]
\end
\define savingEmpty()
yes
\end
{{$:/core/templates/tiddlywiki5.html}}
/*\
title: $:/editions/tw5.com/if-macro.js
type: application/javascript
module-type: macro
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.name = ".if";
exports.params = [
{ name: "cond" },
{ name: "then" },
{ name: "else" }
];
exports.run = function(cond, then, elze) {
then = then || "";
elze = elze || "";
return cond ? then : elze;
};
})();
<$macrocall $name=".example" n="1"
eg="""<ul>
<li><code><<qualify "BaseTiddler">></code></li>
<li><code><<transclusion>></code></li>
</ul>"""/>
\define sayhi(name:"Bugs Bunny" address:"Rabbit Hole Hill")
Hi, I'm $name$ and I live in $address$.
\end
\define say-hi-using-variables()
Hi, I'm $(name)$ and I live in $(address)$.
\end
\define name() Bugs
\define tags-of-current-tiddler() {{!!tags}}
\define tv-get-export-image-link(src) http://www.tiddlywiki.com/$src$
\define tv-wikilink-tooltip()
<$transclude field="tooltip">(<$transclude field="caption"/>)</$transclude>
\end
\define .operator-examples(op,text:"Examples") <$link to="$op$ Operator (Examples)">$text$</$link>
\define .operator-example(n,eg,ie)
<div class="doc-example">
`$eg$`
<$macrocall $name=".if" cond="""$ie$""" then="""<dd>→ $ie$</dd>"""/>
<$list filter="[title<.state-prefix>addsuffix{!!title}addsuffix[/]addsuffix[$n$]]" variable=".state">
<$reveal state=<<.state>> type="nomatch" text="show">
<dl>
<dd><$button set=<<.state>> setTo="show">Try it</$button></dd>
</dl>
</$reveal>
<$reveal state=<<.state>> type="match" text="show">
<dl>
<dd><$button set=<<.state>> setTo="">Hide</$button></dd>
</dl>
<blockquote class="doc-example-result">
<ul><$list filter="""$eg$""" emptyMessage="(empty)">
<li><$link><$view field="title"/></$link></li>
</$list></ul>
</blockquote>
</$reveal>
</$list>
\end
\define .this-is-operator-example() This example tiddler is used to illustrate some of the [[Filter Operators]].
\define .using-days-of-week() These examples make use of the [[Days of the Week]] tiddler.
\define .s-matching-is-case-sensitive() In looking for matches for <<.place S>>, capital and lowercase letters are treated as different.
\define .node-only-operator()
<$macrocall $name=".note" _="This operator is <<.em not>> available when ~TiddlyWiki is running in a web browser."/>
\end
\define .op-place()
<$macrocall $name=".if"
cond="""$(op-name)$"""
then="<<.place '$(op-name)$'>> = "
else=""/>
\end
\define .op-row()
<$macrocall $name=".if"
cond="""$(op-body)$"""
then="""<tr><th align="left">$(op-head)$</th><td><<.op-place>>$(op-body)$</td></tr>"""
else=""/>
\end
<$set name="op-head" value="">
<$set name="op-body" value="">
<$set name="op-name" value="">
<$list filter="[all[current]tag[Filter Operators]]">
<table class="doc-table before-tiddler-body">
<!-->
<$set name="op-head" value="purpose">
<$set name="op-body" value={{!!op-purpose}}>
<<.op-row>>
</$set>
</$set>
<!-->
<$set name="op-head" value="[[input|Filter Syntax]]">
<$set name="op-body" value={{!!op-input}}>
<<.op-row>>
</$set>
</$set>
<!-->
<$set name="op-head" value="`!` input">
<$set name="op-body" value={{!!op-neg-input}}>
<<.op-row>>
</$set>
</$set>
<!-->
<$set name="op-head" value="[[suffix|Filter Step]]">
<$set name="op-body" value={{!!op-suffix}}>
<$set name="op-name" value={{!!op-suffix-name}}>
<<.op-row>>
</$set>
</$set>
</$set>
<!-->
<$set name="op-head" value="[[parameter|Filter Parameter]]">
<$set name="op-body" value={{!!op-parameter}}>
<$set name="op-name" value={{!!op-parameter-name}}>
<<.op-row>>
</$set>
</$set>
</$set>
<!-->
<$set name="op-head" value="output">
<$set name="op-body" value={{!!op-output}}>
<<.op-row>>
</$set>
</$set>
<!-->
<$set name="op-head" value="`!` output">
<$set name="op-body" value={{!!op-neg-output}}>
<<.op-row>>
</$set>
</$set>
<!-->
</table>
<$list filter="[all[current]has[from-version]]" variable="listItem">
<$macrocall $name=".from-version" version={{!!from-version}}/>
</$list>
</$list>
</$set>
</$set>
</$set>
( '"""' [:{/'anything but """'/}] '"""'
| '"' [:{/'anything but "'/}] '"'
| "'" [:{/"anything but '"/}] "'"
| "[[" [:{/"anything but ]"/}] "]]"
| {/"""anything but ' " or whitespace"""/}
)
<$button class="tc-btn-big-green">
<$action-sendmessage $message="tm-download-file" $param="$:/editions/tw5.com/download-empty" filename="empty.html"/>
Download Empty {{$:/core/images/save-button}}
</$button>
\define style-guide(good,bad)
<table>
<tbody>
<tr>
<th>Good</th>
<td>``$good$``</td>
</tr>
<tr>
<th>Bad</th>
<td>``$bad$``</td>
</tr>
</tbody>
</table>
\end
\define static-link-base()
http://tiddlywiki.com/static/$(title)$.html
\end
\define make-static-link()
<$set name="title" filter="[<currentTiddler>encodeuricomponent[]encodeuricomponent[]]" select="0">
<a href=<<static-link-base>> class="tc-tiddlylink-external" target="_blank" rel="noopener noreferrer"><$text text=<<static-link-base>>/></a>
</$set>
\end
\define github-link-base()
https://github.com/Jermolene/TiddlyWiki5/blob/master/editions/tw5.com/tiddlers/$(title)$
\end
\define make-github-link()
<$set name="title" value={{$:/config/OriginalTiddlerPaths##$(currentTiddler)$}}>
<$set name="title" filter="[<title>encodeuricomponent[]]" select="0">
<a href=<<github-link-base>> class="tc-tiddlylink-external" target="_blank" rel="noopener noreferrer"><$text text=<<github-link-base>>/></a>
</$set>
</$set>
\end
<$list filter="[all[current]!is[system]!is[shadow]]">
A static HTML representation of this tiddler is available at the URL:
* <<make-static-link>>
Help us to improve the documentation by sending a ~GitHub pull request for this tiddler:
* <<make-github-link>>
</$list>
\define .variable-examples(v,text:"Examples") <$link to="$v$ Variable (Examples)">$text$</$link>
\define .macro-examples(m,text:"Examples") <$link to="$m$ Macro (Examples)">$text$</$link>
\define .widget-examples(w,text:"Examples") <$link to="$w$ Widget (Examples)">$text$</$link>
\define .js-macro-link(_) [[$_$|http://tiddlywiki.com/dev/index.html#JavaScript%20Macros]]
\define .this-is-static-link-variable() <<.tip "This variable has no useful effect when ~TiddlyWiki is running in a browser, as the `href` attribute is ignored there -- links between tiddlers are performed by JavaScript instead. The variable comes into play when one is using the [[Node.js configuration|TiddlyWiki on Node.js]] to [[generate a static version|RenderTiddlersCommand]] of a wiki.">>
\define .this-is-toolbar-config-variable(configTiddler)
It can be set to <<.value yes>> or <<.value no>> prior to transcluding such a button.
The standard page template sets it to the value found in [[$configTiddler$]], with the result that this becomes the default for the whole page. The user can adjust this default by using a tickbox on the <<.controlpanel-tab Settings>> tab of the [[Control Panel|$:/ControlPanel]].
\end
\define .from-version(version)
<span class="doc-from-version">{{$:/core/images/warning}} New in $version$</span>
\end
\define wikitext-example(src)
<div class="doc-example">
```
$src$
```
That renders as:
$src$
... and the underlying HTML is:
$$$text/vnd.tiddlywiki>text/html
$src$
$$$
</div>
\end
\define wikitext-example-without-html(src)
<div class="doc-example">
```
$src$
```
That renders as:
$src$
</div>
\end
\define tw-code(tiddler)
<$codeblock language={{$tiddler$!!type}} code={{$tiddler$}}/>
\end
\define tw-code-link(tiddler)
[[$tiddler$]]:
<<tw-code $tiddler$>>
\end
\define img(l)
<img src="$l$"/>
\end
\define code(t)
<code style='color:#777;'>$t$</code>
\end
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
<$radio tiddler='$:/FeeCalc/300/Temp' value='1'> Word count over 300</$radio> <$radio tiddler='$:/FeeCalc/300/Temp' value='0'> Word count under 300</$radio>
<$reveal type='match' state='$:/FeeCalc/300/Temp' text='1'>
<$edit-text tiddler='$:/FeeCalc/WordCount/Temp' tag='input' placeholder='Enter word count' size='4'/>words <span style='text-align:right;font-weight:bold;margin-left:100px;'>$<$calc>((({{$:/FeeCalc/WordCount/Temp}} - 300) * {{!!fees.pw301}}) + {{!!fees.f300}})</$calc>*</span>
<br><br>
^^*1^^ ((({{$:/FeeCalc/WordCount/Temp}} words - 300 words) * ${{!!fees.pw301}} per word) + ${{!!fees.f300}} for first 300 words)
</$reveal>
<$reveal type='match' state='$:/FeeCalc/300/Temp' text='0'>
''${{!!fees.f300}}*''
<br><br>
^^*1^^ Fixed fee for first 300 words or less.
</$reveal>
^^*2^^ The rates we provide here are indicative only and the fees clearly listed on the system when you accept each task should be considered definitive.
<$list filter='[tag[$:/UserPages/Finance]]'>
<$set name='theStateT' filter='[title{!!title}addsuffix[/State]]'>
<$reveal type='match' state=<<theStateT>> text='1'><$button set=<<theStateT>> setTo='0'>{{$:/core/images/chevron-right}} {{!!caption}}
</$button></$reveal>
<$reveal type='nomatch' state=<<theStateT>> text='1'><$button set=<<theStateT>> setTo='1'>{{$:/core/images/chevron-down}}</$button>
<$transclude mode='block' />
</$reveal>
</$set>
</$list>
<$macrocall $name='closeButton'/><<st Search>>
<$edit-text tiddler='$:/MobileSearch' tag='input' size='36' placeholder='Type your search here'/> <$button class='tc-btn-invisible' set='$:/MobileSearch' setTo=''>×</$button>
<$set name='searchSense' filter='[title{$:/MobileSearch}minlength[4]]' value="""><$list filter='[search:text{$:/MobileSearch}!prefix[$:/]!prefix[Draft]!tag[Andy]!tag[Package Process]!prefix[New Tiddler]!tag[unfinished]!prefix[Untitled]!tag[Common causes of complaints]]'><$link to={{!!title}}>{{!!title}}</$link><br></$list>""" emptyValue="<span></span>">
<<searchSense>>
</$set>
\define loginFields(f,t)
<$edit-text tiddler='$:/Login' field='$f$' field='$f$' tag='input' placeholder='$f$' type="$t$"/>
\end
<style>
div.login {background-color:#fff;border-radius:18px;padding:10px 25px;width:500px;margin-left:100px;}
button.l {background-color:none;border:none;border-radius:7px;}
button.l:hover {background-color:blue;border:none;color:white;}
</style>
<div class='login boxShadow'>
!Login
<$set name='showHide' filter='[title[$:/Login]field:showpassword[1]]' value=" " emptyValue="password"><<loginFields name ''>><$macrocall $name='loginFields' f='password' t=<<showHide>>/> <$checkbox tiddler='$:/Login' field='showpassword' checked='1' unchecked='0'> ^^Show password^^</$checkbox>
</$set>
<$set name='tick1' filter='[title[$:/Login]field:password{$:/Login/Password!!advisor}]' value="""
<$button class='l'>
<$action-sendmessage $message='tm-close-tiddler' $param="Login"/>
<$action-navigate $to="Welcome"/>
<$action-navigate $to="$:/topBar"/>
<$action-setfield $tiddler='$:/ViewTemplate/myPrefix' $field='text' $value='$:/'/>
<$action-setfield $tiddler='$:/Andy' $field='tags' $value=''/>
<$action-sendmessage $message='tm-close-tiddler' $param='Logout'/>
Go
</$button>
""" emptyValue=' '>
<<tick1>>
</$set>
<$set name='tick2' filter='[title[$:/Login]field:password{$:/Login/Password!!admin}]' value="""
<$button class='l'>
<$action-sendmessage $message='tm-close-tiddler' $param="Login"/>
<$action-setfield $tiddler='$:/core/ui/ViewTemplate/title' $field='tags' $value='$:/tags/ViewTemplate'/>
<$action-navigate $to="$:/Controls"/>
<$action-navigate $to="$:/topBar"/>
<$action-setfield $tiddler='$:/ViewTemplate/myPrefix' $field='text' $value=''/>
<$action-setfield $tiddler='$:/Andy' $field='tags' $value='menuBar'/>
Go
</$button>
""" emptyValue=' '>
<<tick2>>
</$set>
<$set name='tick3' filter='[title[$:/Login]field:password{$:/Login/Password!!finance}]' value="""
<$button class='l'>
<$action-sendmessage $message='tm-close-tiddler' $param="Login"/>
<$action-setfield $tiddler='$:/core/ui/ViewTemplate/title' $field='tags' $value='$:/tags/ViewTemplate'/>
<$action-navigate $to="$:/Controls"/>
<$action-navigate $to="$:/topBar"/>
<$action-setfield $tiddler='$:/ViewTemplate/myPrefix' $field='text' $value=''/>
<$action-setfield $tiddler='$:/Andy' $field='tags' $value='menuBar'/>
Go
</$button>
""" emptyValue=' '>
<<tick3>>
</$set></div>
<$list filter='[tag[$:/Front]] +[sortby{$:/Front!!list}]'>
|!{{!!title}} |<$checkbox tag="left"/> | <$checkbox tag="right"/> |
<$edit-text field='caption'/>
<$edit-text field='tsize'/>
<$edit-text field='talign'/>
n<$edit-text field='n' />
</$list>
<a href='http://zhishiq.com/' blank='_blank'>ZHISHIQ</a> (pronounced "Juh - Shuh - Q") is an online collaboration platform and marketplace that connects outstanding writers, mentors and educators to China-based students and professionals.
Our advisor network delivers enriching, ethical guidance on effective writing strategy and Western education via our standardized range of editing and advice products.
We recruit outstanding individuals who are passionate about providing support to Chinese applicants to US, UK and Australian universities.
What clients get out of a ZHISHIQ experience should go beyond a perfect document.
We aim to provide clients with a unique environment that fosters active reflection with a view to effective self-advocacy over the long-term.
Overseas applications are an exciting and fragile time for our clients. It's readily understandable; there are few moments in life when so many paths lie open and an individual has quite so much potential to express.
As such, it is our role to provide robust support and authoritative guidance based on trust, positivity, and professionalism.
<div class="tc-control-panel">
|<$link to="$:/SiteTitle"><<lingo Title/Prompt>></$link> |<$edit-text tiddler="$:/SiteTitle" default="" tag="input"/> |
|<$link to="$:/SiteSubtitle"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler="$:/SiteSubtitle" default="" tag="input"/> |
|<$link to="$:/DefaultTiddlers"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag="textarea" tiddler="$:/DefaultTiddlers"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |
</div>
See the [[control panel|$:/ControlPanel]] for more options.
<blockquote style='font-family:courier;'>I'm sure every advisor takes a different approach to drafting the VIP outline for a letter, but this one to me fell short. The advisor wrote two simple paragraphs and added a few questions in the comment boxes. It wasn't designed as an outline, it didn't provide a roadmap for the client to see where additional paragraphs would go or give ideas as to what those paragraphs should contain, it didn't mention the skills the client said he wanted the letter to focus on or prompt the client to add experiences that would illustrate those skills, and it seemed confused about whether there were any requirements (the advisor's note said there were none, but the box listed a specific question breakdown which the draft letter then failed to address). There may additionally be some complication with the fact that the school asks referees to fill out a form via email that may or may not fit with the letter as drafted. I substantially changed the draft to include more of these elements and to include the client's content in the outline so he could see how it was used to create the paragraphs.</blockquote>
<svg class="tc-image-refresh-button tc-image-button" width="22pt" height="22pt" viewBox="0 0 128 128">
<g fill-rule="evenodd">
<path d="M106.369002,39.4325143 C116.529932,60.3119371 112.939592,86.1974934 95.5979797,103.539105 C73.7286194,125.408466 38.2713806,125.408466 16.4020203,103.539105 C-5.46734008,81.6697449 -5.46734008,46.2125061 16.4020203,24.3431458 C19.5262146,21.2189514 24.5915344,21.2189514 27.7157288,24.3431458 C30.8399231,27.4673401 30.8399231,32.5326599 27.7157288,35.6568542 C12.0947571,51.2778259 12.0947571,76.6044251 27.7157288,92.2253967 C43.3367004,107.846368 68.6632996,107.846368 84.2842712,92.2253967 C97.71993,78.7897379 99.5995262,58.1740623 89.9230597,42.729491 L83.4844861,54.9932839 C81.4307001,58.9052072 76.5945372,60.4115251 72.682614,58.3577391 C68.7706907,56.3039532 67.2643728,51.4677903 69.3181587,47.555867 L84.4354914,18.7613158 C86.4966389,14.8353707 91.3577499,13.3347805 95.273202,15.415792 L124.145886,30.7612457 C128.047354,32.8348248 129.52915,37.6785572 127.455571,41.5800249 C125.381992,45.4814927 120.53826,46.9632892 116.636792,44.8897102 L106.369002,39.4325143 Z M98.1470904,27.0648707 C97.9798954,26.8741582 97.811187,26.6843098 97.6409651,26.4953413 L98.6018187,26.1987327 L98.1470904,27.0648707 Z"></path>
</g>
</svg>
$:/HeavyEdit/Examples/Temp
<<st "1. Redundancies, or meandering material">>
The first two sentences should be eliminated.
<<st "2. Ambiguous comments that require explanation">>
<<st "3. Language that is cliched, projects naivete, or is otherwise inappropriate for the context">>
<style>
.bbig {border:1px solid grey;height:120px;width:120px;float:left;margin-right:10px;margin-bottom:10px;padding:5px;border-radius:50%;}
.bbigselect {background-color:#5778D9;color:#fff;}
</style>
<div style='margin-left:5px;'>
<$list filter='[tag[Heavy Edit]tag[Guide]] +[sortby{$:/HeavyEditIteration1!!list}]'>
<$button selectedClass='bbigselect' set="$:/Temp/HeavyEdit" setTo={{!!title}} class='bbig'>
<<st "{{!!n}}. {{!!caption}}">>
</$button>
</$list>
</div>
<div class='clearfix'></div>
!<$transclude tiddler={{$:/Temp/HeavyEdit}} field='title' mode='block'/>
<$transclude tiddler={{$:/Temp/HeavyEdit}} mode='block'/>
<<t "Handling client feedback">>
{{Handling client feedback}}
0BwiSHPBB3kz9cHBhQ3JGVzdiTjA
https://lh3.googleusercontent.com/n4CRRHE29o6bUnJAV44-_0e9_we6ofVytCTbiZQ-KKh3tjb6kDCnwML6lGcguPAmZicNbojJUoyx3-Lyw0LwM9YI5M4zSkI4afENDVnhyp0Rl5kq2gl3reMV6frlYQg9GO5pAjt0SWSksvnG-bOby9avSSxLp7KOdZjFLLvCVxnVnGHoA9mh4Ae1kWo5FNZBjX_2aQ7QMZ5h81gH7SLeSO79CQXPJpM5dK_AH2CtdpjquZW6StSph05VgKcsYso9RkekFXE1C5MYnhgBPRR9-4EFoZ1vjiBe3cxPH3k2RTSj1qJNIoPzKXATeGQjKVVuvyBU-wruINrN88IQDuxyJo6niiiFx7jrqNEh_vy_cYxYfGd48T-FwfCP60Q_QXZTslI2xFkyUyyMpJts2bfW6M21CZoYhN6wIzP2jO0OYmvmgGeaMz825yM2t12XH67NWoXuBGqLnKFlnfZTQYz71WuO4B8UDZl6pd6zwex291Dwb7l-Ql-1TrK-61bp_vorfMspxOIDvv8MPdfBHr-OqBXAv_UgDESTp1JM6FjCyNfmU3hACJAzE3SauYDSy_nykJ8SMTO0=w2318-h1218
https://lh3.googleusercontent.com/x3UDYLZs2kxEJPhhF1oAz-ibIEOnV64gS1K_8PZ33N77K-z1AEUP2VQUeclNA_9LT9N1ml7NgqknlOMx4x056qdce97Qygt6ZsPXgwa_4yYiVJvQKd7foIWpfyVtcaQhA-8bnTuK3hqF1_J_53ukFt683r4biptB8v21y7golb2i-pn9pDh5_9e41JDlDF5FdBncjfF0e4EHDXT7pjZwGnWr3NaYjGFV13hyqZSt9XOlkCp4uaJGLfUXak89aI1mwKQa0uWhcKG-HS8GN9UztP-RIeCcPTNcF6ew2krNsWrtX8S4L5HUX0VUfsLtp_pABoMWoUjI_ZgmZguElCOS0GOzx5XsJzyhmtDIxfpAeSYYFsT0gBnASrPvtPMtbGbsg8J5Spk2_V8y2IpSmJi15sdlAbqcjNa8hk2ntktVM5q_hBWtm5ynj_b9Ls6zJDiheeY_7Ce9GisRnoajTncecfJCVp0ZmFT9XD52UqqIJ_wIH-HFrVR-dFM0UbaYn5etRvXJdhCIONgaxhSe9RyTg6q_aOLcl2q5TBaqMQsLeh3xqAibJZz-d4N-Adtvs4mYV2vPva8s=w2318-h1218
https://lh3.googleusercontent.com/aouJ_a7kKUrrRLiVfPsLncKJRKoyMSxw0Zy7AtB8EnRUYJxTbA2NENn0uEdt_RbrvU0vYFoF4FXArFwq4iHxiGYKOV7OdE_Z_dEdSqDzU8ZG-tbSoWqNSnkbROIvS3X5-cssLEZkRMViSs5fv4oGawdusjp8clmSPjiUoLmKp1WjU1NwPx4nlse1y8OuukbizWHEXERMKNLsXwRMbdxxw-CsopRmAp-lFcsEh-NQanbP3EAKSz-dHGMs-K7PwC3-XZJ4YpuGjnIMs8J5IpN-yljncqgNwRrcAwN6zVb8LZZKmC0oBYRqMCUS9C7DpqfYz4qsz7HfKrfN5kkl07tz4QuQmmvRLoypv2mi7lOqLULAZ2sBIiFUBBp7CVYKgI81qV5xS0LJ35CjPwYnTlrNKgt6nPgH5nDoWMP35ksudpEnm4jwSknpdcVhRHk-HY9ir90aUvOdQU85M9coIV1r2DCbwrCi6SfnSG2_MWellnIKFb6XHOd8-HWkzdCVO8YZJBbwxxrOQsShXS9ukwqZfCB7NJQptNO8Neike4x0hxNoijL8lv79p4g5CVRrjitJjqf_D42-=w2469-h1272
https://lh3.googleusercontent.com/uXYCpH6wL7JtSZJtRByZteop6BAnBFuZ8Vq7bQRmrnwsz7g9W4zkAHJquFzSKCMJmqVw5aEb_Fs54bMZlrNfCLoeQ85kO78RRZpoPacjSxFUUaVoE5afNcrqTxgP6HguJ4ohZn9vSo-v2mCtReYl3vGUjn4EY36VPOjcuRHPbfRSzqFPHJlyGaNXiIQLsVcM2Huwp_m6QYCezxSS_8iOIPgdXIXCO71oIRmC26rKSqcFAA7hLCPgANnbBHVARDW9qUfb0wPq35UEjQF_Hby7rJPuC4eZMHimBzcZXs_UvLZlVW55J6yDScBM8TW9OwPmP143uRvIKZjqViP6JhFG-wxCMIVlFHWYgv4RNtk5vlR5Y8EBbqtzQky8pNJ6gjIEnBw-eMLx-GvUreUkFv8rQd7Dhzxd_OIj4NEesazYOOTV0VZtgXhf1FVZX6q7iLgnOm9jlLuWVLHrTtETDVov5TCZMY6ScdNfnL289b_7XNEO0L3DF6IOmNsZesDz6xnSRt-tppHYef5LhhOzlSqqtIkYZc2EtgQKTH_StJpRKPSKiJrAXse7h2ApGDgAOrOvf1_Zx1Wq=w2469-h1272
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
The following tiddlers were imported:
# [[IMG_1140.jpeg]]
This is intended to encourage advisors to nurture positive relationships with their clients and make an excellent impression right from the start, and with consistency from task-to-task.
\define parabola()
<svg height="300px" width="480px">
<path d="M 20 50 q 150 300 300 0" stroke="blue" stroke-width="5" fill="none" />
<path d="M 20 250 l 300 0" stroke="black" stroke-width="3"
fill="none" />
<!-- Mark relevant points -->
<g stroke="black" stroke-width="3" fill="black">
<circle id="pointA" cx="20" cy="50" r="3" />
<circle id="pointC" cx="320" cy="50" r="3" />
<circle id='time1' cx='20' cy='250' r='2'/>
<circle id='time2' cx='320' cy='250' r='2'/>
</g>
<!-- Label the points -->
<g font-size="30" font-family="sans-serif" fill="black" stroke="none" text-anchor="middle">
<text x="75" y="35" dx="-30" style='font-size:50%;'>Extra credits </text>
<text x="300" y="35" dx="30" style='font-size:50%;'>Extra credits </text>
<text x="250" y="270" dx="90" style='font-size:40%;'>6 hours before</text>
<text x="250" y="285" dx="90" style='font-size:40%;'>
overdue deadline</text>
<text x="40" y="270" dx="0" style='font-size:40%;'>6 hours after</text>
<text x="55" y="285" dx="0" style='font-size:40%;'>
client uploads task</text>
</g>
Sorry, your browser does not support this inverted-parabola-shaped diagram intended to show you there are more credits available for tasks picked up either 6 hours (or less) after the client originally uploads the document, or 6 hour (or less) before the task is overdue.
</svg>
\end
There are more credits available for tasks picked up either:
*6 hours (or less) after the client originally uploads the task.
*6 hours (or less) before the task is overdue.
<$macrocall $name='parabola'/>
You will find a button on each service you complete that you can press to alert admin if you ever feel you've done a really good job! Click the button, state your reason, and we'll see what you've done! If we agree, we'll let you know and add an appropriate number of credits to your score!
We want you to create a great profile on the website. The consistency and professionalism of every advisor profile is essential to the impression we give to clients. Remember the skills demonstrated in turning out an outstanding profile are exactly those you are holding yourself out to possess as an advisor. As such, the profile can really pay dividends in the form of client appointments (which—in turn—are opportunities for you to secure a longer-term stream of work with individuals with whom you have a rapport). To recognize the degree to which we value your profile as a tool to attract potential clients, the system will credit you for every client appointment you receive.
Please see [[Peer Reviews]] for more information about how this works.
This system enables advisors to take responsibility for new recruits when they join the team. You can select how many trainee advisors you think you can manage. Your trainees' first [[Training Reviews]] will be allocated to your account (exactly like appointed tasks).
If something unexpected comes up and you cannot help your trainees, their tasks will be automatically reallocated to the usual review marketplace when you set your profile to <code>unavailable</code>.
Trainee Supervisors automatically bypass [[Peer Reviews]].
*[[How to apply to be a Trainee Supervisor]].
*[[Responsiblities as a Trainee Supervisor]].
Trainee Supervisors can allow their trainee advisors to bypass reviews anytime, but two tasks of each basic type (L1/ L2/ VIP) is highly recommended.
Trainee Advisors are reviewed by system admins 30 days after joining the system or when bypassed, whichever is sooner.
\define examplesFilter()
[prefix[$(p)$]]
\end
\define tablesFilter()
[prefix[$(counterp)$]]
\end
\define valFilter()
[title{!!title}removeprefix[$(counterp)$]]
\end
<style>
.select {background-color:whitesmoke;}
.selected {background-color:aqua;}
</style>
{{$:/Incentives/WeightingsDisplay}}
<$set name="p" filter="[title[$:/Incentives/WorkedExample/state]field:text[1]]" value="$:/Incentives/Multipliers/" emptyValue="$:/Incentives/Example/Advisor">
<$set name="counterp" filter="[title[$:/Incentives/WorkedExample/state]!field:text[1]]" value="$:/Incentives/Multipliers/" emptyValue="$:/Incentives/Example/Advisor">
!Worked examples
<$button class='select' selectedClass='selected' set='$:/Incentives/WorkedExample/state' setTo='1'>Incentive type</$button> <$button class='select' selectedClass='selected' set='$:/Incentives/WorkedExample/state' setTo='0'>Example advisor</$button>
<$list filter=<<examplesFilter>>>
<$set name='getContainer' value={{!!title}}>
!!__{{!!caption}} scores__
<table><tr><th></th><th></th></tr><$set name='makeFieldKey' filter='[prefix[$:/Incentives/Multipliers/]removeprefix[$:/Incentives/Multipliers/]]'>
<$list filter=<<tablesFilter>>>
<$set name='advisor' value={{!!title}}>
<tr><td>{{!!caption}} </td><th>
<$set name="removePrefix" filter=<<valFilter>>>
<$set name='removePrefix2' filter='[title<getContainer>removeprefix<p>]'>
<$transclude tiddler=<<advisor>> field=<<removePrefix2>>/>
<$transclude tiddler=<<getContainer>> field=<<removePrefix>>/> </$set></$set>
</th></tr>
</$set>
</$list>
</$set></table>
</$set>
</$list>
</$set>
* Grammar & punctuation
* Spelling
* Stylistic concerns relating to jurisdiction
* Chinglish expressions
Key style
Content
A thorough edit
* Zero errors
* Show value with a heavier edit
* What if changes are minimal?
Summary
A Baseline edit is both a specific service in itself, and the basic level of editing quality that should be applied to all drafts of every text service you complete.
All tasks, all iterations
The Level 1 service encapsulates an approach to editing that should be applied to all services (and every draft) as a bare minimum.
Even minor errors have scope to cause clients major concerns.
While other services require additional work, drafts of all services should be submitted with the intention of showing your client that you are ready to provide your very best work.
We're in the business of first impressions.
Many clients use the first draft (or a Level 1) as an 'audition' for their advisor. Your job is to help them make a good one on their target schools. Failing to make a good impression in your role will self-evidently have a deleterious effect on your client's confidence in your ability to fulfill your role.
Basic features
* No. of iterations: 1
* First and final iteration's deadline: 48 hours
* Length of time (after the service is complete) that the client is permitted to send clarifying enquiries via the messaging system: 3 days
* Any length reductions included? c. ± 10%
Another example re: consistency... Expression of numbers Use a consistent approach to numbering (we prefer single digit numbers to be written as words (one, two,three) and multi-digit numbers to be written as figures (10, 11, 462, etc.).
So, for example, do not write “there were 4 teachers that had a big impact on me. Two of them are now working in private industry…”
Your client is facing a super-competitive scenario with a high-stakes outcome. His/Her essay's lack of consistency, therefore, does matter. It makes the writing look sloppy, which can—in turn—lead the Admissions Officials to draw negative inferences about your client's attitude towards, or even respect for, his/her audience. In a competitive applications context, this can be calamitous.
Define abbreviations the first time they are used As touched upon in the previous section, the first time an abbreviation like FCMG appears in the text it should accompany the full term: i.e. "Fast-moving consumer goods (FMCG)". In all subsequent instances, use FMCG. Do not utilize an acronym at all if it is not subsequently used in the document; just state "Fast-moving consumer goods."
There are sensible exceptions. UN, US, UK, HIV, AIDS, and other common acronyms probably do not need defining because they are widely known and in such wide usage that definition is unnecessary.
Avoid lazy expressions You should adjust any content where the tone or phrasing reads awkwardly, or is inappropriate for an application document. This may include:
• Informal language and contractions
* Anything that appears to be slang or jargon (unless there is a contextually specific reason for using it, such as a case study)
* Lazy language and abbreviations such as etc. , e.g.
In a situation like this, the inappropriate or null-value statement should either be removed, or you should clarify detail with the client in order to adjust it to a value-added statement.
The document is a brief opportunity to convey key details about oneself and impress the reader. "And so forth" and "etc." not only require the reader to fill in the blanks; they also abdicate control over what the writer is conveying in the document. Remove arbitrary capitalizations Please keep an eye out for random capitalizations.
—
Due diligence Failure to perform due diligence can be particularly apparent on resumes. Furthermore, given the relatively simple premise of a resume (as opposed to a Personal Statement, for example), errors are proportionately more significant on resumes.
Avoid inaccurate terminology Thorough terminology checks are essential. Make sure that place names, school names, professional terms, and other technical terminology are accurately noted; and pay close attention to spelling and usage. Take the time to search for terms, using Google, if unsure. It is important to highlight any interpretations or judgment calls about which you are unsure.
Terms like the following should NEVER be allowed into an advisor’s redraft:
...the Georgina Institute of Technology… Don't know/ not sure: Look it up! If you do not know a technical/ official term, the Internet is quick and easy and will usually provide you with what you need to know.
We urge you to conduct this research yourself, rather than including inquiries in your feedback that could cause the client to question your credibility. It is perfectly appropriate to recommend that your client clarify something that he/she has expressed unclearly, but do not insert comments to the effect of, "I have no idea about this area." The following is not a good approach for an advisor:
Rather than suggesting that your client "write out the acronym," we recommend that you perform a simple Google search to find out if you can identify the full-term. With respect to the example above, Google reveals the following about "FMCG:"
This abbreviation is clearly one that you should be able to figure out for yourself. For this reason, your client would be likely to be concerned if you indicated ignorance about FMCG.
Regarding "SAP:"
SAP is not an acronym. It is an abbreviated company name (Systemanalyse und Programmentwicklung) which has come to be used so widely that there is no sense in unpacking the abbreviation.
If this were an L1 resume task, then it would be best for the Advisor to retain SAP and spell out the abbreviation FMCG.
Ensure usage is correct in context Not just 'spelt right'.
Content Interrogate confusing or ambiguous content You are limited to a single iteration so it is not possible to request clarifying text from a client, and then polish and insert it into his/her application document. However, there are still ways for you to help your clients when you find sections of their text to be perplexing:
Should you ever discover an area of an essay, resume, or RL that could come across as vague or baffling to the Admissions Official who will eventually review the application document, please communicate this to your client (without conveying the impression of up-selling your services - important).
We recommend that you insert comments and questions into the text that point out ways in which the client can improve it.
To gain a better idea of the strategy we recommend, please study these excerpts from clients' essays, and—right above the clients' material—feedback from their Advisors:
A thorough edit While line-editing will be one of your most significant responsibilities, most clients submit tasks on our website with expectations beyond a quick, anonymous proofread.
Zero errors This can't be over-emphasized and should go without saying! (Always review your work!)
Do not disappoint your client with a light edit It may seem odd, but clients will often judge the value-for-money they've received at a glance: How many changes are indicated in the track changes mark-up.
We have received complaints from clients when the advisor has provided edits that are too light; some have even questioned whether an advisor is a native English speaker! We desperately want to avoid this.
Light edit vs comprehensive edit– this is an ongoing problem. Make the distinction and ensure you are making substantial changes to the document, especially when it actually requires it! Even if the document is well written, please don’t make 5 changes to the document and call it a day. Clients pay money, let them see the fruits of their investment.
—Sam Hersi, Senior Advisor/ Complaints Team
Do not simply scan the English; try to add something extra. Study these examples as a quick guide regarding the level of change and enhancement you should be aiming for; please always aim for a heavy edit:
It is always worth going a little further than simply providing a piece of writing that is formally correct. Maximize your client’s confidence in you but please avoid being florid; one or two judicious word choices are often all it takes to really improve the impression the document can make. We’re not encouraging you to arbitrarily use long words or flowery language. Nor are we encouraging you to edit the client's voice out of the document.
If a first-time client has a positive experience with a Level One, then he/she may appoint several tasks to you. We hope that this is the case, and that you and your clients have experiences with ZHISHIQ that are as rewarding as possible.
What if your changes are minimal? It may seem odd, but clients will often judge the value-for-money they've received at a glance: How many changes are indicated in the track changes mark-up.
Don't edit for the sake of it Naturally, it is not a conscientious or ethical approach to make changes for the sake of changes. Do try to do everything you can to enhance the quality of the document, providing the client with options and substitutions, and when possible.
Don’t remix. Try to stay close to the clients intended meaning while you edit. If you simply can’t understand something, ask for clarification! Clients often complain about advisors changing the meaning of their sentences and phrases.
—Sam H, Advisor (2014—present)/ Complaints Team Do offer value for money If you find a perfect document has been submitted, don't think:
Score! Easy-peasy!
It will be obvious and won't go down well! Simply spend the excess time in providing commentary and advice. That way, your client will know you have engaged with the task. Any subsequent expressions of concern are likely to be a far more manageable as a result!
Do explain where you're coming from Provision of text like the following is not a substitute for the approach above. But it does help to explain the approach you've taken in a reasonable fashion (which is always helpful!)
You have uploaded a document written to a native-speaker standard. Your style was consistent with correct spelling, grammar, and punctuation, along with appropriate tone. Nice job! The goal of this service is to ensure clarity and consistency of expression in your document to guarantee your intended audience can follow all your points without any difficulty. Level 1 is not a rewriting service (nor are any of our services!) Therefore, since there were only a few errors in your original document, there are only a few corrections in the proofread document. I don't want to make unneeded substitutions that are counter to your interests. Quantity of edits is not indicative of the quality in this instance! And I've spent the additional time offering you advice and commentary that I feel could improve the document from a strategic standpoint. (Substituting words is easy!) The principal effort involved in executing our services is carefully assessing the document, not typing out the changes!
Something like that will help.
Summary • Due diligence & attention-to-detail. • Local language spellchecker/ check professional/ technical terminology.
* Don’t know something? Look it up! Or ask. • Review your work very carefully and repeatedly. • At least once more than you think you need to until you’re in the rhythm of providing these services
* Zero errors. • Demonstrate care and attention • Present the document in a neat and clear format. • Consistency • Be very conscious of ensuring consistent approaches to acronyms, hyphens, dates, numbers, capitalization...
* But do not remove any substantive content (except—for example—repetitious words/ phrases in close proximity). • Punctuation & grammar • Know and use the rules and be alert to the most common errors.
* When? Always. • Please present every draft of every document with a full Baseline Edit, particularly the first draft. • Irrespective of whether it is an L2 or VIP (giving you subsequent opportunities to edit the document), it is important to establish client confidence in your capacity and commitment to completing the work properly.
Back to Contents
* Help Desk Software by Freshdesk | Submit Feedback | Browse Community
Editing Technical/ Professional/ Specialist Language
Contents
Basics
Abbreviated titles
Make sure terms are used in the correct way
Italics
Dates
Popular Fields
Equations and Formulas
Basics
When editing technical/professional/specialist language, we ask that you assume the role of an expert within the particular field your client's document pertains to. What does this mean?
To put it simply, you are required to:
* ensure all technical terms or field jargon are used appropriately
* learn abbreviations
* look up official names for universities/companies/projects/titles/qualifications/etc
* use a suitably professional tone throughout the text
* avoid the first person
* use succinct language (avoid flowery terms)
Abbreviated titles
An example of a technical document that clients regularly submit for editing would be a resume, which oftentimes contain software titles. When in doubt, Google software titles to ensure you have properly abbreviated the title.
Make sure terms are used in the correct way
We discourage all advisors from accepting tasks that involve subject matter with which they lack expertise. However, it is still not uncommon for advisors to encounter unfamiliar terms. When this occurs, we encourage you to perform research to discover the following:
* What the term means
* The correct way in which to use it in a sentence
Example:
Once you have gained clarification, please revise the technical document accordingly. Using technical/professional/specialist terms correctly cannot be stressed enough. For example, many people are under the impression that titles of books, articles, awards, and/ or scholarships are off-limits. However, they are not. Oftentimes, clients have translated these titles from Chinese into English; we would like you to please revise these translations.
Italics
Use italics for titles of books and journals, proceedings, symposia, plays, and paintings.
It is crucial that you consistently utilize italics throughout a technical document.
Example:
Dates
Dates must be used uniformly within a technical/professional document. For example, you must be consistent in the formatting of dates throughout the document. If you begin a document using a format like 06/04/1944, then that same formatting must be used for all subsequently mentioned dates. It would be unprofessional to introduce a date the first instance as June 04, 1944 and for dates set forth later in the text to use a format such 09/02/45. Key: maintain a consistent format for dates.
Popular fields
Below is a brief listing of the technical/professional/specialist fields most popular among our clients:
* Computer science
* Engineering
* Science (i.e. physics, chemistry, geology, etc.)
* Law
* Accounting
* Finance
* Political Science
* Marketing
A quick Google search of the relevant field for the document you are editing will yield a plethora of information regarding the technical/professional terminology used.
Equations and Formulas
Mathematical equations and scientific formulas have precise manners in which they are expressed. It is very important that you correctly express them. If they are expressed incorrectly then it is very likely the entire meaning changes. This means it is vital that you ensure:
* parentheses are accurately placed
* subscripts and superscripts are appended to the proper number or variable
* multiplication, division, addition, subtraction, and exponents are placed in their proper positions within an equation
Example 1:
Here it is essential for log that subscripts are used they determine the base of the log. The domain is the set of real numbers that are enclosed by parenthesis.
t
Example 2:
A chemical formula is a way of expressing information about the proportions of atoms that constitute a particular chemical compound, using a single line of chemical element symbols, numbers, and sometimes also other symbols, such as parentheses, dashes, brackets, commas and plus (+) and minus (−) signs. Placement is vital.
So, for example, what is the correct formula of Copper (I) Oxide?
* Identify the symbols of the cation and anion
Copper is Cu and Oxide is O
* Identify the charge for each and place above the symbol in parenthesis
For Copper I that would be 1+ and for Oxide that would be 2-
* Balance the positive and negative charges
Since each Copper is 1+ and each Oxide is 2- then it will take two Cu+ to balance one oxide with a 2- so that
2(1+) + 1(2-) = 0. The numbers outside the parenthesis become the subscripts in the formula
* Write the formula placing the subscripts right after the symbol they go with.
Cu2O does not equal Cu2O
The subscript is imperative as it is the number that balances the charges. If you do not use the subscript, then the formula is not balanced, so it would read as one Copper (Cu) and 2 oxygen (0) atoms, which would result in a leftover charge. Per above: with Cu having a 1+ charge and O having a 2- charge, the remaining charge would not be neutral; it would be -3 and the formula would not be correctly expressed.
Example 3:
The following is an integral. An integral is expressed as the difference between the values of the integral at specified upper and lower limits of the independent variable. If you transpose the upper (x) and lower (p) limits then the computed answer will not be the same. Small things such as correct placement can make it or break it for a student who is showcasing a particular aspect of their research.
Back to Contents
*
Help Desk Software by Freshdesk | Submit Feedback | Browse Community
There are two components to successful application document:
<ol>
<li>IDENTIFY characteristics and competencies that are considered typical indicators of applicants that go to successfully handle the course/ school that is being applied for. (c.10% word count).</li>
<li>DEMONSTRATE that you possess the above. (c.85%)</li></ol>
<p>This corresponds (naturally) to core principles that govern persuasive writing:</p>
<h4>Writing persuasively</h4>
<ol><li>’CLAIMS’ should be relevant and supported by compelling evidence within a clear structure.</li>
<li>EVIDENCE should be
<ul><li>Sufficient to support corresponding claims.</li>
<li>Clearly related to those claims.</li>
<li>Specific (ie: it deals in real, concrete nouns, not unsupported generalizations and abstractions).</li>
<li>Detailed (enough for the uninitiated reader to understand what's going on) Prompt your client to provide specific, concrete detail.</li>
<li>Rooted in personal experience (not necessarily personal as in personal life, but personal is firsthand).</li>
</ul>
</ol>
<p>It is your job to convey some sense of those principles to your client. The advisor will subsequently prioritize follow-up, as needed, with detailed questions, designed to solicit suitable information.</p>
What is 'good evidence'?
<h1>Believe me: So many candidates get this wrong. Our job is to guide towards principles of effective self-presentation in highly-competitive contexts that will benefit them throughout their lives.</h1>
Clients tend to demonstrate some awareness of the skills that admissions officers might be looking for, but—generally—they fail to communicate these in a persuasive fashion. This is usually because client either:
* Highlight significant characteristics/ competencies in very general terms that they fail to communicate any critical understanding of the concepts and/ or fail to tailor and connect them sufficiently to their case for admission to the relevant institution. ("As a strong team-player I've always enjoyed sports...")
or
* Assert characteristics/ competencies without adequate substantiation ("Due to my excellent leadership skills, it all worked out well in the end...") or provide supporting facts that are not relevant to the claim/ context ("I wanted to become an asset manager ever since high school. My mother’s career at JP Morgan influenced me greatly. She worked in Morgan Stanley in Chicago after finishing her undergraduate study in Dartmouth College...").
Make word cloud
<p>Key questions the audience will want to answer when they read your statement:</p>
Motivation<br>
Ability to express yourself<br>
Maturity<br>
Passion for the field<br>
Judgment<br>
Whether you have the qualities and attitudes needed for success on the program<br>
Whether you’ll contribute to the program and fit in effectively<br>
The extent to which you prioritize their program over others
Avoid 'big', unsubstianted claims
None of these things should be stated explicitly (“I am very passionate” “You’re my first choice”). They should conveyed by (i) the information you provide and (ii) the way you provide it.
Our experienced advisors are ready to to assist you with part (ii), but first—to complete the best possible application for you—they need your input on part (i). That’s what this form and the client/ mentor discussion it facilitates will achieve.
—
HOOK STAND OUT
The competitiveness indicated above—as well as common sense—tells you that the reader of any application has (usually) little vested interest in the particular applicant. The quicker the candidate can grab or hook the reader, the more likely they are to be remembered at the various stages of the admissions process (which are—inevitably—far from objective).
Naturally, standing out does mean writing something zany; nor does it mean insisting on opening a document a little vignette that is irrelevant to the question posed. (Although narrative elements can—of course—be very effective in the right context).
College is a considerable step up from high school, both academically and interpersonally; for most people studying in a completely different cultural context carries even greater social pressures.
the nature of expectations in high school and in college are significantly different. Students must be prepared to draw upon a different array of learning strategies and coping skills to be successful in college than those they developed and honed in high school.
—David T. Conley, Redefining College Readiness (prepared for the Bill & Melinda Gates Foundation
Contents:
* Background
* Context
* Audience
* More advanced levels of learning
* On admission
* Post-graduation
* "Readiness"
* "Fit"
* Writing persuasively
* Evidence
* Claims/ assertions
* Structure
* Typical client issues
Goals:
* Understand the objectives of the intended audience for the document when they pick it up and read it.
* Think about the wider context of the admissions process and the relevant discipline.
* Consider the actual situation the admissions officer faces - piles of documents, similar content, similar errors on a continual basis.
Methods:
* Apply your understanding of good persuasive writing to interrogate the quality of material (relevance claims and supporting evidence).
* Ensure information is presented in a logical structure that makes it easy for the admissions officer to (i) read; and (ii) recognize the essential points. The easier and more efficient the reading experience—and the more evidence of time and attention spent on the document—the more likely that the admissions officer will give the document his or her full and fair consideration.
Background
What is the application statement?
A piece of persuasive writing submitted in a highly competitive context, with the objective of persuading an audience (comprised of a series of individual readers) that the candidate is capable of being a success at his or her target institution and beyond.
Context
Mean selectivity and yield rates by institutional characteristics: Fall 2012 Mean number of applications per admission officer by institutional characteristics
Audience
The competitiveness indicated above—as well as common sense—tells you that the reader of any application has (usually) little vested interest in the particular applicant. The quicker the candidate can grab or hook the reader, the more likely they are to be remembered at the various stages of the admissions process (which are—inevitably—far from objective).
Naturally, standing out does mean writing something zany; nor does it mean insisting on opening a document a little vignette that is irrelevant to the question posed. (Although narrative elements can—of course—be very effective in the right context).
Whether your client is a high school student -> college applicant or a college -> grad school applicant (and whether someone is a US, a UK or Chinese applicant), there is common thread governing what the admissions officer is looking for:
They want to know that this candidate is ready to make the step up to a more advanced level of learning at their particular school and beyond.
More advanced levels of learning
On admission
It's obvious enough: College is a considerable step up from high school, both academically and interpersonally; for most people studying in a completely different cultural context carries even greater social pressures.
the nature of expectations in high school and in college are significantly different. Students must be prepared to draw upon a different array of learning strategies and coping skills to be successful in college than those they developed and honed in high school.
—David T. Conley, Redefining College Readiness (prepared for the Bill & Melinda Gates Foundation
Demonstrating preparedness to step up to this new set of challenges is therefore vital to an ambitious application.
Post-graduation
Colleges are also under a great deal of pressure to produce "jobs-ready applicants". The growth of buzzwords such as ‘experiential learning’ and ‘interdisciplinary’ is a testament to the greater flexibility required of contemporary work both inside and outside an academic context.
Information and concepts are being updated constantly and technology enables practitioners to access it almost immediately. Universities know that their graduates’ success in the 21st Century jobs market will not be determined by what they know but how they use what they know.
"Readiness"
Google "college readiness" and you'll quickly see what a major area of concern this is at the policy-level. (Googling "21st Century skills" or "C21 skills" or "the four Cs" will get you even more!) It's a legitimate area of concern for schools who want to admit applicants with the propensities they believe are key to success.
Many definitions of these are available, at varying levels of detail. Peter Conley summarizes as follows (this is worth reading):
—p.18, ibid.
At the individual applicant level, the key is to demonstrate possession of characteristics and competencies that are considered typical indicators of applicants that go to successfully handle the course/ school that is being applied for.
The key word above is DEMONSTRATE.
Clients tend to demonstrate some awareness of the skills that admissions officers might be looking for, but—generally—they fail to communicate these in a persuasive fashion. This is usually because client either:
* Highlight significant characteristics/ competencies in very general terms that they fail to communicate any critical understanding of the concepts and/ or fail to tailor and connect them sufficiently to their case for admission to the relevant institution. ("As a strong team-player I've always enjoyed sports...")
or
* Assert characteristics/ competencies without adequate substantiation ("Due to my excellent leadership skills, it all worked out well in the end...") or provide supporting facts that are not relevant to the claim/ context ("I wanted to become an asset manager ever since high school. My mother’s career at JP Morgan influenced me greatly. She worked in Morgan Stanley in Chicago after finishing her undergraduate study in Dartmouth College...").
Our job is to help client address these issues and other stemming from them.
Writing persuasively
"Claims" or "assertions" should be relevant and supported by compelling evidence within a clear structure.
Evidence
You should ensure that the candidate is providing:
* Sufficient evidence support for relevant claims.
* Evidence that relevant to the application.
If not, it is your priority to ask them detailed questions, designed to solicit suitable information in your first iteration of the document.
The aim of your questions should be to render abstract assertions/ remarks meaningful and ensure they contribute to the client’s case for admission.
What is 'good evidence'?
* Specific (ie: it deals in real, concrete nouns, not unsupported generalizations and abstractions).
* Detailed (enough for the uninitiated reader to understand what's going on) Prompt your client to provide specific, concrete detail.
* Rooted in personal experience (not necessarily personal as in personal life, but personal is firsthand).
Typical client issues
<ol>
<li></li>
<li>Stating the obvious (or something that would be reasonably inferred/ self-evident by the intended audience).
<blockquote><i>
…learning more about how banks, an important institute in an economy, influence enterprises.
<i></blockquote>
<blockquote><i>
My minor in English equipped me with essential English skills and the understanding of English culture, which would be of great use to help me adapt quickly to English academic and cultural environment.
<i></blockquote></li>
<li>Underdeveloped or arguably irrelevant references to family or material sourced outside the preceding 3 years (there are exceptions but they've got to be very strong!)
<blockquote><i>
My mother’s career at JP Morgan influenced me greatly. She worked in Morgan Stanley in Chicago after finishing her undergraduate study in Dartmouth College…”).
</i></blockquote></li>
<li>
Overemphasis on tangential matters, often arising from an excess of worry/ stress (<i>common examples include anomalous low grades, or giving the impression of complaining about or blaming others</i>).
</li>
<li>
Vague or underwhelming information.
<blockquote><i>
As a strong team-player I've always enjoyed sports…
</i></blockquote></li>
<li>Unsubstantiated assertions.
<blockquote><i>
Due to my excellent leadership skills, our team one first prize in…
</i></blockquote></li>
<li>Overuse of hackneyed examples/references (<i>anything about the need for reform in the Chinese retail banking sector</i></li>
<li>Extreme or dramatic remarks.
<blockquote><i>Ever since I was a child I have dreamed of nothing but attending your school.
</i></blockquote></li>
<li>Excessively forensic approach to narrative.
<blockquote><i>
In my sophomore year…
</i></blockquote></li>
<li>Repetition of information that will already be on transcript.
<blockquote><i>
I minored in the English Language and Literature at Huazhong Normal University
</i></blockquote></li>
In light of the discussion above, it should be clear to you how all of these commons errors give the audience completely the wrong impression of the candidate.
In my sophomore year, [2] in order to extend my language skill.
1. Non-relevant subject matter
[EXAMPLE NEEDED]
2. Reasonably self-evident
…learning more about how banks, an important institute in an economy, influence enterprises.
or
Standing on the brink of the next age, I discern that we are living in an efficient world.
Given the context, in which one's judgement and insight are under scrutiny, choosing the wrong stories and examples is problematic issue (and a very common one).
3. Overuse of hackneyed examples/references
[EXAMPLES NEEDED]
4. Worries and extenuating circumstances
Keep it brief: Some clients panic disproportionately about aspects of their records. But think through your advice carefully. If the client has a problematic point in their record, (eg: low GPA), otherwise shows potential to make a strong application, and a valid reason for the blemish on their record (that is not a sob story), mentioning it in a brief, matter-of-fact fashion is appropriate.
... sometimes giving the impression of complaining about or blaming others:
The motto of my undergraduate college, Meliora (or ‘Ever Better’), conveys a similar message, which I continually tried to embody throughout my undergraduate study, but sometimes when working in a group setting, it is hard for other members to do so.
or
I had to spend time learning Matlab, Bond Pricing Models, GARCH Model, Monte Carlo Simulation, Random Process, Partial Differential Equations, etc. on a very short notice. This directly reduced our time of software development, causing our final work to be only a simplified version. It is this experience that made me realize my deficiency in the major.
5. Extreme or dramatic remarks
I still recall the sleepless nights when I anxiously worried about my near and far future in the first few weeks.
or
We may read, each morning, about human tragedies in our newspapers. But how often do we truly hear such people's voices, or try with full force and determination to help? This I pledge to do. When I was in college, Mr. Ban Ki-moon’s declaration shocked me and influence me a lot. I started trying to take some action to truly hear such voices and to try with full force to help them.
6. Excessively forensic/ procedural narrative
Last year, I took an introductory marketing course. The course did not cover very advanced professional knowledge, but required us to form a group to promote a new product designed by ourselves. I grouped with Rafa, a Puerto Rican boy who used to be my Spanish teaching assistant, and Feng and Xie, two Chinese boys in their sophomore years that I had met before.
...sometimes points to: lack of contextual awareness:
I am currently studying for a Bachelor' in Marketing at Wuhan University of Technology is equipping me with the fundamental Marketing theory and requisite analytical skill to success on the course.
They will already know this!
7. Vague/ underwhelming info
…regularly reading the Economist and relevant books…
or
…consulting foreign web sites and journals…
8. Repetition of information between documents
Remember that the clients will be submitting a CV, a transcript and other materials, all of which can be used to convey information that (a) doesn't fit into the requirements of the document you're working on (b) disrupts the flow of the document.
Point out to the client that the Committee will be looking at the application as a whole and therefore certain details do not need to be repeated between different document. It is useful to note that the effective execution of the application statement can be thought of as the most direct piece of evidence the admissions officer can hope to possess about the caliber of most candidates whom they review.
7. Repetition of information between documents
Remember that the clients will be submitting a CV, a transcript and other materials, all of which can be used to convey information that (a) doesn't fit into the requirements of the document you're working on (b) disrupts the flow of the document.
Point out to the client that the Committee will be looking at the application as a whole and therefore certain details do not need to be repeated between different document. It is useful to note that the effective execution of the application statement can be thought of as the most direct piece of evidence the admissions officer can hope to possess about the caliber of most candidates whom they review.
1. Overuse of hackneyed examples/references
Claims/ Assertions
* Look at the question carefully and break it down.
* Recognize the document type: an SoP requires a very different type of information and focus than a PS. Ensure the requirements are being met.
* Prompt the client to review the program website in detail and ask corresponding questions that prompt them to makes connections between their goals/ abilities and what the program offers.
Structure
* The bulk of paragraphs should be comprised of evidence that supports the reasons (that the thesis is true).
* Keep each paragraph focused on proving a specific claim (or set of closely related claims).
* Ensure the bulk of paragraphs are comprised of facts and explanation of how the facts support the claim or claims.
* Prompt the client to clarify links between specific experiences described and relevant objectives asserted.
Relevance
Underdeveloped or arguably irrelevant references to family
I wanted to become an asset manager ever since high school. My mother’s career at JP Morgan influenced me greatly. She Worked in Morgan Stanley in Chicago after finishing her undergraduate study in Dartmouth College.
—
I come from a long line of engineers: my father, my uncle and my grandfather.
—
As a three-year old, I always dressed up as a doctor because I loved my doctor so much, I knew that some day I, too, wanted to be a pediatrician.
—
My father received his Bachelor's degree from Guangzhou Naval Academy and always emphasized…
They are all extremely bad ways to start. The tactic is overused. We’ve reviewed thousands of documents that use the same sort of story and the same formulation describing family influence,
This common error is problematic because it is extremely unclear how something that happened to you 5, 10, 15 years ago relates to what the client is interested in doing as a postgraduate.
Many of our clients want to include an allusion to family because it suggests elements of a story or narrative, which can be important in a personal statement. Inserting a typical ‘narrative signpost’ does not, however, mean you have a narrative. A narrative is a developed series of events – with connections that link together and make your story.
Firstly, it is rare for candidates to properly develop a story from the point they make about their parents in paragraph one. Secondly, in general, it is unlikely that a connected chain of reasoning that leads from your parent’s career, education, successes or failures is likely to create a picture of themselves that reads positively in the eyes of the Admissions Committee.
Highlight content issues to your client effectively
Generally, the regular problems above should be addressed by prompting the client to provide stronger, more targeted material: If the material falls short in respect, ensure you ask lots of questions.
* Advice | Give your client a straightforward, practical strategy to address the issue you’ve highlighted.
* Commentary | Your commentary should be informed by your understanding of what constitutes good writing in the context of the document you are handling; it justifies the advice you are giving your client and the effort you’re asking them to make in order to provide you with the tools to get them an improved second draft. You may be proposing/ utilizing approaches to self-expression/ written presentation/ structure with which your client is unfamiliar. Most clients will not necessarily know what to do with: "This needs to be more specific!" Therefore explain!
* Encouragement | You’re critiquing a document your client has likely spent a lot of time putting together; you may also introducing approaches to self-expression/ personal presentation/ structure (the dreaded matter of ‘logic’); they will also feel under a lot of stress and pressure because of the significance of the documents you’re handling to their future! Be nice! Find every way you can to be friendly and helpful; factor in the language barrier and go further than perhaps you ordinarily would.
These mindsets will support your clients in providing effective, useful responses to your questions that will ultimately save you time and raise the quality of the final product.
Prompt unpacking of generalizations
Encourage the client to unpack their claims and the details supporting them
I have lived in Tokyo, Shanghai, and California for years respectively. I have cherished each opportunity to experience local living in three of the most economically influential countries in the world. and it has been a very interesting experience for me to perceive these different cultures
Instead of a general statement about how it is “interesting” can you say something specific about it? What was interesting? The food, the language, the social customs? The educational systems? The influence of economics on their societies? Try to tie it in a little more to what makes you unique and to what you want to study.
Ask questions that reflect the type of response you'd like to receive
Don't prompt your client through a line of questioning that involves unhelpful directions such as
Be more specific ... Be more specific ... PLEASE be more specific.
Engage with the material and help your client come up with something more effective. As a rule of thumb, the nature of your questions should reflect the nature of the information you're asking for: i.e., questions should be specific, targeted, and engaged.
For example:
… During my sophomore year, I conducted a statistics project titled “A Study on Financial Behavior of Hangzhou City Residents,” which enabled …
* Advice A: Please provide context for this study.
* Advice B: Please provide context for this study. Was it part of a course, an independent study, part of a research project?
Advice B is clearly more helpful and likely to promote greater confidence. Although a good advisor may well go further:
or
OK: When we're talking about your research, we need to explain why your work is important—set the context and preempt the question "So what?" by informing the committee precisely why it is relevant to your objectives for their program. OK let's take [XYZ] research project. I need you to: • Describe the objective(s) of your work. What are you adding to current knowledge?
* Briefly explain the methods. This should not be a major focus of your abstract.
* Succinctly state results, conclusions, and recommendations. This is what most people want to know. Do not say "We presented the results of our study and recommendations for action and won X prize!" Tell them what you found out and what you'd therefore recommend!
Be supportive
Effective questions will lead the client helpfully through what they need to do to express the information needed to improve his or her statement, while demonstrating that you are conscientious and engaged:
Pinpoint specific, concrete details that would enhance the statement
By participating in this program, I gained hands-on experience of how MVC can increase software development efficiency, the reusability of codes by separating the input, and the processing and output of applications. I also gained valuable experience working as a team on a project, which allowed me to reflect on the ways that development projects involve a constant process of thinking and learning.
* How did these discoveries impact your work?
* Did you make adjustments to your research methods based on what you found?
* Did your work impact the process or outcome of the project?
* What was the publication about?
Ask questions with purpose
Prompt your clients to interpret experiences in ways that will solicit information the admissions committee wants to hear about.
Doing experiments just like treating disease that may be variable related to a small detail. With patience and perseverance, even though I failed the experiments several times…
Let’s talk about one of your failures, and how you eventually overcame it. Did you have to use creative methods to make any of your experiments work? Let’s tell a story with your research. “… I still enjoy the process and find the problems to have a perfect result.” What were the results/conclusions of your work? What did you contribute?
You will get the hang of it
Of course, there are plenty of times when it is sufficient and appropriate to just ask a straightforward question...
...provided you've done enough elsewhere to guide your client, solicit detailed information, and promote confidence in your suggestions.
What if a whole section is missing?
A common example would be the absence of a clear conclusion in the first draft...
Don’t just say:
Insert conclusion here.
1. Gather together and edit what they have.
2. Explain what is going on (ie: you are aware of the lack of a concluding paragraph—it is not an oversight on your part—and you are prompting them to proceed with providing the initial material.
3. Offer advice and pointers:
Basic characteristics of a strong application statement
* Strong introduction - arresting first line.
* Connect paragraphs - ensure the first sentence of paragraph 3 bears a relation to what is discussed at the end of paragraph 2.
* Cover off crucial aspects of the client's background - academia, relevant research and professional experience, aspirations.
* Show don't tell - use examples to illustrate qualities - don't make empty assertions.
* Make detailed links to the program applied for and the client's relevant background
* Perfect English, spelling and grammar on every draft. There's no excuse for not spell-checking the document!
* Avoid clichés – the word ‘passion’ for example should be avoided.
* Addresses the question posed.
* Relevant, integrated examples.
* Indication of relevant competencies that the admissions committee will gain from read between the lines.
* Positive emphasis; write in an active, not a passive voice.
* Demonstrate everything by example; don’t assert persistence – show it.
* Explanations for gaps in a record or poor grades should be written affirmatively not in the tone of an excuse.
* Everything is linked with continuity and focus.Specific, detailed explanations of the student’s desire for graduate study.
* Neat, integrated summaries of prior experience, including: research, projects, papers, professional experience, current activities.
* Research conducted, with whom, the title of the project, what your responsibilities were, and the outcome, written up from a technical perspective,or in the style of the relevant discipline.
* Indication of "readiness".
Annex: Peter T. Conley's 19th page
<$list filter='[list{$:/ActionVerbs/1/state}]'>
<$button class='p' set='$:/this/ActionVerbs' setTo={{!!title}}>{{!!title}}</$button>
</$list>
<$button style='font-size:70%;' class='tc-btn-invisible tc-tiddlylink' set='$:/L2/Jakob/MainText/user' setTo='0'>Reset</$button> to hide issues.
<$checkbox tiddler='$:/L2/Jakob/MainText' field='admin' checked='1' unchecked='0'> Admin</$checkbox>
<$reveal type='match' state='$:/L2/Jakob/MainText!!admin' text='1'>
<$checkbox tiddler='$:/L2/Jakob/MainText/position' tag='$:/tags/TopLeftBar'> Positioning tool</$checkbox>
</$reveal>
\define commentBox(deg)
<div class='' style='position:absolute;width:34%;top:$(h)$;z-index:99999999;left:$(left)$;-ms-transform: rotate($deg$); -webkit-transform: rotate($deg$); transform: rotate($deg$);'><$button selectedClass="myB1" set="$:/L2/Jakob/MainText/state" setTo={{!!title}} class="myB tc-btn-invisible"><div style='position:absolute;top:$(ifN)$;'>*</div><div style='left:20px;width:$(wid)$px;'><$image width='$(wid)$px' height='4px' source='$:/red-line-min.png'/></div></$button></div><$reveal type='match' state='$:/L2/Jakob/MainText/state' text={{!!title}}><div class='cardBox' style='position:absolute;width:34%;top:$(ifH)$;left:635px;font-size:80%;z-index:999999999;margin-top:$(t)$;'><$transclude tiddler={{$:/L2/Jakob/MainText/state}} mode="block"/></div>
</$reveal>
\end
<style>
.myB {padding:0;margin:0;color:red;font-size:100px;}
.myB1 {color:blue;}
</style>
<div style='position:relative;width:100%;height:850px;'>
<div class='cardBox' style='position:absolute;width:34%;top:-10px;left:635px;z-index:600404054065;margin-top:0px;border-radius:7px;'>
<<st "How many issues can you spot in this document?">>
1. Read the text and consider issues
2. <$button class='tc-btn-invisible tc-tiddlylink' set='$:/L2/Jakob/MainText/user' setTo='1'><$action-setfield $tiddler='$:/L2/Jakob/MainText/state' $field='text' $value='$:/L2/Jakob/Tips.1'/>Click here</$button> to read some issues we've identified.
<$reveal type='match' state='$:/L2/Jakob/MainText/user' text='1'>
Click on the asterisks to read the issue highlighted. ''Please note, these comments are addressed to an advisor, not a client.''
<$reveal type='match' state='$:/L2/Jakob/MainText/user' text='1'>
<div style='position:absolute;top:0;'>
<$button style='font-size:70%;' class='tc-btn-invisible tc-tiddlylink' set='$:/L2/Jakob/MainText/user' setTo='0'>{{$:/core/images/refresh-button}} Reset</$button>
</div></$reveal>
</$reveal>
</div>
<$list filter='[tag[$:/L2/Jakob/MainText]]'>
<$set name='r' value={{!!r}}>
<$set name='t' value={{!!t}}>
<$set name='h' value={{!!h}}>
<$set name="wid" filter="[title{!!title}wid[]]" value="150px" emptyValue={{!!wid}}>
<$set name="ifN" filter="[title{!!title}deg[90deg]]" value="60px" emptyValue="0">
<$set name='left' filter='[title{!!title}field:left[]]' value='470px' emptyValue={{!!left}}>
<$set name='ifH' filter='[title{!!title}field:small[1]]' value=<<h>> emptyValue='0px'>
<$reveal type='match' state='$:/L2/Jakob/MainText/user' text='1'>
<$macrocall $name="commentBox" deg={{!!deg}}/>
</$reveal>
</$set></$set></$set></$set></$set></$set></$set></$list>
<div style='position:absolute;width:65%;'>
<$image height="800px" source="https://photos-4.dropbox.com/t/2/AABpU68suBcBlZ_LRw-Fr-nHH_-6sp00LenwZ3bRO9CQXw/12/693466203/jpeg/32x32/3/1509393600/0/2/File%2024-10-2017%2C%2013%2039%2024.jpeg/EJq4nukFGDcgBygH/rRsY-wt72MgnBmU6ozGHITikAqoP6IXes0quVKU2h2I?dl=0&size=800x600&size_mode=3"/>
</div>
<div class='clearfix'></div>
<div style='background-color:#fff;position:absolute;top:100px;'><small><$list filter='[prefix[$:/L2/Jakob/Tips]]'>
<$set name='ifThis' filter='[title{!!title}prefix{$:/L2/Jakob/MainText/state}]' value='■' emptyValue='<span></span>'>
<div style='float:left;'><<ifThis>></div> <div style='margin-left:15px;'>W<$edit-text field='left'/> H<$edit-text field='h'/> T<$edit-text field='t'/> Deg<$edit-text field='deg'/> Wid<$edit-text field='wid'/></div></$set></$list></small></div><div class='clearfix'></div>
"...came across..." or "i was impressed": Although this example seems quite impressive initially (I think because it's expressed in a very clear way), it actually seems rather tenuously connected to the individual.
Put another way - I'm sure a lot of people "came across" WeBank (because it was a big deal: http://english.cntv.cn/2014/12/13/ARTI1418443607797109.shtml).
*It was the first, a novelty, so most of those other people probably found it impressive too.
*Given the lack of traditional 'bricks and mortar' forms of reassurance for banking clients, other people probably also wondered about the bank's vulnerability to risk.
I think the appearance of questions in one's mind, while encouraging, probably isn't a robust enough way to lead into this?
More interesting would be if the client rapidly explained what steps he or she took on account of those questions in order to pursue them to his or her satisfaction. So there that suggest opportunity to make a clearer connection to the material currently at the beginning of the next paragraph.
So... same as all the other top-draw programs. Why is it optimal?
I think, given that the edits might be light, it might be worth looking at the program's mission statement to draw inspiration for questions that will elicit some more targeted material (and provide link so client does most of the legwork). At present, these program references are quite underwhelming recitations of stuff straight off the website.
How does that relate to (i) the program, (ii) this person, (iii) the preceding material... sending client off to the program website to get specifics on his/ her anticipated practical experiences would probably enable you to guide him or her to building a more compelling way of saying this (that has some hope of clearly joining up to material in the preceding paragraphs).
Yes. Yes it would... ''They know that already!''
Whuh? Venezuela? ask about why that was going on within this internship - a bit of orientating context?
I may be being under-informed and I'd phrase this carefully to the client, but: why would analysis 'CBD have done this because..' be useful to actors already operating within CBD? The sentences might just need clarifying. The question "what was the goal of this analysis and how did your work contribute to the successful achievement of that goal?" would be helpful in delicately unpacking that.
Get specifics - seems like a big deal - quantifiables are nice!
This sounds like a much more interesting story to open on. It sounds like a genuinely scary situation with lots of relevance. I'd get him to mine for detail or two that can make for a more arresting opening than 'I came across a major news story'...
He or she means... case-by-case assessment isn't safe or practical? the 'dilemma' aspect probably needs to be teased out, assuming it was a dilemma.
Phrasing in first half of this sentence (post edits) would be strong opening opening words that might help focus the client on the purpose for which the factual content is being provided. Obviously this needs to be developed through the specifics provided in the document.
Very vague aspiration. Any master's program? You don't want this to be the first mention of the target program.
This goal would bear some connection-making to the China Merchants Bank experience?
It's recommended that you use Google Chrome to download the cover sheets properly.
The mechanism below will download the a .html version. If you wish to do this, download by right-clicking and then manually change the file extension of the downloaded file to <code>.doc</code>.
Thank you.
{{$:/core/images/save-button}}
//<small><<resultCount>> matches</small>// $:/Controls
//<small><<resultCount>> matches</small>//
Plugin tiddler: $:/plugin/inmysocks/rangewidget/range.js
Github: not set up yet
Usage:
```
<$range tiddler=someTiddler field=someField min=minValue max=maxValue step=stepSize class=someCSSClass/>
```
or
```
<$range tiddler=someTiddler index=someIndex min=minValue max=maxValue step=stepSize class=someCSSClass/>
```
Inputs:
|!Name |!Description |
|tiddler |The tiddler to store the value set by the range widget. |
|field |The field to store the value |
|index |The data tiddler index to store the value |
|min |The minimum value of the widget |
|max |The maximum value of the widget |
|step |The step size used by the widget |
|class |An optional CSS class for the widget |
!!Examples:
```
<$range tiddler='$:/state/Range Widget Plugin/demo' field='demo_field' min=1 max=50 step=1/> The current value is {{$:/state/Range Widget Plugin/demo!!demo_field}}
```
<$range tiddler='$:/state/Range Widget Plugin/demo' field='demo_field' min=1 max=50 step=1/> The current value is {{$:/state/Range Widget Plugin/demo!!demo_field}}
```
<$range tiddler='$:/state/Range Widget Plugin/demo' field='demo_field2' min=-100 max=100 step=10/> The current value is {{$:/state/Range Widget Plugin/demo!!demo_field2}}
```
<$range tiddler='$:/state/Range Widget Plugin/demo' field='demo_field2' min=-100 max=100 step=10/> The current value is {{$:/state/Range Widget Plugin/demo!!demo_field2}}
This is a widget that will display the number of words or characters in a tiddler or text string given to it.
Widget tiddler: [[$:/plugins/inmysocks/WordCount/word-count.js]]
Remember you have to save and reload your wiki before the widget will work.
|!Parameter |!Description |
|mode |This can be set to `word` or `character` and will count either words or characters, defaults to `word` |
|tiddler |The tiddler with the text to process (defauts to `currentTiddler`) |
|field |The field with the text to process (defaults to the text field) |
|text |A text string for the widget to count, if this is given it overrides the `tiddler` and `field` inputs. |
|colors |(Optional) An input that sets text color when the count reaches a certain number. See the examples below. |
|colorState |(Optional) The name of a state tiddler to use to store the current text color so it can be used to set the color of more than just the displayed number. |
!!Usage
!!!Count the number of words in a string:
```
<$word-count text='some text string'/>
```
<$word-count text='some text string'/>
!!!Count the number of characters in a string:
```
<$word-count text='some text string' mode=character/>
```
<$word-count text='some text string' mode=character/>
!!!Count the number of words in a field:
```
<$word-count tiddler='Word Count Widget' field='title' mode=word/>
```
<$word-count tiddler='Word Count Widget' field='title' mode=word/>
!!!Using the colors parameter:
This uses the `colorState` tiddler.
```
<$word-count tiddler='$:/temp/Word Count Widget' mode=character colors='#f0f:10,indianred:100,red:122' colorState='$:/state/Word Count Widget/color'/>
```
<$word-count tiddler='$:/temp/Word Count Widget' mode=character colors='#f0f:10,indianred:100,red:122' colorState='$:/state/Word Count Widget/color'/>
Edit the field here:
<$edit-text tiddler='$:/temp/Word Count Widget' class='tc-edit-texteditor'/>
Contents of the color state tiddler:
<$view tiddler='$:/state/Word Count Widget/color'/>
!!!Change colors of text as the number of characters in a field changes:
At the moment the input field loses focus every time the color changes.
```
<$word-count tiddler='$:/temp/Word Count Widget' mode=character colors='#f0f:10,indianred:100,red:122' colorState='$:/state/Word Count Widget/color'/>
```
<$word-count tiddler='$:/temp/Word Count Widget' mode=character colors='#f0f:10,indianred:100,red:122' colorState='$:/state/Word Count Widget/color'/>
Edit the field here:
<$set name=CurrentColor value={{$:/state/Word Count Widget/color}}>
<$edit-text tiddler='$:/temp/Word Count Widget' class='tc-edit-texteditor change-color'/>
</$set>
Contents of the color state tiddler:
<$view tiddler='$:/state/Word Count Widget/color'/>
<a href='https://www.facebook.com/groups/teamzhishiq/' target='_blank'>Advisor Group</a>
<$list filter='[tag[$:/NavTemplate]]'>
!!{{!!caption}}
<$list filter='[tag{!!caption}]'>
\define loginFields(f,m,t)
<$edit-text tiddler='$:/Login/Temp' field='$f$' field='$f$' tag='input' placeholder='$f$' type="$t$"/>
\end
\define actionSetDetails()
<$action-setfield $tiddler='$:/Login' password="$(passWord)$" name="$(theirName)$"/>
\end
\define pWordbutton(s,nav1,setmenu1,autosave)
<$set name='tick1' filter='[title[$:/Login/Temp]field:password{$:/Login/Password!!$s$}]' value="""
<$button class='l'>
<$action-sendmessage $message='tm-close-tiddler' $param="Login"/>
<$action-navigate $to="$nav1$"/>
<$action-navigate $to="Welcome"/>
<$action-listops $tiddler='$:/topBar' $field='tags' $subfilter='[list[$:/topBar!!tags]append[$:/tags/TopLeftBar]]'/>
<$action-setfield $tiddler='$:/Login' $field='s' $value='$:/'/>
<$action-setfield $tiddler='$:/Login' password="$(passWord)$" name="$(theirName)$"/>
<$action-sendmessage $message='tm-close-tiddler' $param='$:/Login'/>
<$action-sendmessage $message='tm-close-tiddler' $param='Logout'/>
Go
<$action-setfield $tiddler='$:/Login/Temp' password='' name='' showpassword=''/>
<$action-setfield $tiddler='$:/config/AutoSave' $field='text' $value='$autosave$'/>
<$action-setfield $tiddler="$:/themes/tiddlywiki/vanilla/metrics/storyleft" $field="" $value="345px"/>
<$action-setfield $tiddler="$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth" $field="" $value="20px"/>
</$button>
""" emptyValue=' '><<tick1>></$set>
\end
<style>
div.login {height:165px;background-color:#fff;border-radius:18px;padding:10px 25px;width:270px;margin-left:100px;}
button.l {background-color:none;border:none;border-radius:7px;}
button.l:hover {background-color:blue;border:none;color:white;}
</style>
<div style='float:left;'>{{$:/button/aboutZHISHIQ}} </div>
<div class='my-title'>Login</div>
<$set name='showHide' filter='[title[$:/Login/Temp]field:showpassword[1]]' value=" " emptyValue="password"><<loginFields name ''>><br>
<$set name='ifName' filter='[title{$:/Login/Temp!!name}minlength[3]]' value={{$:/Login/PasswordBox}} emptyValue=' '>
<<ifName>>
</$set>
</$set>
<$set name='passWord' value={{$:/Login/Temp!!password}}>
<$set name='theirName' value={{$:/Login/Temp!!name}}>
<<pWordbutton advisor '' '' no>><<pWordbutton admin $:/Controls menuBar yes>><<pWordbutton finance $:/Finance '' no>>
</$set></$set></$set>
<$macrocall $name='loginFields' f='password' t=<<showHide>>/> <$checkbox tiddler='$:/Login/Temp' field='showpassword' checked='1' unchecked='0'> ^^Show password^^</$checkbox>
This system enables advisors to take responsibility for new recruits when they join the team. You can select how many trainee advisors you think you can manage. Your trainees' first [[Training Reviews]] will be allocated to your account (exactly like appointed tasks).
If something unexpected comes up and you cannot help your trainees, their tasks will be automatically reallocated to the usual review marketplace when you set your profile to <code>unavailable</code>.
<table style='border:none;'>
<tr><$list filter='[tag[Management]] +[sortby[$:/Ray $:/Andy1 $:/Bill]]'><td style='border:none;width:175px;text-align:center;margin:0;'>
{{||$:/TeamPic}}
</td></$list>
</tr></table>
Established on a shoe-string budget by its management team, in 2011, ZHISHIQ has been expanding rapidly. We currently employ 23 China-based staff in our Xianlin-Nanjing office, along with hundreds of client advisors and mentors based across the globe.
<$button selectedClass='sidebselect' set='$:/Login!!s' setTo='$:/' class='sideb my-title'>Exit Mobile<$action-navigate $to='Welcome'/><$action-sendmessage $message='tm-close-other-tiddlers' $param='Welcome'/></$button>
<$button selectedClass='sidebselect' set='$:/Login!!s' setTo='' class='sideb my-title'>Mobile<$action-navigate $to='Mobile'/><$action-sendmessage $message='tm-close-other-tiddlers' $param='Mobile'/></$button>
<ul>
<$list filter='[tag{!!title}]'>
<li><$link to={{!!title}}>{{!!title}}</$link></li>
<$list filter='[tag{!!title}]'><ul>
<li><$link to={{!!title}}>{{!!title}}</$link></li>
</ul></$list>
``\define title-styles()
fill:$(foregroundColor)$;
\end
\define config-title()
$:/config/ViewToolbarButtons/Visibility/$(listItem)$
\end
<style>
.close {float:right;font-size:50%;padding:0px 10px;line-height:0px;margin-top:15px;}
.close:hofill:#fff;line-height:0px;border-radius:7px;}
</style>
<div class="tc-tiddler-title">
<div class="tc-titlebar">
<span class="tc-tiddler-controls" class='close'><$transclude tiddler='$:/core/ui/Buttons/close' mode='block'/>
</span><$reveal type='nomatch' state='$:/ViewTemplate/myPrefix' text='$:/'>
<div style='font-size:75%;'><$transclude field='title' mode='block'/>hgbfhf</div></$reveal>
</div>
</div>
.tc-tagged-info {margin-top: -20px;width:350px;}
.tc-tagged-courierMono .tc-tiddler-body {
font-size:1.2em;
font-family: "Courier New", Courier, monospace;
line-height:1.1em;
margin-top:15px;
}
.tc-tagged-topBar .tc-tiddler-body {height:0;}
tc-tagged-marginUp .tc-tiddler-body {margin-top:-155px;}
button.menu {background-color:transparent;border:none;}
.boxShadow {-webkit-box-shadow: inset 1px 2px 3px rgba(0,0,0,0.1);-moz-box-shadow: inset 1px 2px 3px rgba(0,0,0,0.1);box-shadow: inset 1px 2px 3px rgba(0,0,0,0.1);}
.tc-tagged-PackageServiceTool ul {margin-left:20px;}
.tc-tagged-shrinkSide {width:200px; height:300px;}
.tc-tagged-transparent {background-color:transparent;border:none;box-shadow:none;}
.tc-tagged-fullWidth {width: 1250px;}
.myScrollable {
border: none;
background-color: transparent;
padding: 0;
height: 150px;
position: relative;
width:200px;
}
.tc-tagged-chooser_style {background-color:transparent;color: #333;border: 1px solid transparent;box-shadow: none;
}
.tc-tagged-chooser_style .tc-tiddler-body {font-size: 1em;}
.tc-tagged-chooser_style .tc-tiddler-frame {padding:0px 5px;}
.tc-tagged-chooser_style .tc-tiddler-frame h3 {padding:0px; -webkit-margin-before: 0em;
-webkit-margin-after: 0em;}
.tc-tiddler-frame textarea.tc-edit-texteditor {background-color:#fff;border:1px solid whitesmoke;}
.tc-story-river {0px 42px 42px 42px;}
selected {background-color:#FFCCCB;color:#fff;}
.tabtag {padding:4px 10px 2px 10px;border:1px solid whitesmoke;border-radius:4px;background-color:#5778D9;color:white;}
.tabtag:hover{background-color:#FFCCCB;color:black;}
.tabtag2 {padding:4px 10px 2px 10px;border:1px solid whitesmoke;border-radius:4px;background-color:#fff;color:black;}
.tabtag2:hover {background-color:#5778D9;color:#fff;}
Click here and read the descriptions of the three main text-based services: <<sLink $:/Services>> (see left-hand sidebar). Then review the [[Document run-throughs]].
Please don't attempt a task until you are confident in what's required. But equally, please don't be reticent: We recommend you get stuck in immediately since this business is busiest between August and January.
Get started, get your first few tasks done brilliantly, and you'll be away! (Check out [[Pickup task]] as guide to picking up your first few tasks).
As odd as this might sound, reading [[Common causes of complaints]] is also a really good 'way in'.
It is important to see reviews as a learning opportunity (no matter how experienced you might be!) Try to avoid feeling any sense of personal affront when your work is reviewed and feedback is offered. Genuine willingness to look at the feedback provided and find opportunities for progress is far and away the most impressive quality one could hope to project as a new advisor on this platform (or, indeed, I'd say, in any context this world throws at us!)
We expect perfect language edits and thorough, conscientious, and professional advice.
<<n Rewards>>—in addition to the standard rates that you will find listed on the system when you accept tasks—are really important to us. <<n "The incentives system">> determines both who will receive our monthly $1000 bonuses and what multipliers you can apply to your client appointment fees.
Standardizing our services does ''not'' mean we discourage personal flair. It just needs to be built on top of the basic services so we can regulate quality.
In fact, establishing your personality and projecting your skills is the way to make the ZHISHIQ platform work for you.
Successful advisors cultivate relationships with their clients. Even advisors who charge 200% of standard rates or more become booked out, with clients sometimes delaying their applications in order to work with a specific, highly-recommended advisor.
Maintain high standards and a consistently professional service, combine it with warmth and engagement, and you'll find a lot of clients like you very much! That's where word-of-mouth about your skills and capacity will begin.
You've been added to the {{$:/Link/AdvisorGroup}}. Please say hello everyone in the group. Everyone is really friendly and everyone is rooting for you!
<$button class='tc-btn-invisible' set='$:/newAdvisors/currentSlide' setTo='1'><center><div style="width:250px;margin:40px; padding:40px 30px;font-family: 'Baloo Bhaijaan', cursive;font-size:400%;text-align:center;background-color:pink;color:#fff;border-radius:4px;">
Click!</div></center></$button>
Aim to transition your account from <<code "trainee advisor">> to <<code "advisor">> status ASAP.
The important up-shot is that you will be on full standard rates for your tasks rather than 50% rates (which will apply to your ''first two tasks of each type'').
(So, when you see a remarkably low-looking rate against a task on the platform, don't worry: Once you're through the first two of that task type, that number will double for future tasks of that type.)
To get up-to-speed, you will need to familiarize yourself with our three key services.
*<<n "Baseline Edit">>
*<<n "Heavy Edit">>
*<<n "VIP Service">> (Some advisors in the past have imbued this service with prohibitive significance simply because of the name... 'VIP'... and avoided it. Don't. This is a mistake and it causes it us all sorts of problems in gauging capacity. It's called //VIP// because it makes sense to clients that way. The Heavy edit service is where all the skills you need are developed and exemplified. If you can do a Heavy Edit well, you can do anything on our platform well).
<center><div style="margin:40px; padding:40px 30px;font-family: 'Baloo Bhaijaan', cursive;font-size:400%;text-align:center;line-height:1em;">
Welcome to new advisors</div></center>
<center><div style="margin:40px; padding:40px 30px;font-family: 'Baloo Bhaijaan', cursive;font-size:400%;text-align:center;line-height:1em;">
How to get started?</div></center>
It goes to the senior advisor who carries out <<n "Training Reviews">> on your work and provides you with detailed feedback.
Because our business is designed for scale (with nearly 20,000 clients served last year), we need to operate a moderately standardized process.
We rely on senior advisors to check work quality, suitability of approaches to clients, and assimilation of our service requirements.
Completing a strong profile that showcases your skills and provides direct evidence of your abilities enables you to attract casual browsers of the site to appoint you. You've already got a rough sketch of your profile content from your application. Build on that to get started!
You'll find all the links you need to accomplish this on the page called <<code "Key profile settings">> in these resources. To find this page either click <<code "USER GUIDE">> on the left-hand menu and find it in the sub-list, or do a search by pressing the <$button class='tc-btn-invisible'>{{$:/core/images/advanced-search-button}}</$button> button above the left-hand menu.
Avoid arbitrary capitalization
\define listChevron()
<$set name="ifNone" filter="[title<taG>!field:title[Tools]]" value="""<$reveal type='nomatch' state='!!ditch' text='y'><div style='display:inline;'><$reveal type='match' state='!!nolist' text='1'><$button set='!!nolist' setTo='' class='tc-btn-invisible'>{{$:/core/images/chevron-right}}</$button></$reveal><$reveal type='nomatch' state='!!nolist' text='1'><$button set='!!nolist' setTo='1' class='tc-btn-invisible'>{{$:/core/images/chevron-down}}</$button></$reveal></div></$reveal>""" emptyValue="<span></span>"><<ifNone>>
</$set>
\end
<style>
.sideb {background-color:#fff;border:1px solid grey;line-height:1em;text-align:right;padding:0}
.sidebselect {background-color:#5778D9;color:#fff;}
.myScrollable {
border: none;
background-color: transparent;
padding: 0;
height: 150px;
position: relative;
width:200px;
}
.u {text-transform:uppercase; text-align:left;margin-bottom:0;}
</style>
<div style='margin-right:10px;'>
<div style='text-align:right;float:left;'>
<$list filter='[tag[$:/NavTemplate]!tag[unfinished]]'>
<$button selectedClass='sidebselect' set='$:/DisplayConfig/Current' setTo={{!!title}} class='sideb my-title'>{{!!caption}}</$button><br>
</$list>
{{$:/MobileOpenButton}}
</div>
<div style='float:left;margin-left:8px;font-size:70%;margin-top:-4px;width:170px;padding-left:10px;'>
<$list filter='[title{$:/DisplayConfig/Current}]'>
<$set name='taG' value={{!!caption}}>
''{{!!caption}} contents:''
<ul style='padding-left:18px;line-height:1.8em;'>
<$list filter='[tag{!!caption}!tag[unfinished]!title[VIP Questionnaire Builder]!prefix[$:/]]'>
<li><$button message="tm-close-tiddler" class="u tc-btn-invisible tc-tiddlylink" param="Welcome"><$action-navigate $to={{!!title}}/>{{!!title}}</$button> <$set name='ifThen' filter='[tag{!!title}]' value=<<listChevron>> emptyValue='<span></span>'><<ifThen>></$set></li>
<$reveal type='nomatch' state='!!nolist' text='1'><ul style='padding-left:18px;'>
<$list filter='[tag{!!title}!prefix[$:/]]'>
<li><$button message="tm-close-tiddler" class="u tc-btn-invisible tc-tiddlylink" param="Welcome"><$action-navigate $to={{!!title}}/>{{!!title}}</$button></li>
</$list></ul></$reveal>
</$list>
<$reveal type='match' state='$:/DisplayConfig/Current' text='$:/Tools'><li><<closeOthers "Resume Builder">></li>
<li><<closeOthers "VIP Questionnaire Builder">></li>
</$reveal></ul></$set></$list></div><div class='clearfix'></div>
</div>
<$set name="dateColWidth1" filter="[title[$:/ResStyleTableW]!field:text[text='width:534.93pt;]]" value="92px" emptyValue="125pt">
<$set name="mainColWidth1" filter="[title[$:/ResStyleTableW]!field:text[text='width:534.93pt;]]" value="307px" emptyValue="409.93pt">
<$list filter='[tag[$:/NavTemplate]]'>
<div>
<$set name='theUnopenedOnes' value={{!!store}}>
<$set name='theLeftOnes' value={{!!left}}>
<$set name='theRightOnes' value={{!!right}}>
<$button class='tabtag my-title' style='color:#fff;' set='$:/DisplayConfig!!caption' setTo={{!!caption}}>{{!!caption}}
<$action-setfield $tiddler='$:/DisplayConfig/tempStore' $field='list' $value=<<theUnopenedOnes>>/>
<$action-setfield $tiddler='$:/DisplayConfig/Left' $field='list' $value=<<theLeftOnes>>/>
<$action-setfield $tiddler='$:/DisplayConfig/Right' $field='list' $value=<<theRightOnes>>/>
<$action-navigate $to='$:/DisplayConfig'/>
</$button>
</$set></$set></$set></div>
</$list>
{{$:/ProgramPackages/DocLengths}}
The WHO's commitment to helping every country fulfill duties of care towards their citizens, especially the most vulnerable. On 18 August 2017, Dr Tedros Adhanom Ghebreyesus, Director-General of the World Health Organization (WHO), came to Beijing to attend a high-level seminar on a "Health Silk Road". He also held a good-spirited meeting with the students, calling on us to “choose health today for a healthy tomorrow.” As a student of public health, I would echo Dr. Tedros' commitment to China contributing to global health and safety. My studies have instilled a passion for public health and the motivation to develop my knowledge. My objective is to acquire more nuanced and complex understanding of public health issues and the breadth of the fields it incorporates. I hope to also build on my healthcare knowledge by learning practical ways to deploy it. Accordingly, I wish to participate in the WHO's internship program to which I hope I have a lot to contribute.
The principal focus of my studies to date has involved policy on long-term care for the elderly. My involvement in a research project studying this subject in the context of Xiamen City, P.R.C. in 2016 was especially enlightening. I led a team of XX individuals to conduct an incisive investigation of each of the city’s 32 registered nursing homes. We established a database delineating the needs of the elderly under care and how they were addressed, including the manner in which medical resources were allocated at a policy-level. Comparative analysis of supply and demand enabled us to put forward a standardized model for optimal management of such institutions. We made a number of specific policy recommendations, including the establishment of an insurance system for long-term care based on our baseline data and making reference to the decision-making apparatus within the Xiamen Civil Affairs Bureau.
My research amounted to a complex project that contained multidimensional content in the field of long-term care; it was a challenging piece of work, that has—to date—resulted in four published papers. I was therefore excited to widen my perspective on healthcare when I was selected to participate in an exchange program at Texas A&M University in July. I value the two weeks I spent there learning new approaches to public health, rethinking all I had learned through an American lens, and developing a whole new view on healthcare in China. This was further supplemented by meaningful field trips to health facilities across Texas, including the Texas Department of State Health Services, Mosquito & Vector Control Division in Harris County, TX, which offered an acute demonstration of policy-making in practice.
“The best doctors cure people who are not yet ill,” is a quote from in the ancient Chinese medical classic Emperor’s Scripture. China's primary care infrastructure is in its infancy, with shortfalls in basic provision across the country, particularly for the elderly and children in rural areas. To stem the tide of need among disadvantaged groups, China's healthcare system requires accomplished primary health incentives. Scholars have conducted considerable analysis of hierarchical medical systems and coordinating medical data resources, with proposals for integration of community and institutional care systems, followed by trial schemes. For the development of successful community healthcare primary care incentives and efficient resource allocations, must be combined with disease prevention and advanced systems for chronic disease management.
Preventive medicine that emphasizes the social importance of focusing on healthy and asymptomatic patients is of critical importance to the future of public health in China given the cost of treating people who are already ill.
Universal primary healthcare is the goal to which I hope to contribute. The WHO is the key place for me to start. As a student of public health, I regard international vision, leadership and social concern to be the core values for an individual working in this area of expertise. Enriching my knowledge and understanding has been my constant priority, and it has paid off. Developing leadership skills and the means to extract benefits from cooperation are the critical competencies I wish to develop further. As such, I believe I would be a great match for the internship program at the WHO.
The following can be incorporated into the final paragraph if it is rendered more specific, I think:
I have read various WHO reports on the challenges posed by aging populations and non-communicable diseases.
The global horizons data application
[[$:/displayConfig/Admin]]
.my-title {font-size:50%;}
.tc-tagged-topBar {padding: 0px 20px 0px 20px;position:fixed;top:0;z-index:9999;line-height:0;}
.tc-tagged-topBar .menuBar {position:absolute;top:16px;left:150px;border-bottom:1px solid whitesmoke;width:70%;}
.tc-tagged-topBar .my-title {font-weight:bold;}
.tc-tagged-fullWidth {width: 1250px;}
.tc-tagged-chooser_style {background-color:transparent;color: #333;border: 1px solid transparent;box-shadow: none;
}
.tc-tagged-chooser_style .tc-tiddler-body {font-size: 1em;}
.tc-tagged-chooser_style .tc-tiddler-frame {padding:0px 5px;}
.tc-tagged-chooser_style .tc-tiddler-frame h3 {padding:0px; -webkit-margin-before: 0em;
-webkit-margin-after: 0em;}
.tc-tiddler-frame textarea.tc-edit-texteditor {background-color:#fff;border:1px solid whitesmoke;}
.tc-story-river {0px 42px 42px 42px;}
\define rowK(1, 2)
|!$1$| <code>$2$</code>|
\end
<<rowK "Service Level" $:/PackageServices/ServiceLevel/Temp>>
<<rowK "Service Speed" $:/PackageServices/ServiceSpeed/Temp>>
\define theSingleLoc()
{{$(thePackageType)$!!expiry_$(serviceLevel)$_1}}
\end
<$set name='thePackageType' value={{$:/PackageServices/PackageType/Temp}}>
<$set name='serviceLevel' filter='[title[$:/PackageServices/ServiceLevel/Temp]field:text[Heavy Edit]]' value='l2' emptyValue='vip'>
<$set name='ifNumber' filter='[title[$:/PackageServices/NumberSchools/Temp]!field:text[1]]' value='multi' emptyValue='1'>
<$set name='makeFieldName' filter='[title[expiry_]addsuffix<serviceLevel>addsuffix[_]addsuffix<ifNumber>]'>
<$set name='theExpVal' filter='[title{$:/PackageServices/PackageType/Temp}get<makeFieldName>]'>
<$calc><<theSingleLoc>> + ({{$:/PackageServices/NumberSchools/Temp}} - 1) * <<theExpVal>>
</$calc> days <$reveal type='nomatch' state='$:/PackageServices/NumberSchools/Temp' text='1'> //^^<<theSingleLoc>> days + (<$calc>{{$:/PackageServices/NumberSchools/Temp}} - 1</$calc> x <<theExpVal>> days)^^// </$reveal>
</$set>
</$set>
</$set>
</$set>
\define seealso()
<small>
//__See also:__//
<$list filter='[all[tiddlers]!is[system]!title<currentTiddler>regexp:text[word count]]'/>
</small>
\end
!{{!!caption}}
<$list filter='[tag[$:/PaymentRequests]]'>
<div style='background-color:#fff;margin:0 0 30px 0;border-radius:7px;padding:5px;'><$transclude tiddler={{!!title}} mode='block' /></div>
\define makePayItem()
<$action-setfield $tiddler='$:/PaymentRequests/Temp' $field='title' $value="""$:/PaymentRequests/Item/$(paymentID)$"""/>
<$action-setfield $tiddler="""$:/PaymentRequests/Item/$(paymentID)$""" record_time=<<now>> />
<$action-setfield $tiddler='$:/PaymentRequests/Current' $field='text' $value="""$:/PaymentRequests/Item/$(paymentID)$"""/>
\end
\define delCancel()
<$action-deletetiddler $tiddler={{$:/PaymentRequests/Current}}/>
\end
\define tb(p,c,f,s)
<$edit-text tiddler={{$:/PaymentRequests/Current}} placeholder='$p$' class='$c$' field='$f$' size='$s$'/>
\end
\define recurringSchedule()
$(theCurrentContainer)$!!recurring_payment
\end
\define recurringType()
$(theCurrentContainer)$!!recurring_payment-type
\end
<style>
table td.w {border:1px solid transparent;}
</style>
<$set name='paymentID' value=<<now mmhhssDDMMYY>>>
<$button set='$:/makePayItem' setTo='1'>Add new payment
<<makePayItem>>
</$button> </$set><$reveal type='match' state='$:/makePayItem' text='1'><$button set='$:/makePayItem' setTo='0'>
<<delCancel>>
{{$:/core/images/delete-button}}
</$button>
<$set name='theCurrentContainer' value={{$:/PaymentRequests/Current}}>
<$list filter='[title<theCurrentContainer>]'>
<<tb Description tc-edit-texteditor text>>
<<tb Authorization '' submitted_by>>
<$select tiddler=<<theCurrentContainer>> field='currency' default='$'>
<option>$</option>
<option>£</option>
<option>RMB</option>
</$select>
<<tb Cost '' amount 4>>
<<tb Payee '' payee>>
<<tb 'Payment date' '' payment_date>>
Recurring payment? <$radio tiddler=<<theCurrentContainer>> field=recurring_payment value=0> No</$radio>
<$radio tiddler=<<theCurrentContainer>> field=recurring_payment value=1> Yes</$radio> ^^If yes, please note Payment Schedule.^^
<$reveal type='match' state=<<recurringSchedule>> text='0'>
<<tb Total '' recurring_payment-total>>
<$radio tiddler=<<theCurrentContainer>> field='recurring_payment-type' value='monthly'> Monthly</$radio> <$radio tiddler=<<theCurrentContainer>> field='recurring_payment-type' value='other'> Other</$radio>
<$reveal type=match state=<<recurringType>> text='monthly'>
Please divide equally over <<tb # '' recurring_payment-monthly_months 2>>
<$reveal type=match state=<<recurringType>> text='other'>
<<tb Instructions '' recurring_payment-other_instructions 40>>
</$reveal></$reveal>
<$button set='$:/makePayItem' setTo='0'>Done
</$button>
</$reveal>
$:/PaymentRequests/Item/44143314817
<table>
<tr>
<th>Submitted</th>
<th>Authorized</th>
<th>Total</th><th>Payee</th>
<th>Description</th>
<th>Recurring payment?</th>
<th>Delete</th>
</tr>
<$list filter='[prefix[$:/PaymentRequests/Item/]sort{!!sortorder}]'>
<tr>
<td>{{!!record_time}}</td>
<td>{{!!submitted_by}}</td>
<td><$reveal type='nomatch' state='!!amount' text=''>{{!!currency}}{{!!amount}}</$reveal></td>
<td>{{!!payee}}</td>
<td>{{!!time_submitted}}{{!!text}}</td>
<td><$set name='ifRecurring' filter='[title{!!title}field:recurring_payment[1]]' value='Yes' emptyValue='No'><<ifRecurring>></$set></td>
<td>
<$button>
<$action-deletetiddler $tiddler={{!!title}}/>
{{$:/core/images/delete-button}}
</$button>
</td>
</tr>
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
<$action-setfield $tiddler='$:/config/Navigation/UpdateAddressBar' $value='no'/>
<$action-setfield $tiddler='$:/config/Navigation/UpdateAddressBar' $value='permalink'/>
/*\
title: $:/plugin/inmysocks/rangewidget/range.js
type: application/javascript
module-type: widget
Range widget
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
var Widget = require("$:/core/modules/widgets/widget.js").widget;
var RangeWidget = function(parseTreeNode,options) {
this.initialise(parseTreeNode,options);
};
/*
Inherit from the base widget class
*/
RangeWidget.prototype = new Widget();
/*
Render this widget into the DOM
*/
RangeWidget.prototype.render = function(parent,nextSibling) {
// Save the parent dom node
this.parentDomNode = parent;
// Compute our attributes
this.computeAttributes();
// Execute our logic
this.execute();
// Create our elements
this.labelDomNode = this.document.createElement("label");
this.labelDomNode.setAttribute("class",this.rangeClass);
this.inputDomNode = this.document.createElement("input");
this.inputDomNode.setAttribute("type","range");
this.inputDomNode.min = this.rangeMin;
this.inputDomNode.max = this.rangeMax;
this.inputDomNode.step = this.rangeStep;
this.inputDomNode.value = this.getValue();
/* if(this.getValue()) {
this.inputDomNode.setAttribute("checked","true");
}
*/
this.labelDomNode.appendChild(this.inputDomNode);
this.spanDomNode = this.document.createElement("span");
this.labelDomNode.appendChild(this.spanDomNode);
// Add a click event handler
$tw.utils.addEventListeners(this.inputDomNode,[
{name: "change", handlerObject: this, handlerMethod: "handleChangeEvent"}
]);
// Insert the label into the DOM and render any children
parent.insertBefore(this.labelDomNode,nextSibling);
this.renderChildren(this.spanDomNode,null);
this.domNodes.push(this.labelDomNode);
};
RangeWidget.prototype.getValue = function() {
var tiddler = this.wiki.getTiddler(this.rangeTitle);
if(tiddler) {
if (this.rangeField) {
return tiddler.getFieldString(this.rangeField);
}
}
return 0;
};
RangeWidget.prototype.handleChangeEvent = function(event) {
/* var checked = this.inputDomNode.checked,
tiddler = this.wiki.getTiddler(this.rangeTitle),
fallbackFields = {text: ""},
newFields = {title: this.rangeTitle};
*/
this.wiki.setText(this.rangeTitle,this.rangeField,this.rangeIndex,this.inputDomNode.value);
};
/*
Compute the internal state of the widget
*/
RangeWidget.prototype.execute = function() {
// Get the parameters from the attributes
this.rangeTitle = this.getAttribute("tiddler",this.getVariable("currentTiddler"));
this.rangeField = this.getAttribute("field");
this.rangeIndex = this.getAttribute("index");
this.rangeDefault = this.getAttribute("default","0");
this.rangeMin = this.getAttribute("min","0");
this.rangeMax = this.getAttribute("max","100");
this.rangeStep = this.getAttribute("step","1");
this.rangeClass = this.getAttribute("class","");
// Make the child widgets
this.makeChildWidgets();
};
/*
Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering
*/
RangeWidget.prototype.refresh = function(changedTiddlers) {
var changedAttributes = this.computeAttributes();
if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.default || changedAttributes.class) {
this.refreshSelf();
return true;
} else {
var refreshed = false;
if(changedTiddlers[this.rangeTitle]) {
this.inputDomNode.value = this.getValue();
refreshed = true;
}
return this.refreshChildren(changedTiddlers) || refreshed;
}
};
exports.range = RangeWidget;
})();
{
"tiddlers": {
"$:/language/Buttons/Copy/Caption": {
"text": "copy",
"title": "$:/language/Buttons/Copy/Caption"
},
"$:/language/Buttons/Copy/Hint": {
"text": "Copy to the clipboard",
"title": "$:/language/Buttons/Copy/Hint"
},
"$:/language/Buttons/Copy/Notification": {
"text": "Copied",
"title": "$:/language/Buttons/Copy/Notification"
},
"$:/plugins/ajh/copy/copy.js": {
"text": "/*\\\n$:/plugins/ajh/copy/copy.js\ntype: application/javascript\nmodule-type: startup\n\nSetup the root widget handler that can be used to copy transcluded tiddler to the Clipboard.\n\n<span id='TiddlerTitle'><$transclude tiddler='TiddlerTitle'/></span> <$button param='TiddlerTitle' message='tm-copy'>COPY</$button>\n\n\\*/\n(function () {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n'use strict';\n\n// Export name and synchronous status\nexports.name = 'copy';\nexports.platforms = ['browser'];\nexports.after = ['rootwidget'];\nexports.synchronous = true;\n\nexports.startup = function () {\n // Install the tiddler copy message mechanism\n $tw.rootWidget.addEventListener('tm-copy', function (event) {\n if (event) { \n try {\n var copyDiv = document.getElementById(event.param);\n copyDiv.contentEditable = true;\n copyDiv.focus();\n document.execCommand('SelectAll',false,null);\n document.execCommand('Copy', false, null);\n document.execCommand('Unselect');\n copyDiv.blur();\n return;\n } catch(e) {\n // Rethrow exception if it's not a SecurityError. Note that SecurityError\n // exception is specific to Firefox.\n if(e.name !== 'SecurityError')\n throw e;\n alert('Feature not available in older browsers!');\n return;\n }\n }\n });\n};\n\n})();",
"type": "application/javascript",
"title": "$:/plugins/ajh/copy/copy.js",
"module-type": "startup"
},
"$:/plugins/ajh/copy/images": {
"text": "\\define my-svg()\n<svg class='tc-image-copy tc-image-button' width='22pt' height='22pt' viewBox='0 0 128 128'><path d='m$(m)$$(path)$'/></svg>\n\\end\n\n<$vars m='75,16.2' path={{!!path}}>\n<<my-svg>>\n</$vars>",
"title": "$:/plugins/ajh/copy/images",
"tags": "$:/tags/Image",
"path": "a19,16 0 0 0 -38,0h-28.8a8,8 0 0 0 -8,8v95.6a8,8 0 0 0 8,8h95.6a8,8 0 0 0 8,-8v-15.8h-8v15.8h-95.6v-71.6h95.6v23.8h8v-47.8a8,8 0 0 0 -8,-8h-28.8zm-8,3c2,18 19,2 21,21h-64c2,-19 19,-3 21,-21a11,11 0 0 1 22,0zm12.8,44.8l-32,24l32,24v-16h40a8,8 0 0 0 0,-16h-40v-16zm-15.8,0h-48v-8h48v8zm-20,16h-28v-8h28v8zm-4,16h-24v-8h24v8zm16,16h-40v-8h40v8z"
},
"$:/plugins/ajh/copy/readme": {
"text": "This plugin button can copy the transcluded contents of a tiddler to the Clipboard. It can be called by transcluding a tiddler and using the `$:/copy` template. Example usage: `{{Tiddler title to transclude||$:/copy}}`.\n\nSimply drag $:/plugins/ajh/copy to the top of your tiddlywiki display, save and reload.\n\nThis plugin comprises:\n\n* JavaScript code module\n* Icon\n* Template\n* Stylesheet\n* Caption, hint, and notification",
"title": "$:/plugins/ajh/copy/readme"
},
"$:/plugins/ajh/copy/stylesheet": {
"text": "html .tc-copy-button button svg {\n height: {{!!button-size}};\n width: {{!!button-size}};\n}\n\n.tc-copy-button {\n fill: {{!!button-color}};\n}\n\n.tc-copy-button:hover {\n fill: {{!!button-hover-color}} !important;\n}",
"title": "$:/plugins/ajh/copy/stylesheet",
"tags": "$:/tags/Stylesheet",
"button-color": "#888",
"button-hover-color": "#000",
"button-size": "1.4em",
"caption": "Copy Button"
},
"$:/plugins/ajh/copy/icon": {
"text": "\\define my-svg()\n<svg class='tc-image-copy tc-image-button' width='22pt' height='22pt' viewBox='0 0 192 192'><path fill='#0ff' stroke='#30f' stroke-width='7.5' d='m13.5,52.2l82.5,-48l82.5,48v87.3l-82.5,48l-82.5,-48v-87.3z'/><path fill='#000' d='m$(m)$$(path)$'/></g></svg>\n\\end\n\n<$vars m='115,40' path={{$:/plugins/ajh/copy/images!!path}}>\n<<my-svg>>\n</$vars>",
"title": "$:/plugins/ajh/copy/icon",
"tags": "$:/tags/Image"
},
"$:/copy": {
"text": "<span id={{!!title}}><$transclude tiddler={{!!title}}/></span> <span class='tc-copy-button'><$button param={{!!title}} message='tm-copy' tooltip={{$:/language/Buttons/Copy/Hint}} aria-label={{$:/language/Buttons/Copy/Caption}} class='tc-btn-invisible'><$action-sendmessage $message='tm-notify' $param='$:/language/Buttons/Copy/Notification'/>{{$:/plugins/ajh/copy/images}}</$button></span>",
"title": "$:/copy"
}
}
}
{
"tiddlers": {
"$:/plugins/kixam/moment/moment.js": {
"text": "!function(a,b){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=b():\"function\"==typeof define&&define.amd?define(b):a.moment=b()}(this,function(){\"use strict\";function a(){return re.apply(null,arguments)}function b(a){re=a}function c(a){return a instanceof Array||\"[object Array]\"===Object.prototype.toString.call(a)}function d(a){return null!=a&&\"[object Object]\"===Object.prototype.toString.call(a)}function e(a){var b;for(b in a)return!1;return!0}function f(a){return void 0===a}function g(a){return\"number\"==typeof a||\"[object Number]\"===Object.prototype.toString.call(a)}function h(a){return a instanceof Date||\"[object Date]\"===Object.prototype.toString.call(a)}function i(a,b){var c,d=[];for(c=0;c<a.length;++c)d.push(b(a[c],c));return d}function j(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function k(a,b){for(var c in b)j(b,c)&&(a[c]=b[c]);return j(b,\"toString\")&&(a.toString=b.toString),j(b,\"valueOf\")&&(a.valueOf=b.valueOf),a}function l(a,b,c,d){return sb(a,b,c,d,!0).utc()}function m(){return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}}function n(a){return null==a._pf&&(a._pf=m()),a._pf}function o(a){if(null==a._isValid){var b=n(a),c=te.call(b.parsedDateParts,function(a){return null!=a}),d=!isNaN(a._d.getTime())&&b.overflow<0&&!b.empty&&!b.invalidMonth&&!b.invalidWeekday&&!b.nullInput&&!b.invalidFormat&&!b.userInvalidated&&(!b.meridiem||b.meridiem&&c);if(a._strict&&(d=d&&0===b.charsLeftOver&&0===b.unusedTokens.length&&void 0===b.bigHour),null!=Object.isFrozen&&Object.isFrozen(a))return d;a._isValid=d}return a._isValid}function p(a){var b=l(NaN);return null!=a?k(n(b),a):n(b).userInvalidated=!0,b}function q(a,b){var c,d,e;if(f(b._isAMomentObject)||(a._isAMomentObject=b._isAMomentObject),f(b._i)||(a._i=b._i),f(b._f)||(a._f=b._f),f(b._l)||(a._l=b._l),f(b._strict)||(a._strict=b._strict),f(b._tzm)||(a._tzm=b._tzm),f(b._isUTC)||(a._isUTC=b._isUTC),f(b._offset)||(a._offset=b._offset),f(b._pf)||(a._pf=n(b)),f(b._locale)||(a._locale=b._locale),ue.length>0)for(c=0;c<ue.length;c++)d=ue[c],e=b[d],f(e)||(a[d]=e);return a}function r(b){q(this,b),this._d=new Date(null!=b._d?b._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),ve===!1&&(ve=!0,a.updateOffset(this),ve=!1)}function s(a){return a instanceof r||null!=a&&null!=a._isAMomentObject}function t(a){return a<0?Math.ceil(a)||0:Math.floor(a)}function u(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=t(b)),c}function v(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;d<e;d++)(c&&a[d]!==b[d]||!c&&u(a[d])!==u(b[d]))&&g++;return g+f}function w(b){a.suppressDeprecationWarnings===!1&&\"undefined\"!=typeof console&&console.warn&&console.warn(\"Deprecation warning: \"+b)}function x(b,c){var d=!0;return k(function(){if(null!=a.deprecationHandler&&a.deprecationHandler(null,b),d){for(var e,f=[],g=0;g<arguments.length;g++){if(e=\"\",\"object\"==typeof arguments[g]){e+=\"\\n[\"+g+\"] \";for(var h in arguments[0])e+=h+\": \"+arguments[0][h]+\", \";e=e.slice(0,-2)}else e=arguments[g];f.push(e)}w(b+\"\\nArguments: \"+Array.prototype.slice.call(f).join(\"\")+\"\\n\"+(new Error).stack),d=!1}return c.apply(this,arguments)},c)}function y(b,c){null!=a.deprecationHandler&&a.deprecationHandler(b,c),we[b]||(w(c),we[b]=!0)}function z(a){return a instanceof Function||\"[object Function]\"===Object.prototype.toString.call(a)}function A(a){var b,c;for(c in a)b=a[c],z(b)?this[c]=b:this[\"_\"+c]=b;this._config=a,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+\"|\"+/\\d{1,2}/.source)}function B(a,b){var c,e=k({},a);for(c in b)j(b,c)&&(d(a[c])&&d(b[c])?(e[c]={},k(e[c],a[c]),k(e[c],b[c])):null!=b[c]?e[c]=b[c]:delete e[c]);for(c in a)j(a,c)&&!j(b,c)&&d(a[c])&&(e[c]=k({},e[c]));return e}function C(a){null!=a&&this.set(a)}function D(a,b,c){var d=this._calendar[a]||this._calendar.sameElse;return z(d)?d.call(b,c):d}function E(a){var b=this._longDateFormat[a],c=this._longDateFormat[a.toUpperCase()];return b||!c?b:(this._longDateFormat[a]=c.replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a])}function F(){return this._invalidDate}function G(a){return this._ordinal.replace(\"%d\",a)}function H(a,b,c,d){var e=this._relativeTime[c];return z(e)?e(a,b,c,d):e.replace(/%d/i,a)}function I(a,b){var c=this._relativeTime[a>0?\"future\":\"past\"];return z(c)?c(b):c.replace(/%s/i,b)}function J(a,b){var c=a.toLowerCase();Ge[c]=Ge[c+\"s\"]=Ge[b]=a}function K(a){return\"string\"==typeof a?Ge[a]||Ge[a.toLowerCase()]:void 0}function L(a){var b,c,d={};for(c in a)j(a,c)&&(b=K(c),b&&(d[b]=a[c]));return d}function M(a,b){He[a]=b}function N(a){var b=[];for(var c in a)b.push({unit:c,priority:He[c]});return b.sort(function(a,b){return a.priority-b.priority}),b}function O(b,c){return function(d){return null!=d?(Q(this,b,d),a.updateOffset(this,c),this):P(this,b)}}function P(a,b){return a.isValid()?a._d[\"get\"+(a._isUTC?\"UTC\":\"\")+b]():NaN}function Q(a,b,c){a.isValid()&&a._d[\"set\"+(a._isUTC?\"UTC\":\"\")+b](c)}function R(a){return a=K(a),z(this[a])?this[a]():this}function S(a,b){if(\"object\"==typeof a){a=L(a);for(var c=N(a),d=0;d<c.length;d++)this[c[d].unit](a[c[d].unit])}else if(a=K(a),z(this[a]))return this[a](b);return this}function T(a,b,c){var d=\"\"+Math.abs(a),e=b-d.length,f=a>=0;return(f?c?\"+\":\"\":\"-\")+Math.pow(10,Math.max(0,e)).toString().substr(1)+d}function U(a,b,c,d){var e=d;\"string\"==typeof d&&(e=function(){return this[d]()}),a&&(Le[a]=e),b&&(Le[b[0]]=function(){return T(e.apply(this,arguments),b[1],b[2])}),c&&(Le[c]=function(){return this.localeData().ordinal(e.apply(this,arguments),a)})}function V(a){return a.match(/\\[[\\s\\S]/)?a.replace(/^\\[|\\]$/g,\"\"):a.replace(/\\\\/g,\"\")}function W(a){var b,c,d=a.match(Ie);for(b=0,c=d.length;b<c;b++)Le[d[b]]?d[b]=Le[d[b]]:d[b]=V(d[b]);return function(b){var e,f=\"\";for(e=0;e<c;e++)f+=z(d[e])?d[e].call(b,a):d[e];return f}}function X(a,b){return a.isValid()?(b=Y(b,a.localeData()),Ke[b]=Ke[b]||W(b),Ke[b](a)):a.localeData().invalidDate()}function Y(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(Je.lastIndex=0;d>=0&&Je.test(a);)a=a.replace(Je,c),Je.lastIndex=0,d-=1;return a}function Z(a,b,c){bf[a]=z(b)?b:function(a,d){return a&&c?c:b}}function $(a,b){return j(bf,a)?bf[a](b._strict,b._locale):new RegExp(_(a))}function _(a){return aa(a.replace(\"\\\\\",\"\").replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,function(a,b,c,d,e){return b||c||d||e}))}function aa(a){return a.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g,\"\\\\$&\")}function ba(a,b){var c,d=b;for(\"string\"==typeof a&&(a=[a]),g(b)&&(d=function(a,c){c[b]=u(a)}),c=0;c<a.length;c++)cf[a[c]]=d}function ca(a,b){ba(a,function(a,c,d,e){d._w=d._w||{},b(a,d._w,d,e)})}function da(a,b,c){null!=b&&j(cf,a)&&cf[a](b,c._a,c,a)}function ea(a,b){return new Date(Date.UTC(a,b+1,0)).getUTCDate()}function fa(a,b){return a?c(this._months)?this._months[a.month()]:this._months[(this._months.isFormat||of).test(b)?\"format\":\"standalone\"][a.month()]:c(this._months)?this._months:this._months.standalone}function ga(a,b){return a?c(this._monthsShort)?this._monthsShort[a.month()]:this._monthsShort[of.test(b)?\"format\":\"standalone\"][a.month()]:c(this._monthsShort)?this._monthsShort:this._monthsShort.standalone}function ha(a,b,c){var d,e,f,g=a.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],d=0;d<12;++d)f=l([2e3,d]),this._shortMonthsParse[d]=this.monthsShort(f,\"\").toLocaleLowerCase(),this._longMonthsParse[d]=this.months(f,\"\").toLocaleLowerCase();return c?\"MMM\"===b?(e=nf.call(this._shortMonthsParse,g),e!==-1?e:null):(e=nf.call(this._longMonthsParse,g),e!==-1?e:null):\"MMM\"===b?(e=nf.call(this._shortMonthsParse,g),e!==-1?e:(e=nf.call(this._longMonthsParse,g),e!==-1?e:null)):(e=nf.call(this._longMonthsParse,g),e!==-1?e:(e=nf.call(this._shortMonthsParse,g),e!==-1?e:null))}function ia(a,b,c){var d,e,f;if(this._monthsParseExact)return ha.call(this,a,b,c);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),d=0;d<12;d++){if(e=l([2e3,d]),c&&!this._longMonthsParse[d]&&(this._longMonthsParse[d]=new RegExp(\"^\"+this.months(e,\"\").replace(\".\",\"\")+\"$\",\"i\"),this._shortMonthsParse[d]=new RegExp(\"^\"+this.monthsShort(e,\"\").replace(\".\",\"\")+\"$\",\"i\")),c||this._monthsParse[d]||(f=\"^\"+this.months(e,\"\")+\"|^\"+this.monthsShort(e,\"\"),this._monthsParse[d]=new RegExp(f.replace(\".\",\"\"),\"i\")),c&&\"MMMM\"===b&&this._longMonthsParse[d].test(a))return d;if(c&&\"MMM\"===b&&this._shortMonthsParse[d].test(a))return d;if(!c&&this._monthsParse[d].test(a))return d}}function ja(a,b){var c;if(!a.isValid())return a;if(\"string\"==typeof b)if(/^\\d+$/.test(b))b=u(b);else if(b=a.localeData().monthsParse(b),!g(b))return a;return c=Math.min(a.date(),ea(a.year(),b)),a._d[\"set\"+(a._isUTC?\"UTC\":\"\")+\"Month\"](b,c),a}function ka(b){return null!=b?(ja(this,b),a.updateOffset(this,!0),this):P(this,\"Month\")}function la(){return ea(this.year(),this.month())}function ma(a){return this._monthsParseExact?(j(this,\"_monthsRegex\")||oa.call(this),a?this._monthsShortStrictRegex:this._monthsShortRegex):(j(this,\"_monthsShortRegex\")||(this._monthsShortRegex=rf),this._monthsShortStrictRegex&&a?this._monthsShortStrictRegex:this._monthsShortRegex)}function na(a){return this._monthsParseExact?(j(this,\"_monthsRegex\")||oa.call(this),a?this._monthsStrictRegex:this._monthsRegex):(j(this,\"_monthsRegex\")||(this._monthsRegex=sf),this._monthsStrictRegex&&a?this._monthsStrictRegex:this._monthsRegex)}function oa(){function a(a,b){return b.length-a.length}var b,c,d=[],e=[],f=[];for(b=0;b<12;b++)c=l([2e3,b]),d.push(this.monthsShort(c,\"\")),e.push(this.months(c,\"\")),f.push(this.months(c,\"\")),f.push(this.monthsShort(c,\"\"));for(d.sort(a),e.sort(a),f.sort(a),b=0;b<12;b++)d[b]=aa(d[b]),e[b]=aa(e[b]);for(b=0;b<24;b++)f[b]=aa(f[b]);this._monthsRegex=new RegExp(\"^(\"+f.join(\"|\")+\")\",\"i\"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp(\"^(\"+e.join(\"|\")+\")\",\"i\"),this._monthsShortStrictRegex=new RegExp(\"^(\"+d.join(\"|\")+\")\",\"i\")}function pa(a){return qa(a)?366:365}function qa(a){return a%4===0&&a%100!==0||a%400===0}function ra(){return qa(this.year())}function sa(a,b,c,d,e,f,g){var h=new Date(a,b,c,d,e,f,g);return a<100&&a>=0&&isFinite(h.getFullYear())&&h.setFullYear(a),h}function ta(a){var b=new Date(Date.UTC.apply(null,arguments));return a<100&&a>=0&&isFinite(b.getUTCFullYear())&&b.setUTCFullYear(a),b}function ua(a,b,c){var d=7+b-c,e=(7+ta(a,0,d).getUTCDay()-b)%7;return-e+d-1}function va(a,b,c,d,e){var f,g,h=(7+c-d)%7,i=ua(a,d,e),j=1+7*(b-1)+h+i;return j<=0?(f=a-1,g=pa(f)+j):j>pa(a)?(f=a+1,g=j-pa(a)):(f=a,g=j),{year:f,dayOfYear:g}}function wa(a,b,c){var d,e,f=ua(a.year(),b,c),g=Math.floor((a.dayOfYear()-f-1)/7)+1;return g<1?(e=a.year()-1,d=g+xa(e,b,c)):g>xa(a.year(),b,c)?(d=g-xa(a.year(),b,c),e=a.year()+1):(e=a.year(),d=g),{week:d,year:e}}function xa(a,b,c){var d=ua(a,b,c),e=ua(a+1,b,c);return(pa(a)-d+e)/7}function ya(a){return wa(a,this._week.dow,this._week.doy).week}function za(){return this._week.dow}function Aa(){return this._week.doy}function Ba(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),\"d\")}function Ca(a){var b=wa(this,1,4).week;return null==a?b:this.add(7*(a-b),\"d\")}function Da(a,b){return\"string\"!=typeof a?a:isNaN(a)?(a=b.weekdaysParse(a),\"number\"==typeof a?a:null):parseInt(a,10)}function Ea(a,b){return\"string\"==typeof a?b.weekdaysParse(a)%7||7:isNaN(a)?null:a}function Fa(a,b){return a?c(this._weekdays)?this._weekdays[a.day()]:this._weekdays[this._weekdays.isFormat.test(b)?\"format\":\"standalone\"][a.day()]:c(this._weekdays)?this._weekdays:this._weekdays.standalone}function Ga(a){return a?this._weekdaysShort[a.day()]:this._weekdaysShort}function Ha(a){return a?this._weekdaysMin[a.day()]:this._weekdaysMin}function Ia(a,b,c){var d,e,f,g=a.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],d=0;d<7;++d)f=l([2e3,1]).day(d),this._minWeekdaysParse[d]=this.weekdaysMin(f,\"\").toLocaleLowerCase(),this._shortWeekdaysParse[d]=this.weekdaysShort(f,\"\").toLocaleLowerCase(),this._weekdaysParse[d]=this.weekdays(f,\"\").toLocaleLowerCase();return c?\"dddd\"===b?(e=nf.call(this._weekdaysParse,g),e!==-1?e:null):\"ddd\"===b?(e=nf.call(this._shortWeekdaysParse,g),e!==-1?e:null):(e=nf.call(this._minWeekdaysParse,g),e!==-1?e:null):\"dddd\"===b?(e=nf.call(this._weekdaysParse,g),e!==-1?e:(e=nf.call(this._shortWeekdaysParse,g),e!==-1?e:(e=nf.call(this._minWeekdaysParse,g),e!==-1?e:null))):\"ddd\"===b?(e=nf.call(this._shortWeekdaysParse,g),e!==-1?e:(e=nf.call(this._weekdaysParse,g),e!==-1?e:(e=nf.call(this._minWeekdaysParse,g),e!==-1?e:null))):(e=nf.call(this._minWeekdaysParse,g),e!==-1?e:(e=nf.call(this._weekdaysParse,g),e!==-1?e:(e=nf.call(this._shortWeekdaysParse,g),e!==-1?e:null)))}function Ja(a,b,c){var d,e,f;if(this._weekdaysParseExact)return Ia.call(this,a,b,c);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),d=0;d<7;d++){if(e=l([2e3,1]).day(d),c&&!this._fullWeekdaysParse[d]&&(this._fullWeekdaysParse[d]=new RegExp(\"^\"+this.weekdays(e,\"\").replace(\".\",\".?\")+\"$\",\"i\"),this._shortWeekdaysParse[d]=new RegExp(\"^\"+this.weekdaysShort(e,\"\").replace(\".\",\".?\")+\"$\",\"i\"),this._minWeekdaysParse[d]=new RegExp(\"^\"+this.weekdaysMin(e,\"\").replace(\".\",\".?\")+\"$\",\"i\")),this._weekdaysParse[d]||(f=\"^\"+this.weekdays(e,\"\")+\"|^\"+this.weekdaysShort(e,\"\")+\"|^\"+this.weekdaysMin(e,\"\"),this._weekdaysParse[d]=new RegExp(f.replace(\".\",\"\"),\"i\")),c&&\"dddd\"===b&&this._fullWeekdaysParse[d].test(a))return d;if(c&&\"ddd\"===b&&this._shortWeekdaysParse[d].test(a))return d;if(c&&\"dd\"===b&&this._minWeekdaysParse[d].test(a))return d;if(!c&&this._weekdaysParse[d].test(a))return d}}function Ka(a){if(!this.isValid())return null!=a?this:NaN;var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=Da(a,this.localeData()),this.add(a-b,\"d\")):b}function La(a){if(!this.isValid())return null!=a?this:NaN;var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,\"d\")}function Ma(a){if(!this.isValid())return null!=a?this:NaN;if(null!=a){var b=Ea(a,this.localeData());return this.day(this.day()%7?b:b-7)}return this.day()||7}function Na(a){return this._weekdaysParseExact?(j(this,\"_weekdaysRegex\")||Qa.call(this),a?this._weekdaysStrictRegex:this._weekdaysRegex):(j(this,\"_weekdaysRegex\")||(this._weekdaysRegex=yf),this._weekdaysStrictRegex&&a?this._weekdaysStrictRegex:this._weekdaysRegex)}function Oa(a){return this._weekdaysParseExact?(j(this,\"_weekdaysRegex\")||Qa.call(this),a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(j(this,\"_weekdaysShortRegex\")||(this._weekdaysShortRegex=zf),this._weekdaysShortStrictRegex&&a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Pa(a){return this._weekdaysParseExact?(j(this,\"_weekdaysRegex\")||Qa.call(this),a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(j(this,\"_weekdaysMinRegex\")||(this._weekdaysMinRegex=Af),this._weekdaysMinStrictRegex&&a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Qa(){function a(a,b){return b.length-a.length}var b,c,d,e,f,g=[],h=[],i=[],j=[];for(b=0;b<7;b++)c=l([2e3,1]).day(b),d=this.weekdaysMin(c,\"\"),e=this.weekdaysShort(c,\"\"),f=this.weekdays(c,\"\"),g.push(d),h.push(e),i.push(f),j.push(d),j.push(e),j.push(f);for(g.sort(a),h.sort(a),i.sort(a),j.sort(a),b=0;b<7;b++)h[b]=aa(h[b]),i[b]=aa(i[b]),j[b]=aa(j[b]);this._weekdaysRegex=new RegExp(\"^(\"+j.join(\"|\")+\")\",\"i\"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp(\"^(\"+i.join(\"|\")+\")\",\"i\"),this._weekdaysShortStrictRegex=new RegExp(\"^(\"+h.join(\"|\")+\")\",\"i\"),this._weekdaysMinStrictRegex=new RegExp(\"^(\"+g.join(\"|\")+\")\",\"i\")}function Ra(){return this.hours()%12||12}function Sa(){return this.hours()||24}function Ta(a,b){U(a,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),b)})}function Ua(a,b){return b._meridiemParse}function Va(a){return\"p\"===(a+\"\").toLowerCase().charAt(0)}function Wa(a,b,c){return a>11?c?\"pm\":\"PM\":c?\"am\":\"AM\"}function Xa(a){return a?a.toLowerCase().replace(\"_\",\"-\"):a}function Ya(a){for(var b,c,d,e,f=0;f<a.length;){for(e=Xa(a[f]).split(\"-\"),b=e.length,c=Xa(a[f+1]),c=c?c.split(\"-\"):null;b>0;){if(d=Za(e.slice(0,b).join(\"-\")))return d;if(c&&c.length>=b&&v(e,c,!0)>=b-1)break;b--}f++}return null}function Za(a){var b=null;if(!Ff[a]&&\"undefined\"!=typeof module&&module&&module.exports)try{b=Bf._abbr,require(\"./locale/\"+a),$a(b)}catch(a){}return Ff[a]}function $a(a,b){var c;return a&&(c=f(b)?bb(a):_a(a,b),c&&(Bf=c)),Bf._abbr}function _a(a,b){if(null!==b){var c=Ef;if(b.abbr=a,null!=Ff[a])y(\"defineLocaleOverride\",\"use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info.\"),c=Ff[a]._config;else if(null!=b.parentLocale){if(null==Ff[b.parentLocale])return Gf[b.parentLocale]||(Gf[b.parentLocale]=[]),Gf[b.parentLocale].push({name:a,config:b}),null;c=Ff[b.parentLocale]._config}return Ff[a]=new C(B(c,b)),Gf[a]&&Gf[a].forEach(function(a){_a(a.name,a.config)}),$a(a),Ff[a]}return delete Ff[a],null}function ab(a,b){if(null!=b){var c,d=Ef;null!=Ff[a]&&(d=Ff[a]._config),b=B(d,b),c=new C(b),c.parentLocale=Ff[a],Ff[a]=c,$a(a)}else null!=Ff[a]&&(null!=Ff[a].parentLocale?Ff[a]=Ff[a].parentLocale:null!=Ff[a]&&delete Ff[a]);return Ff[a]}function bb(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return Bf;if(!c(a)){if(b=Za(a))return b;a=[a]}return Ya(a)}function cb(){return ze(Ff)}function db(a){var b,c=a._a;return c&&n(a).overflow===-2&&(b=c[ef]<0||c[ef]>11?ef:c[ff]<1||c[ff]>ea(c[df],c[ef])?ff:c[gf]<0||c[gf]>24||24===c[gf]&&(0!==c[hf]||0!==c[jf]||0!==c[kf])?gf:c[hf]<0||c[hf]>59?hf:c[jf]<0||c[jf]>59?jf:c[kf]<0||c[kf]>999?kf:-1,n(a)._overflowDayOfYear&&(b<df||b>ff)&&(b=ff),n(a)._overflowWeeks&&b===-1&&(b=lf),n(a)._overflowWeekday&&b===-1&&(b=mf),n(a).overflow=b),a}function eb(a){var b,c,d,e,f,g,h=a._i,i=Hf.exec(h)||If.exec(h);if(i){for(n(a).iso=!0,b=0,c=Kf.length;b<c;b++)if(Kf[b][1].exec(i[1])){e=Kf[b][0],d=Kf[b][2]!==!1;break}if(null==e)return void(a._isValid=!1);if(i[3]){for(b=0,c=Lf.length;b<c;b++)if(Lf[b][1].exec(i[3])){f=(i[2]||\" \")+Lf[b][0];break}if(null==f)return void(a._isValid=!1)}if(!d&&null!=f)return void(a._isValid=!1);if(i[4]){if(!Jf.exec(i[4]))return void(a._isValid=!1);g=\"Z\"}a._f=e+(f||\"\")+(g||\"\"),lb(a)}else a._isValid=!1}function fb(a){var b,c,d,e,f,g,h,i,j={\" GMT\":\" +0000\",\" EDT\":\" -0400\",\" EST\":\" -0500\",\" CDT\":\" -0500\",\" CST\":\" -0600\",\" MDT\":\" -0600\",\" MST\":\" -0700\",\" PDT\":\" -0700\",\" PST\":\" -0800\"},k=\"YXWVUTSRQPONZABCDEFGHIKLM\";if(b=a._i.replace(/\\([^\\)]*\\)|[\\n\\t]/g,\" \").replace(/(\\s\\s+)/g,\" \").replace(/^\\s|\\s$/g,\"\"),c=Nf.exec(b)){if(d=c[1]?\"ddd\"+(5===c[1].length?\", \":\" \"):\"\",e=\"D MMM \"+(c[2].length>10?\"YYYY \":\"YY \"),f=\"HH:mm\"+(c[4]?\":ss\":\"\"),c[1]){var l=new Date(c[2]),m=[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"][l.getDay()];if(c[1].substr(0,3)!==m)return n(a).weekdayMismatch=!0,void(a._isValid=!1)}switch(c[5].length){case 2:0===i?h=\" +0000\":(i=k.indexOf(c[5][1].toUpperCase())-12,h=(i<0?\" -\":\" +\")+(\"\"+i).replace(/^-?/,\"0\").match(/..$/)[0]+\"00\");break;case 4:h=j[c[5]];break;default:h=j[\" GMT\"]}c[5]=h,a._i=c.splice(1).join(\"\"),g=\" ZZ\",a._f=d+e+f+g,lb(a),n(a).rfc2822=!0}else a._isValid=!1}function gb(b){var c=Mf.exec(b._i);return null!==c?void(b._d=new Date(+c[1])):(eb(b),void(b._isValid===!1&&(delete b._isValid,fb(b),b._isValid===!1&&(delete b._isValid,a.createFromInputFallback(b)))))}function hb(a,b,c){return null!=a?a:null!=b?b:c}function ib(b){var c=new Date(a.now());return b._useUTC?[c.getUTCFullYear(),c.getUTCMonth(),c.getUTCDate()]:[c.getFullYear(),c.getMonth(),c.getDate()]}function jb(a){var b,c,d,e,f=[];if(!a._d){for(d=ib(a),a._w&&null==a._a[ff]&&null==a._a[ef]&&kb(a),null!=a._dayOfYear&&(e=hb(a._a[df],d[df]),(a._dayOfYear>pa(e)||0===a._dayOfYear)&&(n(a)._overflowDayOfYear=!0),c=ta(e,0,a._dayOfYear),a._a[ef]=c.getUTCMonth(),a._a[ff]=c.getUTCDate()),b=0;b<3&&null==a._a[b];++b)a._a[b]=f[b]=d[b];for(;b<7;b++)a._a[b]=f[b]=null==a._a[b]?2===b?1:0:a._a[b];24===a._a[gf]&&0===a._a[hf]&&0===a._a[jf]&&0===a._a[kf]&&(a._nextDay=!0,a._a[gf]=0),a._d=(a._useUTC?ta:sa).apply(null,f),null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()-a._tzm),a._nextDay&&(a._a[gf]=24)}}function kb(a){var b,c,d,e,f,g,h,i;if(b=a._w,null!=b.GG||null!=b.W||null!=b.E)f=1,g=4,c=hb(b.GG,a._a[df],wa(tb(),1,4).year),d=hb(b.W,1),e=hb(b.E,1),(e<1||e>7)&&(i=!0);else{f=a._locale._week.dow,g=a._locale._week.doy;var j=wa(tb(),f,g);c=hb(b.gg,a._a[df],j.year),d=hb(b.w,j.week),null!=b.d?(e=b.d,(e<0||e>6)&&(i=!0)):null!=b.e?(e=b.e+f,(b.e<0||b.e>6)&&(i=!0)):e=f}d<1||d>xa(c,f,g)?n(a)._overflowWeeks=!0:null!=i?n(a)._overflowWeekday=!0:(h=va(c,d,e,f,g),a._a[df]=h.year,a._dayOfYear=h.dayOfYear)}function lb(b){if(b._f===a.ISO_8601)return void eb(b);if(b._f===a.RFC_2822)return void fb(b);b._a=[],n(b).empty=!0;var c,d,e,f,g,h=\"\"+b._i,i=h.length,j=0;for(e=Y(b._f,b._locale).match(Ie)||[],c=0;c<e.length;c++)f=e[c],d=(h.match($(f,b))||[])[0],d&&(g=h.substr(0,h.indexOf(d)),g.length>0&&n(b).unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),j+=d.length),Le[f]?(d?n(b).empty=!1:n(b).unusedTokens.push(f),da(f,d,b)):b._strict&&!d&&n(b).unusedTokens.push(f);n(b).charsLeftOver=i-j,h.length>0&&n(b).unusedInput.push(h),b._a[gf]<=12&&n(b).bigHour===!0&&b._a[gf]>0&&(n(b).bigHour=void 0),n(b).parsedDateParts=b._a.slice(0),n(b).meridiem=b._meridiem,b._a[gf]=mb(b._locale,b._a[gf],b._meridiem),jb(b),db(b)}function mb(a,b,c){var d;return null==c?b:null!=a.meridiemHour?a.meridiemHour(b,c):null!=a.isPM?(d=a.isPM(c),d&&b<12&&(b+=12),d||12!==b||(b=0),b):b}function nb(a){var b,c,d,e,f;if(0===a._f.length)return n(a).invalidFormat=!0,void(a._d=new Date(NaN));for(e=0;e<a._f.length;e++)f=0,b=q({},a),null!=a._useUTC&&(b._useUTC=a._useUTC),b._f=a._f[e],lb(b),o(b)&&(f+=n(b).charsLeftOver,f+=10*n(b).unusedTokens.length,n(b).score=f,(null==d||f<d)&&(d=f,c=b));k(a,c||b)}function ob(a){if(!a._d){var b=L(a._i);a._a=i([b.year,b.month,b.day||b.date,b.hour,b.minute,b.second,b.millisecond],function(a){return a&&parseInt(a,10)}),jb(a)}}function pb(a){var b=new r(db(qb(a)));return b._nextDay&&(b.add(1,\"d\"),b._nextDay=void 0),b}function qb(a){var b=a._i,d=a._f;return a._locale=a._locale||bb(a._l),null===b||void 0===d&&\"\"===b?p({nullInput:!0}):(\"string\"==typeof b&&(a._i=b=a._locale.preparse(b)),s(b)?new r(db(b)):(h(b)?a._d=b:c(d)?nb(a):d?lb(a):rb(a),o(a)||(a._d=null),a))}function rb(b){var e=b._i;f(e)?b._d=new Date(a.now()):h(e)?b._d=new Date(e.valueOf()):\"string\"==typeof e?gb(b):c(e)?(b._a=i(e.slice(0),function(a){return parseInt(a,10)}),jb(b)):d(e)?ob(b):g(e)?b._d=new Date(e):a.createFromInputFallback(b)}function sb(a,b,f,g,h){var i={};return f!==!0&&f!==!1||(g=f,f=void 0),(d(a)&&e(a)||c(a)&&0===a.length)&&(a=void 0),i._isAMomentObject=!0,i._useUTC=i._isUTC=h,i._l=f,i._i=a,i._f=b,i._strict=g,pb(i)}function tb(a,b,c,d){return sb(a,b,c,d,!1)}function ub(a,b){var d,e;if(1===b.length&&c(b[0])&&(b=b[0]),!b.length)return tb();for(d=b[0],e=1;e<b.length;++e)b[e].isValid()&&!b[e][a](d)||(d=b[e]);return d}function vb(){var a=[].slice.call(arguments,0);return ub(\"isBefore\",a)}function wb(){var a=[].slice.call(arguments,0);return ub(\"isAfter\",a)}function xb(a){for(var b in a)if(Rf.indexOf(b)===-1||null!=a[b]&&isNaN(a[b]))return!1;for(var c=!1,d=0;d<Rf.length;++d)if(a[Rf[d]]){if(c)return!1;parseFloat(a[Rf[d]])!==u(a[Rf[d]])&&(c=!0)}return!0}function yb(){return this._isValid}function zb(){return Sb(NaN)}function Ab(a){var b=L(a),c=b.year||0,d=b.quarter||0,e=b.month||0,f=b.week||0,g=b.day||0,h=b.hour||0,i=b.minute||0,j=b.second||0,k=b.millisecond||0;this._isValid=xb(b),this._milliseconds=+k+1e3*j+6e4*i+1e3*h*60*60,this._days=+g+7*f,this._months=+e+3*d+12*c,this._data={},this._locale=bb(),this._bubble()}function Bb(a){return a instanceof Ab}function Cb(a){return a<0?Math.round(-1*a)*-1:Math.round(a)}function Db(a,b){U(a,0,0,function(){var a=this.utcOffset(),c=\"+\";return a<0&&(a=-a,c=\"-\"),c+T(~~(a/60),2)+b+T(~~a%60,2)})}function Eb(a,b){var c=(b||\"\").match(a);if(null===c)return null;var d=c[c.length-1]||[],e=(d+\"\").match(Sf)||[\"-\",0,0],f=+(60*e[1])+u(e[2]);return 0===f?0:\"+\"===e[0]?f:-f}function Fb(b,c){var d,e;return c._isUTC?(d=c.clone(),e=(s(b)||h(b)?b.valueOf():tb(b).valueOf())-d.valueOf(),d._d.setTime(d._d.valueOf()+e),a.updateOffset(d,!1),d):tb(b).local()}function Gb(a){return 15*-Math.round(a._d.getTimezoneOffset()/15)}function Hb(b,c,d){var e,f=this._offset||0;if(!this.isValid())return null!=b?this:NaN;if(null!=b){if(\"string\"==typeof b){if(b=Eb($e,b),null===b)return this}else Math.abs(b)<16&&!d&&(b=60*b);return!this._isUTC&&c&&(e=Gb(this)),this._offset=b,this._isUTC=!0,null!=e&&this.add(e,\"m\"),f!==b&&(!c||this._changeInProgress?Xb(this,Sb(b-f,\"m\"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?f:Gb(this)}function Ib(a,b){return null!=a?(\"string\"!=typeof a&&(a=-a),this.utcOffset(a,b),this):-this.utcOffset()}function Jb(a){return this.utcOffset(0,a)}function Kb(a){return this._isUTC&&(this.utcOffset(0,a),this._isUTC=!1,a&&this.subtract(Gb(this),\"m\")),this}function Lb(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if(\"string\"==typeof this._i){var a=Eb(Ze,this._i);null!=a?this.utcOffset(a):this.utcOffset(0,!0)}return this}function Mb(a){return!!this.isValid()&&(a=a?tb(a).utcOffset():0,(this.utcOffset()-a)%60===0)}function Nb(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Ob(){if(!f(this._isDSTShifted))return this._isDSTShifted;var a={};if(q(a,this),a=qb(a),a._a){var b=a._isUTC?l(a._a):tb(a._a);this._isDSTShifted=this.isValid()&&v(a._a,b.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Pb(){return!!this.isValid()&&!this._isUTC}function Qb(){return!!this.isValid()&&this._isUTC}function Rb(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}function Sb(a,b){var c,d,e,f=a,h=null;return Bb(a)?f={ms:a._milliseconds,d:a._days,M:a._months}:g(a)?(f={},b?f[b]=a:f.milliseconds=a):(h=Tf.exec(a))?(c=\"-\"===h[1]?-1:1,f={y:0,d:u(h[ff])*c,h:u(h[gf])*c,m:u(h[hf])*c,s:u(h[jf])*c,ms:u(Cb(1e3*h[kf]))*c}):(h=Uf.exec(a))?(c=\"-\"===h[1]?-1:1,f={y:Tb(h[2],c),M:Tb(h[3],c),w:Tb(h[4],c),d:Tb(h[5],c),h:Tb(h[6],c),m:Tb(h[7],c),s:Tb(h[8],c)}):null==f?f={}:\"object\"==typeof f&&(\"from\"in f||\"to\"in f)&&(e=Vb(tb(f.from),tb(f.to)),f={},f.ms=e.milliseconds,f.M=e.months),d=new Ab(f),Bb(a)&&j(a,\"_locale\")&&(d._locale=a._locale),d}function Tb(a,b){var c=a&&parseFloat(a.replace(\",\",\".\"));return(isNaN(c)?0:c)*b}function Ub(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,\"M\").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,\"M\"),c}function Vb(a,b){var c;return a.isValid()&&b.isValid()?(b=Fb(b,a),a.isBefore(b)?c=Ub(a,b):(c=Ub(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c):{milliseconds:0,months:0}}function Wb(a,b){return function(c,d){var e,f;return null===d||isNaN(+d)||(y(b,\"moment().\"+b+\"(period, number) is deprecated. Please use moment().\"+b+\"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.\"),f=c,c=d,d=f),c=\"string\"==typeof c?+c:c,e=Sb(c,d),Xb(this,e,a),this}}function Xb(b,c,d,e){var f=c._milliseconds,g=Cb(c._days),h=Cb(c._months);b.isValid()&&(e=null==e||e,f&&b._d.setTime(b._d.valueOf()+f*d),g&&Q(b,\"Date\",P(b,\"Date\")+g*d),h&&ja(b,P(b,\"Month\")+h*d),e&&a.updateOffset(b,g||h))}function Yb(a,b){var c=a.diff(b,\"days\",!0);return c<-6?\"sameElse\":c<-1?\"lastWeek\":c<0?\"lastDay\":c<1?\"sameDay\":c<2?\"nextDay\":c<7?\"nextWeek\":\"sameElse\"}function Zb(b,c){var d=b||tb(),e=Fb(d,this).startOf(\"day\"),f=a.calendarFormat(this,e)||\"sameElse\",g=c&&(z(c[f])?c[f].call(this,d):c[f]);return this.format(g||this.localeData().calendar(f,this,tb(d)))}function $b(){return new r(this)}function _b(a,b){var c=s(a)?a:tb(a);return!(!this.isValid()||!c.isValid())&&(b=K(f(b)?\"millisecond\":b),\"millisecond\"===b?this.valueOf()>c.valueOf():c.valueOf()<this.clone().startOf(b).valueOf())}function ac(a,b){var c=s(a)?a:tb(a);return!(!this.isValid()||!c.isValid())&&(b=K(f(b)?\"millisecond\":b),\"millisecond\"===b?this.valueOf()<c.valueOf():this.clone().endOf(b).valueOf()<c.valueOf())}function bc(a,b,c,d){return d=d||\"()\",(\"(\"===d[0]?this.isAfter(a,c):!this.isBefore(a,c))&&(\")\"===d[1]?this.isBefore(b,c):!this.isAfter(b,c))}function cc(a,b){var c,d=s(a)?a:tb(a);return!(!this.isValid()||!d.isValid())&&(b=K(b||\"millisecond\"),\"millisecond\"===b?this.valueOf()===d.valueOf():(c=d.valueOf(),this.clone().startOf(b).valueOf()<=c&&c<=this.clone().endOf(b).valueOf()))}function dc(a,b){return this.isSame(a,b)||this.isAfter(a,b)}function ec(a,b){return this.isSame(a,b)||this.isBefore(a,b)}function fc(a,b,c){var d,e,f,g;return this.isValid()?(d=Fb(a,this),d.isValid()?(e=6e4*(d.utcOffset()-this.utcOffset()),b=K(b),\"year\"===b||\"month\"===b||\"quarter\"===b?(g=gc(this,d),\"quarter\"===b?g/=3:\"year\"===b&&(g/=12)):(f=this-d,g=\"second\"===b?f/1e3:\"minute\"===b?f/6e4:\"hour\"===b?f/36e5:\"day\"===b?(f-e)/864e5:\"week\"===b?(f-e)/6048e5:f),c?g:t(g)):NaN):NaN}function gc(a,b){var c,d,e=12*(b.year()-a.year())+(b.month()-a.month()),f=a.clone().add(e,\"months\");return b-f<0?(c=a.clone().add(e-1,\"months\"),d=(b-f)/(f-c)):(c=a.clone().add(e+1,\"months\"),d=(b-f)/(c-f)),-(e+d)||0}function hc(){return this.clone().locale(\"en\").format(\"ddd MMM DD YYYY HH:mm:ss [GMT]ZZ\")}function ic(){if(!this.isValid())return null;var a=this.clone().utc();return a.year()<0||a.year()>9999?X(a,\"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]\"):z(Date.prototype.toISOString)?this.toDate().toISOString():X(a,\"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]\")}function jc(){if(!this.isValid())return\"moment.invalid(/* \"+this._i+\" */)\";var a=\"moment\",b=\"\";this.isLocal()||(a=0===this.utcOffset()?\"moment.utc\":\"moment.parseZone\",b=\"Z\");var c=\"[\"+a+'(\"]',d=0<=this.year()&&this.year()<=9999?\"YYYY\":\"YYYYYY\",e=\"-MM-DD[T]HH:mm:ss.SSS\",f=b+'[\")]';return this.format(c+d+e+f)}function kc(b){b||(b=this.isUtc()?a.defaultFormatUtc:a.defaultFormat);var c=X(this,b);return this.localeData().postformat(c)}function lc(a,b){return this.isValid()&&(s(a)&&a.isValid()||tb(a).isValid())?Sb({to:this,from:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function mc(a){return this.from(tb(),a)}function nc(a,b){return this.isValid()&&(s(a)&&a.isValid()||tb(a).isValid())?Sb({from:this,to:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function oc(a){return this.to(tb(),a)}function pc(a){var b;return void 0===a?this._locale._abbr:(b=bb(a),null!=b&&(this._locale=b),this)}function qc(){return this._locale}function rc(a){switch(a=K(a)){case\"year\":this.month(0);case\"quarter\":case\"month\":this.date(1);case\"week\":case\"isoWeek\":case\"day\":case\"date\":this.hours(0);case\"hour\":this.minutes(0);case\"minute\":this.seconds(0);case\"second\":this.milliseconds(0)}return\"week\"===a&&this.weekday(0),\"isoWeek\"===a&&this.isoWeekday(1),\"quarter\"===a&&this.month(3*Math.floor(this.month()/3)),this}function sc(a){return a=K(a),void 0===a||\"millisecond\"===a?this:(\"date\"===a&&(a=\"day\"),this.startOf(a).add(1,\"isoWeek\"===a?\"week\":a).subtract(1,\"ms\"))}function tc(){return this._d.valueOf()-6e4*(this._offset||0)}function uc(){return Math.floor(this.valueOf()/1e3)}function vc(){return new Date(this.valueOf())}function wc(){var a=this;return[a.year(),a.month(),a.date(),a.hour(),a.minute(),a.second(),a.millisecond()]}function xc(){var a=this;return{years:a.year(),months:a.month(),date:a.date(),hours:a.hours(),minutes:a.minutes(),seconds:a.seconds(),milliseconds:a.milliseconds()}}function yc(){return this.isValid()?this.toISOString():null}function zc(){return o(this)}function Ac(){\nreturn k({},n(this))}function Bc(){return n(this).overflow}function Cc(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Dc(a,b){U(0,[a,a.length],0,b)}function Ec(a){return Ic.call(this,a,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)}function Fc(a){return Ic.call(this,a,this.isoWeek(),this.isoWeekday(),1,4)}function Gc(){return xa(this.year(),1,4)}function Hc(){var a=this.localeData()._week;return xa(this.year(),a.dow,a.doy)}function Ic(a,b,c,d,e){var f;return null==a?wa(this,d,e).year:(f=xa(a,d,e),b>f&&(b=f),Jc.call(this,a,b,c,d,e))}function Jc(a,b,c,d,e){var f=va(a,b,c,d,e),g=ta(f.year,0,f.dayOfYear);return this.year(g.getUTCFullYear()),this.month(g.getUTCMonth()),this.date(g.getUTCDate()),this}function Kc(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)}function Lc(a){var b=Math.round((this.clone().startOf(\"day\")-this.clone().startOf(\"year\"))/864e5)+1;return null==a?b:this.add(a-b,\"d\")}function Mc(a,b){b[kf]=u(1e3*(\"0.\"+a))}function Nc(){return this._isUTC?\"UTC\":\"\"}function Oc(){return this._isUTC?\"Coordinated Universal Time\":\"\"}function Pc(a){return tb(1e3*a)}function Qc(){return tb.apply(null,arguments).parseZone()}function Rc(a){return a}function Sc(a,b,c,d){var e=bb(),f=l().set(d,b);return e[c](f,a)}function Tc(a,b,c){if(g(a)&&(b=a,a=void 0),a=a||\"\",null!=b)return Sc(a,b,c,\"month\");var d,e=[];for(d=0;d<12;d++)e[d]=Sc(a,d,c,\"month\");return e}function Uc(a,b,c,d){\"boolean\"==typeof a?(g(b)&&(c=b,b=void 0),b=b||\"\"):(b=a,c=b,a=!1,g(b)&&(c=b,b=void 0),b=b||\"\");var e=bb(),f=a?e._week.dow:0;if(null!=c)return Sc(b,(c+f)%7,d,\"day\");var h,i=[];for(h=0;h<7;h++)i[h]=Sc(b,(h+f)%7,d,\"day\");return i}function Vc(a,b){return Tc(a,b,\"months\")}function Wc(a,b){return Tc(a,b,\"monthsShort\")}function Xc(a,b,c){return Uc(a,b,c,\"weekdays\")}function Yc(a,b,c){return Uc(a,b,c,\"weekdaysShort\")}function Zc(a,b,c){return Uc(a,b,c,\"weekdaysMin\")}function $c(){var a=this._data;return this._milliseconds=dg(this._milliseconds),this._days=dg(this._days),this._months=dg(this._months),a.milliseconds=dg(a.milliseconds),a.seconds=dg(a.seconds),a.minutes=dg(a.minutes),a.hours=dg(a.hours),a.months=dg(a.months),a.years=dg(a.years),this}function _c(a,b,c,d){var e=Sb(b,c);return a._milliseconds+=d*e._milliseconds,a._days+=d*e._days,a._months+=d*e._months,a._bubble()}function ad(a,b){return _c(this,a,b,1)}function bd(a,b){return _c(this,a,b,-1)}function cd(a){return a<0?Math.floor(a):Math.ceil(a)}function dd(){var a,b,c,d,e,f=this._milliseconds,g=this._days,h=this._months,i=this._data;return f>=0&&g>=0&&h>=0||f<=0&&g<=0&&h<=0||(f+=864e5*cd(fd(h)+g),g=0,h=0),i.milliseconds=f%1e3,a=t(f/1e3),i.seconds=a%60,b=t(a/60),i.minutes=b%60,c=t(b/60),i.hours=c%24,g+=t(c/24),e=t(ed(g)),h+=e,g-=cd(fd(e)),d=t(h/12),h%=12,i.days=g,i.months=h,i.years=d,this}function ed(a){return 4800*a/146097}function fd(a){return 146097*a/4800}function gd(a){if(!this.isValid())return NaN;var b,c,d=this._milliseconds;if(a=K(a),\"month\"===a||\"year\"===a)return b=this._days+d/864e5,c=this._months+ed(b),\"month\"===a?c:c/12;switch(b=this._days+Math.round(fd(this._months)),a){case\"week\":return b/7+d/6048e5;case\"day\":return b+d/864e5;case\"hour\":return 24*b+d/36e5;case\"minute\":return 1440*b+d/6e4;case\"second\":return 86400*b+d/1e3;case\"millisecond\":return Math.floor(864e5*b)+d;default:throw new Error(\"Unknown unit \"+a)}}function hd(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*u(this._months/12):NaN}function id(a){return function(){return this.as(a)}}function jd(a){return a=K(a),this.isValid()?this[a+\"s\"]():NaN}function kd(a){return function(){return this.isValid()?this._data[a]:NaN}}function ld(){return t(this.days()/7)}function md(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function nd(a,b,c){var d=Sb(a).abs(),e=tg(d.as(\"s\")),f=tg(d.as(\"m\")),g=tg(d.as(\"h\")),h=tg(d.as(\"d\")),i=tg(d.as(\"M\")),j=tg(d.as(\"y\")),k=e<=ug.ss&&[\"s\",e]||e<ug.s&&[\"ss\",e]||f<=1&&[\"m\"]||f<ug.m&&[\"mm\",f]||g<=1&&[\"h\"]||g<ug.h&&[\"hh\",g]||h<=1&&[\"d\"]||h<ug.d&&[\"dd\",h]||i<=1&&[\"M\"]||i<ug.M&&[\"MM\",i]||j<=1&&[\"y\"]||[\"yy\",j];return k[2]=b,k[3]=+a>0,k[4]=c,md.apply(null,k)}function od(a){return void 0===a?tg:\"function\"==typeof a&&(tg=a,!0)}function pd(a,b){return void 0!==ug[a]&&(void 0===b?ug[a]:(ug[a]=b,\"s\"===a&&(ug.ss=b-1),!0))}function qd(a){if(!this.isValid())return this.localeData().invalidDate();var b=this.localeData(),c=nd(this,!a,b);return a&&(c=b.pastFuture(+this,c)),b.postformat(c)}function rd(){if(!this.isValid())return this.localeData().invalidDate();var a,b,c,d=vg(this._milliseconds)/1e3,e=vg(this._days),f=vg(this._months);a=t(d/60),b=t(a/60),d%=60,a%=60,c=t(f/12),f%=12;var g=c,h=f,i=e,j=b,k=a,l=d,m=this.asSeconds();return m?(m<0?\"-\":\"\")+\"P\"+(g?g+\"Y\":\"\")+(h?h+\"M\":\"\")+(i?i+\"D\":\"\")+(j||k||l?\"T\":\"\")+(j?j+\"H\":\"\")+(k?k+\"M\":\"\")+(l?l+\"S\":\"\"):\"P0D\"}\n//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\nfunction sd(a,b){var c=a.split(\"_\");return b%10===1&&b%100!==11?c[0]:b%10>=2&&b%10<=4&&(b%100<10||b%100>=20)?c[1]:c[2]}function td(a,b,c){var d={mm:b?\"хвіліна_хвіліны_хвілін\":\"хвіліну_хвіліны_хвілін\",hh:b?\"гадзіна_гадзіны_гадзін\":\"гадзіну_гадзіны_гадзін\",dd:\"дзень_дні_дзён\",MM:\"месяц_месяцы_месяцаў\",yy:\"год_гады_гадоў\"};return\"m\"===c?b?\"хвіліна\":\"хвіліну\":\"h\"===c?b?\"гадзіна\":\"гадзіну\":a+\" \"+sd(d[c],+a)}\n//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\nfunction ud(a,b,c){var d={mm:\"munutenn\",MM:\"miz\",dd:\"devezh\"};return a+\" \"+xd(d[c],a)}function vd(a){switch(wd(a)){case 1:case 3:case 4:case 5:case 9:return a+\" bloaz\";default:return a+\" vloaz\"}}function wd(a){return a>9?wd(a%10):a}function xd(a,b){return 2===b?yd(a):a}function yd(a){var b={m:\"v\",b:\"v\",d:\"z\"};return void 0===b[a.charAt(0)]?a:b[a.charAt(0)]+a.substring(1)}\n//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\nfunction zd(a,b,c){var d=a+\" \";switch(c){case\"m\":return b?\"jedna minuta\":\"jedne minute\";case\"mm\":return d+=1===a?\"minuta\":2===a||3===a||4===a?\"minute\":\"minuta\";case\"h\":return b?\"jedan sat\":\"jednog sata\";case\"hh\":return d+=1===a?\"sat\":2===a||3===a||4===a?\"sata\":\"sati\";case\"dd\":return d+=1===a?\"dan\":\"dana\";case\"MM\":return d+=1===a?\"mjesec\":2===a||3===a||4===a?\"mjeseca\":\"mjeseci\";case\"yy\":return d+=1===a?\"godina\":2===a||3===a||4===a?\"godine\":\"godina\"}}function Ad(a){return a>1&&a<5&&1!==~~(a/10)}function Bd(a,b,c,d){var e=a+\" \";switch(c){case\"s\":return b||d?\"pár sekund\":\"pár sekundami\";case\"m\":return b?\"minuta\":d?\"minutu\":\"minutou\";case\"mm\":return b||d?e+(Ad(a)?\"minuty\":\"minut\"):e+\"minutami\";break;case\"h\":return b?\"hodina\":d?\"hodinu\":\"hodinou\";case\"hh\":return b||d?e+(Ad(a)?\"hodiny\":\"hodin\"):e+\"hodinami\";break;case\"d\":return b||d?\"den\":\"dnem\";case\"dd\":return b||d?e+(Ad(a)?\"dny\":\"dní\"):e+\"dny\";break;case\"M\":return b||d?\"měsíc\":\"měsícem\";case\"MM\":return b||d?e+(Ad(a)?\"měsíce\":\"měsíců\"):e+\"měsíci\";break;case\"y\":return b||d?\"rok\":\"rokem\";case\"yy\":return b||d?e+(Ad(a)?\"roky\":\"let\"):e+\"lety\"}}\n//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\nfunction Cd(a,b,c,d){var e={m:[\"eine Minute\",\"einer Minute\"],h:[\"eine Stunde\",\"einer Stunde\"],d:[\"ein Tag\",\"einem Tag\"],dd:[a+\" Tage\",a+\" Tagen\"],M:[\"ein Monat\",\"einem Monat\"],MM:[a+\" Monate\",a+\" Monaten\"],y:[\"ein Jahr\",\"einem Jahr\"],yy:[a+\" Jahre\",a+\" Jahren\"]};return b?e[c][0]:e[c][1]}\n//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\nfunction Dd(a,b,c,d){var e={m:[\"eine Minute\",\"einer Minute\"],h:[\"eine Stunde\",\"einer Stunde\"],d:[\"ein Tag\",\"einem Tag\"],dd:[a+\" Tage\",a+\" Tagen\"],M:[\"ein Monat\",\"einem Monat\"],MM:[a+\" Monate\",a+\" Monaten\"],y:[\"ein Jahr\",\"einem Jahr\"],yy:[a+\" Jahre\",a+\" Jahren\"]};return b?e[c][0]:e[c][1]}\n//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\nfunction Ed(a,b,c,d){var e={m:[\"eine Minute\",\"einer Minute\"],h:[\"eine Stunde\",\"einer Stunde\"],d:[\"ein Tag\",\"einem Tag\"],dd:[a+\" Tage\",a+\" Tagen\"],M:[\"ein Monat\",\"einem Monat\"],MM:[a+\" Monate\",a+\" Monaten\"],y:[\"ein Jahr\",\"einem Jahr\"],yy:[a+\" Jahre\",a+\" Jahren\"]};return b?e[c][0]:e[c][1]}\n//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\nfunction Fd(a,b,c,d){var e={s:[\"mõne sekundi\",\"mõni sekund\",\"paar sekundit\"],m:[\"ühe minuti\",\"üks minut\"],mm:[a+\" minuti\",a+\" minutit\"],h:[\"ühe tunni\",\"tund aega\",\"üks tund\"],hh:[a+\" tunni\",a+\" tundi\"],d:[\"ühe päeva\",\"üks päev\"],M:[\"kuu aja\",\"kuu aega\",\"üks kuu\"],MM:[a+\" kuu\",a+\" kuud\"],y:[\"ühe aasta\",\"aasta\",\"üks aasta\"],yy:[a+\" aasta\",a+\" aastat\"]};return b?e[c][2]?e[c][2]:e[c][1]:d?e[c][0]:e[c][1]}function Gd(a,b,c,d){var e=\"\";switch(c){case\"s\":return d?\"muutaman sekunnin\":\"muutama sekunti\";case\"m\":return d?\"minuutin\":\"minuutti\";case\"mm\":e=d?\"minuutin\":\"minuuttia\";break;case\"h\":return d?\"tunnin\":\"tunti\";case\"hh\":e=d?\"tunnin\":\"tuntia\";break;case\"d\":return d?\"päivän\":\"päivä\";case\"dd\":e=d?\"päivän\":\"päivää\";break;case\"M\":return d?\"kuukauden\":\"kuukausi\";case\"MM\":e=d?\"kuukauden\":\"kuukautta\";break;case\"y\":return d?\"vuoden\":\"vuosi\";case\"yy\":e=d?\"vuoden\":\"vuotta\"}return e=Hd(a,d)+\" \"+e}function Hd(a,b){return a<10?b?$g[a]:Zg[a]:a}\n//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\nfunction Id(a,b,c,d){var e={s:[\"thodde secondanim\",\"thodde second\"],m:[\"eka mintan\",\"ek minute\"],mm:[a+\" mintanim\",a+\" mintam\"],h:[\"eka horan\",\"ek hor\"],hh:[a+\" horanim\",a+\" hor\"],d:[\"eka disan\",\"ek dis\"],dd:[a+\" disanim\",a+\" dis\"],M:[\"eka mhoinean\",\"ek mhoino\"],MM:[a+\" mhoineanim\",a+\" mhoine\"],y:[\"eka vorsan\",\"ek voros\"],yy:[a+\" vorsanim\",a+\" vorsam\"]};return b?e[c][0]:e[c][1]}\n//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\nfunction Jd(a,b,c){var d=a+\" \";switch(c){case\"m\":return b?\"jedna minuta\":\"jedne minute\";case\"mm\":return d+=1===a?\"minuta\":2===a||3===a||4===a?\"minute\":\"minuta\";case\"h\":return b?\"jedan sat\":\"jednog sata\";case\"hh\":return d+=1===a?\"sat\":2===a||3===a||4===a?\"sata\":\"sati\";case\"dd\":return d+=1===a?\"dan\":\"dana\";case\"MM\":return d+=1===a?\"mjesec\":2===a||3===a||4===a?\"mjeseca\":\"mjeseci\";case\"yy\":return d+=1===a?\"godina\":2===a||3===a||4===a?\"godine\":\"godina\"}}function Kd(a,b,c,d){var e=a;switch(c){case\"s\":return d||b?\"néhány másodperc\":\"néhány másodperce\";case\"m\":return\"egy\"+(d||b?\" perc\":\" perce\");case\"mm\":return e+(d||b?\" perc\":\" perce\");case\"h\":return\"egy\"+(d||b?\" óra\":\" órája\");case\"hh\":return e+(d||b?\" óra\":\" órája\");case\"d\":return\"egy\"+(d||b?\" nap\":\" napja\");case\"dd\":return e+(d||b?\" nap\":\" napja\");case\"M\":return\"egy\"+(d||b?\" hónap\":\" hónapja\");case\"MM\":return e+(d||b?\" hónap\":\" hónapja\");case\"y\":return\"egy\"+(d||b?\" év\":\" éve\");case\"yy\":return e+(d||b?\" év\":\" éve\")}return\"\"}function Ld(a){return(a?\"\":\"[múlt] \")+\"[\"+ih[this.day()]+\"] LT[-kor]\"}\n//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\nfunction Md(a){return a%100===11||a%10!==1}function Nd(a,b,c,d){var e=a+\" \";switch(c){case\"s\":return b||d?\"nokkrar sekúndur\":\"nokkrum sekúndum\";case\"m\":return b?\"mínúta\":\"mínútu\";case\"mm\":return Md(a)?e+(b||d?\"mínútur\":\"mínútum\"):b?e+\"mínúta\":e+\"mínútu\";case\"hh\":return Md(a)?e+(b||d?\"klukkustundir\":\"klukkustundum\"):e+\"klukkustund\";case\"d\":return b?\"dagur\":d?\"dag\":\"degi\";case\"dd\":return Md(a)?b?e+\"dagar\":e+(d?\"daga\":\"dögum\"):b?e+\"dagur\":e+(d?\"dag\":\"degi\");case\"M\":return b?\"mánuður\":d?\"mánuð\":\"mánuði\";case\"MM\":return Md(a)?b?e+\"mánuðir\":e+(d?\"mánuði\":\"mánuðum\"):b?e+\"mánuður\":e+(d?\"mánuð\":\"mánuði\");case\"y\":return b||d?\"ár\":\"ári\";case\"yy\":return Md(a)?e+(b||d?\"ár\":\"árum\"):e+(b||d?\"ár\":\"ári\")}}\n//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\nfunction Od(a,b,c,d){var e={m:[\"eng Minutt\",\"enger Minutt\"],h:[\"eng Stonn\",\"enger Stonn\"],d:[\"een Dag\",\"engem Dag\"],M:[\"ee Mount\",\"engem Mount\"],y:[\"ee Joer\",\"engem Joer\"]};return b?e[c][0]:e[c][1]}function Pd(a){var b=a.substr(0,a.indexOf(\" \"));return Rd(b)?\"a \"+a:\"an \"+a}function Qd(a){var b=a.substr(0,a.indexOf(\" \"));return Rd(b)?\"viru \"+a:\"virun \"+a}function Rd(a){if(a=parseInt(a,10),isNaN(a))return!1;if(a<0)return!0;if(a<10)return 4<=a&&a<=7;if(a<100){var b=a%10,c=a/10;return Rd(0===b?c:b)}if(a<1e4){for(;a>=10;)a/=10;return Rd(a)}return a/=1e3,Rd(a)}function Sd(a,b,c,d){return b?\"kelios sekundės\":d?\"kelių sekundžių\":\"kelias sekundes\"}function Td(a,b,c,d){return b?Vd(c)[0]:d?Vd(c)[1]:Vd(c)[2]}function Ud(a){return a%10===0||a>10&&a<20}function Vd(a){return nh[a].split(\"_\")}function Wd(a,b,c,d){var e=a+\" \";return 1===a?e+Td(a,b,c[0],d):b?e+(Ud(a)?Vd(c)[1]:Vd(c)[0]):d?e+Vd(c)[1]:e+(Ud(a)?Vd(c)[1]:Vd(c)[2])}function Xd(a,b,c){return c?b%10===1&&b%100!==11?a[2]:a[3]:b%10===1&&b%100!==11?a[0]:a[1]}function Yd(a,b,c){return a+\" \"+Xd(oh[c],a,b)}function Zd(a,b,c){return Xd(oh[c],a,b)}function $d(a,b){return b?\"dažas sekundes\":\"dažām sekundēm\"}function _d(a,b,c,d){var e=\"\";if(b)switch(c){case\"s\":e=\"काही सेकंद\";break;case\"m\":e=\"एक मिनिट\";break;case\"mm\":e=\"%d मिनिटे\";break;case\"h\":e=\"एक तास\";break;case\"hh\":e=\"%d तास\";break;case\"d\":e=\"एक दिवस\";break;case\"dd\":e=\"%d दिवस\";break;case\"M\":e=\"एक महिना\";break;case\"MM\":e=\"%d महिने\";break;case\"y\":e=\"एक वर्ष\";break;case\"yy\":e=\"%d वर्षे\"}else switch(c){case\"s\":e=\"काही सेकंदां\";break;case\"m\":e=\"एका मिनिटा\";break;case\"mm\":e=\"%d मिनिटां\";break;case\"h\":e=\"एका तासा\";break;case\"hh\":e=\"%d तासां\";break;case\"d\":e=\"एका दिवसा\";break;case\"dd\":e=\"%d दिवसां\";break;case\"M\":e=\"एका महिन्या\";break;case\"MM\":e=\"%d महिन्यां\";break;case\"y\":e=\"एका वर्षा\";break;case\"yy\":e=\"%d वर्षां\"}return e.replace(/%d/i,a)}function ae(a){return a%10<5&&a%10>1&&~~(a/10)%10!==1}function be(a,b,c){var d=a+\" \";switch(c){case\"m\":return b?\"minuta\":\"minutę\";case\"mm\":return d+(ae(a)?\"minuty\":\"minut\");case\"h\":return b?\"godzina\":\"godzinę\";case\"hh\":return d+(ae(a)?\"godziny\":\"godzin\");case\"MM\":return d+(ae(a)?\"miesiące\":\"miesięcy\");case\"yy\":return d+(ae(a)?\"lata\":\"lat\")}}\n//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\nfunction ce(a,b,c){var d={mm:\"minute\",hh:\"ore\",dd:\"zile\",MM:\"luni\",yy:\"ani\"},e=\" \";return(a%100>=20||a>=100&&a%100===0)&&(e=\" de \"),a+e+d[c]}\n//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! Author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\nfunction de(a,b){var c=a.split(\"_\");return b%10===1&&b%100!==11?c[0]:b%10>=2&&b%10<=4&&(b%100<10||b%100>=20)?c[1]:c[2]}function ee(a,b,c){var d={mm:b?\"минута_минуты_минут\":\"минуту_минуты_минут\",hh:\"час_часа_часов\",dd:\"день_дня_дней\",MM:\"месяц_месяца_месяцев\",yy:\"год_года_лет\"};return\"m\"===c?b?\"минута\":\"минуту\":a+\" \"+de(d[c],+a)}function fe(a){return a>1&&a<5}function ge(a,b,c,d){var e=a+\" \";switch(c){case\"s\":return b||d?\"pár sekúnd\":\"pár sekundami\";case\"m\":return b?\"minúta\":d?\"minútu\":\"minútou\";case\"mm\":return b||d?e+(fe(a)?\"minúty\":\"minút\"):e+\"minútami\";break;case\"h\":return b?\"hodina\":d?\"hodinu\":\"hodinou\";case\"hh\":return b||d?e+(fe(a)?\"hodiny\":\"hodín\"):e+\"hodinami\";break;case\"d\":return b||d?\"deň\":\"dňom\";case\"dd\":return b||d?e+(fe(a)?\"dni\":\"dní\"):e+\"dňami\";break;case\"M\":return b||d?\"mesiac\":\"mesiacom\";case\"MM\":return b||d?e+(fe(a)?\"mesiace\":\"mesiacov\"):e+\"mesiacmi\";break;case\"y\":return b||d?\"rok\":\"rokom\";case\"yy\":return b||d?e+(fe(a)?\"roky\":\"rokov\"):e+\"rokmi\"}}\n//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\nfunction he(a,b,c,d){var e=a+\" \";switch(c){case\"s\":return b||d?\"nekaj sekund\":\"nekaj sekundami\";case\"m\":return b?\"ena minuta\":\"eno minuto\";case\"mm\":return e+=1===a?b?\"minuta\":\"minuto\":2===a?b||d?\"minuti\":\"minutama\":a<5?b||d?\"minute\":\"minutami\":b||d?\"minut\":\"minutami\";case\"h\":return b?\"ena ura\":\"eno uro\";case\"hh\":return e+=1===a?b?\"ura\":\"uro\":2===a?b||d?\"uri\":\"urama\":a<5?b||d?\"ure\":\"urami\":b||d?\"ur\":\"urami\";case\"d\":return b||d?\"en dan\":\"enim dnem\";case\"dd\":return e+=1===a?b||d?\"dan\":\"dnem\":2===a?b||d?\"dni\":\"dnevoma\":b||d?\"dni\":\"dnevi\";case\"M\":return b||d?\"en mesec\":\"enim mesecem\";case\"MM\":return e+=1===a?b||d?\"mesec\":\"mesecem\":2===a?b||d?\"meseca\":\"mesecema\":a<5?b||d?\"mesece\":\"meseci\":b||d?\"mesecev\":\"meseci\";case\"y\":return b||d?\"eno leto\":\"enim letom\";case\"yy\":return e+=1===a?b||d?\"leto\":\"letom\":2===a?b||d?\"leti\":\"letoma\":a<5?b||d?\"leta\":\"leti\":b||d?\"let\":\"leti\"}}function ie(a){var b=a;return b=a.indexOf(\"jaj\")!==-1?b.slice(0,-3)+\"leS\":a.indexOf(\"jar\")!==-1?b.slice(0,-3)+\"waQ\":a.indexOf(\"DIS\")!==-1?b.slice(0,-3)+\"nem\":b+\" pIq\"}function je(a){var b=a;return b=a.indexOf(\"jaj\")!==-1?b.slice(0,-3)+\"Hu’\":a.indexOf(\"jar\")!==-1?b.slice(0,-3)+\"wen\":a.indexOf(\"DIS\")!==-1?b.slice(0,-3)+\"ben\":b+\" ret\"}function ke(a,b,c,d){var e=le(a);switch(c){case\"mm\":return e+\" tup\";case\"hh\":return e+\" rep\";case\"dd\":return e+\" jaj\";case\"MM\":return e+\" jar\";case\"yy\":return e+\" DIS\"}}function le(a){var b=Math.floor(a%1e3/100),c=Math.floor(a%100/10),d=a%10,e=\"\";return b>0&&(e+=Rh[b]+\"vatlh\"),c>0&&(e+=(\"\"!==e?\" \":\"\")+Rh[c]+\"maH\"),d>0&&(e+=(\"\"!==e?\" \":\"\")+Rh[d]),\"\"===e?\"pagh\":e}function me(a,b,c,d){var e={s:[\"viensas secunds\",\"'iensas secunds\"],m:[\"'n míut\",\"'iens míut\"],mm:[a+\" míuts\",\"\"+a+\" míuts\"],h:[\"'n þora\",\"'iensa þora\"],hh:[a+\" þoras\",\"\"+a+\" þoras\"],d:[\"'n ziua\",\"'iensa ziua\"],dd:[a+\" ziuas\",\"\"+a+\" ziuas\"],M:[\"'n mes\",\"'iens mes\"],MM:[a+\" mesen\",\"\"+a+\" mesen\"],y:[\"'n ar\",\"'iens ar\"],yy:[a+\" ars\",\"\"+a+\" ars\"]};return d?e[c][0]:b?e[c][0]:e[c][1]}\n//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\nfunction ne(a,b){var c=a.split(\"_\");return b%10===1&&b%100!==11?c[0]:b%10>=2&&b%10<=4&&(b%100<10||b%100>=20)?c[1]:c[2]}function oe(a,b,c){var d={mm:b?\"хвилина_хвилини_хвилин\":\"хвилину_хвилини_хвилин\",hh:b?\"година_години_годин\":\"годину_години_годин\",dd:\"день_дні_днів\",MM:\"місяць_місяці_місяців\",yy:\"рік_роки_років\"};return\"m\"===c?b?\"хвилина\":\"хвилину\":\"h\"===c?b?\"година\":\"годину\":a+\" \"+ne(d[c],+a)}function pe(a,b){var c={nominative:\"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота\".split(\"_\"),accusative:\"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу\".split(\"_\"),genitive:\"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи\".split(\"_\")};if(!a)return c.nominative;var d=/(\\[[ВвУу]\\]) ?dddd/.test(b)?\"accusative\":/\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(b)?\"genitive\":\"nominative\";return c[d][a.day()]}function qe(a){return function(){return a+\"о\"+(11===this.hours()?\"б\":\"\")+\"] LT\"}}var re,se;se=Array.prototype.some?Array.prototype.some:function(a){for(var b=Object(this),c=b.length>>>0,d=0;d<c;d++)if(d in b&&a.call(this,b[d],d,b))return!0;return!1};var te=se,ue=a.momentProperties=[],ve=!1,we={};a.suppressDeprecationWarnings=!1,a.deprecationHandler=null;var xe;xe=Object.keys?Object.keys:function(a){var b,c=[];for(b in a)j(a,b)&&c.push(b);return c};var ye,ze=xe,Ae={sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},Be={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},Ce=\"Invalid date\",De=\"%d\",Ee=/\\d{1,2}/,Fe={future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",ss:\"%d seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},Ge={},He={},Ie=/(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Je=/(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Ke={},Le={},Me=/\\d/,Ne=/\\d\\d/,Oe=/\\d{3}/,Pe=/\\d{4}/,Qe=/[+-]?\\d{6}/,Re=/\\d\\d?/,Se=/\\d\\d\\d\\d?/,Te=/\\d\\d\\d\\d\\d\\d?/,Ue=/\\d{1,3}/,Ve=/\\d{1,4}/,We=/[+-]?\\d{1,6}/,Xe=/\\d+/,Ye=/[+-]?\\d+/,Ze=/Z|[+-]\\d\\d:?\\d\\d/gi,$e=/Z|[+-]\\d\\d(?::?\\d\\d)?/gi,_e=/[+-]?\\d+(\\.\\d{1,3})?/,af=/[0-9]*['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+|[\\u0600-\\u06FF\\/]+(\\s*?[\\u0600-\\u06FF]+){1,2}/i,bf={},cf={},df=0,ef=1,ff=2,gf=3,hf=4,jf=5,kf=6,lf=7,mf=8;ye=Array.prototype.indexOf?Array.prototype.indexOf:function(a){var b;for(b=0;b<this.length;++b)if(this[b]===a)return b;return-1};var nf=ye;U(\"M\",[\"MM\",2],\"Mo\",function(){return this.month()+1}),U(\"MMM\",0,0,function(a){return this.localeData().monthsShort(this,a)}),U(\"MMMM\",0,0,function(a){return this.localeData().months(this,a)}),J(\"month\",\"M\"),M(\"month\",8),Z(\"M\",Re),Z(\"MM\",Re,Ne),Z(\"MMM\",function(a,b){return b.monthsShortRegex(a)}),Z(\"MMMM\",function(a,b){return b.monthsRegex(a)}),ba([\"M\",\"MM\"],function(a,b){b[ef]=u(a)-1}),ba([\"MMM\",\"MMMM\"],function(a,b,c,d){var e=c._locale.monthsParse(a,d,c._strict);null!=e?b[ef]=e:n(c).invalidMonth=a});var of=/D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,pf=\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),qf=\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),rf=af,sf=af;U(\"Y\",0,0,function(){var a=this.year();return a<=9999?\"\"+a:\"+\"+a}),U(0,[\"YY\",2],0,function(){return this.year()%100}),U(0,[\"YYYY\",4],0,\"year\"),U(0,[\"YYYYY\",5],0,\"year\"),U(0,[\"YYYYYY\",6,!0],0,\"year\"),J(\"year\",\"y\"),M(\"year\",1),Z(\"Y\",Ye),Z(\"YY\",Re,Ne),Z(\"YYYY\",Ve,Pe),Z(\"YYYYY\",We,Qe),Z(\"YYYYYY\",We,Qe),ba([\"YYYYY\",\"YYYYYY\"],df),ba(\"YYYY\",function(b,c){c[df]=2===b.length?a.parseTwoDigitYear(b):u(b)}),ba(\"YY\",function(b,c){c[df]=a.parseTwoDigitYear(b)}),ba(\"Y\",function(a,b){b[df]=parseInt(a,10)}),a.parseTwoDigitYear=function(a){return u(a)+(u(a)>68?1900:2e3)};var tf=O(\"FullYear\",!0);U(\"w\",[\"ww\",2],\"wo\",\"week\"),U(\"W\",[\"WW\",2],\"Wo\",\"isoWeek\"),J(\"week\",\"w\"),J(\"isoWeek\",\"W\"),M(\"week\",5),M(\"isoWeek\",5),Z(\"w\",Re),Z(\"ww\",Re,Ne),Z(\"W\",Re),Z(\"WW\",Re,Ne),ca([\"w\",\"ww\",\"W\",\"WW\"],function(a,b,c,d){b[d.substr(0,1)]=u(a)});var uf={dow:0,doy:6};U(\"d\",0,\"do\",\"day\"),U(\"dd\",0,0,function(a){return this.localeData().weekdaysMin(this,a)}),U(\"ddd\",0,0,function(a){return this.localeData().weekdaysShort(this,a)}),U(\"dddd\",0,0,function(a){return this.localeData().weekdays(this,a)}),U(\"e\",0,0,\"weekday\"),U(\"E\",0,0,\"isoWeekday\"),J(\"day\",\"d\"),J(\"weekday\",\"e\"),J(\"isoWeekday\",\"E\"),M(\"day\",11),M(\"weekday\",11),M(\"isoWeekday\",11),Z(\"d\",Re),Z(\"e\",Re),Z(\"E\",Re),Z(\"dd\",function(a,b){return b.weekdaysMinRegex(a)}),Z(\"ddd\",function(a,b){return b.weekdaysShortRegex(a)}),Z(\"dddd\",function(a,b){return b.weekdaysRegex(a)}),ca([\"dd\",\"ddd\",\"dddd\"],function(a,b,c,d){var e=c._locale.weekdaysParse(a,d,c._strict);null!=e?b.d=e:n(c).invalidWeekday=a}),ca([\"d\",\"e\",\"E\"],function(a,b,c,d){b[d]=u(a)});var vf=\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),wf=\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),xf=\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),yf=af,zf=af,Af=af;U(\"H\",[\"HH\",2],0,\"hour\"),U(\"h\",[\"hh\",2],0,Ra),U(\"k\",[\"kk\",2],0,Sa),U(\"hmm\",0,0,function(){return\"\"+Ra.apply(this)+T(this.minutes(),2)}),U(\"hmmss\",0,0,function(){return\"\"+Ra.apply(this)+T(this.minutes(),2)+T(this.seconds(),2)}),U(\"Hmm\",0,0,function(){return\"\"+this.hours()+T(this.minutes(),2)}),U(\"Hmmss\",0,0,function(){return\"\"+this.hours()+T(this.minutes(),2)+T(this.seconds(),2)}),Ta(\"a\",!0),Ta(\"A\",!1),J(\"hour\",\"h\"),M(\"hour\",13),Z(\"a\",Ua),Z(\"A\",Ua),Z(\"H\",Re),Z(\"h\",Re),Z(\"k\",Re),Z(\"HH\",Re,Ne),Z(\"hh\",Re,Ne),Z(\"kk\",Re,Ne),Z(\"hmm\",Se),Z(\"hmmss\",Te),Z(\"Hmm\",Se),Z(\"Hmmss\",Te),ba([\"H\",\"HH\"],gf),ba([\"k\",\"kk\"],function(a,b,c){var d=u(a);b[gf]=24===d?0:d}),ba([\"a\",\"A\"],function(a,b,c){c._isPm=c._locale.isPM(a),c._meridiem=a}),ba([\"h\",\"hh\"],function(a,b,c){b[gf]=u(a),n(c).bigHour=!0}),ba(\"hmm\",function(a,b,c){var d=a.length-2;b[gf]=u(a.substr(0,d)),b[hf]=u(a.substr(d)),n(c).bigHour=!0}),ba(\"hmmss\",function(a,b,c){var d=a.length-4,e=a.length-2;b[gf]=u(a.substr(0,d)),b[hf]=u(a.substr(d,2)),b[jf]=u(a.substr(e)),n(c).bigHour=!0}),ba(\"Hmm\",function(a,b,c){var d=a.length-2;b[gf]=u(a.substr(0,d)),b[hf]=u(a.substr(d))}),ba(\"Hmmss\",function(a,b,c){var d=a.length-4,e=a.length-2;b[gf]=u(a.substr(0,d)),b[hf]=u(a.substr(d,2)),b[jf]=u(a.substr(e))});var Bf,Cf=/[ap]\\.?m?\\.?/i,Df=O(\"Hours\",!0),Ef={calendar:Ae,longDateFormat:Be,invalidDate:Ce,ordinal:De,dayOfMonthOrdinalParse:Ee,relativeTime:Fe,months:pf,monthsShort:qf,week:uf,weekdays:vf,weekdaysMin:xf,weekdaysShort:wf,meridiemParse:Cf},Ff={},Gf={},Hf=/^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,If=/^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,Jf=/Z|[+-]\\d\\d(?::?\\d\\d)?/,Kf=[[\"YYYYYY-MM-DD\",/[+-]\\d{6}-\\d\\d-\\d\\d/],[\"YYYY-MM-DD\",/\\d{4}-\\d\\d-\\d\\d/],[\"GGGG-[W]WW-E\",/\\d{4}-W\\d\\d-\\d/],[\"GGGG-[W]WW\",/\\d{4}-W\\d\\d/,!1],[\"YYYY-DDD\",/\\d{4}-\\d{3}/],[\"YYYY-MM\",/\\d{4}-\\d\\d/,!1],[\"YYYYYYMMDD\",/[+-]\\d{10}/],[\"YYYYMMDD\",/\\d{8}/],[\"GGGG[W]WWE\",/\\d{4}W\\d{3}/],[\"GGGG[W]WW\",/\\d{4}W\\d{2}/,!1],[\"YYYYDDD\",/\\d{7}/]],Lf=[[\"HH:mm:ss.SSSS\",/\\d\\d:\\d\\d:\\d\\d\\.\\d+/],[\"HH:mm:ss,SSSS\",/\\d\\d:\\d\\d:\\d\\d,\\d+/],[\"HH:mm:ss\",/\\d\\d:\\d\\d:\\d\\d/],[\"HH:mm\",/\\d\\d:\\d\\d/],[\"HHmmss.SSSS\",/\\d\\d\\d\\d\\d\\d\\.\\d+/],[\"HHmmss,SSSS\",/\\d\\d\\d\\d\\d\\d,\\d+/],[\"HHmmss\",/\\d\\d\\d\\d\\d\\d/],[\"HHmm\",/\\d\\d\\d\\d/],[\"HH\",/\\d\\d/]],Mf=/^\\/?Date\\((\\-?\\d+)/i,Nf=/^((?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d?\\d\\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(?:\\d\\d)?\\d\\d\\s)(\\d\\d:\\d\\d)(\\:\\d\\d)?(\\s(?:UT|GMT|[ECMP][SD]T|[A-IK-Za-ik-z]|[+-]\\d{4}))$/;a.createFromInputFallback=x(\"value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.\",function(a){a._d=new Date(a._i+(a._useUTC?\" UTC\":\"\"))}),a.ISO_8601=function(){},a.RFC_2822=function(){};var Of=x(\"moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/\",function(){var a=tb.apply(null,arguments);return this.isValid()&&a.isValid()?a<this?this:a:p()}),Pf=x(\"moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/\",function(){var a=tb.apply(null,arguments);return this.isValid()&&a.isValid()?a>this?this:a:p()}),Qf=function(){return Date.now?Date.now():+new Date},Rf=[\"year\",\"quarter\",\"month\",\"week\",\"day\",\"hour\",\"minute\",\"second\",\"millisecond\"];Db(\"Z\",\":\"),Db(\"ZZ\",\"\"),Z(\"Z\",$e),Z(\"ZZ\",$e),ba([\"Z\",\"ZZ\"],function(a,b,c){c._useUTC=!0,c._tzm=Eb($e,a)});var Sf=/([\\+\\-]|\\d\\d)/gi;a.updateOffset=function(){};var Tf=/^(\\-)?(?:(\\d*)[. ])?(\\d+)\\:(\\d+)(?:\\:(\\d+)(\\.\\d*)?)?$/,Uf=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;Sb.fn=Ab.prototype,Sb.invalid=zb;var Vf=Wb(1,\"add\"),Wf=Wb(-1,\"subtract\");a.defaultFormat=\"YYYY-MM-DDTHH:mm:ssZ\",a.defaultFormatUtc=\"YYYY-MM-DDTHH:mm:ss[Z]\";var Xf=x(\"moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.\",function(a){return void 0===a?this.localeData():this.locale(a)});U(0,[\"gg\",2],0,function(){return this.weekYear()%100}),U(0,[\"GG\",2],0,function(){return this.isoWeekYear()%100}),Dc(\"gggg\",\"weekYear\"),Dc(\"ggggg\",\"weekYear\"),Dc(\"GGGG\",\"isoWeekYear\"),Dc(\"GGGGG\",\"isoWeekYear\"),J(\"weekYear\",\"gg\"),J(\"isoWeekYear\",\"GG\"),M(\"weekYear\",1),M(\"isoWeekYear\",1),Z(\"G\",Ye),Z(\"g\",Ye),Z(\"GG\",Re,Ne),Z(\"gg\",Re,Ne),Z(\"GGGG\",Ve,Pe),Z(\"gggg\",Ve,Pe),Z(\"GGGGG\",We,Qe),Z(\"ggggg\",We,Qe),ca([\"gggg\",\"ggggg\",\"GGGG\",\"GGGGG\"],function(a,b,c,d){b[d.substr(0,2)]=u(a)}),ca([\"gg\",\"GG\"],function(b,c,d,e){c[e]=a.parseTwoDigitYear(b)}),U(\"Q\",0,\"Qo\",\"quarter\"),J(\"quarter\",\"Q\"),M(\"quarter\",7),Z(\"Q\",Me),ba(\"Q\",function(a,b){b[ef]=3*(u(a)-1)}),U(\"D\",[\"DD\",2],\"Do\",\"date\"),J(\"date\",\"D\"),M(\"date\",9),Z(\"D\",Re),Z(\"DD\",Re,Ne),Z(\"Do\",function(a,b){return a?b._dayOfMonthOrdinalParse||b._ordinalParse:b._dayOfMonthOrdinalParseLenient}),ba([\"D\",\"DD\"],ff),ba(\"Do\",function(a,b){b[ff]=u(a.match(Re)[0],10)});var Yf=O(\"Date\",!0);U(\"DDD\",[\"DDDD\",3],\"DDDo\",\"dayOfYear\"),J(\"dayOfYear\",\"DDD\"),M(\"dayOfYear\",4),Z(\"DDD\",Ue),Z(\"DDDD\",Oe),ba([\"DDD\",\"DDDD\"],function(a,b,c){c._dayOfYear=u(a)}),U(\"m\",[\"mm\",2],0,\"minute\"),J(\"minute\",\"m\"),M(\"minute\",14),Z(\"m\",Re),Z(\"mm\",Re,Ne),ba([\"m\",\"mm\"],hf);var Zf=O(\"Minutes\",!1);U(\"s\",[\"ss\",2],0,\"second\"),J(\"second\",\"s\"),M(\"second\",15),Z(\"s\",Re),Z(\"ss\",Re,Ne),ba([\"s\",\"ss\"],jf);var $f=O(\"Seconds\",!1);U(\"S\",0,0,function(){return~~(this.millisecond()/100)}),U(0,[\"SS\",2],0,function(){return~~(this.millisecond()/10)}),U(0,[\"SSS\",3],0,\"millisecond\"),U(0,[\"SSSS\",4],0,function(){return 10*this.millisecond()}),U(0,[\"SSSSS\",5],0,function(){return 100*this.millisecond()}),U(0,[\"SSSSSS\",6],0,function(){return 1e3*this.millisecond()}),U(0,[\"SSSSSSS\",7],0,function(){return 1e4*this.millisecond()}),U(0,[\"SSSSSSSS\",8],0,function(){return 1e5*this.millisecond()}),U(0,[\"SSSSSSSSS\",9],0,function(){return 1e6*this.millisecond()}),J(\"millisecond\",\"ms\"),M(\"millisecond\",16),Z(\"S\",Ue,Me),Z(\"SS\",Ue,Ne),Z(\"SSS\",Ue,Oe);var _f;for(_f=\"SSSS\";_f.length<=9;_f+=\"S\")Z(_f,Xe);for(_f=\"S\";_f.length<=9;_f+=\"S\")ba(_f,Mc);var ag=O(\"Milliseconds\",!1);U(\"z\",0,0,\"zoneAbbr\"),U(\"zz\",0,0,\"zoneName\");var bg=r.prototype;bg.add=Vf,bg.calendar=Zb,bg.clone=$b,bg.diff=fc,bg.endOf=sc,bg.format=kc,bg.from=lc,bg.fromNow=mc,bg.to=nc,bg.toNow=oc,bg.get=R,bg.invalidAt=Bc,bg.isAfter=_b,bg.isBefore=ac,bg.isBetween=bc,bg.isSame=cc,bg.isSameOrAfter=dc,bg.isSameOrBefore=ec,bg.isValid=zc,bg.lang=Xf,bg.locale=pc,bg.localeData=qc,bg.max=Pf,bg.min=Of,bg.parsingFlags=Ac,bg.set=S,bg.startOf=rc,bg.subtract=Wf,bg.toArray=wc,bg.toObject=xc,bg.toDate=vc,bg.toISOString=ic,bg.inspect=jc,bg.toJSON=yc,bg.toString=hc,bg.unix=uc,bg.valueOf=tc,bg.creationData=Cc,bg.year=tf,bg.isLeapYear=ra,bg.weekYear=Ec,bg.isoWeekYear=Fc,bg.quarter=bg.quarters=Kc,bg.month=ka,bg.daysInMonth=la,bg.week=bg.weeks=Ba,bg.isoWeek=bg.isoWeeks=Ca,bg.weeksInYear=Hc,bg.isoWeeksInYear=Gc,bg.date=Yf,bg.day=bg.days=Ka,bg.weekday=La,bg.isoWeekday=Ma,bg.dayOfYear=Lc,bg.hour=bg.hours=Df,bg.minute=bg.minutes=Zf,bg.second=bg.seconds=$f,bg.millisecond=bg.milliseconds=ag,bg.utcOffset=Hb,bg.utc=Jb,bg.local=Kb,bg.parseZone=Lb,bg.hasAlignedHourOffset=Mb,bg.isDST=Nb,bg.isLocal=Pb,bg.isUtcOffset=Qb,bg.isUtc=Rb,bg.isUTC=Rb,bg.zoneAbbr=Nc,bg.zoneName=Oc,bg.dates=x(\"dates accessor is deprecated. Use date instead.\",Yf),bg.months=x(\"months accessor is deprecated. Use month instead\",ka),bg.years=x(\"years accessor is deprecated. Use year instead\",tf),bg.zone=x(\"moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/\",Ib),bg.isDSTShifted=x(\"isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information\",Ob);var cg=C.prototype;cg.calendar=D,cg.longDateFormat=E,cg.invalidDate=F,cg.ordinal=G,cg.preparse=Rc,cg.postformat=Rc,cg.relativeTime=H,cg.pastFuture=I,cg.set=A,cg.months=fa,cg.monthsShort=ga,cg.monthsParse=ia,cg.monthsRegex=na,cg.monthsShortRegex=ma,cg.week=ya,cg.firstDayOfYear=Aa,cg.firstDayOfWeek=za,cg.weekdays=Fa,cg.weekdaysMin=Ha,cg.weekdaysShort=Ga,cg.weekdaysParse=Ja,cg.weekdaysRegex=Na,cg.weekdaysShortRegex=Oa,cg.weekdaysMinRegex=Pa,cg.isPM=Va,cg.meridiem=Wa,$a(\"en\",{dayOfMonthOrdinalParse:/\\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===u(a%100/10)?\"th\":1===b?\"st\":2===b?\"nd\":3===b?\"rd\":\"th\";return a+c}}),a.lang=x(\"moment.lang is deprecated. Use moment.locale instead.\",$a),a.langData=x(\"moment.langData is deprecated. Use moment.localeData instead.\",bb);var dg=Math.abs,eg=id(\"ms\"),fg=id(\"s\"),gg=id(\"m\"),hg=id(\"h\"),ig=id(\"d\"),jg=id(\"w\"),kg=id(\"M\"),lg=id(\"y\"),mg=kd(\"milliseconds\"),ng=kd(\"seconds\"),og=kd(\"minutes\"),pg=kd(\"hours\"),qg=kd(\"days\"),rg=kd(\"months\"),sg=kd(\"years\"),tg=Math.round,ug={ss:44,s:45,m:45,h:22,d:26,M:11},vg=Math.abs,wg=Ab.prototype;wg.isValid=yb,wg.abs=$c,wg.add=ad,wg.subtract=bd,wg.as=gd,wg.asMilliseconds=eg,wg.asSeconds=fg,wg.asMinutes=gg,wg.asHours=hg,wg.asDays=ig,wg.asWeeks=jg,wg.asMonths=kg,wg.asYears=lg,wg.valueOf=hd,wg._bubble=dd,wg.get=jd,wg.milliseconds=mg,wg.seconds=ng,wg.minutes=og,wg.hours=pg,wg.days=qg,wg.weeks=ld,wg.months=rg,wg.years=sg,wg.humanize=qd,wg.toISOString=rd,wg.toString=rd,wg.toJSON=rd,wg.locale=pc,wg.localeData=qc,wg.toIsoString=x(\"toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)\",rd),wg.lang=Xf,U(\"X\",0,0,\"unix\"),U(\"x\",0,0,\"valueOf\"),Z(\"x\",Ye),Z(\"X\",_e),ba(\"X\",function(a,b,c){c._d=new Date(1e3*parseFloat(a,10))}),ba(\"x\",function(a,b,c){c._d=new Date(u(a))}),\n//! moment.js\n//! version : 2.18.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\na.version=\"2.18.1\",b(tb),a.fn=bg,a.min=vb,a.max=wb,a.now=Qf,a.utc=l,a.unix=Pc,a.months=Vc,a.isDate=h,a.locale=$a,a.invalid=p,a.duration=Sb,a.isMoment=s,a.weekdays=Xc,a.parseZone=Qc,a.localeData=bb,a.isDuration=Bb,a.monthsShort=Wc,a.weekdaysMin=Zc,a.defineLocale=_a,a.updateLocale=ab,a.locales=cb,a.weekdaysShort=Yc,a.normalizeUnits=K,a.relativeTimeRounding=od,a.relativeTimeThreshold=pd,a.calendarFormat=Yb,a.prototype=bg,\n//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\na.defineLocale(\"af\",{months:\"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember\".split(\"_\"),monthsShort:\"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des\".split(\"_\"),weekdays:\"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag\".split(\"_\"),weekdaysShort:\"Son_Maa_Din_Woe_Don_Vry_Sat\".split(\"_\"),weekdaysMin:\"So_Ma_Di_Wo_Do_Vr_Sa\".split(\"_\"),meridiemParse:/vm|nm/i,isPM:function(a){return/^nm$/i.test(a)},meridiem:function(a,b,c){return a<12?c?\"vm\":\"VM\":c?\"nm\":\"NM\"},longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Vandag om] LT\",nextDay:\"[Môre om] LT\",nextWeek:\"dddd [om] LT\",lastDay:\"[Gister om] LT\",lastWeek:\"[Laas] dddd [om] LT\",sameElse:\"L\"},relativeTime:{future:\"oor %s\",past:\"%s gelede\",s:\"'n paar sekondes\",m:\"'n minuut\",mm:\"%d minute\",h:\"'n uur\",hh:\"%d ure\",d:\"'n dag\",dd:\"%d dae\",M:\"'n maand\",MM:\"%d maande\",y:\"'n jaar\",yy:\"%d jaar\"},dayOfMonthOrdinalParse:/\\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?\"ste\":\"de\")},week:{dow:1,doy:4}}),\n//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddineme\na.defineLocale(\"ar-dz\",{months:\"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر\".split(\"_\"),monthsShort:\"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر\".split(\"_\"),weekdays:\"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت\".split(\"_\"),weekdaysShort:\"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت\".split(\"_\"),weekdaysMin:\"أح_إث_ثلا_أر_خم_جم_سب\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[اليوم على الساعة] LT\",nextDay:\"[غدا على الساعة] LT\",nextWeek:\"dddd [على الساعة] LT\",lastDay:\"[أمس على الساعة] LT\",lastWeek:\"dddd [على الساعة] LT\",sameElse:\"L\"},relativeTime:{future:\"في %s\",past:\"منذ %s\",s:\"ثوان\",m:\"دقيقة\",mm:\"%d دقائق\",h:\"ساعة\",hh:\"%d ساعات\",d:\"يوم\",dd:\"%d أيام\",M:\"شهر\",MM:\"%d أشهر\",y:\"سنة\",yy:\"%d سنوات\"},week:{dow:0,doy:4}}),\n//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\na.defineLocale(\"ar-kw\",{months:\"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر\".split(\"_\"),monthsShort:\"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر\".split(\"_\"),weekdays:\"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت\".split(\"_\"),weekdaysShort:\"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت\".split(\"_\"),weekdaysMin:\"ح_ن_ث_ر_خ_ج_س\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[اليوم على الساعة] LT\",nextDay:\"[غدا على الساعة] LT\",nextWeek:\"dddd [على الساعة] LT\",lastDay:\"[أمس على الساعة] LT\",lastWeek:\"dddd [على الساعة] LT\",sameElse:\"L\"},relativeTime:{future:\"في %s\",past:\"منذ %s\",s:\"ثوان\",m:\"دقيقة\",mm:\"%d دقائق\",h:\"ساعة\",hh:\"%d ساعات\",d:\"يوم\",dd:\"%d أيام\",M:\"شهر\",MM:\"%d أشهر\",y:\"سنة\",yy:\"%d سنوات\"},week:{dow:0,doy:12}});\n//! moment.js locale configuration\n//! locale : Arabic (Lybia) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\nvar xg={1:\"1\",2:\"2\",3:\"3\",4:\"4\",5:\"5\",6:\"6\",7:\"7\",8:\"8\",9:\"9\",0:\"0\"},yg=function(a){return 0===a?0:1===a?1:2===a?2:a%100>=3&&a%100<=10?3:a%100>=11?4:5},zg={s:[\"أقل من ثانية\",\"ثانية واحدة\",[\"ثانيتان\",\"ثانيتين\"],\"%d ثوان\",\"%d ثانية\",\"%d ثانية\"],m:[\"أقل من دقيقة\",\"دقيقة واحدة\",[\"دقيقتان\",\"دقيقتين\"],\"%d دقائق\",\"%d دقيقة\",\"%d دقيقة\"],h:[\"أقل من ساعة\",\"ساعة واحدة\",[\"ساعتان\",\"ساعتين\"],\"%d ساعات\",\"%d ساعة\",\"%d ساعة\"],d:[\"أقل من يوم\",\"يوم واحد\",[\"يومان\",\"يومين\"],\"%d أيام\",\"%d يومًا\",\"%d يوم\"],M:[\"أقل من شهر\",\"شهر واحد\",[\"شهران\",\"شهرين\"],\"%d أشهر\",\"%d شهرا\",\"%d شهر\"],y:[\"أقل من عام\",\"عام واحد\",[\"عامان\",\"عامين\"],\"%d أعوام\",\"%d عامًا\",\"%d عام\"]},Ag=function(a){return function(b,c,d,e){var f=yg(b),g=zg[a][yg(b)];return 2===f&&(g=g[c?0:1]),g.replace(/%d/i,b)}},Bg=[\"يناير\",\"فبراير\",\"مارس\",\"أبريل\",\"مايو\",\"يونيو\",\"يوليو\",\"أغسطس\",\"سبتمبر\",\"أكتوبر\",\"نوفمبر\",\"ديسمبر\"];a.defineLocale(\"ar-ly\",{months:Bg,monthsShort:Bg,weekdays:\"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت\".split(\"_\"),weekdaysShort:\"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت\".split(\"_\"),weekdaysMin:\"ح_ن_ث_ر_خ_ج_س\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"D/M/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},meridiemParse:/ص|م/,isPM:function(a){return\"م\"===a},meridiem:function(a,b,c){return a<12?\"ص\":\"م\"},calendar:{sameDay:\"[اليوم عند الساعة] LT\",nextDay:\"[غدًا عند الساعة] LT\",nextWeek:\"dddd [عند الساعة] LT\",lastDay:\"[أمس عند الساعة] LT\",lastWeek:\"dddd [عند الساعة] LT\",sameElse:\"L\"},relativeTime:{future:\"بعد %s\",past:\"منذ %s\",s:Ag(\"s\"),m:Ag(\"m\"),mm:Ag(\"m\"),h:Ag(\"h\"),hh:Ag(\"h\"),d:Ag(\"d\"),dd:Ag(\"d\"),M:Ag(\"M\"),MM:Ag(\"M\"),y:Ag(\"y\"),yy:Ag(\"y\")},preparse:function(a){return a.replace(/\\u200f/g,\"\").replace(/،/g,\",\")},postformat:function(a){return a.replace(/\\d/g,function(a){return xg[a]}).replace(/,/g,\"،\")},week:{dow:6,doy:12}}),\n//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\na.defineLocale(\"ar-ma\",{months:\"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر\".split(\"_\"),monthsShort:\"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر\".split(\"_\"),weekdays:\"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت\".split(\"_\"),weekdaysShort:\"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت\".split(\"_\"),weekdaysMin:\"ح_ن_ث_ر_خ_ج_س\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[اليوم على الساعة] LT\",nextDay:\"[غدا على الساعة] LT\",nextWeek:\"dddd [على الساعة] LT\",lastDay:\"[أمس على الساعة] LT\",lastWeek:\"dddd [على الساعة] LT\",sameElse:\"L\"},relativeTime:{future:\"في %s\",past:\"منذ %s\",s:\"ثوان\",m:\"دقيقة\",mm:\"%d دقائق\",h:\"ساعة\",hh:\"%d ساعات\",d:\"يوم\",dd:\"%d أيام\",M:\"شهر\",MM:\"%d أشهر\",y:\"سنة\",yy:\"%d سنوات\"},week:{dow:6,doy:12}});\n//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\nvar Cg={1:\"١\",2:\"٢\",3:\"٣\",4:\"٤\",5:\"٥\",6:\"٦\",7:\"٧\",8:\"٨\",9:\"٩\",0:\"٠\"},Dg={\"١\":\"1\",\"٢\":\"2\",\"٣\":\"3\",\"٤\":\"4\",\"٥\":\"5\",\"٦\":\"6\",\"٧\":\"7\",\"٨\":\"8\",\"٩\":\"9\",\"٠\":\"0\"};a.defineLocale(\"ar-sa\",{months:\"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر\".split(\"_\"),monthsShort:\"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر\".split(\"_\"),weekdays:\"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت\".split(\"_\"),weekdaysShort:\"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت\".split(\"_\"),weekdaysMin:\"ح_ن_ث_ر_خ_ج_س\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},meridiemParse:/ص|م/,isPM:function(a){return\"م\"===a},meridiem:function(a,b,c){return a<12?\"ص\":\"م\"},calendar:{sameDay:\"[اليوم على الساعة] LT\",nextDay:\"[غدا على الساعة] LT\",nextWeek:\"dddd [على الساعة] LT\",lastDay:\"[أمس على الساعة] LT\",lastWeek:\"dddd [على الساعة] LT\",sameElse:\"L\"},relativeTime:{future:\"في %s\",past:\"منذ %s\",s:\"ثوان\",m:\"دقيقة\",mm:\"%d دقائق\",h:\"ساعة\",hh:\"%d ساعات\",d:\"يوم\",dd:\"%d أيام\",M:\"شهر\",MM:\"%d أشهر\",y:\"سنة\",yy:\"%d سنوات\"},preparse:function(a){return a.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(a){return Dg[a]}).replace(/،/g,\",\")},postformat:function(a){return a.replace(/\\d/g,function(a){return Cg[a]}).replace(/,/g,\"،\")},week:{dow:0,doy:6}}),\n//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\na.defineLocale(\"ar-tn\",{months:\"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر\".split(\"_\"),monthsShort:\"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر\".split(\"_\"),weekdays:\"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت\".split(\"_\"),weekdaysShort:\"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت\".split(\"_\"),weekdaysMin:\"ح_ن_ث_ر_خ_ج_س\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[اليوم على الساعة] LT\",nextDay:\"[غدا على الساعة] LT\",nextWeek:\"dddd [على الساعة] LT\",lastDay:\"[أمس على الساعة] LT\",lastWeek:\"dddd [على الساعة] LT\",sameElse:\"L\"},relativeTime:{future:\"في %s\",past:\"منذ %s\",s:\"ثوان\",m:\"دقيقة\",mm:\"%d دقائق\",h:\"ساعة\",hh:\"%d ساعات\",d:\"يوم\",dd:\"%d أيام\",M:\"شهر\",MM:\"%d أشهر\",y:\"سنة\",yy:\"%d سنوات\"},week:{dow:1,doy:4}});\n//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\nvar Eg={1:\"١\",2:\"٢\",3:\"٣\",4:\"٤\",5:\"٥\",6:\"٦\",7:\"٧\",8:\"٨\",9:\"٩\",0:\"٠\"},Fg={\"١\":\"1\",\"٢\":\"2\",\"٣\":\"3\",\"٤\":\"4\",\"٥\":\"5\",\"٦\":\"6\",\"٧\":\"7\",\"٨\":\"8\",\"٩\":\"9\",\"٠\":\"0\"},Gg=function(a){return 0===a?0:1===a?1:2===a?2:a%100>=3&&a%100<=10?3:a%100>=11?4:5},Hg={s:[\"أقل من ثانية\",\"ثانية واحدة\",[\"ثانيتان\",\"ثانيتين\"],\"%d ثوان\",\"%d ثانية\",\"%d ثانية\"],m:[\"أقل من دقيقة\",\"دقيقة واحدة\",[\"دقيقتان\",\"دقيقتين\"],\"%d دقائق\",\"%d دقيقة\",\"%d دقيقة\"],h:[\"أقل من ساعة\",\"ساعة واحدة\",[\"ساعتان\",\"ساعتين\"],\"%d ساعات\",\"%d ساعة\",\"%d ساعة\"],d:[\"أقل من يوم\",\"يوم واحد\",[\"يومان\",\"يومين\"],\"%d أيام\",\"%d يومًا\",\"%d يوم\"],M:[\"أقل من شهر\",\"شهر واحد\",[\"شهران\",\"شهرين\"],\"%d أشهر\",\"%d شهرا\",\"%d شهر\"],y:[\"أقل من عام\",\"عام واحد\",[\"عامان\",\"عامين\"],\"%d أعوام\",\"%d عامًا\",\"%d عام\"]},Ig=function(a){return function(b,c,d,e){var f=Gg(b),g=Hg[a][Gg(b)];return 2===f&&(g=g[c?0:1]),g.replace(/%d/i,b)}},Jg=[\"كانون الثاني يناير\",\"شباط فبراير\",\"آذار مارس\",\"نيسان أبريل\",\"أيار مايو\",\"حزيران يونيو\",\"تموز يوليو\",\"آب أغسطس\",\"أيلول سبتمبر\",\"تشرين الأول أكتوبر\",\"تشرين الثاني نوفمبر\",\"كانون الأول ديسمبر\"];a.defineLocale(\"ar\",{months:Jg,monthsShort:Jg,weekdays:\"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت\".split(\"_\"),weekdaysShort:\"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت\".split(\"_\"),weekdaysMin:\"ح_ن_ث_ر_خ_ج_س\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"D/M/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},meridiemParse:/ص|م/,isPM:function(a){return\"م\"===a},meridiem:function(a,b,c){return a<12?\"ص\":\"م\"},calendar:{sameDay:\"[اليوم عند الساعة] LT\",nextDay:\"[غدًا عند الساعة] LT\",nextWeek:\"dddd [عند الساعة] LT\",lastDay:\"[أمس عند الساعة] LT\",lastWeek:\"dddd [عند الساعة] LT\",sameElse:\"L\"},relativeTime:{future:\"بعد %s\",past:\"منذ %s\",s:Ig(\"s\"),m:Ig(\"m\"),mm:Ig(\"m\"),h:Ig(\"h\"),hh:Ig(\"h\"),d:Ig(\"d\"),dd:Ig(\"d\"),M:Ig(\"M\"),MM:Ig(\"M\"),y:Ig(\"y\"),yy:Ig(\"y\")},preparse:function(a){return a.replace(/\\u200f/g,\"\").replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(a){return Fg[a]}).replace(/،/g,\",\")},postformat:function(a){return a.replace(/\\d/g,function(a){return Eg[a]}).replace(/,/g,\"،\")},week:{dow:6,doy:12}});\n//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\nvar Kg={1:\"-inci\",5:\"-inci\",8:\"-inci\",70:\"-inci\",80:\"-inci\",2:\"-nci\",7:\"-nci\",20:\"-nci\",50:\"-nci\",3:\"-üncü\",4:\"-üncü\",100:\"-üncü\",6:\"-ncı\",9:\"-uncu\",10:\"-uncu\",30:\"-uncu\",60:\"-ıncı\",90:\"-ıncı\"};a.defineLocale(\"az\",{months:\"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr\".split(\"_\"),monthsShort:\"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek\".split(\"_\"),weekdays:\"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə\".split(\"_\"),weekdaysShort:\"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən\".split(\"_\"),weekdaysMin:\"Bz_BE_ÇA_Çə_CA_Cü_Şə\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[bugün saat] LT\",nextDay:\"[sabah saat] LT\",nextWeek:\"[gələn həftə] dddd [saat] LT\",lastDay:\"[dünən] LT\",lastWeek:\"[keçən həftə] dddd [saat] LT\",sameElse:\"L\"},relativeTime:{future:\"%s sonra\",past:\"%s əvvəl\",s:\"birneçə saniyyə\",m:\"bir dəqiqə\",mm:\"%d dəqiqə\",h:\"bir saat\",hh:\"%d saat\",d:\"bir gün\",dd:\"%d gün\",M:\"bir ay\",MM:\"%d ay\",y:\"bir il\",yy:\"%d il\"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(a){return/^(gündüz|axşam)$/.test(a)},meridiem:function(a,b,c){return a<4?\"gecə\":a<12?\"səhər\":a<17?\"gündüz\":\"axşam\"},dayOfMonthOrdinalParse:/\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(a){if(0===a)return a+\"-ıncı\";var b=a%10,c=a%100-b,d=a>=100?100:null;return a+(Kg[b]||Kg[c]||Kg[d])},week:{dow:1,doy:7}}),a.defineLocale(\"be\",{months:{format:\"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня\".split(\"_\"),standalone:\"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань\".split(\"_\")},monthsShort:\"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж\".split(\"_\"),weekdays:{format:\"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу\".split(\"_\"),standalone:\"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота\".split(\"_\"),isFormat:/\\[ ?[Вв] ?(?:мінулую|наступную)? ?\\] ?dddd/},weekdaysShort:\"нд_пн_ат_ср_чц_пт_сб\".split(\"_\"),weekdaysMin:\"нд_пн_ат_ср_чц_пт_сб\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY г.\",LLL:\"D MMMM YYYY г., HH:mm\",LLLL:\"dddd, D MMMM YYYY г., HH:mm\"},calendar:{sameDay:\"[Сёння ў] LT\",nextDay:\"[Заўтра ў] LT\",lastDay:\"[Учора ў] LT\",nextWeek:function(){return\"[У] dddd [ў] LT\"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return\"[У мінулую] dddd [ў] LT\";case 1:case 2:case 4:return\"[У мінулы] dddd [ў] LT\"}},sameElse:\"L\"},relativeTime:{future:\"праз %s\",past:\"%s таму\",s:\"некалькі секунд\",m:td,mm:td,h:td,hh:td,d:\"дзень\",dd:td,M:\"месяц\",MM:td,y:\"год\",yy:td},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(a){return/^(дня|вечара)$/.test(a)},meridiem:function(a,b,c){return a<4?\"ночы\":a<12?\"раніцы\":a<17?\"дня\":\"вечара\"},dayOfMonthOrdinalParse:/\\d{1,2}-(і|ы|га)/,ordinal:function(a,b){switch(b){case\"M\":case\"d\":case\"DDD\":case\"w\":case\"W\":return a%10!==2&&a%10!==3||a%100===12||a%100===13?a+\"-ы\":a+\"-і\";case\"D\":return a+\"-га\";default:return a}},week:{dow:1,doy:7}}),\n//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\na.defineLocale(\"bg\",{months:\"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември\".split(\"_\"),monthsShort:\"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек\".split(\"_\"),weekdays:\"неделя_понеделник_вторник_сряда_четвъртък_петък_събота\".split(\"_\"),weekdaysShort:\"нед_пон_вто_сря_чет_пет_съб\".split(\"_\"),weekdaysMin:\"нд_пн_вт_ср_чт_пт_сб\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"D.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY H:mm\",LLLL:\"dddd, D MMMM YYYY H:mm\"},calendar:{sameDay:\"[Днес в] LT\",nextDay:\"[Утре в] LT\",nextWeek:\"dddd [в] LT\",lastDay:\"[Вчера в] LT\",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return\"[В изминалата] dddd [в] LT\";case 1:case 2:case 4:case 5:return\"[В изминалия] dddd [в] LT\"}},sameElse:\"L\"},relativeTime:{future:\"след %s\",past:\"преди %s\",s:\"няколко секунди\",m:\"минута\",mm:\"%d минути\",h:\"час\",hh:\"%d часа\",d:\"ден\",dd:\"%d дни\",M:\"месец\",MM:\"%d месеца\",y:\"година\",yy:\"%d години\"},dayOfMonthOrdinalParse:/\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(a){var b=a%10,c=a%100;return 0===a?a+\"-ев\":0===c?a+\"-ен\":c>10&&c<20?a+\"-ти\":1===b?a+\"-ви\":2===b?a+\"-ри\":7===b||8===b?a+\"-ми\":a+\"-ти\"},week:{dow:1,doy:7}});\n//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\nvar Lg={1:\"১\",2:\"২\",3:\"৩\",4:\"৪\",5:\"৫\",6:\"৬\",7:\"৭\",8:\"৮\",9:\"৯\",0:\"০\"},Mg={\"১\":\"1\",\"২\":\"2\",\"৩\":\"3\",\"৪\":\"4\",\"৫\":\"5\",\"৬\":\"6\",\"৭\":\"7\",\"৮\":\"8\",\"৯\":\"9\",\"০\":\"0\"};a.defineLocale(\"bn\",{months:\"জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর\".split(\"_\"),monthsShort:\"জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে\".split(\"_\"),weekdays:\"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার\".split(\"_\"),weekdaysShort:\"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি\".split(\"_\"),weekdaysMin:\"রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি\".split(\"_\"),longDateFormat:{LT:\"A h:mm সময়\",LTS:\"A h:mm:ss সময়\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY, A h:mm সময়\",LLLL:\"dddd, D MMMM YYYY, A h:mm সময়\"},calendar:{sameDay:\"[আজ] LT\",nextDay:\"[আগামীকাল] LT\",nextWeek:\"dddd, LT\",lastDay:\"[গতকাল] LT\",lastWeek:\"[গত] dddd, LT\",sameElse:\"L\"},relativeTime:{future:\"%s পরে\",past:\"%s আগে\",s:\"কয়েক সেকেন্ড\",m:\"এক মিনিট\",mm:\"%d মিনিট\",h:\"এক ঘন্টা\",hh:\"%d ঘন্টা\",d:\"এক দিন\",dd:\"%d দিন\",M:\"এক মাস\",MM:\"%d মাস\",y:\"এক বছর\",yy:\"%d বছর\"},preparse:function(a){return a.replace(/[১২৩৪৫৬৭৮৯০]/g,function(a){return Mg[a]})},postformat:function(a){return a.replace(/\\d/g,function(a){return Lg[a]})},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(a,b){return 12===a&&(a=0),\"রাত\"===b&&a>=4||\"দুপুর\"===b&&a<5||\"বিকাল\"===b?a+12:a},meridiem:function(a,b,c){return a<4?\"রাত\":a<10?\"সকাল\":a<17?\"দুপুর\":a<20?\"বিকাল\":\"রাত\"},week:{dow:0,doy:6}});\n//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\nvar Ng={1:\"༡\",2:\"༢\",3:\"༣\",4:\"༤\",5:\"༥\",6:\"༦\",7:\"༧\",8:\"༨\",9:\"༩\",0:\"༠\"},Og={\"༡\":\"1\",\"༢\":\"2\",\"༣\":\"3\",\"༤\":\"4\",\"༥\":\"5\",\"༦\":\"6\",\"༧\":\"7\",\"༨\":\"8\",\"༩\":\"9\",\"༠\":\"0\"};a.defineLocale(\"bo\",{months:\"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ\".split(\"_\"),monthsShort:\"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ\".split(\"_\"),weekdays:\"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་\".split(\"_\"),weekdaysShort:\"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་\".split(\"_\"),weekdaysMin:\"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་\".split(\"_\"),longDateFormat:{LT:\"A h:mm\",LTS:\"A h:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY, A h:mm\",LLLL:\"dddd, D MMMM YYYY, A h:mm\"},calendar:{sameDay:\"[དི་རིང] LT\",nextDay:\"[སང་ཉིན] LT\",nextWeek:\"[བདུན་ཕྲག་རྗེས་མ], LT\",lastDay:\"[ཁ་སང] LT\",lastWeek:\"[བདུན་ཕྲག་མཐའ་མ] dddd, LT\",sameElse:\"L\"},relativeTime:{future:\"%s ལ་\",past:\"%s སྔན་ལ\",s:\"ལམ་སང\",m:\"སྐར་མ་གཅིག\",mm:\"%d སྐར་མ\",h:\"ཆུ་ཚོད་གཅིག\",hh:\"%d ཆུ་ཚོད\",d:\"ཉིན་གཅིག\",dd:\"%d ཉིན་\",M:\"ཟླ་བ་གཅིག\",MM:\"%d ཟླ་བ\",y:\"ལོ་གཅིག\",yy:\"%d ལོ\"},preparse:function(a){return a.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,function(a){return Og[a]})},postformat:function(a){return a.replace(/\\d/g,function(a){return Ng[a]})},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,meridiemHour:function(a,b){return 12===a&&(a=0),\"མཚན་མོ\"===b&&a>=4||\"ཉིན་གུང\"===b&&a<5||\"དགོང་དག\"===b?a+12:a},meridiem:function(a,b,c){return a<4?\"མཚན་མོ\":a<10?\"ཞོགས་ཀས\":a<17?\"ཉིན་གུང\":a<20?\"དགོང་དག\":\"མཚན་མོ\"},week:{dow:0,doy:6}}),a.defineLocale(\"br\",{months:\"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu\".split(\"_\"),monthsShort:\"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker\".split(\"_\"),weekdays:\"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn\".split(\"_\"),weekdaysShort:\"Sul_Lun_Meu_Mer_Yao_Gwe_Sad\".split(\"_\"),weekdaysMin:\"Su_Lu_Me_Mer_Ya_Gw_Sa\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"h[e]mm A\",LTS:\"h[e]mm:ss A\",L:\"DD/MM/YYYY\",LL:\"D [a viz] MMMM YYYY\",LLL:\"D [a viz] MMMM YYYY h[e]mm A\",LLLL:\"dddd, D [a viz] MMMM YYYY h[e]mm A\"},calendar:{sameDay:\"[Hiziv da] LT\",nextDay:\"[Warc'hoazh da] LT\",nextWeek:\"dddd [da] LT\",lastDay:\"[Dec'h da] LT\",lastWeek:\"dddd [paset da] LT\",sameElse:\"L\"},relativeTime:{future:\"a-benn %s\",past:\"%s 'zo\",s:\"un nebeud segondennoù\",m:\"ur vunutenn\",mm:ud,h:\"un eur\",hh:\"%d eur\",d:\"un devezh\",dd:ud,M:\"ur miz\",MM:ud,y:\"ur bloaz\",yy:vd},dayOfMonthOrdinalParse:/\\d{1,2}(añ|vet)/,ordinal:function(a){var b=1===a?\"añ\":\"vet\";return a+b},week:{dow:1,doy:4}}),a.defineLocale(\"bs\",{months:\"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar\".split(\"_\"),monthsShort:\"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.\".split(\"_\"),monthsParseExact:!0,weekdays:\"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota\".split(\"_\"),weekdaysShort:\"ned._pon._uto._sri._čet._pet._sub.\".split(\"_\"),weekdaysMin:\"ne_po_ut_sr_če_pe_su\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd, D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[danas u] LT\",nextDay:\"[sutra u] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[u] [nedjelju] [u] LT\";case 3:return\"[u] [srijedu] [u] LT\";case 6:return\"[u] [subotu] [u] LT\";case 1:case 2:case 4:case 5:return\"[u] dddd [u] LT\"}},lastDay:\"[jučer u] LT\",lastWeek:function(){switch(this.day()){case 0:case 3:return\"[prošlu] dddd [u] LT\";case 6:return\"[prošle] [subote] [u] LT\";case 1:case 2:case 4:case 5:return\"[prošli] dddd [u] LT\"}},sameElse:\"L\"},relativeTime:{future:\"za %s\",past:\"prije %s\",s:\"par sekundi\",m:zd,mm:zd,h:zd,hh:zd,d:\"dan\",dd:zd,M:\"mjesec\",MM:zd,y:\"godinu\",yy:zd},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}}),\n//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\na.defineLocale(\"ca\",{months:{standalone:\"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre\".split(\"_\"),format:\"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\"_\"),isFormat:/D[oD]?(\\s)+MMMM/},monthsShort:\"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.\".split(\"_\"),monthsParseExact:!0,weekdays:\"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte\".split(\"_\"),weekdaysShort:\"dg._dl._dt._dc._dj._dv._ds.\".split(\"_\"),weekdaysMin:\"Dg_Dl_Dt_Dc_Dj_Dv_Ds\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD/MM/YYYY\",LL:\"[el] D MMMM [de] YYYY\",ll:\"D MMM YYYY\",LLL:\"[el] D MMMM [de] YYYY [a les] H:mm\",lll:\"D MMM YYYY, H:mm\",LLLL:\"[el] dddd D MMMM [de] YYYY [a les] H:mm\",llll:\"ddd D MMM YYYY, H:mm\"},calendar:{sameDay:function(){return\"[avui a \"+(1!==this.hours()?\"les\":\"la\")+\"] LT\"},nextDay:function(){return\"[demà a \"+(1!==this.hours()?\"les\":\"la\")+\"] LT\"},nextWeek:function(){return\"dddd [a \"+(1!==this.hours()?\"les\":\"la\")+\"] LT\"},lastDay:function(){return\"[ahir a \"+(1!==this.hours()?\"les\":\"la\")+\"] LT\"},lastWeek:function(){return\"[el] dddd [passat a \"+(1!==this.hours()?\"les\":\"la\")+\"] LT\"},sameElse:\"L\"},relativeTime:{future:\"d'aquí %s\",past:\"fa %s\",s:\"uns segons\",m:\"un minut\",mm:\"%d minuts\",h:\"una hora\",hh:\"%d hores\",d:\"un dia\",dd:\"%d dies\",M:\"un mes\",MM:\"%d mesos\",y:\"un any\",yy:\"%d anys\"},dayOfMonthOrdinalParse:/\\d{1,2}(r|n|t|è|a)/,ordinal:function(a,b){var c=1===a?\"r\":2===a?\"n\":3===a?\"r\":4===a?\"t\":\"è\";return\"w\"!==b&&\"W\"!==b||(c=\"a\"),a+c},week:{dow:1,doy:4}});\n//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\nvar Pg=\"leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec\".split(\"_\"),Qg=\"led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro\".split(\"_\");a.defineLocale(\"cs\",{months:Pg,monthsShort:Qg,monthsParse:function(a,b){var c,d=[];for(c=0;c<12;c++)d[c]=new RegExp(\"^\"+a[c]+\"$|^\"+b[c]+\"$\",\"i\");return d}(Pg,Qg),shortMonthsParse:function(a){var b,c=[];for(b=0;b<12;b++)c[b]=new RegExp(\"^\"+a[b]+\"$\",\"i\");return c}(Qg),longMonthsParse:function(a){var b,c=[];for(b=0;b<12;b++)c[b]=new RegExp(\"^\"+a[b]+\"$\",\"i\");return c}(Pg),weekdays:\"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota\".split(\"_\"),weekdaysShort:\"ne_po_út_st_čt_pá_so\".split(\"_\"),weekdaysMin:\"ne_po_út_st_čt_pá_so\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd D. MMMM YYYY H:mm\",l:\"D. M. YYYY\"},calendar:{sameDay:\"[dnes v] LT\",nextDay:\"[zítra v] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[v neděli v] LT\";case 1:case 2:return\"[v] dddd [v] LT\";case 3:return\"[ve středu v] LT\";case 4:return\"[ve čtvrtek v] LT\";case 5:return\"[v pátek v] LT\";case 6:return\"[v sobotu v] LT\"}},lastDay:\"[včera v] LT\",lastWeek:function(){switch(this.day()){case 0:return\"[minulou neděli v] LT\";case 1:case 2:return\"[minulé] dddd [v] LT\";case 3:return\"[minulou středu v] LT\";case 4:case 5:return\"[minulý] dddd [v] LT\";case 6:return\"[minulou sobotu v] LT\"}},sameElse:\"L\"},relativeTime:{future:\"za %s\",past:\"před %s\",s:Bd,m:Bd,mm:Bd,h:Bd,hh:Bd,d:Bd,dd:Bd,M:Bd,MM:Bd,y:Bd,yy:Bd},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}}),\n//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\na.defineLocale(\"cv\",{months:\"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав\".split(\"_\"),monthsShort:\"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш\".split(\"_\"),weekdays:\"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун\".split(\"_\"),weekdaysShort:\"выр_тун_ытл_юн_кӗҫ_эрн_шӑм\".split(\"_\"),weekdaysMin:\"вр_тн_ыт_юн_кҫ_эр_шм\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD-MM-YYYY\",LL:\"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]\",LLL:\"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm\",LLLL:\"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm\"},calendar:{sameDay:\"[Паян] LT [сехетре]\",nextDay:\"[Ыран] LT [сехетре]\",lastDay:\"[Ӗнер] LT [сехетре]\",nextWeek:\"[Ҫитес] dddd LT [сехетре]\",lastWeek:\"[Иртнӗ] dddd LT [сехетре]\",sameElse:\"L\"},relativeTime:{future:function(a){var b=/сехет$/i.exec(a)?\"рен\":/ҫул$/i.exec(a)?\"тан\":\"ран\";return a+b},past:\"%s каялла\",s:\"пӗр-ик ҫеккунт\",m:\"пӗр минут\",mm:\"%d минут\",h:\"пӗр сехет\",hh:\"%d сехет\",d:\"пӗр кун\",dd:\"%d кун\",M:\"пӗр уйӑх\",MM:\"%d уйӑх\",y:\"пӗр ҫул\",yy:\"%d ҫул\"},dayOfMonthOrdinalParse:/\\d{1,2}-мӗш/,ordinal:\"%d-мӗш\",week:{dow:1,doy:7}}),\n//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\na.defineLocale(\"cy\",{months:\"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr\".split(\"_\"),monthsShort:\"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag\".split(\"_\"),weekdays:\"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn\".split(\"_\"),weekdaysShort:\"Sul_Llun_Maw_Mer_Iau_Gwe_Sad\".split(\"_\"),weekdaysMin:\"Su_Ll_Ma_Me_Ia_Gw_Sa\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Heddiw am] LT\",nextDay:\"[Yfory am] LT\",nextWeek:\"dddd [am] LT\",lastDay:\"[Ddoe am] LT\",lastWeek:\"dddd [diwethaf am] LT\",sameElse:\"L\"},relativeTime:{future:\"mewn %s\",past:\"%s yn ôl\",s:\"ychydig eiliadau\",m:\"munud\",mm:\"%d munud\",h:\"awr\",hh:\"%d awr\",d:\"diwrnod\",dd:\"%d diwrnod\",M:\"mis\",MM:\"%d mis\",y:\"blwyddyn\",yy:\"%d flynedd\"},dayOfMonthOrdinalParse:/\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(a){var b=a,c=\"\",d=[\"\",\"af\",\"il\",\"ydd\",\"ydd\",\"ed\",\"ed\",\"ed\",\"fed\",\"fed\",\"fed\",\"eg\",\"fed\",\"eg\",\"eg\",\"fed\",\"eg\",\"eg\",\"fed\",\"eg\",\"fed\"];return b>20?c=40===b||50===b||60===b||80===b||100===b?\"fed\":\"ain\":b>0&&(c=d[b]),a+c},week:{dow:1,doy:4}}),\n//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\na.defineLocale(\"da\",{months:\"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec\".split(\"_\"),weekdays:\"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag\".split(\"_\"),weekdaysShort:\"søn_man_tir_ons_tor_fre_lør\".split(\"_\"),weekdaysMin:\"sø_ma_ti_on_to_fr_lø\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY HH:mm\",LLLL:\"dddd [d.] D. MMMM YYYY [kl.] HH:mm\"},calendar:{sameDay:\"[i dag kl.] LT\",nextDay:\"[i morgen kl.] LT\",nextWeek:\"på dddd [kl.] LT\",lastDay:\"[i går kl.] LT\",lastWeek:\"[i] dddd[s kl.] LT\",sameElse:\"L\"},relativeTime:{future:\"om %s\",past:\"%s siden\",s:\"få sekunder\",m:\"et minut\",mm:\"%d minutter\",h:\"en time\",hh:\"%d timer\",d:\"en dag\",dd:\"%d dage\",M:\"en måned\",MM:\"%d måneder\",y:\"et år\",yy:\"%d år\"},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}}),a.defineLocale(\"de-at\",{months:\"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember\".split(\"_\"),monthsShort:\"Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.\".split(\"_\"),monthsParseExact:!0,weekdays:\"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag\".split(\"_\"),weekdaysShort:\"So._Mo._Di._Mi._Do._Fr._Sa.\".split(\"_\"),weekdaysMin:\"So_Mo_Di_Mi_Do_Fr_Sa\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY HH:mm\",LLLL:\"dddd, D. MMMM YYYY HH:mm\"},calendar:{sameDay:\"[heute um] LT [Uhr]\",sameElse:\"L\",nextDay:\"[morgen um] LT [Uhr]\",nextWeek:\"dddd [um] LT [Uhr]\",lastDay:\"[gestern um] LT [Uhr]\",lastWeek:\"[letzten] dddd [um] LT [Uhr]\"},relativeTime:{future:\"in %s\",past:\"vor %s\",s:\"ein paar Sekunden\",m:Cd,mm:\"%d Minuten\",h:Cd,hh:\"%d Stunden\",d:Cd,dd:Cd,M:Cd,MM:Cd,y:Cd,yy:Cd},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}}),a.defineLocale(\"de-ch\",{months:\"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember\".split(\"_\"),monthsShort:\"Jan._Febr._März_April_Mai_Juni_Juli_Aug._Sept._Okt._Nov._Dez.\".split(\"_\"),monthsParseExact:!0,weekdays:\"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag\".split(\"_\"),weekdaysShort:\"So_Mo_Di_Mi_Do_Fr_Sa\".split(\"_\"),weekdaysMin:\"So_Mo_Di_Mi_Do_Fr_Sa\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH.mm\",LTS:\"HH.mm.ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY HH.mm\",LLLL:\"dddd, D. MMMM YYYY HH.mm\"},calendar:{sameDay:\"[heute um] LT [Uhr]\",sameElse:\"L\",nextDay:\"[morgen um] LT [Uhr]\",nextWeek:\"dddd [um] LT [Uhr]\",lastDay:\"[gestern um] LT [Uhr]\",lastWeek:\"[letzten] dddd [um] LT [Uhr]\"},relativeTime:{future:\"in %s\",past:\"vor %s\",s:\"ein paar Sekunden\",m:Dd,mm:\"%d Minuten\",h:Dd,hh:\"%d Stunden\",d:Dd,dd:Dd,M:Dd,MM:Dd,y:Dd,yy:Dd},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}}),a.defineLocale(\"de\",{months:\"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember\".split(\"_\"),monthsShort:\"Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.\".split(\"_\"),monthsParseExact:!0,weekdays:\"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag\".split(\"_\"),weekdaysShort:\"So._Mo._Di._Mi._Do._Fr._Sa.\".split(\"_\"),weekdaysMin:\"So_Mo_Di_Mi_Do_Fr_Sa\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY HH:mm\",LLLL:\"dddd, D. MMMM YYYY HH:mm\"},calendar:{sameDay:\"[heute um] LT [Uhr]\",sameElse:\"L\",nextDay:\"[morgen um] LT [Uhr]\",nextWeek:\"dddd [um] LT [Uhr]\",lastDay:\"[gestern um] LT [Uhr]\",lastWeek:\"[letzten] dddd [um] LT [Uhr]\"},relativeTime:{future:\"in %s\",past:\"vor %s\",s:\"ein paar Sekunden\",m:Ed,mm:\"%d Minuten\",h:Ed,hh:\"%d Stunden\",d:Ed,dd:Ed,M:Ed,MM:Ed,y:Ed,yy:Ed},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}});\n//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\nvar Rg=[\"ޖެނުއަރީ\",\"ފެބްރުއަރީ\",\"މާރިޗު\",\"އޭޕްރީލު\",\"މޭ\",\"ޖޫން\",\"ޖުލައި\",\"އޯގަސްޓު\",\"ސެޕްޓެމްބަރު\",\"އޮކްޓޯބަރު\",\"ނޮވެމްބަރު\",\"ޑިސެމްބަރު\"],Sg=[\"އާދިއްތަ\",\"ހޯމަ\",\"އަންގާރަ\",\"ބުދަ\",\"ބުރާސްފަތި\",\"ހުކުރު\",\"ހޮނިހިރު\"];a.defineLocale(\"dv\",{months:Rg,monthsShort:Rg,weekdays:Sg,weekdaysShort:Sg,weekdaysMin:\"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"D/M/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},meridiemParse:/މކ|މފ/,isPM:function(a){return\"މފ\"===a},meridiem:function(a,b,c){return a<12?\"މކ\":\"މފ\"},calendar:{sameDay:\"[މިއަދު] LT\",nextDay:\"[މާދަމާ] LT\",nextWeek:\"dddd LT\",lastDay:\"[އިއްޔެ] LT\",lastWeek:\"[ފާއިތުވި] dddd LT\",sameElse:\"L\"},relativeTime:{future:\"ތެރޭގައި %s\",past:\"ކުރިން %s\",s:\"ސިކުންތުކޮޅެއް\",m:\"މިނިޓެއް\",mm:\"މިނިޓު %d\",h:\"ގަޑިއިރެއް\",hh:\"ގަޑިއިރު %d\",d:\"ދުވަހެއް\",dd:\"ދުވަސް %d\",M:\"މަހެއް\",MM:\"މަސް %d\",y:\"އަހަރެއް\",yy:\"އަހަރު %d\"},preparse:function(a){return a.replace(/،/g,\",\")},postformat:function(a){return a.replace(/,/g,\"،\")},week:{dow:7,doy:12}}),\n//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\na.defineLocale(\"el\",{monthsNominativeEl:\"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος\".split(\"_\"),monthsGenitiveEl:\"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου\".split(\"_\"),months:function(a,b){return a?/D/.test(b.substring(0,b.indexOf(\"MMMM\")))?this._monthsGenitiveEl[a.month()]:this._monthsNominativeEl[a.month()]:this._monthsNominativeEl},monthsShort:\"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ\".split(\"_\"),weekdays:\"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο\".split(\"_\"),weekdaysShort:\"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ\".split(\"_\"),weekdaysMin:\"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα\".split(\"_\"),meridiem:function(a,b,c){return a>11?c?\"μμ\":\"ΜΜ\":c?\"πμ\":\"ΠΜ\"},isPM:function(a){return\"μ\"===(a+\"\").toLowerCase()[0]},meridiemParse:/[ΠΜ]\\.?Μ?\\.?/i,longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY h:mm A\",LLLL:\"dddd, D MMMM YYYY h:mm A\"},calendarEl:{sameDay:\"[Σήμερα {}] LT\",nextDay:\"[Αύριο {}] LT\",nextWeek:\"dddd [{}] LT\",lastDay:\"[Χθες {}] LT\",lastWeek:function(){switch(this.day()){case 6:return\"[το προηγούμενο] dddd [{}] LT\";default:return\"[την προηγούμενη] dddd [{}] LT\"}},sameElse:\"L\"},calendar:function(a,b){var c=this._calendarEl[a],d=b&&b.hours();return z(c)&&(c=c.apply(b)),c.replace(\"{}\",d%12===1?\"στη\":\"στις\")},relativeTime:{future:\"σε %s\",past:\"%s πριν\",s:\"λίγα δευτερόλεπτα\",m:\"ένα λεπτό\",mm:\"%d λεπτά\",h:\"μία ώρα\",hh:\"%d ώρες\",d:\"μία μέρα\",dd:\"%d μέρες\",M:\"ένας μήνας\",MM:\"%d μήνες\",y:\"ένας χρόνος\",yy:\"%d χρόνια\"},dayOfMonthOrdinalParse:/\\d{1,2}η/,ordinal:\"%dη\",week:{dow:1,doy:4}}),\n//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\na.defineLocale(\"en-au\",{months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),weekdaysShort:\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),weekdaysMin:\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY h:mm A\",LLLL:\"dddd, D MMMM YYYY h:mm A\"},calendar:{sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},dayOfMonthOrdinalParse:/\\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?\"th\":1===b?\"st\":2===b?\"nd\":3===b?\"rd\":\"th\";return a+c},week:{dow:1,doy:4}}),\n//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\na.defineLocale(\"en-ca\",{months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),weekdaysShort:\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),weekdaysMin:\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"YYYY-MM-DD\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},calendar:{sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},dayOfMonthOrdinalParse:/\\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?\"th\":1===b?\"st\":2===b?\"nd\":3===b?\"rd\":\"th\";return a+c}}),\n//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\na.defineLocale(\"en-gb\",{months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),weekdaysShort:\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),weekdaysMin:\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},dayOfMonthOrdinalParse:/\\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?\"th\":1===b?\"st\":2===b?\"nd\":3===b?\"rd\":\"th\";return a+c},week:{dow:1,doy:4}}),\n//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\na.defineLocale(\"en-ie\",{months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),weekdaysShort:\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),weekdaysMin:\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD-MM-YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},dayOfMonthOrdinalParse:/\\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?\"th\":1===b?\"st\":2===b?\"nd\":3===b?\"rd\":\"th\";return a+c},week:{dow:1,doy:4}}),\n//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\na.defineLocale(\"en-nz\",{months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec\".split(\"_\"),weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),weekdaysShort:\"Sun_Mon_Tue_Wed_Thu_Fri_Sat\".split(\"_\"),weekdaysMin:\"Su_Mo_Tu_We_Th_Fr_Sa\".split(\"_\"),longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY h:mm A\",LLLL:\"dddd, D MMMM YYYY h:mm A\"},calendar:{sameDay:\"[Today at] LT\",nextDay:\"[Tomorrow at] LT\",nextWeek:\"dddd [at] LT\",lastDay:\"[Yesterday at] LT\",lastWeek:\"[Last] dddd [at] LT\",sameElse:\"L\"},relativeTime:{future:\"in %s\",past:\"%s ago\",s:\"a few seconds\",m:\"a minute\",mm:\"%d minutes\",h:\"an hour\",hh:\"%d hours\",d:\"a day\",dd:\"%d days\",M:\"a month\",MM:\"%d months\",y:\"a year\",yy:\"%d years\"},dayOfMonthOrdinalParse:/\\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?\"th\":1===b?\"st\":2===b?\"nd\":3===b?\"rd\":\"th\";return a+c},week:{dow:1,doy:4}}),\n//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\na.defineLocale(\"eo\",{months:\"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec\".split(\"_\"),weekdays:\"dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato\".split(\"_\"),weekdaysShort:\"dim_lun_mard_merk_ĵaŭ_ven_sab\".split(\"_\"),weekdaysMin:\"di_lu_ma_me_ĵa_ve_sa\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY-MM-DD\",LL:\"D[-a de] MMMM, YYYY\",LLL:\"D[-a de] MMMM, YYYY HH:mm\",LLLL:\"dddd, [la] D[-a de] MMMM, YYYY HH:mm\"},meridiemParse:/[ap]\\.t\\.m/i,isPM:function(a){return\"p\"===a.charAt(0).toLowerCase()},meridiem:function(a,b,c){return a>11?c?\"p.t.m.\":\"P.T.M.\":c?\"a.t.m.\":\"A.T.M.\"},calendar:{sameDay:\"[Hodiaŭ je] LT\",nextDay:\"[Morgaŭ je] LT\",nextWeek:\"dddd [je] LT\",lastDay:\"[Hieraŭ je] LT\",lastWeek:\"[pasinta] dddd [je] LT\",sameElse:\"L\"},relativeTime:{future:\"post %s\",past:\"antaŭ %s\",s:\"sekundoj\",m:\"minuto\",mm:\"%d minutoj\",h:\"horo\",hh:\"%d horoj\",d:\"tago\",dd:\"%d tagoj\",M:\"monato\",MM:\"%d monatoj\",y:\"jaro\",yy:\"%d jaroj\"},dayOfMonthOrdinalParse:/\\d{1,2}a/,ordinal:\"%da\",week:{dow:1,doy:7}});\n//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\nvar Tg=\"ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.\".split(\"_\"),Ug=\"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic\".split(\"_\");a.defineLocale(\"es-do\",{months:\"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre\".split(\"_\"),monthsShort:function(a,b){return a?/-MMM-/.test(b)?Ug[a.month()]:Tg[a.month()]:Tg},monthsParseExact:!0,weekdays:\"domingo_lunes_martes_miércoles_jueves_viernes_sábado\".split(\"_\"),weekdaysShort:\"dom._lun._mar._mié._jue._vie._sáb.\".split(\"_\"),weekdaysMin:\"do_lu_ma_mi_ju_vi_sá\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"DD/MM/YYYY\",LL:\"D [de] MMMM [de] YYYY\",LLL:\"D [de] MMMM [de] YYYY h:mm A\",LLLL:\"dddd, D [de] MMMM [de] YYYY h:mm A\"},calendar:{sameDay:function(){return\"[hoy a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},nextDay:function(){return\"[mañana a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},nextWeek:function(){return\"dddd [a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},lastDay:function(){return\"[ayer a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},lastWeek:function(){return\"[el] dddd [pasado a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},sameElse:\"L\"},relativeTime:{future:\"en %s\",past:\"hace %s\",s:\"unos segundos\",m:\"un minuto\",mm:\"%d minutos\",h:\"una hora\",hh:\"%d horas\",d:\"un día\",dd:\"%d días\",M:\"un mes\",MM:\"%d meses\",y:\"un año\",yy:\"%d años\"},dayOfMonthOrdinalParse:/\\d{1,2}º/,ordinal:\"%dº\",week:{dow:1,doy:4}});\n//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\nvar Vg=\"ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.\".split(\"_\"),Wg=\"ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic\".split(\"_\");a.defineLocale(\"es\",{months:\"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre\".split(\"_\"),monthsShort:function(a,b){return a?/-MMM-/.test(b)?Wg[a.month()]:Vg[a.month()]:Vg},monthsParseExact:!0,weekdays:\"domingo_lunes_martes_miércoles_jueves_viernes_sábado\".split(\"_\"),weekdaysShort:\"dom._lun._mar._mié._jue._vie._sáb.\".split(\"_\"),weekdaysMin:\"do_lu_ma_mi_ju_vi_sá\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D [de] MMMM [de] YYYY\",LLL:\"D [de] MMMM [de] YYYY H:mm\",LLLL:\"dddd, D [de] MMMM [de] YYYY H:mm\"},calendar:{sameDay:function(){return\"[hoy a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},nextDay:function(){return\"[mañana a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},nextWeek:function(){return\"dddd [a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},lastDay:function(){return\"[ayer a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},lastWeek:function(){return\"[el] dddd [pasado a la\"+(1!==this.hours()?\"s\":\"\")+\"] LT\"},sameElse:\"L\"},relativeTime:{future:\"en %s\",past:\"hace %s\",s:\"unos segundos\",m:\"un minuto\",mm:\"%d minutos\",h:\"una hora\",hh:\"%d horas\",d:\"un día\",dd:\"%d días\",M:\"un mes\",MM:\"%d meses\",y:\"un año\",yy:\"%d años\"},dayOfMonthOrdinalParse:/\\d{1,2}º/,ordinal:\"%dº\",week:{dow:1,doy:4}}),a.defineLocale(\"et\",{months:\"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember\".split(\"_\"),monthsShort:\"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets\".split(\"_\"),weekdays:\"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev\".split(\"_\"),weekdaysShort:\"P_E_T_K_N_R_L\".split(\"_\"),weekdaysMin:\"P_E_T_K_N_R_L\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd, D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[Täna,] LT\",nextDay:\"[Homme,] LT\",nextWeek:\"[Järgmine] dddd LT\",lastDay:\"[Eile,] LT\",lastWeek:\"[Eelmine] dddd LT\",sameElse:\"L\"},relativeTime:{future:\"%s pärast\",past:\"%s tagasi\",s:Fd,m:Fd,mm:Fd,h:Fd,hh:Fd,d:Fd,dd:\"%d päeva\",M:Fd,MM:Fd,y:Fd,yy:Fd},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}}),\n//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\na.defineLocale(\"eu\",{months:\"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua\".split(\"_\"),monthsShort:\"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.\".split(\"_\"),monthsParseExact:!0,weekdays:\"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata\".split(\"_\"),weekdaysShort:\"ig._al._ar._az._og._ol._lr.\".split(\"_\"),weekdaysMin:\"ig_al_ar_az_og_ol_lr\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY-MM-DD\",LL:\"YYYY[ko] MMMM[ren] D[a]\",LLL:\"YYYY[ko] MMMM[ren] D[a] HH:mm\",LLLL:\"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm\",l:\"YYYY-M-D\",ll:\"YYYY[ko] MMM D[a]\",lll:\"YYYY[ko] MMM D[a] HH:mm\",llll:\"ddd, YYYY[ko] MMM D[a] HH:mm\"},calendar:{sameDay:\"[gaur] LT[etan]\",nextDay:\"[bihar] LT[etan]\",nextWeek:\"dddd LT[etan]\",lastDay:\"[atzo] LT[etan]\",lastWeek:\"[aurreko] dddd LT[etan]\",sameElse:\"L\"},relativeTime:{future:\"%s barru\",past:\"duela %s\",s:\"segundo batzuk\",m:\"minutu bat\",mm:\"%d minutu\",h:\"ordu bat\",hh:\"%d ordu\",d:\"egun bat\",dd:\"%d egun\",M:\"hilabete bat\",MM:\"%d hilabete\",y:\"urte bat\",yy:\"%d urte\"},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}});\n//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\nvar Xg={1:\"۱\",2:\"۲\",3:\"۳\",4:\"۴\",5:\"۵\",6:\"۶\",7:\"۷\",8:\"۸\",9:\"۹\",0:\"۰\"},Yg={\"۱\":\"1\",\"۲\":\"2\",\"۳\":\"3\",\"۴\":\"4\",\"۵\":\"5\",\"۶\":\"6\",\"۷\":\"7\",\"۸\":\"8\",\"۹\":\"9\",\"۰\":\"0\"};a.defineLocale(\"fa\",{months:\"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر\".split(\"_\"),monthsShort:\"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر\".split(\"_\"),weekdays:\"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه\".split(\"_\"),weekdaysShort:\"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه\".split(\"_\"),weekdaysMin:\"ی_د_س_چ_پ_ج_ش\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(a){return/بعد از ظهر/.test(a)},meridiem:function(a,b,c){return a<12?\"قبل از ظهر\":\"بعد از ظهر\"},calendar:{sameDay:\"[امروز ساعت] LT\",nextDay:\"[فردا ساعت] LT\",nextWeek:\"dddd [ساعت] LT\",lastDay:\"[دیروز ساعت] LT\",lastWeek:\"dddd [پیش] [ساعت] LT\",sameElse:\"L\"},relativeTime:{future:\"در %s\",past:\"%s پیش\",s:\"چند ثانیه\",m:\"یک دقیقه\",mm:\"%d دقیقه\",h:\"یک ساعت\",hh:\"%d ساعت\",d:\"یک روز\",dd:\"%d روز\",M:\"یک ماه\",MM:\"%d ماه\",y:\"یک سال\",yy:\"%d سال\"},preparse:function(a){return a.replace(/[۰-۹]/g,function(a){return Yg[a]}).replace(/،/g,\",\")},postformat:function(a){return a.replace(/\\d/g,function(a){return Xg[a]}).replace(/,/g,\"،\")},dayOfMonthOrdinalParse:/\\d{1,2}م/,ordinal:\"%dم\",week:{dow:6,doy:12}});\n//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\nvar Zg=\"nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän\".split(\" \"),$g=[\"nolla\",\"yhden\",\"kahden\",\"kolmen\",\"neljän\",\"viiden\",\"kuuden\",Zg[7],Zg[8],Zg[9]];a.defineLocale(\"fi\",{months:\"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu\".split(\"_\"),monthsShort:\"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu\".split(\"_\"),weekdays:\"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai\".split(\"_\"),weekdaysShort:\"su_ma_ti_ke_to_pe_la\".split(\"_\"),weekdaysMin:\"su_ma_ti_ke_to_pe_la\".split(\"_\"),longDateFormat:{LT:\"HH.mm\",LTS:\"HH.mm.ss\",L:\"DD.MM.YYYY\",LL:\"Do MMMM[ta] YYYY\",LLL:\"Do MMMM[ta] YYYY, [klo] HH.mm\",LLLL:\"dddd, Do MMMM[ta] YYYY, [klo] HH.mm\",l:\"D.M.YYYY\",ll:\"Do MMM YYYY\",lll:\"Do MMM YYYY, [klo] HH.mm\",llll:\"ddd, Do MMM YYYY, [klo] HH.mm\"},calendar:{sameDay:\"[tänään] [klo] LT\",nextDay:\"[huomenna] [klo] LT\",nextWeek:\"dddd [klo] LT\",lastDay:\"[eilen] [klo] LT\",lastWeek:\"[viime] dddd[na] [klo] LT\",sameElse:\"L\"},relativeTime:{future:\"%s päästä\",past:\"%s sitten\",s:Gd,m:Gd,mm:Gd,h:Gd,hh:Gd,d:Gd,dd:Gd,M:Gd,MM:Gd,y:Gd,yy:Gd},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}}),\n//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\na.defineLocale(\"fo\",{months:\"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des\".split(\"_\"),weekdays:\"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur\".split(\"_\"),weekdaysShort:\"sun_mán_týs_mik_hós_frí_ley\".split(\"_\"),weekdaysMin:\"su_má_tý_mi_hó_fr_le\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D. MMMM, YYYY HH:mm\"},calendar:{sameDay:\"[Í dag kl.] LT\",nextDay:\"[Í morgin kl.] LT\",nextWeek:\"dddd [kl.] LT\",lastDay:\"[Í gjár kl.] LT\",lastWeek:\"[síðstu] dddd [kl] LT\",sameElse:\"L\"},relativeTime:{future:\"um %s\",past:\"%s síðani\",s:\"fá sekund\",m:\"ein minutt\",mm:\"%d minuttir\",h:\"ein tími\",hh:\"%d tímar\",d:\"ein dagur\",dd:\"%d dagar\",M:\"ein mánaði\",MM:\"%d mánaðir\",y:\"eitt ár\",yy:\"%d ár\"},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}}),\n//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\na.defineLocale(\"fr-ca\",{months:\"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre\".split(\"_\"),monthsShort:\"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.\".split(\"_\"),monthsParseExact:!0,weekdays:\"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi\".split(\"_\"),weekdaysShort:\"dim._lun._mar._mer._jeu._ven._sam.\".split(\"_\"),weekdaysMin:\"Di_Lu_Ma_Me_Je_Ve_Sa\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY-MM-DD\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Aujourd’hui à] LT\",nextDay:\"[Demain à] LT\",nextWeek:\"dddd [à] LT\",lastDay:\"[Hier à] LT\",lastWeek:\"dddd [dernier à] LT\",sameElse:\"L\"},relativeTime:{future:\"dans %s\",past:\"il y a %s\",s:\"quelques secondes\",m:\"une minute\",mm:\"%d minutes\",h:\"une heure\",hh:\"%d heures\",d:\"un jour\",dd:\"%d jours\",M:\"un mois\",MM:\"%d mois\",y:\"un an\",yy:\"%d ans\"},dayOfMonthOrdinalParse:/\\d{1,2}(er|e)/,ordinal:function(a,b){switch(b){default:case\"M\":case\"Q\":case\"D\":case\"DDD\":case\"d\":return a+(1===a?\"er\":\"e\");case\"w\":case\"W\":return a+(1===a?\"re\":\"e\")}}}),\n//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\na.defineLocale(\"fr-ch\",{months:\"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre\".split(\"_\"),monthsShort:\"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.\".split(\"_\"),monthsParseExact:!0,weekdays:\"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi\".split(\"_\"),weekdaysShort:\"dim._lun._mar._mer._jeu._ven._sam.\".split(\"_\"),weekdaysMin:\"Di_Lu_Ma_Me_Je_Ve_Sa\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Aujourd’hui à] LT\",nextDay:\"[Demain à] LT\",nextWeek:\"dddd [à] LT\",lastDay:\"[Hier à] LT\",lastWeek:\"dddd [dernier à] LT\",sameElse:\"L\"},relativeTime:{future:\"dans %s\",past:\"il y a %s\",s:\"quelques secondes\",m:\"une minute\",mm:\"%d minutes\",h:\"une heure\",hh:\"%d heures\",d:\"un jour\",dd:\"%d jours\",M:\"un mois\",MM:\"%d mois\",y:\"un an\",yy:\"%d ans\"},dayOfMonthOrdinalParse:/\\d{1,2}(er|e)/,ordinal:function(a,b){switch(b){default:case\"M\":case\"Q\":case\"D\":case\"DDD\":case\"d\":return a+(1===a?\"er\":\"e\");case\"w\":case\"W\":return a+(1===a?\"re\":\"e\")}},week:{dow:1,doy:4}}),\n//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\na.defineLocale(\"fr\",{months:\"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre\".split(\"_\"),monthsShort:\"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.\".split(\"_\"),monthsParseExact:!0,weekdays:\"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi\".split(\"_\"),weekdaysShort:\"dim._lun._mar._mer._jeu._ven._sam.\".split(\"_\"),weekdaysMin:\"Di_Lu_Ma_Me_Je_Ve_Sa\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Aujourd’hui à] LT\",nextDay:\"[Demain à] LT\",nextWeek:\"dddd [à] LT\",lastDay:\"[Hier à] LT\",lastWeek:\"dddd [dernier à] LT\",sameElse:\"L\"},relativeTime:{future:\"dans %s\",past:\"il y a %s\",s:\"quelques secondes\",m:\"une minute\",mm:\"%d minutes\",h:\"une heure\",hh:\"%d heures\",d:\"un jour\",dd:\"%d jours\",M:\"un mois\",MM:\"%d mois\",y:\"un an\",yy:\"%d ans\"},dayOfMonthOrdinalParse:/\\d{1,2}(er|)/,ordinal:function(a,b){switch(b){case\"D\":return a+(1===a?\"er\":\"\");default:case\"M\":case\"Q\":case\"DDD\":case\"d\":return a+(1===a?\"er\":\"e\");case\"w\":case\"W\":return a+(1===a?\"re\":\"e\")}},week:{dow:1,doy:4}});\n//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\nvar _g=\"jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.\".split(\"_\"),ah=\"jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des\".split(\"_\");a.defineLocale(\"fy\",{months:\"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber\".split(\"_\"),monthsShort:function(a,b){return a?/-MMM-/.test(b)?ah[a.month()]:_g[a.month()]:_g},monthsParseExact:!0,weekdays:\"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon\".split(\"_\"),weekdaysShort:\"si._mo._ti._wo._to._fr._so.\".split(\"_\"),weekdaysMin:\"Si_Mo_Ti_Wo_To_Fr_So\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD-MM-YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[hjoed om] LT\",nextDay:\"[moarn om] LT\",nextWeek:\"dddd [om] LT\",lastDay:\"[juster om] LT\",lastWeek:\"[ôfrûne] dddd [om] LT\",sameElse:\"L\"},relativeTime:{future:\"oer %s\",past:\"%s lyn\",s:\"in pear sekonden\",m:\"ien minút\",mm:\"%d minuten\",h:\"ien oere\",hh:\"%d oeren\",d:\"ien dei\",dd:\"%d dagen\",M:\"ien moanne\",MM:\"%d moannen\",y:\"ien jier\",yy:\"%d jierren\"},dayOfMonthOrdinalParse:/\\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?\"ste\":\"de\")},week:{dow:1,doy:4}});\n//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\nvar bh=[\"Am Faoilleach\",\"An Gearran\",\"Am Màrt\",\"An Giblean\",\"An Cèitean\",\"An t-Ògmhios\",\"An t-Iuchar\",\"An Lùnastal\",\"An t-Sultain\",\"An Dàmhair\",\"An t-Samhain\",\"An Dùbhlachd\"],ch=[\"Faoi\",\"Gear\",\"Màrt\",\"Gibl\",\"Cèit\",\"Ògmh\",\"Iuch\",\"Lùn\",\"Sult\",\"Dàmh\",\"Samh\",\"Dùbh\"],dh=[\"Didòmhnaich\",\"Diluain\",\"Dimàirt\",\"Diciadain\",\"Diardaoin\",\"Dihaoine\",\"Disathairne\"],eh=[\"Did\",\"Dil\",\"Dim\",\"Dic\",\"Dia\",\"Dih\",\"Dis\"],fh=[\"Dò\",\"Lu\",\"Mà\",\"Ci\",\"Ar\",\"Ha\",\"Sa\"];a.defineLocale(\"gd\",{months:bh,monthsShort:ch,monthsParseExact:!0,weekdays:dh,weekdaysShort:eh,weekdaysMin:fh,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[An-diugh aig] LT\",nextDay:\"[A-màireach aig] LT\",nextWeek:\"dddd [aig] LT\",lastDay:\"[An-dè aig] LT\",lastWeek:\"dddd [seo chaidh] [aig] LT\",sameElse:\"L\"},relativeTime:{future:\"ann an %s\",past:\"bho chionn %s\",s:\"beagan diogan\",m:\"mionaid\",mm:\"%d mionaidean\",h:\"uair\",hh:\"%d uairean\",d:\"latha\",dd:\"%d latha\",M:\"mìos\",MM:\"%d mìosan\",y:\"bliadhna\",yy:\"%d bliadhna\"},dayOfMonthOrdinalParse:/\\d{1,2}(d|na|mh)/,ordinal:function(a){var b=1===a?\"d\":a%10===2?\"na\":\"mh\";return a+b},week:{dow:1,doy:4}}),\n//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\na.defineLocale(\"gl\",{months:\"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro\".split(\"_\"),monthsShort:\"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.\".split(\"_\"),monthsParseExact:!0,weekdays:\"domingo_luns_martes_mércores_xoves_venres_sábado\".split(\"_\"),weekdaysShort:\"dom._lun._mar._mér._xov._ven._sáb.\".split(\"_\"),weekdaysMin:\"do_lu_ma_mé_xo_ve_sá\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D [de] MMMM [de] YYYY\",LLL:\"D [de] MMMM [de] YYYY H:mm\",LLLL:\"dddd, D [de] MMMM [de] YYYY H:mm\"},calendar:{sameDay:function(){return\"[hoxe \"+(1!==this.hours()?\"ás\":\"á\")+\"] LT\"},nextDay:function(){return\"[mañá \"+(1!==this.hours()?\"ás\":\"á\")+\"] LT\"},nextWeek:function(){return\"dddd [\"+(1!==this.hours()?\"ás\":\"a\")+\"] LT\"},lastDay:function(){return\"[onte \"+(1!==this.hours()?\"á\":\"a\")+\"] LT\"},lastWeek:function(){return\"[o] dddd [pasado \"+(1!==this.hours()?\"ás\":\"a\")+\"] LT\"},sameElse:\"L\"},relativeTime:{future:function(a){return 0===a.indexOf(\"un\")?\"n\"+a:\"en \"+a},past:\"hai %s\",s:\"uns segundos\",m:\"un minuto\",mm:\"%d minutos\",h:\"unha hora\",hh:\"%d horas\",d:\"un día\",dd:\"%d días\",M:\"un mes\",MM:\"%d meses\",y:\"un ano\",yy:\"%d anos\"},dayOfMonthOrdinalParse:/\\d{1,2}º/,ordinal:\"%dº\",week:{dow:1,doy:4}}),a.defineLocale(\"gom-latn\",{months:\"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr\".split(\"_\"),monthsShort:\"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.\".split(\"_\"),monthsParseExact:!0,weekdays:\"Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son'var\".split(\"_\"),weekdaysShort:\"Ait._Som._Mon._Bud._Bre._Suk._Son.\".split(\"_\"),weekdaysMin:\"Ai_Sm_Mo_Bu_Br_Su_Sn\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"A h:mm [vazta]\",LTS:\"A h:mm:ss [vazta]\",L:\"DD-MM-YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY A h:mm [vazta]\",LLLL:\"dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]\",llll:\"ddd, D MMM YYYY, A h:mm [vazta]\"},calendar:{sameDay:\"[Aiz] LT\",nextDay:\"[Faleam] LT\",nextWeek:\"[Ieta to] dddd[,] LT\",lastDay:\"[Kal] LT\",lastWeek:\"[Fatlo] dddd[,] LT\",sameElse:\"L\"},relativeTime:{future:\"%s\",past:\"%s adim\",s:Id,m:Id,mm:Id,h:Id,hh:Id,d:Id,dd:Id,M:Id,MM:Id,y:Id,yy:Id},dayOfMonthOrdinalParse:/\\d{1,2}(er)/,ordinal:function(a,b){switch(b){case\"D\":return a+\"er\";default:case\"M\":case\"Q\":case\"DDD\":case\"d\":case\"w\":case\"W\":return a}},week:{dow:1,doy:4},meridiemParse:/rati|sokalli|donparam|sanje/,meridiemHour:function(a,b){return 12===a&&(a=0),\"rati\"===b?a<4?a:a+12:\"sokalli\"===b?a:\"donparam\"===b?a>12?a:a+12:\"sanje\"===b?a+12:void 0},meridiem:function(a,b,c){return a<4?\"rati\":a<12?\"sokalli\":a<16?\"donparam\":a<20?\"sanje\":\"rati\"}}),\n//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\na.defineLocale(\"he\",{months:\"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר\".split(\"_\"),monthsShort:\"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳\".split(\"_\"),weekdays:\"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת\".split(\"_\"),weekdaysShort:\"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳\".split(\"_\"),weekdaysMin:\"א_ב_ג_ד_ה_ו_ש\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D [ב]MMMM YYYY\",LLL:\"D [ב]MMMM YYYY HH:mm\",LLLL:\"dddd, D [ב]MMMM YYYY HH:mm\",l:\"D/M/YYYY\",ll:\"D MMM YYYY\",lll:\"D MMM YYYY HH:mm\",llll:\"ddd, D MMM YYYY HH:mm\"},calendar:{sameDay:\"[היום ב־]LT\",nextDay:\"[מחר ב־]LT\",nextWeek:\"dddd [בשעה] LT\",lastDay:\"[אתמול ב־]LT\",lastWeek:\"[ביום] dddd [האחרון בשעה] LT\",sameElse:\"L\"},relativeTime:{future:\"בעוד %s\",past:\"לפני %s\",s:\"מספר שניות\",m:\"דקה\",mm:\"%d דקות\",h:\"שעה\",hh:function(a){return 2===a?\"שעתיים\":a+\" שעות\"},d:\"יום\",dd:function(a){return 2===a?\"יומיים\":a+\" ימים\"},M:\"חודש\",MM:function(a){return 2===a?\"חודשיים\":a+\" חודשים\"},y:\"שנה\",yy:function(a){return 2===a?\"שנתיים\":a%10===0&&10!==a?a+\" שנה\":a+\" שנים\"}},meridiemParse:/אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(a){return/^(אחה\"צ|אחרי הצהריים|בערב)$/.test(a)},meridiem:function(a,b,c){return a<5?\"לפנות בוקר\":a<10?\"בבוקר\":a<12?c?'לפנה\"צ':\"לפני הצהריים\":a<18?c?'אחה\"צ':\"אחרי הצהריים\":\"בערב\"}});\n//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\nvar gh={1:\"१\",2:\"२\",3:\"३\",4:\"४\",5:\"५\",6:\"६\",7:\"७\",8:\"८\",9:\"९\",0:\"०\"},hh={\"१\":\"1\",\"२\":\"2\",\"३\":\"3\",\"४\":\"4\",\"५\":\"5\",\"६\":\"6\",\"७\":\"7\",\"८\":\"8\",\"९\":\"9\",\"०\":\"0\"};a.defineLocale(\"hi\",{months:\"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर\".split(\"_\"),monthsShort:\"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.\".split(\"_\"),monthsParseExact:!0,weekdays:\"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार\".split(\"_\"),weekdaysShort:\"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि\".split(\"_\"),weekdaysMin:\"र_सो_मं_बु_गु_शु_श\".split(\"_\"),longDateFormat:{LT:\"A h:mm बजे\",LTS:\"A h:mm:ss बजे\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY, A h:mm बजे\",LLLL:\"dddd, D MMMM YYYY, A h:mm बजे\"},calendar:{sameDay:\"[आज] LT\",nextDay:\"[कल] LT\",nextWeek:\"dddd, LT\",lastDay:\"[कल] LT\",lastWeek:\"[पिछले] dddd, LT\",sameElse:\"L\"},relativeTime:{future:\"%s में\",past:\"%s पहले\",s:\"कुछ ही क्षण\",m:\"एक मिनट\",mm:\"%d मिनट\",h:\"एक घंटा\",hh:\"%d घंटे\",d:\"एक दिन\",dd:\"%d दिन\",M:\"एक महीने\",MM:\"%d महीने\",y:\"एक वर्ष\",yy:\"%d वर्ष\"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return hh[a]})},postformat:function(a){return a.replace(/\\d/g,function(a){return gh[a]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(a,b){return 12===a&&(a=0),\"रात\"===b?a<4?a:a+12:\"सुबह\"===b?a:\"दोपहर\"===b?a>=10?a:a+12:\"शाम\"===b?a+12:void 0},meridiem:function(a,b,c){return a<4?\"रात\":a<10?\"सुबह\":a<17?\"दोपहर\":a<20?\"शाम\":\"रात\"},week:{dow:0,doy:6}}),a.defineLocale(\"hr\",{months:{format:\"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca\".split(\"_\"),standalone:\"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac\".split(\"_\")},monthsShort:\"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.\".split(\"_\"),monthsParseExact:!0,weekdays:\"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota\".split(\"_\"),weekdaysShort:\"ned._pon._uto._sri._čet._pet._sub.\".split(\"_\"),weekdaysMin:\"ne_po_ut_sr_če_pe_su\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd, D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[danas u] LT\",nextDay:\"[sutra u] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[u] [nedjelju] [u] LT\";case 3:return\"[u] [srijedu] [u] LT\";case 6:return\"[u] [subotu] [u] LT\";case 1:case 2:case 4:case 5:return\"[u] dddd [u] LT\"}},lastDay:\"[jučer u] LT\",lastWeek:function(){switch(this.day()){case 0:case 3:return\"[prošlu] dddd [u] LT\";case 6:return\"[prošle] [subote] [u] LT\";case 1:case 2:case 4:case 5:return\"[prošli] dddd [u] LT\"}},sameElse:\"L\"},relativeTime:{future:\"za %s\",past:\"prije %s\",s:\"par sekundi\",m:Jd,mm:Jd,h:Jd,hh:Jd,d:\"dan\",dd:Jd,M:\"mjesec\",MM:Jd,y:\"godinu\",yy:Jd},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}});\n//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\nvar ih=\"vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton\".split(\" \");a.defineLocale(\"hu\",{months:\"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december\".split(\"_\"),monthsShort:\"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec\".split(\"_\"),weekdays:\"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat\".split(\"_\"),weekdaysShort:\"vas_hét_kedd_sze_csüt_pén_szo\".split(\"_\"),weekdaysMin:\"v_h_k_sze_cs_p_szo\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"YYYY.MM.DD.\",LL:\"YYYY. MMMM D.\",LLL:\"YYYY. MMMM D. H:mm\",LLLL:\"YYYY. MMMM D., dddd H:mm\"},meridiemParse:/de|du/i,isPM:function(a){return\"u\"===a.charAt(1).toLowerCase()},meridiem:function(a,b,c){return a<12?c===!0?\"de\":\"DE\":c===!0?\"du\":\"DU\"},calendar:{sameDay:\"[ma] LT[-kor]\",nextDay:\"[holnap] LT[-kor]\",nextWeek:function(){return Ld.call(this,!0)},lastDay:\"[tegnap] LT[-kor]\",lastWeek:function(){return Ld.call(this,!1)},sameElse:\"L\"},relativeTime:{future:\"%s múlva\",past:\"%s\",s:Kd,m:Kd,mm:Kd,h:Kd,hh:Kd,d:Kd,dd:Kd,M:Kd,MM:Kd,y:Kd,yy:Kd},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}}),\n//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\na.defineLocale(\"hy-am\",{months:{format:\"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի\".split(\"_\"),standalone:\"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր\".split(\"_\")},monthsShort:\"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ\".split(\"_\"),weekdays:\"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ\".split(\"_\"),weekdaysShort:\"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ\".split(\"_\"),weekdaysMin:\"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY թ.\",LLL:\"D MMMM YYYY թ., HH:mm\",LLLL:\"dddd, D MMMM YYYY թ., HH:mm\"},calendar:{sameDay:\"[այսօր] LT\",nextDay:\"[վաղը] LT\",lastDay:\"[երեկ] LT\",nextWeek:function(){return\"dddd [օրը ժամը] LT\"},lastWeek:function(){return\"[անցած] dddd [օրը ժամը] LT\"},sameElse:\"L\"},relativeTime:{future:\"%s հետո\",past:\"%s առաջ\",s:\"մի քանի վայրկյան\",m:\"րոպե\",mm:\"%d րոպե\",h:\"ժամ\",hh:\"%d ժամ\",d:\"օր\",dd:\"%d օր\",M:\"ամիս\",MM:\"%d ամիս\",y:\"տարի\",yy:\"%d տարի\"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(a){return/^(ցերեկվա|երեկոյան)$/.test(a)},meridiem:function(a){return a<4?\"գիշերվա\":a<12?\"առավոտվա\":a<17?\"ցերեկվա\":\"երեկոյան\"},dayOfMonthOrdinalParse:/\\d{1,2}|\\d{1,2}-(ին|րդ)/,ordinal:function(a,b){switch(b){case\"DDD\":case\"w\":case\"W\":case\"DDDo\":return 1===a?a+\"-ին\":a+\"-րդ\";default:return a}},week:{dow:1,doy:7}}),\n//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\na.defineLocale(\"id\",{months:\"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des\".split(\"_\"),weekdays:\"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu\".split(\"_\"),weekdaysShort:\"Min_Sen_Sel_Rab_Kam_Jum_Sab\".split(\"_\"),weekdaysMin:\"Mg_Sn_Sl_Rb_Km_Jm_Sb\".split(\"_\"),longDateFormat:{LT:\"HH.mm\",LTS:\"HH.mm.ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY [pukul] HH.mm\",LLLL:\"dddd, D MMMM YYYY [pukul] HH.mm\"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(a,b){return 12===a&&(a=0),\"pagi\"===b?a:\"siang\"===b?a>=11?a:a+12:\"sore\"===b||\"malam\"===b?a+12:void 0},meridiem:function(a,b,c){return a<11?\"pagi\":a<15?\"siang\":a<19?\"sore\":\"malam\"},calendar:{sameDay:\"[Hari ini pukul] LT\",nextDay:\"[Besok pukul] LT\",nextWeek:\"dddd [pukul] LT\",lastDay:\"[Kemarin pukul] LT\",lastWeek:\"dddd [lalu pukul] LT\",sameElse:\"L\"},relativeTime:{future:\"dalam %s\",past:\"%s yang lalu\",s:\"beberapa detik\",m:\"semenit\",mm:\"%d menit\",h:\"sejam\",hh:\"%d jam\",d:\"sehari\",dd:\"%d hari\",M:\"sebulan\",MM:\"%d bulan\",y:\"setahun\",yy:\"%d tahun\"},week:{dow:1,doy:7}}),a.defineLocale(\"is\",{months:\"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des\".split(\"_\"),weekdays:\"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur\".split(\"_\"),weekdaysShort:\"sun_mán_þri_mið_fim_fös_lau\".split(\"_\"),weekdaysMin:\"Su_Má_Þr_Mi_Fi_Fö_La\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY [kl.] H:mm\",LLLL:\"dddd, D. MMMM YYYY [kl.] H:mm\"},calendar:{sameDay:\"[í dag kl.] LT\",nextDay:\"[á morgun kl.] LT\",nextWeek:\"dddd [kl.] LT\",lastDay:\"[í gær kl.] LT\",lastWeek:\"[síðasta] dddd [kl.] LT\",sameElse:\"L\"},relativeTime:{future:\"eftir %s\",past:\"fyrir %s síðan\",s:Nd,m:Nd,mm:Nd,h:\"klukkustund\",hh:Nd,d:Nd,dd:Nd,M:Nd,MM:Nd,y:Nd,yy:Nd},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}}),\n//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\na.defineLocale(\"it\",{months:\"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre\".split(\"_\"),monthsShort:\"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic\".split(\"_\"),weekdays:\"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato\".split(\"_\"),weekdaysShort:\"dom_lun_mar_mer_gio_ven_sab\".split(\"_\"),weekdaysMin:\"do_lu_ma_me_gi_ve_sa\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Oggi alle] LT\",nextDay:\"[Domani alle] LT\",nextWeek:\"dddd [alle] LT\",lastDay:\"[Ieri alle] LT\",lastWeek:function(){switch(this.day()){case 0:return\"[la scorsa] dddd [alle] LT\";default:return\"[lo scorso] dddd [alle] LT\"}},sameElse:\"L\"},relativeTime:{future:function(a){return(/^[0-9].+$/.test(a)?\"tra\":\"in\")+\" \"+a},past:\"%s fa\",s:\"alcuni secondi\",m:\"un minuto\",mm:\"%d minuti\",h:\"un'ora\",hh:\"%d ore\",d:\"un giorno\",dd:\"%d giorni\",M:\"un mese\",MM:\"%d mesi\",y:\"un anno\",yy:\"%d anni\"},dayOfMonthOrdinalParse:/\\d{1,2}º/,ordinal:\"%dº\",week:{dow:1,doy:4}}),\n//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\na.defineLocale(\"ja\",{months:\"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月\".split(\"_\"),monthsShort:\"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月\".split(\"_\"),weekdays:\"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日\".split(\"_\"),weekdaysShort:\"日_月_火_水_木_金_土\".split(\"_\"),weekdaysMin:\"日_月_火_水_木_金_土\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY/MM/DD\",LL:\"YYYY年M月D日\",LLL:\"YYYY年M月D日 HH:mm\",LLLL:\"YYYY年M月D日 HH:mm dddd\",l:\"YYYY/MM/DD\",ll:\"YYYY年M月D日\",lll:\"YYYY年M月D日 HH:mm\",llll:\"YYYY年M月D日 HH:mm dddd\"},meridiemParse:/午前|午後/i,isPM:function(a){return\"午後\"===a},meridiem:function(a,b,c){return a<12?\"午前\":\"午後\"},calendar:{sameDay:\"[今日] LT\",nextDay:\"[明日] LT\",nextWeek:\"[来週]dddd LT\",lastDay:\"[昨日] LT\",lastWeek:\"[前週]dddd LT\",sameElse:\"L\"},dayOfMonthOrdinalParse:/\\d{1,2}日/,ordinal:function(a,b){switch(b){case\"d\":case\"D\":case\"DDD\":return a+\"日\";default:return a}},relativeTime:{future:\"%s後\",past:\"%s前\",s:\"数秒\",m:\"1分\",mm:\"%d分\",h:\"1時間\",hh:\"%d時間\",d:\"1日\",dd:\"%d日\",M:\"1ヶ月\",MM:\"%dヶ月\",y:\"1年\",yy:\"%d年\"}}),\n//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\na.defineLocale(\"jv\",{months:\"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember\".split(\"_\"),monthsShort:\"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des\".split(\"_\"),weekdays:\"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu\".split(\"_\"),weekdaysShort:\"Min_Sen_Sel_Reb_Kem_Jem_Sep\".split(\"_\"),weekdaysMin:\"Mg_Sn_Sl_Rb_Km_Jm_Sp\".split(\"_\"),longDateFormat:{LT:\"HH.mm\",LTS:\"HH.mm.ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY [pukul] HH.mm\",LLLL:\"dddd, D MMMM YYYY [pukul] HH.mm\"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(a,b){return 12===a&&(a=0),\"enjing\"===b?a:\"siyang\"===b?a>=11?a:a+12:\"sonten\"===b||\"ndalu\"===b?a+12:void 0},meridiem:function(a,b,c){return a<11?\"enjing\":a<15?\"siyang\":a<19?\"sonten\":\"ndalu\"},calendar:{sameDay:\"[Dinten puniko pukul] LT\",nextDay:\"[Mbenjang pukul] LT\",nextWeek:\"dddd [pukul] LT\",lastDay:\"[Kala wingi pukul] LT\",lastWeek:\"dddd [kepengker pukul] LT\",sameElse:\"L\"},relativeTime:{future:\"wonten ing %s\",past:\"%s ingkang kepengker\",s:\"sawetawis detik\",m:\"setunggal menit\",mm:\"%d menit\",h:\"setunggal jam\",hh:\"%d jam\",d:\"sedinten\",dd:\"%d dinten\",M:\"sewulan\",MM:\"%d wulan\",y:\"setaun\",yy:\"%d taun\"},week:{dow:1,doy:7}}),\n//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/irakli-janiashvili\na.defineLocale(\"ka\",{months:{standalone:\"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი\".split(\"_\"),format:\"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს\".split(\"_\")},monthsShort:\"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ\".split(\"_\"),weekdays:{standalone:\"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი\".split(\"_\"),format:\"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს\".split(\"_\"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:\"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ\".split(\"_\"),weekdaysMin:\"კვ_ორ_სა_ოთ_ხუ_პა_შა\".split(\"_\"),longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY h:mm A\",LLLL:\"dddd, D MMMM YYYY h:mm A\"},calendar:{sameDay:\"[დღეს] LT[-ზე]\",nextDay:\"[ხვალ] LT[-ზე]\",lastDay:\"[გუშინ] LT[-ზე]\",nextWeek:\"[შემდეგ] dddd LT[-ზე]\",lastWeek:\"[წინა] dddd LT-ზე\",sameElse:\"L\"},relativeTime:{future:function(a){return/(წამი|წუთი|საათი|წელი)/.test(a)?a.replace(/ი$/,\"ში\"):a+\"ში\"},past:function(a){return/(წამი|წუთი|საათი|დღე|თვე)/.test(a)?a.replace(/(ი|ე)$/,\"ის უკან\"):/წელი/.test(a)?a.replace(/წელი$/,\"წლის უკან\"):void 0},s:\"რამდენიმე წამი\",m:\"წუთი\",mm:\"%d წუთი\",h:\"საათი\",hh:\"%d საათი\",d:\"დღე\",dd:\"%d დღე\",M:\"თვე\",MM:\"%d თვე\",y:\"წელი\",yy:\"%d წელი\"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,ordinal:function(a){return 0===a?a:1===a?a+\"-ლი\":a<20||a<=100&&a%20===0||a%100===0?\"მე-\"+a:a+\"-ე\"},week:{dow:1,doy:7}});\n//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\nvar jh={0:\"-ші\",1:\"-ші\",2:\"-ші\",3:\"-ші\",4:\"-ші\",5:\"-ші\",6:\"-шы\",7:\"-ші\",8:\"-ші\",9:\"-шы\",10:\"-шы\",20:\"-шы\",30:\"-шы\",40:\"-шы\",50:\"-ші\",60:\"-шы\",70:\"-ші\",80:\"-ші\",90:\"-шы\",100:\"-ші\"};a.defineLocale(\"kk\",{months:\"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан\".split(\"_\"),monthsShort:\"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел\".split(\"_\"),weekdays:\"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі\".split(\"_\"),weekdaysShort:\"жек_дүй_сей_сәр_бей_жұм_сен\".split(\"_\"),weekdaysMin:\"жк_дй_сй_ср_бй_жм_сн\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Бүгін сағат] LT\",nextDay:\"[Ертең сағат] LT\",nextWeek:\"dddd [сағат] LT\",lastDay:\"[Кеше сағат] LT\",lastWeek:\"[Өткен аптаның] dddd [сағат] LT\",sameElse:\"L\"},relativeTime:{future:\"%s ішінде\",past:\"%s бұрын\",s:\"бірнеше секунд\",m:\"бір минут\",mm:\"%d минут\",h:\"бір сағат\",hh:\"%d сағат\",d:\"бір күн\",dd:\"%d күн\",M:\"бір ай\",MM:\"%d ай\",y:\"бір жыл\",yy:\"%d жыл\"},dayOfMonthOrdinalParse:/\\d{1,2}-(ші|шы)/,ordinal:function(a){var b=a%10,c=a>=100?100:null;return a+(jh[a]||jh[b]||jh[c])},week:{dow:1,doy:7}}),\n//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\na.defineLocale(\"km\",{months:\"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ\".split(\"_\"),monthsShort:\"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ\".split(\"_\"),weekdays:\"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍\".split(\"_\"),weekdaysShort:\"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍\".split(\"_\"),weekdaysMin:\"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[ថ្ងៃនេះ ម៉ោង] LT\",nextDay:\"[ស្អែក ម៉ោង] LT\",nextWeek:\"dddd [ម៉ោង] LT\",lastDay:\"[ម្សិលមិញ ម៉ោង] LT\",lastWeek:\"dddd [សប្តាហ៍មុន] [ម៉ោង] LT\",sameElse:\"L\"},relativeTime:{future:\"%sទៀត\",past:\"%sមុន\",s:\"ប៉ុន្មានវិនាទី\",m:\"មួយនាទី\",mm:\"%d នាទី\",h:\"មួយម៉ោង\",hh:\"%d ម៉ោង\",d:\"មួយថ្ងៃ\",dd:\"%d ថ្ងៃ\",M:\"មួយខែ\",MM:\"%d ខែ\",y:\"មួយឆ្នាំ\",yy:\"%d ឆ្នាំ\"},week:{dow:1,doy:4}});\n//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\nvar kh={1:\"೧\",2:\"೨\",3:\"೩\",4:\"೪\",5:\"೫\",6:\"೬\",7:\"೭\",8:\"೮\",9:\"೯\",0:\"೦\"},lh={\"೧\":\"1\",\"೨\":\"2\",\"೩\":\"3\",\"೪\":\"4\",\"೫\":\"5\",\"೬\":\"6\",\"೭\":\"7\",\"೮\":\"8\",\"೯\":\"9\",\"೦\":\"0\"};a.defineLocale(\"kn\",{months:\"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್\".split(\"_\"),monthsShort:\"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬ_ಅಕ್ಟೋಬ_ನವೆಂಬ_ಡಿಸೆಂಬ\".split(\"_\"),monthsParseExact:!0,weekdays:\"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ\".split(\"_\"),weekdaysShort:\"ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ\".split(\"_\"),weekdaysMin:\"ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ\".split(\"_\"),longDateFormat:{LT:\"A h:mm\",LTS:\"A h:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY, A h:mm\",LLLL:\"dddd, D MMMM YYYY, A h:mm\"},calendar:{sameDay:\"[ಇಂದು] LT\",nextDay:\"[ನಾಳೆ] LT\",nextWeek:\"dddd, LT\",lastDay:\"[ನಿನ್ನೆ] LT\",lastWeek:\"[ಕೊನೆಯ] dddd, LT\",sameElse:\"L\"},relativeTime:{future:\"%s ನಂತರ\",past:\"%s ಹಿಂದೆ\",s:\"ಕೆಲವು ಕ್ಷಣಗಳು\",m:\"ಒಂದು ನಿಮಿಷ\",mm:\"%d ನಿಮಿಷ\",h:\"ಒಂದು ಗಂಟೆ\",hh:\"%d ಗಂಟೆ\",d:\"ಒಂದು ದಿನ\",dd:\"%d ದಿನ\",M:\"ಒಂದು ತಿಂಗಳು\",MM:\"%d ತಿಂಗಳು\",y:\"ಒಂದು ವರ್ಷ\",yy:\"%d ವರ್ಷ\"},preparse:function(a){return a.replace(/[೧೨೩೪೫೬೭೮೯೦]/g,function(a){return lh[a]})},postformat:function(a){return a.replace(/\\d/g,function(a){return kh[a]})},meridiemParse:/ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,meridiemHour:function(a,b){return 12===a&&(a=0),\"ರಾತ್ರಿ\"===b?a<4?a:a+12:\"ಬೆಳಿಗ್ಗೆ\"===b?a:\"ಮಧ್ಯಾಹ್ನ\"===b?a>=10?a:a+12:\"ಸಂಜೆ\"===b?a+12:void 0},meridiem:function(a,b,c){return a<4?\"ರಾತ್ರಿ\":a<10?\"ಬೆಳಿಗ್ಗೆ\":a<17?\"ಮಧ್ಯಾಹ್ನ\":a<20?\"ಸಂಜೆ\":\"ರಾತ್ರಿ\"},dayOfMonthOrdinalParse:/\\d{1,2}(ನೇ)/,ordinal:function(a){return a+\"ನೇ\"},week:{dow:0,doy:6}}),\n//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee <jeeeyul@gmail.com>\na.defineLocale(\"ko\",{months:\"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월\".split(\"_\"),monthsShort:\"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월\".split(\"_\"),weekdays:\"일요일_월요일_화요일_수요일_목요일_금요일_토요일\".split(\"_\"),weekdaysShort:\"일_월_화_수_목_금_토\".split(\"_\"),weekdaysMin:\"일_월_화_수_목_금_토\".split(\"_\"),longDateFormat:{LT:\"A h:mm\",LTS:\"A h:mm:ss\",L:\"YYYY.MM.DD\",LL:\"YYYY년 MMMM D일\",LLL:\"YYYY년 MMMM D일 A h:mm\",LLLL:\"YYYY년 MMMM D일 dddd A h:mm\",l:\"YYYY.MM.DD\",ll:\"YYYY년 MMMM D일\",lll:\"YYYY년 MMMM D일 A h:mm\",llll:\"YYYY년 MMMM D일 dddd A h:mm\"},calendar:{sameDay:\"오늘 LT\",nextDay:\"내일 LT\",nextWeek:\"dddd LT\",lastDay:\"어제 LT\",lastWeek:\"지난주 dddd LT\",sameElse:\"L\"},relativeTime:{future:\"%s 후\",past:\"%s 전\",s:\"몇 초\",ss:\"%d초\",m:\"1분\",mm:\"%d분\",h:\"한 시간\",hh:\"%d시간\",d:\"하루\",dd:\"%d일\",M:\"한 달\",MM:\"%d달\",y:\"일 년\",yy:\"%d년\"},dayOfMonthOrdinalParse:/\\d{1,2}일/,ordinal:\"%d일\",meridiemParse:/오전|오후/,isPM:function(a){return\"오후\"===a},meridiem:function(a,b,c){return a<12?\"오전\":\"오후\"}});\n//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\nvar mh={0:\"-чү\",1:\"-чи\",2:\"-чи\",3:\"-чү\",4:\"-чү\",5:\"-чи\",6:\"-чы\",7:\"-чи\",8:\"-чи\",9:\"-чу\",10:\"-чу\",20:\"-чы\",30:\"-чу\",40:\"-чы\",50:\"-чү\",60:\"-чы\",70:\"-чи\",80:\"-чи\",90:\"-чу\",100:\"-чү\"};a.defineLocale(\"ky\",{months:\"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь\".split(\"_\"),monthsShort:\"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек\".split(\"_\"),weekdays:\"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби\".split(\"_\"),weekdaysShort:\"Жек_Дүй_Шей_Шар_Бей_Жум_Ише\".split(\"_\"),weekdaysMin:\"Жк_Дй_Шй_Шр_Бй_Жм_Иш\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Бүгүн саат] LT\",nextDay:\"[Эртең саат] LT\",nextWeek:\"dddd [саат] LT\",lastDay:\"[Кече саат] LT\",lastWeek:\"[Өткен аптанын] dddd [күнү] [саат] LT\",sameElse:\"L\"},relativeTime:{future:\"%s ичинде\",past:\"%s мурун\",s:\"бирнече секунд\",m:\"бир мүнөт\",mm:\"%d мүнөт\",h:\"бир саат\",hh:\"%d саат\",d:\"бир күн\",dd:\"%d күн\",M:\"бир ай\",MM:\"%d ай\",y:\"бир жыл\",yy:\"%d жыл\"},dayOfMonthOrdinalParse:/\\d{1,2}-(чи|чы|чү|чу)/,ordinal:function(a){var b=a%10,c=a>=100?100:null;return a+(mh[a]||mh[b]||mh[c])},week:{dow:1,doy:7}}),a.defineLocale(\"lb\",{months:\"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember\".split(\"_\"),monthsShort:\"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.\".split(\"_\"),monthsParseExact:!0,weekdays:\"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg\".split(\"_\"),weekdaysShort:\"So._Mé._Dë._Më._Do._Fr._Sa.\".split(\"_\"),weekdaysMin:\"So_Mé_Dë_Më_Do_Fr_Sa\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm [Auer]\",LTS:\"H:mm:ss [Auer]\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm [Auer]\",LLLL:\"dddd, D. MMMM YYYY H:mm [Auer]\"},calendar:{sameDay:\"[Haut um] LT\",sameElse:\"L\",nextDay:\"[Muer um] LT\",nextWeek:\"dddd [um] LT\",lastDay:\"[Gëschter um] LT\",lastWeek:function(){switch(this.day()){case 2:case 4:return\"[Leschten] dddd [um] LT\";default:return\"[Leschte] dddd [um] LT\"}}},relativeTime:{future:Pd,past:Qd,s:\"e puer Sekonnen\",m:Od,mm:\"%d Minutten\",h:Od,hh:\"%d Stonnen\",d:Od,dd:\"%d Deeg\",M:Od,MM:\"%d Méint\",y:Od,yy:\"%d Joer\"},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}}),\n//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\na.defineLocale(\"lo\",{months:\"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ\".split(\"_\"),monthsShort:\"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ\".split(\"_\"),weekdays:\"ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ\".split(\"_\"),weekdaysShort:\"ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ\".split(\"_\"),weekdaysMin:\"ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"ວັນdddd D MMMM YYYY HH:mm\"},meridiemParse:/ຕອນເຊົ້າ|ຕອນແລງ/,isPM:function(a){return\"ຕອນແລງ\"===a},meridiem:function(a,b,c){return a<12?\"ຕອນເຊົ້າ\":\"ຕອນແລງ\"},calendar:{sameDay:\"[ມື້ນີ້ເວລາ] LT\",nextDay:\"[ມື້ອື່ນເວລາ] LT\",nextWeek:\"[ວັນ]dddd[ໜ້າເວລາ] LT\",lastDay:\"[ມື້ວານນີ້ເວລາ] LT\",lastWeek:\"[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT\",sameElse:\"L\"},relativeTime:{future:\"ອີກ %s\",past:\"%sຜ່ານມາ\",s:\"ບໍ່ເທົ່າໃດວິນາທີ\",m:\"1 ນາທີ\",mm:\"%d ນາທີ\",h:\"1 ຊົ່ວໂມງ\",hh:\"%d ຊົ່ວໂມງ\",d:\"1 ມື້\",dd:\"%d ມື້\",M:\"1 ເດືອນ\",MM:\"%d ເດືອນ\",y:\"1 ປີ\",yy:\"%d ປີ\"},dayOfMonthOrdinalParse:/(ທີ່)\\d{1,2}/,ordinal:function(a){return\"ທີ່\"+a}});\n//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\nvar nh={m:\"minutė_minutės_minutę\",mm:\"minutės_minučių_minutes\",h:\"valanda_valandos_valandą\",hh:\"valandos_valandų_valandas\",d:\"diena_dienos_dieną\",dd:\"dienos_dienų_dienas\",M:\"mėnuo_mėnesio_mėnesį\",MM:\"mėnesiai_mėnesių_mėnesius\",y:\"metai_metų_metus\",yy:\"metai_metų_metus\"};a.defineLocale(\"lt\",{months:{format:\"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio\".split(\"_\"),standalone:\"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis\".split(\"_\"),isFormat:/D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/},monthsShort:\"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd\".split(\"_\"),weekdays:{format:\"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį\".split(\"_\"),standalone:\"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis\".split(\"_\"),isFormat:/dddd HH:mm/},weekdaysShort:\"Sek_Pir_Ant_Tre_Ket_Pen_Šeš\".split(\"_\"),weekdaysMin:\"S_P_A_T_K_Pn_Š\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY-MM-DD\",LL:\"YYYY [m.] MMMM D [d.]\",LLL:\"YYYY [m.] MMMM D [d.], HH:mm [val.]\",LLLL:\"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]\",l:\"YYYY-MM-DD\",ll:\"YYYY [m.] MMMM D [d.]\",lll:\"YYYY [m.] MMMM D [d.], HH:mm [val.]\",llll:\"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]\"},calendar:{sameDay:\"[Šiandien] LT\",nextDay:\"[Rytoj] LT\",nextWeek:\"dddd LT\",lastDay:\"[Vakar] LT\",lastWeek:\"[Praėjusį] dddd LT\",sameElse:\"L\"},relativeTime:{future:\"po %s\",past:\"prieš %s\",s:Sd,m:Td,mm:Wd,h:Td,hh:Wd,d:Td,dd:Wd,M:Td,MM:Wd,y:Td,yy:Wd},dayOfMonthOrdinalParse:/\\d{1,2}-oji/,ordinal:function(a){return a+\"-oji\"},week:{dow:1,doy:4}});\n//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\nvar oh={m:\"minūtes_minūtēm_minūte_minūtes\".split(\"_\"),mm:\"minūtes_minūtēm_minūte_minūtes\".split(\"_\"),h:\"stundas_stundām_stunda_stundas\".split(\"_\"),hh:\"stundas_stundām_stunda_stundas\".split(\"_\"),d:\"dienas_dienām_diena_dienas\".split(\"_\"),dd:\"dienas_dienām_diena_dienas\".split(\"_\"),M:\"mēneša_mēnešiem_mēnesis_mēneši\".split(\"_\"),MM:\"mēneša_mēnešiem_mēnesis_mēneši\".split(\"_\"),y:\"gada_gadiem_gads_gadi\".split(\"_\"),yy:\"gada_gadiem_gads_gadi\".split(\"_\")};a.defineLocale(\"lv\",{months:\"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec\".split(\"_\"),weekdays:\"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena\".split(\"_\"),weekdaysShort:\"Sv_P_O_T_C_Pk_S\".split(\"_\"),weekdaysMin:\"Sv_P_O_T_C_Pk_S\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY.\",LL:\"YYYY. [gada] D. MMMM\",LLL:\"YYYY. [gada] D. MMMM, HH:mm\",LLLL:\"YYYY. [gada] D. MMMM, dddd, HH:mm\"},calendar:{sameDay:\"[Šodien pulksten] LT\",nextDay:\"[Rīt pulksten] LT\",nextWeek:\"dddd [pulksten] LT\",lastDay:\"[Vakar pulksten] LT\",lastWeek:\"[Pagājušā] dddd [pulksten] LT\",sameElse:\"L\"},relativeTime:{future:\"pēc %s\",past:\"pirms %s\",s:$d,m:Zd,mm:Yd,h:Zd,hh:Yd,d:Zd,dd:Yd,M:Zd,MM:Yd,y:Zd,yy:Yd},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}});\n//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač <miodrag@restartit.me> : https://github.com/miodragnikac\nvar ph={words:{m:[\"jedan minut\",\"jednog minuta\"],mm:[\"minut\",\"minuta\",\"minuta\"],h:[\"jedan sat\",\"jednog sata\"],hh:[\"sat\",\"sata\",\"sati\"],dd:[\"dan\",\"dana\",\"dana\"],MM:[\"mjesec\",\"mjeseca\",\"mjeseci\"],yy:[\"godina\",\"godine\",\"godina\"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&a<=4?b[1]:b[2]},translate:function(a,b,c){var d=ph.words[c];return 1===c.length?b?d[0]:d[1]:a+\" \"+ph.correctGrammaticalCase(a,d)}};a.defineLocale(\"me\",{months:\"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar\".split(\"_\"),monthsShort:\"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.\".split(\"_\"),monthsParseExact:!0,weekdays:\"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota\".split(\"_\"),weekdaysShort:\"ned._pon._uto._sri._čet._pet._sub.\".split(\"_\"),weekdaysMin:\"ne_po_ut_sr_če_pe_su\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd, D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[danas u] LT\",nextDay:\"[sjutra u] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[u] [nedjelju] [u] LT\";case 3:return\"[u] [srijedu] [u] LT\";case 6:return\"[u] [subotu] [u] LT\";case 1:case 2:case 4:case 5:return\"[u] dddd [u] LT\"}},lastDay:\"[juče u] LT\",lastWeek:function(){var a=[\"[prošle] [nedjelje] [u] LT\",\"[prošlog] [ponedjeljka] [u] LT\",\"[prošlog] [utorka] [u] LT\",\"[prošle] [srijede] [u] LT\",\"[prošlog] [četvrtka] [u] LT\",\"[prošlog] [petka] [u] LT\",\"[prošle] [subote] [u] LT\"];return a[this.day()]},sameElse:\"L\"},relativeTime:{future:\"za %s\",past:\"prije %s\",s:\"nekoliko sekundi\",m:ph.translate,mm:ph.translate,h:ph.translate,hh:ph.translate,d:\"dan\",dd:ph.translate,M:\"mjesec\",MM:ph.translate,y:\"godinu\",yy:ph.translate},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}}),\n//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan <robbiecloset@gmail.com> : https://github.com/johnideal\na.defineLocale(\"mi\",{months:\"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea\".split(\"_\"),monthsShort:\"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki\".split(\"_\"),monthsRegex:/(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,monthsShortRegex:/(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,weekdays:\"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei\".split(\"_\"),weekdaysShort:\"Ta_Ma_Tū_We_Tāi_Pa_Hā\".split(\"_\"),weekdaysMin:\"Ta_Ma_Tū_We_Tāi_Pa_Hā\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY [i] HH:mm\",LLLL:\"dddd, D MMMM YYYY [i] HH:mm\"},calendar:{sameDay:\"[i teie mahana, i] LT\",nextDay:\"[apopo i] LT\",nextWeek:\"dddd [i] LT\",lastDay:\"[inanahi i] LT\",lastWeek:\"dddd [whakamutunga i] LT\",sameElse:\"L\"},relativeTime:{future:\"i roto i %s\",past:\"%s i mua\",s:\"te hēkona ruarua\",m:\"he meneti\",mm:\"%d meneti\",h:\"te haora\",hh:\"%d haora\",d:\"he ra\",dd:\"%d ra\",M:\"he marama\",MM:\"%d marama\",y:\"he tau\",yy:\"%d tau\"},dayOfMonthOrdinalParse:/\\d{1,2}º/,ordinal:\"%dº\",week:{dow:1,doy:4}}),\n//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\na.defineLocale(\"mk\",{months:\"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември\".split(\"_\"),monthsShort:\"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек\".split(\"_\"),weekdays:\"недела_понеделник_вторник_среда_четврток_петок_сабота\".split(\"_\"),weekdaysShort:\"нед_пон_вто_сре_чет_пет_саб\".split(\"_\"),weekdaysMin:\"нe_пo_вт_ср_че_пе_сa\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"D.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY H:mm\",LLLL:\"dddd, D MMMM YYYY H:mm\"},calendar:{sameDay:\"[Денес во] LT\",nextDay:\"[Утре во] LT\",nextWeek:\"[Во] dddd [во] LT\",lastDay:\"[Вчера во] LT\",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return\"[Изминатата] dddd [во] LT\";case 1:case 2:case 4:case 5:return\"[Изминатиот] dddd [во] LT\"}},sameElse:\"L\"},relativeTime:{future:\"после %s\",past:\"пред %s\",s:\"неколку секунди\",m:\"минута\",mm:\"%d минути\",h:\"час\",hh:\"%d часа\",d:\"ден\",dd:\"%d дена\",M:\"месец\",MM:\"%d месеци\",y:\"година\",yy:\"%d години\"},dayOfMonthOrdinalParse:/\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(a){var b=a%10,c=a%100;return 0===a?a+\"-ев\":0===c?a+\"-ен\":c>10&&c<20?a+\"-ти\":1===b?a+\"-ви\":2===b?a+\"-ри\":7===b||8===b?a+\"-ми\":a+\"-ти\"},week:{dow:1,doy:7}}),\n//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\na.defineLocale(\"ml\",{months:\"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ\".split(\"_\"),monthsShort:\"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.\".split(\"_\"),monthsParseExact:!0,weekdays:\"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച\".split(\"_\"),weekdaysShort:\"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി\".split(\"_\"),weekdaysMin:\"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ\".split(\"_\"),longDateFormat:{LT:\"A h:mm -നു\",LTS:\"A h:mm:ss -നു\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY, A h:mm -നു\",LLLL:\"dddd, D MMMM YYYY, A h:mm -നു\"},calendar:{sameDay:\"[ഇന്ന്] LT\",nextDay:\"[നാളെ] LT\",nextWeek:\"dddd, LT\",lastDay:\"[ഇന്നലെ] LT\",lastWeek:\"[കഴിഞ്ഞ] dddd, LT\",sameElse:\"L\"},relativeTime:{future:\"%s കഴിഞ്ഞ്\",past:\"%s മുൻപ്\",s:\"അൽപ നിമിഷങ്ങൾ\",m:\"ഒരു മിനിറ്റ്\",mm:\"%d മിനിറ്റ്\",h:\"ഒരു മണിക്കൂർ\",hh:\"%d മണിക്കൂർ\",d:\"ഒരു ദിവസം\",dd:\"%d ദിവസം\",M:\"ഒരു മാസം\",MM:\"%d മാസം\",y:\"ഒരു വർഷം\",yy:\"%d വർഷം\"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,meridiemHour:function(a,b){return 12===a&&(a=0),\"രാത്രി\"===b&&a>=4||\"ഉച്ച കഴിഞ്ഞ്\"===b||\"വൈകുന്നേരം\"===b?a+12:a},meridiem:function(a,b,c){return a<4?\"രാത്രി\":a<12?\"രാവിലെ\":a<17?\"ഉച്ച കഴിഞ്ഞ്\":a<20?\"വൈകുന്നേരം\":\"രാത്രി\"}});\n//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\nvar qh={1:\"१\",2:\"२\",3:\"३\",4:\"४\",5:\"५\",6:\"६\",7:\"७\",8:\"८\",9:\"९\",0:\"०\"},rh={\"१\":\"1\",\"२\":\"2\",\"३\":\"3\",\"४\":\"4\",\"५\":\"5\",\"६\":\"6\",\"७\":\"7\",\"८\":\"8\",\"९\":\"9\",\"०\":\"0\"};a.defineLocale(\"mr\",{months:\"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर\".split(\"_\"),monthsShort:\"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.\".split(\"_\"),monthsParseExact:!0,weekdays:\"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार\".split(\"_\"),weekdaysShort:\"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि\".split(\"_\"),weekdaysMin:\"र_सो_मं_बु_गु_शु_श\".split(\"_\"),longDateFormat:{LT:\"A h:mm वाजता\",LTS:\"A h:mm:ss वाजता\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY, A h:mm वाजता\",LLLL:\"dddd, D MMMM YYYY, A h:mm वाजता\"},calendar:{sameDay:\"[आज] LT\",nextDay:\"[उद्या] LT\",nextWeek:\"dddd, LT\",lastDay:\"[काल] LT\",lastWeek:\"[मागील] dddd, LT\",sameElse:\"L\"},relativeTime:{future:\"%sमध्ये\",past:\"%sपूर्वी\",s:_d,m:_d,mm:_d,h:_d,hh:_d,d:_d,dd:_d,M:_d,MM:_d,y:_d,yy:_d},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return rh[a]})},postformat:function(a){return a.replace(/\\d/g,function(a){return qh[a]})},meridiemParse:/रात्री|सकाळी|दुपारी|सायंकाळी/,meridiemHour:function(a,b){return 12===a&&(a=0),\"रात्री\"===b?a<4?a:a+12:\"सकाळी\"===b?a:\"दुपारी\"===b?a>=10?a:a+12:\"सायंकाळी\"===b?a+12:void 0},meridiem:function(a,b,c){return a<4?\"रात्री\":a<10?\"सकाळी\":a<17?\"दुपारी\":a<20?\"सायंकाळी\":\"रात्री\"},week:{dow:0,doy:6}}),\n//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\na.defineLocale(\"ms-my\",{months:\"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember\".split(\"_\"),monthsShort:\"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis\".split(\"_\"),weekdays:\"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu\".split(\"_\"),weekdaysShort:\"Ahd_Isn_Sel_Rab_Kha_Jum_Sab\".split(\"_\"),weekdaysMin:\"Ah_Is_Sl_Rb_Km_Jm_Sb\".split(\"_\"),longDateFormat:{LT:\"HH.mm\",LTS:\"HH.mm.ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY [pukul] HH.mm\",LLLL:\"dddd, D MMMM YYYY [pukul] HH.mm\"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(a,b){return 12===a&&(a=0),\"pagi\"===b?a:\"tengahari\"===b?a>=11?a:a+12:\"petang\"===b||\"malam\"===b?a+12:void 0},meridiem:function(a,b,c){return a<11?\"pagi\":a<15?\"tengahari\":a<19?\"petang\":\"malam\"},calendar:{sameDay:\"[Hari ini pukul] LT\",nextDay:\"[Esok pukul] LT\",nextWeek:\"dddd [pukul] LT\",lastDay:\"[Kelmarin pukul] LT\",lastWeek:\"dddd [lepas pukul] LT\",sameElse:\"L\"},relativeTime:{future:\"dalam %s\",past:\"%s yang lepas\",s:\"beberapa saat\",m:\"seminit\",mm:\"%d minit\",h:\"sejam\",hh:\"%d jam\",d:\"sehari\",dd:\"%d hari\",M:\"sebulan\",MM:\"%d bulan\",y:\"setahun\",yy:\"%d tahun\"},week:{dow:1,doy:7}}),\n//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\na.defineLocale(\"ms\",{months:\"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember\".split(\"_\"),monthsShort:\"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis\".split(\"_\"),weekdays:\"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu\".split(\"_\"),weekdaysShort:\"Ahd_Isn_Sel_Rab_Kha_Jum_Sab\".split(\"_\"),weekdaysMin:\"Ah_Is_Sl_Rb_Km_Jm_Sb\".split(\"_\"),longDateFormat:{LT:\"HH.mm\",LTS:\"HH.mm.ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY [pukul] HH.mm\",LLLL:\"dddd, D MMMM YYYY [pukul] HH.mm\"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(a,b){return 12===a&&(a=0),\"pagi\"===b?a:\"tengahari\"===b?a>=11?a:a+12:\"petang\"===b||\"malam\"===b?a+12:void 0},meridiem:function(a,b,c){return a<11?\"pagi\":a<15?\"tengahari\":a<19?\"petang\":\"malam\"},calendar:{sameDay:\"[Hari ini pukul] LT\",nextDay:\"[Esok pukul] LT\",nextWeek:\"dddd [pukul] LT\",lastDay:\"[Kelmarin pukul] LT\",lastWeek:\"dddd [lepas pukul] LT\",sameElse:\"L\"},relativeTime:{future:\"dalam %s\",past:\"%s yang lepas\",s:\"beberapa saat\",m:\"seminit\",mm:\"%d minit\",h:\"sejam\",hh:\"%d jam\",d:\"sehari\",dd:\"%d hari\",M:\"sebulan\",MM:\"%d bulan\",y:\"setahun\",yy:\"%d tahun\"},week:{dow:1,doy:7}});\n//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\nvar sh={1:\"၁\",2:\"၂\",3:\"၃\",4:\"၄\",5:\"၅\",6:\"၆\",7:\"၇\",8:\"၈\",9:\"၉\",0:\"၀\"},th={\"၁\":\"1\",\"၂\":\"2\",\"၃\":\"3\",\"၄\":\"4\",\"၅\":\"5\",\"၆\":\"6\",\"၇\":\"7\",\"၈\":\"8\",\"၉\":\"9\",\"၀\":\"0\"};a.defineLocale(\"my\",{months:\"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ\".split(\"_\"),monthsShort:\"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ\".split(\"_\"),weekdays:\"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ\".split(\"_\"),weekdaysShort:\"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ\".split(\"_\"),weekdaysMin:\"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[ယနေ.] LT [မှာ]\",nextDay:\"[မနက်ဖြန်] LT [မှာ]\",nextWeek:\"dddd LT [မှာ]\",lastDay:\"[မနေ.က] LT [မှာ]\",lastWeek:\"[ပြီးခဲ့သော] dddd LT [မှာ]\",sameElse:\"L\"},relativeTime:{future:\"လာမည့် %s မှာ\",past:\"လွန်ခဲ့သော %s က\",s:\"စက္ကန်.အနည်းငယ်\",m:\"တစ်မိနစ်\",mm:\"%d မိနစ်\",h:\"တစ်နာရီ\",hh:\"%d နာရီ\",d:\"တစ်ရက်\",dd:\"%d ရက်\",M:\"တစ်လ\",MM:\"%d လ\",y:\"တစ်နှစ်\",yy:\"%d နှစ်\"},preparse:function(a){return a.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,function(a){return th[a]})},postformat:function(a){return a.replace(/\\d/g,function(a){return sh[a]})},week:{dow:1,doy:4}}),\n//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\na.defineLocale(\"nb\",{months:\"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember\".split(\"_\"),monthsShort:\"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.\".split(\"_\"),monthsParseExact:!0,weekdays:\"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag\".split(\"_\"),weekdaysShort:\"sø._ma._ti._on._to._fr._lø.\".split(\"_\"),weekdaysMin:\"sø_ma_ti_on_to_fr_lø\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY [kl.] HH:mm\",LLLL:\"dddd D. MMMM YYYY [kl.] HH:mm\"},calendar:{sameDay:\"[i dag kl.] LT\",nextDay:\"[i morgen kl.] LT\",nextWeek:\"dddd [kl.] LT\",lastDay:\"[i går kl.] LT\",lastWeek:\"[forrige] dddd [kl.] LT\",sameElse:\"L\"},relativeTime:{future:\"om %s\",past:\"%s siden\",s:\"noen sekunder\",m:\"ett minutt\",mm:\"%d minutter\",h:\"en time\",hh:\"%d timer\",d:\"en dag\",dd:\"%d dager\",M:\"en måned\",MM:\"%d måneder\",y:\"ett år\",yy:\"%d år\"},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}});\n//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\nvar uh={1:\"१\",2:\"२\",3:\"३\",4:\"४\",5:\"५\",6:\"६\",7:\"७\",8:\"८\",9:\"९\",0:\"०\"},vh={\"१\":\"1\",\"२\":\"2\",\"३\":\"3\",\"४\":\"4\",\"५\":\"5\",\"६\":\"6\",\"७\":\"7\",\"८\":\"8\",\"९\":\"9\",\"०\":\"0\"};a.defineLocale(\"ne\",{months:\"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर\".split(\"_\"),monthsShort:\"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.\".split(\"_\"),monthsParseExact:!0,weekdays:\"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार\".split(\"_\"),weekdaysShort:\"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.\".split(\"_\"),weekdaysMin:\"आ._सो._मं._बु._बि._शु._श.\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"Aको h:mm बजे\",LTS:\"Aको h:mm:ss बजे\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY, Aको h:mm बजे\",LLLL:\"dddd, D MMMM YYYY, Aको h:mm बजे\"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return vh[a]})},postformat:function(a){return a.replace(/\\d/g,function(a){return uh[a]})},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(a,b){return 12===a&&(a=0),\"राति\"===b?a<4?a:a+12:\"बिहान\"===b?a:\"दिउँसो\"===b?a>=10?a:a+12:\"साँझ\"===b?a+12:void 0},meridiem:function(a,b,c){return a<3?\"राति\":a<12?\"बिहान\":a<16?\"दिउँसो\":a<20?\"साँझ\":\"राति\"},calendar:{sameDay:\"[आज] LT\",nextDay:\"[भोलि] LT\",nextWeek:\"[आउँदो] dddd[,] LT\",lastDay:\"[हिजो] LT\",lastWeek:\"[गएको] dddd[,] LT\",sameElse:\"L\"},relativeTime:{future:\"%sमा\",past:\"%s अगाडि\",s:\"केही क्षण\",m:\"एक मिनेट\",mm:\"%d मिनेट\",h:\"एक घण्टा\",hh:\"%d घण्टा\",d:\"एक दिन\",dd:\"%d दिन\",M:\"एक महिना\",MM:\"%d महिना\",y:\"एक बर्ष\",yy:\"%d बर्ष\"},week:{dow:0,doy:6}});\n//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\nvar wh=\"jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.\".split(\"_\"),xh=\"jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec\".split(\"_\"),yh=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],zh=/^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;a.defineLocale(\"nl-be\",{months:\"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december\".split(\"_\"),monthsShort:function(a,b){return a?/-MMM-/.test(b)?xh[a.month()]:wh[a.month()]:wh},monthsRegex:zh,monthsShortRegex:zh,monthsStrictRegex:/^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,monthsParse:yh,longMonthsParse:yh,shortMonthsParse:yh,weekdays:\"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag\".split(\"_\"),weekdaysShort:\"zo._ma._di._wo._do._vr._za.\".split(\"_\"),weekdaysMin:\"Zo_Ma_Di_Wo_Do_Vr_Za\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[vandaag om] LT\",nextDay:\"[morgen om] LT\",nextWeek:\"dddd [om] LT\",lastDay:\"[gisteren om] LT\",lastWeek:\"[afgelopen] dddd [om] LT\",sameElse:\"L\"},relativeTime:{future:\"over %s\",past:\"%s geleden\",s:\"een paar seconden\",m:\"één minuut\",mm:\"%d minuten\",h:\"één uur\",hh:\"%d uur\",d:\"één dag\",dd:\"%d dagen\",M:\"één maand\",MM:\"%d maanden\",y:\"één jaar\",yy:\"%d jaar\"},dayOfMonthOrdinalParse:/\\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?\"ste\":\"de\")},week:{dow:1,doy:4}});\n//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\nvar Ah=\"jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.\".split(\"_\"),Bh=\"jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec\".split(\"_\"),Ch=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],Dh=/^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;a.defineLocale(\"nl\",{months:\"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december\".split(\"_\"),monthsShort:function(a,b){return a?/-MMM-/.test(b)?Bh[a.month()]:Ah[a.month()]:Ah},monthsRegex:Dh,monthsShortRegex:Dh,monthsStrictRegex:/^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,monthsParse:Ch,longMonthsParse:Ch,shortMonthsParse:Ch,weekdays:\"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag\".split(\"_\"),weekdaysShort:\"zo._ma._di._wo._do._vr._za.\".split(\"_\"),weekdaysMin:\"Zo_Ma_Di_Wo_Do_Vr_Za\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD-MM-YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[vandaag om] LT\",nextDay:\"[morgen om] LT\",nextWeek:\"dddd [om] LT\",lastDay:\"[gisteren om] LT\",lastWeek:\"[afgelopen] dddd [om] LT\",sameElse:\"L\"},relativeTime:{future:\"over %s\",past:\"%s geleden\",s:\"een paar seconden\",m:\"één minuut\",mm:\"%d minuten\",h:\"één uur\",hh:\"%d uur\",d:\"één dag\",dd:\"%d dagen\",M:\"één maand\",MM:\"%d maanden\",y:\"één jaar\",yy:\"%d jaar\"},dayOfMonthOrdinalParse:/\\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?\"ste\":\"de\")},week:{dow:1,doy:4}}),\n//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! author : https://github.com/mechuwind\na.defineLocale(\"nn\",{months:\"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des\".split(\"_\"),weekdays:\"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag\".split(\"_\"),weekdaysShort:\"sun_mån_tys_ons_tor_fre_lau\".split(\"_\"),weekdaysMin:\"su_må_ty_on_to_fr_lø\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY [kl.] H:mm\",LLLL:\"dddd D. MMMM YYYY [kl.] HH:mm\"},calendar:{sameDay:\"[I dag klokka] LT\",nextDay:\"[I morgon klokka] LT\",nextWeek:\"dddd [klokka] LT\",lastDay:\"[I går klokka] LT\",lastWeek:\"[Føregåande] dddd [klokka] LT\",sameElse:\"L\"},relativeTime:{future:\"om %s\",past:\"%s sidan\",s:\"nokre sekund\",m:\"eit minutt\",mm:\"%d minutt\",h:\"ein time\",hh:\"%d timar\",d:\"ein dag\",dd:\"%d dagar\",M:\"ein månad\",MM:\"%d månader\",y:\"eit år\",yy:\"%d år\"},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}});\n//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\nvar Eh={1:\"੧\",2:\"੨\",3:\"੩\",4:\"੪\",5:\"੫\",6:\"੬\",7:\"੭\",8:\"੮\",9:\"੯\",0:\"੦\"},Fh={\"੧\":\"1\",\"੨\":\"2\",\"੩\":\"3\",\"੪\":\"4\",\"੫\":\"5\",\"੬\":\"6\",\"੭\":\"7\",\"੮\":\"8\",\"੯\":\"9\",\"੦\":\"0\"};a.defineLocale(\"pa-in\",{months:\"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ\".split(\"_\"),monthsShort:\"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ\".split(\"_\"),weekdays:\"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ\".split(\"_\"),weekdaysShort:\"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ\".split(\"_\"),weekdaysMin:\"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ\".split(\"_\"),longDateFormat:{LT:\"A h:mm ਵਜੇ\",LTS:\"A h:mm:ss ਵਜੇ\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY, A h:mm ਵਜੇ\",LLLL:\"dddd, D MMMM YYYY, A h:mm ਵਜੇ\"},calendar:{sameDay:\"[ਅਜ] LT\",nextDay:\"[ਕਲ] LT\",nextWeek:\"dddd, LT\",lastDay:\"[ਕਲ] LT\",lastWeek:\"[ਪਿਛਲੇ] dddd, LT\",sameElse:\"L\"},relativeTime:{future:\"%s ਵਿੱਚ\",past:\"%s ਪਿਛਲੇ\",s:\"ਕੁਝ ਸਕਿੰਟ\",m:\"ਇਕ ਮਿੰਟ\",mm:\"%d ਮਿੰਟ\",h:\"ਇੱਕ ਘੰਟਾ\",hh:\"%d ਘੰਟੇ\",d:\"ਇੱਕ ਦਿਨ\",dd:\"%d ਦਿਨ\",M:\"ਇੱਕ ਮਹੀਨਾ\",MM:\"%d ਮਹੀਨੇ\",y:\"ਇੱਕ ਸਾਲ\",yy:\"%d ਸਾਲ\"},preparse:function(a){return a.replace(/[੧੨੩੪੫੬੭੮੯੦]/g,function(a){return Fh[a]})},postformat:function(a){return a.replace(/\\d/g,function(a){return Eh[a]})},meridiemParse:/ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,meridiemHour:function(a,b){return 12===a&&(a=0),\"ਰਾਤ\"===b?a<4?a:a+12:\"ਸਵੇਰ\"===b?a:\"ਦੁਪਹਿਰ\"===b?a>=10?a:a+12:\"ਸ਼ਾਮ\"===b?a+12:void 0},meridiem:function(a,b,c){return a<4?\"ਰਾਤ\":a<10?\"ਸਵੇਰ\":a<17?\"ਦੁਪਹਿਰ\":a<20?\"ਸ਼ਾਮ\":\"ਰਾਤ\"},week:{dow:0,doy:6}});\n//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\nvar Gh=\"styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień\".split(\"_\"),Hh=\"stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia\".split(\"_\");a.defineLocale(\"pl\",{months:function(a,b){return a?\"\"===b?\"(\"+Hh[a.month()]+\"|\"+Gh[a.month()]+\")\":/D MMMM/.test(b)?Hh[a.month()]:Gh[a.month()]:Gh},monthsShort:\"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru\".split(\"_\"),weekdays:\"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota\".split(\"_\"),weekdaysShort:\"ndz_pon_wt_śr_czw_pt_sob\".split(\"_\"),weekdaysMin:\"Nd_Pn_Wt_Śr_Cz_Pt_So\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Dziś o] LT\",nextDay:\"[Jutro o] LT\",nextWeek:\"[W] dddd [o] LT\",lastDay:\"[Wczoraj o] LT\",lastWeek:function(){switch(this.day()){case 0:return\"[W zeszłą niedzielę o] LT\";case 3:return\"[W zeszłą środę o] LT\";case 6:return\"[W zeszłą sobotę o] LT\";default:return\"[W zeszły] dddd [o] LT\"}},sameElse:\"L\"},relativeTime:{future:\"za %s\",past:\"%s temu\",s:\"kilka sekund\",m:be,mm:be,h:be,hh:be,d:\"1 dzień\",dd:\"%d dni\",M:\"miesiąc\",MM:be,y:\"rok\",yy:be},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}}),\n//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\na.defineLocale(\"pt-br\",{months:\"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro\".split(\"_\"),monthsShort:\"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez\".split(\"_\"),weekdays:\"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado\".split(\"_\"),weekdaysShort:\"Dom_Seg_Ter_Qua_Qui_Sex_Sáb\".split(\"_\"),weekdaysMin:\"Do_2ª_3ª_4ª_5ª_6ª_Sá\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D [de] MMMM [de] YYYY\",LLL:\"D [de] MMMM [de] YYYY [às] HH:mm\",LLLL:\"dddd, D [de] MMMM [de] YYYY [às] HH:mm\"},calendar:{sameDay:\"[Hoje às] LT\",nextDay:\"[Amanhã às] LT\",nextWeek:\"dddd [às] LT\",lastDay:\"[Ontem às] LT\",lastWeek:function(){return 0===this.day()||6===this.day()?\"[Último] dddd [às] LT\":\"[Última] dddd [às] LT\"},sameElse:\"L\"},relativeTime:{future:\"em %s\",past:\"%s atrás\",s:\"poucos segundos\",m:\"um minuto\",mm:\"%d minutos\",h:\"uma hora\",hh:\"%d horas\",d:\"um dia\",dd:\"%d dias\",M:\"um mês\",MM:\"%d meses\",y:\"um ano\",yy:\"%d anos\"},dayOfMonthOrdinalParse:/\\d{1,2}º/,ordinal:\"%dº\"}),\n//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\na.defineLocale(\"pt\",{months:\"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro\".split(\"_\"),monthsShort:\"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez\".split(\"_\"),weekdays:\"Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado\".split(\"_\"),weekdaysShort:\"Dom_Seg_Ter_Qua_Qui_Sex_Sáb\".split(\"_\"),weekdaysMin:\"Do_2ª_3ª_4ª_5ª_6ª_Sá\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D [de] MMMM [de] YYYY\",LLL:\"D [de] MMMM [de] YYYY HH:mm\",LLLL:\"dddd, D [de] MMMM [de] YYYY HH:mm\"},calendar:{sameDay:\"[Hoje às] LT\",nextDay:\"[Amanhã às] LT\",nextWeek:\"dddd [às] LT\",lastDay:\"[Ontem às] LT\",lastWeek:function(){return 0===this.day()||6===this.day()?\"[Último] dddd [às] LT\":\"[Última] dddd [às] LT\"},sameElse:\"L\"},relativeTime:{future:\"em %s\",past:\"há %s\",s:\"segundos\",m:\"um minuto\",mm:\"%d minutos\",h:\"uma hora\",hh:\"%d horas\",d:\"um dia\",dd:\"%d dias\",M:\"um mês\",MM:\"%d meses\",y:\"um ano\",yy:\"%d anos\"},dayOfMonthOrdinalParse:/\\d{1,2}º/,ordinal:\"%dº\",week:{dow:1,doy:4}}),a.defineLocale(\"ro\",{months:\"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie\".split(\"_\"),monthsShort:\"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.\".split(\"_\"),monthsParseExact:!0,weekdays:\"duminică_luni_marți_miercuri_joi_vineri_sâmbătă\".split(\"_\"),weekdaysShort:\"Dum_Lun_Mar_Mie_Joi_Vin_Sâm\".split(\"_\"),weekdaysMin:\"Du_Lu_Ma_Mi_Jo_Vi_Sâ\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY H:mm\",LLLL:\"dddd, D MMMM YYYY H:mm\"},calendar:{sameDay:\"[azi la] LT\",nextDay:\"[mâine la] LT\",nextWeek:\"dddd [la] LT\",lastDay:\"[ieri la] LT\",lastWeek:\"[fosta] dddd [la] LT\",sameElse:\"L\"},relativeTime:{future:\"peste %s\",past:\"%s în urmă\",s:\"câteva secunde\",m:\"un minut\",mm:ce,h:\"o oră\",hh:ce,d:\"o zi\",dd:ce,M:\"o lună\",MM:ce,y:\"un an\",yy:ce},week:{dow:1,doy:7}});var Ih=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];a.defineLocale(\"ru\",{months:{format:\"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря\".split(\"_\"),standalone:\"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь\".split(\"_\")},monthsShort:{format:\"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.\".split(\"_\"),standalone:\"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.\".split(\"_\")},weekdays:{standalone:\"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота\".split(\"_\"),format:\"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу\".split(\"_\"),isFormat:/\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\\] ?dddd/},weekdaysShort:\"вс_пн_вт_ср_чт_пт_сб\".split(\"_\"),weekdaysMin:\"вс_пн_вт_ср_чт_пт_сб\".split(\"_\"),monthsParse:Ih,longMonthsParse:Ih,shortMonthsParse:Ih,monthsRegex:/^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,monthsShortRegex:/^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY г.\",LLL:\"D MMMM YYYY г., HH:mm\",LLLL:\"dddd, D MMMM YYYY г., HH:mm\"},calendar:{sameDay:\"[Сегодня в] LT\",nextDay:\"[Завтра в] LT\",lastDay:\"[Вчера в] LT\",nextWeek:function(a){if(a.week()===this.week())return 2===this.day()?\"[Во] dddd [в] LT\":\"[В] dddd [в] LT\";switch(this.day()){case 0:return\"[В следующее] dddd [в] LT\";case 1:case 2:case 4:return\"[В следующий] dddd [в] LT\";case 3:case 5:case 6:return\"[В следующую] dddd [в] LT\"}},lastWeek:function(a){if(a.week()===this.week())return 2===this.day()?\"[Во] dddd [в] LT\":\"[В] dddd [в] LT\";switch(this.day()){case 0:return\"[В прошлое] dddd [в] LT\";case 1:case 2:case 4:return\"[В прошлый] dddd [в] LT\";case 3:case 5:case 6:return\"[В прошлую] dddd [в] LT\"}},sameElse:\"L\"},relativeTime:{future:\"через %s\",past:\"%s назад\",s:\"несколько секунд\",m:ee,mm:ee,h:\"час\",hh:ee,d:\"день\",dd:ee,M:\"месяц\",MM:ee,y:\"год\",yy:ee},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(a){return/^(дня|вечера)$/.test(a)},meridiem:function(a,b,c){return a<4?\"ночи\":a<12?\"утра\":a<17?\"дня\":\"вечера\"},dayOfMonthOrdinalParse:/\\d{1,2}-(й|го|я)/,ordinal:function(a,b){switch(b){case\"M\":case\"d\":case\"DDD\":return a+\"-й\";case\"D\":return a+\"-го\";case\"w\":case\"W\":return a+\"-я\";default:return a}},week:{dow:1,doy:7}});\n//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\nvar Jh=[\"جنوري\",\"فيبروري\",\"مارچ\",\"اپريل\",\"مئي\",\"جون\",\"جولاءِ\",\"آگسٽ\",\"سيپٽمبر\",\"آڪٽوبر\",\"نومبر\",\"ڊسمبر\"],Kh=[\"آچر\",\"سومر\",\"اڱارو\",\"اربع\",\"خميس\",\"جمع\",\"ڇنڇر\"];a.defineLocale(\"sd\",{months:Jh,monthsShort:Jh,weekdays:Kh,weekdaysShort:Kh,weekdaysMin:Kh,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd، D MMMM YYYY HH:mm\"},meridiemParse:/صبح|شام/,isPM:function(a){return\"شام\"===a},meridiem:function(a,b,c){return a<12?\"صبح\":\"شام\"},calendar:{sameDay:\"[اڄ] LT\",nextDay:\"[سڀاڻي] LT\",nextWeek:\"dddd [اڳين هفتي تي] LT\",lastDay:\"[ڪالهه] LT\",lastWeek:\"[گزريل هفتي] dddd [تي] LT\",sameElse:\"L\"},relativeTime:{future:\"%s پوء\",past:\"%s اڳ\",s:\"چند سيڪنڊ\",m:\"هڪ منٽ\",mm:\"%d منٽ\",h:\"هڪ ڪلاڪ\",hh:\"%d ڪلاڪ\",d:\"هڪ ڏينهن\",dd:\"%d ڏينهن\",M:\"هڪ مهينو\",MM:\"%d مهينا\",y:\"هڪ سال\",yy:\"%d سال\"},preparse:function(a){return a.replace(/،/g,\",\")},postformat:function(a){return a.replace(/,/g,\"،\")},week:{dow:1,doy:4}}),\n//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\na.defineLocale(\"se\",{months:\"ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu\".split(\"_\"),monthsShort:\"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov\".split(\"_\"),weekdays:\"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat\".split(\"_\"),weekdaysShort:\"sotn_vuos_maŋ_gask_duor_bear_láv\".split(\"_\"),weekdaysMin:\"s_v_m_g_d_b_L\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"MMMM D. [b.] YYYY\",LLL:\"MMMM D. [b.] YYYY [ti.] HH:mm\",LLLL:\"dddd, MMMM D. [b.] YYYY [ti.] HH:mm\"},calendar:{sameDay:\"[otne ti] LT\",nextDay:\"[ihttin ti] LT\",nextWeek:\"dddd [ti] LT\",lastDay:\"[ikte ti] LT\",lastWeek:\"[ovddit] dddd [ti] LT\",sameElse:\"L\"},relativeTime:{future:\"%s geažes\",past:\"maŋit %s\",s:\"moadde sekunddat\",m:\"okta minuhta\",mm:\"%d minuhtat\",h:\"okta diimmu\",hh:\"%d diimmut\",d:\"okta beaivi\",dd:\"%d beaivvit\",M:\"okta mánnu\",MM:\"%d mánut\",y:\"okta jahki\",yy:\"%d jagit\"},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}}),\n//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\na.defineLocale(\"si\",{months:\"ජනවාරි_පෙබරවාරි_මාර්තු_අප්රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්\".split(\"_\"),monthsShort:\"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ\".split(\"_\"),weekdays:\"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා\".split(\"_\"),weekdaysShort:\"ඉරි_සඳු_අඟ_බදා_බ්රහ_සිකු_සෙන\".split(\"_\"),weekdaysMin:\"ඉ_ස_අ_බ_බ්ර_සි_සෙ\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"a h:mm\",LTS:\"a h:mm:ss\",L:\"YYYY/MM/DD\",LL:\"YYYY MMMM D\",LLL:\"YYYY MMMM D, a h:mm\",LLLL:\"YYYY MMMM D [වැනි] dddd, a h:mm:ss\"},calendar:{sameDay:\"[අද] LT[ට]\",nextDay:\"[හෙට] LT[ට]\",nextWeek:\"dddd LT[ට]\",lastDay:\"[ඊයේ] LT[ට]\",lastWeek:\"[පසුගිය] dddd LT[ට]\",sameElse:\"L\"},relativeTime:{future:\"%sකින්\",past:\"%sකට පෙර\",s:\"තත්පර කිහිපය\",m:\"මිනිත්තුව\",mm:\"මිනිත්තු %d\",h:\"පැය\",hh:\"පැය %d\",d:\"දිනය\",dd:\"දින %d\",M:\"මාසය\",MM:\"මාස %d\",y:\"වසර\",yy:\"වසර %d\"},dayOfMonthOrdinalParse:/\\d{1,2} වැනි/,ordinal:function(a){return a+\" වැනි\"},meridiemParse:/පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,isPM:function(a){return\"ප.ව.\"===a||\"පස් වරු\"===a},meridiem:function(a,b,c){return a>11?c?\"ප.ව.\":\"පස් වරු\":c?\"පෙ.ව.\":\"පෙර වරු\"}});\n//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\nvar Lh=\"január_február_marec_apríl_máj_jún_júl_august_september_október_november_december\".split(\"_\"),Mh=\"jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec\".split(\"_\");a.defineLocale(\"sk\",{months:Lh,monthsShort:Mh,weekdays:\"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota\".split(\"_\"),weekdaysShort:\"ne_po_ut_st_št_pi_so\".split(\"_\"),weekdaysMin:\"ne_po_ut_st_št_pi_so\".split(\"_\"),longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[dnes o] LT\",nextDay:\"[zajtra o] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[v nedeľu o] LT\";case 1:case 2:return\"[v] dddd [o] LT\";case 3:return\"[v stredu o] LT\";case 4:return\"[vo štvrtok o] LT\";case 5:return\"[v piatok o] LT\";case 6:return\"[v sobotu o] LT\"}},lastDay:\"[včera o] LT\",lastWeek:function(){switch(this.day()){case 0:return\"[minulú nedeľu o] LT\";case 1:case 2:return\"[minulý] dddd [o] LT\";case 3:return\"[minulú stredu o] LT\";case 4:case 5:return\"[minulý] dddd [o] LT\";case 6:return\"[minulú sobotu o] LT\"}},sameElse:\"L\"},relativeTime:{future:\"za %s\",past:\"pred %s\",s:ge,m:ge,mm:ge,h:ge,hh:ge,d:ge,dd:ge,M:ge,MM:ge,y:ge,yy:ge},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}}),a.defineLocale(\"sl\",{months:\"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december\".split(\"_\"),monthsShort:\"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.\".split(\"_\"),monthsParseExact:!0,weekdays:\"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota\".split(\"_\"),weekdaysShort:\"ned._pon._tor._sre._čet._pet._sob.\".split(\"_\"),weekdaysMin:\"ne_po_to_sr_če_pe_so\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd, D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[danes ob] LT\",nextDay:\"[jutri ob] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[v] [nedeljo] [ob] LT\";case 3:return\"[v] [sredo] [ob] LT\";case 6:return\"[v] [soboto] [ob] LT\";case 1:case 2:case 4:case 5:return\"[v] dddd [ob] LT\"}},lastDay:\"[včeraj ob] LT\",lastWeek:function(){switch(this.day()){case 0:return\"[prejšnjo] [nedeljo] [ob] LT\";case 3:return\"[prejšnjo] [sredo] [ob] LT\";case 6:return\"[prejšnjo] [soboto] [ob] LT\";case 1:case 2:case 4:case 5:return\"[prejšnji] dddd [ob] LT\"}},sameElse:\"L\"},relativeTime:{future:\"čez %s\",past:\"pred %s\",s:he,m:he,mm:he,h:he,hh:he,d:he,dd:he,M:he,MM:he,y:he,yy:he},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}}),\n//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\na.defineLocale(\"sq\",{months:\"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor\".split(\"_\"),monthsShort:\"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj\".split(\"_\"),weekdays:\"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë\".split(\"_\"),weekdaysShort:\"Die_Hën_Mar_Mër_Enj_Pre_Sht\".split(\"_\"),weekdaysMin:\"D_H_Ma_Më_E_P_Sh\".split(\"_\"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(a){return\"M\"===a.charAt(0)},meridiem:function(a,b,c){return a<12?\"PD\":\"MD\"},longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Sot në] LT\",nextDay:\"[Nesër në] LT\",nextWeek:\"dddd [në] LT\",lastDay:\"[Dje në] LT\",lastWeek:\"dddd [e kaluar në] LT\",sameElse:\"L\"},relativeTime:{future:\"në %s\",past:\"%s më parë\",s:\"disa sekonda\",m:\"një minutë\",mm:\"%d minuta\",h:\"një orë\",hh:\"%d orë\",d:\"një ditë\",dd:\"%d ditë\",M:\"një muaj\",MM:\"%d muaj\",y:\"një vit\",yy:\"%d vite\"},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}});\n//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j\nvar Nh={words:{m:[\"један минут\",\"једне минуте\"],mm:[\"минут\",\"минуте\",\"минута\"],h:[\"један сат\",\"једног сата\"],hh:[\"сат\",\"сата\",\"сати\"],dd:[\"дан\",\"дана\",\"дана\"],MM:[\"месец\",\"месеца\",\"месеци\"],yy:[\"година\",\"године\",\"година\"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&a<=4?b[1]:b[2]},translate:function(a,b,c){var d=Nh.words[c];return 1===c.length?b?d[0]:d[1]:a+\" \"+Nh.correctGrammaticalCase(a,d)}};a.defineLocale(\"sr-cyrl\",{months:\"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар\".split(\"_\"),monthsShort:\"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.\".split(\"_\"),monthsParseExact:!0,weekdays:\"недеља_понедељак_уторак_среда_четвртак_петак_субота\".split(\"_\"),weekdaysShort:\"нед._пон._уто._сре._чет._пет._суб.\".split(\"_\"),weekdaysMin:\"не_по_ут_ср_че_пе_су\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd, D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[данас у] LT\",nextDay:\"[сутра у] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[у] [недељу] [у] LT\";case 3:return\"[у] [среду] [у] LT\";case 6:return\"[у] [суботу] [у] LT\";case 1:case 2:case 4:case 5:return\"[у] dddd [у] LT\"}},lastDay:\"[јуче у] LT\",lastWeek:function(){var a=[\"[прошле] [недеље] [у] LT\",\"[прошлог] [понедељка] [у] LT\",\"[прошлог] [уторка] [у] LT\",\"[прошле] [среде] [у] LT\",\"[прошлог] [четвртка] [у] LT\",\"[прошлог] [петка] [у] LT\",\"[прошле] [суботе] [у] LT\"];return a[this.day()]},sameElse:\"L\"},relativeTime:{future:\"за %s\",past:\"пре %s\",s:\"неколико секунди\",m:Nh.translate,mm:Nh.translate,h:Nh.translate,hh:Nh.translate,d:\"дан\",dd:Nh.translate,M:\"месец\",MM:Nh.translate,y:\"годину\",yy:Nh.translate},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}});\n//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j\nvar Oh={words:{m:[\"jedan minut\",\"jedne minute\"],mm:[\"minut\",\"minute\",\"minuta\"],h:[\"jedan sat\",\"jednog sata\"],hh:[\"sat\",\"sata\",\"sati\"],dd:[\"dan\",\"dana\",\"dana\"],MM:[\"mesec\",\"meseca\",\"meseci\"],yy:[\"godina\",\"godine\",\"godina\"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&a<=4?b[1]:b[2]},translate:function(a,b,c){var d=Oh.words[c];return 1===c.length?b?d[0]:d[1]:a+\" \"+Oh.correctGrammaticalCase(a,d)}};a.defineLocale(\"sr\",{months:\"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar\".split(\"_\"),monthsShort:\"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.\".split(\"_\"),monthsParseExact:!0,weekdays:\"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota\".split(\"_\"),weekdaysShort:\"ned._pon._uto._sre._čet._pet._sub.\".split(\"_\"),weekdaysMin:\"ne_po_ut_sr_če_pe_su\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM YYYY\",LLL:\"D. MMMM YYYY H:mm\",LLLL:\"dddd, D. MMMM YYYY H:mm\"},calendar:{sameDay:\"[danas u] LT\",nextDay:\"[sutra u] LT\",nextWeek:function(){switch(this.day()){case 0:return\"[u] [nedelju] [u] LT\";case 3:return\"[u] [sredu] [u] LT\";case 6:return\"[u] [subotu] [u] LT\";case 1:case 2:case 4:case 5:return\"[u] dddd [u] LT\"}},lastDay:\"[juče u] LT\",lastWeek:function(){var a=[\"[prošle] [nedelje] [u] LT\",\"[prošlog] [ponedeljka] [u] LT\",\"[prošlog] [utorka] [u] LT\",\"[prošle] [srede] [u] LT\",\"[prošlog] [četvrtka] [u] LT\",\"[prošlog] [petka] [u] LT\",\"[prošle] [subote] [u] LT\"];return a[this.day()]},sameElse:\"L\"},relativeTime:{future:\"za %s\",past:\"pre %s\",s:\"nekoliko sekundi\",m:Oh.translate,mm:Oh.translate,h:Oh.translate,hh:Oh.translate,d:\"dan\",dd:Oh.translate,M:\"mesec\",MM:Oh.translate,y:\"godinu\",yy:Oh.translate},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:7}}),\n//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies<mail@nicolai.io> : https://github.com/nicolaidavies\na.defineLocale(\"ss\",{months:\"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\"_\"),monthsShort:\"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo\".split(\"_\"),weekdays:\"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo\".split(\"_\"),weekdaysShort:\"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg\".split(\"_\"),weekdaysMin:\"Li_Us_Lb_Lt_Ls_Lh_Ug\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY h:mm A\",LLLL:\"dddd, D MMMM YYYY h:mm A\"},calendar:{sameDay:\"[Namuhla nga] LT\",nextDay:\"[Kusasa nga] LT\",nextWeek:\"dddd [nga] LT\",lastDay:\"[Itolo nga] LT\",lastWeek:\"dddd [leliphelile] [nga] LT\",sameElse:\"L\"},relativeTime:{future:\"nga %s\",past:\"wenteka nga %s\",s:\"emizuzwana lomcane\",m:\"umzuzu\",mm:\"%d emizuzu\",h:\"lihora\",hh:\"%d emahora\",d:\"lilanga\",dd:\"%d emalanga\",M:\"inyanga\",MM:\"%d tinyanga\",y:\"umnyaka\",yy:\"%d iminyaka\"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(a,b,c){return a<11?\"ekuseni\":a<15?\"emini\":a<19?\"entsambama\":\"ebusuku\"},meridiemHour:function(a,b){return 12===a&&(a=0),\"ekuseni\"===b?a:\"emini\"===b?a>=11?a:a+12:\"entsambama\"===b||\"ebusuku\"===b?0===a?0:a+12:void 0},dayOfMonthOrdinalParse:/\\d{1,2}/,ordinal:\"%d\",week:{dow:1,doy:4}}),\n//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\na.defineLocale(\"sv\",{months:\"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december\".split(\"_\"),monthsShort:\"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec\".split(\"_\"),weekdays:\"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag\".split(\"_\"),weekdaysShort:\"sön_mån_tis_ons_tor_fre_lör\".split(\"_\"),weekdaysMin:\"sö_må_ti_on_to_fr_lö\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY-MM-DD\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY [kl.] HH:mm\",LLLL:\"dddd D MMMM YYYY [kl.] HH:mm\",lll:\"D MMM YYYY HH:mm\",llll:\"ddd D MMM YYYY HH:mm\"},calendar:{sameDay:\"[Idag] LT\",nextDay:\"[Imorgon] LT\",lastDay:\"[Igår] LT\",nextWeek:\"[På] dddd LT\",lastWeek:\"[I] dddd[s] LT\",sameElse:\"L\"},relativeTime:{future:\"om %s\",past:\"för %s sedan\",s:\"några sekunder\",m:\"en minut\",mm:\"%d minuter\",h:\"en timme\",hh:\"%d timmar\",d:\"en dag\",dd:\"%d dagar\",M:\"en månad\",MM:\"%d månader\",y:\"ett år\",yy:\"%d år\"},dayOfMonthOrdinalParse:/\\d{1,2}(e|a)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?\"e\":1===b?\"a\":2===b?\"a\":\"e\";return a+c},week:{dow:1,doy:4}}),\n//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\na.defineLocale(\"sw\",{months:\"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba\".split(\"_\"),monthsShort:\"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des\".split(\"_\"),weekdays:\"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi\".split(\"_\"),weekdaysShort:\"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos\".split(\"_\"),weekdaysMin:\"J2_J3_J4_J5_Al_Ij_J1\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[leo saa] LT\",nextDay:\"[kesho saa] LT\",nextWeek:\"[wiki ijayo] dddd [saat] LT\",lastDay:\"[jana] LT\",lastWeek:\"[wiki iliyopita] dddd [saat] LT\",sameElse:\"L\"},relativeTime:{future:\"%s baadaye\",past:\"tokea %s\",s:\"hivi punde\",m:\"dakika moja\",mm:\"dakika %d\",h:\"saa limoja\",hh:\"masaa %d\",d:\"siku moja\",dd:\"masiku %d\",M:\"mwezi mmoja\",MM:\"miezi %d\",y:\"mwaka mmoja\",yy:\"miaka %d\"},week:{dow:1,doy:7}});\n//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\nvar Ph={1:\"௧\",2:\"௨\",3:\"௩\",4:\"௪\",5:\"௫\",6:\"௬\",7:\"௭\",8:\"௮\",9:\"௯\",0:\"௦\"},Qh={\"௧\":\"1\",\"௨\":\"2\",\"௩\":\"3\",\"௪\":\"4\",\"௫\":\"5\",\"௬\":\"6\",\"௭\":\"7\",\"௮\":\"8\",\"௯\":\"9\",\"௦\":\"0\"};a.defineLocale(\"ta\",{months:\"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்\".split(\"_\"),monthsShort:\"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்\".split(\"_\"),weekdays:\"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை\".split(\"_\"),weekdaysShort:\"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி\".split(\"_\"),weekdaysMin:\"ஞா_தி_செ_பு_வி_வெ_ச\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY, HH:mm\",LLLL:\"dddd, D MMMM YYYY, HH:mm\"},calendar:{sameDay:\"[இன்று] LT\",nextDay:\"[நாளை] LT\",nextWeek:\"dddd, LT\",lastDay:\"[நேற்று] LT\",lastWeek:\"[கடந்த வாரம்] dddd, LT\",sameElse:\"L\"},relativeTime:{future:\"%s இல்\",past:\"%s முன்\",s:\"ஒரு சில விநாடிகள்\",m:\"ஒரு நிமிடம்\",mm:\"%d நிமிடங்கள்\",h:\"ஒரு மணி நேரம்\",hh:\"%d மணி நேரம்\",d:\"ஒரு நாள்\",dd:\"%d நாட்கள்\",M:\"ஒரு மாதம்\",MM:\"%d மாதங்கள்\",y:\"ஒரு வருடம்\",yy:\"%d ஆண்டுகள்\"},dayOfMonthOrdinalParse:/\\d{1,2}வது/,ordinal:function(a){return a+\"வது\"},preparse:function(a){return a.replace(/[௧௨௩௪௫௬௭௮௯௦]/g,function(a){return Qh[a]})},postformat:function(a){return a.replace(/\\d/g,function(a){return Ph[a]})},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(a,b,c){return a<2?\" யாமம்\":a<6?\" வைகறை\":a<10?\" காலை\":a<14?\" நண்பகல்\":a<18?\" எற்பாடு\":a<22?\" மாலை\":\" யாமம்\"},meridiemHour:function(a,b){return 12===a&&(a=0),\"யாமம்\"===b?a<2?a:a+12:\"வைகறை\"===b||\"காலை\"===b?a:\"நண்பகல்\"===b&&a>=10?a:a+12},week:{dow:0,doy:6}}),\n//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\na.defineLocale(\"te\",{months:\"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జూలై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్\".split(\"_\"),monthsShort:\"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జూలై_ఆగ._సెప్._అక్టో._నవ._డిసె.\".split(\"_\"),monthsParseExact:!0,weekdays:\"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం\".split(\"_\"),weekdaysShort:\"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని\".split(\"_\"),weekdaysMin:\"ఆ_సో_మం_బు_గు_శు_శ\".split(\"_\"),longDateFormat:{LT:\"A h:mm\",LTS:\"A h:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY, A h:mm\",LLLL:\"dddd, D MMMM YYYY, A h:mm\"},calendar:{sameDay:\"[నేడు] LT\",nextDay:\"[రేపు] LT\",nextWeek:\"dddd, LT\",lastDay:\"[నిన్న] LT\",lastWeek:\"[గత] dddd, LT\",sameElse:\"L\"},relativeTime:{future:\"%s లో\",past:\"%s క్రితం\",s:\"కొన్ని క్షణాలు\",m:\"ఒక నిమిషం\",mm:\"%d నిమిషాలు\",h:\"ఒక గంట\",hh:\"%d గంటలు\",d:\"ఒక రోజు\",dd:\"%d రోజులు\",M:\"ఒక నెల\",MM:\"%d నెలలు\",y:\"ఒక సంవత్సరం\",yy:\"%d సంవత్సరాలు\"},dayOfMonthOrdinalParse:/\\d{1,2}వ/,ordinal:\"%dవ\",meridiemParse:/రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,meridiemHour:function(a,b){return 12===a&&(a=0),\"రాత్రి\"===b?a<4?a:a+12:\"ఉదయం\"===b?a:\"మధ్యాహ్నం\"===b?a>=10?a:a+12:\"సాయంత్రం\"===b?a+12:void 0},meridiem:function(a,b,c){return a<4?\"రాత్రి\":a<10?\"ఉదయం\":a<17?\"మధ్యాహ్నం\":a<20?\"సాయంత్రం\":\"రాత్రి\"},week:{dow:0,doy:6}}),\n//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\na.defineLocale(\"tet\",{months:\"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juniu_Juliu_Augustu_Setembru_Outubru_Novembru_Dezembru\".split(\"_\"),monthsShort:\"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Aug_Set_Out_Nov_Dez\".split(\"_\"),weekdays:\"Domingu_Segunda_Tersa_Kuarta_Kinta_Sexta_Sabadu\".split(\"_\"),weekdaysShort:\"Dom_Seg_Ters_Kua_Kint_Sext_Sab\".split(\"_\"),weekdaysMin:\"Do_Seg_Te_Ku_Ki_Sex_Sa\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[Ohin iha] LT\",nextDay:\"[Aban iha] LT\",nextWeek:\"dddd [iha] LT\",lastDay:\"[Horiseik iha] LT\",lastWeek:\"dddd [semana kotuk] [iha] LT\",sameElse:\"L\"},relativeTime:{future:\"iha %s\",past:\"%s liuba\",s:\"minutu balun\",m:\"minutu ida\",mm:\"minutus %d\",h:\"horas ida\",hh:\"horas %d\",d:\"loron ida\",dd:\"loron %d\",M:\"fulan ida\",MM:\"fulan %d\",y:\"tinan ida\",yy:\"tinan %d\"},dayOfMonthOrdinalParse:/\\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?\"th\":1===b?\"st\":2===b?\"nd\":3===b?\"rd\":\"th\";return a+c},week:{dow:1,doy:4}}),\n//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\na.defineLocale(\"th\",{months:\"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม\".split(\"_\"),monthsShort:\"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.\".split(\"_\"),monthsParseExact:!0,weekdays:\"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์\".split(\"_\"),weekdaysShort:\"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์\".split(\"_\"),weekdaysMin:\"อา._จ._อ._พ._พฤ._ศ._ส.\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"H:mm\",LTS:\"H:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY เวลา H:mm\",LLLL:\"วันddddที่ D MMMM YYYY เวลา H:mm\"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(a){return\"หลังเที่ยง\"===a},meridiem:function(a,b,c){return a<12?\"ก่อนเที่ยง\":\"หลังเที่ยง\"},calendar:{sameDay:\"[วันนี้ เวลา] LT\",nextDay:\"[พรุ่งนี้ เวลา] LT\",nextWeek:\"dddd[หน้า เวลา] LT\",lastDay:\"[เมื่อวานนี้ เวลา] LT\",lastWeek:\"[วัน]dddd[ที่แล้ว เวลา] LT\",sameElse:\"L\"},relativeTime:{future:\"อีก %s\",past:\"%sที่แล้ว\",s:\"ไม่กี่วินาที\",m:\"1 นาที\",mm:\"%d นาที\",h:\"1 ชั่วโมง\",hh:\"%d ชั่วโมง\",d:\"1 วัน\",dd:\"%d วัน\",M:\"1 เดือน\",MM:\"%d เดือน\",y:\"1 ปี\",yy:\"%d ปี\"}}),\n//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\na.defineLocale(\"tl-ph\",{months:\"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre\".split(\"_\"),monthsShort:\"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis\".split(\"_\"),weekdays:\"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado\".split(\"_\"),weekdaysShort:\"Lin_Lun_Mar_Miy_Huw_Biy_Sab\".split(\"_\"),weekdaysMin:\"Li_Lu_Ma_Mi_Hu_Bi_Sab\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"MM/D/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY HH:mm\",LLLL:\"dddd, MMMM DD, YYYY HH:mm\"},calendar:{sameDay:\"LT [ngayong araw]\",nextDay:\"[Bukas ng] LT\",nextWeek:\"LT [sa susunod na] dddd\",lastDay:\"LT [kahapon]\",lastWeek:\"LT [noong nakaraang] dddd\",sameElse:\"L\"},relativeTime:{future:\"sa loob ng %s\",past:\"%s ang nakalipas\",s:\"ilang segundo\",m:\"isang minuto\",mm:\"%d minuto\",h:\"isang oras\",hh:\"%d oras\",d:\"isang araw\",dd:\"%d araw\",M:\"isang buwan\",MM:\"%d buwan\",y:\"isang taon\",yy:\"%d taon\"},dayOfMonthOrdinalParse:/\\d{1,2}/,ordinal:function(a){return a},week:{dow:1,doy:4}});\n//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\nvar Rh=\"pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut\".split(\"_\");a.defineLocale(\"tlh\",{months:\"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’\".split(\"_\"),monthsShort:\"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’\".split(\"_\"),monthsParseExact:!0,weekdays:\"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj\".split(\"_\"),weekdaysShort:\"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj\".split(\"_\"),weekdaysMin:\"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[DaHjaj] LT\",nextDay:\"[wa’leS] LT\",nextWeek:\"LLL\",lastDay:\"[wa’Hu’] LT\",lastWeek:\"LLL\",sameElse:\"L\"},relativeTime:{future:ie,past:je,s:\"puS lup\",m:\"wa’ tup\",mm:ke,h:\"wa’ rep\",hh:ke,d:\"wa’ jaj\",dd:ke,M:\"wa’ jar\",MM:ke,y:\"wa’ DIS\",yy:ke},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}});\n//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\nvar Sh={1:\"'inci\",5:\"'inci\",8:\"'inci\",70:\"'inci\",80:\"'inci\",2:\"'nci\",7:\"'nci\",20:\"'nci\",50:\"'nci\",3:\"'üncü\",4:\"'üncü\",100:\"'üncü\",6:\"'ncı\",9:\"'uncu\",10:\"'uncu\",30:\"'uncu\",60:\"'ıncı\",90:\"'ıncı\"};a.defineLocale(\"tr\",{months:\"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık\".split(\"_\"),monthsShort:\"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara\".split(\"_\"),weekdays:\"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi\".split(\"_\"),weekdaysShort:\"Paz_Pts_Sal_Çar_Per_Cum_Cts\".split(\"_\"),weekdaysMin:\"Pz_Pt_Sa_Ça_Pe_Cu_Ct\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[bugün saat] LT\",nextDay:\"[yarın saat] LT\",nextWeek:\"[haftaya] dddd [saat] LT\",lastDay:\"[dün] LT\",lastWeek:\"[geçen hafta] dddd [saat] LT\",sameElse:\"L\"},relativeTime:{future:\"%s sonra\",past:\"%s önce\",s:\"birkaç saniye\",m:\"bir dakika\",mm:\"%d dakika\",h:\"bir saat\",hh:\"%d saat\",d:\"bir gün\",dd:\"%d gün\",M:\"bir ay\",MM:\"%d ay\",y:\"bir yıl\",yy:\"%d yıl\"},dayOfMonthOrdinalParse:/\\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,ordinal:function(a){if(0===a)return a+\"'ıncı\";var b=a%10,c=a%100-b,d=a>=100?100:null;return a+(Sh[b]||Sh[c]||Sh[d])},week:{dow:1,doy:7}}),\n//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\na.defineLocale(\"tzl\",{months:\"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar\".split(\"_\"),monthsShort:\"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec\".split(\"_\"),weekdays:\"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi\".split(\"_\"),weekdaysShort:\"Súl_Lún_Mai_Már_Xhú_Vié_Sát\".split(\"_\"),weekdaysMin:\"Sú_Lú_Ma_Má_Xh_Vi_Sá\".split(\"_\"),longDateFormat:{LT:\"HH.mm\",LTS:\"HH.mm.ss\",L:\"DD.MM.YYYY\",LL:\"D. MMMM [dallas] YYYY\",LLL:\"D. MMMM [dallas] YYYY HH.mm\",LLLL:\"dddd, [li] D. MMMM [dallas] YYYY HH.mm\"},meridiemParse:/d\\'o|d\\'a/i,isPM:function(a){return\"d'o\"===a.toLowerCase()},meridiem:function(a,b,c){return a>11?c?\"d'o\":\"D'O\":c?\"d'a\":\"D'A\"},calendar:{sameDay:\"[oxhi à] LT\",nextDay:\"[demà à] LT\",nextWeek:\"dddd [à] LT\",lastDay:\"[ieiri à] LT\",lastWeek:\"[sür el] dddd [lasteu à] LT\",sameElse:\"L\"},relativeTime:{future:\"osprei %s\",past:\"ja%s\",s:me,m:me,mm:me,h:me,hh:me,d:me,dd:me,M:me,MM:me,y:me,yy:me},dayOfMonthOrdinalParse:/\\d{1,2}\\./,ordinal:\"%d.\",week:{dow:1,doy:4}}),\n//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\na.defineLocale(\"tzm-latn\",{months:\"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir\".split(\"_\"),monthsShort:\"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir\".split(\"_\"),weekdays:\"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas\".split(\"_\"),weekdaysShort:\"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas\".split(\"_\"),weekdaysMin:\"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[asdkh g] LT\",nextDay:\"[aska g] LT\",nextWeek:\"dddd [g] LT\",lastDay:\"[assant g] LT\",lastWeek:\"dddd [g] LT\",sameElse:\"L\"},relativeTime:{future:\"dadkh s yan %s\",past:\"yan %s\",s:\"imik\",m:\"minuḍ\",mm:\"%d minuḍ\",h:\"saɛa\",hh:\"%d tassaɛin\",d:\"ass\",dd:\"%d ossan\",M:\"ayowr\",MM:\"%d iyyirn\",y:\"asgas\",yy:\"%d isgasn\"},week:{dow:6,doy:12}}),\n//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\na.defineLocale(\"tzm\",{months:\"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ\".split(\"_\"),monthsShort:\"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ\".split(\"_\"),weekdays:\"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ\".split(\"_\"),weekdaysShort:\"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ\".split(\"_\"),weekdaysMin:\"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[ⴰⵙⴷⵅ ⴴ] LT\",nextDay:\"[ⴰⵙⴽⴰ ⴴ] LT\",nextWeek:\"dddd [ⴴ] LT\",lastDay:\"[ⴰⵚⴰⵏⵜ ⴴ] LT\",lastWeek:\"dddd [ⴴ] LT\",sameElse:\"L\"},relativeTime:{future:\"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s\",past:\"ⵢⴰⵏ %s\",s:\"ⵉⵎⵉⴽ\",m:\"ⵎⵉⵏⵓⴺ\",mm:\"%d ⵎⵉⵏⵓⴺ\",h:\"ⵙⴰⵄⴰ\",hh:\"%d ⵜⴰⵙⵙⴰⵄⵉⵏ\",d:\"ⴰⵙⵙ\",dd:\"%d oⵙⵙⴰⵏ\",M:\"ⴰⵢoⵓⵔ\",MM:\"%d ⵉⵢⵢⵉⵔⵏ\",y:\"ⴰⵙⴳⴰⵙ\",yy:\"%d ⵉⵙⴳⴰⵙⵏ\"},week:{dow:6,doy:12}}),a.defineLocale(\"uk\",{months:{format:\"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня\".split(\"_\"),standalone:\"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень\".split(\"_\")},monthsShort:\"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд\".split(\"_\"),weekdays:pe,weekdaysShort:\"нд_пн_вт_ср_чт_пт_сб\".split(\"_\"),weekdaysMin:\"нд_пн_вт_ср_чт_пт_сб\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD.MM.YYYY\",LL:\"D MMMM YYYY р.\",LLL:\"D MMMM YYYY р., HH:mm\",LLLL:\"dddd, D MMMM YYYY р., HH:mm\"},calendar:{sameDay:qe(\"[Сьогодні \"),nextDay:qe(\"[Завтра \"),lastDay:qe(\"[Вчора \"),nextWeek:qe(\"[У] dddd [\"),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return qe(\"[Минулої] dddd [\").call(this);case 1:case 2:case 4:return qe(\"[Минулого] dddd [\").call(this)}},sameElse:\"L\"},relativeTime:{future:\"за %s\",past:\"%s тому\",s:\"декілька секунд\",m:oe,mm:oe,h:\"годину\",hh:oe,d:\"день\",dd:oe,M:\"місяць\",MM:oe,y:\"рік\",yy:oe},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(a){return/^(дня|вечора)$/.test(a)},meridiem:function(a,b,c){return a<4?\"ночі\":a<12?\"ранку\":a<17?\"дня\":\"вечора\"},dayOfMonthOrdinalParse:/\\d{1,2}-(й|го)/,ordinal:function(a,b){switch(b){case\"M\":case\"d\":case\"DDD\":case\"w\":case\"W\":return a+\"-й\";case\"D\":return a+\"-го\";default:return a}},week:{dow:1,doy:7}});\n//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\nvar Th=[\"جنوری\",\"فروری\",\"مارچ\",\"اپریل\",\"مئی\",\"جون\",\"جولائی\",\"اگست\",\"ستمبر\",\"اکتوبر\",\"نومبر\",\"دسمبر\"],Uh=[\"اتوار\",\"پیر\",\"منگل\",\"بدھ\",\"جمعرات\",\"جمعہ\",\"ہفتہ\"];\n//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\nreturn a.defineLocale(\"ur\",{months:Th,monthsShort:Th,weekdays:Uh,weekdaysShort:Uh,weekdaysMin:Uh,longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd، D MMMM YYYY HH:mm\"},meridiemParse:/صبح|شام/,isPM:function(a){return\"شام\"===a},meridiem:function(a,b,c){return a<12?\"صبح\":\"شام\"},calendar:{sameDay:\"[آج بوقت] LT\",nextDay:\"[کل بوقت] LT\",nextWeek:\"dddd [بوقت] LT\",lastDay:\"[گذشتہ روز بوقت] LT\",lastWeek:\"[گذشتہ] dddd [بوقت] LT\",sameElse:\"L\"},relativeTime:{future:\"%s بعد\",past:\"%s قبل\",s:\"چند سیکنڈ\",m:\"ایک منٹ\",mm:\"%d منٹ\",h:\"ایک گھنٹہ\",hh:\"%d گھنٹے\",d:\"ایک دن\",dd:\"%d دن\",M:\"ایک ماہ\",MM:\"%d ماہ\",y:\"ایک سال\",yy:\"%d سال\"},preparse:function(a){return a.replace(/،/g,\",\")},postformat:function(a){return a.replace(/,/g,\"،\")},week:{dow:1,doy:4}}),a.defineLocale(\"uz-latn\",{months:\"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr\".split(\"_\"),monthsShort:\"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek\".split(\"_\"),weekdays:\"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba\".split(\"_\"),weekdaysShort:\"Yak_Dush_Sesh_Chor_Pay_Jum_Shan\".split(\"_\"),weekdaysMin:\"Ya_Du_Se_Cho_Pa_Ju_Sha\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"D MMMM YYYY, dddd HH:mm\"},calendar:{sameDay:\"[Bugun soat] LT [da]\",nextDay:\"[Ertaga] LT [da]\",nextWeek:\"dddd [kuni soat] LT [da]\",lastDay:\"[Kecha soat] LT [da]\",lastWeek:\"[O'tgan] dddd [kuni soat] LT [da]\",sameElse:\"L\"},relativeTime:{future:\"Yaqin %s ichida\",past:\"Bir necha %s oldin\",s:\"soniya\",m:\"bir daqiqa\",mm:\"%d daqiqa\",h:\"bir soat\",hh:\"%d soat\",d:\"bir kun\",dd:\"%d kun\",M:\"bir oy\",MM:\"%d oy\",y:\"bir yil\",yy:\"%d yil\"},week:{dow:1,doy:7}}),a.defineLocale(\"uz\",{months:\"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр\".split(\"_\"),monthsShort:\"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек\".split(\"_\"),weekdays:\"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба\".split(\"_\"),weekdaysShort:\"Якш_Душ_Сеш_Чор_Пай_Жум_Шан\".split(\"_\"),weekdaysMin:\"Як_Ду_Се_Чо_Па_Жу_Ша\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"D MMMM YYYY, dddd HH:mm\"},calendar:{sameDay:\"[Бугун соат] LT [да]\",nextDay:\"[Эртага] LT [да]\",nextWeek:\"dddd [куни соат] LT [да]\",lastDay:\"[Кеча соат] LT [да]\",lastWeek:\"[Утган] dddd [куни соат] LT [да]\",sameElse:\"L\"},relativeTime:{future:\"Якин %s ичида\",past:\"Бир неча %s олдин\",s:\"фурсат\",m:\"бир дакика\",mm:\"%d дакика\",h:\"бир соат\",hh:\"%d соат\",d:\"бир кун\",dd:\"%d кун\",M:\"бир ой\",MM:\"%d ой\",y:\"бир йил\",yy:\"%d йил\"},week:{dow:1,doy:7}}),a.defineLocale(\"vi\",{months:\"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12\".split(\"_\"),monthsShort:\"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12\".split(\"_\"),monthsParseExact:!0,weekdays:\"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy\".split(\"_\"),weekdaysShort:\"CN_T2_T3_T4_T5_T6_T7\".split(\"_\"),weekdaysMin:\"CN_T2_T3_T4_T5_T6_T7\".split(\"_\"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(a){return/^ch$/i.test(a)},meridiem:function(a,b,c){return a<12?c?\"sa\":\"SA\":c?\"ch\":\"CH\"},longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"DD/MM/YYYY\",LL:\"D MMMM [năm] YYYY\",LLL:\"D MMMM [năm] YYYY HH:mm\",LLLL:\"dddd, D MMMM [năm] YYYY HH:mm\",l:\"DD/M/YYYY\",ll:\"D MMM YYYY\",lll:\"D MMM YYYY HH:mm\",llll:\"ddd, D MMM YYYY HH:mm\"},calendar:{sameDay:\"[Hôm nay lúc] LT\",nextDay:\"[Ngày mai lúc] LT\",nextWeek:\"dddd [tuần tới lúc] LT\",lastDay:\"[Hôm qua lúc] LT\",lastWeek:\"dddd [tuần rồi lúc] LT\",sameElse:\"L\"},relativeTime:{future:\"%s tới\",past:\"%s trước\",s:\"vài giây\",m:\"một phút\",mm:\"%d phút\",h:\"một giờ\",hh:\"%d giờ\",d:\"một ngày\",dd:\"%d ngày\",M:\"một tháng\",MM:\"%d tháng\",y:\"một năm\",yy:\"%d năm\"},dayOfMonthOrdinalParse:/\\d{1,2}/,ordinal:function(a){return a},week:{dow:1,doy:4}}),a.defineLocale(\"x-pseudo\",{months:\"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér\".split(\"_\"),monthsShort:\"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc\".split(\"_\"),monthsParseExact:!0,weekdays:\"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý\".split(\"_\"),weekdaysShort:\"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát\".split(\"_\"),weekdaysMin:\"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá\".split(\"_\"),weekdaysParseExact:!0,longDateFormat:{LT:\"HH:mm\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY HH:mm\",LLLL:\"dddd, D MMMM YYYY HH:mm\"},calendar:{sameDay:\"[T~ódá~ý át] LT\",nextDay:\"[T~ómó~rró~w át] LT\",nextWeek:\"dddd [át] LT\",lastDay:\"[Ý~ést~érdá~ý át] LT\",lastWeek:\"[L~ást] dddd [át] LT\",sameElse:\"L\"},relativeTime:{future:\"í~ñ %s\",past:\"%s á~gó\",s:\"á ~féw ~sécó~ñds\",m:\"á ~míñ~úté\",mm:\"%d m~íñú~tés\",h:\"á~ñ hó~úr\",hh:\"%d h~óúrs\",d:\"á ~dáý\",dd:\"%d d~áýs\",M:\"á ~móñ~th\",MM:\"%d m~óñt~hs\",y:\"á ~ýéár\",yy:\"%d ý~éárs\"},dayOfMonthOrdinalParse:/\\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?\"th\":1===b?\"st\":2===b?\"nd\":3===b?\"rd\":\"th\";return a+c},week:{dow:1,doy:4}}),a.defineLocale(\"yo\",{months:\"Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀\".split(\"_\"),monthsShort:\"Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀\".split(\"_\"),weekdays:\"Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta\".split(\"_\"),weekdaysShort:\"Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá\".split(\"_\"),weekdaysMin:\"Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb\".split(\"_\"),longDateFormat:{LT:\"h:mm A\",LTS:\"h:mm:ss A\",L:\"DD/MM/YYYY\",LL:\"D MMMM YYYY\",LLL:\"D MMMM YYYY h:mm A\",LLLL:\"dddd, D MMMM YYYY h:mm A\"},calendar:{sameDay:\"[Ònì ni] LT\",nextDay:\"[Ọ̀la ni] LT\",nextWeek:\"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",lastDay:\"[Àna ni] LT\",lastWeek:\"dddd [Ọsẹ̀ tólọ́] [ni] LT\",sameElse:\"L\"},relativeTime:{future:\"ní %s\",past:\"%s kọjá\",s:\"ìsẹjú aayá die\",m:\"ìsẹjú kan\",mm:\"ìsẹjú %d\",h:\"wákati kan\",hh:\"wákati %d\",d:\"ọjọ́ kan\",dd:\"ọjọ́ %d\",M:\"osù kan\",MM:\"osù %d\",y:\"ọdún kan\",yy:\"ọdún %d\"},dayOfMonthOrdinalParse:/ọjọ́\\s\\d{1,2}/,ordinal:\"ọjọ́ %d\",week:{dow:1,doy:4}}),a.defineLocale(\"zh-cn\",{months:\"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月\".split(\"_\"),monthsShort:\"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月\".split(\"_\"),weekdays:\"星期日_星期一_星期二_星期三_星期四_星期五_星期六\".split(\"_\"),weekdaysShort:\"周日_周一_周二_周三_周四_周五_周六\".split(\"_\"),weekdaysMin:\"日_一_二_三_四_五_六\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY年MMMD日\",LL:\"YYYY年MMMD日\",LLL:\"YYYY年MMMD日Ah点mm分\",LLLL:\"YYYY年MMMD日ddddAh点mm分\",l:\"YYYY年MMMD日\",ll:\"YYYY年MMMD日\",lll:\"YYYY年MMMD日 HH:mm\",llll:\"YYYY年MMMD日dddd HH:mm\"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),\"凌晨\"===b||\"早上\"===b||\"上午\"===b?a:\"下午\"===b||\"晚上\"===b?a+12:a>=11?a:a+12},meridiem:function(a,b,c){var d=100*a+b;return d<600?\"凌晨\":d<900?\"早上\":d<1130?\"上午\":d<1230?\"中午\":d<1800?\"下午\":\"晚上\"},calendar:{sameDay:\"[今天]LT\",nextDay:\"[明天]LT\",nextWeek:\"[下]ddddLT\",lastDay:\"[昨天]LT\",lastWeek:\"[上]ddddLT\",sameElse:\"L\"},dayOfMonthOrdinalParse:/\\d{1,2}(日|月|周)/,ordinal:function(a,b){switch(b){case\"d\":case\"D\":case\"DDD\":return a+\"日\";case\"M\":return a+\"月\";case\"w\":case\"W\":return a+\"周\";default:return a}},relativeTime:{future:\"%s内\",past:\"%s前\",s:\"几秒\",m:\"1 分钟\",mm:\"%d 分钟\",h:\"1 小时\",hh:\"%d 小时\",d:\"1 天\",dd:\"%d 天\",M:\"1 个月\",MM:\"%d 个月\",y:\"1 年\",yy:\"%d 年\"},week:{dow:1,doy:4}}),a.defineLocale(\"zh-hk\",{months:\"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月\".split(\"_\"),monthsShort:\"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月\".split(\"_\"),weekdays:\"星期日_星期一_星期二_星期三_星期四_星期五_星期六\".split(\"_\"),weekdaysShort:\"週日_週一_週二_週三_週四_週五_週六\".split(\"_\"),weekdaysMin:\"日_一_二_三_四_五_六\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY年MMMD日\",LL:\"YYYY年MMMD日\",LLL:\"YYYY年MMMD日 HH:mm\",LLLL:\"YYYY年MMMD日dddd HH:mm\",l:\"YYYY年MMMD日\",ll:\"YYYY年MMMD日\",lll:\"YYYY年MMMD日 HH:mm\",llll:\"YYYY年MMMD日dddd HH:mm\"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),\"凌晨\"===b||\"早上\"===b||\"上午\"===b?a:\"中午\"===b?a>=11?a:a+12:\"下午\"===b||\"晚上\"===b?a+12:void 0},meridiem:function(a,b,c){var d=100*a+b;return d<600?\"凌晨\":d<900?\"早上\":d<1130?\"上午\":d<1230?\"中午\":d<1800?\"下午\":\"晚上\"},calendar:{sameDay:\"[今天]LT\",nextDay:\"[明天]LT\",nextWeek:\"[下]ddddLT\",lastDay:\"[昨天]LT\",lastWeek:\"[上]ddddLT\",sameElse:\"L\"},dayOfMonthOrdinalParse:/\\d{1,2}(日|月|週)/,ordinal:function(a,b){switch(b){case\"d\":case\"D\":case\"DDD\":return a+\"日\";case\"M\":return a+\"月\";case\"w\":case\"W\":return a+\"週\";default:return a}},relativeTime:{future:\"%s內\",past:\"%s前\",s:\"幾秒\",m:\"1 分鐘\",mm:\"%d 分鐘\",h:\"1 小時\",hh:\"%d 小時\",d:\"1 天\",dd:\"%d 天\",M:\"1 個月\",MM:\"%d 個月\",y:\"1 年\",yy:\"%d 年\"}}),a.defineLocale(\"zh-tw\",{months:\"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月\".split(\"_\"),monthsShort:\"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月\".split(\"_\"),weekdays:\"星期日_星期一_星期二_星期三_星期四_星期五_星期六\".split(\"_\"),weekdaysShort:\"週日_週一_週二_週三_週四_週五_週六\".split(\"_\"),weekdaysMin:\"日_一_二_三_四_五_六\".split(\"_\"),longDateFormat:{LT:\"HH:mm\",LTS:\"HH:mm:ss\",L:\"YYYY年MMMD日\",LL:\"YYYY年MMMD日\",LLL:\"YYYY年MMMD日 HH:mm\",LLLL:\"YYYY年MMMD日dddd HH:mm\",l:\"YYYY年MMMD日\",ll:\"YYYY年MMMD日\",lll:\"YYYY年MMMD日 HH:mm\",llll:\"YYYY年MMMD日dddd HH:mm\"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),\"凌晨\"===b||\"早上\"===b||\"上午\"===b?a:\"中午\"===b?a>=11?a:a+12:\"下午\"===b||\"晚上\"===b?a+12:void 0},meridiem:function(a,b,c){var d=100*a+b;return d<600?\"凌晨\":d<900?\"早上\":d<1130?\"上午\":d<1230?\"中午\":d<1800?\"下午\":\"晚上\"},calendar:{sameDay:\"[今天]LT\",nextDay:\"[明天]LT\",nextWeek:\"[下]ddddLT\",lastDay:\"[昨天]LT\",lastWeek:\"[上]ddddLT\",sameElse:\"L\"},dayOfMonthOrdinalParse:/\\d{1,2}(日|月|週)/,ordinal:function(a,b){switch(b){case\"d\":case\"D\":case\"DDD\":return a+\"日\";case\"M\":return a+\"月\";case\"w\":case\"W\":return a+\"週\";default:return a}},relativeTime:{future:\"%s內\",past:\"%s前\",s:\"幾秒\",m:\"1 分鐘\",mm:\"%d 分鐘\",h:\"1 小時\",hh:\"%d 小時\",d:\"1 天\",dd:\"%d 天\",M:\"1 個月\",MM:\"%d 個月\",y:\"1 年\",yy:\"%d 年\"}}),a.locale(\"en\"),a});",
"type": "application/javascript",
"title": "$:/plugins/kixam/moment/moment.js",
"module-type": "library"
},
"$:/plugins/kixam/moment/icon": {
"text": "<svg height=\"22pt\" width=\"22pt\" viewBox=\"0 0 128 128\">\n<path d=\"m 64.116816,0 -54.4965957,31.959746 0.00139,63.919491 54.4965967,31.959743 54.496603,-31.959743 0,-63.919491 L 64.118211,0 Z M 63.842544,28.318892 A 35.326327,35.326327 0 0 1 99.17259,63.645219 35.326327,35.326327 0 0 1 63.842544,98.975265 35.326327,35.326327 0 0 1 28.516216,63.645219 35.326327,35.326327 0 0 1 63.842544,28.318892 Z m 0,4.775599 c -16.870097,0 -30.550728,13.680631 -30.550728,30.550728 0,16.874746 13.680631,30.555841 30.550728,30.555841 16.874745,0 30.555841,-13.681095 30.555841,-30.555841 0,-16.870097 -13.681096,-30.550728 -30.555841,-30.550728 z m 0,1.906893 c 1.06455,0 1.910611,0.860008 1.910611,1.915725 l 0,28.638722 -17.190856,0 c -1.027361,0 -1.905499,-0.85536 -1.905499,-1.910612 0,-1.059902 0.854895,-1.905963 1.905499,-1.905963 l 13.374282,0 0,-24.81285 c 0,-1.06362 0.855359,-1.925022 1.905963,-1.925022 z\"/>\n</svg>\n",
"title": "$:/plugins/kixam/moment/icon",
"tags": "$:/tags/Image",
"type": "text/vnd.tiddlywiki"
},
"$:/plugins/kixam/moment/readme": {
"text": "! moment.js\n\nA plugin for [[TiddlyWiki|http://tiddlywiki.com]] 5, that provides the [[moment.js library|http://momentjs.com]].\n",
"title": "$:/plugins/kixam/moment/readme"
},
"$:/plugins/kixam/moment/license": {
"text": "!! moment.js licence: [[MIT|http://mit-license.org/]]\n```\nCopyright (c) 2011-2015 Tim Wood, Iskren Chernev, Moment.js contributors\n\nPermission is hereby granted, free of charge, to any person\nobtaining a copy of this software and associated documentation\nfiles (the \"Software\"), to deal in the Software without\nrestriction, including without limitation the rights to use,\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n```\n\n!! Plugin license: [[BSD 2-clause simplified license|http://www.freebsd.org/copyright/freebsd-license.html]]\n```\nCopyright (c) 2015, kixam\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n1. Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n```\n",
"title": "$:/plugins/kixam/moment/license"
}
}
}
{
"tiddlers": {
"$:/plugins/mklauber/math.js/calc.js": {
"text": "/*\\\ntitle: $:/plugins/mklauber/math.js/calc.js\ntype: application/javascript\nmodule-type: widget\n\nText node widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar math = require(\"$:/plugins/mklauber/math.js/math.js\");\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CalcWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCalcWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCalcWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\n\tthis.expression = this.document.createElement(\"div\");\n\tthis.renderChildren(this.expression);\n\t\n\tvar text = \"\";\n\ttry {\n\t\ttext = math.eval(this.expression.textContent.trim());\n\t} catch(err) {\n\t\tif(!this.silence){\n\t\t\ttext = \"Unable to parse '\" + this.expression.textContent + \"'\";\n\t\t}\n\t}\n\tvar textNode = this.document.createTextNode(text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nCalcWidget.prototype.execute = function() {\n\tthis.silence = this.getAttribute(\"silence\",false);\n\tvar calc = {\n\t\ttype: \"element\",\n\t\ttag: \"div\",\n\t\tchildren: this.parseTreeNode.children\n\t};\n\tthis.makeChildWidgets([calc]);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCalcWidget.prototype.refresh = function(changedTiddlers) {\n\tif(this.refreshChildren(changedTiddlers)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nexports.calc = CalcWidget;\n\n})();\n",
"title": "$:/plugins/mklauber/math.js/calc.js",
"type": "application/javascript",
"module-type": "widget"
},
"$:/plugins/mklauber/math.js/math.js": {
"text": "/*\\\ntitle: $:/plugins/mklauber/math.js/math.js\ntype: application/javascript\nmodule-type: library\n\\*/\n/**\n * math.js\n * https://github.com/josdejong/mathjs\n *\n * Math.js is an extensive math library for JavaScript and Node.js,\n * It features real and complex numbers, units, matrices, a large set of\n * mathematical functions, and a flexible expression parser.\n *\n * @version 2.4.1\n * @date 2015-10-29\n *\n * @license\n * Copyright (C) 2013-2015 Jos de Jong <wjosdejong@gmail.com>\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not\n * use this file except in compliance with the License. You may obtain a copy\n * of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.math=t():e.math=t()}(this,function(){return function(e){function t(n){if(r[n])return r[n].exports;var i=r[n]={exports:{},id:n,loaded:!1};return e[n].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var r={};return t.m=e,t.c=r,t.p=\"\",t(0)}([function(e,t,r){function n(e){var t=i.create(e);return t.create=n,t[\"import\"](r(13)),t}var i=r(1);e.exports=n()},function(e,t,r){e.exports=r(2)},function(e,t,r){var n=r(3).isFactory,i=r(3).deepExtend,a=r(4),o=r(8),s=r(10),u=r(12);t.create=function(e){function t(e){if(!n(e))throw new Error(\"Factory object with properties `type`, `name`, and `factory` expected\");var i,a=r.indexOf(e);return-1===a?(i=e.math===!0?e.factory(f.type,l,t,f.typed,f):e.factory(f.type,l,t,f.typed),r.push(e),c.push(i)):i=c[a],i}if(\"function\"!=typeof Object.create)throw new Error(\"ES5 not supported by this JavaScript engine. Please load the es5-shim and es5-sham library for compatibility.\");var r=[],c=[],f=o.mixin({});f.type={},f.expression={transform:Object.create(f)},f.typed=a.create(f.type);var l={epsilon:1e-14,matrix:\"matrix\",number:\"number\",precision:64,predictable:!1};return e&&i(l,e),f[\"import\"]=t(s),f.config=t(u),f}},function(e,t){\"use strict\";t.clone=function r(e){var t=typeof e;if(\"number\"===t||\"string\"===t||\"boolean\"===t||null===e||void 0===e)return e;if(\"function\"==typeof e.clone)return e.clone();if(Array.isArray(e))return e.map(function(e){return r(e)});if(e instanceof Number)return new Number(e.valueOf());if(e instanceof String)return new String(e.valueOf());if(e instanceof Boolean)return new Boolean(e.valueOf());if(e instanceof Date)return new Date(e.valueOf());if(e&&e.isBigNumber===!0)return e;if(e instanceof RegExp)throw new TypeError(\"Cannot clone \"+e);var n={};for(var i in e)e.hasOwnProperty(i)&&(n[i]=r(e[i]));return n},t.extend=function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e},t.deepExtend=function n(e,t){if(Array.isArray(t))throw new TypeError(\"Arrays are not supported by deepExtend\");for(var r in t)if(t.hasOwnProperty(r))if(t[r]&&t[r].constructor===Object)void 0===e[r]&&(e[r]={}),e[r].constructor===Object?n(e[r],t[r]):e[r]=t[r];else{if(Array.isArray(t[r]))throw new TypeError(\"Arrays are not supported by deepExtend\");e[r]=t[r]}return e},t.deepEqual=function(e,r){var n,i,a;if(Array.isArray(e)){if(!Array.isArray(r))return!1;if(e.length!=r.length)return!1;for(i=0,a=e.length;a>i;i++)if(!t.deepEqual(e[i],r[i]))return!1;return!0}if(e instanceof Object){if(Array.isArray(r)||!(r instanceof Object))return!1;for(n in e)if(!t.deepEqual(e[n],r[n]))return!1;for(n in r)if(!t.deepEqual(e[n],r[n]))return!1;return!0}return typeof e==typeof r&&e==r},t.canDefineProperty=function(){try{if(Object.defineProperty)return Object.defineProperty({},\"x\",{get:function(){}}),!0}catch(e){}return!1},t.lazy=function(e,r,n){if(t.canDefineProperty()){var i,a=!0;Object.defineProperty(e,r,{get:function(){return a&&(i=n(),a=!1),i},set:function(e){i=e,a=!1},configurable:!0,enumerable:!0})}else e[r]=n()},t.traverse=function(e,t){var r=e;if(t)for(var n=t.split(\".\"),i=0;i<n.length;i++){var a=n[i];a in r||(r[a]={}),r=r[a]}return r},t.isFactory=function(e){return e&&\"function\"==typeof e.factory}},function(e,t,r){var n=r(5),i=r(6).digits,a=function(){return a=n.create,n};t.create=function(e){var t=a();return t.types=[{name:\"number\",test:function(e){return\"number\"==typeof e}},{name:\"Complex\",test:function(e){return e&&e.isComplex}},{name:\"BigNumber\",test:function(e){return e&&e.isBigNumber}},{name:\"Fraction\",test:function(e){return e&&e.isFraction}},{name:\"Unit\",test:function(e){return e&&e.isUnit}},{name:\"string\",test:function(e){return\"string\"==typeof e}},{name:\"Array\",test:Array.isArray},{name:\"Matrix\",test:function(e){return e&&e.isMatrix}},{name:\"DenseMatrix\",test:function(e){return e&&e.isDenseMatrix}},{name:\"SparseMatrix\",test:function(e){return e&&e.isSparseMatrix}},{name:\"ImmutableDenseMatrix\",test:function(e){return e&&e.isImmutableDenseMatrix}},{name:\"Range\",test:function(e){return e&&e.isRange}},{name:\"Index\",test:function(e){return e&&e.isIndex}},{name:\"boolean\",test:function(e){return\"boolean\"==typeof e}},{name:\"ResultSet\",test:function(e){return e&&e.isResultSet}},{name:\"Help\",test:function(e){return e&&e.isHelp}},{name:\"function\",test:function(e){return\"function\"==typeof e}},{name:\"Date\",test:function(e){return e instanceof Date}},{name:\"RegExp\",test:function(e){return e instanceof RegExp}},{name:\"Object\",test:function(e){return\"object\"==typeof e}},{name:\"null\",test:function(e){return null===e}},{name:\"undefined\",test:function(e){return void 0===e}}],t.conversions=[{from:\"number\",to:\"BigNumber\",convert:function(t){if(i(t)>15)throw new TypeError(\"Cannot implicitly convert a number with >15 significant digits to BigNumber (value: \"+t+\"). Use function bignumber(x) to convert to BigNumber.\");return new e.BigNumber(t)}},{from:\"number\",to:\"Complex\",convert:function(t){return new e.Complex(t,0)}},{from:\"number\",to:\"string\",convert:function(e){return e+\"\"}},{from:\"BigNumber\",to:\"Complex\",convert:function(t){return new e.Complex(t.toNumber(),0)}},{from:\"number\",to:\"Fraction\",convert:function(t){if(i(t)>15)throw new TypeError(\"Cannot implicitly convert a number with >15 significant digits to Fraction (value: \"+t+\"). Use function fraction(x) to convert to Fraction.\");return new e.Fraction(t)}},{from:\"string\",to:\"number\",convert:function(e){var t=Number(e);if(isNaN(t))throw new Error('Cannot convert \"'+e+'\" to a number');return t}},{from:\"boolean\",to:\"number\",convert:function(e){return+e}},{from:\"boolean\",to:\"BigNumber\",convert:function(t){return new e.BigNumber(+t)}},{from:\"boolean\",to:\"string\",convert:function(e){return+e}},{from:\"null\",to:\"number\",convert:function(){return 0}},{from:\"null\",to:\"string\",convert:function(){return\"null\"}},{from:\"null\",to:\"BigNumber\",convert:function(){return new e.BigNumber(0)}},{from:\"Array\",to:\"Matrix\",convert:function(t){return new e.DenseMatrix(t)}},{from:\"Matrix\",to:\"Array\",convert:function(e){return e.valueOf()}}],t}},function(e,t,r){var n,i,a;!function(r){i=[],n=r,a=\"function\"==typeof n?n.apply(t,i):n,!(void 0!==a&&(e.exports=a))}(function(){function e(){function t(e){for(var t,r=0;r<N.types.length;r++){var n=N.types[r];if(n.name===e){t=n.test;break}}if(!t){var i;for(r=0;r<N.types.length;r++)if(n=N.types[r],n.name.toLowerCase()==e.toLowerCase()){i=n.name;break}throw new Error('Unknown type \"'+e+'\"'+(i?'. Did you mean \"'+i+'\"?':\"\"))}return t}function r(e){for(var t=\"\",r=0;r<e.length;r++){var n=e[r];if(\"\"!=n.name)if(\"\"==t)t=n.name;else if(t!=n.name){var i=new Error(\"Function names do not match (expected: \"+t+\", actual: \"+n.name+\")\");throw i.data={actual:n.name,expected:t},i}}return t}function n(e,t,r,n,i){var a,o=h(n),s=i?i.split(\",\"):null,u=e||\"unnamed\",c=s&&g(s,\"any\"),f={fn:e,index:r,actual:n,expected:s};a=s?t>r&&!c?\"Unexpected type of argument in function \"+u+\" (expected: \"+s.join(\" or \")+\", actual: \"+o+\", index: \"+r+\")\":\"Too few arguments in function \"+u+\" (expected: \"+s.join(\" or \")+\", index: \"+r+\")\":\"Too many arguments in function \"+u+\" (expected: \"+r+\", actual: \"+t+\")\";var l=new TypeError(a);return l.data=f,l}function i(e){this.name=e||\"refs\",this.categories={}}function a(e,t){if(\"string\"==typeof e){var r=e.trim(),n=\"...\"===r.substr(0,3);if(n&&(r=r.substr(3)),\"\"===r)this.types=[\"any\"];else{this.types=r.split(\"|\");for(var i=0;i<this.types.length;i++)this.types[i]=this.types[i].trim()}}else{if(!Array.isArray(e)){if(e instanceof a)return e.clone();throw new Error(\"String or Array expected\")}this.types=e}this.conversions=[],this.varArgs=n||t||!1,this.anyType=-1!==this.types.indexOf(\"any\")}function o(e,t){var r;if(\"string\"==typeof e)r=\"\"!==e?e.split(\",\"):[];else{if(!Array.isArray(e))throw new Error(\"string or Array expected\");r=e}this.params=new Array(r.length);for(var n=0;n<r.length;n++){var i=new a(r[n]);if(this.params[n]=i,n===r.length-1)this.varArgs=i.varArgs;else if(i.varArgs)throw new SyntaxError('Unexpected variable arguments operator \"...\"')}this.fn=t}function s(e,t,r){this.path=e||[],this.param=e[e.length-1]||null,this.signature=t||null,this.childs=r||[]}function u(e){var t,r,n={},i=[];for(var a in e)if(e.hasOwnProperty(a)){var s=e[a];if(t=new o(a,s),t.ignore())continue;var u=t.expand();for(r=0;r<u.length;r++){var c=u[r],f=c.toString(),l=n[f];if(l){var p=o.compare(c,l);if(0>p)n[f]=c;else if(0===p)throw new Error('Signature \"'+f+'\" is defined twice')}else n[f]=c}}for(f in n)n.hasOwnProperty(f)&&i.push(n[f]);for(i.sort(function(e,t){return o.compare(e,t)}),r=0;r<i.length;r++)if(t=i[r],t.varArgs)for(var m=t.params.length-1,h=t.params[m],v=0;v<h.types.length;){if(h.conversions[v])for(var d=h.types[v],y=0;y<i.length;y++){var x=i[y],w=x.params[m];if(x!==t&&w&&g(w.types,d)&&!w.conversions[m]){h.types.splice(v,1),h.conversions.splice(v,1),v--;break}}v++}return i}function c(e){for(var t={},r=0;r<e.length;r++){var n=e[r];if(n.fn&&!n.hasConversions()){var i=n.params.join(\",\");t[i]=n.fn}}return t}function f(e,t){var r,n,i,o=t.length,u=[];for(r=0;r<e.length;r++)n=e[r],n.params.length!==o||i||(i=n),void 0!=n.params[o]&&u.push(n);u.sort(function(e,t){return a.compare(e.params[o],t.params[o])});var c=[];for(r=0;r<u.length;r++){n=u[r];var l=n.params[o],p=c.filter(function(e){return e.param.overlapping(l)})[0];if(p){if(p.param.varArgs)throw new Error('Conflicting types \"'+p.param+'\" and \"'+l+'\"');p.signatures.push(n)}else c.push({param:l,signatures:[n]})}var m=new Array(c.length);for(r=0;r<c.length;r++){var h=c[r];m[r]=f(h.signatures,t.concat(h.param))}return new s(t,i,m)}function l(e){for(var t=[],r=0;e>r;r++)t[r]=\"arg\"+r;return t}function p(e,t){var r=new i,a=u(t);if(0==a.length)throw new Error(\"No signatures provided\");var o=f(a,[]),s=[],p=e||\"\",h=l(m(a));s.push(\"function \"+p+\"(\"+h.join(\", \")+\") {\"),s.push(' \"use strict\";'),s.push(\" var name = '\"+p+\"';\"),s.push(o.toCode(r,\" \")),s.push(\"}\");var g=[r.toCode(),\"return \"+s.join(\"\\n\")].join(\"\\n\"),v=new Function(r.name,\"createError\",g),d=v(r,n);return d.signatures=c(a),d}function m(e){for(var t=0,r=0;r<e.length;r++){var n=e[r].params.length;n>t&&(t=n)}return t}function h(e){for(var t,r=0;r<N.types.length;r++){var n=N.types[r];if(\"Object\"===n.name)t=n;else if(n.test(e))return n.name}return t&&t.test(e)?t.name:\"unknown\"}function g(e,t){return-1!==e.indexOf(t)}function v(e,t){if(!e.signatures)throw new TypeError(\"Function is no typed-function\");var r;if(\"string\"==typeof t){r=t.split(\",\");for(var n=0;n<r.length;n++)r[n]=r[n].trim()}else{if(!Array.isArray(t))throw new TypeError(\"String array or a comma separated string expected\");r=t}var i=r.join(\",\"),a=e.signatures[i];if(a)return a;throw new TypeError(\"Signature not found (signature: \"+(e.name||\"unnamed\")+\"(\"+r.join(\", \")+\"))\")}function d(e,t){var r=h(e);if(t===r)return e;for(var n=0;n<N.conversions.length;n++){var i=N.conversions[n];if(i.from===r&&i.to===t)return i.convert(e)}throw new Error(\"Cannot convert from \"+r+\" to \"+t)}i.prototype.add=function(e,t){var r=t||\"fn\";this.categories[r]||(this.categories[r]=[]);var n=this.categories[r].indexOf(e);return-1==n&&(n=this.categories[r].length,this.categories[r].push(e)),r+n},i.prototype.toCode=function(){var e=[],t=this.name+\".categories\",r=this.categories;for(var n in r)if(r.hasOwnProperty(n))for(var i=r[n],a=0;a<i.length;a++)e.push(\"var \"+n+a+\" = \"+t+\"['\"+n+\"'][\"+a+\"];\");return e.join(\"\\n\")},a.compare=function(e,t){if(e.anyType)return 1;if(t.anyType)return-1;if(g(e.types,\"Object\"))return 1;if(g(t.types,\"Object\"))return-1;if(e.hasConversions()){if(t.hasConversions()){var r,n,i;for(r=0;r<e.conversions.length;r++)if(void 0!==e.conversions[r]){n=e.conversions[r];break}for(r=0;r<t.conversions.length;r++)if(void 0!==t.conversions[r]){i=t.conversions[r];break}return N.conversions.indexOf(n)-N.conversions.indexOf(i)}return 1}if(t.hasConversions())return-1;var a,o;for(r=0;r<N.types.length;r++)if(N.types[r].name===e.types[0]){a=r;break}for(r=0;r<N.types.length;r++)if(N.types[r].name===t.types[0]){o=r;break}return a-o},a.prototype.overlapping=function(e){for(var t=0;t<this.types.length;t++)if(g(e.types,this.types[t]))return!0;return!1},a.prototype.clone=function(){var e=new a(this.types.slice(),this.varArgs);return e.conversions=this.conversions.slice(),e},a.prototype.hasConversions=function(){return this.conversions.length>0},a.prototype.contains=function(e){for(var t=0;t<this.types.length;t++)if(e[this.types[t]])return!0;return!1},a.prototype.toString=function(e){for(var t=[],r={},n=0;n<this.types.length;n++){var i=this.conversions[n],a=e&&i?i.to:this.types[n];a in r||(r[a]=!0,t.push(a))}return(this.varArgs?\"...\":\"\")+t.join(\"|\")},o.prototype.clone=function(){return new o(this.params.slice(),this.fn)},o.prototype.expand=function(){function e(r,n){if(n.length<r.params.length){var i,s,u,c=r.params[n.length];if(c.varArgs){for(s=c.clone(),i=0;i<N.conversions.length;i++)if(u=N.conversions[i],!g(c.types,u.from)&&g(c.types,u.to)){var f=s.types.length;s.types[f]=u.from,s.conversions[f]=u}e(r,n.concat(s))}else{for(i=0;i<c.types.length;i++)e(r,n.concat(new a(c.types[i])));for(i=0;i<N.conversions.length;i++)u=N.conversions[i],!g(c.types,u.from)&&g(c.types,u.to)&&(s=new a(u.from),s.conversions[0]=u,e(r,n.concat(s)))}}else t.push(new o(n,r.fn))}var t=[];return e(this,[]),t},o.compare=function(e,t){if(e.params.length>t.params.length)return 1;if(e.params.length<t.params.length)return-1;var r,n=e.params.length,i=0,o=0;for(r=0;n>r;r++)e.params[r].hasConversions()&&i++,t.params[r].hasConversions()&&o++;if(i>o)return 1;if(o>i)return-1;for(r=0;r<e.params.length;r++){var s=a.compare(e.params[r],t.params[r]);if(0!==s)return s}return 0},o.prototype.hasConversions=function(){for(var e=0;e<this.params.length;e++)if(this.params[e].hasConversions())return!0;return!1},o.prototype.ignore=function(){for(var e={},t=0;t<N.ignore.length;t++)e[N.ignore[t]]=!0;for(t=0;t<this.params.length;t++)if(this.params[t].contains(e))return!0;return!1},o.prototype.toCode=function(e,t){for(var r=[],n=new Array(this.params.length),i=0;i<this.params.length;i++){var a=this.params[i],o=a.conversions[0];a.varArgs?n[i]=\"varArgs\":o?n[i]=e.add(o.convert,\"convert\")+\"(arg\"+i+\")\":n[i]=\"arg\"+i}var s=this.fn?e.add(this.fn,\"signature\"):void 0;return s?t+\"return \"+s+\"(\"+n.join(\", \")+\"); // signature: \"+this.params.join(\", \"):r.join(\"\\n\")},o.prototype.toString=function(){return this.params.join(\", \")},s.prototype.toCode=function(e,r,n){var i=[];if(this.param){var a=this.path.length-1,o=this.param.conversions[0],s=\"// type: \"+(o?o.from+\" (convert to \"+o.to+\")\":this.param);if(this.param.varArgs)if(this.param.anyType)i.push(r+\"if (arguments.length > \"+a+\") {\"),i.push(r+\" var varArgs = [];\"),i.push(r+\" for (var i = \"+a+\"; i < arguments.length; i++) {\"),i.push(r+\" varArgs.push(arguments[i]);\"),i.push(r+\" }\"),i.push(this.signature.toCode(e,r+\" \")),i.push(r+\"}\");else{for(var u=function(r,n){for(var i=[],a=0;a<r.length;a++)i[a]=e.add(t(r[a]),\"test\")+\"(\"+n+\")\";return i.join(\" || \")}.bind(this),c=this.param.types,f=[],l=0;l<c.length;l++)void 0===this.param.conversions[l]&&f.push(c[l]);i.push(r+\"if (\"+u(c,\"arg\"+a)+\") { \"+s),i.push(r+\" var varArgs = [arg\"+a+\"];\"),i.push(r+\" for (var i = \"+(a+1)+\"; i < arguments.length; i++) {\"),i.push(r+\" if (\"+u(f,\"arguments[i]\")+\") {\"),i.push(r+\" varArgs.push(arguments[i]);\");for(var l=0;l<c.length;l++){var p=this.param.conversions[l];if(p){var m=e.add(t(c[l]),\"test\"),h=e.add(p.convert,\"convert\");i.push(r+\" }\"),i.push(r+\" else if (\"+m+\"(arguments[i])) {\"),i.push(r+\" varArgs.push(\"+h+\"(arguments[i]));\")}}i.push(r+\" } else {\"),i.push(r+\" throw createError(name, arguments.length, i, arguments[i], '\"+f.join(\",\")+\"');\"),i.push(r+\" }\"),i.push(r+\" }\"),i.push(this.signature.toCode(e,r+\" \")),i.push(r+\"}\")}else if(this.param.anyType)i.push(r+\"// type: any\"),i.push(this._innerCode(e,r,n));else{var g=this.param.types[0],m=\"any\"!==g?e.add(t(g),\"test\"):null;i.push(r+\"if (\"+m+\"(arg\"+a+\")) { \"+s),i.push(this._innerCode(e,r+\" \",n)),i.push(r+\"}\")}}else i.push(this._innerCode(e,r,n));return i.join(\"\\n\")},s.prototype._innerCode=function(e,t,r){var n,i=[];this.signature&&(i.push(t+\"if (arguments.length === \"+this.path.length+\") {\"),i.push(this.signature.toCode(e,t+\" \")),i.push(t+\"}\"));var a;for(n=0;n<this.childs.length;n++)if(this.childs[n].param.anyType){a=this.childs[n];break}for(n=0;n<this.childs.length;n++)i.push(this.childs[n].toCode(e,t,a));r&&!this.param.anyType&&i.push(r.toCode(e,t,a));var o=this._exceptions(e,t);return o&&i.push(o),i.join(\"\\n\")},s.prototype._exceptions=function(e,t){var r=this.path.length;if(0===this.childs.length)return[t+\"if (arguments.length > \"+r+\") {\",t+\" throw createError(name, arguments.length, \"+r+\", arguments[\"+r+\"]);\",t+\"}\"].join(\"\\n\");for(var n={},i=[],a=0;a<this.childs.length;a++){var o=this.childs[a];if(o.param)for(var s=0;s<o.param.types.length;s++){var u=o.param.types[s];u in n||o.param.conversions[s]||(n[u]=!0,i.push(u))}}return t+\"throw createError(name, arguments.length, \"+r+\", arguments[\"+r+\"], '\"+i.join(\",\")+\"');\"};var y=[{name:\"number\",test:function(e){return\"number\"==typeof e}},{name:\"string\",test:function(e){return\"string\"==typeof e}},{name:\"boolean\",test:function(e){return\"boolean\"==typeof e}},{name:\"Function\",test:function(e){return\"function\"==typeof e}},{name:\"Array\",test:Array.isArray},{name:\"Date\",test:function(e){return e instanceof Date}},{name:\"RegExp\",test:function(e){return e instanceof RegExp}},{name:\"Object\",test:function(e){return\"object\"==typeof e}},{name:\"null\",test:function(e){return null===e}},{name:\"undefined\",test:function(e){return void 0===e}}],x={},w=[],b=[],N={config:x,types:y,conversions:w,ignore:b};return N=p(\"typed\",{Object:function(e){var t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(e[n]);var i=r(t);return p(i,e)},\"string, Object\":p,\"...Function\":function(e){for(var t,n=r(e),i={},a=0;a<e.length;a++){var o=e[a];if(\"object\"!=typeof o.signatures)throw t=new TypeError(\"Function is no typed-function (index: \"+a+\")\"),t.data={index:a},t;for(var s in o.signatures)if(o.signatures.hasOwnProperty(s))if(i.hasOwnProperty(s)){if(o.signatures[s]!==i[s])throw t=new Error('Signature \"'+s+'\" is defined twice'),t.data={signature:s},t}else i[s]=o.signatures[s]}return p(n,i)}}),N.config=x,N.types=y,N.conversions=w,N.ignore=b,N.create=e,N.find=v,N.convert=d,N.addType=function(e){if(!e||\"string\"!=typeof e.name||\"function\"!=typeof e.test)throw new TypeError(\"Object with properties {name: string, test: function} expected\");N.types.push(e)},N.addConversion=function(e){if(!e||\"string\"!=typeof e.from||\"string\"!=typeof e.to||\"function\"!=typeof e.convert)throw new TypeError(\"Object with properties {from: string, to: string, convert: function} expected\");N.conversions.push(e)},N}return e()})},function(e,t,r){\"use strict\";var n=r(7);t.isNumber=function(e){return\"number\"==typeof e},t.isInteger=function(e){return isFinite(e)?e==Math.round(e):!1},t.sign=function(e){return e>0?1:0>e?-1:0},t.format=function(e,r){if(\"function\"==typeof r)return r(e);if(e===1/0)return\"Infinity\";if(e===-(1/0))return\"-Infinity\";if(isNaN(e))return\"NaN\";var n=\"auto\",i=void 0;switch(r&&(r.notation&&(n=r.notation),t.isNumber(r)?i=r:r.precision&&(i=r.precision)),n){case\"fixed\":return t.toFixed(e,i);case\"exponential\":return t.toExponential(e,i);case\"auto\":return t.toPrecision(e,i,r&&r.exponential).replace(/((\\.\\d*?)(0+))($|e)/,function(){var e=arguments[2],t=arguments[4];return\".\"!==e?e+t:t});default:throw new Error('Unknown notation \"'+n+'\". Choose \"auto\", \"exponential\", or \"fixed\".')}},t.toExponential=function(e,t){return new n(e).toExponential(t)},t.toFixed=function(e,t){return new n(e).toFixed(t)},t.toPrecision=function(e,t,r){return new n(e).toPrecision(t,r)},t.digits=function(e){return e.toExponential().replace(/e.*$/,\"\").replace(/^0\\.?0*|\\./,\"\").length},t.DBL_EPSILON=Number.EPSILON||2.220446049250313e-16,t.nearlyEqual=function(e,r,n){if(null==n)return e==r;if(e==r)return!0;if(isNaN(e)||isNaN(r))return!1;if(isFinite(e)&&isFinite(r)){var i=Math.abs(e-r);return i<t.DBL_EPSILON?!0:i<=Math.max(Math.abs(e),Math.abs(r))*n}return!1}},function(e,t){\"use strict\";function r(e){var t=String(e).toLowerCase().match(/^0*?(-?)(\\d+\\.?\\d*)(e([+-]?\\d+))?$/);if(!t)throw new SyntaxError(\"Invalid number\");var r=t[1],n=t[2],i=parseFloat(t[4]||\"0\"),a=n.indexOf(\".\");i+=-1!==a?a-1:n.length-1,this.sign=r,this.coefficients=n.replace(\".\",\"\").replace(/^0*/,function(e){return i-=e.length,\"\"}).replace(/0*$/,\"\").split(\"\").map(function(e){return parseInt(e)}),0===this.coefficients.length&&(this.coefficients.push(0),i++),this.exponent=i}function n(e){for(var t=[],r=0;e>r;r++)t.push(0);return t}r.prototype.toFixed=function(e){var t=this.roundDigits(this.exponent+1+(e||0)),r=t.coefficients,i=t.exponent+1,a=i+(e||0);return r.length<a&&(r=r.concat(n(a-r.length))),0>i&&(r=n(-i+1).concat(r),i=1),e&&r.splice(i,0,0===i?\"0.\":\".\"),this.sign+r.join(\"\")},r.prototype.toExponential=function(e){var t=e?this.roundDigits(e):this.clone(),r=t.coefficients,i=t.exponent;r.length<e&&(r=r.concat(n(e-r.length)));var a=r.shift();return this.sign+a+(r.length>0?\".\"+r.join(\"\"):\"\")+\"e\"+(i>=0?\"+\":\"\")+i},r.prototype.toPrecision=function(e,t){var r=t&&void 0!==t.lower?t.lower:.001,i=t&&void 0!==t.upper?t.upper:1e5,a=Math.abs(Math.pow(10,this.exponent));if(r>a||a>=i)return this.toExponential(e);var o=e?this.roundDigits(e):this.clone(),s=o.coefficients,u=o.exponent;s.length<e&&(s=s.concat(n(e-s.length))),s=s.concat(n(u-s.length+1+(s.length<e?e-s.length:0))),s=n(-u).concat(s);var c=u>0?u:0;return c<s.length-1&&s.splice(c+1,0,\".\"),this.sign+s.join(\"\")},r.prototype.clone=function(){var e=new r(\"0\");return e.sign=this.sign,e.coefficients=this.coefficients.slice(0),e.exponent=this.exponent,e},r.prototype.roundDigits=function(e){for(var t=this.clone(),r=t.coefficients;0>=e;)r.unshift(0),t.exponent++,e++;if(r.length>e){var n=r.splice(e);if(n[0]>=5){var i=e-1;for(r[i]++;10===r[i];)r.pop(),0===i&&(r.unshift(0),t.exponent++,i++),i--,r[i]++}}return t},e.exports=r},function(e,t,r){var n=r(9);t.mixin=function(e){var t=new n;return e.on=t.on.bind(t),e.off=t.off.bind(t),e.once=t.once.bind(t),e.emit=t.emit.bind(t),e}},function(e,t){function r(){}r.prototype={on:function(e,t,r){var n=this.e||(this.e={});return(n[e]||(n[e]=[])).push({fn:t,ctx:r}),this},once:function(e,t,r){var n=this,i=function(){n.off(e,i),t.apply(r,arguments)};return this.on(e,i,r)},emit:function(e){var t=[].slice.call(arguments,1),r=((this.e||(this.e={}))[e]||[]).slice(),n=0,i=r.length;for(n;i>n;n++)r[n].fn.apply(r[n].ctx,t);return this},off:function(e,t){var r=this.e||(this.e={}),n=r[e],i=[];if(n&&t)for(var a=0,o=n.length;o>a;a++)n[a].fn!==t&&i.push(n[a]);return i.length?r[e]=i:delete r[e],this}},e.exports=r},function(e,t,r){\"use strict\";function n(e,t,r,n,u){function c(e,t){var r=arguments.length;if(1!=r&&2!=r)throw new s(\"import\",r,1,2);if(t||(t={}),a(e))m(e,t);else if(Array.isArray(e))e.forEach(function(e){c(e,t)});else if(\"object\"==typeof e){for(var n in e)if(e.hasOwnProperty(n)){var i=e[n];h(i)?f(n,i,t):a(e)?m(e,t):c(i,t)}}else if(!t.silent)throw new TypeError(\"Factory, Object, or Array expected\")}function f(e,t,r){if(r.wrap&&\"function\"==typeof t&&(t=p(t)),g(u[e])&&g(t))return t=r.override?n(e,t.signatures):n(u[e],t),u[e]=t,l(e,t),void u.emit(\"import\",e,function(){return t});if(void 0===u[e]||r.override)return u[e]=t,l(e,t),void u.emit(\"import\",e,function(){return t});if(!r.silent)throw new Error('Cannot import \"'+e+'\": already exists')}function l(e,t){t&&\"function\"==typeof t.transform&&(u.expression.transform[e]=t.transform)}function p(e){var t=function(){for(var t=[],r=0,n=arguments.length;n>r;r++){var i=arguments[r];t[r]=i&&i.valueOf()}return e.apply(u,t)};return e.transform&&(t.transform=e.transform),t}function m(e,t){if(\"string\"==typeof e.name){var a=e.name,s=e.path?o(u,e.path):u,c=s.hasOwnProperty(a)?s[a]:void 0,f=function(){var i=r(e);if(g(c)&&g(i))return t.override||(i=n(c,i)),i;if(void 0===c||t.override)return i;if(!t.silent)throw new Error('Cannot import \"'+a+'\": already exists')};e.lazy!==!1?i(s,a,f):s[a]=f(),u.emit(\"import\",a,f,e.path)}else r(e)}function h(e){return\"function\"==typeof e||\"number\"==typeof e||\"string\"==typeof e||\"boolean\"==typeof e||null===e||e&&e.isUnit===!0||e&&e.isComplex===!0}function g(e){return\"function\"==typeof e&&\"object\"==typeof e.signatures}return c}var i=r(3).lazy,a=r(3).isFactory,o=r(3).traverse,s=(r(3).extend,r(11));t.math=!0,t.name=\"import\",t.factory=n,t.lazy=!0},function(e,t){\"use strict\";function r(e,t,n,i){if(!(this instanceof r))throw new SyntaxError(\"Constructor must be called with the new operator\");this.fn=e,this.count=t,this.min=n,this.max=i,this.message=\"Wrong number of arguments in function \"+e+\" (\"+t+\" provided, \"+n+(void 0!=i?\"-\"+i:\"\")+\" expected)\",this.stack=(new Error).stack}r.prototype=new Error,r.prototype.constructor=Error,r.prototype.name=\"ArgumentsError\",r.prototype.isArgumentsError=!0,e.exports=r},function(e,t,r){\"use strict\";function n(e,t,r,n,a){return function(e){if(e){var r=i.clone(t);i.deepExtend(t,e);var n=i.clone(t);return a.emit(\"config\",n,r),n}return i.clone(t)}}var i=r(3);t.name=\"config\",t.math=!0,t.factory=n},function(e,t,r){e.exports=[r(14),r(76),r(80),r(312),r(495),r(497)]},function(e,t,r){e.exports=[r(15),r(20),r(21),r(26),r(31),r(37),r(69),r(70),r(72),r(73)]},function(e,t,r){e.exports=[r(16),r(18)]},function(e,t,r){function n(e,t,r,n,a){var o=i.constructor(t);return o.prototype.type=\"BigNumber\",o.prototype.isBigNumber=!0,o.prototype.toJSON=function(){return{mathjs:\"BigNumber\",value:this.toString()}},o.fromJSON=function(e){return new o(e.value)},a.on(\"config\",function(e,t){e.precision!==t.precision&&o.config({precision:e.precision})}),o}var i=r(17);r(6).digits;t.name=\"BigNumber\",t.path=\"type\",t.factory=n,t.math=!0},function(e,t,r){var n;!function(i){\"use strict\";function a(e){for(var t,r,n=1,i=e.length,a=e[0]+\"\";i>n;n++){for(t=e[n]+\"\",r=_-t.length;r--;)t=\"0\"+t;a+=t}for(i=a.length;48===a.charCodeAt(--i););return a.slice(0,i+1||1)}function o(e,t,r,n){var i,a,o,s,u;for(a=1,o=e[0];o>=10;o/=10,a++);return o=t-a,0>o?(o+=_,i=0):(i=Math.ceil((o+1)/_),o%=_),a=E(10,_-o),u=e[i]%a|0,null==n?3>o?(0==o?u=u/100|0:1==o&&(u=u/10|0),s=4>r&&99999==u||r>3&&49999==u||5e4==u||0==u):s=(4>r&&u+1==a||r>3&&u+1==a/2)&&(e[i+1]/a/100|0)==E(10,o-2)-1||(u==a/2||0==u)&&0==(e[i+1]/a/100|0):4>o?(0==o?u=u/1e3|0:1==o?u=u/100|0:2==o&&(u=u/10|0),s=(n||4>r)&&9999==u||!n&&r>3&&4999==u):s=((n||4>r)&&u+1==a||!n&&r>3&&u+1==a/2)&&(e[i+1]/a/1e3|0)==E(10,o-3)-1,s}function s(e,t,r){var n=e.constructor;return null==t||((y=0>t||t>8)||0!==t&&(n.errors?parseInt:parseFloat)(t)!=t)&&!p(n,\"rounding mode\",t,r,0)?n.rounding:0|t}function u(e,t,r,n){var i=e.constructor;return!(y=(n||0)>t||t>=S+1)&&(0===t||(i.errors?parseInt:parseFloat)(t)==t)||p(i,\"argument\",t,r,0)}function c(e,t){var r,n,i,s,u,c,f,l=0,p=0,m=0,h=e.constructor,v=h.ONE,d=h.rounding,y=h.precision;if(!e.c||!e.c[0]||e.e>17)return new h(e.c?e.c[0]?e.s<0?0:1/0:v:e.s?e.s<0?0:e:NaN);for(null==t?(w=!1,u=y):u=t,f=new h(.03125);e.e>-2;)e=e.times(f),m+=5;for(n=Math.log(E(2,m))/Math.LN10*2+5|0,u+=n,r=s=c=new h(v),h.precision=u;;){if(s=g(s.times(e),u,1),r=r.times(++p),f=c.plus(k(s,r,u,1)),a(f.c).slice(0,u)===a(c.c).slice(0,u)){for(i=m;i--;)c=g(c.times(c),u,1);if(null!=t)return h.precision=y,c;if(!(3>l&&o(c.c,u-n,d,l)))return g(c,h.precision=y,d,w=!0);h.precision=u+=10,r=s=f=new h(v),p=0,l++}c=f}}function f(e,t,r,n){var i,o,s=e.constructor,u=(e=new s(e)).e;if(null==t?r=0:(g(e,++t,r),r=n?t:t+e.e-u),u=e.e,i=a(e.c),1==n||2==n&&(u>=t||u<=s.toExpNeg)){for(;i.length<r;i+=\"0\");i.length>1&&(i=i.charAt(0)+\".\"+i.slice(1)),i+=(0>u?\"e\":\"e+\")+u}else{if(n=i.length,0>u){for(o=r-n;++u;i=\"0\"+i);i=\"0.\"+i}else if(++u>n){for(o=r-u,u-=n;u--;i+=\"0\");o>0&&(i+=\".\")}else o=r-n,n>u?i=i.slice(0,u)+\".\"+i.slice(u):o>0&&(i+=\".\");if(o>0)for(;o--;i+=\"0\");}return e.s<0&&e.c[0]?\"-\"+i:i}function l(e){var t=e.length-1,r=t*_+1;if(t=e[t]){for(;t%10==0;t/=10,r--);for(t=e[0];t>=10;t/=10,r++);}return r}function p(e,t,r,n,i){if(e.errors){var a=new Error((n||[\"new Decimal\",\"cmp\",\"div\",\"eq\",\"gt\",\"gte\",\"lt\",\"lte\",\"minus\",\"mod\",\"plus\",\"times\",\"toFraction\",\"pow\",\"random\",\"log\",\"sqrt\",\"toNearest\",\"divToInt\"][b?0>b?-b:b:0>1/b?1:0])+\"() \"+([\"number type has more than 15 significant digits\",\"LN10 out of digits\"][t]||t+([y?\" out of range\":\" not an integer\",\" not a boolean or binary digit\"][i]||\"\"))+\": \"+r);throw a.name=\"Decimal Error\",y=b=0,a}}function m(e,t,r){var n=new e(e.ONE);for(w=!1;1&r&&(n=n.times(t)),r>>=1,r;)t=t.times(t);return w=!0,n}function h(e,t){var r,n,i,s,u,c,f,l,m,v,d,y=1,x=10,b=e,N=b.c,E=b.constructor,M=E.ONE,A=E.rounding,_=E.precision;if(b.s<0||!N||!N[0]||!b.e&&1==N[0]&&1==N.length)return new E(N&&!N[0]?-1/0:1!=b.s?NaN:N?0:b);if(null==t?(w=!1,f=_):f=t,E.precision=f+=x,r=a(N),n=r.charAt(0),!(Math.abs(s=b.e)<15e14))return b=new E(n+\".\"+r.slice(1)),f+2>B.length&&p(E,1,f+2,\"ln\"),b=h(b,f-x).plus(new E(B.slice(0,f+2)).times(s+\"\")),E.precision=_,null==t?g(b,_,A,w=!0):b;for(;7>n&&1!=n||1==n&&r.charAt(1)>3;)b=b.times(e),r=a(b.c),n=r.charAt(0),y++;for(s=b.e,n>1?(b=new E(\"0.\"+r),s++):b=new E(n+\".\"+r.slice(1)),v=b,l=u=b=k(b.minus(M),b.plus(M),f,1),d=g(b.times(b),f,1),i=3;;){if(u=g(u.times(d),f,1),m=l.plus(k(u,new E(i),f,1)),a(m.c).slice(0,f)===a(l.c).slice(0,f)){if(l=l.times(2),0!==s&&(f+2>B.length&&p(E,1,f+2,\"ln\"),l=l.plus(new E(B.slice(0,f+2)).times(s+\"\"))),l=k(l,new E(y),f,1),null!=t)return E.precision=_,l;if(!o(l.c,f-x,A,c))return g(l,E.precision=_,A,w=!0);E.precision=f+=x,m=u=b=k(v.minus(M),v.plus(M),f,1),d=g(b.times(b),f,1),i=c=1}l=m,i+=2}}function g(e,t,r,n){var i,a,o,s,u,c,f,l,p=e.constructor;e:if(null!=t){if(!(f=e.c))return e;for(i=1,s=f[0];s>=10;s/=10,i++);if(a=t-i,0>a)a+=_,o=t,u=f[l=0],c=u/E(10,i-o-1)%10|0;else if(l=Math.ceil((a+1)/_),l>=f.length){if(!n)break e;for(;f.length<=l;f.push(0));u=c=0,i=1,a%=_,o=a-_+1}else{for(u=s=f[l],i=1;s>=10;s/=10,i++);a%=_,o=a-_+i,c=0>o?0:N(u/E(10,i-o-1)%10)}if(n=n||0>t||null!=f[l+1]||(0>o?u:u%E(10,i-o-1)),n=4>r?(c||n)&&(0==r||r==(e.s<0?3:2)):c>5||5==c&&(4==r||n||6==r&&(a>0?o>0?u/E(10,i-o):0:f[l-1])%10&1||r==(e.s<0?8:7)),1>t||!f[0])return f.length=0,n?(t-=e.e+1,f[0]=E(10,(_-t%_)%_),e.e=-t||0):f[0]=e.e=0,e;if(0==a?(f.length=l,s=1,l--):(f.length=l+1,s=E(10,_-a),f[l]=o>0?(u/E(10,i-o)%E(10,o)|0)*s:0),n)for(;;){if(0==l){for(a=1,o=f[0];o>=10;o/=10,a++);for(o=f[0]+=s,s=1;o>=10;o/=10,s++);a!=s&&(e.e++,f[0]==A&&(f[0]=1));break}if(f[l]+=s,f[l]!=A)break;f[l--]=0,s=1}for(a=f.length;0===f[--a];f.pop());}return w&&(e.e>p.maxE?e.c=e.e=null:e.e<p.minE&&(e.c=[e.e=0])),e}var v,d,y,x=i.crypto,w=!0,b=0,N=Math.floor,E=Math.pow,M=Object.prototype.toString,A=1e7,_=7,O=\"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_\",T={},C=9e15,S=1e9,z=3e3,B=\"2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058\";T.absoluteValue=T.abs=function(){var e=new this.constructor(this);return e.s<0&&(e.s=1),g(e)},T.ceil=function(){return g(new this.constructor(this),this.e+1,2)},T.comparedTo=T.cmp=function(e,t){var r,n=this,i=n.c,a=(b=-b,e=new n.constructor(e,t),\ne.c),o=n.s,s=e.s,u=n.e,c=e.e;if(!o||!s)return null;if(r=i&&!i[0],t=a&&!a[0],r||t)return r?t?0:-s:o;if(o!=s)return o;if(r=0>o,!i||!a)return u==c?0:!i^r?1:-1;if(u!=c)return u>c^r?1:-1;for(o=-1,s=(u=i.length)<(c=a.length)?u:c;++o<s;)if(i[o]!=a[o])return i[o]>a[o]^r?1:-1;return u==c?0:u>c^r?1:-1},T.decimalPlaces=T.dp=function(){var e,t,r=null;if(e=this.c){if(r=((t=e.length-1)-N(this.e/_))*_,t=e[t])for(;t%10==0;t/=10,r--);0>r&&(r=0)}return r},T.dividedBy=T.div=function(e,t){return b=2,k(this,new this.constructor(e,t))},T.dividedToIntegerBy=T.divToInt=function(e,t){var r=this,n=r.constructor;return b=18,g(k(r,new n(e,t),0,1,1),n.precision,n.rounding)},T.equals=T.eq=function(e,t){return b=3,0===this.cmp(e,t)},T.exponential=T.exp=function(){return c(this)},T.floor=function(){return g(new this.constructor(this),this.e+1,3)},T.greaterThan=T.gt=function(e,t){return b=4,this.cmp(e,t)>0},T.greaterThanOrEqualTo=T.gte=function(e,t){return b=5,t=this.cmp(e,t),1==t||0===t},T.isFinite=function(){return!!this.c},T.isInteger=T.isInt=function(){return!!this.c&&N(this.e/_)>this.c.length-2},T.isNaN=function(){return!this.s},T.isNegative=T.isNeg=function(){return this.s<0},T.isZero=function(){return!!this.c&&0==this.c[0]},T.lessThan=T.lt=function(e,t){return b=6,this.cmp(e,t)<0},T.lessThanOrEqualTo=T.lte=function(e,t){return b=7,t=this.cmp(e,t),-1==t||0===t},T.logarithm=T.log=function(e,t){var r,n,i,s,u,c,f,l,m,v=this,d=v.constructor,y=d.precision,x=d.rounding,N=5;if(null==e)e=new d(10),r=!0;else{if(b=15,e=new d(e,t),n=e.c,e.s<0||!n||!n[0]||!e.e&&1==n[0]&&1==n.length)return new d(NaN);r=e.eq(10)}if(n=v.c,v.s<0||!n||!n[0]||!v.e&&1==n[0]&&1==n.length)return new d(n&&!n[0]?-1/0:1!=v.s?NaN:n?0:1/0);if(u=r&&(s=n[0],n.length>1||1!=s&&10!=s&&100!=s&&1e3!=s&&1e4!=s&&1e5!=s&&1e6!=s),w=!1,f=y+N,l=f+10,c=h(v,f),r?(l>B.length&&p(d,1,l,\"log\"),i=new d(B.slice(0,l))):i=h(e,f),m=k(c,i,f,1),o(m.c,s=y,x))do if(f+=10,c=h(v,f),r?(l=f+10,l>B.length&&p(d,1,l,\"log\"),i=new d(B.slice(0,l))):i=h(e,f),m=k(c,i,f,1),!u){+a(m.c).slice(s+1,s+15)+1==1e14&&(m=g(m,y+1,0));break}while(o(m.c,s+=10,x));return w=!0,g(m,y,x)},T.minus=function(e,t){var r,n,i,a,o=this,s=o.constructor,u=o.s;if(b=8,e=new s(e,t),t=e.s,!u||!t)return new s(NaN);if(u!=t)return e.s=-t,o.plus(e);var c=o.c,f=e.c,l=N(e.e/_),p=N(o.e/_),m=s.precision,h=s.rounding;if(!p||!l){if(!c||!f)return c?(e.s=-t,e):new s(f?o:NaN);if(!c[0]||!f[0])return o=f[0]?(e.s=-t,e):new s(c[0]?o:3==h?-0:0),w?g(o,m,h):o}if(c=c.slice(),n=c.length,u=p-l){for((a=0>u)?(u=-u,r=c,n=f.length):(l=p,r=f),(p=Math.ceil(m/_))>n&&(n=p),u>(n+=2)&&(u=n,r.length=1),r.reverse(),t=u;t--;r.push(0));r.reverse()}else for((a=n<(i=f.length))&&(i=n),u=t=0;i>t;t++)if(c[t]!=f[t]){a=c[t]<f[t];break}if(a&&(r=c,c=f,f=r,e.s=-e.s),(t=-((i=c.length)-f.length))>0)for(;t--;c[i++]=0);for(p=A-1,t=f.length;t>u;){if(c[--t]<f[t]){for(n=t;n&&!c[--n];c[n]=p);--c[n],c[t]+=A}c[t]-=f[t]}for(;0==c[--i];c.pop());for(;0==c[0];c.shift(),--l);for(c[0]||(c=[l=0],e.s=3==h?-1:1),e.c=c,u=1,t=c[0];t>=10;t/=10,u++);return e.e=u+l*_-1,w?g(e,m,h):e},T.modulo=T.mod=function(e,t){var r,n,i=this,a=i.constructor,o=a.modulo;return b=9,e=new a(e,t),t=e.s,r=!i.c||!t||e.c&&!e.c[0],r||!e.c||i.c&&!i.c[0]?r?new a(NaN):g(new a(i),a.precision,a.rounding):(w=!1,9==o?(e.s=1,n=k(i,e,0,3,1),e.s=t,n.s*=t):n=k(i,e,0,o,1),n=n.times(e),w=!0,i.minus(n))},T.naturalLogarithm=T.ln=function(){return h(this)},T.negated=T.neg=function(){var e=new this.constructor(this);return e.s=-e.s||null,g(e)},T.plus=function(e,t){var r,n=this,i=n.constructor,a=n.s;if(b=10,e=new i(e,t),t=e.s,!a||!t)return new i(NaN);if(a!=t)return e.s=-t,n.minus(e);var o=n.c,s=e.c,u=N(e.e/_),c=N(n.e/_),f=i.precision,l=i.rounding;if(!c||!u){if(!o||!s)return new i(a/0);if(!o[0]||!s[0])return n=s[0]?e:new i(o[0]?n:0*a),w?g(n,f,l):n}if(o=o.slice(),a=c-u){for(0>a?(a=-a,r=o,t=s.length):(u=c,r=s,t=o.length),(c=Math.ceil(f/_))>t&&(t=c),a>++t&&(a=t,r.length=1),r.reverse();a--;r.push(0));r.reverse()}for(o.length-s.length<0&&(r=s,s=o,o=r),a=s.length,t=0,c=A;a;o[a]%=c)t=(o[--a]=o[a]+s[a]+t)/c|0;for(t&&(o.unshift(t),++u),a=o.length;0==o[--a];o.pop());for(e.c=o,a=1,t=o[0];t>=10;t/=10,a++);return e.e=a+u*_-1,w?g(e,f,l):e},T.precision=T.sd=function(e){var t=null,r=this;return e!=t&&e!==!!e&&1!==e&&0!==e&&p(r.constructor,\"argument\",e,\"precision\",1),r.c&&(t=l(r.c),e&&r.e+1>t&&(t=r.e+1)),t},T.round=function(){var e=this,t=e.constructor;return g(new t(e),e.e+1,t.rounding)},T.squareRoot=T.sqrt=function(){var e,t,r,n,i,o,s=this,u=s.c,c=s.s,f=s.e,l=s.constructor,p=new l(.5);if(1!==c||!u||!u[0])return new l(!c||0>c&&(!u||u[0])?NaN:u?s:1/0);for(w=!1,c=Math.sqrt(+s),0==c||c==1/0?(t=a(u),(t.length+f)%2==0&&(t+=\"0\"),c=Math.sqrt(t),f=N((f+1)/2)-(0>f||f%2),c==1/0?t=\"1e\"+f:(t=c.toExponential(),t=t.slice(0,t.indexOf(\"e\")+1)+f),n=new l(t)):n=new l(c.toString()),r=(f=l.precision)+3;;)if(o=n,n=p.times(o.plus(k(s,o,r+2,1))),a(o.c).slice(0,r)===(t=a(n.c)).slice(0,r)){if(t=t.slice(r-3,r+1),\"9999\"!=t&&(i||\"4999\"!=t)){(!+t||!+t.slice(1)&&\"5\"==t.charAt(0))&&(g(n,f+1,1),e=!n.times(n).eq(s));break}if(!i&&(g(o,f+1,0),o.times(o).eq(s))){n=o;break}r+=4,i=1}return w=!0,g(n,f,l.rounding,e)},T.times=function(e,t){var r,n,i=this,a=i.constructor,o=i.c,s=(b=11,e=new a(e,t),e.c),u=N(i.e/_),c=N(e.e/_),f=i.s;if(t=e.s,e.s=f==t?1:-1,!((u||o&&o[0])&&(c||s&&s[0])))return new a(!f||!t||o&&!o[0]&&!s||s&&!s[0]&&!o?NaN:o&&s?0*e.s:e.s/0);for(n=u+c,f=o.length,t=s.length,t>f&&(r=o,o=s,s=r,c=f,f=t,t=c),c=f+t,r=[];c--;r.push(0));for(u=t-1;u>-1;u--){for(t=0,c=f+u;c>u;)t=r[c]+s[u]*o[c-u-1]+t,r[c--]=t%A|0,t=t/A|0;r[c]=(r[c]+t)%A|0}for(t?++n:r[0]||r.shift(),c=r.length;!r[--c];r.pop());for(e.c=r,f=1,t=r[0];t>=10;t/=10,f++);return e.e=f+n*_-1,w?g(e,a.precision,a.rounding):e},T.toDecimalPlaces=T.toDP=function(e,t){var r=this;return r=new r.constructor(r),null!=e&&u(r,e,\"toDP\")?g(r,(0|e)+r.e+1,s(r,t,\"toDP\")):r},T.toExponential=function(e,t){var r=this;return r.c?f(r,null!=e&&u(r,e,\"toExponential\")?0|e:null,null!=e&&s(r,t,\"toExponential\"),1):r.toString()},T.toFixed=function(e,t){var r,n=this,i=n.constructor,a=i.toExpNeg,o=i.toExpPos;return null!=e&&(e=u(n,e,r=\"toFixed\")?n.e+(0|e):null,t=s(n,t,r)),i.toExpNeg=-(i.toExpPos=1/0),null!=e&&n.c?(r=f(n,e,t),n.s<0&&n.c&&(n.c[0]?r.indexOf(\"-\")<0&&(r=\"-\"+r):r=r.replace(\"-\",\"\"))):r=n.toString(),i.toExpNeg=a,i.toExpPos=o,r},T.toFormat=function(e,t){var r=this;if(!r.c)return r.toString();var n,i=r.s<0,a=r.constructor.format,o=a.groupSeparator,s=+a.groupSize,u=+a.secondaryGroupSize,c=r.toFixed(e,t).split(\".\"),f=c[0],l=c[1],p=i?f.slice(1):f,m=p.length;if(u&&(n=s,s=u,m-=u=n),s>0&&m>0){for(n=m%s||s,f=p.substr(0,n);m>n;n+=s)f+=o+p.substr(n,s);u>0&&(f+=o+p.slice(n)),i&&(f=\"-\"+f)}return l?f+a.decimalSeparator+((u=+a.fractionGroupSize)?l.replace(new RegExp(\"\\\\d{\"+u+\"}\\\\B\",\"g\"),\"$&\"+a.fractionGroupSeparator):l):f},T.toFraction=function(e){var t,r,n,i,o,s,u,c,f=this,m=f.constructor,h=t=new m(m.ONE),g=s=new m(0),v=f.c,d=new m(g);if(!v)return f.toString();for(n=d.e=l(v)-f.e-1,d.c[0]=E(10,(u=n%_)<0?_+u:u),(null==e||(!(b=12,o=new m(e)).s||(y=o.cmp(h)<0||!o.c)||m.errors&&N(o.e/_)<o.c.length-1)&&!p(m,\"max denominator\",e,\"toFraction\",0)||(e=o).cmp(d)>0)&&(e=n>0?d:h),w=!1,o=new m(a(v)),u=m.precision,m.precision=n=v.length*_*2;c=k(o,d,0,1,1),r=t.plus(c.times(g)),1!=r.cmp(e);)t=g,g=r,h=s.plus(c.times(r=h)),s=r,d=o.minus(c.times(r=d)),o=r;return r=k(e.minus(t),g,0,1,1),s=s.plus(r.times(h)),t=t.plus(r.times(g)),s.s=h.s=f.s,i=k(h,g,n,1).minus(f).abs().cmp(k(s,t,n,1).minus(f).abs())<1?[h+\"\",g+\"\"]:[s+\"\",t+\"\"],w=!0,m.precision=u,i},T.toNearest=function(e,t){var r=this,n=r.constructor;return r=new n(r),null==e?(e=new n(n.ONE),t=n.rounding):(b=17,e=new n(e),t=s(r,t,\"toNearest\")),e.c?r.c&&(e.c[0]?(w=!1,r=k(r,e,0,4>t?[4,5,7,8][t]:t,1).times(e),w=!0,g(r)):r.c=[r.e=0]):r.s&&(e.s&&(e.s=r.s),r=e),r},T.toNumber=function(){var e=this;return+e||(e.s?0*e.s:NaN)},T.toPower=T.pow=function(e,t){var r,n,i,s,u=this,f=u.constructor,l=u.s,p=(b=13,+(e=new f(e,t))),v=0>p?-p:p,d=f.precision,y=f.rounding;if(!u.c||!e.c||(i=!u.c[0])||!e.c[0])return new f(E(i?0*l:+u,p));if(u=new f(u),r=u.c.length,!u.e&&u.c[0]==u.s&&1==r)return u;if(t=e.c.length-1,e.e||e.c[0]!=e.s||t)if(n=N(e.e/_),i=n>=t,!i&&0>l)s=new f(NaN);else{if(i&&z>r*_*v){if(s=m(f,u,v),e.s<0)return f.ONE.div(s)}else{if(l=0>l&&1&e.c[Math.max(n,t)]?-1:1,t=E(+u,p),n=0!=t&&isFinite(t)?new f(t+\"\").e:N(p*(Math.log(\"0.\"+a(u.c))/Math.LN10+u.e+1)),n>f.maxE+1||n<f.minE-1)return new f(n>0?l/0:0);w=!1,f.rounding=u.s=1,v=Math.min(12,(n+\"\").length),s=c(e.times(h(u,d+v)),d),s=g(s,d+5,1),o(s.c,d,y)&&(n=d+10,s=g(c(e.times(h(u,n+v)),n),n+5,1),+a(s.c).slice(d+1,d+15)+1==1e14&&(s=g(s,d+1,0))),s.s=l,w=!0,f.rounding=y}s=g(s,d,y)}else s=g(u,d,y);return s},T.toPrecision=function(e,t){var r=this;return null!=e&&u(r,e,\"toPrecision\",1)&&r.c?f(r,0|--e,s(r,t,\"toPrecision\"),2):r.toString()},T.toSignificantDigits=T.toSD=function(e,t){var r=this,n=r.constructor;return r=new n(r),null!=e&&u(r,e,\"toSD\",1)?g(r,0|e,s(r,t,\"toSD\")):g(r,n.precision,n.rounding)},T.toString=function(e){var t,r,n,i=this,o=i.constructor,s=i.e;if(null===s)r=i.s?\"Infinity\":\"NaN\";else{if(e===t&&(s<=o.toExpNeg||s>=o.toExpPos))return f(i,null,o.rounding,1);if(r=a(i.c),0>s){for(;++s;r=\"0\"+r);r=\"0.\"+r}else if(n=r.length,s>0)if(++s>n)for(s-=n;s--;r+=\"0\");else n>s&&(r=r.slice(0,s)+\".\"+r.slice(s));else if(t=r.charAt(0),n>1)r=t+\".\"+r.slice(1);else if(\"0\"==t)return t;if(null!=e)if((y=!(e>=2&&65>e))||e!=(0|e)&&o.errors)p(o,\"base\",e,\"toString\",0);else if(r=v(o,r,0|e,10,i.s),\"0\"==r)return r}return i.s<0?\"-\"+r:r},T.truncated=T.trunc=function(){return g(new this.constructor(this),this.e+1,1)},T.valueOf=T.toJSON=function(){return this.toString()},v=function(){function e(e,t,r){for(var n,i,a=[0],o=0,s=e.length;s>o;){for(i=a.length;i--;a[i]*=t);for(a[n=0]+=O.indexOf(e.charAt(o++));n<a.length;n++)a[n]>r-1&&(null==a[n+1]&&(a[n+1]=0),a[n+1]+=a[n]/r|0,a[n]%=r)}return a.reverse()}return function(t,r,n,i,a){var o,s,u,c,f,l,p=r.indexOf(\".\"),h=t.precision,g=t.rounding;for(37>i&&(r=r.toLowerCase()),p>=0&&(r=r.replace(\".\",\"\"),l=new t(i),c=m(t,l,r.length-p),l.c=e(c.toFixed(),10,n),l.e=l.c.length),f=e(r,i,n),o=s=f.length;0==f[--s];f.pop());if(!f[0])return\"0\";if(0>p?o--:(c.c=f,c.e=o,c.s=a,c=k(c,l,h,g,0,n),f=c.c,u=c.r,o=c.e),p=f[h],s=n/2,u=u||null!=f[h+1],4>g?(null!=p||u)&&(0==g||g==(0>a?3:2)):p>s||p==s&&(4==g||u||6==g&&1&f[h-1]||g==(0>a?8:7)))for(f.length=h,--n;++f[--h]>n;)f[h]=0,h||(++o,f.unshift(1));else f.length=h;for(s=f.length;!f[--s];);for(p=0,r=\"\";s>=p;r+=O.charAt(f[p++]));if(0>o){for(;++o;r=\"0\"+r);r=\"0.\"+r}else if(p=r.length,++o>p)for(o-=p;o--;r+=\"0\");else p>o&&(r=r.slice(0,o)+\".\"+r.slice(o));return r}}();var k=function(){function e(e,t,r){var n,i=0,a=e.length;for(e=e.slice();a--;)n=e[a]*t+i,e[a]=n%r|0,i=n/r|0;return i&&e.unshift(i),e}function t(e,t,r,n){var i,a;if(r!=n)a=r>n?1:-1;else for(i=a=0;r>i;i++)if(e[i]!=t[i]){a=e[i]>t[i]?1:-1;break}return a}function r(e,t,r,n){for(var i=0;r--;)e[r]-=i,i=e[r]<t[r]?1:0,e[r]=i*n+e[r]-t[r];for(;!e[0]&&e.length>1;e.shift());}return function(n,i,a,o,s,u){var c,f,l,p,m,h,v,d,y,x,w,b,E,M,O,T,C,S,z,B=n.constructor,k=n.s==i.s?1:-1,I=n.c,R=i.c;if(!(I&&I[0]&&R&&R[0]))return new B(n.s&&i.s&&(I?!R||I[0]!=R[0]:R)?I&&0==I[0]||!R?0*k:k/0:NaN);for(u?(p=1,f=n.e-i.e):(u=A,p=_,f=N(n.e/p)-N(i.e/p)),S=R.length,T=I.length,y=new B(k),x=y.c=[],l=0;R[l]==(I[l]||0);l++);if(R[l]>(I[l]||0)&&f--,null==a?(k=a=B.precision,o=B.rounding):k=s?a+(n.e-i.e)+1:a,0>k)x.push(1),m=!0;else{if(k=k/p+2|0,l=0,1==S){for(h=0,R=R[0],k++;(T>l||h)&&k--;l++)M=h*u+(I[l]||0),x[l]=M/R|0,h=M%R|0;m=h||T>l}else{for(h=u/(R[0]+1)|0,h>1&&(R=e(R,h,u),I=e(I,h,u),S=R.length,T=I.length),O=S,w=I.slice(0,S),b=w.length;S>b;w[b++]=0);z=R.slice(),z.unshift(0),C=R[0],R[1]>=u/2&&C++;do h=0,c=t(R,w,S,b),0>c?(E=w[0],S!=b&&(E=E*u+(w[1]||0)),h=E/C|0,h>1?(h>=u&&(h=u-1),v=e(R,h,u),d=v.length,b=w.length,c=t(v,w,d,b),1==c&&(h--,r(v,d>S?z:R,d,u))):(0==h&&(c=h=1),v=R.slice()),d=v.length,b>d&&v.unshift(0),r(w,v,b,u),-1==c&&(b=w.length,c=t(R,w,S,b),1>c&&(h++,r(w,b>S?z:R,b,u))),b=w.length):0===c&&(h++,w=[0]),x[l++]=h,c&&w[0]?w[b++]=I[O]||0:(w=[I[O]],b=1);while((O++<T||null!=w[0])&&k--);m=null!=w[0]}x[0]||x.shift()}if(1==p)y.e=f,y.r=+m;else{for(l=1,k=x[0];k>=10;k/=10,l++);y.e=l+f*p-1,g(y,s?a+y.e+1:a,o,m)}return y}}();d=function(){function e(e){var t,r,n,i=this,a=\"config\",o=i.errors?parseInt:parseFloat;return e==r||\"object\"!=typeof e&&!p(i,\"object expected\",e,a)?i:((n=e[t=\"precision\"])!=r&&((y=1>n||n>S)||o(n)!=n?p(i,t,n,a,0):i[t]=0|n),(n=e[t=\"rounding\"])!=r&&((y=0>n||n>8)||o(n)!=n?p(i,t,n,a,0):i[t]=0|n),(n=e[t=\"toExpNeg\"])!=r&&((y=-C>n||n>0)||o(n)!=n?p(i,t,n,a,0):i[t]=N(n)),(n=e[t=\"toExpPos\"])!=r&&((y=0>n||n>C)||o(n)!=n?p(i,t,n,a,0):i[t]=N(n)),(n=e[t=\"minE\"])!=r&&((y=-C>n||n>0)||o(n)!=n?p(i,t,n,a,0):i[t]=N(n)),(n=e[t=\"maxE\"])!=r&&((y=0>n||n>C)||o(n)!=n?p(i,t,n,a,0):i[t]=N(n)),(n=e[t=\"errors\"])!=r&&(n===!!n||1===n||0===n?(y=b=0,i[t]=!!n):p(i,t,n,a,1)),(n=e[t=\"crypto\"])!=r&&(n===!!n||1===n||0===n?i[t]=!(!n||!x||\"object\"!=typeof x):p(i,t,n,a,1)),(n=e[t=\"modulo\"])!=r&&((y=0>n||n>9)||o(n)!=n?p(i,t,n,a,0):i[t]=0|n),(e=e[t=\"format\"])!=r&&(\"object\"==typeof e?i[t]=e:p(i,\"format object expected\",e,a)),i)}function t(e){return new this(e).exp()}function r(e){return new this(e).ln()}function n(e,t){return new this(e).log(t)}function i(e,t,r){var n,i,a=0;for(\"[object Array]\"==M.call(t[0])&&(t=t[0]),n=new e(t[0]);++a<t.length;){if(i=new e(t[a]),!i.s){n=i;break}n[r](i)&&(n=i)}return n}function a(){return i(this,arguments,\"lt\")}function o(){return i(this,arguments,\"gt\")}function s(e,t){return new this(e).pow(t)}function c(e){var t,r,n,i=0,a=[],o=this,s=new o(o.ONE);if(null!=e&&u(s,e,\"random\")?e|=0:e=o.precision,r=Math.ceil(e/_),o.crypto)if(x&&x.getRandomValues)for(t=x.getRandomValues(new Uint32Array(r));r>i;)n=t[i],n>=429e7?t[i]=x.getRandomValues(new Uint32Array(1))[0]:a[i++]=n%1e7;else if(x&&x.randomBytes){for(t=x.randomBytes(r*=4);r>i;)n=t[i]+(t[i+1]<<8)+(t[i+2]<<16)+((127&t[i+3])<<24),n>=214e7?x.randomBytes(4).copy(t,i):(a.push(n%1e7),i+=4);i=r/4}else p(o,\"crypto unavailable\",x,\"random\");if(!i)for(;r>i;)a[i++]=1e7*Math.random()|0;for(r=a[--i],e%=_,r&&e&&(n=E(10,_-e),a[i]=(r/n|0)*n);0===a[i];i--)a.pop();if(0>i)a=[r=0];else{for(r=-1;0===a[0];)a.shift(),r-=_;for(i=1,n=a[0];n>=10;)n/=10,i++;_>i&&(r-=_-i)}return s.e=r,s.c=a,s}function f(e){return new this(e).sqrt()}function l(i){function u(e,t){var r=this;if(!(r instanceof u))return p(u,\"Decimal called without new\",e),new u(e,t);if(r.constructor=u,e instanceof u){if(null==t)return b=0,r.s=e.s,r.e=e.e,r.c=(e=e.c)?e.slice():e,r;if(10==t)return g(new u(e),u.precision,u.rounding);e+=\"\"}return m(u,r,e,t)}return u.precision=20,u.rounding=4,u.modulo=1,u.toExpNeg=-7,u.toExpPos=21,u.minE=-C,u.maxE=C,u.errors=!0,u.crypto=!1,u.format={decimalSeparator:\".\",groupSeparator:\",\",groupSize:3,secondaryGroupSize:0,fractionGroupSeparator:\" \",fractionGroupSize:0},u.prototype=T,u.ONE=new u(1),u.ROUND_UP=0,u.ROUND_DOWN=1,u.ROUND_CEIL=2,u.ROUND_FLOOR=3,u.ROUND_HALF_UP=4,u.ROUND_HALF_DOWN=5,u.ROUND_HALF_EVEN=6,u.ROUND_HALF_CEIL=7,u.ROUND_HALF_FLOOR=8,u.EUCLID=9,u.config=e,u.constructor=l,u.exp=t,u.ln=r,u.log=n,u.max=a,u.min=o,u.pow=s,u.sqrt=f,u.random=c,null!=i&&u.config(i),u}var m=function(){var e=/^-?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,t=String.prototype.trim||function(){return this.replace(/^\\s+|\\s+$/g,\"\")};return function(r,n,i,a){var o,s,u,c,f,l;if(\"string\"!=typeof i&&(i=(c=\"number\"==typeof i||\"[object Number]\"==M.call(i))&&0===i&&0>1/i?\"-0\":i+\"\"),f=i,null==a&&e.test(i))n.s=45===i.charCodeAt(0)?(i=i.slice(1),-1):1;else{if(10==a)return g(new r(i),r.precision,r.rounding);if(i=t.call(i).replace(/^\\+(?!-)/,\"\"),n.s=45===i.charCodeAt(0)?(i=i.replace(/^-(?!-)/,\"\"),-1):1,null!=a?a!=(0|a)&&r.errors||(y=!(a>=2&&65>a))?(p(r,\"base\",a,0,0),l=e.test(i)):(o=\"[\"+O.slice(0,a=0|a)+\"]+\",i=i.replace(/\\.$/,\"\").replace(/^\\./,\"0.\"),(l=new RegExp(\"^\"+o+\"(?:\\\\.\"+o+\")?$\",37>a?\"i\":\"\").test(i))?(c&&(i.replace(/^0\\.0*|\\./,\"\").length>15&&p(r,0,f),c=!c),i=v(r,i,10,a,n.s)):\"Infinity\"!=i&&\"NaN\"!=i&&(p(r,\"not a base \"+a+\" number\",f),i=\"NaN\")):l=e.test(i),!l)return n.c=n.e=null,\"Infinity\"!=i&&(\"NaN\"!=i&&p(r,\"not a number\",f),n.s=null),b=0,n}for((s=i.indexOf(\".\"))>-1&&(i=i.replace(\".\",\"\")),(u=i.search(/e/i))>0?(0>s&&(s=u),s+=+i.slice(u+1),i=i.substring(0,u)):0>s&&(s=i.length),u=0;48===i.charCodeAt(u);u++);for(a=i.length;48===i.charCodeAt(--a););if(i=i.slice(u,a+1)){if(a=i.length,c&&a>15&&p(r,0,f),n.e=s=s-u-1,n.c=[],u=(s+1)%_,0>s&&(u+=_),a>u){for(u&&n.c.push(+i.slice(0,u)),a-=_;a>u;)n.c.push(+i.slice(u,u+=_));i=i.slice(u),u=_-i.length}else u-=a;for(;u--;i+=\"0\");n.c.push(+i),w&&(n.e>r.maxE?n.c=n.e=null:n.e<r.minE&&(n.c=[n.e=0]))}else n.c=[n.e=0];return b=0,n}}();return l()}(),n=function(){return d}.call(t,r,t,e),!(void 0!==n&&(e.exports=n))}(this)},function(e,t,r){\"use strict\";function n(e,t,r,n){var a=n(\"bignumber\",{\"\":function(){return new e.BigNumber(0)},number:function(t){return new e.BigNumber(t+\"\")},string:function(t){return new e.BigNumber(t)},BigNumber:function(e){return e},\"Array | Matrix\":function(e){return i(e,a)}});return a.toTex={0:\"0\",1:\"\\\\left(${args[0]}\\\\right)\"},a}var i=r(19);t.name=\"bignumber\",t.factory=n},function(e,t){\"use strict\";e.exports=function r(e,t,n){return e&&\"function\"==typeof e.map?e.map(function(e){return r(e,t,n)}):t(e)}},function(e,t,r){\"use strict\";function n(e,t,r,n){var a=n(\"bool\",{\"\":function(){return!1},\"boolean\":function(e){return e},number:function(e){return!!e},BigNumber:function(e){return!e.isZero()},string:function(e){var t=e.toLowerCase();if(\"true\"===t)return!0;if(\"false\"===t)return!1;var r=Number(e);if(\"\"!=e&&!isNaN(r))return!!r;throw new Error('Cannot convert \"'+e+'\" to a boolean')},\"Array | Matrix\":function(e){return i(e,a)}});return a}var i=r(19);t.name=\"boolean\",t.factory=n},function(e,t,r){e.exports=[r(22),r(25)]},function(e,t,r){\"use strict\";function n(e,t,r,n,o){function s(e){if(!(this instanceof s))throw new SyntaxError(\"Constructor must be called with the new operator\");e&&e.isChain?this.value=e.value:this.value=e}function u(e,t){\"function\"==typeof t&&(s.prototype[e]=f(t))}function c(e,t){a(s.prototype,e,function(){var e=t();return\"function\"==typeof e?f(e):void 0})}function f(e){return function(){for(var t=[this.value],r=0;r<arguments.length;r++)t[r+1]=arguments[r];return new s(e.apply(e,t))}}return s.prototype.type=\"Chain\",s.prototype.isChain=!0,s.prototype.done=function(){return this.value},s.prototype.valueOf=function(){return this.value},s.prototype.toString=function(){return i(this.value)},s.createProxy=function(e,t){if(\"string\"==typeof e)u(e,t);else for(var r in e)e.hasOwnProperty(r)&&u(r,e[r])},s.createProxy(o),o.on(\"import\",function(e,t,r){void 0===r&&c(e,t)}),s}var i=r(23).format,a=r(3).lazy;t.name=\"Chain\",t.path=\"type\",t.factory=n,t.math=!0,t.lazy=!1},function(e,t,r){\"use strict\";function n(e,r){if(Array.isArray(e)){for(var i=\"[\",a=e.length,o=0;a>o;o++)0!=o&&(i+=\", \"),i+=n(e[o],r);return i+=\"]\"}return t.format(e,r)}var i=r(6).format,a=r(24).format;t.isString=function(e){return\"string\"==typeof e},t.endsWith=function(e,t){var r=e.length-t.length,n=e.length;return e.substring(r,n)===t},t.format=function(e,r){return\"number\"==typeof e?i(e,r):e&&e.isBigNumber===!0?a(e,r):e&&e.isFraction===!0?r&&\"decimal\"===r.fraction?e.toString():e.s*e.n+\"/\"+e.d:Array.isArray(e)?n(e,r):t.isString(e)?'\"'+e+'\"':\"function\"==typeof e?e.syntax?e.syntax+\"\":\"function\":\"object\"==typeof e?\"function\"==typeof e.format?e.format(r):e.toString():String(e)}},function(e,t){t.format=function(e,r){if(\"function\"==typeof r)return r(e);if(!e.isFinite())return e.isNaN()?\"NaN\":e.gt(0)?\"Infinity\":\"-Infinity\";var n=\"auto\",i=void 0;switch(void 0!==r&&(r.notation&&(n=r.notation),\"number\"==typeof r?i=r:r.precision&&(i=r.precision)),n){case\"fixed\":return t.toFixed(e,i);case\"exponential\":return t.toExponential(e,i);case\"auto\":var a=.001,o=1e5;r&&r.exponential&&(void 0!==r.exponential.lower&&(a=r.exponential.lower),void 0!==r.exponential.upper&&(o=r.exponential.upper));({toExpNeg:e.constructor.toExpNeg,toExpPos:e.constructor.toExpPos});if(e.constructor.config({toExpNeg:Math.round(Math.log(a)/Math.LN10),toExpPos:Math.round(Math.log(o)/Math.LN10)}),e.isZero())return\"0\";var s,u=e.abs();return s=u.gte(a)&&u.lt(o)?e.toSignificantDigits(i).toFixed():t.toExponential(e,i),s.replace(/((\\.\\d*?)(0+))($|e)/,function(){var e=arguments[2],t=arguments[4];return\".\"!==e?e+t:t});default:throw new Error('Unknown notation \"'+n+'\". Choose \"auto\", \"exponential\", or \"fixed\".')}},t.toExponential=function(e,t){return void 0!==t?e.toExponential(t-1):e.toExponential()},t.toFixed=function(e,t){return e.toFixed(t||0)}},function(e,t){\"use strict\";function r(e,t,r,n){return n(\"chain\",{\"\":function(){return new e.Chain},any:function(t){return new e.Chain(t)}})}t.name=\"chain\",t.factory=r},function(e,t,r){e.exports=[r(27),r(29)]},function(e,t,r){\"use strict\";function n(e,t,n,o){function s(e,t){if(!(this instanceof s))throw new SyntaxError(\"Constructor must be called with the new operator\");switch(arguments.length){case 0:this.re=0,this.im=0;break;case 1:var r=arguments[0];if(\"object\"==typeof r){if(\"re\"in r&&\"im\"in r){var n=new s(r.re,r.im);this.re=n.re,this.im=n.im;break}if(\"r\"in r&&\"phi\"in r){var n=s.fromPolar(r.r,r.phi);this.re=n.re,this.im=n.im;break}}throw new SyntaxError(\"Object with the re and im or r and phi properties expected.\");case 2:if(!i(e)||!i(t))throw new TypeError(\"Two numbers expected in Complex constructor\");this.re=e,this.im=t;break;default:throw new SyntaxError(\"One, two or three arguments expected in Complex constructor\")}}function u(){for(;\" \"==x||\"\t\"==x;)l()}function c(e){return e>=\"0\"&&\"9\">=e||\".\"==e}function f(e){return e>=\"0\"&&\"9\">=e}function l(){y++,x=d.charAt(y)}function p(e){y=e,x=d.charAt(y)}function m(){var e,t=\"\";if(e=y,\"+\"==x?l():\"-\"==x&&(t+=x,l()),!c(x))return p(e),null;if(\".\"==x){if(t+=x,l(),!f(x))return p(e),null}else{for(;f(x);)t+=x,l();\".\"==x&&(t+=x,l())}for(;f(x);)t+=x,l();if(\"E\"==x||\"e\"==x){if(t+=x,l(),(\"+\"==x||\"-\"==x)&&(t+=x,l()),!f(x))return p(e),null;for(;f(x);)t+=x,l()}return t}function h(){var e=d.charAt(y+1);if(\"I\"==x||\"i\"==x)return l(),\"1\";if(!(\"+\"!=x&&\"-\"!=x||\"I\"!=e&&\"i\"!=e)){var t=\"+\"==x?\"1\":\"-1\";return l(),l(),t}return null}function g(){return new SyntaxError('End of string expected, got \"'+d.substr(y)+'\"')}var v=n(r(28));s.prototype.isComplex=!0,s.prototype.type=\"Complex\";var d,y,x;return s.parse=function(e){if(d=e,y=-1,x=\"\",\"string\"!=typeof d)throw new TypeError(\"Invalid argument in Complex.parse, string expected\");l(),u();var t=m();if(t){if(\"I\"==x||\"i\"==x){if(l(),u(),x)throw g();return new s(0,Number(t))}u();var r=x;if(\"+\"!=r&&\"-\"!=r){if(u(),x)throw g();return new s(Number(t),0)}l(),u();var n=m();if(n){if(\"I\"!=x&&\"i\"!=x)throw new SyntaxError('Character \"i\" expected, got \"'+x+'\"');l()}else if(n=h(),!n)throw new SyntaxError(\"Imaginary part expected\");if(\"-\"==r&&(n=\"-\"==n[0]?\"+\"+n.substring(1):\"-\"+n),l(),u(),x)throw g();return new s(Number(t),Number(n))}if(t=h()){if(u(),x)throw g();return new s(0,Number(t))}throw new SyntaxError('Could not parse: \"'+e+'\" as complex number')},s.fromPolar=function(e){switch(arguments.length){case 1:var t=arguments[0];if(\"object\"==typeof t)return s.fromPolar(t.r,t.phi);throw new TypeError(\"Input has to be an object with r and phi keys.\");case 2:var r=arguments[0],n=arguments[1];if(i(r)){if(n&&n.isUnit&&n.hasBase(v.BASE_UNITS.ANGLE)&&(n=n.toNumber(\"rad\")),i(n))return new s(r*Math.cos(n),r*Math.sin(n));throw new TypeError(\"Phi is not a number nor an angle unit.\")}throw new TypeError(\"Radius r is not a number.\");default:throw new SyntaxError(\"Wrong number of arguments in function fromPolar\")}},s.prototype.toPolar=function(){return{r:Math.sqrt(this.re*this.re+this.im*this.im),phi:Math.atan2(this.im,this.re)}},s.prototype.clone=function(){return new s(this.re,this.im)},s.prototype.equals=function(e){return this.re===e.re&&this.im===e.im},s.prototype.format=function(e){var t=\"\",r=this.im,n=this.re,o=a(this.re,e),s=a(this.im,e),u=i(e)?e:e?e.precision:null;if(null!==u){var c=Math.pow(10,-u);Math.abs(n/r)<c&&(n=0),Math.abs(r/n)<c&&(r=0)}return t=0==r?o:0==n?1==r?\"i\":-1==r?\"-i\":s+\"i\":r>0?1==r?o+\" + i\":o+\" + \"+s+\"i\":-1==r?o+\" - i\":o+\" - \"+s.substring(1)+\"i\"},s.prototype.toString=function(){return this.format()},s.prototype.toJSON=function(){return{mathjs:\"Complex\",re:this.re,im:this.im}},s.fromJSON=function(e){return new s(e)},s.prototype.valueOf=s.prototype.toString,s}var i=r(6).isNumber,a=r(6).format;t.name=\"Complex\",t.path=\"type\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){function o(e,t){if(!(this instanceof o))throw new Error(\"Constructor must be called with the new operator\");if(void 0!=e&&\"number\"!=typeof e)throw new TypeError(\"First parameter in Unit constructor must be a number\");if(void 0!=t&&(\"string\"!=typeof t||\"\"==t))throw new TypeError(\"Second parameter in Unit constructor must be a string\");if(void 0!=t){var r=o.parse(t);this.units=r.units,this.dimensions=r.dimensions}else this.units=[{unit:A,prefix:b,power:0}],this.dimensions=[0,0,0,0,0,0,0,0,0];this.value=void 0!=e?this._normalize(e):null,this.fixPrefix=!1,this.isUnitListSimplified=!0}function s(){for(;\" \"==y||\"\t\"==y;)f()}function u(e){return e>=\"0\"&&\"9\">=e||\".\"==e}function c(e){return e>=\"0\"&&\"9\">=e}function f(){d++,y=v.charAt(d)}function l(e){d=e,y=v.charAt(d)}function p(){var e,t=\"\";if(e=d,\"+\"==y?f():\"-\"==y&&(t+=y,f()),!u(y))return l(e),null;if(\".\"==y){if(t+=y,f(),!c(y))return l(e),null}else{for(;c(y);)t+=y,f();\".\"==y&&(t+=y,f())}for(;c(y);)t+=y,f();if(\"E\"==y||\"e\"==y){var r=\"\",n=d;if(r+=y,f(),(\"+\"==y||\"-\"==y)&&(r+=y,f()),!c(y))return l(n),t;for(t+=r;c(y);)t+=y,f()}return t}function m(){for(var e=\"\",t=v.charCodeAt(d);t>=48&&57>=t||t>=65&&90>=t||t>=97&&122>=t;)e+=y,f(),t=v.charCodeAt(d);return t=e.charCodeAt(0),t>=65&&90>=t||t>=97&&122>=t?e||null:null}function h(e){return y===e?(f(),e):null}function g(e){for(var t in _)if(_.hasOwnProperty(t)&&a(e,t)){var r=_[t],n=e.length-t.length,i=e.substring(0,n),o=r.prefixes[i];if(void 0!==o)return{unit:r,prefix:o}}return null}o.prototype.type=\"Unit\",o.prototype.isUnit=!0;var v,d,y;o.parse=function(e){if(v=e,d=-1,y=\"\",\"string\"!=typeof v)throw new TypeError(\"Invalid argument in Unit.parse, string expected\");var t=new o;t.units=[],f(),s();var r=p(),n=null;r&&(n=parseFloat(r)),s();for(var i=1,a=!1,u=[],c=1;;){for(s();\"(\"===y;)u.push(i),c*=i,i=1,f(),s();if(!y)break;var l=y,x=m();if(null==x)throw new SyntaxError('Unexpected \"'+l+'\" in \"'+v+'\" at index '+d.toString());var w=g(x);if(null==w)throw new SyntaxError('Unit \"'+x+'\" not found.');var b=i*c;if(s(),h(\"^\")){s();var E=p();if(null==E)throw new SyntaxError('In \"'+e+'\", \"^\" must be followed by a floating-point number');b*=E}t.units.push({unit:w.unit,prefix:w.prefix,power:b});for(var M=0;M<N.length;M++)t.dimensions[M]+=w.unit.dimensions[M]*b;for(s();\")\"===y;){if(0===u.length)throw new SyntaxError('Unmatched \")\" in \"'+v+'\" at index '+d.toString());c/=u.pop(),f(),s()}a=!1,h(\"*\")?(i=1,a=!0):h(\"/\")?(i=-1,a=!0):i=1;var A=w.unit.base.key;T.auto[A]={unit:w.unit,prefix:w.prefix}}if(s(),y)throw new SyntaxError('Could not parse: \"'+e+'\"');if(a)throw new SyntaxError('Trailing characters: \"'+e+'\"');if(0!==u.length)throw new SyntaxError('Unmatched \"(\" in \"'+v+'\"');if(0==t.units.length)throw new SyntaxError('\"'+e+'\" contains no units');return t.value=void 0!=n?t._normalize(n):null,t},o.prototype.clone=function(){var e=new o;for(var t in this)this.hasOwnProperty(t)&&(e[t]=this[t]);e.dimensions=this.dimensions.slice(0),e.units=[];for(var r=0;r<this.units.length;r++){e.units[r]={};for(var t in this.units[r])this.units[r].hasOwnProperty(t)&&(e.units[r][t]=this.units[r][t])}return e},o.prototype._isDerived=function(){return 0===this.units.length?!1:this.units.length>1||Math.abs(this.units[0].power-1)>1e-15},o.prototype._normalize=function(e){if(0===this.units.length)return e;if(this._isDerived()){for(var t=e,r=0;r<this.units.length;r++)t*=Math.pow(this.units[r].unit.value*this.units[r].prefix.value,this.units[r].power);return t}return(e+this.units[0].unit.offset)*this.units[0].unit.value*this.units[0].prefix.value},o.prototype._denormalize=function(e,t){if(0===this.units.length)return e;if(this._isDerived()){for(var r=e,n=0;n<this.units.length;n++)r/=Math.pow(this.units[n].unit.value*this.units[n].prefix.value,this.units[n].power);return r}return void 0==t?e/this.units[0].unit.value/this.units[0].prefix.value-this.units[0].unit.offset:e/this.units[0].unit.value/t-this.units[0].unit.offset},o.isValuelessUnit=function(e){return null!=g(e)},o.prototype.hasBase=function(e){for(var t=0;t<N.length;t++)if(Math.abs(this.dimensions[t]-e.dimensions[t])>1e-12)return!1;return!0},o.prototype.equalBase=function(e){for(var t=0;t<N.length;t++)if(Math.abs(this.dimensions[t]-e.dimensions[t])>1e-12)return!1;return!0},o.prototype.equals=function(e){return this.equalBase(e)&&this.value==e.value},o.prototype.multiply=function(e){for(var t=this.clone(),r=0;r<N.length;r++)t.dimensions[r]=this.dimensions[r]+e.dimensions[r];for(var r=0;r<e.units.length;r++){var n=JSON.parse(JSON.stringify(e.units[r]));t.units.push(n)}if(null!=this.value||null!=e.value){var i=null==this.value?this._normalize(1):this.value,a=null==e.value?e._normalize(1):e.value;t.value=i*a}else t.value=null;return t.isUnitListSimplified=!1,t},o.prototype.divide=function(e){for(var t=this.clone(),r=0;r<N.length;r++)t.dimensions[r]=this.dimensions[r]-e.dimensions[r];for(var r=0;r<e.units.length;r++){var n=JSON.parse(JSON.stringify(e.units[r]));n.power=-n.power,t.units.push(n)}if(null!=this.value||null!=e.value){var i=null==this.value?this._normalize(1):this.value,a=null==e.value?e._normalize(1):e.value;t.value=i/a}else t.value=null;return t.isUnitListSimplified=!1,t},o.prototype.pow=function(e){for(var t=this.clone(),r=0;r<N.length;r++)t.dimensions[r]=this.dimensions[r]*e;for(var r=0;r<t.units.length;r++)t.units[r].power*=e;return null!=t.value?t.value=Math.pow(t.value,e):t.value=null,t.isUnitListSimplified=!1,t},o.prototype.to=function(e){var t,r=null==this.value?this._normalize(1):this.value;if(\"string\"==typeof e){if(t=o.parse(e),!this.equalBase(t))throw new Error(\"Units do not match\");if(null!==t.value)throw new Error(\"Cannot convert to a unit with a value\");return t.value=r,t.fixPrefix=!0,t.isUnitListSimplified=!0,t}if(e&&e.isUnit){if(!this.equalBase(e))throw new Error(\"Units do not match\");if(null!==e.value)throw new Error(\"Cannot convert to a unit with a value\");return t=e.clone(),t.value=r,t.fixPrefix=!0,t.isUnitListSimplified=!0,t}throw new Error(\"String or Unit expected as parameter\")},o.prototype.toNumber=function(e){var t=this.to(e);return t._isDerived()?t._denormalize(t.value):t._denormalize(t.value,t.units[0].prefix.value)},o.prototype.toString=function(){return this.format()},o.prototype.toJSON=function(){return{mathjs:\"Unit\",value:this._denormalize(this.value),unit:this.formatUnits(),fixPrefix:this.fixPrefix}},o.fromJSON=function(e){var t=new o(e.value,e.unit);return t.fixPrefix=e.fixPrefix||!1,t},o.prototype.valueOf=o.prototype.toString,o.prototype.simplifyUnitListLazy=function(){if(!this.isUnitListSimplified&&null!=this.value){var e,t=[];for(var r in C)if(this.hasBase(E[r])){e=r;break}if(\"NONE\"===e)this.units=[];else{var n;e&&C.hasOwnProperty(e)&&(n=C[e]);if(n)this.units=[{unit:n.unit,prefix:n.prefix,power:1}];else{for(var i=0;i<N.length;i++){var a=N[i];Math.abs(this.dimensions[i])>1e-12&&t.push({unit:C[a].unit,prefix:C[a].prefix,power:this.dimensions[i]})}t.length<this.units.length&&(this.units=t)}}this.isUnitListSimplified=!0}},o.prototype.formatUnits=function(){this.simplifyUnitListLazy();for(var e=\"\",t=\"\",r=0,n=0,i=0;i<this.units.length;i++)this.units[i].power>0?(r++,e+=\" \"+this.units[i].prefix.name+this.units[i].unit.name,Math.abs(this.units[i].power-1)>1e-15&&(e+=\"^\"+this.units[i].power)):this.units[i].power<0&&n++;if(n>0)for(var i=0;i<this.units.length;i++)this.units[i].power<0&&(r>0?(t+=\" \"+this.units[i].prefix.name+this.units[i].unit.name,Math.abs(this.units[i].power+1)>1e-15&&(t+=\"^\"+-this.units[i].power)):(t+=\" \"+this.units[i].prefix.name+this.units[i].unit.name,t+=\"^\"+this.units[i].power));e=e.substr(1),t=t.substr(1),r>1&&n>0&&(e=\"(\"+e+\")\"),\nn>1&&r>0&&(t=\"(\"+t+\")\");var a=e;return r>0&&n>0&&(a+=\" / \"),a+=t},o.prototype.format=function(e){if(this.simplifyUnitListLazy(),1===this.units.length&&!this.fixPrefix&&Math.abs(this.units[0].power-Math.round(this.units[0].power))<1e-14){var t=this._bestPrefix();this.units[0].prefix=t}var r=this._denormalize(this.value),n=null!==this.value?i(r,e):\"\",a=this.formatUnits();return a.length>0&&n.length>0&&(n+=\" \"),n+=a},o.prototype._bestPrefix=function(){if(1!==this.units.length)throw new Error(\"Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!\");if(Math.abs(this.units[0].power-Math.round(this.units[0].power))>=1e-14)throw new Error(\"Can only compute the best prefix for single units with integer powers, like kg, s^2, N^-1, and so forth!\");var e=Math.abs(this.value),t=this.units[0].prefix;if(0===e)return t;var r=this.units[0].power,n=Math.abs(Math.log(e/Math.pow(t.value*this.units[0].unit.value,r))/Math.LN10-1.2),i=this.units[0].unit.prefixes;for(var a in i)if(i.hasOwnProperty(a)){var o=i[a];if(o.scientific){var s=Math.abs(Math.log(e/Math.pow(o.value*this.units[0].unit.value,r))/Math.LN10-1.2);(n>s||s===n&&o.name.length<t.name.length)&&(t=o,n=s)}}return t};var x={NONE:{\"\":{name:\"\",value:1,scientific:!0}},SHORT:{\"\":{name:\"\",value:1,scientific:!0},da:{name:\"da\",value:10,scientific:!1},h:{name:\"h\",value:100,scientific:!1},k:{name:\"k\",value:1e3,scientific:!0},M:{name:\"M\",value:1e6,scientific:!0},G:{name:\"G\",value:1e9,scientific:!0},T:{name:\"T\",value:1e12,scientific:!0},P:{name:\"P\",value:1e15,scientific:!0},E:{name:\"E\",value:1e18,scientific:!0},Z:{name:\"Z\",value:1e21,scientific:!0},Y:{name:\"Y\",value:1e24,scientific:!0},d:{name:\"d\",value:.1,scientific:!1},c:{name:\"c\",value:.01,scientific:!1},m:{name:\"m\",value:.001,scientific:!0},u:{name:\"u\",value:1e-6,scientific:!0},n:{name:\"n\",value:1e-9,scientific:!0},p:{name:\"p\",value:1e-12,scientific:!0},f:{name:\"f\",value:1e-15,scientific:!0},a:{name:\"a\",value:1e-18,scientific:!0},z:{name:\"z\",value:1e-21,scientific:!0},y:{name:\"y\",value:1e-24,scientific:!0}},LONG:{\"\":{name:\"\",value:1,scientific:!0},deca:{name:\"deca\",value:10,scientific:!1},hecto:{name:\"hecto\",value:100,scientific:!1},kilo:{name:\"kilo\",value:1e3,scientific:!0},mega:{name:\"mega\",value:1e6,scientific:!0},giga:{name:\"giga\",value:1e9,scientific:!0},tera:{name:\"tera\",value:1e12,scientific:!0},peta:{name:\"peta\",value:1e15,scientific:!0},exa:{name:\"exa\",value:1e18,scientific:!0},zetta:{name:\"zetta\",value:1e21,scientific:!0},yotta:{name:\"yotta\",value:1e24,scientific:!0},deci:{name:\"deci\",value:.1,scientific:!1},centi:{name:\"centi\",value:.01,scientific:!1},milli:{name:\"milli\",value:.001,scientific:!0},micro:{name:\"micro\",value:1e-6,scientific:!0},nano:{name:\"nano\",value:1e-9,scientific:!0},pico:{name:\"pico\",value:1e-12,scientific:!0},femto:{name:\"femto\",value:1e-15,scientific:!0},atto:{name:\"atto\",value:1e-18,scientific:!0},zepto:{name:\"zepto\",value:1e-21,scientific:!0},yocto:{name:\"yocto\",value:1e-24,scientific:!0}},SQUARED:{\"\":{name:\"\",value:1,scientific:!0},da:{name:\"da\",value:100,scientific:!1},h:{name:\"h\",value:1e4,scientific:!1},k:{name:\"k\",value:1e6,scientific:!0},M:{name:\"M\",value:1e12,scientific:!0},G:{name:\"G\",value:1e18,scientific:!0},T:{name:\"T\",value:1e24,scientific:!0},P:{name:\"P\",value:1e30,scientific:!0},E:{name:\"E\",value:1e36,scientific:!0},Z:{name:\"Z\",value:1e42,scientific:!0},Y:{name:\"Y\",value:1e48,scientific:!0},d:{name:\"d\",value:.01,scientific:!1},c:{name:\"c\",value:1e-4,scientific:!1},m:{name:\"m\",value:1e-6,scientific:!0},u:{name:\"u\",value:1e-12,scientific:!0},n:{name:\"n\",value:1e-18,scientific:!0},p:{name:\"p\",value:1e-24,scientific:!0},f:{name:\"f\",value:1e-30,scientific:!0},a:{name:\"a\",value:1e-36,scientific:!0},z:{name:\"z\",value:1e-42,scientific:!0},y:{name:\"y\",value:1e-48,scientific:!0}},CUBIC:{\"\":{name:\"\",value:1,scientific:!0},da:{name:\"da\",value:1e3,scientific:!1},h:{name:\"h\",value:1e6,scientific:!1},k:{name:\"k\",value:1e9,scientific:!0},M:{name:\"M\",value:1e18,scientific:!0},G:{name:\"G\",value:1e27,scientific:!0},T:{name:\"T\",value:1e36,scientific:!0},P:{name:\"P\",value:1e45,scientific:!0},E:{name:\"E\",value:1e54,scientific:!0},Z:{name:\"Z\",value:1e63,scientific:!0},Y:{name:\"Y\",value:1e72,scientific:!0},d:{name:\"d\",value:.001,scientific:!1},c:{name:\"c\",value:1e-6,scientific:!1},m:{name:\"m\",value:1e-9,scientific:!0},u:{name:\"u\",value:1e-18,scientific:!0},n:{name:\"n\",value:1e-27,scientific:!0},p:{name:\"p\",value:1e-36,scientific:!0},f:{name:\"f\",value:1e-45,scientific:!0},a:{name:\"a\",value:1e-54,scientific:!0},z:{name:\"z\",value:1e-63,scientific:!0},y:{name:\"y\",value:1e-72,scientific:!0}},BINARY_SHORT:{\"\":{name:\"\",value:1,scientific:!0},k:{name:\"k\",value:1e3,scientific:!0},M:{name:\"M\",value:1e6,scientific:!0},G:{name:\"G\",value:1e9,scientific:!0},T:{name:\"T\",value:1e12,scientific:!0},P:{name:\"P\",value:1e15,scientific:!0},E:{name:\"E\",value:1e18,scientific:!0},Z:{name:\"Z\",value:1e21,scientific:!0},Y:{name:\"Y\",value:1e24,scientific:!0},Ki:{name:\"Ki\",value:1024,scientific:!0},Mi:{name:\"Mi\",value:Math.pow(1024,2),scientific:!0},Gi:{name:\"Gi\",value:Math.pow(1024,3),scientific:!0},Ti:{name:\"Ti\",value:Math.pow(1024,4),scientific:!0},Pi:{name:\"Pi\",value:Math.pow(1024,5),scientific:!0},Ei:{name:\"Ei\",value:Math.pow(1024,6),scientific:!0},Zi:{name:\"Zi\",value:Math.pow(1024,7),scientific:!0},Yi:{name:\"Yi\",value:Math.pow(1024,8),scientific:!0}},BINARY_LONG:{\"\":{name:\"\",value:1,scientific:!0},kilo:{name:\"kilo\",value:1e3,scientific:!0},mega:{name:\"mega\",value:1e6,scientific:!0},giga:{name:\"giga\",value:1e9,scientific:!0},tera:{name:\"tera\",value:1e12,scientific:!0},peta:{name:\"peta\",value:1e15,scientific:!0},exa:{name:\"exa\",value:1e18,scientific:!0},zetta:{name:\"zetta\",value:1e21,scientific:!0},yotta:{name:\"yotta\",value:1e24,scientific:!0},kibi:{name:\"kibi\",value:1024,scientific:!0},mebi:{name:\"mebi\",value:Math.pow(1024,2),scientific:!0},gibi:{name:\"gibi\",value:Math.pow(1024,3),scientific:!0},tebi:{name:\"tebi\",value:Math.pow(1024,4),scientific:!0},pebi:{name:\"pebi\",value:Math.pow(1024,5),scientific:!0},exi:{name:\"exi\",value:Math.pow(1024,6),scientific:!0},zebi:{name:\"zebi\",value:Math.pow(1024,7),scientific:!0},yobi:{name:\"yobi\",value:Math.pow(1024,8),scientific:!0}},BTU:{\"\":{name:\"\",value:1,scientific:!0},MM:{name:\"MM\",value:1e6,scientific:!0}}};x.SHORTLONG={};for(var w in x.SHORT)x.SHORT.hasOwnProperty(w)&&(x.SHORTLONG[w]=x.SHORT[w]);for(var w in x.LONG)x.LONG.hasOwnProperty(w)&&(x.SHORTLONG[w]=x.LONG[w]);var b={name:\"\",value:1,scientific:!0},N=[\"MASS\",\"LENGTH\",\"TIME\",\"CURRENT\",\"TEMPERATURE\",\"LUMINOUS_INTENSITY\",\"AMOUNT_OF_SUBSTANCE\",\"ANGLE\",\"BIT\"],E={NONE:{dimensions:[0,0,0,0,0,0,0,0,0]},MASS:{dimensions:[1,0,0,0,0,0,0,0,0]},LENGTH:{dimensions:[0,1,0,0,0,0,0,0,0]},TIME:{dimensions:[0,0,1,0,0,0,0,0,0]},CURRENT:{dimensions:[0,0,0,1,0,0,0,0,0]},TEMPERATURE:{dimensions:[0,0,0,0,1,0,0,0,0]},LUMINOUS_INTENSITY:{dimensions:[0,0,0,0,0,1,0,0,0]},AMOUNT_OF_SUBSTANCE:{dimensions:[0,0,0,0,0,0,1,0,0]},FORCE:{dimensions:[1,1,-2,0,0,0,0,0,0]},SURFACE:{dimensions:[0,2,0,0,0,0,0,0,0]},VOLUME:{dimensions:[0,3,0,0,0,0,0,0,0]},ENERGY:{dimensions:[1,2,-2,0,0,0,0,0,0]},POWER:{dimensions:[1,2,-3,0,0,0,0,0,0]},PRESSURE:{dimensions:[1,-1,-2,0,0,0,0,0,0]},ELECTRIC_CHARGE:{dimensions:[0,0,1,1,0,0,0,0,0]},ELECTRIC_CAPACITANCE:{dimensions:[-1,-2,4,2,0,0,0,0,0]},ELECTRIC_POTENTIAL:{dimensions:[1,2,-3,-1,0,0,0,0,0]},ELECTRIC_RESISTANCE:{dimensions:[1,2,-3,-2,0,0,0,0,0]},ELECTRIC_INDUCTANCE:{dimensions:[1,2,-2,-2,0,0,0,0,0]},ELECTRIC_CONDUCTANCE:{dimensions:[-1,-2,3,2,0,0,0,0,0]},MAGNETIC_FLUX:{dimensions:[1,2,-2,-1,0,0,0,0,0]},MAGNETIC_FLUX_DENSITY:{dimensions:[1,0,-2,-1,0,0,0,0,0]},ANGLE:{dimensions:[0,0,0,0,0,0,0,1,0]},BIT:{dimensions:[0,0,0,0,0,0,0,0,1]}};for(var w in E)E[w].key=w;var M={},A={name:\"\",base:M,value:1,offset:0,dimensions:[0,0,0,0,0,0,0,0,0]},_={meter:{name:\"meter\",base:E.LENGTH,prefixes:x.LONG,value:1,offset:0},inch:{name:\"inch\",base:E.LENGTH,prefixes:x.NONE,value:.0254,offset:0},foot:{name:\"foot\",base:E.LENGTH,prefixes:x.NONE,value:.3048,offset:0},yard:{name:\"yard\",base:E.LENGTH,prefixes:x.NONE,value:.9144,offset:0},mile:{name:\"mile\",base:E.LENGTH,prefixes:x.NONE,value:1609.344,offset:0},link:{name:\"link\",base:E.LENGTH,prefixes:x.NONE,value:.201168,offset:0},rod:{name:\"rod\",base:E.LENGTH,prefixes:x.NONE,value:5.02921,offset:0},chain:{name:\"chain\",base:E.LENGTH,prefixes:x.NONE,value:20.1168,offset:0},angstrom:{name:\"angstrom\",base:E.LENGTH,prefixes:x.NONE,value:1e-10,offset:0},m:{name:\"m\",base:E.LENGTH,prefixes:x.SHORT,value:1,offset:0},\"in\":{name:\"in\",base:E.LENGTH,prefixes:x.NONE,value:.0254,offset:0},ft:{name:\"ft\",base:E.LENGTH,prefixes:x.NONE,value:.3048,offset:0},yd:{name:\"yd\",base:E.LENGTH,prefixes:x.NONE,value:.9144,offset:0},mi:{name:\"mi\",base:E.LENGTH,prefixes:x.NONE,value:1609.344,offset:0},li:{name:\"li\",base:E.LENGTH,prefixes:x.NONE,value:.201168,offset:0},rd:{name:\"rd\",base:E.LENGTH,prefixes:x.NONE,value:5.02921,offset:0},ch:{name:\"ch\",base:E.LENGTH,prefixes:x.NONE,value:20.1168,offset:0},mil:{name:\"mil\",base:E.LENGTH,prefixes:x.NONE,value:254e-7,offset:0},m2:{name:\"m2\",base:E.SURFACE,prefixes:x.SQUARED,value:1,offset:0},sqin:{name:\"sqin\",base:E.SURFACE,prefixes:x.NONE,value:64516e-8,offset:0},sqft:{name:\"sqft\",base:E.SURFACE,prefixes:x.NONE,value:.09290304,offset:0},sqyd:{name:\"sqyd\",base:E.SURFACE,prefixes:x.NONE,value:.83612736,offset:0},sqmi:{name:\"sqmi\",base:E.SURFACE,prefixes:x.NONE,value:2589988.110336,offset:0},sqrd:{name:\"sqrd\",base:E.SURFACE,prefixes:x.NONE,value:25.29295,offset:0},sqch:{name:\"sqch\",base:E.SURFACE,prefixes:x.NONE,value:404.6873,offset:0},sqmil:{name:\"sqmil\",base:E.SURFACE,prefixes:x.NONE,value:6.4516e-10,offset:0},m3:{name:\"m3\",base:E.VOLUME,prefixes:x.CUBIC,value:1,offset:0},L:{name:\"L\",base:E.VOLUME,prefixes:x.SHORT,value:.001,offset:0},l:{name:\"l\",base:E.VOLUME,prefixes:x.SHORT,value:.001,offset:0},litre:{name:\"litre\",base:E.VOLUME,prefixes:x.LONG,value:.001,offset:0},cuin:{name:\"cuin\",base:E.VOLUME,prefixes:x.NONE,value:16387064e-12,offset:0},cuft:{name:\"cuft\",base:E.VOLUME,prefixes:x.NONE,value:.028316846592,offset:0},cuyd:{name:\"cuyd\",base:E.VOLUME,prefixes:x.NONE,value:.764554857984,offset:0},teaspoon:{name:\"teaspoon\",base:E.VOLUME,prefixes:x.NONE,value:5e-6,offset:0},tablespoon:{name:\"tablespoon\",base:E.VOLUME,prefixes:x.NONE,value:15e-6,offset:0},drop:{name:\"drop\",base:E.VOLUME,prefixes:x.NONE,value:5e-8,offset:0},gtt:{name:\"gtt\",base:E.VOLUME,prefixes:x.NONE,value:5e-8,offset:0},minim:{name:\"minim\",base:E.VOLUME,prefixes:x.NONE,value:6.161152e-8,offset:0},fluiddram:{name:\"fluiddram\",base:E.VOLUME,prefixes:x.NONE,value:36966911e-13,offset:0},fluidounce:{name:\"fluidounce\",base:E.VOLUME,prefixes:x.NONE,value:2957353e-11,offset:0},gill:{name:\"gill\",base:E.VOLUME,prefixes:x.NONE,value:.0001182941,offset:0},cc:{name:\"cc\",base:E.VOLUME,prefixes:x.NONE,value:1e-6,offset:0},cup:{name:\"cup\",base:E.VOLUME,prefixes:x.NONE,value:.0002365882,offset:0},pint:{name:\"pint\",base:E.VOLUME,prefixes:x.NONE,value:.0004731765,offset:0},quart:{name:\"quart\",base:E.VOLUME,prefixes:x.NONE,value:.0009463529,offset:0},gallon:{name:\"gallon\",base:E.VOLUME,prefixes:x.NONE,value:.003785412,offset:0},beerbarrel:{name:\"beerbarrel\",base:E.VOLUME,prefixes:x.NONE,value:.1173478,offset:0},oilbarrel:{name:\"oilbarrel\",base:E.VOLUME,prefixes:x.NONE,value:.1589873,offset:0},hogshead:{name:\"hogshead\",base:E.VOLUME,prefixes:x.NONE,value:.238481,offset:0},fldr:{name:\"fldr\",base:E.VOLUME,prefixes:x.NONE,value:36966911e-13,offset:0},floz:{name:\"floz\",base:E.VOLUME,prefixes:x.NONE,value:2957353e-11,offset:0},gi:{name:\"gi\",base:E.VOLUME,prefixes:x.NONE,value:.0001182941,offset:0},cp:{name:\"cp\",base:E.VOLUME,prefixes:x.NONE,value:.0002365882,offset:0},pt:{name:\"pt\",base:E.VOLUME,prefixes:x.NONE,value:.0004731765,offset:0},qt:{name:\"qt\",base:E.VOLUME,prefixes:x.NONE,value:.0009463529,offset:0},gal:{name:\"gal\",base:E.VOLUME,prefixes:x.NONE,value:.003785412,offset:0},bbl:{name:\"bbl\",base:E.VOLUME,prefixes:x.NONE,value:.1173478,offset:0},obl:{name:\"obl\",base:E.VOLUME,prefixes:x.NONE,value:.1589873,offset:0},g:{name:\"g\",base:E.MASS,prefixes:x.SHORT,value:.001,offset:0},gram:{name:\"gram\",base:E.MASS,prefixes:x.LONG,value:.001,offset:0},ton:{name:\"ton\",base:E.MASS,prefixes:x.SHORT,value:907.18474,offset:0},tonne:{name:\"tonne\",base:E.MASS,prefixes:x.SHORT,value:1e3,offset:0},grain:{name:\"grain\",base:E.MASS,prefixes:x.NONE,value:6479891e-11,offset:0},dram:{name:\"dram\",base:E.MASS,prefixes:x.NONE,value:.0017718451953125,offset:0},ounce:{name:\"ounce\",base:E.MASS,prefixes:x.NONE,value:.028349523125,offset:0},poundmass:{name:\"poundmass\",base:E.MASS,prefixes:x.NONE,value:.45359237,offset:0},hundredweight:{name:\"hundredweight\",base:E.MASS,prefixes:x.NONE,value:45.359237,offset:0},stick:{name:\"stick\",base:E.MASS,prefixes:x.NONE,value:.115,offset:0},stone:{name:\"stone\",base:E.MASS,prefixes:x.NONE,value:6.35029318,offset:0},gr:{name:\"gr\",base:E.MASS,prefixes:x.NONE,value:6479891e-11,offset:0},dr:{name:\"dr\",base:E.MASS,prefixes:x.NONE,value:.0017718451953125,offset:0},oz:{name:\"oz\",base:E.MASS,prefixes:x.NONE,value:.028349523125,offset:0},lbm:{name:\"lbm\",base:E.MASS,prefixes:x.NONE,value:.45359237,offset:0},cwt:{name:\"cwt\",base:E.MASS,prefixes:x.NONE,value:45.359237,offset:0},s:{name:\"s\",base:E.TIME,prefixes:x.SHORT,value:1,offset:0},min:{name:\"min\",base:E.TIME,prefixes:x.NONE,value:60,offset:0},h:{name:\"h\",base:E.TIME,prefixes:x.NONE,value:3600,offset:0},second:{name:\"second\",base:E.TIME,prefixes:x.LONG,value:1,offset:0},sec:{name:\"sec\",base:E.TIME,prefixes:x.LONG,value:1,offset:0},minute:{name:\"minute\",base:E.TIME,prefixes:x.NONE,value:60,offset:0},hour:{name:\"hour\",base:E.TIME,prefixes:x.NONE,value:3600,offset:0},day:{name:\"day\",base:E.TIME,prefixes:x.NONE,value:86400,offset:0},rad:{name:\"rad\",base:E.ANGLE,prefixes:x.NONE,value:1,offset:0},deg:{name:\"deg\",base:E.ANGLE,prefixes:x.NONE,value:.017453292519943295,offset:0},grad:{name:\"grad\",base:E.ANGLE,prefixes:x.NONE,value:.015707963267948967,offset:0},cycle:{name:\"cycle\",base:E.ANGLE,prefixes:x.NONE,value:6.283185307179586,offset:0},A:{name:\"A\",base:E.CURRENT,prefixes:x.SHORT,value:1,offset:0},ampere:{name:\"ampere\",base:E.CURRENT,prefixes:x.LONG,value:1,offset:0},K:{name:\"K\",base:E.TEMPERATURE,prefixes:x.NONE,value:1,offset:0},degC:{name:\"degC\",base:E.TEMPERATURE,prefixes:x.NONE,value:1,offset:273.15},degF:{name:\"degF\",base:E.TEMPERATURE,prefixes:x.NONE,value:1/1.8,offset:459.67},degR:{name:\"degR\",base:E.TEMPERATURE,prefixes:x.NONE,value:1/1.8,offset:0},kelvin:{name:\"kelvin\",base:E.TEMPERATURE,prefixes:x.NONE,value:1,offset:0},celsius:{name:\"celsius\",base:E.TEMPERATURE,prefixes:x.NONE,value:1,offset:273.15},fahrenheit:{name:\"fahrenheit\",base:E.TEMPERATURE,prefixes:x.NONE,value:1/1.8,offset:459.67},rankine:{name:\"rankine\",base:E.TEMPERATURE,prefixes:x.NONE,value:1/1.8,offset:0},mol:{name:\"mol\",base:E.AMOUNT_OF_SUBSTANCE,prefixes:x.NONE,value:1,offset:0},mole:{name:\"mole\",base:E.AMOUNT_OF_SUBSTANCE,prefixes:x.NONE,value:1,offset:0},cd:{name:\"cd\",base:E.LUMINOUS_INTENSITY,prefixes:x.NONE,value:1,offset:0},candela:{name:\"candela\",base:E.LUMINOUS_INTENSITY,prefixes:x.NONE,value:1,offset:0},N:{name:\"N\",base:E.FORCE,prefixes:x.SHORT,value:1,offset:0},newton:{name:\"newton\",base:E.FORCE,prefixes:x.LONG,value:1,offset:0},dyn:{name:\"dyn\",base:E.FORCE,prefixes:x.SHORT,value:1e-5,offset:0},dyne:{name:\"dyne\",base:E.FORCE,prefixes:x.LONG,value:1e-5,offset:0},lbf:{name:\"lbf\",base:E.FORCE,prefixes:x.NONE,value:4.4482216152605,offset:0},poundforce:{name:\"poundforce\",base:E.FORCE,prefixes:x.NONE,value:4.4482216152605,offset:0},J:{name:\"J\",base:E.ENERGY,prefixes:x.SHORT,value:1,offset:0},joule:{name:\"joule\",base:E.ENERGY,prefixes:x.SHORT,value:1,offset:0},erg:{name:\"erg\",base:E.ENERGY,prefixes:x.NONE,value:1e-5,offset:0},Wh:{name:\"Wh\",base:E.ENERGY,prefixes:x.SHORT,value:3600,offset:0},BTU:{name:\"BTU\",base:E.ENERGY,prefixes:x.BTU,value:1055.05585262,offset:0},eV:{name:\"eV\",base:E.ENERGY,prefixes:x.SHORT,value:1.602176565e-19,offset:0},electronvolt:{name:\"electronvolt\",base:E.ENERGY,prefixes:x.LONG,value:1.602176565e-19,offset:0},W:{name:\"W\",base:E.POWER,prefixes:x.SHORT,value:1,offset:0},watt:{name:\"W\",base:E.POWER,prefixes:x.LONG,value:1,offset:0},hp:{name:\"hp\",base:E.POWER,prefixes:x.NONE,value:745.6998715386,offset:0},Pa:{name:\"Pa\",base:E.PRESSURE,prefixes:x.SHORT,value:1,offset:0},psi:{name:\"psi\",base:E.PRESSURE,prefixes:x.NONE,value:6894.75729276459,offset:0},atm:{name:\"atm\",base:E.PRESSURE,prefixes:x.NONE,value:101325,offset:0},coulomb:{name:\"coulomb\",base:E.ELECTRIC_CHARGE,prefixes:x.LONG,value:1,offset:0},C:{name:\"C\",base:E.ELECTRIC_CHARGE,prefixes:x.SHORT,value:1,offset:0},farad:{name:\"farad\",base:E.ELECTRIC_CAPACITANCE,prefixes:x.LONG,value:1,offset:0},F:{name:\"F\",base:E.ELECTRIC_CAPACITANCE,prefixes:x.SHORT,value:1,offset:0},volt:{name:\"volt\",base:E.ELECTRIC_POTENTIAL,prefixes:x.LONG,value:1,offset:0},V:{name:\"V\",base:E.ELECTRIC_POTENTIAL,prefixes:x.SHORT,value:1,offset:0},ohm:{name:\"ohm\",base:E.ELECTRIC_RESISTANCE,prefixes:x.SHORTLONG,value:1,offset:0},henry:{name:\"henry\",base:E.ELECTRIC_INDUCTANCE,prefixes:x.LONG,value:1,offset:0},H:{name:\"H\",base:E.ELECTRIC_INDUCTANCE,prefixes:x.SHORT,value:1,offset:0},siemens:{name:\"siemens\",base:E.ELECTRIC_CONDUCTANCE,prefixes:x.LONG,value:1,offset:0},S:{name:\"S\",base:E.ELECTRIC_CONDUCTANCE,prefixes:x.SHORT,value:1,offset:0},weber:{name:\"weber\",base:E.MAGNETIC_FLUX,prefixes:x.LONG,value:1,offset:0},Wb:{name:\"Wb\",base:E.MAGNETIC_FLUX,prefixes:x.SHORT,value:1,offset:0},tesla:{name:\"tesla\",base:E.MAGNETIC_FLUX_DENSITY,prefixes:x.LONG,value:1,offset:0},T:{name:\"T\",base:E.MAGNETIC_FLUX_DENSITY,prefixes:x.SHORT,value:1,offset:0},b:{name:\"b\",base:E.BIT,prefixes:x.BINARY_SHORT,value:1,offset:0},bits:{name:\"bits\",base:E.BIT,prefixes:x.BINARY_LONG,value:1,offset:0},B:{name:\"B\",base:E.BIT,prefixes:x.BINARY_SHORT,value:8,offset:0},bytes:{name:\"bytes\",base:E.BIT,prefixes:x.BINARY_LONG,value:8,offset:0}},O={meters:\"meter\",inches:\"inch\",feet:\"foot\",yards:\"yard\",miles:\"mile\",links:\"link\",rods:\"rod\",chains:\"chain\",angstroms:\"angstrom\",litres:\"litre\",teaspoons:\"teaspoon\",tablespoons:\"tablespoon\",minims:\"minim\",fluiddrams:\"fluiddram\",fluidounces:\"fluidounce\",gills:\"gill\",cups:\"cup\",pints:\"pint\",quarts:\"quart\",gallons:\"gallon\",beerbarrels:\"beerbarrel\",oilbarrels:\"oilbarrel\",hogsheads:\"hogshead\",gtts:\"gtt\",grams:\"gram\",tons:\"ton\",tonnes:\"tonne\",grains:\"grain\",drams:\"dram\",ounces:\"ounce\",poundmasses:\"poundmass\",hundredweights:\"hundredweight\",sticks:\"stick\",seconds:\"second\",minutes:\"minute\",hours:\"hour\",days:\"day\",radians:\"rad\",degrees:\"deg\",gradients:\"grad\",cycles:\"cycle\",BTUs:\"BTU\",watts:\"watt\",joules:\"joule\",amperes:\"ampere\",coulombs:\"coulomb\",volts:\"volt\",ohms:\"ohm\",farads:\"farad\",webers:\"weber\",teslas:\"tesla\",electronvolts:\"electronvolt\",moles:\"mole\"},T={si:{NONE:{unit:A,prefix:x.NONE[\"\"]},LENGTH:{unit:_.m,prefix:x.SHORT[\"\"]},MASS:{unit:_.g,prefix:x.SHORT.k},TIME:{unit:_.s,prefix:x.SHORT[\"\"]},CURRENT:{unit:_.A,prefix:x.SHORT[\"\"]},TEMPERATURE:{unit:_.K,prefix:x.SHORT[\"\"]},LUMINOUS_INTENSITY:{unit:_.cd,prefix:x.SHORT[\"\"]},AMOUNT_OF_SUBSTANCE:{unit:_.mol,prefix:x.SHORT[\"\"]},ANGLE:{unit:_.rad,prefix:x.SHORT[\"\"]},BIT:{unit:_.bit,prefix:x.SHORT[\"\"]},FORCE:{unit:_.N,prefix:x.SHORT[\"\"]},ENERGY:{unit:_.J,prefix:x.SHORT[\"\"]},POWER:{unit:_.W,prefix:x.SHORT[\"\"]},PRESSURE:{unit:_.Pa,prefix:x.SHORT[\"\"]},ELECTRIC_CHARGE:{unit:_.C,prefix:x.SHORT[\"\"]},ELECTRIC_CAPACITANCE:{unit:_.F,prefix:x.SHORT[\"\"]},ELECTRIC_POTENTIAL:{unit:_.V,prefix:x.SHORT[\"\"]},ELECTRIC_RESISTANCE:{unit:_.ohm,prefix:x.SHORT[\"\"]},ELECTRIC_INDUCTANCE:{unit:_.H,prefix:x.SHORT[\"\"]},ELECTRIC_CONDUCTANCE:{unit:_.S,prefix:x.SHORT[\"\"]},MAGNETIC_FLUX:{unit:_.Wb,prefix:x.SHORT[\"\"]},MAGNETIC_FLUX_DENSITY:{unit:_.T,prefix:x.SHORT[\"\"]}}};T.cgs=JSON.parse(JSON.stringify(T.si)),T.cgs.LENGTH={unit:_.m,prefix:x.SHORT.c},T.cgs.MASS={unit:_.g,prefix:x.SHORT[\"\"]},T.cgs.FORCE={unit:_.dyn,prefix:x.SHORT[\"\"]},T.cgs.ENERGY={unit:_.erg,prefix:x.NONE[\"\"]},T.us=JSON.parse(JSON.stringify(T.si)),T.us.LENGTH={unit:_.ft,prefix:x.NONE[\"\"]},T.us.MASS={unit:_.lbm,prefix:x.NONE[\"\"]},T.us.TEMPERATURE={unit:_.degF,prefix:x.NONE[\"\"]},T.us.FORCE={unit:_.lbf,prefix:x.NONE[\"\"]},T.us.ENERGY={unit:_.BTU,prefix:x.BTU[\"\"]},T.us.POWER={unit:_.hp,prefix:x.NONE[\"\"]},T.us.PRESSURE={unit:_.psi,prefix:x.NONE[\"\"]},T.auto=JSON.parse(JSON.stringify(T.si));var C=T.auto;o.setUnitSystem=function(e){if(T.hasOwnProperty(e))C=T[e];else{\"Unit system \"+e+\" does not exist. Choices are: \"+listAvailableUnitSystems()}},o.listAvailableUnitSystems=function(){var e=\"\";for(var t in T)e+=\" \"+t;return e.substr(1)},o.getUnitSystem=function(){for(var e in T)if(T[e]===C)return e};for(var w in _){var S=_[w];S.dimensions=S.base.dimensions}for(var z in O)if(O.hasOwnProperty(z)){var S=_[O[z]],B=Object.create(S);B.name=z,_[z]=B}return _.lt=_.l,_.liter=_.litre,_.liters=_.litres,_.lb=_.lbm,_.lbs=_.lbm,o.PREFIXES=x,o.BASE_UNITS=E,o.UNITS=_,o.UNIT_SYSTEMS=T,o}var i=r(6).format,a=r(23).endsWith;t.name=\"Unit\",t.path=\"type\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){var o=r(30),s=a(\"complex\",{\"\":function(){return new e.Complex(0,0)},number:function(t){return new e.Complex(t,0)},\"number, number\":function(t,r){return new e.Complex(t,r)},\"BigNumber, BigNumber\":function(t,r){return new e.Complex(t.toNumber(),r.toNumber())},Complex:function(e){return e.clone()},string:function(t){return e.Complex.parse(t)},Object:function(t){if(\"re\"in t&&\"im\"in t)return new e.Complex(t.re,t.im);if(\"r\"in t&&\"phi\"in t)return e.Complex.fromPolar(t.r,t.phi);throw new Error(\"Expected object with either properties re and im, or properties r and phi.\")},\"Array | Matrix\":function(e){return i(e,s)}});return s.toTex={0:\"0\",1:\"\\\\left(${args[0]}\\\\right)\",2:\"\\\\left(\\\\left(${args[0]}\\\\right)+\"+o.symbols.i+\"\\\\cdot\\\\left(${args[1]}\\\\right)\\\\right)\"},s}var i=r(19);t.name=\"complex\",t.factory=n},function(e,t){\"use strict\";t.symbols={Alpha:\"A\",alpha:\"\\\\alpha\",Beta:\"B\",beta:\"\\\\beta\",Gamma:\"\\\\Gamma\",gamma:\"\\\\gamma\",Delta:\"\\\\Delta\",delta:\"\\\\delta\",Epsilon:\"E\",epsilon:\"\\\\epsilon\",varepsilon:\"\\\\varepsilon\",Zeta:\"Z\",zeta:\"\\\\zeta\",Eta:\"H\",eta:\"\\\\eta\",Theta:\"\\\\Theta\",theta:\"\\\\theta\",vartheta:\"\\\\vartheta\",Iota:\"I\",iota:\"\\\\iota\",Kappa:\"K\",kappa:\"\\\\kappa\",varkappa:\"\\\\varkappa\",Lambda:\"\\\\Lambda\",lambda:\"\\\\lambda\",Mu:\"M\",mu:\"\\\\mu\",Nu:\"N\",nu:\"\\\\nu\",Xi:\"\\\\Xi\",xi:\"\\\\xi\",Omicron:\"O\",omicron:\"o\",Pi:\"\\\\Pi\",pi:\"\\\\pi\",varpi:\"\\\\varpi\",Rho:\"P\",rho:\"\\\\rho\",varrho:\"\\\\varrho\",Sigma:\"\\\\Sigma\",sigma:\"\\\\sigma\",varsigma:\"\\\\varsigma\",Tau:\"T\",tau:\"\\\\tau\",Upsilon:\"\\\\Upsilon\",upsilon:\"\\\\upsilon\",Phi:\"\\\\Phi\",phi:\"\\\\phi\",varphi:\"\\\\varphi\",Chi:\"X\",chi:\"\\\\chi\",Psi:\"\\\\Psi\",psi:\"\\\\psi\",Omega:\"\\\\Omega\",omega:\"\\\\omega\",\"true\":\"\\\\mathrm{True}\",\"false\":\"\\\\mathrm{False}\",i:\"i\",inf:\"\\\\infty\",Inf:\"\\\\infty\",infinity:\"\\\\infty\",Infinity:\"\\\\infty\",oo:\"\\\\infty\",lim:\"\\\\lim\",undefined:\"\\\\mathbf{?}\"},t.operators={transpose:\"^\\\\top\",factorial:\"!\",pow:\"^\",dotPow:\".^\\\\wedge\",unaryPlus:\"+\",unaryMinus:\"-\",bitNot:\"~\",not:\"\\\\neg\",multiply:\"\\\\cdot\",divide:\"\\\\frac\",dotMultiply:\".\\\\cdot\",dotDivide:\".:\",mod:\"\\\\mod\",add:\"+\",subtract:\"-\",to:\"\\\\rightarrow\",leftShift:\"<<\",rightArithShift:\">>\",rightLogShift:\">>>\",equal:\"=\",unequal:\"\\\\neq\",smaller:\"<\",larger:\">\",smallerEq:\"\\\\leq\",largerEq:\"\\\\geq\",bitAnd:\"\\\\&\",bitXor:\"\\\\underline{|}\",bitOr:\"|\",and:\"\\\\wedge\",xor:\"\\\\veebar\",or:\"\\\\vee\"},t.defaultTemplate=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\";var r={deg:\"^\\\\circ\"};t.toSymbol=function(e,n){if(n=\"undefined\"==typeof n?!1:n)return r.hasOwnProperty(e)?r[e]:\"\\\\mathrm{\"+e+\"}\";if(t.symbols.hasOwnProperty(e))return t.symbols[e];if(-1!==e.indexOf(\"_\")){var i=e.indexOf(\"_\");return t.toSymbol(e.substring(0,i))+\"_{\"+t.toSymbol(e.substring(i+1))+\"}\"}return e}},function(e,t,r){e.exports=[r(32),r(36)]},function(e,t,r){function n(e,t,r,n){return i}var i=r(33);i.prototype.type=\"Fraction\",i.prototype.isFraction=!0,i.prototype.toJSON=function(){return{mathjs:\"Fraction\",n:this.s*this.n,d:this.d}},i.fromJSON=function(e){return new i(e)},t.name=\"Fraction\",t.path=\"type\",t.factory=n},function(e,t,r){var n,i;(function(e){/**\n\t * @license Fraction.js v3.0.0 09/09/2015\n\t * http://www.xarg.org/2014/03/precise-calculations-in-javascript/\n\t *\n\t * Copyright (c) 2015, Robert Eisele (robert@xarg.org)\n\t * Dual licensed under the MIT or GPL Version 2 licenses.\n\t **/\n!function(a){\"use strict\";function o(e,t){return isNaN(e=parseInt(e,10))&&s(),e*t}function s(){throw\"Invalid Param\"}function u(e,t){return this instanceof u?(l(e,t),e=u.REDUCE?g(f.d,f.n):1,this.s=f.s,this.n=f.n/e,void(this.d=f.d/e)):new u(e,t)}var c=2e3,f={s:1,n:0,d:1},l=function(e,t){var r,n=0,i=1,a=1,u=0,c=0,l=0,p=1,m=1,h=0,g=1,v=1,d=1,y=1e7;if(void 0===e||null===e);else if(void 0!==t)n=e,i=t,a=n*i;else switch(typeof e){case\"object\":\"d\"in e&&\"n\"in e?(n=e.n,i=e.d,\"s\"in e&&(n*=e.s)):0 in e?(n=e[0],1 in e&&(i=e[1])):s(),a=n*i;break;case\"number\":if(0>e&&(a=e,e=-e),e%1===0)n=e;else if(e>0){for(e>=1&&(m=Math.pow(10,Math.floor(1+Math.log(e)/Math.LN10)),e/=m);y>=g&&y>=d;){if(r=(h+v)/(g+d),e===r){y>=g+d?(n=h+v,i=g+d):d>g?(n=v,i=d):(n=h,i=g);break}e>r?(h+=v,g+=d):(v+=h,d+=g),g>y?(n=v,i=d):(n=h,i=g)}n*=m}break;case\"string\":if(g=e.match(/\\d+|./g),\"-\"===g[h]?(a=-1,h++):\"+\"===g[h]&&h++,g.length===h+1?c=o(g[h++],a):\".\"===g[h+1]||\".\"===g[h]?(\".\"!==g[h]&&(u=o(g[h++],a)),h++,(h+1===g.length||\"(\"===g[h+1]&&\")\"===g[h+3]||\"'\"===g[h+1]&&\"'\"===g[h+3])&&(c=o(g[h],a),p=Math.pow(10,g[h].length),h++),(\"(\"===g[h]&&\")\"===g[h+2]||\"'\"===g[h]&&\"'\"===g[h+2])&&(l=o(g[h+1],a),m=Math.pow(10,g[h+1].length)-1,h+=3)):\"/\"===g[h+1]||\":\"===g[h+1]?(c=o(g[h],a),p=o(g[h+2],1),h+=3):\"/\"===g[h+3]&&\" \"===g[h+1]&&(u=o(g[h],a),c=o(g[h+2],a),p=o(g[h+4],1),h+=5),g.length<=h){a=n=l+m*(u*p+c),i=p*m;break}default:s()}if(!i)throw\"DIV/0\";f.s=0>a?-1:1,f.n=Math.abs(n),f.d=Math.abs(i)},p=function(e,t,r){for(var n=1;t>0;e=e*e%r,t>>=1)1&t&&(n=n*e%r);return n},m=function(e,t){for(;t%2===0;t/=2);for(;t%5===0;t/=5);if(1===t)return 0;for(var r=10%t,n=1;1!==r;n++)if(r=10*r%t,n>c)return 0;return n},h=function(e,t,r){for(var n=1,i=p(10,r,t),a=0;300>a;a++){if(n===i)return a;n=10*n%t,i=10*i%t}return 0},g=function(e,t){if(!e)return t;if(!t)return e;for(;;){if(e%=t,!e)return t;if(t%=e,!t)return e}};u.REDUCE=1,u.prototype={s:1,n:0,d:1,abs:function(){return new u(this.n,this.d)},neg:function(){return new u(-this.s*this.n,this.d)},add:function(e,t){return l(e,t),new u(this.s*this.n*f.d+f.s*this.d*f.n,this.d*f.d)},sub:function(e,t){return l(e,t),new u(this.s*this.n*f.d-f.s*this.d*f.n,this.d*f.d)},mul:function(e,t){return l(e,t),new u(this.s*f.s*this.n*f.n,this.d*f.d)},div:function(e,t){return l(e,t),new u(this.s*f.s*this.n*f.d,this.d*f.n)},clone:function(){return new u(this)},mod:function(e,t){return void 0===e?new u(this.s*this.n%this.d,1):(l(e,t),0===f.n*this.d&&u(0,0),new u(this.s*f.d*this.n%(f.n*this.d),f.d*this.d))},gcd:function(e,t){return l(e,t),new u(g(f.n,this.n),f.d*this.d/g(f.d,this.d))},lcm:function(e,t){return l(e,t),new u(f.n*this.n/g(f.n,this.n),g(f.d,this.d))},ceil:function(){return new u(Math.ceil(this.s*this.n/this.d),1)},floor:function(){return new u(Math.floor(this.s*this.n/this.d),1)},round:function(){return new u(Math.round(this.s*this.n/this.d),1)},inverse:function(){return new u(this.s*this.d,this.n)},pow:function(e){var t=this.d,r=this.n;return 0>e?(this.d=Math.pow(r,-e),this.n=Math.pow(t,-e)):(this.d=Math.pow(t,e),this.n=Math.pow(r,e)),0===e%2&&(this.s=1),this},equals:function(e,t){return l(e,t),this.s*this.n*f.d===f.s*f.n*this.d},compare:function(e,t){l(e,t);var r=this.s*this.n*f.d-f.s*f.n*this.d;return(r>0)-(0>r)},divisible:function(e,t){return l(e,t),!(!(f.n*this.d)||this.n*f.d%(f.n*this.d))},valueOf:function(){return this.s*this.n/this.d},toFraction:function(e){var t,r=\"\",n=this.n,i=this.d;return this.s<0&&(r+=\"-\"),1===i?r+=n:(e&&(t=Math.floor(n/i))>0&&(r+=t,r+=\" \",n%=i),r+=n,r+=\"/\",r+=i),r},toLatex:function(e){var t,r=\"\",n=this.n,i=this.d;return this.s<0&&(r+=\"-\"),1===i?r+=n:(e&&(t=Math.floor(n/i))>0&&(r+=t,n%=i),r+=\"\\\\frac{\",r+=n,r+=\"}{\",r+=i,r+=\"}\"),r},toString:function(){var e,t=this.n,r=this.d;u.REDUCE||(e=g(t,r),t/=e,r/=e);for(var n=String(t).split(\"\"),i=0,a=[~this.s?\"\":\"-\",\"\",\"\"],o=\"\",s=m(t,r),c=h(t,r,s),f=-1,l=1,p=10+s+c+n.length,v=0;p>v;v++,i*=10){if(v<n.length?i+=Number(n[v]):(l=2,f++),s>0)if(f===c)a[l]+=o+\"(\",o=\"\";else if(f===s+c){a[l]+=o+\")\";break}i>=r?(a[l]+=o+(i/r|0),o=\"\",i%=r):l>1?o+=\"0\":a[l]&&(a[l]+=\"0\")}return a[0]+=a[1]||\"0\",a[2]?a[0]+\".\"+a[2]:a[0]}},r(35).amd?(n=[],i=function(){return u}.apply(t,n),!(void 0!==i&&(e.exports=i))):e.exports=u}(this)}).call(t,r(34)(e))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children=[],e.webpackPolyfill=1),e}},function(e,t){e.exports=function(){throw new Error(\"define cannot be used indirect\")}},function(e,t,r){\"use strict\";function n(e,t,r,n){var a=n(\"fraction\",{number:function(t){if(!isFinite(t)||isNaN(t))throw new Error(t+\" cannot be represented as a fraction\");return new e.Fraction(t)},string:function(t){return new e.Fraction(t)},\"number, number\":function(t,r){return new e.Fraction(t,r)},Fraction:function(e){return e},Object:function(t){return new e.Fraction(t)},\"Array | Matrix\":function(e){return i(e,a)}});return a}var i=r(19);t.name=\"fraction\",t.factory=n},function(e,t,r){e.exports=[r(38),r(46),r(47),r(49),r(58),r(64),r(65),r(66),r(67),r(51),r(68)]},function(e,t,r){\"use strict\";function n(e,t,r,n){function i(){if(!(this instanceof i))throw new SyntaxError(\"Constructor must be called with the new operator\")}return i.prototype.type=\"Matrix\",i.prototype.isMatrix=!0,i.storage=function(e){if(!o(e))throw new TypeError(\"format must be a string value\");var t=i._storage[e];if(!t)throw new SyntaxError(\"Unsupported matrix storage format: \"+e);return t},i._storage={},i.prototype.storage=function(){throw new Error(\"Cannot invoke storage on a Matrix interface\")},i.prototype.datatype=function(){throw new Error(\"Cannot invoke datatype on a Matrix interface\")},i.prototype.create=function(e,t){throw new Error(\"Cannot invoke create on a Matrix interface\")},i.prototype.subset=function(e,t,r){throw new Error(\"Cannot invoke subset on a Matrix interface\")},i.prototype.get=function(e){throw new Error(\"Cannot invoke get on a Matrix interface\")},i.prototype.set=function(e,t,r){throw new Error(\"Cannot invoke set on a Matrix interface\")},i.prototype.resize=function(e,t){throw new Error(\"Cannot invoke resize on a Matrix interface\")},i.prototype.clone=function(){throw new Error(\"Cannot invoke clone on a Matrix interface\")},i.prototype.size=function(){throw new Error(\"Cannot invoke size on a Matrix interface\")},i.prototype.map=function(e,t){throw new Error(\"Cannot invoke map on a Matrix interface\")},i.prototype.forEach=function(e){throw new Error(\"Cannot invoke forEach on a Matrix interface\")},i.prototype.toArray=function(){throw new Error(\"Cannot invoke toArray on a Matrix interface\")},i.prototype.valueOf=function(){throw new Error(\"Cannot invoke valueOf on a Matrix interface\")},i.prototype.format=function(e){throw new Error(\"Cannot invoke format on a Matrix interface\")},i.prototype.toString=function(){throw new Error(\"Cannot invoke toString on a Matrix interface\")},i}var i=r(39),a=i.string,o=a.isString;t.name=\"Matrix\",t.path=\"type\",t.factory=n},function(e,t,r){\"use strict\";t.array=r(40),t[\"boolean\"]=r(44),t[\"function\"]=r(45),t.number=r(6),t.object=r(3),t.string=r(23),t.types=r(41),t.emitter=r(8)},function(e,t,r){\"use strict\";function n(e,t,r){var i,a=e.length;if(a!=t[r])throw new f(a,t[r]);if(r<t.length-1){var o=r+1;for(i=0;a>i;i++){var s=e[i];if(!Array.isArray(s))throw new f(t.length-1,t.length,\"<\");n(e[i],t,o)}}else for(i=0;a>i;i++)if(Array.isArray(e[i]))throw new f(t.length+1,t.length,\">\")}function i(e,r,n,a){var o,s,u=e.length,f=r[n],l=Math.min(u,f);if(e.length=f,n<r.length-1){var p=n+1;for(o=0;l>o;o++)s=e[o],Array.isArray(s)||(s=[s],e[o]=s),i(s,r,p,a);for(o=l;f>o;o++)s=[],e[o]=s,i(s,r,p,a)}else{for(o=0;l>o;o++)for(;Array.isArray(e[o]);)e[o]=e[o][0];if(a!==t.UNINITIALIZED)for(o=l;f>o;o++)e[o]=c.clone(a)}}function a(e,t,r){var n,i;if(t>r){var o=r+1;for(n=0,i=e.length;i>n;n++)e[n]=a(e[n],t,o)}else for(;Array.isArray(e);)e=e[0];return e}function o(e,t,r){var n,i;if(Array.isArray(e)){var a=r+1;for(n=0,i=e.length;i>n;n++)e[n]=o(e[n],t,a)}else for(var s=r;t>s;s++)e=[e];return e}var s=r(6),u=r(23),c=r(3),f=(r(41),r(42)),l=r(43);t.size=function(e){for(var t=[];Array.isArray(e);)t.push(e.length),e=e[0];return t},t.validate=function(e,t){var r=0==t.length;if(r){if(Array.isArray(e))throw new f(e.length,0)}else n(e,t,0)},t.validateIndex=function(e,t){if(!s.isNumber(e)||!s.isInteger(e))throw new TypeError(\"Index must be an integer (value: \"+e+\")\");if(0>e)throw new l(e);if(void 0!==t&&e>=t)throw new l(e,t)},t.UNINITIALIZED={},t.resize=function(e,t,r){if(!Array.isArray(e)||!Array.isArray(t))throw new TypeError(\"Array expected\");if(0===t.length)throw new Error(\"Resizing to scalar is not supported\");t.forEach(function(e){if(!s.isNumber(e)||!s.isInteger(e)||0>e)throw new TypeError(\"Invalid size, must contain positive integers (size: \"+u.format(t)+\")\")});var n=void 0!==r?r:0;return i(e,t,0,n),e},t.squeeze=function(e,r){for(var n=r||t.size(e);Array.isArray(e)&&1===e.length;)e=e[0],n.shift();for(var i=n.length;1===n[i-1];)i--;return i<n.length&&(e=a(e,i,0),n.length=i),e},t.unsqueeze=function(e,r,n,i){var a=i||t.size(e);if(n)for(var s=0;n>s;s++)e=[e],a.unshift(1);for(e=o(e,r,0);a.length<r;)a.push(1);return e},t.flatten=function(e){if(!Array.isArray(e))return e;var t=[];return e.forEach(function r(e){Array.isArray(e)?e.forEach(r):t.push(e)}),t},t.isArray=Array.isArray},function(e,t){\"use strict\";t.type=function(e){var t=typeof e;return\"object\"===t?null===e?\"null\":e instanceof Boolean?\"boolean\":e instanceof Number?\"number\":e instanceof String?\"string\":Array.isArray(e)?\"Array\":e instanceof Date?\"Date\":e instanceof RegExp?\"RegExp\":\"Object\":\"function\"===t?\"Function\":t}},function(e,t){\"use strict\";function r(e,t,n){if(!(this instanceof r))throw new SyntaxError(\"Constructor must be called with the new operator\");this.actual=e,this.expected=t,this.relation=n,this.message=\"Dimension mismatch (\"+(Array.isArray(e)?\"[\"+e.join(\", \")+\"]\":e)+\" \"+(this.relation||\"!=\")+\" \"+(Array.isArray(t)?\"[\"+t.join(\", \")+\"]\":t)+\")\",this.stack=(new Error).stack}r.prototype=new RangeError,r.prototype.constructor=RangeError,r.prototype.name=\"DimensionError\",r.prototype.isDimensionError=!0,e.exports=r},function(e,t){\"use strict\";function r(e,t,n){if(!(this instanceof r))throw new SyntaxError(\"Constructor must be called with the new operator\");this.index=e,arguments.length<3?(this.min=0,this.max=t):(this.min=t,this.max=n),void 0!==this.min&&this.index<this.min?this.message=\"Index out of range (\"+this.index+\" < \"+this.min+\")\":void 0!==this.max&&this.index>=this.max?this.message=\"Index out of range (\"+this.index+\" > \"+(this.max-1)+\")\":this.message=\"Index out of range (\"+this.index+\")\",this.stack=(new Error).stack}r.prototype=new RangeError,r.prototype.constructor=RangeError,r.prototype.name=\"IndexError\",r.prototype.isIndexError=!0,e.exports=r},function(e,t){\"use strict\";t.isBoolean=function(e){return\"boolean\"==typeof e}},function(e,t){t.memoize=function(e,t){return function r(){\"object\"!=typeof r.cache&&(r.cache={});for(var n=[],i=0;i<arguments.length;i++)n[i]=arguments[i];var a=t?t(n):JSON.stringify(n);return a in r.cache?r.cache[a]:r.cache[a]=e.apply(e,n)}}},function(e,t,r){\"use strict\";function n(e,t,n,c){function g(e,t){if(!(this instanceof g))throw new SyntaxError(\"Constructor must be called with the new operator\");if(t&&!m(t))throw new Error(\"Invalid datatype: \"+t);if(e&&e.isMatrix===!0)\"DenseMatrix\"===e.type?(this._data=u.clone(e._data),this._size=u.clone(e._size),this._datatype=t||e._datatype):(this._data=e.toArray(),this._size=e.size(),this._datatype=t||e._datatype);else if(e&&f(e.data)&&f(e.size))this._data=e.data,this._size=e.size,this._datatype=t||e.datatype;else if(f(e))this._data=b(e),this._size=s.size(this._data),s.validate(this._data,this._size),this._datatype=t;else{if(e)throw new TypeError(\"Unsupported type of data (\"+i.types.type(e)+\")\");this._data=[],this._size=[0],this._datatype=t}}function v(e,t){if(!t||t.isIndex!==!0)throw new TypeError(\"Invalid index\");var r=t.isScalar();if(r)return e.get(t.min());var n=t.size();if(n.length!=e._size.length)throw new a(n.length,e._size.length);for(var i=t.min(),o=t.max(),s=0,u=e._size.length;u>s;s++)h(i[s],e._size[s]),h(o[s],e._size[s]);return new g(d(e._data,t,n.length,0),e._datatype)}function d(e,t,r,n){var i=n==r-1,a=t.dimension(n);return i?a.map(function(t){return e[t]}).valueOf():a.map(function(i){var a=e[i];return d(a,t,r,n+1)}).valueOf()}function y(e,t,r,n){if(!t||t.isIndex!==!0)throw new TypeError(\"Invalid index\");var i,o=t.size(),c=t.isScalar();if(r&&r.isMatrix===!0?(i=r.size(),r=r.valueOf()):i=s.size(r),c){if(0!==i.length)throw new TypeError(\"Scalar expected\");e.set(t.min(),r,n)}else{if(o.length<e._size.length)throw new a(o.length,e._size.length,\"<\");if(i.length<o.length){for(var f=0,l=0;1===o[f]&&1===i[f];)f++;for(;1===o[f];)l++,f++;r=s.unsqueeze(r,o.length,l,i)}if(!u.deepEqual(o,i))throw new a(o,i,\">\");var p=t.max().map(function(e){return e+1});w(e,p,n);var m=o.length,h=0;x(e._data,t,r,m,h)}return e}function x(e,t,r,n,i){var a=i==n-1,o=t.dimension(i);a?o.forEach(function(t,n){h(t),e[t]=r[n[0]]}):o.forEach(function(a,o){h(a),x(e[a],t,r[o[0]],n,i+1)})}function w(e,t,r){for(var n=u.clone(e._size),i=!1;n.length<t.length;)n.push(0),i=!0;for(var a=0,o=t.length;o>a;a++)t[a]>n[a]&&(n[a]=t[a],i=!0);i&&E(e,n,r)}function b(e){for(var t=0,r=e.length;r>t;t++){var n=e[t];f(n)?e[t]=b(n):n&&n.isMatrix===!0&&(e[t]=b(n.valueOf()))}return e}var N=n(r(38));g.prototype=new N,g.prototype.type=\"DenseMatrix\",g.prototype.isDenseMatrix=!0,g.prototype.storage=function(){return\"dense\"},g.prototype.datatype=function(){return this._datatype},g.prototype.create=function(e,t){return new g(e,t)},g.prototype.subset=function(e,t,r){switch(arguments.length){case 1:return v(this,e);case 2:case 3:return y(this,e,t,r);default:throw new SyntaxError(\"Wrong number of arguments\")}},g.prototype.get=function(e){if(!f(e))throw new TypeError(\"Array expected\");if(e.length!=this._size.length)throw new a(e.length,this._size.length);for(var t=0;t<e.length;t++)h(e[t],this._size[t]);for(var r=this._data,n=0,i=e.length;i>n;n++){var o=e[n];h(o,r.length),r=r[o]}return u.clone(r)},g.prototype.set=function(e,t,r){if(!f(e))throw new TypeError(\"Array expected\");if(e.length<this._size.length)throw new a(e.length,this._size.length,\"<\");var n,i,o,s=e.map(function(e){return e+1});w(this,s,r);var u=this._data;for(n=0,i=e.length-1;i>n;n++)o=e[n],h(o,u.length),u=u[o];return o=e[e.length-1],h(o,u.length),u[o]=t,this},g.prototype.resize=function(e,t,r){if(!f(e))throw new TypeError(\"Array expected\");var n=r?this.clone():this;return E(n,e,t)};var E=function(e,t,r){if(0===t.length){for(var n=e._data;f(n);)n=n[0];return u.clone(n)}return e._size=u.clone(t),e._data=s.resize(e._data,e._size,r),e};return g.prototype.clone=function(){var e=new g({data:u.clone(this._data),size:u.clone(this._size),datatype:this._datatype});return e},g.prototype.size=function(){return this._size},g.prototype.map=function(e){var t=this,r=function(n,i){return f(n)?n.map(function(e,t){return r(e,i.concat(t))}):e(n,i,t)};return new g({data:r(this._data,[]),size:u.clone(this._size),datatype:this._datatype})},g.prototype.forEach=function(e){var t=this,r=function(n,i){f(n)?n.forEach(function(e,t){r(e,i.concat(t))}):e(n,i,t)};r(this._data,[])},g.prototype.toArray=function(){return u.clone(this._data)},g.prototype.valueOf=function(){return this._data},g.prototype.format=function(e){return o.format(this._data,e)},g.prototype.toString=function(){return o.format(this._data)},g.prototype.toJSON=function(){return{mathjs:\"DenseMatrix\",data:this._data,size:this._size,datatype:this._datatype}},g.prototype.diagonal=function(e){if(e){if(e.isBigNumber===!0&&(e=e.toNumber()),!l(e)||!p(e))throw new TypeError(\"The parameter k must be an integer number\")}else e=0;for(var t=e>0?e:0,r=0>e?-e:0,n=this._size[0],i=this._size[1],a=Math.min(n-r,i-t),o=[],s=0;a>s;s++)o[s]=u.clone(this._data[s+r][s+t]);return new g({data:o,size:[a],datatype:this._datatype})},g.diagonal=function(t,r,n,i,a){if(!f(t))throw new TypeError(\"Array expected, size parameter\");if(2!==t.length)throw new Error(\"Only two dimensions matrix are supported\");if(t=t.map(function(e){if(e&&e.isBigNumber===!0&&(e=e.toNumber()),!l(e)||!p(e)||1>e)throw new Error(\"Size values must be positive integers\");return e}),n){if(n&&n.isBigNumber===!0&&(n=n.toNumber()),!l(n)||!p(n))throw new TypeError(\"The parameter k must be an integer number\")}else n=0;i&&m(a)&&(i=c.convert(i,a));var o,u=n>0?n:0,h=0>n?-n:0,v=t[0],d=t[1],y=Math.min(v-h,d-u);if(f(r)){if(r.length!==y)throw new Error(\"Invalid value array length\");o=function(e){return r[e]}}else if(r&&r.isMatrix===!0){var x=r.size();if(1!==x.length||x[0]!==y)throw new Error(\"Invalid matrix length\");o=function(e){return r.get([e])}}else o=function(){return r};i||(i=o(0)&&o(0).isBigNumber===!0?new e.BigNumber(0):0);var w=[];if(t.length>0){w=s.resize(w,t,i);for(var b=0;y>b;b++)w[b+h][b+u]=o(b)}return new g({data:w,size:[v,d]})},g.fromJSON=function(e){return new g(e)},g.prototype.swapRows=function(e,t){if(!(l(e)&&p(e)&&l(t)&&p(t)))throw new Error(\"Row index must be positive integers\");if(2!==this._size.length)throw new Error(\"Only two dimensional matrix is supported\");return h(e,this._size[0]),h(t,this._size[0]),g._swapRows(e,t,this._data),this},g._swapRows=function(e,t,r){var n=r[e];r[e]=r[t],r[t]=n},e.Matrix._storage.dense=g,e.Matrix._storage[\"default\"]=g,g}var i=r(39),a=r(42),o=i.string,s=i.array,u=i.object,c=i.number,f=Array.isArray,l=c.isNumber,p=c.isInteger,m=o.isString,h=s.validateIndex;t.name=\"DenseMatrix\",t.path=\"type\",t.factory=n,t.lazy=!1},function(e,t,r){\"use strict\";function n(e,t,n,g){function v(e,t){if(!(this instanceof v))throw new SyntaxError(\"Constructor must be called with the new operator\");if(t&&!m(t))throw new Error(\"Invalid datatype: \"+t);if(e&&e.isMatrix===!0)x(this,e,t);else if(e&&f(e.index)&&f(e.ptr)&&f(e.size))this._values=e.values,this._index=e.index,this._ptr=e.ptr,this._size=e.size,this._datatype=t||e.datatype;else if(f(e))w(this,e,t);else{if(e)throw new TypeError(\"Unsupported type of data (\"+i.types.type(e)+\")\");this._values=[],this._index=[],this._ptr=[0],this._size=[0,0],this._datatype=t}}var d=n(r(38)),y=n(r(48)),x=function(e,t,r){\"SparseMatrix\"===t.type?(e._values=t._values?s.clone(t._values):void 0,e._index=s.clone(t._index),e._ptr=s.clone(t._ptr),e._size=s.clone(t._size),e._datatype=r||t._datatype):w(e,t.valueOf(),r||t._datatype)},w=function(e,t,r){e._values=[],e._index=[],e._ptr=[],e._datatype=r;var n=t.length,i=0,a=y,o=0;if(m(r)&&(a=g.find(y,[r,r])||y,o=g.convert(0,r)),n>0){var s=0;do{e._ptr.push(e._index.length);for(var u=0;n>u;u++){var c=t[u];if(f(c)){if(0===s&&i<c.length&&(i=c.length),s<c.length){var l=c[s];a(l,o)||(e._values.push(l),e._index.push(u))}}else 0===s&&1>i&&(i=1),a(c,o)||(e._values.push(c),e._index.push(u))}s++}while(i>s)}e._ptr.push(e._index.length),e._size=[n,i]};v.prototype=new d,v.prototype.type=\"SparseMatrix\",v.prototype.isSparseMatrix=!0,v.prototype.storage=function(){return\"sparse\"},v.prototype.datatype=function(){return this._datatype},v.prototype.create=function(e,t){return new v(e,t)},v.prototype.density=function(){var e=this._size[0],t=this._size[1];return 0!==e&&0!==t?this._index.length/(e*t):0},v.prototype.subset=function(e,t,r){if(!this._values)throw new Error(\"Cannot invoke subset on a Pattern only matrix\");switch(arguments.length){case 1:return b(this,e);case 2:case 3:return N(this,e,t,r);default:throw new SyntaxError(\"Wrong number of arguments\")}};var b=function(e,t){if(!t||t.isIndex!==!0)throw new TypeError(\"Invalid index\");var r=t.isScalar();if(r)return e.get(t.min());var n=t.size();if(n.length!=e._size.length)throw new a(n.length,e._size.length);var i,o,s,u,c=t.min(),f=t.max();for(i=0,o=e._size.length;o>i;i++)h(c[i],e._size[i]),h(f[i],e._size[i]);var l=e._values,p=e._index,m=e._ptr,g=t.dimension(0),d=t.dimension(1),y=[],x=[];g.forEach(function(e,t){x[e]=t[0],y[e]=!0});var w=l?[]:void 0,b=[],N=[];return d.forEach(function(e){for(N.push(b.length),s=m[e],u=m[e+1];u>s;s++)i=p[s],y[i]===!0&&(b.push(x[i]),w&&w.push(l[s]))}),N.push(b.length),new v({values:w,index:b,ptr:N,size:n,datatype:e._datatype})},N=function(e,t,r,n){if(!t||t.isIndex!==!0)throw new TypeError(\"Invalid index\");var i,u=t.size(),c=t.isScalar();if(r&&r.isMatrix===!0?(i=r.size(),r=r.toArray()):i=o.size(r),c){if(0!==i.length)throw new TypeError(\"Scalar expected\");e.set(t.min(),r,n)}else{if(1!==u.length&&2!==u.length)throw new a(u.length,e._size.length,\"<\");if(i.length<u.length){for(var f=0,l=0;1===u[f]&&1===i[f];)f++;for(;1===u[f];)l++,f++;r=o.unsqueeze(r,u.length,l,i)}if(!s.deepEqual(u,i))throw new a(u,i,\">\");for(var p=t.min()[0],m=t.min()[1],h=i[0],g=i[1],v=0;h>v;v++)for(var d=0;g>d;d++){var y=r[v][d];e.set([v+p,d+m],y,n)}}return e};v.prototype.get=function(e){if(!f(e))throw new TypeError(\"Array expected\");if(e.length!=this._size.length)throw new a(e.length,this._size.length);if(!this._values)throw new Error(\"Cannot invoke get on a Pattern only matrix\");var t=e[0],r=e[1];h(t,this._size[0]),h(r,this._size[1]);var n=E(t,this._ptr[r],this._ptr[r+1],this._index);return n<this._ptr[r+1]&&this._index[n]===t?s.clone(this._values[n]):0},v.prototype.set=function(e,t,r){if(!f(e))throw new TypeError(\"Array expected\");if(e.length!=this._size.length)throw new a(e.length,this._size.length);if(!this._values)throw new Error(\"Cannot invoke set on a Pattern only matrix\");var n=e[0],i=e[1],o=this._size[0],s=this._size[1],u=y,c=0;m(this._datatype)&&(u=g.find(y,[this._datatype,this._datatype])||y,c=g.convert(0,this._datatype)),(n>o-1||i>s-1)&&(_(this,Math.max(n+1,o),Math.max(i+1,s),r),o=this._size[0],s=this._size[1]),h(n,o),h(i,s);var l=E(n,this._ptr[i],this._ptr[i+1],this._index);return l<this._ptr[i+1]&&this._index[l]===n?u(t,c)?M(l,i,this._values,this._index,this._ptr):this._values[l]=t:A(l,n,i,t,this._values,this._index,this._ptr),this};var E=function(e,t,r,n){if(r-t===0)return r;for(var i=t;r>i;i++)if(n[i]===e)return i;return t},M=function(e,t,r,n,i){r.splice(e,1),n.splice(e,1);for(var a=t+1;a<i.length;a++)i[a]--},A=function(e,t,r,n,i,a,o){i.splice(e,0,n),a.splice(e,0,t);for(var s=r+1;s<o.length;s++)o[s]++};v.prototype.resize=function(e,t,r){if(!f(e))throw new TypeError(\"Array expected\");if(2!==e.length)throw new Error(\"Only two dimensions matrix are supported\");e.forEach(function(t){if(!c.isNumber(t)||!c.isInteger(t)||0>t)throw new TypeError(\"Invalid size, must contain positive integers (size: \"+u.format(e)+\")\")});var n=r?this.clone():this;return _(n,e[0],e[1],t)};var _=function(e,t,r,n){var i=n||0,a=y,o=0;m(e._datatype)&&(a=g.find(y,[e._datatype,e._datatype])||y,o=g.convert(0,e._datatype),i=g.convert(i,e._datatype));var s,u,c,f=!a(i,o),l=e._size[0],p=e._size[1];if(r>p){for(u=p;r>u;u++)if(e._ptr[u]=e._values.length,f)for(s=0;l>s;s++)e._values.push(i),e._index.push(s);e._ptr[r]=e._values.length}else p>r&&(e._ptr.splice(r+1,p-r),e._values.splice(e._ptr[r],e._values.length),e._index.splice(e._ptr[r],e._index.length));if(p=r,t>l){if(f){var h=0;for(u=0;p>u;u++){e._ptr[u]=e._ptr[u]+h,c=e._ptr[u+1]+h;var v=0;for(s=l;t>s;s++,v++)e._values.splice(c+v,0,i),e._index.splice(c+v,0,s),h++}e._ptr[p]=e._values.length}}else if(l>t){var d=0;for(u=0;p>u;u++){e._ptr[u]=e._ptr[u]-d;var x=e._ptr[u],w=e._ptr[u+1]-d;for(c=x;w>c;c++)s=e._index[c],s>t-1&&(e._values.splice(c,1),e._index.splice(c,1),d++)}e._ptr[u]=e._values.length}return e._size[0]=t,e._size[1]=r,e};v.prototype.clone=function(){var e=new v({values:this._values?s.clone(this._values):void 0,index:s.clone(this._index),ptr:s.clone(this._ptr),size:s.clone(this._size),datatype:this._datatype});return e},v.prototype.size=function(){return s.clone(this._size)},v.prototype.map=function(e,t){if(!this._values)throw new Error(\"Cannot invoke map on a Pattern only matrix\");var r=this,n=this._size[0],i=this._size[1],a=function(t,n,i){return e(t,[n,i],r)};return O(this,0,n-1,0,i-1,a,t)};var O=function(e,t,r,n,i,a,o){var s=[],u=[],c=[],f=y,l=0;m(e._datatype)&&(f=g.find(y,[e._datatype,e._datatype])||y,l=g.convert(0,e._datatype));for(var p=function(e,t,r){e=a(e,t,r),f(e,l)||(s.push(e),u.push(t))},h=n;i>=h;h++){c.push(s.length);for(var d=e._ptr[h],x=e._ptr[h+1],w=t,b=d;x>b;b++){var N=e._index[b];if(N>=t&&r>=N){if(!o)for(var E=w;N>E;E++)p(0,E-t,h-n);p(e._values[b],N-t,h-n)}w=N+1}if(!o)for(var M=w;r>=M;M++)p(0,M-t,h-n)}return c.push(s.length),new v({values:s,index:u,ptr:c,size:[r-t+1,i-n+1]})};v.prototype.forEach=function(e,t){if(!this._values)throw new Error(\"Cannot invoke forEach on a Pattern only matrix\");for(var r=this,n=this._size[0],i=this._size[1],a=0;i>a;a++){for(var o=this._ptr[a],s=this._ptr[a+1],u=0,c=o;s>c;c++){var f=this._index[c];if(!t)for(var l=u;f>l;l++)e(0,[l,a],r);e(this._values[c],[f,a],r),u=f+1}if(!t)for(var p=u;n>p;p++)e(0,[p,a],r)}},v.prototype.toArray=function(){return T(this._values,this._index,this._ptr,this._size,!0)},v.prototype.valueOf=function(){return T(this._values,this._index,this._ptr,this._size,!1)};var T=function(e,t,r,n,i){var a,o,u=n[0],c=n[1],f=[];for(a=0;u>a;a++)for(f[a]=[],o=0;c>o;o++)f[a][o]=0;for(o=0;c>o;o++)for(var l=r[o],p=r[o+1],m=l;p>m;m++)a=t[m],f[a][o]=e?i?s.clone(e[m]):e[m]:1;return f};return v.prototype.format=function(e){for(var t=this._size[0],r=this._size[1],n=this.density(),i=\"Sparse Matrix [\"+u.format(t,e)+\" x \"+u.format(r,e)+\"] density: \"+u.format(n,e)+\"\\n\",a=0;r>a;a++)for(var o=this._ptr[a],s=this._ptr[a+1],c=o;s>c;c++){var f=this._index[c];i+=\"\\n (\"+u.format(f,e)+\", \"+u.format(a,e)+\") ==> \"+(this._values?u.format(this._values[c],e):\"X\")}return i},v.prototype.toString=function(){return u.format(this.toArray())},v.prototype.toJSON=function(){return{mathjs:\"SparseMatrix\",values:this._values,index:this._index,ptr:this._ptr,size:this._size,datatype:this._datatype}},v.prototype.diagonal=function(e){if(e){if(e.isBigNumber===!0&&(e=e.toNumber()),!l(e)||!p(e))throw new TypeError(\"The parameter k must be an integer number\")}else e=0;var t=e>0?e:0,r=0>e?-e:0,n=this._size[0],i=this._size[1],a=Math.min(n-r,i-t),o=[],u=[],c=[];c[0]=0;for(var f=t;i>f&&o.length<a;f++)for(var m=this._ptr[f],h=this._ptr[f+1],g=m;h>g;g++){var d=this._index[g];if(d===f-t+r){o.push(s.clone(this._values[g])),u[o.length-1]=d-r;break}}return c.push(o.length),new v({values:o,index:u,ptr:c,size:[a,1]})},v.fromJSON=function(e){return new v(e)},v.diagonal=function(e,t,r,n,i){if(!f(e))throw new TypeError(\"Array expected, size parameter\");if(2!==e.length)throw new Error(\"Only two dimensions matrix are supported\");if(e=e.map(function(e){if(e&&e.isBigNumber===!0&&(e=e.toNumber()),!l(e)||!p(e)||1>e)throw new Error(\"Size values must be positive integers\");return e}),r){if(r.isBigNumber===!0&&(r=r.toNumber()),!l(r)||!p(r))throw new TypeError(\"The parameter k must be an integer number\")}else r=0;var a=y,o=0;m(i)&&(a=g.find(y,[i,i])||y,o=g.convert(0,i));var s,u=r>0?r:0,c=0>r?-r:0,h=e[0],d=e[1],x=Math.min(h-c,d-u);if(f(t)){if(t.length!==x)throw new Error(\"Invalid value array length\");s=function(e){return t[e]}}else if(t&&t.isMatrix===!0){var w=t.size();if(1!==w.length||w[0]!==x)throw new Error(\"Invalid matrix length\");s=function(e){return t.get([e])}}else s=function(){return t};for(var b=[],N=[],E=[],M=0;d>M;M++){E.push(b.length);var A=M-u;if(A>=0&&x>A){var _=s(A);a(_,o)||(N.push(A+c),b.push(_))}}return E.push(b.length),new v({values:b,index:N,ptr:E,size:[h,d]})},v.prototype.swapRows=function(e,t){if(!(l(e)&&p(e)&&l(t)&&p(t)))throw new Error(\"Row index must be positive integers\");if(2!==this._size.length)throw new Error(\"Only two dimensional matrix is supported\");return h(e,this._size[0]),h(t,this._size[0]),v._swapRows(e,t,this._size[1],this._values,this._index,this._ptr),this},v._forEachRow=function(e,t,r,n,i){for(var a=n[e],o=n[e+1],s=a;o>s;s++)i(r[s],t[s])},v._swapRows=function(e,t,r,n,i,a){for(var o=0;r>o;o++){var s=a[o],u=a[o+1],c=E(e,s,u,i),f=E(t,s,u,i);if(u>c&&u>f&&i[c]===e&&i[f]===t){if(n){var l=n[c];n[c]=n[f],n[f]=l}}else if(u>c&&i[c]===e&&(f>=u||i[f]!==t)){var p=n?n[c]:void 0;i.splice(f,0,t),n&&n.splice(f,0,p),i.splice(c>=f?c+1:c,1),n&&n.splice(c>=f?c+1:c,1)}else if(u>f&&i[f]===t&&(c>=u||i[c]!==e)){var m=n?n[f]:void 0;i.splice(c,0,e),n&&n.splice(c,0,m),i.splice(f>=c?f+1:f,1),n&&n.splice(f>=c?f+1:f,1)}}},e.Matrix._storage.sparse=v,v}var i=r(39),a=r(42),o=i.array,s=i.object,u=i.string,c=i.number,f=Array.isArray,l=c.isNumber,p=c.isInteger,m=u.isString,h=o.validateIndex;t.name=\"SparseMatrix\",t.path=\"type\",t.factory=n,t.lazy=!1},function(e,t,r){\"use strict\";function n(e,t,r,n){var a=n(\"equalScalar\",{\"boolean, boolean\":function(e,t){return e===t},\"number, number\":function(e,r){return e===r||i(e,r,t.epsilon)},\"BigNumber, BigNumber\":function(e,t){return e.eq(t)},\"Fraction, Fraction\":function(e,t){return e.equals(t)},\"Complex, Complex\":function(e,r){return(e.re===r.re||i(e.re,r.re,t.epsilon))&&(e.im===r.im||i(e.im,r.im,t.epsilon))},\"Unit, Unit\":function(e,r){if(!e.equalBase(r))throw new Error(\"Cannot compare units with different base\");return e.value===r.value||i(e.value,r.value,t.epsilon)},\"string, string\":function(e,t){return e===t}});return a}var i=r(6).nearlyEqual;t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n){function i(){if(!(this instanceof i))throw new SyntaxError(\"Constructor must be called with the new operator\");this._values=[],this._heap=new e.FibonacciHeap}var a=n(r(50)),o=n(r(48));return i.prototype.type=\"Spa\",i.prototype.isSpa=!0,i.prototype.set=function(e,t){if(this._values[e])this._values[e].value=t;else{var r=this._heap.insert(e,t);this._values[e]=r}},i.prototype.get=function(e){var t=this._values[e];return t?t.value:0},i.prototype.accumulate=function(e,t){var r=this._values[e];r?r.value=a(r.value,t):(r=this._heap.insert(e,t),this._values[e]=r)},i.prototype.forEach=function(e,t,r){var n=this._heap,i=this._values,a=[],s=n.extractMinimum();for(s&&a.push(s);s&&s.key<=t;)s.key>=e&&(o(s.value,0)||r(s.key,s.value,this)),s=n.extractMinimum(),s&&a.push(s);for(var u=0;u<a.length;u++){var c=a[u];s=n.insert(c.key,c.value),i[s.key]=s}},i.prototype.swap=function(e,t){var r=this._values[e],n=this._values[t];if(!r&&n)r=this._heap.insert(e,n.value),this._heap.remove(n),this._values[e]=r,this._values[t]=void 0;else if(r&&!n)n=this._heap.insert(t,r.value),this._heap.remove(r),this._values[t]=n,this._values[e]=void 0;else if(r&&n){var i=r.value;r.value=n.value,n.value=i}},i}t.name=\"Spa\",t.path=\"type\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){var o=n(r(51)),s=n(r(52)),u=r(30),c=n(r(53)),f=n(r(54)),l=n(r(55)),p=n(r(56)),m=n(r(57)),h=a(\"add\",i({\"Matrix, Matrix\":function(e,t){var r;switch(e.storage()){case\"sparse\":switch(t.storage()){case\"sparse\":r=f(e,t,s);break;default:r=c(t,e,s,!0)}break;default:switch(t.storage()){case\"sparse\":r=c(e,t,s,!1);break;default:r=p(e,t,s)}}return r},\"Array, Array\":function(e,t){return h(o(e),o(t)).valueOf()},\"Array, Matrix\":function(e,t){return h(o(e),t)},\"Matrix, Array\":function(e,t){return h(e,o(t))},\"Matrix, any\":function(e,t){var r;switch(e.storage()){case\"sparse\":r=l(e,t,s,!1);break;default:r=m(e,t,s,!1)}return r},\"any, Matrix\":function(e,t){var r;switch(t.storage()){case\"sparse\":r=l(t,e,s,!0);break;default:r=m(t,e,s,!0)}return r},\"Array, any\":function(e,t){return m(o(e),t,s,!1).valueOf()},\"any, Array\":function(e,t){return m(o(t),e,s,!0).valueOf()}},s.signatures));return h.toTex=\"\\\\left(${args[0]}\"+u.operators.add+\"${args[1]}\\\\right)\",h}var i=r(3).extend;t.name=\"add\",t.factory=n},function(e,t){\"use strict\";function r(e,t,r,n){function i(t,r,n){var i=e.Matrix.storage(r||\"default\");return new i(t,n)}var a=n(\"matrix\",{\"\":function(){return i([])},string:function(e){return i([],e)},\"string, string\":function(e,t){return i([],e,t)},Array:function(e){return i(e)},Matrix:function(e){return i(e,e.storage())},\"Array | Matrix, string\":i,\"Array | Matrix, string, string\":i});return a.toTex={0:\"\\\\begin{bmatrix}\\\\end{bmatrix}\",1:\"\\\\left(${args[0]}\\\\right)\",2:\"\\\\left(${args[0]}\\\\right)\"},a}t.name=\"matrix\",t.factory=r},function(e,t){\"use strict\";function r(e,t,r,n){return n(\"add\",{\"number, number\":function(e,t){return e+t},\"Complex, Complex\":function(t,r){return new e.Complex(t.re+r.re,t.im+r.im);\n},\"BigNumber, BigNumber\":function(e,t){return e.plus(t)},\"Fraction, Fraction\":function(e,t){return e.add(t)},\"Unit, Unit\":function(e,t){if(null==e.value)throw new Error(\"Parameter x contains a unit with undefined value\");if(null==t.value)throw new Error(\"Parameter y contains a unit with undefined value\");if(!e.equalBase(t))throw new Error(\"Units do not match\");var r=e.clone();return r.value+=t.value,r.fixPrefix=!1,r}})}t.factory=r},function(e,t,r){\"use strict\";function n(e,t,r,n){var a=e.DenseMatrix,o=function(e,t,r,o){var s=e._data,u=e._size,c=e._datatype,f=t._values,l=t._index,p=t._ptr,m=t._size,h=t._datatype;if(u.length!==m.length)throw new i(u.length,m.length);if(u[0]!==m[0]||u[1]!==m[1])throw new RangeError(\"Dimension mismatch. Matrix A (\"+u+\") must match Matrix B (\"+m+\")\");if(!f)throw new Error(\"Cannot perform operation on Dense Matrix and Pattern Sparse Matrix\");var g,v,d=u[0],y=u[1],x=\"string\"==typeof c&&c===h?c:void 0,w=x?n.find(r,[x,x]):r,b=[];for(g=0;d>g;g++)b[g]=[];var N=[],E=[];for(v=0;y>v;v++){for(var M=v+1,A=p[v],_=p[v+1],O=A;_>O;O++)g=l[O],N[g]=o?w(f[O],s[g][v]):w(s[g][v],f[O]),E[g]=M;for(g=0;d>g;g++)E[g]===M?b[g][v]=N[g]:b[g][v]=s[g][v]}return new a({data:b,size:[d,y],datatype:x})};return o}var i=r(42);t.name=\"algorithm01\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){var o=n(r(48)),s=e.SparseMatrix,u=function(e,t,r){var n=e._values,u=e._index,c=e._ptr,f=e._size,l=e._datatype,p=t._values,m=t._index,h=t._ptr,g=t._size,v=t._datatype;if(f.length!==g.length)throw new i(f.length,g.length);if(f[0]!==g[0]||f[1]!==g[1])throw new RangeError(\"Dimension mismatch. Matrix A (\"+f+\") must match Matrix B (\"+g+\")\");var d,y=f[0],x=f[1],w=o,b=0,N=r;\"string\"==typeof l&&l===v&&(d=l,w=a.find(o,[d,d]),b=a.convert(0,d),N=a.find(r,[d,d]));var E,M,A,_,O,T=n&&p?[]:void 0,C=[],S=[],z=new s({values:T,index:C,ptr:S,size:[y,x],datatype:d}),B=n&&p?[]:void 0,k=n&&p?[]:void 0,I=[],R=[];for(M=0;x>M;M++){S[M]=C.length;var P=M+1;for(_=c[M],O=c[M+1],A=_;O>A;A++)E=u[A],C.push(E),I[E]=P,B&&(B[E]=n[A]);for(_=h[M],O=h[M+1],A=_;O>A;A++)if(E=m[A],I[E]===P){if(B){var U=N(B[E],p[A]);w(U,b)?I[E]=null:B[E]=U}}else C.push(E),R[E]=P,k&&(k[E]=p[A]);if(B&&k)for(A=S[M];A<C.length;)E=C[A],I[E]===P?(T[A]=B[E],A++):R[E]===P?(T[A]=k[E],A++):C.splice(A,1)}return S[x]=C.length,z};return u}var i=r(42);t.name=\"algorithm04\",t.factory=n},function(e,t){\"use strict\";function r(e,t,r,n){var i=e.DenseMatrix,a=function(e,t,r,a){var o=e._values,s=e._index,u=e._ptr,c=e._size,f=e._datatype;if(!o)throw new Error(\"Cannot perform operation on Pattern Sparse Matrix and Scalar value\");var l,p=c[0],m=c[1],h=r;\"string\"==typeof f&&(l=f,t=n.convert(t,l),h=n.find(r,[l,l]));for(var g=[],v=new i({data:g,size:[p,m],datatype:l}),d=[],y=[],x=0;m>x;x++){for(var w=x+1,b=u[x],N=u[x+1],E=b;N>E;E++){var M=s[E];d[M]=o[E],y[M]=w}for(var A=0;p>A;A++)0===x&&(g[A]=[]),y[A]===w?g[A][x]=a?h(t,d[A]):h(d[A],t):g[A][x]=t}return v};return a}t.name=\"algorithm10\",t.factory=r},function(e,t,r){\"use strict\";function n(e,t,r,n){var i=e.DenseMatrix,o=function(e,t,r){var o=e._data,u=e._size,c=e._datatype,f=t._data,l=t._size,p=t._datatype,m=[];if(u.length!==l.length)throw new a(u.length,l.length);for(var h=0;h<u.length;h++){if(u[h]!==l[h])throw new RangeError(\"Dimension mismatch. Matrix A (\"+u+\") must match Matrix B (\"+l+\")\");m[h]=u[h]}var g,v=r;\"string\"==typeof c&&c===p&&(g=c,t=n.convert(t,g),v=n.find(r,[g,g]));var d=m.length>0?s(v,0,m,m[0],o,f):[];return new i({data:d,size:m,datatype:g})},s=function(e,t,r,n,i,a){var o=[];if(t===r.length-1)for(var u=0;n>u;u++)o[u]=e(i[u],a[u]);else for(var c=0;n>c;c++)o[c]=s(e,t+1,r,r[t+1],i[c],a[c]);return o};return o}var i=r(39),a=r(42),o=i.string;o.isString;t.name=\"algorithm13\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){var a=e.DenseMatrix,o=function(e,t,r,o){var u,c=e._data,f=e._size,l=e._datatype,p=r;\"string\"==typeof l&&(u=l,t=n.convert(t,u),p=n.find(r,[u,u]));var m=f.length>0?s(p,0,f,f[0],c,t,o):[];return new a({data:m,size:i(f),datatype:u})},s=function(e,t,r,n,i,a,o){var u=[];if(t===r.length-1)for(var c=0;n>c;c++)u[c]=o?e(a,i[c]):e(i[c],a);else for(var f=0;n>f;f++)u[f]=s(e,t+1,r,r[t+1],i[f],a,o);return u};return o}var i=r(3).clone;t.name=\"algorithm14\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,i){function a(){if(!(this instanceof a))throw new SyntaxError(\"Constructor must be called with the new operator\");this._minimum=null,this._size=0}var o=n(r(59)),s=n(r(63)),u=1/Math.log((1+Math.sqrt(5))/2);a.prototype.type=\"FibonacciHeap\",a.prototype.isFibonacciHeap=!0,a.prototype.insert=function(e,t){var r={key:e,value:t,degree:0};if(this._minimum){var n=this._minimum;r.left=n,r.right=n.right,n.right=r,r.right.left=r,o(e,n.key)&&(this._minimum=r)}else r.left=r,r.right=r,this._minimum=r;return this._size++,r},a.prototype.size=function(){return this._size},a.prototype.clear=function(){this._minimum=null,this._size=0},a.prototype.isEmpty=function(){return!!this._minimum},a.prototype.extractMinimum=function(){var e=this._minimum;if(null===e)return e;for(var t=this._minimum,r=e.degree,n=e.child;r>0;){var i=n.right;n.left.right=n.right,n.right.left=n.left,n.left=t,n.right=t.right,t.right=n,n.right.left=n,n.parent=null,n=i,r--}return e.left.right=e.right,e.right.left=e.left,e==e.right?t=null:(t=e.right,t=m(t,this._size)),this._size--,this._minimum=t,e},a.prototype.remove=function(e){this._minimum=c(this._minimum,e,-1),this.extractMinimum()};var c=function(e,t,r){t.key=r;var n=t.parent;return n&&o(t.key,n.key)&&(f(e,t,n),l(e,n)),o(t.key,e.key)&&(e=t),e},f=function(e,t,r){t.left.right=t.right,t.right.left=t.left,r.degree--,r.child==t&&(r.child=t.right),0===r.degree&&(r.child=null),t.left=e,t.right=e.right,e.right=t,t.right.left=t,t.parent=null,t.mark=!1},l=function(e,t){var r=t.parent;r&&(t.mark?(f(e,t,r),l(r)):t.mark=!0)},p=function(e,t){e.left.right=e.right,e.right.left=e.left,e.parent=t,t.child?(e.left=t.child,e.right=t.child.right,t.child.right=e,e.right.left=e):(t.child=e,e.right=e,e.left=e),t.degree++,e.mark=!1},m=function(e,t){var r=Math.floor(Math.log(t)*u)+1,n=new Array(r),i=0,a=e;if(a)for(i++,a=a.right;a!==e;)i++,a=a.right;for(var c;i>0;){for(var f=a.degree,l=a.right;;){if(c=n[f],!c)break;if(s(a.key,c.key)){var m=c;c=a,a=m}p(c,a),n[f]=null,f++}n[f]=a,a=l,i--}e=null;for(var h=0;r>h;h++)c=n[h],c&&(e?(c.left.right=c.right,c.right.left=c.left,c.left=e,c.right=e.right,e.right=c,c.right.left=c,o(c.key,e.key)&&(e=c)):e=c);return e};return a}t.name=\"FibonacciHeap\",t.path=\"type\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){var o=n(r(51)),s=n(r(60)),u=n(r(61)),c=n(r(62)),f=n(r(56)),l=n(r(57)),p=r(30),m=a(\"smaller\",{\"boolean, boolean\":function(e,t){return t>e},\"number, number\":function(e,r){return r>e&&!i(e,r,t.epsilon)},\"BigNumber, BigNumber\":function(e,t){return e.lt(t)},\"Fraction, Fraction\":function(e,t){return-1===e.compare(t)},\"Complex, Complex\":function(e,t){throw new TypeError(\"No ordering relation is defined for complex numbers\")},\"Unit, Unit\":function(e,r){if(!e.equalBase(r))throw new Error(\"Cannot compare units with different base\");return e.value<r.value&&!i(e.value,r.value,t.epsilon)},\"string, string\":function(e,t){return t>e},\"Matrix, Matrix\":function(e,t){var r;switch(e.storage()){case\"sparse\":switch(t.storage()){case\"sparse\":r=u(e,t,m);break;default:r=s(t,e,m,!0)}break;default:switch(t.storage()){case\"sparse\":r=s(e,t,m,!1);break;default:r=f(e,t,m)}}return r},\"Array, Array\":function(e,t){return m(o(e),o(t)).valueOf()},\"Array, Matrix\":function(e,t){return m(o(e),t)},\"Matrix, Array\":function(e,t){return m(e,o(t))},\"Matrix, any\":function(e,t){var r;switch(e.storage()){case\"sparse\":r=c(e,t,m,!1);break;default:r=l(e,t,m,!1)}return r},\"any, Matrix\":function(e,t){var r;switch(t.storage()){case\"sparse\":r=c(t,e,m,!0);break;default:r=l(t,e,m,!0)}return r},\"Array, any\":function(e,t){return l(o(e),t,m,!1).valueOf()},\"any, Array\":function(e,t){return l(o(t),e,m,!0).valueOf()}});return m.toTex=\"\\\\left(${args[0]}\"+p.operators.smaller+\"${args[1]}\\\\right)\",m}var i=r(6).nearlyEqual;t.name=\"smaller\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){var a=e.DenseMatrix,o=function(e,t,r,o){var s=e._data,u=e._size,c=e._datatype,f=t._values,l=t._index,p=t._ptr,m=t._size,h=t._datatype;if(u.length!==m.length)throw new i(u.length,m.length);if(u[0]!==m[0]||u[1]!==m[1])throw new RangeError(\"Dimension mismatch. Matrix A (\"+u+\") must match Matrix B (\"+m+\")\");if(!f)throw new Error(\"Cannot perform operation on Dense Matrix and Pattern Sparse Matrix\");var g,v=u[0],d=u[1],y=0,x=r;\"string\"==typeof c&&c===h&&(g=c,y=n.convert(0,g),x=n.find(r,[g,g]));for(var w=[],b=0;v>b;b++)w[b]=[];for(var N=[],E=[],M=0;d>M;M++){for(var A=M+1,_=p[M],O=p[M+1],T=_;O>T;T++){var C=l[T];N[C]=o?x(f[T],s[C][M]):x(s[C][M],f[T]),E[C]=A}for(var S=0;v>S;S++)E[S]===A?w[S][M]=N[S]:w[S][M]=o?x(y,s[S][M]):x(s[S][M],y)}return new a({data:w,size:[v,d],datatype:g})};return o}var i=r(42);t.name=\"algorithm03\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){var a=e.DenseMatrix,o=function(e,t,r){var o=e._size,u=e._datatype,c=t._size,f=t._datatype;if(o.length!==c.length)throw new i(o.length,c.length);if(o[0]!==c[0]||o[1]!==c[1])throw new RangeError(\"Dimension mismatch. Matrix A (\"+o+\") must match Matrix B (\"+c+\")\");var l,p=o[0],m=o[1],h=0,g=r;\"string\"==typeof u&&u===f&&(l=u,h=n.convert(0,l),g=n.find(r,[l,l]));var v,d,y=[];for(v=0;p>v;v++)y[v]=[];var x=new a({data:y,size:[p,m],datatype:l}),w=[],b=[],N=[],E=[];for(d=0;m>d;d++){var M=d+1;for(s(e,d,N,w,M),s(t,d,E,b,M),v=0;p>v;v++){var A=N[v]===M?w[v]:h,_=E[v]===M?b[v]:h;y[v][d]=g(A,_)}}return x},s=function(e,t,r,n,i){for(var a=e._values,o=e._index,s=e._ptr,u=s[t],c=s[t+1];c>u;u++){var f=o[u];r[f]=i,n[f]=a[u]}};return o}var i=r(42);t.name=\"algorithm07\",t.factory=n},function(e,t){\"use strict\";function r(e,t,r,n){var i=e.DenseMatrix,a=function(e,t,r,a){var o=e._values,s=e._index,u=e._ptr,c=e._size,f=e._datatype;if(!o)throw new Error(\"Cannot perform operation on Pattern Sparse Matrix and Scalar value\");var l,p=c[0],m=c[1],h=r;\"string\"==typeof f&&(l=f,t=n.convert(t,l),h=n.find(r,[l,l]));for(var g=[],v=new i({data:g,size:[p,m],datatype:l}),d=[],y=[],x=0;m>x;x++){for(var w=x+1,b=u[x],N=u[x+1],E=b;N>E;E++){var M=s[E];d[M]=o[E],y[M]=w}for(var A=0;p>A;A++)0===x&&(g[A]=[]),y[A]===w?g[A][x]=a?h(t,d[A]):h(d[A],t):g[A][x]=a?h(t,0):h(0,t)}return v};return a}t.name=\"algorithm12\",t.factory=r},function(e,t,r){\"use strict\";function n(e,t,n,a){var o=n(r(51)),s=n(r(60)),u=n(r(61)),c=n(r(62)),f=n(r(56)),l=n(r(57)),p=r(30),m=a(\"larger\",{\"boolean, boolean\":function(e,t){return e>t},\"number, number\":function(e,r){return e>r&&!i(e,r,t.epsilon)},\"BigNumber, BigNumber\":function(e,t){return e.gt(t)},\"Fraction, Fraction\":function(e,t){return 1===e.compare(t)},\"Complex, Complex\":function(){throw new TypeError(\"No ordering relation is defined for complex numbers\")},\"Unit, Unit\":function(e,r){if(!e.equalBase(r))throw new Error(\"Cannot compare units with different base\");return e.value>r.value&&!i(e.value,r.value,t.epsilon)},\"string, string\":function(e,t){return e>t},\"Matrix, Matrix\":function(e,t){var r;switch(e.storage()){case\"sparse\":switch(t.storage()){case\"sparse\":r=u(e,t,m);break;default:r=s(t,e,m,!0)}break;default:switch(t.storage()){case\"sparse\":r=s(e,t,m,!1);break;default:r=f(e,t,m)}}return r},\"Array, Array\":function(e,t){return m(o(e),o(t)).valueOf()},\"Array, Matrix\":function(e,t){return m(o(e),t)},\"Matrix, Array\":function(e,t){return m(e,o(t))},\"Matrix, any\":function(e,t){var r;switch(e.storage()){case\"sparse\":r=c(e,t,m,!1);break;default:r=l(e,t,m,!1)}return r},\"any, Matrix\":function(e,t){var r;switch(t.storage()){case\"sparse\":r=c(t,e,m,!0);break;default:r=l(t,e,m,!0)}return r},\"Array, any\":function(e,t){return l(o(e),t,m,!1).valueOf()},\"any, Array\":function(e,t){return l(o(t),e,m,!0).valueOf()}});return m.toTex=\"\\\\left(${args[0]}\"+p.operators.larger+\"${args[1]}\\\\right)\",m}var i=r(6).nearlyEqual;t.name=\"larger\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n){function a(e,t){if(!(this instanceof a))throw new SyntaxError(\"Constructor must be called with the new operator\");if(t&&!u(t))throw new Error(\"Invalid datatype: \"+t);if(e&&e.isMatrix===!0||s(e)){var r=new c(e,t);this._data=r._data,this._size=r._size,this._datatype=r._datatype,this._min=null,this._max=null}else if(e&&s(e.data)&&s(e.size))this._data=e.data,this._size=e.size,this._datatype=e.datatype,this._min=\"undefined\"!=typeof e.min?e.min:null,this._max=\"undefined\"!=typeof e.max?e.max:null;else{if(e)throw new TypeError(\"Unsupported type of data (\"+i.types.type(e)+\")\");this._data=[],this._size=[0],this._datatype=t,this._min=null,this._max=null}}var c=n(r(46)),f=n(r(59));return a.prototype=new c,a.prototype.type=\"ImmutableDenseMatrix\",a.prototype.isImmutableDenseMatrix=!0,a.prototype.subset=function(e){switch(arguments.length){case 1:var t=c.prototype.subset.call(this,e);return t.isMatrix?new a({data:t._data,size:t._size,datatype:t._datatype}):t;case 2:case 3:throw new Error(\"Cannot invoke set subset on an Immutable Matrix instance\");default:throw new SyntaxError(\"Wrong number of arguments\")}},a.prototype.set=function(){throw new Error(\"Cannot invoke set on an Immutable Matrix instance\")},a.prototype.resize=function(){throw new Error(\"Cannot invoke resize on an Immutable Matrix instance\")},a.prototype.clone=function(){var e=new a({data:o.clone(this._data),size:o.clone(this._size),datatype:this._datatype});return e},a.prototype.toJSON=function(){return{mathjs:\"ImmutableDenseMatrix\",data:this._data,size:this._size,datatype:this._datatype}},a.fromJSON=function(e){return new a(e)},a.prototype.swapRows=function(){throw new Error(\"Cannot invoke swapRows on an Immutable Matrix instance\")},a.prototype.min=function(){if(null===this._min){var e=null;this.forEach(function(t){(null===e||f(t,e))&&(e=t)}),this._min=null!==e?e:void 0}return this._min},a.prototype.max=function(){if(null===this._max){var e=null;this.forEach(function(t){(null===e||f(e,t))&&(e=t)}),this._max=null!==e?e:void 0}return this._max},a}var i=r(39),a=i.string,o=i.object,s=Array.isArray,u=a.isString;t.name=\"ImmutableDenseMatrix\",t.path=\"type\",t.factory=n},function(e,t,r){\"use strict\";function n(e){function t(e){if(!(this instanceof t))throw new SyntaxError(\"Constructor must be called with the new operator\");this._dimensions=[],this._isScalar=!0;for(var n=0,i=arguments.length;i>n;n++){var a=arguments[n];if(a&&a.isRange===!0)this._dimensions.push(a),this._isScalar=!1;else if(a&&(Array.isArray(a)||a.isMatrix===!0)){var o=r(a.valueOf());this._dimensions.push(o);var s=o.size();this._isScalar=1===s.length&&1===s[0]}else{if(\"number\"!=typeof a)throw new TypeError(\"Dimension must be an Array, Matrix, Number or Range\");this._dimensions.push(r([a]))}}}function r(t){for(var r=0,n=t.length;n>r;r++)if(\"number\"!=typeof t[r]||!a(t[r]))throw new TypeError(\"Index parameters must be positive integer numbers\");return new e.ImmutableDenseMatrix(t)}return t.prototype.type=\"Index\",t.prototype.isIndex=!0,t.prototype.clone=function(){var e=new t;return e._dimensions=i(this._dimensions),e._isScalar=this._isScalar,e},t.create=function(e){var r=new t;return t.apply(r,e),r},t.prototype.size=function(){for(var e=[],t=0,r=this._dimensions.length;r>t;t++){var n=this._dimensions[t];e[t]=n.size()[0]}return e},t.prototype.max=function(){for(var e=[],t=0,r=this._dimensions.length;r>t;t++){var n=this._dimensions[t];e[t]=n.max()}return e},t.prototype.min=function(){for(var e=[],t=0,r=this._dimensions.length;r>t;t++){var n=this._dimensions[t];e[t]=n.min()}return e},t.prototype.forEach=function(e){for(var t=0,r=this._dimensions.length;r>t;t++)e(this._dimensions[t],t,this)},t.prototype.dimension=function(e){return this._dimensions[e]||null},t.prototype.isScalar=function(){return this._isScalar},t.prototype.toArray=function(){for(var e=[],t=0,r=this._dimensions.length;r>t;t++)e.push(this._dimensions[t].toArray());return e},t.prototype.valueOf=t.prototype.toArray,t.prototype.toString=function(){for(var e=[],t=0,r=this._dimensions.length;r>t;t++)e.push(this._dimensions[t].toString());return\"[\"+e.join(\", \")+\"]\"},t.prototype.toJSON=function(){return{mathjs:\"Index\",dimensions:this._dimensions}},t.fromJSON=function(e){return t.create(e.dimensions)},t}var i=r(3).clone,a=r(6).isInteger;t.name=\"Index\",t.path=\"type\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){function a(e,t,r){if(!(this instanceof a))throw new SyntaxError(\"Constructor must be called with the new operator\");if(null!=e)if(e.isBigNumber===!0)e=e.toNumber();else if(\"number\"!=typeof e)throw new TypeError(\"Parameter start must be a number\");if(null!=t)if(t.isBigNumber===!0)t=t.toNumber();else if(\"number\"!=typeof t)throw new TypeError(\"Parameter end must be a number\");if(null!=r)if(r.isBigNumber===!0)r=r.toNumber();else if(\"number\"!=typeof r)throw new TypeError(\"Parameter step must be a number\");this.start=null!=e?parseFloat(e):0,this.end=null!=t?parseFloat(t):0,this.step=null!=r?parseFloat(r):1}return a.prototype.type=\"Range\",a.prototype.isRange=!0,a.parse=function(e){if(\"string\"!=typeof e)return null;var t=e.split(\":\"),r=t.map(function(e){return parseFloat(e)}),n=r.some(function(e){return isNaN(e)});if(n)return null;switch(r.length){case 2:return new a(r[0],r[1]);case 3:return new a(r[0],r[2],r[1]);default:return null}},a.prototype.clone=function(){return new a(this.start,this.end,this.step)},a.prototype.size=function(){var e=0,t=this.start,r=this.step,n=this.end,a=n-t;return i.sign(r)==i.sign(a)?e=Math.ceil(a/r):0==a&&(e=0),isNaN(e)&&(e=0),[e]},a.prototype.min=function(){var e=this.size()[0];return e>0?this.step>0?this.start:this.start+(e-1)*this.step:void 0},a.prototype.max=function(){var e=this.size()[0];return e>0?this.step>0?this.start+(e-1)*this.step:this.start:void 0},a.prototype.forEach=function(e){var t=this.start,r=this.step,n=this.end,i=0;if(r>0)for(;n>t;)e(t,[i],this),t+=r,i++;else if(0>r)for(;t>n;)e(t,[i],this),t+=r,i++},a.prototype.map=function(e){var t=[];return this.forEach(function(r,n,i){t[n[0]]=e(r,n,i)}),t},a.prototype.toArray=function(){var e=[];return this.forEach(function(t,r){e[r[0]]=t}),e},a.prototype.valueOf=function(){return this.toArray()},a.prototype.format=function(e){var t=i.format(this.start,e);return 1!=this.step&&(t+=\":\"+i.format(this.step,e)),t+=\":\"+i.format(this.end,e)},a.prototype.toString=function(){return this.format()},a.prototype.toJSON=function(){return{mathjs:\"Range\",start:this.start,end:this.end,step:this.step}},a.fromJSON=function(e){return new a(e.start,e.end,e.step)},a}var i=r(6);t.name=\"Range\",t.path=\"type\",t.factory=n},function(e,t){\"use strict\";function r(e,t,r,n){return n(\"index\",{\"...number | BigNumber | Range | Array | Matrix\":function(t){var r=t.map(function(e){return e&&e.isBigNumber===!0?e.toNumber():e&&(Array.isArray(e)||e.isMatrix===!0)?e.map(function(e){return e&&e.isBigNumber===!0?e.toNumber():e}):e}),n=new e.Index;return e.Index.apply(n,r),n}})}t.name=\"index\",t.factory=r},function(e,t){\"use strict\";function r(e,t,r,n){var i=e.SparseMatrix,a=n(\"sparse\",{\"\":function(){return new i([])},string:function(e){return new i([],e)},\"Array | Matrix\":function(e){return new i(e)},\"Array | Matrix, string\":function(e,t){return new i(e,t)}});return a.toTex={0:\"\\\\begin{bsparse}\\\\end{bsparse}\",1:\"\\\\left(${args[0]}\\\\right)\"},a}t.name=\"sparse\",t.factory=r},function(e,t,r){\"use strict\";function n(e,t,r,n){var a=n(\"number\",{\"\":function(){return 0},number:function(e){return e},string:function(e){var t=Number(e);if(isNaN(t))throw new SyntaxError('String \"'+e+'\" is no valid number');return t},BigNumber:function(e){return e.toNumber()},Unit:function(e){throw new Error(\"Second argument with valueless unit expected\")},\"Unit, string | Unit\":function(e,t){return e.toNumber(t)},\"Array | Matrix\":function(e){return i(e,a)}});return a.toTex={0:\"0\",1:\"\\\\left(${args[0]}\\\\right)\",2:\"\\\\left(\\\\left(${args[0]}\\\\right)${args[1]}\\\\right)\"},a}var i=r(19);t.name=\"number\",t.factory=n},function(e,t,r){e.exports=[r(71)]},function(e,t){\"use strict\";function r(e,t,r,n){function i(e){if(!(this instanceof i))throw new SyntaxError(\"Constructor must be called with the new operator\");this.entries=e||[]}return i.prototype.type=\"ResultSet\",i.prototype.isResultSet=!0,i.prototype.valueOf=function(){return this.entries},i.prototype.toString=function(){return\"[\"+this.entries.join(\", \")+\"]\"},i.prototype.toJSON=function(){return{mathjs:\"ResultSet\",entries:this.entries}},i.fromJSON=function(e){return new i(e.entries)},i}t.name=\"ResultSet\",t.path=\"type\",t.factory=r},function(e,t,r){\"use strict\";function n(e,t,r,n){var o=n(\"string\",{\"\":function(){return\"\"},number:a.format,\"null\":function(e){return\"null\"},\"boolean\":function(e){return e+\"\"},string:function(e){return e},\"Array | Matrix\":function(e){return i(e,o)},any:function(e){return String(e)}});return o.toTex={0:'\\\\mathtt{\"\"}',1:\"\\\\mathrm{string}\\\\left(${args[0]}\\\\right)\"},o}var i=r(19),a=r(6);t.name=\"string\",t.factory=n},function(e,t,r){e.exports=[r(28),r(74),r(75)]},function(e,t,r){\"use strict\";function n(e,t,r,n){var a=n(\"unit\",{Unit:function(e){return e.clone()},string:function(t){return e.Unit.isValuelessUnit(t)?new e.Unit(null,t):e.Unit.parse(t)},\"number, string\":function(t,r){return new e.Unit(t,r)},\"BigNumber, string\":function(t,r){return new e.Unit(t.toNumber(),r)},\"Array | Matrix\":function(e){return i(e,a)}});return a.toTex={1:\"\\\\left(${args[0]}\\\\right)\",2:\"\\\\left(\\\\left(${args[0]}\\\\right)${args[1]}\\\\right)\"},a}var i=r(19);t.name=\"unit\",t.factory=n},function(e,t,r){function n(e,t,r,n,a){function o(t){var r=e.Unit.parse(t);return r.fixPrefix=!0,r}i(a,\"speedOfLight\",function(){return o(\"299792458 m s^-1\")}),i(a,\"gravitationConstant\",function(){return o(\"6.6738480e-11 m^3 kg^-1 s^-2\")}),i(a,\"planckConstant\",function(){return o(\"6.626069311e-34 J s\")}),i(a,\"reducedPlanckConstant\",function(){return o(\"1.05457172647e-34 J s\")}),i(a,\"magneticConstant\",function(){return o(\"1.2566370614e-6 N A^-2\")}),i(a,\"electricConstant\",function(){return o(\"8.854187817e-12 F m^-1\")}),i(a,\"vacuumImpedance\",function(){return o(\"376.730313461 ohm\")}),i(a,\"coulomb\",function(){return o(\"8.9875517873681764e9 N m^2 C^-2\")}),i(a,\"elementaryCharge\",function(){return o(\"1.60217656535e-19 C\")}),i(a,\"bohrMagneton\",function(){return o(\"9.2740096820e-24 J T^-1\")}),i(a,\"conductanceQuantum\",function(){return o(\"7.748091734625e-5 S\")}),i(a,\"inverseConductanceQuantum\",function(){return o(\"12906.403721742 ohm\")}),i(a,\"magneticFluxQuantum\",function(){return o(\"2.06783375846e-15 Wb\")}),i(a,\"nuclearMagneton\",function(){return o(\"5.0507835311e-27 J T^-1\")}),i(a,\"klitzing\",function(){return o(\"25812.807443484 ohm\")}),i(a,\"bohrRadius\",function(){return o(\"5.291772109217e-11 m\")}),i(a,\"classicalElectronRadius\",function(){return o(\"2.817940326727e-15 m\")}),i(a,\"electronMass\",function(){return o(\"9.1093829140e-31 kg\")}),i(a,\"fermiCoupling\",function(){return o(\"1.1663645e-5 GeV^-2\")}),i(a,\"fineStructure\",function(){return.007297352569824}),i(a,\"hartreeEnergy\",function(){return o(\"4.3597443419e-18 J\")}),i(a,\"protonMass\",function(){return o(\"1.67262177774e-27 kg\")}),i(a,\"deuteronMass\",function(){return o(\"3.3435830926e-27 kg\")}),i(a,\"neutronMass\",function(){return o(\"1.6749271613e-27 kg\")}),i(a,\"quantumOfCirculation\",function(){return o(\"3.636947552024e-4 m^2 s^-1\")}),i(a,\"rydberg\",function(){return o(\"10973731.56853955 m^-1\")}),i(a,\"thomsonCrossSection\",function(){return o(\"6.65245873413e-29 m^2\")}),i(a,\"weakMixingAngle\",function(){return.222321}),i(a,\"efimovFactor\",function(){return 22.7}),i(a,\"atomicMass\",function(){return o(\"1.66053892173e-27 kg\")}),i(a,\"avogadro\",function(){return o(\"6.0221412927e23 mol^-1\")}),i(a,\"boltzmann\",function(){return o(\"1.380648813e-23 J K^-1\")}),i(a,\"faraday\",function(){return o(\"96485.336521 C mol^-1\")}),i(a,\"firstRadiation\",function(){return o(\"3.7417715317e-16 W m^2\")}),i(a,\"loschmidt\",function(){return o(\"2.686780524e25 m^-3\")}),i(a,\"gasConstant\",function(){return o(\"8.314462175 J K^-1 mol^-1\")}),i(a,\"molarPlanckConstant\",function(){return o(\"3.990312717628e-10 J s mol^-1\")}),i(a,\"molarVolume\",function(){return o(\"2.241396820e-10 m^3 mol^-1\")}),i(a,\"sackurTetrode\",function(){return-1.164870823}),i(a,\"secondRadiation\",function(){return o(\"1.438777013e-2 m K\")}),i(a,\"stefanBoltzmann\",function(){return o(\"5.67037321e-8 W m^-2 K^-4\")}),i(a,\"wienDisplacement\",function(){return o(\"2.897772126e-3 m K\")}),i(a,\"molarMass\",function(){return o(\"1e-3 kg mol^-1\")}),i(a,\"molarMassC12\",function(){return o(\"1.2e-2 kg mol^-1\")}),i(a,\"gravity\",function(){return o(\"9.80665 m s^-2\")}),i(a,\"planckLength\",function(){return o(\"1.61619997e-35 m\")}),i(a,\"planckMass\",function(){return o(\"2.1765113e-8 kg\")}),i(a,\"planckTime\",function(){return o(\"5.3910632e-44 s\")}),i(a,\"planckCharge\",function(){return o(\"1.87554595641e-18 C\")}),i(a,\"planckTemperature\",function(){return o(\"1.41683385e+32 K\")})}var i=r(3).lazy;t.factory=n,t.lazy=!1,t.math=!0},function(e,t,r){\"use strict\";function n(e,t,o,s,u){u.on(\"config\",function(r,i){r.number!==i.number&&n(e,t,o,s,u)}),u[\"true\"]=!0,u[\"false\"]=!1,u[\"null\"]=null,u.uninitialized=r(40).UNINITIALIZED,\"bignumber\"===t.number?(u.Infinity=new e.BigNumber(1/0),u.NaN=new e.BigNumber(NaN),i.lazy(u,\"pi\",function(){return a.pi(e.BigNumber)}),i.lazy(u,\"tau\",function(){return a.tau(e.BigNumber)}),i.lazy(u,\"e\",function(){return a.e(e.BigNumber)}),i.lazy(u,\"phi\",function(){return a.phi(e.BigNumber)}),i.lazy(u,\"E\",function(){return u.e}),i.lazy(u,\"LN2\",function(){return new e.BigNumber(2).ln()}),i.lazy(u,\"LN10\",function(){return new e.BigNumber(10).ln()}),i.lazy(u,\"LOG2E\",function(){return new e.BigNumber(1).div(new e.BigNumber(2).ln())}),i.lazy(u,\"LOG10E\",function(){return new e.BigNumber(1).div(new e.BigNumber(10).ln())}),i.lazy(u,\"PI\",function(){return u.pi}),i.lazy(u,\"SQRT1_2\",function(){return new e.BigNumber(\"0.5\").sqrt()}),i.lazy(u,\"SQRT2\",function(){return new e.BigNumber(2).sqrt()})):(u.Infinity=1/0,u.NaN=NaN,u.pi=Math.PI,u.tau=2*Math.PI,u.e=Math.E,u.phi=1.618033988749895,u.E=u.e,u.LN2=Math.LN2,u.LN10=Math.LN10,u.LOG2E=Math.LOG2E,u.LOG10E=Math.LOG10E,u.PI=u.pi,u.SQRT1_2=Math.SQRT1_2,u.SQRT2=Math.SQRT2),u.i=new e.Complex(0,1),u.version=r(79)}var i=r(3),a=r(77);t.factory=n,t.lazy=!1,t.math=!0},function(e,t,r){function n(e){return e[0].precision}var i=r(45).memoize,a=r(78);t.e=i(function(e){return new e(1).exp()},n),t.phi=i(function(e){return new e(1).plus(new e(5).sqrt()).div(2)},n),t.pi=i(function(e){var t=e.constructor({precision:e.precision+4}),r=new t(4).times(a(new t(1).div(5))).minus(a(new t(1).div(239)));return new e(4).times(r)},n),t.tau=i(function(e){var r=t.pi(e.constructor({precision:e.precision+2}));return new e(2).times(r)},n)},function(e,t){e.exports=function(e){for(var t=e,r=NaN,n=e.times(e),i=e,a=!0,o=3;!t.equals(r);o+=2)i=i.times(n),r=t,a=!a,t=a?t.plus(i.div(o)):t.minus(i.div(o));return t}},function(e,t){e.exports=\"2.4.1\"},function(e,t,r){e.exports=[r(81),r(251),r(275),r(276),r(311),r(253),r(274)]},function(e,t,r){function n(e,t,n,i){var a={};return a.bignumber=r(82),a[\"boolean\"]=r(83),a.complex=r(84),a.fraction=r(85),a.index=r(86),a.matrix=r(87),a.number=r(88),a.sparse=r(89),a.string=r(90),a.unit=r(91),a.e=r(92),a.E=r(92),a[\"false\"]=r(93),a.i=r(94),a.Infinity=r(95),a.LN2=r(96),a.LN10=r(97),a.LOG2E=r(98),a.LOG10E=r(99),a.NaN=r(100),a[\"null\"]=r(101),a.pi=r(102),a.PI=r(102),a.phi=r(103),a.SQRT1_2=r(104),a.SQRT2=r(105),a.tau=r(106),a[\"true\"]=r(107),a.version=r(108),a.speedOfLight={description:\"Speed of light in vacuum\",examples:[\"speedOfLight\"]},a.gravitationConstant={description:\"Newtonian constant of gravitation\",examples:[\"gravitationConstant\"]},a.planckConstant={description:\"Planck constant\",examples:[\"planckConstant\"]},a.reducedPlanckConstant={description:\"Reduced Planck constant\",examples:[\"reducedPlanckConstant\"]},a.magneticConstant={description:\"Magnetic constant (vacuum permeability)\",examples:[\"magneticConstant\"]},a.electricConstant={description:\"Electric constant (vacuum permeability)\",examples:[\"electricConstant\"]},a.vacuumImpedance={description:\"Characteristic impedance of vacuum\",examples:[\"vacuumImpedance\"]},a.coulomb={description:\"Coulomb's constant\",examples:[\"coulomb\"]},a.elementaryCharge={description:\"Elementary charge\",examples:[\"elementaryCharge\"]},a.bohrMagneton={description:\"Borh magneton\",examples:[\"bohrMagneton\"]},a.conductanceQuantum={description:\"Conductance quantum\",examples:[\"conductanceQuantum\"]},a.inverseConductanceQuantum={description:\"Inverse conductance quantum\",examples:[\"inverseConductanceQuantum\"]},a.magneticFluxQuantum={description:\"Magnetic flux quantum\",examples:[\"magneticFluxQuantum\"]},a.nuclearMagneton={description:\"Nuclear magneton\",examples:[\"nuclearMagneton\"]},a.klitzing={description:\"Von Klitzing constant\",examples:[\"klitzing\"]},a.bohrRadius={description:\"Borh radius\",examples:[\"bohrRadius\"]},a.classicalElectronRadius={description:\"Classical electron radius\",examples:[\"classicalElectronRadius\"]},a.electronMass={description:\"Electron mass\",examples:[\"electronMass\"]},a.fermiCoupling={description:\"Fermi coupling constant\",examples:[\"fermiCoupling\"]},a.fineStructure={description:\"Fine-structure constant\",examples:[\"fineStructure\"]},a.hartreeEnergy={description:\"Hartree energy\",examples:[\"hartreeEnergy\"]},a.protonMass={description:\"Proton mass\",examples:[\"protonMass\"]},a.deuteronMass={description:\"Deuteron Mass\",examples:[\"deuteronMass\"]},a.neutronMass={description:\"Neutron mass\",examples:[\"neutronMass\"]},a.quantumOfCirculation={description:\"Quantum of circulation\",examples:[\"quantumOfCirculation\"]},a.rydberg={description:\"Rydberg constant\",examples:[\"rydberg\"]},a.thomsonCrossSection={description:\"Thomson cross section\",examples:[\"thomsonCrossSection\"]},a.weakMixingAngle={description:\"Weak mixing angle\",examples:[\"weakMixingAngle\"]},a.efimovFactor={description:\"Efimov factor\",examples:[\"efimovFactor\"]},a.atomicMass={description:\"Atomic mass constant\",examples:[\"atomicMass\"]},a.avogadro={description:\"Avogadro's number\",examples:[\"avogadro\"]},a.boltzmann={description:\"Boltzmann constant\",examples:[\"boltzmann\"]},a.faraday={description:\"Faraday constant\",examples:[\"faraday\"]},a.firstRadiation={description:\"First radiation constant\",examples:[\"firstRadiation\"]},a.loschmidt={description:\"Loschmidt constant at T=273.15 K and p=101.325 kPa\",examples:[\"loschmidt\"]},a.gasConstant={description:\"Gas constant\",examples:[\"gasConstant\"]},a.molarPlanckConstant={description:\"Molar Planck constant\",examples:[\"molarPlanckConstant\"]},a.molarVolume={description:\"Molar volume of an ideal gas at T=273.15 K and p=101.325 kPa\",examples:[\"molarVolume\"]},a.sackurTetrode={description:\"Sackur-Tetrode constant at T=1 K and p=101.325 kPa\",examples:[\"sackurTetrode\"]},a.secondRadiation={description:\"Second radiation constant\",examples:[\"secondRadiation\"]},a.stefanBoltzmann={description:\"Stefan-Boltzmann constant\",examples:[\"stefanBoltzmann\"]},a.wienDisplacement={description:\"Wien displacement law constant\",examples:[\"wienDisplacement\"]},a.molarMass={description:\"Molar mass constant\",examples:[\"molarMass\"]},a.molarMassC12={description:\"Molar mass constant of carbon-12\",examples:[\"molarMassC12\"]},a.gravity={description:\"Standard acceleration of gravity (standard acceleration of free-fall on Earth)\",examples:[\"gravity\"]},a.planckLength={description:\"Planck length\",examples:[\"planckLength\"]},a.planckMass={description:\"Planck mass\",examples:[\"planckMass\"]},a.planckTime={description:\"Planck time\",examples:[\"planckTime\"]},a.planckCharge={description:\"Planck charge\",examples:[\"planckCharge\"]},a.planckTemperature={description:\"Planck temperature\",examples:[\"planckTemperature\"]},a.lsolve=r(109),a.lup=r(110),a.lusolve=r(111),a.slu=r(112),a.usolve=r(113),a.abs=r(114),a.add=r(115),a.cbrt=r(116),a.ceil=r(117),a.cube=r(118),a.divide=r(119),a.dotDivide=r(120),a.dotMultiply=r(121),a.dotPow=r(122),a.exp=r(123),a.fix=r(124),a.floor=r(125),a.gcd=r(126),a.hypot=r(127),a.lcm=r(128),a.log=r(129),a.log10=r(130),a.mod=r(131),a.multiply=r(132),a.norm=r(133),a.nthRoot=r(134),a.pow=r(135),a.round=r(136),a.sign=r(137),a.sqrt=r(138),\na.square=r(139),a.subtract=r(140),a.unaryMinus=r(141),a.unaryPlus=r(142),a.xgcd=r(143),a.bitAnd=r(144),a.bitNot=r(145),a.bitOr=r(146),a.bitXor=r(147),a.leftShift=r(148),a.rightArithShift=r(149),a.rightLogShift=r(150),a.bellNumbers=r(151),a.catalan=r(152),a.composition=r(153),a.stirlingS2=r(154),a.arg=r(155),a.conj=r(156),a.re=r(157),a.im=r(158),a.eval=r(159),a.help=r(160),a.distance=r(161),a.intersect=r(162),a.and=r(163),a.not=r(164),a.or=r(165),a.xor=r(166),a.concat=r(167),a.cross=r(168),a.det=r(169),a.diag=r(170),a.dot=r(171),a.eye=r(172),a.flatten=r(173),a.inv=r(174),a.ones=r(175),a.range=r(176),a.resize=r(177),a.size=r(178),a.squeeze=r(179),a.subset=r(180),a.trace=r(181),a.transpose=r(182),a.zeros=r(183),a.combinations=r(184),a.factorial=r(185),a.gamma=r(186),a.kldivergence=r(187),a.multinomial=r(188),a.permutations=r(189),a.pickRandom=r(190),a.random=r(191),a.randomInt=r(192),a.compare=r(193),a.deepEqual=r(194),a.equal=r(195),a.larger=r(196),a.largerEq=r(197),a.smaller=r(198),a.smallerEq=r(199),a.unequal=r(200),a.max=r(201),a.mean=r(202),a.median=r(203),a.min=r(204),a.mode=r(205),a.prod=r(206),a.quantileSeq=r(207),a.std=r(208),a.sum=r(209),a[\"var\"]=r(210),a.acos=r(211),a.acosh=r(212),a.acot=r(213),a.acoth=r(214),a.acsc=r(215),a.acsch=r(216),a.asec=r(217),a.asech=r(218),a.asin=r(219),a.asinh=r(220),a.atan=r(221),a.atanh=r(222),a.atan2=r(223),a.cos=r(224),a.cosh=r(225),a.cot=r(226),a.coth=r(227),a.csc=r(228),a.csch=r(229),a.sec=r(230),a.sech=r(231),a.sin=r(232),a.sinh=r(233),a.tan=r(234),a.tanh=r(235),a.to=r(236),a.clone=r(237),a.map=r(238),a.partitionSelect=r(239),a.filter=r(240),a.forEach=r(241),a.format=r(242),a.isInteger=r(243),a.isNegative=r(244),a.isNumeric=r(245),a.isPositive=r(246),a.isZero=r(247),a[\"import\"]=r(248),a.sort=r(249),a[\"typeof\"]=r(250),a}t.name=\"docs\",t.path=\"expression\",t.factory=n},function(e,t){e.exports={name:\"bignumber\",category:\"Type\",syntax:[\"bignumber(x)\"],description:\"Create a big number from a number or string.\",examples:[\"0.1 + 0.2\",\"bignumber(0.1) + bignumber(0.2)\",'bignumber(\"7.2\")','bignumber(\"7.2e500\")',\"bignumber([0.1, 0.2, 0.3])\"],seealso:[\"boolean\",\"complex\",\"fraction\",\"index\",\"matrix\",\"string\",\"unit\"]}},function(e,t){e.exports={name:\"boolean\",category:\"Type\",syntax:[\"x\",\"boolean(x)\"],description:\"Convert a string or number into a boolean.\",examples:[\"boolean(0)\",\"boolean(1)\",\"boolean(3)\",'boolean(\"true\")','boolean(\"false\")',\"boolean([1, 0, 1, 1])\"],seealso:[\"bignumber\",\"complex\",\"index\",\"matrix\",\"number\",\"string\",\"unit\"]}},function(e,t){e.exports={name:\"complex\",category:\"Type\",syntax:[\"complex()\",\"complex(re, im)\",\"complex(string)\"],description:\"Create a complex number.\",examples:[\"complex()\",\"complex(2, 3)\",'complex(\"7 - 2i\")'],seealso:[\"bignumber\",\"boolean\",\"index\",\"matrix\",\"number\",\"string\",\"unit\"]}},function(e,t){e.exports={name:\"fraction\",category:\"Type\",syntax:[\"fraction(num)\",\"fraction(num,den)\"],description:\"Create a fraction from a number or from a numerator and denominator.\",examples:[\"fraction(0.125)\",\"fraction(1, 3) + fraction(2, 5)\"],seealso:[\"bignumber\",\"boolean\",\"complex\",\"index\",\"matrix\",\"string\",\"unit\"]}},function(e,t){e.exports={name:\"index\",category:\"Type\",syntax:[\"[start]\",\"[start:end]\",\"[start:step:end]\",\"[start1, start 2, ...]\",\"[start1:end1, start2:end2, ...]\",\"[start1:step1:end1, start2:step2:end2, ...]\"],description:\"Create an index to get or replace a subset of a matrix\",examples:[\"[]\",\"[1, 2, 3]\",\"A = [1, 2, 3; 4, 5, 6]\",\"A[1, :]\",\"A[1, 2] = 50\",\"A[0:2, 0:2] = ones(2, 2)\"],seealso:[\"bignumber\",\"boolean\",\"complex\",\"matrix,\",\"number\",\"range\",\"string\",\"unit\"]}},function(e,t){e.exports={name:\"matrix\",category:\"Type\",syntax:[\"[]\",\"[a1, b1, ...; a2, b2, ...]\",\"matrix()\",'matrix(\"dense\")',\"matrix([...])\"],description:\"Create a matrix.\",examples:[\"[]\",\"[1, 2, 3]\",\"[1, 2, 3; 4, 5, 6]\",\"matrix()\",\"matrix([3, 4])\",'matrix([3, 4; 5, 6], \"sparse\")','matrix([3, 4; 5, 6], \"sparse\", \"number\")'],seealso:[\"bignumber\",\"boolean\",\"complex\",\"index\",\"number\",\"string\",\"unit\",\"sparse\"]}},function(e,t){e.exports={name:\"number\",category:\"Type\",syntax:[\"x\",\"number(x)\"],description:\"Create a number or convert a string or boolean into a number.\",examples:[\"2\",\"2e3\",\"4.05\",\"number(2)\",'number(\"7.2\")',\"number(true)\",\"number([true, false, true, true])\",'number(\"52cm\", \"m\")'],seealso:[\"bignumber\",\"boolean\",\"complex\",\"fraction\",\"index\",\"matrix\",\"string\",\"unit\"]}},function(e,t){e.exports={name:\"sparse\",category:\"Type\",syntax:[\"sparse()\",\"sparse([a1, b1, ...; a1, b2, ...])\",'sparse([a1, b1, ...; a1, b2, ...], \"number\")'],description:\"Create a sparse matrix.\",examples:[\"sparse()\",\"sparse([3, 4; 5, 6])\",'sparse([3, 0; 5, 0], \"number\")'],seealso:[\"bignumber\",\"boolean\",\"complex\",\"index\",\"number\",\"string\",\"unit\",\"matrix\"]}},function(e,t){e.exports={name:\"string\",category:\"Type\",syntax:['\"text\"',\"string(x)\"],description:\"Create a string or convert a value to a string\",examples:['\"Hello World!\"',\"string(4.2)\",\"string(3 + 2i)\"],seealso:[\"bignumber\",\"boolean\",\"complex\",\"index\",\"matrix\",\"number\",\"unit\"]}},function(e,t){e.exports={name:\"unit\",category:\"Type\",syntax:[\"value unit\",\"unit(value, unit)\",\"unit(string)\"],description:\"Create a unit.\",examples:[\"5.5 mm\",\"3 inch\",'unit(7.1, \"kilogram\")','unit(\"23 deg\")'],seealso:[\"bignumber\",\"boolean\",\"complex\",\"index\",\"matrix\",\"number\",\"string\"]}},function(e,t){e.exports={name:\"e\",category:\"Constants\",syntax:[\"e\"],description:\"Euler's number, the base of the natural logarithm. Approximately equal to 2.71828\",examples:[\"e\",\"e ^ 2\",\"exp(2)\",\"log(e)\"],seealso:[\"exp\"]}},function(e,t){e.exports={name:\"false\",category:\"Constants\",syntax:[\"false\"],description:\"Boolean value false\",examples:[\"false\"],seealso:[\"true\"]}},function(e,t){e.exports={name:\"i\",category:\"Constants\",syntax:[\"i\"],description:\"Imaginary unit, defined as i*i=-1. A complex number is described as a + b*i, where a is the real part, and b is the imaginary part.\",examples:[\"i\",\"i * i\",\"sqrt(-1)\"],seealso:[]}},function(e,t){e.exports={name:\"Infinity\",category:\"Constants\",syntax:[\"Infinity\"],description:\"Infinity, a number which is larger than the maximum number that can be handled by a floating point number.\",examples:[\"Infinity\",\"1 / 0\"],seealso:[]}},function(e,t){e.exports={name:\"LN2\",category:\"Constants\",syntax:[\"LN2\"],description:\"Returns the natural logarithm of 2, approximately equal to 0.693\",examples:[\"LN2\",\"log(2)\"],seealso:[]}},function(e,t){e.exports={name:\"LN10\",category:\"Constants\",syntax:[\"LN10\"],description:\"Returns the natural logarithm of 10, approximately equal to 2.302\",examples:[\"LN10\",\"log(10)\"],seealso:[]}},function(e,t){e.exports={name:\"LOG2E\",category:\"Constants\",syntax:[\"LOG2E\"],description:\"Returns the base-2 logarithm of E, approximately equal to 1.442\",examples:[\"LOG2E\",\"log(e, 2)\"],seealso:[]}},function(e,t){e.exports={name:\"LOG10E\",category:\"Constants\",syntax:[\"LOG10E\"],description:\"Returns the base-10 logarithm of E, approximately equal to 0.434\",examples:[\"LOG10E\",\"log(e, 10)\"],seealso:[]}},function(e,t){e.exports={name:\"NaN\",category:\"Constants\",syntax:[\"NaN\"],description:\"Not a number\",examples:[\"NaN\",\"0 / 0\"],seealso:[]}},function(e,t){e.exports={name:\"null\",category:\"Constants\",syntax:[\"null\"],description:\"Value null\",examples:[\"null\"],seealso:[\"true\",\"false\"]}},function(e,t){e.exports={name:\"pi\",category:\"Constants\",syntax:[\"pi\"],description:\"The number pi is a mathematical constant that is the ratio of a circle's circumference to its diameter, and is approximately equal to 3.14159\",examples:[\"pi\",\"sin(pi/2)\"],seealso:[\"tau\"]}},function(e,t){e.exports={name:\"phi\",category:\"Constants\",syntax:[\"phi\"],description:\"Phi is the golden ratio. Two quantities are in the golden ratio if their ratio is the same as the ratio of their sum to the larger of the two quantities. Phi is defined as `(1 + sqrt(5)) / 2` and is approximately 1.618034...\",examples:[\"tau\"],seealso:[]}},function(e,t){e.exports={name:\"SQRT1_2\",category:\"Constants\",syntax:[\"SQRT1_2\"],description:\"Returns the square root of 1/2, approximately equal to 0.707\",examples:[\"SQRT1_2\",\"sqrt(1/2)\"],seealso:[]}},function(e,t){e.exports={name:\"SQRT2\",category:\"Constants\",syntax:[\"SQRT2\"],description:\"Returns the square root of 2, approximately equal to 1.414\",examples:[\"SQRT2\",\"sqrt(2)\"],seealso:[]}},function(e,t){e.exports={name:\"tau\",category:\"Constants\",syntax:[\"tau\"],description:\"Tau is the ratio constant of a circle's circumference to radius, equal to 2 * pi, approximately 6.2832.\",examples:[\"tau\",\"2 * pi\"],seealso:[\"pi\"]}},function(e,t){e.exports={name:\"true\",category:\"Constants\",syntax:[\"true\"],description:\"Boolean value true\",examples:[\"true\"],seealso:[\"false\"]}},function(e,t){e.exports={name:\"version\",category:\"Constants\",syntax:[\"version\"],description:\"A string with the version number of math.js\",examples:[\"version\"],seealso:[]}},function(e,t){e.exports={name:\"lsolve\",category:\"Algebra\",syntax:[\"x=lsolve(L, b)\"],description:\"Solves the linear system L * x = b where L is an [n x n] lower triangular matrix and b is a [n] column vector.\",examples:[\"a = [-2, 3; 2, 1]\",\"b = [11, 9]\",\"x = lsolve(a, b)\"],seealso:[\"lup\",\"lusolve\",\"usolve\",\"matrix\",\"sparse\"]}},function(e,t){e.exports={name:\"lup\",category:\"Algebra\",syntax:[\"lup(m)\"],description:\"Calculate the Matrix LU decomposition with partial pivoting. Matrix A is decomposed in three matrices (L, U, P) where P * A = L * U\",examples:[\"lup([[2, 1], [1, 4]])\",\"lup(matrix([[2, 1], [1, 4]]))\",\"lup(sparse([[2, 1], [1, 4]]))\"],seealso:[\"lusolve\",\"lsolve\",\"usolve\",\"matrix\",\"sparse\",\"slu\"]}},function(e,t){e.exports={name:\"lusolve\",category:\"Algebra\",syntax:[\"x=lusolve(A, b)\",\"x=lusolve(lu, b)\"],description:\"Solves the linear system A * x = b where A is an [n x n] matrix and b is a [n] column vector.\",examples:[\"a = [-2, 3; 2, 1]\",\"b = [11, 9]\",\"x = lusolve(a, b)\"],seealso:[\"lup\",\"slu\",\"lsolve\",\"usolve\",\"matrix\",\"sparse\"]}},function(e,t){e.exports={name:\"slu\",category:\"Algebra\",syntax:[\"slu(A, order, threshold)\"],description:\"Calculate the Matrix LU decomposition with full pivoting. Matrix A is decomposed in two matrices (L, U) and two permutation vectors (pinv, q) where P * A * Q = L * U\",examples:[\"slu(sparse([4.5, 0, 3.2, 0; 3.1, 2.9, 0, 0.9; 0, 1.7, 3, 0; 3.5, 0.4, 0, 1]), 1, 0.001)\"],seealso:[\"lusolve\",\"lsolve\",\"usolve\",\"matrix\",\"sparse\",\"lup\"]}},function(e,t){e.exports={name:\"usolve\",category:\"Algebra\",syntax:[\"x=usolve(U, b)\"],description:\"Solves the linear system U * x = b where U is an [n x n] upper triangular matrix and b is a [n] column vector.\",examples:[\"x=usolve(sparse([1, 1, 1, 1; 0, 1, 1, 1; 0, 0, 1, 1; 0, 0, 0, 1]), [1; 2; 3; 4])\"],seealso:[\"lup\",\"lusolve\",\"lsolve\",\"matrix\",\"sparse\"]}},function(e,t){e.exports={name:\"abs\",category:\"Arithmetic\",syntax:[\"abs(x)\"],description:\"Compute the absolute value.\",examples:[\"abs(3.5)\",\"abs(-4.2)\"],seealso:[\"sign\"]}},function(e,t){e.exports={name:\"add\",category:\"Operators\",syntax:[\"x + y\",\"add(x, y)\"],description:\"Add two values.\",examples:[\"a = 2.1 + 3.6\",\"a - 3.6\",\"3 + 2i\",\"3 cm + 2 inch\",'\"2.3\" + \"4\"'],seealso:[\"subtract\"]}},function(e,t){e.exports={name:\"cbrt\",category:\"Arithmetic\",syntax:[\"cbrt(x)\",\"cbrt(x, allRoots)\"],description:\"Compute the cubic root value. If x = y * y * y, then y is the cubic root of x. When `x` is a number or complex number, an optional second argument `allRoots` can be provided to return all three cubic roots. If not provided, the principal root is returned\",examples:[\"cbrt(64)\",\"cube(4)\",\"cbrt(-8)\",\"cbrt(2 + 3i)\",\"cbrt(8i)\",\"cbrt(8i, true)\",\"cbrt(27 m^3)\"],seealso:[\"square\",\"sqrt\",\"cube\",\"multiply\"]}},function(e,t){e.exports={name:\"ceil\",category:\"Arithmetic\",syntax:[\"ceil(x)\"],description:\"Round a value towards plus infinity. If x is complex, both real and imaginary part are rounded towards plus infinity.\",examples:[\"ceil(3.2)\",\"ceil(3.8)\",\"ceil(-4.2)\"],seealso:[\"floor\",\"fix\",\"round\"]}},function(e,t){e.exports={name:\"cube\",category:\"Arithmetic\",syntax:[\"cube(x)\"],description:\"Compute the cube of a value. The cube of x is x * x * x.\",examples:[\"cube(2)\",\"2^3\",\"2 * 2 * 2\"],seealso:[\"multiply\",\"square\",\"pow\"]}},function(e,t){e.exports={name:\"divide\",category:\"Operators\",syntax:[\"x / y\",\"divide(x, y)\"],description:\"Divide two values.\",examples:[\"a = 2 / 3\",\"a * 3\",\"4.5 / 2\",\"3 + 4 / 2\",\"(3 + 4) / 2\",\"18 km / 4.5\"],seealso:[\"multiply\"]}},function(e,t){e.exports={name:\"dotDivide\",category:\"Operators\",syntax:[\"x ./ y\",\"dotDivide(x, y)\"],description:\"Divide two values element wise.\",examples:[\"a = [1, 2, 3; 4, 5, 6]\",\"b = [2, 1, 1; 3, 2, 5]\",\"a ./ b\"],seealso:[\"multiply\",\"dotMultiply\",\"divide\"]}},function(e,t){e.exports={name:\"dotMultiply\",category:\"Operators\",syntax:[\"x .* y\",\"dotMultiply(x, y)\"],description:\"Multiply two values element wise.\",examples:[\"a = [1, 2, 3; 4, 5, 6]\",\"b = [2, 1, 1; 3, 2, 5]\",\"a .* b\"],seealso:[\"multiply\",\"divide\",\"dotDivide\"]}},function(e,t){e.exports={name:\"dotpow\",category:\"Operators\",syntax:[\"x .^ y\",\"dotpow(x, y)\"],description:\"Calculates the power of x to y element wise.\",examples:[\"a = [1, 2, 3; 4, 5, 6]\",\"a .^ 2\"],seealso:[\"pow\"]}},function(e,t){e.exports={name:\"exp\",category:\"Arithmetic\",syntax:[\"exp(x)\"],description:\"Calculate the exponent of a value.\",examples:[\"exp(1.3)\",\"e ^ 1.3\",\"log(exp(1.3))\",\"x = 2.4\",\"(exp(i*x) == cos(x) + i*sin(x)) # Euler's formula\"],seealso:[\"pow\",\"log\"]}},function(e,t){e.exports={name:\"fix\",category:\"Arithmetic\",syntax:[\"fix(x)\"],description:\"Round a value towards zero. If x is complex, both real and imaginary part are rounded towards zero.\",examples:[\"fix(3.2)\",\"fix(3.8)\",\"fix(-4.2)\",\"fix(-4.8)\"],seealso:[\"ceil\",\"floor\",\"round\"]}},function(e,t){e.exports={name:\"floor\",category:\"Arithmetic\",syntax:[\"floor(x)\"],description:\"Round a value towards minus infinity.If x is complex, both real and imaginary part are rounded towards minus infinity.\",examples:[\"floor(3.2)\",\"floor(3.8)\",\"floor(-4.2)\"],seealso:[\"ceil\",\"fix\",\"round\"]}},function(e,t){e.exports={name:\"gcd\",category:\"Arithmetic\",syntax:[\"gcd(a, b)\",\"gcd(a, b, c, ...)\"],description:\"Compute the greatest common divisor.\",examples:[\"gcd(8, 12)\",\"gcd(-4, 6)\",\"gcd(25, 15, -10)\"],seealso:[\"lcm\",\"xgcd\"]}},function(e,t){e.exports={name:\"hypot\",category:\"Arithmetic\",syntax:[\"hypot(a, b, c, ...)\",\"hypot([a, b, c, ...])\"],description:\"Calculate the hypotenusa of a list with values. \",examples:[\"hypot(3, 4)\",\"sqrt(3^2 + 4^2)\",\"hypot(-2)\",\"hypot([3, 4, 5])\"],seealso:[\"abs\",\"norm\"]}},function(e,t){e.exports={name:\"lcm\",category:\"Arithmetic\",syntax:[\"lcm(x, y)\"],description:\"Compute the least common multiple.\",examples:[\"lcm(4, 6)\",\"lcm(6, 21)\",\"lcm(6, 21, 5)\"],seealso:[\"gcd\"]}},function(e,t){e.exports={name:\"log\",category:\"Arithmetic\",syntax:[\"log(x)\",\"log(x, base)\"],description:\"Compute the logarithm of a value. If no base is provided, the natural logarithm of x is calculated. If base if provided, the logarithm is calculated for the specified base. log(x, base) is defined as log(x) / log(base).\",examples:[\"log(3.5)\",\"a = log(2.4)\",\"exp(a)\",\"10 ^ 4\",\"log(10000, 10)\",\"log(10000) / log(10)\",\"b = log(1024, 2)\",\"2 ^ b\"],seealso:[\"exp\",\"log10\"]}},function(e,t){e.exports={name:\"log10\",category:\"Arithmetic\",syntax:[\"log10(x)\"],description:\"Compute the 10-base logarithm of a value.\",examples:[\"log10(0.00001)\",\"log10(10000)\",\"10 ^ 4\",\"log(10000) / log(10)\",\"log(10000, 10)\"],seealso:[\"exp\",\"log\"]}},function(e,t){e.exports={name:\"mod\",category:\"Operators\",syntax:[\"x % y\",\"x mod y\",\"mod(x, y)\"],description:\"Calculates the modulus, the remainder of an integer division.\",examples:[\"7 % 3\",\"11 % 2\",\"10 mod 4\",\"function isOdd(x) = x % 2\",\"isOdd(2)\",\"isOdd(3)\"],seealso:[\"divide\"]}},function(e,t){e.exports={name:\"multiply\",category:\"Operators\",syntax:[\"x * y\",\"multiply(x, y)\"],description:\"multiply two values.\",examples:[\"a = 2.1 * 3.4\",\"a / 3.4\",\"2 * 3 + 4\",\"2 * (3 + 4)\",\"3 * 2.1 km\"],seealso:[\"divide\"]}},function(e,t){e.exports={name:\"norm\",category:\"Arithmetic\",syntax:[\"norm(x)\",\"norm(x, p)\"],description:\"Calculate the norm of a number, vector or matrix.\",examples:[\"abs(-3.5)\",\"norm(-3.5)\",\"norm(3 - 4i))\",\"norm([1, 2, -3], Infinity)\",\"norm([1, 2, -3], -Infinity)\",\"norm([3, 4], 2)\",\"norm([[1, 2], [3, 4]], 1)\",\"norm([[1, 2], [3, 4]], 'inf')\",\"norm([[1, 2], [3, 4]], 'fro')\"]}},function(e,t){e.exports={name:\"nthRoot\",category:\"Arithmetic\",syntax:[\"nthRoot(a)\",\"nthRoot(a, root)\"],description:'Calculate the nth root of a value. The principal nth root of a positive real number A, is the positive real solution of the equation \"x^root = A\".',examples:[\"4 ^ 3\",\"nthRoot(64, 3)\",\"nthRoot(9, 2)\",\"sqrt(9)\"],seealso:[\"sqrt\",\"pow\"]}},function(e,t){e.exports={name:\"pow\",category:\"Operators\",syntax:[\"x ^ y\",\"pow(x, y)\"],description:\"Calculates the power of x to y, x^y.\",examples:[\"2^3 = 8\",\"2*2*2\",\"1 + e ^ (pi * i)\"],seealso:[\"multiply\"]}},function(e,t){e.exports={name:\"round\",category:\"Arithmetic\",syntax:[\"round(x)\",\"round(x, n)\"],description:\"round a value towards the nearest integer.If x is complex, both real and imaginary part are rounded towards the nearest integer. When n is specified, the value is rounded to n decimals.\",examples:[\"round(3.2)\",\"round(3.8)\",\"round(-4.2)\",\"round(-4.8)\",\"round(pi, 3)\",\"round(123.45678, 2)\"],seealso:[\"ceil\",\"floor\",\"fix\"]}},function(e,t){e.exports={name:\"sign\",category:\"Arithmetic\",syntax:[\"sign(x)\"],description:\"Compute the sign of a value. The sign of a value x is 1 when x>1, -1 when x<0, and 0 when x=0.\",examples:[\"sign(3.5)\",\"sign(-4.2)\",\"sign(0)\"],seealso:[\"abs\"]}},function(e,t){e.exports={name:\"sqrt\",category:\"Arithmetic\",syntax:[\"sqrt(x)\"],description:\"Compute the square root value. If x = y * y, then y is the square root of x.\",examples:[\"sqrt(25)\",\"5 * 5\",\"sqrt(-1)\"],seealso:[\"square\",\"multiply\"]}},function(e,t){e.exports={name:\"square\",category:\"Arithmetic\",syntax:[\"square(x)\"],description:\"Compute the square of a value. The square of x is x * x.\",examples:[\"square(3)\",\"sqrt(9)\",\"3^2\",\"3 * 3\"],seealso:[\"multiply\",\"pow\",\"sqrt\",\"cube\"]}},function(e,t){e.exports={name:\"subtract\",category:\"Operators\",syntax:[\"x - y\",\"subtract(x, y)\"],description:\"subtract two values.\",examples:[\"a = 5.3 - 2\",\"a + 2\",\"2/3 - 1/6\",\"2 * 3 - 3\",\"2.1 km - 500m\"],seealso:[\"add\"]}},function(e,t){e.exports={name:\"unaryMinus\",category:\"Operators\",syntax:[\"-x\",\"unaryMinus(x)\"],description:\"Inverse the sign of a value. Converts booleans and strings to numbers.\",examples:[\"-4.5\",\"-(-5.6)\",'-\"22\"'],seealso:[\"add\",\"subtract\",\"unaryPlus\"]}},function(e,t){e.exports={name:\"unaryPlus\",category:\"Operators\",syntax:[\"+x\",\"unaryPlus(x)\"],description:\"Converts booleans and strings to numbers.\",examples:[\"+true\",'+\"2\"'],seealso:[\"add\",\"subtract\",\"unaryMinus\"]}},function(e,t){e.exports={name:\"xgcd\",category:\"Arithmetic\",syntax:[\"xgcd(a, b)\"],description:\"Calculate the extended greatest common divisor for two values\",examples:[\"xgcd(8, 12)\",\"gcd(8, 12)\",\"xgcd(36163, 21199)\"],seealso:[\"gcd\",\"lcm\"]}},function(e,t){e.exports={name:\"bitAnd\",category:\"Bitwise\",syntax:[\"x & y\",\"bitAnd(x, y)\"],description:\"Bitwise AND operation. Performs the logical AND operation on each pair of the corresponding bits of the two given values by multiplying them. If both bits in the compared position are 1, the bit in the resulting binary representation is 1, otherwise, the result is 0\",examples:[\"5 & 3\",\"bitAnd(53, 131)\",\"[1, 12, 31] & 42\"],seealso:[\"bitNot\",\"bitOr\",\"bitXor\",\"leftShift\",\"rightArithShift\",\"rightLogShift\"]}},function(e,t){e.exports={name:\"bitNot\",category:\"Bitwise\",syntax:[\"~x\",\"bitNot(x)\"],description:\"Bitwise NOT operation. Performs a logical negation on each bit of the given value. Bits that are 0 become 1, and those that are 1 become 0.\",examples:[\"~1\",\"~2\",\"bitNot([2, -3, 4])\"],seealso:[\"bitAnd\",\"bitOr\",\"bitXor\",\"leftShift\",\"rightArithShift\",\"rightLogShift\"]}},function(e,t){e.exports={name:\"bitOr\",category:\"Bitwise\",syntax:[\"x | y\",\"bitOr(x, y)\"],description:\"Bitwise OR operation. Performs the logical inclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if the first bit is 1 or the second bit is 1 or both bits are 1, otherwise, the result is 0.\",examples:[\"5 | 3\",\"bitOr([1, 2, 3], 4)\"],seealso:[\"bitAnd\",\"bitNot\",\"bitXor\",\"leftShift\",\"rightArithShift\",\"rightLogShift\"]}},function(e,t){e.exports={name:\"bitXor\",category:\"Bitwise\",syntax:[\"bitXor(x, y)\"],description:\"Bitwise XOR operation, exclusive OR. Performs the logical exclusive OR operation on each pair of corresponding bits of the two given values. The result in each position is 1 if only the first bit is 1 or only the second bit is 1, but will be 0 if both are 0 or both are 1.\",examples:[\"bitOr(1, 2)\",\"bitXor([2, 3, 4], 4)\"],seealso:[\"bitAnd\",\"bitNot\",\"bitOr\",\"leftShift\",\"rightArithShift\",\"rightLogShift\"]}},function(e,t){e.exports={name:\"leftShift\",category:\"Bitwise\",syntax:[\"x << y\",\"leftShift(x, y)\"],description:\"Bitwise left logical shift of a value x by y number of bits.\",examples:[\"4 << 1\",\"8 >> 1\"],seealso:[\"bitAnd\",\"bitNot\",\"bitOr\",\"bitXor\",\"rightArithShift\",\"rightLogShift\"]}},function(e,t){e.exports={name:\"rightArithShift\",category:\"Bitwise\",syntax:[\"x >> y\",\"leftShift(x, y)\"],description:\"Bitwise right arithmetic shift of a value x by y number of bits.\",examples:[\"8 >> 1\",\"4 << 1\",\"-12 >> 2\"],seealso:[\"bitAnd\",\"bitNot\",\"bitOr\",\"bitXor\",\"leftShift\",\"rightLogShift\"]}},function(e,t){e.exports={name:\"rightLogShift\",category:\"Bitwise\",syntax:[\"x >> y\",\"leftShift(x, y)\"],description:\"Bitwise right logical shift of a value x by y number of bits.\",examples:[\"8 >>> 1\",\"4 << 1\",\"-12 >>> 2\"],seealso:[\"bitAnd\",\"bitNot\",\"bitOr\",\"bitXor\",\"leftShift\",\"rightArithShift\"]}},function(e,t){e.exports={name:\"bellNumbers\",category:\"Combinatorics\",syntax:[\"bellNumbers(n)\"],description:\"The Bell Numbers count the number of partitions of a set. A partition is a pairwise disjoint subset of S whose union is S. `bellNumbers` only takes integer arguments. The following condition must be enforced: n >= 0.\",examples:[\"bellNumbers(3)\",\"bellNumbers(8)\"],seealso:[\"stirlingS2\"]}},function(e,t){e.exports={name:\"catalan\",category:\"Combinatorics\",syntax:[\"catalan(n)\"],description:\"The Catalan Numbers enumerate combinatorial structures of many different types. catalan only takes integer arguments. The following condition must be enforced: n >= 0.\",examples:[\"catalan(3)\",\"catalan(8)\"],seealso:[\"bellNumbers\"]}},function(e,t){e.exports={name:\"composition\",category:\"Combinatorics\",syntax:[\"composition(n, k)\"],description:\"The composition counts of n into k parts. composition only takes integer arguments. The following condition must be enforced: k <= n.\",examples:[\"composition(5, 3)\"],seealso:[\"combinations\"]}},function(e,t){e.exports={name:\"stirlingS2\",category:\"Combinatorics\",syntax:[\"stirlingS2(n, k)\"],description:\"he Stirling numbers of the second kind, counts the number of ways to partition a set of n labelled objects into k nonempty unlabelled subsets. `stirlingS2` only takes integer arguments. The following condition must be enforced: k <= n. If n = k or k = 1, then s(n,k) = 1.\",examples:[\"stirlingS2(5, 3)\"],seealso:[\"bellNumbers\"]}},function(e,t){e.exports={name:\"arg\",category:\"Complex\",syntax:[\"arg(x)\"],description:\"Compute the argument of a complex value. If x = a+bi, the argument is computed as atan2(b, a).\",examples:[\"arg(2 + 2i)\",\"atan2(3, 2)\",\"arg(2 + 3i)\"],seealso:[\"re\",\"im\",\"conj\",\"abs\"]}},function(e,t){e.exports={name:\"conj\",category:\"Complex\",syntax:[\"conj(x)\"],description:\"Compute the complex conjugate of a complex value. If x = a+bi, the complex conjugate is a-bi.\",examples:[\"conj(2 + 3i)\",\"conj(2 - 3i)\",\"conj(-5.2i)\"],seealso:[\"re\",\"im\",\"abs\",\"arg\"]}},function(e,t){e.exports={name:\"re\",category:\"Complex\",syntax:[\"re(x)\"],description:\"Get the real part of a complex number.\",examples:[\"re(2 + 3i)\",\"im(2 + 3i)\",\"re(-5.2i)\",\"re(2.4)\"],seealso:[\"im\",\"conj\",\"abs\",\"arg\"]}},function(e,t){e.exports={name:\"im\",category:\"Complex\",syntax:[\"im(x)\"],description:\"Get the imaginary part of a complex number.\",examples:[\"im(2 + 3i)\",\"re(2 + 3i)\",\"im(-5.2i)\",\"im(2.4)\"],seealso:[\"re\",\"conj\",\"abs\",\"arg\"]}},function(e,t){e.exports={name:\"eval\",category:\"Expression\",syntax:[\"eval(expression)\",\"eval([expr1, expr2, expr3, ...])\"],description:\"Evaluate an expression or an array with expressions.\",examples:['eval(\"2 + 3\")','eval(\"sqrt(\" + 4 + \")\")'],seealso:[]}},function(e,t){e.exports={name:\"help\",category:\"Expression\",syntax:[\"help(object)\",\"help(string)\"],description:\"Display documentation on a function or data type.\",examples:[\"help(sqrt)\",'help(\"complex\")'],seealso:[]}},function(e,t){e.exports={name:\"distance\",category:\"Geometry\",syntax:[\"distance([x1, y1], [x2, y2])\",\"distance([[x1, y1], [x2, y2])\"],description:\"Calculates the Euclidean distance between two points.\",examples:[\"distance([0,0], [4,4])\",\"distance([[0,0], [4,4]])\"],seealso:[]}},function(e,t){e.exports={name:\"intersect\",category:\"Geometry\",syntax:[\"intersect(expr1, expr2, expr3, expr4)\",\"intersect(expr1, expr2, expr3)\"],description:\"Computes the intersection point of lines and/or planes.\",examples:[\"intersect([0, 0], [10, 10], [10, 0], [0, 10])\",\"intersect([1, 0, 1], [4, -2, 2], [1, 1, 1, 6])\"],seealso:[]}},function(e,t){e.exports={name:\"and\",category:\"Logical\",syntax:[\"x and y\",\"and(x, y)\"],description:\"Logical and. Test whether two values are both defined with a nonzero/nonempty value.\",examples:[\"true and false\",\"true and true\",\"2 and 4\"],seealso:[\"not\",\"or\",\"xor\"]}},function(e,t){e.exports={name:\"not\",category:\"Logical\",syntax:[\"not x\",\"not(x)\"],description:\"Logical not. Flips the boolean value of given argument.\",examples:[\"not true\",\"not false\",\"not 2\",\"not 0\"],seealso:[\"and\",\"or\",\"xor\"]}},function(e,t){e.exports={name:\"or\",category:\"Logical\",syntax:[\"x or y\",\"or(x, y)\"],description:\"Logical or. Test if at least one value is defined with a nonzero/nonempty value.\",examples:[\"true or false\",\"false or false\",\"0 or 4\"],seealso:[\"not\",\"and\",\"xor\"]}},function(e,t){e.exports={name:\"xor\",category:\"Logical\",syntax:[\"x or y\",\"or(x, y)\"],description:\"Logical exclusive or, xor. Test whether one and only one value is defined with a nonzero/nonempty value.\",examples:[\"true xor false\",\"false xor false\",\"true xor true\",\"0 or 4\"],seealso:[\"not\",\"and\",\"or\"]}},function(e,t){e.exports={name:\"concat\",category:\"Matrix\",syntax:[\"concat(A, B, C, ...)\",\"concat(A, B, C, ..., dim)\"],description:\"Concatenate matrices. By default, the matrices are concatenated by the last dimension. The dimension on which to concatenate can be provided as last argument.\",examples:[\"A = [1, 2; 5, 6]\",\"B = [3, 4; 7, 8]\",\"concat(A, B)\",\"concat(A, B, 1)\",\"concat(A, B, 2)\"],seealso:[\"det\",\"diag\",\"eye\",\"inv\",\"ones\",\"range\",\"size\",\"squeeze\",\"subset\",\"trace\",\"transpose\",\"zeros\"]}},function(e,t){e.exports={name:\"cross\",category:\"Matrix\",syntax:[\"cross(A, B)\"],description:\"Calculate the cross product for two vectors in three dimensional space.\",examples:[\"cross([1, 1, 0], [0, 1, 1])\",\"cross([3, -3, 1], [4, 9, 2])\",\"cross([2, 3, 4], [5, 6, 7])\"],seealso:[\"multiply\",\"dot\"]}},function(e,t){e.exports={name:\"det\",category:\"Matrix\",syntax:[\"det(x)\"],description:\"Calculate the determinant of a matrix\",examples:[\"det([1, 2; 3, 4])\",\"det([-2, 2, 3; -1, 1, 3; 2, 0, -1])\"],seealso:[\"concat\",\"diag\",\"eye\",\"inv\",\"ones\",\"range\",\"size\",\"squeeze\",\"subset\",\"trace\",\"transpose\",\"zeros\"]}},function(e,t){e.exports={name:\"diag\",category:\"Matrix\",syntax:[\"diag(x)\",\"diag(x, k)\"],description:\"Create a diagonal matrix or retrieve the diagonal of a matrix. When x is a vector, a matrix with the vector values on the diagonal will be returned. When x is a matrix, a vector with the diagonal values of the matrix is returned. When k is provided, the k-th diagonal will be filled in or retrieved, if k is positive, the values are placed on the super diagonal. When k is negative, the values are placed on the sub diagonal.\",examples:[\"diag(1:3)\",\"diag(1:3, 1)\",\"a = [1, 2, 3; 4, 5, 6; 7, 8, 9]\",\"diag(a)\"],seealso:[\"concat\",\"det\",\"eye\",\"inv\",\"ones\",\"range\",\"size\",\"squeeze\",\"subset\",\"trace\",\"transpose\",\"zeros\"]}},function(e,t){e.exports={name:\"dot\",category:\"Matrix\",syntax:[\"dot(A, B)\"],description:\"Calculate the dot product of two vectors. The dot product of A = [a1, a2, a3, ..., an] and B = [b1, b2, b3, ..., bn] is defined as dot(A, B) = a1 * b1 + a2 * b2 + a3 * b3 + ... + an * bn\",examples:[\"dot([2, 4, 1], [2, 2, 3])\",\"[2, 4, 1] * [2, 2, 3]\"],seealso:[\"multiply\",\"cross\"]}},function(e,t){e.exports={name:\"eye\",category:\"Matrix\",syntax:[\"eye(n)\",\"eye(m, n)\",\"eye([m, n])\",\"eye\"],description:\"Returns the identity matrix with size m-by-n. The matrix has ones on the diagonal and zeros elsewhere.\",examples:[\"eye(3)\",\"eye(3, 5)\",\"a = [1, 2, 3; 4, 5, 6]\",\"eye(size(a))\"],seealso:[\"concat\",\"det\",\"diag\",\"inv\",\"ones\",\"range\",\"size\",\"squeeze\",\"subset\",\"trace\",\"transpose\",\"zeros\"]}},function(e,t){e.exports={name:\"flatten\",category:\"Matrix\",syntax:[\"flatten(x)\"],description:\"Flatten a multi dimensional matrix into a single dimensional matrix.\",examples:[\"a = [1, 2, 3; 4, 5, 6]\",\"size(a)\",\"b = flatten(a)\",\"size(b)\"],seealso:[\"concat\",\"resize\",\"size\",\"squeeze\"]}},function(e,t){e.exports={name:\"inv\",category:\"Matrix\",syntax:[\"inv(x)\"],description:\"Calculate the inverse of a matrix\",examples:[\"inv([1, 2; 3, 4])\",\"inv(4)\",\"1 / 4\"],seealso:[\"concat\",\"det\",\"diag\",\"eye\",\"ones\",\"range\",\"size\",\"squeeze\",\"subset\",\"trace\",\"transpose\",\"zeros\"]}},function(e,t){e.exports={name:\"ones\",category:\"Matrix\",syntax:[\"ones(m)\",\"ones(m, n)\",\"ones(m, n, p, ...)\",\"ones([m])\",\"ones([m, n])\",\"ones([m, n, p, ...])\",\"ones\"],description:\"Create a matrix containing ones.\",examples:[\"ones(3)\",\"ones(3, 5)\",\"ones([2,3]) * 4.5\",\"a = [1, 2, 3; 4, 5, 6]\",\"ones(size(a))\"],seealso:[\"concat\",\"det\",\"diag\",\"eye\",\"inv\",\"range\",\"size\",\"squeeze\",\"subset\",\"trace\",\"transpose\",\"zeros\"]}},function(e,t){e.exports={name:\"range\",category:\"Type\",syntax:[\"start:end\",\"start:step:end\",\"range(start, end)\",\"range(start, end, step)\",\"range(string)\"],description:\"Create a range. Lower bound of the range is included, upper bound is excluded.\",examples:[\"1:5\",\"3:-1:-3\",\"range(3, 7)\",\"range(0, 12, 2)\",'range(\"4:10\")',\"a = [1, 2, 3, 4; 5, 6, 7, 8]\",\"a[1:2, 1:2]\"],seealso:[\"concat\",\"det\",\"diag\",\"eye\",\"inv\",\"ones\",\"size\",\"squeeze\",\"subset\",\"trace\",\"transpose\",\"zeros\"]}},function(e,t){e.exports={name:\"resize\",category:\"Matrix\",syntax:[\"resize(x, size)\",\"resize(x, size, defaultValue)\"],description:\"Resize a matrix.\",examples:[\"resize([1,2,3,4,5], [3])\",\"resize([1,2,3], [5])\",\"resize([1,2,3], [5], -1)\",\"resize(2, [2, 3])\",'resize(\"hello\", [8], \"!\")'],seealso:[\"size\",\"subset\",\"squeeze\"]}},function(e,t){e.exports={name:\"size\",category:\"Matrix\",syntax:[\"size(x)\"],description:\"Calculate the size of a matrix.\",examples:[\"size(2.3)\",'size(\"hello world\")',\"a = [1, 2; 3, 4; 5, 6]\",\"size(a)\",\"size(1:6)\"],seealso:[\"concat\",\"det\",\"diag\",\"eye\",\"inv\",\"ones\",\"range\",\"squeeze\",\"subset\",\"trace\",\"transpose\",\"zeros\"]}},function(e,t){e.exports={name:\"squeeze\",category:\"Matrix\",syntax:[\"squeeze(x)\"],description:\"Remove inner and outer singleton dimensions from a matrix.\",examples:[\"a = zeros(3,2,1)\",\"size(squeeze(a))\",\"b = zeros(1,1,3)\",\"size(squeeze(b))\"],seealso:[\"concat\",\"det\",\"diag\",\"eye\",\"inv\",\"ones\",\"range\",\"size\",\"subset\",\"trace\",\"transpose\",\"zeros\"]}},function(e,t){e.exports={name:\"subset\",category:\"Matrix\",syntax:[\"value(index)\",\"value(index) = replacement\",\"subset(value, [index])\",\"subset(value, [index], replacement)\"],description:\"Get or set a subset of a matrix or string. Indexes are one-based. Both the ranges lower-bound and upper-bound are included.\",examples:[\"d = [1, 2; 3, 4]\",\"e = []\",\"e[1, 1:2] = [5, 6]\",\"e[2, :] = [7, 8]\",\"f = d * e\",\"f[2, 1]\",\"f[:, 1]\"],seealso:[\"concat\",\"det\",\"diag\",\"eye\",\"inv\",\"ones\",\"range\",\"size\",\"squeeze\",\"trace\",\"transpose\",\"zeros\"]}},function(e,t){e.exports={name:\"trace\",category:\"Matrix\",syntax:[\"trace(A)\"],description:\"Calculate the trace of a matrix: the sum of the elements on the main diagonal of a square matrix.\",examples:[\"A = [1, 2, 3; -1, 2, 3; 2, 0, 3]\",\"trace(A)\"],seealso:[\"concat\",\"det\",\"diag\",\"eye\",\"inv\",\"ones\",\"range\",\"size\",\"squeeze\",\"subset\",\"transpose\",\"zeros\"]\n}},function(e,t){e.exports={name:\"transpose\",category:\"Matrix\",syntax:[\"x'\",\"transpose(x)\"],description:\"Transpose a matrix\",examples:[\"a = [1, 2, 3; 4, 5, 6]\",\"a'\",\"transpose(a)\"],seealso:[\"concat\",\"det\",\"diag\",\"eye\",\"inv\",\"ones\",\"range\",\"size\",\"squeeze\",\"subset\",\"trace\",\"zeros\"]}},function(e,t){e.exports={name:\"zeros\",category:\"Matrix\",syntax:[\"zeros(m)\",\"zeros(m, n)\",\"zeros(m, n, p, ...)\",\"zeros([m])\",\"zeros([m, n])\",\"zeros([m, n, p, ...])\",\"zeros\"],description:\"Create a matrix containing zeros.\",examples:[\"zeros(3)\",\"zeros(3, 5)\",\"a = [1, 2, 3; 4, 5, 6]\",\"zeros(size(a))\"],seealso:[\"concat\",\"det\",\"diag\",\"eye\",\"inv\",\"ones\",\"range\",\"size\",\"squeeze\",\"subset\",\"trace\",\"transpose\"]}},function(e,t){e.exports={name:\"combinations\",category:\"Probability\",syntax:[\"combinations(n, k)\"],description:\"Compute the number of combinations of n items taken k at a time\",examples:[\"combinations(7, 5)\"],seealso:[\"permutations\",\"factorial\"]}},function(e,t){e.exports={name:\"factorial\",category:\"Probability\",syntax:[\"kldivergence(x, y)\"],description:\"Compute the factorial of a value\",examples:[\"5!\",\"5 * 4 * 3 * 2 * 1\",\"3!\"],seealso:[\"combinations\",\"permutations\",\"gamma\"]}},function(e,t){e.exports={name:\"gamma\",category:\"Probability\",syntax:[\"gamma(n)\"],description:\"Compute the gamma function. For small values, the Lanczos approximation is used, and for large values the extended Stirling approximation.\",examples:[\"gamma(4)\",\"3!\",\"gamma(1/2)\",\"sqrt(pi)\"],seealso:[\"factorial\"]}},function(e,t){e.exports={name:\"kldivergence\",category:\"Probability\",syntax:[\"n!\",\"factorial(n)\"],description:\"Calculate the Kullback-Leibler (KL) divergence between two distributions.\",examples:[\"math.kldivergence([0.7,0.5,0.4], [0.2,0.9,0.5])\"],seealso:[]}},function(e,t){e.exports={name:\"multinomial\",category:\"Probability\",syntax:[\"multinomial(A)\"],description:\"Multinomial Coefficients compute the number of ways of picking a1, a2, ..., ai unordered outcomes from `n` possibilities. multinomial takes one array of integers as an argument. The following condition must be enforced: every ai <= 0.\",examples:[\"multinomial([1, 2, 1])\"],seealso:[\"combinations\",\"factorial\"]}},function(e,t){e.exports={name:\"permutations\",category:\"Probability\",syntax:[\"permutations(n)\",\"permutations(n, k)\"],description:\"Compute the number of permutations of n items taken k at a time\",examples:[\"permutations(5)\",\"permutations(5, 3)\"],seealso:[\"combinations\",\"factorial\"]}},function(e,t){e.exports={name:\"pickRandom\",category:\"Probability\",syntax:[\"pickRandom(array)\"],description:\"Pick a random entry from a given array.\",examples:[\"pickRandom(0:10)\",\"pickRandom([1, 3, 1, 6])\"],seealso:[\"random\",\"randomInt\"]}},function(e,t){e.exports={name:\"random\",category:\"Probability\",syntax:[\"random()\",\"random(max)\",\"random(min, max)\",\"random(size)\",\"random(size, max)\",\"random(size, min, max)\"],description:\"Return a random number.\",examples:[\"random()\",\"random(10, 20)\",\"random([2, 3])\"],seealso:[\"pickRandom\",\"randomInt\"]}},function(e,t){e.exports={name:\"randInt\",category:\"Probability\",syntax:[\"randInt(max)\",\"randInt(min, max)\",\"randInt(size)\",\"randInt(size, max)\",\"randInt(size, min, max)\"],description:\"Return a random integer number\",examples:[\"randInt(10, 20)\",\"randInt([2, 3], 10)\"],seealso:[\"pickRandom\",\"random\"]}},function(e,t){e.exports={name:\"compare\",category:\"Relational\",syntax:[\"compare(x, y)\"],description:\"Compare two values. Returns 1 if x is larger than y, -1 if x is smaller than y, and 0 if x and y are equal.\",examples:[\"compare(2, 3)\",\"compare(3, 2)\",\"compare(2, 2)\",\"compare(5cm, 40mm)\",\"compare(2, [1, 2, 3])\"],seealso:[\"equal\",\"unequal\",\"smaller\",\"smallerEq\",\"largerEq\"]}},function(e,t){e.exports={name:\"deepEqual\",category:\"Relational\",syntax:[\"deepEqual(x, y)\"],description:\"Check equality of two matrices element wise. Returns true if the size of both matrices is equal and when and each of the elements are equal.\",examples:[\"[1,3,4] == [1,3,4]\",\"[1,3,4] == [1,3]\"],seealso:[\"equal\",\"unequal\",\"smaller\",\"larger\",\"smallerEq\",\"largerEq\",\"compare\"]}},function(e,t){e.exports={name:\"equal\",category:\"Relational\",syntax:[\"x == y\",\"equal(x, y)\"],description:\"Check equality of two values. Returns true if the values are equal, and false if not.\",examples:[\"2+2 == 3\",\"2+2 == 4\",\"a = 3.2\",\"b = 6-2.8\",\"a == b\",\"50cm == 0.5m\"],seealso:[\"unequal\",\"smaller\",\"larger\",\"smallerEq\",\"largerEq\",\"compare\",\"deepEqual\"]}},function(e,t){e.exports={name:\"larger\",category:\"Relational\",syntax:[\"x > y\",\"larger(x, y)\"],description:\"Check if value x is larger than y. Returns true if x is larger than y, and false if not.\",examples:[\"2 > 3\",\"5 > 2*2\",\"a = 3.3\",\"b = 6-2.8\",\"(a > b)\",\"(b < a)\",\"5 cm > 2 inch\"],seealso:[\"equal\",\"unequal\",\"smaller\",\"smallerEq\",\"largerEq\",\"compare\"]}},function(e,t){e.exports={name:\"largerEq\",category:\"Relational\",syntax:[\"x >= y\",\"largerEq(x, y)\"],description:\"Check if value x is larger or equal to y. Returns true if x is larger or equal to y, and false if not.\",examples:[\"2 > 1+1\",\"2 >= 1+1\",\"a = 3.2\",\"b = 6-2.8\",\"(a > b)\"],seealso:[\"equal\",\"unequal\",\"smallerEq\",\"smaller\",\"largerEq\",\"compare\"]}},function(e,t){e.exports={name:\"smaller\",category:\"Relational\",syntax:[\"x < y\",\"smaller(x, y)\"],description:\"Check if value x is smaller than value y. Returns true if x is smaller than y, and false if not.\",examples:[\"2 < 3\",\"5 < 2*2\",\"a = 3.3\",\"b = 6-2.8\",\"(a < b)\",\"5 cm < 2 inch\"],seealso:[\"equal\",\"unequal\",\"larger\",\"smallerEq\",\"largerEq\",\"compare\"]}},function(e,t){e.exports={name:\"smallerEq\",category:\"Relational\",syntax:[\"x <= y\",\"smallerEq(x, y)\"],description:\"Check if value x is smaller or equal to value y. Returns true if x is smaller than y, and false if not.\",examples:[\"2 < 1+1\",\"2 <= 1+1\",\"a = 3.2\",\"b = 6-2.8\",\"(a < b)\"],seealso:[\"equal\",\"unequal\",\"larger\",\"smaller\",\"largerEq\",\"compare\"]}},function(e,t){e.exports={name:\"unequal\",category:\"Relational\",syntax:[\"x != y\",\"unequal(x, y)\"],description:\"Check unequality of two values. Returns true if the values are unequal, and false if they are equal.\",examples:[\"2+2 != 3\",\"2+2 != 4\",\"a = 3.2\",\"b = 6-2.8\",\"a != b\",\"50cm != 0.5m\",\"5 cm != 2 inch\"],seealso:[\"equal\",\"smaller\",\"larger\",\"smallerEq\",\"largerEq\",\"compare\",\"deepEqual\"]}},function(e,t){e.exports={name:\"max\",category:\"Statistics\",syntax:[\"max(a, b, c, ...)\",\"max(A)\",\"max(A, dim)\"],description:\"Compute the maximum value of a list of values.\",examples:[\"max(2, 3, 4, 1)\",\"max([2, 3, 4, 1])\",\"max([2, 5; 4, 3])\",\"max([2, 5; 4, 3], 1)\",\"max([2, 5; 4, 3], 2)\",\"max(2.7, 7.1, -4.5, 2.0, 4.1)\",\"min(2.7, 7.1, -4.5, 2.0, 4.1)\"],seealso:[\"mean\",\"median\",\"min\",\"prod\",\"std\",\"sum\",\"var\"]}},function(e,t){e.exports={name:\"mean\",category:\"Statistics\",syntax:[\"mean(a, b, c, ...)\",\"mean(A)\",\"mean(A, dim)\"],description:\"Compute the arithmetic mean of a list of values.\",examples:[\"mean(2, 3, 4, 1)\",\"mean([2, 3, 4, 1])\",\"mean([2, 5; 4, 3])\",\"mean([2, 5; 4, 3], 1)\",\"mean([2, 5; 4, 3], 2)\",\"mean([1.0, 2.7, 3.2, 4.0])\"],seealso:[\"max\",\"median\",\"min\",\"prod\",\"std\",\"sum\",\"var\"]}},function(e,t){e.exports={name:\"median\",category:\"Statistics\",syntax:[\"median(a, b, c, ...)\",\"median(A)\"],description:\"Compute the median of all values. The values are sorted and the middle value is returned. In case of an even number of values, the average of the two middle values is returned.\",examples:[\"median(5, 2, 7)\",\"median([3, -1, 5, 7])\"],seealso:[\"max\",\"mean\",\"min\",\"prod\",\"std\",\"sum\",\"var\"]}},function(e,t){e.exports={name:\"min\",category:\"Statistics\",syntax:[\"min(a, b, c, ...)\",\"min(A)\",\"min(A, dim)\"],description:\"Compute the minimum value of a list of values.\",examples:[\"min(2, 3, 4, 1)\",\"min([2, 3, 4, 1])\",\"min([2, 5; 4, 3])\",\"min([2, 5; 4, 3], 1)\",\"min([2, 5; 4, 3], 2)\",\"min(2.7, 7.1, -4.5, 2.0, 4.1)\",\"max(2.7, 7.1, -4.5, 2.0, 4.1)\"],seealso:[\"max\",\"mean\",\"median\",\"prod\",\"std\",\"sum\",\"var\"]}},function(e,t){e.exports={name:\"mode\",category:\"Statistics\",syntax:[\"mode(a, b, c, ...)\",\"mode(A)\",\"mode(A, a, b, B, c, ...)\"],description:\"Computes the mode of all values as an array. In case mode being more than one, multiple values are returned in an array.\",examples:[\"mode(5, 2, 7)\",\"mode([3, -1, 5, 7])\"],seealso:[\"max\",\"mean\",\"min\",\"median\",\"prod\",\"std\",\"sum\",\"var\"]}},function(e,t){e.exports={name:\"prod\",category:\"Statistics\",syntax:[\"prod(a, b, c, ...)\",\"prod(A)\"],description:\"Compute the product of all values.\",examples:[\"prod(2, 3, 4)\",\"prod([2, 3, 4])\",\"prod([2, 5; 4, 3])\"],seealso:[\"max\",\"mean\",\"min\",\"median\",\"min\",\"std\",\"sum\",\"var\"]}},function(e,t){e.exports={name:\"quantileSeq\",category:\"Statistics\",syntax:[\"quantileSeq(A, prob[, sorted])\",\"quantileSeq(A, [prob1, prob2, ...][, sorted])\",\"quantileSeq(A, N[, sorted])\"],description:\"Compute the prob order quantile of a matrix or a list with values. The sequence is sorted and the middle value is returned. Supported types of sequence values are: Number, BigNumber, Unit Supported types of probablity are: Number, BigNumber. \\n\\nIn case of a (multi dimensional) array or matrix, the prob order quantile of all elements will be calculated.\",examples:[\"quantileSeq([3, -1, 5, 7], 0.5)\",\"quantileSeq([3, -1, 5, 7], [1/3, 2/3])\",\"quantileSeq([3, -1, 5, 7], 2)\",\"quantileSeq([-1, 3, 5, 7], 0.5, true)\"],seealso:[\"mean\",\"median\",\"min\",\"max\",\"prod\",\"std\",\"sum\",\"var\"]}},function(e,t){e.exports={name:\"std\",category:\"Statistics\",syntax:[\"std(a, b, c, ...)\",\"std(A)\",\"std(A, normalization)\"],description:'Compute the standard deviation of all values, defined as std(A) = sqrt(var(A)). Optional parameter normalization can be \"unbiased\" (default), \"uncorrected\", or \"biased\".',examples:[\"std(2, 4, 6)\",\"std([2, 4, 6, 8])\",'std([2, 4, 6, 8], \"uncorrected\")','std([2, 4, 6, 8], \"biased\")',\"std([1, 2, 3; 4, 5, 6])\"],seealso:[\"max\",\"mean\",\"min\",\"median\",\"min\",\"prod\",\"sum\",\"var\"]}},function(e,t){e.exports={name:\"sum\",category:\"Statistics\",syntax:[\"sum(a, b, c, ...)\",\"sum(A)\"],description:\"Compute the sum of all values.\",examples:[\"sum(2, 3, 4, 1)\",\"sum([2, 3, 4, 1])\",\"sum([2, 5; 4, 3])\"],seealso:[\"max\",\"mean\",\"median\",\"min\",\"prod\",\"std\",\"sum\",\"var\"]}},function(e,t){e.exports={name:\"var\",category:\"Statistics\",syntax:[\"var(a, b, c, ...)\",\"var(A)\",\"var(A, normalization)\"],description:'Compute the variance of all values. Optional parameter normalization can be \"unbiased\" (default), \"uncorrected\", or \"biased\".',examples:[\"var(2, 4, 6)\",\"var([2, 4, 6, 8])\",'var([2, 4, 6, 8], \"uncorrected\")','var([2, 4, 6, 8], \"biased\")',\"var([1, 2, 3; 4, 5, 6])\"],seealso:[\"max\",\"mean\",\"min\",\"median\",\"min\",\"prod\",\"std\",\"sum\"]}},function(e,t){e.exports={name:\"acos\",category:\"Trigonometry\",syntax:[\"acos(x)\"],description:\"Compute the inverse cosine of a value in radians.\",examples:[\"acos(0.5)\",\"acos(cos(2.3))\"],seealso:[\"cos\",\"atan\",\"asin\"]}},function(e,t){e.exports={name:\"acosh\",category:\"Trigonometry\",syntax:[\"acosh(x)\"],description:\"Calculate the hyperbolic arccos of a value, defined as `acosh(x) = ln(sqrt(x^2 - 1) + x)`.\",examples:[\"acosh(1.5)\"],seealso:[\"cosh\",\"asinh\",\"atanh\"]}},function(e,t){e.exports={name:\"acot\",category:\"Trigonometry\",syntax:[\"acot(x)\"],description:\"Calculate the inverse cotangent of a value.\",examples:[\"acot(0.5)\",\"acot(cot(0.5))\",\"acot(2)\"],seealso:[\"cot\",\"atan\"]}},function(e,t){e.exports={name:\"acoth\",category:\"Trigonometry\",syntax:[\"acoth(x)\"],description:\"Calculate the hyperbolic arccotangent of a value, defined as `acoth(x) = (ln((x+1)/x) + ln(x/(x-1))) / 2`.\",examples:[\"acoth(0.5)\"],seealso:[\"acsch\",\"asech\"]}},function(e,t){e.exports={name:\"acsc\",category:\"Trigonometry\",syntax:[\"acsc(x)\"],description:\"Calculate the inverse cotangent of a value.\",examples:[\"acsc(0.5)\",\"acsc(csc(0.5))\",\"acsc(2)\"],seealso:[\"csc\",\"asin\",\"asec\"]}},function(e,t){e.exports={name:\"acsch\",category:\"Trigonometry\",syntax:[\"acsch(x)\"],description:\"Calculate the hyperbolic arccosecant of a value, defined as `acsch(x) = ln(1/x + sqrt(1/x^2 + 1))`.\",examples:[\"acsch(0.5)\"],seealso:[\"asech\",\"acoth\"]}},function(e,t){e.exports={name:\"asec\",category:\"Trigonometry\",syntax:[\"asec(x)\"],description:\"Calculate the inverse secant of a value.\",examples:[\"asec(0.5)\",\"asec(sec(0.5))\",\"asec(2)\"],seealso:[\"acos\",\"acot\",\"acsc\"]}},function(e,t){e.exports={name:\"asech\",category:\"Trigonometry\",syntax:[\"asech(x)\"],description:\"Calculate the inverse secant of a value.\",examples:[\"asech(0.5)\"],seealso:[\"acsch\",\"acoth\"]}},function(e,t){e.exports={name:\"asin\",category:\"Trigonometry\",syntax:[\"asin(x)\"],description:\"Compute the inverse sine of a value in radians.\",examples:[\"asin(0.5)\",\"asin(sin(2.3))\"],seealso:[\"sin\",\"acos\",\"atan\"]}},function(e,t){e.exports={name:\"asinh\",category:\"Trigonometry\",syntax:[\"asinh(x)\"],description:\"Calculate the hyperbolic arcsine of a value, defined as `asinh(x) = ln(x + sqrt(x^2 + 1))`.\",examples:[\"asinh(0.5)\"],seealso:[\"acosh\",\"atanh\"]}},function(e,t){e.exports={name:\"atan\",category:\"Trigonometry\",syntax:[\"atan(x)\"],description:\"Compute the inverse tangent of a value in radians.\",examples:[\"atan(0.5)\",\"atan(tan(2.3))\"],seealso:[\"tan\",\"acos\",\"asin\"]}},function(e,t){e.exports={name:\"atanh\",category:\"Trigonometry\",syntax:[\"atanh(x)\"],description:\"Calculate the hyperbolic arctangent of a value, defined as `atanh(x) = ln((1 + x)/(1 - x)) / 2`.\",examples:[\"atanh(0.5)\"],seealso:[\"acosh\",\"asinh\"]}},function(e,t){e.exports={name:\"atan2\",category:\"Trigonometry\",syntax:[\"atan2(y, x)\"],description:\"Computes the principal value of the arc tangent of y/x in radians.\",examples:[\"atan2(2, 2) / pi\",\"angle = 60 deg in rad\",\"x = cos(angle)\",\"y = sin(angle)\",\"atan2(y, x)\"],seealso:[\"sin\",\"cos\",\"tan\"]}},function(e,t){e.exports={name:\"cos\",category:\"Trigonometry\",syntax:[\"cos(x)\"],description:\"Compute the cosine of x in radians.\",examples:[\"cos(2)\",\"cos(pi / 4) ^ 2\",\"cos(180 deg)\",\"cos(60 deg)\",\"sin(0.2)^2 + cos(0.2)^2\"],seealso:[\"acos\",\"sin\",\"tan\"]}},function(e,t){e.exports={name:\"cosh\",category:\"Trigonometry\",syntax:[\"cosh(x)\"],description:\"Compute the hyperbolic cosine of x in radians.\",examples:[\"cosh(0.5)\"],seealso:[\"sinh\",\"tanh\",\"coth\"]}},function(e,t){e.exports={name:\"cot\",category:\"Trigonometry\",syntax:[\"cot(x)\"],description:\"Compute the cotangent of x in radians. Defined as 1/tan(x)\",examples:[\"cot(2)\",\"1 / tan(2)\"],seealso:[\"sec\",\"csc\",\"tan\"]}},function(e,t){e.exports={name:\"coth\",category:\"Trigonometry\",syntax:[\"coth(x)\"],description:\"Compute the hyperbolic cotangent of x in radians.\",examples:[\"coth(2)\",\"1 / tanh(2)\"],seealso:[\"sech\",\"csch\",\"tanh\"]}},function(e,t){e.exports={name:\"csc\",category:\"Trigonometry\",syntax:[\"csc(x)\"],description:\"Compute the cosecant of x in radians. Defined as 1/sin(x)\",examples:[\"csc(2)\",\"1 / sin(2)\"],seealso:[\"sec\",\"cot\",\"sin\"]}},function(e,t){e.exports={name:\"csch\",category:\"Trigonometry\",syntax:[\"csch(x)\"],description:\"Compute the hyperbolic cosecant of x in radians. Defined as 1/sinh(x)\",examples:[\"csch(2)\",\"1 / sinh(2)\"],seealso:[\"sech\",\"coth\",\"sinh\"]}},function(e,t){e.exports={name:\"sec\",category:\"Trigonometry\",syntax:[\"sec(x)\"],description:\"Compute the secant of x in radians. Defined as 1/cos(x)\",examples:[\"sec(2)\",\"1 / cos(2)\"],seealso:[\"cot\",\"csc\",\"cos\"]}},function(e,t){e.exports={name:\"sech\",category:\"Trigonometry\",syntax:[\"sech(x)\"],description:\"Compute the hyperbolic secant of x in radians. Defined as 1/cosh(x)\",examples:[\"sech(2)\",\"1 / cosh(2)\"],seealso:[\"coth\",\"csch\",\"cosh\"]}},function(e,t){e.exports={name:\"sin\",category:\"Trigonometry\",syntax:[\"sin(x)\"],description:\"Compute the sine of x in radians.\",examples:[\"sin(2)\",\"sin(pi / 4) ^ 2\",\"sin(90 deg)\",\"sin(30 deg)\",\"sin(0.2)^2 + cos(0.2)^2\"],seealso:[\"asin\",\"cos\",\"tan\"]}},function(e,t){e.exports={name:\"sinh\",category:\"Trigonometry\",syntax:[\"sinh(x)\"],description:\"Compute the hyperbolic sine of x in radians.\",examples:[\"sinh(0.5)\"],seealso:[\"cosh\",\"tanh\"]}},function(e,t){e.exports={name:\"tan\",category:\"Trigonometry\",syntax:[\"tan(x)\"],description:\"Compute the tangent of x in radians.\",examples:[\"tan(0.5)\",\"sin(0.5) / cos(0.5)\",\"tan(pi / 4)\",\"tan(45 deg)\"],seealso:[\"atan\",\"sin\",\"cos\"]}},function(e,t){e.exports={name:\"tanh\",category:\"Trigonometry\",syntax:[\"tanh(x)\"],description:\"Compute the hyperbolic tangent of x in radians.\",examples:[\"tanh(0.5)\",\"sinh(0.5) / cosh(0.5)\"],seealso:[\"sinh\",\"cosh\"]}},function(e,t){e.exports={name:\"to\",category:\"Units\",syntax:[\"x to unit\",\"to(x, unit)\"],description:\"Change the unit of a value.\",examples:[\"5 inch to cm\",\"3.2kg to g\",\"16 bytes in bits\"],seealso:[]}},function(e,t){e.exports={name:\"clone\",category:\"Utils\",syntax:[\"clone(x)\"],description:\"Clone a variable. Creates a copy of primitive variables,and a deep copy of matrices\",examples:[\"clone(3.5)\",\"clone(2 - 4i)\",\"clone(45 deg)\",\"clone([1, 2; 3, 4])\",'clone(\"hello world\")'],seealso:[]}},function(e,t){e.exports={name:\"map\",category:\"Utils\",syntax:[\"map(x, callback)\"],description:\"Create a new matrix or array with the results of the callback function executed on each entry of the matrix/array.\",examples:[\"map([1, 2, 3], function(val) { return value * value })\"],seealso:[\"filter\",\"forEach\"]}},function(e,t){e.exports={name:\"partitionSelect\",category:\"Utils\",syntax:[\"partitionSelect(x, k)\",\"partitionSelect(x, k, compare)\"],description:\"Partition-based selection of an array or 1D matrix. Will find the kth smallest value, and mutates the input array. Uses Quickselect.\",examples:[\"partitionSelect([5, 10, 1], 2)\",'partitionSelect([\"C\", \"B\", \"A\", \"D\"], 1)'],seealso:[\"sort\"]}},function(e,t){e.exports={name:\"filter\",category:\"Utils\",syntax:[\"filter(x, test)\"],description:\"Filter items in a matrix.\",examples:[\"isPositive(x) = x > 0\",\"filter([6, -2, -1, 4, 3], isPositive)\",\"filter([6, -2, 0, 1, 0], x != 0)\"],seealso:[\"sort\",\"map\",\"forEach\"]}},function(e,t){e.exports={name:\"forEach\",category:\"Utils\",syntax:[\"forEach(x, callback)\"],description:\"Iterates over all elements of a matrix/array, and executes the given callback function.\",examples:[\"forEach([1, 2, 3], function(val) { console.log(val) })\"],seealso:[\"map\",\"sort\",\"filter\"]}},function(e,t){e.exports={name:\"format\",category:\"Utils\",syntax:[\"format(value)\",\"format(value, precision)\"],description:\"Format a value of any type as string.\",examples:[\"format(2.3)\",\"format(3 - 4i)\",\"format([])\",\"format(pi, 3)\"],seealso:[\"print\"]}},function(e,t){e.exports={name:\"isInteger\",category:\"Utils\",syntax:[\"isInteger(x)\"],description:\"Test whether a value is an integer number.\",examples:[\"isInteger(2)\",\"isInteger(3.5)\",\"isInteger([3, 0.5, -2])\"],seealso:[\"isNegative\",\"isNumeric\",\"isPositive\",\"isZero\"]}},function(e,t){e.exports={name:\"isNegative\",category:\"Utils\",syntax:[\"isNegative(x)\"],description:\"Test whether a value is negative: smaller than zero.\",examples:[\"isNegative(2)\",\"isNegative(0)\",\"isNegative(-4)\",\"isNegative([3, 0.5, -2])\"],seealso:[\"isInteger\",\"isNumeric\",\"isPositive\",\"isZero\"]}},function(e,t){e.exports={name:\"isNumeric\",category:\"Utils\",syntax:[\"isNumeric(x)\"],description:\"Test whether a value is a numeric value. Returns true when the input is a number, BigNumber, Fraction, or boolean.\",examples:[\"isNumeric(2)\",\"isNumeric(0)\",\"isNumeric(bignumber(500))\",\"isNumeric(fraction(0.125))\",'isNumeric(\"3\")',\"isNumeric(2 + 3i)\",'isNumeric([2.3, \"foo\", false])'],seealso:[\"isInteger\",\"isZero\",\"isNegative\",\"isPositive\"]}},function(e,t){e.exports={name:\"isPositive\",category:\"Utils\",syntax:[\"isPositive(x)\"],description:\"Test whether a value is positive: larger than zero.\",examples:[\"isPositive(2)\",\"isPositive(0)\",\"isPositive(-4)\",\"isPositive([3, 0.5, -2])\"],seealso:[\"isInteger\",\"isNumeric\",\"isNegative\",\"isZero\"]}},function(e,t){e.exports={name:\"isZero\",category:\"Utils\",syntax:[\"isZero(x)\"],description:\"Test whether a value is zero.\",examples:[\"isZero(2)\",\"isZero(0)\",\"isZero(-4)\",\"isZero([3, 0, -2, 0])\"],seealso:[\"isInteger\",\"isNumeric\",\"isNegative\",\"isPositive\"]}},function(e,t){e.exports={name:\"import\",category:\"Utils\",syntax:[\"import(string)\"],description:\"Import functions from a file.\",examples:['import(\"numbers\")','import(\"./mylib.js\")'],seealso:[]}},function(e,t){e.exports={name:\"sort\",category:\"Utils\",syntax:[\"sort(x)\",\"sort(x, compare)\"],description:'Sort the items in a matrix. Compare can be a string \"asc\" or \"desc\", or a custom sort function.',examples:[\"sort([5, 10, 1])\",'sort([\"C\", \"B\", \"A\", \"D\"])',\"sortByLength(a, b) = size(a)[1] - size(b)[1]\",'sort([\"Langdon\", \"Tom\", \"Sara\"], sortByLength)'],seealso:[\"map\",\"filter\",\"forEach\"]}},function(e,t){e.exports={name:\"typeof\",category:\"Utils\",syntax:[\"typeof(x)\"],description:\"Get the type of a variable.\",examples:[\"typeof(3.5)\",\"typeof(2 - 4i)\",\"typeof(45 deg)\",'typeof(\"hello world\")'],seealso:[]}},function(e,t,r){e.exports=[r(252),r(270),r(271),r(272),r(273)]},function(e,t,r){\"use strict\";function n(e,t,n,a){var o=n(r(253));return a(\"compile\",{string:function(e){return o(e).compile()},\"Array | Matrix\":function(e){return i(e,function(e){return o(e).compile()})}})}var i=r(19);t.name=\"compile\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,o){function s(t,r){if(1!=arguments.length&&2!=arguments.length)throw new i(\"parse\",arguments.length,1,2);if(he=r&&r.nodes?r.nodes:{},\"string\"==typeof t)return ge=t,x();if(Array.isArray(t)||t instanceof e.Matrix)return a(t,function(e){if(\"string\"!=typeof e)throw new TypeError(\"String expected\");return ge=e,x()});throw new TypeError(\"String or matrix expected\")}function u(){ve=0,de=ge.charAt(0),we=0,be=null}function c(){ve++,de=ge.charAt(ve)}function f(){return ge.charAt(ve+1)}function l(){return ge.charAt(ve+2)}function p(){for(xe=le.NULL,ye=\"\";\" \"==de||\"\t\"==de||\"\\n\"==de&&we;)c();if(\"#\"==de)for(;\"\\n\"!=de&&\"\"!=de;)c();if(\"\"==de)return void(xe=le.DELIMITER);if(\"\\n\"==de&&!we)return xe=le.DELIMITER,ye=de,void c();var e=de+f(),t=e+l();if(3==t.length&&pe[t])return xe=le.DELIMITER,ye=t,c(),c(),void c();if(2==e.length&&pe[e])return xe=le.DELIMITER,ye=e,c(),void c();if(pe[de])return xe=le.DELIMITER,ye=de,void c();if(!d(de)){if(v()){for(;v()||y(de);)ye+=de,c();return void(xe=me[ye]?le.DELIMITER:le.SYMBOL)}for(xe=le.UNKNOWN;\"\"!=de;)ye+=de,c();throw X('Syntax error in part \"'+ye+'\"')}if(xe=le.NUMBER,\".\"==de)ye+=de,c(),y(de)||(xe=le.UNKNOWN);else{for(;y(de);)ye+=de,c();\".\"==de&&(ye+=de,c())}for(;y(de);)ye+=de,c();if(e=f(),(\"E\"==de||\"e\"==de)&&(y(e)||\"-\"==e||\"+\"==e))for(ye+=de,c(),(\"+\"==de||\"-\"==de)&&(ye+=de,c()),y(de)||(xe=le.UNKNOWN);y(de);)ye+=de,c()}function m(){do p();while(\"\\n\"==ye)}function h(){we++}function g(){we--}function v(){var e=ge.charAt(ve-1),t=ge.charAt(ve+1),r=function(e){return/^[a-zA-Z_\\u00C0-\\u02AF\\u0370-\\u03FF]$/.test(e)},n=function(e,t){return/^[\\uD835]$/.test(e)&&/^[\\uDC00-\\uDFFF]$/.test(t)&&/^[^\\uDC55\\uDC9D\\uDCA0\\uDCA1\\uDCA3\\uDCA4\\uDCA7\\uDCA8\\uDCAD\\uDCBA\\uDCBC\\uDCC4\\uDD06\\uDD0B\\uDD0C\\uDD15\\uDD1D\\uDD3A\\uDD3F\\uDD45\\uDD47-\\uDD49\\uDD51\\uDEA6\\uDEA7\\uDFCC\\uDFCD]$/.test(t)};return r(de)||n(de,t)||n(e,de)}function d(e){return e>=\"0\"&&\"9\">=e||\".\"==e}function y(e){return e>=\"0\"&&\"9\">=e}function x(){u(),p();var e=w();if(\"\"!=ye)throw xe==le.DELIMITER?J(\"Unexpected operator \"+ye):X('Unexpected part \"'+ye+'\"');return e}function w(){var e,t,r=[];if(\"\"==ye)return new re(\"undefined\",\"undefined\");for(\"\\n\"!=ye&&\";\"!=ye&&(e=b());\"\\n\"==ye||\";\"==ye;)0==r.length&&e&&(t=\";\"!=ye,r.push({node:e,visible:t})),p(),\"\\n\"!=ye&&\";\"!=ye&&\"\"!=ye&&(e=b(),t=\";\"!=ye,r.push({node:e,visible:t}));return r.length>0?new ee(r):e}function b(){if(xe==le.SYMBOL&&\"function\"==ye)throw X('Deprecated keyword \"function\". Functions can now be assigned without it, like \"f(x) = x^2\".');return N()}function N(){var e,t,r,n,i=E();if(\"=\"==ye){if(i&&i.isSymbolNode)return e=i.name,m(),r=N(),new Q(e,r);if(i&&i.isIndexNode)return m(),r=N(),new fe(i,r);if(i&&i.isFunctionNode&&(n=!0,t=[],e=i.name,i.args.forEach(function(e,r){e&&e.isSymbolNode?t[r]=e.name:n=!1}),n))return m(),r=N(),new ne(e,t,r);throw X(\"Invalid left hand side of assignment operator =\")}return i}function E(){for(var e=M();\"?\"==ye;){var t=be;be=we,m();var r=e,n=M();if(\":\"!=ye)throw X(\"False part of conditional expression expected\");be=null,m();var i=E();e=new te(r,n,i),be=t}return e}function M(){for(var e=A();\"or\"==ye;)m(),e=new ae(\"or\",\"or\",[e,A()]);return e}function A(){for(var e=_();\"xor\"==ye;)m(),e=new ae(\"xor\",\"xor\",[e,_()]);return e}function _(){for(var e=O();\"and\"==ye;)m(),e=new ae(\"and\",\"and\",[e,O()]);return e}function O(){for(var e=T();\"|\"==ye;)m(),e=new ae(\"|\",\"bitOr\",[e,T()]);return e}function T(){for(var e=C();\"^|\"==ye;)m(),e=new ae(\"^|\",\"bitXor\",[e,C()]);return e}function C(){for(var e=S();\"&\"==ye;)m(),e=new ae(\"&\",\"bitAnd\",[e,S()]);return e}function S(){var e,t,r,n,i;for(e=z(),t={\"==\":\"equal\",\"!=\":\"unequal\",\"<\":\"smaller\",\">\":\"larger\",\"<=\":\"smallerEq\",\">=\":\"largerEq\"};ye in t;)r=ye,n=t[r],m(),i=[e,z()],e=new ae(r,n,i);return e}function z(){var e,t,r,n,i;for(e=B(),t={\"<<\":\"leftShift\",\">>\":\"rightArithShift\",\">>>\":\"rightLogShift\"};ye in t;)r=ye,n=t[r],m(),i=[e,B()],e=new ae(r,n,i);return e}function B(){var e,t,r,n,i;for(e=k(),t={to:\"to\",\"in\":\"to\"};ye in t;)r=ye,n=t[r],m(),i=[e,k()],e=new ae(r,n,i);return e}function k(){var e,t=[];if(e=\":\"==ye?new re(\"1\",\"number\"):I(),\":\"==ye&&be!==we){for(t.push(e);\":\"==ye&&t.length<3;)m(),\")\"==ye||\"]\"==ye||\",\"==ye||\"\"==ye?t.push(new ce(\"end\")):t.push(I());e=3==t.length?new ue(t[0],t[2],t[1]):new ue(t[0],t[1])}return e}function I(){var e,t,r,n,i;for(e=R(),t={\"+\":\"add\",\"-\":\"subtract\"};ye in t;)r=ye,n=t[r],m(),i=[e,R()],e=new ae(r,n,i);return e}function R(){var e,t,r,n,i;for(e=P(),t=e,r={\"*\":\"multiply\",\".*\":\"dotMultiply\",\"/\":\"divide\",\"./\":\"dotDivide\",\"%\":\"mod\",mod:\"mod\"};;)if(ye in r)n=ye,i=r[n],m(),t=P(),e=new ae(n,i,[e,t]);else{if(!(xe==le.SYMBOL||\"in\"==ye&&e&&e.isConstantNode||xe==le.NUMBER&&!t.isConstantNode||\"(\"==ye||\"[\"==ye))break;t=P(),e=new ae(\"*\",\"multiply\",[e,t])}return e}function P(){var e,t,r={\"-\":\"unaryMinus\",\"+\":\"unaryPlus\",\"~\":\"bitNot\",not:\"not\"}[ye];return r?(e=ye,m(),t=[P()],new ae(e,r,t)):U()}function U(){var e,t,r,n;return e=q(),(\"^\"==ye||\".^\"==ye)&&(t=ye,r=\"^\"==t?\"pow\":\"dotPow\",m(),n=[e,P()],e=new ae(t,r,n)),e}function q(){var e,t,r,n,i;for(e=L(),t={\"!\":\"factorial\",\"'\":\"transpose\"};ye in t;)r=ye,n=t[r],p(),i=[e],e=new ae(r,n,i);return e}function L(){var e,t=[];if(xe==le.SYMBOL&&he[ye]){if(e=he[ye],p(),\"(\"==ye){if(t=[],h(),p(),\")\"!=ye)for(t.push(E());\",\"==ye;)p(),t.push(E());if(\")\"!=ye)throw X(\"Parenthesis ) expected\");g(),p()}return new e(t)}return F()}function F(){var e,t;return xe==le.SYMBOL||xe==le.DELIMITER&&ye in me?(t=ye,p(),e=D(t),e=$(e)):j()}function D(e){var t;if(\"(\"==ye){if(t=[],h(),p(),\")\"!=ye)for(t.push(E());\",\"==ye;)p(),t.push(E());if(\")\"!=ye)throw X(\"Parenthesis ) expected\");return g(),p(),new se(e,t)}return new ce(e)}function $(e){for(var t;\"[\"==ye;){if(t=[],h(),p(),\"]\"!=ye)for(t.push(E());\",\"==ye;)p(),t.push(E());if(\"]\"!=ye)throw X(\"Parenthesis ] expected\");g(),p(),e=new ie(e,t)}return e}function j(){var e,t,r;if('\"'==ye){for(t=\"\",r=\"\";\"\"!=de&&('\"'!=de||\"\\\\\"==r);)t+=de,r=de,c();if(p(),'\"'!=ye)throw X('End of string \" expected');return p(),e=new re(t,\"string\"),e=$(e)}return G()}function G(){var e,t,r,n;if(\"[\"==ye){if(h(),p(),\"]\"!=ye){var i=H();if(\";\"==ye){for(r=1,t=[i];\";\"==ye;)p(),t[r]=H(),r++;if(\"]\"!=ye)throw X(\"End of matrix ] expected\");g(),p(),n=t[0].nodes.length;for(var a=1;r>a;a++)if(t[a].nodes.length!=n)throw J(\"Column dimensions mismatch (\"+t[a].nodes.length+\" != \"+n+\")\");e=new K(t)}else{if(\"]\"!=ye)throw X(\"End of matrix ] expected\");g(),p(),e=i}}else g(),p(),e=new K([]);return e}return Z()}function H(){for(var e=[N()],t=1;\",\"==ye;)p(),e[t]=N(),t++;return new K(e)}function Z(){var e;return xe==le.NUMBER?(e=ye,p(),new re(e,\"number\")):V()}function V(){var e;if(\"(\"==ye){if(h(),p(),e=N(),\")\"!=ye)throw X(\"Parenthesis ) expected\");return g(),p(),new oe(e)}return Y()}function Y(){throw X(\"\"==ye?\"Unexpected end of expression\":\"Value expected\")}function W(){return ve-ye.length+1}function X(e){var t=W(),r=new SyntaxError(e+\" (char \"+t+\")\");return r[\"char\"]=t,r}function J(e){var t=W(),r=new Error(e+\" (char \"+t+\")\");return r[\"char\"]=t,r}var K=n(r(254)),Q=n(r(257)),ee=n(r(259)),te=n(r(260)),re=n(r(261)),ne=n(r(262)),ie=n(r(263)),ae=n(r(266)),oe=n(r(268)),se=n(r(267)),ue=n(r(264)),ce=n(r(265)),fe=n(r(269)),le={NULL:0,DELIMITER:1,NUMBER:2,SYMBOL:3,UNKNOWN:4},pe={\",\":!0,\"(\":!0,\")\":!0,\"[\":!0,\"]\":!0,'\"':!0,\";\":!0,\"+\":!0,\"-\":!0,\"*\":!0,\".*\":!0,\"/\":!0,\"./\":!0,\"%\":!0,\"^\":!0,\".^\":!0,\"~\":!0,\"!\":!0,\"&\":!0,\"|\":!0,\"^|\":!0,\"'\":!0,\"=\":!0,\":\":!0,\"?\":!0,\"==\":!0,\"!=\":!0,\"<\":!0,\">\":!0,\"<=\":!0,\">=\":!0,\"<<\":!0,\">>\":!0,\">>>\":!0},me={mod:!0,to:!0,\"in\":!0,and:!0,xor:!0,or:!0,not:!0},he={},ge=\"\",ve=0,de=\"\",ye=\"\",xe=le.NULL,we=0,be=null;return s}var i=r(11),a=r(19);t.name=\"parse\",t.path=\"expression\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){function o(e){if(!(this instanceof o))throw new SyntaxError(\"Constructor must be called with the new operator\");if(this.nodes=e||[],!Array.isArray(this.nodes)||!this.nodes.every(function(e){return e&&e.isNode}))throw new TypeError(\"Array containing Nodes expected\")}var s=n(r(255));return o.prototype=new s,o.prototype.type=\"ArrayNode\",o.prototype.isArrayNode=!0,o.prototype._compile=function(e){var t=\"array\"!==e.math.config().matrix,r=this.nodes.map(function(t){return t._compile(e)});return(t?\"math.matrix([\":\"[\")+r.join(\",\")+(t?\"])\":\"]\")},o.prototype.forEach=function(e){for(var t=0;t<this.nodes.length;t++){var r=this.nodes[t];e(r,\"nodes[\"+t+\"]\",this)}},o.prototype.map=function(e){for(var t=[],r=0;r<this.nodes.length;r++)t[r]=this._ifNode(e(this.nodes[r],\"nodes[\"+r+\"]\",this));return new o(t)},o.prototype.clone=function(){return new o(this.nodes.slice(0))},o.prototype._toString=function(e){return i.format(this.nodes)},o.prototype._toTex=function(e){var t=\"\\\\begin{bmatrix}\";return this.nodes.forEach(function(r){t+=r.nodes?r.nodes.map(function(t){return t.toTex(e)}).join(\"&\"):r.toTex(e),t+=\"\\\\\\\\\"}),t+=\"\\\\end{bmatrix}\"},o}var i=r(23);t.name=\"ArrayNode\",t.path=\"expression.node\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n,a){function o(){if(!(this instanceof o))throw new SyntaxError(\"Constructor must be called with the new operator\")}function s(e){for(var t in e)if(e.hasOwnProperty(t)&&t in i)throw new Error('Scope contains an illegal symbol, \"'+t+'\" is a reserved keyword')}return o.prototype.eval=function(e){return this.compile().eval(e)},o.prototype.type=\"Node\",o.prototype.isNode=!0,o.prototype.compile=function(){if(arguments.length>0)throw new Error(\"Calling compile(math) is deprecated. Call the function as compile() instead.\");var e={math:a.expression.transform,args:{},_validateScope:s},t=this._compile(e),r=Object.keys(e).map(function(e){return\" var \"+e+' = defs[\"'+e+'\"];'}),n=r.join(\" \")+'return { \"eval\": function (scope) { if (scope) _validateScope(scope); scope = scope || {}; return '+t+\"; }};\",i=new Function(\"defs\",n);return i(e)},o.prototype._compile=function(e){throw new Error(\"Cannot compile a Node interface\")},o.prototype.forEach=function(e){throw new Error(\"Cannot run forEach on a Node interface\")},o.prototype.map=function(e){throw new Error(\"Cannot run map on a Node interface\")},o.prototype._ifNode=function(e){if(!e||!e.isNode)throw new TypeError(\"Callback function must return a Node\");return e},o.prototype.traverse=function(e){function t(e,r){e.forEach(function(e,n,i){r(e,n,i),t(e,r)})}e(this,null,null),t(this,e)},o.prototype.transform=function(e){function t(e,r){return e.map(function(e,n,i){var a=r(e,n,i);return t(a,r)})}var r=e(this,null,null);return t(r,e)},o.prototype.filter=function(e){var t=[];return this.traverse(function(r,n,i){e(r,n,i)&&t.push(r)}),t},o.prototype.find=function(){throw new Error(\"Function Node.find is deprecated. Use Node.filter instead.\")},o.prototype.match=function(){throw new Error(\"Function Node.match is deprecated. See functions Node.filter, Node.transform, Node.traverse.\")},o.prototype.clone=function(){throw new Error(\"Cannot clone a Node interface\")},o.prototype.toString=function(e){var t;if(e&&\"object\"==typeof e)switch(typeof e.handler){case\"object\":case\"undefined\":break;case\"function\":t=e.handler(this,e);break;default:throw new TypeError(\"Object or function expected as callback\")}return\"undefined\"!=typeof t?t:this._toString(e)},o.prototype._toString=function(){\nthrow new Error(\"_toString not implemented for \"+this.type)},o.prototype.toTex=function(e){var t;if(e&&\"object\"==typeof e)switch(typeof e.handler){case\"object\":case\"undefined\":break;case\"function\":t=e.handler(this,e);break;default:throw new TypeError(\"Object or function expected as callback\")}return\"undefined\"!=typeof t?t:this._toTex(e)},o.prototype._toTex=function(e){throw new Error(\"_toTex not implemented for \"+this.type)},o.prototype.getIdentifier=function(){return this.type},o.prototype.getContent=function(){return this},o}var i=r(256);r(3).extend;t.name=\"Node\",t.path=\"expression.node\",t.math=!0,t.factory=n},function(e,t){\"use strict\";e.exports={end:!0}},function(e,t,r){\"use strict\";function n(e,t,n,a){function o(e,t){if(!(this instanceof o))throw new SyntaxError(\"Constructor must be called with the new operator\");if(\"string\"!=typeof e)throw new TypeError('String expected for parameter \"name\"');if(!t||!t.isNode)throw new TypeError('Node expected for parameter \"expr\"');if(e in c)throw new Error('Illegal symbol name, \"'+e+'\" is a reserved keyword');this.name=e,this.expr=t}function s(e,t){var r=f.getPrecedence(e,t),n=f.getPrecedence(e.expr,t);return\"all\"===t||null!==n&&r>=n}var u=n(r(255)),c=(n(r(254)),r(256)),f=r(258);return o.prototype=new u,o.prototype.type=\"AssignmentNode\",o.prototype.isAssignmentNode=!0,o.prototype._compile=function(e){return'scope[\"'+this.name+'\"] = '+this.expr._compile(e)},o.prototype.forEach=function(e){e(this.expr,\"expr\",this)},o.prototype.map=function(e){return new o(this.name,this._ifNode(e(this.expr,\"expr\",this)))},o.prototype.clone=function(){return new o(this.name,this.expr)},o.prototype._toString=function(e){var t=e&&e.parenthesis?e.parenthesis:\"keep\",r=this.expr.toString(e);return s(this,t)&&(r=\"(\"+r+\")\"),this.name+\" = \"+r},o.prototype._toTex=function(e){var t=e&&e.parenthesis?e.parenthesis:\"keep\",r=this.expr.toTex(e);return s(this,t)&&(r=\"\\\\left(\"+r+\"\\\\right)\"),i.toSymbol(this.name)+\":=\"+r},o}var i=r(30);t.name=\"AssignmentNode\",t.path=\"expression.node\",t.factory=n},function(e,t){\"use strict\";function r(e,t){var r=e;\"keep\"!==t&&(r=e.getContent());for(var n=r.getIdentifier(),i=0;i<a.length;i++)if(n in a[i])return i;return null}function n(e,t){var n=e;\"keep\"!==t&&(n=e.getContent());var i=n.getIdentifier(),o=r(n,t);if(null===o)return null;var s=a[o][i];if(s.hasOwnProperty(\"associativity\")){if(\"left\"===s.associativity)return\"left\";if(\"right\"===s.associativity)return\"right\";throw Error(\"'\"+i+\"' has the invalid associativity '\"+s.associativity+\"'.\")}return null}function i(e,t,n){var i=e,o=t;if(\"keep\"!==n)var i=e.getContent(),o=t.getContent();var s=i.getIdentifier(),u=o.getIdentifier(),c=r(i,n);if(null===c)return null;var f=a[c][s];if(f.hasOwnProperty(\"associativeWith\")&&f.associativeWith instanceof Array){for(var l=0;l<f.associativeWith.length;l++)if(f.associativeWith[l]===u)return!0;return!1}return null}var a=[{AssignmentNode:{},FunctionAssignmentNode:{}},{ConditionalNode:{latexLeftParens:!1,latexRightParens:!1,latexParens:!1}},{\"OperatorNode:or\":{associativity:\"left\",associativeWith:[]}},{\"OperatorNode:xor\":{associativity:\"left\",associativeWith:[]}},{\"OperatorNode:and\":{associativity:\"left\",associativeWith:[]}},{\"OperatorNode:bitOr\":{associativity:\"left\",associativeWith:[]}},{\"OperatorNode:bitXor\":{associativity:\"left\",associativeWith:[]}},{\"OperatorNode:bitAnd\":{associativity:\"left\",associativeWith:[]}},{\"OperatorNode:equal\":{associativity:\"left\",associativeWith:[]},\"OperatorNode:unequal\":{associativity:\"left\",associativeWith:[]},\"OperatorNode:smaller\":{associativity:\"left\",associativeWith:[]},\"OperatorNode:larger\":{associativity:\"left\",associativeWith:[]},\"OperatorNode:smallerEq\":{associativity:\"left\",associativeWith:[]},\"OperatorNode:largerEq\":{associativity:\"left\",associativeWith:[]}},{\"OperatorNode:leftShift\":{associativity:\"left\",associativeWith:[]},\"OperatorNode:rightArithShift\":{associativity:\"left\",associativeWith:[]},\"OperatorNode:rightLogShift\":{associativity:\"left\",associativeWith:[]}},{\"OperatorNode:to\":{associativity:\"left\",associativeWith:[]}},{RangeNode:{}},{\"OperatorNode:add\":{associativity:\"left\",associativeWith:[\"OperatorNode:add\",\"OperatorNode:subtract\"]},\"OperatorNode:subtract\":{associativity:\"left\",associativeWith:[]}},{\"OperatorNode:multiply\":{associativity:\"left\",associativeWith:[\"OperatorNode:multiply\",\"OperatorNode:divide\",\"Operator:dotMultiply\",\"Operator:dotDivide\"]},\"OperatorNode:divide\":{associativity:\"left\",associativeWith:[],latexLeftParens:!1,latexRightParens:!1,latexParens:!1},\"OperatorNode:dotMultiply\":{associativity:\"left\",associativeWith:[\"OperatorNode:multiply\",\"OperatorNode:divide\",\"OperatorNode:dotMultiply\",\"OperatorNode:doDivide\"]},\"OperatorNode:dotDivide\":{associativity:\"left\",associativeWith:[]},\"OperatorNode:mod\":{associativity:\"left\",associativeWith:[]}},{\"OperatorNode:unaryPlus\":{associativity:\"right\"},\"OperatorNode:unaryMinus\":{associativity:\"right\"},\"OperatorNode:bitNot\":{associativity:\"right\"},\"OperatorNode:not\":{associativity:\"right\"}},{\"OperatorNode:pow\":{associativity:\"right\",associativeWith:[],latexRightParens:!1},\"OperatorNode:dotPow\":{associativity:\"right\",associativeWith:[]}},{\"OperatorNode:factorial\":{associativity:\"left\"}},{\"OperatorNode:transpose\":{associativity:\"left\"}}];e.exports.properties=a,e.exports.getPrecedence=r,e.exports.getAssociativity=n,e.exports.isAssociativeWith=i},function(e,t,r){\"use strict\";function n(e,t,n,i){function a(e){if(!(this instanceof a))throw new SyntaxError(\"Constructor must be called with the new operator\");if(!Array.isArray(e))throw new Error(\"Array expected\");this.blocks=e.map(function(e){var t=e&&e.node,r=e&&void 0!==e.visible?e.visible:!0;if(!t||!t.isNode)throw new TypeError('Property \"node\" must be a Node');if(\"boolean\"!=typeof r)throw new TypeError('Property \"visible\" must be a boolean');return{node:t,visible:r}})}var o=n(r(255)),s=n(r(71));return a.prototype=new o,a.prototype.type=\"BlockNode\",a.prototype.isBlockNode=!0,a.prototype._compile=function(e){e.ResultSet=s;var t=this.blocks.map(function(t){var r=t.node._compile(e);return t.visible?\"results.push(\"+r+\");\":r+\";\"});return\"(function () {var results = [];\"+t.join(\"\")+\"return new ResultSet(results);})()\"},a.prototype.forEach=function(e){for(var t=0;t<this.blocks.length;t++)e(this.blocks[t].node,\"blocks[\"+t+\"].node\",this)},a.prototype.map=function(e){for(var t=[],r=0;r<this.blocks.length;r++){var n=this.blocks[r],i=this._ifNode(e(n.node,\"blocks[\"+r+\"].node\",this));t[r]={node:i,visible:n.visible}}return new a(t)},a.prototype.clone=function(){var e=this.blocks.map(function(e){return{node:e.node,visible:e.visible}});return new a(e)},a.prototype._toString=function(e){return this.blocks.map(function(t){return t.node.toString(e)+(t.visible?\"\":\";\")}).join(\"\\n\")},a.prototype._toTex=function(e){return this.blocks.map(function(t){return t.node.toTex(e)+(t.visible?\"\":\";\")}).join(\"\\\\;\\\\;\\n\")},a}t.name=\"BlockNode\",t.path=\"expression.node\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){function o(e,t,r){if(!(this instanceof o))throw new SyntaxError(\"Constructor must be called with the new operator\");if(!e||!e.isNode)throw new TypeError(\"Parameter condition must be a Node\");if(!t||!t.isNode)throw new TypeError(\"Parameter trueExpr must be a Node\");if(!r||!r.isNode)throw new TypeError(\"Parameter falseExpr must be a Node\");this.condition=e,this.trueExpr=t,this.falseExpr=r}var s=n(r(255));return o.prototype=new s,o.prototype.type=\"ConditionalNode\",o.prototype.isConditionalNode=!0,o.prototype._compile=function(e){return e.testCondition=function(t){if(\"number\"==typeof t||\"boolean\"==typeof t||\"string\"==typeof t)return t?!0:!1;if(t){if(t.isBigNumber===!0)return t.isZero()?!1:!0;if(t.isComplex===!0)return t.re||t.im?!0:!1;if(t.isUnit===!0)return t.value?!0:!1}if(null===t||void 0===t)return!1;throw new TypeError('Unsupported type of condition \"'+e.math[\"typeof\"](t)+'\"')},\"testCondition(\"+this.condition._compile(e)+\") ? ( \"+this.trueExpr._compile(e)+\") : ( \"+this.falseExpr._compile(e)+\")\"},o.prototype.forEach=function(e){e(this.condition,\"condition\",this),e(this.trueExpr,\"trueExpr\",this),e(this.falseExpr,\"falseExpr\",this)},o.prototype.map=function(e){return new o(this._ifNode(e(this.condition,\"condition\",this)),this._ifNode(e(this.trueExpr,\"trueExpr\",this)),this._ifNode(e(this.falseExpr,\"falseExpr\",this)))},o.prototype.clone=function(){return new o(this.condition,this.trueExpr,this.falseExpr)},o.prototype._toString=function(e){var t=e&&e.parenthesis?e.parenthesis:\"keep\",r=i.getPrecedence(this,t),n=this.condition.toString(e),a=i.getPrecedence(this.condition,t);(\"all\"===t||\"OperatorNode\"===this.condition.type||null!==a&&r>=a)&&(n=\"(\"+n+\")\");var o=this.trueExpr.toString(e),s=i.getPrecedence(this.trueExpr,t);(\"all\"===t||\"OperatorNode\"===this.trueExpr.type||null!==s&&r>=s)&&(o=\"(\"+o+\")\");var u=this.falseExpr.toString(e),c=i.getPrecedence(this.falseExpr,t);return(\"all\"===t||\"OperatorNode\"===this.falseExpr.type||null!==c&&r>=c)&&(u=\"(\"+u+\")\"),n+\" ? \"+o+\" : \"+u},o.prototype._toTex=function(e){return\"\\\\left\\\\{\\\\begin{array}{l l}{\"+this.trueExpr.toTex(e)+\"}, &\\\\quad{\\\\text{if}\\\\;\"+this.condition.toTex(e)+\"}\\\\\\\\{\"+this.falseExpr.toTex(e)+\"}, &\\\\quad{\\\\text{otherwise}}\\\\end{array}\\\\right.\"},o}var i=(r(30),r(258));t.name=\"ConditionalNode\",t.path=\"expression.node\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){function o(e,t){if(!(this instanceof o))throw new SyntaxError(\"Constructor must be called with the new operator\");if(t){if(\"string\"!=typeof t)throw new TypeError('String expected for parameter \"valueType\"');if(\"string\"!=typeof e)throw new TypeError('String expected for parameter \"value\"');this.value=e,this.valueType=t}else this.value=e+\"\",this.valueType=i(e);if(!u[this.valueType])throw new TypeError('Unsupported type of value \"'+this.valueType+'\"')}var s=n(r(255)),u={number:!0,string:!0,\"boolean\":!0,undefined:!0,\"null\":!0};return o.prototype=new s,o.prototype.type=\"ConstantNode\",o.prototype.isConstantNode=!0,o.prototype._compile=function(e){switch(this.valueType){case\"number\":var t=e.math.config().number;return\"bignumber\"===t?'math.bignumber(\"'+this.value+'\")':\"fraction\"===t?'math.fraction(\"'+this.value+'\")':this.value.replace(/^(0*)[0-9]/,function(e,t){return e.substring(t.length)});case\"string\":return'\"'+this.value+'\"';case\"boolean\":return this.value;case\"undefined\":return this.value;case\"null\":return this.value;default:throw new TypeError('Unsupported type of constant \"'+this.valueType+'\"')}},o.prototype.forEach=function(e){},o.prototype.map=function(e){return this.clone()},o.prototype.clone=function(){return new o(this.value,this.valueType)},o.prototype._toString=function(e){switch(this.valueType){case\"string\":return'\"'+this.value+'\"';default:return this.value}},o.prototype._toTex=function(e){var t,r=this.value;switch(this.valueType){case\"string\":return'\\\\mathtt{\"'+r+'\"}';case\"number\":return t=r.toLowerCase().indexOf(\"e\"),-1!==t?r.substring(0,t)+\"\\\\cdot10^{\"+r.substring(t+1)+\"}\":r;default:return r}},o}var i=r(41).type;t.name=\"ConstantNode\",t.path=\"expression.node\",t.factory=n},function(e,t,r){\"use strict\";function n(e){return\"string\"==typeof e}function i(e,t,i,u){function c(e,t,r){if(!(this instanceof c))throw new SyntaxError(\"Constructor must be called with the new operator\");if(\"string\"!=typeof e)throw new TypeError('String expected for parameter \"name\"');if(!Array.isArray(t)||!t.every(n))throw new TypeError('Array containing strings expected for parameter \"params\"');if(!r||!r.isNode)throw new TypeError('Node expected for parameter \"expr\"');if(e in a)throw new Error('Illegal function name, \"'+e+'\" is a reserved keyword');this.name=e,this.params=t,this.expr=r}function f(e,t){var r=s.getPrecedence(e,t),n=s.getPrecedence(e.expr,t);return\"all\"===t||null!==n&&r>=n}var l=i(r(255));return c.prototype=new l,c.prototype.type=\"FunctionAssignmentNode\",c.prototype.isFunctionAssignmentNode=!0,c.prototype._compile=function(e){return this.params.forEach(function(t){e.args[t]=!0}),'scope[\"'+this.name+'\"] = (function () { var fn = function '+this.name+\"(\"+this.params.join(\",\")+\") { if (arguments.length != \"+this.params.length+') { throw new SyntaxError(\"Wrong number of arguments in function '+this.name+' (\" + arguments.length + \" provided, '+this.params.length+' expected)\"); } return '+this.expr._compile(e)+' }; fn.syntax = \"'+this.name+\"(\"+this.params.join(\", \")+')\"; return fn; })()'},c.prototype.forEach=function(e){e(this.expr,\"expr\",this)},c.prototype.map=function(e){var t=this._ifNode(e(this.expr,\"expr\",this));return new c(this.name,this.params.slice(0),t)},c.prototype.clone=function(){return new c(this.name,this.params.slice(0),this.expr)},c.prototype._toString=function(e){var t=e&&e.parenthesis?e.parenthesis:\"keep\",r=this.expr.toString(e);return f(this,t)&&(r=\"(\"+r+\")\"),\"function \"+this.name+\"(\"+this.params.join(\", \")+\") = \"+r},c.prototype._toTex=function(e){var t=e&&e.parenthesis?e.parenthesis:\"keep\",r=this.expr.toTex(e);return f(this,t)&&(r=\"\\\\left(\"+r+\"\\\\right)\"),\"\\\\mathrm{\"+this.name+\"}\\\\left(\"+this.params.map(o.toSymbol).join(\",\")+\"\\\\right):=\"+r},c}var a=r(256),o=r(30),s=r(258);t.name=\"FunctionAssignmentNode\",t.path=\"expression.node\",t.factory=i},function(e,t,r){\"use strict\";function n(e,t,n,i){function a(e,t){if(!(this instanceof a))throw new SyntaxError(\"Constructor must be called with the new operator\");if(!e||!e.isNode)throw new TypeError('Node expected for parameter \"object\"');if(!c(t)||!t.every(function(e){return e&&e.isNode}))throw new TypeError('Array containing Nodes expected for parameter \"ranges\"');this.object=e,this.ranges=t}function o(e){switch(e.object.type){case\"ArrayNode\":case\"ConstantNode\":case\"SymbolNode\":case\"ParenthesisNode\":return!1;default:return!0}}var s=n(r(255)),u=(n(r(264)),n(r(265)),n(r(66))),c=Array.isArray;return a.prototype=new s,a.prototype.type=\"IndexNode\",a.prototype.isIndexNode=!0,a.prototype._compile=function(e){return this.compileSubset(e)},a.prototype.compileSubset=function(e,t){function r(e){return e&&e.isSymbolNode&&\"end\"==e.name}var n=!1,i=this.ranges.map(function(e){var t=e.filter(r).length>0;return n=t?t:n,t});e.range=function(e,t,r){return new u(e&&e.isBigNumber===!0?e.toNumber():e,t&&t.isBigNumber===!0?t.toNumber():t,r&&r.isBigNumber===!0?r.toNumber():r)};var a=this.ranges.map(function(t,r){var n=i[r];return t&&t.isRangeNode?n?(e.args.end=!0,\"(function () { var end = size[\"+r+\"]; return range( \"+t.start._compile(e)+\", \"+t.end._compile(e)+\", \"+(t.step?t.step._compile(e):\"1\")+\" );})()\"):\"range(\"+t.start._compile(e)+\", \"+t.end._compile(e)+\", \"+(t.step?t.step._compile(e):\"1\")+\")\":n?(e.args.end=!0,\"(function () { var end = size[\"+r+\"]; return \"+t._compile(e)+\";})()\"):t._compile(e)});return n?\"(function () { var obj = \"+this.object._compile(e)+\"; var size = math.size(obj).valueOf(); return math.subset( obj, math.index(\"+a.join(\", \")+\") \"+(t?\", \"+t:\"\")+\" );})()\":\"math.subset(\"+this.object._compile(e)+\",math.index(\"+a.join(\", \")+\")\"+(t?\", \"+t:\"\")+\")\"},a.prototype.forEach=function(e){e(this.object,\"object\",this);for(var t=0;t<this.ranges.length;t++)e(this.ranges[t],\"ranges[\"+t+\"]\",this)},a.prototype.map=function(e){for(var t=this._ifNode(e(this.object,\"object\",this)),r=[],n=0;n<this.ranges.length;n++)r[n]=this._ifNode(e(this.ranges[n],\"ranges[\"+n+\"]\",this));return new a(t,r)},a.prototype.objectName=function(){return this.object.name},a.prototype.clone=function(){return new a(this.object,this.ranges.slice(0))},a.prototype._toString=function(e){var t=this.object.toString(e);return o(this)&&(t=\"(\"+t+\"(\"),t+\"[\"+this.ranges.join(\", \")+\"]\"},a.prototype._toTex=function(e){var t=this.object.toTex(e);o(this)&&(t=\"\\\\left(\"+t+\"\\\\right)\");var r=this.ranges.map(function(t){return t.toTex(e)});return t+\"_{\"+r.join(\",\")+\"}\"},a}t.name=\"IndexNode\",t.path=\"expression.node\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){function o(e,t,r){if(!(this instanceof o))throw new SyntaxError(\"Constructor must be called with the new operator\");if(!e||!e.isNode)throw new TypeError(\"Node expected\");if(!t||!t.isNode)throw new TypeError(\"Node expected\");if(r&&(!r||!r.isNode))throw new TypeError(\"Node expected\");if(arguments.length>3)throw new Error(\"Too many arguments\");this.start=e,this.end=t,this.step=r||null}function s(e,t){var r=i.getPrecedence(e,t),n={},a=i.getPrecedence(e.start,t);if(n.start=null!==a&&r>=a||\"all\"===t,e.step){var o=i.getPrecedence(e.step,t);n.step=null!==o&&r>=o||\"all\"===t}var s=i.getPrecedence(e.end,t);return n.end=null!==s&&r>=s||\"all\"===t,n}var u=n(r(255));return o.prototype=new u,o.prototype.type=\"RangeNode\",o.prototype.isRangeNode=!0,o.prototype._compile=function(e){return\"math.range(\"+this.start._compile(e)+\", \"+this.end._compile(e)+(this.step?\", \"+this.step._compile(e):\"\")+\")\"},o.prototype.forEach=function(e){e(this.start,\"start\",this),e(this.end,\"end\",this),this.step&&e(this.step,\"step\",this)},o.prototype.map=function(e){return new o(this._ifNode(e(this.start,\"start\",this)),this._ifNode(e(this.end,\"end\",this)),this.step&&this._ifNode(e(this.step,\"step\",this)))},o.prototype.clone=function(){return new o(this.start,this.end,this.step&&this.step)},o.prototype._toString=function(e){var t,r=e&&e.parenthesis?e.parenthesis:\"keep\",n=s(this,r),i=this.start.toString(e);if(n.start&&(i=\"(\"+i+\")\"),t=i,this.step){var a=this.step.toString(e);n.step&&(a=\"(\"+a+\")\"),t+=\":\"+a}var o=this.end.toString(e);return n.end&&(o=\"(\"+o+\")\"),t+=\":\"+o},o.prototype._toTex=function(e){var t=e&&e.parenthesis?e.parenthesis:\"keep\",r=s(this,t),n=this.start.toTex(e);if(r.start&&(n=\"\\\\left(\"+n+\"\\\\right)\"),this.step){var i=this.step.toTex(e);r.step&&(i=\"\\\\left(\"+i+\"\\\\right)\"),n+=\":\"+i}var a=this.end.toTex(e);return r.end&&(a=\"\\\\left(\"+a+\"\\\\right)\"),n+=\":\"+a},o}var i=r(258);t.name=\"RangeNode\",t.path=\"expression.node\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a,o){function s(e){if(!(this instanceof s))throw new SyntaxError(\"Constructor must be called with the new operator\");if(\"string\"!=typeof e)throw new TypeError('String expected for parameter \"name\"');this.name=e}function u(e){throw new Error(\"Undefined symbol \"+e)}var c=n(r(255)),f=n(r(28));return s.prototype=new c,s.prototype.type=\"SymbolNode\",s.prototype.isSymbolNode=!0,s.prototype._compile=function(e){return e.undef=u,e.Unit=f,this.name in e.args?this.name:this.name in e.math?'(\"'+this.name+'\" in scope ? scope[\"'+this.name+'\"] : math[\"'+this.name+'\"])':'(\"'+this.name+'\" in scope ? scope[\"'+this.name+'\"] : '+(f.isValuelessUnit(this.name)?'new Unit(null, \"'+this.name+'\")':'undef(\"'+this.name+'\")')+\")\"},s.prototype.forEach=function(e){},s.prototype.map=function(e){return this.clone()},s.prototype.clone=function(){return new s(this.name)},s.prototype._toString=function(e){return this.name},s.prototype._toTex=function(e){var t=!1;\"undefined\"==typeof o[this.name]&&f.isValuelessUnit(this.name)&&(t=!0);var r=i.toSymbol(this.name,t);return\"\\\\\"===r[0]?r:\" \"+r},s}var i=r(30);t.name=\"SymbolNode\",t.path=\"expression.node\",t.math=!0,t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,o,s){function u(e,t,r){if(!(this instanceof u))throw new SyntaxError(\"Constructor must be called with the new operator\");if(\"string\"!=typeof e)throw new TypeError('string expected for parameter \"op\"');if(\"string\"!=typeof t)throw new TypeError('string expected for parameter \"fn\"');if(!Array.isArray(r)||!r.every(function(e){return e&&e.isNode}))throw new TypeError('Array containing Nodes expected for parameter \"args\"');this.op=e,this.fn=t,this.args=r||[]}function c(e,t,r,n){var i=a.getPrecedence(e,t),o=a.getAssociativity(e,t);if(\"all\"===t||r.length>2){var s=[];return r.forEach(function(e){switch(e.getContent().type){case\"ArrayNode\":case\"ConstantNode\":case\"SymbolNode\":case\"ParenthesisNode\":s.push(!1);break;default:s.push(!0)}}),s}switch(r.length){case 0:return[];case 1:var u=a.getPrecedence(r[0],t);if(n&&null!==u){var c,f;if(\"keep\"===t?(c=r[0].getIdentifier(),f=e.getIdentifier()):(c=r[0].getContent().getIdentifier(),f=e.getContent().getIdentifier()),a.properties[i][f].latexLeftParens===!1)return[!1];if(a.properties[u][c].latexParens===!1)return[!1]}return null===u?[!1]:i>=u?[!0]:[!1];case 2:var l,p=a.getPrecedence(r[0],t),m=a.isAssociativeWith(e,r[0],t);l=null===p?!1:p!==i||\"right\"!==o||m?i>p?!0:!1:!0;var h,g=a.getPrecedence(r[1],t),v=a.isAssociativeWith(e,r[1],t);if(h=null===g?!1:g!==i||\"left\"!==o||v?i>g?!0:!1:!0,n){var f,d,y;\"keep\"===t?(f=e.getIdentifier(),d=e.args[0].getIdentifier(),y=e.args[1].getIdentifier()):(f=e.getContent().getIdentifier(),d=e.args[0].getContent().getIdentifier(),y=e.args[1].getContent().getIdentifier()),null!==p&&(a.properties[i][f].latexLeftParens===!1&&(l=!1),a.properties[p][d].latexParens===!1&&(l=!1)),null!==g&&(a.properties[i][f].latexRightParens===!1&&(h=!1),a.properties[g][y].latexParens===!1&&(h=!1))}return[l,h]}}var f=n(r(255));n(r(261)),n(r(265)),n(r(267));return u.prototype=new f,u.prototype.type=\"OperatorNode\",u.prototype.isOperatorNode=!0,u.prototype._compile=function(e){if(!(this.fn in e.math))throw new Error(\"Function \"+this.fn+' missing in provided namespace \"math\"');var t=this.args.map(function(t){return t._compile(e)});return\"math.\"+this.fn+\"(\"+t.join(\", \")+\")\"},u.prototype.forEach=function(e){for(var t=0;t<this.args.length;t++)e(this.args[t],\"args[\"+t+\"]\",this)},u.prototype.map=function(e){for(var t=[],r=0;r<this.args.length;r++)t[r]=this._ifNode(e(this.args[r],\"args[\"+r+\"]\",this));return new u(this.op,this.fn,t)},u.prototype.clone=function(){return new u(this.op,this.fn,this.args.slice(0))},u.prototype._toString=function(e){var t=e&&e.parenthesis?e.parenthesis:\"keep\",r=this.args,n=c(this,t,r,!1);switch(r.length){case 1:var i=a.getAssociativity(this,t),o=r[0].toString(e);return n[0]&&(o=\"(\"+o+\")\"),\"right\"===i?this.op+o:\"left\"===i?o+this.op:o+this.op;case 2:var s=r[0].toString(e),u=r[1].toString(e);return n[0]&&(s=\"(\"+s+\")\"),n[1]&&(u=\"(\"+u+\")\"),s+\" \"+this.op+\" \"+u;default:return this.fn+\"(\"+this.args.join(\", \")+\")\"}},u.prototype._toTex=function(e){var t=e&&e.parenthesis?e.parenthesis:\"keep\",r=this.args,n=c(this,t,r,!0),o=i.operators[this.fn];switch(o=\"undefined\"==typeof o?this.op:o,r.length){case 1:var s=a.getAssociativity(this,t),u=r[0].toTex(e);return n[0]&&(u=\"\\\\left(\"+u+\"\\\\right)\"),\"right\"===s?o+u:\"left\"===s?u+o:u+o;case 2:var f=r[0],l=f.toTex(e);n[0]&&(l=\"\\\\left(\"+l+\"\\\\right)\");var p=r[1],m=p.toTex(e);n[1]&&(m=\"\\\\left(\"+m+\"\\\\right)\");var h;switch(h=\"keep\"===t?f.getIdentifier():f.getContent().getIdentifier(),this.getIdentifier()){case\"OperatorNode:divide\":return o+\"{\"+l+\"}{\"+m+\"}\";case\"OperatorNode:pow\":switch(l=\"{\"+l+\"}\",m=\"{\"+m+\"}\",h){case\"ConditionalNode\":case\"OperatorNode:divide\":l=\"\\\\left(\"+l+\"\\\\right)\"}}return l+o+m;default:return\"\\\\mathrm{\"+this.fn+\"}\\\\left(\"+r.map(function(t){return t.toTex(e)}).join(\",\")+\"\\\\right)\"}},u.prototype.getIdentifier=function(){return this.type+\":\"+this.fn},u}var i=r(30),a=r(258);t.name=\"OperatorNode\",t.path=\"expression.node\",t.math=!0,t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a,o){function s(e,t){if(!(this instanceof s))throw new SyntaxError(\"Constructor must be called with the new operator\");if(\"string\"!=typeof e)throw new TypeError('string expected for parameter \"name\"');if(!Array.isArray(t)||!t.every(function(e){return e&&e.isNode}))throw new TypeError('Array containing Nodes expected for parameter \"args\"');this.name=e,this.args=t||[]}function u(e,t,r){for(var n,i=\"\",a=new RegExp(\"\\\\$(?:\\\\{([a-z_][a-z_0-9]*)(?:\\\\[([0-9]+)\\\\])?\\\\}|\\\\$)\",\"ig\"),o=0;null!==(n=a.exec(e));)if(i+=e.substring(o,n.index),o=n.index,\"$$\"===n[0])i+=\"$\",o++;else{o+=n[0].length;var s=t[n[1]];if(!s)throw new ReferenceError(\"Template: Property \"+n[1]+\" does not exist.\");if(void 0===n[2])switch(typeof s){case\"string\":i+=s;break;case\"object\":if(s.isNode)i+=s.toTex(r);else{if(!Array.isArray(s))throw new TypeError(\"Template: \"+n[1]+\" has to be a Node, String or array of Nodes\");i+=s.map(function(e,t){if(e&&e.isNode)return e.toTex(r);throw new TypeError(\"Template: \"+n[1]+\"[\"+t+\"] is not a Node.\")}).join(\",\")}break;default:throw new TypeError(\"Template: \"+n[1]+\" has to be a Node, String or array of Nodes\")}else{if(!s[n[2]]||!s[n[2]].isNode)throw new TypeError(\"Template: \"+n[1]+\"[\"+n[2]+\"] is not a Node.\");i+=s[n[2]].toTex(r)}}return i+=e.slice(o)}var c=n(r(255)),f=n(r(265));s.prototype=new c,s.prototype.type=\"FunctionNode\",s.prototype.isFunctionNode=!0,s.prototype._compile=function(e){var t=e.math[this.name],r=\"function\"==typeof t&&1==t.rawArgs,n=this.args.map(function(t){return t._compile(e)});if(r){var i,a=0;do i=\"p\"+a,a++;while(i in e);return e[i]=this.args,'(\"'+this.name+'\" in scope ? scope[\"'+this.name+'\"]('+n.join(\", \")+') : math[\"'+this.name+'\"]('+i+\", math, scope))\"}var o=new f(this.name);return o._compile(e)+\"(\"+n.join(\", \")+\")\"},s.prototype.forEach=function(e){for(var t=0;t<this.args.length;t++)e(this.args[t],\"args[\"+t+\"]\",this)},s.prototype.map=function(e){for(var t=[],r=0;r<this.args.length;r++)t[r]=this._ifNode(e(this.args[r],\"args[\"+r+\"]\",this));return new s(this.name,t)},s.prototype.clone=function(){return new s(this.name,this.args.slice(0))};var l=s.prototype.toString;s.prototype.toString=function(e){var t;return e&&\"object\"==typeof e.handler&&e.handler.hasOwnProperty(this.name)&&(t=e.handler[this.name](this,e)),\"undefined\"!=typeof t?t:l.call(this,e)},s.prototype._toString=function(e){return this.name+\"(\"+this.args.join(\", \")+\")\"};var p=s.prototype.toTex;return s.prototype.toTex=function(e){var t;return e&&\"object\"==typeof e.handler&&e.handler.hasOwnProperty(this.name)&&(t=e.handler[this.name](this,e)),\"undefined\"!=typeof t?t:p.call(this,e)},s.prototype._toTex=function(e){var t,r=(e&&e.parenthesis?e.parenthesis:\"keep\",this.args.map(function(t){return t.toTex(e)}));!o[this.name]||\"function\"!=typeof o[this.name].toTex&&\"object\"!=typeof o[this.name].toTex&&\"string\"!=typeof o[this.name].toTex||(t=o[this.name].toTex);var n;switch(typeof t){case\"function\":n=t(this,e);break;case\"string\":n=u(t,this,e);break;case\"object\":switch(typeof t[r.length]){case\"function\":n=t[r.length](this,e);break;case\"string\":n=u(t[r.length],this,e)}}return\"undefined\"!=typeof n?n:u(i.defaultTemplate,this,e)},s.prototype.getIdentifier=function(){return this.type+\":\"+this.name},s}var i=r(30);t.name=\"FunctionNode\",t.path=\"expression.node\",t.math=!0,t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,i){function a(e){if(!(this instanceof a))throw new SyntaxError(\"Constructor must be called with the new operator\");if(!e||!e.isNode)throw new TypeError('Node expected for parameter \"content\"');this.content=e}var o=n(r(255));return a.prototype=new o,a.prototype.type=\"ParenthesisNode\",a.prototype.isParenthesisNode=!0,a.prototype._compile=function(e){return this.content._compile(e)},a.prototype.getContent=function(){return this.content.getContent()},a.prototype.forEach=function(e){e(this.content,\"content\",this)},a.prototype.map=function(e){var t=e(this.content,\"content\",this);return new a(t)},a.prototype.clone=function(){return new a(this.content)},a.prototype._toString=function(e){return!e||e&&\"keep\"===e.parenthesis?\"(\"+this.content.toString(e)+\")\":this.content.toString(e)},a.prototype._toTex=function(e){return!e||e&&\"keep\"===e.parenthesis?\"\\\\left(\"+this.content.toTex(e)+\"\\\\right)\":this.content.toTex(e)},a}t.name=\"ParenthesisNode\",t.path=\"expression.node\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,i){function a(e,t){if(!(this instanceof a))throw new SyntaxError(\"Constructor must be called with the new operator\");if(!e||!e.isIndexNode)throw new TypeError('Expected IndexNode for parameter \"index\"');if(!t||!t.isNode)throw new TypeError('Expected Node for parameter \"expr\"');this.index=e,this.expr=t}var o=n(r(255));n(r(263));return a.prototype=new o,a.prototype.type=\"UpdateNode\",a.prototype.isUpdateNode=!0,a.prototype._compile=function(e){var t=this.index.objectName()in e.args?this.name+\" = \":'scope[\"'+this.index.objectName()+'\"]',r=this.index.compileSubset(e,this.expr._compile(e));return t+\" = \"+r},a.prototype.forEach=function(e){e(this.index,\"index\",this),e(this.expr,\"expr\",this)},a.prototype.map=function(e){return new a(this._ifNode(e(this.index,\"index\",this)),this._ifNode(e(this.expr,\"expr\",this)))},a.prototype.clone=function(){return new a(this.index,this.expr)},a.prototype._toString=function(e){var t=this.expr.toString(e);return e&&\"all\"===e.parenthesis&&(t=\"(\"+t+\")\"),this.index.toString(e)+\" = \"+t},a.prototype._toTex=function(e){var t=this.expr.toTex(e);return e&&\"all\"===e.parenthesis&&(t=\"\\\\left(\"+t+\"\\\\right)\"),this.index.toTex(e)+\":=\"+t},a}t.name=\"UpdateNode\",t.path=\"expression.node\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){var o=n(r(253));return a(\"compile\",{string:function(e){var t={};return o(e).compile().eval(t)},\"string, Object\":function(e,t){return o(e).compile().eval(t)},\"Array | Matrix\":function(e){var t={};return i(e,function(e){return o(e).compile().eval(t)})},\"Array | Matrix, Object\":function(e,t){return i(e,function(e){return o(e).compile().eval(t)})}})}var i=r(19);t.name=\"eval\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,i,a){var o=n(r(81));return i(\"help\",{any:function(t){var r,n=t;if(\"string\"!=typeof t)for(r in a)if(a.hasOwnProperty(r)&&t===a[r]){n=r;break}var i=o[n];if(!i)throw new Error('No documentation found on \"'+n+'\"');return new e.Help(i)}})}t.math=!0,t.name=\"help\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,i){var a=n(r(253));return i(\"parse\",{\"string | Array | Matrix\":a,\"string | Array | Matrix, Object\":a})}t.name=\"parse\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,i,a){var o=n(r(274));return i(\"parser\",{\"\":function(){return new o(a)}})}t.name=\"parser\",t.factory=n,t.math=!0},function(e,t,r){\"use strict\";function n(e,t,n,i,a){function o(){if(!(this instanceof o))throw new SyntaxError(\"Constructor must be called with the new operator\");this.scope={}}var s=n(r(253));return o.prototype.type=\"Parser\",o.prototype.isParser=!0,o.prototype.parse=function(e){throw new Error(\"Parser.parse is deprecated. Use math.parse instead.\")},o.prototype.compile=function(e){throw new Error(\"Parser.compile is deprecated. Use math.compile instead.\")},o.prototype.eval=function(e){return s(e).compile().eval(this.scope)},o.prototype.get=function(e){return this.scope[e]},o.prototype.set=function(e,t){return this.scope[e]=t},o.prototype.remove=function(e){delete this.scope[e]},o.prototype.clear=function(){for(var e in this.scope)this.scope.hasOwnProperty(e)&&delete this.scope[e]},o}t.name=\"Parser\",t.path=\"expression\",t.factory=n,t.math=!0},function(e,t,r){e.exports=[r(254),r(257),r(259),r(260),r(261),r(263),r(262),r(267),r(255),r(266),r(268),r(264),r(265),r(269)]},function(e,t,r){e.exports=[r(277),r(280),r(282),r(284),r(285),r(287),r(292),r(305),r(307),r(309)]},function(e,t,r){\"use strict\";function n(e,t,n,a){var o=n(r(279));return a(\"concat\",{\"...any\":function(e){var t=e.length-1,r=e[t];\"number\"==typeof r?e[t]=r-1:r&&r.isBigNumber===!0&&(e[t]=r.minus(1));try{return o.apply(null,e)}catch(n){throw i(n)}}})}var i=r(278).transform;t.name=\"concat\",t.path=\"expression.transform\",t.factory=n},function(e,t,r){var n=r(43);t.transform=function(e){return e&&e.isIndexError?new n(e.index+1,e.min+1,e.max+1):e}},function(e,t,r){\"use strict\";function n(e,t,n,f){var l=n(r(51)),p=f(\"concat\",{\"...Array | Matrix | number | BigNumber\":function(e){var t,r,n=e.length,f=-1,p=!1,m=[];for(t=0;n>t;t++){var h=e[t];if(h&&h.isMatrix===!0&&(p=!0),\"number\"==typeof h||h&&h.isBigNumber===!0){if(t!==n-1)throw new Error(\"Dimension must be specified as last argument\");if(r=f,f=h.valueOf(),!o(f))throw new TypeError(\"Integer number expected for dimension\");if(0>f)throw new u(f);if(t>0&&f>r)throw new u(f,r+1)}else{var g=a(h).valueOf(),v=s.size(g);if(m[t]=g,r=f,f=v.length-1,t>0&&f!=r)throw new c(r+1,f+1)}}if(0==m.length)throw new SyntaxError(\"At least one matrix expected\");for(var d=m.shift();m.length;)d=i(d,m.shift(),f,0);return p?l(d):d},\"...string\":function(e){return e.join(\"\")}});return p.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",\np}function i(e,t,r,n){if(r>n){if(e.length!=t.length)throw new c(e.length,t.length);for(var a=[],o=0;o<e.length;o++)a[o]=i(e[o],t[o],r,n+1);return a}return e.concat(t)}var a=r(3).clone,o=r(6).isInteger,s=r(40),u=r(43),c=r(42);t.name=\"concat\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,i){function a(e,t,r){var n,i;if(e[0]&&(n=e[0].compile().eval(r)),e[1])if(e[1]&&e[1].isSymbolNode)i=e[1].compile().eval(r);else{var a=r||{},s=e[1].filter(function(e){return e&&e.isSymbolNode&&!(e.name in t)&&!(e.name in a)})[0],u=Object.create(a),c=e[1].compile();if(!s)throw new Error(\"No undefined variable found in filter equation\");var f=s.name;i=function(e){return u[f]=e,c.eval(u)}}return o(n,i)}var o=n(r(281));n(r(265));return a.rawArgs=!0,a}t.name=\"filter\",t.path=\"expression.transform\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,o){var s=n(r(51)),u=o(\"filter\",{\"Array, function\":i,\"Array, RegExp\":a,\"Matrix, function\":function(e,t){return s(i(e.toArray(),t))},\"Matrix, RegExp\":function(e,t){return s(a(e.toArray(),t))}});return u.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",u}function i(e,t){if(1!==o(e).length)throw new Error(\"Only one dimensional matrices supported\");return e.filter(function(e){return t(e)})}function a(e,t){if(1!==o(e).length)throw new Error(\"Only one dimensional matrices supported\");return e.filter(function(e){return t.test(e)})}var o=r(40).size;t.name=\"filter\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,i){n(r(283));return i(\"forEach\",{\"Array | Matrix, function\":function(e,t){var r=function(n,i){Array.isArray(n)?n.forEach(function(e,t){r(e,i.concat(t+1))}):t(n,i,e)};r(e.valueOf(),[])}})}t.name=\"forEach\",t.path=\"expression.transform\",t.factory=n},function(e,t){\"use strict\";function r(e,t,r,i){var a=i(\"forEach\",{\"Array, function\":n,\"Matrix, function\":function(e,t){return e.forEach(t)}});return a.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",a}function n(e,t){var r=function(n,i){Array.isArray(n)?n.forEach(function(e,t){r(e,i.concat(t))}):t(n,i,e)};r(e,[])}t.name=\"forEach\",t.factory=r},function(e,t,r){\"use strict\";function n(e,t,n){n(r(67));return function(){for(var t=[],r=0,n=arguments.length;n>r;r++){var i=arguments[r];if(i&&i.isRange===!0)i.start--,i.end-=i.step>0?0:2;else if(i&&i.isSet===!0)i=i.map(function(e){return e-1});else if(i&&(i.isArray===!0||i.isMatrix))i=i.map(function(e){return e-1});else if(\"number\"==typeof i)i--;else{if(!i||i.isBigNumber!==!0)throw new TypeError(\"Ranges must be a Number, Range, Array or Matrix\");i=i.toNumber()-1}t[r]=i}var a=new e.Index;return e.Index.apply(a,t),a}}Array.isArray;t.name=\"index\",t.path=\"expression.transform\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){var o=(n(r(286)),n(r(51)));return a(\"max\",{\"Array, function\":function(e,t){return i(e,t,e)},\"Matrix, function\":function(e,t){return o(i(e.valueOf(),t,e))}})}function i(e,t,r){function n(e,i){return Array.isArray(e)?e.map(function(e,t){return n(e,i.concat(t+1))}):t(e,i,r)}return n(e,[])}t.name=\"map\",t.path=\"expression.transform\",t.factory=n},function(e,t){\"use strict\";function r(e,t,r,i){var a=i(\"map\",{\"Array, function\":n,\"Matrix, function\":function(e,t){return e.map(t)}});return a.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",a}function n(e,t){var r=function(n,i){return Array.isArray(n)?n.map(function(e,t){return r(e,i.concat(t))}):t(n,i,e)};return r(e,[])}t.name=\"map\",t.factory=r},function(e,t,r){\"use strict\";function n(e,t,n,o){var s=n(r(289));return o(\"max\",{\"...any\":function(e){if(2==e.length&&a(e[0])){var t=e[1];\"number\"==typeof t?e[1]=t-1:t&&t.isBigNumber===!0&&(e[1]=t.minus(1))}try{return s.apply(null,e)}catch(r){throw i(r)}}})}var i=r(278).transform,a=r(288);t.name=\"max\",t.path=\"expression.transform\",t.factory=n},function(e,t){\"use strict\";e.exports=function(e){return Array.isArray(e)||e&&e.isMatrix===!0}},function(e,t,r){\"use strict\";function n(e,t,n,o){function s(e,t){return c(e,t)?e:t}function u(e){var t=void 0;if(i(e,function(e){(void 0===t||c(e,t))&&(t=e)}),void 0===t)throw new Error(\"Cannot calculate max of an empty array\");return t}var c=n(r(63)),f=o(\"max\",{\"Array | Matrix\":u,\"Array | Matrix, number | BigNumber\":function(e,t){return a(e,t.valueOf(),s)},\"...\":function(){return u(arguments)}});return f.toTex=\"\\\\max\\\\left(${args}\\\\right)\",f}var i=r(290),a=r(291);t.name=\"max\",t.factory=n},function(e,t){\"use strict\";e.exports=function r(e,t){e&&e.isMatrix===!0&&(e=e.valueOf());for(var n=0,i=e.length;i>n;n++){var a=e[n];Array.isArray(a)?r(a,t):t(a)}}},function(e,t,r){\"use strict\";function n(e,t,r){var a,o,s,u;if(0>=t){if(Array.isArray(e[0])){for(u=i(e),o=[],a=0;a<u.length;a++)o[a]=n(u[a],t-1,r);return o}for(s=e[0],a=1;a<e.length;a++)s=r(s,e[a]);return s}for(o=[],a=0;a<e.length;a++)o[a]=n(e[a],t-1,r);return o}function i(e){var t,r,n=e.length,i=e[0].length,a=[];for(r=0;i>r;r++){var o=[];for(t=0;n>t;t++)o.push(e[t][r]);a.push(o)}return a}var a=r(40).size,o=r(43);e.exports=function(e,t,r){var i=Array.isArray(e)?a(e):e.size();if(0>t)throw new o(t);if(t>=i.length)throw new o(t,i.length);return e&&e.isMatrix===!0?e.create(n(e.valueOf(),t,r)):n(e,t,r)}},function(e,t,r){\"use strict\";function n(e,t,n,o){var s=n(r(293));return o(\"mean\",{\"...any\":function(e){if(2==e.length&&a(e[0])){var t=e[1];\"number\"==typeof t?e[1]=t-1:t&&t.isBigNumber===!0&&(e[1]=t.minus(1))}try{return s.apply(null,e)}catch(r){throw i(r)}}})}var i=r(278).transform,a=r(288);t.name=\"mean\",t.path=\"expression.transform\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,s){function u(e,t){var r=o(e,t,f),n=Array.isArray(e)?i(e):e.size();return l(r,n[t])}function c(e){var t=0,r=0;if(a(e,function(e){t=f(t,e),r++}),0===r)throw new Error(\"Cannot calculate mean of an empty array\");return l(t,r)}var f=n(r(50)),l=n(r(294)),p=s(\"mean\",{\"Array | Matrix\":c,\"Array | Matrix, number | BigNumber\":u,\"...\":function(){return c(arguments)}});return p.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",p}var i=r(40).size,a=r(290),o=r(291);t.name=\"mean\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){var o=n(r(295)),s=n(r(296)),u=n(r(299)),c=n(r(51)),f=n(r(298)),l=n(r(57)),p=a(\"divide\",i({\"Array | Matrix, Array | Matrix\":function(e,t){return s(e,u(t))},\"Matrix, any\":function(e,t){var r;switch(e.storage()){case\"sparse\":r=f(e,t,o,!1);break;case\"dense\":r=l(e,t,o,!1)}return r},\"Array, any\":function(e,t){return l(c(e),t,o,!1).valueOf()},\"any, Array | Matrix\":function(e,t){return s(e,u(t))}},o.signatures));return p.toTex=\"\\\\frac{${args[0]}}{${args[1]}}\",p}var i=r(3).extend;t.name=\"divide\",t.factory=n},function(e,t){\"use strict\";function r(e,t,r,n){function i(t,r){var n=r.re*r.re+r.im*r.im;return 0!=n?new e.Complex((t.re*r.re+t.im*r.im)/n,(t.im*r.re-t.re*r.im)/n):new e.Complex(0!=t.re?t.re/0:0,0!=t.im?t.im/0:0)}var a=n(\"divide\",{\"number, number\":function(e,t){return e/t},\"Complex, Complex\":i,\"BigNumber, BigNumber\":function(e,t){return e.div(t)},\"Fraction, Fraction\":function(e,t){return e.div(t)},\"Unit, number\":function(e,t){var r=e.clone();return r.value=(null===r.value?r._normalize(1):r.value)/t,r},\"number, Unit\":function(e,t){var r=t.pow(-1);return r.value=(null===r.value?r._normalize(1):r.value)*e,r},\"Unit, Unit\":function(e,t){return e.divide(t)}});return a}t.factory=r},function(e,t,r){\"use strict\";function n(e,t,n,o){var s=r(30),u=n(r(51)),c=n(r(52)),f=n(r(297)),l=n(r(48)),p=n(r(298)),m=n(r(57)),h=e.DenseMatrix,g=e.SparseMatrix,v=o(\"multiply\",i({\"Array, Array\":function(e,t){d(a.size(e),a.size(t));var r=v(u(e),u(t));return r&&r.isMatrix===!0?r.valueOf():r},\"Matrix, Matrix\":function(e,t){var r=e.size(),n=t.size();return d(r,n),1===r.length?1===n.length?y(e,t,r[0]):x(e,t):1===n.length?b(e,t):N(e,t)},\"Matrix, Array\":function(e,t){return v(e,u(t))},\"Array, Matrix\":function(e,t){return v(u(e,t.storage()),t)},\"Matrix, any\":function(e,t){var r;switch(e.storage()){case\"sparse\":r=p(e,t,f,!1);break;case\"dense\":r=m(e,t,f,!1)}return r},\"any, Matrix\":function(e,t){var r;switch(t.storage()){case\"sparse\":r=p(t,e,f,!0);break;case\"dense\":r=m(t,e,f,!0)}return r},\"Array, any\":function(e,t){return m(u(e),t,f,!1).valueOf()},\"any, Array\":function(e,t){return m(u(t),e,f,!0).valueOf()}},f.signatures)),d=function(e,t){switch(e.length){case 1:switch(t.length){case 1:if(e[0]!==t[0])throw new RangeError(\"Dimension mismatch in multiplication. Vectors must have the same length\");break;case 2:if(e[0]!==t[0])throw new RangeError(\"Dimension mismatch in multiplication. Vector length (\"+e[0]+\") must match Matrix rows (\"+t[0]+\")\");break;default:throw new Error(\"Can only multiply a 1 or 2 dimensional matrix (Matrix B has \"+t.length+\" dimensions)\")}break;case 2:switch(t.length){case 1:if(e[1]!==t[0])throw new RangeError(\"Dimension mismatch in multiplication. Matrix columns (\"+e[1]+\") must match Vector length (\"+t[0]+\")\");break;case 2:if(e[1]!==t[0])throw new RangeError(\"Dimension mismatch in multiplication. Matrix A columns (\"+e[1]+\") must match Matrix B rows (\"+t[0]+\")\");break;default:throw new Error(\"Can only multiply a 1 or 2 dimensional matrix (Matrix B has \"+t.length+\" dimensions)\")}break;default:throw new Error(\"Can only multiply a 1 or 2 dimensional matrix (Matrix A has \"+e.length+\" dimensions)\")}},y=function(e,t,r){if(0===r)throw new Error(\"Cannot multiply two empty vectors\");var n,i=e._data,a=e._datatype,s=t._data,u=t._datatype,l=c,p=f;a&&u&&a===u&&\"string\"==typeof a&&(n=a,l=o.find(c,[n,n]),p=o.find(f,[n,n]));for(var m=p(i[0],s[0]),h=1;r>h;h++)m=l(m,p(i[h],s[h]));return m},x=function(e,t){switch(t.storage()){case\"dense\":return w(e,t)}throw new Error(\"Not implemented\")},w=function(e,t){var r,n=e._data,i=e._size,a=e._datatype,s=t._data,u=t._size,l=t._datatype,p=i[0],m=u[1],g=c,v=f;a&&l&&a===l&&\"string\"==typeof a&&(r=a,g=o.find(c,[r,r]),v=o.find(f,[r,r]));for(var d=[],y=0;m>y;y++){for(var x=v(n[0],s[0][y]),w=1;p>w;w++)x=g(x,v(n[w],s[w][y]));d[y]=x}return 1===m?d[0]:new h({data:d,size:[m],datatype:r})},b=function(e,t){switch(e.storage()){case\"dense\":return E(e,t);case\"sparse\":return _(e,t)}},N=function(e,t){switch(e.storage()){case\"dense\":switch(t.storage()){case\"dense\":return M(e,t);case\"sparse\":return A(e,t)}break;case\"sparse\":switch(t.storage()){case\"dense\":return O(e,t);case\"sparse\":return T(e,t)}}},E=function(e,t){var r,n=e._data,i=e._size,a=e._datatype,s=t._data,u=t._datatype,l=i[0],p=i[1],m=c,g=f;a&&u&&a===u&&\"string\"==typeof a&&(r=a,m=o.find(c,[r,r]),g=o.find(f,[r,r]));for(var v=[],d=0;l>d;d++){for(var y=n[d],x=g(y[0],s[0]),w=1;p>w;w++)x=m(x,g(y[w],s[w]));v[d]=x}return 1===l?v[0]:new h({data:v,size:[l],datatype:r})},M=function(e,t){var r,n=e._data,i=e._size,a=e._datatype,s=t._data,u=t._size,l=t._datatype,p=i[0],m=i[1],g=u[1],v=c,d=f;a&&l&&a===l&&\"string\"==typeof a&&(r=a,v=o.find(c,[r,r]),d=o.find(f,[r,r]));for(var y=[],x=0;p>x;x++){var w=n[x];y[x]=[];for(var b=0;g>b;b++){for(var N=d(w[0],s[0][b]),E=1;m>E;E++)N=v(N,d(w[E],s[E][b]));y[x][b]=N}}return 1===p&&1===g?y[0][0]:new h({data:y,size:[p,g],datatype:r})},A=function(e,t){var r=e._data,n=e._size,i=e._datatype,a=t._values,s=t._index,u=t._ptr,p=t._size,m=t._datatype;if(!a)throw new Error(\"Cannot multiply Dense Matrix times Pattern only Matrix\");var h,v=n[0],d=p[1],y=c,x=f,w=l,b=0;i&&m&&i===m&&\"string\"==typeof i&&(h=i,y=o.find(c,[h,h]),x=o.find(f,[h,h]),w=o.find(l,[h,h]),b=o.convert(0,h));for(var N=[],E=[],M=[],A=new g({values:N,index:E,ptr:M,size:[v,d],datatype:h}),_=0;d>_;_++){M[_]=E.length;var O=u[_],T=u[_+1];if(T>O)for(var C=0,S=0;v>S;S++){for(var z,B=S+1,k=O;T>k;k++){var I=s[k];C!==B?(z=x(r[S][I],a[k]),C=B):z=y(z,x(r[S][I],a[k]))}C!==B||w(z,b)||(E.push(S),N.push(z))}}return M[d]=E.length,1===v&&1===d?1===N.length?N[0]:0:A},_=function(e,t){var r=e._values,n=e._index,i=e._ptr,a=e._datatype;if(!r)throw new Error(\"Cannot multiply Pattern only Matrix times Dense Matrix\");var s,u=t._data,p=t._datatype,m=e._size[0],h=t._size[0],v=[],d=[],y=[],x=c,w=f,b=l,N=0;a&&p&&a===p&&\"string\"==typeof a&&(s=a,x=o.find(c,[s,s]),w=o.find(f,[s,s]),b=o.find(l,[s,s]),N=o.convert(0,s));var E=[],M=[];y[0]=0;for(var A=0;h>A;A++){var _=u[A];if(!b(_,N))for(var O=i[A],T=i[A+1],C=O;T>C;C++){var S=n[C];M[S]?E[S]=x(E[S],w(_,r[C])):(M[S]=!0,d.push(S),E[S]=w(_,r[C]))}}for(var z=d.length,B=0;z>B;B++){var k=d[B];v[B]=E[k]}return y[1]=d.length,1===m?1===v.length?v[0]:0:new g({values:v,index:d,ptr:y,size:[m,1],datatype:s})},O=function(e,t){var r=e._values,n=e._index,i=e._ptr,a=e._datatype;if(!r)throw new Error(\"Cannot multiply Pattern only Matrix times Dense Matrix\");var s,u=t._data,p=t._datatype,m=e._size[0],h=t._size[0],v=t._size[1],d=c,y=f,x=l,w=0;a&&p&&a===p&&\"string\"==typeof a&&(s=a,d=o.find(c,[s,s]),y=o.find(f,[s,s]),x=o.find(l,[s,s]),w=o.convert(0,s));for(var b=[],N=[],E=[],M=new g({values:b,index:N,ptr:E,size:[m,v],datatype:s}),A=[],_=[],O=0;v>O;O++){E[O]=N.length;for(var T=O+1,C=0;h>C;C++){var S=u[C][O];if(!x(S,w))for(var z=i[C],B=i[C+1],k=z;B>k;k++){var I=n[k];_[I]!==T?(_[I]=T,N.push(I),A[I]=y(S,r[k])):A[I]=d(A[I],y(S,r[k]))}}for(var R=E[O],P=N.length,U=R;P>U;U++){var q=N[U];b[U]=A[q]}}return E[v]=N.length,1===m&&1===v?1===b.length?b[0]:0:M},T=function(e,t){var r,n=e._values,i=e._index,a=e._ptr,s=e._datatype,u=t._values,l=t._index,p=t._ptr,m=t._datatype,h=e._size[0],v=t._size[1],d=n&&u,y=c,x=f;s&&m&&s===m&&\"string\"==typeof s&&(r=s,y=o.find(c,[r,r]),x=o.find(f,[r,r]));for(var w,b,N,E,M,A,_,O,T=d?[]:void 0,C=[],S=[],z=new g({values:T,index:C,ptr:S,size:[h,v],datatype:r}),B=d?[]:void 0,k=[],I=0;v>I;I++){S[I]=C.length;var R=I+1;for(M=p[I],A=p[I+1],E=M;A>E;E++)if(O=l[E],d)for(b=a[O],N=a[O+1],w=b;N>w;w++)_=i[w],k[_]!==R?(k[_]=R,C.push(_),B[_]=x(u[E],n[w])):B[_]=y(B[_],x(u[E],n[w]));else for(b=a[O],N=a[O+1],w=b;N>w;w++)_=i[w],k[_]!==R&&(k[_]=R,C.push(_));if(d)for(var P=S[I],U=C.length,q=P;U>q;q++){var L=C[q];T[q]=B[L]}}return S[v]=C.length,1===h&&1===v&&d?1===T.length?T[0]:0:z};return v.toTex=\"\\\\left(${args[0]}\"+s.operators.multiply+\"${args[1]}\\\\right)\",v}var i=r(3).extend,a=r(40);t.name=\"multiply\",t.factory=n},function(e,t){\"use strict\";function r(e,t,r,n){var i=n(\"multiplyScalar\",{\"number, number\":function(e,t){return e*t},\"Complex, Complex\":function(t,r){return new e.Complex(t.re*r.re-t.im*r.im,t.re*r.im+t.im*r.re)},\"BigNumber, BigNumber\":function(e,t){return e.times(t)},\"Fraction, Fraction\":function(e,t){return e.mul(t)},\"number, Unit\":function(e,t){var r=t.clone();return r.value=null===r.value?r._normalize(e):r.value*e,r},\"Unit, number\":function(e,t){var r=e.clone();return r.value=null===r.value?r._normalize(t):r.value*t,r},\"Unit, Unit\":function(e,t){return e.multiply(t)}});return i}t.factory=r},function(e,t,r){\"use strict\";function n(e,t,n,i){var a=n(r(48)),o=e.SparseMatrix,s=function(e,t,r,n){var s=e._values,u=e._index,c=e._ptr,f=e._size,l=e._datatype;if(!s)throw new Error(\"Cannot perform operation on Pattern Sparse Matrix and Scalar value\");var p,m=f[0],h=f[1],g=a,v=0,d=r;\"string\"==typeof l&&(p=l,g=i.find(a,[p,p]),v=i.convert(0,p),t=i.convert(t,p),d=i.find(r,[p,p]));for(var y=[],x=[],w=[],b=new o({values:y,index:x,ptr:w,size:[m,h],datatype:p}),N=0;h>N;N++){w[N]=x.length;for(var E=c[N],M=c[N+1],A=E;M>A;A++){var _=u[A],O=n?d(t,s[A]):d(s[A],t);g(O,v)||(x.push(_),y.push(O))}}return w[h]=x.length,b};return s}t.name=\"algorithm11\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){function o(e,t,r){var n,i,a,o,s;if(1==t){if(o=e[0][0],0==o)throw Error(\"Cannot calculate inverse, determinant is zero\");return[[u(1,o)]]}if(2==t){var h=p(e);if(0==h)throw Error(\"Cannot calculate inverse, determinant is zero\");return[[u(e[1][1],h),u(l(e[0][1]),h)],[u(l(e[1][0]),h),u(e[0][0],h)]]}var g=e.concat();for(n=0;t>n;n++)g[n]=g[n].concat();for(var v=m(t).valueOf(),d=0;r>d;d++){for(n=d;t>n&&0==g[n][d];)n++;if(n==t||0==g[n][d])throw Error(\"Cannot calculate inverse, determinant is zero\");n!=d&&(s=g[d],g[d]=g[n],g[n]=s,s=v[d],v[d]=v[n],v[n]=s);var y=g[d],x=v[d];for(n=0;t>n;n++){var w=g[n],b=v[n];if(n!=d){if(0!=w[d]){for(a=u(l(w[d]),y[d]),i=d;r>i;i++)w[i]=c(w[i],f(a,y[i]));for(i=0;r>i;i++)b[i]=c(b[i],f(a,x[i]))}}else{for(a=y[d],i=d;r>i;i++)w[i]=u(w[i],a);for(i=0;r>i;i++)b[i]=u(b[i],a)}}}return v}var s=n(r(51)),u=n(r(295)),c=n(r(52)),f=n(r(296)),l=n(r(300)),p=n(r(301)),m=n(r(304)),h=a(\"inv\",{\"Array | Matrix\":function(e){var t=e.isMatrix===!0?e.size():i.array.size(e);switch(t.length){case 1:if(1==t[0])return e.isMatrix===!0?s([u(1,e.valueOf()[0])]):[u(1,e[0])];throw new RangeError(\"Matrix must be square (size: \"+i.string.format(t)+\")\");case 2:var r=t[0],n=t[1];if(r==n)return e.isMatrix===!0?s(o(e.valueOf(),r,n),e.storage()):o(e,r,n);throw new RangeError(\"Matrix must be square (size: \"+i.string.format(t)+\")\");default:throw new RangeError(\"Matrix must be two dimensional (size: \"+i.string.format(t)+\")\")}},any:function(e){return u(1,e)}});return h.toTex=\"\\\\left(${args[0]}\\\\right)^{-1}\",h}var i=r(39);t.name=\"inv\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){var o=r(30),s=a(\"unaryMinus\",{number:function(e){return-e},Complex:function(t){return new e.Complex(-t.re,-t.im)},BigNumber:function(e){return e.neg()},Fraction:function(e){return e.neg()},Unit:function(e){var t=e.clone();return t.value=-e.value,t},\"Array | Matrix\":function(e){return i(e,s,!0)}});return s.toTex=o.operators.unaryMinus+\"\\\\left(${args[0]}\\\\right)\",s}var i=r(19);t.name=\"unaryMinus\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,i){function s(e,t,r){if(1==t)return a.clone(e[0][0]);if(2==t)return f(l(e[0][0],e[1][1]),l(e[1][0],e[0][1]));for(var n=function(e){var t,r,n=new Array(e.length),i=0;for(t=1;t<e.length;t++)i=c(i,e[t][t]);for(t=0;t<e.length;t++){for(n[t]=new Array(e.length),n[t][t]=p(i),r=0;t>r;r++)n[t][r]=0;for(r=t+1;r<e.length;r++)n[t][r]=e[t][r];t+1<e.length&&(i=f(i,e[t+1][t+1]))}return n},i=e,o=0;t-1>o;o++)i=l(n(i),e);return t%2==0?p(i[0][0]):i[0][0]}var u=n(r(51)),c=n(r(50)),f=n(r(302)),l=n(r(296)),p=n(r(300)),m=i(\"det\",{any:function(e){return a.clone(e)},\"Array | Matrix\":function(e){var t;switch(e&&e.isMatrix===!0?t=e.size():Array.isArray(e)?(e=u(e),t=e.size()):t=[],t.length){case 0:return a.clone(e);case 1:if(1==t[0])return a.clone(e.valueOf()[0]);throw new RangeError(\"Matrix must be square (size: \"+o.format(t)+\")\");case 2:var r=t[0],n=t[1];if(r==n)return s(e.clone().valueOf(),r,n);throw new RangeError(\"Matrix must be square (size: \"+o.format(t)+\")\");default:throw new RangeError(\"Matrix must be two dimensional (size: \"+o.format(t)+\")\")}}});return m.toTex=\"\\\\det\\\\left(${args[0]}\\\\right)\",m}var i=r(39),a=i.object,o=i.string;t.name=\"det\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){var o=r(30),s=n(r(51)),u=n(r(52)),c=n(r(300)),f=n(r(53)),l=n(r(60)),p=n(r(303)),m=n(r(55)),h=n(r(56)),g=n(r(57)),v=a(\"subtract\",{\"number, number\":function(e,t){return e-t},\"Complex, Complex\":function(t,r){return new e.Complex(t.re-r.re,t.im-r.im)},\"BigNumber, BigNumber\":function(e,t){return e.minus(t)},\"Fraction, Fraction\":function(e,t){return e.sub(t)},\"Unit, Unit\":function(e,t){if(null==e.value)throw new Error(\"Parameter x contains a unit with undefined value\");if(null==t.value)throw new Error(\"Parameter y contains a unit with undefined value\");if(!e.equalBase(t))throw new Error(\"Units do not match\");var r=e.clone();return r.value-=t.value,r.fixPrefix=!1,r},\"Matrix, Matrix\":function(e,t){var r=e.size(),n=t.size();if(r.length!==n.length)throw new i(r.length,n.length);var a;switch(e.storage()){case\"sparse\":switch(t.storage()){case\"sparse\":a=p(e,t,v);break;default:a=l(t,e,v,!0)}break;default:switch(t.storage()){case\"sparse\":a=f(e,t,v,!1);break;default:a=h(e,t,v)}}return a},\"Array, Array\":function(e,t){return v(s(e),s(t)).valueOf()},\"Array, Matrix\":function(e,t){return v(s(e),t)},\"Matrix, Array\":function(e,t){return v(e,s(t))},\"Matrix, any\":function(e,t){var r;switch(e.storage()){case\"sparse\":r=m(e,c(t),u);break;default:r=g(e,t,v)}return r},\"any, Matrix\":function(e,t){var r;switch(t.storage()){case\"sparse\":r=m(t,e,v,!0);break;default:r=g(t,e,v,!0)}return r},\"Array, any\":function(e,t){return g(s(e),t,v,!1).valueOf()},\"any, Array\":function(e,t){return g(s(t),e,v,!0).valueOf()}});return v.toTex=\"\\\\left(${args[0]}\"+o.operators.subtract+\"${args[1]}\\\\right)\",v}var i=r(42);t.name=\"subtract\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){var o=n(r(48)),s=e.SparseMatrix,u=function(e,t,r){var n=e._values,u=e._index,c=e._ptr,f=e._size,l=e._datatype,p=t._values,m=t._index,h=t._ptr,g=t._size,v=t._datatype;if(f.length!==g.length)throw new i(f.length,g.length);if(f[0]!==g[0]||f[1]!==g[1])throw new RangeError(\"Dimension mismatch. Matrix A (\"+f+\") must match Matrix B (\"+g+\")\");var d,y=f[0],x=f[1],w=o,b=0,N=r;\"string\"==typeof l&&l===v&&(d=l,w=a.find(o,[d,d]),b=a.convert(0,d),N=a.find(r,[d,d]));var E,M,A,_,O=n&&p?[]:void 0,T=[],C=[],S=new s({values:O,index:T,ptr:C,size:[y,x],datatype:d}),z=O?[]:void 0,B=O?[]:void 0,k=[],I=[];for(M=0;x>M;M++){C[M]=T.length;var R=M+1;for(A=c[M],_=c[M+1];_>A;A++)E=u[A],T.push(E),k[E]=R,z&&(z[E]=n[A]);for(A=h[M],_=h[M+1];_>A;A++)E=m[A],k[E]!==R&&T.push(E),I[E]=R,B&&(B[E]=p[A]);if(O)for(A=C[M];A<T.length;){E=T[A];var P=k[E],U=I[E];if(P===R||U===R){var q=P===R?z[E]:b,L=U===R?B[E]:b,F=N(q,L);w(F,b)?T.splice(A,1):(O.push(F),A++)}}}return C[x]=T.length,S};return u}var i=r(42);t.name=\"algorithm05\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,o){function s(e,t){switch(e.length){case 0:return t?c(t):[];case 1:return u(e[0],e[0],t);case 2:return u(e[0],e[1],t);default:throw new Error(\"Vector containing two values expected\")}}function u(t,r,n){var o=t&&t.isBigNumber===!0?e.BigNumber:r&&r.isBigNumber===!0?e.BigNumber:null;if(t&&t.isBigNumber===!0&&(t=t.toNumber()),r&&r.isBigNumber===!0&&(r=r.toNumber()),!a(t)||1>t)throw new Error(\"Parameters in function eye must be positive integers\");if(!a(r)||1>r)throw new Error(\"Parameters in function eye must be positive integers\");var s=o?new e.BigNumber(1):1,u=o?new o(0):0,c=[t,r];if(n){var f=e.Matrix.storage(n);return f.diagonal(c,s,0,u)}for(var l=i.resize([],c,u),p=r>t?t:r,m=0;p>m;m++)l[m][m]=s;return l}var c=n(r(51)),f=o(\"eye\",{\"\":function(){return\"matrix\"===t.matrix?c([]):[]},string:function(e){return c(e)},\"number | BigNumber\":function(e){return u(e,e,\"matrix\"===t.matrix?\"default\":void 0)},\"number | BigNumber, string\":function(e,t){return u(e,e,t)},\"number | BigNumber, number | BigNumber\":function(e,r){return u(e,r,\"matrix\"===t.matrix?\"default\":void 0)},\"number | BigNumber, number | BigNumber, string\":function(e,t,r){return u(e,t,r)},Array:function(e){return s(e)},\"Array, string\":function(e,t){return s(e,t)},Matrix:function(e){return s(e.valueOf(),e.storage())},\"Matrix, string\":function(e,t){return s(e.valueOf(),t)}});return f.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",f}var i=r(40),a=r(6).isInteger;t.name=\"eye\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,o){var s=n(r(306));return o(\"min\",{\"...any\":function(e){if(2==e.length&&a(e[0])){var t=e[1];\"number\"==typeof t?e[1]=t-1:t&&t.isBigNumber===!0&&(e[1]=t.minus(1))}try{return s.apply(null,e)}catch(r){throw i(r)}}})}var i=r(278).transform,a=r(288);t.name=\"min\",t.path=\"expression.transform\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,o){function s(e,t){return c(e,t)?e:t}function u(e){var t=void 0;if(i(e,function(e){(void 0===t||c(e,t))&&(t=e)}),void 0===t)throw new Error(\"Cannot calculate min of an empty array\");return t}var c=n(r(59)),f=o(\"min\",{\"Array | Matrix\":u,\"Array | Matrix, number | BigNumber\":function(e,t){return a(e,t.valueOf(),s)},\"...\":function(){return u(arguments)}});return f.toTex=\"\\\\min\\\\left(${args}\\\\right)\",f}var i=r(290),a=r(291);t.name=\"min\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,i){var a=n(r(308));return i(\"range\",{\"...any\":function(e){var t=e.length-1,r=e[t];return\"boolean\"!=typeof r&&e.push(!0),a.apply(null,e)}})}t.name=\"range\",t.path=\"expression.transform\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,i){function a(e){return\"array\"===t.matrix?e:p(e)}function o(r,n){var i=l(r);if(!i)throw new SyntaxError('String \"'+r+'\" is no valid range');var o;return\"bignumber\"===t.number?(o=n?f:c,a(o(new e.BigNumber(i.start),new e.BigNumber(i.end),new e.BigNumber(i.step)))):(o=n?u:s,a(o(i.start,i.end,i.step)))}function s(e,t,r){var n=[],i=e;if(r>0)for(;t>i;)n.push(i),i+=r;else if(0>r)for(;i>t;)n.push(i),i+=r;return n}function u(e,t,r){var n=[],i=e;if(r>0)for(;t>=i;)n.push(i),i+=r;else if(0>r)for(;i>=t;)n.push(i),i+=r;return n}function c(e,t,r){var n=[],i=e;if(r.gt(m))for(;i.lt(t);)n.push(i),i=i.plus(r);else if(r.lt(m))for(;i.gt(t);)n.push(i),i=i.plus(r);return n}function f(e,t,r){var n=[],i=e;if(r.gt(m))for(;i.lte(t);)n.push(i),i=i.plus(r);else if(r.lt(m))for(;i.gte(t);)n.push(i),i=i.plus(r);return n}function l(e){var t=e.split(\":\"),r=t.map(function(e){return Number(e)}),n=r.some(function(e){return isNaN(e)});if(n)return null;switch(r.length){case 2:return{start:r[0],end:r[1],step:1};case 3:return{start:r[0],end:r[2],step:r[1]};default:return null}}var p=n(r(51)),m=new e.BigNumber(0),h=new e.BigNumber(1),g=i(\"range\",{string:o,\"string, boolean\":o,\"number, number\":function(e,t){return a(s(e,t,1))},\"number, number, number\":function(e,t,r){return a(s(e,t,r))},\"number, number, boolean\":function(e,t,r){return a(r?u(e,t,1):s(e,t,1))},\"number, number, number, boolean\":function(e,t,r,n){return a(n?u(e,t,r):s(e,t,r))},\"BigNumber, BigNumber\":function(e,t){return a(c(e,t,h))},\"BigNumber, BigNumber, BigNumber\":function(e,t,r){return a(c(e,t,r))},\"BigNumber, BigNumber, boolean\":function(e,t,r){return a(r?f(e,t,h):c(e,t,h))},\"BigNumber, BigNumber, BigNumber, boolean\":function(e,t,r,n){return a(n?f(e,t,r):c(e,t,r))}});return g.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",g}t.name=\"range\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){var o=n(r(310));return a(\"subset\",{\"...any\":function(e){try{return o.apply(null,e)}catch(t){throw i(t)}}})}var i=r(278).transform;t.name=\"subset\",t.path=\"expression.transform\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,s){function u(e,t){if(!t||t.isIndex!==!0)throw new TypeError(\"Index expected\");if(1!=t.size().length)throw new o(t.size().length,1);var r=e.length;a(t.min()[0],r),a(t.max()[0],r);var n=t.dimension(0),i=\"\";return n.forEach(function(t){i+=e.charAt(t)}),i}function c(e,t,r,n){if(!t||t.isIndex!==!0)throw new TypeError(\"Index expected\");if(1!=t.size().length)throw new o(t.size().length,1);if(void 0!==n){if(\"string\"!=typeof n||1!==n.length)throw new TypeError(\"Single character expected as defaultValue\")}else n=\" \";var i=t.dimension(0),s=i.size()[0];if(s!=r.length)throw new o(i.size()[0],r.length);var u=e.length;a(t.min()[0]),a(t.max()[0]);for(var c=[],f=0;u>f;f++)c[f]=e.charAt(f);if(i.forEach(function(e,t){c[e]=r.charAt(t[0])}),c.length>u)for(f=u-1,s=c.length;s>f;f++)c[f]||(c[f]=n);return c.join(\"\")}var f=n(r(51)),l=s(\"subset\",{\"Array, Index\":function(e,t){var r=f(e),n=r.subset(t);return n&&n.valueOf()},\"Matrix, Index\":function(e,t){return e.subset(t)},\"string, Index\":u,\"Array, Index, any\":function(e,t,r){return f(i(e)).subset(t,r,void 0).valueOf()},\"Array, Index, any, any\":function(e,t,r,n){return f(i(e)).subset(t,r,n).valueOf()},\"Matrix, Index, any\":function(e,t,r){return e.clone().subset(t,r)},\"Matrix, Index, any, any\":function(e,t,r,n){return e.clone().subset(t,r,n)},\"string, Index, string\":c,\"string, Index, string, string\":c});return l.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",l}var i=r(3).clone,a=r(40).validateIndex,o=r(42);t.name=\"subset\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,o){function s(e){if(!(this instanceof s))throw new SyntaxError(\"Constructor must be called with the new operator\");if(!e)throw new Error('Argument \"doc\" missing');this.doc=e}var u=n(r(273))();return s.prototype.type=\"Help\",s.prototype.isHelp=!0,s.prototype.toString=function(){var e=this.doc||{},t=\"\\n\";if(e.name&&(t+=\"Name: \"+e.name+\"\\n\\n\"),e.category&&(t+=\"Category: \"+e.category+\"\\n\\n\"),e.description&&(t+=\"Description:\\n \"+e.description+\"\\n\\n\"),e.syntax&&(t+=\"Syntax:\\n \"+e.syntax.join(\"\\n \")+\"\\n\\n\"),e.examples){t+=\"Examples:\\n\";for(var r=0;r<e.examples.length;r++){var n=e.examples[r];t+=\" \"+n+\"\\n\";var i;try{i=u.eval(n)}catch(o){i=o}i&&!i.isHelp&&(t+=\" \"+a.format(i,{precision:14})+\"\\n\")}t+=\"\\n\"}return e.seealso&&(t+=\"See also: \"+e.seealso.join(\", \")+\"\\n\"),t},s.prototype.toJSON=function(){var e=i.clone(this.doc);return e.mathjs=\"Help\",e},s.fromJSON=function(e){var t={};for(var r in e)\"mathjs\"!==r&&(t[r]=e[r]);return new s(t)},s.prototype.valueOf=s.prototype.toString,s}var i=r(3),a=r(23);t.name=\"Help\",t.path=\"type\",t.factory=n},function(e,t,r){e.exports=[r(313),r(341),r(373),r(389),r(399),r(404),r(407),r(412),r(421),r(431),r(437),r(445),r(486),r(488)]},function(e,t,r){e.exports=[r(314),r(316),r(336),r(338),r(340)]},function(e,t,r){\"use strict\";function n(e,t,n,i){var o=n(r(51)),s=n(r(315)),u=n(r(52)),c=n(r(295)),f=n(r(297)),l=n(r(302)),p=n(r(63)),m=n(r(48)),h=n(r(300)),g=e.SparseMatrix,v=e.DenseMatrix,d=e.Spa,y=i(\"lup\",{DenseMatrix:function(e){return x(e)},SparseMatrix:function(e){return w(e)},Array:function(e){var t=o(e),r=x(t);return{L:r.L.valueOf(),U:r.U.valueOf(),p:r.p}}}),x=function(e){var t,r,n,i=e._size[0],o=e._size[1],h=Math.min(i,o),g=a.clone(e._data),d=[],y=[i,h],x=[],w=[h,o],b=[];for(t=0;i>t;t++)b[t]=t;for(r=0;o>r;r++){if(r>0)for(t=0;i>t;t++){var N=Math.min(t,r),E=0;for(n=0;N>n;n++)E=u(E,f(g[t][n],g[n][r]));g[t][r]=l(g[t][r],E)}var M=r,A=0,_=0;for(t=r;i>t;t++){var O=g[t][r],T=s(O);p(T,A)&&(M=t,A=T,_=O)}if(r!==M&&(b[r]=[b[M],b[M]=b[r]][0],v._swapRows(r,M,g)),i>r)for(t=r+1;i>t;t++){var C=g[t][r];m(C,0)||(g[t][r]=c(g[t][r],_))}}for(r=0;o>r;r++)for(t=0;i>t;t++)0===r&&(o>t&&(x[t]=[]),d[t]=[]),r>t?(o>t&&(x[t][r]=g[t][r]),i>r&&(d[t][r]=0)):t!==r?(o>t&&(x[t][r]=0),i>r&&(d[t][r]=g[t][r])):(o>t&&(x[t][r]=g[t][r]),i>r&&(d[t][r]=1));var S=new v({data:d,size:y}),z=new v({data:x,size:w}),B=[];for(t=0,h=b.length;h>t;t++)B[b[t]]=t;return{L:S,U:z,p:B,toString:function(){return\"L: \"+this.L.toString()+\"\\nU: \"+this.U.toString()+\"\\nP: \"+this.p}}},w=function(e){var t,r,n,i=e._size[0],a=e._size[1],o=Math.min(i,a),u=e._values,l=e._index,v=e._ptr,y=[],x=[],w=[],b=[i,o],N=[],E=[],M=[],A=[o,a],_=[],O=[];for(t=0;i>t;t++)_[t]=t,O[t]=t;var T=function(e,t){var r=O[e],n=O[t];_[r]=t,_[n]=e,O[e]=n,O[t]=r};for(r=0;a>r;r++){var C=new d;i>r&&(w.push(y.length),y.push(1),x.push(r)),M.push(N.length);var S=v[r],z=v[r+1];for(n=S;z>n;n++)t=l[n],C.set(_[t],u[n]);r>0&&C.forEach(0,r-1,function(e,t){g._forEachRow(e,y,x,w,function(r,n){r>e&&C.accumulate(r,h(f(n,t)))})});var B=r,k=C.get(r),I=s(k);C.forEach(r+1,i-1,function(e,t){var r=s(t);p(r,I)&&(B=e,I=r,k=t)}),r!==B&&(g._swapRows(r,B,b[1],y,x,w),g._swapRows(r,B,A[1],N,E,M),C.swap(r,B),T(r,B)),C.forEach(0,i-1,function(e,t){r>=e?(N.push(t),E.push(e)):(t=c(t,k),m(t,0)||(y.push(t),x.push(e)))})}return M.push(N.length),w.push(y.length),{L:new g({values:y,index:x,ptr:w,size:b}),U:new g({values:N,index:E,ptr:M,size:A}),p:_,toString:function(){return\"L: \"+this.L.toString()+\"\\nU: \"+this.U.toString()+\"\\nP: \"+this.p}}};return y}var i=r(39),a=i.object;t.name=\"lup\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){var a=n(\"abs\",{number:Math.abs,Complex:function(e){var t=Math.abs(e.re),r=Math.abs(e.im);if(1e3>t&&1e3>r)return Math.sqrt(t*t+r*r);if(t>=r){var n=r/t;return t*Math.sqrt(1+n*n)}var i=t/r;return r*Math.sqrt(1+i*i)},BigNumber:function(e){return e.abs()},Fraction:function(e){return e.abs()},\"Array | Matrix\":function(e){return i(e,a,!0)},Unit:function(e){var t=e.clone();return t.value=Math.abs(t.value),t}});return a.toTex=\"\\\\left|${args[0]}\\\\right|\",a}var i=r(19);t.name=\"abs\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,i){var a=n(r(317)),s=n(r(328)),u=i(\"slu\",{\"SparseMatrix, number, number\":function(e,t,r){if(!o(t)||0>t||t>3)throw new Error(\"Symbolic Ordering and Analysis order must be an integer number in the interval [0, 3]\");if(0>r||r>1)throw new Error(\"Partial pivoting threshold must be a number from 0 to 1\");var n=a(t,e,!1),i=s(e,n,r);return{L:i.L,U:i.U,p:i.pinv,q:n.q,toString:function(){return\"L: \"+this.L.toString()+\"\\nU: \"+this.U.toString()+\"\\np: \"+this.p.toString()+(this.q?\"\\nq: \"+this.q.toString():\"\")+\"\\n\";\n}}}});return u}var i=r(39),a=i.number,o=a.isInteger;t.name=\"slu\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n){var i=n(r(318)),a=n(r(323)),o=n(r(324)),s=n(r(325)),u=n(r(326)),c=function(e,t,r){var n,c=t._ptr,l=t._size,p=l[1],m={};if(m.q=i(e,t),e&&!m.q)return null;if(r){var h=e?a(t,null,m.q,0):t;m.parent=o(h,1);var g=s(m.parent,p);if(m.cp=u(h,m.parent,g,1),h&&m.parent&&m.cp&&f(h,m))for(m.unz=0,n=0;p>n;n++)m.unz+=m.cp[n]}else m.unz=4*c[p]+p,m.lnz=m.unz;return m},f=function(e,t){var r=e._ptr,n=e._index,i=e._size,a=i[0],o=i[1];t.pinv=[],t.leftmost=[];var s,u,c,f,l,p=t.parent,m=t.pinv,h=t.leftmost,g=[],v=0,d=a,y=a+o,x=a+2*o;for(u=0;o>u;u++)g[d+u]=-1,g[y+u]=-1,g[x+u]=0;for(s=0;a>s;s++)h[s]=-1;for(u=o-1;u>=0;u--)for(f=r[u],l=r[u+1],c=f;l>c;c++)h[n[c]]=u;for(s=a-1;s>=0;s--)m[s]=-1,u=h[s],-1!=u&&(0===g[x+u]++&&(g[y+u]=s),g[v+s]=g[d+u],g[d+u]=s);for(t.lnz=0,t.m2=a,u=0;o>u;u++)if(s=g[d+u],t.lnz++,0>s&&(s=t.m2++),m[s]=u,!(--x[u]<=0)){t.lnz+=g[x+u];var w=p[u];-1!=w&&(0===g[x+w]&&(g[y+w]=g[y+u]),g[v+g[y+u]]=g[d+w],g[d+w]=g[v+s],g[x+w]+=g[x+u])}for(s=0;a>s;s++)m[s]<0&&(m[s]=u++);return!0};return c}t.name=\"cs_sqr\",t.path=\"sparse\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n){var i=n(r(319)),a=n(r(320)),o=n(r(321)),s=n(r(50)),u=n(r(296)),c=n(r(322)),f=function(e,t){if(!t||0>=e||e>3)return null;var r=t._size,n=r[0],s=r[1],u=0,c=Math.max(16,10*Math.sqrt(s));c=Math.min(s-2,c);var f=l(e,t,n,s,c);a(f,g,null);for(var v,d,y,x,w,b,N,E,M,A,_,O,T,C,S,z,B=f._index,k=f._ptr,I=k[s],R=[],P=[],U=0,q=s+1,L=2*(s+1),F=3*(s+1),D=4*(s+1),$=5*(s+1),j=6*(s+1),G=7*(s+1),H=R,Z=p(s,k,P,U,F,H,L,G,q,j,D,$),V=m(s,k,P,$,D,j,c,q,F,H,L),Y=0;s>V;){for(y=-1;s>Y&&-1==(y=P[F+Y]);Y++);-1!=P[L+y]&&(H[P[L+y]]=-1),P[F+Y]=P[L+y];var W=P[D+y],X=P[q+y];V+=X;var J=0;P[q+y]=-X;var K=k[y],Q=0===W?K:I,ee=Q;for(x=1;W+1>=x;x++){for(x>W?(b=y,N=K,E=P[U+y]-W):(b=B[K++],N=k[b],E=P[U+b]),w=1;E>=w;w++)v=B[N++],(M=P[q+v])<=0||(J+=M,P[q+v]=-M,B[ee++]=v,-1!=P[L+v]&&(H[P[L+v]]=H[v]),-1!=H[v]?P[L+H[v]]=P[L+v]:P[F+P[$+v]]=P[L+v]);b!=y&&(k[b]=i(y),P[j+b]=0)}for(0!==W&&(I=ee),P[$+y]=J,k[y]=Q,P[U+y]=ee-Q,P[D+y]=-2,Z=h(Z,u,j,s),A=Q;ee>A;A++)if(v=B[A],!((_=P[D+v])<=0)){M=-P[q+v];var te=Z-M;for(K=k[v],O=k[v]+_-1;O>=K;K++)b=B[K],P[j+b]>=Z?P[j+b]-=M:0!==P[j+b]&&(P[j+b]=P[$+b]+te)}for(A=Q;ee>A;A++){for(v=B[A],O=k[v],T=O+P[D+v]-1,C=O,S=0,z=0,K=O;T>=K;K++)if(b=B[K],0!==P[j+b]){var re=P[j+b]-Z;re>0?(z+=re,B[C++]=b,S+=b):(k[b]=i(y),P[j+b]=0)}P[D+v]=C-O+1;var ne=C,ie=O+P[U+v];for(K=T+1;ie>K;K++){d=B[K];var ae=P[q+d];0>=ae||(z+=ae,B[C++]=d,S+=d)}0===z?(k[v]=i(y),M=-P[q+v],J-=M,X+=M,V+=M,P[q+v]=0,P[D+v]=-1):(P[$+v]=Math.min(P[$+v],z),B[C]=B[ne],B[ne]=B[O],B[O]=y,P[U+v]=C-O+1,S=(0>S?-S:S)%s,P[L+v]=P[G+S],P[G+S]=v,H[v]=S)}for(P[$+y]=J,u=Math.max(u,J),Z=h(Z+u,u,j,s),A=Q;ee>A;A++)if(v=B[A],!(P[q+v]>=0))for(S=H[v],v=P[G+S],P[G+S]=-1;-1!=v&&-1!=P[L+v];v=P[L+v],Z++){for(E=P[U+v],_=P[D+v],K=k[v]+1;K<=k[v]+E-1;K++)P[j+B[K]]=Z;var oe=v;for(d=P[L+v];-1!=d;){var se=P[U+d]===E&&P[D+d]===_;for(K=k[d]+1;se&&K<=k[d]+E-1;K++)P[j+B[K]]!=Z&&(se=0);se?(k[d]=i(v),P[q+v]+=P[q+d],P[q+d]=0,P[D+d]=-1,d=P[L+d],P[L+oe]=d):(oe=d,d=P[L+d])}}for(K=Q,A=Q;ee>A;A++)v=B[A],(M=-P[q+v])<=0||(P[q+v]=M,z=P[$+v]+J-M,z=Math.min(z,s-V-M),-1!=P[F+z]&&(H[P[F+z]]=v),P[L+v]=P[F+z],H[v]=-1,P[F+z]=v,Y=Math.min(Y,z),P[$+v]=z,B[K++]=v);P[q+y]=X,0===(P[U+y]=K-Q)&&(k[y]=-1,P[j+y]=0),0!==W&&(I=K)}for(v=0;s>v;v++)k[v]=i(k[v]);for(d=0;s>=d;d++)P[F+d]=-1;for(d=s;d>=0;d--)P[q+d]>0||(P[L+d]=P[F+k[d]],P[F+k[d]]=d);for(b=s;b>=0;b--)P[q+b]<=0||-1!=k[b]&&(P[L+b]=P[F+k[b]],P[F+k[b]]=b);for(y=0,v=0;s>=v;v++)-1==k[v]&&(y=o(v,y,P,F,L,R,j));return R.splice(R.length-1,1),R},l=function(e,t,r,n,i){var a=c(t);if(1===e&&n===r)return s(t,a);if(2==e){for(var o=a._index,f=a._ptr,l=0,p=0;r>p;p++){var m=f[p];if(f[p]=l,!(f[p+1]-m>i))for(var h=f[p+1];h>m;m++)o[l++]=o[m]}return f[r]=l,t=c(a),u(a,t)}return u(a,t)},p=function(e,t,r,n,i,a,o,s,u,c,f,l){for(var p=0;e>p;p++)r[n+p]=t[p+1]-t[p];r[n+e]=0;for(var m=0;e>=m;m++)r[i+m]=-1,a[m]=-1,r[o+m]=-1,r[s+m]=-1,r[u+m]=1,r[c+m]=1,r[f+m]=0,r[l+m]=r[n+m];var g=h(0,0,c,e);return r[f+e]=-2,t[e]=-1,r[c+e]=0,g},m=function(e,t,r,n,a,o,s,u,c,f,l){for(var p=0,m=0;e>m;m++){var h=r[n+m];if(0===h)r[a+m]=-2,p++,t[m]=-1,r[o+m]=0;else if(h>s)r[u+m]=0,r[a+m]=-1,p++,t[m]=i(e),r[u+e]++;else{var g=r[c+h];-1!=g&&(f[g]=m),r[l+m]=r[c+h],r[c+h]=m}}return p},h=function(e,t,r,n){if(2>e||0>e+t){for(var i=0;n>i;i++)0!==r[i]&&(r[i]=1);e=2}return e},g=function(e,t){return e!=t};return f}t.name=\"cs_amd\",t.path=\"sparse\",t.factory=n},function(e,t){\"use strict\";function r(){var e=function(e){return-e-2};return e}t.name=\"cs_flip\",t.path=\"sparse\",t.factory=r},function(e,t){\"use strict\";function r(){var e=function(e,t,r){for(var n=e._values,i=e._index,a=e._ptr,o=e._size,s=o[1],u=0,c=0;s>c;c++){var f=a[c];for(a[c]=u;f<a[c+1];f++)t(i[f],c,n?n[f]:1,r)&&(i[u]=i[f],n&&(n[u]=n[f]),u++)}return a[s]=u,i.splice(u,i.length-u),n&&n.splice(u,n.length-u),u};return e}t.name=\"cs_fkeep\",t.path=\"sparse\",t.factory=r},function(e,t){\"use strict\";function r(){var e=function(e,t,r,n,i,a,o){var s=0;for(r[o]=e;s>=0;){var u=r[o+s],c=r[n+u];-1==c?(s--,a[t++]=u):(r[n+u]=r[i+c],++s,r[o+s]=c)}return t};return e}t.name=\"cs_tdfs\",t.path=\"sparse\",t.factory=r},function(e,t,r){\"use strict\";function n(e,t,n,o){var s=r(30),u=n(r(51)),c=e.DenseMatrix,f=e.SparseMatrix,l=o(\"transpose\",{Array:function(e){return l(u(e)).valueOf()},Matrix:function(e){var t,r=e.size();switch(r.length){case 1:t=e.clone();break;case 2:var n=r[0],i=r[1];if(0===i)throw new RangeError(\"Cannot transpose a 2D matrix with no columns (size: \"+a(r)+\")\");switch(e.storage()){case\"dense\":t=p(e,n,i);break;case\"sparse\":t=m(e,n,i)}break;default:throw new RangeError(\"Matrix must be a vector or two dimensional (size: \"+a(this._size)+\")\")}return t},any:function(e){return i(e)}}),p=function(e,t,r){for(var n,a=e._data,o=[],s=0;r>s;s++){n=o[s]=[];for(var u=0;t>u;u++)n[u]=i(a[u][s])}return new c({data:o,size:[r,t],datatype:e._datatype})},m=function(e,t,r){for(var n=e._values,a=e._index,o=e._ptr,s=n?[]:void 0,u=[],c=[],l=[],p=0;t>p;p++)l[p]=0;var m,h,g;for(m=0,h=a.length;h>m;m++)l[a[m]]++;for(var v=0,d=0;t>d;d++)c.push(v),v+=l[d],l[d]=c[d];for(c.push(v),g=0;r>g;g++)for(var y=o[g],x=o[g+1],w=y;x>w;w++){var b=l[a[w]]++;u[b]=g,n&&(s[b]=i(n[w]))}return new f({values:s,index:u,ptr:c,size:[r,t],datatype:e._datatype})};return l.toTex=\"\\\\left(${args[0]}\\\\right)\"+s.operators.transpose,l}var i=r(3).clone,a=r(23).format;t.name=\"transpose\",t.factory=n},function(e,t){\"use strict\";function r(e){var t=e.SparseMatrix,r=function(e,r,n,i){for(var a=e._values,o=e._index,s=e._ptr,u=e._size,c=e._datatype,f=u[0],l=u[1],p=i&&e._values?[]:null,m=[],h=[],g=0,v=0;l>v;v++){h[v]=g;for(var d=n?n[v]:v,y=s[d],x=s[d+1],w=y;x>w;w++){var b=r?r[o[w]]:o[w];m[g]=b,p&&(p[g]=a[w]),g++}}return h[l]=g,new t({values:p,index:m,ptr:h,size:[f,l],datatype:c})};return r}t.name=\"cs_permute\",t.path=\"sparse\",t.factory=r},function(e,t){\"use strict\";function r(){var e=function(e,t){if(!e)return null;var r,n,i=e._index,a=e._ptr,o=e._size,s=o[0],u=o[1],c=[],f=[],l=0,p=u;if(t)for(r=0;s>r;r++)f[p+r]=-1;for(var m=0;u>m;m++){c[m]=-1,f[l+m]=-1;for(var h=a[m],g=a[m+1],v=h;g>v;v++){var d=i[v];for(r=t?f[p+d]:d;-1!=r&&m>r;r=n)n=f[l+r],f[l+r]=m,-1==n&&(c[r]=m);t&&(f[p+d]=m)}}return c};return e}t.name=\"cs_etree\",t.path=\"sparse\",t.factory=r},function(e,t,r){\"use strict\";function n(e,t,n){var i=n(r(321)),a=function(e,t){if(!e)return null;var r,n=0,a=[],o=[],s=0,u=t,c=2*t;for(r=0;t>r;r++)o[s+r]=-1;for(r=t-1;r>=0;r--)-1!=e[r]&&(o[u+r]=o[s+e[r]],o[s+e[r]]=r);for(r=0;t>r;r++)-1==e[r]&&(n=i(r,n,o,s,u,a,c));return a};return a}t.name=\"cs_post\",t.path=\"sparse\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n){var i=n(r(322)),a=n(r(327)),o=function(e,t,r,n){if(!e||!t||!r)return null;var o,s,u,c,f,l,p,m=e._size,h=m[0],g=m[1],v=4*g+(n?g+h+1:0),d=[],y=0,x=g,w=2*g,b=3*g,N=4*g,E=5*g+1;for(u=0;v>u;u++)d[u]=-1;var M=[],A=i(e),_=A._index,O=A._ptr;for(u=0;g>u;u++)for(s=r[u],M[s]=-1==d[b+s]?1:0;-1!=s&&-1==d[b+s];s=t[s])d[b+s]=u;if(n){for(u=0;g>u;u++)d[r[u]]=u;for(o=0;h>o;o++){for(u=g,l=O[o],p=O[o+1],f=l;p>f;f++)u=Math.min(u,d[_[f]]);d[E+o]=d[N+u],d[N+u]=o}}for(o=0;g>o;o++)d[y+o]=o;for(u=0;g>u;u++){for(s=r[u],-1!=t[s]&&M[t[s]]--,c=n?d[N+u]:s;-1!=c;c=n?d[E+c]:-1)for(f=O[c];f<O[c+1];f++){o=_[f];var T=a(o,s,d,b,x,w,y);T.jleaf>=1&&M[s]++,2==T.jleaf&&M[T.q]--}-1!=t[s]&&(d[y+s]=t[s])}for(s=0;g>s;s++)-1!=t[s]&&(M[t[s]]+=M[s]);return M};return o}t.name=\"cs_counts\",t.path=\"sparse\",t.factory=n},function(e,t){\"use strict\";function r(){var e=function(e,t,r,n,i,a,o){var s,u,c,f,l=0;if(t>=e||r[n+t]<=r[i+e])return-1;if(r[i+e]=r[n+t],c=r[a+e],r[a+e]=t,-1===c)l=1,f=e;else{for(l=2,f=c;f!=r[o+f];f=r[o+f]);for(s=c;s!=f;s=u)u=r[o+s],r[o+s]=f}return{jleaf:l,q:f}};return e}t.name=\"cs_leaf\",t.path=\"sparse\",t.factory=r},function(e,t,r){\"use strict\";function n(e,t,n){var i=n(r(315)),a=n(r(295)),o=n(r(296)),s=n(r(63)),u=n(r(329)),c=n(r(330)),f=e.SparseMatrix,l=function(e,t,r){if(!e)return null;var n,l=e._size,p=l[1],m=100,h=100;t&&(n=t.q,m=t.lnz||m,h=t.unz||h);var g,v,d=[],y=[],x=[],w=new f({values:d,index:y,ptr:x,size:[p,p]}),b=[],N=[],E=[],M=new f({values:b,index:N,ptr:E,size:[p,p]}),A=[],_=[],O=[];for(g=0;p>g;g++)_[g]=0,A[g]=-1,x[g+1]=0;m=0,h=0;for(var T=0;p>T;T++){x[T]=m,E[T]=h;var C=n?n[T]:T,S=c(w,e,C,O,_,A,1),z=-1,B=-1;for(v=S;p>v;v++)if(g=O[v],A[g]<0){var k=i(_[g]);s(k,B)&&(B=k,z=g)}else N[h]=A[g],b[h++]=_[g];if(-1==z||0>=B)return null;A[C]<0&&u(i(_[C]),o(B,r))&&(z=C);var I=_[z];for(N[h]=T,b[h++]=I,A[z]=T,y[m]=z,d[m++]=1,v=S;p>v;v++)g=O[v],A[g]<0&&(y[m]=g,d[m++]=a(_[g],I)),_[g]=0}for(x[p]=m,E[p]=h,v=0;m>v;v++)y[v]=A[y[v]];return d.splice(m,d.length-m),y.splice(m,y.length-m),b.splice(h,b.length-h),N.splice(h,N.length-h),{L:w,U:M,pinv:A}};return l}t.name=\"cs_lu\",t.path=\"sparse\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){var o=n(r(51)),s=n(r(60)),u=n(r(61)),c=n(r(62)),f=n(r(56)),l=n(r(57)),p=r(30),m=a(\"largerEq\",{\"boolean, boolean\":function(e,t){return e>=t},\"number, number\":function(e,r){return e>=r||i(e,r,t.epsilon)},\"BigNumber, BigNumber\":function(e,t){return e.gte(t)},\"Fraction, Fraction\":function(e,t){return-1!==e.compare(t)},\"Complex, Complex\":function(){throw new TypeError(\"No ordering relation is defined for complex numbers\")},\"Unit, Unit\":function(e,r){if(!e.equalBase(r))throw new Error(\"Cannot compare units with different base\");return e.value>=r.value||i(e.value,r.value,t.epsilon)},\"string, string\":function(e,t){return e>=t},\"Matrix, Matrix\":function(e,t){var r;switch(e.storage()){case\"sparse\":switch(t.storage()){case\"sparse\":r=u(e,t,m);break;default:r=s(t,e,m,!0)}break;default:switch(t.storage()){case\"sparse\":r=s(e,t,m,!1);break;default:r=f(e,t,m)}}return r},\"Array, Array\":function(e,t){return m(o(e),o(t)).valueOf()},\"Array, Matrix\":function(e,t){return m(o(e),t)},\"Matrix, Array\":function(e,t){return m(e,o(t))},\"Matrix, any\":function(e,t){var r;switch(e.storage()){case\"sparse\":r=c(e,t,m,!1);break;default:r=l(e,t,m,!1)}return r},\"any, Matrix\":function(e,t){var r;switch(t.storage()){case\"sparse\":r=c(t,e,m,!0);break;default:r=l(t,e,m,!0)}return r},\"Array, any\":function(e,t){return l(o(e),t,m,!1).valueOf()},\"any, Array\":function(e,t){return l(o(t),e,m,!0).valueOf()}});return m.toTex=\"\\\\left(${args[0]}\"+p.operators.largerEq+\"${args[1]}\\\\right)\",m}var i=r(6).nearlyEqual;t.name=\"largerEq\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n){var i=n(r(295)),a=n(r(296)),o=n(r(302)),s=n(r(331)),u=function(e,t,r,n,u,c,f){var l,p,m,h,g=e._values,v=e._index,d=e._ptr,y=e._size,x=y[1],w=t._values,b=t._index,N=t._ptr,E=s(e,t,r,n,c);for(l=E;x>l;l++)u[n[l]]=0;for(p=N[r],m=N[r+1],l=p;m>l;l++)u[b[l]]=w[l];for(var M=E;x>M;M++){var A=n[M],_=c?c[A]:A;if(!(0>_))for(p=d[_],m=d[_+1],u[A]=i(u[A],g[f?p:m-1]),l=f?p+1:p,h=f?m:m-1;h>l;l++){var O=v[l];u[O]=o(u[O],a(g[l],u[A]))}}return E};return u}t.name=\"cs_spsolve\",t.path=\"sparse\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n){var i=n(r(332)),a=n(r(333)),o=n(r(334)),s=function(e,t,r,n,s){var u,c,f,l=e._ptr,p=e._size,m=t._index,h=t._ptr,g=p[1],v=g;for(c=h[r],f=h[r+1],u=c;f>u;u++){var d=m[u];a(l,d)||(v=i(d,e,v,n,s))}for(u=v;g>u;u++)o(l,n[u]);return v};return s}t.name=\"cs_reach\",t.path=\"sparse\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n){var i=n(r(333)),a=n(r(334)),o=n(r(335)),s=function(e,t,r,n,s){var u,c,f,l=t._index,p=t._ptr,m=t._size,h=m[1],g=0;for(n[0]=e;g>=0;){e=n[g];var v=s?s[e]:e;i(p,e)||(a(p,e),n[h+g]=0>v?0:o(p[v]));var d=1;for(c=n[h+g],f=0>v?0:o(p[v+1]);f>c;c++)if(u=l[c],!i(p,u)){n[h+g]=c,n[++g]=u,d=0;break}d&&(g--,n[--r]=e)}return r};return s}t.name=\"cs_dfs\",t.path=\"sparse\",t.factory=n},function(e,t){\"use strict\";function r(){var e=function(e,t){return e[t]<0};return e}t.name=\"cs_marked\",t.path=\"sparse\",t.factory=r},function(e,t,r){\"use strict\";function n(e,t,n){var i=n(r(319)),a=function(e,t){e[t]=i(e[t])};return a}t.name=\"cs_mark\",t.path=\"sparse\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n){var i=n(r(319)),a=function(e){return 0>e?i(e):e};return a}t.name=\"cs_unflip\",t.path=\"sparse\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,i){var a=n(r(51)),o=n(r(295)),s=n(r(297)),u=n(r(302)),c=n(r(48)),f=n(r(337)),l=e.DenseMatrix,p=i(\"lsolve\",{\"SparseMatrix, Array | Matrix\":function(e,t){return h(e,t)},\"DenseMatrix, Array | Matrix\":function(e,t){return m(e,t)},\"Array, Array | Matrix\":function(e,t){var r=a(e),n=m(r,t);return n.valueOf()}}),m=function(e,t){t=f(e,t,!0);for(var r=t._data,n=e._size[0],i=e._size[1],a=[],p=e._data,m=0;i>m;m++){var h,g=r[m][0]||0;if(c(g,0))h=0;else{var v=p[m][m];if(c(v,0))throw new Error(\"Linear system cannot be solved since matrix is singular\");h=o(g,v);for(var d=m+1;n>d;d++)r[d]=[u(r[d][0]||0,s(h,p[d][m]))]}a[m]=[h]}return new l({data:a,size:[n,1]})},h=function(e,t){t=f(e,t,!0);for(var r,n,i=t._data,a=e._size[0],p=e._size[1],m=e._values,h=e._index,g=e._ptr,v=[],d=0;p>d;d++){var y=i[d][0]||0;if(c(y,0))v[d]=[0];else{var x=0,w=[],b=[],N=g[d+1];for(n=g[d];N>n;n++)r=h[n],r===d?x=m[n]:r>d&&(w.push(m[n]),b.push(r));if(c(x,0))throw new Error(\"Linear system cannot be solved since matrix is singular\");var E=o(y,x);for(n=0,N=b.length;N>n;n++)r=b[n],i[r]=[u(i[r][0]||0,s(E,w[n]))];v[d]=[E]}}return new l({data:v,size:[a,1]})};return p}t.name=\"lsolve\",t.factory=n},function(e,t,r){\"use strict\";function n(e){var t=e.DenseMatrix,r=function(e,r,n){var i=e.size();if(2!==i.length)throw new RangeError(\"Matrix must be two dimensional (size: \"+a.format(i)+\")\");var u=i[0],c=i[1];if(u!==c)throw new RangeError(\"Matrix must be square (size: \"+a.format(i)+\")\");var f,l,p;if(r&&r.isMatrix===!0){var m=r.size();if(1===m.length){if(m[0]!==u)throw new RangeError(\"Dimension mismatch. Matrix columns must match vector length.\");for(f=[],p=r._data,l=0;u>l;l++)f[l]=[p[l]];return new t({data:f,size:[u,1],datatype:r._datatype})}if(2===m.length){if(m[0]!==u||1!==m[1])throw new RangeError(\"Dimension mismatch. Matrix columns must match vector length.\");if(r.isDenseMatrix===!0){if(n){for(f=[],p=r._data,l=0;u>l;l++)f[l]=[p[l][0]];return new t({data:f,size:[u,1],datatype:r._datatype})}return r}for(f=[],l=0;u>l;l++)f[l]=[0];for(var h=r._values,g=r._index,v=r._ptr,d=v[1],y=v[0];d>y;y++)l=g[y],f[l][0]=h[y];return new t({data:f,size:[u,1],datatype:r._datatype})}throw new RangeError(\"Dimension mismatch. Matrix columns must match vector length.\")}if(s(r)){var x=o.size(r);if(1===x.length){if(x[0]!==u)throw new RangeError(\"Dimension mismatch. Matrix columns must match vector length.\");for(f=[],l=0;u>l;l++)f[l]=[r[l]];return new t({data:f,size:[u,1]})}if(2===x.length){if(x[0]!==u||1!==x[1])throw new RangeError(\"Dimension mismatch. Matrix columns must match vector length.\");for(f=[],l=0;u>l;l++)f[l]=[r[l][0]];return new t({data:f,size:[u,1]})}throw new RangeError(\"Dimension mismatch. Matrix columns must match vector length.\")}};return r}var i=r(39),a=i.string,o=i.array,s=Array.isArray;t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){var o=n(r(51)),s=n(r(314)),u=n(r(316)),c=n(r(339)),f=n(r(337)),l=n(r(340)),p=n(r(336)),m=a(\"lusolve\",{\"Array, Array | Matrix\":function(e,t){e=o(e);var r=s(e),n=g(r.L,r.U,r.p,null,t);return n.valueOf()},\"DenseMatrix, Array | Matrix\":function(e,t){var r=s(e);return g(r.L,r.U,r.p,null,t)},\"SparseMatrix, Array | Matrix\":function(e,t){var r=s(e);return g(r.L,r.U,r.p,null,t)},\"SparseMatrix, Array | Matrix, number, number\":function(e,t,r,n){var i=u(e,r,n);return g(i.L,i.U,i.p,i.q,t)},\"Object, Array | Matrix\":function(e,t){return g(e.L,e.U,e.p,e.q,t)}}),h=function(e){if(e&&e.isMatrix===!0)return e;if(i(e))return o(e);throw new TypeError(\"Invalid Matrix LU decomposition\")},g=function(e,t,r,n,i){e=h(e),t=h(t),i=f(e,i,!1),r&&(i._data=c(r,i._data));var a=p(e,i),o=l(t,a);return n&&(o._data=c(n,o._data)),o};return m}var i=Array.isArray;t.name=\"lusolve\",t.factory=n},function(e,t){\"use strict\";function r(){var e=function(e,t,r){var n,r=t.length,i=[];if(e)for(n=0;r>n;n++)i[e[n]]=t[n];else for(n=0;r>n;n++)i[n]=t[n];return i};return e}t.name=\"cs_ipvec\",t.path=\"sparse\",t.factory=r},function(e,t,r){\"use strict\";function n(e,t,n,i){var a=n(r(51)),o=n(r(295)),s=n(r(297)),u=n(r(302)),c=n(r(48)),f=n(r(337)),l=e.DenseMatrix,p=i(\"usolve\",{\"SparseMatrix, Array | Matrix\":function(e,t){return h(e,t)},\"DenseMatrix, Array | Matrix\":function(e,t){return m(e,t)},\"Array, Array | Matrix\":function(e,t){var r=a(e),n=m(r,t);return n.valueOf()}}),m=function(e,t){t=f(e,t,!0);for(var r=t._data,n=e._size[0],i=e._size[1],a=[],p=e._data,m=i-1;m>=0;m--){var h,g=r[m][0]||0;if(c(g,0))h=0;else{var v=p[m][m];if(c(v,0))throw new Error(\"Linear system cannot be solved since matrix is singular\");h=o(g,v);for(var d=m-1;d>=0;d--)r[d]=[u(r[d][0]||0,s(h,p[d][m]))]}a[m]=[h]}return new l({data:a,size:[n,1]})},h=function(e,t){t=f(e,t,!0);for(var r,n,i=t._data,a=e._size[0],p=e._size[1],m=e._values,h=e._index,g=e._ptr,v=[],d=p-1;d>=0;d--){var y=i[d][0]||0;if(c(y,0))v[d]=[0];else{var x=0,w=[],b=[],N=g[d],E=g[d+1];for(n=E-1;n>=N;n--)r=h[n],r===d?x=m[n]:d>r&&(w.push(m[n]),b.push(r));if(c(x,0))throw new Error(\"Linear system cannot be solved since matrix is singular\");var M=o(y,x);for(n=0,E=b.length;E>n;n++)r=b[n],i[r]=[u(i[r][0],s(M,w[n]))];v[d]=[M]}}return new l({data:v,size:[a,1]})};return p}t.name=\"usolve\",t.factory=n},function(e,t,r){e.exports=[r(315),r(50),r(52),r(342),r(344),r(345),r(294),r(346),r(348),r(350),r(343),r(353),r(354),r(355),r(356),r(359),r(352),r(362),r(363),r(296),r(364),r(366),r(351),r(367),r(369),r(357),r(370),r(302),r(300),r(371),r(372)]},function(e,t,r){\"use strict\";function n(e,t,n,a){function o(e){if(0===e)return e;var t,r=0>e;return r&&(e=-e),isFinite(e)?(t=Math.exp(Math.log(e)/3),t=(e/(t*t)+2*t)/3):t=e,r?-t:t}function s(r,n){var i=r.toPolar(),a=l(new e.Complex(o(i.r),0),p(new e.Complex(0,i.phi/3)));if(n){var s=[a,l(new e.Complex(o(i.r),0),p(new e.Complex(0,i.phi/3+2*Math.PI/3))),l(new e.Complex(o(i.r),0),p(new e.Complex(0,i.phi/3-2*Math.PI/3)))];return\"array\"===t.matrix?s:f(s)}return a}function u(e){if(e.isZero())return e;var t,r=e.isNegative();return r&&(e=e.neg()),e.isFinite()?(t=e.ln().div(3).exp(),t=e.div(t.times(t)).plus(t.times(2)).div(3)):t=1/0,r?t.neg():t}function c(e){var t=e.value<0;t&&(e.value=-e.value);var r=e.pow(1/3);return t&&(r.value=-r.value),r}var f=n(r(51)),l=a.find(n(r(297)),[\"Complex,Complex\"]),p=a.find(n(r(343)),[\"Complex\"]),m=a(\"cbrt\",{number:o,Complex:s,\"Complex, boolean\":s,BigNumber:u,Unit:c,\"Array | Matrix\":function(e){return i(e,m,!0)}});return m.toTex=\"\\\\sqrt[3]{${args[0]}}\",m}var i=r(19);t.name=\"cbrt\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){var a=n(\"exp\",{number:Math.exp,Complex:function(t){var r=Math.exp(t.re);return new e.Complex(r*Math.cos(t.im),r*Math.sin(t.im))},BigNumber:function(e){return e.exp()},\"Array | Matrix\":function(e){return i(e,a)}});return a.toTex=\"\\\\exp\\\\left(${args[0]}\\\\right)\",a}var i=r(19);t.name=\"exp\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){var a=n(\"ceil\",{number:Math.ceil,Complex:function(t){return new e.Complex(Math.ceil(t.re),Math.ceil(t.im))},BigNumber:function(e){return e.ceil()},Fraction:function(e){return e.ceil()},\"Array | Matrix\":function(e){return i(e,a,!0)}});return a.toTex=\"\\\\left\\\\lceil${args[0]}\\\\right\\\\rceil\",a}var i=r(19);t.name=\"ceil\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){var o=a.find(n(r(297)),[\"Complex,Complex\"]),s=a(\"cube\",{number:function(e){return e*e*e},Complex:function(e){return o(o(e,e),e)},BigNumber:function(e){return e.times(e).times(e)},Fraction:function(e){return e.mul(e).mul(e)},\"Array | Matrix\":function(e){return i(e,s,!0)},Unit:function(e){return e.pow(3)}});return s.toTex=\"\\\\left(${args[0]}\\\\right)^3\",s}var i=r(19);t.name=\"cube\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,i){var a=n(r(51)),o=n(r(295)),s=r(30),u=n(r(347)),c=n(r(60)),f=n(r(61)),l=n(r(298)),p=n(r(62)),m=n(r(56)),h=n(r(57)),g=i(\"dotDivide\",{\"any, any\":o,\"Matrix, Matrix\":function(e,t){var r;switch(e.storage()){case\"sparse\":switch(t.storage()){case\"sparse\":r=f(e,t,o,!1);break;default:r=u(t,e,o,!0)}break;default:switch(t.storage()){case\"sparse\":r=c(e,t,o,!1);break;default:r=m(e,t,o)}}return r},\"Array, Array\":function(e,t){return g(a(e),a(t)).valueOf()},\"Array, Matrix\":function(e,t){return g(a(e),t)},\"Matrix, Array\":function(e,t){return g(e,a(t))},\"Matrix, any\":function(e,t){var r;switch(e.storage()){case\"sparse\":r=l(e,t,o,!1);break;default:r=h(e,t,o,!1)}return r},\"any, Matrix\":function(e,t){var r;switch(t.storage()){case\"sparse\":r=p(t,e,o,!0);break;default:r=h(t,e,o,!0)}return r},\"Array, any\":function(e,t){return h(a(e),t,o,!1).valueOf()},\"any, Array\":function(e,t){return h(a(t),e,o,!0).valueOf()}});return g.toTex=\"\\\\left(${args[0]}\"+s.operators.dotDivide+\"${args[1]}\\\\right)\",g}t.name=\"dotDivide\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){var o=n(r(48)),s=e.SparseMatrix,u=function(e,t,r,n){var u=e._data,c=e._size,f=e._datatype,l=t._values,p=t._index,m=t._ptr,h=t._size,g=t._datatype;if(c.length!==h.length)throw new i(c.length,h.length);if(c[0]!==h[0]||c[1]!==h[1])throw new RangeError(\"Dimension mismatch. Matrix A (\"+c+\") must match Matrix B (\"+h+\")\");if(!l)throw new Error(\"Cannot perform operation on Dense Matrix and Pattern Sparse Matrix\");var v,d=c[0],y=c[1],x=o,w=0,b=r;\"string\"==typeof f&&f===g&&(v=f,x=a.find(o,[v,v]),w=a.convert(0,v),b=a.find(r,[v,v]));for(var N=[],E=[],M=[],A=0;y>A;A++){M[A]=E.length;for(var _=m[A],O=m[A+1],T=_;O>T;T++){var C=p[T],S=n?b(l[T],u[C][A]):b(u[C][A],l[T]);x(S,w)||(E.push(C),N.push(S))}}return M[y]=E.length,new s({values:N,index:E,ptr:M,size:[d,y],datatype:v})};return u}var i=r(42);t.name=\"algorithm02\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,i){var a=n(r(51)),o=n(r(297)),s=r(30),u=n(r(347)),c=n(r(349)),f=n(r(298)),l=n(r(56)),p=n(r(57)),m=i(\"dotMultiply\",{\"any, any\":o,\"Matrix, Matrix\":function(e,t){var r;switch(e.storage()){case\"sparse\":switch(t.storage()){case\"sparse\":r=c(e,t,o,!1);break;default:r=u(t,e,o,!0)}break;default:switch(t.storage()){case\"sparse\":r=u(e,t,o,!1);break;default:r=l(e,t,o)}}return r},\"Array, Array\":function(e,t){return m(a(e),a(t)).valueOf()},\"Array, Matrix\":function(e,t){return m(a(e),t)},\"Matrix, Array\":function(e,t){return m(e,a(t))},\"Matrix, any\":function(e,t){var r;switch(e.storage()){case\"sparse\":r=f(e,t,o,!1);break;default:r=p(e,t,o,!1)}return r},\"any, Matrix\":function(e,t){var r;switch(t.storage()){case\"sparse\":r=f(t,e,o,!0);break;default:r=p(t,e,o,!0)}return r},\"Array, any\":function(e,t){return p(a(e),t,o,!1).valueOf()},\"any, Array\":function(e,t){return p(a(t),e,o,!0).valueOf()}});return m.toTex=\"\\\\left(${args[0]}\"+s.operators.dotMultiply+\"${args[1]}\\\\right)\",m}t.name=\"dotMultiply\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){var o=n(r(48)),s=e.SparseMatrix,u=function(e,t,r){var n=e._values,u=e._index,c=e._ptr,f=e._size,l=e._datatype,p=t._values,m=t._index,h=t._ptr,g=t._size,v=t._datatype;if(f.length!==g.length)throw new i(f.length,g.length);if(f[0]!==g[0]||f[1]!==g[1])throw new RangeError(\"Dimension mismatch. Matrix A (\"+f+\") must match Matrix B (\"+g+\")\");var d,y=f[0],x=f[1],w=o,b=0,N=r;\"string\"==typeof l&&l===v&&(d=l,w=a.find(o,[d,d]),b=a.convert(0,d),N=a.find(r,[d,d]));var E,M,A,_,O,T=n&&p?[]:void 0,C=[],S=[],z=new s({values:T,index:C,ptr:S,size:[y,x],datatype:d}),B=T?[]:void 0,k=[];for(M=0;x>M;M++){S[M]=C.length;var I=M+1;if(B)for(_=h[M],O=h[M+1],A=_;O>A;A++)E=m[A],k[E]=I,B[E]=p[A];for(_=c[M],O=c[M+1],A=_;O>A;A++)if(E=u[A],B){var R=k[E]===I?B[E]:b,P=N(n[A],R);w(P,b)||(C.push(E),T.push(P))}else C.push(E)}return S[x]=C.length,z};return u}var i=r(42);t.name=\"algorithm09\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,i){var a=n(r(51)),o=n(r(351)),s=r(30),u=n(r(60)),c=n(r(61)),f=n(r(298)),l=n(r(62)),p=n(r(56)),m=n(r(57)),h=i(\"dotPow\",{\"any, any\":o,\"Matrix, Matrix\":function(e,t){var r;switch(e.storage()){case\"sparse\":switch(t.storage()){case\"sparse\":r=c(e,t,o,!1);break;default:r=u(t,e,o,!0)}break;default:switch(t.storage()){case\"sparse\":r=u(e,t,o,!1);break;default:r=p(e,t,o)}}return r},\"Array, Array\":function(e,t){return h(a(e),a(t)).valueOf()},\"Array, Matrix\":function(e,t){return h(a(e),t)},\"Matrix, Array\":function(e,t){return h(e,a(t))},\"Matrix, any\":function(e,t){var r;switch(e.storage()){case\"sparse\":r=f(e,t,h,!1);break;default:r=m(e,t,h,!1)}return r},\"any, Matrix\":function(e,t){var r;switch(t.storage()){case\"sparse\":r=l(t,e,h,!0);break;default:r=m(t,e,h,!0)}return r},\"Array, any\":function(e,t){return m(a(e),t,h,!1).valueOf()},\"any, Array\":function(e,t){return m(a(t),e,h,!0).valueOf()}});return h.toTex=\"\\\\left(${args[0]}\"+s.operators.dotPow+\"${args[1]}\\\\right)\",h}t.name=\"dotPow\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,o){function s(r,n){return i(n)||r>=0||t.predictable?Math.pow(r,n):u(new e.Complex(r,0),new e.Complex(n,0))}function u(e,t){return p(g(h(e),t))}function c(e,t){if(!i(t)||0>t)throw new TypeError(\"For A^b, b must be a positive integer (value is \"+t+\")\");var r=a(e);if(2!=r.length)throw new Error(\"For A^b, A must be 2 dimensional (A has \"+r.length+\" dimensions)\");if(r[0]!=r[1])throw new Error(\"For A^b, A must be square (size is \"+r[0]+\"x\"+r[1]+\")\");for(var n=m(r[0]).valueOf(),o=e;t>=1;)1==(1&t)&&(n=g(o,n)),t>>=1,o=g(o,o);return n}function f(e,t){return v(c(e.valueOf(),t))}var l=r(30),p=n(r(343)),m=n(r(304)),h=n(r(352)),g=n(r(296)),v=n(r(51)),d=o(\"pow\",{\"number, number\":s,\"Complex, Complex\":u,\"BigNumber, BigNumber\":function(r,n){return n.isInteger()||r>=0||t.predictable?r.pow(n):u(new e.Complex(r.toNumber(),0),new e.Complex(n.toNumber(),0))},\"Fraction, Fraction\":function(e,r){if(1!==r.d){if(t.predictable)throw new Error(\"Function pow does not support non-integer exponents for fractions.\");return s(e.valueOf(),r.valueOf())}return e.pow(r)},\"Array, number\":c,\"Array, BigNumber\":function(e,t){return c(e,t.toNumber())},\"Matrix, number\":f,\"Matrix, BigNumber\":function(e,t){return f(e,t.toNumber())},\"Unit, number\":function(e,t){return e.pow(t)}});return d.toTex=\"\\\\left(${args[0]}\\\\right)\"+l.operators.pow+\"{${args[1]}}\",d}var i=r(6).isInteger,a=r(40).size;t.name=\"pow\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){function o(r){return r>=0||t.predictable?Math.log(r):c(new e.Complex(r,0))}function s(t){return new e.Complex(Math.log(Math.sqrt(t.re*t.re+t.im*t.im)),Math.atan2(t.im,t.re))}var u=n(r(295)),c=a(\"log\",{number:o,Complex:s,BigNumber:function(r){return!r.isNegative()||t.predictable?r.ln():s(new e.Complex(r.toNumber(),0))},\"Array | Matrix\":function(e){return i(e,c)},\"any, any\":function(e,t){return u(c(e),c(t))}});return c.toTex={1:\"\\\\ln\\\\left(${args[0]}\\\\right)\",2:\"\\\\log_{${args[1]}}\\\\left(${args[0]}\\\\right)\"},c}var i=r(19);t.name=\"log\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){var a=n(\"fix\",{number:function(e){return e>0?Math.floor(e):Math.ceil(e)},Complex:function(t){return new e.Complex(t.re>0?Math.floor(t.re):Math.ceil(t.re),t.im>0?Math.floor(t.im):Math.ceil(t.im))},BigNumber:function(e){return e.isNegative()?e.ceil():e.floor()},Fraction:function(e){return e.s<0?e.ceil():e.floor()},\"Array | Matrix\":function(e){return i(e,a,!0)}});return a.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",a}var i=r(19);t.name=\"fix\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){var a=n(\"floor\",{number:Math.floor,Complex:function(t){return new e.Complex(Math.floor(t.re),Math.floor(t.im))},BigNumber:function(e){return e.floor()},Fraction:function(e){return e.floor()},\"Array | Matrix\":function(e){return i(e,a,!0)}});return a.toTex=\"\\\\left\\\\lfloor${args[0]}\\\\right\\\\rfloor\",a}var i=r(19);t.name=\"floor\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){function o(t,r){if(!t.isInt()||!r.isInt())throw new Error(\"Parameters in function gcd must be integer numbers\");for(var n=new e.BigNumber(0);!r.isZero();){var i=t.mod(r);t=r,r=i}return t.lt(n)?t.neg():t}var s=n(r(51)),u=n(r(53)),c=n(r(54)),f=n(r(55)),l=n(r(56)),p=n(r(57)),m=a(\"gcd\",{\"number, number\":i,\"BigNumber, BigNumber\":o,\"Fraction, Fraction\":function(e,t){return e.gcd(t)},\"Matrix, Matrix\":function(e,t){var r;switch(e.storage()){case\"sparse\":switch(t.storage()){case\"sparse\":r=c(e,t,m);break;default:r=u(t,e,m,!0)}break;default:switch(t.storage()){case\"sparse\":r=u(e,t,m,!1);break;default:r=l(e,t,m)}}return r},\"Array, Array\":function(e,t){return m(s(e),s(t)).valueOf()},\"Array, Matrix\":function(e,t){return m(s(e),t)},\"Matrix, Array\":function(e,t){return m(e,s(t))},\"Matrix, number | BigNumber\":function(e,t){var r;switch(e.storage()){case\"sparse\":r=f(e,t,m,!1);break;default:r=p(e,t,m,!1)}return r},\"number | BigNumber, Matrix\":function(e,t){var r;switch(t.storage()){case\"sparse\":r=f(t,e,m,!0);break;default:r=p(t,e,m,!0)}return r},\"Array, number | BigNumber\":function(e,t){return p(s(e),t,m,!1).valueOf()},\"number | BigNumber, Array\":function(e,t){return p(s(t),e,m,!0).valueOf()},\"Array | Matrix | number | BigNumber, Array | Matrix | number | BigNumber, ...Array | Matrix | number | BigNumber\":function(e,t,r){for(var n=m(e,t),i=0;i<r.length;i++)n=m(n,r[i]);return n}});return m.toTex=\"\\\\gcd\\\\left(${args}\\\\right)\",m}function i(e,t){if(!a(e)||!a(t))throw new Error(\"Parameters in function gcd must be integer numbers\");for(var r;0!=t;)r=e%t,e=t,t=r;return 0>e?-e:e}var a=r(6).isInteger;t.name=\"gcd\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){function o(e){for(var t=0,r=0,n=0;n<e.length;n++){var i=s(e[n]);p(r,i)?(t=f(t,f(c(r,i),c(r,i))),t=u(t,1),r=i):t=u(t,m(i)?f(c(i,r),c(i,r)):i)}return f(r,l(t))}var s=n(r(315)),u=n(r(52)),c=n(r(295)),f=n(r(297)),l=n(r(357)),p=n(r(59)),m=n(r(358)),h=a(\"hypot\",{\"... number | BigNumber\":o,Array:function(e){return h.apply(h,i(e))},Matrix:function(e){return h.apply(h,i(e.toArray()))}});return h.toTex=\"\\\\hypot\\\\left(${args}\\\\right)\",h}var i=r(40).flatten;t.name=\"hypot\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){function a(r){return r>=0||t.predictable?Math.sqrt(r):o(new e.Complex(r,0))}function o(t){var r,n,i=Math.sqrt(t.re*t.re+t.im*t.im);return r=t.re>=0?.5*Math.sqrt(2*(i+t.re)):Math.abs(t.im)/Math.sqrt(2*(i-t.re)),n=t.re<=0?.5*Math.sqrt(2*(i-t.re)):Math.abs(t.im)/Math.sqrt(2*(i+t.re)),t.im>=0?new e.Complex(r,n):new e.Complex(r,-n)}var s=n(\"sqrt\",{number:a,Complex:o,BigNumber:function(e){return!e.isNegative()||t.predictable?e.sqrt():a(e.toNumber())},\"Array | Matrix\":function(e){return i(e,s,!0)},Unit:function(e){return e.pow(.5)}});return s.toTex=\"\\\\sqrt{${args[0]}}\",s}var i=r(19);t.name=\"sqrt\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){var a=n(\"isPositive\",{number:function(e){return e>0},BigNumber:function(e){return!e.isNeg()&&!e.isZero()&&!e.isNaN()},Fraction:function(e){return e.s>0&&e.n>0},Unit:function(e){return e.value>0},\"Array | Matrix\":function(e){return i(e,a)}});return a}var i=r(19);r(6);t.name=\"isPositive\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){function o(t,r){if(!t.isInt()||!r.isInt())throw new Error(\"Parameters in function lcm must be integer numbers\");if(t.isZero()||r.isZero())return new e.BigNumber(0);for(var n=t.times(r);!r.isZero();){var i=r;\nr=t.mod(i),t=i}return n.div(t).abs()}var s=n(r(51)),u=n(r(347)),c=n(r(360)),f=n(r(298)),l=n(r(56)),p=n(r(57)),m=a(\"lcm\",{\"number, number\":i,\"BigNumber, BigNumber\":o,\"Fraction, Fraction\":function(t,r){return 0===t.n&&0===r.n?new e.Fraction(0):t.mul(r).abs().div(t.gcd(r))},\"Matrix, Matrix\":function(e,t){var r;switch(e.storage()){case\"sparse\":switch(t.storage()){case\"sparse\":r=c(e,t,m);break;default:r=u(t,e,m,!0)}break;default:switch(t.storage()){case\"sparse\":r=u(e,t,m,!1);break;default:r=l(e,t,m)}}return r},\"Array, Array\":function(e,t){return m(s(e),s(t)).valueOf()},\"Array, Matrix\":function(e,t){return m(s(e),t)},\"Matrix, Array\":function(e,t){return m(e,s(t))},\"Matrix, number | BigNumber\":function(e,t){var r;switch(e.storage()){case\"sparse\":r=f(e,t,m,!1);break;default:r=p(e,t,m,!1)}return r},\"number | BigNumber, Matrix\":function(e,t){var r;switch(t.storage()){case\"sparse\":r=f(t,e,m,!0);break;default:r=p(t,e,m,!0)}return r},\"Array, number | BigNumber\":function(e,t){return p(s(e),t,m,!1).valueOf()},\"number | BigNumber, Array\":function(e,t){return p(s(t),e,m,!0).valueOf()},\"Array | Matrix | number | BigNumber, Array | Matrix | number | BigNumber, ...Array | Matrix | number | BigNumber\":function(e,t,r){for(var n=m(e,t),i=0;i<r.length;i++)n=m(n,r[i]);return n}});return m.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",m}function i(e,t){if(!a(e)||!a(t))throw new Error(\"Parameters in function lcm must be integer numbers\");if(0==e||0==t)return 0;for(var r,n=e*t;0!=t;)r=t,t=e%r,e=r;return Math.abs(n/e)}var a=r(6).isInteger;t.name=\"lcm\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,o){var s=n(r(48)),u=e.SparseMatrix,c=function(e,t,r){var n=e._values,c=e._size,f=e._datatype,l=t._values,p=t._size,m=t._datatype;if(c.length!==p.length)throw new a(c.length,p.length);if(c[0]!==p[0]||c[1]!==p[1])throw new RangeError(\"Dimension mismatch. Matrix A (\"+c+\") must match Matrix B (\"+p+\")\");var h,g=c[0],v=c[1],d=s,y=0,x=r;\"string\"==typeof f&&f===m&&(h=f,d=o.find(s,[h,h]),y=o.convert(0,h),x=o.find(r,[h,h]));for(var w=n&&l?[]:void 0,b=[],N=[],E=new u({values:w,index:b,ptr:N,size:[g,v],datatype:h}),M=w?[]:void 0,A=[],_=[],O=0;v>O;O++){N[O]=b.length;var T=O+1;if(i(e,O,A,M,_,T,E,x),i(t,O,A,M,_,T,E,x),M)for(var C=N[O];C<b.length;){var S=b[C];if(_[S]===T){var z=M[S];d(z,y)?b.splice(C,1):(w.push(z),C++)}else b.splice(C,1)}else for(var B=N[O];B<b.length;){var k=b[B];_[k]!==T?b.splice(B,1):B++}}return N[v]=b.length,E};return c}var i=r(361),a=r(42);t.name=\"algorithm06\",t.factory=n},function(e,t){\"use strict\";e.exports=function(e,t,r,n,i,a,o,s,u,c,f){var l,p,m,h,g=e._values,v=e._index,d=e._ptr,y=o._index;if(n)for(p=d[t],m=d[t+1],l=p;m>l;l++)h=v[l],r[h]!==a?(r[h]=a,y.push(h),c?(n[h]=u?s(g[l],f):s(f,g[l]),i[h]=a):n[h]=g[l]):(n[h]=u?s(g[l],n[h]):s(n[h],g[l]),i[h]=a);else for(p=d[t],m=d[t+1],l=p;m>l;l++)h=v[l],r[h]!==a?(r[h]=a,y.push(h)):i[h]=a}},function(e,t,r){\"use strict\";function n(e,t,r,n){function a(t){return new e.Complex(Math.log(Math.sqrt(t.re*t.re+t.im*t.im))/Math.LN10,Math.atan2(t.im,t.re)/Math.LN10)}var o=n(\"log10\",{number:function(r){return r>=0||t.predictable?Math.log(r)/Math.LN10:o(new e.Complex(r,0))},Complex:a,BigNumber:function(r){return!r.isNegative()||t.predictable?r.log():a(new e.Complex(r.toNumber(),0))},\"Array | Matrix\":function(e){return i(e,o)}});return o.toTex=\"\\\\log_{10}\\\\left(${args[0]}\\\\right)\",o}var i=r(19);t.name=\"log10\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,i){function a(e,t){if(t>0)return e-t*Math.floor(e/t);if(0===t)return e;throw new Error(\"Cannot calculate mod for a negative divisor\")}var o=n(r(51)),s=r(30),u=n(r(347)),c=n(r(60)),f=n(r(303)),l=n(r(298)),p=n(r(62)),m=n(r(56)),h=n(r(57)),g=i(\"mod\",{\"number, number\":a,\"BigNumber, BigNumber\":function(e,t){return t.isZero()?e:e.mod(t)},\"Fraction, Fraction\":function(e,t){return e.mod(t)},\"Matrix, Matrix\":function(e,t){var r;switch(e.storage()){case\"sparse\":switch(t.storage()){case\"sparse\":r=f(e,t,g,!1);break;default:r=u(t,e,g,!0)}break;default:switch(t.storage()){case\"sparse\":r=c(e,t,g,!1);break;default:r=m(e,t,g)}}return r},\"Array, Array\":function(e,t){return g(o(e),o(t)).valueOf()},\"Array, Matrix\":function(e,t){return g(o(e),t)},\"Matrix, Array\":function(e,t){return g(e,o(t))},\"Matrix, any\":function(e,t){var r;switch(e.storage()){case\"sparse\":r=l(e,t,g,!1);break;default:r=h(e,t,g,!1)}return r},\"any, Matrix\":function(e,t){var r;switch(t.storage()){case\"sparse\":r=p(t,e,g,!0);break;default:r=h(t,e,g,!0)}return r},\"Array, any\":function(e,t){return h(o(e),t,g,!1).valueOf()},\"any, Array\":function(e,t){return h(o(t),e,g,!0).valueOf()}});return g.toTex=\"\\\\left(${args[0]}\"+s.operators.mod+\"${args[1]}\\\\right)\",g}t.name=\"mod\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,i){function a(e,t){var r=e.size();if(1==r.length){if(t===Number.POSITIVE_INFINITY||\"inf\"===t){var n=0;return e.forEach(function(e){var t=o(e);p(t,n)&&(n=t)},!0),n}if(t===Number.NEGATIVE_INFINITY||\"-inf\"===t){var i;return e.forEach(function(e){var t=o(e);(!i||m(t,i))&&(i=t)},!0),i||0}if(\"fro\"===t)return a(e,2);if(\"number\"==typeof t&&!isNaN(t)){if(!l(t,0)){var h=0;return e.forEach(function(e){h=s(u(o(e),t),h)},!0),u(h,1/t)}return Number.POSITIVE_INFINITY}throw new Error(\"Unsupported parameter value\")}if(2==r.length){if(1===t){var d=[],y=0;return e.forEach(function(e,t){var r=t[1],n=s(d[r]||0,o(e));p(n,y)&&(y=n),d[r]=n},!0),y}if(t===Number.POSITIVE_INFINITY||\"inf\"===t){var x=[],w=0;return e.forEach(function(e,t){var r=t[0],n=s(x[r]||0,o(e));p(n,w)&&(w=n),x[r]=n},!0),w}if(\"fro\"===t)return c(g(f(v(e),e)));if(2===t)throw new Error(\"Unsupported parameter value, missing implementation of matrix singular value decomposition\");throw new Error(\"Unsupported parameter value\")}}var o=n(r(315)),s=n(r(50)),u=n(r(351)),c=n(r(357)),f=n(r(296)),l=n(r(48)),p=n(r(63)),m=n(r(59)),h=n(r(51)),g=n(r(365)),v=n(r(322)),d=i.find(o,[\"Complex\"]),y=i(\"norm\",{number:Math.abs,Complex:d,BigNumber:function(e){return e.abs()},\"boolean | null\":function(e){return Math.abs(e)},Array:function(e){return a(h(e),2)},Matrix:function(e){return a(e,2)},\"number | Complex | BigNumber | boolean | null, number | BigNumber | string\":function(e){return y(e)},\"Array, number | BigNumber | string\":function(e,t){return a(h(e),t)},\"Matrix, number | BigNumber | string\":function(e,t){return a(e,t)}});return y.toTex={1:\"\\\\left\\\\|${args[0]}\\\\right\\\\|\",2:\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\"},y}t.name=\"norm\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,o){var s=n(r(51)),u=n(r(50)),c=o(\"trace\",{Array:function(e){return c(s(e))},Matrix:function(e){var t;switch(e.storage()){case\"dense\":t=f(e);break;case\"sparse\":t=l(e)}return t},any:i}),f=function(e){var t=e._size,r=e._data;switch(t.length){case 1:if(1==t[0])return i(r[0]);throw new RangeError(\"Matrix must be square (size: \"+a(t)+\")\");case 2:var n=t[0],o=t[1];if(n===o){for(var s=0,c=0;n>c;c++)s=u(s,r[c][c]);return s}throw new RangeError(\"Matrix must be square (size: \"+a(t)+\")\");default:throw new RangeError(\"Matrix must be two dimensional (size: \"+a(t)+\")\")}},l=function(e){var t=e._values,r=e._index,n=e._ptr,i=e._size,o=i[0],s=i[1];if(o===s){var c=0;if(t.length>0)for(var f=0;s>f;f++)for(var l=n[f],p=n[f+1],m=l;p>m;m++){var h=r[m];if(h===f){c=u(c,t[m]);break}if(h>f)break}return c}throw new RangeError(\"Matrix must be square (size: \"+a(i)+\")\")};return c.toTex=\"\\\\mathrm{tr}\\\\left(${args[0]}\\\\right)\",c}var i=r(3).clone,a=r(23).format;t.name=\"trace\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,o){function s(t,r){var n=e.BigNumber.precision,i=e.BigNumber.constructor({precision:n+2}),a=new e.BigNumber(0),o=new i(1),s=r.isNegative();if(s&&(r=r.neg()),r.isZero())throw new Error(\"Root must be non-zero\");if(t.isNegative()&&!r.abs().mod(2).equals(1))throw new Error(\"Root must be odd when a is negative.\");if(t.isZero())return a;if(!t.isFinite())return s?a:t;var u=t.abs().pow(o.div(r));return u=t.isNeg()?u.neg():u,new e.BigNumber((s?o.div(u):u).toPrecision(n))}var u=n(r(51)),c=n(r(53)),f=n(r(347)),l=n(r(360)),p=n(r(298)),m=n(r(56)),h=n(r(57)),g=o(\"nthRoot\",{number:function(e){return i(e,2)},\"number, number\":i,BigNumber:function(t){return s(t,new e.BigNumber(2))},Complex:function(e){return a(e,2)},\"Complex, number\":a,\"BigNumber, BigNumber\":s,\"Array | Matrix\":function(e){return g(e,2)},\"Matrix, Matrix\":function(e,t){var r;switch(e.storage()){case\"sparse\":switch(t.storage()){case\"sparse\":if(1!==t.density())throw new Error(\"Root must be non-zero\");r=l(e,t,g);break;default:r=f(t,e,g,!0)}break;default:switch(t.storage()){case\"sparse\":if(1!==t.density())throw new Error(\"Root must be non-zero\");r=c(e,t,g,!1);break;default:r=m(e,t,g)}}return r},\"Array, Array\":function(e,t){return g(u(e),u(t)).valueOf()},\"Array, Matrix\":function(e,t){return g(u(e),t)},\"Matrix, Array\":function(e,t){return g(e,u(t))},\"Matrix, number | BigNumber\":function(e,t){var r;switch(e.storage()){case\"sparse\":r=p(e,t,g,!1);break;default:r=h(e,t,g,!1)}return r},\"number | BigNumber, Matrix\":function(e,t){var r;switch(t.storage()){case\"sparse\":if(1!==t.density())throw new Error(\"Root must be non-zero\");r=p(t,e,g,!0);break;default:r=h(t,e,g,!0)}return r},\"Array, number | BigNumber\":function(e,t){return g(u(e),t).valueOf()},\"number | BigNumber, Array\":function(e,t){return g(e,u(t)).valueOf()}});return g.toTex=\"\\\\sqrt[${args[1]}]{${args[0]}}\",g}function i(e,t){var r=0>t;if(r&&(t=-t),0===t)throw new Error(\"Root must be non-zero\");if(0>e&&Math.abs(t)%2!=1)throw new Error(\"Root must be odd when a is negative.\");if(0==e)return 0;if(!isFinite(e))return r?0:e;var n=Math.pow(Math.abs(e),1/t);return n=0>e?-n:n,r?1/n:n}function a(e,t){if(0>t)throw new Error(\"Root must be greater than zero\");if(0===t)throw new Error(\"Root must be non-zero\");if(t%1!==0)throw new Error(\"Root must be an integer\");for(var r=e.toPolar(),n=[],i=Math.pow(r.r,1/t),a=0;t>a;a++)n.push({r:i,phi:(r.phi+2*Math.PI*a)/t});return n}t.name=\"nthRoot\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,o){var c=n(r(51)),f=n(r(48)),l=n(r(368)),p=n(r(298)),m=n(r(62)),h=n(r(57)),g=o(\"round\",{number:Math.round,\"number, number\":function(e,t){if(!a(t))throw new TypeError(u);if(0>t||t>15)throw new Error(\"Number of decimals in function round must be in te range of 0-15\");return i(e,t)},Complex:function(t){return new e.Complex(Math.round(t.re),Math.round(t.im))},\"Complex, number\":function(t,r){return new e.Complex(i(t.re,r),i(t.im,r))},\"Complex, BigNumber\":function(t,r){if(!r.isInteger())throw new TypeError(u);var n=r.toNumber();return new e.Complex(i(t.re,n),i(t.im,n))},\"number, BigNumber\":function(t,r){if(!r.isInteger())throw new TypeError(u);return new e.BigNumber(t).toDecimalPlaces(r.toNumber())},BigNumber:function(e){return e.toDecimalPlaces(0)},\"BigNumber, BigNumber\":function(e,t){if(!t.isInteger())throw new TypeError(u);return e.toDecimalPlaces(t.toNumber())},Fraction:function(e){return e.round()},\"Array | Matrix\":function(e){return s(e,g,!0)},\"Matrix, number | BigNumber\":function(e,t){var r;switch(e.storage()){case\"sparse\":r=p(e,t,g,!1);break;default:r=h(e,t,g,!1)}return r},\"number | Complex | BigNumber, Matrix\":function(e,t){if(!f(e,0)){var r;switch(t.storage()){case\"sparse\":r=m(t,e,g,!0);break;default:r=h(t,e,g,!0)}return r}return l(t.size(),t.storage())},\"Array, number | BigNumber\":function(e,t){return h(c(e),t,g,!1).valueOf()},\"number | Complex | BigNumber, Array\":function(e,t){return h(c(t),e,g,!0).valueOf()}});return g.toTex={1:\"\\\\left\\\\lfloor${args[0]}\\\\right\\\\rceil\",2:\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\"},g}function i(e,t){return parseFloat(o(e,t))}var a=r(6).isInteger,o=r(6).toFixed,s=r(19),u=\"Number of decimals in function round must be an integer\";t.name=\"round\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,o){function s(t,r){var n=u(t),i=n?new e.BigNumber(0):0;if(c(t),r){var o=f(r);return t.length>0?o.resize(t,i):o}var s=[];return t.length>0?a(s,t,i):s}function u(e){var t=!1;return e.forEach(function(e,r,n){e&&e.isBigNumber===!0&&(t=!0,n[r]=e.toNumber())}),t}function c(e){e.forEach(function(e){if(\"number\"!=typeof e||!i(e)||0>e)throw new Error(\"Parameters in function zeros must be positive integers\")})}var f=n(r(51)),l=o(\"zeros\",{\"\":function(){return\"array\"===t.matrix?s([]):s([],\"default\")},\"...number | BigNumber | string\":function(e){var r=e[e.length-1];if(\"string\"==typeof r){var n=e.pop();return s(e,n)}return\"array\"===t.matrix?s(e):s(e,\"default\")},Array:s,Matrix:function(e){var t=e.storage();return s(e.valueOf(),t)},\"Array | Matrix, string\":function(e,t){return s(e.valueOf(),t)}});return l.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",l}var i=r(6).isInteger,a=r(40).resize;t.name=\"zeros\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){var o=n(\"sign\",{number:i.sign,Complex:function(t){var r=Math.sqrt(t.re*t.re+t.im*t.im);return new e.Complex(t.re/r,t.im/r)},BigNumber:function(t){return new e.BigNumber(t.cmp(0))},Fraction:function(t){return new e.Fraction(t.s)},\"Array | Matrix\":function(e){return a(e,o,!0)},Unit:function(e){return i.sign(e.value)}});return o.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",o}var i=r(6),a=r(19);t.name=\"sign\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){var a=n(\"square\",{number:function(e){return e*e},Complex:function(t){return new e.Complex(t.re*t.re-t.im*t.im,t.re*t.im+t.im*t.re)},BigNumber:function(e){return e.times(e)},Fraction:function(e){return e.mul(e)},\"Array | Matrix\":function(e){return i(e,a,!0)},Unit:function(e){return e.pow(2)}});return a.toTex=\"\\\\left(${args[0]}\\\\right)^2\",a}var i=r(19);t.name=\"square\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){var o=r(30),s=a(\"unaryPlus\",{number:function(e){return e},Complex:function(e){return e.clone()},BigNumber:function(e){return e},Fraction:function(e){return e},Unit:function(e){return e.clone()},\"Array | Matrix\":function(e){return i(e,s,!0)},\"boolean | string | null\":function(r){return\"bignumber\"==t.number?new e.BigNumber(+r):+r}});return s.toTex=o.operators.unaryPlus+\"\\\\left(${args[0]}\\\\right)\",s}var i=r(19);t.name=\"unaryPlus\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){function o(e,r){var n,a,o,s=0,c=1,f=1,l=0;if(!i(e)||!i(r))throw new Error(\"Parameters in function xgcd must be integer numbers\");for(;r;)a=Math.floor(e/r),o=e%r,n=s,s=c-a*s,c=n,n=f,f=l-a*f,l=n,e=r,r=o;var p;return p=0>e?[-e,-c,-l]:[e,e?c:0,l],\"array\"===t.matrix?p:u(p)}function s(r,n){var i,a,o,s=new e.BigNumber(0),c=new e.BigNumber(0),f=new e.BigNumber(1),l=new e.BigNumber(1),p=new e.BigNumber(0);if(!r.isInt()||!n.isInt())throw new Error(\"Parameters in function xgcd must be integer numbers\");for(;!n.isZero();)a=r.div(n).floor(),o=r.mod(n),i=c,c=f.minus(a.times(c)),f=i,i=l,l=p.minus(a.times(l)),p=i,r=n,n=o;var m;return m=r.lt(s)?[r.neg(),f.neg(),p.neg()]:[r,r.isZero()?0:f,p],\"array\"===t.matrix?m:u(m)}var u=n(r(51)),c=a(\"xgcd\",{\"number, number\":o,\"BigNumber, BigNumber\":s});return c.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",c}var i=r(6).isInteger;t.name=\"xgcd\",t.factory=n},function(e,t,r){e.exports=[r(374),r(378),r(379),r(381),r(383),r(386),r(388)]},function(e,t,r){\"use strict\";function n(e,t,n,o){var s=r(30),u=n(r(51)),c=n(r(347)),f=n(r(360)),l=n(r(298)),p=n(r(56)),m=n(r(57)),h=o(\"bitAnd\",{\"number, number\":function(e,t){if(!i(e)||!i(t))throw new Error(\"Integers expected in function bitAnd\");return e&t},\"BigNumber, BigNumber\":a,\"Matrix, Matrix\":function(e,t){var r;switch(e.storage()){case\"sparse\":switch(t.storage()){case\"sparse\":r=f(e,t,h,!1);break;default:r=c(t,e,h,!0)}break;default:switch(t.storage()){case\"sparse\":r=c(e,t,h,!1);break;default:r=p(e,t,h)}}return r},\"Array, Array\":function(e,t){return h(u(e),u(t)).valueOf()},\"Array, Matrix\":function(e,t){return h(u(e),t)},\"Matrix, Array\":function(e,t){return h(e,u(t))},\"Matrix, any\":function(e,t){var r;switch(e.storage()){case\"sparse\":r=l(e,t,h,!1);break;default:r=m(e,t,h,!1)}return r},\"any, Matrix\":function(e,t){var r;switch(t.storage()){case\"sparse\":r=l(t,e,h,!0);break;default:r=m(t,e,h,!0)}return r},\"Array, any\":function(e,t){return m(u(e),t,h,!1).valueOf()},\"any, Array\":function(e,t){return m(u(t),e,h,!0).valueOf()}});return h.toTex=\"\\\\left(${args[0]}\"+s.operators.bitAnd+\"${args[1]}\\\\right)\",h}var i=r(6).isInteger,a=r(375);t.name=\"bitAnd\",t.factory=n},function(e,t,r){var n=r(376);e.exports=function(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error(\"Integers expected in function bitAnd\");var r=e.constructor;if(e.isNaN()||t.isNaN())return new r(NaN);if(e.isZero()||t.eq(-1)||e.eq(t))return e;if(t.isZero()||e.eq(-1))return t;if(!e.isFinite()||!t.isFinite()){if(!e.isFinite()&&!t.isFinite())return e.isNegative()==t.isNegative()?e:new r(0);if(!e.isFinite())return t.isNegative()?e:e.isNegative()?new r(0):t;if(!t.isFinite())return e.isNegative()?t:t.isNegative()?new r(0):e}return n(e,t,function(e,t){return e&t})}},function(e,t,r){function n(e){for(var t=e.c,r=t[0]+\"\",n=1;n<t.length;++n){for(var i=t[n]+\"\",a=7-i.length;a--;)i=\"0\"+i;r+=i}var o;for(o=r.length-1;\"0\"==r.charAt(o);--o);var s=e.e,u=r.slice(0,o+1||1),c=u.length;if(s>0)if(++s>c)for(s-=c;s--;u+=\"0\");else c>s&&(u=u.slice(0,s)+\".\"+u.slice(s));for(var f=[0],n=0;n<u.length;){for(var l=f.length;l--;f[l]*=10);f[0]+=u.charAt(n++)<<0;for(var o=0;o<f.length;++o)f[o]>1&&(null==f[o+1]&&(f[o+1]=0),f[o+1]+=f[o]>>1,f[o]&=1)}return f.reverse()}var i=r(377);e.exports=function(e,t,r){var a,o,s=e.constructor,u=+(e.s<0),c=+(t.s<0);if(u){a=n(i(e));for(var f=0;f<a.length;++f)a[f]^=1}else a=n(e);if(c){o=n(i(t));for(var f=0;f<o.length;++f)o[f]^=1}else o=n(t);var l,p,m;a.length<=o.length?(l=a,p=o,m=u):(l=o,p=a,m=c);var h=l.length,g=p.length,v=1^r(u,c),d=new s(1^v),y=s.ONE,x=new s(2),w=s.precision;for(s.config({precision:1e9});h>0;)r(l[--h],p[--g])==v&&(d=d.plus(y)),y=y.times(x);for(;g>0;)r(m,p[--g])==v&&(d=d.plus(y)),y=y.times(x);return s.config({precision:w}),0==v&&(d.s=-d.s),d}},function(e,t){e.exports=function(e){if(e.isFinite()&&!e.isInteger())throw new Error(\"Integer expected in function bitNot\");var t=e.constructor,r=t.precision;t.config({precision:1e9});var e=e.plus(t.ONE);return e.s=-e.s||null,t.config({precision:r}),e}},function(e,t,r){\"use strict\";function n(e,t,n,s){var u=r(30),c=s(\"bitNot\",{number:function(e){if(!o(e))throw new Error(\"Integer expected in function bitNot\");return~e},BigNumber:a,\"Array | Matrix\":function(e){return i(e,c)}});return c.toTex=u.operators.bitNot+\"\\\\left(${args[0]}\\\\right)\",c}var i=r(19),a=r(377),o=r(6).isInteger;t.name=\"bitNot\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,o){var s=r(30),u=n(r(51)),c=n(r(53)),f=n(r(54)),l=n(r(55)),p=n(r(56)),m=n(r(57)),h=o(\"bitOr\",{\"number, number\":function(e,t){if(!i(e)||!i(t))throw new Error(\"Integers expected in function bitOr\");return e|t},\"BigNumber, BigNumber\":a,\"Matrix, Matrix\":function(e,t){var r;switch(e.storage()){case\"sparse\":switch(t.storage()){case\"sparse\":r=f(e,t,h);break;default:r=c(t,e,h,!0)}break;default:switch(t.storage()){case\"sparse\":r=c(e,t,h,!1);break;default:r=p(e,t,h)}}return r},\"Array, Array\":function(e,t){return h(u(e),u(t)).valueOf()},\"Array, Matrix\":function(e,t){return h(u(e),t)},\"Matrix, Array\":function(e,t){return h(e,u(t))},\"Matrix, any\":function(e,t){var r;switch(e.storage()){case\"sparse\":r=l(e,t,h,!1);break;default:r=m(e,t,h,!1)}return r},\"any, Matrix\":function(e,t){var r;switch(t.storage()){case\"sparse\":r=l(t,e,h,!0);break;default:r=m(t,e,h,!0)}return r},\"Array, any\":function(e,t){return m(u(e),t,h,!1).valueOf()},\"any, Array\":function(e,t){return m(u(t),e,h,!0).valueOf()}});return h.toTex=\"\\\\left(${args[0]}\"+s.operators.bitOr+\"${args[1]}\\\\right)\",h}var i=r(6).isInteger,a=r(380);t.name=\"bitOr\",t.factory=n},function(e,t,r){var n=r(376);e.exports=function(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error(\"Integers expected in function bitOr\");var r=e.constructor;if(e.isNaN()||t.isNaN())return new r(NaN);var i=new r(-1);return e.isZero()||t.eq(i)||e.eq(t)?t:t.isZero()||e.eq(i)?e:e.isFinite()&&t.isFinite()?n(e,t,function(e,t){return e|t}):!e.isFinite()&&!e.isNegative()&&t.isNegative()||e.isNegative()&&!t.isNegative()&&!t.isFinite()?i:e.isNegative()&&t.isNegative()?e.isFinite()?e:t:e.isFinite()?t:e}},function(e,t,r){\"use strict\";function n(e,t,n,o){var s=r(30),u=n(r(51)),c=n(r(60)),f=n(r(61)),l=n(r(62)),p=n(r(56)),m=n(r(57)),h=o(\"bitXor\",{\"number, number\":function(e,t){if(!i(e)||!i(t))throw new Error(\"Integers expected in function bitXor\");return e^t},\"BigNumber, BigNumber\":a,\"Matrix, Matrix\":function(e,t){var r;switch(e.storage()){case\"sparse\":switch(t.storage()){case\"sparse\":r=f(e,t,h);break;default:r=c(t,e,h,!0)}break;default:switch(t.storage()){case\"sparse\":r=c(e,t,h,!1);break;default:r=p(e,t,h)}}return r},\"Array, Array\":function(e,t){return h(u(e),u(t)).valueOf()},\"Array, Matrix\":function(e,t){return h(u(e),t)},\"Matrix, Array\":function(e,t){return h(e,u(t))},\"Matrix, any\":function(e,t){var r;switch(e.storage()){case\"sparse\":r=l(e,t,h,!1);break;default:r=m(e,t,h,!1)}return r},\"any, Matrix\":function(e,t){var r;switch(t.storage()){case\"sparse\":r=l(t,e,h,!0);break;default:r=m(t,e,h,!0)}return r},\"Array, any\":function(e,t){return m(u(e),t,h,!1).valueOf()},\"any, Array\":function(e,t){return m(u(t),e,h,!0).valueOf()}});return h.toTex=\"\\\\left(${args[0]}\"+s.operators.bitXor+\"${args[1]}\\\\right)\",h}var i=r(6).isInteger,a=r(382);t.name=\"bitXor\",t.factory=n},function(e,t,r){var n=r(376),i=r(377);e.exports=function(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error(\"Integers expected in function bitXor\");var r=e.constructor;if(e.isNaN()||t.isNaN())return new r(NaN);if(e.isZero())return t;if(t.isZero())return e;if(e.eq(t))return new r(0);var a=new r(-1);return e.eq(a)?i(t):t.eq(a)?i(e):e.isFinite()&&t.isFinite()?n(e,t,function(e,t){return e^t}):e.isFinite()||t.isFinite()?new r(e.isNegative()==t.isNegative()?1/0:-(1/0)):a}},function(e,t,r){\"use strict\";function n(e,t,n,o){var s=r(30),u=n(r(51)),c=n(r(48)),f=n(r(368)),l=n(r(53)),p=n(r(347)),m=n(r(385)),h=n(r(55)),g=n(r(298)),v=n(r(56)),d=n(r(57)),y=o(\"leftShift\",{\"number, number\":function(e,t){if(!i(e)||!i(t))throw new Error(\"Integers expected in function leftShift\");return e<<t},\"BigNumber, BigNumber\":a,\"Matrix, Matrix\":function(e,t){var r;switch(e.storage()){case\"sparse\":switch(t.storage()){case\"sparse\":r=m(e,t,y,!1);break;default:r=p(t,e,y,!0)}break;default:switch(t.storage()){case\"sparse\":r=l(e,t,y,!1);break;default:r=v(e,t,y)}}return r},\"Array, Array\":function(e,t){return y(u(e),u(t)).valueOf()},\"Array, Matrix\":function(e,t){return y(u(e),t)},\"Matrix, Array\":function(e,t){return y(e,u(t))},\"Matrix, number | BigNumber\":function(e,t){if(!c(t,0)){var r;switch(e.storage()){case\"sparse\":r=g(e,t,y,!1);break;default:r=d(e,t,y,!1)}return r}return e.clone()},\"number | BigNumber, Matrix\":function(e,t){if(!c(e,0)){var r;switch(t.storage()){case\"sparse\":r=h(t,e,y,!0);break;default:r=d(t,e,y,!0)}return r}return f(t.size(),t.storage())},\"Array, number | BigNumber\":function(e,t){return y(u(e),t).valueOf()},\"number | BigNumber, Array\":function(e,t){return y(e,u(t)).valueOf()}});return y.toTex=\"\\\\left(${args[0]}\"+s.operators.leftShift+\"${args[1]}\\\\right)\",y}var i=r(6).isInteger,a=r(384);t.name=\"leftShift\",t.factory=n},function(e,t){e.exports=function(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error(\"Integers expected in function leftShift\");var r=e.constructor;return e.isNaN()||t.isNaN()||t.isNegative()&&!t.isZero()?new r(NaN):e.isZero()||t.isZero()?e:e.isFinite()||t.isFinite()?t.lt(55)?e.times(Math.pow(2,t.toNumber())+\"\"):e.times(new r(2).pow(t)):new r(NaN)}},function(e,t,r){\"use strict\";function n(e,t,n,a){var o=n(r(48)),s=e.SparseMatrix,u=function(e,t,r){var n=e._values,u=e._index,c=e._ptr,f=e._size,l=e._datatype,p=t._values,m=t._index,h=t._ptr,g=t._size,v=t._datatype;if(f.length!==g.length)throw new i(f.length,g.length);if(f[0]!==g[0]||f[1]!==g[1])throw new RangeError(\"Dimension mismatch. Matrix A (\"+f+\") must match Matrix B (\"+g+\")\");if(!n||!p)throw new Error(\"Cannot perform operation on Pattern Sparse Matrices\");var d,y=f[0],x=f[1],w=o,b=0,N=r;\"string\"==typeof l&&l===v&&(d=l,w=a.find(o,[d,d]),b=a.convert(0,d),N=a.find(r,[d,d]));for(var E,M,A,_,O=[],T=[],C=[],S=new s({values:O,index:T,ptr:C,size:[y,x],datatype:d}),z=[],B=[],k=0;x>k;k++){C[k]=T.length;var I=k+1;for(M=c[k],A=c[k+1],E=M;A>E;E++)_=u[E],B[_]=I,z[_]=n[E],T.push(_);for(M=h[k],A=h[k+1],E=M;A>E;E++)_=m[E],B[_]===I&&(z[_]=N(z[_],p[E]));for(E=C[k];E<T.length;){_=T[E];var R=z[_];w(R,b)?T.splice(E,1):(O.push(R),E++)}}return C[x]=T.length,S};return u}var i=r(42);t.name=\"algorithm08\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,o){var s=r(30),u=n(r(51)),c=n(r(48)),f=n(r(368)),l=n(r(53)),p=n(r(347)),m=n(r(385)),h=n(r(55)),g=n(r(298)),v=n(r(56)),d=n(r(57)),y=o(\"rightArithShift\",{\"number, number\":function(e,t){if(!i(e)||!i(t))throw new Error(\"Integers expected in function rightArithShift\");return e>>t},\"BigNumber, BigNumber\":a,\"Matrix, Matrix\":function(e,t){var r;switch(e.storage()){case\"sparse\":switch(t.storage()){case\"sparse\":r=m(e,t,y,!1);break;default:r=p(t,e,y,!0)}break;default:switch(t.storage()){case\"sparse\":r=l(e,t,y,!1);break;default:r=v(e,t,y)}}return r},\"Array, Array\":function(e,t){return y(u(e),u(t)).valueOf()},\"Array, Matrix\":function(e,t){return y(u(e),t)},\"Matrix, Array\":function(e,t){return y(e,u(t))},\"Matrix, number | BigNumber\":function(e,t){if(!c(t,0)){var r;switch(e.storage()){case\"sparse\":r=g(e,t,y,!1);break;default:r=d(e,t,y,!1)}return r}return e.clone()},\"number | BigNumber, Matrix\":function(e,t){if(!c(e,0)){var r;switch(t.storage()){case\"sparse\":r=h(t,e,y,!0);break;default:r=d(t,e,y,!0)}return r}return f(t.size(),t.storage())},\"Array, number | BigNumber\":function(e,t){return y(u(e),t).valueOf()},\"number | BigNumber, Array\":function(e,t){return y(e,u(t)).valueOf()}});return y.toTex=\"\\\\left(${args[0]}\"+s.operators.rightArithShift+\"${args[1]}\\\\right)\",y}var i=r(6).isInteger,a=r(387);t.name=\"rightArithShift\",t.factory=n},function(e,t){e.exports=function(e,t){if(e.isFinite()&&!e.isInteger()||t.isFinite()&&!t.isInteger())throw new Error(\"Integers expected in function rightArithShift\");var r=e.constructor;return e.isNaN()||t.isNaN()||t.isNegative()&&!t.isZero()?new r(NaN):e.isZero()||t.isZero()?e:t.isFinite()?t.lt(55)?e.div(Math.pow(2,t.toNumber())+\"\").floor():e.div(new r(2).pow(t)).floor():new r(e.isNegative()?-1:e.isFinite()?0:NaN)}},function(e,t,r){\"use strict\";function n(e,t,n,a){var o=r(30),s=n(r(51)),u=n(r(48)),c=n(r(368)),f=n(r(53)),l=n(r(347)),p=n(r(385)),m=n(r(55)),h=n(r(298)),g=n(r(56)),v=n(r(57)),d=a(\"rightLogShift\",{\"number, number\":function(e,t){if(!i(e)||!i(t))throw new Error(\"Integers expected in function rightLogShift\");return e>>>t},\"Matrix, Matrix\":function(e,t){var r;switch(e.storage()){case\"sparse\":switch(t.storage()){case\"sparse\":r=p(e,t,d,!1);break;default:r=l(t,e,d,!0)}break;default:switch(t.storage()){case\"sparse\":r=f(e,t,d,!1);break;default:r=g(e,t,d)}}return r},\"Array, Array\":function(e,t){return d(s(e),s(t)).valueOf()},\"Array, Matrix\":function(e,t){return d(s(e),t)},\"Matrix, Array\":function(e,t){return d(e,s(t))},\"Matrix, number | BigNumber\":function(e,t){if(!u(t,0)){var r;switch(e.storage()){case\"sparse\":r=h(e,t,d,!1);break;default:r=v(e,t,d,!1)}return r}return e.clone()},\"number | BigNumber, Matrix\":function(e,t){if(!u(e,0)){var r;switch(t.storage()){case\"sparse\":r=m(t,e,d,!0);break;default:r=v(t,e,d,!0)}return r}return c(t.size(),t.storage())},\"Array, number | BigNumber\":function(e,t){return d(s(e),t).valueOf()},\"number | BigNumber, Array\":function(e,t){return d(e,s(t)).valueOf()}});return d.toTex=\"\\\\left(${args[0]}\"+o.operators.rightLogShift+\"${args[1]}\\\\right)\",d}var i=r(6).isInteger;t.name=\"rightLogShift\",t.factory=n},function(e,t,r){e.exports=[r(390),r(397),r(391),r(398)]},function(e,t,r){\"use strict\";function n(e,t,n,i){var a=n(r(50)),o=n(r(391)),s=n(r(395)),u=n(r(396)),c=i(\"bellNumbers\",{\"number | BigNumber\":function(e){if(!u(e)||s(e))throw new TypeError(\"Non-negative integer value expected in function bellNumbers\");for(var t=0,r=0;e>=r;r++)t=a(t,o(e,r));return t}});return c.toTex=\"\\\\mathrm{B}_{${args[0]}}\",c}t.name=\"bellNumbers\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,i){var a=n(r(50)),o=n(r(302)),s=n(r(296)),u=n(r(294)),c=n(r(351)),f=n(r(392)),l=n(r(394)),p=n(r(395)),m=n(r(396)),h=n(r(63)),g=i(\"stirlingS2\",{\"number | BigNumber, number | BigNumber\":function(e,t){if(!m(e)||p(e)||!m(t)||p(t))throw new TypeError(\"Non-negative integer value expected in function stirlingS2\");if(h(t,e))throw new TypeError(\"k must be less than or equal to n in function stirlingS2\");for(var r=f(t),n=0,i=0;t>=i;i++){var g=c(-1,o(t,i)),v=l(t,i),d=c(i,e);n=a(n,s(s(v,d),g))}return u(n,r)}});return g.toTex=\"\\\\mathrm{S}\\\\left(${args[0]},${args[1]}\\\\right)\",g}t.name=\"stirlingS2\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){var o=n(r(393)),s=r(30),u=a(\"factorial\",{number:function(e){if(0>e)throw new Error(\"Value must be non-negative\");return o(e+1)},BigNumber:function(e){if(e.isNegative())throw new Error(\"Value must be non-negative\");return o(e.plus(1))},\"Array | Matrix\":function(e){return i(e,u)}});return u.toTex=\"\\\\left(${args[0]}\\\\right)\"+s.operators.factorial,u}var i=r(19);r(77);t.name=\"factorial\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,u){function c(r){if(r.isZero())return new e.BigNumber(1);for(var n=t.precision+(0|Math.log(r.toNumber())),i=e.BigNumber.constructor({precision:n}),a=new i(r),o=r.toNumber()-1;o>1;)a=a.times(o),o--;return new e.BigNumber(a.toPrecision(e.BigNumber.precision))}var f=n(r(296)),l=n(r(351)),p=u(\"gamma\",{number:function(e){var t,r;if(a(e)){if(0>=e)return isFinite(e)?1/0:NaN;if(e>171)return 1/0;for(var n=e-2,i=e-1;n>1;)i*=n,n--;return 0==i&&(i=1),i}if(.5>e)return Math.PI/(Math.sin(Math.PI*e)*p(1-e));if(e>=171.35)return 1/0;if(e>85){var u=e*e,c=u*e,f=c*e,l=f*e;return Math.sqrt(2*Math.PI/e)*Math.pow(e/Math.E,e)*(1+1/(12*e)+1/(288*u)-139/(51840*c)-571/(2488320*f)+163879/(209018880*l)+5246819/(75246796800*l*e))}--e,r=s[0];for(var m=1;m<s.length;++m)r+=s[m]/(e+m);return t=e+o+.5,Math.sqrt(2*Math.PI)*Math.pow(t,e+.5)*Math.exp(-t)*r},Complex:function(t){var r,n;if(0==t.im)return p(t.re);t=new e.Complex(t.re-1,t.im),n=new e.Complex(s[0],0);for(var i=1;i<s.length;++i){var a=t.re+i,u=a*a+t.im*t.im;0!=u?(n.re+=s[i]*a/u,n.im+=-(s[i]*t.im)/u):n.re=s[i]<0?-(1/0):1/0}r=new e.Complex(t.re+o+.5,t.im);var c=Math.sqrt(2*Math.PI);t.re+=.5;var m=l(r,t);0==m.im?m.re*=c:0==m.re?m.im*=c:(m.re*=c,m.im*=c);var h=Math.exp(-r.re);return r.re=h*Math.cos(-r.im),r.im=h*Math.sin(-r.im),f(f(m,r),n)},BigNumber:function(t){if(t.isInteger())return t.isNegative()||t.isZero()?new e.BigNumber(1/0):c(t.minus(1));if(!t.isFinite())return new e.BigNumber(t.isNegative()?NaN:1/0);throw new Error(\"Integer BigNumber expected\")},\"Array | Matrix\":function(e){return i(e,p)}});return p.toTex=\"\\\\Gamma\\\\left(${args[0]}\\\\right)\",p}var i=r(19),a=r(6).isInteger,o=4.7421875,s=[.9999999999999971,57.15623566586292,-59.59796035547549,14.136097974741746,-.4919138160976202,3399464998481189e-20,4652362892704858e-20,-9837447530487956e-20,.0001580887032249125,-.00021026444172410488,.00021743961811521265,-.0001643181065367639,8441822398385275e-20,-26190838401581408e-21,36899182659531625e-22];t.name=\"gamma\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){var o=n(\"combinations\",{\"number, number\":function(e,t){var r,n,i;if(!a(e)||0>e)throw new TypeError(\"Positive integer value expected in function combinations\");if(!a(t)||0>t)throw new TypeError(\"Positive integer value expected in function combinations\");if(t>e)throw new TypeError(\"k must be less than or equal to n\");for(r=Math.max(t,e-t),n=1,i=1;e-r>=i;i++)n=n*(r+i)/i;return n},\"BigNumber, BigNumber\":function(t,r){var n,a,o,s,u=new e.BigNumber(1);if(!i(t)||!i(r))throw new TypeError(\"Positive integer value expected in function combinations\");if(r.gt(t))throw new TypeError(\"k must be less than n in function combinations\");for(n=t.minus(r),r.lt(n)&&(n=r),a=u,o=u,s=t.minus(n);o.lte(s);o=o.plus(1))a=a.times(n.plus(o)).dividedBy(o);\nreturn a}});return o.toTex=\"\\\\binom{${args[0]}}{${args[1]}}\",o}function i(e){return e.isInteger()&&e.gte(0)}var a=r(6).isInteger;t.name=\"combinations\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){var a=n(\"isNegative\",{number:function(e){return 0>e},BigNumber:function(e){return e.isNeg()&&!e.isZero()&&!e.isNaN()},Fraction:function(e){return e.s<0&&e.n>0},Unit:function(e){return e.value<0},\"Array | Matrix\":function(e){return i(e,a)}});return a}var i=r(19);r(6);t.name=\"isNegative\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){var o=n(\"isInteger\",{number:a.isInteger,BigNumber:function(e){return e.isInt()},Fraction:function(e){return 1===e.d&&isFinite(e.n)},\"Array | Matrix\":function(e){return i(e,o)}});return o}var i=r(19),a=r(6);t.name=\"isInteger\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,i){var a=n(r(394)),o=n(r(52)),s=n(r(358)),u=n(r(396)),c=n(r(63)),f=i(\"composition\",{\"number | BigNumber, number | BigNumber\":function(e,t){if(!(u(e)&&s(e)&&u(t)&&s(t)))throw new TypeError(\"Positive integer value expected in function composition\");if(c(t,e))throw new TypeError(\"k must be less than or equal to n in function composition\");return a(o(e,-1),o(t,-1))}});return f.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",f}t.name=\"composition\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,i){var a=n(r(50)),o=n(r(294)),s=n(r(296)),u=n(r(394)),c=n(r(395)),f=n(r(396)),l=i(\"catalan\",{\"number | BigNumber\":function(e){if(!f(e)||c(e))throw new TypeError(\"Non-negative integer value expected in function catalan\");return o(u(s(e,2),e),a(e,1))}});return l.toTex=\"\\\\mathrm{C}_{${args[0]}}\",l}t.name=\"catalan\",t.factory=n},function(e,t,r){e.exports=[r(400),r(401),r(402),r(403)]},function(e,t,r){\"use strict\";function n(e,t,r,n){var a=n(\"arg\",{number:function(e){return Math.atan2(0,e)},Complex:function(e){return Math.atan2(e.im,e.re)},\"Array | Matrix\":function(e){return i(e,a)}});return a.toTex=\"\\\\arg\\\\left(${args[0]}\\\\right)\",a}var i=r(19);t.name=\"arg\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){var a=n(\"conj\",{number:function(e){return e},BigNumber:function(e){return e},Complex:function(t){return new e.Complex(t.re,-t.im)},\"Array | Matrix\":function(e){return i(e,a)}});return a.toTex=\"\\\\left(${args[0]}\\\\right)^*\",a}var i=r(19);t.name=\"conj\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){var a=n(\"im\",{number:function(e){return 0},BigNumber:function(t){return new e.BigNumber(0)},Complex:function(e){return e.im},\"Array | Matrix\":function(e){return i(e,a)}});return a.toTex=\"\\\\Im\\\\left\\\\lbrace${args[0]}\\\\right\\\\rbrace\",a}var i=r(19);t.name=\"im\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){var a=n(\"re\",{number:function(e){return e},BigNumber:function(e){return e},Complex:function(e){return e.re},\"Array | Matrix\":function(e){return i(e,a)}});return a.toTex=\"\\\\Re\\\\left\\\\lbrace${args[0]}\\\\right\\\\rbrace\",a}var i=r(19);t.name=\"re\",t.factory=n},function(e,t,r){e.exports=[r(405),r(406)]},function(e,t,r){\"use strict\";function n(e,t,n,f){var l=n(r(51)),p=f(\"intersect\",{\"Array, Array, Array\":function(e,t,r){if(!a(e))throw new TypeError(\"Array with 3 numbers expected for first argument\");if(!a(t))throw new TypeError(\"Array with 3 numbers expected for second argument\");if(!o(r))throw new TypeError(\"Array with 4 numbers expected as third argument\");return c(e[0],e[1],e[2],t[0],t[1],t[2],r[0],r[1],r[2],r[3])},\"Array, Array, Array, Array\":function(e,t,r,n){if(2===e.length){if(!i(e))throw new TypeError(\"Array with 2 numbers expected for first argument\");if(!i(t))throw new TypeError(\"Array with 2 numbers expected for second argument\");if(!i(r))throw new TypeError(\"Array with 2 numbers expected for third argument\");if(!i(n))throw new TypeError(\"Array with 2 numbers expected for fourth argument\");return s(e[0],e[1],t[0],t[1],r[0],r[1],n[0],n[1])}if(3===e.length){if(!a(e))throw new TypeError(\"Array with 3 numbers expected for first argument\");if(!a(t))throw new TypeError(\"Array with 3 numbers expected for second argument\");if(!a(r))throw new TypeError(\"Array with 3 numbers expected for third argument\");if(!a(n))throw new TypeError(\"Array with 3 numbers expected for fourth argument\");return u(e[0],e[1],e[2],t[0],t[1],t[2],r[0],r[1],r[2],n[0],n[1],n[2])}throw new TypeError(\"Arrays with two or thee dimensional points expected\")},\"Matrix, Matrix, Matrix\":function(e,t,r){return l(p(e.valueOf(),t.valueOf(),r.valueOf()))},\"Matrix, Matrix, Matrix, Matrix\":function(e,t,r,n){return l(p(e.valueOf(),t.valueOf(),r.valueOf(),n.valueOf()))}});return p}function i(e){return 2===e.length&&\"number\"==typeof e[0]&&\"number\"==typeof e[1]}function a(e){return 3===e.length&&\"number\"==typeof e[0]&&\"number\"==typeof e[1]&&\"number\"==typeof e[2]}function o(e){return 4===e.length&&\"number\"==typeof e[0]&&\"number\"==typeof e[1]&&\"number\"==typeof e[2]&&\"number\"==typeof e[3]}function s(e,t,r,n,i,a,o,s){var u=(e-i)*(o-i)+(t-a)*(s-a),c=(o-i)*(r-e)+(s-a)*(n-t),f=(e-i)*(r-e)+(t-a)*(n-t),l=(o-i)*(o-i)+(s-a)*(s-a),p=(r-e)*(r-e)+(n-t)*(n-t),m=(u*c-f*l)/(p*l-c*c),h=(u+m*c)/l,g=e+m*(r-e),v=t+m*(n-t),d=i+h*(o-i),y=a+h*(s-a);return g===d&&v===y?[g,v]:null}function u(e,t,r,n,i,a,o,s,u,c,f,l){var p=(e-o)*(c-o)+(t-s)*(f-s)+(r-u)*(l-u),m=(c-o)*(n-e)+(f-s)*(i-t)+(l-u)*(a-r),h=(e-o)*(n-e)+(t-s)*(i-t)+(r-u)*(a-r),g=(c-o)*(c-o)+(f-s)*(f-s)+(l-u)*(l-u),v=(n-e)*(n-e)+(i-t)*(i-t)+(a-r)*(a-r),d=(p*m-h*g)/(v*g-m*m),y=(p+d*m)/g,x=e+d*(n-e),w=t+d*(i-t),b=r+d*(a-r),N=o+y*(c-o),E=s+y*(f-s),M=u+y*(l-u);return x===N&&w===E&&b===M?[x,w,b]:null}function c(e,t,r,n,i,a,o,s,u,c){var f=(c-e*o-t*s-r*u)/(n*o+i*s+a*u-e-t-r),l=e+f*(n-e),p=t+f*(i-t),m=r+f*(a-r);return[l,p,m]}t.name=\"intersect\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,s){var h=(n(r(51)),s(\"distance\",{\"Array, Array, Array\":function(e,t,r){if(2==e.length&&2==t.length&&2==r.length){if(!i(e))throw new TypeError(\"Array with 2 numbers expected for first argument\");if(!i(t))throw new TypeError(\"Array with 2 numbers expected for second argument\");if(!i(r))throw new TypeError(\"Array with 2 numbers expected for third argument\");var n=(r[1]-r[0])/(t[1]-t[0]),a=n*n*t[0],o=-1*(n*t[0]),s=e[1];return c(e[0],e[1],a,o,s)}throw new TypeError(\"Invalid Arguments: Try again\")},\"Object, Object, Object\":function(e,t,r){if(2==Object.keys(e).length&&2==Object.keys(t).length&&2==Object.keys(r).length){if(!i(e))throw new TypeError(\"Values of pointX and pointY should be numbers\");if(!i(t))throw new TypeError(\"Values of lineOnePtX and lineOnePtY should be numbers\");if(!i(r))throw new TypeError(\"Values of lineTwoPtX and lineTwoPtY should be numbers\");if(e.hasOwnProperty(\"pointX\")&&e.hasOwnProperty(\"pointY\")&&t.hasOwnProperty(\"lineOnePtX\")&&t.hasOwnProperty(\"lineOnePtY\")&&r.hasOwnProperty(\"lineTwoPtX\")&&r.hasOwnProperty(\"lineTwoPtY\")){var n=(r.lineTwoPtY-r.lineTwoPtX)/(t.lineOnePtY-t.lineOnePtX),a=n*n*t.lineOnePtX,o=-1*(n*t.lineOnePtX),s=e.pointX;return c(e.pointX,e.pointY,a,o,s)}throw new TypeError(\"Key names do not match\")}throw new TypeError(\"Invalid Arguments: Try again\")},\"Array, Array\":function(e,t){if(2==e.length&&3==t.length){if(!i(e))throw new TypeError(\"Array with 2 numbers expected for first argument\");if(!a(t))throw new TypeError(\"Array with 3 numbers expected for second argument\");return c(e[0],e[1],t[0],t[1],t[2])}if(3==e.length&&6==t.length){if(!a(e))throw new TypeError(\"Array with 3 numbers expected for first argument\");if(!o(t))throw new TypeError(\"Array with 6 numbers expected for second argument\");return f(e[0],e[1],e[2],t[0],t[1],t[2],t[3],t[4],t[5])}if(2==e.length&&2==t.length){if(!i(e))throw new TypeError(\"Array with 2 numbers expected for first argument\");if(!i(t))throw new TypeError(\"Array with 2 numbers expected for second argument\");return l(e[0],e[1],t[0],t[1])}if(3==e.length&&3==t.length){if(!a(e))throw new TypeError(\"Array with 3 numbers expected for first argument\");if(!a(t))throw new TypeError(\"Array with 3 numbers expected for second argument\");return p(e[0],e[1],e[2],t[0],t[1],t[2])}throw new TypeError(\"Invalid Arguments: Try again\")},\"Object, Object\":function(e,t){if(2==Object.keys(e).length&&3==Object.keys(t).length){if(!i(e))throw new TypeError(\"Values of pointX and pointY should be numbers\");if(!a(t))throw new TypeError(\"Values of xCoeffLine, yCoeffLine and constant should be numbers\");if(e.hasOwnProperty(\"pointX\")&&e.hasOwnProperty(\"pointY\")&&t.hasOwnProperty(\"xCoeffLine\")&&t.hasOwnProperty(\"yCoeffLine\")&&t.hasOwnProperty(\"yCoeffLine\"))return c(e.pointX,e.pointY,t.xCoeffLine,t.yCoeffLine,t.constant);throw new TypeError(\"Key names do not match\")}if(3==Object.keys(e).length&&6==Object.keys(t).length){if(!a(e))throw new TypeError(\"Values of pointX, pointY and pointZ should be numbers\");if(!o(t))throw new TypeError(\"Values of x0, y0, z0, a, b and c should be numbers\");if(e.hasOwnProperty(\"pointX\")&&e.hasOwnProperty(\"pointY\")&&t.hasOwnProperty(\"x0\")&&t.hasOwnProperty(\"y0\")&&t.hasOwnProperty(\"z0\")&&t.hasOwnProperty(\"a\")&&t.hasOwnProperty(\"b\")&&t.hasOwnProperty(\"c\"))return f(e.pointX,e.pointY,e.pointZ,t.x0,t.y0,t.z0,t.a,t.b,t.c);throw new TypeError(\"Key names do not match\")}if(2==Object.keys(e).length&&2==Object.keys(t).length){if(!i(e))throw new TypeError(\"Values of pointOneX and pointOneY should be numbers\");if(!i(t))throw new TypeError(\"Values of pointTwoX and pointTwoY should be numbers\");if(e.hasOwnProperty(\"pointOneX\")&&e.hasOwnProperty(\"pointOneY\")&&t.hasOwnProperty(\"pointTwoX\")&&t.hasOwnProperty(\"pointTwoY\"))return l(e.pointOneX,e.pointOneY,t.pointTwoX,t.pointTwoY);throw new TypeError(\"Key names do not match\")}if(3==Object.keys(e).length&&3==Object.keys(t).length){if(!a(e))throw new TypeError(\"Values of pointOneX, pointOneY and pointOneZ should be numbers\");if(!a(t))throw new TypeError(\"Values of pointTwoX, pointTwoY and pointTwoZ should be numbers\");if(e.hasOwnProperty(\"pointOneX\")&&e.hasOwnProperty(\"pointOneY\")&&e.hasOwnProperty(\"pointOneZ\")&&t.hasOwnProperty(\"pointTwoX\")&&t.hasOwnProperty(\"pointTwoY\")&&t.hasOwnProperty(\"pointTwoZ\"))return p(e.pointOneX,e.pointOneY,e.pointOneZ,t.pointTwoX,t.pointTwoY,t.pointTwoZ);throw new TypeError(\"Key names do not match\")}throw new TypeError(\"Invalid Arguments: Try again\")},Array:function(e){if(!u(e))throw new TypeError(\"Incorrect array format entered for pairwise distance calculation\");return m(e)}}));return h}function i(e){return e.constructor!==Array&&(e=s(e)),\"number\"==typeof e[0]&&\"number\"==typeof e[1]}function a(e){return e.constructor!==Array&&(e=s(e)),\"number\"==typeof e[0]&&\"number\"==typeof e[1]&&\"number\"==typeof e[2]}function o(e){return e.constructor!==Array&&(e=s(e)),\"number\"==typeof e[0]&&\"number\"==typeof e[1]&&\"number\"==typeof e[2]&&\"number\"==typeof e[3]&&\"number\"==typeof e[4]&&\"number\"==typeof e[5]}function s(e){for(var t=Object.keys(e),r=[],n=0;n<t.length;n++)r.push(e[t[n]]);return r}function u(e){if(2==e[0].length&&\"number\"==typeof e[0][0]&&\"number\"==typeof e[0][1]){for(var t in e)if(2!=e[t].length||\"number\"!=typeof e[t][0]||\"number\"!=typeof e[t][1])return!1}else{if(3!=e[0].length||\"number\"!=typeof e[0][0]||\"number\"!=typeof e[0][1]||\"number\"!=typeof e[0][2])return!1;for(var t in e)if(3!=e[t].length||\"number\"!=typeof e[t][0]||\"number\"!=typeof e[t][1]||\"number\"!=typeof e[t][2])return!1}return!0}function c(e,t,r,n,i){var a=Math.abs(r*e+n*t+i),o=Math.pow(r*r+n*n,.5),s=a/o;return s}function f(e,t,r,n,i,a,o,s,u){var c=[(i-t)*u-(a-r)*s,(a-r)*o-(n-e)*u,(n-e)*s-(i-t)*o];c=Math.pow(c[0]*c[0]+c[1]*c[1]+c[2]*c[2],.5);var f=Math.pow(o*o+s*s+u*u,.5),l=c/f;return l}function l(e,t,r,n){var i=n-t,a=r-e,o=i*i+a*a,s=Math.pow(o,.5);return s}function p(e,t,r,n,i,a){var o=a-r,s=i-t,u=n-e,c=o*o+s*s+u*u,f=Math.pow(c,.5);return f}function m(e){for(var t=[],r=0;r<e.length-1;r++)for(var n=r+1;n<e.length;n++)2==e[0].length?t.push(l(e[r][0],e[r][1],e[n][0],e[n][1])):3==e[0].length&&t.push(p(e[r][0],e[r][1],e[r][2],e[n][0],e[n][1],e[n][2]));return t}t.name=\"distance\",t.factory=n},function(e,t,r){e.exports=[r(408),r(409),r(410),r(411)]},function(e,t,r){\"use strict\";function n(e,t,n,i){var a=r(30),o=n(r(51)),s=n(r(368)),u=n(r(409)),c=n(r(347)),f=n(r(360)),l=n(r(298)),p=n(r(56)),m=n(r(57)),h=i(\"and\",{\"number, number\":function(e,t){return!(!e||!t)},\"Complex, Complex\":function(e,t){return!(0===e.re&&0===e.im||0===t.re&&0===t.im)},\"BigNumber, BigNumber\":function(e,t){return!(e.isZero()||t.isZero()||e.isNaN()||t.isNaN())},\"Unit, Unit\":function(e,t){return 0!==e.value&&null!==e.value&&0!==t.value&&null!==t.value},\"Matrix, Matrix\":function(e,t){var r;switch(e.storage()){case\"sparse\":switch(t.storage()){case\"sparse\":r=f(e,t,h,!1);break;default:r=c(t,e,h,!0)}break;default:switch(t.storage()){case\"sparse\":r=c(e,t,h,!1);break;default:r=p(e,t,h)}}return r},\"Array, Array\":function(e,t){return h(o(e),o(t)).valueOf()},\"Array, Matrix\":function(e,t){return h(o(e),t)},\"Matrix, Array\":function(e,t){return h(e,o(t))},\"Matrix, any\":function(e,t){if(u(t))return s(e.size(),e.storage());var r;switch(e.storage()){case\"sparse\":r=l(e,t,h,!1);break;default:r=m(e,t,h,!1)}return r},\"any, Matrix\":function(e,t){if(u(e))return s(e.size(),e.storage());var r;switch(t.storage()){case\"sparse\":r=l(t,e,h,!0);break;default:r=m(t,e,h,!0)}return r},\"Array, any\":function(e,t){return h(o(e),t).valueOf()},\"any, Array\":function(e,t){return h(e,o(t)).valueOf()}});return h.toTex=\"\\\\left(${args[0]}\"+a.operators.and+\"${args[1]}\\\\right)\",h}t.name=\"and\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){var o=r(30),s=a(\"not\",{number:function(e){return!e},Complex:function(e){return 0===e.re&&0===e.im},BigNumber:function(e){return e.isZero()||e.isNaN()},Unit:function(e){return null===e.value||0==e.value},\"Array | Matrix\":function(e){return i(e,s)}});return s.toTex=o.operators.not+\"\\\\left(${args[0]}\\\\right)\",s}var i=r(19);t.name=\"not\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,i){var a=r(30),o=n(r(51)),s=n(r(60)),u=n(r(303)),c=n(r(62)),f=n(r(56)),l=n(r(57)),p=i(\"or\",{\"number, number\":function(e,t){return!(!e&&!t)},\"Complex, Complex\":function(e,t){return 0!==e.re||0!==e.im||0!==t.re||0!==t.im},\"BigNumber, BigNumber\":function(e,t){return!e.isZero()&&!e.isNaN()||!t.isZero()&&!t.isNaN()},\"Unit, Unit\":function(e,t){return 0!==e.value&&null!==e.value||0!==t.value&&null!==t.value},\"Matrix, Matrix\":function(e,t){var r;switch(e.storage()){case\"sparse\":switch(t.storage()){case\"sparse\":r=u(e,t,p);break;default:r=s(t,e,p,!0)}break;default:switch(t.storage()){case\"sparse\":r=s(e,t,p,!1);break;default:r=f(e,t,p)}}return r},\"Array, Array\":function(e,t){return p(o(e),o(t)).valueOf()},\"Array, Matrix\":function(e,t){return p(o(e),t)},\"Matrix, Array\":function(e,t){return p(e,o(t))},\"Matrix, any\":function(e,t){var r;switch(e.storage()){case\"sparse\":r=c(e,t,p,!1);break;default:r=l(e,t,p,!1)}return r},\"any, Matrix\":function(e,t){var r;switch(t.storage()){case\"sparse\":r=c(t,e,p,!0);break;default:r=l(t,e,p,!0)}return r},\"Array, any\":function(e,t){return l(o(e),t,p,!1).valueOf()},\"any, Array\":function(e,t){return l(o(t),e,p,!0).valueOf()}});return p.toTex=\"\\\\left(${args[0]}\"+a.operators.or+\"${args[1]}\\\\right)\",p}t.name=\"or\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,i){var a=r(30),o=n(r(51)),s=n(r(60)),u=n(r(61)),c=n(r(62)),f=n(r(56)),l=n(r(57)),p=i(\"xor\",{\"number, number\":function(e,t){return!!(!!e^!!t)},\"Complex, Complex\":function(e,t){return!!((0!==e.re||0!==e.im)^(0!==t.re||0!==t.im))},\"BigNumber, BigNumber\":function(e,t){return!!((!e.isZero()&&!e.isNaN())^(!t.isZero()&&!t.isNaN()))},\"Unit, Unit\":function(e,t){return!!((0!==e.value&&null!==e.value)^(0!==t.value&&null!==t.value))},\"Matrix, Matrix\":function(e,t){var r;switch(e.storage()){case\"sparse\":switch(t.storage()){case\"sparse\":r=u(e,t,p);break;default:r=s(t,e,p,!0)}break;default:switch(t.storage()){case\"sparse\":r=s(e,t,p,!1);break;default:r=f(e,t,p)}}return r},\"Array, Array\":function(e,t){return p(o(e),o(t)).valueOf()},\"Array, Matrix\":function(e,t){return p(o(e),t)},\"Matrix, Array\":function(e,t){return p(e,o(t))},\"Matrix, any\":function(e,t){var r;switch(e.storage()){case\"sparse\":r=c(e,t,p,!1);break;default:r=l(e,t,p,!1)}return r},\"any, Matrix\":function(e,t){var r;switch(t.storage()){case\"sparse\":r=c(t,e,p,!0);break;default:r=l(t,e,p,!0)}return r},\"Array, any\":function(e,t){return l(o(e),t,p,!1).valueOf()},\"any, Array\":function(e,t){return l(o(t),e,p,!0).valueOf()}});return p.toTex=\"\\\\left(${args[0]}\"+a.operators.xor+\"${args[1]}\\\\right)\",p}t.name=\"xor\",t.factory=n},function(e,t,r){e.exports=[r(279),r(413),r(301),r(414),r(415),r(304),r(416),r(299),r(417),r(308),r(418),r(419),r(420),r(310),r(365),r(322),r(368)]},function(e,t,r){\"use strict\";function n(e,t,n,a){function o(e,t){var r=i(e),n=i(t);if(1!=r.length||1!=n.length||3!=r[0]||3!=n[0])throw new RangeError(\"Vectors with length 3 expected (Size A = [\"+r.join(\", \")+\"], B = [\"+n.join(\", \")+\"])\");return[u(c(e[1],t[2]),c(e[2],t[1])),u(c(e[2],t[0]),c(e[0],t[2])),u(c(e[0],t[1]),c(e[1],t[0]))]}var s=n(r(51)),u=n(r(302)),c=n(r(296)),f=a(\"cross\",{\"Matrix, Matrix\":function(e,t){return s(o(e.toArray(),t.toArray()))},\"Matrix, Array\":function(e,t){return s(o(e.toArray(),t))},\"Array, Matrix\":function(e,t){return s(o(e,t.toArray()))},\"Array, Array\":o});return f.toTex=\"\\\\left(${args[0]}\\\\right)\\\\times\\\\left(${args[1]}\\\\right)\",f}var i=r(40).size;t.name=\"cross\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,s){function u(e,t,r,n){if(!o(t))throw new TypeError(\"Second parameter in function diag must be an integer\");var i=t>0?t:0,a=0>t?-t:0;switch(r.length){case 1:return c(e,t,n,r[0],a,i);case 2:return f(e,t,n,r,a,i)}throw new RangeError(\"Matrix for function diag must be 2 dimensional\")}function c(t,r,n,i,a,o){var s=[i+a,i+o],u=e.Matrix.storage(n||\"dense\"),c=u.diagonal(s,t,r);return null!==n?c:c.valueOf()}function f(e,t,r,n,i,o){if(e&&e.isMatrix===!0){var s=e.diagonal(t);return null!==r?r!==s.storage()?l(s,r):s:s.valueOf()}for(var u=Math.min(n[0]-i,n[1]-o),c=[],f=0;u>f;f++)c[f]=a(e[f+i][f+o]);return null!==r?l(c):c}var l=n(r(51)),p=s(\"diag\",{Array:function(e){return u(e,0,i.size(e),null)},\"Array, number\":function(e,t){return u(e,t,i.size(e),null)},\"Array, BigNumber\":function(e,t){return u(e,t.toNumber(),i.size(e),null)},\"Array, string\":function(e,t){return u(e,0,i.size(e),t)},\"Array, number, string\":function(e,t,r){return u(e,t,i.size(e),r)},\"Array, BigNumber, string\":function(e,t,r){return u(e,t.toNumber(),i.size(e),r)},Matrix:function(e){return u(e,0,e.size(),e.storage())},\"Matrix, number\":function(e,t){return u(e,t,e.size(),e.storage())},\"Matrix, BigNumber\":function(e,t){return u(e,t.toNumber(),e.size(),e.storage())},\"Matrix, string\":function(e,t){return u(e,0,e.size(),t)},\"Matrix, number, string\":function(e,t,r){return u(e,t,e.size(),r)},\"Matrix, BigNumber, string\":function(e,t,r){return u(e,t.toNumber(),e.size(),r)}});return p.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",p}var i=r(40),a=r(3).clone,o=r(6).isInteger;t.name=\"diag\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){function o(e,t){var r=i(e),n=i(t),a=r[0];if(1!==r.length||1!==n.length)throw new RangeError(\"Vector expected\");if(r[0]!=n[0])throw new RangeError(\"Vectors must have equal length (\"+r[0]+\" != \"+n[0]+\")\");if(0==a)throw new RangeError(\"Cannot calculate the dot product of empty vectors\");for(var o=0,c=0;a>c;c++)o=s(o,u(e[c],t[c]));return o}var s=n(r(50)),u=n(r(296)),c=a(\"dot\",{\"Matrix, Matrix\":function(e,t){return o(e.toArray(),t.toArray())},\"Matrix, Array\":function(e,t){return o(e.toArray(),t)},\"Array, Matrix\":function(e,t){return o(e,t.toArray())},\"Array, Array\":o});return c.toTex=\"\\\\left(${args[0]}\\\\cdot${args[1]}\\\\right)\",c}var i=r(40).size;t.name=\"dot\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,o){var s=n(r(51)),u=o(\"flatten\",{Array:function(e){return a(i(e))},Matrix:function(e){var t=a(i(e.toArray()));return s(t)}});return u.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",u}var i=r(3).clone,a=r(40).flatten;t.name=\"flatten\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,o){function s(t,r){var n=u(t),i=n?new e.BigNumber(1):1;if(c(t),r){var o=f(r);return t.length>0?o.resize(t,i):o}var s=[];return t.length>0?a(s,t,i):s}function u(e){var t=!1;return e.forEach(function(e,r,n){e&&e.isBigNumber===!0&&(t=!0,n[r]=e.toNumber())}),t}function c(e){e.forEach(function(e){if(\"number\"!=typeof e||!i(e)||0>e)throw new Error(\"Parameters in function ones must be positive integers\")})}var f=n(r(51)),l=o(\"ones\",{\"\":function(){return\"array\"===t.matrix?s([]):s([],\"default\")},\"...number | BigNumber | string\":function(e){var r=e[e.length-1];if(\"string\"==typeof r){var n=e.pop();return s(e,n)}return\"array\"===t.matrix?s(e):s(e,\"default\")},Array:s,Matrix:function(e){var t=e.storage();return s(e.valueOf(),t)},\"Array | Matrix, string\":function(e,t){return s(e.valueOf(),t)}});return l.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",l}var i=r(6).isInteger,a=r(40).resize;t.name=\"ones\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,f){function l(e,t,r){if(void 0!==r){if(\"string\"!=typeof r||1!==r.length)throw new TypeError(\"Single character expected as defaultValue\")}else r=\" \";if(1!==t.length)throw new i(t.length,1);var n=t[0];if(\"number\"!=typeof n||!o(n))throw new TypeError(\"Invalid size, must contain positive integers (size: \"+s(t)+\")\");if(e.length>n)return e.substring(0,n);if(e.length<n){for(var a=e,u=0,c=n-e.length;c>u;u++)a+=r;return a}return e}var p=n(r(51)),m=function(e,r,n){if(2!=arguments.length&&3!=arguments.length)throw new a(\"resize\",arguments.length,2,3);if(r&&r.isMatrix===!0&&(r=r.valueOf()),r.length&&r[0]&&r[0].isBigNumber===!0&&(r=r.map(function(e){return e&&e.isBigNumber===!0?e.toNumber():e})),e&&e.isMatrix===!0)return e.resize(r,n,!0);if(\"string\"==typeof e)return l(e,r,n);var i=Array.isArray(e)?!1:\"array\"!==t.matrix;if(0==r.length){for(;Array.isArray(e);)e=e[0];return u(e)}Array.isArray(e)||(e=[e]),e=u(e);var o=c.resize(e,r,n);return i?p(o):o};return m.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",m}var i=r(42),a=r(11),o=r(6).isInteger,s=r(23).format,u=r(3).clone,c=r(40);t.name=\"resize\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){var o=n(r(51)),s=a(\"size\",{Matrix:function(e){return o(e.size())},Array:i.size,string:function(e){return\"array\"===t.matrix?[e.length]:o([e.length])},\"number | Complex | BigNumber | Unit | boolean | null\":function(e){return\"array\"===t.matrix?[]:o([])}});return s.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",s}var i=r(40);t.name=\"size\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,o){var s=n(r(51)),u=o(\"squeeze\",{Array:function(e){return a.squeeze(i.clone(e))},Matrix:function(e){var t=a.squeeze(e.toArray());return Array.isArray(t)?s(t):t},any:function(e){return i.clone(e)}});return u.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",u}var i=r(3),a=r(40);t.name=\"squeeze\",t.factory=n},function(e,t,r){e.exports=[r(394),r(392),r(393),r(422),r(425),r(426),r(427),r(429),r(430)]},function(e,t,r){\"use strict\";function n(e,t,n,i){function a(e,t){var r=t.size().length,n=e.size().length;if(r>1)throw new Error(\"first object must be one dimensional\");if(n>1)throw new Error(\"second object must be one dimensional\");if(r!==n)throw new Error(\"Length of two vectors must be equal\");var i=u(e);if(0===i)throw new Error(\"Sum of elements in first object must be non zero\");var a=u(t);if(0===a)throw new Error(\"Sum of elements in second object must be non zero\");var o=s(e,u(e)),m=s(t,u(t)),h=u(c(o,l(f(o,m))));return p(h)?h:Number.NaN}var o=n(r(51)),s=n(r(294)),u=n(r(423)),c=n(r(296)),f=n(r(346)),l=n(r(352)),p=n(r(424)),m=i(\"kldivergence\",{\"Array, Array\":function(e,t){return a(o(e),o(t))},\"Matrix, Array\":function(e,t){return a(e,o(t))},\"Array, Matrix\":function(e,t){return a(o(e),t)},\"Matrix, Matrix\":function(e,t){return a(e,t)}});return m}t.name=\"kldivergence\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){function o(r){var n=void 0;if(i(r,function(e){n=void 0===n?e:s(n,e)}),void 0===n)switch(t.number){case\"number\":return 0;case\"bignumber\":return new e.BigNumber(0);case\"fraction\":return new e.Fraction(0);default:return 0}return n}var s=n(r(52)),u=a(\"sum\",{\"Array | Matrix\":function(e){return o(e)},\"Array | Matrix, number | BigNumber\":function(){throw new Error(\"sum(A, dim) is not yet supported\")},\"...\":function(){return o(arguments)}});return u.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",u}var i=r(290);t.name=\"sum\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){var a=n(\"isNumeric\",{\"number | BigNumber | Fraction | boolean\":function(){return!0},\"Complex | Unit | string\":function(){return!1},\"Array | Matrix\":function(e){return i(e,a)}});return a}var i=r(19);r(6);t.name=\"isNumeric\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){var o=n(r(50)),s=n(r(296)),u=n(r(294)),c=n(r(392)),f=n(r(396)),l=n(r(358));return a(\"multinomial\",{\"Array | Matrix\":function(e){var t=0,r=1;return i(e,function(e){if(!f(e)||!l(e))throw new TypeError(\"Positive integer value expected in function multinomial\");t=o(t,e),r=s(r,c(e))}),u(c(t),r)}})}var i=r(290);t.name=\"multinomial\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,o){var s=n(r(392)),u=o(\"permutations\",{\"number | BigNumber\":s,\"number, number\":function(e,t){var r,n;if(!a(e)||0>e)throw new TypeError(\"Positive integer value expected in function permutations\");if(!a(t)||0>t)throw new TypeError(\"Positive integer value expected in function permutations\");if(t>e)throw new TypeError(\"second argument k must be less than or equal to first argument n\");for(r=1,n=e-t+1;e>=n;n++)r*=n;return r},\"BigNumber, BigNumber\":function(t,r){var n,a;if(!i(t)||!i(r))throw new TypeError(\"Positive integer value expected in function permutations\");if(r.gt(t))throw new TypeError(\"second argument k must be less than or equal to first argument n\");for(n=new e.BigNumber(1),a=t.minus(r).plus(1);a.lte(t);a=a.plus(1))n=n.times(a);return n}});return u.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",u}function i(e){return e.isInteger()&&e.gte(0)}var a=r(6).isInteger;t.name=\"permutations\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,i){var a=n(r(428)),o=a(\"uniform\").pickRandom;return o.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",o}t.name=\"pickRandom\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,o){function s(e){if(!f.hasOwnProperty(e))throw new Error(\"Unknown distribution \"+e);var t=Array.prototype.slice.call(arguments,1),r=f[e].apply(this,t);return function(e){var t={random:function(e,t,n){var s,c,f;if(arguments.length>3)throw new i(\"random\",arguments.length,0,3);if(1===arguments.length?a(e)?s=e:f=e:2===arguments.length?a(e)?(s=e,f=t):(c=e,f=t):(s=e,c=t,f=n),void 0===f&&(f=1),void 0===c&&(c=0),void 0!==s){var l=o(s.valueOf(),c,f,r);return s&&s.isMatrix===!0?u(l):l}return r(c,f)},randomInt:function(e,t,r){var s,c,f;if(arguments.length>3||arguments.length<1)throw new i(\"randomInt\",arguments.length,1,3);if(1===arguments.length?a(e)?s=e:f=e:2===arguments.length?a(e)?(s=e,f=t):(c=e,f=t):(s=e,c=t,f=r),void 0===c&&(c=0),void 0!==s){var l=o(s.valueOf(),c,f,n);return s&&s.isMatrix===!0?u(l):l}return n(c,f)},pickRandom:function(e){if(1!==arguments.length)throw new i(\"pickRandom\",arguments.length,1);if(e&&e.isMatrix===!0)e=e.valueOf();else if(!Array.isArray(e))throw new TypeError(\"Unsupported type of value in function pickRandom\");if(c.size(e).length>1)throw new Error(\"Only one dimensional vectors supported\");return e[Math.floor(Math.random()*e.length)]}},r=function(t,r){return t+e()*(r-t)},n=function(t,r){return Math.floor(t+e()*(r-t))},o=function(e,t,r,n){var i,a,s=[];if(e=e.slice(0),e.length>1)for(a=0,i=e.shift();i>a;a++)s.push(o(e,t,r,n));else for(a=0,i=e.shift();i>a;a++)s.push(n(t,r));return s};return t}(r)}var u=n(r(51)),c=r(40),f={uniform:function(){return Math.random},normal:function(){return function(){for(var e,t,r=-1;0>r||r>1;)e=Math.random(),t=Math.random(),r=1/6*Math.pow(-2*Math.log(e),.5)*Math.cos(2*Math.PI*t)+.5;return r}}};return s.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",s}var i=r(11),a=r(288);t.name=\"distribution\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,i){var a=n(r(428)),o=a(\"uniform\").random;return o.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",o}t.name=\"random\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,i){var a=n(r(428)),o=a(\"uniform\").randomInt;return o.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",o}t.name=\"randomInt\",t.factory=n},function(e,t,r){e.exports=[r(432),r(433),r(434),r(63),r(329),r(59),r(435),r(436)]},function(e,t,r){\"use strict\";function n(e,t,n,a){var o=n(r(51)),s=n(r(60)),u=n(r(303)),c=n(r(62)),f=n(r(56)),l=n(r(57)),p=a(\"compare\",{\"boolean, boolean\":function(e,t){return e===t?0:e>t?1:-1},\"number, number\":function(e,r){return e===r||i(e,r,t.epsilon)?0:e>r?1:-1},\"BigNumber, BigNumber\":function(t,r){return new e.BigNumber(t.cmp(r))},\"Fraction, Fraction\":function(t,r){return new e.Fraction(t.compare(r))},\"Complex, Complex\":function(){throw new TypeError(\"No ordering relation is defined for complex numbers\")},\"Unit, Unit\":function(e,r){if(!e.equalBase(r))throw new Error(\"Cannot compare units with different base\");return e.value===r.value||i(e.value,r.value,t.epsilon)?0:e.value>r.value?1:-1},\"string, string\":function(e,t){return e===t?0:e>t?1:-1},\"Matrix, Matrix\":function(e,t){var r;switch(e.storage()){case\"sparse\":switch(t.storage()){case\"sparse\":r=u(e,t,p);break;default:r=s(t,e,p,!0)}break;default:switch(t.storage()){case\"sparse\":r=s(e,t,p,!1);break;default:r=f(e,t,p)}}return r},\"Array, Array\":function(e,t){return p(o(e),o(t)).valueOf()},\"Array, Matrix\":function(e,t){return p(o(e),t)},\"Matrix, Array\":function(e,t){return p(e,o(t))},\"Matrix, any\":function(e,t){var r;switch(e.storage()){case\"sparse\":r=c(e,t,p,!1);break;default:r=l(e,t,p,!1)}return r},\"any, Matrix\":function(e,t){var r;switch(t.storage()){case\"sparse\":r=c(t,e,p,!0);break;default:r=l(t,e,p,!0)}return r},\"Array, any\":function(e,t){return l(o(e),t,p,!1).valueOf()},\"any, Array\":function(e,t){return l(o(t),e,p,!0).valueOf()}});return p.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",p}var i=r(6).nearlyEqual;t.name=\"compare\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,i){function a(e,t){if(Array.isArray(e)){if(Array.isArray(t)){var r=e.length;if(r!==t.length)return!1;for(var n=0;r>n;n++)if(!a(e[n],t[n]))return!1;return!0}return!1}return Array.isArray(t)?!1:o(e,t)}var o=n(r(434)),s=i(\"deepEqual\",{\"any, any\":function(e,t){return a(e.valueOf(),t.valueOf())}});return s.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",s}t.name=\"deepEqual\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,i){var a=n(r(51)),o=n(r(48)),s=n(r(60)),u=n(r(61)),c=n(r(62)),f=n(r(56)),l=n(r(57)),p=r(30),m=i(\"equal\",{\"any, any\":function(e,t){return null===e?null===t:null===t?null===e:void 0===e?void 0===t:void 0===t?void 0===e:o(e,t)},\"Matrix, Matrix\":function(e,t){var r;switch(e.storage()){case\"sparse\":switch(t.storage()){case\"sparse\":r=u(e,t,o);break;default:r=s(t,e,o,!0)}break;default:switch(t.storage()){case\"sparse\":r=s(e,t,o,!1);break;default:r=f(e,t,o)}}return r},\"Array, Array\":function(e,t){return m(a(e),a(t)).valueOf()},\"Array, Matrix\":function(e,t){return m(a(e),t)},\"Matrix, Array\":function(e,t){return m(e,a(t))},\"Matrix, any\":function(e,t){var r;switch(e.storage()){case\"sparse\":r=c(e,t,o,!1);break;default:r=l(e,t,o,!1)}return r},\"any, Matrix\":function(e,t){var r;switch(t.storage()){case\"sparse\":r=c(t,e,o,!0);break;default:r=l(t,e,o,!0)}return r},\"Array, any\":function(e,t){return l(a(e),t,o,!1).valueOf()},\"any, Array\":function(e,t){return l(a(t),e,o,!0).valueOf()}});return m.toTex=\"\\\\left(${args[0]}\"+p.operators.equal+\"${args[1]}\\\\right)\",m}t.name=\"equal\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){var o=n(r(51)),s=n(r(60)),u=n(r(61)),c=n(r(62)),f=n(r(56)),l=n(r(57)),p=r(30),m=a(\"smallerEq\",{\"boolean, boolean\":function(e,t){return t>=e},\"number, number\":function(e,r){return r>=e||i(e,r,t.epsilon)},\"BigNumber, BigNumber\":function(e,t){return e.lte(t)},\"Fraction, Fraction\":function(e,t){return 1!==e.compare(t)},\"Complex, Complex\":function(){throw new TypeError(\"No ordering relation is defined for complex numbers\");\n},\"Unit, Unit\":function(e,r){if(!e.equalBase(r))throw new Error(\"Cannot compare units with different base\");return e.value<=r.value||i(e.value,r.value,t.epsilon)},\"string, string\":function(e,t){return t>=e},\"Matrix, Matrix\":function(e,t){var r;switch(e.storage()){case\"sparse\":switch(t.storage()){case\"sparse\":r=u(e,t,m);break;default:r=s(t,e,m,!0)}break;default:switch(t.storage()){case\"sparse\":r=s(e,t,m,!1);break;default:r=f(e,t,m)}}return r},\"Array, Array\":function(e,t){return m(o(e),o(t)).valueOf()},\"Array, Matrix\":function(e,t){return m(o(e),t)},\"Matrix, Array\":function(e,t){return m(e,o(t))},\"Matrix, any\":function(e,t){var r;switch(e.storage()){case\"sparse\":r=c(e,t,m,!1);break;default:r=l(e,t,m,!1)}return r},\"any, Matrix\":function(e,t){var r;switch(t.storage()){case\"sparse\":r=c(t,e,m,!0);break;default:r=l(t,e,m,!0)}return r},\"Array, any\":function(e,t){return l(o(e),t,m,!1).valueOf()},\"any, Array\":function(e,t){return l(o(t),e,m,!0).valueOf()}});return m.toTex=\"\\\\left(${args[0]}\"+p.operators.smallerEq+\"${args[1]}\\\\right)\",m}var i=r(6).nearlyEqual;t.name=\"smallerEq\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){var o=n(r(51)),s=n(r(60)),u=n(r(61)),c=n(r(62)),f=n(r(56)),l=n(r(57)),p=r(30),m=a(\"unequal\",{\"any, any\":function(e,t){return null===e?null!==t:null===t?null!==e:void 0===e?void 0!==t:void 0===t?void 0!==e:h(e,t)},\"Matrix, Matrix\":function(e,t){var r;switch(e.storage()){case\"sparse\":switch(t.storage()){case\"sparse\":r=u(e,t,h);break;default:r=s(t,e,h,!0)}break;default:switch(t.storage()){case\"sparse\":r=s(e,t,h,!1);break;default:r=f(e,t,h)}}return r},\"Array, Array\":function(e,t){return m(o(e),o(t)).valueOf()},\"Array, Matrix\":function(e,t){return m(o(e),t)},\"Matrix, Array\":function(e,t){return m(e,o(t))},\"Matrix, any\":function(e,t){var r;switch(e.storage()){case\"sparse\":r=c(e,t,h,!1);break;default:r=l(e,t,h,!1)}return r},\"any, Matrix\":function(e,t){var r;switch(t.storage()){case\"sparse\":r=c(t,e,h,!0);break;default:r=l(t,e,h,!0)}return r},\"Array, any\":function(e,t){return l(o(e),t,h,!1).valueOf()},\"any, Array\":function(e,t){return l(o(t),e,h,!0).valueOf()}}),h=a(\"_unequal\",{\"boolean, boolean\":function(e,t){return e!==t},\"number, number\":function(e,r){return!i(e,r,t.epsilon)},\"BigNumber, BigNumber\":function(e,t){return!e.eq(t)},\"Fraction, Fraction\":function(e,t){return 0!==e.compare(t)},\"Complex, Complex\":function(e,r){return!i(e.re,r.re,t.epsilon)||!i(e.im,r.im,t.epsilon)},\"Unit, Unit\":function(e,r){if(!e.equalBase(r))throw new Error(\"Cannot compare units with different base\");return!i(e.value,r.value,t.epsilon)},\"string, string\":function(e,t){return e!==t}});return m.toTex=\"\\\\left(${args[0]}\"+p.operators.unequal+\"${args[1]}\\\\right)\",m}var i=r(6).nearlyEqual;t.name=\"unequal\",t.factory=n},function(e,t,r){e.exports=[r(289),r(293),r(438),r(306),r(440),r(441),r(442),r(443),r(423),r(444)]},function(e,t,r){\"use strict\";function n(e,t,n,a){function o(e){e=i(e.valueOf());var t=e.length;if(0==t)throw new Error(\"Cannot calculate median of an empty array\");if(t%2==0){for(var r=t/2-1,n=f(e,r+1),a=e[r],o=0;r>o;++o)c(e[o],a)>0&&(a=e[o]);return m(a,n)}var s=f(e,(t-1)/2);return p(s)}var s=n(r(52)),u=n(r(295)),c=n(r(432)),f=n(r(439)),l=a(\"median\",{\"Array | Matrix\":o,\"Array | Matrix, number | BigNumber\":function(e,t){throw new Error(\"median(A, dim) is not yet supported\")},\"...\":function(){return o(Array.prototype.slice.call(arguments))}}),p=a({\"number | BigNumber | Unit\":function(e){return e}}),m=a({\"number | BigNumber | Unit, number | BigNumber | Unit\":function(e,t){return u(s(e,t),2)}});return l.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",l}var i=r(40).flatten;t.name=\"median\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){function o(e,t){return-c(e,t)}function s(e,t,r){if(!i(t)||0>t)throw new Error(\"k must be a non-negative integer\");if(e&&e.isMatrix){var n=e.size();if(n.length>1)throw new Error(\"Only one dimensional matrices supported\");return u(e.valueOf(),t,r)}return Array.isArray(e)?u(e,t,r):void 0}function u(e,t,r){if(t>=e.length)throw new Error(\"k out of bounds\");for(var n=0,i=e.length-1;i>n;){for(var a=n,o=i,s=e[Math.floor(Math.random()*(i-n+1))+n];o>a;)if(r(e[a],s)>=0){var u=e[o];e[o]=e[a],e[a]=u,--o}else++a;r(e[a],s)>0&&--a,a>=t?i=a:n=a+1}return e[t]}var c=n(r(432));return a(\"partitionSelect\",{\"Array | Matrix, number\":function(e,t){return s(e,t,c)},\"Array | Matrix, number, string\":function(e,t,r){if(\"asc\"===r)return s(e,t,c);if(\"desc\"===r)return s(e,t,o);throw new Error('Compare string must be \"asc\" or \"desc\"')},\"Array | Matrix, number, function\":s})}var i=r(6).isInteger;t.name=\"partitionSelect\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){function a(e){e=i(e.valueOf());var t=e.length;if(0==t)throw new Error(\"Cannot calculate mode of an empty array\");var r={},n=[],a=0;for(var o in e)e[o]in r||(r[e[o]]=0),r[e[o]]++,r[e[o]]==a?n.push(e[o]):r[e[o]]>a&&(a=r[e[o]],n=[e[o]]);return n}var o=n(\"mode\",{\"Array | Matrix\":a,\"...\":function(){return a(Array.prototype.slice.call(arguments))}});return o}var i=r(40).flatten;t.name=\"mode\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){function o(e){var t=void 0;if(i(e,function(e){t=void 0===t?e:s(t,e)}),void 0===t)throw new Error(\"Cannot calculate prod of an empty array\");return t}var s=n(r(297)),u=a(\"prod\",{\"Array | Matrix\":o,\"Array | Matrix, number | BigNumber\":function(e,t){throw new Error(\"prod(A, dim) is not yet supported\")},\"...\":function(){return o(arguments)}});return u.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",u}var i=r(290);t.name=\"prod\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,u){function c(t,r,n){var o,u,c;if(arguments.length<2||arguments.length>3)throw new SyntaxError(\"Function quantileSeq requires two or three parameters\");if(s(t)){if(n=n||!1,\"boolean\"==typeof n){if(u=t.valueOf(),a(r)){if(0>r)throw new Error(\"N/prob must be non-negative\");if(1>=r)return f(u,r,n);if(r>1){if(!i(r))throw new Error(\"N must be a positive integer\");var l=r+1;o=new Array(r);for(var p=0;r>p;)o[p]=f(u,++p/l,n);return o}}if(r&&r.isBigNumber){if(r.isNegative())throw new Error(\"N/prob must be non-negative\");if(c=r.constructor.ONE,r.lte(c))return f(u,r,n);if(r.gt(c)){if(!r.isInteger())throw new Error(\"N must be a positive integer\");var m=r.toNumber();if(m>4294967295)throw new Error(\"N must be less than or equal to 2^32-1, as that is the maximum length of an Array\");var l=new e.BigNumber(m+1);o=new Array(m);for(var p=0;m>p;)o[p]=f(u,new e.BigNumber(++p).div(l),n);return o}}if(Array.isArray(r)){o=new Array(r.length);for(var p=0;p<o.length;++p){var h=r[p];if(a(h)){if(0>h||h>1)throw new Error(\"Probability must be between 0 and 1, inclusive\")}else{if(!h||!h.isBigNumber)throw new TypeError(\"Unexpected type of argument in function quantileSeq\");if(c=h.constructor.ONE,h.isNegative()||h.gt(c))throw new Error(\"Probability must be between 0 and 1, inclusive\")}o[p]=f(u,h,n)}return o}throw new TypeError(\"Unexpected type of argument in function quantileSeq\")}throw new TypeError(\"Unexpected type of argument in function quantileSeq\")}throw new TypeError(\"Unexpected type of argument in function quantileSeq\")}function f(e,t,r){var n=o(e),i=n.length;if(0===i)throw new Error(\"Cannot calculate quantile of an empty sequence\");if(a(t)){var s=t*(i-1),u=s%1;if(0===u){var c=r?n[s]:m(n,s);return g(c),c}var f,v,d=Math.floor(s);if(r)f=n[d],v=n[d+1];else{v=m(n,d+1),f=n[d];for(var y=0;d>y;++y)h(n[y],f)>0&&(f=n[y])}return g(f),g(v),l(p(f,1-u),p(v,u))}var s=t.times(i-1);if(s.isInteger()){s=s.toNumber();var c=r?n[s]:m(n,s);return g(c),c}var f,v,d=s.floor(),u=s.minus(d),x=d.toNumber();if(r)f=n[x],v=n[x+1];else{v=m(n,x+1),f=n[x];for(var y=0;x>y;++y)h(n[y],f)>0&&(f=n[y])}g(f),g(v);var w=u.constructor.ONE;return l(p(f,w.minus(u)),p(v,u))}var l=n(r(50)),p=n(r(296)),m=n(r(439)),h=n(r(432)),g=u({\"number | BigNumber | Unit\":function(e){return e}});return c}var i=r(6).isInteger,a=r(6).isNumber,o=r(40).flatten,s=r(288);t.name=\"quantileSeq\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,i){function a(e,t){if(0==e.length)throw new SyntaxError(\"Function std requires one or more parameters (0 provided)\");return o(s.apply(null,arguments))}var o=n(r(357)),s=n(r(444)),u=i(\"std\",{\"Array | Matrix\":a,\"Array | Matrix, string\":a,\"...\":function(){return a(Array.prototype.slice.call(arguments))}});return u.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",u}t.name=\"std\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,o){function s(t,r){var n=0,i=0;if(0==t.length)throw new SyntaxError(\"Function var requires one or more parameters (0 provided)\");if(a(t,function(e){n=u(n,e),i++}),0===i)throw new Error(\"Cannot calculate var of an empty array\");var o=l(n,i);switch(n=0,a(t,function(e){var t=c(e,o);n=u(n,f(t,t))}),r){case\"uncorrected\":return l(n,i);case\"biased\":return l(n,i+1);case\"unbiased\":var s=n&&n.isBigNumber===!0?new e.BigNumber(0):0;return 1==i?s:l(n,i-1);default:throw new Error('Unknown normalization \"'+r+'\". Choose \"unbiased\" (default), \"uncorrected\", or \"biased\".')}}var u=n(r(52)),c=n(r(302)),f=n(r(297)),l=n(r(295)),p=o(\"variance\",{\"Array | Matrix\":function(e){return s(e,i)},\"Array | Matrix, string\":s,\"...\":function(){return s(arguments,i)}});return p.toTex=\"\\\\mathrm{Var}\\\\left(${args}\\\\right)\",p}var i=\"unbiased\",a=r(290);t.name=\"var\",t.factory=n},function(e,t,r){e.exports=[r(446),r(456),r(458),r(460),r(463),r(465),r(467),r(468),r(464),r(466),r(459),r(469),r(462),r(471),r(472),r(475),r(477),r(479),r(480),r(481),r(482),r(483),r(474),r(484),r(485)]},function(e,t,r){\"use strict\";function n(e,t,n,o){function s(t){var r=new e.Complex(t.im*t.im-t.re*t.re+1,-2*t.re*t.im),n=u(r),i=new e.Complex(n.re-t.im,n.im+t.re),a=c(i);return new e.Complex(1.5707963267948966-a.im,a.re)}var u=o.find(n(r(357)),[\"Complex\"]),c=o.find(n(r(352)),[\"Complex\"]),f=o(\"acos\",{number:function(r){return r>=-1&&1>=r||t.predictable?Math.acos(r):s(new e.Complex(r,0))},Complex:s,BigNumber:function(t){return a(t,e.BigNumber,!1)},\"Array | Matrix\":function(e){return i(e,f)}});return f.toTex=\"\\\\cos^{-1}\\\\left(${args[0]}\\\\right)\",f}var i=r(19),a=r(447);t.name=\"acos\",t.factory=n},function(e,t,r){var n=r(77).pi,i=r(448);e.exports=function(e,t,r){if(r){if(e.abs().lt(t.ONE))throw new Error(\"asec() only has non-complex values for |x| >= 1.\")}else if(e.abs().gt(t.ONE))throw new Error(\"acos() only has non-complex values for |x| <= 1.\");if(e.eq(-1))return n(t);var a=t.precision;t.config({precision:a+4}),r&&(e=t.ONE.div(e));var o=i(t.ONE.minus(e.times(e)).sqrt().div(e.plus(t.ONE)),t).times(2);return t.config({precision:a}),o.toDP(a-1)}},function(e,t,r){var n=r(77),i=r(449),a=r(78);e.exports=function(e,t,r){if(e.isNaN())return new t(NaN);if(!r&&e.isZero()||r&&!e.isFinite())return new t(0);var o=t.precision;if(!r&&!e.isFinite()||r&&e.isZero()){var s=n.pi(t.constructor({precision:o+2})).div(2).toDP(o-1);return s.constructor=t,s.s=e.s,s}t.config({precision:o+4}),r&&(e=t.ONE.div(e));var u=e.abs();if(u.lte(.875)){var c=a(e);return c.constructor=t,t.config({precision:o}),c.toDP(t.precision-1)}if(u.gte(1.143)){var s=n.pi(t.constructor({precision:o+4})).div(2),c=s.minus(a(t.ONE.div(u)));return c.s=e.s,c.constructor=t,t.config({precision:o}),c.toDP(t.precision-1)}return e=e.div(e.times(e).plus(1).sqrt()),t.config({precision:o}),i(e,t)}},function(e,t,r){var n=r(77).pi,i=r(450),a=r(451);e.exports=function o(e,t,r){if(e.isNaN())return new t(NaN);var s=t.precision,u=e.abs();if(r){if(u.lt(t.ONE))throw new Error(\"acsc() only has non-complex values for |x| >= 1.\");t.config({precision:s+2}),e=t.ONE.div(e),t.config({precision:s}),u=e.abs()}else if(u.gt(t.ONE))throw new Error(\"asin() only has non-complex values for |x| <= 1.\");if(u.gt(.8)){t.config({precision:s+4});var c=e.s,f=n(t.constructor({precision:s+4})).div(2);return e=f.minus(o(t.ONE.minus(e.times(e)).sqrt(),t)),e.s=c,e.constructor=t,t.config({precision:s}),e.toDP(s-1)}var l=u.gt(.58);l&&(t.config({precision:s+8}),e=e.div(new t(2).sqrt().times(t.ONE.minus(e.times(e)).sqrt().plus(t.ONE).sqrt())),t.config({precision:s}));var p=60>=s||e.dp()<=Math.log(s)&&e.lt(.05)?i(e,s):a(e,t);return l?p.times(2):p}},function(e,t){e.exports=function(e,t){var r=e.constructor;r.config({precision:t+Math.log(t)|4});for(var n=new r(1),i=e,a=NaN,o=e.times(e),s=e,u=new r(n),c=new r(n),f=new r(n),l=3;!i.equals(a);l+=2)s=s.times(o),u=u.times(f),c=c.times(f.plus(n)),a=i,f=new r(l),i=i.plus(s.times(u).div(f.times(c)));return r.config({precision:t}),i.toDP(t-1)}},function(e,t,r){var n=r(452),i=r(455);e.exports=function(e,t){var r=t.precision,a=-(r+4),o=r+8-e.e,s=25-e.e,u=Math.max(1.442695*Math.log(r+2)|5,5);t.config({precision:s});var c=0,f=new t(Math.asin(e.toNumber())+\"\");do{var l=n(f,t,1,!1),p=i(l);l.isZero()||(l.s=f.s);var m=l.minus(e).div(p);f=f.minus(m),s=Math.min(2*s,o),t.config({precision:s})}while(2*m.e>=a&&!m.isZero()&&++c<=u);if(c==u)throw new Error(\"asin() failed to converge to the requested accuracy.Try with a higher precision.\");return t.config({precision:r}),f.toDP(r-1)}},function(e,t,r){var n=r(453),i=r(454);e.exports=function(e,t,r,a){if(e.isNaN()||!e.isFinite())return new t(NaN);var o=t.precision,s=new t(e),u=s.isNegative();u&&(s.s=-s.s);var c=o+(0|Math.log(o))+3;if(t.config({precision:c}),s=n(s,t.constructor({precision:c}),r),s[0].constructor=t,s[1])return s=s[0],a&&s.isZero()&&(s=new t(1/0)),t.config({precision:o}),s;var f;if(s=s[0],r){f=i(s.div(3125),r),t.config({precision:Math.min(c,o+15)});for(var l=new t(5),p=new t(16),m=new t(20),h=0;5>h;++h){var g=f.times(f),v=g.times(f),d=v.times(g);f=p.times(d).minus(m.times(v)).plus(l.times(f))}u&&(f.s=-f.s)}else{var y,x;s.abs().lt(t.ONE)?(y=64,x=3):(y=256,x=4),f=i(s.div(y),r),t.config({precision:Math.min(c,o+8)});for(var w=new t(8);x>0;--x){var g=f.times(f),b=g.times(g);f=w.times(b.minus(g)).plus(t.ONE)}}return a&&(f=f.e<=-o?new t(1/0):t.ONE.div(f)),t.config({precision:o}),f.toDP(o-1)}},function(e,t,r){var n=r(77);e.exports=function(e,t,r){var i=n.pi(t.constructor({precision:t.precision+2})),a=n.tau(t);if(e.abs().lte(i.toDP(e.dp())))return[e,!1];if(e.dp()>0&&e.div(i.toDP(e.dp())).toNumber()%2==0)return[new t(1^r),!0];var o=e.mod(a);return e.dp()>0&&o.toDP(e.dp(),1).isZero()?[new t(1^r),!0]:(o.gt(i)&&(r?(o=o.minus(i),o.s=-o.s):o=a.minus(o)),o.constructor=e.constructor,[o,!1])}},function(e,t){e.exports=function(e,t){for(var r=e.constructor.ONE,n=e,i=NaN,a=e.times(e),o=t?n:n=r,s=r,u=!0,c=t;!n.equals(i);c+=2)o=o.times(a),s=s.times(c+1).times(c+2),i=n,u=!u,n=u?n.plus(o.div(s)):n.minus(o.div(s));return n}},function(e,t){e.exports=function(e){var t=e.constructor,r=t.precision;t.config({precision:r+2});var n=t.ONE.minus(e.times(e)).sqrt();return t.config({precision:r}),n.toDP(r-1)}},function(e,t,r){\"use strict\";function n(e,t,n,o){function s(e){var t,r=u(e);return r.im<=0?(t=r.re,r.re=-r.im,r.im=t):(t=r.im,r.im=-r.re,r.re=t),r}var u=o.find(n(r(446)),[\"Complex\"]),c=o(\"acosh\",{number:function(r){return r>=1||t.predictable?Math.log(Math.sqrt(r*r-1)+r):-1>=r?new e.Complex(Math.log(Math.sqrt(r*r-1)-r),Math.PI):s(new e.Complex(r,0))},Complex:s,BigNumber:function(t){return a(t,e.BigNumber,!1,!1)},\"Array | Matrix\":function(e){return i(e,c)}});return c.toTex=\"\\\\cosh^{-1}\\\\left(${args[0]}\\\\right)\",c}var i=r(19),a=r(457);t.name=\"acosh\",t.factory=n},function(e,t){e.exports=function(e,t,r,n){if(e.isNaN())return new t(NaN);if(n&&e.isZero())return new t(1/0);if(!r)if(n){if(e.isNegative()||e.gt(t.ONE))throw new Error(\"asech() only has non-complex values for 0 <= x <= 1.\")}else if(e.lt(t.ONE))throw new Error(\"acosh() only has non-complex values for x >= 1.\");var i=t.precision;t.config({precision:i+4});var a=new t(e);a.constructor=t,n&&(a=t.ONE.div(a));var o=r?a.times(a).plus(t.ONE):a.times(a).minus(t.ONE),s=a.plus(o.sqrt()).ln();return t.config({precision:i}),new t(s.toPrecision(i))}},function(e,t,r){\"use strict\";function n(e,t,n,s){var u=s.find(n(r(459)),[\"Complex\"]),c=s(\"acot\",{number:function(e){return e?Math.atan(1/e):o},Complex:function(t){if(0==t.im)return new e.Complex(t.re?Math.atan(1/t.re):o,0);var r=t.re*t.re+t.im*t.im;return t=0!=r?new e.Complex(t.re=t.re/r,t.im=-t.im/r):new e.Complex(0!=t.re?t.re/0:0,0!=t.im?-(t.im/0):0),u(t)},BigNumber:function(t){return a(t,e.BigNumber,!0)},\"Array | Matrix\":function(e){return i(e,c)}});return c.toTex=\"\\\\cot^{-1}\\\\left(${args[0]}\\\\right)\",c}var i=r(19),a=r(448),o=1.5707963267948966;t.name=\"acot\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,o){var s=o.find(n(r(352)),[\"Complex\"]),u=o(\"atan\",{number:function(e){return Math.atan(e)},Complex:function(t){if(0==t.re){if(1==t.im)return new e.Complex(0,1/0);if(-1==t.im)return new e.Complex(0,-(1/0))}var r=t.re,n=t.im,i=r*r+(1-n)*(1-n),a=new e.Complex((1-n*n-r*r)/i,-2*r/i),o=s(a);return new e.Complex(-.5*o.im,.5*o.re)},BigNumber:function(t){return a(t,e.BigNumber,!1)},\"Array | Matrix\":function(e){return i(e,u,!0)}});return u.toTex=\"\\\\tan^{-1}\\\\left(${args[0]}\\\\right)\",u}var i=r(19),a=r(448);t.name=\"atan\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,s){function u(t){if(0==t.re&&0==t.im)return new e.Complex(0,o);var r=t.re*t.re+t.im*t.im;return t=0!=r?new e.Complex(t.re/r,-t.im/r):new e.Complex(0!=t.re?t.re/0:0,0!=t.im?-(t.im/0):0),c(t)}var c=s.find(n(r(462)),[\"Complex\"]),f=s(\"acoth\",{number:function(r){return r>=1||-1>=r||t.predictable?isFinite(r)?(Math.log((r+1)/r)+Math.log(r/(r-1)))/2:0:0!==r?u(new e.Complex(r,0)):new e.Complex(0,o)},Complex:u,BigNumber:function(t){return a(t,e.BigNumber,!0)},\"Array | Matrix\":function(e){return i(e,f)}});return f.toTex=\"\\\\coth^{-1}\\\\left(${args[0]}\\\\right)\",f}var i=r(19),a=r(461),o=1.5707963267948966;t.name=\"acoth\",t.factory=n},function(e,t){e.exports=function(e,t,r){if(e.isNaN())return new t(NaN);var n=e.abs();if(n.eq(t.ONE))return new t(e.isNegative()?-(1/0):1/0);if(n.gt(t.ONE)){if(!r)throw new Error(\"atanh() only has non-complex values for |x| <= 1.\")}else if(r)throw new Error(\"acoth() has complex values for |x| < 1.\");if(e.isZero())return new t(0);var i=t.precision;t.config({precision:i+4});var a=new t(e);a.constructor=t,r&&(a=t.ONE.div(a));var o=t.ONE.plus(a).div(t.ONE.minus(a)).ln().div(2);return t.config({precision:i}),new t(o.toPrecision(i))}},function(e,t,r){\"use strict\";function n(e,t,r,n){function o(t){var r=t.re>1&&0==t.im,n=1-t.re,i=1+t.re,a=n*n+t.im*t.im;t=0!=a?new e.Complex((i*n-t.im*t.im)/a,(t.im*n+i*t.im)/a):new e.Complex(-1!=t.re?t.re/0:0,0!=t.im?t.im/0:0);var o=t.re;return t.re=Math.log(Math.sqrt(t.re*t.re+t.im*t.im))/2,t.im=Math.atan2(t.im,o)/2,r&&(t.im=-t.im),t}var s=n(\"atanh\",{number:function(r){return 1>=r&&r>=-1||t.predictable?Math.log((1+r)/(1-r))/2:o(new e.Complex(r,0))},Complex:o,BigNumber:function(t){return a(t,e.BigNumber,!1)},\"Array | Matrix\":function(e){return i(e,s,!0)}});return s.toTex=\"\\\\tanh^{-1}\\\\left(${args[0]}\\\\right)\",s}var i=r(19),a=r(461);t.name=\"atanh\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,s){function u(t){if(0==t.re&&0==t.im)return new e.Complex(o,1/0);var r=t.re*t.re+t.im*t.im;return t=0!=r?new e.Complex(t.re=t.re/r,t.im=-t.im/r):new e.Complex(0!=t.re?t.re/0:0,0!=t.im?-(t.im/0):0),c(t)}var c=s.find(n(r(464)),[\"Complex\"]),f=s(\"acsc\",{number:function(r){return-1>=r||r>=1||t.predictable?Math.asin(1/r):u(new e.Complex(r,0))},Complex:u,BigNumber:function(t){return a(t,e.BigNumber,!0)},\"Array | Matrix\":function(e){return i(e,f)}});return f.toTex=\"\\\\csc^{-1}\\\\left(${args[0]}\\\\right)\",f}var i=r(19),a=r(449),o=1.5707963267948966;t.name=\"acsc\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,o){function s(t){var r=t.re,n=t.im,i=new e.Complex(n*n-r*r+1,-2*r*n),a=u(i),o=new e.Complex(a.re-n,a.im+r),s=c(o);return new e.Complex(s.im,-s.re)}var u=o.find(n(r(357)),[\"Complex\"]),c=o.find(n(r(352)),[\"Complex\"]),f=o(\"asin\",{number:function(r){return r>=-1&&1>=r||t.predictable?Math.asin(r):s(new e.Complex(r,0))},Complex:s,BigNumber:function(t){return a(t,e.BigNumber,!1)},\"Array | Matrix\":function(e){return i(e,f,!0)}});return f.toTex=\"\\\\sin^{-1}\\\\left(${args[0]}\\\\right)\",f}var i=r(19),a=r(449);t.name=\"asin\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,o){var s=o.find(n(r(466)),[\"Complex\"]),u=o(\"acsch\",{number:function(e){return e=1/e,Math.log(e+Math.sqrt(e*e+1))},Complex:function(t){if(0==t.im)return t=0!=t.re?Math.log(t.re+Math.sqrt(t.re*t.re+1)):1/0,new e.Complex(t,0);var r=t.re*t.re+t.im*t.im;return t=0!=r?new e.Complex(t.re/r,-t.im/r):new e.Complex(0!=t.re?t.re/0:0,0!=t.im?-(t.im/0):0),s(t)},BigNumber:function(t){return a(t,e.BigNumber,!0,!0)},\"Array | Matrix\":function(e){return i(e,u)}});return u.toTex=\"\\\\mathrm{csch}^{-1}\\\\left(${args[0]}\\\\right)\",u}var i=r(19),a=r(457);t.name=\"acsch\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,o){var s=o.find(n(r(464)),[\"Complex\"]),u=o(\"asinh\",{number:function(e){return Math.log(Math.sqrt(e*e+1)+e)},Complex:function(e){var t=e.im;e.im=-e.re,e.re=t;var r=s(e);return e.re=-e.im,e.im=t,t=r.re,r.re=-r.im,r.im=t,r},BigNumber:function(t){return a(t,e.BigNumber,!0,!1)},\"Array | Matrix\":function(e){return i(e,u,!0)}});return u.toTex=\"\\\\sinh^{-1}\\\\left(${args[0]}\\\\right)\",u}var i=r(19),a=r(457);t.name=\"asinh\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,o){function s(t){if(0==t.re&&0==t.im)return new e.Complex(0,1/0);var r=t.re*t.re+t.im*t.im;return t=0!=r?new e.Complex(t.re=t.re/r,t.im=-t.im/r):new e.Complex(0!=t.re?t.re/0:0,0!=t.im?-(t.im/0):0),u(t)}var u=o.find(n(r(446)),[\"Complex\"]),c=o(\"asec\",{number:function(r){return-1>=r||r>=1||t.predictable?Math.acos(1/r):s(new e.Complex(r,0))},Complex:s,BigNumber:function(t){return a(t,e.BigNumber,!0)},\"Array | Matrix\":function(e){return i(e,c)}});return c.toTex=\"\\\\sec^{-1}\\\\left(${args[0]}\\\\right)\",c}var i=r(19),a=r(447);t.name=\"asec\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,o){function s(t){if(0==t.re&&0==t.im)return new e.Complex(1/0,0);var r=t.re*t.re+t.im*t.im;return t=0!=r?new e.Complex(t.re/r,-t.im/r):new e.Complex(0!=t.re?t.re/0:0,0!=t.im?-(t.im/0):0),u(t)}var u=o.find(n(r(456)),[\"Complex\"]),c=o(\"asech\",{number:function(r){if(1>=r&&r>=-1||t.predictable){r=1/r;var n=Math.sqrt(r*r-1);return r>0||t.predictable?Math.log(n+r):new e.Complex(Math.log(n-r),Math.PI)}return s(new e.Complex(r,0))},Complex:s,BigNumber:function(t){return a(t,e.BigNumber,!1,!0)},\"Array | Matrix\":function(e){return i(e,c)}});return c.toTex=\"\\\\mathrm{sech}^{-1}\\\\left(${args[0]}\\\\right)\",c}var i=r(19),a=r(457);t.name=\"asech\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){var o=n(r(51)),s=n(r(347)),u=n(r(60)),c=n(r(349)),f=n(r(298)),l=n(r(62)),p=n(r(56)),m=n(r(57)),h=a(\"atan2\",{\"number, number\":Math.atan2,\"BigNumber, BigNumber\":function(t,r){return i(t,r,e.BigNumber)},\"Matrix, Matrix\":function(e,t){var r;switch(e.storage()){case\"sparse\":switch(t.storage()){case\"sparse\":r=c(e,t,h,!1);break;default:r=s(t,e,h,!0)}break;default:switch(t.storage()){case\"sparse\":r=u(e,t,h,!1);break;default:r=p(e,t,h)}}return r},\"Array, Array\":function(e,t){return h(o(e),o(t)).valueOf()},\"Array, Matrix\":function(e,t){return h(o(e),t)},\"Matrix, Array\":function(e,t){return h(e,o(t))},\"Matrix, number | BigNumber\":function(e,t){var r;switch(e.storage()){case\"sparse\":r=f(e,t,h,!1);break;default:r=m(e,t,h,!1)}return r},\"number | BigNumber, Matrix\":function(e,t){var r;switch(t.storage()){case\"sparse\":r=l(t,e,h,!0);break;default:r=m(t,e,h,!0)}return r},\"Array, number | BigNumber\":function(e,t){return m(o(e),t,h,!1).valueOf()},\"number | BigNumber, Array\":function(e,t){return m(o(t),e,h,!0).valueOf()}});return h.toTex=\"\\\\mathrm{atan2}\\\\left(${args}\\\\right)\",h}var i=r(470);t.name=\"atan2\",t.factory=n},function(e,t,r){var n=r(77),i=r(448);e.exports=function(e,t,r){var a=r.precision;if(t.isZero()){if(e.isZero())return new r(NaN);var o=n.pi(r.constructor({precision:a+2})).div(2).toDP(a-1);return o.constructor=r,o.s=e.s,o}r.config({precision:a+2});var s=i(e.div(t),r,!1);if(t.isNegative()){var u=n.pi(r);s=e.isNegative()?s.minus(u):s.plus(u)}return s.constructor=r,r.config({precision:a}),s.toDP(a-1)}},function(e,t,r){\"use strict\";function n(e,t,n,o){var s=o.find(n(r(472)),[\"number\"]),u=o.find(n(r(474)),[\"number\"]),c=o(\"cos\",{number:Math.cos,Complex:function(t){return new e.Complex(Math.cos(t.re)*s(-t.im),Math.sin(t.re)*u(-t.im))},BigNumber:function(t){return a(t,e.BigNumber,0,!1)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError(\"Unit in function cos is no angle\");return Math.cos(t.value)},\"Array | Matrix\":function(e){return i(e,c)}});return c.toTex=\"\\\\cos\\\\left(${args[0]}\\\\right)\",c}var i=r(19),a=r(452);t.name=\"cos\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){var s=n(\"cosh\",{number:i,Complex:function(t){var r=Math.exp(t.re),n=Math.exp(-t.re);return new e.Complex(Math.cos(t.im)*(r+n)/2,Math.sin(t.im)*(r-n)/2)},BigNumber:function(t){return o(t,e.BigNumber,!1,!1)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError(\"Unit in function cosh is no angle\");return i(t.value)},\"Array | Matrix\":function(e){return a(e,s)}});return s.toTex=\"\\\\cosh\\\\left(${args[0]}\\\\right)\",s}function i(e){return(Math.exp(e)+Math.exp(-e))/2}var a=r(19),o=r(473);t.name=\"cosh\",t.factory=n},function(e,t){e.exports=function(e,t,r,n){if(e.isNaN())return new t(NaN);if(!e.isFinite())return new t(n?0:r?e:1/0);var i=t.precision;t.config({precision:i+4});var a=new t(e);return a.constructor=t,a=a.exp(),a=r?a.minus(t.ONE.div(a)):a.plus(t.ONE.div(a)),a=n?new t(2).div(a):a.div(2),t.config({precision:i}),new t(a.toPrecision(i))}},function(e,t,r){\"use strict\";function n(e,t,r,n){var s=n(\"sinh\",{number:i,Complex:function(t){var r=Math.cos(t.im),n=Math.sin(t.im),i=Math.exp(t.re),a=Math.exp(-t.re);return new e.Complex(r*(i-a)/2,n*(i+a)/2)},BigNumber:function(t){return o(t,e.BigNumber,!0,!1)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError(\"Unit in function sinh is no angle\");return i(t.value)},\"Array | Matrix\":function(e){return a(e,s,!0)}});return s.toTex=\"\\\\sinh\\\\left(${args[0]}\\\\right)\",s}function i(e){return Math.abs(e)<1?e+e*e*e/6+e*e*e*e*e/120:(Math.exp(e)-Math.exp(-e))/2}var a=r(19),o=r(473);t.name=\"sinh\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){var o=n(\"cot\",{number:function(e){return 1/Math.tan(e)},Complex:function(t){var r=Math.exp(-4*t.im)-2*Math.exp(-2*t.im)*Math.cos(2*t.re)+1;return new e.Complex(2*Math.exp(-2*t.im)*Math.sin(2*t.re)/r,(Math.exp(-4*t.im)-1)/r)},BigNumber:function(t){return a(t,e.BigNumber,!0)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError(\"Unit in function cot is no angle\");return 1/Math.tan(t.value)},\"Array | Matrix\":function(e){return i(e,o)}});return o.toTex=\"\\\\cot\\\\left(${args[0]}\\\\right)\",o}var i=r(19),a=r(476);t.name=\"cot\",t.factory=n},function(e,t,r){var n=r(77),i=r(452),a=r(455),o=r(453);e.exports=function(e,t,r){if(e.isNaN())return new t(NaN);var s=t.precision,u=n.pi(t.constructor({precision:s+2})),c=u.div(2).toDP(s-1);u=u.toDP(s-1);var f=o(e,t,1)[0];if(f.abs().eq(u))return new t(1/0);t.config({precision:s+4});var l=i(f,t,1,!1),p=a(l);l=l.toDP(s),p=p.toDP(s),f.eq(e)?f.gt(c)&&(p.s=-p.s):u.minus(f.abs()).gt(c)&&(p.s=-p.s);var m=r?p.div(l):l.div(p);return t.config({precision:s}),new t(m.toPrecision(s))}},function(e,t,r){\"use strict\";function n(e,t,r,n){var s=n(\"coth\",{number:i,Complex:function(t){var r=Math.exp(2*t.re),n=r*Math.cos(2*t.im),i=r*Math.sin(2*t.im),a=(n-1)*(n-1)+i*i;return new e.Complex(((n+1)*(n-1)+i*i)/a,-2*i/a)},BigNumber:function(t){return o(t,e.BigNumber,!0)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError(\"Unit in function coth is no angle\");return i(t.value)},\"Array | Matrix\":function(e){return a(e,s)}});return s.toTex=\"\\\\coth\\\\left(${args[0]}\\\\right)\",s}function i(e){var t=Math.exp(2*e);return(t+1)/(t-1)}var a=r(19),o=r(478);t.name=\"coth\",t.factory=n},function(e,t){e.exports=function(e,t,r){if(e.isNaN())return new t(NaN);if(!e.isFinite())return new t(e.s);var n=t.precision;t.config({precision:n+4});var i=new t(e);i.constructor=t;var a=i.exp(),o=t.ONE.div(a),s=a.minus(o);return s=r?a.plus(o).div(s):s.div(a.plus(o)),t.config({precision:n}),s.toDP(n-1)}},function(e,t,r){\"use strict\";function n(e,t,r,n){var o=n(\"csc\",{number:function(e){return 1/Math.sin(e)},Complex:function(t){var r=.25*(Math.exp(-2*t.im)+Math.exp(2*t.im))-.5*Math.cos(2*t.re);return new e.Complex(.5*Math.sin(t.re)*(Math.exp(-t.im)+Math.exp(t.im))/r,.5*Math.cos(t.re)*(Math.exp(-t.im)-Math.exp(t.im))/r)},BigNumber:function(t){return a(t,e.BigNumber,1,!0)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError(\"Unit in function csc is no angle\");return 1/Math.sin(t.value)},\"Array | Matrix\":function(e){return i(e,o)}});return o.toTex=\"\\\\csc\\\\left(${args[0]}\\\\right)\",o}var i=r(19),a=r(452);t.name=\"csc\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){var s=n(\"csch\",{number:i,Complex:function(t){var r=Math.exp(t.re),n=Math.exp(-t.re),i=Math.cos(t.im)*(r-n),a=Math.sin(t.im)*(r+n),o=i*i+a*a;return new e.Complex(2*i/o,-2*a/o)},BigNumber:function(t){return o(t,e.BigNumber,!0,!0)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError(\"Unit in function csch is no angle\");return i(t.value)},\"Array | Matrix\":function(e){return a(e,s)}});return s.toTex=\"\\\\mathrm{csch}\\\\left(${args[0]}\\\\right)\",s}function i(e){return 0==e?Number.POSITIVE_INFINITY:Math.abs(2/(Math.exp(e)-Math.exp(-e)))*s(e)}var a=r(19),o=r(473),s=r(6).sign;t.name=\"csch\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){var o=n(\"sec\",{number:function(e){return 1/Math.cos(e)},Complex:function(t){var r=.25*(Math.exp(-2*t.im)+Math.exp(2*t.im))+.5*Math.cos(2*t.re);return new e.Complex(.5*Math.cos(t.re)*(Math.exp(-t.im)+Math.exp(t.im))/r,.5*Math.sin(t.re)*(Math.exp(t.im)-Math.exp(-t.im))/r)},BigNumber:function(t){return a(t,e.BigNumber,0,!0)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError(\"Unit in function sec is no angle\");return 1/Math.cos(t.value)},\"Array | Matrix\":function(e){return i(e,o)}});return o.toTex=\"\\\\sec\\\\left(${args[0]}\\\\right)\",o}var i=r(19),a=r(452);t.name=\"sec\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){var s=n(\"sech\",{number:i,Complex:function(t){var r=Math.exp(t.re),n=Math.exp(-t.re),i=Math.cos(t.im)*(r+n),a=Math.sin(t.im)*(r-n),o=i*i+a*a;return new e.Complex(2*i/o,-2*a/o)},BigNumber:function(t){return o(t,e.BigNumber,!1,!0)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError(\"Unit in function sech is no angle\");return i(t.value)},\"Array | Matrix\":function(e){return a(e,s)}});return s.toTex=\"\\\\mathrm{sech}\\\\left(${args[0]}\\\\right)\",s}function i(e){return 2/(Math.exp(e)+Math.exp(-e))}var a=r(19),o=r(473);t.name=\"sech\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,o){var s=o.find(n(r(472)),[\"number\"]),u=o.find(n(r(474)),[\"number\"]),c=o(\"sin\",{number:Math.sin,Complex:function(t){return new e.Complex(Math.sin(t.re)*s(-t.im),Math.cos(t.re)*u(t.im))},BigNumber:function(t){return a(t,e.BigNumber,1,!1)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError(\"Unit in function sin is no angle\");return Math.sin(t.value)},\"Array | Matrix\":function(e){return i(e,c,!0)}});return c.toTex=\"\\\\sin\\\\left(${args[0]}\\\\right)\",c}var i=r(19),a=r(452);t.name=\"sin\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){var o=n(\"tan\",{number:Math.tan,Complex:function(t){var r=Math.exp(-4*t.im)+2*Math.exp(-2*t.im)*Math.cos(2*t.re)+1;return new e.Complex(2*Math.exp(-2*t.im)*Math.sin(2*t.re)/r,(1-Math.exp(-4*t.im))/r)},BigNumber:function(t){return a(t,e.BigNumber,!1)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError(\"Unit in function tan is no angle\");return Math.tan(t.value)},\"Array | Matrix\":function(e){return i(e,o,!0)}});return o.toTex=\"\\\\tan\\\\left(${args[0]}\\\\right)\",o}var i=r(19),a=r(476);t.name=\"tan\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){var s=n(\"tanh\",{number:i,Complex:function(t){var r=Math.exp(2*t.re),n=r*Math.cos(2*t.im),i=r*Math.sin(2*t.im),a=(n+1)*(n+1)+i*i;return new e.Complex(((n-1)*(n+1)+i*i)/a,2*i/a)},BigNumber:function(t){\nreturn o(t,e.BigNumber,!1)},Unit:function(t){if(!t.hasBase(e.Unit.BASE_UNITS.ANGLE))throw new TypeError(\"Unit in function tanh is no angle\");return i(t.value)},\"Array | Matrix\":function(e){return a(e,s,!0)}});return s.toTex=\"\\\\tanh\\\\left(${args[0]}\\\\right)\",s}function i(e){var t=Math.exp(2*e);return(t-1)/(t+1)}var a=r(19),o=r(478);t.name=\"tanh\",t.factory=n},function(e,t,r){e.exports=[r(487)]},function(e,t,r){\"use strict\";function n(e,t,n,i){var a=r(30),o=n(r(51)),s=n(r(56)),u=n(r(57)),c=i(\"to\",{\"Unit, Unit | string\":function(e,t){return e.to(t)},\"Matrix, Matrix\":function(e,t){return s(e,t,c)},\"Array, Array\":function(e,t){return c(o(e),o(t)).valueOf()},\"Array, Matrix\":function(e,t){return c(o(e),t)},\"Matrix, Array\":function(e,t){return c(e,o(t))},\"Matrix, any\":function(e,t){return u(e,t,c,!1)},\"any, Matrix\":function(e,t){return u(t,e,c,!0)},\"Array, any\":function(e,t){return u(o(e),t,c,!1).valueOf()},\"any, Array\":function(e,t){return u(o(t),e,c,!0).valueOf()}});return c.toTex=\"\\\\left(${args[0]}\"+a.operators.to+\"${args[1]}\\\\right)\",c}t.name=\"to\",t.factory=n},function(e,t,r){e.exports=[r(489),r(281),r(490),r(396),r(395),r(424),r(358),r(491),r(286),r(439),r(492),r(493),r(494),r(283)]},function(e,t,r){\"use strict\";function n(e,t,r,n){var a=n(\"clone\",{any:i.clone});return a.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",a}var i=r(3);t.name=\"clone\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){var a=n(\"format\",{any:i.format,\"any, Object | function | number\":i.format});return a.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",a}var i=r(23);t.name=\"format\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){var a=n(\"isZero\",{number:function(e){return 0===e},BigNumber:function(e){return e.isZero()},Complex:function(e){return 0===e.re&&0===e.im},Fraction:function(e){return 1===e.d&&0===e.n},Unit:function(e){return 0===e.value},\"Array | Matrix\":function(e){return i(e,a)}});return a}var i=r(19);r(6);t.name=\"isZero\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){var a=n(\"print\",{\"string, Object\":i,\"string, Object, number\":i});return a.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",a}function i(e,t,r){return e.replace(/\\$([\\w\\.]+)/g,function(e,n){for(var i=n.split(\".\"),s=t[i.shift()];i.length&&void 0!==s;){var u=i.shift();s=u?s[u]:s+\".\"}return void 0!==s?a(s)?s:o(s,r):e})}var a=r(23).isString,o=r(23).format;t.name=\"print\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,n,a){function o(e){if(\"asc\"===e)return f;if(\"desc\"===e)return l;throw new Error('String \"asc\" or \"desc\" expected')}function s(e){if(1!==i(e).length)throw new Error(\"One dimensional array expected\")}function u(e){if(1!==e.size().length)throw new Error(\"One dimensional matrix expected\")}var c=n(r(51)),f=n(r(432)),l=function(e,t){return-f(e,t)},p=a(\"sort\",{Array:function(e){return s(e),e.sort(f)},Matrix:function(e){return u(e),c(e.toArray().sort(f),e.storage())},\"Array, function\":function(e,t){return s(e),e.sort(t)},\"Matrix, function\":function(e,t){return u(e),c(e.toArray().sort(t),e.storage())},\"Array, string\":function(e,t){return s(e),e.sort(o(t))},\"Matrix, string\":function(e,t){return u(e),c(e.toArray().sort(o(t)),e.storage())}});return p.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",p}var i=r(40).size;t.name=\"sort\",t.factory=n},function(e,t,r){\"use strict\";function n(e,t,r,n){var a=n(\"_typeof\",{any:function(e){var t=i.type(e);if(\"Object\"===t){if(e.isBigNumber===!0)return\"BigNumber\";if(e.isComplex===!0)return\"Complex\";if(e.isFraction===!0)return\"Fraction\";if(e.isMatrix===!0)return\"Matrix\";if(e.isUnit===!0)return\"Unit\";if(e.isIndex===!0)return\"Index\";if(e.isRange===!0)return\"Range\";if(e.isChain===!0)return\"Chain\";if(e.isHelp===!0)return\"Help\"}return t}});return a.toTex=\"\\\\mathrm{${name}}\\\\left(${args}\\\\right)\",a}var i=r(41);t.name=\"typeof\",t.factory=n},function(e,t,r){e.exports=[r(496)]},function(e,t){\"use strict\";function r(e,t,r,n){return function(t,r){var n=e[r&&r.mathjs];return n&&\"function\"==typeof n.fromJSON?n.fromJSON(r):r}}t.name=\"reviver\",t.path=\"json\",t.factory=r},function(e,t,r){\"use strict\";var n=r(11),i=r(42),a=r(43);e.exports=[{name:\"ArgumentsError\",path:\"error\",factory:function(){return n}},{name:\"DimensionError\",path:\"error\",factory:function(){return i}},{name:\"IndexError\",path:\"error\",factory:function(){return a}}]}])});\n//# sourceMappingURL=math.map\n",
"title": "$:/plugins/mklauber/math.js/math.js",
"type": "application/javascript",
"module-type": "library"
}
}
}
{
"tiddlers": {
"$:/plugins/tiddlywiki/browser-sniff/sniff.js": {
"text": "/*\\\ntitle: $:/plugins/tiddlywiki/browser-sniff/sniff.js\ntype: application/javascript\nmodule-type: info\n\nInitialise $:/info/browser tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.getInfoTiddlerFields = function() {\n\tvar mapBoolean = function(value) {return value ? \"yes\" : \"no\";},\n\t\tinfoTiddlerFields = [];\n\t// Basics\n\tif($tw.browser) {\n\t\t// Mappings from tiddler titles (prefixed with \"$:/info/browser/\") to bowser.browser property name\n\t\tvar bowser = require(\"$:/plugins/tiddlywiki/browser-sniff/bowser/bowser.js\"),\n\t\t\tmappings = [\n\t\t\t\t[\"name\",\"name\",\"unknown\"],\n\t\t\t\t[\"version\",\"version\"],\n\t\t\t\t[\"is/webkit\",\"webkit\"],\n\t\t\t\t[\"is/gecko\",\"gecko\"],\n\t\t\t\t[\"is/chrome\",\"chrome\"],\n\t\t\t\t[\"is/firefox\",\"firefox\"],\n\t\t\t\t[\"is/ios\",\"ios\"],\n\t\t\t\t[\"is/iphone\",\"iphone\"],\n\t\t\t\t[\"is/ipad\",\"ipad\"],\n\t\t\t\t[\"is/ipod\",\"ios\"],\n\t\t\t\t[\"is/opera\",\"opera\"],\n\t\t\t\t[\"is/phantomjs\",\"phantomjs\"],\n\t\t\t\t[\"is/safari\",\"safari\"],\n\t\t\t\t[\"is/seamonkey\",\"seamonkey\"],\n\t\t\t\t[\"is/blackberry\",\"blackberry\"],\n\t\t\t\t[\"is/webos\",\"webos\"],\n\t\t\t\t[\"is/silk\",\"silk\"],\n\t\t\t\t[\"is/bada\",\"bada\"],\n\t\t\t\t[\"is/tizen\",\"tizen\"],\n\t\t\t\t[\"is/sailfish\",\"sailfish\"],\n\t\t\t\t[\"is/android\",\"android\"],\n\t\t\t\t[\"is/windowsphone\",\"windowsphone\"],\n\t\t\t\t[\"is/firefoxos\",\"firefoxos\"]\n\t\t\t];\n\t\t$tw.utils.each(mappings,function(mapping) {\n\t\t\tvar value = bowser.browser[mapping[1]];\n\t\t\tif(value === undefined) {\n\t\t\t\tvalue = mapping[2];\n\t\t\t}\n\t\t\tif(value === undefined) {\n\t\t\t\tvalue = false;\n\t\t\t}\n\t\t\tif(typeof value === \"boolean\") {\n\t\t\t\tvalue = mapBoolean(value);\n\t\t\t}\n\t\t\tinfoTiddlerFields.push({title: \"$:/info/browser/\" + mapping[0], text: value});\n\t\t});\n\t\t// Set $:/info/browser/name to the platform with some changes from Bowser\n\t\tvar platform = bowser.browser.name;\n\t\tif(\"iPad iPhone iPod\".split(\" \").indexOf(platform) !== -1) {\n\t\t\tplatform = \"iOS\";\n\t\t}\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/name\", text: platform});\n\t\t// Non-bowser settings for TiddlyFox and TiddlyDesktop\n\t\tvar hasTiddlyFox = !!document.getElementById(\"tiddlyfox-message-box\"), // Fails because message box is added after page load\n\t\t\tisTiddlyDesktop = false; // Can't detect it until we update TiddlyDesktop to have a distinct useragent string\n\t\t//infoTiddlerFields.push({title: \"$:/info/browser/has/tiddlyfox\", text: mapBoolean(hasTiddlyFox)});\n\t\t//infoTiddlerFields.push({title: \"$:/info/browser/is/tiddlydesktop\", text: mapBoolean(isTiddlyDesktop)});\n\t\tif(isTiddlyDesktop) {\n\t\t\tinfoTiddlerFields.push({title: \"$:/info/browser/name\", text: \"TiddlyDesktop\"});\n\t\t}\n\t}\n\treturn infoTiddlerFields;\n};\n\n})();\n",
"title": "$:/plugins/tiddlywiki/browser-sniff/sniff.js",
"type": "application/javascript",
"module-type": "info"
},
"$:/plugins/tiddlywiki/browser-sniff/bowser/bowser.js": {
"text": "/*!\n * Bowser - a browser detector\n * https://github.com/ded/bowser\n * MIT License | (c) Dustin Diaz 2014\n */\n\n!function (name, definition) {\n if (typeof module != 'undefined' && module.exports) module.exports['browser'] = definition()\n else if (typeof define == 'function') define(definition)\n else this[name] = definition()\n}('bowser', function () {\n /**\n * See useragents.js for examples of navigator.userAgent\n */\n\n var t = true\n\n function detect(ua) {\n\n function getFirstMatch(regex) {\n var match = ua.match(regex);\n return (match && match.length > 1 && match[1]) || '';\n }\n\n var iosdevice = getFirstMatch(/(ipod|iphone|ipad)/i).toLowerCase()\n , likeAndroid = /like android/i.test(ua)\n , android = !likeAndroid && /android/i.test(ua)\n , versionIdentifier = getFirstMatch(/version\\/(\\d+(\\.\\d+)?)/i)\n , tablet = /tablet/i.test(ua)\n , mobile = !tablet && /[^-]mobi/i.test(ua)\n , result\n\n if (/opera|opr/i.test(ua)) {\n result = {\n name: 'Opera'\n , opera: t\n , version: versionIdentifier || getFirstMatch(/(?:opera|opr)[\\s\\/](\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/windows phone/i.test(ua)) {\n result = {\n name: 'Windows Phone'\n , windowsphone: t\n , msie: t\n , version: getFirstMatch(/iemobile\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/msie|trident/i.test(ua)) {\n result = {\n name: 'Internet Explorer'\n , msie: t\n , version: getFirstMatch(/(?:msie |rv:)(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/chrome|crios|crmo/i.test(ua)) {\n result = {\n name: 'Chrome'\n , chrome: t\n , version: getFirstMatch(/(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (iosdevice) {\n result = {\n name : iosdevice == 'iphone' ? 'iPhone' : iosdevice == 'ipad' ? 'iPad' : 'iPod'\n }\n // WTF: version is not part of user agent in web apps\n if (versionIdentifier) {\n result.version = versionIdentifier\n }\n }\n else if (/sailfish/i.test(ua)) {\n result = {\n name: 'Sailfish'\n , sailfish: t\n , version: getFirstMatch(/sailfish\\s?browser\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/seamonkey\\//i.test(ua)) {\n result = {\n name: 'SeaMonkey'\n , seamonkey: t\n , version: getFirstMatch(/seamonkey\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/firefox|iceweasel/i.test(ua)) {\n result = {\n name: 'Firefox'\n , firefox: t\n , version: getFirstMatch(/(?:firefox|iceweasel)[ \\/](\\d+(\\.\\d+)?)/i)\n }\n if (/\\((mobile|tablet);[^\\)]*rv:[\\d\\.]+\\)/i.test(ua)) {\n result.firefoxos = t\n }\n }\n else if (/silk/i.test(ua)) {\n result = {\n name: 'Amazon Silk'\n , silk: t\n , version : getFirstMatch(/silk\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (android) {\n result = {\n name: 'Android'\n , version: versionIdentifier\n }\n }\n else if (/phantom/i.test(ua)) {\n result = {\n name: 'PhantomJS'\n , phantom: t\n , version: getFirstMatch(/phantomjs\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/blackberry|\\bbb\\d+/i.test(ua) || /rim\\stablet/i.test(ua)) {\n result = {\n name: 'BlackBerry'\n , blackberry: t\n , version: versionIdentifier || getFirstMatch(/blackberry[\\d]+\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/(web|hpw)os/i.test(ua)) {\n result = {\n name: 'WebOS'\n , webos: t\n , version: versionIdentifier || getFirstMatch(/w(?:eb)?osbrowser\\/(\\d+(\\.\\d+)?)/i)\n };\n /touchpad\\//i.test(ua) && (result.touchpad = t)\n }\n else if (/bada/i.test(ua)) {\n result = {\n name: 'Bada'\n , bada: t\n , version: getFirstMatch(/dolfin\\/(\\d+(\\.\\d+)?)/i)\n };\n }\n else if (/tizen/i.test(ua)) {\n result = {\n name: 'Tizen'\n , tizen: t\n , version: getFirstMatch(/(?:tizen\\s?)?browser\\/(\\d+(\\.\\d+)?)/i) || versionIdentifier\n };\n }\n else if (/safari/i.test(ua)) {\n result = {\n name: 'Safari'\n , safari: t\n , version: versionIdentifier\n }\n }\n else result = {}\n\n // set webkit or gecko flag for browsers based on these engines\n if (/(apple)?webkit/i.test(ua)) {\n result.name = result.name || \"Webkit\"\n result.webkit = t\n if (!result.version && versionIdentifier) {\n result.version = versionIdentifier\n }\n } else if (!result.opera && /gecko\\//i.test(ua)) {\n result.name = result.name || \"Gecko\"\n result.gecko = t\n result.version = result.version || getFirstMatch(/gecko\\/(\\d+(\\.\\d+)?)/i)\n }\n\n // set OS flags for platforms that have multiple browsers\n if (android || result.silk) {\n result.android = t\n } else if (iosdevice) {\n result[iosdevice] = t\n result.ios = t\n }\n\n // OS version extraction\n var osVersion = '';\n if (iosdevice) {\n osVersion = getFirstMatch(/os (\\d+([_\\s]\\d+)*) like mac os x/i);\n osVersion = osVersion.replace(/[_\\s]/g, '.');\n } else if (android) {\n osVersion = getFirstMatch(/android[ \\/-](\\d+(\\.\\d+)*)/i);\n } else if (result.windowsphone) {\n osVersion = getFirstMatch(/windows phone (?:os)?\\s?(\\d+(\\.\\d+)*)/i);\n } else if (result.webos) {\n osVersion = getFirstMatch(/(?:web|hpw)os\\/(\\d+(\\.\\d+)*)/i);\n } else if (result.blackberry) {\n osVersion = getFirstMatch(/rim\\stablet\\sos\\s(\\d+(\\.\\d+)*)/i);\n } else if (result.bada) {\n osVersion = getFirstMatch(/bada\\/(\\d+(\\.\\d+)*)/i);\n } else if (result.tizen) {\n osVersion = getFirstMatch(/tizen[\\/\\s](\\d+(\\.\\d+)*)/i);\n }\n if (osVersion) {\n result.osversion = osVersion;\n }\n\n // device type extraction\n var osMajorVersion = osVersion.split('.')[0];\n if (tablet || iosdevice == 'ipad' || (android && (osMajorVersion == 3 || (osMajorVersion == 4 && !mobile))) || result.silk) {\n result.tablet = t\n } else if (mobile || iosdevice == 'iphone' || iosdevice == 'ipod' || android || result.blackberry || result.webos || result.bada) {\n result.mobile = t\n }\n\n // Graded Browser Support\n // http://developer.yahoo.com/yui/articles/gbs\n if ((result.msie && result.version >= 10) ||\n (result.chrome && result.version >= 20) ||\n (result.firefox && result.version >= 20.0) ||\n (result.safari && result.version >= 6) ||\n (result.opera && result.version >= 10.0) ||\n (result.ios && result.osversion && result.osversion.split(\".\")[0] >= 6)\n ) {\n result.a = t;\n }\n else if ((result.msie && result.version < 10) ||\n (result.chrome && result.version < 20) ||\n (result.firefox && result.version < 20.0) ||\n (result.safari && result.version < 6) ||\n (result.opera && result.version < 10.0) ||\n (result.ios && result.osversion && result.osversion.split(\".\")[0] < 6)\n ) {\n result.c = t\n } else result.x = t\n\n return result\n }\n\n var bowser = detect(typeof navigator !== 'undefined' ? navigator.userAgent : '')\n\n\n /*\n * Set our detect method to the main bowser object so we can\n * reuse it to test other user agents.\n * This is needed to implement future tests.\n */\n bowser._detect = detect;\n\n return bowser\n});\n",
"type": "application/javascript",
"title": "$:/plugins/tiddlywiki/browser-sniff/bowser/bowser.js",
"module-type": "library"
},
"$:/plugins/tiddlywiki/browser-sniff/readme": {
"title": "$:/plugins/tiddlywiki/browser-sniff/readme",
"text": "This plugin adds a number of `$:/info/` tiddlers containing information about the current browser.\n\nIt allows you to create content that is presented in a way that is responsive to different browsers.\n\nFor example, http://tiddlywiki.com uses this plugin to present the user with the best options for getting started depending on their browser.\n\n[[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/browser-sniff]]\n"
},
"$:/plugins/tiddlywiki/browser-sniff/usage": {
"title": "$:/plugins/tiddlywiki/browser-sniff/usage",
"text": "! Information Tiddlers\n\nThe following informational tiddlers are created at startup:\n\n|!Title |!Description |\n|[[$:/info/browser/is/android]] |Running on Android? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/bada]] |Running on Bada? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/blackberry]] |Running on ~BlackBerry? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/chrome]] |Running on Chrome? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/firefox]] |Running on Firefox? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/firefoxos]] |Running on Firefox OS? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/gecko]] |Running on Gecko? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/ios]] |Running on iOS (ie an iPhone, iPad or iPod)? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/ipad]] |Running on iPad? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/iphone]] |Running on iPhone? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/ipod]] |Running on iPod? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/opera]] |Running on Opera? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/phantomjs]] |Running on ~PhantomJS? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/safari]] |Running on Safari? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/sailfish]] |Running on Sailfish? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/seamonkey]] |Running on Sea Monkey? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/silk]] |Running on Amazon's Silk? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/tizen]] |Running on Tizen? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/webkit]] |Running on ~WebKit? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/webos]] |Running on ~WebOS? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/windowsphone]] |Running on Windows Phone? (\"yes\" or \"no\") |\n|[[$:/info/browser/name]] |Platform name (see below) |\n|[[$:/info/browser/version]] |Browser version |\n\nThe browser information is obtained with [[Bowser, a browser detector library from Dustin Diaz|https://github.com/ded/bowser/]]. Possible browser names include:\n\n* ''\"Amazon Silk\"''\n* ''\"Android\"''\n* ''\"Bada\"''\n* ''\"~BlackBerry\"''\n* ''\"Chrome\"''\n* ''\"Firefox\"''\n* ''\"Internet Explorer\"''\n* ''\"iOS\"''\n* ''\"Opera\"''\n* ''\"~PhantomJS\"''\n* ''\"Safari\"''\n* ''\"Sailfish\"''\n* ''\"~SeaMonkey\"''\n* ''\"~TiddlyDesktop\"''\n* ''\"Tizen\"''\n* ''\"~WebOS\"''\n* ''\"Windows Phone\"''\n\nNote that Bowser returns \"iPhone\", \"iPad\" and \"iPod\" as distinct values for the name of the current browser. TiddlyWiki converts all three distinct values into \"iOS\" before copying to [[$:/info/browser/name]].\n"
}
}
}
{
"tiddlers": {
"$:/plugins/tiddlywiki/evernote/docs": {
"title": "$:/plugins/tiddlywiki/evernote/docs",
"text": "! Introduction\n\n"
},
"$:/plugins/tiddlywiki/evernote/modules/enex-deserializer.js": {
"text": "/*\\\ntitle: $:/plugins/tiddlywiki/evernote/modules/enex-deserializer.js\ntype: application/javascript\nmodule-type: tiddlerdeserializer\n\nENEX file deserializer\n\nFor details see: https://blog.evernote.com/tech/2013/08/08/evernote-export-format-enex/\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// DOMParser = require(\"$:/plugins/tiddlywiki/xmldom/dom-parser\").DOMParser;\n\n/*\nParse an ENEX file into tiddlers\n*/\nexports[\"application/enex+xml\"] = function(text,fields) {\n\t// Collect output tiddlers in an array\n\tvar results = [];\n\t// Parse the XML document\n\tvar parser = new DOMParser(),\n\t\tdoc = parser.parseFromString(text,\"application/xml\");\n\t// Output a report tiddler with information about the import\n\tvar enex = doc.querySelector(\"en-export\");\n\tresults.push({\n\t\ttitle: \"Evernote Import Report\",\n\t\ttext: \"Evernote file imported on \" + enex.getAttribute(\"export-date\") + \" from \" + enex.getAttribute(\"application\") + \" (\" + enex.getAttribute(\"version\") + \")\"\n\t})\n\t// Get all the \"note\" nodes\n\tvar noteNodes = doc.querySelectorAll(\"note\");\n\t$tw.utils.each(noteNodes,function(noteNode) {\n\t\tvar result = {\n\t\t\ttitle: getTextContent(noteNode,\"title\"),\n\t\t\ttype: \"text/html\",\n\t\t\ttags: [],\n\t\t\ttext: getTextContent(noteNode,\"content\"),\n\t\t\tmodified: convertDate(getTextContent(noteNode,\"created\")),\n\t\t\tcreated: convertDate(getTextContent(noteNode,\"created\"))\n\n\t\t};\n\t\t$tw.utils.each(noteNode.querySelectorAll(\"tag\"),function(tagNode) {\n\t\t\tresult.tags.push(tagNode.textContent);\n\t\t});\n\t\t// If there's an update date, set modifiy date accordingly\n\t\tvar update = getTextContent(noteNode,\"updated\");\n\t\tif(update) {\n\t\t\tresult.modified = convertDate(update);\n\t\t}\n\t\t$tw.utils.each(noteNode.querySelectorAll(\"note-attributes>*\"),function(attrNode) {\n\t\t\tresult[attrNode.tagName] = attrNode.textContent;\n\t\t});\n\t\tresults.push(result);\n\t\t$tw.utils.each(noteNode.querySelectorAll(\"resources\"),function(resourceNode) {\n\t\t\tresults.push({\n\t\t\t\ttitle: getTextContent(resourceNode,\"resource-attributes>file-name\"),\n\t\t\t\ttype: getTextContent(resourceNode,\"mime\"),\n\t\t\t\twidth: getTextContent(resourceNode,\"width\"),\n\t\t\t\theight: getTextContent(resourceNode,\"height\"),\n\t\t\t\ttext: getTextContent(resourceNode,\"data\")\n\t\t\t});\n\t\t});\n\t});\n\t// Return the output tiddlers\n\treturn results;\n};\n\nfunction getTextContent(node,selector) {\n\treturn (node.querySelector(selector) || {}).textContent;\n}\n\nfunction convertDate(isoDate) {\n\treturn (isoDate || \"\").replace(\"T\",\"\").replace(\"Z\",\"\") + \"000\"\n}\n\n})();\n",
"title": "$:/plugins/tiddlywiki/evernote/modules/enex-deserializer.js",
"type": "application/javascript",
"module-type": "tiddlerdeserializer"
},
"$:/plugins/tiddlywiki/evernote/readme": {
"title": "$:/plugins/tiddlywiki/evernote/readme",
"text": "This plugin contains tool to assist migration of content from Evernote ENEX files.\n\n!! Instructions\n\n# Download or save your ENEX file from Evernote\n# Rename the file to have an `.enex` extension\n# Drag the file into the TiddlyWiki browser window\n## Alternatively, click the \"Import\" button in the \"Tools\" sidebar tab\n# Review and accept the converted tiddlers\n"
}
}
}
{
"tiddlers": {
"$:/plugins/tiddlywiki/googleanalytics/googleanalytics.js": {
"text": "/*\\\ntitle: $:/plugins/tiddlywiki/googleanalytics/googleanalytics.js\ntype: application/javascript\nmodule-type: startup\n\nRuns Google Analytics with the account number in the tiddler `$:/GoogleAnalyticsAccount` and the domain name in `$:/GoogleAnalyticsDomain`\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"google-analytics\";\nexports.platforms = [\"browser\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// getting parameters\n\tvar GA_ACCOUNT = $tw.wiki.getTiddlerText(\"$:/GoogleAnalyticsAccount\",\"\").replace(/\\n/g,\"\"),\n\t\tGA_DOMAIN = $tw.wiki.getTiddlerText(\"$:/GoogleAnalyticsDomain\",\"\").replace(/\\n/g,\"\");\n\tif (GA_DOMAIN == \"\" || GA_DOMAIN == undefined) GA_DOMAIN = \"auto\";\n\n\t// using ga \"isogram\" function\n (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');\n\n ga('create', GA_ACCOUNT, GA_DOMAIN);\n ga('send', 'pageview');\n};\n\n})();\n",
"title": "$:/plugins/tiddlywiki/googleanalytics/googleanalytics.js",
"type": "application/javascript",
"module-type": "startup"
},
"$:/plugins/tiddlywiki/googleanalytics/readme": {
"title": "$:/plugins/tiddlywiki/googleanalytics/readme",
"text": "This plugin enables you to use Google Analytics to track access to your online TiddlyWiki document. Based upon the [[official Google code|https://developers.google.com/analytics/devguides/collection/analyticsjs]].\n\n[[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/googleanalytics]]\n"
},
"$:/plugins/tiddlywiki/googleanalytics/settings": {
"title": "$:/plugins/tiddlywiki/googleanalytics/settings",
"text": "You have only two value to set, only first is mandatory:\n\n# ''[[Google Analytics Account|$:/GoogleAnalyticsAccount]]'': (mandatory) a code of the form `UA-XXXXXX-XX` where X are digits<br/><$edit-text tiddler=\"$:/GoogleAnalyticsAccount\" default=\"\" tag=\"input\"/>\n\n# ''[[Google Analytics Domain|$:/GoogleAnalyticsDomain]]'': (optional) the website URL where the TiddlyWiki file is published. Defaults to `auto` if not set.<br/><$edit-text tiddler=\"$:/GoogleAnalyticsDomain\" default=\"\" tag=\"input\"/>\n"
},
"$:/plugins/tiddlywiki/googleanalytics/usage": {
"title": "$:/plugins/tiddlywiki/googleanalytics/usage",
"text": "!! Create a Google Analytics account\n\nIf you don't already have an account:\n\n# Go to the Google Analytics website: http://www.google.com/analytics/\n# Click the ''Access Google Analytics'' button and follow instructions to set up your account\n# Enter the URL where the wiki is hosted\n# Note the Tracking ID for this domain of the form `UA-XXXXXX-XX`\n\n!! Install the plugin on your local copy of the TiddlyWiki\n\n# ''Backup your TiddlyWiki''. Just in case\n# Install the plugin via the plugin manager in control panel\n# Save the TiddlyWiki andrefresh the page to load the plugin\n# Go to [[$:/ControlPanel]] > Plugins tab and unfold the Google Analytics Plugin\n# Go to the //settings// tab and edit the parameters\n# Save the TiddlyWiki\n\n!! Upload the new version of your TiddlyWiki\n\n# Upload the saved TiddlyWiki to TiddlySpot, GitHub, GitLab or other web host\n# Return to your Google Analytics page to check that your site is being tracked\n"
}
}
}
{
"tiddlers": {
"$:/core/modules/savers/nodewebkit.js": {
"text": "/*\\\ntitle: $:/core/modules/savers/nodewebkit.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes in the NW.js environment. Not required by TiddlyDesktop, which re-uses the TiddlyFox saver, but useful if you're embedding a single TiddlyWiki document into a NW.js app.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar NodeWebKitSaver = function(wiki) {\n};\n\nNodeWebKitSaver.prototype.save = function(text,method,callback) {\n\t// Bail out unless this is a save (rather than a download)\n\tif(method !== \"save\") {\n\t\treturn false;\n\t}\n\t// Get the pathname of this document\n\tvar pathname = document.location.pathname;\n\t// Test for a Windows path of the form /x:/blah/blah\n\tif(/^\\/[A-Z]\\:\\//i.test(pathname)) {\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t\t// Convert slashes to backslashes\n\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t}\n\t// Try to save\n\tvar fs = require(\"fs\");\n\tfs.writeFile(pathname,text,callback);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nNodeWebKitSaver.prototype.info = {\n\tname: \"nodewebkit\",\n\tpriority: 1700\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\t// Check if we're running under node-webkit\n\treturn (typeof process == \"object\");\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new NodeWebKitSaver(wiki);\n};\n\n})();\n",
"title": "$:/core/modules/savers/nodewebkit.js",
"type": "application/javascript",
"module-type": "saver"
},
"$:/plugins/tiddlywiki/nodewebkitsaver/readme": {
"title": "$:/plugins/tiddlywiki/nodewebkitsaver/readme",
"text": "This plugin provides a ''saver'' module for saving changes when using TiddlyWiki directly under NW.js (previously known as node-webkit).\n\n[[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/nodewebkitsaver]]\n"
}
}
}
{
"tiddlers": {
"$:/plugins/tiddlywiki/railroad/components.js": {
"text": "/*\\\ntitle: $:/plugins/tiddlywiki/railroad/components.js\ntype: application/javascript\nmodule-type: library\n\nComponents of a railroad diagram.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar railroad = require(\"$:/plugins/tiddlywiki/railroad/railroad-diagrams.js\");\n\n/////////////////////////// Base component\n\nvar Component = function() {\n\tthis.type = \"Component\";\n};\n\n// Set up a leaf component\nComponent.prototype.initialiseLeaf = function(type,text) {\n\tthis.type = type;\n\tthis.text = text;\n};\n\n// Set up a component with a single child\nComponent.prototype.initialiseWithChild = function(type,content) {\n\tthis.type = type;\n\tthis.child = toSingleChild(content);\n};\n\n// Set up a component with an array of children\nComponent.prototype.initialiseWithChildren = function(type,content) {\n\tthis.type = type;\n\t// Force the content to be an array\n\tthis.children = $tw.utils.isArray(content) ? content : [content];\n}\n\n// Return an array of the SVG strings of an array of children\nComponent.prototype.getSvgOfChildren = function() {\n\treturn this.children.map(function(child) {\n\t\treturn child.toSvg();\n\t});\n}\n\nComponent.prototype.toSvg = function() {\n\treturn \"\";\n}\n\nComponent.prototype.debug = function(output,indent) {\n\toutput.push(indent);\n\toutput.push(this.type);\n\t// Add the text of a leaf component\n\tif(this.text && this.text !== \"\") {\n\t\toutput.push(\": \");\n\t\toutput.push(this.text);\n\t}\n\t// Flag the normal route\n\tif(this.normal !== undefined) {\n\t\tif(this.normal === true) {\n\t\t\toutput.push(\" (normal)\");\n\t\t} else if(this.normal !== false) {\n\t\t\toutput.push(\" (normal: \");\n\t\t\toutput.push(this.normal);\n\t\t\toutput.push(\")\");\n\t\t}\n\t}\n\toutput.push(\"\\n\");\n\tvar contentIndent = indent + \" \";\n\t// Add the one child\n\tif(this.child) {\n\t\tthis.child.debug(output,contentIndent);\n\t}\n\t// Add the array of children\n\tif(this.children) {\n\t\tthis.debugArray(this.children,output,contentIndent);\n\t}\n \t// Add the separator if there is one\n\tif(this.separator) {\n\t\toutput.push(indent);\n\t\toutput.push(\"(separator)\\n\");\n\t\tthis.separator.debug(output,contentIndent);\n\t}\n};\n\nComponent.prototype.debugArray = function(array,output,indent) {\n\tfor(var i=0; i<array.length; i++) {\n\t\tvar item = array[i];\n\t\t// Choice content is a special case: we number the branches\n\t\tif(item.isChoiceBranch) {\n\t\t\toutput.push(indent);\n\t\t\toutput.push(\"(\");\n\t\t\toutput.push(i);\n\t\t\toutput.push(\")\\n\");\n\t\t\titem.debug(output,\" \"+indent);\n\t\t} else {\n\t\t\titem.debug(output,indent);\n\t\t}\n\t}\n}\n\nvar toSingleChild = function(content) {\n\tif($tw.utils.isArray(content)) {\n\t\t// Reduce an array of one child to just the child\n\t\tif(content.length === 1) {\n\t\t\treturn content[0];\n\t\t} else {\n\t\t\t// Never allow an empty sequence\n\t\t \tif(content.length === 0) {\n \t\t\t\tcontent.push(new Dummy());\n\t\t \t}\n\t\t\t// Wrap multiple children into a single sequence component\n\t\t\treturn new Sequence(content);\n\t\t}\n\t} else {\n\t\t// Already single\n\t\treturn content;\n\t}\n}\n\n/////////////////////////// Leaf components\n\nvar Comment = function(text) {\n\tthis.initialiseLeaf(\"Comment\",text);\n};\n\nComment.prototype = new Component();\n\nComment.prototype.toSvg = function() {\n\treturn railroad.Comment(this.text);\n}\n\nvar Dummy = function() {\n\tthis.initialiseLeaf(\"Dummy\");\n};\n\nDummy.prototype = new Component();\n\nDummy.prototype.toSvg = function() {\n\treturn railroad.Skip();\n}\n\nvar Nonterminal = function(text) {\n\tthis.initialiseLeaf(\"Nonterminal\",text);\n};\n\nNonterminal.prototype = new Component();\n\nNonterminal.prototype.toSvg = function() {\n\treturn railroad.NonTerminal(this.text);\n}\n\nvar Terminal = function(text) {\n\tthis.initialiseLeaf(\"Terminal\",text);\n};\n\nTerminal.prototype = new Component();\n\nTerminal.prototype.toSvg = function() {\n\treturn railroad.Terminal(this.text);\n}\n\n/////////////////////////// Components with one child\n\nvar Optional = function(content,normal) {\n\tthis.initialiseWithChild(\"Optional\",content);\n\tthis.normal = normal;\n};\n\nOptional.prototype = new Component();\n\nOptional.prototype.toSvg = function() {\n\t// Call Optional(component,\"skip\")\n\treturn railroad.Optional(this.child.toSvg(), this.normal ? undefined : \"skip\");\n}\n\nvar OptionalRepeated = function(content,separator,normal,wantArrow) {\n\tthis.initialiseWithChild(\"OptionalRepeated\",content);\n\tthis.separator = toSingleChild(separator);\n\tthis.normal = normal;\n\tthis.wantArrow = wantArrow;\n};\n\nOptionalRepeated.prototype = new Component();\n\nOptionalRepeated.prototype.toSvg = function() {\n\t// Call ZeroOrMore(component,separator,\"skip\")\n\tvar separatorSvg = this.separator ? this.separator.toSvg() : null;\n\tvar skip = this.normal ? undefined : \"skip\";\n\treturn railroad.ZeroOrMore(this.child.toSvg(),separatorSvg,skip,this.wantArrow);\n}\n\nvar Repeated = function(content,separator,wantArrow) {\n\tthis.initialiseWithChild(\"Repeated\",content);\n\tthis.separator = toSingleChild(separator);\n\tthis.wantArrow = wantArrow;\n};\n\nRepeated.prototype = new Component();\n\nRepeated.prototype.toSvg = function() {\n\t// Call OneOrMore(component,separator)\n\tvar separatorSvg = this.separator ? this.separator.toSvg() : null;\n\treturn railroad.OneOrMore(this.child.toSvg(),separatorSvg,this.wantArrow);\n}\n\nvar Link = function(content,options) {\n\tthis.initialiseWithChild(\"Link\",content);\n\tthis.options = options;\n};\n\nLink.prototype = new Component();\n\nLink.prototype.toSvg = function() {\n\treturn railroad.Link(this.child.toSvg(),this.options);\n}\n\nvar Transclusion = function(content) {\n\tthis.initialiseWithChild(\"Transclusion\",content);\n};\n\nTransclusion.prototype = new Component();\n\nTransclusion.prototype.toSvg = function() {\n\treturn this.child.toSvg();\n}\n\n/////////////////////////// Components with an array of children\n\nvar Root = function(content) {\n\tthis.initialiseWithChildren(\"Root\",content);\n};\n\nRoot.prototype = new Component();\n\nRoot.prototype.toSvg = function(options) {\n\tvar args = this.getSvgOfChildren();\n\targs.unshift(options);\n\t// Call Diagram(options,component1,component2,...)\n\treturn railroad.Diagram.apply(null,args);\n}\n\nvar Sequence = function(content) {\n\tthis.initialiseWithChildren(\"Sequence\",content);\n};\n\nSequence.prototype = new Component();\n\nSequence.prototype.toSvg = function() {\n\t// Call Sequence(component1,component2,...)\n\treturn railroad.Sequence.apply(null,this.getSvgOfChildren());\n}\n\nvar Choice = function(content,normal) {\n\tthis.initialiseWithChildren(\"Choice\",content.map(toSingleChild));\n\tfor(var i=0; i<this.children.length; i++) {\n\t\tthis.children[i].isChoiceBranch = true;\n\t}\n\tthis.normal = normal;\n};\n\nChoice.prototype = new Component();\n\nChoice.prototype.toSvg = function() {\n\t// Call Choice(normal,component1,component2,...)\n\tvar args = this.getSvgOfChildren();\n\targs.unshift(this.normal);\n\treturn railroad.Choice.apply(null,args);\n}\n\n/////////////////////////// Exports\n\nexports.components = {\n\tChoice: Choice,\n\tComment: Comment,\n\tDummy: Dummy,\n\tLink: Link,\n\tNonterminal: Nonterminal,\n\tOptional: Optional,\n\tOptionalRepeated: OptionalRepeated,\n\tRepeated: Repeated,\n\tRoot: Root,\n\tSequence: Sequence,\n\tTerminal: Terminal,\n\tTransclusion: Transclusion\n};\n\n})();",
"title": "$:/plugins/tiddlywiki/railroad/components.js",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/tiddlywiki/railroad/example-source": {
"created": "20150103184022184",
"modified": "20150119214125000",
"tags": "",
"title": "$:/plugins/tiddlywiki/railroad/example-source",
"type": "text/vnd.tiddlywiki.railroad",
"text": "[\"+\"]\n({ [[digit|GettingStarted]] } | \"#\" <'escape sequence'>)\n[{(\"@\" name-char | :\"--\" )}]\n"
},
"$:/plugins/tiddlywiki/railroad/example": {
"created": "20150102165032410",
"modified": "20150120090735000",
"tags": "",
"title": "$:/plugins/tiddlywiki/railroad/example",
"text": "Notation:\n\n<pre><code><$text text={{$:/plugins/tiddlywiki/railroad/example-source}}/></code></pre>\n\nDiagram:\n\n{{$:/plugins/tiddlywiki/railroad/example-source}}\n\nDebug mode:\n\n<$railroad debug=\"yes\" text={{$:/plugins/tiddlywiki/railroad/example-source}}/>\n"
},
"$:/plugins/tiddlywiki/railroad/readme": {
"created": "20150102163222184",
"modified": "20150119231005000",
"title": "$:/plugins/tiddlywiki/railroad/readme",
"text": "This plugin provides a `<$railroad>` widget for generating railroad diagrams as SVG images.\n\nAlternatively, the [[diagram notation|$:/plugins/tiddlywiki/railroad/syntax]] can be stored in a dedicated tiddler with its `type` field set to `text/vnd.tiddlywiki.railroad`, and that tiddler can simply be transcluded to wherever it is needed.\n\nThe plugin is based on [[a library by Tab Atkins|https://github.com/tabatkins/railroad-diagrams]], and has been extended to make it more flexible, including allowing components of a diagram to function as links or be transcluded from other tiddlers.\n"
},
"$:/plugins/tiddlywiki/railroad/syntax-string": {
"created": "20150103184022184",
"modified": "20150103184022184",
"title": "$:/plugins/tiddlywiki/railroad/syntax-string",
"text": "('\"' text '\"' | \"'\" text \"'\" | '\"\"\"' text '\"\"\"')"
},
"$:/plugins/tiddlywiki/railroad/syntax": {
"created": "20150103184022184",
"modified": "20150119220342000",
"title": "$:/plugins/tiddlywiki/railroad/syntax",
"text": "The railroad widget uses a special notation to construct the components defined below.\n\n`x` and `y` here stand for any component.\n\nNames (as opposed to quoted strings) are available when a value starts with a letter and contains only letters, digits, underscores, dots and hyphens.\n\n---\n\n; sequence\n: <$railroad text=\"\"\" [\"<-\"] {x} [\"->\"] \"\"\"/>\n* A sequence of components\n* The `<-` and `->` delimiters allow you to force a single component to be treated as a sequence. This is occasionally useful for spacing a diagram out\n\n---\n\n; optional\n: <$railroad text=\"\"\" \"[\" [\":\"] x \"]\" \"\"\"/>\n* A component that can be omitted\n* The colon makes `x` appear straight ahead\n\n---\n\n; repeated\n: <$railroad text=\"\"\" \"{\" x [:\"+\" y] \"}\" \"\"\"/>\n* A list of one or more `x`\n* The `+` suffix adds `y` as a separator between each `x` and the next\n\n---\n\n; optional repeated\n: <$railroad text=\"\"\" \"[{\" [\":\"] x [:\"+\" y] \"}]\" \"\"\"/>\n* An optional list of `x`, i.e. a list of zero or more `x`\n\n---\n\n; choice\n: <$railroad text=\"\"\" \"(\" {[:\":\"] x +\"|\"} \")\" \"\"\"/>\n* A set of alternatives\n* The colon indicates which branch appears straight ahead. By default, it's the first branch\n\n---\n\n; string / terminal\n: <$railroad text={{$:/plugins/tiddlywiki/railroad/syntax-string}}/>\n* A literal or terminal component\n* This follows the normal ~TiddlyWiki rules for quoted strings\n\n---\n\n; nonterminal\n: <$railroad text=\"\"\" (name | \"<\" string \">\") \"\"\"/>\n* A nonterminal component, i.e. the name of another diagram\n\n---\n\n; comment\n: <$railroad text=\"\"\" \"/\" string \"/\" \"\"\"/>\n* A comment\n\n---\n\n; dummy\n: <$railroad text=\"\"\" \"-\" \"\"\"/>\n* The absence of a component\n\n---\n\n; link\n: <$railroad text=\"\"\" \"[[\" x \"|\" (name|string) \"]]\" \"\"\"/>\n* A link to the tiddler title or URI given by the string or name\n\n---\n\n; transclusion\n: <$railroad text=\"\"\" \"{{\" (name|string) \"}}\" \"\"\"/>\n* Treats the content of another tiddler as diagram syntax and transcludes it into the current diagram\n\n---\n\n; arrow pragma\n: <$railroad text=\"\"\" \"\\arrow\" (\"yes\" | \"no\") \"\"\"/>\n* Controls whether repeat paths have an arrow on them\n* Can be toggled on and off in mid-diagram, if desired\n\n---\n\n; debug pragma\n: <$railroad text=\"\"\" \"\\debug\" \"\"\"/>\n* Causes the diagram to display its parse tree\n\n---\n\n; start/end pragma\n: <$railroad text=\"\"\" (\"\\start\" |: \"\\end\") (\"none\" |: \"single\" | \"double\") \"\"\"/>\n* Controls the style of the diagram's startpoint or endpoint\n"
},
"$:/plugins/tiddlywiki/railroad/usage": {
"created": "20150102163222184",
"modified": "20150119231005000",
"title": "$:/plugins/tiddlywiki/railroad/usage",
"text": "The content of the `<$railroad>` widget is ignored.\n\n|!Attribute |!Description |!Default |\n|text |Text in a special notation that defines the diagram's layout |-- |\n|arrow |If set to `no`, repeat paths do not have an arrow on them |`yes` |\n|start |Style of the startpoint: `single`, `double`, `none` |`single` |\n|end |Style of the endpoint: `single`, `double`, `none` |`single` |\n|debug |If set to `yes`, the diagram displays its parse tree |`no` |\n\nThese options can also be specified via pragmas in the diagram notation, or globally via a dictionary tiddler called `$:/config/railroad`:\n\n```\narrow: yes\nstart: single\nend: single\ndebug: no\n```\n"
},
"$:/plugins/tiddlywiki/railroad/railroad-diagrams.css": {
"text": "/* CSS modified for TiddlyWiki */\nsvg.railroad-diagram {\n\tbackground-color: hsl(30,20%,98%);\n\tborder-radius: 5px;\n}\nsvg.railroad-diagram:hover {\n\tbackground-color: hsl(30,20%,96%);\n}\nsvg.railroad-diagram path,\nsvg.railroad-diagram rect {\n\tstroke-width: 2;\n\tstroke: #333;\n}\nsvg.railroad-diagram path {\n\tfill: rgba(0,0,0,0);\n}\nsvg.railroad-diagram rect {\n\tfill: hsl(120,100%,90%);\n}\nsvg.railroad-diagram text {\n\tfont: 14px monospace;\n\ttext-anchor: middle;\n}\nsvg.railroad-diagram text.label {\n\ttext-anchor: start;\n}\nsvg.railroad-diagram text.comment {\n\tfont: italic 12px monospace;\n}\nsvg.railroad-diagram path.arrow {\n stroke-width: 2;\n}",
"type": "text/css",
"title": "$:/plugins/tiddlywiki/railroad/railroad-diagrams.css",
"tags": "$:/tags/Stylesheet"
},
"$:/plugins/tiddlywiki/railroad/railroad-diagrams.js": {
"text": "(function(document) {\n/* TiddlyWiki: modifications to the original library are commented like this */\n\n/*\nRailroad Diagrams\nby Tab Atkins Jr. (and others)\nhttp://xanthir.com\nhttp://twitter.com/tabatkins\nhttp://github.com/tabatkins/railroad-diagrams\n\nThis document and all associated files in the github project are licensed under CC0: http://creativecommons.org/publicdomain/zero/1.0/\nThis means you can reuse, remix, or otherwise appropriate this project for your own use WITHOUT RESTRICTION.\n(The actual legal meaning can be found at the above link.)\nDon't ask me for permission to use any part of this project, JUST USE IT.\nI would appreciate attribution, but that is not required by the license.\n*/\n\n/*\nThis file uses a module pattern to avoid leaking names into the global scope.\nThe only accidental leakage is the name \"temp\".\nThe exported names can be found at the bottom of this file;\nsimply change the names in the array of strings to change what they are called in your application.\n\nAs well, several configuration constants are passed into the module function at the bottom of this file.\nAt runtime, these constants can be found on the Diagram class.\n*/\n\nvar temp = (function(options) {\n\tfunction subclassOf(baseClass, superClass) {\n\t\tbaseClass.prototype = Object.create(superClass.prototype);\n\t\tbaseClass.prototype.$super = superClass.prototype;\n\t}\n\n\tfunction unnull(/* children */) {\n\t\treturn [].slice.call(arguments).reduce(function(sofar, x) { return sofar !== undefined ? sofar : x; });\n\t}\n\n\tfunction determineGaps(outer, inner) {\n\t\tvar diff = outer - inner;\n\t\tswitch(Diagram.INTERNAL_ALIGNMENT) {\n\t\t\tcase 'left': return [0, diff]; break;\n\t\t\tcase 'right': return [diff, 0]; break;\n\t\t\tcase 'center':\n\t\t\tdefault: return [diff/2, diff/2]; break;\n\t\t}\n\t}\n\n\tfunction wrapString(value) {\n\t\treturn ((typeof value) == 'string') ? new Terminal(value) : value;\n\t}\n\n\n\tfunction SVG(name, attrs, text) {\n\t\tattrs = attrs || {};\n\t\ttext = text || '';\n\t\tvar el = document.createElementNS(\"http://www.w3.org/2000/svg\",name);\n\t\tfor(var attr in attrs) {\n\t\t\tel.setAttribute(attr, attrs[attr]);\n\t\t}\n\t\tel.textContent = text;\n\t\treturn el;\n\t}\n\n\tfunction FakeSVG(tagName, attrs, text){\n\t\tif(!(this instanceof FakeSVG)) return new FakeSVG(tagName, attrs, text);\n\t\tif(text) this.children = text;\n\t\telse this.children = [];\n\t\tthis.tagName = tagName;\n\t\tthis.attrs = unnull(attrs, {});\n\t\treturn this;\n\t};\n\tFakeSVG.prototype.format = function(x, y, width) {\n\t\t// Virtual\n\t};\n\tFakeSVG.prototype.addTo = function(parent) {\n\t\tif(parent instanceof FakeSVG) {\n\t\t\tparent.children.push(this);\n\t\t\treturn this;\n\t\t} else {\n\t\t\tvar svg = this.toSVG();\n\t\t\tparent.appendChild(svg);\n\t\t\treturn svg;\n\t\t}\n\t};\n\tFakeSVG.prototype.toSVG = function() {\n\t\tvar el = SVG(this.tagName, this.attrs);\n\t\tif(typeof this.children == 'string') {\n\t\t\tel.textContent = this.children;\n\t\t} else {\n\t\t\tthis.children.forEach(function(e) {\n\t\t\t\tel.appendChild(e.toSVG());\n\t\t\t});\n\t\t}\n\t\treturn el;\n\t};\n\tFakeSVG.prototype.toString = function() {\n\t\tvar str = '<' + this.tagName;\n\t\tvar group = this.tagName == \"g\" || this.tagName == \"svg\";\n\t\tfor(var attr in this.attrs) {\n\t\t\tstr += ' ' + attr + '=\"' + (this.attrs[attr]+'').replace(/&/g, '&').replace(/\"/g, '"') + '\"';\n\t\t}\n\t\tstr += '>';\n\t\tif(group) str += \"\\n\";\n\t\tif(typeof this.children == 'string') {\n\t\t\tstr += this.children.replace(/&/g, '&').replace(/</g, '<');\n\t\t} else {\n\t\t\tthis.children.forEach(function(e) {\n\t\t\t\tstr += e;\n\t\t\t});\n\t\t}\n\t\tstr += '</' + this.tagName + '>\\n';\n\t\treturn str;\n\t}\n\n\tfunction Path(x,y,attrs) {\n\t\tif(!(this instanceof Path)) return new Path(x,y,attrs);\n\t\tFakeSVG.call(this, 'path', attrs);\n\t\tthis.attrs.d = \"M\"+x+' '+y;\n\t}\n\tsubclassOf(Path, FakeSVG);\n\tPath.prototype.m = function(x,y) {\n\t\tthis.attrs.d += 'm'+x+' '+y;\n\t\treturn this;\n\t}\n\tPath.prototype.h = function(val) {\n\t\tthis.attrs.d += 'h'+val;\n\t\treturn this;\n\t}\n\tPath.prototype.right = Path.prototype.h;\n\tPath.prototype.left = function(val) { return this.h(-val); }\n\tPath.prototype.v = function(val) {\n\t\tthis.attrs.d += 'v'+val;\n\t\treturn this;\n\t}\n\tPath.prototype.down = Path.prototype.v;\n\tPath.prototype.up = function(val) { return this.v(-val); }\n\tPath.prototype.arc = function(sweep){\n\t\tvar x = Diagram.ARC_RADIUS;\n\t\tvar y = Diagram.ARC_RADIUS;\n\t\tif(sweep[0] == 'e' || sweep[1] == 'w') {\n\t\t\tx *= -1;\n\t\t}\n\t\tif(sweep[0] == 's' || sweep[1] == 'n') {\n\t\t\ty *= -1;\n\t\t}\n\t\tif(sweep == 'ne' || sweep == 'es' || sweep == 'sw' || sweep == 'wn') {\n\t\t\tvar cw = 1;\n\t\t} else {\n\t\t\tvar cw = 0;\n\t\t}\n\t\tthis.attrs.d += \"a\"+Diagram.ARC_RADIUS+\" \"+Diagram.ARC_RADIUS+\" 0 0 \"+cw+' '+x+' '+y;\n\t\treturn this;\n\t}\n\tPath.prototype.format = function() {\n\t\t// All paths in this library start/end horizontally.\n\t\t// The extra .5 ensures a minor overlap, so there's no seams in bad rasterizers.\n\t\tthis.attrs.d += 'h.5';\n\t\treturn this;\n\t}\n/* TiddlyWiki: added support for arbitrary straight lines */\n\tPath.prototype.line = function(dx,dy) {\n\t\tthis.attrs.d += \"l\"+dx+\" \"+dy;\n\t\treturn this;\n\t}\n\n/* TiddlyWiki: added twOptions parameter, passing it to Start() and End() */\n\tfunction Diagram(twOptions, items) {\n\t\tif(!(this instanceof Diagram)) return new Diagram(twOptions, [].slice.call(arguments,1));\n\t\tFakeSVG.call(this, 'svg', {class: Diagram.DIAGRAM_CLASS});\n\t\tthis.items = items.map(wrapString);\n\t\tthis.items.unshift(new Start(twOptions.start));\n\t\tthis.items.push(new End(twOptions.end));\n\t\tthis.width = this.items.reduce(function(sofar, el) { return sofar + el.width + (el.needsSpace?20:0)}, 0)+1;\n\t\tthis.up = Math.max.apply(null, this.items.map(function (x) { return x.up; }));\n\t\tthis.down = Math.max.apply(null, this.items.map(function (x) { return x.down; }));\n\t\tthis.formatted = false;\t\t\n\t}\n\tsubclassOf(Diagram, FakeSVG);\n\tfor(var option in options) {\n\t\tDiagram[option] = options[option];\n\t}\n\tDiagram.prototype.format = function(paddingt, paddingr, paddingb, paddingl) {\n\t\tpaddingt = unnull(paddingt, 20);\n\t\tpaddingr = unnull(paddingr, paddingt, 20);\n\t\tpaddingb = unnull(paddingb, paddingt, 20);\n\t\tpaddingl = unnull(paddingl, paddingr, 20);\n\t\tvar x = paddingl;\n\t\tvar y = paddingt;\n\t\ty += this.up;\n\t\tvar g = FakeSVG('g', Diagram.STROKE_ODD_PIXEL_LENGTH ? {transform:'translate(.5 .5)'} : {});\n\t\tfor(var i = 0; i < this.items.length; i++) {\n\t\t\tvar item = this.items[i];\n\t\t\tif(item.needsSpace) {\n\t\t\t\tPath(x,y).h(10).addTo(g);\n\t\t\t\tx += 10;\n\t\t\t}\n\t\t\titem.format(x, y, item.width).addTo(g);\n\t\t\tx += item.width;\n\t\t\tif(item.needsSpace) {\n\t\t\t\tPath(x,y).h(10).addTo(g);\n\t\t\t\tx += 10;\n\t\t\t}\n\t\t}\n\t\tthis.attrs.width = this.width + paddingl + paddingr;\n\t\tthis.attrs.height = this.up + this.down + paddingt + paddingb;\n\t\tthis.attrs.viewBox = \"0 0 \" + this.attrs.width + \" \" + this.attrs.height;\n\t\tg.addTo(this);\n\t\tthis.formatted = true;\n\t\treturn this;\n\t}\n\tDiagram.prototype.addTo = function(parent) {\n\t\tvar scriptTag = document.getElementsByTagName('script');\n\t\tscriptTag = scriptTag[scriptTag.length - 1];\n\t\tvar parentTag = scriptTag.parentNode;\n\t\tparent = parent || parentTag;\n\t\treturn this.$super.addTo.call(this, parent);\n\t}\n\tDiagram.prototype.toSVG = function() {\n\t\tif (!this.formatted) {\n\t\t\tthis.format();\n\t\t}\n\t\treturn this.$super.toSVG.call(this);\n\t}\n\tDiagram.prototype.toString = function() {\n\t\tif (!this.formatted) {\n\t\t\tthis.format();\n\t\t}\n\t\treturn this.$super.toString.call(this);\n\t}\n\n\tfunction Sequence(items) {\n\t\tif(!(this instanceof Sequence)) return new Sequence([].slice.call(arguments));\n\t\tFakeSVG.call(this, 'g');\n\t\tthis.items = items.map(wrapString);\n\t\tthis.width = this.items.reduce(function(sofar, el) { return sofar + el.width + (el.needsSpace?20:0)}, 0);\n\t\tthis.up = this.items.reduce(function(sofar,el) { return Math.max(sofar, el.up)}, 0);\n\t\tthis.down = this.items.reduce(function(sofar,el) { return Math.max(sofar, el.down)}, 0);\n\t}\n\tsubclassOf(Sequence, FakeSVG);\n\tSequence.prototype.format = function(x,y,width) {\n\t\t// Hook up the two sides if this is narrower than its stated width.\n\t\tvar gaps = determineGaps(width, this.width);\n\t\tPath(x,y).h(gaps[0]).addTo(this);\n\t\tPath(x+gaps[0]+this.width,y).h(gaps[1]).addTo(this);\n\t\tx += gaps[0];\n\n\t\tfor(var i = 0; i < this.items.length; i++) {\n\t\t\tvar item = this.items[i];\n\t\t\tif(item.needsSpace) {\n\t\t\t\tPath(x,y).h(10).addTo(this);\n\t\t\t\tx += 10;\n\t\t\t}\n\t\t\titem.format(x, y, item.width).addTo(this);\n\t\t\tx += item.width;\n\t\t\tif(item.needsSpace) {\n\t\t\t\tPath(x,y).h(10).addTo(this);\n\t\t\t\tx += 10;\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\tfunction Choice(normal, items) {\n\t\tif(!(this instanceof Choice)) return new Choice(normal, [].slice.call(arguments,1));\n\t\tFakeSVG.call(this, 'g');\n\t\tif( typeof normal !== \"number\" || normal !== Math.floor(normal) ) {\n\t\t\tthrow new TypeError(\"The first argument of Choice() must be an integer.\");\n\t\t} else if(normal < 0 || normal >= items.length) {\n\t\t\tthrow new RangeError(\"The first argument of Choice() must be an index for one of the items.\");\n\t\t} else {\n\t\t\tthis.normal = normal;\n\t\t}\n\t\tthis.items = items.map(wrapString);\n\t\tthis.width = this.items.reduce(function(sofar, el){return Math.max(sofar, el.width)},0) + Diagram.ARC_RADIUS*4;\n\t\tthis.up = this.down = 0;\n\t\tfor(var i = 0; i < this.items.length; i++) {\n\t\t\tvar item = this.items[i];\n\t\t\tif(i < normal) { this.up += Math.max(Diagram.ARC_RADIUS,item.up + item.down + Diagram.VERTICAL_SEPARATION); }\n\t\t\tif(i == normal) { this.up += Math.max(Diagram.ARC_RADIUS, item.up); this.down += Math.max(Diagram.ARC_RADIUS, item.down); }\n\t\t\tif(i > normal) { this.down += Math.max(Diagram.ARC_RADIUS,Diagram.VERTICAL_SEPARATION + item.up + item.down); }\n\t\t}\n\t}\n\tsubclassOf(Choice, FakeSVG);\n\tChoice.prototype.format = function(x,y,width) {\n\t\t// Hook up the two sides if this is narrower than its stated width.\n\t\tvar gaps = determineGaps(width, this.width);\n\t\tPath(x,y).h(gaps[0]).addTo(this);\n\t\tPath(x+gaps[0]+this.width,y).h(gaps[1]).addTo(this);\n\t\tx += gaps[0];\n\n\t\tvar last = this.items.length -1;\n\t\tvar innerWidth = this.width - Diagram.ARC_RADIUS*4;\n\n\t\t// Do the elements that curve above\n\t\tfor(var i = this.normal - 1; i >= 0; i--) {\n\t\t\tvar item = this.items[i];\n\t\t\tif( i == this.normal - 1 ) {\n\t\t\t\tvar distanceFromY = Math.max(Diagram.ARC_RADIUS*2, this.items[i+1].up + Diagram.VERTICAL_SEPARATION + item.down);\n\t\t\t}\n\t\t\tPath(x,y).arc('se').up(distanceFromY - Diagram.ARC_RADIUS*2).arc('wn').addTo(this);\n\t\t\titem.format(x+Diagram.ARC_RADIUS*2,y - distanceFromY,innerWidth).addTo(this);\n\t\t\tPath(x+Diagram.ARC_RADIUS*2+innerWidth, y-distanceFromY).arc('ne').down(distanceFromY - Diagram.ARC_RADIUS*2).arc('ws').addTo(this);\n\t\t\tdistanceFromY += Math.max(Diagram.ARC_RADIUS, item.up + Diagram.VERTICAL_SEPARATION + (i == 0 ? 0 : this.items[i-1].down));\n\t\t}\n\n\t\t// Do the straight-line path.\n\t\tPath(x,y).right(Diagram.ARC_RADIUS*2).addTo(this);\n\t\tthis.items[this.normal].format(x+Diagram.ARC_RADIUS*2, y, innerWidth).addTo(this);\n\t\tPath(x+Diagram.ARC_RADIUS*2+innerWidth, y).right(Diagram.ARC_RADIUS*2).addTo(this);\n\n\t\t// Do the elements that curve below\n\t\tfor(var i = this.normal+1; i <= last; i++) {\n\t\t\tvar item = this.items[i];\n\t\t\tif( i == this.normal + 1 ) {\n\t\t\t\tvar distanceFromY = Math.max(Diagram.ARC_RADIUS*2, this.items[i-1].down + Diagram.VERTICAL_SEPARATION + item.up);\n\t\t\t}\n\t\t\tPath(x,y).arc('ne').down(distanceFromY - Diagram.ARC_RADIUS*2).arc('ws').addTo(this);\n\t\t\titem.format(x+Diagram.ARC_RADIUS*2, y+distanceFromY, innerWidth).addTo(this);\n\t\t\tPath(x+Diagram.ARC_RADIUS*2+innerWidth, y+distanceFromY).arc('se').up(distanceFromY - Diagram.ARC_RADIUS*2).arc('wn').addTo(this);\n\t\t\tdistanceFromY += Math.max(Diagram.ARC_RADIUS, item.down + Diagram.VERTICAL_SEPARATION + (i == last ? 0 : this.items[i+1].up));\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tfunction Optional(item, skip) {\n\t\tif( skip === undefined )\n\t\t\treturn Choice(1, Skip(), item);\n\t\telse if ( skip === \"skip\" )\n\t\t\treturn Choice(0, Skip(), item);\n\t\telse\n\t\t\tthrow \"Unknown value for Optional()'s 'skip' argument.\";\n\t}\n\n/* TiddlyWiki: added wantArrow */\n\tfunction OneOrMore(item, rep, wantArrow) {\n\t\tif(!(this instanceof OneOrMore)) return new OneOrMore(item, rep, wantArrow);\n\t\tFakeSVG.call(this, 'g');\n\n/* TiddlyWiki: code added */\n\t\tthis.wantArrow = wantArrow;\n\n\t\trep = rep || (new Skip);\n\t\tthis.item = wrapString(item);\n\t\tthis.rep = wrapString(rep);\n\t\tthis.width = Math.max(this.item.width, this.rep.width) + Diagram.ARC_RADIUS*2;\n\t\tthis.up = this.item.up;\n\t\tthis.down = Math.max(Diagram.ARC_RADIUS*2, this.item.down + Diagram.VERTICAL_SEPARATION + this.rep.up + this.rep.down);\n\n/* TiddlyWiki: moved calculation of distanceFromY (of the repeat arc) to here */\n\t\tthis.distanceFromY = Math.max(Diagram.ARC_RADIUS*2, this.item.down+Diagram.VERTICAL_SEPARATION+this.rep.up);\n\t}\n\tsubclassOf(OneOrMore, FakeSVG);\n\tOneOrMore.prototype.needsSpace = true;\n\tOneOrMore.prototype.format = function(x,y,width) {\n\t\t// Hook up the two sides if this is narrower than its stated width.\n\t\tvar gaps = determineGaps(width, this.width);\n\t\tPath(x,y).h(gaps[0]).addTo(this);\n\t\tPath(x+gaps[0]+this.width,y).h(gaps[1]).addTo(this);\n\t\tx += gaps[0];\n\n\t\t// Draw item\n\t\tPath(x,y).right(Diagram.ARC_RADIUS).addTo(this);\n\t\tthis.item.format(x+Diagram.ARC_RADIUS,y,this.width-Diagram.ARC_RADIUS*2).addTo(this);\n\t\tPath(x+this.width-Diagram.ARC_RADIUS,y).right(Diagram.ARC_RADIUS).addTo(this);\n\n\t\t// Draw repeat arc\n/* TiddlyWiki: moved calculation of distanceFromY from here to constructor */\n\t\tvar distanceFromY = this.distanceFromY;\n\t\t\n\t\tPath(x+Diagram.ARC_RADIUS,y).arc('nw').down(distanceFromY-Diagram.ARC_RADIUS*2).arc('ws').addTo(this);\n\t\tthis.rep.format(x+Diagram.ARC_RADIUS, y+distanceFromY, this.width - Diagram.ARC_RADIUS*2).addTo(this);\n\t\tPath(x+this.width-Diagram.ARC_RADIUS, y+distanceFromY).arc('se').up(distanceFromY-Diagram.ARC_RADIUS*2).arc('en').addTo(this);\n\t\t\n/* TiddlyWiki: code added */\n\t\tif(this.wantArrow) {\n\t\t\tvar arrowSize = Diagram.ARC_RADIUS/2;\n\t\t\t// Compensate for the illusion that makes the arrow look unbalanced if it's too close to the curve below it\n\t\t\tvar multiplier = (distanceFromY < arrowSize*5) ? 1.2 : 1;\n\t\t\tPath(x-arrowSize, y+distanceFromY/2 + arrowSize/2, {class:\"arrow\"}).\n\t\t\t\tline(arrowSize, -arrowSize).line(arrowSize*multiplier, arrowSize).addTo(this);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tfunction ZeroOrMore(item, rep, skip, wantArrow) {\n\t\treturn Optional(OneOrMore(item, rep, wantArrow), skip);\n\t}\n\n/* TiddlyWiki: added type parameter */\n\tfunction Start(type) {\n\t\tif(!(this instanceof Start)) return new Start(type);\n\t\tFakeSVG.call(this, 'path');\n\t\tthis.type = type || 'single'\n\t\tthis.width = (this.type === 'double') ? 20 : 10;\n\t\tthis.up = 10;\n\t\tthis.down = 10;\n\t}\n\tsubclassOf(Start, FakeSVG);\n\tStart.prototype.format = function(x,y) {\n/* TiddlyWiki: added types */\n\t\tif(this.type === 'single') {\n\t\t\tthis.attrs.d = 'M '+x+' '+(y-10)+' v 20 m 0 -10 h 10.5';\n\t\t} else if(this.type === 'double') {\n\t\t\tthis.attrs.d = 'M '+x+' '+(y-10)+' v 20 m 10 -20 v 20 m -10 -10 h 20.5';\n\t\t} else { // 'none'\n\t\t\tthis.attrs.d = 'M '+x+' '+y+' h 10.5';\n\t\t}\n\t\treturn this;\n\t}\n\n/* TiddlyWiki: added type parameter */\n\tfunction End(type) {\n\t\tif(!(this instanceof End)) return new End(type);\n\t\tFakeSVG.call(this, 'path');\n\t\tthis.type = type || 'double';\n\t\tthis.width = (this.type === 'double') ? 20 : 10;\n\t\tthis.up = 10;\n\t\tthis.down = 10;\n\t}\n\tsubclassOf(End, FakeSVG);\n\tEnd.prototype.format = function(x,y) {\n/* TiddlyWiki: added types */\n\t\tif(this.type === 'single') {\n\t\t\tthis.attrs.d = 'M '+x+' '+y+' h 10 m 0 -10 v 20';\n\t\t} else if(this.type === 'double') {\n\t\t\tthis.attrs.d = 'M '+x+' '+y+' h 20 m -10 -10 v 20 m 10 -20 v 20';\n\t\t} else { // 'none'\n\t\t\tthis.attrs.d = 'M '+x+' '+y+' h 10';\n\t\t}\n\t\treturn this;\n\t}\n\n\tfunction Terminal(text) {\n\t\tif(!(this instanceof Terminal)) return new Terminal(text);\n\t\tFakeSVG.call(this, 'g');\n\t\tthis.text = text;\n\t\tthis.width = text.length * 8 + 20; /* Assume that each char is .5em, and that the em is 16px */\n\t\tthis.up = 11;\n\t\tthis.down = 11;\n\t}\n\tsubclassOf(Terminal, FakeSVG);\n\tTerminal.prototype.needsSpace = true;\n\tTerminal.prototype.format = function(x, y, width) {\n\t\t// Hook up the two sides if this is narrower than its stated width.\n\t\tvar gaps = determineGaps(width, this.width);\n\t\tPath(x,y).h(gaps[0]).addTo(this);\n\t\tPath(x+gaps[0]+this.width,y).h(gaps[1]).addTo(this);\n\t\tx += gaps[0];\n\n\t\tFakeSVG('rect', {x:x, y:y-11, width:this.width, height:this.up+this.down, rx:10, ry:10}).addTo(this);\n\t\tFakeSVG('text', {x:x+this.width/2, y:y+4}, this.text).addTo(this);\n\t\treturn this;\n\t}\n\n\tfunction NonTerminal(text) {\n\t\tif(!(this instanceof NonTerminal)) return new NonTerminal(text);\n\t\tFakeSVG.call(this, 'g');\n\t\tthis.text = text;\n\t\tthis.width = text.length * 8 + 20;\n\t\tthis.up = 11;\n\t\tthis.down = 11;\n\t}\n\tsubclassOf(NonTerminal, FakeSVG);\n\tNonTerminal.prototype.needsSpace = true;\n\tNonTerminal.prototype.format = function(x, y, width) {\n\t\t// Hook up the two sides if this is narrower than its stated width.\n\t\tvar gaps = determineGaps(width, this.width);\n\t\tPath(x,y).h(gaps[0]).addTo(this);\n\t\tPath(x+gaps[0]+this.width,y).h(gaps[1]).addTo(this);\n\t\tx += gaps[0];\n\n\t\tFakeSVG('rect', {x:x, y:y-11, width:this.width, height:this.up+this.down}).addTo(this);\n\t\tFakeSVG('text', {x:x+this.width/2, y:y+4}, this.text).addTo(this);\n\t\treturn this;\n\t}\n\n\tfunction Comment(text) {\n\t\tif(!(this instanceof Comment)) return new Comment(text);\n\t\tFakeSVG.call(this, 'g');\n\t\tthis.text = text;\n\t\tthis.width = text.length * 7 + 10;\n\t\tthis.up = 11;\n\t\tthis.down = 11;\n\t}\n\tsubclassOf(Comment, FakeSVG);\n\tComment.prototype.needsSpace = true;\n\tComment.prototype.format = function(x, y, width) {\n\t\t// Hook up the two sides if this is narrower than its stated width.\n\t\tvar gaps = determineGaps(width, this.width);\n\t\tPath(x,y).h(gaps[0]).addTo(this);\n\t\tPath(x+gaps[0]+this.width,y).h(gaps[1]).addTo(this);\n\t\tx += gaps[0];\n\n\t\tFakeSVG('text', {x:x+this.width/2, y:y+5, class:'comment'}, this.text).addTo(this);\n\t\treturn this;\n\t}\n\n\tfunction Skip() {\n\t\tif(!(this instanceof Skip)) return new Skip();\n\t\tFakeSVG.call(this, 'g');\n\t\tthis.width = 0;\n\t\tthis.up = 0;\n\t\tthis.down = 0;\n\t}\n\tsubclassOf(Skip, FakeSVG);\n\tSkip.prototype.format = function(x, y, width) {\n\t\tPath(x,y).right(width).addTo(this);\n\t\treturn this;\n\t}\n\t\n/* TiddlyWiki: added linking ability */\n\tfunction Link(item,options) {\n\t\tif(!(this instanceof Link)) return new Link(item,options);\n\t\tFakeSVG.call(this,'a',options);\n\t\tthis.item = item;\n\t\tthis.width = item.width;\n\t\tthis.up = item.up;\n\t\tthis.down = item.down;\n\t}\n\tsubclassOf(Link, FakeSVG);\n\tLink.prototype.needsSpace = true;\n\tLink.prototype.format = function(x, y, width) {\n\t\tthis.item.format(x,y,width).addTo(this);\n\t\treturn this;\n\t}\n\n/* TiddlyWiki: this block replaces the export mechanism in the original library */\n\tif (exports) {\n\t\texports.Diagram = Diagram;\n\t\texports.Sequence = Sequence;\n\t\texports.Choice = Choice;\n\t\texports.Optional = Optional;\n\t\texports.OneOrMore = OneOrMore;\n\t\texports.ZeroOrMore = ZeroOrMore;\n\t\texports.Terminal = Terminal;\n\t\texports.NonTerminal = NonTerminal;\n\t\texports.Comment = Comment;\n\t\texports.Skip = Skip;\n\t\texports.Link = Link;\n\t};\n})(\n\t{\n\tVERTICAL_SEPARATION: 8,\n\tARC_RADIUS: 10,\n\tDIAGRAM_CLASS: 'railroad-diagram',\n\tSTROKE_ODD_PIXEL_LENGTH: true,\n\tINTERNAL_ALIGNMENT: 'center',\n\t}\n);\n\n/* TiddlyWiki: removed assignments to properties of the window object */\n\n})($tw.node ? $tw.fakeDocument : window.document)\n",
"type": "application/javascript",
"title": "$:/plugins/tiddlywiki/railroad/railroad-diagrams.js",
"module-type": "library"
},
"$:/plugins/tiddlywiki/railroad/parser.js": {
"text": "/*\\\ntitle: $:/plugins/tiddlywiki/railroad/parser.js\ntype: application/javascript\nmodule-type: library\n\nParser for the source of a railroad diagram.\n\n[:x]\t\t\toptional, normally included\n[x]\t\t\t\toptional, normally omitted\n{x}\t\t\t\tone or more\n{x +\",\"}\t\tone or more, comma-separated\n[{:x}]\t\t\tzero or more, normally included\n[{:x +\",\"}]\t\tzero or more, comma-separated, normally included\n[{x}]\t\t\tzero or more, normally omitted\n[{x +\",\"}]\t\tzero or more, comma-separated, normally omitted\nx y z\t\t\tsequence\n<-x y z->\t\texplicit sequence\n(x|y|z)\t\t\talternatives\n(x|:y|z)\t\talternatives, normally y\n\"x\"\t\t\t\tterminal\n<\"x\">\t\t\tnonterminal\n/\"blah\"/\t\tcomment\n-\t\t\t\tdummy\n[[x|\"tiddler\"]]\tlink\n{{\"tiddler\"}}\ttransclusion\n\n\"x\" can also be written 'x' or \"\"\"x\"\"\"\n\npragmas:\n\t\\arrow yes|no\n\t\\debug yes|no\n\t\\start single|double|none\n\t\\end single|double|none\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar components = require(\"$:/plugins/tiddlywiki/railroad/components.js\").components;\n\nvar Parser = function(widget,source,options) {\n\tthis.widget = widget;\n\tthis.source = source;\n\tthis.options = options;\n\tthis.tokens = this.tokenise(source);\n\tthis.tokenPos = 0;\n\tthis.advance();\n\tthis.content = this.parseContent();\n\tthis.root = new components.Root(this.content);\n\tthis.checkFinished();\n};\n\n/////////////////////////// Parser dispatch\n\nParser.prototype.parseContent = function() {\n\tvar content = [];\n\t// Parse zero or more components\n\twhile(true) {\n\t\tvar component = this.parseComponent();\n\t\tif(!component) {\n\t\t\tbreak;\n\t\t}\n\t\tif(!component.isPragma) {\n\t\t\tcontent.push(component);\n\t\t}\n\t}\n\treturn content;\n};\n\nParser.prototype.parseComponent = function() {\n\tvar component = null;\n\tif(this.token) {\n\t\tif(this.at(\"string\")) {\n\t\t\tcomponent = this.parseTerminal();\n\t\t} else if(this.at(\"name\")) {\n\t\t\tcomponent = this.parseName();\n\t\t} else if(this.at(\"pragma\")) {\n\t\t\tcomponent = this.parsePragma();\n\t\t} else {\n\t\t\tswitch(this.token.value) {\n\t\t\t\tcase \"[\":\n\t\t\t\t\tcomponent = this.parseOptional();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"{\":\n\t\t\t\t\tcomponent = this.parseRepeated();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"<\":\n\t\t\t\t\tcomponent = this.parseNonterminal();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"(\":\n\t\t\t\t\tcomponent = this.parseChoice();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"/\":\n\t\t\t\t\tcomponent = this.parseComment();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"[[\":\n\t\t\t\t\tcomponent = this.parseLink();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"{{\":\n\t\t\t\t\tcomponent = this.parseTransclusion();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"<-\":\n\t\t\t\t\tcomponent = this.parseSequence();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"-\":\n\t\t\t\t\tcomponent = this.parseDummy();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn component;\n};\n\n/////////////////////////// Specific components\n\nParser.prototype.parseChoice = function() {\n\t// Consume the (\n\tthis.advance();\n\tvar content = [],\n\t\tcolon = -1;\n\tdo {\n\t\t// Allow at most one branch to be prefixed with a colon\n\t\tif(colon === -1 && this.eat(\":\")) {\n\t\t\tcolon = content.length;\n\t\t}\n\t\t// Parse the next branch\n\t\tcontent.push(this.parseContent());\n\t} while(this.eat(\"|\"));\n\t// Consume the closing bracket\n\tthis.close(\")\");\n\t// Create a component\n\treturn new components.Choice(content,colon === -1 ? 0 : colon);\n};\n\nParser.prototype.parseComment = function() {\n\t// Consume the /\n\tthis.advance();\n\t// The comment's content should be in a string literal\n\tvar content = this.expectString(\"after /\");\n\t// Consume the closing /\n\tthis.close(\"/\");\n\t// Create a component\n\treturn new components.Comment(content);\n};\n\nParser.prototype.parseDummy = function() {\n\t// Consume the -\n\tthis.advance();\n\t// Create a component\n\treturn new components.Dummy();\n};\n\nParser.prototype.parseLink = function() {\n\t// Consume the [[\n\tthis.advance();\n\t// Parse the content\n\tvar content = this.parseContent();\n\t// Consume the |\n\tthis.expect(\"|\");\n\t// Consume the target\n\tvar target = this.expectNameOrString(\"as link target\");\n\t// Prepare some attributes for the SVG \"a\" element to carry\n\tvar options = {\"data-tw-target\": target};\n\tif($tw.utils.isLinkExternal(target)) {\n\t\toptions[\"data-tw-external\"] = true;\n\t}\n\t// Consume the closing ]]\n\tthis.close(\"]]\");\n\t// Create a component\n\treturn new components.Link(content,options);\n};\n\nParser.prototype.parseName = function() {\n\t// Create a component\n\tvar component = new components.Nonterminal(this.token.value);\n\t// Consume the name\n\tthis.advance();\n\treturn component;\n};\n\nParser.prototype.parseNonterminal = function() {\n\t// Consume the <\n\tthis.advance();\n\t// The nonterminal's name should be in a string literal\n\tvar content = this.expectString(\"after <\");\n\t// Consume the closing bracket\n\tthis.close(\">\");\n\t// Create a component\n\treturn new components.Nonterminal(content);\n};\n\nParser.prototype.parseOptional = function() {\n\tvar wantArrow = this.options.arrow;\n\t// Consume the [\n\tthis.advance();\n\t// Consume the { if there is one\n\tvar repeated = this.eat(\"{\");\n\t// Note whether omission is the normal route\n\tvar normal = this.eat(\":\");\n\t// Parse the content\n\tvar content = this.parseContent(),\n\t\tseparator = null;\n\t// Parse the separator if there is one\n\tif(repeated && this.eat(\"+\")) {\n\t\tseparator = this.parseContent();\n\t}\n\t// Consume the closing brackets\n\tif(repeated) {\n\t\tthis.close(\"}\");\n\t}\n\tthis.close(\"]\");\n\t// Create a component\n\treturn repeated ? new components.OptionalRepeated(content,separator,normal,wantArrow)\n\t\t: new components.Optional(content,normal);\n};\n\nParser.prototype.parseRepeated = function() {\n\tvar wantArrow = this.options.arrow;\n\t// Consume the {\n\tthis.advance();\n\t// Parse the content\n\tvar content = this.parseContent(),\n\t\tseparator = null;\n\t// Parse the separator if there is one\n\tif(this.eat(\"+\")) {\n\t\tseparator = this.parseContent();\n\t}\n\t// Consume the closing bracket\n\tthis.close(\"}\");\n\t// Create a component\n\treturn new components.Repeated(content,separator,wantArrow);\n};\n\nParser.prototype.parseSequence = function() {\n\t// Consume the <-\n\tthis.advance();\n\t// Parse the content\n\tvar content = this.parseContent();\n\t// Consume the closing ->\n\tthis.close(\"->\");\n\t// Create a component\n\treturn new components.Sequence(content);\n};\n\nParser.prototype.parseTerminal = function() {\n\tvar component = new components.Terminal(this.token.value);\n\t// Consume the string literal\n\tthis.advance();\n return component;\n};\n\nParser.prototype.parseTransclusion = function() {\n\t// Consume the {{\n\tthis.advance();\n\t// Consume the text reference\n\tvar textRef = this.expectNameOrString(\"as transclusion source\");\n\t// Consume the closing }}\n\tthis.close(\"}}\");\n\t// Retrieve the content of the text reference\n\tvar source = this.widget.wiki.getTextReference(textRef,\"\",this.widget.getVariable(\"currentTiddler\"));\n\t// Parse the content\n\tvar content = new Parser(this.widget,source).content;\n\t// Create a component\n\treturn new components.Transclusion(content);\n};\n\n/////////////////////////// Pragmas\n\nParser.prototype.parsePragma = function() {\n\t// Create a dummy component\n\tvar component = { isPragma: true };\n\t// Consume the pragma\n\tvar pragma = this.token.value;\n\tthis.advance();\n\t// Apply the setting\n\tif(pragma === \"arrow\") {\n\t\tthis.options.arrow = this.parseYesNo(pragma);\t\t\n\t} else if(pragma === \"debug\") {\n\t\tthis.options.debug = true;\n\t} else if(pragma === \"start\") {\n\t\tthis.options.start = this.parseTerminusStyle(pragma);\t\t\n\t} else if(pragma === \"end\") {\n\t\tthis.options.end = this.parseTerminusStyle(pragma);\t\t\n\t} else {\n\t\tthrow \"Invalid pragma\";\n\t}\n\treturn component;\n};\n\nParser.prototype.parseYesNo = function(pragma) {\n\treturn this.parseSetting([\"yes\",\"no\"],pragma) === \"yes\";\n}\n\nParser.prototype.parseTerminusStyle = function(pragma) {\n\treturn this.parseSetting([\"single\",\"double\",\"none\"],pragma);\n}\n\nParser.prototype.parseSetting = function(options,pragma) {\n\tif(this.at(\"name\") && options.indexOf(this.token.value) !== -1) {\n\t\treturn this.tokenValueEaten();\t\t\n\t}\n\tthrow options.join(\" or \") + \" expected after \\\\\" + pragma;\n}\n\n/////////////////////////// Token manipulation\n\nParser.prototype.advance = function() {\n\tif(this.tokenPos >= this.tokens.length) {\n\t\tthis.token = null;\n\t}\n\tthis.token = this.tokens[this.tokenPos++];\n};\n\nParser.prototype.at = function(token) {\n\treturn this.token && (this.token.type === token || this.token.type === \"token\" && this.token.value === token);\n};\n\nParser.prototype.eat = function(token) {\n\tvar at = this.at(token);\n\tif(at) {\n\t\tthis.advance();\n\t}\n\treturn at;\n};\n\nParser.prototype.tokenValueEaten = function() {\n\tvar output = this.token.value;\n\tthis.advance();\n\treturn output;\n};\n\nParser.prototype.close = function(token) {\n\tif(!this.eat(token)) {\n\t\tthrow \"Closing \" + token + \" expected\";\n\t}\n};\n\nParser.prototype.checkFinished = function() {\n\tif(this.token) {\n\t\tthrow \"Syntax error at \" + this.token.value;\n\t}\n};\n\nParser.prototype.expect = function(token) {\n\tif(!this.eat(token)) {\n\t\tthrow token + \" expected\";\n\t}\n};\n\nParser.prototype.expectString = function(context,token) {\n\tif(!this.at(\"string\")) {\n\t\ttoken = token || \"String\";\n\t\tthrow token + \" expected \" + context;\n\t}\n\treturn this.tokenValueEaten();\n};\n\nParser.prototype.expectNameOrString = function(context) {\n\tif(this.at(\"name\")) {\n\t\treturn this.tokenValueEaten();\n\t}\n\treturn this.expectString(context,\"Name or string\");\n};\n\n/////////////////////////// Tokenisation\n\nParser.prototype.tokenise = function(source) {\n\tvar tokens = [],\n\t\tpos = 0,\n\t\tc, s, token;\n\twhile(pos < source.length) {\n\t\t// Initialise this iteration\n\t\ts = token = null;\n\t\t// Skip whitespace\n\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t// Avoid falling off the end of the string\n\t\tif (pos >= source.length) {\n\t\t\tbreak;\n\t\t}\n\t\t// Examine the next character\n\t\tc = source.charAt(pos);\n\t\tif(\"\\\"'\".indexOf(c) !== -1) {\n\t\t\t// String literal\n\t\t\ttoken = $tw.utils.parseStringLiteral(source,pos);\n\t\t\tif(!token) {\n\t\t\t\tthrow \"Unterminated string literal\";\n\t\t\t}\n\t\t} else if(\"[]{}\".indexOf(c) !== -1) {\n\t\t\t// Single or double character\n\t\t\ts = source.charAt(pos+1) === c ? c + c : c;\n\t\t} else if(c === \"<\") {\n\t\t\t// < or <-\n\t\t\ts = source.charAt(pos+1) === \"-\" ? \"<-\" : \"<\";\n\t\t} else if(c === \"-\") {\n\t\t\t// - or ->\n\t\t\ts = source.charAt(pos+1) === \">\" ? \"->\" : \"-\";\n\t\t} else if(\"()>+/:|\".indexOf(c) !== -1) {\n\t\t\t// Single character\n\t\t\ts = c;\n\t\t} else if(c.match(/[a-zA-Z]/)) {\n\t\t\t// Name\n\t\t\ttoken = this.readName(source,pos);\n\t\t} else if(c.match(/\\\\/)) {\n\t\t\t// Pragma\n\t\t\ttoken = this.readPragma(source,pos);\n\t\t} else {\n\t\t\tthrow \"Syntax error at \" + c;\n\t\t}\n\t\t// Add our findings to the return array\n\t\tif(token) {\n\t\t\ttokens.push(token);\n\t\t} else {\n\t\t\ttoken = $tw.utils.parseTokenString(source,pos,s);\n\t\t\ttokens.push(token);\n\t\t}\n\t\t// Prepare for the next character\n\t\tpos = token.end;\n\t}\n\treturn tokens;\n};\n\nParser.prototype.readName = function(source,pos) {\n\tvar re = /([a-zA-Z0-9_.-]+)/g;\n\tre.lastIndex = pos;\n\tvar match = re.exec(source);\n\tif(match && match.index === pos) {\n\t\treturn {type: \"name\", value: match[1], start: pos, end: pos+match[1].length};\n\t} else {\n\t\tthrow \"Invalid name\";\n\t}\n};\n\nParser.prototype.readPragma = function(source,pos) {\n\tvar re = /([a-z]+)/g;\n\tpos++;\n\tre.lastIndex = pos;\n\tvar match = re.exec(source);\n\tif(match && match.index === pos) {\n\t\treturn {type: \"pragma\", value: match[1], start: pos, end: pos+match[1].length};\n\t} else {\n\t\tthrow \"Invalid pragma\";\n\t}\n};\n\n/////////////////////////// Exports\n\nexports.parser = Parser;\n\n})();",
"title": "$:/plugins/tiddlywiki/railroad/parser.js",
"type": "application/javascript",
"module-type": "library"
},
"$:/plugins/tiddlywiki/railroad/typed-parser.js": {
"text": "/*\\\ntitle: $:/plugins/tiddlywiki/railroad/typed-parser.js\ntype: application/javascript\nmodule-type: parser\n\nThis parser wraps unadorned railroad syntax into a railroad widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar RailroadParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"railroad\",\n\t\t\ttag: \"$railroad\",\n\t\t\ttext: text\n\t\t};\n\tthis.tree = [element];\nconsole.log(text);\n};\n\nexports[\"text/vnd.tiddlywiki.railroad\"] = RailroadParser;\n\n})();\n\n",
"title": "$:/plugins/tiddlywiki/railroad/typed-parser.js",
"type": "application/javascript",
"module-type": "parser"
},
"$:/plugins/tiddlywiki/railroad/wrapper.js": {
"text": "/*\\\ntitle: $:/plugins/tiddlywiki/railroad/wrapper.js\ntype: application/javascript\nmodule-type: widget\n\nWrapper for `railroad-diagrams.js` that provides a `<$railroad>` widget.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Parser = require(\"$:/plugins/tiddlywiki/railroad/parser.js\").parser,\n\tWidget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RailroadWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\nvar RAILROAD_OPTIONS = \"$:/config/railroad\";\n\n/*\nInherit from the base widget class\n*/\nRailroadWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRailroadWidget.prototype.render = function(parent,nextSibling) {\n\t// Housekeeping\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Get the source text\n\tvar source = this.getAttribute(\"text\",this.parseTreeNode.text || \"\");\n\t// Create a div to contain the SVG or error message\n\tvar div = this.document.createElement(\"div\");\n\ttry {\n\t\t// Initialise options from the config tiddler or widget attributes\n\t\tvar config = $tw.wiki.getTiddlerData(RAILROAD_OPTIONS,{});\n\t\tvar options = {\n\t\t\tarrow: this.getAttribute(\"arrow\", config.arrow || \"yes\") === \"yes\",\n\t\t\tdebug: this.getAttribute(\"debug\", config.debug || \"no\") === \"yes\",\n\t\t\tstart: this.getAttribute(\"start\", config.start || \"single\"),\n\t\t\tend: this.getAttribute(\"end\", config.end || \"single\")\n\t\t};\n\t\t// Parse the source\n\t\tvar parser = new Parser(this,source,options);\n\t\t// Generate content into the div\n\t\tif(parser.options.debug) {\n\t\t\tthis.renderDebug(parser,div);\n\t\t} else {\n\t\t\tthis.renderSvg(parser,div);\n\t\t}\n\t} catch(ex) {\n\t\tdiv.className = \"tc-error\";\n\t\tdiv.textContent = ex;\n\t}\n\t// Insert the div into the DOM\n\tparent.insertBefore(div,nextSibling);\n\tthis.domNodes.push(div);\n};\n\nRailroadWidget.prototype.renderDebug = function(parser,div) {\n\tvar output = [\"<pre>\"];\n\tparser.root.debug(output, \"\");\n\toutput.push(\"</pre>\");\n\tdiv.innerHTML = output.join(\"\");\n};\n\nRailroadWidget.prototype.renderSvg = function(parser,div) {\n\t// Generate a model of the diagram\n\tvar fakeSvg = parser.root.toSvg(parser.options);\n\t// Render the model into a tree of SVG DOM nodes\n\tvar svg = fakeSvg.toSVG();\n\t// Fill in the remaining attributes of any link nodes\n\tthis.patchLinks(svg);\n\t// Insert the SVG tree into the div\n\tdiv.appendChild(svg);\n};\n\nRailroadWidget.prototype.patchLinks = function(node) {\n\tvar self = this;\n\tif(!$tw.node && node.hasChildNodes()) {\n\t\tvar children = node.childNodes;\n\t\tfor(var i=0; i<children.length; i++) {\n\t\t\tvar child = children[i];\n\t\t\tvar attributes = child.attributes;\n\t\t\tif(attributes) {\n\t\t\t\t// Find each element that has a data-tw-target attribute\n\t\t\t\tvar target = child.attributes[\"data-tw-target\"];\n\t\t\t\tif(target !== undefined) {\n\t\t\t\t\ttarget = target.value;\n\t\t\t\t\tif(child.attributes[\"data-tw-external\"]) {\n\t\t\t\t\t\t// External links are straightforward\n\t\t\t\t\t\tchild.setAttribute(\"target\",\"_blank\");\n\t\t\t\t\t\tchild.setAttribute(\"rel\",\"noopener noreferrer\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Each internal link gets its own onclick handler, capturing its own copy of target\n\t\t\t\t\t\t(function(myTarget) {\n\t\t\t\t\t\t\tchild.onclick = function(event) {\n\t\t\t\t\t\t\t\tself.dispatchLink(myTarget,event);\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})(target);\n\t\t\t\t\t\ttarget = \"#\" + target;\n\t\t\t\t\t}\n\t\t\t\t\tchild.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"href\",target);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.patchLinks(child);\n\t\t}\n\t}\n};\n\nRailroadWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.text || changedTiddlers[RAILROAD_OPTIONS]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn false;\t\n};\n\nRailroadWidget.prototype.dispatchLink = function(to,event) {\n\t// Send the click on its way as a navigate event\n\tvar bounds = this.domNodes[0].getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1)\n\t});\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nexports.railroad = RailroadWidget;\n\n})();",
"title": "$:/plugins/tiddlywiki/railroad/wrapper.js",
"type": "application/javascript",
"module-type": "widget"
}
}
}
<style>
.p {background-color:#fff;border:1px solid grey;border:none;}
.p:hover {background-color:#5778D9;color:#fff;border:none;}
.menoo_verb {
border: 1px solid <<colour message-border>>;
height: 200px;
position: relative;
}
</style>
<$button class='p' popup="$:/l0/ActionVerbs" style='border:1px solid grey;'>Verb suggestions</$button>
<$reveal type="popup" class='tc-popup-keep' state="$:/l0/ActionVerbs">
<div class="tc-drop-down">
<span style='margin-left:15px;text-transform:uppercase;font-weight:bold;'>Topic</span>
<$list filter='[prefix[$:/ActionVerbs]!suffix[state]]'>
<$set name='ActionVerbs' filter='[title{!!title}removeprefix[$:/ActionVerbs/]]'>
<$set name='makeState' filter='[title{!!title}removeprefix[$:/]addprefix[$:/state]addsuffix[/l2]]'>
<$button class='p' popup=<<makeState>>><$action-setfield $tiddler='$:/ActionVerbs/1/state' $value={{!!title}}/><<ActionVerbs>></$button>
<$reveal type="popup" state=<<makeState>> position='aboveright'>
<div class="tc-drop-down">
<$scrollable class='menoo_verb'>
{{$:/l2/ActionVerbs}}
</$scrollable>
</div>
</$reveal>
</$set>
</$set></$list>
</div>
</$reveal>
<<list-links "[tag[Procedure]]">>
After you've accepted the task, say hi to your client over the messaging system. Send a friendly greeting introducing yourself and thanking your client for entrusting you with such an important part of his or her application process.
Advisor logs into marketplace.
Click on items in the ''Market'' column and review the lists of tasks with deadlines and prices. You can click-through to each task's 'order page' to see more details.
If you're interested, click 'Accept'.
All drafts you send should have a ZHISHIQ cover sheet. Configure and download one of the [[Cover sheets]].
Set local language settings to the location of your client’s target institution (ie: US/ UK/ Canada/ Australia English).
A visitor to the ZHISHIQ website purchases a service. They will most likely have seen one of our on-campus marketing events or received a recommendation from one of their older peers. This is a pretty momentous moment for us: Someone has paid us to assist them with an important application. It represents the culmination our marketing and quality control efforts.
When making the order your client will upload a document in English that will form the basis of the service.
|!SERVICE |!CLIENT DOC|
|!Baseline Edit |Complete draft|
|!Heavy Edit |Complete draft|
|!VIP Service |VIP Questionnaire|
|!Package Service |VIP Questionnaire(s)|
''Client''
<<bq1 "I remember it like it was yesterday: I was faced with the decision of what university to attend. I had offers from three different universities, but only one caused my heart to race with excitement. The Southwest University of Political Science and Law extended me an offer to study law. Without hesitation I knew this was the school for me. I have dreamed of being a lawyer since high school.">>
''Advisor''
<<bq1 "Can you please provide me with more detail about why you dreamed of being a lawyer. Did something happen to cause you to want to become a lawyer? Do you have a story you can tell about this? I think it would be more relevant to get immediately into why you want to apply for this JD. This description of your background doesn’t really add to your case for this advanced program. Look at the question carefully: It would be better to use this space to talk more about (a) JD goals and/ or (b) public service objectives/ implications of your career plan (ie: how you would use this JD)!">>
Please find below two edited copies of your essay. Once again, the first is a clean copy and the second shows track changes.
I have corrected any mistakes in grammar, vocabulary and sentence structure and clarified the meaning of some sentences, which I felt were a little unclear. American English is used, as requested.
Once again, feel free to message me with any questions. I found it really interesting to read about your experiences in both your essays, so I hope you are happy with the edit and wish you all the best for the future.
You have uploaded a document written to a native-speaker standard. Your style was consistent with correct spelling, grammar, and punctuation, along with appropriate tone. Nice job! The goal of this service is to ensure clarity and consistency of expression in your document to guarantee your intended audience can follow all your points without any difficulty. Level 1 is not a rewriting service (nor are any of our services!) Therefore, since there were only a few errors in your original document, there are only a few corrections in the proofread document. I don't want to make unneeded substitutions that are counter to your interests. Quantity of edits is not indicative of the quality in this instance! And I've spent the additional time offering you advice and commentary that I feel could improve the document from a strategic standpoint. (Substituting words is easy!) The principal effort involved in executing our services is carefully assessing the document, not typing out the changes!
Hello, momomomo!
Very excited to be helping you craft your statement of purpose to this Electrical and Computer
Engineering MEng degree at the University of Waterloo!
In order to get to know you better, and more specifically how best to frame the outline for your
first draft of this Personal Statement, I'm providing you with a set of questions here to answer.
I will use your answers to these questions alongside what you have provided in the
questionnaire. Please answer with as much detail as you can!
First off- you have a solid-looking CV! A few questions about its components:
How well do you feel your degree in communication engineering prepared you for graduate-
level studies? What about the curriculum has positioned you for success at the Masters level?
Which particular classes in particular sparked your interest in pursuing a Masters degree?
Why do you want to study MEng at a higher level? Why are the concepts of MEng so crucial
to your identity, your academic background, your professional background (internships,
research experience, and job experience), and your career goals?
What are the origins of your experience in, and passion for, MEng? What specific career are
you looking to create for yourself in the field? What experiences have encouraged you to
make a professional life in MEng? What elements of your personality and academic capacities
make you an excellent fit for more advanced study in MEng?
Why do you want an MEng degree? Why do you NEED an MEng degree? (NOTE: These
questions should not generate the same answer!)
What specific elements of this program attract your attention? Professors, scholars, faculty
members, classes, etc.? See the following websites for assistance in developing your list of
Waterloo-specific resources and elements. For EACH element, you must specify IN DETAIL,
WHY you are attracted to that Waterloo-specific element, and HOW that Waterloo-specific
element will help you achieve your goals:
https://uwaterloo.ca/electrical-computer-engineering/about/people/group/28 -- which 5 faculty
members are you most interested in working with and taking courses from? VISIT THEIR
PROFILE PAGES. Provide at least 2-3 details about each faculty member that describes why
you are specifically interested in them, and 1-2 ways in which you see yourself interacting with
that faculty member.
https://uwaterloo.ca/electrical-computer-engineering/research: which 3-4 research AREAS and
GROUPS at Waterloo do you find to be the most inspiring? WHY are they inspiring to you?
How do you envision yourself getting involved with these particular research offerings at
Waterloo?
You will notice my suggestions about how you should shape each paragraph in BOLD. Make sure you address each of the concerns and questions I have written in the BOLD suggestions with as much specificity, detail, and thoroughness as possible. You will also notice excerpts from the answers you provided me throughout the outline. The snippets are placed under the paragraph to which they best correspond. It's important that you DO NOT use the snippets in your outline verbatim (word-for-word). Instead, consider the snippets as inspiration and guidance in the paragraphs that you will craft. In conjunction with my suggestions in bold, you are sure to design top-notch and effective paragraphs.
Do not worry about perfection for this first draft. We will address all of that in subsequent drafts (i.e., issues with word choice, style, improved organic flow, transition sentences and phrases, etc.) This draft is all about hammering out each sentence for each paragraph, brick by brick. But let's make each brick as solid and specific as possible!
<$set name='ifMultiRLs' filter='[title[$:/PackageServices/NumberSchools/Temp]field:text[1]]' value={{$:/ProgramPackages/DocLengths!!rl_words_single}} emptyValue={{$:/ProgramPackages/DocLengths!!rl_words}}>
<$set name='ifMoreRLs' filter='[title[$:/PackageServices/NumberSchools/Temp]field:text[1]]' value="2" emptyValue="3">
|!Documents |!Quantity |!Length |
|Personal Statement __or__ Statement of Purpose | 1 __per school__ | Up to <$calc>{{$:/PackageServices/NumberSchools/Temp}} * {{$:/ProgramPackages/DocLengths!!statements_words}}</$calc> words __per service__ |
|Resume or Curriculum Vitae | 1 __per service__ | Up to {{$:/ProgramPackages/DocLengths!!resume_pages}} pages __per service__ |
|Recommendation Letters | <<ifMoreRLs>> __per service__ | Up to <<ifMultiRLs>> words __per service__ |
<style>
.red {background-color:#FFCCCB;color:#fff;}
.redselect: {background-color:red;}
</style>
<$reveal type='nomatch' state='$:/AdminBar/State' text=''>
<$button set='$:/AdminBar/State' setTo=''>
{{$:/core/images/unlocked-padlock}}
</$button></$reveal><$reveal type='match' state='$:/AdminBar/State' text=''><$button set='$:/AdminBar/State' setTo='show'>
{{$:/core/images/locked-padlock}}
</$button></$reveal>
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ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBCAetIyhhg96dRQB//0v7+KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA/9P+/iiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/U/v4ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACijNVJ9QsbVlS5mSMsQAGYDJPQDNAFuimLJG/3GB+lVbzUbDTovPvpkiTIXLHHLHAH4k07AXaKzLLWdJ1Oz/tHT7mKeAEqZEYFQVO0jIPUEYPvXyL8dP27v2ef2f4Nan8a65bl9BCR3UML75ftMwJitgoBHmsuGIJAUMpJ5pqLYH2ZkUtfH37Nv7XPhX9pvwFB4+8DxIkEpKNG80e5HBHyMSRh8HlcZBP0NfWthdS3Vqk9xC0DsMmNiCVPplSQfwNEoNbjaLlFGQelFSIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD//V/v4ooooAKKKKACiiigAooooAKKKKACiiigAooooAM0VXu7q2srd7u8kWKKMbmdyAqgdSSeAK/AH/AIKd/wDBWzWvgF4cGgfs83Nst5cuyrqo8m5OxRzJBE4eNl3ZUM3BYHpjBuMGyoxb2P1v+Ov7W3wL/ZvtDe/F3X7LR1yAqXFzCkrlh8uyIt5jAnjdtwO5Ar8Jv2rf+C+XwYTw9P4b+FNhNe3N0v7u4325kiIJwY0lSSGRiQB80i7QchsjFfymfFL4t/ED46+Ob74hePdTl1HV9TZpJby+mMzkEAFQ5KlvlAHy4VQAFQDivLNbsrZh5WnljcL1CYOD7cBuvIO7pXTGkkdCoLqftkv/AAWn+PfgjxK+p6lfLqHhrVE/eWlpugvbJlGA0UjXEqLKSN5XfLCCcKqA8fMfxc/4KufG/wCJCXGmJ4iu5bKe2nfcLhw80YYtEuM/K7ynGBgL8xOSQa/ITXtEmjuG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
<$edit-text tiddler='$:/RecentlyModified/Limit' field='text' tag='input' size='4'/>
<br>
<$list filter='[all[tiddlers+shadows]!sort[created]limit{$:/RecentlyModified/Limit}]'>
<<list-links "[tag[Recruitment]sort[title]]">>
<$set name='theTime' value={{!!modified}}>
<table><tr><th>Name</th><th>URL</th><th>Posted?</th></tr><$list filter='[prefix[$:/Recruitment/Links/]]'><$set name='makeName' filter='[title{!!title}removeprefix[$:/Recruitment/Links/]]'>
<tr><td>
<p><b><$text text=<<makeName>>/></b></p>
</td><td>{{!!text}} </td><td><$reveal type='match' state='!!posted' text=''><$checkbox field='posted' checked=<<theTime>> unchecked=''/></$reveal>
{{!!posted}}</td>
</tr>
</$set></$list>
</table>
<<st Other>>
Awaiting contact
http://hire.themuse.com/employers-thank-you?submissionGuid=43f4daaf-fe46-4a0f-95f0-9329baa46ca5
Not sure:
http://digitalnomadsforum.com/viewforum.php?f=17&gclid=CJ3JutWwgtACFdeGaAodIoUDxA
Consider paying:
https://jobspresso.co/post-a-job/ 79
https://remotive.typeform.com/to/A4ENKI 129
http://www.freelancewritinggigs.com/place-a-job-ad/ 30
https://business.studentbeans.com/jobs/studentbeans/sign_up 50
http://www.genuinejobs.com/add_job.php 65
https://www.writerswrite.com/writejobs/addjob/ 125
https://allfreelancewriting.com/freelance-writing-jobs/post-a-job/
https://www.indeed.com/hire
https://online-writing-jobs.com/submit-a-free-job-ad/
https://www.pw.org/job_listing/editoradvisors_with_competitive_applications_experience
https://www.virtualvocations.com/employers
http://www.writerfind.com/writerfinders.htm
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
\define makeNew()
$(thisOne)$/$(MyNew)$/preSet
\end
<$edit-text tiddler='$:/Res/MakeNew/temp' tag='input'/>
<$button>++
<$list filter='[prefix[$:/ResStyles]!regexp:title[state]!regexp:title[State]!suffix[/preSet]]'>
<$set name='MyNew' value={{$:/Res/MakeNew/temp}}>
<$set name='thisOne' value={{!!title}}>
<$action-setfield $tiddler=<<makeNew>> $value={{!!text}}/>
<$action-listops $tiddler="$:/ResStyleSetButton/list" $field="list" $subfilter="[list[$:/ResStyleSetButton/list]append{$:/Res/MakeNew/temp}]"/>
</$set></$set>
</$list>
</$button>
<$list filter='[list[$:/ResStyleSetButton/list]]'/>
<$reveal type='match' state='$:/Res/MakeNew/state' text=''><$button set='$:/Res/MakeNew/state' setTo='1'>Show Thumbpics</$button></$reveal><$reveal type='match' state='$:/Res/MakeNew/state' text='1'><$button set='$:/Res/MakeNew/state' setTo=''>Hide Thumbpics</$button></$reveal>
<$reveal type='match' state='$:/Res/MakeNew/state' text='1'>
<hr/>
<$list filter='[prefix[$:/resSamples/thumb/]]'>
{{!!title}}<br>
<$transclude/><br>
</$reveal>
.contentB {background-color:none;border:transparent}
.contentB:hover {background-color:#d9e4f7;border:transparent}
\define detailsDiv()
color:$(Colorsdetails)$;
border:none;
border-bottom: 1px;
border-bottom-style:$(BorderStylesdetails)$;
\end
<$select tiddler='$:/ResStyle/State.4'>
<$list filter='[prefix[$:/ResumeStyles/]removeprefix[$:/ResumeStyles/]]'>
<option>{{!!title}}</option>
</$list>
</$select>
|<$radio tiddler='$:/ResStyles/State.5' value='1'>Macro</$radio> <$radio tiddler='$:/ResStyles/State.5' value='2'>Vars</$radio>
|<$radio tiddler='$:/ResStyles/State.7' value="""[prefix[$:/ResStyles/Tools/]field:loc[td]]""">td</$radio>
<$radio tiddler='$:/ResStyles/State.7' value="""[prefix[$:/ResStyles/Tools/]field:loc[div]]""">div</$radio> |
<$set name="ifThen" filter="[title[$:/ResStyles/State.5]field:text[1]]" value={{$:/ResStyles/State.7}} emptyValue="""[prefix[$:/ResStyles/Tools/]]""">
<$list filter=<<ifThen>>>
<$set name='keyField' value={{!!key}}>
<$set name='this' filter='[title{!!title}removeprefix[$:/ResStyles/Tools/]]'>
<$list filter='[prefix[$:/ResumeStyles/]suffix{$:/ResStyle/State.4}removeprefix[$:/ResumeStyles/]]'><$set name='theHolders' filter='[title{!!title}addprefix[$:/ResStyles/]addsuffix[/]addsuffix<this>]'><$set name="nameVar" filter="[title{!!title}addprefix<this>]">
<$set name="makeCondition" filter="[title<nameVar>addprefix[<$set name=']addsuffix[' value={{]addsuffix<theHolders>addsuffix[}}>]]">
<$set name='makeMac' filter='[title<nameVar>addprefix[$(]addprefix[:]addprefix<keyField>addsuffix{!!s}]'>
<$reveal type='match' state='$:/ResStyles/State.5' text='2'>
<<makeCondition>>
</$reveal>
<$reveal type='match' state='$:/ResStyles/State.5' text='1'>
<<makeMac>>)$;
</$reveal>
</$set></$set>
<div style='width:48%;float:left;'>
<$transclude tiddler='$:/Res/MakeNew' mode='block'/>
</div>
<div style='width:48%;float:left;'>
<$transclude tiddler='$:/ResStyleEditor/Admin' mode='block'/>
</div>
<div class='clearfix'></div>
<<list-links "[tag[$:/ResCtrls]sort[title]]">>
<$list filter='[tag[$:/ResumeStyles]]'>
<$set name='prunePre' filter='[title{!!title}removeprefix[$:/ResumeStyles/]]'>
{{!!title}} <<prunePre>><br>
</$set>
</$list>
<$select tiddler='$:/ResCtrls/Toolbar/ExcludesLists/this'>
<$list filter='[prefix[$:/ResStyles/Tools/]!suffix[state]!suffix[preSet]]'>
<option>{{!!caption}}</option>
</$list>
</$select>
<$count filter='[prefix[$:/ResStyles/Tools/]!suffix[preSet]!suffix[state]]'/>
<$list filter='[prefix[$:/ResStyles/Tools/]caption{$:/ResCtrls/Toolbar/ExcludesLists/this}!suffix[preSet]!suffix[state]]'>
{{!!title}}
<$edit-text field='exclude'/>
<$list filter='[list[!!list]]'><$radio tiddler='$:/ResCtrls/Viewer' field='choose' value={{!!title}}> <$text text={{!!title}}/></$radio>
</$list>
<$select tiddler="$:/state/side-edit-tiddler" tag="input">
<$list filter="[tag{!!choose}sort[title]]">
<option value=<<currentTiddler>>><$text text=<<currentTiddler>>/></option>
</$list>
</$select>
<div class="tc-tiddler-frame" style='padding:0 15px;'>
{{$:/state/side-edit-tiddler}}
<$checkbox tag='$:/tags/Macro' tiddler={{$:/state/side-edit-tiddler}}> Macro</$checkbox>
<$button class='toggle' selectedClass='toggled' set='$:/Res/edit/state' setTo=''>{{$:/core/images/edit-button}}</$button> <$button class='toggle' selectedClass='toggled' set='$:/Res/edit/state' setTo='1'>{{$:/core/images/video}}</$button>
<$reveal type='match' state='$:/Res/edit/state' text=''>
<$edit-text tiddler={{$:/state/side-edit-tiddler}} class="tc-edit-texteditor"/>
</$reveal>
<$reveal type='match' state='$:/Res/edit/state' text='1'>
<$transclude tiddler={{$:/state/side-edit-tiddler}} mode='block'/>
</$reveal>
</div>
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AxyczoqOZ50DIkyGtwgHXfGdjY/ScdY5IUCx7/u428EEpzr8ngYd2yikhbn3SShHQLYoQIhOCQOI5vJzCCmllC7mKXQt6ScRti7z6qljmc/nK/qJhCO+XdhOZWGkZZ9B+GHt/S8Jvajmfxbhh3f2txDpux3JnRPKO4hih7PB7k7IpLqD2IUhdyfcF6b56B4Skzuf73YcqDDZ2XhBR6Irzz+PELrGQwygGvO7L6YHQnEHHX4KIe8JOyIcPDbhPQ+u2yOaDHT30tYOP4nwHjpMKkXufhboPutdfLuHFGpw/8NOG8SBGd5BlCGfcJrr+aBoZwFUG1iwzziu9mIWlnbI91nHnPLrWVH6t1R21az/OSec8uuB327094nn1F4e4dkJ3ueeNfyzfMYfsn2Fs5QHN06D/HvyRf5rtqsDPf8m3Zc5eJ93IoNeeumll1566aWXXnrppZdeevmL8n8LjU8smVBkQwAAAABJRU5ErkJggg==
iVBORw0KGgoAAAANSUhEUgAAAZAAAAGSCAMAAAD6qWf1AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAGbUExURUdwTP///////////////////////////////////////////////////////////////////////////////////////////////+vu8P///////////////////////////////8PEyf///////////////////////wA5ZfaxAP////WwAPSwAf7+/gA3Zf62ABo+ZPiyAPu0ABI9ZP21ABlCaQw7ZAU6ZRY9ZAAhaAAkaPqzAAAATQAxZgAoZxJAaAA1Zh8/ZAABUvGuAAAsZwM9ZwAbaB9EagAyYgs+Z+KlFe2sBQQ9Y9uhHQAsZeipDgAASNWdJMqWMfj5+tCaKv21ALCHP7mMOsKRNkJNXk1RXQAZWe/x8wAOVwArX/7//1VVWqN/RNnd4n9qUgAiXOjr7l9aWDVIX41yTihDYamDQZp5SpR2TYZuUODk6GdfVnBiVZ58R6avup6ns3dmU8HIz9HW3JSfrbe/yGZ5j32LncrP1llviE9mgYiVpK+4wnKDljRVdiNMcEJefAAEagAfaAAAJhZBaIxijmkAAAApdFJOUwDxK+gDAQL7/QQYNw/I1eBoUUQgXQm+dLb0rnyXqJGBnI6DiqaHhaCjksg10gAAYdNJREFUeNrkWgtz2tYSBsT7DeY1thPb03Yarmo0pB5ZtiNbrmKNoEkcNTRNE4Gcq8Hpnd6WZEwB/ATjuaOffc/RAyQQWAaSmbo78UvCq/3Ot/vtLo7NNou53E6f0+k2XnM6fT6n22W7zwaAmyMfvvYlYwJP1773BYN+/4Lf7w8m+/GA2657SobP10eWlJEv6JGD2188HQEZyuODgVh67UEqFEEQu92OIJFwaHF1JRFfSKqx3TNS+lno8wcS6eXFVDgsI7dD5JnVpURgwafc/5LA3fIzk47ocgjxoLJ5wT+v+g00eyTzVcIhs6JLp78/GzKUhdjSYtiO9s2roFYOwB5+kI77vyAnLrk2/InVsMKF1+uB5tVM/kkJ1BNeTThk9ZpfaFC8LQrCHV5qxZxyGvrjaymVCwXqCHJIC5KJysB97i9SHAuJjByTEg5qZjA8+Y4ntBLwzS005VDg11tk2t3vYM65FKiS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
\define makeStyle()
<$action-setfield $tiddler="$(removeP)$" $value="$(thisStyle)$"/>
\end
\define makeLayout()
<$action-setfield $tiddler="$:/ResStyles/Layout/1or2" $value="$(determineLayout)$"/>
<$action-setfield $tiddler="$:/ResStyles/Layout/1or2/2.5" $value="$(determineLayout2)$"/>
<$action-setfield $tiddler="$:/ResBuild/AddressStyle/state" $value="$(determineLayout3)$"/>
\end
<style>
.styleBox {height:85px;width:85px;box-shadow: 1px 1px 2px #888888;background-color:#fff;border:none;}
.styleBox:hover {border: 2px solid #5778D9;}
.styleBoxSelect {border: 2px solid #5778D9;}
</style>
<$list filter='[list[$:/ResStyleSetButton/list]]'>
<$set name='toolTip' filter='[title{!!title}addprefix[$:/ResStyle/Tooltip/]get[text]]'>
<$button tooltip=<<toolTip>> class='styleBox' selectedClass='styleBoxSelect' set='$:/ResStyleSetButton/temp' setTo={{!!title}}>
<div style='text-transform:uppercase;font-size:50%;margin:bottom:3px;'><b><center>{{!!title}}</center></b></div>
<$set name='thisOne' value={{!!title}}>
<$set name='thisOne2' filter='[title<thisOne>addprefix[/]addsuffix[/preSet]]'>
<$list filter='[suffix<thisOne2>]'>
<$set name='removeP' filter='[title{!!title}removesuffix<thisOne2>]'>
<$set name='thisStyle' value={{!!text}}>
<<makeStyle>>
</$set>
</$set>
</$list>
</$set>
</$set>
<$set name='findLayout' filter='[title{!!title}addprefix[$:/ResLayout/Setting/]]'>
<$set name='determineLayout' filter='[title<findLayout>field:text[1]]' value='1' emptyValue='2'>
<$set name='findLayout2' filter='[title{!!title}addprefix[$:/ResStyles/Layout/1or2/2.5/]addsuffix[/preSet]]'>
<$set name='determineLayout2' filter='[title<findLayout2>field:text[1]]' value='1' emptyValue='2'>
<$set name='findLayout3' filter='[title{!!title}addprefix[$:/ResStyles/Layout/AddressLayout/]addsuffix[/preSet]]'>
<$set name='determineLayout3' filter='[title<findLayout3>field:text[1]]' value='1' emptyValue='2'>
<$macrocall $name="makeLayout"/>
</$set></$set></$set></$set></$set></$set>
<$set name='getThumb' filter='[title{!!title}addprefix[$:/resSamples/thumb/]]'>
<$image source=<<getThumb>> width='65px'/>
</$set>
</$button>
</$set>
</$list><br>
Lee Carroll Bollinger (born April 30, 1946) is an American lawyer and educator who is serving as the 19th president of Columbia University.
Touchdown, or the Big Red Bear, is the unofficial mascot of Cornell University. The first mascot was a black bear introduced in 1915 by the Cornell University Athletic Association. Three more live bears over the course of approximately two decades also made appearances at Cornell until the live bear was replaced by costumed students some years later. Touchdown appears on the logo for Cornell Athletics.
Veritas vos liberabit is the motto of Johns Hopkins University. It is a variant of Veritas liberabit vos ("the truth shall set you free"; Greek: ἡ ἀλήθεια ἐλευθερώσει ὑμᾶς hē alētheia eleutherōsei hymas).
\define makeStyleButton()
<style>
.bold {background-color:whitesmoke;border:1px solid grey;border-radius:4px;padding:2px 3px 2px 4px;}
.bold:hover {background-color:#5778D9;fill:#fff;border:1px solid grey;border-radius:4px;}
.boldSelect {background-color:#5778D9;fill:#fff;border:1px solid grey;border-radius:4px;}
.bbutton {background-color:transparent;border:none;}
.bbutton:hover {background-color:#5778D9;color:#fff;}
.bbuttonSelect {background-color:#5778D9;color:#fff; fill:#fff;}
</style>
<$button set={{{[title{!!title}addsuffix[/state]]}}} setTo='1' class='bold' style='display:inline;font-size:100%;'><$transclude tiddler={{!!icon}}/></$button><$reveal type='match' state={{{[title{!!title}addsuffix[/state]]}}} text='1'>
<$button set={{{[title{!!title}addsuffix[/state]]}}} setTo='0' class='boldSelect' style='display:inline;font-size:100%;'><$transclude tiddler={{!!icon}}/></$button></$reveal>
<$reveal type='match' state={{{[title{!!title}addsuffix[/state]]}}} text='1'>
<div class='tc-drop-down' style='padding:3px;margin:0;border-radius:0px;border:none;width:100px;'>
<$list filter='[list[!!list]]'>
<$button set="$(makeEntryElement)$" setTo={{!!title}} class="bbutton" selectedClass="bbuttonSelect">{{!!title}}</$button>
</$list>
</div>
</$reveal>
\end
<$radio tiddler='$:/ResStyle/Adapt/temp.2' value='admin'> Edit base style directly</$radio>
<$radio tiddler='$:/ResStyle/Adapt/temp.2' value='advisor'> Tailor temp style settings</$radio>
<$set name='makeType' filter='[title[$:/ResStyle/Adapt/temp.2]field:text[admin]]' value="addsuffix{$:/ResStyleSetButton/temp}addsuffix[/preSet]" emptyValue="">
<<st "Current base style">>
{{$:/ResStyle/SetButton}}
---
<p><<st "Currently tailoring: <$list filter='[title{$:/ResStyle/Adapt/temp.1}addprefix[$:/ResumeStyles/]]'>
''{{!!text}}''
</$list>">></p>
<$list filter='[tag[$:/ResumeStyles]]'>
<$set name='prunePre' filter='[title{!!title}removeprefix[$:/ResumeStyles/]]'>
<$radio tiddler='$:/ResStyle/Adapt/temp.1' value=<<prunePre>>>
{{!!text}}
</$radio>
</$set>
</$list>
\define adminFilter()
[title{$:/ResStyle/Adapt/temp.1}addprefix[$:/ResStyles/]addsuffix[/]addsuffix<pruneOff>$(makeType)$]
\end
<style>
.bold {padding:1px 3px;background-color:whitesmoke;border:1px solid grey;border-radius:4px;vertical-align:middle;display:inline;font-size:70%;height:20px;}
.bold:hover {background-color:#5778D9;color:#fff;fill:#fff;border:1px solid grey;border-radius:4px;}
.boldSelect {background-color:#5778D9;fill:#fff;border:1px solid grey;border-radius:4px;}
.bbutton {background-color:transparent;border:none;}
.bbutton:hover {background-color:#5778D9;color:#fff;fill:#fff;}
.bbuttonSelect {background-color:#5778D9;color:#fff; fill:#fff;}
</style>
<$set name='makeType' filter='[title[$:/ResStyle/Adapt/temp.2]field:text[admin]]' value="addsuffix[/]addsuffix{$:/ResStyleSetButton/temp}addsuffix[/preSet]" emptyValue="">
<$list filter='[tag[$:/ResumeStyles]]'>
<$set name='prunePre' filter='[title{!!title}removeprefix[$:/ResumeStyles/]]'>
<small><$button set='$:/ResStyle/Adapt/temp.1' setTo=<<prunePre>> class='layoutCtrl' selectedClass='selectThis'>
{{!!text}}
</$button></small>
</$set>
</$list>
<p><<st "Currently tailoring: <$list filter='[title{$:/ResStyle/Adapt/temp.1}addprefix[$:/ResumeStyles/]]'>
''{{!!text}}''
</$list>">></p>
<$list filter='[prefix[$:/ResStyles/Tools/]!suffix[preSet]!suffix[state]!regexp:exclude{$:/ResStyle/Adapt/temp.1}]'>
<$set name='pruneOff' filter='[title{!!title}removeprefix[$:/ResStyles/Tools/]]'>
<$set name='makeEntryElement' filter=<<adminFilter>>>
<!--BUTTON-->
<$button popup={{{[title{!!title}addsuffix[/state]]}}} setTo='1' class='bold' tooltip={{!!caption}}><$transclude tiddler={{!!icon}}/> {{!!caption}}: <$transclude tiddler=<<makeEntryElement>> field="text"/></$button>
<!--DROP DOWN-->
<$reveal animate='yes' type='popup' state={{{[title{!!title}addsuffix[/state]]}}}>
<div class='tc-drop-down' style='padding:3px;margin:0;border-radius:0px;border:none;width:100px;'>
<$list filter='[list[!!list]]'>
<$button set=<<makeEntryElement>> setTo={{!!title}} class="bbutton" selectedClass="bbuttonSelect">{{!!title}}</$button>
</$list>
</div></$reveal>
</$set></$set>
</$list>
'Palatino Linotype', 'Book Antiqua', Palatino, serif
Georgia, 'Times New Roman', Times, serif
Verdana, Geneva, sans-serif
'Palatino Linotype', 'Book Antiqua', Palatino, serif
'Palatino Linotype', 'Book Antiqua', Palatino, serif
'Palatino Linotype', 'Book Antiqua', Palatino, serif
'Times New Roman', Times, serif
'Palatino Linotype', 'Book Antiqua', Palatino, serif
Tahoma, Geneva, sans-serif
'Palatino Linotype', 'Book Antiqua', Palatino, serif
'Palatino Linotype', 'Book Antiqua', Palatino, serif
'Times New Roman', Times, serif
'Palatino Linotype', 'Book Antiqua', Palatino, serif
'Palatino Linotype', 'Book Antiqua', Palatino, serif
Tahoma, Geneva, sans-serif
'Palatino Linotype', 'Book Antiqua', Palatino, serif
'Palatino Linotype', 'Book Antiqua', Palatino, serif
'Palatino Linotype', 'Book Antiqua', Palatino, serif
'Times New Roman', Times, serif
'Palatino Linotype', 'Book Antiqua', Palatino, serif
Tahoma, Geneva, sans-serif
'Palatino Linotype', 'Book Antiqua', Palatino, serif
'Palatino Linotype', 'Book Antiqua', Palatino, serif
'Times New Roman', Times, serif
\define makeItemMac()
<$action-setfield $tiddler="$:/ResumeBuild/MakeItemList/temp" $field="title" $value="$:/ResumeBuild/makeList/$(theKid)$/$(makeItemVar)$/$(taskID)$"/>
<$action-setfield $tiddler="$:/ResumeBuild/makeList/$(theKid)$/$(makeItemVar)$/$(taskID)$" $field="caption" $value="$(makeItemVar)$"/>
<$action-setfield $tiddler="$:/ResumeBuild/makeList/$(theKid)$/$(makeItemVar)$/$(taskID)$" $field="list" $value="""$:/ResumeBuild/makeList/$(theKid)$/$(makeItemVar)$/$(taskID)$-1"""/>
<$action-setfield $tiddler="$:/ResumeBuild/makeList/$(theKid)$/$(makeItemVar)$/$(taskID)$" $field="list_type" $value="$(listType)$"/>
<$action-setfield $tiddler="$:/ResStyles/MakeItemList/selectState" $field="text" $value="$:/ResumeBuild/makeList/$(theKid)$/$(makeItemVar)$/$(taskID)$"/>
\end
\define makeNextItemMac()
<$action-listops $tiddler="$(mainC)$" $field="list" $subfilter="[list[$(mainC)$]append[$(makeNextItem)$]]"/>
\end
\define removeThisItem()
<$action-listops $tiddler="$(mainC)$" $field="list" $subfilter="[list[$(mainC)$]] +[remove{!!title}]"/>
<$action-deletetiddler $tiddler={{!!title}}/>
\end
<style>
.delL {background-color:transparent; padding:2px 4px 1px 4px; border-radius:9px; border:1px dotted grey;}
.delL:hover {background-color:red;color:#fff;}
.delS {background-color:red;color:#fff;}
</style>
<$set name='theKid' filter='[title{$:/ResumeBuild/Current}removeprefix[$:/ResumeBuild/]]'>
<$list filter='[title{$:/ResumeBuild/Current}]'>
<$reveal type='match' state='!!listonoff' text=''><$button class='toggle' selectedClass='toggled' set='!!listonoff' setTo='1'>Add lists</$button></$reveal><$reveal type='match' state='!!listonoff' text='1'><$button class='toggle' selectedClass='toggled' set='!!listonoff' setTo=''>Remove lists</$button></$reveal>
<$reveal type='match' state='!!listonoff' text='1'> <$button class='toggle' selectedClass='toggled' set="$:/ResStyles/MakeItemList/state" setTo='1'>Make list</$button>
<$reveal type="match" state="$:/ResStyles/MakeItemList/state" text='1'>
<div style='-webkit-box-shadow: 0 15px 10px #777;
-moz-box-shadow: 0 15px 10px #777;
box-shadow: 0 15px 10px #777;width:275px;background-color:#fff;padding:15px;'>
<div style='float:right;'><$button class='toggle' set='$:/ResStyles/MakeItemList/state' setTo=''>Cancel</$button></div>
<p><b>Select list type</b></p>
<!--CHOOSE LIST STYLE-->
<$list filter='[tag[$:/ResStyles/MakeItemList]suffix[/Horizontal]]'><$button class='toggle' selectedClass='toggled' set='$:/ResStyles/MakeItemList/temp' setTo={{!!text}}>{{!!text}}</$button> </$list>
<$reveal class='' type='nomatch' state='$:/ResStyles/MakeItemList/temp' text=''>
<p><b>Name your list</b></p>
<!--ENTER NAME FOR NEW LIST-->
<p><$edit-text tiddler='$:/ResumeBuild/MakeItemList/temp' field='list_title'/></p>
<$set name='taskID' value={{$:/Tools/TaskDetails/Task}}>
<$set name='listType' value={{$:/ResStyles/MakeItemList/temp}}>
<$set name='makeItemVar' value={{$:/ResumeBuild/MakeItemList/temp!!list_title}}>
<!--CREATE NEW LIST BUTTON-->
<p><$button class='toggle' selectedClass='toggled' set='$:/ResStyles/MakeItemList/state' setTo=''>
<<makeItemMac>>
Create list
<$action-setfield $tiddler='$:/ResStyles/MakeItemList/temp' $field='text' $value=''/>
<$action-setfield $tiddler='$:/ResStyles/MakeItemList/temp' $field='list_title' $value=''/>
<$action-setfield $tiddler='$:/ResumeBuild/MakeItemList/temp' $field='text' $value=''/>
</$button></p>
</$set></$set></$set>
</$reveal>
</div>
</$reveal>
<div style='margin:10px 0;border-bottom:1px dashed grey;padding-bottom:10px;'>
<$set name='makeAssociated' filter='[title<theKid>addprefix[$:/ResumeBuild/makeList/]]'>
<$list filter='[prefix<makeAssociated>suffix{$:/Tools/TaskDetails/Task}]'>
<$set name='getState' filter='[title{!!title}addsuffix[/state]]'>
<!--SELECT LIST BUTTON-->
<$button style='padding:5px 10px;' set='$:/ResStyles/MakeItemList/selectState' setTo={{!!title}} class='sideb' selectedClass='sidebselect'>{{!!caption}}<$action-setfield $tiddler=<<getState>> $field="text" $value=""/></$button> <!--DELETE THIS LIST BUTTON-->^^<$button set=<<getState>> setTo='1' class='delL' selectedClass='delS'><$action-setfield $tiddler="$:/ResStyles/MakeItemList/selectState" $field="text" $value={{!!title}}/> ×</$button>^^
</$set>
</$list></$set></div>
<$list filter='[title{$:/ResStyles/MakeItemList/selectState}]'>
<$set name='getState' filter='[title{!!title}addsuffix[/state]]'>
<$reveal type='match' state=<<getState>> text='1'>
<!--CONFIRM DELETE - YES BUTTON-->
<p>Delete {{!!caption}} - //Sure?//</p><p><$button set='$:/makeList/deleteListSure' setTo='' style='padding:5px 10px; color:#fff;background-color:red;fill:#fff;border:none;'><$action-deletetiddler $tiddler={{!!title}}/>{{$:/core/images/delete-button}} Yes!</$button>
<!--CONFIRM DELETE - NO BUTTON-->
<$button set=<<getState>> setTo='' style='padding:5px 10px; color:#fff;background-color:grey;fill:#fff;border:none;'>Cancel</$button></p>
</$reveal>
</$set>
</$list>
<$list filter='[prefix{$:/ResStyles/MakeItemList/selectState}prefix<makeAssociated>suffix{$:/Tools/TaskDetails/Task}]'>
<$set name='mainC' value={{!!title}}>
<$list filter='[list[!!list]]'>
<!--ENTER TEXT FOR LIST ITEM BOX-->
<p><$edit-text size='49' tag='input' tiddler={{!!title}}/>
<!--DELETE THIS TEXT ITEM BUTTON-->
<$button style='background-color:red;fill:#fff;border:none;'><<removeThisItem>>{{$:/core/images/delete-button}}</$button></p>
<$set name='getThisN' filter='[title{!!title}splitbefore[-]]'>
<$set name='stripCurrent' filter='[title{!!title}removeprefix<getThisN>]'>
<$set name='getNextN' filter='[<stripCurrent>next[$:/Tools/Numbers]]'>
<$set name="makeNextItem" filter="[title<mainC>addsuffix[.]addsuffix<getNextN>]">
<$set name='ifLast' filter='[list<mainC>last[1]]'>
<$reveal type="match" state="!!title" text=<<ifLast>>>
<!--ADD NEW LIST ITEM BUTTON-->
<p><$button>+
<<makeNextItemMac>>
</$button></p>
</$reveal>
</$set></$set></$set></$set>
</$set></$list></$set></$list>
<<st "Title styles">>
<$list filter='[title{$:/ResStyles/MakeItemList/selectState}]'>
<table><tr><th style='text-align:left;color:#333;'>List punctuation: </th><td><$select tiddler={{!!title}} field='divider_list'><$list filter='[prefix[$:/Tools/Dividers/]]'><option value={{!!title}}>{{!!caption}}</option></$list></$select></td></tr>
<tr><th style='text-align:left;color:#333;'>List title styling: </th><td><$select tiddler={{!!title}} field='title_style'><$list filter='[prefix[$:/Tools/htmlTags/]]'><option value={{!!title}}>{{!!caption}}</option></$list></$select></td></tr></table>
</$list>
</$reveal>
</$list>
</$set>
$:/ResumeBuild/makeList/Additional.1/Languages/123
$:/ResumeOutput/Education
$:/ResStyles/Tools/fontWeight
[prefix[$:/ResStyles/Tools/]field:loc[div]]
'Times New Roman', Times, serif
'Times New Roman', Times, serif
Verdana, Geneva, sans-serif
'Palatino Linotype', 'Book Antiqua', Palatino, serif
'Palatino Linotype', 'Book Antiqua', Palatino, serif
'Times New Roman', Times, serif
\define saveButtonSet()
<$action-sendmessage $message="tm-download-file" $param="$:/ResumeBuildCombine" filename="Resume for $(clientName)$ by $(advisorName)$ at ZHISHIQ (Task #$(taskID)$).doc"/>
\end
<style>
.downloader {background-color:#FFCCCB;;border:3px solid #FFCCCB;border-radius:7px;color:#fff;}
.downloader:hover {background-color:#fff;border: 3px solid #FFCCCB;color:black;}
.styleset {background-color:#bdd0ef;border:3px solid #bdd0ef;border-radius:7px;color:#fff;fill:#fff;}
.styleset:hover {background-color:#fff;border: 3px solid #bdd0ef;color:black;fill:black;}
.downloader span {fill:#fff;}
.downloader span:hover {fill:black;}
.puce {background-color:coral;border: 3px solid coral;border-radius:7px;color:#fff;fill:#fff;}
.puce:hover {background-color:#fff;border: 3px solid coral;color:coral;fill:coral;}
</style>
<$reveal type='nomatch' state='$:/ResStyleTableW' text='width:534.93pt;'>
<$button class='downloader' style='width:25px;padding:1px;' set="$:/ResStyleTableW" setTo="""width:534.93pt;""">{{$:/img/ms_word.png}}</$button>
</$reveal>
<$reveal type='match' state='$:/ResStyleTableW' text='width:534.93pt;'>
<$set name='advisorName' value={{$:/Login!!name}}><$set name='taskID' value={{$:/Tools/TaskDetails/Task}}><$set name='clientName' value={{$:/Tools/TaskDetails/Client}}>
<$button class='downloader' set="$:/ResStyleTableW" setTo="""width:534.93pt;"""><span>
{{$:/core/images/download-button}} .doc</span>
<<saveButtonSet>>
</$button>
</$set></$set></$set></$reveal>
<$reveal type='match' state='$:/ResStyleTableW' text='width:534.93pt;'>
<$reveal type='match' state='$:/ResStyleTableW' text='width:534.93pt;'><$button class='puce' set="$:/ResStyleTableW" setTo="width:400px;" tooltip="Set view to show resume preview.">{{$:/core/images/file}} preview </$button></$reveal></$reveal><$reveal type='match' state='$:/ResStyleTableW' text='width:400px;'><$button class='puce' set="$:/ResStyleTableW" setTo="""width:534.93pt;""" tooltip="Press this button to close preview on the right-hand side. A download button will appear. Press it to download. Press the orange Open preview button to get back to this view."><span>
{{$:/core/images/file}} preview ×</span>
</$button></$reveal>
<$reveal type='match' state='$:/ResumeBuild/StyleSet/state' text='0'><$button set='$:/ResumeBuild/StyleSet/state' setTo='1' class='styleset' tooltip='Click here to close the basic style template chooser.'><span>
{{$:/core/images/palette}} set style</span>
</$button>
</$reveal><$reveal type='match' state='$:/ResumeBuild/StyleSet/state' text='1'><$button tooltip='Click here to choose your basic style template.' set='$:/ResumeBuild/StyleSet/state' setTo='0' class='styleset' selectedClass='styleBoxSelect'><span>
{{$:/core/images/palette}} set style ×</span>
</$button></$reveal>
<style>
.contentB {background-color:#fff;border:transparent;text-align:inherit;margin:0;padding:0;}
.contentB:hover {background-color:#d9e4f7;border:transparent}
.contentBselected {background-color:#d9e4f7;border:transparent}
</style>
<$list filter='[list[$:/ResumeBuild/Output!!list]]'>
<$set name='getContainer' filter='[title{!!title}removeprefix[$:/ResumeOutput/]addprefix[$:/ResumeBuild/]]'>
<$set name='getFirst' filter='[list<getContainer>first[]]'>
<$button class='contentB' selectedClass='contentBselected' set='$:/ResumeBuild/Section' setTo={{!!title}}>
<$action-setfield $tiddler="$:/ResumeBuild/Current" $value=<<getFirst>>/>
<$transclude mode='block' tiddler={{!!title}}/>
</$button>
</$set></$set>
</$list>
Address layout = vertical
<$list filter='[prefix[$:/ResStyles/Layout/AddressLayout/]]'>
<$set name='makeTitle' filter='[title{!!title}removeprefix[$:/ResStyles/Layout/AddressLayout/]removesuffix[/preSet]]'>
<$checkbox $tiddler={{!!title}} field="text" checked="1" unchecked="">
<<makeTitle>></$checkbox>
</$set>
</$list>
\define newT()
<$action-setfield $tiddler="$:/ResumeBuild/temp" $field="title" $value="$(getNextMakeIt)$"/>
<$action-setfield $tiddler="$(getNextMakeIt)$" $field="bullet_list" $value="1 2 3"/>
<$action-setfield $tiddler="$(getNextMakeIt)$" $field="list" $value="$(keyList)$"/>
<$action-setfield $tiddler="$:/ResumeBuild/Current" $field="text" $value=<<getNextMakeIt>>/>
<$action-listops $tiddler="$(thisSectionContainer)$" $field="list" $subfilter="[list[$(thisSectionContainer)$]append<getNextMakeIt>]"/>
<$action-setfield $tiddler=<<nextChildState>> $value='on'/>
\end
<style>
.navMe {background-color:#5778D9;color:#fff;border:none;border-radius:7px;padding:1px 8px 3px 8px;fill:#fff;}
.navMe:hover {background-color:#6495ED;box-shadow: 1px 1px 2px #888888;}
.toggle {background-color:grey;color:#fff;border:none;}
.toggle:hover {background-color:#5778D9;}
.toggled {background-color:#5778D9;}
</style>
<$reveal type='match' state='$:/ResumeBuild/Current' text='$:/ResumeBuild/Personal.#'>
{{$:/Tools/TaskDetails}}
<$reveal type='nomatch' state='$:/Tools/TaskDetails/Task' text=''>
<p><$button class='toggle'>Next
<$action-setfield $tiddler='$:/ResumeBuild/Current' $value='$:/ResumeBuild/Personal.1'/>
</$button></p>
</$reveal>
</$reveal>
<$set name='theChild' value={{$:/ResumeBuild/Current}}>
<$set name='taskID' value={{$:/Tools/TaskDetails/Task}}>
<$set name='chaF' filter='[title{$:/ResumeBuild/Current}splitbefore[.]]'>
<$set name='thisOne' filter='[title{$:/ResumeBuild/Current}removeprefix<chaF>]'>
<$set name='theChildState' filter='[title{$:/ResumeBuild/Current}addsuffix[/onOff]]'>
<$set name='thisSectionContainer' filter='[title<chaF>removesuffix[.]]'>
<$set name="getNextMakeIt" filter="[<thisOne>next[$:/Tools/Numbers]addprefix<chaF>]">
<$set name='nextChildState' filter='[title<getNextMakeIt>addsuffix[/onOff]]'>
<$set name="keyList0" filter="[title<thisSectionContainer>addsuffix[!!child_list]]">
<$set name='keyList' filter='[list<keyList0>]'>
<$set name='priorOne4DeleteButton' filter='[list[$:/Tools/Numbers]before<thisOne>addprefix<chaF>]'>
<$set name="getPrevMakeIt" filter="[list[$:/Tools/Numbers]before<thisOne>addprefix<chaF>]">
<$reveal type='nomatch' state='$:/ResumeBuild/Current' text='$:/ResumeBuild/Personal.#'>
<div style='float:left;width:80%;margin-top:-10px;'>
<!--HEADER DETAILS-->
Task <<taskID>>/ <$view tiddler=<<thisSectionContainer>> field='caption'/>/ ''Entry <<thisOne>>''
<!--ON-->
<$button tooltip="Default setting - Include this entry in the downloadable document." set=<<theChildState>> setTo='on' selectedClass='toggled' class='toggle'>On<$action-listops $tiddler=<<thisSectionContainer>> $field="list" $subfilter="[list<thisSectionContainer>append<theChild>]"/></$button>
<!--OFF-->
<$button tooltip="Exclude this entry from the downloadable document." set=<<theChildState>> setTo='off' selectedClass='toggled' class='toggle'><$action-listops $tiddler=<<thisSectionContainer>> $field="list" $subfilter="[list<thisSectionContainer>] +[remove<theChild>]"/>Off</$button>
</div>
<$reveal type='match' state=<<theChildState>> text='on'>
<p>{{$:/ResumeBuild/EnterDetails}}</p>
<$set name="ifEduPers" filter="[title<thisSectionContainer>suffix[Personal]][title<thisSectionContainer>suffix[Education]] [title<thisSectionContainer>suffix[Awards]] [title<thisSectionContainer>suffix[Additional]]" value=" " emptyValue="""<p>{{$:/ResumeBuild/BulletMake}}</p>""">
<<ifEduPers>>
</$set>
<$set name="isAddOnly" filter="[title<thisSectionContainer>!suffix[Additional]]" value=" " emptyValue="""<p>{{$:/ResStyles/MakeItemList/Button}}</p>""">
<<isAddOnly>>
</$set>
<$set name="ifEduOnly" filter="[title<thisSectionContainer>!suffix[Education]]" value=" " emptyValue="""<p>{{$:/ResStyles/MakeItemList/Button}}</p>""">
<<ifEduOnly>>
</$set>
</$reveal>
<div class='clearfix'></div>
<div style='width:100%;padding-top:10px;text-align:center;'><<navTool>></div>
</$reveal>
</$set></$set></$set></$set></$set></$set></$set></$set></$set></$set>
$:/ResumeBuild/Additional.1
Golden Globe - Best Actress
<$reveal type='nomatch' state=<<theChild>> text='on'>
<$set name='theTask' value={{$:/Tools/TaskDetails/Task}}>
<div style='border-top:1px dashed grey;padding-top:5px;'>Bullets
<$list filter='[title{$:/ResumeBuild/Current}]'>
<$set name='theBulletState' filter='[title{!!title}addsuffix[/BulletsOnOff]]'>
<!--ON-->
<$button set=<<theBulletState>> setTo='1' selectedClass='toggled' class='toggle'><$action-setfield $tiddler={{!!title}} $field="bullet_list" $value="1 2 3"/>
<$list filter='[list[!!bullet_list]]'>
<$set name='theBC' filter='[title{!!title}addsuffix[_B]addprefix[.]addprefix{!!title}}]'>
<$action-setfield $tiddler=<<theBC>> $field='t' $value='1'/>
</$set></$list>On</$button>
<!--OFF-->
<$button set=<<theBulletState>> setTo='off' selectedClass='toggled' class='toggle'><$action-setfield $tiddler={{!!title}} $field="bullet_list" $value=""/>Off</$button> {{$:/popup/ActionVerbs}}{{$:/this/ActionVerbs||$:/copy}}
<$reveal type='nomatch' state=<<theBulletState>> text='on'>
<!--ENTRIES-->
<div style='margin-top:15px;'>
<$list filter='[list[!!bullet_list]addprefix[.]addprefix{!!title}addsuffix[_B]addsuffix[/]addsuffix<theTask>]'>
<p style='margin-bottom:-15px;'><$edit-text class='tc-edit-texteditor' tag='textarea' minHeight='10px' tiddler={{!!title}}/></p>
</$list></div></$reveal></$set></$list></div></$set>
$:/ResumeBuild/Personal.1
<$button tooltip='Delete this item entry' style='background-color:red;fill:#fff;border:none;'>
<$action-listops $tiddler=<<thisSectionContainer>> $field="list" $subfilter="[list<thisSectionContainer>] +[remove<theChild>]"/>
<$list filter='[prefix<theChild>suffix<taskID>]'>
<$action-deletetiddler $tiddler={{!!title}}/>
</$list>
{{$:/core/images/delete-button}}
<$action-setfield $tiddler="$:/ResumeBuild/Current" $value=<<priorOne4DeleteButton>>/>
</$button>
$:/ResumeBuild/Education.1
<style>
.delX {background-color: grey; border: none; color: #fff; margin-left:10px; padding-bottom:3px; }
.delx:hover {background-color:red; }
</style>
<!--TITLE-->
<div style='border-bottom:1px solid black;width:80%;'><h2 style='padding:0;margin:0;'><b><$view tiddler=<<thisSectionContainer>> field='caption'/></b></h2></div>
<!--ENTRY TOOL-->
<$list filter='[list<theChild>]'>
<$set name='theLabel' value={{!!title}}>
<$list filter='[title{!!title}addprefix[/]addprefix<theChild>addsuffix[/]addsuffix<taskID>]'>
<$set name="ifDate" filter="[title<theLabel>!regexp:title[Date]]" value="""
<p><$edit-text tiddler={{!!title}} default='' tag='input' size='50' default='' minHeight='10px' placeholder=<<theLabel>>/><$button class='delX'>
<$action-deletetiddler $tiddler={{!!title}}/>
×
</$button></p>""" emptyValue="""<$macrocall $name='picker' t={{!!title}}/>""">
<<ifDate>>
</$set></$list></$set></$list>
\define listMaker(sec,sub)
<$list filter='[list[$:/ResumeBuild/$sec$!!child_list]$sub$addprefix[$:/ResumeBuild/$sec$/]addsuffix[/]addsuffix{$:/Tools/TaskDetails/Task}]'>
<$transclude/>
</$list>
\end
<$lst filter='[prefix[$:/ResumeBuild/Professional.]suffix{$:/Tools/TaskDetails/Task}]'/>
<<listMaker Personal.End first[2]>>
<<listMaker Personal.End rest[2]first[2]>>
<$list filter='[list[$:/ResumeBuild/Professional]]'>
{{!!title}}
<$list filter='[list[$:/ResumeBuild/Professional!!child_list]addprefix[/]addprefix{!!title}addsuffix[/]addsuffix{$:/Tools/TaskDetails/Task}]'>
{{!!text}}
</$list>
$:/ResumeBuild/Extracurricular.1
$:/ResumeBuild/Additional
<small><$button class='layoutCtrl' selectedClass='selectThis' set='$:/ResStyles/Layout/1or2' setTo='1'>Right-balanced layout</$button> <$button class='layoutCtrl' selectedClass='selectThis' set='$:/ResStyles/Layout/1or2' setTo='2'>Left-columned layout</$button>
<$reveal type='match' state='$:/ResStyles/Layout/1or2' text='2'><$reveal type='match' state='$:/ResStyles/Layout/1or2/2.5' text='1'><$button class='layoutCtrl toggled' set='$:/ResStyles/Layout/1or2/2.5' setTo=''>Alt. section title layout on</$button></$reveal><$reveal type='match' state='$:/ResStyles/Layout/1or2/2.5' text=''><$button class='layoutCtrl' set='$:/ResStyles/Layout/1or2/2.5' setTo='1'>Alt. section title layout off</$button> </$reveal>
</$reveal>
<br>
<table><tr><td>
Address layouts</td><td style='padding-left:10px;'>
<$button selectedClass='toggled' class='toggle' set='$:/ResBuild/AddressStyle/state' setTo='1'>Horizontal</$button>
<$button selectedClass='toggled' class='toggle' set='$:/ResBuild/AddressStyle/state' setTo='2'>Vertical</$button>
</td></tr></table>
</small>
<$list filter='[prefix[$:/ResStyles/Tools/]!suffix[/preSet]]'/>
---
<$list filter='[prefix[$:/ResumeStyles/]]'/>
---
<$list filter='[prefix[$:/ResStyles/]!prefix[$:/ResStyles/Tools/]!suffix[/preSet]]'/>
Adam Smith Economics Prize (2002)
Rounders Championship (2000)
James Loughlkey Award (2001)
Gold medal, Jimmy Carr Awards (2000)
\define navTool()
<!--PRIOR SECTION BUTTON-->
<$set name='getPriorSection' filter='[list[$:/ResumeBuild]before<thisSectionContainer>]'>
<$set name="getPriorSectionItem" filter="[list<getPriorSection>last[1]]">
<$set name='ifPriorSectionContainer' filter='[list<getPriorSection>!is[missing]]' value="""<$button class='navMe' set="$:/ResumeBuild/Current" setTo=<<getPriorSectionItem>>>
{{$:/core/images/chevron-left}} <$view tiddler=<<getPriorSection>> field='caption'/></$button>""" emptyValue=" ">
<$reveal type='nomatch' state='$:/ResumeBuild/Current' text='$:/ResumeBuild/Personal.1'>
<<ifPriorSectionContainer>>
</$reveal>
</$set></$set></$set>
<!--PRIOR ITEM BUTTON-->
<$set name='priorOne' filter='[list[$:/Tools/Numbers]before<thisOne>]'><$set name='priorContainer' filter='[title<priorOne>addprefix<chaF>]'><$set name='ifThenButton' filter='[title<priorContainer>!is[missing]]' value="""<$button class='navMe' set='$:/ResumeBuild/Current' setTo=<<priorContainer>>>{{$:/core/images/left-arrow}}<<priorOne>></$button>""" emptyValue=' '>
<$reveal type='nomatch' state='$:/ResumeBuild/Current' text='$:/ResumeBuild/Personal.1'>
<<ifThenButton>>
</$reveal>
</$set></$set></$set>
<!--MIDDLE BUTTON-->
<$set name='ifNotEnd' filter='[title<getPrevMakeIt>!suffix[.0]]' value=<<thisOne>> emptyValue="υ"><$button style='background-color:#fff;color:black;' class='navMe'><<ifNotEnd>></$button></$set>
<$set name='nextOne' filter='[list[$:/Tools/Numbers]after<thisOne>]'>
<$set name='nextContainer' filter='[title<nextOne>addprefix<chaF>]'>
<!--NEXT ITEM BUTTON-->
<$set name='ifThenButton2' filter='[title<nextContainer>!is[missing]]' value="""<$button class='navMe' set='$:/ResumeBuild/Current' setTo=<<nextContainer>>><<nextOne>> {{$:/core/images/right-arrow}}</$button>""" emptyValue="""<$button tooltip="New entry in this section" class='navMe boxShadow' style='color:black;background-color:#fff;'><<newT>>+</$button>""">
<$reveal type='nomatch' state='$:/ResumeBuild/Current' text='$:/ResumeBuild/Personal.1'>
<<ifThenButton2>>
</$reveal>
</$set>
<!--NEXT SECTION BUTTON-->
<$set name='getNextSection' filter='[list[$:/ResumeBuild]after<thisSectionContainer>]'>
<$set name="getNextSectionItem" filter="[list<getNextSection>first[1]]">
<$set name='ifNextSectionContainer' filter='[list<getNextSection>!is[missing]]' value="""<$button class='navMe'set="$:/ResumeBuild/Current" setTo=<<getNextSectionItem>>>
<$view tiddler=<<getNextSection>> field='caption'/> {{$:/core/images/chevron-right}}</$button>""" emptyValue=" ">
<$reveal type="nomatch" state="$:/ResumeBuild/LastItem" text=<<thisSectionContainer>>>
<<ifNextSectionContainer>>
</$reveal>
</$set></$set></$set>
\end
<$button style='padding:0;text-align:left;' class='tc-btn-invisible tc-tiddlylink' class="tc-btn-invisible tc-tiddlylink"><$action-sendmessage $message="tm-close-other-tiddlers" $param="ResumeBuilder"/>
ResumeBuilder
</$button>
\define placeItem(style,class,filter,html,location,post)
<$list filter="[list{!!title}addprefix[/]addprefix{!!title}addsuffix[/]addsuffix{$:/Tools/TaskDetails/Task}$filter$]"><$reveal type='nomatch' state='!!text' text=''><$html$ style="$style$" class="$class$"><$set name="theVal" filter="[title{!!title}!is[missing]]" value="""<$view field="$location$"/>""" emptyValue="<span></span>"><<theVal>>$post$</$set></$html$></$reveal></$list>
\end
\define makeMyLists()
$(cssO.1)${{!!caption}}$(cssC.1)$:
\end
\define listMaker()
<$set name='getHolder' value={{!!title}}>
<$set name='endDivider' filter='[title{!!divider_list}get[end]]'>
<$set name='ifDividerEnd' filter='[title{!!divider_list}!field:end[]]' value=<<endDivider>> emptyValue='<span></span>'>
<$set name='listDivider' filter='[title{!!divider_list}get[text]]'>
<$set name='cssO.1' filter='[title{!!title_style}get[open]]'>
<$set name='cssC.1' filter='[title{!!title_style}get[close]]'>
<$reveal type='nomatch' state='!!list' text=''>
<$set name='ifLast' filter='[list[!!list]last[]]'>
<<makeMyLists>> <$list filter='[list[!!list]]'>
<$set name="makeDivider" filter="[title{!!title}field:title<ifLast>]" value=<<ifDividerEnd>> emptyValue=<<listDivider>>> {{!!text}}<$set name='ifPop' filter='[title<getHolder>!field:divider_list[]]' value=<<makeDivider>> emptyValue='<span></span>'><<ifPop>></$set></$set></$list>
</$set></$reveal></$set></$set></$set></$set></$set></$set>
\end
\define itemList(r,p,f,a)
<$list filter='[prefix{!!title}suffix{$:/Tools/TaskDetails/Task}regexp:title[$r$]]'>$p${{!!$f$}}$a$</$list>
\end
\define sectionTitle1()
<td colspan='2' style=<<sectionTitleTd>>>
<div style=<<sectionTitleDiv>>>{{!!caption}}</div>
</td>
\end
\define sectionTitle2()
<span></span>
\end
\define sectionTitle3()
<td width={{$:/ResStyleTableW}} colspan='2' style=<<sectionTitleTd>>>
<div style=<<sectionTitleDiv>>>{{!!caption}}</div>
</td>
\end
\define entryTitleOption1(where,occ,dept,p)
<$reveal type='match' state=<<hideThisIf>> text='on'>
<!--ENTRY TITLE-->
<tr>
<td width="409.93pt" style=<<entryTitleTd>>>
<$macrocall $name="placeItem" style=<<entryTitleDiv>> class="" filter="regexp:title[$where$]" html="div" location="text" post=""/>
</td>
<td width="125pt" style="$(entryTitleTd)$;text-align:right;vertical-align:top;">
<$macrocall $name='datesMake'/></td>
</tr><tr>
<td style=<<bodyText>> colspan='2'>
<$macrocall $name="placeItem" style=<<bodyText>> class="occStyle" filter="regexp:title[$occ$]" html="span" location="text" post="$p$"/><$macrocall $name="placeItem" style=<<bodyText>> class="occStyle" filter="regexp:title[$dept$]" html="span" location="text" post=""/>
<$macrocall $name="detailsPlacer"/>
</td></tr>
\end
\define entryTitleOption2(where,occ,dept,p)
<$reveal type='match' state=<<hideThisIf>> text='on'>
<tr>
<td rowspan='2' class='dateBlock' style="$(sectionTitleTd)$;width:125pt;vertical-align:top;">
<$reveal type='match' state='$:/ResStyles/Layout/1or2/2.5' text='1'>
<$set name='getHeader' filter='[title{!!title}suffix[1]removeprefix[$:/ResumeBuild/]removesuffix[.1]]'>
<div style=<<sectionTitleDiv>>><<getHeader>></div>
</$set>
</$reveal>
<$macrocall $name='datesMake'/>
</td>
<td style=<<entryTitleTd>> width='284.93pt'>
<$macrocall $name="placeItem" style=<<entryTitleDiv>> class="" filter="regexp:title[$where$]" html="div" location="text" post=""/>
</td>
<td style="text-align:right;$(entryTitleTd)$" width='125pt'><$macrocall $name="placeItem" style=<<entryTitleDiv>> class="" filter="regexp:title[Location]" html="span" location="text" post=""/></td>
</tr>
<tr>
<td style=<<bodyText>> colspan='2'>
<$macrocall $name="placeItem" style=<<bodyText>> class="occStyle" filter="regexp:title[$occ$]" html="span" location="text" post="$p$"/><$macrocall $name="placeItem" style=<<bodyText>> class="occStyle" filter="regexp:title[$dept$]" html="span" location="text" post=""/>
<$macrocall $name="detailsPlacer"/>
</td>
</tr></$reveal>
\end
\define entryTitleOption3(where,occ,dept,p)
<!--OPTION THREE-->
<$reveal type='match' state=<<hideThisIf>> text='on'>
<tr>
<!--SECTION TITLE-->
<td class='dateBlock' style="$(sectionTitleTd)$;width:125pt;vertical-align:top;">
<$set name='getHeader' filter='[title{!!title}suffix[1]removeprefix[$:/ResumeBuild/]removesuffix[.1]]'>
<div style=<<sectionTitleDiv>>><<getHeader>></div>
</$set>
</td>
<td style=<<entryTitleTd>> width='284.93pt'>
<$macrocall $name="placeItem" style=<<entryTitleDiv>> class="" filter="regexp:title[$where$]" html="div" location="text" post=""/>
</td>
<td style="text-align:right;$(entryTitleTd)$" width='125pt'>
<$macrocall $name="placeItem" style=<<entryTitleDiv>> class="" filter="regexp:title[Location]" html="span" location="text" post=""/>
</td>
</tr>
<tr>
</tr>
<td rowspan='2' class='dateBlock' style="$(bodyText$;width:125pt;vertical-align:top;">
<$macrocall $name='datesMake'/>
</td>
<td style=<<bodyText>> colspan='2'>
<$macrocall $name="placeItem" style=<<bodyText>> class="occStyle" filter="regexp:title[$occ$]" html="span" location="text" post="$p$"/><$macrocall $name="placeItem" style=<<bodyText>> class="occStyle" filter="regexp:title[$dept$]" html="span" location="text" post=""/>
<$macrocall $name="detailsPlacer"/>
</td>
</tr></$reveal>
\end
\define singularTd()
<$list filter='[list[!!list]]'>
<$set name='hideThisIf' filter='[title{!!title}addsuffix[/onOff]]'>
<$reveal type='nomatch' state=<<hideThisIf>> text='off'>
<$reveal type='nomatch' state='$:/ResStyles/Layout/1or2/2.5' text='1'>
<tr>
<td style=<<bodyText>>>
<$list filter='[prefix[$:/ResumeBuild/Additional.]]'>
<$reveal type='match' state='!!listonoff' text='1'>
<$set name='theKid' filter='[title{!!title}removeprefix[$:/ResumeBuild/]addprefix[$:/ResumeBuild/makeList/]]'><$list filter='[prefix<theKid>suffix{$:/Tools/TaskDetails/Task}]'>
<$macrocall $name='listMaker'/></$list></$set></$reveal>
</$list></td></tr></$reveal>
<$reveal type='match' state='$:/ResStyles/Layout/1or2/2.5' text='1'>
<tr>
<td rowspan='2' class='dateBlock' style="$(sectionTitleTd)$;width:125pt;vertical-align:top;">
<$set name='getHeader' filter='[title{!!title}suffix[1]removeprefix[$:/ResumeBuild/]removesuffix[.1]]'>
<div style=<<sectionTitleDiv>>><<getHeader>></div>
</$set>
</td><td width="409.93pt" style=<<bodyText>>>
<$list filter='[prefix[$:/ResumeBuild/Additional.]]'>
<$reveal type='match' state='!!listonoff' text='1'>
<$set name='theKid' filter='[title{!!title}removeprefix[$:/ResumeBuild/]addprefix[$:/ResumeBuild/makeList/]]'><$list filter='[prefix<theKid>suffix{$:/Tools/TaskDetails/Task}]'>
<$macrocall $name='listMaker'/></$list></$set></$reveal>
</$list></td></tr>
</$reveal>
</$reveal>
</$set></$list>
\end
\define detailsPlacer()
<$reveal type='match' state='!!listonoff' text='1'><br>
<$set name='theKid' filter='[title{!!title}removeprefix[$:/ResumeBuild/]addprefix[$:/ResumeBuild/makeList/]]'><$list filter='[prefix<theKid>suffix{$:/Tools/TaskDetails/Task}]'>
<$macrocall $name='listMaker'/></$list></$set></$reveal>
<$set name='makeBulletState' filter='[title{!!title}addsuffix[/BulletsOnOff]]'><$reveal type='match' state=<<makeBulletState>> text='1'><br>
<ul style='margin-bottom:0;padding-left:25px;'>
<$list filter='[list[!!bullet_list]addprefix[.]addprefix{!!title}addsuffix[_B/]addsuffix{$:/Tools/TaskDetails/Task}]'>
<$reveal type='nomatch' state='!!text' text=''><li>{{!!text}}</li></$reveal>
</$list>
</ul>
</$reveal></$set>
\end
\define datesMake()
<!--START DATE--><$list filter='[list{!!title}addprefix[/]addprefix{!!title}addsuffix[/]addsuffix{$:/Tools/TaskDetails/Task}regexp:title[Start Date]]'><$reveal type='nomatch' state='!!show' text='1'><$macrocall $name="placeItem" style=<<entryTitleDiv>> class="dateStyle" filter="title{!!title}" html="span" location="month" post="/"/></$reveal></$list><$macrocall $name='placeItem' style=<<entryTitleDiv>> class='dateStyle' filter='regexp:title[Start Date]' html='span' location='text' post=''/><!--END OF START DATE--> - <!--END DATE STUFF--><$list filter='[list{!!title}addprefix[/]addprefix{!!title}addsuffix[/]addsuffix{$:/Tools/TaskDetails/Task}regexp:title[End Date]]'><$reveal type='nomatch' state='!!p' text='Present'><$reveal type='nomatch' state='!!show' text='1'><$macrocall $name="placeItem" style=<<entryTitleDiv>> class="dateStyle" filter="title{!!title}" html="span" location="month" post="/"/></$reveal><$macrocall $name='placeItem' style=<<entryTitleDiv>> class='dateStyle' filter='title{!!title}' html='span' location='text' post=''/></$reveal><$reveal type='match' state='!!p' text='Present'>Present</$reveal></$list><!--END OF END DATE STUFF-->
\end
\define sectionTitleTd()
text-align:$(aligntitleText)$; font-family:$(FontFamilytitleText)$; font-size:$(FontSizetitleText)$%; font-weight:$(fontWeighttitleText)$; text-transform:$(textTransformtitleText)$; font-style:$(fontStyletitleText)$;border-bottom-width:1px;border-bottom-style:$(BorderStylestitleText)$; border-bottom-color:$(borderColortitleText)$;
\end
\define sectionTitleDiv()
color:$(ColorstitleText)$; padding-bottom:$(PaddingIncrementstitleText)$;padding-top:$(PaddingToptitleText)$;
\end
\define entryTitleTd()
font-family:$(FontFamilyentryTitles)$; font-size:$(FontSizeentryTitles)$%; font-weight:$(fontWeightentryTitles)$; text-transform:$(textTransformentryTitles)$; font-style:$(fontStyleentryTitles)$;vertical-align:top;
\end
\define entryTitleDiv()
border-bottom-style:$(BorderStylesentryTitles)$; color:$(ColorsentryTitles)$; padding-bottom:$(PaddingIncrementsentryTitles)$;padding-top:$(PaddingTopentryTitles)$;
\end
\define bodyText()
text-align:$(alignbodyText)$; font-family:$(FontFamilybodyText)$; font-size:$(FontSizebodyText)$%; font-weight:$(fontWeightbodyText)$; text-transform:$(textTransformbodyText)$; font-style:$(fontStylebodyText)$;
\end
\define bodyDiv()
borderbottom-style:$(BorderStylesbodyText)$; color:$(ColorsbodyText)$; padding-bottom:$(PaddingIncrementsbodyText)$;
\end
<style>
ul {margin-top:0;padding-top:0;}
ul li {padding-bottom:0;margin-bottom:0;padding-top:0;margin-top:0}
table {border:none;padding:0;margin-bottom:0;}
table td {border:none;padding:0;margin-bottom:0;}
.dateStyle {display:inline;}
.degreeStyle {float:left;}
.occStyle {float:left;}
.contentBlockBody {border:none;}
</style>
<!--ENTRY TITLES-->
<$set name='alignentryTitles' value={{$:/ResStyles/entryTitles/align}}> <$set name='BorderStylesentryTitles' value={{$:/ResStyles/entryTitles/BorderStyles}}>
<$set name='ColorsentryTitles' value={{$:/ResStyles/entryTitles/Colors}}> <$set name='FontFamilyentryTitles' value={{$:/ResStyles/entryTitles/FontFamily}}> <$set name='FontSizeentryTitles' value={{$:/ResStyles/entryTitles/FontSize}}> <$set name='fontWeightentryTitles' value={{$:/ResStyles/entryTitles/fontWeight}}> <$set name='PaddingIncrementsentryTitles' value={{$:/ResStyles/entryTitles/PaddingIncrements}}>
<$set name='PaddingTopentryTitles' value={{$:/ResStyles/entryTitles/PaddingTop}}>
<$set name='textTransformentryTitles' value={{$:/ResStyles/entryTitles/textTransform}}> <$set name='fontStyleentryTitles' value={{$:/ResStyles/entryTitles/fontStyle}}>
<!--BODY TEXT-->
<$set name='alignbodyText' value={{$:/ResStyles/bodyText/align}}> <$set name='BorderStylesbodyText' value={{$:/ResStyles/bodyText/BorderStyles}}> <$set name='ColorsbodyText' value={{$:/ResStyles/bodyText/Colors}}> <$set name='FontFamilybodyText' value={{$:/ResStyles/bodyText/FontFamily}}> <$set name='FontSizebodyText' value={{$:/ResStyles/bodyText/FontSize}}> <$set name='fontWeightbodyText' value={{$:/ResStyles/bodyText/fontWeight}}> <$set name='PaddingIncrementsbodyText' value={{$:/ResStyles/bodyText/PaddingIncrements}}> <$set name='textTransformbodyText' value={{$:/ResStyles/bodyText/textTransform}}> <$set name='fontStylebodyText' value={{$:/ResStyles/bodyText/fontStyle}}>
<!--SECTION TITLE TEXT-->
<$set name='aligntitleText' value={{$:/ResStyles/titleText/align}}>
<$set name='PaddingToptitleText' value={{$:/ResStyles/titleText/PaddingTop}}>
<$set name='BorderStylestitleText' value={{$:/ResStyles/titleText/borderColor}}>
<$set name='borderColortitleText' value={{$:/ResStyles/titleText/borderColor}}>
<$set name='BorderStylestitleText' value={{$:/ResStyles/titleText/BorderStyles}}> <$set name='ColorstitleText' value={{$:/ResStyles/titleText/Colors}}> <$set name='FontFamilytitleText' value={{$:/ResStyles/titleText/FontFamily}}> <$set name='FontSizetitleText' value={{$:/ResStyles/titleText/FontSize}}> <$set name='fontWeighttitleText' value={{$:/ResStyles/titleText/fontWeight}}> <$set name='PaddingIncrementstitleText' value={{$:/ResStyles/titleText/PaddingIncrements}}> <$set name='textTransformtitleText' value={{$:/ResStyles/titleText/textTransform}}> <$set name='fontStyletitleText' value={{$:/ResStyles/titleText/fontStyle}}>
<$set name='setLayoutMacro' filter='[title[entryTitleOption]addsuffix{$:/ResStyles/Layout/1or2}]'>
<$set name='setSectionTitleM' filter='[title[sectionTitle]addsuffix{$:/ResStyles/Layout/1or2}]'>
<$set name="uiCtrl" filter="[title[$:/ResStyleTableW]!field:text[width:534.93pt;]]" value={{$:/Resume/UIon}} emptyValue={{$:/ResumeBuild/UIoff}}>
<<uiCtrl>>
</$set></$set>
</$set></$set></$set></$set></$set></$set></$set>
$:/ResumeBuild/Personal.1
$:/ResumeBuild/Professional.1
Recorded the problems reported by all testers, and followed up their solutions on a regular basis; tested the functions of the system
After completion of the testing, helped my leader search the prospectuses and rating reports on auto ABSs, calculated the default rates and understand the current state of the industry; prepared reports on the operating leasing industry.
Checked consistency of L/C applications and contracts in International Settlement Department; collected the company’s information, reviewed the applications for loans, and prepared credit reports in Corporate Credit Department.
Took part in the auditing of clients’ account books and accounting vouchers, and prepared the working paper and audit report.
Helped the class win the 4th place in the class building contest of CUFE; the class was awarded the Excellent Class of CUFE and Beijing Red Flag Youth League Branch in 2016.
Assisted in planning the Guinness Contest of the school, and took charge of the Rubik's cube game.
\define makeFirstResume()
<$action-setfield $tiddler="$(firstItem)$" $field="list" $value="$(childList)$"/>
<$action-setfield $tiddler="$(onOffItem)$" $value="on"/>
<$action-setfield $tiddler="$(resetListsgetContainer)$" $field="list" $value="$(firstItem)$"/>
\end
<style>
.del {fill:#fff;background-color:red;border:2px solid red;}
.del:hover {fill:red;background-color:#fff;border:2px solid red;}
.ques {fill:#fff;background-color:grey;border:2px solid grey;}
.ques:hover {fill:grey;background-color:#fff;border:2px solid grey;}
</style>
<$button class='del' tooltip="Start the whole resume again">
<$list filter='[tag[ResumeKey]]'>
<$set name="firstItem" value={{!!text}}>
<$set name="childList" filter="[list[!!child_list]]">
<$set name='resetListsgetContainer' value={{!!title}}>
<$set name="onOffItem" filter="[title<firstItem>addsuffix[/onOff]]">
<<makeFirstResume>>
</$set>
</$set>
</$set>
</$set>
</$list>{{$:/core/images/erase}}
<$action-setfield $tiddler='$:/ResumeBuild/Current' $value='$:/ResumeBuild/Personal.#'/>
<$list filter='[prefix[$:/Tools/TaskDetails/]]'>
<$action-setfield $tiddler={{!!title}} $value=''/>
</$list>
</$button>
<$button class='ques' tooltip="Open help document for this tool."><$action-navigate $to="ResumeBuilder Help"/>{{$:/core/images/help}}</$button>
<style>
.red {background-color:red;}
</style>
<$list filter='[prefix[$:/ResStyles/Tools/]!suffix[/preSet]]'>
<$set name='theOptions' value={{!!title}}>
<$set name='this' filter='[title{!!title}removeprefix[$:/ResStyles/Tools/]]'>
<$button set='$:/ResStyles/revealState.1' setTo={{!!title}}><b style='font-size:150%;'><<this>></b></$button>
<br>
<$reveal type='match' state='$:/ResStyles/revealState.1' text={{!!title}}>
<$button set='$:/ResStyles/revealState.2' setTo='0' selectedClass='red'>Var view</$button><$button set='$:/ResStyles/revealState.2' setTo='1' selectedClass='red'>Ctrl view</$button><br>
<$button set='$:/ResStyles/revealState.3' setTo='makeCondition' selectedClass='red'>makeCondition</$button><$button set='$:/ResStyles/revealState.3' setTo='nameVar' selectedClass='red'>nameVar</$button><br>
<$list filter='[prefix[$:/ResumeStyles/]removeprefix[$:/ResumeStyles/]]'>
<$set name='theHolders' filter='[title{!!title}addprefix[$:/ResStyles/]addsuffix[/]addsuffix<this>]'>
<$reveal type='match' state='$:/ResStyles/revealState.2' text='1'>
<$macrocall $name='st' t= 'Contains list of options: <<theOptions>>'/>
<h2>''{{!!title}}''</h2>
<<theHolders>><br>
<$select tiddler=<<theHolders>>>
<$list filter='[list<theOptions>]'>
<option>{{!!title}}</option>
</$list>
</$select>
</$reveal>
<div style='font-family:courier;'>
<$set name="nameVar" filter="[title{!!title}addprefix<this>]">
<$set name="makeCondition" filter="[title<nameVar>addprefix[<$set name=']addsuffix[' value={{]addsuffix<theHolders>addsuffix[}}>]]">
<$reveal type='match' state='$:/ResStyles/revealState.3' text='nameVar'>
<<nameVar>>
</$reveal>
<$reveal type='match' state='$:/ResStyles/revealState.3' text='makeCondition'>
<<makeCondition>>
</$reveal>
</$set></$set>
</div>
<$reveal type='match' state='$:/ResStyles/revealState.2' text='1'>
<hr>
</$reveal>
</$set></$list></$reveal></$set></$set></$list></small>
<$edit-text class='tc-edit-texteditor' field='text'/>
<$transclude mode='block'/>
!!Alert when item missing
`<span style='color:red;'><$list filter='[title{!!title}removesuffix{$:/Tools/TaskDetails/Task}removesuffix[/]removeprefix<theContain>removeprefix[/]]'></$list></span>`
\define select(label,target,field,source)
$label$: <$select tiddler="$target$" field="$field$">
<$list filter='[list[$source$]]'>
<option>{{!!title}}</option>
</$list>
</$select>
\end
\define checkBox(label,target,field,v1,v2)
$label$: <$checkbox tiddler="$target$" field="$field$" checked="$v1$" unchecked="$v2$"> {{$target$!!$field$}} </$checkbox>
\end
<$macrocall $name='tabs' tabsList='[tag[$:/ResumeBuild/Tools]]' default='$:/ResumeStyles/bigName' state="$:/selectTab1"/>
<<t "Body text">>
<<st Fonts>>
<<select Font $:/ResumeStyles/bodyText css.font-family $:/Tools/FontFamily>>
<<select Font-size $:/ResumeStyles/bodyText css.font-size $:/Tools/FontSize>>
<<select "Spacing underneath" $:/ResumeStyles/bodyText padding-bottom $:/Tools/PaddingIncrements>>
<<checkBox "Case type" $:/ResumeStyles/bodyText css.text-transform uppercase none>>
<<checkBox "Font style" $:/ResumeStyles/bodyText font-style italic normal>>
<<select "Font weight" $:/ResumeStyles/bodyText font-weight $:/Tools/fontWeight>>
<<st "Border/ Line">>
<<select Style $:/ResumeStyles/bodyText border-bottom-style $:/Tools/BorderStyles>>
<<select Width $:/ResumeStyles/bodyText border-bottom-width $:/Tools/PaddingIncrements>>
<<select Color $:/ResumeStyles/bodyText border-color $:/Tools/Colors>>
<<select Color $:/ResumeStyles/bodyText text-align $:/Tools/align>>
<$list filter='[title[$:/ResumeStyles/details]]'>
<<t Subtitle details>>
<<st Fonts>>
<<select Font $:/ResumeStyles/details font-family $:/Tools/FontFamily>>
<<select Font-size $:/ResumeStyles/details css.font-size $:/Tools/FontSize>>
<<select "Spacing underneath" $:/ResumeStyles/details padding-bottom $:/Tools/PaddingIncrements>>
<<checkBox "Case type" $:/ResumeStyles/details css.text-transform uppercase none>>
<<checkBox "Font style" $:/ResumeStyles/details font-style italic normal>>
<<select "Font weight" $:/ResumeStyles/details font-weight $:/Tools/fontWeight>>
<<st "Border/ Line">>
<<select Style $:/ResumeStyles/details border-bottom-style $:/Tools/BorderStyles>>
<<select Width $:/ResumeStyles/details border-bottom-width $:/Tools/PaddingIncrements>>
<<select Color $:/ResumeStyles/details border-color $:/Tools/Colors>>
<<t "Entry titles">>
<<st Fonts>>
<<select Font $:/ResumeStyles/entryTitles css.font-family $:/Tools/FontFamily>>
<<select Font-size $:/ResumeStyles/entryTitles css.font-size $:/Tools/FontSize>>
<<select "Spacing underneath" $:/ResumeStyles/entryTitles padding-bottom $:/Tools/PaddingIncrements>>
<<checkBox "Case type" $:/ResumeStyles/entryTitles css.text-transform uppercase none>>
<<checkBox "Font style" $:/ResumeStyles/entryTitles font-style italic normal>>
<<select "Font weight" $:/ResumeStyles/entryTitles font-weight $:/Tools/fontWeight>>
<<st "Border/ Line">>
<<select Style $:/ResumeStyles/entryTitles border-bottom-style $:/Tools/BorderStyles>>
<<select Width $:/ResumeStyles/entryTitles border-bottom-width $:/Tools/PaddingIncrements>>
<<select Color $:/ResumeStyles/entryTitles border-color $:/Tools/Colors>>
<<select Color $:/ResumeStyles/entryTitles text-align $:/Tools/align>>
<<t "Title text">>
<<st Fonts>>
<<select Font $:/ResumeStyles/titleText css.font-family $:/Tools/FontFamily>>
<<select Font-size $:/ResumeStyles/titleText css.font-size $:/Tools/FontSize>>
<<select "Spacing underneath" $:/ResumeStyles/titleText padding-bottom $:/Tools/PaddingIncrements>>
<<checkBox "Case type" $:/ResumeStyles/titleText css.text-transform uppercase none>>
<<checkBox "Font style" $:/ResumeStyles/titleText font-style italic normal>>
<<select "Font weight" $:/ResumeStyles/titleText font-weight $:/Tools/fontWeight>>
<<st "Border/ Line">>
<<select Style $:/ResumeStyles/titleText border-bottom-style $:/Tools/BorderStyles>>
<<select Width $:/ResumeStyles/titleText border-bottom-width $:/Tools/PaddingIncrements>>
<<select Color $:/ResumeStyles/titleText border-color $:/Tools/Colors>>
<<select Color $:/ResumeStyles/titleText text-align $:/Tools/align>>
<$list filter='[list[$:/ResumeBuild/Output!!list]]'>
<$transclude mode='block'/>
</$list>
{{$:/VIPQholder/pre}}
<$view tiddler="$:/ResumeBuild/Output" format="htmlwikified"/>
{{$:/VIPQholder/post}}
<table style={{$:/ResStyleTableW}}><$list filter='[list[$:/ResumeBuild]regexp:title[Additional]]'>
<tr>
<$macrocall $name=<<setSectionTitleM>>/>
</tr>
<<singularTd>></$list></table>
<table style={{$:/ResStyleTableW}}><$list filter='[list[$:/ResumeBuild]regexp:title[Education]]'><tr><$macrocall $name=<<setSectionTitleM>>/></tr><$list filter='[list[!!list]]'><$set name='hideThisIf' filter='[title{!!title}addsuffix[/onOff]]'><$reveal type='nomatch' state=<<hideThisIf>> text='off'><$set name="ifDeptThenComma" filter="[title{!!title}addsuffix[/Degree Type/]addsuffix{$:/Tools/TaskDetails/Task}!field:text[]]" value=", " emptyValue=" "><$macrocall $name=<<setLayoutMacro>> where="Institution" occ="Degree Type" dept="Subject" p=<<ifDeptThenComma>>/></$set></$reveal></$set></$list></$list></table>
<table style={{$:/ResStyleTableW}}><$list filter='[list[$:/ResumeBuild]regexp:title[Extracurricular]]'><tr><$macrocall $name=<<setSectionTitleM>>/></tr><$list filter='[list[!!list]]'><$set name='hideThisIf' filter='[title{!!title}addsuffix[/onOff]]'><$reveal type='nomatch' state=<<hideThisIf>> text='off'><$set name="ifDeptThenComma" filter="[title{!!title}addsuffix[/Department/]addsuffix{$:/Tools/TaskDetails/Task}!field:text[]]" value=", " emptyValue=" "><$macrocall $name=<<setLayoutMacro>> where="Organization" occ="Role" dept="Department" p=<<ifDeptThenComma>>/></$set></$reveal></$set></$list></$list></table>
\define theDetails()
font-size:$(FontSizedetails)$%;
text-align:$(aligndetails)$;
font-family:$(FontFamilydetails)$;
font-style:$(fontStyledetails)$;
font-weight:$(fontWeightdetails)$;
text-transform:$(textTransformdetails)$;
padding-bottom:$(PaddingIncrementsdetails)$;
border-bottom-width:1px;border-bottom-style:$(BorderStylesdetails)$; border-bottom-color:$(borderColordetails)$;
\end
\define titleRow()
font-size:$(FontSizebigName)$%;
text-align:$(alignbigName)$;
width:$(theWidth)$;
font-style:$(fontStylebigName)$;
font-family:$(FontFamilybigName)$;
font-weight:$(fontWeightbigName)$;
text-transform:$(textTransformbigName)$;
padding-bottom:$(PaddingIncrementsbigName)$;
border-bottom-width:1px;border-bottom-style:$(BorderStylesbigName)$; border-bottom-color:$(borderColorbigName)$;
\end
\define titleDiv()
color:$(ColorsbigName)$;
\end
\define aDetail(t)
<$list filter="[suffix{$:/Tools/TaskDetails/Task}regexp:title[$t$]]">{{!!text}} </$list>
\end
\define detailsDiv()
color:$(Colorsdetails)$;padding-top:$(PaddingTopdetails)$;
\end
<!--BIG NAME-->
<$set name='alignbigName' value={{$:/ResStyles/bigName/align}}>
<$set name='FontSizebigName' value={{$:/ResStyles/bigName/FontSize}}>
<$set name='BorderStylesbigName' value={{$:/ResStyles/bigName/BorderStyles}}>
<$set name='borderColorbigName' value={{$:/ResStyles/bigName/borderColor}}>
<$set name='fontStylebigName' value={{$:/ResStyles/bigName/fontStyle}}>
<$set name='PaddingIncrementsbigName' value={{$:/ResStyles/bigName/PaddingIncrements}}>
<$set name='textTransformbigName' value={{$:/ResStyles/bigName/textTransform}}>
<$set name='fontWeightbigName' value={{$:/ResStyles/bigName/fontWeight}}>
<$set name='FontFamilybigName' value={{$:/ResStyles/bigName/FontFamily}}>
<$set name='ColorsbigName' value={{$:/ResStyles/bigName/Colors}}>
<!--DETAILS-->
<$set name='fontStyledetails' value={{$:/ResStyles/details/fontStyle}}>
<$set name='PaddingIncrementsdetails' value={{$:/ResStyles/details/PaddingIncrements}}>
<$set name='BorderStylesdetails' value={{$:/ResStyles/details/BorderStyles}}>
<$set name='borderColordetails' value={{$:/ResStyles/details/borderColor}}>
<$set name='PaddingTopdetails' value={{$:/ResStyles/details/PaddingTop}}>
<$set name='textTransformdetails' value={{$:/ResStyles/details/textTransform}}>
<$set name='fontWeightdetails' value={{$:/ResStyles/details/fontWeight}}>
<$set name='aligndetails' value={{$:/ResStyles/details/align}}>
<$set name='FontSizedetails' value={{$:/ResStyles/details/FontSize}}>
<$set name='FontFamilydetails' value={{$:/ResStyles/details/FontFamily}}>
<$set name='Colorsdetails' value={{$:/ResStyles/details/Colors}}>
<$set name="addressLayout" filter="[title[$:/ResBuild/AddressStyle/state]field:text[1]]" value="""<<aDetail Email>> | <<aDetail "Address line 1">> <<aDetail City>> <<aDetail Country>> <<aDetail "ZIP Code">> | <<aDetail Telephone>>""" emptyValue="""
<<aDetail "Address line 1">><br>
<<aDetail City>>, <<aDetail "ZIP Code">><br>
<<aDetail Email>><br>
<<aDetail Telephone>>""">
<table style={{$:/ResStyleTableW}}><tr><td style=<<titleRow>>><div style=<<titleDiv>>><$list filter="[suffix{$:/Tools/TaskDetails/Task}regexp:title[name]!sort[]]"> {{!!text}}</$list></div></td></tr><tr><td style=<<theDetails>>><div style=<<detailsDiv>>><<addressLayout>></div></td></tr></table></$set>
<table style={{$:/ResStyleTableW}}><$list filter='[list[$:/ResumeBuild]regexp:title[Professional]]'><tr><$macrocall $name=<<setSectionTitleM>>/></tr><$list filter='[list[!!list]]'><$set name='hideThisIf' filter='[title{!!title}addsuffix[/onOff]]'><$reveal type='nomatch' state=<<hideThisIf>> text='off'><$set name="ifDeptThenComma" filter="[title{!!title}addsuffix[/Department/]addsuffix{$:/Tools/TaskDetails/Task}!field:text[]]" value=", " emptyValue=" "><$macrocall $name=<<setLayoutMacro>> where="Organization" occ="Job Title" dept="Department" p=<<ifDeptThenComma>>/></$set></$reveal></$set></$list></$list></table>
<$reveal type='match' state='$:/RunThroughs/Admin/state' text=''>
<$button set='$:/RunThroughs/Admin/state' setTo='1'>~RunThrough Admin</$button>
</$reveal><$reveal type='match' state='$:/RunThroughs/Admin/state' text='1'>
<$button set='$:/RunThroughs/Admin/state' setTo=''>~RunThrough Admin off</$button>
</$reveal>
background-color:acqua;color:white;fill:white;
background-color:#fff;color:black;
background-color:black;color:white;fill:white;
background-color:blue;color:white;fill:white;
background-color:#fff;color:black;
background-color:darkblue;color:white;fill:white;
background-color:#fff;color:black;
background-color:fuschia;color:white;fill:white;
background-color:green;color:white;fill:white;
background-color:#fff;color:black;
background-color:magenta;color:white;fill:white;
background-color:maroon;color:white;fill:white;
background-color:olive;color:black;fill:black;
background-color:#fff;color:black;
background-color:#fff;color:black;
background-color:#fff;color:black;
background-color:#fff;color:black;
background-color:#fff;color:black;
Hello XXXX!
Thank you for working with me on your Statement of Purpose (SOP) for your application to the Hotel Administration program at XXXX University. As you know, all graduate students must write this SOP (in addition to the essay required by the Hotel Administration essay), with the prompt addressing:
1. Your reasons for undertaking graduate work
2. Your academic interests
3. The relationship between 1&2 and your undergraduate study
4. The relationship between 1&2 about your professional goals.
This is a very standard SOP prompt, therefore, in terms of structure, I recommend the following outline created from the questionnaire you provided (below). To create this outline, I used the responses from your VIP questionnaire and the SOP prompt. You will see that I have made suggestions for each paragraph with sentences to get you started. Where appropriate, I have inserted text from your questionnaire that you can use.
Please draft a first version of this essay based on this outline; it will in no way be perfect, that is okay! Let’s just start by getting your first 5-6 paragraphs on paper.
Would it be possible to tell me what your undergraduate major is?
Please send me a Zhishiq text if you have any questions about content or requests.
All the best,
Here you have identified a problem but not offered a solution to the client: give clear advice on how they can make this better if you think it is not strong enough.
Prune out weak sentences that communicate little about the client.
Grammar errors: inconsistent double spacing.
Extant examples of poor grammar/Chinglish/stock phrases/flourishes.
Give better advice to client.
\define runThroughViewer(n)
<$set name='thisOne' value={{!!title}}>
<table style='border:none;'><tr><td style='width:40%;border:none;vertical-align:top;'>
<$button class='toggle' selectedClass='toggled' set='$:/Res/runThroughViewer.$n$/state' setTo=''>{{$:/core/images/edit-button}}</$button> <$button class='toggle' selectedClass='toggled' set='$:/Res/runThroughViewer.$n$/state' setTo='1'>{{$:/core/images/video}}</$button>
<$reveal type='match' state='$:/Res/runThroughViewer.$n$/state' text='1'>
<$transclude tiddler="$:/RunThroughs/RunThrough.$n$/Tags" mode='block'/>
</$reveal>
<$reveal type='match' state='$:/Res/runThroughViewer.$n$/state' text=''>
<$edit-text tiddler="$:/RunThroughs/RunThrough.$n$/Tags" class="tc-edit-texteditor"/>
</$reveal>
<$list filter='[tag[$:/RunThroughs/RunThrough.$n$]]'>
<<makeT {{!!color}} {{!!label}}>>
</$list>
</td><td style='width:60%;border:none;vertical-align:top;'>
<$reveal type='match' state='$:/Res/runThroughViewer.$n$/state' text='1'>
<$set name="ifBefore" filter="[title[$:/Res/runThroughViewer.$n$/state]has[beforeafter]]" value="""
<$reveal type='match' state='$:/Res/runThroughViewer.$n$/state!!beforeafter' text='after'><$button class="toggle" selectedClass="" set="$:/Res/runThroughViewer.$n$/state!!beforeafter" setTo="before">Before {{$:/core/images/chevron-left}}</$button></$reveal><$reveal type='match' state='$:/Res/runThroughViewer.$n$/state!!beforeafter' text='before'><$button class="toggle" selectedClass="" set="$:/Res/runThroughViewer.$n$/state!!beforeafter" setTo="after">{{$:/core/images/chevron-right}} After</$button></$reveal><br>
<center><<st {{$:/Res/runThroughViewer.$n$/state!!beforeafter}}>></center>
""" emptyValue="<span></span>">
<<ifBefore>>
</$set>
<small>
<$set name='beforeAfter' filter='[title[$:/Res/runThroughViewer.$n$/state]field:beforeafter[after]]' value="$:/RunThroughs/RunThrough.$n$/AfterText" emptyValue="$:/RunThroughs/RunThrough.$n$/Text">
<div style='background: #fff;
-webkit-box-shadow: 0 15px 10px #777;
-moz-box-shadow: 0 15px 10px #777;
box-shadow: 0 15px 10px #777;padding:10px;margin-left:5px;'>
<$transclude tiddler=<<beforeAfter>> mode='block'/>
</div>
</$set>
</small>
</$reveal>
<$reveal type='match' state='$:/Res/runThroughViewer.$n$/state' text=''>
<div style='width:100%;background: #fff;
-webkit-box-shadow: 0 15px 10px #777;
-moz-box-shadow: 0 15px 10px #777;
box-shadow: 0 15px 10px #777;padding:10px;margin-left:5px;'>
<$set name="ifBefore" filter="[title[$:/Res/runThroughViewer.$n$/state]has[beforeafter]]" value="""
<$reveal type='match' state='$:/Res/runThroughViewer.$n$/state!!beforeafter' text='after'><$button class="toggle" selectedClass="" set="$:/Res/runThroughViewer.$n$/state!!beforeafter" setTo="before">Before {{$:/core/images/chevron-left}}</$button></$reveal><$reveal type='match' state='$:/Res/runThroughViewer.$n$/state!!beforeafter' text='before'><$button class="toggle" selectedClass="" set="$:/Res/runThroughViewer.$n$/state!!beforeafter" setTo="after">{{$:/core/images/chevron-right}} After</$button></$reveal><br>
<center><<st {{$:/Res/runThroughViewer.$n$/state!!beforeafter}}>></center>
""" emptyValue="<span></span>">
<<ifBefore>>
</$set>
<$set name='beforeAfterEditor' filter='[title[$:/Res/runThroughViewer.$n$/state]field:beforeafter[after]]' value="$:/RunThroughs/RunThrough.$n$/AfterText" emptyValue="$:/RunThroughs/RunThrough.$n$/Text">
<$edit-text tiddler=<<beforeAfterEditor>> class="tc-edit-texteditor"/>
</$set>
</$reveal>
</div>
</td></tr></table>
<$reveal type='match' state='$:/RunThroughs/Admin/state' text='1'>
<$edit-text field='n' placeholder='unique ID'/>
<br>
<$list filter="[title[$:/Res/runThroughViewer.$n$/state]]"><$fieldmangler><$button message="tm-remove-field" param="beforeafter">Remove before/after</$button></$fieldmangler></$list><$button>Add before/after<$action-setfield $tiddler="$:/Res/runThroughViewer.$n$/state" $field="beforeafter" $value="after"/>
</$button>
</$reveal>
</$set>
\end
\define redact(t)
<span style='background-color:black;color:black;'>$t$</span>
\end
\define comMent(c,l)
<div style="display:inline;"><$set name="makeComment" filter="[title[$c$]addprefix[$:/_RunThroughs/Comment]addsuffix[/state]]">
<$button style="white-space:normal;display:inline;text-align:left;" class="tc-btn-invisible tc-tiddlylink" popup=<<makeComment>>>$l$</$button><$reveal type='popup' state=<<makeComment>>><div style="max-width:275px;background-color:#FFFFE0;padding:10px 5px 5px 10px;border-radius:4px;font-family: 'Courier New', Courier, 'Lucida Sans Typewriter', 'Lucida Typewriter', monospace;" class="boxCorner">$c$</div></$reveal></$set></div>
\end
<<makeT yellow "" "Doubled up information" "Testimony as to length of time knew the student. Group together; prune out the least informative (or run them together) and state once, probably at beginning.">>
<<makeT blue white "Problematic edits" "(i) Order of 'performance' sentence should be reversed. (ii) '...in advance' of what? (iii) When do we capitalize names in English?">>
<<makeT green white "Repetition" "'Preview a chapter' of what?">>
<<makeT red white "Serious error" "These are completely different institutions">>
<<makeT pink black "Vague terms and allusions unquestioned" "<b>This ranks equally with all the other issues combined since it ignores the fundamental requirements of the L2 service</b>. Other notes: (i) What is a 'medium-scale event' and why hasn't the advisor asked questions to expand in a relevant way or clarify the term? (ii) Why not ask for an example in some of these other cases?">>
Dear Admissions Officer,
I am pleased to have the opportunity to recommend Miss <<redact "XXXX XXXXX">> for admission to your graduate programme. As an Associate Professor at <<coLor red "Nanjing Normal University">>, I have come to know Miss <<redact XXXX>> since <<coLor yellow "she entered our school three years ago">>. She is an excellent student and <<coLor green demonstrates>> both passion and <<coLor green "talent">> in music.
I have taught Miss <<redact XXXX>> Vocal Music <<coLor yellow "for six semesters">>. All of my students are graded in an entrance exam at the beginning of their first semester and placed in different-sized classes in accordance with their skills. Miss <<redact XXXX>> was among the few students to receive one-to-one training due to her <<coLor green excellent>> performance. During the time I have taught her, she has consistently <<coLor green demonstrated>> her learning ability. She quickly grasps <<coLor pink "the key points of the vocal techniques and methods">> taught in class and practices diligently after school to master them. When required to <<coLor green "preview a chapter">> or <<coLor pink "practice a skill">> <<coLor blue "in advance">>, Miss <<redact XXXX>> always <<coLor blue "completes the task efficiently and timely">>. While able to advance <<coLor pink "her own thoughts about how to achieve the best results for her singing">>, she <<coLor green demonstrates>> an open mind and pays heed to my suggestions. In summary, Miss <<redact XXXX>> is musically <<coLor pink talented>>, <<coLor green demonstrating>> <<coLor green excellent>> intonation and singing ability. Her perceptiveness and consistent practice have contributed to her <<coLor pink "noticeable progress">> in vocal music <<coLor yellow "during the past three years">>.
Miss <<redact XXXX>> has also served as an <<coLor green excellent>> assistant for the teachers at <<coLor red "Nanjing University">>. She has planned and organized concerts since her freshman year, is adept at preparing a <<coLor pink "medium-scale event">> and is able to <<coLor pink "resolve emergencies">> using <<coLor pink "a variety of methods">>. <<coLor blue "In addition to practical skills, she had given brilliant performances during these events">>, increasing <<pink "her stage experience">>.
<<coLor yellow "During the past three years">>, Miss <<redact XXXX>> has not only maintained a top academic ranking, she has also received high scores in comprehensive appraisals evaluating her performance in <<coLor pink "other aspects of university life, including extracurricular activities">>. Miss <<redact XXXX>> is a well-rounded student: able to apply herself diligently to her school work while fully partaking in social aspects of our school. She is cheerful and helpful, making her a very popular student.
I have no doubt that this talented young woman will be successful in her postgraduate studies at your university. I fully support her application and recommend her to you without hesitation. Please feel free to contact me through e-mail if you have any further questions.
Best regards,
<<coLor blue "SHEN">><<redact Qi>>,<br> Professor<br> Nanjing Normal University<br> No. 122 Ninghai Road, Gulou District, Nanjing, 210024, China<br> Tel: 86-<<redact XXXXXXXX>> Email:
In the summer of 2013, my father’s company underwent a crisis. Fifty million dollars was poorly invested in <<comMent "I think a little more detail on why the purchase was made; what was the thinking behind the decision. The reader is also, naturally, curious about how the situation resolved itself, so this is something you may wish to consider addressing briefly." "another enterprise">>, which ended up crippling the business. The company, our family and employees struggled to survive as a result. This catastrophe occurred because the CFO failed to disclose the appropriate financial information, both internally and to the target business. Experiencing this first-hand, I gained an acute sense of how important financial information is to a company and its stakeholders. Consequently, I established the career goal of <<comMent "I would recommend that you elaborate a little more about the corporate due diligence and risk management angles suggested by this serious crisis for your father's company and how this has affected your thinking on your career. That will allow us to develop this sentence further." "becoming a financial manager.">>
After taking several accounting courses and participating in various relevant projects during my major in financial management, I gained foundational understanding of how to record corporate finances clearly and efficiently. Eager to learn more, in the summer of 2016, with the supportive recommendation of my cost management professor, I secured an internship at <<comMent "I am making the assumption that this is the name of the firm rather than a reference to its location in Tianhe district. Please confirm." "Tianhe Accounting">>. As a consultant for <<comMent "Was this the national government or provincial government? Please let me know the specifics. :)" "the government">>, Tianhe was asked to evaluate an economic stimulus initiative aimed at boosting tourism in a town producing Huangjiu, <<comMent "I am making a guess as to the nature of this tourism project having checked the meaning of Huangjiu. In the original it gave the impression that Huangjiu is a place and I have made this change on that basis. Please confirm!" "a yellow wine">> that is well-known in China. In the process of preparing a feasibility report, I analyzed client requirements, estimated potential costs and conducted cash flow projections. I acted as decision-maker on this project, providing professional and reliable <<comMent "Could you be more specific about the financial information you obtained and how you verified its accuracy? Perhaps a little more detail of the due diligence process you undertook in order to back up your reports conclusions would illuminate the experience for the reader. :)" "financial information">>. I recognized my limitations, however, and—given the increased understanding of real-world business I accrued—I further confirmed <<comMent "I'm excluding 'My dreams and goals thus compel me to seek further education.' because it is somewhat commonplace to make assertions such as this in these documents, and most importantly: It is self-evident from the nature of the document and the act of making the application! You're not telling the reader anything new! :)" "my aim">> of growing my financial advising skills.
The <<redact XXXX>> <<comMent "I have excluded 'Since universities in the United States have the most advanced financial knowledge and latest information, I am eager to pursue a master degree of accounting in the USA.' because it is somewhat general and doesn't add to YOUR case for admission. It's simply a general observation about the status of American schools. It's not helpful to include, so I've excluded in the interests of making your document more streamlined." "program">> at <<redact XXXX>> Business School is an ideal fit for my developmental objectives and existing skillset. Courses such as Business Analysis Using Financial Statements and Financial Reporting from the CFO’s Perspective would facilitate progression towards my career goals. My initial objective of joining a Big Four firm would be supported by <<redact XXXX>>'s strong reputation in the accounting industry and the competitiveness of its program, which are attested to by the <<redact XXXX>> Business School's high graduate employment rate. I <<comMent "I have excluded 'Later, pursuing an MBA degree will enhance my competitiveness in the workplace;' because it is certainly true that MBAs increase your competitiveness. The reader will know this too. It's quite a general assertion to make about a possible track you make take to develop your career quite far in the future and as such it doesn't enhance your application to this school now! Principally, they want to know why you, why them, why now!" "subsequently plan">> to return to China and, drawing on the professional experience and skills I acquire, obtain a financial management role in a publicly-listed company, facilitating sound strategic decision-making from within.
''Please switch to after mode using the button to the right to see comments the reviewer determined should be added.''
<<makeT yellow black "Avoid tautologies" "(First one I identified might be a bit arguable!)">>
<<makeT red white "Watch out for cumbersome phrasing">>
<<makeT green white "Avoid simplistic time-based signposting" "It's repeating information whose place is in the resume; it's not central to the argument (and makes little difference to the narrative which can be arranged on the basis of points in the //case for admission//, not chronology!">>
<<makeT darkblue white "A rare example of an experience more than 3 years old (and relating to a family member, not the candidate) that __is__ suitable for inclusion in one of these documents!">>
<<makeT orange black "Repeated ideas/ phrasing">>
<<makeT purple white "Please look things up!" "A really quick Google is such a slick, snappy way of impressing your client and asking intelligent questions.">>
<<makeT pink black "Hackneyed material">>
<<makeT aqua black "Redundancies">>
<<makeT black white "A personal bugbear but make __conditional__ to avoid sounding presumptuous" "Surely?!">>
<<coLor green "In the summer of 2013">>, <<coLor darkblue "my father’s company">> experienced a<<coLor yellow "catastrophic crisis">>. Fifty million dollars was poorly <<coLor red "invested in purchasing">> another enterprise, which ended up crippling the business. The company, including <<coLor orange "all its employees and my father">>, had to struggle to survive. <<coLor red "This all took place">> because the CFO failed to disclose the appropriate financial information, both internally and to the target business. As a victim of that tragedy, I realized for the first time how important financial information is to <<coLor orange "a company and its employees">>. <<coLor red "From that moment, I immediately established">> the career goal of becoming a financial manager.
<<coLor green "In the summer of 2014, I began to pursue my major in financial management.">> After taking several accounting courses and participating in various relevant projects, I have gained a foundational understanding of how to record the financial information of a company clearly and efficiently, but I am eager to learn more. In light of this, <<coLor green "in the summer of 2016">>, through the supportive recommendation of my cost management professor, I secured an internship at <<coLor red "the Tianhe accounting firm">>. <<coLor red "One project I participated in there was particularly inspirational.">> <<coLor red "As a government consultant">>, Tianhe was asked to evaluate <<coLor purple "a Huangjiu Town project">> aimed at attracting tourists to boost the <<coLor yellow "local">> economy. In the process of writing the project’s feasibility <<coLor red "study report">>, I analyzed <<coLor red "the real demands">> of the clients and estimated the potential costs and future cash flow. I adopted the role of decision-maker, providing professional and reliable financial information. However, while working with my supervisors, I recognized my limitations in offering such advisory services and analyses. With an increased understanding of <<coLor red "real-world business demand">>, <<coLor red "I would increase my ability">> to provide reliable financial information and advice. <<coLor pink "My dreams and goals">> thus compel me to seek further education. Since universities in the United States have <<coLor pink "the most advanced financial knowledge and latest information">>, I am eager to pursue a master degree of accounting in the USA.
<<coLor green "During this past summer of 2017">>, <<coLor aqua "I narrowed my search">> for <<coLor red "the site of my next educational experience">> and found that the <<redact XXXX>> program in <<redact XXXX>> business school at <<redact XXXXXXX>> University is <<coLor pink "an ideal fit">> for me. Business Analysis Using Financial Statements, and Financial Reporting From the CFO’s Perspective <<coLor black "will">> <<coLor red "complete my knowledge base">> thus <<coLor orange "facilitating">> achievement of my career goal. Also, Olin has a <<coLor orange "strong reputation among accounting firms and a high graduate employment rate">>, which emphasizes the competitiveness of <<redact XXXX>>'s program. Because I initially aim to join one of the <<coLor purple "'big four'">> accounting firms in the USA, I regard <<redact XXXX>>'s <<redact XXXX>> <<coLor orange "program reputation and employment rates">> as a perfect <<coLor red "platform for my career path">>. Drawing upon the professional experience and skills acquired in your graduate <<coLor orange "program">> and <<coLor red "ensuing initial employment">>, I subsequently plan to return to China to obtain a management position in the financial department of a public company. Later, <<coLor aqua "pursuing an MBA degree will enhance my competitiveness in the workplace">> <<coLor red "; and ultimately,">> I aspire to be the CFO of a company and <<coLor yellow "help facilitate">> strategic decisions from within.
<<st "Highlighting text w/ directions">>
<<makeT blue white "Issue 1" "
Let’s get more specific about this:
<blockquote>As a team leader, I conducted an undergraduate innovation training program</blockquote>
It comes up in a lot of statements and is certainly indicative of an admirable, competitive pursuit; it is certainly commendable. However, I know the admissions officer will have seen this phrasing countless times. Tell me what this program meant and how you got involved and why you were a team leader, and how many were in your team. It would be most productive if you told me in the form of prose that you would like to fit into the document.
">>
<<makeT grey white "Issue 2" "
<blockquote>In order to better accomplish the goal of studying abroad, I have adhered to make study English and practice expression a daily work.</blockquote>
I think this is a given. And better attested to by your scores. Anyone can say ‘I tried hard at learning English.’ The more powerful and relevant approach is to figure out how you can demonstrate; in addition, an important way in which you can convey your suitability is by keeping your essay ‘tight’.
">>
<<makeT aqua black "Issue 3" "I’ve excluded...
<blockquote>After returning to school, we five companions all feel like seizing the time to sort out the notes and slides, and the succeeding sharing meeting for school students received good feedback.</blockquote>
Simply because it is not totally clear how this relates to the case for admission to the intern program. Can you be clearer about the value of this activity as it relates to the audience for your application at the WHO?
">>
<<makeT red white "Issue 4" "
I have edited...
<blockquote>I particularly like the benefits that can bring to the world’s health undertakings through communication and exchange among countries and regions.</blockquote>
...as follows:
<blockquote>International communication and exchange promoted by the WHO are vital in the field of public health.</blockquote>
However, to include this, please try to expand in a more specific and personal fashion on why you find this aspect of the WHO's operations appealing - is there anything derived from your experience you can relate to this function?
">>
<<makeT darkblue white "Issue 5" "I would suggest that you’d make a stronger impression if you detailed a specific policy initiative that he raised. This is slightly more like a slogan and therefore orientated around ‘selling’ the initiatives under discussion to the public, rather than the specifics of the policy-making under discussion. I’d suggest, in this context, it would be more valuable for you to focus on the latter.">>
<<makeT purple white "Issue 6" "
<blockquote>NPO/IGO like the World Health Organization</blockquote>
I don't think you need to relate the classification of the organization back to individuals who work for that organization. Better to express more specifically what advantages you think the WHO's non-governmental characteristics offer in the delivery of public health initiatives.">>
On 18 August, the respected Director-General of World Health Organization, Dr. Tedros, came to Beijing to attend the high-level seminar on "Healthy Silk Road". In the course of the meeting, he held an affectionate meeting with the younger generation and called on us to <<coLor darkblue "'Choose health today for a healthy tomorrow.'">> I am quite pleased that my country has received Dr. Tedros and also delighted about his appreciation for the commitment China has fulfilled to global health and safety. In this essay, I would like to retrospect how I grow up as a public health student who yearns for learning experience in the WHO, and how my capacity may match WHO's mission.
<center>The concept of prevention can bring the best health to society</center>
“The best doctor cure individuals who do not have diseases yet”, a thought recorded in an archaic Chinese medical classic “Emperor’s Scripture”, is one of my favorite quoted statement to illustrate the meaning of public health or preventive medicine. I love this saying, because with my deeper understanding of public health, I find that all the tenet features of public health—more focuses on healthy and asymptomatic patients, the concentration of the positive prevention for groups and societies, the more effective way of benefits and costs, the wide coalescence of skills and resources— lead a better role of doctors, and even a more positive relationship between human and nature.
As I am gradually getting more perceptive understanding to the complexity of public health issues and extensiveness of fields it involved, I mainly studied in the long-term care and health policy analysis of the elderly. <<coLor blue "As a team leader, I conducted an undergraduate innovation training program">> on “the status quo and its influencing factors of the long-term care of the elderly in Xiamen City”. In 2016, we conducted a cross-sectional investigation of all 32 registered pension institutions(facilities) in Xiamen City, the elderly, staff and institutions body as respondents, and made a baseline database. We obtained the concerned data on service needs of the elderly as well as the medical resources allocation of institutions and the like, and by means of comparative analysis of supply and demand, we put forward the "perfect the standardized construction of institutions", "the establishment of long-term care insurance system" and other specific policy recommendations, and provide baseline data and reference to decision making for Xiamen Civil Affairs Bureau. This is a complex project that contains multidimensional content in the field of long-term care, we have paid a lot, and finally my partners and I have summed up our work into four papers.
Enrich my brain with more points of view in my learning areas is what I have been doing all the time, in July, I am selected to the student exchange program of Texas A&M University, and learn the school of public health there. I highly value these two weeks of learning experience, it makes me rethink all I have learned anew: the ten lectures including Government public health, Community Approaches to Address Public Health Issues, create, from diverse perspectives, a completely different health system over China, and the visits among Texas health faculties including Austin-Texas Department of State Health Services, Harris County Public Health Vector Control Program, supplement with the lectures’ content to demonstrate the realistic operation of a health system. <<coLor aqua "After returning to school, we five companions all feel like seizing the time to sort out the notes and slides, and the succeeding sharing meeting for school students received good feedback.">> <<coLor grey "In order to better accomplish the goal of studying abroad, I have adhered to make study English and practice expression a daily work.">>
<center>Leadership can generate the prosperity of the primary healthcare in every country</center>
Leadership and the utilization of benefits deriving from cooperation are my most concerned competencies. The World Health Organization, as the leader of this world health mission, is committed to help all countries fulfil their duties of safety and care to their citizens, especially to the poverty and the most vulnerable, and as Chinese President Xi noted in his world vision, human society has become an intimate community of common destiny, with the security interests of all countries intertwined. I have read a few reports in domains of global aging and NCD written by WHO. I admire the global horizons data application and the equal concern for all people, and <<coLor red "I particularly like the benefits">> that <<coLor purple "a NPO/IGO like the World Health Organization">> <<coLor red "can bring to the world’s health undertakings through communication and exchange among countries and regions.">>
In China, the primary healthcare is on its early stage. Shortages of basic healthcare are prevalent across the country, especially for the elders and children in rural areas. In my opinion, in order to stem the tide, Chinese disadvantaged groups’ healthcare needs can be met with a small quantity of funds by accomplished primary healthcare incentives. As I know, these years the analysis of how to construct of hierarchical medical system and coordinated medical data resources has been conducted by Chinese scholars for the integration of community and institutional care, followed by trial schemes. I consider that the developments of community healthcare would be the key point of the primary care incentives, also as medical resource allocations, with the disease prevention and the chronic disease management companied. For me, primary healthcare and health for all are the fields that I would endeavor to make a difference. I hope I could learn about the practical theories about them in WHO.
Chinese scholar Xuecheng Shi once said, “How far a person could see as a future, how many people she thinks of, determine where her destination is, the strength of her heart.” As a public health student, I regard the international vision, leadership and making connections as the core values of an individual. I really want to join in the World Health Organization internship, to be a more excellent health practitioner!
<<st "Things to look up">>
<<makeT blue white "Check 1" "I have adjusted to reflect the way this is expressed in the WHO’s press releases. <a href='http://www.wpro.who.int/china/mediacentre/releases/2017/20170815-dg-belt-and-road-forum/en/' target='_blank'>see wpro.who.int</a>">>
<<makeT red white "Check 2" "Do you mean 黄帝内经? I’m just trying to confirm the best way to introduce the quote for an audience who will not be familiar.">>
<<makeT aqua black "Check 3" "I adjusted on based on: <a href='http://publichealth.harriscountytx.gov/About/Organization-Offices/Mosquito-and-Vector-Control' target='_blank'>publichealth.harriscountytx.gov</a>. Please check.">>
<<makeT magenta white "Check 4" "I’m assuming you mean this entity: < a href='https://www.dshs.texas.gov/contact.shtm' target='_blank'>dshs.texas.gov</a>.">>
<<makeT yellow black "Check 5" "Please could you send me a link to this so I can integrate language appropriately. More importantly, please could you elaborate on why you consider it an impressive tool. Please relate this to the other material you are presenting in the document!">>
On 18 August, the respected Director-General of World Health Organization, Dr. Tedros, came to Beijing to attend the high-level seminar on <<coLor blue "Healthy Silk Road">>. In the course of the meeting, he held an affectionate meeting with the younger generation and called on us to ' Choose health today for a healthy tomorrow.' I am quite pleased that my country has received Dr. Tedros and also delighted about his appreciation for the commitment China has fulfilled to global health and safety. In this essay, I would like to retrospect how I grow up as a public health student who yearns for learning experience in the WHO, and how my capacity may match WHO's mission.
<center>The concept of prevention can bring the best health to society</center>
“The best doctor cure individuals who do not have diseases yet”, a thought recorded in an <<coLor red "archaic Chinese medical classic 'Emperor’s Scripture',">> is one of my favorite quoted statement to illustrate the meaning of public health or preventive medicine. I love this saying, because with my deeper understanding of public health, I find that all the tenet features of public health—more focuses on healthy and asymptomatic patients, the concentration of the positive prevention for groups and societies, the more effective way of benefits and costs, the wide coalescence of skills and resources— lead a better role of doctors,and even a more positive relationship between human and nature.
As I am gradually getting more perceptive understanding to the complexity of public health issues and extensiveness of fields it involved, I mainly studied in the long-term care and health policy analysis of the elderly. As a team leader, I conducted an undergraduate innovation training program on “the status quo and its influencing factors of the long-term care of the elderly in Xiamen City”. In 2016, we conducted a cross-sectional investigation of all 32 registered pension institutions(facilities) in Xiamen City, the elderly, staff and institutions body as respondents, and made a baseline database. We obtained the concerned data on service needs of the elderly as well as the medical resources allocation of institutions and the like, and by means of comparative analysis of supply and demand, we put forward the "perfect the standardized construction of institutions", "the establishment of long-term care insurance system" and other specific policy recommendations, and provide baseline data and reference to decision making for Xiamen Civil Affairs Bureau. This is a complex project that contains multidimensional content in the field of long-term care, we have paid a lot, and finally my partners and I have summed up our work into four papers.
Enrich my brain with more points of view in my learning areas is what I have been doing all the time, in July, I am selected to the student exchange program of Texas A&M University, and learn the school of public health there. I highly value these two weeks of learning experience, it makes me rethink all I have learned anew: the ten lectures including Government public health, Community Approaches to Address Public Health Issues, create, from diverse perspectives, a completely different health system over China, and the visits among Texas health faculties including <<coLor magenta "Austin-Texas Department of State Health Services,">><<coLor aqua "Harris County Public Health Vector Control Program">>, supplement with the lectures’ content to demonstrate the realistic operation of a health system. After returning to school, we five companions all feel like seizing the time to sort out the notes and slides, and the succeeding sharing meeting for school students received good feedback. In order to better accomplish the goal of studying abroad, I have adhered to make study English and practice expression a daily work.
<center>Leadership can generate the prosperity of the primary healthcare in every country</center>
Leadership and the utilization of benefits deriving from cooperation are my most concerned competencies. The World Health Organization, as the leader of this world health mission, is committed to help all countries fulfil their duties of safety and care to their citizens, especially to the poverty and the most vulnerable, and as Chinese President Xi noted in his world vision, human society has become an intimate community of common destiny, with the security interests of all countries intertwined. I have read a few reports in domains of global aging and NCD written by WHO. I admire <<coLor yellow "the global horizons data application">> and the equal concern for all people, and I particularly like the benefits that a NPO/IGO like the World Health Organization can bring to the world’s health undertakings through communication and exchange among countries and regions.
In China, the primary healthcare is on its early stage. Shortages of basic healthcare are prevalent across the country, especially for the elders and children in rural areas. In my opinion, in order to stem the tide, Chinese disadvantaged groups’ healthcare needs can be met with a small quantity of funds by accomplished primary healthcare incentives. As I know, these years the analysis of how to construct of hierarchical medical system and coordinated medical data resources has been conducted by Chinese scholars for the integration of community and institutional care, followed by trial schemes. I consider that the developments of community healthcare would be the key point of the primary care incentives, also as medical resource allocations, with the disease prevention and the chronic disease management companied. For me, primary healthcare and health for all are the fields that I would endeavor to make a difference. I hope I could learn about the practical theories about them in WHO.
Chinese scholar Xuecheng Shi once said, “How far a person could see as a future, how many people she thinks of, determine where her destination is, the strength of her heart.” As a public health student, I regard the international vision, leadership and making connections as the core values of an individual. I really want to join in the World Health Organization internship, to be a more excellent health practitioner!
<<st "Plain exclusions w/ explanations">>
<<makeT green white "Exclusion 1" "
I have excluded...
<blockquote>I love this saying, because with my deeper understanding of public health, I find that all the tenet features of public health— more</blockquote>
...because it repeats prior notions and does not inform the reader anything new. Every word counts!">>
<<makeT red white "Exclusion 2" "<blockquote>and even a more positive relationship between human and nature.</blockquote>
I’ve excluded this because I’m not entirely sure what is meant. It seems like a fairly general comment. If you could drill down to something more specific on this subject, it may well be suitable for inclusion.">>
<<makeT yellow black "Exclusion 3" "
I’ve excluded...
<blockquote>the ten lectures including Government public health, Community Approaches to Address Public Health Issues</blockquote>
...because it’s not helpful to list the titles of lectures - if these are included, they should be commented on in a way that meaningfully integrates with the argument in the document. Otherwise, they can be more effectively conveyed elsewhere in your application, e.g. resume. But __please do let me know if I've misunderstood the relevance of these lectures - explain a bit more if you like!__ :)
">>
<<makeT purple white "Exclusion 4" "
<blockquote>and the equal concern for all people</blockquote>
I've excluded this phrase because the idea is repeated elsewhere in the document.
">>
<<makeT orange black "Exclusion 5" "
<blockquote>Chinese scholar Xuecheng Shi once said, 'How far a person could see as a future, how many people she thinks of, determine where her destination is, the strength of her heart.'</blockquote>
This is a wonderful quotation, however, for very similar reasons to some of the exclusions I've proposed above, I'm suggesting this is not included in the document because it is (i) a general observation that was (ii) made by someone else. I can see how it relates your ethical outlook, but this document should be more focused on conveying a persuasive set of reasons why you are a compelling applicant. This doesn't relate closely enough to that. Please feel free to share your thoughts on this.
">>
<<makeT pink black "Exclusion 6" "
<blockquote>Leadership can generate the prosperity of the primary healthcare in every country</blockquote>
I've removed this because it's fairly self-evident therefore doesn't tell the reader anything he or she didn't know already. Secondly, it does not relate to you personally, making it unhelpful in the context of this document (particularly when the following sentence is more the correct instinct - relate the concept of leadership in healthcare to YOU, YOUR GOALS, and THE PROGRAM.
">>
On 18 August, the respected Director-General of World Health Organization, Dr. Tedros, came to Beijing to attend the high-level seminar on "Healthy Silk Road". In the course of the meeting, he held an affectionate meeting with the younger generation and called on us to ' Choose health today for a healthy tomorrow.' I am quite pleased that my country has received Dr. Tedros and also delighted about his appreciation for the commitment China has fulfilled to global health and safety. In this essay, I would like to retrospect how I grow up as a public health student who yearns for learning experience in the WHO, and how my capacity may match WHO's mission.
<center>The concept of prevention can bring the best health to society</center>
“The best doctor cure individuals who do not have diseases yet”, a thought recorded in an archaic Chinese medical classic “Emperor’s Scripture”, is one of my favorite quoted statement to illustrate the meaning of public health or preventive medicine. <<coLor green "I love this saying, because with my deeper understanding of public health, I find that all the tenet features of public health— ">> more focuses on healthy and asymptomatic patients, the concentration of the positive prevention for groups and societies, the more effective way of benefits and costs, the wide coalescence of skills and resources— lead a better role of doctors,<<coLor red "and even a more positive relationship between human and nature.">>
As I am gradually getting more perceptive understanding to the complexity of public health issues and extensiveness of fields it involved, I mainly studied in the long-term care and health policy analysis of the elderly. As a team leader, I conducted an undergraduate innovation training program on “the status quo and its influencing factors of the long-term care of the elderly in Xiamen City”. In 2016, we conducted a cross-sectional investigation of all 32 registered pension institutions(facilities) in Xiamen City, the elderly, staff and institutions body as respondents, and made a baseline database. We obtained the concerned data on service needs of the elderly as well as the medical resources allocation of institutions and the like, and by means of comparative analysis of supply and demand, we put forward the "perfect the standardized construction of institutions", "the establishment of long-term care insurance system" and other specific policy recommendations, and provide baseline data and reference to decision making for Xiamen Civil Affairs Bureau. This is a complex project that contains multidimensional content in the field of long-term care, we have paid a lot, and finally my partners and I have summed up our work into four papers.
Enrich my brain with more points of view in my learning areas is what I have been doing all the time, in July, I am selected to the student exchange program of Texas A&M University, and learn the school of public health there. I highly value these two weeks of learning experience, it makes me rethink all I have learned anew: <<coLor yellow "the ten lectures including Government public health, Community Approaches to Address Public Health Issues">>, create, from diverse perspectives, a completely different health system over China, and the visits among Texas health faculties including Austin-Texas Department of State Health Services, Harris County Public Health Vector Control Program, supplement with the lectures’ content to demonstrate the realistic operation of a health system. After returning to school, we five companions all feel like seizing the time to sort out the notes and slides, and the succeeding sharing meeting for school students received good feedback. In order to better accomplish the goal of studying abroad, I have adhered to make study English and practice expression a daily work.
<center><<coLor pink "Leadership can generate the prosperity of the primary healthcare in every country.">></center>
Leadership and the utilization of benefits deriving from cooperation are my most concerned competencies. The World Health Organization, as the leader of this world health mission, is committed to help all countries fulfil their duties of safety and care to their citizens, especially to the poverty and the most vulnerable, and as Chinese President Xi noted in his world vision, human society has become an intimate community of common destiny, with the security interests of all countries intertwined. I have read a few reports in domains of global aging and NCD written by WHO. I admire the global horizons data application and <<coLor purple "the equal concern for all people">>, and I particularly like the benefits that a NPO/IGO like the World Health Organization can bring to the world’s health undertakings through communication and exchange among countries and regions.
In China, the primary healthcare is on its early stage. Shortages of basic healthcare are prevalent across the country, especially for the elders and children in rural areas. In my opinion, in order to stem the tide, Chinese disadvantaged groups’ healthcare needs can be met with a small quantity of funds by accomplished primary healthcare incentives. As I know, these years the analysis of how to construct of hierarchical medical system and coordinated medical data resources has been conducted by Chinese scholars for the integration of community and institutional care, followed by trial schemes. I consider that the developments of community healthcare would be the key point of the primary care incentives, also as medical resource allocations, with the disease prevention and the chronic disease management companied. For me, primary healthcare and health for all are the fields that I would endeavor to make a difference. I hope I could learn about the practical theories about them in WHO.
Chinese scholar Xuecheng Shi once said, “How far a person could see as a future, how many people she thinks of, determine where her destination is, the strength of her heart.” As a public health student, I regard the international vision, leadership and making connections as the core values of an individual. I really want to join in the World Health Organization internship, to be a more excellent health practitioner!
<<makeT yellow black "Suggestion 1" """
*Maybe just 'data' unless we're intentionally positing a distinction between the two for the purposes of this document, it is probably a tautology?
*Maybe get rid of 'informative', since it's repetitious w/ 'information'
Then you get
>capable of turning information into insights
*Alliterative so easier to read (possibly a bit cheesy, but more memorable)?
*The phrase is 50% shorter, reads easier, and means the same thing!
">>
<<makeT green white "Suggestion 2" "
Reverse the order of the sentence to make it active rather than passive voice.
>capable of using modeling and quantitative analysis to turn information into insights
">>
---
<<makeT red white "Repetition">>
<<makeT blue white "Wordiness?" "
Perhaps rework to:
>After thorough onine research...
">>
<<makeT pink black "Slightly generic prose?" "
Switching 'ideal' for 'best-matched' and 'development' for 'objectives' may seem small, but it helps to reinforce...
* Candidate's recognition of the fact that there are many programs out there, reflecting the idea of a considered deliberation indicated by the candidate's prior explanation of the thoughtful research process she undertook.
*It seems that 'objectives' foreshadows material in the document ahead (as should be the case in an introduction); 'development' seems like a much more general and less definite term that alludes perhaps more to the candidates life.
">>
<blockquote>My short-term goal is to start my career as a financial analyst, <<bounD green [[[[>> capable of <<coLor yellow "turning information into insights using modeling and quantitative analysis">><<bounD green ]]]]>></blockquote>
<blockquote><<coLor blue "After a period of thorough research online">> and networking with alumni, <<bounD pink [[[[ >>I believe Columbia University’s master’s <<coLor red program>> in Operations Research is the ideal <<coLor red program>> to advance my academic and professional development<<bounD pink ]]]]>>.</blockquote>
<<makeT orange black "Sentence transition opportunity" "
By omitting 'deliberately' and putting 'Accordingly,' at the beginning of the sentence, you're making a more explicit connection between the sentences and the ideas (sentence 1)/ the action (sentence 2).
"
>>
<<makeT cyan black "De-clutter sentences by removing repetition of similar ideas" "
Rewritten as:
>...the top-ranked undergraduate program to major in Physics to build...
">>
<<makeT purple white "Reordering material to create strong links and easier flow of ideas" "
<blockquote>Accordingly, __to build proficiency with scientific methods and their applications__, I selected the top-ranked undergraduate program to major in Physics.</blockquote>
In addition, note that 'solid foundation' is one of the most overused phrases around.
">>
---
<<makeT aqua black "Avoid lists" "
*It's unclear whether these are course names or references to the subject areas.
** If they're course names they
**should be capitalized, but they also
**should be looked up to confirm terminology is correct in English.
***'Mathematic' is patently incorrect.
***'Google 'Quantum Computation' and you'll find the way it's usually expressed.
*In general, however __listing courses should be avoided__, and since the course names also indicate relevant subject areas, the material has been reworked to refer to those, which sounds more professional and avoids the 'listing' issue.
">>
<<makeT maroon white "Avoid tautological expressions">>
<<makeT darkblue white "Please look up technical terminology!">>
<<makeT darkgoldenrod black "Prune out redundant phrases">>
<<makeT magenta white "Integrate material!">>
<blockquote>Prior to my undergraduate studies, I identified my primary academic interest to be in mathematics and the sciences. I <<coLor orange deliberately>> selected the top ranked <<coLor cyan "bachelor’s program">> in Physics as my <<coLor cyan "undergraduate major">><<coLor purple "to obtain a solid foundation in scientific methodology and its applications">>.</blockquote>
---
//Before//
<blockquote>This program exposed me to <<coLor darkgoldenrod "a more demanding curriculum">> and added <<coLor maroon "extra depth and breadth">> to my mathematics studies. Coursework <<coLor darkgoldenrod "in advanced subjects">> such as <<coLor aqua "Computational Physics, Method of Mathematic Physics">> and Quantum Computation provided me with a strong grasp of matrix, probability and differential equations, as well as an improved understanding of<<coLor darkblue "B-S model,">><<coLor darkblue "Ito lemma">><<coLor darkgoldenrod "and other mathematical theories of finance.">><<coLor magenta "Finally, I developed a meticulous and detail-oriented mindset.">></blockquote>
//After//
<blockquote>This program's coursework on <<coLor aqua "computational and mathematical physics, and quantum computing">> added <<coLor maroon "depth and breadth">> to my mathematical studies and promoted a <<coLor maroon "meticulous and detail-oriented">> mindset. Concurrently, I established a strong grasp of matrix, probability and differential equations, and financial applications of theory with an improved understanding of the <<coLor darkblue "Black-Scholes model">> and <<coLor darkblue "Ito's lemma.">></blockquote>
<<makeT red white "Remove redundant sentences/ phrases" "
*The exclusion of the first sentence was explained to the client (because it was a substantial exclusion) as follows:
>I've excluded this sentence: 'When considering whether to pursue a minor degree in Finance, I planned to improve my potential for academic and professional development.' I have done so because I feel it (i) hampers the flow of your argument; (ii) distracts from the more operative point, which is the circumstances in which your fascination for finance developed. I admire the completeness of the account you'd like to provide, however, the circumstances in which you chose to pursue finance with less passionate interest are of less relevance to the intended audience, and less usefulness to your case for admission to this program at this stage in your development! :)
*'Empirical' is excluded, because the review of 20,000,000 records conveys that the study was certainly empirical.
">>
<<makeT cyan black "Exclude generic phrasing">>
<<makeT purple white "Take a rigorous approach to the meaning of words">>
<<makeT olive black "Please look up technical and professional terms and ensure they're used correctly in context! Define acronyms unless very common. " "
*EWMA is not a model per se.
*If you skim the first page of Google results for VaR, you'll quickly see that using the suffix -ive instead of -ion is the way to go if you want to use it to describe models.
*Neither seem to qualify for capitalization.
">>
<<makeT black white "Editing error" >>
<<makeT green white "Consider capitalizations" "
In this case, we're referring to the field of expertise rather than the title of a specific program, so capitalization is misleading.
">>
//Before//
<<coLor red "When considering whether to pursue a minor degree in Finance, I planned to improve my potential for academic and professional development.">><<coLor cyan "My true passion">> for finance and <<coLor purple analytics>> emerged during <<coLor red "my participation in">> the 2016 Mathematics Contest in Modeling, where we were challenged to develop an optimal investment strategy for a non-profit educational foundation. The ultimate investment model was generated with the application of <<coLor olive "EWMA and VaR models">> and could realize the optimal allocation of funds to each <<coLor red candidate>>school. Throughout the process of assessing practical situations, formulating models, analyzing and interpreting data, designing potential solutions and evaluating their impacts, I was fascinated with how wealth and capital can make a difference to the world, if they are efficiently managed.
I explored these concepts further in my undergraduate thesis, discussing the effect of government-sponsored venture capital in China. I researched over 20 million <<coLor yellow Chinese>> investment records spanning more than a decade and attempted to predict the impacts of <<coLor red "this special capital resource">>. The project was completed by using <<coLor red "empirical analysis">> and incorporating linear regression and logistical regression, but was limited by a lack of enhanced modeling techniques and analytical algorithms to intelligently interpret data. This experience solidified my determination to further my education <<coLor black "in Operations Research program.">>
//After//
My interest in finance and <<coLor darkblue "the analytical mindset of its practitioners">> became most serious and apparent during the 2016 Mathematics Contest in Modeling. To fulfill the challenge of developing an optimal investment strategy for an educational non-profit we used an exponentially weighted moving average and vector autoregressive models to the optimal allocation of funds to each school. The process of assessing practical situations, formulating models, interpreting data analysis, designing potential solutions and evaluating their impact, made efficient resource management and its tangible benefits fascinating to me. I explored these concepts further in my undergraduate thesis, in which I used linear and <<coLor olive logistic>> regression to predict the impact of government-sponsored venture capital in China. My analysis of over 20 million investment records spanning more than a decade, however, was limited by a lack of enhanced modeling techniques and analytical algorithms. This experience solidified my determination to further my education on an advanced operations research program.
Internships in several different fields during my undergraduate career further deepened my understanding of financial analysis, management and systems. My first internship in the financial service industry was at Holly’s Futures Co., Ltd in 2016. While there, I applied my academic knowledge to practical analysis-oriented assignments, including developing pricing strategies and arbitrage trading systems for the company's investment team. Beginning in January 2017, I embarked on another internship for Sealand Securities Co., Ltd, one of China’s largest securities firms. As the firm’s youngest analyst intern, I conducted two bond-issuing projects with a total volume of over 10 billion yuan. Afterwards, as a part-time assistant at Parthenon-EY, I took advantage of the occasional opportunity that arose to make a foray into the consulting industry. I was responsible for conducting market research for K-12 tutoring in Shenzhen, China. During my work, I was most impressed with the way analysis of market trends can be used to deliver data-based analytics and decision-making.
//Before//
My desire is to combine my myriad interests and strengths in my future career, such as becoming a financial analyst with sound technical skills. While I am not yet ready to finalize my decision, I intend to concentrate my graduate studies on computational work, such as evaluating the financial performance of organizations, assessing investment opportunities and estimating potential risks. CU’s Operations Research program is renowned for its core expertise in optimization, stochastic models and simulation, as well as for the flexibility of its course selections. Through this program, I could enhance my quantitative skills in discovering rules and developing strategies and broaden my understanding of the finance industry, allowing me to pinpoint my final career choice.
<$password name="upload"/>
<$button message="tm-save-wiki" param={{$:/config/SaveWikiButton/Template}} tooltip={{$:/language/Buttons/SaveWiki/Hint}} aria-label={{$:/language/Buttons/SaveWiki/Caption}} class=<<tv-config-toolbar-class>>>
<span class="tc-dirty-indicator">
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
Save and logout
</$list>
</span>
<$action-sendmessage $message='tm-close-other-tiddlers' $param='Logout'/>
<$action-setfield $tiddler='$:/Login' $field='s' $value=''/>
<$action-setfield $tiddler='$:/Login' password='' name='' showpassword=''/>
<$action-setfield $tiddler='$:/Andy' $field='tags' $value=''/>
<$action-setfield $tiddler='$:/config/AutoSave' $field='text' $value='no'/>
<$action-setfield $tiddler="$:/themes/tiddlywiki/vanilla/metrics/storyleft" $field="" $value="60px"/>
<$action-setfield $tiddler="$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth" $field="" $value="265px"/>
</$button>
<$linkcatcher to="$:/temp/mySearch">
<span style='float:left;margin-top:0px;'><$edit-text tiddler="$:/temp/mySearch" placeholder='Type search here' size='25' type="search" tag="input"/></span>
<$reveal state="$:/temp/mySearch" type="nomatch" text="">
<$button class="tc-btn-invisible">
<$action-setfield $tiddler="$:/temp/mySearch" $field="text" $value=""/>
{{$:/core/images/close-button}}
</$button>
</$reveal>
</$linkcatcher>
<$reveal state="$:/temp/mySearch" type="nomatch" text="">
<$list filter="[{$:/temp/mySearch}minlength{$:/config/Search/MinLength}limit[1]]" emptyMessage="""<div class="tc-search-results">{{$:/language/Search/Search/TooShort}}</div>""" variable="listItem">
<$set name="searchTiddler" value="$:/temp/mySearch">
<$list filter="[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]" emptyMessage="""
<$list filter="[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]">
<$transclude/>
</$list>
""">
</$list>
</$set>
</$list>
</$reveal>
\define sLink(t)
<$set name='removeP' filter='[title[$t$]removeprefix[$:/]]'>
<$set name='ifPrefix' filter='[title[$t$]!prefix[$:/]]' value='$t$' emptyValue=<<removeP>>>
<$button set='$:/DisplayConfig/Current' setTo='$t$' class='tc-btn-invisible tc-tiddlylink'><<ifPrefix>></$button>
</$set></$set>
\end
$:/ResumeBuild/Tools/bigName
$:/ResumeBuild/Tools/titleText
$:/ResumeBuild/Tools/titleText
<<st Instructions>> <p>Click the <$button class="tc-btn-invisible">{{$:/core/images/close-others-button}}</$button> to highlight issue and reveal comments. Click again to remove.</p><$macrocall $name="runThroughViewer" n="Sentence tips for an L2"/>
<$macrocall $name="runThroughViewer" n="Sentence tips"/>
<$macrocall $name="runThroughViewer" n="SentenceTips1.3"/>
<<st Instructions>> <p>Click the <$button class="tc-btn-invisible">{{$:/core/images/close-others-button}}</$button> to highlight issue and reveal comments. Click again to remove.</p><$macrocall $name="runThroughViewer" n="SentenceTips1.4"/>
<<st Instructions>> <p>Click the <$button class="tc-btn-invisible">{{$:/core/images/close-others-button}}</$button> to highlight issue and reveal comments. Click again to remove.</p><$macrocall $name="runThroughViewer" n="SentenceTips1.5"/>
><$macrocall $name="sD" service={{!!caption}} standard="Heavy Edit" iterations="2" iteration1="96" nextiterations="48" hoursmax="144" valid1="30" valid2="15" valideg="60" word='programs' docsrow=<<tRow3 "Documents included for each program in package" "Personal Statement or Statement of Purpose^^1^^" "1 per program^^2^^ (up to 1000 words each)^^3^^" "CV or resume" "1 per package^^2^^ (up to 2 pages)^^3^^" "Recommendation letters" "3^^4^^ per package^^2^^ (400 words each)^^3^^">> n="5" limit="Maximum" restriction="You should purchase this service if you wish to apply for one or more programs <u>in the same disciplinary area</u>."/>
><$macrocall $name="sD" service="Heavy Edit Statement Package" standard="Heavy Edit" iterations="2" iteration1="96" nextiterations="48" hoursmax="144" valid1="30" valid2="10" valideg="50" word='statements' docsrow=<<tRow "Documents included" "Personal Statement or Statement of Purpose^^1^^" "1 per program^^2^^ (up to 1000 words each)^^3^^">> n="3" limit="Minimum" restriction="Documents should be of the same type. Specifically, Personal Statements and Statements of Purpose cannot be mixed in a single Statement Package Service."/>
><$macrocall $name="sD" service={{!!caption}} standard="VIP Service" iterations="4" iteration1="96" nextiterations="72" hoursmax="312" valid1="45" valid2="25" valideg="95" word='programs' docsrow=<<tRow3 "Documents included for each program in package" "Personal Statement or Statement of Purpose^^1^^" "1 per program^^2^^ (up to 1000 words each)^^3^^" "CV or resume" "1 per package^^2^^ (up to 2 pages)^^3^^" "Recommendation letters" "3^^4^^ per package^^2^^ (400 words each)^^3^^">> n="5" limit="Maximum" restriction="You should purchase this service if you wish to apply for one or more programs <u>in the same disciplinary area</u>."/>
><$macrocall $name="sD" service="VIP Statement Package" standard="VIP Service" iterations="4" iteration1="96" nextiterations="72" hoursmax="312" valid1="40" valid2="15" valideg="70" word='statements' docsrow=<<tRow "Documents included" "Personal Statement or Statement of Purpose^^1^^" "1 per program^^2^^ (up to 1000 words each)^^3^^">> n="3" limit="Minimum" restriction="Documents should be of the same type. Specifically, Personal Statements and Statements of Purpose cannot be mixed in a single Statement Package Service."/>
\define tRow(h,t)
<tr><th style='border:1px solid #777; text-align:left;width:150px;'>$h$</th><td colspan='2' style='width:300px;border:1px solid #777; padding:0 5px;vertical-align:middle;text-align:left;'>$t$</td></tr>
\end
\define tRow2(h1,h2,t2,h3,t3)
<tr><th rowspan='3' style='border:1px solid #777; text-align:left;width:150px;'>$h1$</th>
<th style='border:1px solid #777; text-align:left;width:75px;'>$h2$</th>
<td style='width:125px;border:1px solid #777; padding:0 5px;vertical-align:middle;text-align:left;'>$t2$</td>
</tr>
<tr>
<th style='border:1px solid #777; text-align:left;width:75px;'>$h3$</th>
<td style='width:125px;border:1px solid #777; padding:0 5px;vertical-align:middle;text-align:left;'>$t3$</td>
</tr>
\end
\define tRow3(h1,h2,t2,h3,t3,h4,t4)
<tr><th rowspan='3' style='border:1px solid #777; text-align:left;width:150px;'>$h1$</th>
<th style='border:1px solid #777; text-align:left;width:75px;'>$h2$</th>
<td style='width:125px;border:1px solid #777; padding:0 5px;vertical-align:middle;text-align:left;'>$t2$</td>
</tr>
<tr>
<th style='border:1px solid #777; text-align:left;width:75px;'>$h3$</th>
<td style='width:125px;border:1px solid #777; padding:0 5px;vertical-align:middle;text-align:left;'>$t3$</td>
</tr>
<tr>
<th style='border:1px solid #777; text-align:left;width:75px;'>$h4$</th>
<td style='width:125px;border:1px solid #777; padding:0 5px;vertical-align:middle;text-align:left;'>$t4$</td>
</tr>
\end
\define sD(service,standard,iterations,iteration1,nextiterations,hoursmax,valid1,valid2,valideg,word,docsrow,n,limit,restriction)
<p><b><u>$service$</u></b></p>
Your advisor will provide edits in accordance with our $standard$ service guidelines.
<table>
<<tRow "$limit$ number of $word$ per package" "$n$">>
$docsrow$
<<tRow "Iterations per document" "$iterations$">>
<<tRow2 "Completion time per document" "First iteration" "$iteration1$ hours" "Subsequent iterations" "$nextiterations$ hours">>
<<tRow "Minimum completion time" "$hoursmax$ hours per document^^5^^">>
<<tRow2 "Service validity" "Single program package" "$valid1$ days" "Multi-program package" "30 days for first program + $valid2$ days per subsequent program^^6^^">>
</table>
<ol>
<li>Please note that the documents with your advisor provides support during this service should be either Personal Statements or Statements of Purpose. If you require support with both types of documents you need to purchase a separate package service for each document type.</li>
<li>A package service includes 1 resume and 2-3 recommendation letters per purchase, since this is sufficient to support most scenarios. Support on additional documentation may be purchased separately.</li>
<li>Unused word count cannot be exchanged for other documents or a discounted service. Remember, the value of your advisor’s support goes far deeper than the number of documents or word counts provided.</li>
<li>For one-program package services, 2 recommendation letters are included.</li>
<li>No more than 3 documents should be in progress at any time during this service (without the express agreement of your advisor).</li>
<li>For example, if your purchase a three-program package service, the service will be valid for $valideg$ days ($valid1$ days for the first program and $valid2$ days for each subsequent program).</li>
</ol>
<p><b>Other notes:</b></p>
<ul>
<li>$restriction$</li>
<li>All documents produced under this service must be your own drafts, which must be prepared before the service commences.</li>
<li>The same advisor will assist you on all documents in this service.</li>
</ul>
\end
<table>
<tr>
<<ch '' Iterations ''>><<cn 6 {{!!iterations}}>>
</tr>
<tr>
<<ch '' Deadlines 3>><<ch 3 '<center>First iteration</center>' ''>><<ch 3 '<center>Subsequent iterations</center>' ''>>
</tr>
<tr><<ch '' Standard ''>><<ch '' Urgent ''>><<ch '' 'Very urgent' ''>><<ch '' Standard ''>><<ch '' Urgent ''>><<ch '' 'Very urgent' ''>></tr>
<tr>
<<cn '' {{!!deadline.normal_1}} ''>><<cn '' {{!!deadline.urgent_1}} ''>><<cn '' {{!!deadline.vurgent_1}} ''>><<cn '' {{!!deadline.normal_2}} ''>><<cn '' {{!!deadline.urgent_1}} ''>><<cn '' {{!!deadline.vurgent_1}} ''>>
</tr>
<tr>
<<ch '' Fees ''>><td colspan='6'><$transclude tiddler='$:/FeeCalc' mode='block'/></td>
</tr>
</table>
<$action-setfield $tiddler="" $field="" $value=""/>
<$button set="" setTo="">
</$button>
class="tc-btn-invisible tc-tiddlylink"
<$action-navigate $to=""/>
<$macrocall $name="runThroughViewer" n={{!!n}}/>
<$edit-text field='n' size=3/>
<$button>
<$action-createtiddler $basetitle="Homemade Button" tags="$:/tags/PageControls" text={{$:/state/new-button-caption}}/>
Create text container
</$button> <$button>
<$action-createtiddler $basetitle="Homemade Button" tags="$:/tags/PageControls" text={{$:/state/new-button-caption}}/>
Create tags container
</$button>
<$button message='tm-edit-tiddler' param='$:/Controls'/>
<$reveal type='match' state='$:/Res/MakeNew/state' text=''><$button set='$:/Res/MakeNew/state' setTo='1'>Show Thumbpics</$button></$reveal><$reveal type='match' state='$:/Res/MakeNew/state' text='1'><$button set='$:/Res/MakeNew/state' setTo=''>Hide Thumbpics</$button></$reveal>
<$reveal type='match' state='$:/Res/MakeNew/state' text='1'>
XX
</$reveal>
$:/ResumeBuild/Tools/bigName
$:/core/ui/AdvancedSearch/System
$:/ResumeBuild/StylingLists.1
$:/core/ui/AdvancedSearch/System
$:/core/ui/AdvancedSearch/System
$:/ServiceDesc/Heavy Edit Statement Package
$:/themes/tiddlywiki/vanilla/themetweaks
$:/ServiceDesc/VIP Statement Package
$:/AskingQuestions/Triggers
$:/core/ui/AdvancedSearch/System
$:/AskingQuestions/Triggers
$:/AskingQuestions/Triggers
$:/ResumeBuild/Tools/bigName
$:/core/ui/AdvancedSearch/System
$:/core/ui/ControlPanel/Appearance
$:/core/ui/AdvancedSearch/Shadows
$:/core/ui/ControlPanel/Saving/TiddlySpot
$:/ResumeBuild/Tools/titleText
$:/ResumeBuild/StylingLists.1
$:/ResumeBuild/StylingLists.1
$:/core/ui/AdvancedSearch/System
$:/core/ui/SideBar/Recent
$:/core/ui/SideBar/Recent
$:/core/ui/ControlPanel/Toolbars/ViewToolbar
|!Documents |!Quantity |!Length |
|Personal Statement __or__ Statement of Purpose | 1 __per school__ | Up to <$calc>{{$:/PackageServices/NumberSchools/Temp}} * {{$:/ProgramPackages/DocLengths!!statements_words}}</$calc> words __per service__ |
<div class="tc-static-alert"><div class="tc-static-alert-inner">This page is part of a static HTML representation of the ~TiddlyWiki at http://tiddlywiki.com/</div></div>
<div><img src={{!!pic}}/><p style='text-align:center;'><small>''{{!!name}}''<br> //{{!!role}}//<$set name="ifLinkedin" filter="[title{!!title}has[linkedin]]" value="""<$set name="linkedIN" value={{!!linkedin}}> | <a href=<<linkedIN>> target="_blank">~LinkedIn</a></$set>""" emptyValue=""><<ifLinkedin>></$set></small></p></div>
<$list filter='[prefix[$:/TeamTestimonial/]]'>
{{||$:/TestimonialTemplate}}
</$list>
{
"tiddlers": {
"$:/info/browser": {
"title": "$:/info/browser",
"text": "yes"
},
"$:/info/node": {
"title": "$:/info/node",
"text": "no"
},
"$:/info/url/full": {
"title": "$:/info/url/full",
"text": "http://advisors.tiddlyspot.com/"
},
"$:/info/url/host": {
"title": "$:/info/url/host",
"text": "advisors.tiddlyspot.com"
},
"$:/info/url/hostname": {
"title": "$:/info/url/hostname",
"text": "advisors.tiddlyspot.com"
},
"$:/info/url/protocol": {
"title": "$:/info/url/protocol",
"text": "http:"
},
"$:/info/url/port": {
"title": "$:/info/url/port",
"text": ""
},
"$:/info/url/pathname": {
"title": "$:/info/url/pathname",
"text": "/"
},
"$:/info/url/search": {
"title": "$:/info/url/search",
"text": ""
},
"$:/info/url/origin": {
"title": "$:/info/url/origin",
"text": "http://advisors.tiddlyspot.com"
},
"$:/info/browser/name": {
"title": "$:/info/browser/name",
"text": "iOS"
},
"$:/info/browser/version": {
"title": "$:/info/browser/version",
"text": "11.0"
},
"$:/info/browser/is/webkit": {
"title": "$:/info/browser/is/webkit",
"text": "yes"
},
"$:/info/browser/is/gecko": {
"title": "$:/info/browser/is/gecko",
"text": "no"
},
"$:/info/browser/is/chrome": {
"title": "$:/info/browser/is/chrome",
"text": "no"
},
"$:/info/browser/is/firefox": {
"title": "$:/info/browser/is/firefox",
"text": "no"
},
"$:/info/browser/is/ios": {
"title": "$:/info/browser/is/ios",
"text": "yes"
},
"$:/info/browser/is/iphone": {
"title": "$:/info/browser/is/iphone",
"text": "no"
},
"$:/info/browser/is/ipad": {
"title": "$:/info/browser/is/ipad",
"text": "yes"
},
"$:/info/browser/is/ipod": {
"title": "$:/info/browser/is/ipod",
"text": "yes"
},
"$:/info/browser/is/opera": {
"title": "$:/info/browser/is/opera",
"text": "no"
},
"$:/info/browser/is/phantomjs": {
"title": "$:/info/browser/is/phantomjs",
"text": "no"
},
"$:/info/browser/is/safari": {
"title": "$:/info/browser/is/safari",
"text": "no"
},
"$:/info/browser/is/seamonkey": {
"title": "$:/info/browser/is/seamonkey",
"text": "no"
},
"$:/info/browser/is/blackberry": {
"title": "$:/info/browser/is/blackberry",
"text": "no"
},
"$:/info/browser/is/webos": {
"title": "$:/info/browser/is/webos",
"text": "no"
},
"$:/info/browser/is/silk": {
"title": "$:/info/browser/is/silk",
"text": "no"
},
"$:/info/browser/is/bada": {
"title": "$:/info/browser/is/bada",
"text": "no"
},
"$:/info/browser/is/tizen": {
"title": "$:/info/browser/is/tizen",
"text": "no"
},
"$:/info/browser/is/sailfish": {
"title": "$:/info/browser/is/sailfish",
"text": "no"
},
"$:/info/browser/is/android": {
"title": "$:/info/browser/is/android",
"text": "no"
},
"$:/info/browser/is/windowsphone": {
"title": "$:/info/browser/is/windowsphone",
"text": "no"
},
"$:/info/browser/is/firefoxos": {
"title": "$:/info/browser/is/firefoxos",
"text": "no"
}
}
}
[[Common Questions about Fees]] [[How do I get paid?]] [[Payment Date]] [[Task Expiry Periods]] [[What fees are available?]] [[How much are tasks worth?]]
Does this alow me to type? What abouyt now
<table style='border:none;'>
<tr>
<td style='border:none;' width="150px">
<img src={{!!img}}/>
</td>
<td style='border:none;'>
<p style='margin-top:0;margin-bottom:5px;'><b>{{!!name}}</b> ({{!!background}})</p>
<blockquote style='font-size:90%;margin:0;padding:0;padding-left:5px;'>{{!!blurb}}</blockquote>
</td>
</tr>
</table>
$:/themes/tiddlywiki/snowwhite
{
"tiddlers": {
"$:/themes/tiddlywiki/centralised/styles.tid": {
"title": "$:/themes/tiddlywiki/centralised/styles.tid",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\thtml .tc-page-container {\n\t\ttext-align: center;\n\t}\n\n\thtml .tc-story-river {\n\t\tposition: relative;\n\t\twidth: 770px;\n\t\tpadding: 42px;\n\t\tmargin: 0 auto;\n\t\ttext-align: left;\n\t}\n\n\thtml .tc-sidebar-scrollable {\n\t\ttext-align: left;\n\t\tleft: 50%;\n\t\tright: 0;\n\t\tmargin-left: 343px;\n\t}\n}\n"
}
}
}
{
"tiddlers": {
"$:/themes/tiddlywiki/heavier/base": {
"title": "$:/themes/tiddlywiki/heavier/base",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\nhtml body strong,\nhtml body button.tc-tiddlylink,\nhtml body a.tc-tiddlylink,\nhtml body a.tc-tiddlylink-shadow,\nhtml body .tc-menu-list-count {\n\tfont-weight: 700;\n}\n\nhtml body h1,\nhtml body h2,\nhtml body h3,\nhtml body h4,\nhtml body h5,\nhtml body h6,\nhtml body a.tc-tiddlylink-shadow.tc-tiddlylink-resolves,\nhtml body button.tc-tag-label,\nhtml body span.tc-tag-label,\nhtml body .tc-sidebar-header .tc-title a.tc-tiddlylink-resolves,\nhtml body .tc-site-title,\nhtml body .tc-titlebar,\nhtml body .tc-subtitle,\nhtml body .tc-tiddler-missing .tc-title,\nhtml body .tc-tab-buttons button,\nhtml body .tc-tiddler-frame .tc-tiddler-body {\n\tfont-weight: 500;\n}\n\nhtml body .tc-view-field-name {\n\tfont-weight: 400;\n}\n"
}
}
}
{
"tiddlers": {
"$:/themes/tiddlywiki/readonly/styles.tid": {
"title": "$:/themes/tiddlywiki/readonly/styles.tid",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\nsvg.tc-image-new-button, svg.tc-image-options-button, svg.tc-image-save-button, svg.tc-image-edit-button, svg.tc-image-delete-button, svg.tc-image-cancel-button, svg.tc-image-done-button {\n\tdisplay: none;\t\n}\n"
}
}
}
{
"tiddlers": {
"$:/themes/tiddlywiki/seamless/base": {
"title": "$:/themes/tiddlywiki/seamless/base",
"tags": "[[$:/tags/Stylesheet]]",
"list-after": "$:/themes/tiddlywiki/vanilla/base",
"text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n/*\nRules copied from Snow White\n*/\n\n.tc-page-controls button svg, .tc-tiddler-controls button svg, .tc-topbar button svg {\n\t<<transition \"fill 150ms ease-in-out\">>\n}\n\n.tc-tiddler-controls button.tc-selected svg {\n\t<<filter \"drop-shadow(0px -1px 2px rgba(0,0,0,0.25))\">>\n}\n\n.tc-drop-down {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-block-dropdown {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-modal-displayed {\n\t<<filter \"blur(4px)\">>\n}\n\n.tc-modal {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n}\n\n.tc-modal-footer {\n\tborder-radius: 0 0 6px 6px;\n\t<<box-shadow \"inset 0 1px 0 #fff\">>;\n}\n\n.tc-alert {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.6)\">>\n}\n\n.tc-notification {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n\ttext-shadow: 0 1px 0 rgba(255,255,255, 0.8);\n}\n\n.tc-message-box img {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n\n/*\nSeamless modifications\n*/\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t/* Drop the tiddler frame padding */\n\tbody.tc-body .tc-tiddler-frame {\n\t\tpadding: 0;\n\t}\n\n\t/* Move the sidebar up so that the title lines up */\n\tbody.tc-body .tc-sidebar-scrollable {\n\t\tpadding: 43px 0 28px 42px;\n\t}\n\n\t/* Stop the tiddler info panel from bleeding into the tiddler frame padding */\n\tbody.tc-body .tc-tiddler-info {\n\t\tmargin: 0;\n\t}\n\n\t/* Stop message boxes from bleeding into the tiddler frame padding */\n\tbody.tc-body .tc-message-box {\n\t\tmargin: 21px 0 21px 0;\n\t}\n\n}\n\n/* Use the tiddler background colour for the page background */\nhtml body.tc-body {\n\tbackground-color: <<colour background>>;\n}\n\nhtml:-webkit-full-screen {\n\tbackground-color: <<colour background>>;\n}\n\n/* Adjust the colour of the page controls */\nbody.tc-body .tc-page-controls svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n/* Adjust the colour of the sidebar selected tabs */\nbody.tc-body .tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour background>>;\n}\n"
}
}
}
{
"tiddlers": {
"$:/themes/tiddlywiki/snowwhite/base": {
"title": "$:/themes/tiddlywiki/snowwhite/base",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n.tc-sidebar-header {\n\ttext-shadow: 0 1px 0 <<colour sidebar-foreground-shadow>>;\n}\n\n.tc-tiddler-info {\n\t<<box-shadow \"inset 1px 2px 3px rgba(0,0,0,0.1)\">>\n}\n\n@media screen {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow \"1px 1px 5px rgba(0, 0, 0, 0.3)\">>\n\t}\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow none>>\n\t}\n}\n\n.tc-page-controls button svg, .tc-tiddler-controls button svg, .tc-topbar button svg {\n\t<<transition \"fill 150ms ease-in-out\">>\n}\n\n.tc-tiddler-controls button.tc-selected,\n.tc-page-controls button.tc-selected {\n\t<<filter \"drop-shadow(0px -1px 2px rgba(0,0,0,0.25))\">>\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-edit-tags {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-tiddler-frame .tc-edit-tags input.tc-edit-texteditor {\n\t<<box-shadow \"none\">>\n\tborder: none;\n\toutline: none;\n}\n\ncanvas.tc-edit-bitmapeditor {\n\t<<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-drop-down {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-block-dropdown {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-modal {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n}\n\n.tc-modal-footer {\n\tborder-radius: 0 0 6px 6px;\n\t<<box-shadow \"inset 0 1px 0 #fff\">>;\n}\n\n\n.tc-alert {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.6)\">>\n}\n\n.tc-notification {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n\ttext-shadow: 0 1px 0 rgba(255,255,255, 0.8);\n}\n\n.tc-sidebar-lists .tc-tab-set .tc-tab-divider {\n\tborder-top: none;\n\theight: 1px;\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.0) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.01) 0%, rgba(0,0,0,0.1) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.05) 0%, rgba(255,255,255,0.05) 100%\">>\n}\n\n.tc-message-box img {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n\n.tc-plugin-info {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n"
}
}
}
{
"tiddlers": {
"$:/themes/tiddlywiki/starlight/arvo.woff": {
"text": "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",
"type": "application/font-woff",
"title": "$:/themes/tiddlywiki/starlight/arvo.woff"
},
"$:/themes/tiddlywiki/starlight/ltbg.jpg": {
"text": "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PSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pgo8IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KPHBsaXN0IHZlcnNpb249IjEuMCI+CjxkaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTUhvcml6b250YWxSZXM8L2tleT4KCTxkaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCTxhcnJheT4KCQkJPGRpY3Q+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNSG9yaXpvbnRhbFJlczwva2V5PgoJCQkJPHJlYWw+NzI8L3JlYWw+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQk8L2RpY3Q+CgkJPC9hcnJheT4KCTwvZGljdD4KCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1PcmllbnRhdGlvbjwva2V5PgoJPGRpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1PcmllbnRhdGlvbjwva2V5PgoJCQkJPGludGVnZXI+MTwvaW50ZWdlcj4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVNjYWxpbmc8L2tleT4KCTxkaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCTxhcnJheT4KCQkJPGRpY3Q+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNU2NhbGluZzwva2V5PgoJCQkJPHJlYWw+MTwvcmVhbD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2FsUmVzPC9rZXk+Cgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk+CgkJCTxkaWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2FsUmVzPC9rZXk+CgkJCQk8cmVhbD43MjwvcmVhbD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2FsU2NhbGluZzwva2V5PgoJPGRpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1WZXJ0aWNhbFNjYWxpbmc8L2tleT4KCQkJCTxyZWFsPjE8L3JlYWw+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQk8L2RpY3Q+CgkJPC9hcnJheT4KCTwvZGljdD4KCTxrZXk+Y29tLmFwcGxlLnByaW50LnN1YlRpY2tldC5wYXBlcl9pbmZvX3RpY2tldDwva2V5PgoJPGRpY3Q+CgkJPGtleT5QTVBQRFBhcGVyQ29kZU5hbWU8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5QTVBQRFBhcGVyQ29kZU5hbWU8L2tleT4KCQkJCQk8c3RyaW5nPkxldHRlcjwvc3RyaW5nPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PlBNVGlvZ2FQYXBlck5hbWU8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5QTVRpb2dhUGFwZXJOYW1lPC9rZXk+CgkJCQkJPHN0cmluZz5uYS1sZXR0ZXI8L3N0cmluZz4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4KCQk8L2RpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTUFkanVzdGVkUGFnZVJlY3Q8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTUFkanVzdGVkUGFnZVJlY3Q8L2tleT4KCQkJCQk8YXJyYXk+CgkJCQkJCTxyZWFsPjAuMDwvcmVhbD4KCQkJCQkJPHJlYWw+MC4wPC9yZWFsPgoJCQkJCQk8cmVhbD43MzQ8L3JlYWw+CgkJCQkJCTxyZWFsPjU3NjwvcmVhbD4KCQkJCQk8L2FycmF5PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYXBlclJlY3Q8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTUFkanVzdGVkUGFwZXJSZWN0PC9rZXk+CgkJCQkJPGFycmF5PgoJCQkJCQk8cmVhbD4tMTg8L3JlYWw+CgkJCQkJCTxyZWFsPi0xODwvcmVhbD4KCQkJCQkJPHJlYWw+Nzc0PC9yZWFsPgoJCQkJCQk8cmVhbD41OTQ8L3JlYWw+CgkJCQkJPC9hcnJheT4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4KCQk8L2RpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNUGFwZXJOYW1lPC9rZXk+CgkJPGRpY3Q+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVBhcGVyTmFtZTwva2V5PgoJCQkJCTxzdHJpbmc+bmEtbGV0dGVyPC9zdHJpbmc+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCQk8L2RpY3Q+CgkJCTwvYXJyYXk+CgkJPC9kaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVVuYWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8uUE1VbmFkanVzdGVkUGFnZVJlY3Q8L2tleT4KCQkJCQk8YXJyYXk+CgkJCQkJCTxyZWFsPjAuMDwvcmVhbD4KCQkJCQkJPHJlYWw+MC4wPC9yZWFsPgoJCQkJCQk8cmVhbD43MzQ8L3JlYWw+CgkJCQkJCTxyZWFsPjU3NjwvcmVhbD4KCQkJCQk8L2FycmF5PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8uUE1VbmFkanVzdGVkUGFwZXJSZWN0PC9rZXk+CgkJPGRpY3Q+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVVuYWRqdXN0ZWRQYXBlclJlY3Q8L2tleT4KCQkJCQk8YXJyYXk+CgkJCQkJCTxyZWFsPi0xODwvcmVhbD4KCQkJCQkJPHJlYWw+LTE4PC9yZWFsPgoJCQkJCQk8cmVhbD43NzQ8L3JlYWw+CgkJCQkJCTxyZWFsPjU5NDwvcmVhbD4KCQkJCQk8L2FycmF5PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8ucHBkLlBNUGFwZXJOYW1lPC9rZXk+CgkJPGRpY3Q+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5wcGQuUE1QYXBlck5hbWU8L2tleT4KCQkJCQk8c3RyaW5nPlVTIExldHRlcjwvc3RyaW5nPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuQVBJVmVyc2lvbjwva2V5PgoJCTxzdHJpbmc+MDAuMjA8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQudHlwZTwva2V5PgoJCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mb1RpY2tldDwvc3RyaW5nPgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LkFQSVZlcnNpb248L2tleT4KCTxzdHJpbmc+MDAuMjA8L3N0cmluZz4KCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC50eXBlPC9rZXk+Cgk8c3RyaW5nPmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0VGlja2V0PC9zdHJpbmc+CjwvZGljdD4KPC9wbGlzdD4KOEJJTQPtAAAAAAAQAEgCTgABAAEASAJOAAEAAThCSU0EJgAAAAAADgAAAAAAAAAAAAA/gAAAOEJJTQQNAAAAAAAEAAAAHjhCSU0EGQAAAAAABAAAAB44QklNA/MAAAAAAAkAAAAAAAAAAAEAOEJJTQQKAAAAAAABAAA4QklNJxAAAAAAAAoAAQAAAAAAAAABOEJJTQP1AAAAAABIAC9mZgABAGxmZgAGAAAAAAABAC9mZgABAKGZmgAGAAAAAAABADIAAAABAFoAAAAGAAAAAAABADUAAAABAC0AAAAGAAAAAAABOEJJTQP4AAAAAABwAAD/////////////////////////////A+gAAAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gAADhCSU0ECAAAAAAAEAAAAAEAAAJAAAACQAAAAAA4QklNBB4AAAAAAAQAAAAAOEJJTQQaAAAAAANHAAAABgAAAAAAAAAAAAABVAAAAVQAAAAJAFAAaQBjAHQAdQByAGUAIAAyAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAFUAAABVAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAbnVsbAAAAAIAAAAGYm91bmRzT2JqYwAAAAEAAAAAAABSY3QxAAAABAAAAABUb3AgbG9uZwAAAAAAAAAATGVmdGxvbmcAAAAAAAAAAEJ0b21sb25nAAABVAAAAABSZ2h0bG9uZwAAAVQAAAAGc2xpY2VzVmxMcwAAAAFPYmpjAAAAAQAAAAAABXNsaWNlAAAAEgAAAAdzbGljZUlEbG9uZwAAAAAAAAAHZ3JvdXBJRGxvbmcAAAAAAAAABm9yaWdpbmVudW0AAAAMRVNsaWNlT3JpZ2luAAAADWF1dG9HZW5lcmF0ZWQAAAAAVHlwZWVudW0AAAAKRVNsaWNlVHlwZQAAAABJbWcgAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAAVQAAAAAUmdodGxvbmcAAAFUAAAAA3VybFRFWFQAAAABAAAAAAAAbnVsbFRFWFQAAAABAAAAAAAATXNnZVRFWFQAAAABAAAAAAAGYWx0VGFnVEVYVAAAAAEAAAAAAA5jZWxsVGV4dElzSFRNTGJvb2wBAAAACGNlbGxUZXh0VEVYVAAAAAEAAAAAAAlob3J6QWxpZ25lbnVtAAAAD0VTbGljZUhvcnpBbGlnbgAA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Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4xLWMwMzYgNDYuMjc2NzIwLCBNb24gRmViIDE5IDIwMDcgMjI6MTM6NDMgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhhcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOnhhcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iIHhhcDpDcmVhdGVEYXRlPSIyMDEwLTA4LTMwVDIzOjQ5OjE0LTA1OjAwIiB4YXA6TW9kaWZ5RGF0ZT0iMjAxMC0wOC0zMFQyMzo0OToxNC0wNTowMCIgeGFwOk1ldGFkYXRhRGF0ZT0iMjAxMC0wOC0zMFQyMzo0OToxNC0wNTowMCIgeGFwOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1MzIE1hY2ludG9zaCIgZGM6Zm9ybWF0PSJpbWFnZS9qcGVnIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0iaU1hYyIgcGhvdG9zaG9wOkhpc3Rvcnk9IiIgeGFwTU06SW5zdGFuY2VJRD0idXVpZDpFQjAwQjU5NDA4QjVERjExODdBNTlCQzExMkI0QjA2RSIgeGFwTU06RG9jdW1lbnRJRD0idXVpZDpFQTAwQjU5NDA4QjVERjExODdBNTlCQzExMkI0QjA2RSIgdGlmZjpPcmllbnRhdGlvbj0iMSIgdGlmZjpYUmVzb2x1dGlvbj0iNzIwMDkwLzEwMDAwIiB0aWZmOllSZXNvbHV0aW9uPSI3MjAwOTAvMTAwMDAiIHRpZmY6UmVzb2x1dGlvblVuaXQ9IjIiIHRpZmY6TmF0aXZlRGlnZXN0PSIyNTYsMjU3LDI1OCwyNTksMjYyLDI3NCwyNzcsMjg0LDUzMCw1MzEsMjgyLDI4MywyOTYsMzAxLDMxOCwzMTksNTI5LDUzMiwzMDYsMjcwLDI3MSwyNzIsMzA1LDMxNSwzMzQzMjs3RUY4RDFBOTcwMjlCOUNFOTAwNkUzRDcxRjgwNDdFNSIgZXhpZjpQaXhlbFhEaW1lbnNpb249IjM0MCIgZXhpZjpQaXhlbFlEaW1lbnNpb249IjM0MCIgZXhpZjpDb2xvclNwYWNlPSItMSIgZXhpZjpOYXRpdmVEaWdlc3Q9IjM2ODY0LDQwOTYwLDQwOTYxLDM3MTIxLDM3MTIyLDQwOTYyLDQwOTYzLDM3NTEwLDQwOTY0LDM2ODY3LDM2ODY4LDMzNDM0LDMzNDM3LDM0ODUwLDM0ODUyLDM0ODU1LDM0ODU2LDM3Mzc3LDM3Mzc4LDM3Mzc5LDM3MzgwLDM3MzgxLDM3MzgyLDM3MzgzLDM3Mzg0LDM3Mzg1LDM3Mzg2LDM3Mzk2LDQxNDgzLDQxNDg0LDQxNDg2LDQxNDg3LDQxNDg4LDQxNDkyLDQxNDkzLDQxNDk1LDQxNzI4LDQxNzI5LDQxNzMwLDQxOTg1LDQxOTg2LDQxOTg3LDQxOTg4LDQxOTg5LDQxOTkwLDQxOTkxLDQxOTkyLDQxOTkzLDQxOTk0LDQxOTk1LDQxOTk2LDQyMDE2LDAsMiw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwyMCwyMiwyMywyNCwyNSwyNiwyNywyOCwzMDtGRTM2RkQ0MzU0NEI0ODUyODY3OEVERkZGOTk0MkMwRiI+IDx4YXBNTTpEZXJpdmVkRnJvbSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQgZW5kPSJ3Ij8+/+IPJElDQ19QUk9GSUxFAAEBAAAPFGFwcGwCAAAAbW50clJHQiBYWVogB9oAAQAEAA8AMwADYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1hcHBsWM2pk1LRLUWykThyCK1QdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOclhZWgAAASwAAAAUZ1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3RwdAAAAWgAAAAUY2hhZAAAAXwAAAAsclRSQwAAAagAAAAOZ1RSQwAAAbgAAAAOYlRSQwAAAcgAAAAOdmNndAAAAdgAAAYSbmRpbgAAB+wAAAY+ZGVzYwAADiwAAABfZHNjbQAADowAAAA8bW1vZAAADsgAAAAoY3BydAAADvAAAAAkWFlaIAAAAAAAAHeaAABAmQAAAxlYWVogAAAAAAAAWO0AAKuMAAAXrVhZWiAAAAAAAAAmTgAAE/UAALheWFlaIAAAAAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAADAQAAAgAAAUUCyAQ5BZsHIQi8ClsL+w2ZDzsQ6hKXFEYWAhe5GVYa4xxxHfkfdSDyImcj0iU1JpAn5ikyKnkrvi0BLkEvgTC9MfkzNTRrNaE21DgHOTg6ZjuTPLw95D8MQDNBV0J5Q5pEuEXWRvJIDEklSjpL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",
"type": "image/jpeg",
"title": "$:/themes/tiddlywiki/starlight/ltbg.jpg"
},
"$:/themes/tiddlywiki/starlight/styles.tid": {
"title": "$:/themes/tiddlywiki/starlight/styles.tid",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n/*\nPlaceholder for a more thorough refinement of Snow White\n*/\n\n@font-face {\n font-family: \"Arvo\";\n font-style: normal;\n font-weight: 400;\n src: local(\"Arvo\"), url(<<datauri \"$:/themes/tiddlywiki/starlight/arvo.woff\">>) format(\"woff\");\n}\n\nhtml body, .tc-sidebar-scrollable-backdrop {\n\tfont-family: \"Arvo\", \"Times\";\n background: url(<<datauri \"$:/themes/tiddlywiki/starlight/ltbg.jpg\">>);\n}\n\n.tc-page-controls svg {\n <<filter \"drop-shadow(1px 1px 2px rgba(255,255,255,0.9))\">>\n}\n"
},
"$:/themes/tiddlywiki/starlight/themetweaks": {
"title": "$:/themes/tiddlywiki/starlight/themetweaks",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "Star Tweaks",
"text": "Demo of a control panel tab dynamically loaded with a theme.\n"
}
}
}
{
"tiddlers": {
"$:/themes/tiddlywiki/tight/base": {
"title": "$:/themes/tiddlywiki/tight/base",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\thtml body.tc-body {\n\t\tfont-size: 13px;\n\t\tline-height: 16px;\n\t}\n\n\thtml body.tc-body h1,\n\thtml body.tc-body h2,\n\thtml body.tc-body h3,\n\thtml body.tc-body h4,\n\thtml body.tc-body p {\n\t\tmargin-top: 0.3em;\n\t\tmargin-bottom: 0.3em;\n\t}\n\n\thtml body.tc-body code {\n\t\tfont-size: 0.8em;\n\t}\n\n\thtml body.tc-body section.tc-story-river {\n\t\tpadding: 0px;\n\t}\n\n\thtml body.tc-body div.tc-tiddler-frame {\n\t\tpadding: 12px;\n\t}\n\n\thtml body.tc-body div.tc-sidebar-scrollable {\n\t\tpadding: 12px 0 12px 12px;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-subtitle {\n\t\tfont-size: 0.7em;\n\t\tfont-weight: 700;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-tags-wrapper {\n\t\tmargin: 0;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame button.tc-tag-label,\n\thtml body.tc-body .tc-tiddler-frame span.tc-tag-label {\n\t\tfont-size: 0.8em;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-tiddler-body h1 {\n\t\tfont-size: 1.5em;\n\t\tfont-weight: 500;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-tiddler-body h2 {\n\t\tfont-size: 1.3em;\n\t\tfont-weight: 500;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-tiddler-body h3 {\n\t\tfont-size: 1.2em;\n\t\tfont-weight: 500;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-tiddler-body h4 {\n\t\tfont-size: 1.1em;\n\t\tfont-weight: 500;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-improvement-banner {\n\t\tmargin-right: -15px;\n\t\tmargin-left: -10px;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-tiddler-info {\n\t margin: 0 -13px 0 -13px;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-fold-banner {\n\t width: 13px;\n\t margin-left: -15px;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-unfold-banner {\n\t margin-left: -13px;\n\t margin-top: -4px;\n\t}\n\n}\n"
}
}
}
{
"tiddlers": {
"$:/themes/tiddlywiki/tight-heavier/base": {
"title": "$:/themes/tiddlywiki/tight-heavier/base",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n"
}
}
}
{
"tiddlers": {
"$:/themes/tiddlywiki/vanilla/themetweaks": {
"title": "$:/themes/tiddlywiki/vanilla/themetweaks",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ThemeTweaks/ThemeTweaks}}",
"text": "\\define lingo-base() $:/language/ThemeTweaks/\n\n\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n\\define backgroundimage-dropdown()\n<div class=\"tc-drop-down-wrapper\">\n<$button popup=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"\n\t$value=<<imageTitle>>\n/>\n\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n\\end\n\n\\define backgroundimageattachment-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\" default=\"scroll\">\n<option value=\"scroll\"><<lingo Settings/BackgroundImageAttachment/Scroll>></option>\n<option value=\"fixed\"><<lingo Settings/BackgroundImageAttachment/Fixed>></option>\n</$select>\n\\end\n\n\\define backgroundimagesize-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\" default=\"scroll\">\n<option value=\"auto\"><<lingo Settings/BackgroundImageSize/Auto>></option>\n<option value=\"cover\"><<lingo Settings/BackgroundImageSize/Cover>></option>\n<option value=\"contain\"><<lingo Settings/BackgroundImageSize/Contain>></option>\n</$select>\n\\end\n\n<<lingo ThemeTweaks/Hint>>\n\n! <<lingo Options>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><<lingo Options/SidebarLayout>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><option value=\"fixed-fluid\"><<lingo Options/SidebarLayout/Fixed-Fluid>></option><option value=\"fluid-fixed\"><<lingo Options/SidebarLayout/Fluid-Fixed>></option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><<lingo Options/StickyTitles>></$link><br>//<<lingo Options/StickyTitles/Hint>>// |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><option value=\"no\">{{$:/language/No}}</option><option value=\"yes\">{{$:/language/Yes}}</option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><<lingo Options/CodeWrapping>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><option value=\"pre\">{{$:/language/No}}</option><option value=\"pre-wrap\">{{$:/language/Yes}}</option></$select> |\n\n! <<lingo Settings>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"><<lingo Settings/FontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\"><<lingo Settings/CodeFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"><<lingo Settings/BackgroundImage>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" default=\"\" tag=\"input\"/> |<<backgroundimage-dropdown>> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\"><<lingo Settings/BackgroundImageAttachment>></$link> |<<backgroundimageattachment-dropdown>> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\"><<lingo Settings/BackgroundImageSize>></$link> |<<backgroundimagesize-dropdown>> | |\n\n! <<lingo Metrics>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\"><<lingo Metrics/FontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\"><<lingo Metrics/LineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\"><<lingo Metrics/BodyFontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\"><<lingo Metrics/BodyLineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\"><<lingo Metrics/StoryLeft>></$link><br>//<<lingo Metrics/StoryLeft/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\"><<lingo Metrics/StoryTop>></$link><br>//<<lingo Metrics/StoryTop/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\"><<lingo Metrics/StoryRight>></$link><br>//<<lingo Metrics/StoryRight/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\"><<lingo Metrics/StoryWidth>></$link><br>//<<lingo Metrics/StoryWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"><<lingo Metrics/TiddlerWidth>></$link><br>//<<lingo Metrics/TiddlerWidth/Hint>>//<br> |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\"><<lingo Metrics/SidebarBreakpoint>></$link><br>//<<lingo Metrics/SidebarBreakpoint/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\"><<lingo Metrics/SidebarWidth>></$link><br>//<<lingo Metrics/SidebarWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\" default=\"\" tag=\"input\"/> |\n"
},
"$:/themes/tiddlywiki/vanilla/base": {
"title": "$:/themes/tiddlywiki/vanilla/base",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\define custom-background-datauri()\n<$set name=\"background\" value={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}>\n<$list filter=\"[<background>is[image]]\">\n`background: url(`\n<$list filter=\"[<background>!has[_canonical_uri]]\">\n<$macrocall $name=\"datauri\" title={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}/>\n</$list>\n<$list filter=\"[<background>has[_canonical_uri]]\">\n<$view tiddler={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}} field=\"_canonical_uri\"/>\n</$list>\n`) center center;`\n`background-attachment: `{{$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment}}`;\n-webkit-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-moz-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-o-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\nbackground-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;`\n</$list>\n</$set>\n\\end\n\n\\define if-fluid-fixed(text,hiddenSidebarText)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" type=\"match\" text=\"fluid-fixed\">\n$text$\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">\n$hiddenSidebarText$\n</$reveal>\n</$reveal>\n\\end\n\n\\define if-editor-height-fixed(then,else)\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n$then$\n</$reveal>\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n$else$\n</$reveal>\n\\end\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\n\n/*\n** Start with the normalize CSS reset, and then belay some of its effects\n*/\n\n{{$:/themes/tiddlywiki/vanilla/reset}}\n\n*, input[type=\"search\"] {\n\tbox-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n}\n\nhtml button {\n\tline-height: 1.2;\n\tcolor: <<colour button-foreground>>;\n\tbackground: <<colour button-background>>;\n\tborder-color: <<colour button-border>>;\n}\n\n/*\n** Basic element styles\n*/\n\nhtml {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/fontfamily}};\n\ttext-rendering: optimizeLegibility; /* Enables kerning and ligatures etc. */\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\nhtml:-webkit-full-screen {\n\tbackground-color: <<colour page-background>>;\n}\n\nbody.tc-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/lineheight}};\n\tword-wrap: break-word;\n\t<<custom-background-datauri>>\n\tcolor: <<colour foreground>>;\n\tbackground-color: <<colour page-background>>;\n\tfill: <<colour foreground>>;\n}\n\nh1, h2, h3, h4, h5, h6 {\n\tline-height: 1.2;\n\tfont-weight: 300;\n}\n\npre {\n\tdisplay: block;\n\tpadding: 14px;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n\tword-break: normal;\n\tword-wrap: break-word;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tbackground-color: <<colour pre-background>>;\n\tborder: 1px solid <<colour pre-border>>;\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\ncode {\n\tcolor: <<colour code-foreground>>;\n\tbackground-color: <<colour code-background>>;\n\tborder: 1px solid <<colour code-border>>;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\nblockquote {\n\tborder-left: 5px solid <<colour blockquote-bar>>;\n\tmargin-left: 25px;\n\tpadding-left: 10px;\n\tquotes: \"\\201C\"\"\\201D\"\"\\2018\"\"\\2019\";\n}\n\nblockquote.tc-big-quote {\n\tfont-family: Georgia, serif;\n\tposition: relative;\n\tbackground: <<colour pre-background>>;\n\tborder-left: none;\n\tmargin-left: 50px;\n\tmargin-right: 50px;\n\tpadding: 10px;\n border-radius: 8px;\n}\n\nblockquote.tc-big-quote cite:before {\n\tcontent: \"\\2014 \\2009\";\n}\n\nblockquote.tc-big-quote:before {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: open-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n left: -50px;\n top: 42px;\n}\n\nblockquote.tc-big-quote:after {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: close-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n right: -80px;\n bottom: -20px;\n}\n\ndl dt {\n\tfont-weight: bold;\n\tmargin-top: 6px;\n}\n\ntextarea,\ninput[type=text],\ninput[type=search],\ninput[type=\"\"],\ninput:not([type]) {\n\tcolor: <<colour foreground>>;\n\tbackground: <<colour background>>;\n}\n\n.tc-muted {\n\tcolor: <<colour muted-foreground>>;\n}\n\nsvg.tc-image-button {\n\tpadding: 0px 1px 1px 0px;\n}\n\n.tc-icon-wrapper > svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\nkbd {\n\tdisplay: inline-block;\n\tpadding: 3px 5px;\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tcolor: <<colour foreground>>;\n\tvertical-align: middle;\n\tbackground-color: <<colour background>>;\n\tborder: solid 1px <<colour muted-foreground>>;\n\tborder-bottom-color: <<colour muted-foreground>>;\n\tborder-radius: 3px;\n\tbox-shadow: inset 0 -1px 0 <<colour muted-foreground>>;\n}\n\n/*\nMarkdown likes putting code elements inside pre elements\n*/\npre > code {\n\tpadding: 0;\n\tborder: none;\n\tbackground-color: inherit;\n\tcolor: inherit;\n}\n\ntable {\n\tborder: 1px solid <<colour table-border>>;\n\twidth: auto;\n\tmax-width: 100%;\n\tcaption-side: bottom;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n}\n\ntable th, table td {\n\tpadding: 0 7px 0 7px;\n\tborder-top: 1px solid <<colour table-border>>;\n\tborder-left: 1px solid <<colour table-border>>;\n}\n\ntable thead tr td, table th {\n\tbackground-color: <<colour table-header-background>>;\n\tfont-weight: bold;\n}\n\ntable tfoot tr td {\n\tbackground-color: <<colour table-footer-background>>;\n}\n\n.tc-csv-table {\n\twhite-space: nowrap;\n}\n\n.tc-tiddler-frame img,\n.tc-tiddler-frame svg,\n.tc-tiddler-frame canvas,\n.tc-tiddler-frame embed,\n.tc-tiddler-frame iframe {\n\tmax-width: 100%;\n}\n\n.tc-tiddler-body > embed,\n.tc-tiddler-body > iframe {\n\twidth: 100%;\n\theight: 600px;\n}\n\n/*\n** Links\n*/\n\nbutton.tc-tiddlylink,\na.tc-tiddlylink {\n\ttext-decoration: none;\n\tfont-weight: normal;\n\tcolor: <<colour tiddler-link-foreground>>;\n\t-webkit-user-select: inherit; /* Otherwise the draggable attribute makes links impossible to select */\n}\n\n.tc-sidebar-lists a.tc-tiddlylink {\n\tcolor: <<colour sidebar-tiddler-link-foreground>>;\n}\n\n.tc-sidebar-lists a.tc-tiddlylink:hover {\n\tcolor: <<colour sidebar-tiddler-link-foreground-hover>>;\n}\n\nbutton.tc-tiddlylink:hover,\na.tc-tiddlylink:hover {\n\ttext-decoration: underline;\n}\n\na.tc-tiddlylink-resolves {\n}\n\na.tc-tiddlylink-shadow {\n\tfont-weight: bold;\n}\n\na.tc-tiddlylink-shadow.tc-tiddlylink-resolves {\n\tfont-weight: normal;\n}\n\na.tc-tiddlylink-missing {\n\tfont-style: italic;\n}\n\na.tc-tiddlylink-external {\n\ttext-decoration: underline;\n\tcolor: <<colour external-link-foreground>>;\n\tbackground-color: <<colour external-link-background>>;\n}\n\na.tc-tiddlylink-external:visited {\n\tcolor: <<colour external-link-foreground-visited>>;\n\tbackground-color: <<colour external-link-background-visited>>;\n}\n\na.tc-tiddlylink-external:hover {\n\tcolor: <<colour external-link-foreground-hover>>;\n\tbackground-color: <<colour external-link-background-hover>>;\n}\n\n/*\n** Drag and drop styles\n*/\n\n.tc-tiddler-dragger {\n\tposition: relative;\n\tz-index: -10000;\n}\n\n.tc-tiddler-dragger-inner {\n\tposition: absolute;\n\ttop: -1000px;\n\tleft: -1000px;\n\tdisplay: inline-block;\n\tpadding: 8px 20px;\n\tfont-size: 16.9px;\n\tfont-weight: bold;\n\tline-height: 20px;\n\tcolor: <<colour dragger-foreground>>;\n\ttext-shadow: 0 1px 0 rgba(0, 0, 0, 1);\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour dragger-background>>;\n\tborder-radius: 20px;\n}\n\n.tc-tiddler-dragger-cover {\n\tposition: absolute;\n\tbackground-color: <<colour page-background>>;\n}\n\n.tc-dropzone {\n\tposition: relative;\n}\n\n.tc-dropzone.tc-dragover:before {\n\tz-index: 10000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour dropzone-background>>;\n\ttext-align: center;\n\tcontent: \"<<lingo DropMessage>>\";\n}\n\n.tc-droppable > .tc-droppable-placeholder {\n\tdisplay: none;\n}\n\n.tc-droppable.tc-dragover > .tc-droppable-placeholder {\n\tdisplay: block;\n\tborder: 2px dashed <<colour dropzone-background>>;\n}\n\n.tc-draggable {\n\tcursor: move;\n}\n\n/*\n** Plugin reload warning\n*/\n\n.tc-plugin-reload-warning {\n\tz-index: 1000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour alert-background>>;\n\ttext-align: center;\n}\n\n/*\n** Buttons\n*/\n\nbutton svg, button img, label svg, label img {\n\tvertical-align: middle;\n}\n\n.tc-btn-invisible {\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n cursor: pointer;\n}\n\n.tc-btn-boxed {\n\tfont-size: 0.6em;\n\tpadding: 0.2em;\n\tmargin: 1px;\n\tbackground: none;\n\tborder: 1px solid <<colour tiddler-controls-foreground>>;\n\tborder-radius: 0.25em;\n}\n\nhtml body.tc-body .tc-btn-boxed svg {\n\tfont-size: 1.6666em;\n}\n\n.tc-btn-boxed:hover {\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n}\n\nhtml body.tc-body .tc-btn-boxed:hover svg {\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded {\n\tfont-size: 0.5em;\n\tline-height: 2;\n\tpadding: 0em 0.3em 0.2em 0.4em;\n\tmargin: 1px;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n\tborder-radius: 2em;\n}\n\nhtml body.tc-body .tc-btn-rounded svg {\n\tfont-size: 1.6666em;\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded:hover {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour background>>;\n\tcolor: <<colour muted-foreground>>;\n}\n\nhtml body.tc-body .tc-btn-rounded:hover svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-icon svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-text {\n\tpadding: 0;\n\tmargin: 0;\n}\n\n.tc-btn-big-green {\n\tdisplay: inline-block;\n\tpadding: 8px;\n\tmargin: 4px 8px 4px 8px;\n\tbackground: <<colour download-background>>;\n\tcolor: <<colour download-foreground>>;\n\tfill: <<colour download-foreground>>;\n\tborder: none;\n\tfont-size: 1.2em;\n\tline-height: 1.4em;\n\ttext-decoration: none;\n}\n\n.tc-btn-big-green svg,\n.tc-btn-big-green img {\n\theight: 2em;\n\twidth: 2em;\n\tvertical-align: middle;\n\tfill: <<colour download-foreground>>;\n}\n\n.tc-sidebar-lists input {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-sidebar-lists button {\n\tcolor: <<colour sidebar-button-foreground>>;\n\tfill: <<colour sidebar-button-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini {\n\tcolor: <<colour sidebar-muted-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini:hover {\n\tcolor: <<colour sidebar-muted-foreground-hover>>;\n}\n\nbutton svg.tc-image-button, button .tc-image-button img {\n\theight: 1em;\n\twidth: 1em;\n}\n\n.tc-unfold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 100%;\n\twidth: calc(100% + 2px);\n\tmargin-left: -43px;\n\ttext-align: center;\n\tborder-top: 2px solid <<colour tiddler-info-background>>;\n\tmargin-top: 4px;\n}\n\n.tc-unfold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n\tborder-top: 2px solid <<colour tiddler-info-border>>;\n}\n\n.tc-unfold-banner svg, .tc-fold-banner svg {\n\theight: 0.75em;\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-unfold-banner:hover svg, .tc-fold-banner:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n.tc-fold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 23px;\n\ttext-align: center;\n\tmargin-left: -35px;\n\ttop: 6px;\n\tbottom: 6px;\n}\n\n.tc-fold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-unfold-banner {\n\t\tposition: static;\n\t\twidth: calc(100% + 59px);\n\t}\n\n\t.tc-fold-banner {\n\t\twidth: 16px;\n\t\tmargin-left: -16px;\n\t\tfont-size: 0.75em;\n\t}\n\n}\n\n/*\n** Tags and missing tiddlers\n*/\n\n.tc-tag-list-item {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin-right: 7px;\n}\n\n.tc-tags-wrapper {\n\tmargin: 4px 0 14px 0;\n}\n\n.tc-missing-tiddler-label {\n\tfont-style: italic;\n\tfont-weight: normal;\n\tdisplay: inline-block;\n\tfont-size: 11.844px;\n\tline-height: 14px;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n}\n\nbutton.tc-tag-label, span.tc-tag-label {\n\tdisplay: inline-block;\n\tpadding: 0.16em 0.7em;\n\tfont-size: 0.9em;\n\tfont-weight: 400;\n\tline-height: 1.2em;\n\tcolor: <<colour tag-foreground>>;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour tag-background>>;\n\tborder-radius: 1em;\n}\n\n.tc-untagged-separator {\n\twidth: 10em;\n\tleft: 0;\n\tmargin-left: 0;\n\tborder: 0;\n\theight: 1px;\n\tbackground: <<colour tab-divider>>;\n}\n\nbutton.tc-untagged-label {\n\tbackground-color: <<colour untagged-background>>;\n}\n\n.tc-tag-label svg, .tc-tag-label img {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour tag-foreground>>;\n\tvertical-align: text-bottom;\n}\n\n.tc-tag-manager-table .tc-tag-label {\n\twhite-space: normal;\n}\n\n.tc-tag-manager-tag {\n\twidth: 100%;\n}\n\n/*\n** Page layout\n*/\n\n.tc-topbar {\n\tposition: fixed;\n\tz-index: 1200;\n}\n\n.tc-topbar-left {\n\tleft: 29px;\n\ttop: 5px;\n}\n\n.tc-topbar-right {\n\ttop: 5px;\n\tright: 29px;\n}\n\n.tc-topbar button {\n\tpadding: 8px;\n}\n\n.tc-topbar svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-topbar button:hover svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-sidebar-header {\n\tcolor: <<colour sidebar-foreground>>;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-sidebar-header .tc-title a.tc-tiddlylink-resolves {\n\tfont-weight: 300;\n}\n\n.tc-sidebar-header .tc-sidebar-lists p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-sidebar-header .tc-missing-tiddler-label {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-advanced-search input {\n\twidth: 60%;\n}\n\n.tc-search a svg {\n\twidth: 1.2em;\n\theight: 1.2em;\n\tvertical-align: middle;\n}\n\n.tc-page-controls {\n\tmargin-top: 14px;\n\tfont-size: 1.5em;\n}\n\n.tc-page-controls button {\n\tmargin-right: 0.5em;\n}\n\n.tc-page-controls a.tc-tiddlylink:hover {\n\ttext-decoration: none;\n}\n\n.tc-page-controls img {\n\twidth: 1em;\n}\n\n.tc-page-controls svg {\n\tfill: <<colour sidebar-controls-foreground>>;\n}\n\n.tc-page-controls button:hover svg, .tc-page-controls a:hover svg {\n\tfill: <<colour sidebar-controls-foreground-hover>>;\n}\n\n.tc-menu-list-item {\n\twhite-space: nowrap;\n}\n\n.tc-menu-list-count {\n\tfont-weight: bold;\n}\n\n.tc-menu-list-subitem {\n\tpadding-left: 7px;\n}\n\n.tc-story-river {\n\tposition: relative;\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-sidebar-header {\n\t\tpadding: 14px;\n\t\tmin-height: 32px;\n\t\tmargin-top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t}\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tpadding: 0;\n\t}\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-message-box {\n\t\tmargin: 21px -21px 21px -21px;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tposition: fixed;\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t\tbottom: 0;\n\t\tright: 0;\n\t\toverflow-y: auto;\n\t\toverflow-x: auto;\n\t\t-webkit-overflow-scrolling: touch;\n\t\tmargin: 0 0 0 -42px;\n\t\tpadding: 71px 0 28px 42px;\n\t}\n\n\thtml[dir=\"rtl\"] .tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tright: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t}\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/storywidth}};\n\t\tpadding: 42px 42px 42px 42px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-story-river {\n\t\twidth: calc(100% - {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}});\n\t}\n\n\">>\n\n}\n\n@media print {\n\n\tbody.tc-body {\n\t\tbackground-color: transparent;\n\t}\n\n\t.tc-sidebar-header, .tc-topbar {\n\t\tdisplay: none;\n\t}\n\n\t.tc-story-river {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t}\n\n\t.tc-story-river .tc-tiddler-frame {\n\t\tmargin: 0;\n\t\tborder: none;\n\t\tpadding: 0;\n\t}\n}\n\n/*\n** Tiddler styles\n*/\n\n.tc-tiddler-frame {\n\tposition: relative;\n\tmargin-bottom: 28px;\n\tbackground-color: <<colour tiddler-background>>;\n\tborder: 1px solid <<colour tiddler-border>>;\n}\n\n{{$:/themes/tiddlywiki/vanilla/sticky}}\n\n.tc-tiddler-info {\n\tpadding: 14px 42px 14px 42px;\n\tbackground-color: <<colour tiddler-info-background>>;\n\tborder-top: 1px solid <<colour tiddler-info-border>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-border>>;\n}\n\n.tc-tiddler-info p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-tiddler-info .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour tiddler-info-tab-background>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-tab-background>>;\n}\n\n.tc-view-field-table {\n\twidth: 100%;\n}\n\n.tc-view-field-name {\n\twidth: 1%; /* Makes this column be as narrow as possible */\n\ttext-align: right;\n\tfont-style: italic;\n\tfont-weight: 200;\n}\n\n.tc-view-field-value {\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\tpadding: 14px 14px 14px 14px;\n\t}\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -14px 0 -14px;\n\t}\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\tpadding: 28px 42px 42px 42px;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth}};\n\t\tborder-radius: 2px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\">>\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -42px 0 -42px;\n\t}\n}\n\n.tc-site-title,\n.tc-titlebar {\n\tfont-weight: 300;\n\tfont-size: 2.35em;\n\tline-height: 1.2em;\n\tcolor: <<colour tiddler-title-foreground>>;\n\tmargin: 0;\n}\n\n.tc-site-title {\n\tcolor: <<colour site-title-foreground>>;\n}\n\n.tc-tiddler-title-icon {\n\tvertical-align: middle;\n}\n\n.tc-system-title-prefix {\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-titlebar h2 {\n\tfont-size: 1em;\n\tdisplay: inline;\n}\n\n.tc-titlebar img {\n\theight: 1em;\n}\n\n.tc-subtitle {\n\tfont-size: 0.9em;\n\tcolor: <<colour tiddler-subtitle-foreground>>;\n\tfont-weight: 300;\n}\n\n.tc-tiddler-missing .tc-title {\n font-style: italic;\n font-weight: normal;\n}\n\n.tc-tiddler-frame .tc-tiddler-controls {\n\tfloat: right;\n}\n\n.tc-tiddler-controls .tc-drop-down {\n\tfont-size: 0.6em;\n}\n\n.tc-tiddler-controls .tc-drop-down .tc-drop-down {\n\tfont-size: 1em;\n}\n\n.tc-tiddler-controls > span > button {\n\tvertical-align: baseline;\n\tmargin-left:5px;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img,\n.tc-search button svg, .tc-search a svg {\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img {\n\theight: 0.75em;\n}\n\n.tc-search button svg, .tc-search a svg {\n height: 1.2em;\n width: 1.2em;\n margin: 0 0.25em;\n}\n\n.tc-tiddler-controls button.tc-selected svg,\n.tc-page-controls button.tc-selected svg {\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n}\n\n.tc-tiddler-controls button.tc-btn-invisible:hover svg,\n.tc-search button:hover svg, .tc-search a:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n@media print {\n\t.tc-tiddler-controls {\n\t\tdisplay: none;\n\t}\n}\n\n.tc-tiddler-help { /* Help prompts within tiddler template */\n\tcolor: <<colour muted-foreground>>;\n\tmargin-top: 14px;\n}\n\n.tc-tiddler-help a.tc-tiddlylink {\n\tcolor: <<colour very-muted-foreground>>;\n}\n\n.tc-tiddler-frame .tc-edit-texteditor {\n\twidth: 100%;\n\tmargin: 4px 0 4px 0;\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor,\n.tc-tiddler-frame textarea.tc-edit-texteditor,\n.tc-tiddler-frame iframe.tc-edit-texteditor {\n\tpadding: 3px 3px 3px 3px;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tbackground-color: <<colour tiddler-editor-background>>;\n\tline-height: 1.3em;\n\t-webkit-appearance: none;\n}\n\n.tc-tiddler-frame .tc-binary-warning {\n\twidth: 100%;\n\theight: 5em;\n\ttext-align: center;\n\tpadding: 3em 3em 6em 3em;\n\tbackground: <<colour alert-background>>;\n\tborder: 1px solid <<colour alert-border>>;\n}\n\ncanvas.tc-edit-bitmapeditor {\n\tborder: 6px solid <<colour tiddler-editor-border-image>>;\n\tcursor: crosshair;\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\tmargin-top: 6px;\n\tmargin-bottom: 6px;\n}\n\n.tc-edit-bitmapeditor-width {\n\tdisplay: block;\n}\n\n.tc-edit-bitmapeditor-height {\n\tdisplay: block;\n}\n\n.tc-tiddler-body {\n\tclear: both;\n}\n\n.tc-tiddler-frame .tc-tiddler-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/bodylineheight}};\n}\n\n.tc-titlebar, .tc-tiddler-edit-title {\n\toverflow: hidden; /* https://github.com/Jermolene/TiddlyWiki5/issues/282 */\n}\n\nhtml body.tc-body.tc-single-tiddler-window {\n\tmargin: 1em;\n\tbackground: <<colour tiddler-background>>;\n}\n\n.tc-single-tiddler-window img,\n.tc-single-tiddler-window svg,\n.tc-single-tiddler-window canvas,\n.tc-single-tiddler-window embed,\n.tc-single-tiddler-window iframe {\n\tmax-width: 100%;\n}\n\n/*\n** Editor\n*/\n\n.tc-editor-toolbar {\n\tmargin-top: 8px;\n}\n\n.tc-editor-toolbar button {\n\tvertical-align: middle;\n\tbackground-color: <<colour tiddler-controls-foreground>>;\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n\tborder-radius: 4px;\n\tpadding: 3px;\n\tmargin: 2px 0 2px 4px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-adjunct {\n\tmargin-left: 1px;\n\twidth: 1em;\n\tborder-radius: 8px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-start-group {\n\tmargin-left: 11px;\n}\n\n.tc-editor-toolbar button.tc-selected {\n\tbackground-color: <<colour primary>>;\n}\n\n.tc-editor-toolbar button svg {\n\twidth: 1.6em;\n\theight: 1.2em;\n}\n\n.tc-editor-toolbar button:hover {\n\tbackground-color: <<colour tiddler-controls-foreground-selected>>;\n\tfill: <<colour background>>;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more {\n\twhite-space: normal;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more button {\n\tdisplay: inline-block;\n\tpadding: 3px;\n\twidth: auto;\n}\n\n.tc-editor-toolbar .tc-search-results {\n\tpadding: 0;\n}\n\n/*\n** Adjustments for fluid-fixed mode\n*/\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n<<if-fluid-fixed text:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 0;\n\t\tposition: relative;\n\t\twidth: auto;\n\t\tleft: 0;\n\t\tmargin-left: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\tmargin-right: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tbottom: 0;\n\t\tright: 0;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 42px);\n\t}\n\n\"\"\" hiddenSidebarText:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 3em;\n\t\tmargin-right: 0;\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 84px);\n\t}\n\n\"\"\">>\n\n}\n\n/*\n** Toolbar buttons\n*/\n\n.tc-page-controls svg.tc-image-new-button {\n fill: <<colour toolbar-new-button>>;\n}\n\n.tc-page-controls svg.tc-image-options-button {\n fill: <<colour toolbar-options-button>>;\n}\n\n.tc-page-controls svg.tc-image-save-button {\n fill: <<colour toolbar-save-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-info-button {\n fill: <<colour toolbar-info-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-edit-button {\n fill: <<colour toolbar-edit-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-close-button {\n fill: <<colour toolbar-close-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-delete-button {\n fill: <<colour toolbar-delete-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-cancel-button {\n fill: <<colour toolbar-cancel-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-done-button {\n fill: <<colour toolbar-done-button>>;\n}\n\n/*\n** Tiddler edit mode\n*/\n\n.tc-tiddler-edit-frame em.tc-edit {\n\tcolor: <<colour muted-foreground>>;\n\tfont-style: normal;\n}\n\n.tc-edit-type-dropdown a.tc-tiddlylink-missing {\n\tfont-style: normal;\n}\n\n.tc-edit-tags {\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tpadding: 4px 8px 4px 8px;\n}\n\n.tc-edit-add-tag {\n\tdisplay: inline-block;\n}\n\n.tc-edit-add-tag .tc-add-tag-name input {\n\twidth: 50%;\n}\n\n.tc-edit-add-tag .tc-keyboard {\n\tdisplay:inline;\n}\n\n.tc-edit-tags .tc-tag-label {\n\tdisplay: inline-block;\n}\n\n.tc-edit-tags-list {\n\tmargin: 14px 0 14px 0;\n}\n\n.tc-remove-tag-button {\n\tpadding-left: 4px;\n}\n\n.tc-tiddler-preview {\n\toverflow: auto;\n}\n\n.tc-tiddler-preview-preview {\n\tfloat: right;\n\twidth: 49%;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tmargin: 4px 0 3px 3px;\n\tpadding: 3px 3px 3px 3px;\n}\n\n<<if-editor-height-fixed then:\"\"\"\n\n.tc-tiddler-preview-preview {\n\toverflow-y: scroll;\n\theight: {{$:/config/TextEditor/EditorHeight/Height}};\n}\n\n\"\"\">>\n\n.tc-tiddler-frame .tc-tiddler-preview .tc-edit-texteditor {\n\twidth: 49%;\n}\n\n.tc-tiddler-frame .tc-tiddler-preview canvas.tc-edit-bitmapeditor {\n\tmax-width: 49%;\n}\n\n.tc-edit-fields {\n\twidth: 100%;\n}\n\n\n.tc-edit-fields table, .tc-edit-fields tr, .tc-edit-fields td {\n\tborder: none;\n\tpadding: 4px;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(odd) {\n\tbackground-color: <<colour tiddler-editor-fields-odd>>;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(even) {\n\tbackground-color: <<colour tiddler-editor-fields-even>>;\n}\n\n.tc-edit-field-name {\n\ttext-align: right;\n}\n\n.tc-edit-field-value input {\n\twidth: 100%;\n}\n\n.tc-edit-field-remove {\n}\n\n.tc-edit-field-remove svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n\tvertical-align: middle;\n}\n\n.tc-edit-field-add-name {\n\tdisplay: inline-block;\n\twidth: 15%;\n}\n\n.tc-edit-field-add-value {\n\tdisplay: inline-block;\n\twidth: 40%;\n}\n\n.tc-edit-field-add-button {\n\tdisplay: inline-block;\n\twidth: 10%;\n}\n\n/*\n** Storyview Classes\n*/\n\n.tc-storyview-zoomin-tiddler {\n\tposition: absolute;\n\tdisplay: block;\n\twidth: 100%;\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-storyview-zoomin-tiddler {\n\t\twidth: calc(100% - 84px);\n\t}\n\n}\n\n/*\n** Dropdowns\n*/\n\n.tc-btn-dropdown {\n\ttext-align: left;\n}\n\n.tc-btn-dropdown svg, .tc-btn-dropdown img {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-drop-down-wrapper {\n\tposition: relative;\n}\n\n.tc-drop-down {\n\tmin-width: 380px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\ttext-shadow: none;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-drop-down {\n\tmargin-left: 14px;\n}\n\n.tc-drop-down button svg, .tc-drop-down a svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-drop-down button.tc-btn-invisible:hover svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-drop-down p {\n\tpadding: 0 14px 0 14px;\n}\n\n.tc-drop-down svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-drop-down img {\n\twidth: 1em;\n}\n\n.tc-drop-down-language-chooser img {\n\twidth: 2em;\n\tvertical-align: baseline;\n}\n\n.tc-drop-down a, .tc-drop-down button {\n\tdisplay: block;\n\tpadding: 0 14px 0 14px;\n\twidth: 100%;\n\ttext-align: left;\n\tcolor: <<colour foreground>>;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-tab-set .tc-tab-buttons button {\n\tdisplay: inline-block;\n width: auto;\n margin-bottom: 0px;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.tc-drop-down .tc-prompt {\n\tpadding: 0 14px;\n}\n\n.tc-drop-down .tc-chooser {\n\tborder: none;\n}\n\n.tc-drop-down .tc-chooser .tc-swatches-horiz {\n\tfont-size: 0.4em;\n\tpadding-left: 1.2em;\n}\n\n.tc-drop-down .tc-file-input-wrapper {\n\twidth: 100%;\n}\n\n.tc-drop-down .tc-file-input-wrapper button {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-drop-down a:hover, .tc-drop-down button:hover, .tc-drop-down .tc-file-input-wrapper:hover button {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-drop-down .tc-tab-buttons button {\n\tbackground-color: <<colour dropdown-tab-background>>;\n}\n\n.tc-drop-down .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour dropdown-tab-background-selected>>;\n\tborder-bottom: 1px solid <<colour dropdown-tab-background-selected>>;\n}\n\n.tc-drop-down-bullet {\n\tdisplay: inline-block;\n\twidth: 0.5em;\n}\n\n.tc-drop-down .tc-tab-contents a {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-block-dropdown-wrapper {\n\tposition: relative;\n}\n\n.tc-block-dropdown {\n\tposition: absolute;\n\tmin-width: 220px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\tz-index: 1000;\n\ttext-shadow: none;\n}\n\n.tc-block-dropdown.tc-search-drop-down {\n\tmargin-left: -12px;\n}\n\n.tc-block-dropdown a {\n\tdisplay: block;\n\tpadding: 4px 14px 4px 14px;\n}\n\n.tc-block-dropdown.tc-search-drop-down a {\n\tdisplay: block;\n\tpadding: 0px 10px 0px 10px;\n}\n\n.tc-drop-down .tc-dropdown-item-plain,\n.tc-block-dropdown .tc-dropdown-item-plain {\n\tpadding: 4px 14px 4px 7px;\n}\n\n.tc-drop-down .tc-dropdown-item,\n.tc-block-dropdown .tc-dropdown-item {\n\tpadding: 4px 14px 4px 7px;\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-block-dropdown a:hover {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-search-results {\n\tpadding: 0 7px 0 7px;\n}\n\n.tc-image-chooser, .tc-colour-chooser {\n\twhite-space: normal;\n}\n\n.tc-image-chooser a,\n.tc-colour-chooser a {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\ttext-align: center;\n\tposition: relative;\n}\n\n.tc-image-chooser a {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 2px;\n\tmargin: 2px;\n\twidth: 4em;\n\theight: 4em;\n}\n\n.tc-colour-chooser a {\n\tpadding: 3px;\n\twidth: 2em;\n\theight: 2em;\n\tvertical-align: middle;\n}\n\n.tc-image-chooser a:hover,\n.tc-colour-chooser a:hover {\n\tbackground: <<colour primary>>;\n\tpadding: 0px;\n\tborder: 3px solid <<colour primary>>;\n}\n\n.tc-image-chooser a svg,\n.tc-image-chooser a img {\n\tdisplay: inline-block;\n\twidth: auto;\n\theight: auto;\n\tmax-width: 3.5em;\n\tmax-height: 3.5em;\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tleft: 0;\n\tright: 0;\n\tmargin: auto;\n}\n\n/*\n** Modals\n*/\n\n.tc-modal-wrapper {\n\tposition: fixed;\n\toverflow: auto;\n\toverflow-y: scroll;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 900;\n}\n\n.tc-modal-backdrop {\n\tposition: fixed;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 1000;\n\tbackground-color: <<colour modal-backdrop>>;\n}\n\n.tc-modal {\n\tz-index: 1100;\n\tbackground-color: <<colour modal-background>>;\n\tborder: 1px solid <<colour modal-border>>;\n}\n\n@media (max-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 1em;\n\t\tleft: 1em;\n\t\tright: 1em;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n@media (min-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 2em;\n\t\tleft: 25%;\n\t\twidth: 50%;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n.tc-modal-header {\n\tpadding: 9px 15px;\n\tborder-bottom: 1px solid <<colour modal-header-border>>;\n}\n\n.tc-modal-header h3 {\n\tmargin: 0;\n\tline-height: 30px;\n}\n\n.tc-modal-header img, .tc-modal-header svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-modal-body {\n\tpadding: 15px;\n}\n\n.tc-modal-footer {\n\tpadding: 14px 15px 15px;\n\tmargin-bottom: 0;\n\ttext-align: right;\n\tbackground-color: <<colour modal-footer-background>>;\n\tborder-top: 1px solid <<colour modal-footer-border>>;\n}\n\n/*\n** Notifications\n*/\n\n.tc-notification {\n\tposition: fixed;\n\ttop: 14px;\n\tright: 42px;\n\tz-index: 1300;\n\tmax-width: 280px;\n\tpadding: 0 14px 0 14px;\n\tbackground-color: <<colour notification-background>>;\n\tborder: 1px solid <<colour notification-border>>;\n}\n\n/*\n** Tabs\n*/\n\n.tc-tab-set.tc-vertical {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tab-buttons {\n\tfont-size: 0.85em;\n\tpadding-top: 1em;\n\tmargin-bottom: -2px;\n}\n\n.tc-tab-buttons.tc-vertical {\n\tz-index: 100;\n\tdisplay: block;\n\tpadding-top: 14px;\n\tvertical-align: top;\n\ttext-align: right;\n\tmargin-bottom: inherit;\n\tmargin-right: -1px;\n\tmax-width: 33%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n}\n\n.tc-tab-buttons button.tc-tab-selected {\n\tcolor: <<colour tab-foreground-selected>>;\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-left: 1px solid <<colour tab-border-selected>>;\n\tborder-top: 1px solid <<colour tab-border-selected>>;\n\tborder-right: 1px solid <<colour tab-border-selected>>;\n}\n\n.tc-tab-buttons button {\n\tcolor: <<colour tab-foreground>>;\n\tpadding: 3px 5px 3px 5px;\n\tmargin-right: 0.3em;\n\tfont-weight: 300;\n\tborder: none;\n\tbackground: inherit;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-right: 1px solid <<colour tab-border>>;\n\tborder-top-left-radius: 2px;\n\tborder-top-right-radius: 2px;\n}\n\n.tc-tab-buttons.tc-vertical button {\n\tdisplay: block;\n\twidth: 100%;\n\tmargin-top: 3px;\n\tmargin-right: 0;\n\ttext-align: right;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tborder-right: none;\n\tborder-top-left-radius: 2px;\n\tborder-bottom-left-radius: 2px;\n}\n\n.tc-tab-buttons.tc-vertical button.tc-tab-selected {\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-right: 1px solid <<colour tab-background-selected>>;\n}\n\n.tc-tab-divider {\n\tborder-top: 1px solid <<colour tab-divider>>;\n}\n\n.tc-tab-divider.tc-vertical {\n\tdisplay: none;\n}\n\n.tc-tab-content {\n\tmargin-top: 14px;\n}\n\n.tc-tab-content.tc-vertical {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-top: 0;\n\tpadding-left: 14px;\n\tborder-left: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 70%;\n\tflex: 1 0 70%;\n}\n\n.tc-sidebar-lists .tc-tab-buttons {\n\tmargin-bottom: -1px;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tcolor: <<colour sidebar-tab-foreground-selected>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border-selected>>;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button {\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tcolor: <<colour sidebar-tab-foreground>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border>>;\n}\n\n.tc-sidebar-lists .tc-tab-divider {\n\tborder-top: 1px solid <<colour sidebar-tab-divider>>;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\tdisplay: block;\n\twidth: 100%;\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tborder-top: none;\n\tborder-left: none;\n\tborder-bottom: none;\n\tborder-right: 1px solid #ccc;\n\tmargin-bottom: inherit;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tborder: none;\n}\n\n/*\n** Manager\n*/\n\n.tc-manager-wrapper {\n\t\n}\n\n.tc-manager-controls {\n\t\n}\n\n.tc-manager-control {\n\tmargin: 0.5em 0;\n}\n\n.tc-manager-list {\n\twidth: 100%;\n\tborder-top: 1px solid <<colour muted-foreground>>;\n\tborder-left: 1px solid <<colour muted-foreground>>;\n\tborder-right: 1px solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item {\n\n}\n\n.tc-manager-list-item-heading {\n display: block;\n width: 100%;\n text-align: left;\t\n\tborder-bottom: 1px solid <<colour muted-foreground>>;\n\tpadding: 3px;\n}\n\n.tc-manager-list-item-heading-selected {\n\tfont-weight: bold;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n\tbackground-color: <<colour foreground>>;\n}\n\n.tc-manager-list-item-heading:hover {\n\tbackground: <<colour primary>>;\n\tcolor: <<colour background>>;\n}\n\n.tc-manager-list-item-content {\n\tdisplay: flex;\n}\n\n.tc-manager-list-item-content-sidebar {\n flex: 1 0;\n background: <<colour tiddler-editor-background>>;\n border-right: 0.5em solid <<colour muted-foreground>>;\n border-bottom: 0.5em solid <<colour muted-foreground>>;\n white-space: nowrap;\n}\n\n.tc-manager-list-item-content-item-heading {\n\tdisplay: block;\n\twidth: 100%;\n\ttext-align: left;\n background: <<colour muted-foreground>>;\n\ttext-transform: uppercase;\n\tfont-size: 0.6em;\n\tfont-weight: bold;\n padding: 0.5em 0 0.5em 0;\n}\n\n.tc-manager-list-item-content-item-body {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-manager-list-item-content-item-body > pre {\n\tmargin: 0.5em 0 0.5em 0;\n\tborder: none;\n\tbackground: inherit;\n}\n\n.tc-manager-list-item-content-tiddler {\n flex: 3 1;\n border-left: 0.5em solid <<colour muted-foreground>>;\n border-right: 0.5em solid <<colour muted-foreground>>;\n border-bottom: 0.5em solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item-content-item-body > table {\n\tborder: none;\n\tpadding: 0;\n\tmargin: 0;\n}\n\n.tc-manager-list-item-content-item-body > table td {\n\tborder: none;\n}\n\n.tc-manager-icon-editor > button {\n\twidth: 100%;\n}\n\n.tc-manager-icon-editor > button > svg,\n.tc-manager-icon-editor > button > button {\n\twidth: 100%;\n\theight: auto;\n}\n\n/*\n** Alerts\n*/\n\n.tc-alerts {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tmax-width: 500px;\n\tz-index: 20000;\n}\n\n.tc-alert {\n\tposition: relative;\n\tmargin: 28px;\n\tpadding: 14px 14px 14px 14px;\n\tborder: 2px solid <<colour alert-border>>;\n\tbackground-color: <<colour alert-background>>;\n}\n\n.tc-alert-toolbar {\n\tposition: absolute;\n\ttop: 14px;\n\tright: 14px;\n}\n\n.tc-alert-toolbar svg {\n\tfill: <<colour alert-muted-foreground>>;\n}\n\n.tc-alert-subtitle {\n\tcolor: <<colour alert-muted-foreground>>;\n\tfont-weight: bold;\n}\n\n.tc-alert-highlight {\n\tcolor: <<colour alert-highlight>>;\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-static-alert {\n\t\tposition: relative;\n\t}\n\n\t.tc-static-alert-inner {\n\t\tposition: absolute;\n\t\tz-index: 100;\n\t}\n\n}\n\n.tc-static-alert-inner {\n\tpadding: 0 2px 2px 42px;\n\tcolor: <<colour static-alert-foreground>>;\n}\n\n/*\n** Control panel\n*/\n\n.tc-control-panel td {\n\tpadding: 4px;\n}\n\n.tc-control-panel table, .tc-control-panel table input, .tc-control-panel table textarea {\n\twidth: 100%;\n}\n\n.tc-plugin-info {\n\tdisplay: block;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground-colour: <<colour background>>;\n\tmargin: 0.5em 0 0.5em 0;\n\tpadding: 4px;\n}\n\n.tc-plugin-info-disabled {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n\tbackground: repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n}\n\n.tc-plugin-info-disabled:hover {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n\tbackground: repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n}\n\na.tc-tiddlylink.tc-plugin-info:hover {\n\ttext-decoration: none;\n\tbackground-color: <<colour primary>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour foreground>>;\n}\n\na.tc-tiddlylink.tc-plugin-info:hover .tc-plugin-info > .tc-plugin-info-chunk > svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-plugin-info-chunk {\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.tc-plugin-info-chunk h1 {\n\tfont-size: 1em;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk h2 {\n\tfont-size: 0.8em;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk div {\n\tfont-size: 0.7em;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info:hover > .tc-plugin-info-chunk > img, .tc-plugin-info:hover > .tc-plugin-info-chunk > svg {\n\twidth: 2em;\n\theight: 2em;\n\tfill: <<colour foreground>>;\n}\n\n.tc-plugin-info > .tc-plugin-info-chunk > img, .tc-plugin-info > .tc-plugin-info-chunk > svg {\n\twidth: 2em;\n\theight: 2em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-plugin-info.tc-small-icon > .tc-plugin-info-chunk > img, .tc-plugin-info.tc-small-icon > .tc-plugin-info-chunk > svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-plugin-info-dropdown {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tmargin-top: -8px;\n}\n\n.tc-plugin-info-dropdown-message {\n\tbackground: <<colour message-background>>;\n\tpadding: 0.5em 1em 0.5em 1em;\n\tfont-weight: bold;\n\tfont-size: 0.8em;\n}\n\n.tc-plugin-info-dropdown-body {\n\tpadding: 1em 1em 1em 1em;\n}\n\n/*\n** Message boxes\n*/\n\n.tc-message-box {\n\tborder: 1px solid <<colour message-border>>;\n\tbackground: <<colour message-background>>;\n\tpadding: 0px 21px 0px 21px;\n\tfont-size: 12px;\n\tline-height: 18px;\n\tcolor: <<colour message-foreground>>;\n}\n\n.tc-message-box svg {\n\twidth: 1em;\n\theight: 1em;\n vertical-align: text-bottom;\n}\n\n/*\n** Pictures\n*/\n\n.tc-bordered-image {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 5px;\n\tmargin: 5px;\n}\n\n/*\n** Floats\n*/\n\n.tc-float-right {\n\tfloat: right;\n}\n\n/*\n** Chooser\n*/\n\n.tc-chooser {\n\tborder: 1px solid <<colour table-border>>;\n}\n\n.tc-chooser-item {\n\tborder: 8px;\n\tpadding: 2px 4px;\n}\n\n.tc-chooser-item a.tc-tiddlylink {\n\tdisplay: block;\n\ttext-decoration: none;\n\tcolor: <<colour tiddler-link-foreground>>;\n\tbackground-color: <<colour tiddler-link-background>>;\n}\n\n.tc-chooser-item a.tc-tiddlylink:hover {\n\ttext-decoration: none;\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n}\n\n/*\n** Palette swatches\n*/\n\n.tc-swatches-horiz {\n}\n\n.tc-swatches-horiz .tc-swatch {\n\tdisplay: inline-block;\n}\n\n.tc-swatch {\n\twidth: 2em;\n\theight: 2em;\n\tmargin: 0.4em;\n\tborder: 1px solid #888;\n}\n\n/*\n** Table of contents\n*/\n\n.tc-sidebar-lists .tc-table-of-contents {\n\twhite-space: nowrap;\n}\n\n.tc-table-of-contents button {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents svg {\n\twidth: 0.7em;\n\theight: 0.7em;\n\tvertical-align: middle;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents ol {\n\tlist-style-type: none;\n\tpadding-left: 0;\n}\n\n.tc-table-of-contents ol ol {\n\tpadding-left: 1em;\n}\n\n.tc-table-of-contents li {\n\tfont-size: 1.0em;\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li a {\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li li {\n\tfont-size: 0.95em;\n\tfont-weight: normal;\n\tline-height: 1.4;\n}\n\n.tc-table-of-contents li li a {\n\tfont-weight: normal;\n}\n\n.tc-table-of-contents li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n\tline-height: 1.5;\n}\n\n.tc-table-of-contents li li li a {\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n}\n\n.tc-tabbed-table-of-contents {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents {\n\tz-index: 100;\n\tdisplay: inline-block;\n\tpadding-left: 1em;\n\tmax-width: 50%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n\tbackground: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a,\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tdisplay: block;\n\tpadding: 0.12em 1em 0.12em 0.25em;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a {\n\tborder-top: 1px solid <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-background>>;\n\tborder-bottom: 1px solid <<colour tab-background>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a:hover {\n\ttext-decoration: none;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour background>>;\n\tmargin-right: -1px;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a:hover {\n\ttext-decoration: none;\n}\n\n.tc-tabbed-table-of-contents .tc-tabbed-table-of-contents-content {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-left: 1.5em;\n\tpadding-right: 1.5em;\n\tborder: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 50%;\n\tflex: 1 0 50%;\n}\n\n/*\n** Dirty indicator\n*/\n\nbody.tc-dirty span.tc-dirty-indicator, body.tc-dirty span.tc-dirty-indicator svg {\n\tfill: <<colour dirty-indicator>>;\n\tcolor: <<colour dirty-indicator>>;\n}\n\n/*\n** File inputs\n*/\n\n.tc-file-input-wrapper {\n\tposition: relative;\n\toverflow: hidden;\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.tc-file-input-wrapper input[type=file] {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tfont-size: 999px;\n\tmax-width: 100%;\n\tmax-height: 100%;\n\tfilter: alpha(opacity=0);\n\topacity: 0;\n\toutline: none;\n\tbackground: white;\n\tcursor: pointer;\n\tdisplay: inline-block;\n}\n\n/*\n** Thumbnail macros\n*/\n\n.tc-thumbnail-wrapper {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin: 6px;\n\tvertical-align: top;\n}\n\n.tc-thumbnail-right-wrapper {\n\tfloat:right;\n\tmargin: 0.5em 0 0.5em 0.5em;\n}\n\n.tc-thumbnail-image {\n\ttext-align: center;\n\toverflow: hidden;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-image svg,\n.tc-thumbnail-image img {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n\tmin-width: 100%;\n\tmin-height: 100%;\n\tmax-width: 100%;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image img {\n\tfilter: alpha(opacity=0.8);\n\topacity: 0.8;\n}\n\n.tc-thumbnail-background {\n\tposition: absolute;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-icon svg,\n.tc-thumbnail-icon img {\n\twidth: 3em;\n\theight: 3em;\n\t<<filter \"drop-shadow(2px 2px 4px rgba(0,0,0,0.3))\">>\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon img {\n\tfill: #fff;\n\t<<filter \"drop-shadow(3px 3px 4px rgba(0,0,0,0.6))\">>\n}\n\n.tc-thumbnail-icon {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tdisplay: -webkit-flex;\n\t-webkit-align-items: center;\n\t-webkit-justify-content: center;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.tc-thumbnail-caption {\n\tposition: absolute;\n\tbackground-color: #777;\n\tcolor: #fff;\n\ttext-align: center;\n\tbottom: 0;\n\twidth: 100%;\n\tfilter: alpha(opacity=0.9);\n\topacity: 0.9;\n\tline-height: 1.4;\n\tborder-bottom-left-radius: 3px;\n\tborder-bottom-right-radius: 3px;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-caption {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n}\n\n/*\n** Errors\n*/\n\n.tc-error {\n\tbackground: #f00;\n\tcolor: #fff;\n}"
},
"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize",
"text": "15px"
},
"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/bodylineheight",
"text": "22px"
},
"$:/themes/tiddlywiki/vanilla/metrics/fontsize": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/fontsize",
"text": "14px"
},
"$:/themes/tiddlywiki/vanilla/metrics/lineheight": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/lineheight",
"text": "20px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storyleft": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storyleft",
"text": "0px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storytop": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storytop",
"text": "0px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storyright": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storyright",
"text": "770px"
},
"$:/themes/tiddlywiki/vanilla/metrics/storywidth": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/storywidth",
"text": "770px"
},
"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth",
"text": "686px"
},
"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint",
"text": "960px"
},
"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth": {
"title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth",
"text": "350px"
},
"$:/themes/tiddlywiki/vanilla/options/stickytitles": {
"title": "$:/themes/tiddlywiki/vanilla/options/stickytitles",
"text": "no"
},
"$:/themes/tiddlywiki/vanilla/options/sidebarlayout": {
"title": "$:/themes/tiddlywiki/vanilla/options/sidebarlayout",
"text": "fixed-fluid"
},
"$:/themes/tiddlywiki/vanilla/options/codewrapping": {
"title": "$:/themes/tiddlywiki/vanilla/options/codewrapping",
"text": "pre-wrap"
},
"$:/themes/tiddlywiki/vanilla/reset": {
"title": "$:/themes/tiddlywiki/vanilla/reset",
"type": "text/plain",
"text": "/*! normalize.css v3.0.0 | MIT License | git.io/normalize */\n\n/**\n * 1. Set default font family to sans-serif.\n * 2. Prevent iOS text size adjust after orientation change, without disabling\n * user zoom.\n */\n\nhtml {\n font-family: sans-serif; /* 1 */\n -ms-text-size-adjust: 100%; /* 2 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/**\n * Remove default margin.\n */\n\nbody {\n margin: 0;\n}\n\n/* HTML5 display definitions\n ========================================================================== */\n\n/**\n * Correct `block` display not defined in IE 8/9.\n */\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n/**\n * 1. Correct `inline-block` display not defined in IE 8/9.\n * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n */\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; /* 1 */\n vertical-align: baseline; /* 2 */\n}\n\n/**\n * Prevent modern browsers from displaying `audio` without controls.\n * Remove excess height in iOS 5 devices.\n */\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n/**\n * Address `[hidden]` styling not present in IE 8/9.\n * Hide the `template` element in IE, Safari, and Firefox < 22.\n */\n\n[hidden],\ntemplate {\n display: none;\n}\n\n/* Links\n ========================================================================== */\n\n/**\n * Remove the gray background color from active links in IE 10.\n */\n\na {\n background: transparent;\n}\n\n/**\n * Improve readability when focused and also mouse hovered in all browsers.\n */\n\na:active,\na:hover {\n outline: 0;\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Address styling not present in IE 8/9, Safari 5, and Chrome.\n */\n\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n/**\n * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.\n */\n\nb,\nstrong {\n font-weight: bold;\n}\n\n/**\n * Address styling not present in Safari 5 and Chrome.\n */\n\ndfn {\n font-style: italic;\n}\n\n/**\n * Address variable `h1` font-size and margin within `section` and `article`\n * contexts in Firefox 4+, Safari 5, and Chrome.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/**\n * Address styling not present in IE 8/9.\n */\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n/**\n * Address inconsistent and variable font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` affecting `line-height` in all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove border when inside `a` element in IE 8/9.\n */\n\nimg {\n border: 0;\n}\n\n/**\n * Correct overflow displayed oddly in IE 9.\n */\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * Address margin not present in IE 8/9 and Safari 5.\n */\n\nfigure {\n margin: 1em 40px;\n}\n\n/**\n * Address differences between Firefox and other browsers.\n */\n\nhr {\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n height: 0;\n}\n\n/**\n * Contain overflow in all browsers.\n */\n\npre {\n overflow: auto;\n}\n\n/**\n * Address odd `em`-unit font size rendering in all browsers.\n */\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * Known limitation: by default, Chrome and Safari on OS X allow very limited\n * styling of `select`, unless a `border` property is set.\n */\n\n/**\n * 1. Correct color not being inherited.\n * Known issue: affects color of disabled elements.\n * 2. Correct font properties not being inherited.\n * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; /* 1 */\n font: inherit; /* 2 */\n margin: 0; /* 3 */\n}\n\n/**\n * Address `overflow` set to `hidden` in IE 8/9/10.\n */\n\nbutton {\n overflow: visible;\n}\n\n/**\n * Address inconsistent `text-transform` inheritance for `button` and `select`.\n * All other form control elements do not inherit `text-transform` values.\n * Correct `button` style inheritance in Firefox, IE 8+, and Opera\n * Correct `select` style inheritance in Firefox.\n */\n\nbutton,\nselect {\n text-transform: none;\n}\n\n/**\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n * and `video` controls.\n * 2. Correct inability to style clickable `input` types in iOS.\n * 3. Improve usability and consistency of cursor style between image-type\n * `input` and others.\n */\n\nbutton,\nhtml input[type=\"button\"], /* 1 */\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; /* 2 */\n cursor: pointer; /* 3 */\n}\n\n/**\n * Re-set default cursor for disabled elements.\n */\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n/**\n * Remove inner padding and border in Firefox 4+.\n */\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n/**\n * Address Firefox 4+ setting `line-height` on `input` using `!important` in\n * the UA stylesheet.\n */\n\ninput {\n line-height: normal;\n}\n\n/**\n * It's recommended that you don't attempt to style these elements.\n * Firefox's implementation doesn't respect box-sizing, padding, or width.\n *\n * 1. Address box sizing set to `content-box` in IE 8/9/10.\n * 2. Remove excess padding in IE 8/9/10.\n */\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Fix the cursor style for Chrome's increment/decrement buttons. For certain\n * `font-size` values of the `input`, it causes the cursor style of the\n * decrement button to change from `default` to `text`.\n */\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.\n * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome\n * (include `-moz` to future-proof).\n */\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n -moz-box-sizing: content-box;\n -webkit-box-sizing: content-box; /* 2 */\n box-sizing: content-box;\n}\n\n/**\n * Remove inner padding and search cancel button in Safari and Chrome on OS X.\n * Safari (but not Chrome) clips the cancel button when the search input has\n * padding (and `textfield` appearance).\n */\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * Define consistent border, margin, and padding.\n */\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n/**\n * 1. Correct `color` not being inherited in IE 8/9.\n * 2. Remove padding so people aren't caught out if they zero out fieldsets.\n */\n\nlegend {\n border: 0; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Remove default vertical scrollbar in IE 8/9.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * Don't inherit the `font-weight` (applied by a rule above).\n * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n */\n\noptgroup {\n font-weight: bold;\n}\n\n/* Tables\n ========================================================================== */\n\n/**\n * Remove most spacing between table cells.\n */\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n"
},
"$:/themes/tiddlywiki/vanilla/settings/fontfamily": {
"title": "$:/themes/tiddlywiki/vanilla/settings/fontfamily",
"text": "\"Helvetica Neue\", Helvetica, Arial, \"Lucida Grande\", \"DejaVu Sans\", sans-serif"
},
"$:/themes/tiddlywiki/vanilla/settings/codefontfamily": {
"title": "$:/themes/tiddlywiki/vanilla/settings/codefontfamily",
"text": "Monaco, Consolas, \"Lucida Console\", \"DejaVu Sans Mono\", monospace"
},
"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment": {
"title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment",
"text": "fixed"
},
"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize": {
"title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize",
"text": "auto"
},
"$:/themes/tiddlywiki/vanilla/sticky": {
"title": "$:/themes/tiddlywiki/vanilla/sticky",
"text": "<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\" type=\"match\" text=\"yes\">\n``\n.tc-tiddler-title {\n\tposition: -webkit-sticky;\n\tposition: -moz-sticky;\n\tposition: -o-sticky;\n\tposition: -ms-sticky;\n\tposition: sticky;\n\ttop: 0px;\n\tbackground: ``<<colour tiddler-background>>``;\n\tz-index: 500;\n}\n``\n</$reveal>\n"
}
}
}
\define custom-background-datauri()
<$set name="background" value={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}>
<$list filter="[<background>is[image]]">
`background: url(`
<$list filter="[<background>!has[_canonical_uri]]">
<$macrocall $name="datauri" title={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}/>
</$list>
<$list filter="[<background>has[_canonical_uri]]">
<$view tiddler={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}} field="_canonical_uri"/>
</$list>
`) center center;`
`background-attachment: `{{$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment}}`;
-webkit-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;
-moz-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;
-o-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;
background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;`
</$list>
</$set>
\end
\define if-fluid-fixed(text,hiddenSidebarText)
<$reveal state="$:/themes/tiddlywiki/vanilla/options/sidebarlayout" type="match" text="fluid-fixed">
$text$
<$reveal state="$:/state/sidebar" type="nomatch" text="yes" default="yes">
$hiddenSidebarText$
</$reveal>
</$reveal>
\end
\define if-editor-height-fixed(then,else)
<$reveal state="$:/config/TextEditor/EditorHeight/Mode" type="match" text="fixed">
$then$
</$reveal>
<$reveal state="$:/config/TextEditor/EditorHeight/Mode" type="match" text="auto">
$else$
</$reveal>
\end
\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock
/*
** Start with the normalize CSS reset, and then belay some of its effects
*/
{{$:/themes/tiddlywiki/vanilla/reset}}
*, input[type="search"] {
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
html button {
line-height: 1.2;
color: <<colour button-foreground>>;
background: <<colour button-background>>;
border-color: <<colour button-border>>;
}
/*
** Basic element styles
*/
html {
font-family: {{$:/themes/tiddlywiki/vanilla/settings/fontfamily}};
text-rendering: optimizeLegibility; /* Enables kerning and ligatures etc. */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
html:-webkit-full-screen {
background-color: <<colour page-background>>;
}
body.tc-body {
font-size: {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}};
line-height: {{$:/themes/tiddlywiki/vanilla/metrics/lineheight}};
word-wrap: break-word;
<<custom-background-datauri>>
color: <<colour foreground>>;
background-color: <<colour page-background>>;
fill: <<colour foreground>>;
}
h1, h2, h3, h4, h5, h6 {
line-height: 1.2;
font-weight: 300;
}
pre {
display: block;
padding: 14px;
margin-top: 1em;
margin-bottom: 1em;
word-break: normal;
word-wrap: break-word;
white-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};
background-color: <<colour pre-background>>;
border: 1px solid <<colour pre-border>>;
padding: 0 3px 2px;
border-radius: 3px;
font-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};
}
code {
color: <<colour code-foreground>>;
background-color: <<colour code-background>>;
border: 1px solid <<colour code-border>>;
white-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};
padding: 0 3px 2px;
border-radius: 3px;
font-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};
}
blockquote {
border-left: 5px solid <<colour blockquote-bar>>;
margin-left: 25px;
padding-left: 10px;
quotes: "\201C""\201D""\2018""\2019";
}
blockquote.tc-big-quote {
font-family: Georgia, serif;
position: relative;
background: <<colour pre-background>>;
border-left: none;
margin-left: 50px;
margin-right: 50px;
padding: 10px;
border-radius: 8px;
}
blockquote.tc-big-quote cite:before {
content: "\2014 \2009";
}
blockquote.tc-big-quote:before {
font-family: Georgia, serif;
color: <<colour blockquote-bar>>;
content: open-quote;
font-size: 8em;
line-height: 0.1em;
margin-right: 0.25em;
vertical-align: -0.4em;
position: absolute;
left: -50px;
top: 42px;
}
blockquote.tc-big-quote:after {
font-family: Georgia, serif;
color: <<colour blockquote-bar>>;
content: close-quote;
font-size: 8em;
line-height: 0.1em;
margin-right: 0.25em;
vertical-align: -0.4em;
position: absolute;
right: -80px;
bottom: -20px;
}
dl dt {
font-weight: bold;
margin-top: 6px;
}
textarea,
input[type=text],
input[type=search],
input[type=""],
input:not([type]) {
color: <<colour foreground>>;
background: <<colour background>>;
}
.tc-muted {
color: <<colour muted-foreground>>;
}
svg.tc-image-button {
padding: 0px 1px 1px 0px;
}
.tc-icon-wrapper > svg {
width: 1em;
height: 1em;
}
kbd {
display: inline-block;
padding: 3px 5px;
font-size: 0.8em;
line-height: 1.2;
color: <<colour foreground>>;
vertical-align: middle;
background-color: <<colour background>>;
border: solid 1px <<colour muted-foreground>>;
border-bottom-color: <<colour muted-foreground>>;
border-radius: 3px;
box-shadow: inset 0 -1px 0 <<colour muted-foreground>>;
}
/*
Markdown likes putting code elements inside pre elements
*/
pre > code {
padding: 0;
border: none;
background-color: inherit;
color: inherit;
}
table {
border: 1px solid <<colour table-border>>;
width: auto;
max-width: 100%;
caption-side: bottom;
margin-top: 1em;
margin-bottom: 1em;
}
table th, table td {
padding: 0 7px 0 7px;
border-top: 1px solid <<colour table-border>>;
border-left: 1px solid <<colour table-border>>;
}
table thead tr td, table th {
background-color: <<colour table-header-background>>;
font-weight: bold;
}
table tfoot tr td {
background-color: <<colour table-footer-background>>;
}
.tc-csv-table {
white-space: nowrap;
}
.tc-tiddler-frame img,
.tc-tiddler-frame svg,
.tc-tiddler-frame canvas,
.tc-tiddler-frame embed,
.tc-tiddler-frame iframe {
max-width: 100%;
}
.tc-tiddler-body > embed,
.tc-tiddler-body > iframe {
width: 100%;
height: 600px;
}
/*
** Links
*/
button.tc-tiddlylink,
a.tc-tiddlylink {
text-decoration: none;
font-weight: normal;
color: <<colour tiddler-link-foreground>>;
-webkit-user-select: inherit; /* Otherwise the draggable attribute makes links impossible to select */
}
.tc-sidebar-lists a.tc-tiddlylink {
color: <<colour sidebar-tiddler-link-foreground>>;
}
.tc-sidebar-lists a.tc-tiddlylink:hover {
color: <<colour sidebar-tiddler-link-foreground-hover>>;
}
button.tc-tiddlylink:hover,
a.tc-tiddlylink:hover {
text-decoration: underline;
}
a.tc-tiddlylink-resolves {
}
a.tc-tiddlylink-shadow {
font-weight: bold;
}
a.tc-tiddlylink-shadow.tc-tiddlylink-resolves {
font-weight: normal;
}
a.tc-tiddlylink-missing {
font-style: italic;
}
a.tc-tiddlylink-external {
text-decoration: underline;
color: <<colour external-link-foreground>>;
background-color: <<colour external-link-background>>;
}
a.tc-tiddlylink-external:visited {
color: <<colour external-link-foreground-visited>>;
background-color: <<colour external-link-background-visited>>;
}
a.tc-tiddlylink-external:hover {
color: <<colour external-link-foreground-hover>>;
background-color: <<colour external-link-background-hover>>;
}
/*
** Drag and drop styles
*/
.tc-tiddler-dragger {
position: relative;
z-index: -10000;
}
.tc-tiddler-dragger-inner {
position: absolute;
top: -1000px;
left: -1000px;
display: inline-block;
padding: 8px 20px;
font-size: 16.9px;
font-weight: bold;
line-height: 20px;
color: <<colour dragger-foreground>>;
text-shadow: 0 1px 0 rgba(0, 0, 0, 1);
white-space: nowrap;
vertical-align: baseline;
background-color: <<colour dragger-background>>;
border-radius: 20px;
}
.tc-tiddler-dragger-cover {
position: absolute;
background-color: <<colour page-background>>;
}
.tc-dropzone {
position: relative;
}
.tc-dropzone.tc-dragover:before {
z-index: 10000;
display: block;
position: fixed;
top: 0;
left: 0;
right: 0;
background: <<colour dropzone-background>>;
text-align: center;
content: "<<lingo DropMessage>>";
}
.tc-droppable > .tc-droppable-placeholder {
display: none;
}
.tc-droppable.tc-dragover > .tc-droppable-placeholder {
display: block;
border: 2px dashed <<colour dropzone-background>>;
}
.tc-draggable {
cursor: move;
}
/*
** Plugin reload warning
*/
.tc-plugin-reload-warning {
z-index: 1000;
display: block;
position: fixed;
top: 0;
left: 0;
right: 0;
background: <<colour alert-background>>;
text-align: center;
}
/*
** Buttons
*/
button svg, button img, label svg, label img {
vertical-align: middle;
}
.tc-btn-invisible {
padding: 0;
margin: 0;
background: none;
border: none;
cursor: pointer;
}
.tc-btn-boxed {
font-size: 0.6em;
padding: 0.2em;
margin: 1px;
background: none;
border: 1px solid <<colour tiddler-controls-foreground>>;
border-radius: 0.25em;
}
html body.tc-body .tc-btn-boxed svg {
font-size: 1.6666em;
}
.tc-btn-boxed:hover {
background: <<colour muted-foreground>>;
color: <<colour background>>;
}
html body.tc-body .tc-btn-boxed:hover svg {
fill: <<colour background>>;
}
.tc-btn-rounded {
font-size: 0.5em;
line-height: 2;
padding: 0em 0.3em 0.2em 0.4em;
margin: 1px;
border: 1px solid <<colour muted-foreground>>;
background: <<colour muted-foreground>>;
color: <<colour background>>;
border-radius: 2em;
}
html body.tc-body .tc-btn-rounded svg {
font-size: 1.6666em;
fill: <<colour background>>;
}
.tc-btn-rounded:hover {
border: 1px solid <<colour muted-foreground>>;
background: <<colour background>>;
color: <<colour muted-foreground>>;
}
html body.tc-body .tc-btn-rounded:hover svg {
fill: <<colour muted-foreground>>;
}
.tc-btn-icon svg {
height: 1em;
width: 1em;
fill: <<colour muted-foreground>>;
}
.tc-btn-text {
padding: 0;
margin: 0;
}
.tc-btn-big-green {
display: inline-block;
padding: 8px;
margin: 4px 8px 4px 8px;
background: <<colour download-background>>;
color: <<colour download-foreground>>;
fill: <<colour download-foreground>>;
border: none;
font-size: 1.2em;
line-height: 1.4em;
text-decoration: none;
}
.tc-btn-big-green svg,
.tc-btn-big-green img {
height: 2em;
width: 2em;
vertical-align: middle;
fill: <<colour download-foreground>>;
}
.tc-sidebar-lists input {
color: <<colour foreground>>;
}
.tc-sidebar-lists button {
color: <<colour sidebar-button-foreground>>;
fill: <<colour sidebar-button-foreground>>;
}
.tc-sidebar-lists button.tc-btn-mini {
color: <<colour sidebar-muted-foreground>>;
}
.tc-sidebar-lists button.tc-btn-mini:hover {
color: <<colour sidebar-muted-foreground-hover>>;
}
button svg.tc-image-button, button .tc-image-button img {
height: 1em;
width: 1em;
}
.tc-unfold-banner {
position: absolute;
padding: 0;
margin: 0;
background: none;
border: none;
width: 100%;
width: calc(100% + 2px);
margin-left: -43px;
text-align: center;
border-top: 2px solid <<colour tiddler-info-background>>;
margin-top: 4px;
}
.tc-unfold-banner:hover {
background: <<colour tiddler-info-background>>;
border-top: 2px solid <<colour tiddler-info-border>>;
}
.tc-unfold-banner svg, .tc-fold-banner svg {
height: 0.75em;
fill: <<colour tiddler-controls-foreground>>;
}
.tc-unfold-banner:hover svg, .tc-fold-banner:hover svg {
fill: <<colour tiddler-controls-foreground-hover>>;
}
.tc-fold-banner {
position: absolute;
padding: 0;
margin: 0;
background: none;
border: none;
width: 23px;
text-align: center;
margin-left: -35px;
top: 6px;
bottom: 6px;
}
.tc-fold-banner:hover {
background: <<colour tiddler-info-background>>;
}
@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
.tc-unfold-banner {
position: static;
width: calc(100% + 59px);
}
.tc-fold-banner {
width: 16px;
margin-left: -16px;
font-size: 0.75em;
}
}
/*
** Tags and missing tiddlers
*/
.tc-tag-list-item {
position: relative;
display: inline-block;
margin-right: 7px;
}
.tc-tags-wrapper {
margin: 4px 0 14px 0;
}
.tc-missing-tiddler-label {
font-style: italic;
font-weight: normal;
display: inline-block;
font-size: 11.844px;
line-height: 14px;
white-space: nowrap;
vertical-align: baseline;
}
button.tc-tag-label, span.tc-tag-label {
display: inline-block;
padding: 0.16em 0.7em;
font-size: 0.9em;
font-weight: 400;
line-height: 1.2em;
color: <<colour tag-foreground>>;
white-space: nowrap;
vertical-align: baseline;
background-color: <<colour tag-background>>;
border-radius: 1em;
}
.tc-untagged-separator {
width: 10em;
left: 0;
margin-left: 0;
border: 0;
height: 1px;
background: <<colour tab-divider>>;
}
button.tc-untagged-label {
background-color: <<colour untagged-background>>;
}
.tc-tag-label svg, .tc-tag-label img {
height: 1em;
width: 1em;
fill: <<colour tag-foreground>>;
vertical-align: text-bottom;
}
.tc-tag-manager-table .tc-tag-label {
white-space: normal;
}
.tc-tag-manager-tag {
width: 100%;
}
/*
** Page layout
*/
.tc-topbar {
position: fixed;
z-index: 1200;
}
.tc-topbar-left {
left: 29px;
top: 5px;
}
.tc-topbar-right {
top: 5px;
right: 29px;
}
.tc-topbar button {
padding: 8px;
}
.tc-topbar svg {
fill: <<colour muted-foreground>>;
}
.tc-topbar button:hover svg {
fill: <<colour foreground>>;
}
.tc-sidebar-header {
color: <<colour sidebar-foreground>>;
fill: <<colour sidebar-foreground>>;
}
.tc-sidebar-header .tc-title a.tc-tiddlylink-resolves {
font-weight: 300;
}
.tc-sidebar-header .tc-sidebar-lists p {
margin-top: 3px;
margin-bottom: 3px;
}
.tc-sidebar-header .tc-missing-tiddler-label {
color: <<colour sidebar-foreground>>;
}
.tc-advanced-search input {
width: 60%;
}
.tc-search a svg {
width: 1.2em;
height: 1.2em;
vertical-align: middle;
}
.tc-page-controls {
margin-top: 14px;
font-size: 1.5em;
}
.tc-page-controls button {
margin-right: 0.5em;
}
.tc-page-controls a.tc-tiddlylink:hover {
text-decoration: none;
}
.tc-page-controls img {
width: 1em;
}
.tc-page-controls svg {
fill: <<colour sidebar-controls-foreground>>;
}
.tc-page-controls button:hover svg, .tc-page-controls a:hover svg {
fill: <<colour sidebar-controls-foreground-hover>>;
}
.tc-menu-list-item {
white-space: nowrap;
}
.tc-menu-list-count {
font-weight: bold;
}
.tc-menu-list-subitem {
padding-left: 7px;
}
.tc-story-river {
position: relative;
}
@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
.tc-sidebar-header {
padding: 14px;
min-height: 32px;
margin-top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};
}
.tc-story-river {
position: relative;
padding: 0;
}
}
@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
.tc-message-box {
margin: 21px -21px 21px -21px;
}
.tc-sidebar-scrollable {
position: fixed;
top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};
left: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};
bottom: 0;
right: 0;
overflow-y: auto;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
margin: 0 0 0 -42px;
padding: 71px 0 28px 42px;
}
html[dir="rtl"] .tc-sidebar-scrollable {
left: auto;
right: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};
}
.tc-story-river {
position: relative;
left: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};
top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};
width: {{$:/themes/tiddlywiki/vanilla/metrics/storywidth}};
padding: 42px 42px 42px 42px;
}
<<if-no-sidebar "
.tc-story-river {
width: calc(100% - {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}});
}
">>
}
@media print {
body.tc-body {
background-color: transparent;
}
.tc-sidebar-header, .tc-topbar {
display: none;
}
.tc-story-river {
margin: 0;
padding: 0;
}
.tc-story-river .tc-tiddler-frame {
margin: 0;
border: none;
padding: 0;
}
}
/*
** Tiddler styles
*/
.tc-tiddler-frame {
position: relative;
margin-bottom: 28px;
background-color: <<colour tiddler-background>>;
border: 1px solid <<colour tiddler-border>>;
}
{{$:/themes/tiddlywiki/vanilla/sticky}}
.tc-tiddler-info {
padding: 14px 42px 14px 42px;
background-color: <<colour tiddler-info-background>>;
border-top: 1px solid <<colour tiddler-info-border>>;
border-bottom: 1px solid <<colour tiddler-info-border>>;
}
.tc-tiddler-info p {
margin-top: 3px;
margin-bottom: 3px;
}
.tc-tiddler-info .tc-tab-buttons button.tc-tab-selected {
background-color: <<colour tiddler-info-tab-background>>;
border-bottom: 1px solid <<colour tiddler-info-tab-background>>;
}
.tc-view-field-table {
width: 100%;
}
.tc-view-field-name {
width: 1%; /* Makes this column be as narrow as possible */
text-align: right;
font-style: italic;
font-weight: 200;
}
.tc-view-field-value {
}
@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
.tc-tiddler-frame {
padding: 14px 14px 14px 14px;
}
.tc-tiddler-info {
margin: 0 -14px 0 -14px;
}
}
@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
.tc-tiddler-frame {
padding: 28px 42px 42px 42px;
width: {{$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth}};
border-radius: 2px;
}
<<if-no-sidebar "
.tc-tiddler-frame {
width: 100%;
}
">>
.tc-tiddler-info {
margin: 0 -42px 0 -42px;
}
}
.tc-site-title,
.tc-titlebar {
font-weight: 300;
font-size: 2.35em;
line-height: 1.2em;
color: <<colour tiddler-title-foreground>>;
margin: 0;
}
.tc-site-title {
color: <<colour site-title-foreground>>;
}
.tc-tiddler-title-icon {
vertical-align: middle;
}
.tc-system-title-prefix {
color: <<colour muted-foreground>>;
}
.tc-titlebar h2 {
font-size: 1em;
display: inline;
}
.tc-titlebar img {
height: 1em;
}
.tc-subtitle {
font-size: 0.9em;
color: <<colour tiddler-subtitle-foreground>>;
font-weight: 300;
}
.tc-tiddler-missing .tc-title {
font-style: italic;
font-weight: normal;
}
.tc-tiddler-frame .tc-tiddler-controls {
float: right;
}
.tc-tiddler-controls .tc-drop-down {
font-size: 0.6em;
}
.tc-tiddler-controls .tc-drop-down .tc-drop-down {
font-size: 1em;
}
.tc-tiddler-controls > span > button {
vertical-align: baseline;
margin-left:5px;
}
.tc-tiddler-controls button svg, .tc-tiddler-controls button img,
.tc-search button svg, .tc-search a svg {
fill: <<colour tiddler-controls-foreground>>;
}
.tc-tiddler-controls button svg, .tc-tiddler-controls button img {
height: 0.75em;
}
.tc-search button svg, .tc-search a svg {
height: 1.2em;
width: 1.2em;
margin: 0 0.25em;
}
.tc-tiddler-controls button.tc-selected svg,
.tc-page-controls button.tc-selected svg {
fill: <<colour tiddler-controls-foreground-selected>>;
}
.tc-tiddler-controls button.tc-btn-invisible:hover svg,
.tc-search button:hover svg, .tc-search a:hover svg {
fill: <<colour tiddler-controls-foreground-hover>>;
}
@media print {
.tc-tiddler-controls {
display: none;
}
}
.tc-tiddler-help { /* Help prompts within tiddler template */
color: <<colour muted-foreground>>;
margin-top: 14px;
}
.tc-tiddler-help a.tc-tiddlylink {
color: <<colour very-muted-foreground>>;
}
.tc-tiddler-frame .tc-edit-texteditor {
width: 100%;
margin: 4px 0 4px 0;
}
.tc-tiddler-frame input.tc-edit-texteditor,
.tc-tiddler-frame textarea.tc-edit-texteditor,
.tc-tiddler-frame iframe.tc-edit-texteditor {
padding: 3px 3px 3px 3px;
border: 1px solid <<colour tiddler-editor-border>>;
background-color: <<colour tiddler-editor-background>>;
line-height: 1.3em;
-webkit-appearance: none;
}
.tc-tiddler-frame .tc-binary-warning {
width: 100%;
height: 5em;
text-align: center;
padding: 3em 3em 6em 3em;
background: <<colour alert-background>>;
border: 1px solid <<colour alert-border>>;
}
canvas.tc-edit-bitmapeditor {
border: 6px solid <<colour tiddler-editor-border-image>>;
cursor: crosshair;
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
margin-top: 6px;
margin-bottom: 6px;
}
.tc-edit-bitmapeditor-width {
display: block;
}
.tc-edit-bitmapeditor-height {
display: block;
}
.tc-tiddler-body {
clear: both;
}
.tc-tiddler-frame .tc-tiddler-body {
font-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};
line-height: {{$:/themes/tiddlywiki/vanilla/metrics/bodylineheight}};
}
.tc-titlebar, .tc-tiddler-edit-title {
overflow: hidden; /* https://github.com/Jermolene/TiddlyWiki5/issues/282 */
}
html body.tc-body.tc-single-tiddler-window {
margin: 1em;
background: <<colour tiddler-background>>;
}
.tc-single-tiddler-window img,
.tc-single-tiddler-window svg,
.tc-single-tiddler-window canvas,
.tc-single-tiddler-window embed,
.tc-single-tiddler-window iframe {
max-width: 100%;
}
/*
** Editor
*/
.tc-editor-toolbar {
margin-top: 8px;
}
.tc-editor-toolbar button {
vertical-align: middle;
background-color: <<colour tiddler-controls-foreground>>;
fill: <<colour tiddler-controls-foreground-selected>>;
border-radius: 4px;
padding: 3px;
margin: 2px 0 2px 4px;
}
.tc-editor-toolbar button.tc-text-editor-toolbar-item-adjunct {
margin-left: 1px;
width: 1em;
border-radius: 8px;
}
.tc-editor-toolbar button.tc-text-editor-toolbar-item-start-group {
margin-left: 11px;
}
.tc-editor-toolbar button.tc-selected {
background-color: <<colour primary>>;
}
.tc-editor-toolbar button svg {
width: 1.6em;
height: 1.2em;
}
.tc-editor-toolbar button:hover {
background-color: <<colour tiddler-controls-foreground-selected>>;
fill: <<colour background>>;
}
.tc-editor-toolbar .tc-text-editor-toolbar-more {
white-space: normal;
}
.tc-editor-toolbar .tc-text-editor-toolbar-more button {
display: inline-block;
padding: 3px;
width: auto;
}
.tc-editor-toolbar .tc-search-results {
padding: 0;
}
/*
** Adjustments for fluid-fixed mode
*/
@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
<<if-fluid-fixed text:"""
.tc-story-river {
padding-right: 0;
position: relative;
width: auto;
left: 0;
margin-left: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};
margin-right: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};
}
.tc-tiddler-frame {
width: 100%;
}
.tc-sidebar-scrollable {
left: auto;
bottom: 0;
right: 0;
width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};
}
body.tc-body .tc-storyview-zoomin-tiddler {
width: 100%;
width: calc(100% - 42px);
}
""" hiddenSidebarText:"""
.tc-story-river {
padding-right: 3em;
margin-right: 0;
}
body.tc-body .tc-storyview-zoomin-tiddler {
width: 100%;
width: calc(100% - 84px);
}
""">>
}
/*
** Toolbar buttons
*/
.tc-page-controls svg.tc-image-new-button {
fill: <<colour toolbar-new-button>>;
}
.tc-page-controls svg.tc-image-options-button {
fill: <<colour toolbar-options-button>>;
}
.tc-page-controls svg.tc-image-save-button {
fill: <<colour toolbar-save-button>>;
}
.tc-tiddler-controls button svg.tc-image-info-button {
fill: <<colour toolbar-info-button>>;
}
.tc-tiddler-controls button svg.tc-image-edit-button {
fill: <<colour toolbar-edit-button>>;
}
.tc-tiddler-controls button svg.tc-image-close-button {
fill: <<colour toolbar-close-button>>;
}
.tc-tiddler-controls button svg.tc-image-delete-button {
fill: <<colour toolbar-delete-button>>;
}
.tc-tiddler-controls button svg.tc-image-cancel-button {
fill: <<colour toolbar-cancel-button>>;
}
.tc-tiddler-controls button svg.tc-image-done-button {
fill: <<colour toolbar-done-button>>;
}
/*
** Tiddler edit mode
*/
.tc-tiddler-edit-frame em.tc-edit {
color: <<colour muted-foreground>>;
font-style: normal;
}
.tc-edit-type-dropdown a.tc-tiddlylink-missing {
font-style: normal;
}
.tc-edit-tags {
border: 1px solid <<colour tiddler-editor-border>>;
padding: 4px 8px 4px 8px;
}
.tc-edit-add-tag {
display: inline-block;
}
.tc-edit-add-tag .tc-add-tag-name input {
width: 50%;
}
.tc-edit-add-tag .tc-keyboard {
display:inline;
}
.tc-edit-tags .tc-tag-label {
display: inline-block;
}
.tc-edit-tags-list {
margin: 14px 0 14px 0;
}
.tc-remove-tag-button {
padding-left: 4px;
}
.tc-tiddler-preview {
overflow: auto;
}
.tc-tiddler-preview-preview {
float: right;
width: 49%;
border: 1px solid <<colour tiddler-editor-border>>;
margin: 4px 0 3px 3px;
padding: 3px 3px 3px 3px;
}
<<if-editor-height-fixed then:"""
.tc-tiddler-preview-preview {
overflow-y: scroll;
height: {{$:/config/TextEditor/EditorHeight/Height}};
}
""">>
.tc-tiddler-frame .tc-tiddler-preview .tc-edit-texteditor {
width: 49%;
}
.tc-tiddler-frame .tc-tiddler-preview canvas.tc-edit-bitmapeditor {
max-width: 49%;
}
.tc-edit-fields {
width: 100%;
}
.tc-edit-fields table, .tc-edit-fields tr, .tc-edit-fields td {
border: none;
padding: 4px;
}
.tc-edit-fields > tbody > .tc-edit-field:nth-child(odd) {
background-color: <<colour tiddler-editor-fields-odd>>;
}
.tc-edit-fields > tbody > .tc-edit-field:nth-child(even) {
background-color: <<colour tiddler-editor-fields-even>>;
}
.tc-edit-field-name {
text-align: right;
}
.tc-edit-field-value input {
width: 100%;
}
.tc-edit-field-remove {
}
.tc-edit-field-remove svg {
height: 1em;
width: 1em;
fill: <<colour muted-foreground>>;
vertical-align: middle;
}
.tc-edit-field-add-name {
display: inline-block;
width: 15%;
}
.tc-edit-field-add-value {
display: inline-block;
width: 40%;
}
.tc-edit-field-add-button {
display: inline-block;
width: 10%;
}
/*
** Storyview Classes
*/
.tc-storyview-zoomin-tiddler {
position: absolute;
display: block;
width: 100%;
}
@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
.tc-storyview-zoomin-tiddler {
width: calc(100% - 84px);
}
}
/*
** Dropdowns
*/
.tc-btn-dropdown {
text-align: left;
}
.tc-btn-dropdown svg, .tc-btn-dropdown img {
height: 1em;
width: 1em;
fill: <<colour muted-foreground>>;
}
.tc-drop-down-wrapper {
position: relative;
}
.tc-drop-down {
min-width: 380px;
border: 1px solid <<colour dropdown-border>>;
background-color: <<colour dropdown-background>>;
padding: 7px 0 7px 0;
margin: 4px 0 0 0;
white-space: nowrap;
text-shadow: none;
line-height: 1.4;
}
.tc-drop-down .tc-drop-down {
margin-left: 14px;
}
.tc-drop-down button svg, .tc-drop-down a svg {
fill: <<colour foreground>>;
}
.tc-drop-down button.tc-btn-invisible:hover svg {
fill: <<colour foreground>>;
}
.tc-drop-down p {
padding: 0 14px 0 14px;
}
.tc-drop-down svg {
width: 1em;
height: 1em;
}
.tc-drop-down img {
width: 1em;
}
.tc-drop-down-language-chooser img {
width: 2em;
vertical-align: baseline;
}
.tc-drop-down a, .tc-drop-down button {
display: block;
padding: 0 14px 0 14px;
width: 100%;
text-align: left;
color: <<colour foreground>>;
line-height: 1.4;
}
.tc-drop-down .tc-tab-set .tc-tab-buttons button {
display: inline-block;
width: auto;
margin-bottom: 0px;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
.tc-drop-down .tc-prompt {
padding: 0 14px;
}
.tc-drop-down .tc-chooser {
border: none;
}
.tc-drop-down .tc-chooser .tc-swatches-horiz {
font-size: 0.4em;
padding-left: 1.2em;
}
.tc-drop-down .tc-file-input-wrapper {
width: 100%;
}
.tc-drop-down .tc-file-input-wrapper button {
color: <<colour foreground>>;
}
.tc-drop-down a:hover, .tc-drop-down button:hover, .tc-drop-down .tc-file-input-wrapper:hover button {
color: <<colour tiddler-link-background>>;
background-color: <<colour tiddler-link-foreground>>;
text-decoration: none;
}
.tc-drop-down .tc-tab-buttons button {
background-color: <<colour dropdown-tab-background>>;
}
.tc-drop-down .tc-tab-buttons button.tc-tab-selected {
background-color: <<colour dropdown-tab-background-selected>>;
border-bottom: 1px solid <<colour dropdown-tab-background-selected>>;
}
.tc-drop-down-bullet {
display: inline-block;
width: 0.5em;
}
.tc-drop-down .tc-tab-contents a {
padding: 0 0.5em 0 0.5em;
}
.tc-block-dropdown-wrapper {
position: relative;
}
.tc-block-dropdown {
position: absolute;
min-width: 220px;
border: 1px solid <<colour dropdown-border>>;
background-color: <<colour dropdown-background>>;
padding: 7px 0;
margin: 4px 0 0 0;
white-space: nowrap;
z-index: 1000;
text-shadow: none;
}
.tc-block-dropdown.tc-search-drop-down {
margin-left: -12px;
}
.tc-block-dropdown a {
display: block;
padding: 4px 14px 4px 14px;
}
.tc-block-dropdown.tc-search-drop-down a {
display: block;
padding: 0px 10px 0px 10px;
}
.tc-drop-down .tc-dropdown-item-plain,
.tc-block-dropdown .tc-dropdown-item-plain {
padding: 4px 14px 4px 7px;
}
.tc-drop-down .tc-dropdown-item,
.tc-block-dropdown .tc-dropdown-item {
padding: 4px 14px 4px 7px;
color: <<colour muted-foreground>>;
}
.tc-block-dropdown a:hover {
color: <<colour tiddler-link-background>>;
background-color: <<colour tiddler-link-foreground>>;
text-decoration: none;
}
.tc-search-results {
padding: 0 7px 0 7px;
}
.tc-image-chooser, .tc-colour-chooser {
white-space: normal;
}
.tc-image-chooser a,
.tc-colour-chooser a {
display: inline-block;
vertical-align: top;
text-align: center;
position: relative;
}
.tc-image-chooser a {
border: 1px solid <<colour muted-foreground>>;
padding: 2px;
margin: 2px;
width: 4em;
height: 4em;
}
.tc-colour-chooser a {
padding: 3px;
width: 2em;
height: 2em;
vertical-align: middle;
}
.tc-image-chooser a:hover,
.tc-colour-chooser a:hover {
background: <<colour primary>>;
padding: 0px;
border: 3px solid <<colour primary>>;
}
.tc-image-chooser a svg,
.tc-image-chooser a img {
display: inline-block;
width: auto;
height: auto;
max-width: 3.5em;
max-height: 3.5em;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
}
/*
** Modals
*/
.tc-modal-wrapper {
position: fixed;
overflow: auto;
overflow-y: scroll;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 900;
}
.tc-modal-backdrop {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 1000;
background-color: <<colour modal-backdrop>>;
}
.tc-modal {
z-index: 1100;
background-color: <<colour modal-background>>;
border: 1px solid <<colour modal-border>>;
}
@media (max-width: 55em) {
.tc-modal {
position: fixed;
top: 1em;
left: 1em;
right: 1em;
}
.tc-modal-body {
overflow-y: auto;
max-height: 400px;
max-height: 60vh;
}
}
@media (min-width: 55em) {
.tc-modal {
position: fixed;
top: 2em;
left: 25%;
width: 50%;
}
.tc-modal-body {
overflow-y: auto;
max-height: 400px;
max-height: 60vh;
}
}
.tc-modal-header {
padding: 9px 15px;
border-bottom: 1px solid <<colour modal-header-border>>;
}
.tc-modal-header h3 {
margin: 0;
line-height: 30px;
}
.tc-modal-header img, .tc-modal-header svg {
width: 1em;
height: 1em;
}
.tc-modal-body {
padding: 15px;
}
.tc-modal-footer {
padding: 14px 15px 15px;
margin-bottom: 0;
text-align: right;
background-color: <<colour modal-footer-background>>;
border-top: 1px solid <<colour modal-footer-border>>;
}
/*
** Notifications
*/
.tc-notification {
position: fixed;
top: 14px;
right: 42px;
z-index: 1300;
max-width: 280px;
padding: 0 14px 0 14px;
background-color: <<colour notification-background>>;
border: 1px solid <<colour notification-border>>;
}
/*
** Tabs
*/
.tc-tab-set.tc-vertical {
display: -webkit-flex;
display: flex;
}
.tc-tab-buttons {
font-size: 0.85em;
padding-top: 1em;
margin-bottom: -2px;
}
.tc-tab-buttons.tc-vertical {
z-index: 100;
display: block;
padding-top: 14px;
vertical-align: top;
text-align: right;
margin-bottom: inherit;
margin-right: -1px;
max-width: 33%;
-webkit-flex: 0 0 auto;
flex: 0 0 auto;
}
.tc-tab-buttons button.tc-tab-selected {
color: <<colour tab-foreground-selected>>;
background-color: <<colour tab-background-selected>>;
border-left: 1px solid <<colour tab-border-selected>>;
border-top: 1px solid <<colour tab-border-selected>>;
border-right: 1px solid <<colour tab-border-selected>>;
}
.tc-tab-buttons button {
color: <<colour tab-foreground>>;
padding: 3px 5px 3px 5px;
margin-right: 0.3em;
font-weight: 300;
border: none;
background: inherit;
background-color: <<colour tab-background>>;
border-left: 1px solid <<colour tab-border>>;
border-top: 1px solid <<colour tab-border>>;
border-right: 1px solid <<colour tab-border>>;
border-top-left-radius: 2px;
border-top-right-radius: 2px;
}
.tc-tab-buttons.tc-vertical button {
display: block;
width: 100%;
margin-top: 3px;
margin-right: 0;
text-align: right;
background-color: <<colour tab-background>>;
border-left: 1px solid <<colour tab-border>>;
border-bottom: 1px solid <<colour tab-border>>;
border-right: none;
border-top-left-radius: 2px;
border-bottom-left-radius: 2px;
}
.tc-tab-buttons.tc-vertical button.tc-tab-selected {
background-color: <<colour tab-background-selected>>;
border-right: 1px solid <<colour tab-background-selected>>;
}
.tc-tab-divider {
border-top: 1px solid <<colour tab-divider>>;
}
.tc-tab-divider.tc-vertical {
display: none;
}
.tc-tab-content {
margin-top: 14px;
}
.tc-tab-content.tc-vertical {
display: inline-block;
vertical-align: top;
padding-top: 0;
padding-left: 14px;
border-left: 1px solid <<colour tab-border>>;
-webkit-flex: 1 0 70%;
flex: 1 0 70%;
}
.tc-sidebar-lists .tc-tab-buttons {
margin-bottom: -1px;
}
.tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {
background-color: <<colour sidebar-tab-background-selected>>;
color: <<colour sidebar-tab-foreground-selected>>;
border-left: 1px solid <<colour sidebar-tab-border-selected>>;
border-top: 1px solid <<colour sidebar-tab-border-selected>>;
border-right: 1px solid <<colour sidebar-tab-border-selected>>;
}
.tc-sidebar-lists .tc-tab-buttons button {
background-color: <<colour sidebar-tab-background>>;
color: <<colour sidebar-tab-foreground>>;
border-left: 1px solid <<colour sidebar-tab-border>>;
border-top: 1px solid <<colour sidebar-tab-border>>;
border-right: 1px solid <<colour sidebar-tab-border>>;
}
.tc-sidebar-lists .tc-tab-divider {
border-top: 1px solid <<colour sidebar-tab-divider>>;
}
.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {
display: block;
width: 100%;
background-color: <<colour sidebar-tab-background>>;
border-top: none;
border-left: none;
border-bottom: none;
border-right: 1px solid #ccc;
margin-bottom: inherit;
}
.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {
background-color: <<colour sidebar-tab-background-selected>>;
border: none;
}
/*
** Manager
*/
.tc-manager-wrapper {
}
.tc-manager-controls {
}
.tc-manager-control {
margin: 0.5em 0;
}
.tc-manager-list {
width: 100%;
border-top: 1px solid <<colour muted-foreground>>;
border-left: 1px solid <<colour muted-foreground>>;
border-right: 1px solid <<colour muted-foreground>>;
}
.tc-manager-list-item {
}
.tc-manager-list-item-heading {
display: block;
width: 100%;
text-align: left;
border-bottom: 1px solid <<colour muted-foreground>>;
padding: 3px;
}
.tc-manager-list-item-heading-selected {
font-weight: bold;
color: <<colour background>>;
fill: <<colour background>>;
background-color: <<colour foreground>>;
}
.tc-manager-list-item-heading:hover {
background: <<colour primary>>;
color: <<colour background>>;
}
.tc-manager-list-item-content {
display: flex;
}
.tc-manager-list-item-content-sidebar {
flex: 1 0;
background: <<colour tiddler-editor-background>>;
border-right: 0.5em solid <<colour muted-foreground>>;
border-bottom: 0.5em solid <<colour muted-foreground>>;
white-space: nowrap;
}
.tc-manager-list-item-content-item-heading {
display: block;
width: 100%;
text-align: left;
background: <<colour muted-foreground>>;
text-transform: uppercase;
font-size: 0.6em;
font-weight: bold;
padding: 0.5em 0 0.5em 0;
}
.tc-manager-list-item-content-item-body {
padding: 0 0.5em 0 0.5em;
}
.tc-manager-list-item-content-item-body > pre {
margin: 0.5em 0 0.5em 0;
border: none;
background: inherit;
}
.tc-manager-list-item-content-tiddler {
flex: 3 1;
border-left: 0.5em solid <<colour muted-foreground>>;
border-right: 0.5em solid <<colour muted-foreground>>;
border-bottom: 0.5em solid <<colour muted-foreground>>;
}
.tc-manager-list-item-content-item-body > table {
border: none;
padding: 0;
margin: 0;
}
.tc-manager-list-item-content-item-body > table td {
border: none;
}
.tc-manager-icon-editor > button {
width: 100%;
}
.tc-manager-icon-editor > button > svg,
.tc-manager-icon-editor > button > button {
width: 100%;
height: auto;
}
/*
** Alerts
*/
.tc-alerts {
position: fixed;
top: 0;
left: 0;
max-width: 500px;
z-index: 20000;
}
.tc-alert {
position: relative;
margin: 28px;
padding: 14px 14px 14px 14px;
border: 2px solid <<colour alert-border>>;
background-color: <<colour alert-background>>;
}
.tc-alert-toolbar {
position: absolute;
top: 14px;
right: 14px;
}
.tc-alert-toolbar svg {
fill: <<colour alert-muted-foreground>>;
}
.tc-alert-subtitle {
color: <<colour alert-muted-foreground>>;
font-weight: bold;
}
.tc-alert-highlight {
color: <<colour alert-highlight>>;
}
@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
.tc-static-alert {
position: relative;
}
.tc-static-alert-inner {
position: absolute;
z-index: 100;
}
}
.tc-static-alert-inner {
padding: 0 2px 2px 42px;
color: <<colour static-alert-foreground>>;
}
/*
** Control panel
*/
.tc-control-panel td {
padding: 4px;
}
.tc-control-panel table, .tc-control-panel table input, .tc-control-panel table textarea {
width: 100%;
}
.tc-plugin-info {
display: block;
border: 1px solid <<colour muted-foreground>>;
background-colour: <<colour background>>;
margin: 0.5em 0 0.5em 0;
padding: 4px;
}
.tc-plugin-info-disabled {
background: -webkit-repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);
background: repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);
}
.tc-plugin-info-disabled:hover {
background: -webkit-repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);
background: repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);
}
a.tc-tiddlylink.tc-plugin-info:hover {
text-decoration: none;
background-color: <<colour primary>>;
color: <<colour background>>;
fill: <<colour foreground>>;
}
a.tc-tiddlylink.tc-plugin-info:hover .tc-plugin-info > .tc-plugin-info-chunk > svg {
fill: <<colour foreground>>;
}
.tc-plugin-info-chunk {
display: inline-block;
vertical-align: middle;
}
.tc-plugin-info-chunk h1 {
font-size: 1em;
margin: 2px 0 2px 0;
}
.tc-plugin-info-chunk h2 {
font-size: 0.8em;
margin: 2px 0 2px 0;
}
.tc-plugin-info-chunk div {
font-size: 0.7em;
margin: 2px 0 2px 0;
}
.tc-plugin-info:hover > .tc-plugin-info-chunk > img, .tc-plugin-info:hover > .tc-plugin-info-chunk > svg {
width: 2em;
height: 2em;
fill: <<colour foreground>>;
}
.tc-plugin-info > .tc-plugin-info-chunk > img, .tc-plugin-info > .tc-plugin-info-chunk > svg {
width: 2em;
height: 2em;
fill: <<colour muted-foreground>>;
}
.tc-plugin-info.tc-small-icon > .tc-plugin-info-chunk > img, .tc-plugin-info.tc-small-icon > .tc-plugin-info-chunk > svg {
width: 1em;
height: 1em;
}
.tc-plugin-info-dropdown {
border: 1px solid <<colour muted-foreground>>;
margin-top: -8px;
}
.tc-plugin-info-dropdown-message {
background: <<colour message-background>>;
padding: 0.5em 1em 0.5em 1em;
font-weight: bold;
font-size: 0.8em;
}
.tc-plugin-info-dropdown-body {
padding: 1em 1em 1em 1em;
}
/*
** Message boxes
*/
.tc-message-box {
border: 1px solid <<colour message-border>>;
background: <<colour message-background>>;
padding: 0px 21px 0px 21px;
font-size: 12px;
line-height: 18px;
color: <<colour message-foreground>>;
}
.tc-message-box svg {
width: 1em;
height: 1em;
vertical-align: text-bottom;
}
/*
** Pictures
*/
.tc-bordered-image {
border: 1px solid <<colour muted-foreground>>;
padding: 5px;
margin: 5px;
}
/*
** Floats
*/
.tc-float-right {
float: right;
}
/*
** Chooser
*/
.tc-chooser {
border: 1px solid <<colour table-border>>;
}
.tc-chooser-item {
border: 8px;
padding: 2px 4px;
}
.tc-chooser-item a.tc-tiddlylink {
display: block;
text-decoration: none;
color: <<colour tiddler-link-foreground>>;
background-color: <<colour tiddler-link-background>>;
}
.tc-chooser-item a.tc-tiddlylink:hover {
text-decoration: none;
color: <<colour tiddler-link-background>>;
background-color: <<colour tiddler-link-foreground>>;
}
/*
** Palette swatches
*/
.tc-swatches-horiz {
}
.tc-swatches-horiz .tc-swatch {
display: inline-block;
}
.tc-swatch {
width: 2em;
height: 2em;
margin: 0.4em;
border: 1px solid #888;
}
/*
** Table of contents
*/
.tc-sidebar-lists .tc-table-of-contents {
white-space: nowrap;
}
.tc-table-of-contents button {
color: <<colour sidebar-foreground>>;
}
.tc-table-of-contents svg {
width: 0.7em;
height: 0.7em;
vertical-align: middle;
fill: <<colour sidebar-foreground>>;
}
.tc-table-of-contents ol {
list-style-type: none;
padding-left: 0;
}
.tc-table-of-contents ol ol {
padding-left: 1em;
}
.tc-table-of-contents li {
font-size: 1.0em;
font-weight: bold;
}
.tc-table-of-contents li a {
font-weight: bold;
}
.tc-table-of-contents li li {
font-size: 0.95em;
font-weight: normal;
line-height: 1.4;
}
.tc-table-of-contents li li a {
font-weight: normal;
}
.tc-table-of-contents li li li {
font-size: 0.95em;
font-weight: 200;
line-height: 1.5;
}
.tc-table-of-contents li li li a {
font-weight: bold;
}
.tc-table-of-contents li li li li {
font-size: 0.95em;
font-weight: 200;
}
.tc-tabbed-table-of-contents {
display: -webkit-flex;
display: flex;
}
.tc-tabbed-table-of-contents .tc-table-of-contents {
z-index: 100;
display: inline-block;
padding-left: 1em;
max-width: 50%;
-webkit-flex: 0 0 auto;
flex: 0 0 auto;
background: <<colour tab-background>>;
border-left: 1px solid <<colour tab-border>>;
border-top: 1px solid <<colour tab-border>>;
border-bottom: 1px solid <<colour tab-border>>;
}
.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a,
.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {
display: block;
padding: 0.12em 1em 0.12em 0.25em;
}
.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a {
border-top: 1px solid <<colour tab-background>>;
border-left: 1px solid <<colour tab-background>>;
border-bottom: 1px solid <<colour tab-background>>;
}
.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a:hover {
text-decoration: none;
border-top: 1px solid <<colour tab-border>>;
border-left: 1px solid <<colour tab-border>>;
border-bottom: 1px solid <<colour tab-border>>;
background: <<colour tab-border>>;
}
.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {
border-top: 1px solid <<colour tab-border>>;
border-left: 1px solid <<colour tab-border>>;
border-bottom: 1px solid <<colour tab-border>>;
background: <<colour background>>;
margin-right: -1px;
}
.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a:hover {
text-decoration: none;
}
.tc-tabbed-table-of-contents .tc-tabbed-table-of-contents-content {
display: inline-block;
vertical-align: top;
padding-left: 1.5em;
padding-right: 1.5em;
border: 1px solid <<colour tab-border>>;
-webkit-flex: 1 0 50%;
flex: 1 0 50%;
}
/*
** Dirty indicator
*/
body.tc-dirty span.tc-dirty-indicator, body.tc-dirty span.tc-dirty-indicator svg {
fill: <<colour dirty-indicator>>;
color: <<colour dirty-indicator>>;
}
/*
** File inputs
*/
.tc-file-input-wrapper {
position: relative;
overflow: hidden;
display: inline-block;
vertical-align: middle;
}
.tc-file-input-wrapper input[type=file] {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
font-size: 999px;
max-width: 100%;
max-height: 100%;
filter: alpha(opacity=0);
opacity: 0;
outline: none;
background: white;
cursor: pointer;
display: inline-block;
}
/*
** Thumbnail macros
*/
.tc-thumbnail-wrapper {
position: relative;
display: inline-block;
margin: 6px;
vertical-align: top;
}
.tc-thumbnail-right-wrapper {
float:right;
margin: 0.5em 0 0.5em 0.5em;
}
.tc-thumbnail-image {
text-align: center;
overflow: hidden;
border-radius: 3px;
}
.tc-thumbnail-image svg,
.tc-thumbnail-image img {
filter: alpha(opacity=1);
opacity: 1;
min-width: 100%;
min-height: 100%;
max-width: 100%;
}
.tc-thumbnail-wrapper:hover .tc-thumbnail-image svg,
.tc-thumbnail-wrapper:hover .tc-thumbnail-image img {
filter: alpha(opacity=0.8);
opacity: 0.8;
}
.tc-thumbnail-background {
position: absolute;
border-radius: 3px;
}
.tc-thumbnail-icon svg,
.tc-thumbnail-icon img {
width: 3em;
height: 3em;
<<filter "drop-shadow(2px 2px 4px rgba(0,0,0,0.3))">>
}
.tc-thumbnail-wrapper:hover .tc-thumbnail-icon svg,
.tc-thumbnail-wrapper:hover .tc-thumbnail-icon img {
fill: #fff;
<<filter "drop-shadow(3px 3px 4px rgba(0,0,0,0.6))">>
}
.tc-thumbnail-icon {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
display: -webkit-flex;
-webkit-align-items: center;
-webkit-justify-content: center;
display: flex;
align-items: center;
justify-content: center;
}
.tc-thumbnail-caption {
position: absolute;
background-color: #777;
color: #fff;
text-align: center;
bottom: 0;
width: 100%;
filter: alpha(opacity=0.9);
opacity: 0.9;
line-height: 1.4;
border-bottom-left-radius: 3px;
border-bottom-right-radius: 3px;
}
.tc-thumbnail-wrapper:hover .tc-thumbnail-caption {
filter: alpha(opacity=1);
opacity: 1;
}
/*
** Errors
*/
.tc-error {
background: #f00;
color: #fff;
}
<<st "Current style settings">>
<$list filter='[prefix[$:/ResStyles/Tools/]!suffix[preSet]]'>
<$edit-text field='icon'/>{{!!title}}
<$set name='pruneOff' filter='[title{!!title}removeprefix[$:/ResStyles/Tools/]]'>
{{!!caption}} <$set name='makeEntryElement' filter=<<adminFilter>>>
<$macrocall $name="makeStyleButton"/>
<small><small><$transclude tiddler=<<makeEntryElement>> field="text"/></small></small>
<$select tiddler=<<makeEntryElement>>>
<$list filter='[list[!!list]]'>
<option>{{!!title}}</option>
</$list>
</$select>
</$set></$set>
</$list>
\define picker(t)
<$set name='ifStartOrEnd' filter='[title[$t$]removesuffix{$:/Tools/TaskDetails/Task}removesuffix[/]!suffix[/End Date]]' value="""
<$checkbox tiddler="$t$" field="show" checked="1" unchecked=""> <small>Show years only</small></$checkbox> <$list filter="[title[$t$]]"><$reveal type="nomatch" state="!!show" text="1">Month: <$select tiddler="$t$" field='month'>
<$list filter='[list[$:/Tools/Months]]'>
<option><$view field='title'/></option>
</$list>
</$select></$reveal></$list> Year: <$select tiddler={{!!title}} field='text'>
<$list filter='[list[$:/Tools/Years]]'>
<option><$view field='title'/></option>
</$list>
</$select>"""
emptyValue="""
<br><br><$list filter='[title[$t$]]'><$reveal type='nomatch' state='!!p' text='Present'><$checkbox tiddler="$t$" field="show" checked="1" unchecked=""> <small>Show years only</small></$checkbox> <$list filter="[title[$t$]]"><$reveal type="nomatch" state="!!show" text="1">Month: <$select tiddler="$t$" field='month'>
<$list filter='[list[$:/Tools/Months]]'>
<option><$view field='title'/></option>
</$list>
</$select></$reveal></$list> Year: <$select tiddler={{!!title}} field='text'>
<$list filter='[list[$:/Tools/Years]]'>
<option><$view field='title'/></option>
</$list>
</$select></$reveal></$list> <$checkbox tiddler="$t$" field="p" checked="Present" unchecked=""> Present?</$checkbox>
""">
<<ifStartOrEnd>>
</$set>
\end
<$button>
<$list filter="[searc]!title[$:/Tools/DeleteThese]!title[Draft of '$:/Tools/DeleteThese']!title[$:/ResumeBuild/Professional.1]]">
<$action-deletetiddler $tiddler={{!!title}}/>{{!!title}}</$list>
Delete </$button>
\define groupLink(t)
<$list filter='[title[$t$]]'>
<div>
<$set name='theUnopenedOnes' value={{!!store}}>
<$set name='theLeftOnes' value={{!!left}}>
<$set name='theRightOnes' value={{!!right}}>
<$button class='tabtag my-title' style='color:#fff;' set='$:/DisplayConfig!!caption' setTo={{!!caption}}>{{!!caption}}
<$action-setfield $tiddler='$:/DisplayConfig/tempStore' $field='list' $value=<<theUnopenedOnes>>/>
<$action-setfield $tiddler='$:/DisplayConfig/Left' $field='list' $value=<<theLeftOnes>>/>
<$action-setfield $tiddler='$:/DisplayConfig/Right' $field='list' $value=<<theRightOnes>>/>
<$action-navigate $to='$:/DisplayConfig'/>
</$button>
</$set></$set></$set></div>
</$list>
\end
<<groupLink "UserGuide">>
\define closeOthers(p)
<$button style='padding:0;text-align:left;' class='tc-btn-invisible tc-tiddlylink'><$action-sendmessage $message="tm-close-other-tiddlers" $param="$p$"/>$p$</$button>
\end
<<closeButton>><<st "Recently updated">>
<$list filter='[all[tiddlers+shadows]!sort[modified]!prefix[$:/]!prefix[Draft]!tag[Package Process]!title[Welcome]!title[$:/Tools/RecentlyModifiedList]!tag[unfinished]!field:text[]!is[missing]!tag[Andy]!prefix[New Tiddler]limit[10]]'>
<$link to={{!!title}}>{{!!title}}</$link> {{!!modified}}<br>
\define coLor(c,t)
<$set name="colorR" filter="[title[$:/runThrough/color/state.$c$]get[text]]">
<span style=<<colorR>>>$t$</span>
</$set>
\end
\define bounD(c,t)
<$set name="colorR" filter="[title[$:/runThrough/color/state.$c$]get[text]]">
<$set name="checkText" filter="[title[$:/runThrough/color/state.$c$]regexp:text[$c$]]" value="""<span style=<<colorR>>>$t$</span>""" emptyValue="""<span></span>""">
<<checkText>>
</$set>
</$set>
\end
\define makeT(c,tColor,t,note)
<$set name="colorR" filter="[prefix[$:/runThrough/color/state.]text[background-color:$c$;color:$tColor$;fill:$tColor$;]]" value="background-color:#fff;color:black;" emptyValue="background-color:$c$;color:$tColor$;fill:$tColor$;"><$set name="color2" filter="[title[$:/runThrough/color/state.$c$]get[text]]">
<$button style='text-align:left;font-weight:bold;' class="tc-btn-invisible" set="$:/runThrough/color/state.$c$" setTo=<<colorR>>><span style=<<color2>>>{{$:/core/images/close-others-button}} $t$</span></$button>
</$set>
<$reveal type="match" state="$:/runThrough/color/state.$c$" text="background-color:$c$;color:$tColor$;fill:$tColor$;">
<small><blockquote style="border-left-style:dotted;">$note$</blockquote></small>
</$reveal>
\end
<<st "Enter task details">>
<$list filter='[prefix[$:/Tools/TaskDetails/]]'>
<$edit-text tiddler={{!!title}} tag='input' placeholder={{!!p}}/>
<$button class='tc-btn-invisible' set='!!text' setTo=''>×</$button>
</$list>
<p>''If you have pressed the ''<$button class='del' tooltip="Start the whole resume again"> {{$:/core/images/erase}} </$button> ''in error, type in the task ID above; the next button will appear; click through; your previously inputted material will reappear.''</p>
\define dropdownState()
$:/$(theTitle)$/state
\end
\define loginOut()
<$set name='ifLoggedin' filter='[title[$:/Login]!field:password[]]' value='Logout' emptyValue='Login'><$set name='ifLoggedin2' filter="[title[$:/Login]!field:password[]]" value="""
<$action-setfield $tiddler='$:/Login' $field='password' $value=''/><$action-sendmessage $message='tm-close-other-tiddlers' $param='Logout'/>
<$action-setfield $tiddler='$:/Login' $field='s' $value=''/><$action-setfield $tiddler="$:/themes/tiddlywiki/vanilla/metrics/storyleft" $field="" $value="60px"/>
<$action-setfield $tiddler="$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth" $field="" $value="265px"/>""" emptyValue="""<$action-setfield $tiddler='$:/Login' password='' name='' showpassword=''/><$action-sendmessage $message='tm-close-tiddler' $param='Logout'/>""">
<$button class='sideb1' style='padding:2px 5px 2px 3px; background-color:#fff; border:1px solid grey; border-radius:3px;'><$action-sendmessage $message='tm-close-other-tiddlers' $param='$:/Login'/><$set name='theNavTarget' filter='[title<ifLoggedin>addprefix[$:/]]'><$action-navigate $to=<<theNavTarget>>/><span style='font-size:14px;'><<ifLoggedin>><<ifLoggedin2>></span></$set>
</$button></$set></$set>
\end
<style>
.tc-tagged-hideBody {
background-color:transparent;
border:none;
box-shadow:none;
padding:0;
}
.tc-tagged-hideBody .tc-tiddler-body {
font-size: 1em;
}
.titleSet {text-transform:uppercase;font-size:150%;line-height:1.2em;font-weight:bold;border-bottom:1px solid grey;}
sideb1 { }
.sideb1:hover { background-color:#5778D9; }
</style>
<div style='position:fixed;background-color:#fff;top:0px;left:100px;border-radius:0 0 7px 7px;width:660px;height:38px;margin-bottom:100px; -webkit-box-shadow: 0px 1px 5px rgba(0, 0, 0, 0.5);-moz-box-shadow: 0px 1px 5px rgba(0, 0, 0, 0.5);box-shadow: 0px 1px 5px rgba(0, 0, 0, 0.5);padding:5px 0 30px 5px;'>
<table style="margin-top:-3px;border:none;">
<tr><td style="border:none;" width="50px">
<div style='width:50px;z-index:99999999999999999999999;display:inline;'><$image width='30px' source='$:/favicon.ico'/></div></td><td style='border:none;vertical-align:middle;'><<loginOut>>
<$reveal type='match' state='$:/Login!!s' text='$:/'>
<$button style='font-size:90%;padding:2px 5px 2px 3px; background-color:#fff; border:1px solid grey; border-radius:3px;' class='sideb1'><$action-navigate $to="Welcome"/><$action-sendmessage $message='tm-close-other-tiddlers' $param='Welcome'/>{{$:/core/images/home-button}}</$button>
<$list filter='[prefix[$:/AdvisorLinks/]]'>
<a style='color:black;' href={{!!url}} target='_blank'>{{!!text}}</a>
</$list>
</$reveal></td></tr></table>
</div>
<$list filter='[tag[unfinished]]'>
<$checkbox tag='unfinished'><$link to={{!!title}}>{{!!title}}</$link></$checkbox>
!{{!!caption}}
<div style='background-color:#fff;margin:0 0 30px 0;border-radius:7px;padding:5px;'>
Username <$edit-text tiddler='$:/Login/Users' field={{!!key}}/>
Password <$edit-text type={{!!showhide}} tiddler='$:/Login/Password' size='40' field={{!!key}}/>
<$checkbox checked='password' field='showhide'> Hide password</$checkbox>
</div>
<$set name="searchTiddler" value="$:/temp/search">
<div class="tc-search">
<$edit-text placeholder='Type your search here' tiddler="$:/temp/search" type="search" tag="input" focus='false' focusPopup=<<qualify "$:/state/popup/search-dropdown">> class="tc-popup-handle"/>
<$reveal state="$:/temp/search" type="nomatch" text="">
<$button class="tc-btn-invisible">
<$action-setfield $tiddler="$:/temp/search" text="" />
{{$:/core/images/close-button}}
</$button>
<$list filter="[title{$:/temp/search}minlength{$:/config/Search/MinLength}limit[1]]" variable="listItem">
<$set name="resultCount" value=<<rC>>>
<br>{{$:/language/Search/Matches}}
</$set>
</$list>
</$reveal>
</div>
{{$:/core/ui/SearchResults}}
</$set>
<$button set="" setTo="">
<$action-setfield $tiddler="$:/themes/tiddlywiki/vanilla/metrics/storyleft" $field="" $value="60px"/>
<$action-setfield $tiddler="$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth" $field="" $value="265px"/>
1
</$button>
<$button set="" setTo="">
<$action-setfield $tiddler="$:/themes/tiddlywiki/vanilla/metrics/storyleft" $field="" $value="285px"/>
<$action-setfield $tiddler="$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth" $field="" $value="20px"/>
2
</$button>
<<bq1 "
Let’s begin your personal statement with a strong paragraph that summarizes your reasons for being interested in the program. We can do this by having you draft 4-5 sentences that focus on the following concepts: what you consider to be the key details that make MEng’s program, particularly its focus on software engineering, so rigorous; why are you inspired by this academic rigor; the importance of studying at U. Waterloo to indulge your passion for software engineering scholarship and transition your passion into a career. Use the following snippets to help you round out this paragraph:
*In the next year, I will graduate from my university but I don’t think I have prepared for my career and I really enjoy great study atmosphere of university.
*I want to be a software developing engineer developing and be responsible for managing validation processes and automated test systems to ensure software quality.
*To achieve professional skills and work experiences through master program and that is why I apply for MEng.
">>
''Purpose''
<<bq1 "Capturing the history and nature of your passion for software engineering as a professional career field">>
''Opening line ideas''
<<bq1 "My rigorous recent internship, alongside my
ultimate dissatisfaction with my undergraduate
education, have compelled me to seek out more
advanced study in software engineering">>
''Key content''
<<bq1 "
This could be a persuasive, insightful paragraph here, one that will convince the application reader that you’re a unique and worthwhile addition to the campus. Build on this potential with 4-5 sentences that clarify: Although the internship was in an unrelated field, the demands and qualities of the engineering research experience that you feel cross over into research of any engineering discipline; the skills you learned from that internship that you feel apply toward the possibility of you succeeding as a software development engineer as a career; how the internship inspired your current preference for software engineering; where your undergraduate education fell short in preparing you for the software engineering career you are intent on; how going to the MEng program at U. Waterloo will rectify this shortcoming and propel you to software engineering success. Here are snippets from your answers to help you:
*The internship in the summer this year encouraged me to make a professional life in MEng. In the internship, I knew the knowledge of bachelor study is far from enough because I lack hand-on skills and professional knowledge and some courses I have learned is too theoretical and do not be relevant to industry. MEng can really help me because the MEng program is designed with the professional in mind and is based on industry relevant course work.
*In the four years, I have learned the academic concepts that I need to succeed but through the internship I realized I also need a skill-set that is valuable to all employers. In the internship, I knew the knowledge of bachelor study is far from enough because I lack hand-on skills and professional knowledge and some courses I have learned is too theoretical and do not be relevant to industry. MEng can really help me because the MEng program is designed with the professional in mind and is based on industry relevant course work.
*I am up for a further challenge that will enhance your experience and give you whole new set of skills and open up a horizon of jobs and opportunities.
">>
''Purpose''
<<bq1 "What can U.Waterloo’s MEng -- SE program do for
you? Why are you so passionate about going to U.
Waterloo? What plans do you have to interact with
Waterloo-specific resources and opportunities?">>
''Opening line ideas''
<<bq1 "U. Waterloo’s dynamic coursework can capitalize
on my current skill-set and expand my expertise in
software engineering as a discipline.">>
''Key content''
<<bq1 "
Go into specific detail, in this paragraph,
about the comprehensive reasons why you
feel the MEng program at U. Waterloo is the
BEST program for you. Create 6-7 sentences
that highlight: the specific expectations you
have of high-level study in software
engineering; the resources at U. Waterloo
(classes, opportunities) that will help you
exceed, not just meet, these expectations;
what aspects of the U.Waterloo campus
culture have inspired you to apply. Here are
snippets to help:
*the MEng program is designed with the professional in mind and is based on industry relevant course work
*a student of MEng can spend all his time and energy to learn industry relevant course work and have time to involve in internship in the summer.
''etc.''
">>
''Purpose''
<<bq1 "What are YOU bringing to the MEng -- SE program at
U. Waterloo? What abilities, skills, and assets make
you an amazing candidate that the program should
have no choice but to accept? What can YOU do for
this program?">>
''Opening line ideas''
<<bq1 "That my undergraduate preparation for a
Masters-level software engineering education
closely mirrors that of U. Waterloo’s own, and that I
have significantly matured as an engineering
researcher, suggest my current aptitude and
readiness for the MEng program.">>
''Key content''
<<bq1 "
Round out this paragraph with 4-5 sentences that underscore: where you feel your undergrad education best dovetails with that offered by Waterloo; why you feel that this paralleling puts you a cut above the rest in terms of preparedness for MEng; how your undergrad experience also influenced your research endeavors; how your research (even though not literally in SE) still created a new professional and self-driven perspective in you; how this new perspective distinguishes you as a candidate for MEng.
*The curriculum of my bachelor degree prepares well for the master program of Waterloo. I have read the undergraduate courses descriptions for the university’s undergraduate engineering program and feel that my personal Bachelor’s-level education favourably parallels this offering.
*In several of my research projects in which I have been involved, I have really improved my programming ability and the ability of learning by myself and consulting materials.
">>
''Purpose''
<<bq1 "What will this degree enable you to accomplish in
your career? What are your professional plans for
your future in software engineering, and how does
Waterloo support those plans?">>
''Opening line ideas''
<<bq1 "My intention to craft a long-term career in
software engineering demands that I pursue U.
Waterloo’s industry-relevant career instruction and
career counsel.">>
''Key content''
<<bq1 "
Draft 4-5 sentences that discuss: what you would like to accomplish after having completed this MEng program; where do you see yourself after graduation; how you want to employ your knowledge of software engineering to do something important for your life or your community; why U. Waterloo is so essential for you creating the future you would like to have in software engineering.
*The most important to me is to find a job. The courses in other universities are too theoretical and some of them are not related to industry. Also, the courses of ECE program in other universities are always be about hardware but I am more interested in software and to be a software developing engineer is my goal.
*Waterloo’s Alumni career advising is unique and very useful. It provides career advising services for Waterloo alumni and I know Waterloo is a responsible university.
">>
\define addNewQ()
<$action-setfield $tiddler='$:/VIPQ/temp' $field='title' $value="$(theNextOne)$"/>
\end
\define removeQ()
<$action-listops $tiddler="$:/VIPQ" $field="list" $subfilter="[list[$:/VIPQ]] +[remove[$(QContainer)$]]"/>
<$action-listops $tiddler="$:/VIPQ_R" $field="list" $subfilter="[list[$:/VIPQ_R]] +[remove[$(QContainer)$]]"/>
\end
\define minWordCount()
<i>Add min word count? <$radio tiddler={{!!title}} field='add_minwc' tag='input' value='1'> Yes</$radio> <$radio tiddler={{!!title}} field='add_minwc' tag='input' value='0'> No</$radio>
<$reveal type='match' state='!!add_minwc' text='1'>
<$edit-text tiddler={{!!title}} field='wcmin' size='3'/> words
</$reveal></i>
\end
In your own words please describe what you think this program is looking for.
What does the school need to know about you?
What personal qualities and characteristics do you possess that have contributed to your academic achievement?
What technical knowledge, skills and abilities have you acquired that you think the school should know about?
Do you have the necessary analytical skills, motivation, and determination to persist when presented with a problem or unexpected events?
What are your short-term goals, academically and professionally?
Once you obtain your degree, what will you do with it?
What specific aspects of the program help you? Why and how?
What industry or sector do you intend to work in?
What are your long-term goals, academically and professionally?
Where do you see yourself in (say) 10 years after graduation?
How will the program you are applying to help you achieve the goals you've listed above? What specific aspects of the program help you? Why and how?
Do you have any questions or anomalies that you would like to explain further
Why did you choose this school?
\define saveButtonSet()
<$action-sendmessage $message="tm-download-file" $param="$:/VIPQ/main" filename="Questions for $(clientName)$ from $(advisorName)$ (Task: $(taskID)$).doc"/>
\end
\define downLoadVIP(l)
<$set name='advisorName' value={{$:/Login!!name}}>
<$set name='taskID' value={{$:/VIPQ/Task}}>
<$set name='clientName' value={{$:/VIPQ/Client}}>
<$button class='downloader' style='font-size:125%;background-color:transparent;border:none;'>
<span>{{$:/core/images/download-button}}</span> $l$
<<saveButtonSet>>
</$button>
</$set></$set></$set>
\end
What motivates you as a researcher?
Please list the names of authors/ papers that have caught your interest. How has their work influenced your decision to pursue further advanced study?
Please list any skills relevant to your intended field of study.
Lab? Software? Hardware? Other technical skills/ procedures/ techniques used in your field?
Cross-disciplinary skills (E.g. Collaboration/ Creativity/ Critical Thinking/ Communication)?
Please give examples of how you have used this skill in the past.
What sparked your interest and convinced you that you are well suited to contribute to this field?
{{$:/VIPQholder/pre}}
<$view tiddler="$:/VIPQ/Script" format="htmlwikified"/>
{{$:/VIPQholder/post}}
<h1>Research supplement</h1>
<p>为了展示你对于专业领域具有深刻的理解, 请尽可能多地提供与你的专业兴趣相关的信息. 你并不是在对你的专业领域做一个简单的概述: 你提出有趣问题的能力和解决的方法将会展示你的潜力. 请使用该方向的专业术语, 但:</p>
<ul>
<li>不要解释一些基本的概念或者下笼统的结论. </li>
<li>如果你确实陈述了您专业方向的一些不寻常 的地方, 这可能会有解释的价值.</li>
</ul>
<ol type="1">
<$list filter='[list[$:/VIPQ!!rlist]]'>
<h2><li><b> {{!!text}}</b></li></h2>
<<box>>
<ol type="i">
<$list filter='[list[!!list]!suffix[.0]]'>
<li class='vipQ'><h3>{{!!text}}</h3>
<<box>>
</li>
</$list>
</ol>
\define box()
<table><tr><td style='border: 1px solid black;height:100px;width:1000px;'><$reveal type='nomatch' state='!!wcmin' text=''>
<center><i>Please provide at least {{!!wcmin}} words.</i></center>
</$reveal></td></tr></table>
\end
<$set name='taskType' filter='[title[$:/VIPQ/TaskType]field:text[p]]' value="芝士圈VIP文书套餐" emptyValue="芝士圈VIP文书辅导">
<$set name='linkTask' value={{$:/VIPQ/Task}}>
<div style='text-align:center;'><img src={{$:/ImageAddress/zhishiqCircle}}/></div>
<div style='text-align:right;font-size:8pt;'><a href=<<taskLink>> target='_blank'>Task {{$:/VIPQ/Task}}</a></div>
<h1 style='border-bottom:1px solid grey;'><div style='font-family:font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", "DejaVu Sans", sans-serif;'><<taskType>> </div></h1>
<h3><b>Dear {{$:/VIPQ/Client}}</b></h3>
<$transclude mode='block' tiddler='$:/VIPQ/Client/Message'/>
<p>Best regards,</p>
<b>{{$:/Login!!name}}</b><br>
<img src={{$:/ImageAddress/wideLogo}}/>
<p><u>Additional notes:</u></p>
<ul style='font-family:Arial;mso-fareast-font-family:Arial;mso-bidi-font-family:
Arial'>
<li>请尽可能回答下面的问题,这个过程可以让你弄清自己想在最终的文书中阐述哪些事情。</li>
<li>你不需要对每一个问题都进行回答,这个调查中的内容也不会全部写入最终的文书中,请不用受其所限。</li>
<li>你的文书是关于你自己的,因此你可以写出任何你觉得重要的或是与申请相关的事情。你提供给编辑的信息越多,你的文章就会写得越好。</li>
<li>回答请使用英文,但不用担心英文的完整性、结构或质量。
请把相应的内容直接写在右边的表格中,也不必受限于表格的大小。</li>
</ul>
<ol type="1">
<$list filter='[list[$:/VIPQ]]'>
<h2><li><b> {{!!text}}</b></li></h2>
<<box>>
<ol type="i">
<$list filter='[list[!!list]!suffix[.0]]'>
<li class='vipQ'><h3>{{!!text}}</h3>
<<box>>
</li>
</$list>
</ol></$list></ol>
<$reveal type='match' state='$:/VIPQ/SoP' text='1'>
<$transclude tiddler='$:/VIPQ/ResearchSupplement' mode='block'/>
</$reveal>
\define makeNew()
<$action-listops $tiddler="$(if1)$" $field="list" $subfilter="[list[$(if1)$]append[$(getNextN)$]]"/>
\end
<style>
button.addq{background-color:transparent;border:none;font-size:200%;padding:0 10px 5px;}
button.addq:hover {background-color:blue;border:none;color:#fff;border-radius:7px;}
.closeThis {border:none;background-color:#fff;}
.closeThis:hover {border:none;background-color:pink;}
</style>
<$set name='makeFilter' filter='[title[$:/VIPQ/SoP]!field:text[1]]'
value='[list[$:/VIPQ]]' emptyValue='[list[$:/VIPQ]] [list[$:/VIPQ_R]]'>
<$navigator story="$:/VIPQuestionsStory" history="$:/VIPQuestionsList">
<$list filter=<<makeFilter>> history="$:/VIPQuestionsList">
<div class='cardBox'>
<$set name='QContainer' value={{!!title}}>
<$set name='getDispN' filter='[title{!!title}removeprefix[$:/VIPQ_]]'>
<div style='float:left;'>
<$button class='closeThis'><<removeQ>>×
</$button></div><h3 style='margin-bottom:0;'><b>Question <<getDispN>><br>
<$edit-text tiddler={{!!title}} field='text' tag='textarea' minHeight='10px' class='tc-edit-texteditor'/></b></h3>
<<minWordCount>>
<!--EXISTING SUB-QUESTIONS EDIT FIELD-->
<$list filter='[list[!!list]!suffix[.0]]'>
<blockquote>
<$edit-text tiddler={{!!title}} field='text' tag='textarea' minHeight='10px' class='tc-edit-texteditor'/><div style='float:right;'><small><$button class='closeThis'>×
<$action-listops $tiddler=<<QContainer>> $field='list' $subfilter='[list<QContainer>] +[remove{!!title}]'/>
</$button></small></div><br><<minWordCount>>
</blockquote>
</$list>
<!--VARS TO MAKE NEW SUB-QUESTION CONTAINER-->
<$set name='getLastSubN' filter='[list[!!list]removeprefix[$:/VIPQ_]removeprefix<getDispN>removeprefix[.]last[]]'>
<$list filter='[list[$:/Numbers]after<getLastSubN>]'>
<$set name='getNextSubN' filter='[title{!!title}addprefix[.]addprefix<getDispN>addprefix[$:/VIPQ_]]'>
<blockquote><small><$button>Add sub-question
<$action-listops $tiddler=<<QContainer>> $field="list" $subfilter="[list<QContainer>append<getNextSubN>]"/>
</$button></small></blockquote>
</$set></$list></$set>
<!--VARS FOR NEW MAIN QUESTION CONTAINER ETC.-->
<$set name='theB' filter='[title{!!title}splitbefore[_]]'>
<$set name='theTitle' filter='[title<theB>removesuffix[_]]'>
<$set name='theTitleR' filter='[title{!!title}splitbefore[R]]'>
<$set name='theR' filter='[title<theTitleR>addsuffix[R]]'>
<$set name='if1' filter='[title{!!title}prefix[$:/VIPQ_R]]' value=<<theTitleR>> emptyValue=<<theTitle>>>
<$set name='if2' filter='[title{!!title}prefix[$:/VIPQ_R]]' value=<<theTitleR>> emptyValue=<<theB>>>
<$set name='getN' filter='[list<if1>removeprefix<if2>last[]]'>
<$set name="lastContainer" filter="[title<getN>addprefix<if2>]">
<$set name="ifButton" filter="[title{!!title}prefix<lastContainer>]" value="""
<$button style='font-size:150%;border:none;fill:#fff;border-radius:20%;color:#fff;padding:8px 5px 9px 5px;background-color:#5778D9;'> {{$:/core/images/new-button}}''Q''
<<makeNew>>
<$action-setfield $tiddler=<<getNextN>> $field='list' $value=<<subQstarter>>/></$button>
""" emptyValue="<span></span>">
<$list filter='[list[$:/Numbers]after<getN>]'>
<$set name='getNextN' filter='[title{!!title}addprefix<if2>]'>
<$set name='subQstarter' filter='[title<getNextN>addsuffix[.0]]'>
<center><<ifButton>></center>
</$set></$set></$list>
</$set></$set></$set></$set></$set></$set></$set></$set></$set>
</$set></$set></div></$list></$navigator></$set>
<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'><head><title>'s Resume</title><!--[if gte mso 9]><xml><w:WordDocument><w:View>Print</w:View><w:Zoom>100</w:Zoom><w:DoNotOptimizeForBrowser/></w:WordDocument></xml><![endif]--><style><!-- @page { size: 594.93pt 841.89pt; /* Page size: A4 */ margin: 28.35pt 28.35pt 28.35pt 28.35pt; /* Margins on each side */ mso-page-orientation: portrait; mso-header: h1; mso-footer: f1; } @page Section1 {} div.Section1 { page: Section1; } div.Section2 { page: Section2; } .bodyText { font-family: {{Resume/Styles/Body!!font-family}}; text-transform: {{Resume/Styles/Body!!text-transform}}; font-size: {{Resume/Styles/Body!!font-size}}; font-weight: {{Resume/Styles/Body!!font-weight}}; padding: {{Resume/Styles/Body!!padding}}; } p.MsoHeader, p.MsoFooter { border: 1px solid black; } td.underlineSection { border-bottom: 1px solid black; } p.pullLeft, li.pullLeft, div.pullLeft { margin-left: -25.0pt; text-indent: -10.0pt; font-size: 12.0pt; font-family: {{Resume/Styles/Font/Body}}; margin-top: 0px; margin-bottom: 0px; margin-right: 0px; } p.MsoNormal, li.MsoNormal, div.MsoNormal { margin: 0in; margin-bottom: .0001pt; font-size: 12.0pt; font-family: {{Resume/Styles/Font/Body}}; } .bigName { font-family: {{Resume/Styles/Name!!font-family}}; text-transform: {{Resume/Styles/Name!!text-transform}}; font-size: {{Resume/Styles/Name!!font-size}}; font-weight: {{Resume/Styles/Name!!font-weight}}; } .aSection { font-family: {{Resume/Styles/Headings!!font-family}}; text-transform: {{Resume/Styles/Headings!!text-transform}}; font-size: {{Resume/Styles/Headings!!font-size}}; font-weight: {{Resume/Styles/Headings!!font-weight}}; } .entryHeading { font-family: {{Resume/Styles/EntryHeadings!!font-family}}; text-transform: {{Resume/Styles/EntryHeadings!!text-transform}}; font-size: {{Resume/Styles/EntryHeadings!!font-size}}; font-weight: {{Resume/Styles/EntryHeadings!!font-weight}}; } .subHeading { font-family: {{Resume/Styles/Font/Body}}; } .dateText { text-align:right; display:inline; } --></style></head><body><div style="mso-element:header;" id="h1"><p class=MsoHeader></p></div><div style='mso-element:footer'><p class=MsoFooter></p></div><div class=Section1>
<$view tiddler="$:/VIPQ/Script" format="htmlwikified"/>
</div></body></html>
\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock
</div>
</body>
</html>
\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock
<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word' xmlns='http://www.w3.org/TR/REC-html40'>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<head><title>'s Resume</title><!--[if gte mso 9]><xml><w:WordDocument><w:View>Print</w:View><w:Zoom>100</w:Zoom><w:DoNotOptimizeForBrowser/></w:WordDocument></xml><![endif]--><style><!-- @page { size: 594.93pt 841.89pt; /* Page size: A4 */ margin: 28.35pt 28.35pt 28.35pt 28.35pt; /* Margins on each side */ mso-page-orientation: portrait; mso-header: h1; mso-footer: f1; } @page Section1 {} div.Section1 { page: Section1; } div.Section2 { page: Section2; } .bodyText { font-family: {{Resume/Styles/Body!!font-family}}; text-transform: {{Resume/Styles/Body!!text-transform}}; font-size: {{Resume/Styles/Body!!font-size}}; font-weight: {{Resume/Styles/Body!!font-weight}}; padding: {{Resume/Styles/Body!!padding}}; } p.MsoHeader, p.MsoFooter { border: 1px solid black; } td.underlineSection { border-bottom: 1px solid black; } p.pullLeft, li.pullLeft, div.pullLeft { margin-left: -25.0pt; text-indent: -10.0pt; font-size: 12.0pt; font-family: {{Resume/Styles/Font/Body}}; margin-top: 0px; margin-bottom: 0px; margin-right: 0px; } p.MsoNormal, li.MsoNormal, div.MsoNormal { margin: 0in; margin-bottom: .0001pt; font-size: 12.0pt; font-family: {{Resume/Styles/Font/Body}}; } .bigName { font-family: {{Resume/Styles/Name!!font-family}}; text-transform: {{Resume/Styles/Name!!text-transform}}; font-size: {{Resume/Styles/Name!!font-size}}; font-weight: {{Resume/Styles/Name!!font-weight}}; } .aSection { font-family: {{Resume/Styles/Headings!!font-family}}; text-transform: {{Resume/Styles/Headings!!text-transform}}; font-size: {{Resume/Styles/Headings!!font-size}}; font-weight: {{Resume/Styles/Headings!!font-weight}}; } .entryHeading { font-family: {{Resume/Styles/EntryHeadings!!font-family}}; text-transform: {{Resume/Styles/EntryHeadings!!text-transform}}; font-size: {{Resume/Styles/EntryHeadings!!font-size}}; font-weight: {{Resume/Styles/EntryHeadings!!font-weight}}; } .subHeading { font-family: {{Resume/Styles/Font/Body}}; } .dateText { text-align:right; display:inline; } --></style></head><body><div style="mso-element:header;" id="h1"><p class=MsoHeader></p></div><div style='mso-element:footer'><p class=MsoFooter></p></div><div class=Section1>
A rolling timeline of individual applications of credits to advisor accounts.
t949.dev.zhishiq.com:8000/
http://www.zhishiq.com/company/service-text/tasks-snapshot
http://www.zhishiq.com/admin/advisor-credit/editor-summary
http://www.zhishiq.com/en/admin/dashboard/editor
http://www.zhishiq.com/admin/service-handle-record-rate/index
\define dropDprefix(c,l)
<$button popup="$:/$c$/state">$l$</$button>
<$reveal type="popup" state="$:/$c$/state">
<div class="tc-drop-down" style='padding:0;margin:0;'>
<$list filter='[prefix[$c$]]'>
<a href={{!!text}}>{{!!caption}}</a><br>
</$list>
</div>
</$reveal>
\end
\define dropDlist(c,l)
<$button popup="$:/$c$/state">$l$</$button>
<$reveal type="popup" state="$:/$c$/state">
<div class="tc-drop-down" style='padding:0;margin:0;'>
<$list filter='[list[$c$]]'>
<$link to={{!!title}}>{{!!title}}</$link><br>
</$list>
</div>
</$reveal>
\end
<<dropDprefix $:/zhishiqAdmin/ "ZHISHIQ links">>
Define abbreviated terms the first time they are used, eg:
<<bq1 'Return on Sales (ROS)'>>
In all subsequent instances use:
<<bq1 ROS>>
Do not define a term if it is __not__ subsequently used in the document; just say:
<<bq1 'Return on Sales'>>
Define acronyms unless they're commonly used.
<<bq1 UN>>
or
<<bq1 HIV>>
or
<<bq1 OPEC>>
or
<<bq1 SARS>>
...for example, do not require a preceding definition. Others do. This is mostly common-sense; the key is applied consistency.
\define tStyles()
<div style="line-height:1.2em;text-align:$(tAlign)$;color:grey;font-size:$(fsIze)$;padding:0;font-family: 'Montserrat', sans-serif; text-transform:uppercase;margin-bottom:-10px;" class="about">{{!!caption}}</div>
<$transclude tiddler={{!!title}} field='text' mode='block'/>
\end
<link href="https://fonts.googleapis.com/css?family=Montserrat|Playfair+Display" rel="stylesheet">
<style>
.frontBox {background-color:#fff;padding:15px;box-shadow: 0px 1px 5px rgba(0, 0, 0, 0.5);-moz-box-shadow: 0px 1px 5px rgba(0, 0, 0, 0.5);box-shadow: 0px 1px 5px rgba(0, 0, 0, 0.5);margin-bottom:30px;font-size:120%;line-height:1.4em;}
.playfair {font-family: 'Playfair Display', serif;}
</style><br><br>
<div style='margin:0;width:100%;'>
<div class='playfair' style='width:45%;float:left;margin-right:20px;'>
<$list filter='[tag[$:/Front]tag[left]sort[n]]'>
<div class='frontBox'>
<$set name='fsIze' value={{!!tsize}}><$set name='tAlign' value={{!!talign}}>
<<tStyles>>
</$set></$set>
</div>
</$list>
</div>
<div class='playfair' style='float:left;width:50%;'>
<$list filter='[tag[$:/Front]tag[right]]'>
<div class='frontBox' style='padding-right:15px;'>
<$set name='fsIze' value={{!!tsize}}><$set name='tAlign' value={{!!talign}}>
<<tStyles>>
</$set></$set>
</div>
</$list>
<div class='clearfix'></div>
</div>
''Marketplace tasks''
If you wish to accept a package from the marketplace, you must press <<code Accept>>.
<<img "https://photos-3.dropbox.com/t/2/AAAdYN-nTTq9F07vBR2txdiQCyMzpBOk_ASm2zt9Y1cRnw/12/693466203/jpeg/32x32/3/1509487200/0/2/File%2002-10-2017%2C%2013%2056%2001.jpeg/EJq4nukFGDggBygH/mksSxgIJQai1eLOhDyP9x0KC7faU1DGHnaN1NqGZeJo?dl=0&size=800x600&size_mode=3">>
''Then'' having reviewed the materials and deciding you want to take on the task, <<code Confirm>>.
<<img "https://photos-6.dropbox.com/t/2/AAAks9pwkS0O5e9454uFqu8envwzqnUNUc6hnKA0yFvsAg/12/693466203/jpeg/32x32/3/1509487200/0/2/File%2002-10-2017%2C%2013%2056%2029.jpeg/EJq4nukFGDggBygH/ga47jYPjFUna-4lhorTMDts8jStUHEI-GK0XUW4iVNw?dl=0&size=800x600&size_mode=3">>
''Appointed tasks''
If you are appointed you should click <<code Confirm>>.
<<img "https://photos-3.dropbox.com/t/2/AAD1GTazRLf0R1gjngsQF_GbaFAA7bvWCLfoPQ0uQSdipQ/12/693466203/jpeg/32x32/3/1509483600/0/2/File%2002-10-2017%2C%2013%2042%2048.jpeg/EJq4nukFGDggBygH/t55I7CAtg-3oveaqH2Uvp4RNdBJdInCKeVTW3vejAws?dl=0&size=800x600&size_mode=3">>
''After confirming''
After you've successfully accepted a package task on the system, it will look like this:
<<img "https://photos-1.dropbox.com/t/2/AACT3ZkktSluyde4d0SjUD7hwVGCAt0dTAUEWBtzw_7L2w/12/693466203/jpeg/32x32/3/1509487200/0/2/File%2002-10-2017%2C%2013%2056%2054.jpeg/EJq4nukFGDggBygH/uIzAnTsJyFpictK22N2NwFvwPkHUXWi2eG-ymBA03Bk?dl=0&size=800x600&size_mode=3">>
When you accept a task from the marketplace, it will be added to your account ''temporarily'' - for 15 minutes only - after which (if you do not confirm the task or report the task) it will return to the marketplace automatically.
''Do __not__ click-through confirm without doing the checks below. When incorporated into your routine, they are a breeze.'' Doing so helps to prevent serious and much more time-consuming upsets with clients.
During this 15 minute period, you need to:
#Check the document and order form page.
#If there is a problem, you should either confirm the task or report the task with full awareness of the issue, and resolve via the [[Messaging system]].
<<t "1. Download the document">>
*Is the document written in English?
*If the client has made any requests, are they within the scope of the service paid for?
*Is the document length appropriate?
<<t "2. Check document and order form">>
<<st "__At your discretion__">>
Service descriptions and parameters have been devised to regulate client expectations and ensure that providing services to clients is worthwhile for you. We have no desire to act in an officious way (and we have no desire for you to do so either!) If you do choose to do something extra for a client, however, please point out that you're doing so in your note. This will help manage this client's expectations if in the future they encounter an advisor who is inclined to stick to our prescriptions more closely.
<<t "Target/ original doc word count">>
The word count of the document uploaded should be within the prescribed boundaries. When you download the document to check it before confirming the task, use MS Word's word count functionality to check the client has adhered to the [[Target Word Count Restrictions]].
<<t __Essential__>>
<<st "Official requirements">>
You will need the specific question the document is addressing in order to successfully complete the first iteration. Look for ''Official requirement: '' on the order form page in Document information.
<<t """__and finally, questions for you__""">>
*Is this task within my capabilities?
*Do I understand the service description and know what it entails?
*Do I have time to complete all iterations of this task, giving it my full attention?
These are assigned if we're concerned about an advisors progress and think they might need supervision.
These work exactly like [[Training Reviews]], except we will set the number of reviews you must complete before your account is re-set to normal.
''What is this?''
With all services, clients may add on an additional school (or schools) to a previously purchased service that is still within its validity period.
''What if I'm not available to handle more schools?''
[TBC Amanda]
We currently offer editing-advising services to undergraduate, graduate, MBA, and ~PhD candidates. These services cover the following elements of the applications process:
*Statements (Personal Statement and/or Statement of Purpose).
*Recommendations (Professional and/or Academic).
*Resume or Curriculum Vitae.
*Academic articles for publication.
*Mock interview and feedback.
<<st Responsibilities>>
#Provide proofreading and editing services to China-based students and young professionals who are interested in pursuing higher education opportunities in Western academic institutions.
#Offer strategic advice on quality and relevance of writing and content, interacting with each client to maximize the effectiveness of his or her personal presentation.
#Recognize the high stakes nature of our clients' tasks, consequently meeting all deadlines and responding to client messages in a timely fashion.
#Willingness to review comprehensive training materials, listen to guidance and adhere strictly to our ethical policies.
<<st "Desirable qualities/ skills">>
#Effective interpersonal and written English skills.
#Scrupulous attention-to-detail.
#Willingness to acquire necessary skills and follow written instructions.
#Experience of writing and presentation for challenging, competitive applications.
#Interest in the higher education sector and/ or providing support to international clients.
<<st "IT necessities">>
#~PayPal account (this is how we pay our team each month)
#A Facebook account or, for those who don't usually use Facebook, willingness to utilize a 'ghost' account in order to communicate with other members of our advisor team in our private group (c. 100 members)
#Competent MS Word user. We ask that our advisors do not use other word processing packages because of its ubiquity among our clients.
#Skype
#Desktop or laptop computer. Editing on MS Surface (non-laptop version) or tablet+keyboard combinations does not produce results of a reliable quality.
<<st Benefits>>
#Flexible working: Choose tasks from our online marketplace and iterate independently with your clients.
#Excellent rates of pay: Standard advisor rates are $US20 - US$84+ per 500 words (after initial trial tasks)
#Scope for significant increases as you accumulate positive client reviews and build your reputation.
#Comprehensive online guidance and full back-office support team; opportunities to build professional skills.
<$list filter='[prefix[$:/Contact/]!$:/ContactLists/]'>
<<st {{!!fname}}>>
//{{!!job}}//
{{||$:/copy}}
</$list>
Get your client to relate what happened TO THEM. This is fundamental to the nature and purposes of the document:
*To introduce the candidate to the admissions committee.
*To //persuade// them that the candidate is suited, motivated, and able.
Persuasiveness is based on the plausibility of the claims that compose and support the [[Point]]. The strength of claims, in turn, is based on the quality of evidence that support them. The most compelling and relevant evidence the client can access is rooted in their own experience.
Factual statements or simplistic abstractions that could be sourced from a textbook or newspaper should be discouraged.
Skim the front page overview of the program. Pick out any key points that have relevance to anything you’ve read from the client’s materials. Think about what the course is essentially about and keywords/phrases.
<<bq1 "
The 42-credit M.S. in Real Estate program offered by the NYU Schack Institute of Real Estate integrates theory, real-world application, and practice-based immersion in all phases of real estate—from initiating and analyzing to negotiating, financing, and closing the transaction. Courses examine, in detail, the breadth and depth of the various real estate disciplines, including development, finance, investment, valuation, project management, law, market analysis, digital imaging, and economics. Topics range from analyzing and financing to managing and owning.
The M.S. in Real Estate curriculum provides students with both the fundamental knowledge and the advanced analytical skills required for success across the broad spectrum of the real estate industry. NYU Schack faculty members are leading practitioners, who explore trends and address issues that are relevant to the industry. Students receive a solid theoretical foundation as well as the hands-on experience to apply what they learn in class to the working environment.
Degree candidates become part of a global network of more than 2,000 alumni who connect with students through a mentoring program, introduce them to professional development opportunities, and provide scholarship support. Throughout their course of study, students are encouraged to take a conscientious approach to their profession as they explore how their expertise can best be used to meet the challenges and developing needs of today's society.
">>
<<st "Some key takeaway points that could inform your questions to clients">>
*Integration of theory and real world practice.
*Holistic nature of the course.
*Leading practitioners
*Relevance to modern industry
*Global network.
*Conscientious approach.
These start to tell you what the program wants to hear from its applicant.
<<bq1 "Standing on the brink of the next age, I discern that we are living in an efficient world.">>
Clients browse your profile and decide whether they want to appoint you.
Having a profile that fulfills our criteria is very important.
Fees for appointed tasks are charged at an elevated level to standard tasks.
Appointment fees vary according to where your credit performance ranked in the preceding month.
|!Top 20% | Level 5 | Standard fees x 2.0 |
|!Top 30% | Level 4 | Standard fees x 1.6 |
|!Top 50% | Level 3 | Standard fees x 1.4 |
|!Top 75% | Level 2 | Standard fees x 1.2 |
|!Top 100% | Level 1 | Standard fees |
|!Trainee |Standard fees - Reviewer fee |>|>|
These precise numbers are open to change and review.
<<dispLay "Appraising the document" 3-l2>>
The work plan refers to the services contained in the package service when accepted by an advisor.
We always suggest that the client discusses the plan for the service and their expectations with the advisor
This is intended to avoid, for example, the client adding too many schools to a service or asking for documents to be completed at a level of urgency that exceeds the service description.
Responsibilities:
>Everyday duties
E.g.:
<<bq1 "I helped customers in the reception area.">>
Accomplishments:
>Specific actions taken to meet or exceed team/ stakeholder objectives/ expectations
E.g.:
<<bq1 "Establishing strong customer service operations involved handling up to 30 clients per day, and up to five clients at any given time, handling a range of complex problems in a timely and efficient manner, achieving a 90% approval rating from clients.">>
<div class='first one-half'><<bq "<span style='font-family:Courier'>I remember it like it was yesterday: I was faced with the decision of what university to attend. I had offers from three different universities, but only one caused my heart to race with excitement. The Southwest University of Political Science and Law extended me an offer to study law. Without hesitation I knew this was the school for me. I have dreamed of being a lawyer since high school.</span>">></div>
<div class='one-half' style='margin-top:100px;'><<bq "Can you please provide me with more detail about why you dreamed of being a lawyer. Did something happen to cause you to want to become a lawyer? Do you have a story you can tell about this? I think it would be more relevant to get immediately into why you want to apply for this JD/~PhD. This description of your background doesn’t really add to your case for this advanced program. Look at the question carefully: It would be better to use this space to talk more about (a) JD/~PhD goals and/ or (b) public service objectives/ implications of your career plan (ie: how you would use this JD/~PhD)!">></div>
<div class='clearfix'></div>
''Compose questions designed to improve the impact and persuasiveness of the material your client presents.''
*Aim to get responses from your client that are substantive and composed of examples, specifics, details, facts, and/ or personal anecdotes.
*Stimulate critical thinking and draw out the ideas and underlying presumptions that can set your client's work apart from that of all the other applicants with whom he/she is competing.
*Elicit blocks of text whose incorporation into the next iteration will improve the document in line with the guidance contained in:
Here's an example of how much you should be interrogating the material:
<<iFrame 0B1gbT0IU3BgKZlFBcy1LNzlNNkk>>
<<tabs "$:/AskingQuestions/Triggers $:/AskingQuestions/StyleQuestions" $:/AskingQuestions/Triggers>>
Setting your profile to ''unavailable'' prevents clients from appointing you.
Use it if you are away, on holiday, or too busy to take on additional work.
Failing to adjust your availability can result in significant stress for our staff due to
* disappointed clients
* the resultant loss of business/ credibility
The solution we’ve provided is so straightforward.
In the event of inaccurate availability we will deduct the entire value of appointed task(s) from the relevant advisor’s account.
This will either be given to the prospective client by way of an apology or used to compensate an advisor who was able to take over at the last minute.
<<profileButton>>
Don’t capitalize just because it is a ‘professional term’.
<<bq1 "I am currently studying for a Bachelor' in Marketing at Wuhan University of Technology is equipping me with the fundamental <span style='background-color:yellow;'>Marketing</span> theory and requisite analytical skill to success on the course.">>
NB: first ‘Marketing’ is OK because that is the name of the course.
Example 2:
<<bq1 "My decision to pursue <span style='background-color:yellow;'>Computer Science</span> as a career, therefore, was no surprise…">>
Another:
<<iFrame 0B1gbT0IU3BgKZ3NyeDRBUm1JeTQ>>
Advise your client to include details of their discipline without excessive jargon. Jargon usually makes a reader work harder than they should.
Balance style, word choice, and sentence length.
See [[Baseline Edit Points - Run-Through 1]]
* Avoid inaccurate terminology
* Don't know/ not sure: Look it up
* Ensure correct usage of technical terms in context
<$list filter='[tag[Baseline due diligence checklist]]'>
<<t {{!!title}}>>
<$transclude mode='block'/>
<style>
li.tricky {list-style:none;display:inline;background-color:whitesmoke;padding: 0 3px;border-radius:3px;margin-right:5px;}
</style>
The Baseline edit service is for clients who have a completed draft and need assistance in identify and correct errors in spelling, grammar, punctuation and style.
''Every service'': All ZHISHIQ services include a Baseline Edit __on each iteration__ (with the others also including more in-depth advising features).
|!Also called |{{!!alt}}|
|!Used for |<ul style='padding-left:0;display:inline;'><$list filter='[list[!!doctypes]]'><li class='tricky'>{{!!title}}</li></$list></ul>|
|!Word count guidelines |±{{!!wordcount.flex}}% - at advisor's discretion (see [[Accept/ Confirm Checklist]])|
|!Iterations |x {{!!iterations}} |
|![[Messaging period]] |{{!!expiry.days}} days|
!!Deadlines
|!Urgency |! First iteration|! Subsequent iterations|
|!Normal | {{!!deadline.normal_1}} hours | n/a |
|!Urgent | {{!!deadline.urgent_1}} hours | n/a |
|!Very Urgent | {{!!deadline.vurgent_1}} hours | n/a |
<<t "Detailed description">>
<<st "Advisor's role">>
This service is an attentive line-edit. The document you upload should be free of errors in spelling, punctuation, style, or mechanics. The document should read fluently by the standards of a native English speaker. This includes checking correct use of [[Technical Language]] in context.
* Reads fluently by the standards of a native English speaker,
* There are zero grammar, spelling, and punctuation errors.
* Ensure that the prose reads smoothly and consistently.
* Conduct any necessary due diligence to ensure clear, distraction-free prose and correct deployment of terminology.
* Edit extensively, providing discernible improvements to your client.
* Ensure your client has a good experience with ZHISHIQ.
<<st "What you do not need to do">>
* Make internal rearrangements or revisions in sentence/ paragraph ordering.
* Reduce the word count by more than 10%.
* You do not need to provide detailed advice, lines of questioning, and guidance needed for our [[Heavy Edit]] and [[VIP Service]].
This edit does not provide the in-depth commentary and advice about structure, context, and content ordering that our other services offer.
''However'', adding transitions, addressing repetition, streamlining wordy sections, and questioning confusing content are all ways that you should go about enhancing a Level One document's overall flow and readability.
<$transclude tiddler='Common pitfalls' mode='block'/>
<<st "More to read - general">>
<<list-links "[tag[Baseline Edit]!tag[Guide]!tag[Baseline due diligence checklist]!tag[RunThroughs]!tag[Resumes]!title[Other key Baseline Edit points to look out for]!title[Key ESL issues for every doc]]">>
<<st "More to read - resumes">>
<<list-links "[tag[Baseline Edit]!tag[RunThroughs]!tag[Guide]tag[Resumes]]">>
<<iFrame 0B1gbT0IU3BgKbHMtdmhvYlBmcEE>>
Some of the most common issues include:
* Faulty agreements
* Excessive use of the passive voice
* Sentence fragments/ run-on sentences
* Double constructions
* Apostrophe errors
* Commas (including superfluous/ absent/ splicing)
* Semicolon misuse
Please ensure you are thoroughly aware of these issues and comfortable spotting them during your proof-read.
<<st "Style guides and localization">>
If you need to check any points of local style, please consult a reputable online resource, for example:
* The Economist Style Guide (US)
* tameri Guide for Writers (UK)
* The Canadian Style (use chapter heading on the left-hand toolbar)
Some of the resources above are linked to resources on this site, however, we’re not proposing to run you through every rule of grammar, punctuation, or style. The Internet in general is also full of examples and explanations.
<<st "Spell-checker">>
Set local language settings of your spellchecker to the location that corresponds to your client’s target institution (ie: US/ UK/ Canada/ Australia English).
The following summarize some of the stylistic points that should be addressed:
*Excessive use of the passive voice.
*Wordy, pretentious, redundant or tautological words/ phrasing
*Repetition of words in close proximity.
*Slang/ other informal language.
*Arbitrary capitalization.
* Smooth transitions
.
* Reduce repetition
.
* Streamlining superfluous text
.
* Ensuring consistency
.
** Defining abbreviations.
**NOT defining abbreviations you subsequently don't use!
** Avoiding lazy expressions. (See [[Etc.]])
<<st "Additional resume-specific issues">>
*Formatting is consistent and professional without typographical inconsistencies/ errors.
*First-person in resumes.
*Weak verbs.
<<st "Remove Chinglish expressions">>
Please remove anything that does not read fluently to a native English speaker. Understanding ‘the gist’ or being literally correct is insufficient. All of the words must come across as being completely accurate and natural.
<<st "Ensure smooth transitions between sentences">>
If reading an applicant's materials is a jarring experience for the Admissions Official who reviews the candidate's documents, this will likely increase his/her chance of receiving a rejection letter. You can help your clients circumvent this negative outcome by adding transitions between sentences.
<<st "Reduce repetition">>
We also recommend that Advisors make it a point to address the repetition of similar words in close proximity. This is a very common issue and should always be resolved. Although, strictly speaking, it goes a little further than rendering the document correct English (per Level One service) it is something our clients expect us to revise.
<<st "Repetitive phrasing">>
In addition to repetitive words, be on the lookout for repetitive phrasing. This is particularly common in resumes/CVs, where client's often describe their achievements in different roles, or different tasks within one role, in almost identical ways.
<<st "Streamline superfluous text without compromising meaning or substance">>
Many clients have been led to believe that quantity is tantamount to quality when it comes to word counts. You will, therefore, come upon essays, resumes, and RLs in which clients have used 600 words where 500 would have sufficed.
<<st "Encourage consistency">>
Take the following scenario as an example: You are performing a Baseline edit on a Level One task. You notice that, in paragraph three, your client has written about how she got an internship at...
>...a Big 4 firm last summer.
And then, in paragraph five, you read about how the audit project she performed at this
>Big Four firm, helped her decide to make the application.
Scattered throughout the body of the email we have both 'Big 4' and 'Big Four'. In this context, this consistency shows care and is therefore critically important.
<div style='float:left;'>[img width='100px'[$:/PayPalLogGo]]</div><div style='margin-left:120px;'>~PayPal is the only viable means for us to execute payments at present. We are aware of the fees it involves.
<p>Please note that fees on the website are listed in US$, which is subject to ~PayPal's regime of charges and exchange rates on the date of payment. We have no scope to control this.</p>
</div>
<center><iframe style="border:none;" src="https://drive.google.com/file/d/0BwiSHPBB3kz9T0cxLVI0WHV5Znc/preview" width="640" height="280"></iframe></center>
Addressing the question posed (and not an imagined question or prerequisite for a 'personal statement' or 'statement of purpose') is a fundamental way for a candidate to demonstrate they are engaged, motivated, and capable of—at least—tackling the new, unfamiliar challenges they would potentially face in future school.
There's a word limit for a reason. Every fact in the statement—and every evaluation made on the basis of those facts—should demonstrate the candidate's suitability for the program and its suitability for the candidate.
The first and most direct guide to what is relevant and what is not is the question/ prompt/ official requirement.
''If you are handling a Heavy Edit job or higher and your client has not included a specific question/ prompt under 'Official requirements' on the order page, you __must__ request it from the client. It's impossible to successful execute these services without knowing the question the document is intended to address.''
Break down the question into bullet-pointed branches at the beginning of the document (and task).
<div><iframe style='float:left;' src="https://drive.google.com/file/d/0B1gbT0IU3BgKUVNfNlh2QXp1eEU/preview" width="48%" height="250"></iframe>
<iframe style='float:left;' src="https://drive.google.com/file/d/0B1gbT0IU3BgKNzQ4bWZBRndTbEU/preview" width="48%" height="250"></iframe></div>
<div class='clearfix'></div>
The key purpose of this outline is that it offers the client and easily comprehensive and well-structured suggested approach to their document, from which they can easily start writing.
The following is a useful piece of constructive commentary provided during a [[Peer Review|Peer Reviews]] of an outline for an RL task. It provides a useful summary of what is expected in an outline:
{{$:/GoodReviewerFeedback2}}
\define bq1(t)
<blockquote style='font-family:courier;'>$t$</blockquote>
\end
<<tag "Heavy Edit">><<tag "VIP iteration 1">>
This is advisable if any aspect of the program details or client instructions seem misplaced or wrong.
<<t "E.g.">>
''Official Requirement uploaded by client''
<<bq1 "(250 words for each) 1. What does information management mean to you and how would getting a
Master’s degree in information management fit in with your future plans?
2. Why and how did you choose the MSIM program at the UW iSchool and how do you see the
program advancing your plans in the first question? What makes this program a good choice for you?
3. Reflect upon an experience on a job, at school or in your community where you were challenged or
volunteered to take a leadership role. Reflect upon your own experiences. What went well? Where did
you struggle? What lessons did you learn that you’ll apply in future situations?
4. During your career as an information management student and professional, you will work with
others who may be different from you, both culturally or in terms of work styles. Reflect upon a past
instance where you were challenged by diversity in some dimension—whether ethnicity, gender,
sexual orientation, education, work background, age, culture, or communication. What difficulties did
you encounter? What steps did you take to bridge underlying differences? What lessons did you learn
that you might apply to working with diverse collaborators?">>
''Client instructions:''
<<bq1 "It is not four essays of 250 words, but one essay addresses these four questions, 250 words for each. I hope it could be better organized. My feedback is written in blue and I also answered the questions you request. Thanks for your help.
Regards, Wendy">>
''Advisor note:''
<<bq1 "Hello Wendy,
This is from the program's website : 'Each question should be answered in 250 words or less must be answered separately. Do not combine responses into one narrative. Applicants who do not follow the required format will not be given full consideration.'
Are you absolutely certain that you would like me to reorganize the next iteration into one narrative? I do not think that this would make it 'better'; I think that this would put your at risk of not gaining full consideration.
Nevertheless, if that is what you would like, then I will comply.
Warm Regards, Abby">>
''Client response:''
<<bq1 "Hello Abby,
Sorry, my mistake! Thanks for your reminder! Regards,
Wendy">>
<<st "In your opening note at the beginning of the document">>
* Start with a friendly greeting and a piece of positive feedback.
* Acknowledge and respond to all client questions scrupulously, addressing any anxieties expressed.
**Client questions should generally be reasonable in scope (i.e. they should pertain to the document in hand and the service level being provided). You're not obliged to do things beyond the realms of the service description unless you choose to do so!
**Remember: Clients may ask you questions on the order page or within the document.
**To reiterate: Never ignore client questions; if they're to broad to respond to properly, nonetheless always acknowledge politely.
* Give a brief overview of what you've done in the document to the client.
* Highlight any 'interpretations' you've made during your edits while being very careful to avoid implying a lack of knowledge of the subject matter that might cause your client concern about your ability to successfully complete the edit.
<<st "In heavy edit tasks and above">>
*Sections of text you've excluded with explanations.
*Portions of text that should not be included without serious reconsideration by the client, with accompanying questions.
<<st "Inline comments">>
* Use balloons for your comments on particular points in the text that are more productively highlighted in-line.
<<st "Impressions count">>
Spelling and punctuation in your comments should be error-free.
<<st "Example of a good opening note to a VIP client prefacing an Outline">>
{{Example of a good opening note to a VIP client prefacing an Outline}}
\define y(t)
<span style='background-color:yellow;'>$t$</span>
\end
This is a very non-exhaustive list.
*But to be personal, industrial organization theory is the most <<y charming>> branch.
*<<y "As is known">> that the resolution of satellite image is very high
*I can still remember…
*<<y Minister>> of Marketing
*Director of <<y Propaganda>>
*These days, <<y "my first bucket of gold">> offer advices on researching <<y enterprises>>
*What's more
*Besides
*step-by-step
*I am his teacher in Electronic Circuit Experiment in his undergraduate school. In the class Lebron <<y "left a deep impression on me">>. … In addition, he is good at managing and making use of his time, which left a strong impression on me too.
\define imgp(h,l)
><img height="$h$" src="$l$"/>
\end
It should be a passport-style ‘head and shoulders image, clear and professional. Please ensure it is high resolution.
*You should be the only subject in the photo.
*Your face should be in clear focus.
*Wear appropriate professional or business casual attire.
*Keep your head straight and upright, head and shoulders.
*Use a pleasant facial expression.
*The higher resolution, the better (we’ve noticed strong correlations between client appointments and Advisor photo quality).
''Check it in context''
On the upload page:
<<imgp "150px" "https://lh3.googleusercontent.com/E9ostWefwJdc02yWbvrvAsvZts9wHkYcf1Z9Ziqme7nLtnaZWjDMMjW-SvCWqjripm-KvwGD-EyTdGS58WjPUCvUUqPrp0UAHRLOMpMcLxrfwo-WxUab7ar5xtQy7M_cR_PBkf2dnLFDLEbRys08SZIKfBK2fhHqvKOFZTSoZwUN8J0tlQJxhg_MD6psxBhNr1wx-bziM-sHiIHpamuU_QI44G7uD8FkcOz38QFJ2vYhu5RnRwFAdbcVkfN5pMSmuEbmzwLGGVD4J4XILm9CKGN1n1UNGlAen2Nj7M2QxszMWOm0oMjeLlLSkYrKnN2XlJOx7rKoxyop7yYvXelGz7M51Xw2gZjofCEQH_CGxwy7vJFCk-O8RGxA8t_cjdpq2ySqniuyEzA4pGWCGqW2sJapau1wdl-i_r8JBc6l8n9GkmnZfb5qNaMYuye1izqxC77SL7gjS9bh7AWiQ2fnks7qZYXwHS-5rtNSQ9ICVzNfEPhE3AlIocaFyjBxKuPxvqMXpQArA3NGblZt4lr5suvKR4JBBKiqBZO86ewmwkCpgQhyADQXk2sQSLuuNA=w2370-h1272">>
On your profile:
<<imgp "100px" "https://lh3.googleusercontent.com/DBxmJfCzjJFdiRFi0LyMfK2KonvK56vw7ch3SInUEisTuUCrd6VRSFfRGtirziu_nhRFl-FL7bpFfXZLTxDUadRGTrgOwda_uworBXZDkl7D9kLQc4E0CjH7TN-upTJcdNyvwy2jHVzRB2Xr2RmKAQB34NZXLM_UNcce4xV1ImyhUIo7Eu6vJ4wXgG73thhCVtu9LBST4zeTGq0iSYZAGagI4LR_6WsRObNBQItcVkIG7KpL8_v16CsdDYDyZ0bcdEFKnrlngEZnqxnfdUWJmb3Oz0X8_iEA4WdqqA8PlMzW2eU0dmJLtjkCyqYQM-kYdiiYogpTJ7-FuVqtWcuzL8ISnQZbb4CN-ECV-9YtKrd2lIglkjSwtW1wmLgQq77DBz-szOElB575UlQtx44D8TCW3tY92qyD9j-ak3-mw_NUjcepTyBN4RDHmd0mHjv7hpKsv8sVqtUaWESEz9dQoZNfyHDDD54dSKMUPQAjlswqbsReAK70wQ5kTfjCY8-agidPhZcZkHxpJ6pumF-0bd_l3zTqFKR5AXdiMLPcdNSRI7gHNptZF4fbGZoYfw=w2370-h1272">>
In search results:
<<imgp "150px" "https://lh3.googleusercontent.com/Gv8bHpJp7AMoxH0LKACYHK2bBBwfxVx6NwdPZ7_6l8fxuoUrHI3W0afzw9KXJf9sctc0uhGu3TS2rkWB8Jyc_4mCZwvkyUTkg0-6M4O2JDqZZWwFp-KspwryzbOZXGZehI1DJHHOoUZCHtAsCKOJVicOcoceRSNFh3C5whM1IXB96aIoRAHilSTFrDC5mJgN2k1i_oHUdMzeiJ-lqMI8_MSlvv85k_lESrI3s1Dz-RoB1ZZA2UJ_ko-HFmeH3iIsvl2Izr6zYnf8CcJD8GJJwlVu1BpJLmjFI1q4ZdbDA02ch82u8ekok1-qZ1q6aKwLE6U3-PDy3Em1in74zsAhiQeOhkuNevMCoq8Ao9OPzKKwgarbML7Vjup8p0hxvRs_9XsdWDA5nzunIAuvGwiTTkYHzcgHuwMaThDrc223b0JHSY0RePpnStqoGmGjE1gRU083yeHiaO68MvegDi_keAevZpE4j1bcZkDK8kSrPuZIlUt2Fh39z3TaPCmGDrwJLHIsrdvpYQhdsCSSdluljCU6UMey2YHxCH1p3R-x9gzJ5GSQvjOkp0dTI6T_tQ=w2370-h1272">>
<<profileButton>>
<<bq1 "I have always loved Steve Jobs…">>
Consistency
Avoid referring to something in one way and then another, eg: "Big 4 firm" and "Big Four firm" in the same document.
*The messaging facility is provided to enable advisors to act swiftly to ameliorate circumstances that would otherwise give rise to a complaint.
*Clients are required to keep the content of their enquiries restricted to the scope of the service purchased; questions should be discrete and particular:
**Good: Is “color” the correct spelling for UK English?
**Bad: Is there any way the words in this paragraph can be more beautiful?
*Advisors are required to acknowledge and respond to client messages within 24 hours. Failure to do so can result in penalties under the credits system. [link to be added.] Advisor responses should be entirely professional and polite in tone and content.
*If a client asks you can excessively broad question, politely explain the guideline above and send your best wishes. This is completely OK.
*If a client is ever rude (this is rare, but has happened occasionally), please politely explain that you are referring the matter to our customer services team.
After you upload a document, await client feedback. When you've received the feedback you can download and commence the next iteration.
><<img "https://photos-3.dropbox.com/t/2/AADG5HQmpCKB7Hadg2bqE5yqc4mguFdeJEWxDqUBWA43NA/12/693466203/jpeg/32x32/3/1509487200/0/2/File%2002-10-2017%2C%2014%2046%2054.jpeg/EJq4nukFGDggBygH/U0lUR-sLCN1rf1FRLC3m5N-Na_-_3fU68eZYU5Ne_yg?dl=0&size=800x600&size_mode=3">>
...which you then upload, and awaiting either the next iteration or the completion of the service (depending on whether this is a [[VIP Service Package]] or a [[Heavy Edit Package]] service.
><<img "https://photos-6.dropbox.com/t/2/AADOORoj2GZPs3EAxvcgQ5_W7kxNYRDjPJ9G6InGgS4kyQ/12/693466203/jpeg/32x32/3/1509487200/0/2/File%2002-10-2017%2C%2014%2047%2021.jpeg/EJq4nukFGDggBygH/6YuiVbZr32gmDXfY4SL6otOqlv5PGI7Nw8mCALyOWds?dl=0&size=800x600&size_mode=3">>
Client has written...
<<bq1 'Personal Statement'>>
or
<<bq1 'Statement of Purpose'>>
...on the order page.
If you've already asked for the official requiremnt and [[checked the program website|Check program website]] yourself, remember...
*Prompts can include generic/ open:
<<bq1 'Submit a statement of purpose'>>
*Or detailed and itemized:
<<bq1 'Include a personal statement which describes how your experiences have prepared you for graduate study, your objectives, career goals, initial research interests, and why you think there is a good fit between your objectives and our program.'>>
If there is no in-depth question available, use an authoritative standard prompt, e.g.:
[[Statement of Purpose - standard content]]
Please make sure you explain to the client what you are doing and why.
Clients will often ask for the following 'upgrades' informally. This puts advisors in an uncomfortable position. We have addressed this through the following procedure and point-of-sale language. Please be familiar with this:
<<<
Documents will be completed in accordance with the details you provide on your order form ''at the time the advisor commences work on the document for the first time''.
Any desired changes to the information on your order form should be submitted using the procedure below.
''Service add-ons available''
If you need any of the following, please contact ZHISHIQ office staff in the first instance:
*Uploading documents that exceed the agreed word count limits.
*Applying to multiple different types of programs.
*Multiple different recommenders for different programs.
*Asking for multiple, different questions to be addressed during the same service.
*Seeking expedited services beyond the service description.
''How to request a service add-on''
Thereafter, please contact ZHISHIQ staff to make your request. They will be happy to confirm your requirements, liaise with your advisor and help you make the additional payment required for your service add-on.
''Add-on requests direct to your advisor are not permitted''
Please note that requests such as those above that are made directly to your advisor may result in the service being automatically paused while ZHISHIQ staff try to contact you about your requested add-on.
To avoid this difficulty please make add-on requests through the proper channels.
<<<
Don’t break the flow of a document by inserting comments directly into the body of the document. Use MS Word's comment function for inline comments.
<small> Deduction penalty ranges: <$reveal type='match' state='$:/ComplaintsPolicy/State' text='0'><$button set='$:/ComplaintsPolicy/State' setTo='1'>Show</$button></$reveal><$reveal type='match' state='$:/ComplaintsPolicy/State' text='1'><$button set='$:/ComplaintsPolicy/State' setTo='0'>Hide</$button></$reveal></small>
<$list filter='[tag[Common causes of complaints]]'>
<<st {{!!title}}>>
{{!!intro}}
<$reveal type='match' state='$:/ComplaintsPolicy/State' text='1'>
|!Credits adjustment | {{!!credit}} |
|!Fees adjustment | {{!!fee}} |
</$reveal>
</$list>
*Please note that penalties are indicative only and are not applied blindly.
*Each situation will be judged according to the circumstances.
*The ''exceptions'' to this are ''SPG errors (even minor ones) in the final document'' and ''Documents uploaded after the deadline'', which are both more clear-cut and more fundamental.
Please see here for more complete guidance on how we try to work with our advisor team to ensure a consistently high standard of work.
!!!''Do a Baseline Edit on __every draft__ of __every service__ without fail''
Advisors should not 'leave edits until the next draft'. This has been shown to be very harmful to client confidence.
!!!''It's just a little typo.''
Reviews are truly vital. From a business perspective, we just can't tolerate errors of any kind. It's absolutely nothing personal, but it's something we must enforce very seriously. We are certain you will understand.
*Ensure your process includes at least three thorough proof-reads.
*Take a break between edits and proof-reads.
*Don't underestimate the attention to detail expected by our clients.
''I think some tasks are missing from the amount I received''
//Were they tasks you completed on the last day of the preceding month?//
#Please note your monthly payment will be for tasks ''completed'' between the first and final day of the preceding month (e.g. 01 - 30 June or 01 - 31 May).
#Please note that these datelines are calculated in China and therefore run from UTC+8.
<div style='margin-left:30px;margin-top:20px;'><<rarrow>><div style='margin-left:40px;'>{{$:/timezoneMap}}</div></div>
''~PayPal fees are annoying. Couldn't you do a bank transfer to my account?''
#We are in the process of developing a new financial channel to pay US-based advisors, but please be conscious that the process of sending money out of China is subject to serious government scrutiny.
<<bq1 "The motto of my undergraduate college, Meliora (or ‘Ever Better’), conveys a similar message, which I continually tried to embody throughout my undergraduate study, but sometimes when working in a group setting, it is hard for other members to do so.">>
<div class='cardBox'>
<<st "Preamble notes">>
>“L2+” means any document service that is not an L1.
>“SPG” means ‘spelling, punctuation, and grammar’, and is taken to include the useage of professional terminology.
>These guidelines apply to all services that involve advisors and documents.
Client complaints are a disastrous scenario for our company. They are extremely time-consuming and expensive to solve.
When they do occur, we invest a lot to ensure clients ultimately go away happy.
Why?
They make us genuinely unhappy. Our clients have invested in our services because they trust us, and they care about their future. Trust is hard won. So are opportunities for individuals seeking the best educational opportunities. We want our clients to have an enriching experience with us. And we want them to submit their applications with confidence and integrity.
A complaint means an extraordinary level of dissatisfaction, and a shattering of that hard-won trust. Worse, the consequence is likely a dissemination of this negative feeling to the client’s friends and contacts. Marketing our services is not easy, and whole swathes of potential clients are lost with each complaint.
We believe in our advisor team, and therefore we believe legitimate complaints do not need to happen.
As such, our penalties for legitimate complaints are tough.
</div>
<<dispLay "Complaints Policy" "G4eyhregs">>
Use the conditional tense when referring to a student's anticipation of the benefits they'd get from attending a school:
<<iFrame 0BwiSHPBB3kz9cHBhQ3JGVzdiTjA>>
If you've finished all the documents in a service, press <<code "Finish the service">>.
><<img "https://photos-6.dropbox.com/t/2/AAAG9_hiTL4wDmeBFBlnBR6gvCfsP8VU663aVK0WpbmUwg/12/693466203/jpeg/32x32/3/1506963600/0/2/File%2002-10-2017%2C%2015%2007%2028.jpeg/EJq4nukFGBQgBygH/hMfdi7goL7xLjSPngI3D9gQ_WuJWh0fMxhg3gyn2ZE0?dl=0&size=800x600&size_mode=3">>
Your client will confirm.
><<img "https://photos-2.dropbox.com/t/2/AABppq7FMbJOXliqEN2pZDR0gTQjxdD-1H5hPaBWFU1LPQ/12/693466203/jpeg/32x32/3/1506963600/0/2/File%2002-10-2017%2C%2015%2006%2042.jpeg/EJq4nukFGBQgBygH/ZM4Hl8kTCiRwKrSWq9d-oFi6Mi0CMYR2KwQkGejU2aI?dl=0&size=800x600&size_mode=3">>
If you don't receive a confirmation, just contact us (see [[Contacts by issue]]).
''__Abbreviations__''
If you've chosen to abbreviate "Expected" as "Exp."...
><span lang="EN-GB" style="font-size:11.0pt;font-family:Calibri;
mso-fareast-font-family:SimSun;mso-bidi-font-family:Arial;mso-ansi-language:
EN-GB;mso-fareast-language:ZH-CN;mso-bidi-language:AR-SA">2014.09-2018.06<span class="msoIns"><ins cite="mailto:sload356" datetime="2017-09-12T01:46"> (Exp.)</ins></span></span><span lang="EN-GB" style="font-size:11.0pt;font-family:"Times New Roman";mso-fareast-font-family:
"Times New Roman";mso-bidi-font-family:Arial;mso-ansi-language:EN-GB;
mso-fareast-language:ZH-CN;mso-bidi-language:AR-SA"> </span><!--EndFragment--></div>
...then your edit of "Present" down to "Pres"...
><b><span lang="EN-GB" style="font-size: 11pt;">2017.09<span class="msoIns"><ins cite="mailto:sload356" datetime="2017-09-12T01:53">-</ins></span><span class="msoDel"><del cite="mailto:sload356" datetime="2017-09-12T01:53">—</del></span>Pres<span class="msoDel"><del cite="mailto:sload356" datetime="2017-09-12T01:53">ent</del></span> </span></b><!--EndFragment-->
...should include a full stop in the same manner i.e. "Pres."
__''Styling decisions''__
Equally, in the above examples, if you're choosing a bold font for one date, this approach should be taken to other dates (at the same level of the document hierarchy).
''__Decimal places__''
>GPA: 3.8/4
=
>GPA: 3.8/4.0
__''Other patterns in the information''__
>Interviewer, Surveys of Urban Neighbourhood in Shanghai
>Second Grade in the Inaugural Social Innovation Hackathon, Tsinghua University, Beijing
>Volunteer Iinterpreter in Lu Xun’s Final Residence
>Coordinator, Cultural Centre at Waitan Sub-District Office, Huangpu District, Shanghai,
There are two separate approaches here.
Using the word 'in' doesn't fit so well with the formality of the resume. Therefore, perhaps opt for the 'address' pattern.
More importantly, the ''//same pattern//'' should be applied to all entries.
Never contact clients via personal email (even if they leave you their email address in the document or order form.
Instead, either make notes in the Cover Sheet or use the messaging system on the website, which is linked to each task: Details → Scroll down → Messages:
<$list filter='[prefix[$:/ContactLists]]'>
<$set name='reason' filter='[title{!!title}removeprefix[$:/ContactLists/]]'>
<$macrocall $name='st' t=<<reason>>/>
<<st {{!!fname}}>>
{{||$:/copy}}
</$set>
</$list>
Candidates shouldn't focus exclusively on why the program is good for them. They should also consider how they can contribute to the program.
!!Cover sheets
{{$:/coversheet/pages/dl-links}}
''Missing deadlines (by any margin) is not acceptable''
Check your account regularly. This includes deadlines for iterations, but also responding to client messages in a timely fashion.
See [[Common causes of complaints]].
''School question''
<<bq1 "Describe your interest in Medill's Integrated Marketing Communications program. What experiences have led you to apply? How will this program help you achieve your career goals? What experiences have drawn you toward a career in integrated marking communications and what steps you have taken to prepare for or advance your career?
">>
''Advisor's tailored additions to the questionnaire''
<<bq1 "
#Where did you learn your statistical skills?
#How advanced are you statistical skills?
#Where have you been applying those skills in areas that are relevant for your graduate school application? Describe one example in detail.
#Why are statistical skills important at Medill and for studying IMC?
#What classes you took as an undergraduate in university are particularly relevant for your graduate school application? What skills/knowledge have you learned there that make you a strong applicant?
#How do you think your journalism background is going to be helpful for studying IMC at Medill? Why does it make you unique? Give an example if possible.
#Why are you so interested in Integrated Marketing Communication, particularly? What is it about IMC that really attracts you? Why not just study marketing or CSR somewhere else?
#Can you give me 2-3 reasons why studying IMC at Medill particularly is the best possible next step to achieve your career goals? Is there, for example, a professor or a course you really like?
#What is your previous experience with and/or knowledge of IMC?
#Do you want to introduce Chinese organizations to IMC in the future? Why do you think they would benefit from this?
#Why are you fascinated by CSR? What would be possible benefits of IMC to be used in CSR?
">>
\define linkReveal(t)
<$reveal type="nomatch" state="$:/linkState" text="$t$">
<$button style='border:none;display:inline-block;color:blue;margin-left:-14px;margin-right:-18px;' set="$:/linkState" setTo="$t$">$t${{$:/core/images/chevron-right}}</$button></$reveal>
<$reveal type="match" state="$:/linkState" text="$t$"><div style='height:300px;display:inline;'><$button style='border:none;display:inline-block;margin-left:-14px;margin-right:-18px;color:blue;' set="$:/linkState" setTo="">$t${{$:/core/images/chevron-down}}</$button><div style="position:absolute;border:1px solid grey;padding:0;margin:10px 0 0 0px;"><$scrollable class='scrolls'><$transclude mode="block" tiddler="$t$"/></$scrollable></div></div>
</$reveal>
\end
<$list filter='[prefix[$:/Disincentives/Reason4Disincentive]reverse[]]'>
<div style='font-size:150%;'>{{!!subtitle}}</div>
<$transclude mode='block' field='text'/>
</$list>
\define bq(t)
<blockquote class='q'>$t$</blockquote>
\end
<style>
blockquote.q {border-left:;text-align:left;margin-left:5px;margin-top:5px;margin-right:1px;font-size:90%;}
blockquote.q::before {content: "";}
table td {vertical-align:top;}
li.pullL {font-size:90%;padding: 0; margin:0;}
</style>
|!<span style='color:red;'>Issue</span> |!Example |!Possible solution(s)*|
|!Explaining straightforward or simplistic matters that will be well within the reader's knowledge/ experience. | <<bq "I am applying because I’m interested in…">> or <<bq "…because I love this subject…">> |The candidate must be prompted to unpack (分解), explain, and substantiate these points with specific, relevant detail. |
|!Overt assertion of skills or qualities without substantiation | <<bq "This was an excellent teamwork experience; I handled it well and I feel proud of myself.">> |[[Show don't tell!]]. |
|!Inappropriate subject matter for the application level; often conveys insufficient maturity of perspective (especially for Grad School applicants) |<ul><li class='pullL'>Relating information about parental accomplishments</li><li class='pullL'>Discussing matters that occurred way outside the last three years.</li></ul> |Remind your client (sensitively) that schools care about where they are right now. In most cases, it is prudent for the candidate to start at their most sophisticated level of development and strongest performances. This is what matters to the target institutions. |
|^!Robotic program references | <div style='text-align:left;'>Any information about program lifted more-or-less-straight from website (professors, classes, facilities, etc.) without making sophisticated links to candidate's background.</div>| <div style='text-align:left;'>Remind your client that anyone with Internet access can refer to courses or professors by name. References to the school should be rooted in experiences/ achievements/ objectives, because, they too, are part of the case for admission!</div> |
|^!Excessively abstract/ general language | <<bq "I am applying because I’m interested in…">>or<<bq "…because I love this subject.">> |Clients should be encouraged to unpack (分解), explain, and substantiate these points.|
|^!Insufficient detail |<div style='text-align:left;'>E.g., regarding future objectives, you should help your clients to avoid simply identifying the workplace or type of employer they aspire to or talking only about job titles or particular types of companies...<<bq "I want to work in a top financial institution...">>They should also show that their objectives are carefully considered by discussing them in more tangible, non-cliched terms...<<bq "When I graduate, I want to join a consulting firm. I will then climb the ladder and become a partner...">></div> |The client should be prompted to consider the detailed specific things they would like to achieve in their career. They should explain them by example. |
Please follow the [[Key pointers on excluding material]] when addressing red flags.
\define comm(t,a)
<span style='background-color:green;color:white;position:relative;'>$t$</span><$reveal type='match'><span style='padding:10px 0 10px 10px;border:1px dotted green;margin-left:65%;'>$a$</span><br></$reveal>
\end
\define q(c,t)
<$set name="iftheC" filter="[title[$:/RunThrough2/state]field:text[$c$]]" value="""background-color:yellow;""" emptyValue="""background-color:#fff;""">
<span style=<<iftheC>>>$t$</span>
</$set>
\end
\define butt()
<$set name="iftheC" filter="[title[$:/RunThrough2/state]field:text[$(cd)$]]" value="""background-color:yellow;color:#333;""" emptyValue="""background-color:#333;color:#fff;""">
<$button style=<<iftheC>> set='$:/RunThrough2/state' setTo="$(cd)$">{{!!text}}</$button>
</$set>
\end
\define comm(cd,who,t)
<$reveal type='match' state='$:/RunThrough2/state' text='$cd$'>
<$button class="$who$" set='$:/RunThrough2/2/state' setTo='$t$'>See $who$ comment</$button>
<$reveal type='match' state='$:/RunThrough2/2/state' text='$t$'>
><p class='$who$'>$t$</p>
</$reveal>
</$reveal>
\end
<style>
.reviewer {background-color:#5778D9;color:#fff;}
.advisor {background-color:#FFCCCB;color:#fff;}
</style>
<div style='border: 2px solid grey;padding:20px;'>
Press <$button style='background-color:#333;color:#fff;'>buttons</$button> below to review issues in this document by issue type.
Comments for the original advisor are labelled thus:
<$button class='advisor'>See advisor comment</$button>
Comments by the person who reviewed this task are labelled thus:
<$button class='reviewer'>See reviewer comment</$button>
</div>
<$list filter='[prefix[$:/RunThrough2/]!suffix[state]]'>
<$set name='cd' filter='[title{!!title}removeprefix[$:/RunThrough2/]]'>
<<butt>>
</$set>
</$list>
<div style="font-family:courier;">
<$macrocall $name='q' c='issue5' t="""My interest in Finance emerged from some of my favorite college courses, and my practical experience has augmented my ambition of entering the finance industry. Learning investment theories and observing the operation of the financial market are fascinating to me. <<comm issue5 reviewer "The opening paragraph is very weak: you should revise this in the second iteration to ensure that the client leads with compelling, interesting material. E.g., this is an incredibly anodyne sentence: “Learning investment theories….fascinating to me” Is that really going to capture the interest of an admissions tutor for a Master’s level course? Does that description make it sound like the client has a clear specific focus within the field of finance? I would argue not: it is very general and non-specific.">>"""/>
I am majoring in accounting (ACCA direction) and all of my professional courses are taught in English. I originally learned about financial instruments through ACCA F3 Financial Accounting, which introduced IFRS and IAS. When I was introduced to project valuation in ACCA F9 Financial Management, I sought increased clarity regarding future, option and forward contracts, so I taught myself the development of security markets in Chinese and attained the Certification of Security Profession of China. Through my bilingual efforts, <<q issue4 "I was able to grasp the basic knowledge">> in both the Chinese and English versions, which boosted my confidence. I adapted to learn in English by researching in Chinese at the same time, and fell in love with finance.
My internship in ~PwC has yielded an even better understanding of finance. Over winter break, I took part in the annual audit of the Postal Savings Bank of China with employees in the Finance Service team. I assisted a junior <<q issue2 "employee, obtaining audit evidence">> and preparing audit working papers in the Treasury Group. I gained an invaluable in-depth knowledge of interbank business, including the workings of deposits and placements in banks and other financial institutions. After two months, <<q issue1 "I came away with a renewed determination to keep studying and work to succeed">>.
Academically, I am likely to get First-class Honors for my performance in accounting. I have passed 12 of the ACCA examinations and have attained several professional certifications in both accounting and finance. Last month I registered for the CFA Examination and set a goal of acquiring seven As in Level One before graduation in June 2018. Then, over summer break in 2018, I plan to learn Level Two in order to be well prepared for graduate courses.
<<q issue4 "My future career path is crystal">> <<q issue3 "clear. My initial">> goal is to work at a securities <<q issue2 "or trust company, starting as an equity">> analyst or asset managerial staff member. Those jobs require knowledge in both finance and accounting, which is why I plan to engage in further study in finance. <<q issue1 "By working in a highly challenging industry,">> I hope to rapidly improve my professional skills and, <<q issue1 "with determination">>, climb to a senior level position within five years. In addition, I will simultaneously acquire <<q issue4 "my certificates of CFA">> <<comm issue4 "reviewer" "No-one calls them <i>certificates of CFA</i>!! This really sticks out.">>. After ten years, <<q issue1 "once I have attained stature with considerable professional influence and connections in the finance field,">> <<comm issue4 "reviewer" "I have attained stature with considerable professional influence = problematic.">> I will start my own business related to AI and personal financial consulting. I predict that AI will become accessible and helpful in customizing investment plans, according to which many individuals will accumulate liquid assets to invest in the financial market. <<comm issue5 advisor "This last part may be too ideal.">><<comm issue5 reviewer "Here you have identified a problem but not offered a solution to the client: give clear advice on how they can make this better if you think it is not strong enough.">>Based on my career plan, I will probably choose Finance & Investment in the second semester.
<<comm issue5 "advisor" "This sentence may need to be moved to the last paragraph.">> <<comm issue5 reviewer "This is your responsibility in an L2: you are supposed to be making these informed strategic decisions on behalf of your client (or at least say <i>…I will decide whether this needs to be done after you have made your revisions</i> Otherwise it sounds like you are expecting them to make that decision, which isn’t very helpful for the client!"
<<q issue1 "After I complete my undergraduate study, I plan to study finance. Under the advice of my professors and seniors, I carefully reviewed the programme of the University of Edinburgh and">><<comm issue1 "reviewer" "Words are at a premium so you need to guide the client to avoid them wasting precious words on insignificant/implied details. They are applying for a Masters in Finance so of course they plan to study finance! We don’t need to state that :)">> I have decided to apply for your Master’s in Finance. <<q issue1 "First, the University of Edinburgh is committed to excellence in teaching, research, and service, which prepares a solid professional foundation for students.">> <<comm issue1 reviewer "All top-tier universities are, and the PS should be focused on the student, not the university. The university knows what they are committed to.">> <<q issue4 "Secondly, international communication and cooperation are my passion. I will have">> the opportunity to interact with leading figures from major organisations in your programme. And in the Business School, students come from more than forty countries with different backgrounds<<q issue3 ". So your programme">> is ideal for me in many <<q issue3 "ways. ">><<q issue1 "Finally, I am attracted to your breathtaking campus with its classical architecture and numerous libraries. It is my dream to live and study in the department at your wonderful university.">> <<comm issue1 reviewer "This is completely irrelevant for a Master’s application (in Finance): you should have removed this on the client’s behalf.">> Additionally, the University of Edinburgh is committed to excellence in teaching, research, and service, <<q issue4 "which prepares a solid professional foundation for students">>.
<<comm issue5 advisor "You need to mention some specific courses you are looking forward to taking in their programme.">>
<<comm issue5 reviewer "Please see the note I have added in for the client: your advice is correct but incomplete and not very helpful: you need to give a better description of the level of detail expected and where exactly in the text to put it (where you have added the comment doesn’t seem the best place: that material should be at the start of the <i>why Edinburgh</i> section because it is the most important information).">>
<$list filter="[tag[RunThroughs]sort[n]]">
<$link to={{!!title}}><div style='float:left;margin-right:15px;margin-bottom:15px;height:160px;width:160px;background-color:whitesmoke;color:black;padding:10px 5px 0 10px;'><center><<st "Runthrough {{!!n}}">></center>
<p><small>//{{!!intro}}//</small></p></div></$link>
</$list>
<div class='clearfix'></div>
<$macrocall $name="runThroughViewer" n={{!!n}}/>
<<st "Introduction">>
The goal of this service is to give the client an introduction to you as a skilled advisor that will persuade him or her to appoint you.
This service is an effort to involve advisors in marketing and promotion more directly.
This service aims to diffuse some control over marketing to give you the capacity to control the flow of appointments you receive individually through providing this service on a no-risk basis.
This will give you a vastly different level of control over securing appointments and progressing your earnings levels rapidly via your enhanced appointment rates.
<<st "How it works">>
*When a new client registers on our site, we give them a coupon that allows them to upload an Doc Trial service without charge, with ZHISHIQ covering the cost. One per client.
*To further incentivize the client to make a follow-up purchase, clients will also be given a 10% discount on your appointment rate; (whatever it may be). This discount will also be covered by ZHISHIQ.
*Available Doc Trial services will appear on your Dashboard like this (if you have set your profile to 'available for appointments'.
*We have also added the appointment trial facility to your personal profile. Clients can purchase free trials from you in this manner, just like any other appointment service. If you're a Level 7 advisor, for example, you can set your rate for appointment trials at up to $30.
*The standard deposit fee for advisors' services is $15. (This puts it midway between an L1 and an L2 of equivalent length). If you are appointed by the client, the appointment fee is subject to this deposit. If you are not appointed, you can keep the deposit, which is covered by ZHISHIQ.
*If for whatever reason you do not receive a client appointment from an Doc Trial service, ZHISHIQ will cover the cost of the deposit fee. If the client does appoint you, it will be at the elevated appointment rates you have set on your profile (these rates base on the document being uploaded will be clearly shown to the client for all service levels when they order the initial Doc Trial service. As such, the deposit becomes part of the task value.
<<st "What does the service include?">>
*Read-through of the client's document to report on its quality and make a substantiated service level recommendation.
*To augment the advising process for you, and ensure a consistent depth and rigor among team-members, we have developed this Advice Generator Tool: http://zhishiq.tiddlyspot.com/#DocAppraisal%2FUser1.
**Through a series of tick boxes and quick adjustments, this tool allows you to generate a long paragraph of highly-tailored, persuasive and substantial advice, in a matter of a few minutes.
**This is then pasted into the document with the client's text - just blend it with your greeting to the client.
*Edit about 200 words of the client's text on the basis of your review to give the client an indicative sample of the work you would propose to do on their document if they appoint you.
*The standard deadline is 48 hours.
*Upload, send and await results.
<<st Restrictions">>
*Each new client gets a coupon for one Doc Trial service when he or she registers with ZHISHIQ and we have developed means to prevent repeat orders.
*If the client chooses to appoint you, he or she can only do so using the same document that you reviewed (unless otherwise agreed with you). If the client appoints you, your work on the initial Doc Trial service will therefore streamline your execution of the appointed task.
*Each client is only permitted to expect you to take on their appointed task (and only gets the 10% discount on your appointment rate (that ZHISHIQ is covering) if they appoint you within five days of the Doc Trial service. Once this period expires, they must appoint you at the full rate.
*Each new client gets a coupon for one Doc Trial service when he or she registers with ZHISHIQ and we have developed means to prevent repeat orders.
<<st "Recent examples">>
https://drive.google.com/open?id=0BwiSHPBB3kz9N1FyZzRKWk1ydlk
!So
!!1.
!!2.
!!3.
!!3. Ask questions
The system is not always straightforward. We've tried to put answers up here, but if you can't find what you're looking for, we warmly encourage you to ask in the {{$:/Link/AdvisorGroup}} or chat (text- or talk-based chats are equally encouraged, although the former are often more practical!) with Andy on Skype (andrew.daum)
There's a slight learning curve for this work, but our longstanding and fantastic team attest to the fact it is worth it!
We are so glad to have you involved!
<iframe style='border:none;' src="https://drive.google.com/file/d/0BwiSHPBB3kz9aHFtRzVJWmRZTUE/preview" width="640" height="300"></iframe>
<<st "Aim to use verbs that describe 'higher level' practice">>
<iframe style='border:none;' src="https://drive.google.com/file/d/0BwiSHPBB3kz9SGNjNFdOa3RIMGs/preview" width="740" height="320"></iframe>
Don't use or permit the use of
<<bq1 etc>>
or
<<bq1 "and so forth">>
or anything like that. The reader shouldn't have to '//imagine//' what is being expressed.
\define proforma(p)
<blockquote style='font-family:courier;'>{{$p$||$:/copy}}</blockquote>
\end
If you see this icon, click it to copy the indicated content to your clipboard:
{{$:/core/images/copy-clipboard}}
<$list filter='[prefix[$:/ProForma]]'>
''{{!!use}}''
><small style='font-family:courier;'>{{||$:/copy}}</small>
</$list>
<blockquote style='font-family:courier;'>{{$:/ProForma/VIP task opener||$:/copy}}</blockquote>
*[[Experience]]
*[[Skills]]
Material that is not relevant to the question and support the [[Point]] should not be included.
Selectivity demonstrates contextual understanding and the ability to tackle the admissions essay like a challenging problem-solving exercise. It should be encouraged.
''Typical examples of misguided content (which advisors should __always__ note, acknowledge and—at the very least—discuss with their clients:''
*Writing about extracurricular activities when the question asks for an explanation of research interests (or variations on this theme).
*Lists of information already in resume.
*Laundry lists of information or an autobiographical approach.
*Experiences without a clear connection to the [[Point]], for example:
>A grad school candidate in the hard sciences should only write about experiences that directly relate to his or her pursuit of graduate education or a scientific career.
*[[Superfluous or inappropriate information]]
...or elaborate formulations of thanks.
<<bq1 'I still recall the sleepless nights when I anxiously worried about my near and far future in the first few weeks.'>>
\define iFrame(s)
Show example <$reveal type='nomatch' state='$:/iFrameShowHide' text='$s$'><$button style='background-color:pink;border:none;padding:2px 5px 5px 5px;margin-top:-15px;' set='$:/iFrameShowHide' setTo='$s$'>{{$:/core/images/chevron-right}}</$button></$reveal>
<$reveal type='match' state='$:/iFrameShowHide' text='$s$'>
<$button style='background-color:pink;border:none;padding:2px 5px 5px 5px;margin-top:-15px;' set='$:/iFrameShowHide' setTo=''>{{$:/core/images/chevron-down}}</$button>
<p><iframe style='border:none;' src="https://drive.google.com/file/d/$s$/preview" width="640" height="250"></iframe></p>
</$reveal>
\end
\define st(t)
<div style='text-transform:uppercase; font-weight:bold;'>$t$</div>
\end
Identify and action superfluous material during your read-through.
Every fact in the statement—and every evaluation made on the basis of those facts—should demonstrate the candidate's suitability for the program and its suitability for the candidate.
There's a word limit for a reason. It is supposed to prompt the candidate to be highly judicious and strategic about what he or she includes.
!!Typical red-flag material that should be excluded
<<dispLay "Excluding material" 5-l2>>
!!Document and explain exclusions
<<iFrame 0B1gbT0IU3BgKVExJYkdYaU9HeFU>>
!!Be sensitive
*Do not be negative in your tone.
*Provide a brief explanation of your reasoning.
*If material has scope for improvement, engage in a thorough line of questioning with your client to prompt them to improve the material.
*Always do this in the FIRST iteration.
<<iFrame 0BwiSHPBB3kz9OWdQWlRjeG8tWWM>>
<<iFrame 0B1gbT0IU3BgKSzVEOVVVMjBBazA>>
Your client has provided information to illustrate a [[Point]].
><p>//Knowledge is not just the facts that you learned throughout your coursework; rather, think about the range of courses you've taken and what you learned that helped define your area of interest for graduate study. Highlight the advanced courses you completed as an undergraduate, your performance in these courses, and how the experience of going through those courses will help you as a graduate student. Courses that included a research component, a reading of primary literature in your field, and a critical analysis and synthesis of current scientific discoveries will be most advantageous.//</p>''Brian Rybarczyk, director of academic and professional development at UNC Chapel Hill's graduate school, writing in <a href='http://www.sciencemag.org/careers/2010/01/perspective-sell-yourself-refining-personal-statement' target='_blank'>Science</a>
your client to evaluate his or her experiences - what did he or she get out of it; focus on learning and growth (and other factors which the target school will prioritize).''
*Ask your client to evaluate experiences - what did he or she get out of it?
*Encourage focus on learning and growth (and other factors which the target school will prioritize).
*Help to ensure that each piece of material your client selects for the document is highly relevant to the intended audience.
*Prompt your client by interrogating any unevaluated experiences without clear (implicit or explicit) connection to the [[Point]].
<<bq1 "Representations of associative algebra research, May 2015 - May 2016 Research Assistant to Prof. Li, ZJU
- Learn the Elements of Representation Theory of Associative Algebra volume I.
- Read the literature about generalized path algebra.">>
→
<<bq1 "I think this is problematic: How does studying a textbook relate to research experience? Naturally, one must know the fundamentals in order to participate in a research project, but my strong suggestion is for you to explain to me what you did with this knowledge? Describe in practical, concrete terms; what did this textbook help you achieve in the research group?">>
But don't just demand more material! Try to explain why you need the material, and prompt some thoughts from the client.
<<bq1 "...you need to be much more clear about the specific research applications involved in your work on these algebras during this project. What were the project’s objectives? What did you do that differed from ordinary classwork?">>
<<list-links "[tag[FAQs]sort[title]]">>
''Heavy Edit Packages''
If the order is for a [[Heavy Edit Package]], after you've confirmed a single document in the package service, you can download the <<code "original document">> and upload the modified document as normal.
<<img "https://photos-1.dropbox.com/t/2/AAAx6PC-51dXN16pTmGuHzL0TNX2_BeOzBtskdo8nQlxZg/12/693466203/jpeg/32x32/3/1509487200/0/2/File%2002-10-2017%2C%2014%2045%2054.jpeg/EJq4nukFGDggBygH/vWgx43Z7AhnU80Ue1hAiRsUA9GZOmljI4mVL8VOxILw?dl=0&size=800x600&size_mode=3">>
''VIP Packages''
If the order is for a [[VIP Service Package]], you should prepare a tailored VIP questionnaire using the tool under <<secLink "$:/Tools">> on this site.
You can then send the questionnaire via the messaging system ''as normal'' for any [[VIP Service]].
<<img "https://photos-3.dropbox.com/t/2/AADiZXIvaGFLXOjkxCOJvIJpyivRiV5q3EQookdc8b3g9g/12/693466203/jpeg/32x32/3/1509487200/0/2/File%2002-10-2017%2C%2014%2046%2028.jpeg/EJq4nukFGDggBygH/odvRqd3pnNa6YIpmw8IwJB1YIQ5MXm9tTGYv_xA8iQE?dl=0&size=800x600&size_mode=3">>
<<bq1 "Your school's ranking is very attractive to me">>
or
<<bq1 "Northwest University sits in the beautiful environment surrounding Lake Michigan">>
This should give you a good indication.
<<t "Before">>
<iframe style='border:none;' src="https://drive.google.com/file/d/0B1gbT0IU3BgKZGtDdUlrVWxRNHM/preview" width="640" height="480"></iframe>
<<t "After">>
<iframe style='border:none;' src="https://drive.google.com/file/d/0B1gbT0IU3BgKak56M3MxaFNxS3M/preview" width="640" height="480"></iframe>
#[[Pick up task|Accept/ Confirm Checklist]]
#[[Generate Cover Sheet|Cover sheets]]
#Paste client content into your cover sheet document
#Set language on spellchecker to relevant variety of English.
#Read through the document to familiarize yourself with the task
#Turn on track changes
#Proceed with your edit
#Update your note to your client in light of your edit
#Ensure you've addressed any and all [[client questions|Checklist for in-document communication]]
#Read through the document several times to ensure there are no proof-reading errors
''When it comes to claims...''
<<bq1 "I am applying because I’m interested in…">>
<<bq1 "…because I love this subject…">>
When your client says these things, they're very likely to be true, but it is key for them to //demonstrate// them through examples.
Help your client unpack (分解), explain, and substantiate assertions like this.
''When it comes to making future plans...''
You should help your clients to avoid simply identifying the workplace or type of employer they aspire to and/ or talking only in terms of job titles.
<<bq1 "I want to work in a top financial institution...">>
<<bq1 "When I graduate, I want to join a consulting firm. I will then climb the ladder and become a partner in this consulting firm...">>
Your clients should demonstrate their objectives are carefully considered by discussing them in more tangible terms.
Ask them what they would like to achieve in their career. E.g.
{{$:/ProForma/Asking detailed questions about career goals}}
''When it comes to factual statements...''
<<iFrame 0B1gbT0IU3BgKa05LbXE0OG94RWs>>
Urge your client to be specific; direct them to articulate concrete detail to illuminate what they've done, for the reader.
See also, [[Etc.]] in the [[Baseline Edit]] reading.
Long sections of opinion/ commentary (that amounts to what you might get in a news article).
Information should be highly relevant, but the candidate should also provide sufficient context for the uninitiated reader to understand what’s going on!
Help the client by mentioning the ambiguity and asking pertinent questions to encourage them to include material that will sort it out in the next draft.
Eg:
''Client''
<<bq1 "Did project involving the review of unique qualities of materials typically used for fishing line and sewing thread, as materials for artificial muscles...">>
→
''Advisor''
<<bq1 "Tell me what you did on this project? What did you achieve? Why did it interest you?">>
''Client''
<<bq1 "[cont.] ...which is the third problem of the International Young Physicists' Tournament 2015)">>
→
''Advisor''
<<bq1 "Do you mean you participated in this competition? If so please explain more about it. If yes, or no, please explain in more detail so I help the reader to instantly understand the context and purpose of this project as part of your academic development. (That’s what they’ll want to understand in a straightforward fashion!) http://iypt.org/Home">>
<<st "Know the characteristics of an outstanding document">>
The purpose of the document is to help the admissions officers distinguish between favored candidates based on factors not immediately apparent from more straightforward measures of assessment (such as test scores or glancing through 'brand-name' internships listed out on a resume.
To achieve this, the document needs to:
*be constructed on persuasive writing principles
*comprehensively respond to the question posed by the admissions committee
*demonstrate genuine interest in the relevant school
*convey the candidate's suitability and potential
*introduce the candidate as an individual
*address the audience in a professional and appropriate manner.
To the extent that the text does not achieve the above, it is your role, as an advisor, to prompt your client to develop his or her material to address the shortfalls.
<<st "A good document should include...">>
*Strong introduction - arresting first line.
*Smoothly connected paragraphs - ensure the first sentence of paragraph 3 bears a relation to what is discussed at the end of paragraph 2 etc.
*Crucial aspects of the client's background - academia, relevant research and professional experience, aspirations.
*Example to illustrate qualities - don't make empty assertions.
*Meaningful links to the program applied for and the client's relevant background (not regurgitation of program website).
*Perfect English, spelling and grammar on every draft. There's no excuse for not spell-checking the document!
*No clichés – the word ‘passion’ for example should be avoided.
*Every requested in the question posed.
''Send your client a greeting via the [[Messaging system]]''
You can see an example of a good opening note in the [[VIP Service]] article.
We strongly recommend you raise the subject of the plan for the service and enquire about the client's expectations. It's in large part for you to judge an appropriate tone and to manage the process by which you and the client complete the service. Being clear and setting mutual expectations at the beginning is good practice.
><<img "https://photos-6.dropbox.com/t/2/AAC_MkTbOEKOgLH88_BgaA30X5rwugSspIVurCockDcugg/12/693466203/jpeg/32x32/3/1509487200/0/2/File%2002-10-2017%2C%2014%2023%2038.jpeg/EJq4nukFGDggBygH/tLl8H6U8VarYgUWhJb_k2tF5oPeXh9So4_2VQlJf2BU?dl=0&size=800x600&size_mode=3">>
''Await client document requirements''
Your client will upload school information:
><<img "https://photos-5.dropbox.com/t/2/AAD5Nu9kmggd1m80VBNSjUcv-HZEhnLl4LnfZJRKxcQ2sQ/12/693466203/jpeg/32x32/3/1509487200/0/2/File%2002-10-2017%2C%2013%2058%2052.jpeg/EJq4nukFGDggBygH/mhr3PZZqa6vdF2em3Ydvq5s4Y5vlf12eFAgj2k26Gts?dl=0&size=800x600&size_mode=3">>
...and document information:
><<img "https://photos-3.dropbox.com/t/2/AAAU8n3hcF5KUIL88YgXw8DXPi7PTzGf_sOjCa8Ex-UJdg/12/693466203/jpeg/32x32/3/1509487200/0/2/File%2002-10-2017%2C%2014%2024%2005.jpeg/EJq4nukFGDggBygH/C6D1o9M9PTz_MAVezzXBRTKygcAJm0nJw2IlqoF6XGw?dl=0&size=800x600&size_mode=3">>
You can continue to
messaging system to confirm and clarify client requirements.
''To commence work on one of the documents:''
Click on the document icon/ box:
><<img "https://photos-3.dropbox.com/t/2/AAAU8n3hcF5KUIL88YgXw8DXPi7PTzGf_sOjCa8Ex-UJdg/12/693466203/jpeg/32x32/3/1509487200/0/2/File%2002-10-2017%2C%2014%2024%2005.jpeg/EJq4nukFGDggBygH/C6D1o9M9PTz_MAVezzXBRTKygcAJm0nJw2IlqoF6XGw?dl=0&size=800x600&size_mode=3">>
...and press <<code Confirm>>
><<img "https://photos-6.dropbox.com/t/2/AAAo4wb_53BNbaV5s-T5HVr2PR8P7qkbpArET3lDChzsUg/12/693466203/jpeg/32x32/3/1509487200/0/2/File%2002-10-2017%2C%2014%2024%2025.jpeg/EJq4nukFGDggBygH/EV7x-w7ZPkXEo0hPgYvYLYdO_nMafqV3wewuvXIKnDg?dl=0&size=800x600&size_mode=3">>
<<st "Second language, tone, benefit of the doubt">>
Clients can sometimes express themselves forcefully (that’s why it is so important to prove yourself and make a good impression straight away on the first draft.) However, also please recognize that there is a language barrier that has been known to make clients come across as rude or demanding - 9 times out of 10 they do not intend this at all!
Clients may quite commonly offer feedback that includes phrases that are slightly abrupt or use words such as "incoherent". This may initially frustrate you, however, generally they are using the word in a very literal and unloaded way. It is therefore really important always to interpret and deal with your clients in a measured fashion.
<<st "Differences of opinion">>
If a client directly asks you to make a change to a document that you do not agree with, by all means explain your approach, but ultimately do what the client wishes and do not engage in a debate.
<<st "Requests for 'extras'">>
If a client asks you to do something that you feel is outside the boundaries of the service description, please point this out in a friendly fashion, referring to the service descriptions.
We hope that most potential complaints can be addressed by advisors preemptively via the messaging system. If the advisor has executed the service in accordance with our guidelines and in good faith:
*It should be no problem to address minor confusions via the messaging system (please note this is not a ‘get-out’ clause for SPG mistakes - if a client feels strongly enough to raise the issue with us directly, we will have no choice but to deal with the matter as an official complaint, as described below).
*Advisors should have nothing to worry about if they feel a client is not being reasonable in their requests during the post-service period. We will be able to see that you did all the right things during the service and, rest assured, we will have no hesitation in explaining this to the client on your behalf. If you have any concerns of any kind, it’s always a good idea to flag them to us as early as possible.
This is covered in further detail in the article [[Messaging system]].
<div class="cardBox">
|!Also called |{{!!alt}}|
|!Used for |<ul style='padding-left:0;display:inline;'><$list filter='[list[!!doctypes]]'><li class='tricky'>{{!!title}}</li></$list></ul>|
|!Word count guidelines |±{{!!wordcount.flex}}% - at advisor's discretion (see [[Accept/ Confirm Checklist]])|
|!Iterations |x {{!!iterations}} |
|![[Messaging period]] |{{!!expiry.days}} days|
!!Deadlines
|!Urgency |! First iteration|! Subsequent iterations|
|!Normal | {{!!deadline.normal_1}} hours | {{!!deadline.normal_2}} hours |
|!Urgent | {{!!deadline.urgent_1}} hours | {{!!deadline.urgent_2}} hours |
|!Very Urgent | {{!!deadline.vurgent_1}} hours | {{!!deadline.vurgent_2}} hours |
</div>
<div class="cardBox">
<<t "Detailed description">>
This is an ‘intermediate’ service, but it is also the benchmark for an effective advisor's skills.
Clients will upload a complete written statement, which they have prepared themselves. The advisor checks the English as for a Baseline Edit, as well as critically and strategically reviewing the document in light of its purpose, before making pertinent adjustments to its structural, argument and logical flow.
Clients use this if they want ALL the line-editing features of a Baseline Edit service AND they will expect the advisor to do the following:
*Consider and propose changes to the internal structure and/or logic of sentences/paragraphs
*Engage them on improvements to the document and provide advice based on knowledge of effective personal presentation
*Review the document in light or its purpose or the question it is intended to answer and potentially make structural changes on that basis
*Consider the flow of the document and/or create smoother linkages between paragraphs
</div>
<div class="cardBox">
<<tabs "$:/HeavyEditIteration1 $:/HeavyEditIteration2" $:/HeavyEditIteration1>>
</div>
<div class="cardBox">
<<t "Other reading - resumes">>
<$list filter='[tag[Heavy Edit]tag[Resumes]]'>
</$list>
<<t "See also">>
[[Document run-throughs]]<br>
[[Examples]]
</div>
These are the same concept as ordinary package services but predicated on the [[Heavy Edit]] (L2) service, as opposed to the [[VIP Service]].
You should complete in accordance with the [[Heavy Edit]] service guidelines and follow the [[Package Process]].
\define yell(t)
<span style="$(the1)$">$t$</span>
\end
\define blu(t)
<span style="$(the2)$">$t$</span>
\end
\define gree(t)
<span style="$(the3)$">$t$</span>
\end
<<t "Discourage your client from listing factual information">>
Lists of courses undertaken are unenlightening.
<<bl "As I became more interested in law, I started to attend more related courses at school, including An Introduction to Chinese Law, and several Coursera options online (An introduction to American Law, Internet Giants: The Law and Economics of Media Platforms, Introduction to Key Constitutional Concepts and Supreme Court Cases, etc.).">>
If your client wishes to name books they have read, they ought to be encouraged to clearly articulate the relevance of those titles to their current trajectory.
<<bl "In the club we read classics on economics, politics, philosophy and law from the West, including de Tocqueville’s The Old Regime and the Revolution and Democracy In America, and Edgar Bodenheimer’s Jurisprudence: The Philosophy and Method of Law. I enjoyed observing how these great thinkers of the past made abstract models of the real world and used them to explain human phenomena and develop societal systems.">>
<<t "The purpose of the document is for the candidate to introduce themselves">>
Never permit the use of:
<<bl "etc.">>
In a very small way, it flies in the face of the document's core purpose. Etc. at the end of the first example above invites the reader to... do what? Imagine some other courses the candidate might have taken?
<<t "Show don't tell">>
<<bl "I enjoyed...">>
<<bl "I liked...">>
<<bl "I was good at...">>
Ideally, these should be demonstrated by tangible, specific results or follow-up.
<<t "Paragraph run-through">>
There are a few separate issues in the following paragraph, which we'll now run through one by one. Press start to begin.
<div style='width:68%;float:left;'>
<$set name='the1' filter='[title[$:/HeavyEdit/Examples/RunThrough]field:n[1]]' value='background-color:yellow' emptyValue='background-color:#fff;'>
<$set name='the2' filter='[title[$:/HeavyEdit/Examples/RunThrough]field:n[2]]' value='background-color:blue;color:#fff;' emptyValue='background-color:#fff;'>
<$set name='the3' filter='[title[$:/HeavyEdit/Examples/RunThrough]field:n[3]]' value='background-color:green;color:#fff;' emptyValue='background-color:#fff;'>
<$macrocall $name="bl" t="""<<yell "In beginning my formal journey in law, the XXXX JD program is my clear first choice, for a number of reasons. First, I am very interested in the joint JD/MBA program format offered at XXXX.">> With work experience at both an Internet company and a media start-up, I have gained experience on the front line, where law, business and rapidly evolving technologies present <<blu "fascinating if sometimes frustrating challenges for all involved">> and the 3-year joint program would allow me to both hone <<yell "my legal professional skills">> and enhance <<blu "my understanding of the hidden “laws” of the business world">>. Second, XXXX Law offers the most comprehensive, integrated, and innovative curriculum, connecting the study of law to the technology sector. <<yell "I am very interested in entrepreneurship in general">>, and XXXX's connections with enterprise and industry will <<yell "no doubt help me understand the key aspects of new venture creation and the innovation process as whole">>, as well as giving me opportunities to provide legal representation to entrepreneurs through the XXXX Entrepreneurship Law Center. Also very appealing are the International Team Project options and the work conducted at the Center on Negotiation and Mediation. <<gree "Last but not least">>, XXXX Law’s location is <<gree "just perfect">> for me. I visited XXXX several times during my one-year stay at NYC and <<gree "I know perfectly that Navy Pier is right at the center of XXXX, surrounded by top firms, and all kinds of financial institutions.">> Compared to somewhere like NYC, XXXX's housing is much more affordable, and more importantly I have a number of friends in the city, too, working in hedge funds, universities and start-ups, and this would help me hit the ground running on my arrival."""/>
</$set></$set></$set>
</div>
<div style='width:28%;float:left;'>
<$set name='nextNumber' filter='[{$:/HeavyEdit/Examples/RunThrough!!n}next[Heavy Edit Points - Run-Through 1]]'>
<$set name='onOff' filter='[title[$:/HeavyEdit/Examples/RunThrough]field:text[Start]]' value={{$:/core/images/refresh-button}} emptyValue='Start'>
<$set name='onN' filter='[title[$:/HeavyEdit/Examples/RunThrough]field:text[Start]]' value='0' emptyValue='1'>
<center><$button set='$:/HeavyEdit/Examples/RunThrough' setTo=<<onOff>>><$action-setfield $tiddler='$:/HeavyEdit/Examples/RunThrough' $field='n' $value=<<onN>>/><<onOff>></$button></center>
<$reveal type='match' state='$:/HeavyEdit/Examples/RunThrough' text='Start'>
<$list filter='[prefix[$:/HeavyEdit/RunThrough/Item.]sort[]limit{$:/HeavyEdit/Examples/RunThrough!!n}]'>
<$transclude field='text'/>
<center><$button set='$:/HeavyEdit/Examples/RunThrough!!n' setTo=<<nextNumber>>>{{$:/core/images/chevron-down}}</$button></center>
</$list>
</$reveal>
</$set></$set></$set>
</div>
<div class='clearfix'></div>
At present, only clients can add schools to package services. We are looking into changing this ASAP.
<<profileButton>>
(Make sure you're logged in).
*Your client will expect substantial edits and suggestions. <div style='width:600px;'>{{Baseline example}}</div>
*It is not conscientious or ethical to make changes for the sake of making changes; do everything you can to enhance the quality of the document, providing the client with options and thoughtful substitutions when possible, but try to stay close to the client's intended meaning and original voice while you edit. Avoid florid word choices.
Each client is an opportunity for you to develop a positive relationship and secure [[appointments|Appointed Tasks]] with an enthusiastic collaborator!
Avoid pronouncing the document technically-correct and sending it back to the client with minimal commentary.
If a document is indeed perfect (and be aware we might challenge you on this!), we suggest you offer the client a quick explanation to assure them you've given it your full and careful attention:
<blockquote style='font-family:courier;'>{{$:/ProForma/FewEdits||$:/copy}}</blockquote>
Finding small opportunities to build trust is an important part of your role.
Your client will have filled in the program information according to the type of package service:
''Program package''
><<img "https://photos-3.dropbox.com/t/2/AADh4rrzekmdvYtC3u7tojfdkppfXW1TD4OSWOO6fFgsag/12/693466203/jpeg/32x32/3/1509483600/0/2/File%2002-10-2017%2C%2013%2041%2034.jpeg/EJq4nukFGDggBygH/CGYKh3D7CVWV-KKmyp2G3C_-JDlGITdzI4oAopmSsS4?dl=0&size=800x600&size_mode=3">>
''PS/SOP package''
><<img "https://photos-4.dropbox.com/t/2/AACctEyIJ5VdHTnMH1sJUFfBjSPWFfn8gMrP74BwV01Bwg/12/693466203/jpeg/32x32/3/1509483600/0/2/File%2002-10-2017%2C%2013%2042%2011.jpeg/EJq4nukFGDggBygH/6wF3jSz_VhFJSmoLqbni1DQL_Tfmu03aIbi-NFRBYlo?dl=0&size=800x600&size_mode=3">>
*Description of research
*How client contributed to the research project
*Broader impact, context, and potential of the research results
Presenting these facts has a purpose - to show the admissions committee that the client knows how to:
*Conduct research at an advanced level
*Communicate it clearly and in a level of detail that is appropriate for the context.
We encourage you to use the 'extend deadline' functions when necessary to effectively manage your tasks. It is particularly useful for VIP and package tasks.
You'll find a button on the task page that allows you to either extend or pause a deadline.
Generally, deadlines should be extended if:
*You are waiting for something on the client side (and you've explained what you need clearly to the client in a message).
*You've agreed with your client to extend the deadline.
*This is often particularly pertinent on [[Package Services]]
Keep your deadlines up-to-date and reflective of any arrangement between you and your client so we can have an accurate understanding of what is going on at any given time.
<<st "Extend v. Pause">>
If a client is delaying in the short-term, add some time to the deadline; if it's a long-term thing and changing the deadline is a continuous hassle, just pause the service!
Marketplace tasks are available to all team-members. They can be picked up at your choice. Tasks can be appointed to you if your profile is set to 'Available'. These will be listed in the 'Confirm' column until you have accepted them (please do so as soon as possible).
Clients for VIP and Package services are quite regularly disinclined to upload a completed Questionnaire at the outset, feeling more confident in doing so once their advisor is in touch with them.
This is an opportunity to deliver the service better! Please use [[VIP Questionnaire Builder]] tool to provide a personalized question sheet to your client via the messaging system. This is the moment for you to start engaging!
<$list filter='[tag[$:/NavTemplate]]'>
<<t {{!!caption}}>>
<$list filter='[tag{!!caption}]'>
Concrete and specific word choices automatically make statements more engaging, vivid, and memorable. It also allows the candidate more control over how how the reader responds to/ understands them.
|<<bq "a market">> |! v. |<<bq "wooden stall on the side of the road with boxes full of ripe tomatoes.">>or <<bq "a vast food hangar, unwavering bright lights, men and women rattling carts down the aisles 24 hours a day.">>or <<bq "a clanging bell, roaring voices, stripes of green numbers bleeding down computer terminals. manic, sweating activity. Again, the clanging bell. Once again, silence and litter and furrowed brows. Billions down the drain. Ah well. Try again tomorrow.">>|
|<span style='background-color:yellow;'>I am currently studying for a Bachelor in Marketing at Wuhan University of Technology</span> is equipping me with the fundamental Marketing theory and requisite analytical skill to success on the course.|My undergraduate studies have enabled me to acquire a strong foundation in key marketing theory and essential analytical skills that would enable me to succeed on your course.|
Remember that the clients will be submitting a CV, a transcript and other materials, all of which can be used to convey information that
*doesn't fit into the requirements of the document you're working on
*disrupts the flow of the document.
Point out to the client that the Committee will be looking at the application as a whole and therefore certain details do not need to be repeated between different documents.
<<bq1 "
Bayannaoer City No.1 High School, Bayannaoer city, China Sept 2010~ July 2013 Awards/Honors/Scholarships 1. Outstanding provincial-level students of Inner Mongolia Autonomous Region. 2. The second prize in Inner Mongolia Autonomous Region (as a team member), China Adolescents Science & Technology Innovation Contest.
→
Since you are making an application for graduate study, there’s no need to include your high school on your resume. (PS - I can’t absolutely confirm this is the intended purpose of your resume, since the information is not included in your order - therefore, if there’s another relevant reason for including this, please do explain it to me.)
">>
More examples of how to deal with it:
<<iFrame 0BwiSHPBB3kz9aFU1NnluSGI4Q3c>>
<<iFrame 0B1gbT0IU3BgKcUY3RzgtWkd6ZlU>>
Please email Bill, cc-ing Andy and Vivian.
{{$:/Contact/ITissues||$:/copy}}
It is important to highlight any interpretations or judgment calls about which you are unsure.
<<dispLay "Key profile settings" "bstdgrsrED">>
|My undergraduate studies have enabled me to acquire a strong foundation in key marketing theory and essential analytical skills that would enable me to succeed on <span style='background-color:yellow;'>your course. In the beginning</span>, my GPA was only average in my class due to intensive participation in extracurricular activities. |My undergraduate studies have enabled me to acquire a strong foundation in key marketing theory and essential analytical skills that would enable me to succeed on <span style='background-color:yellow;'>your course. This rapid progress</span> has been supported by a conscientious work ethic; although initially my GPA was only average due to intensive participation in extracurricular activities, when I started taking more vocational courses, unique cases and practical skills led me to fully immerse myself in academic work. |
|I also proposed that we prepare commercial-style videos to make our presentation more amusing and animated, and they were proved to be very effective during <span style='background-color:yellow;'>our final presentation. During the presentation</span>, an accident occurred when I was doing my part.|I also proposed that we prepare commercial-style videos <span style='background-color:yellow;'>to make our presentation more amusing and animated. Although they proved to be very effective</span> during our final presentation, this was nonetheless hampered an accident that occurred during my part.|
<<st "Google check solutions">>
><p class="MsoNormal" style="text-align:justify;text-justify:inter-ideograph;
mso-outline-level:1;tab-stops:20.0pt"><b><span style="font-size:11.0pt;mso-ansi-language:EN-US">A study on <span class="msoIns"><ins cite="mailto:sload356" datetime="2017-09-12T02:52">L</ins></span><span class="msoDel"><del cite="mailto:sload356" datetime="2017-09-12T02:52">l</del></span>and-lost
<span class="msoIns"><ins cite="mailto:sload356" datetime="2017-09-12T02:52">F</ins></span><span class="msoDel"><del cite="mailto:sload356" datetime="2017-09-12T02:52">f</del></span>armers
from the <span class="msoIns"><ins cite="mailto:sload356" datetime="2017-09-12T02:52">P</ins></span><span class="msoDel"><del cite="mailto:sload356" datetime="2017-09-12T02:52">p</del></span>erspective of <span class="msoIns"><ins cite="mailto:sload356" datetime="2017-09-12T02:52">R</ins></span><span class="msoDel"><del cite="mailto:sload356" datetime="2017-09-12T02:52">r</del></span>edesigning
<span class="msoIns"><ins cite="mailto:sload356" datetime="2017-09-12T02:52">C</ins></span><span class="msoDel"><del cite="mailto:sload356" datetime="2017-09-12T02:52">c</del></span>ommunity
and <span class="msoIns"><ins cite="mailto:sload356" datetime="2017-09-12T02:53">L</ins></span><span class="msoDel"><del cite="mailto:sload356" datetime="2017-09-12T02:53">l</del></span>iving
<span class="msoIns"><ins cite="mailto:sload356" datetime="2017-09-12T02:53">R</ins></span><span class="msoDel"><del cite="mailto:sload356" datetime="2017-09-12T02:53">r</del></span>ationality</span></b></p>
"Land-lost farmers" and "Living Rationality" are not a clear or comfortable mode of expression in English.
Trying Googling
```
chinese farmers lost land
```
{{!!1}}
and
```
rational living community redesign
```
{{!!2}}
This might help you arrive at a better edit.
You could use inverted commas for the former term or use the terms you've uncovered, adapted for the relevant context...
>A study on rational living and community redesign based in the context of collective land expropriation.
<<st "Engaged edits and questions also provide solutions">>
><b><span lang="EN-GB" style="font-size:11.0pt;font-family:Calibri;mso-fareast-font-family:SimSun;
mso-bidi-font-family:Arial;mso-ansi-language:EN-GB;mso-fareast-language:ZH-CN;
mso-bidi-language:AR-SA">From Mass Markets to Elite Club </span></b>
Perhaps "elite niches" would be better? If you're not sure you should ask an engaged question based on the material the client has provided
>Team leader, in charge of the questionnaire design and the interviewing process; as a team leader; analyzed the collected materials collected from the bookstore staff and readers from the perspective of public sphere and the notion of citizenship
E.g. "//I note your study was focused on public attitudes to reading and changing perceptions of the consumption of literature; is the title of your project intended to suggest or posit reading has rapidly changed from a mass market activity, back to one that is only focused on a small group of specialized individuals. Could you expand on this briefly so I can more accurately edit the title of this project? Thank you :)//"
<<st "Familiar patterns that don't sound quite right">>
>Research Society of The Yangtze River Delta
Flip it.
>Yangtze River Delta Research Society
><div id="_com_1" class="msocomtxt" language="JavaScript"><!--EndFragment--><p class="MsoCommentText"><span class="MsoCommentReference"><span lang="X-NONE" style="font-size:8.0pt"><b style="font-family: "David Yuan"; font-size: medium;"><span lang="EN-GB" style="font-size:11.0pt;font-family:Calibri;mso-fareast-font-family:SimSun;
mso-bidi-font-family:Arial;mso-ansi-language:EN-GB;mso-fareast-language:ZH-CN;
mso-bidi-language:AR-SA">Software skills: </span></b><span lang="EN-GB" style="font-size: 11pt;">expert in MS Office, Excel & PPT; statistic<span class="msoIns"><ins cite="mailto:sload356" datetime="2017-09-12T02:20">al</ins></span>
analysis with STATA and R</span></span></span></p></div>
The instant question by the reader is...
>"expert" you say? Is this your opinion? How is this to be corroborated?
Citing the undocumented ability to use MS Office suite is not the most compelling or useful assertion in resume terms and may be best avoided. (Unless the client has one of the MOS certifications, for example - https://www.microsoft.com/en-us/learning/mos-certification.aspx)
Stories are not strongly tied to the application rationale (events outside the last 3 years require strong justification for inclusion. Some examples:
<<bq1 "I wanted to become an asset manager ever since high school. My mother’s career at JP Morgan influenced me greatly. Sheworked in Morgan Stanley in Chicago after finishing her undergraduate study in Dartmouth College.">>
<<bq1 "I come from a long line of engineers: my father, my uncle and my grandfather.">>
<<bq1 "As a three-year old, I always dressed up as a doctor because I loved my doctor so much, I knew that some day I, too, wanted to be a pediatrician. ">>
<<bq1 "My father received his Bachelor's degree from Guangzhou Naval Academy and always emphasized…">>
One of the basic things to be aware of from the task order page is the location of your client's target school.
To assist you in applying the appropriate spellings and conventions, ensure the MS Word spellchecker is set correctly.
<center><p>''Logged out''</p>
<<loginOut>></center>
<<list-links "[tag[Managing tasks]sort[title]]">>
We've found that giving clients the option to send quick questions after a service is completed results in a substantial decrease in complaints.
Client questions should be reasonable in scope and relate specifically to this service in hand.
They will be sent through our messaging system and you should ''respond to clients within 24 hours''.
Clients have the option to message you for varying periods, depending on the service type:
|![[Baseline Edit]] | {{Baseline Edit!!expiry.days}} days |
|![[Heavy Edit]] | {{Heavy Edit!!expiry.days}} days |
|![[VIP Service]] | {{VIP Service!!expiry.days}} days |
In addition to replying promptly, you should ensure that you are professional, courteous, and treat this client as a potential repeat customer for the company.
When receiving and responding to client messages, please do not take their enquiries as a challenge to your competence. The questions are generally borne out of genuine uncertainty and application nerves.
Each Task details screen has a messaging facility at the bottom of the page. Remember you are corresponding directly with your client by default.
*It also provides the ability to forge stronger connections with clients and manage your reputation more directly.
*It goes without saying that any messages sent to a client should be thoroughly professional and friendly in tone.
*Messages you receive should be reasonable in scope, with the subject of messages related to the service provided.
*However, if you wish to provide clients with more information or more elaborate responses to augment your reputation on the site, please feel free to do so.
<<dispLay "Messaging system" "bfdsg3424t">>
<center><iframe style='border:none;' src="https://drive.google.com/file/d/0BwiSHPBB3kz9czhuNlRLN2Q3dE0/preview" width="640" height="200"></iframe></center>
<div style='width:100%;'><div style='text-align:right;'>{{$:/MobileClsButton}}</div>
<center><<loginOut>> <$button style='font-size:90%;padding:2px 5px 2px 3px; background-color:#fff; border:1px solid grey; border-radius:3px;' class='sideb1'><$action-navigate $to="Welcome"/>{{$:/core/images/home-button}}</$button>
<$list filter='[prefix[$:/AdvisorLinks/]]'>
<a style='color:black;' href={{!!url}} target='_blank'>{{!!text}}</a>
</$list></center>
</div>
<div style="background-color:#fff;padding:15px;box-shadow: 0px 1px 5px rgba(0, 0, 0, 0.5);-moz-box-shadow: 0px 1px 5px rgba(0, 0, 0, 0.5);box-shadow: 0px 1px 5px rgba(0, 0, 0, 0.5);width:100%;margin-bottom:30px;">
{{$:/FindThis}}
</div>
<div style="background-color:#fff;padding:15px;box-shadow: 0px 1px 5px rgba(0, 0, 0, 0.5);-moz-box-shadow: 0px 1px 5px rgba(0, 0, 0, 0.5);box-shadow: 0px 1px 5px rgba(0, 0, 0, 0.5);width:100%;">
<<st Index>>
<ul>
<$list filter='[tag[Mobile]]'>
<li><$link to={{!!title}}>{{!!title}}</$link></li>
<$list filter='[tag{!!title}]'><ul>
<li><$link to={{!!title}}>{{!!title}}</$link></li>
</ul></$list>
><h1>$1000 monthly bonuses for top-ranking advisors</h1>
Eligibility for bonuses is based on:
!!1. Company profits for each month
We have fixed a 'bonus pool' as a % of monthly sales. For obvious reasons, we do not wish to reveal this % (but see below).
!!2. Credits you accumulate each month.
We will award bonuses to as many advisors as the pool allows. The advisors who receive the bonus will be those with the highest number of credits for that month.
Credits are wiped at the end of each month.
>E.g. If the pool is $10,000, we will award $1,000 bonuses to the 10 advisors with the most credits.
Transparency will be achieved by publishing the number of bonuses and the names of the recipients in the {{$:/Link/AdvisorGroup}} at the end of each month.
!!In practice - old data
To demonstrate, we've calculated the bonuses that would have been available under this system for preceding years.
{{$:/Bonus pool in previous year.csv}}
!!Important notes
*Credits are wiped on the 1st of each month.
*You Appointment Fee Ranking is based on your score in the preceding month.
*As you can see, above, we'll round-up/down to the nearest 1000. The intention here is to be generous.
*We want to experiment with this. For now, your credit scores will not be available to view. We'll review in October.
*If you can think of ways to improve this system, we are open to discussion.
<<st Instructions>> <p>Click the <$button class="tc-btn-invisible">{{$:/core/images/close-others-button}}</$button> to highlight issue and reveal comments. Click again to remove.</p><$macrocall $name="runThroughViewer" n="More"/>
<<st Instructions>> <p>Click the <$button class="tc-btn-invisible">{{$:/core/images/close-others-button}}</$button> to highlight issue and reveal comments. Click again to remove.</p><$macrocall $name="runThroughViewer" n="More"/>
<<st Instructions>> <p>Click the <$button class="tc-btn-invisible">{{$:/core/images/close-others-button}}</$button> to highlight issue and reveal comments. Click again to remove.</p><$macrocall $name="runThroughViewer" n="More"/>
<<st Instructions>> <p>Click the <$button class="tc-btn-invisible">{{$:/core/images/close-others-button}}</$button> to highlight issue and reveal comments. Click again to remove.</p><$macrocall $name="runThroughViewer" n="More tips"/>
If the candidate cannot convince themselves, then the admissions committee are unlikely to be convinced.
Clients often allow amazing and compelling reasons for further education slip by because they have an inaccurate preconception about the type of material a committee expects to receive.
It is your job as an advisor to:
*Identify and proactively advise against unsuitable content.
*Ask engaged, structured, and targeted questions to elicit suitable material from your client.
Every iteration should be presented to your client in a clear and easy-to-read format.
<<st "General appearance">>
Be aware of the MS Word 'clear formatting' function.
This is a solid way of eliminating any issues with prior formatting and simplifying your process:
This is an easy way to avoid common shortfalls in presentation of documents to clients, such as: mismatched fonts/ font sizes, inconsistently spaced paragraphs, etc..
<$list filter='[tag[MS Word]]'>
<<st {{!!title}}>>
<$transclude mode='block'/>
|!Documents |!Quantity |!Length |
|Personal Statement __or__ Statement of Purpose | 1 __per school__ | Up to 1000 words __per school__ |
|Resume or Curriculum Vitae | 1 __per service__ | Up to 2 pages __per service__ |
|Recommendation Letters | 3 __per service__ | Up to 1200 words __per service__ |
No. You can <<code accept>> the additional school or <<code refuse>> it. You may wish to discuss this with the client via messages to see if they can work with your schedule.
><<img "https://photos-5.dropbox.com/t/2/AACtjmHrXnokAugOxev1Rt8ziog0TGX5TQhS_vcXp1j71A/12/693466203/jpeg/32x32/3/1509487200/0/2/File%2002-10-2017%2C%2015%2007%2006.jpeg/EJq4nukFGDggBygH/lU1OQnyxGSNNuOisGTNVtzNNZtlGL5hQjkAiKtN4NUk?dl=0&size=800x600&size_mode=3">>
Don't be hesitant about changing the name of a project, thesis paper or official competition cited by the client if it does not read correctly in English. If this is the case the client has most likely translated from the Chinese and in most cases (international competitions/ conferences aside) there will be no official English name to worry about. Therefore take the following approach:
<<iFrame 0BwiSHPBB3kz9SEowN0JJUUFrT3c>>
Your package task is the 'umbrella' for a series of individual document services, which you manage together.
You can toggle from package task to individual document tasks that comprise it by toggling through the tabs like this:
><<img "https://photos-5.dropbox.com/t/2/AACIRdbwK58lH04ija7ZYgf-0P1puMrc0UWP5AYWbr82Zg/12/693466203/jpeg/32x32/3/1509487200/0/2/File%2002-10-2017%2C%2014%2031%2012.jpeg/EJq4nukFGDggBygH/G1XpRomZBMtBV52PrK2hBtPeeuD8FrWWvgsgm6yUel4?dl=0&size=800x600&size_mode=3">>
<style>
.pink {font-family: 'Baloo Bhaijaan', cursive;font-size:200%;text-align:center;background-color:pink;color:#fff;border-radius:4px;}
</style>
<$set name='getP' filter='[{$:/newAdvisors/currentSlide}previous[$:/Numbers]]'><$set name='getN' filter='[{$:/newAdvisors/currentSlide}next[$:/Numbers]]'>
<$reveal type='nomatch' state='$:/newAdvisors/currentSlide' text='0'><$button class='pink' set='$:/newAdvisors/currentSlide' setTo=<<getP>>>Back</$button></$reveal> <$reveal type='nomatch' state='$:/newAdvisors/currentSlide' text='11'><$button class='pink' set='$:/newAdvisors/currentSlide' setTo=<<getN>>>Next</$button></$reveal>
</$set></$set>
<$list filter='[prefix[$:/NewAdvisors/]nsort[n]field:n{$:/newAdvisors/currentSlide}]'>
<div class='cardBox'>
<div style="font-family: 'Baloo Bhaijaan', cursive;font-size:205%">{{!!c}}</div>
<$transclude/>
</div>
</$list>
<$button message="tm-close-tiddler" class="tc-btn-invisible tc-tiddlylink" param="Welcome"><$action-navigate $to={{!!title}}>{{!!title}}</$button>
\define r(n,t)
<$radio tiddler='$:/Example' field='$n$' $value='$t$'> $t$</$radio>
\end
If a client chooses to raise a complaint with us directly, it is considered an ‘official complaint’.
The process is as follows:
<<st "1. Complaint submitted">>
ZHISHIQ admin staff in our Nanjing office engage with clients submitting official complaints extensively in order to appraise whether the complaint is reasonable.
''If unreasonable:'' The reasons are explained to the client and the process stops.
''If reasonable:'' The process continues as follows.
<<st "2. Initial actions">>
Communication between original advisor and client is blocked by our system.
*If issue relates to deadlines or basic SPG errors:
**The client is provided with an automatic refund of between 10% - 50% of the advisor fee.
**The process continues as follows.
*If the complaint relates to any other type of service quality issue:
**The process continues as follows.
<<st "3a. Senior Advisor marketplace">>
ZHISHIQ admin staff will send the document to the Senior Advisor marketplace
A senior advisor will ‘accept’ the task, meaning they take responsibility for fixing the document.
The senior advisor will briefly glance through the document and ascertain the substance of the complaint.
*If they find there is absolutely no substance to the complaint*:
**Pause the process by pressing the appropriate button on the system. [screenshot of system needed]
**The original advisor will be alerted.
**The senior advisor will prepare a detailed explanation to the client.
*Otherwise, the senior advisor will use the messaging system to send a brief, friendly, and professional message to the client acknowledging receipt of the document and letting the client know it is in hand.
<<st "3b. Original advisor">>
An alert is simultaneously issued to the original advisor**, who will have 24 hours to update us as follows.
>I have received this complaint. Y/N
>I understand the substance of this complaint. Y/N
>I am willing to provide a redraft and upload it to the enclosed link within 24 hours. Y/N
The document status be marked on the system as ‘awaiting response from original advisor’ until either:
*the original advisor has responded; or
*24 hours have elapsed, whichever is sooner.
''If the original advisor provides a redraft:''
*They will upload the improved draft to the system at the link provided in the alert they received.
*The document will go to the senior advisor (not the client), who will use this as a basis for their response to the client complaint.
''If the original advisor is unable to provide a redraft in the stated time period:''
The senior advisor will receive an alert and they are free to start work.
The document status will change from ‘awaiting response from original advisor’ to ‘original advisor feedback received’; when the senior advisor has picked it up, the status will change to ‘awaiting senior advisor feedback’.
''If no senior advisor has accepted the task at this time:''
Those viewing the senior advisor marketplace will see the task status change. The team will be contacted and hopefully be encouraged to provide support!
<<st "4. Senior advisor">>
The senior advisor will commence fixing the document, aiming to send a redrafted version to the client within 48 hours.
The senior advisor’s feedback will also include a note explaining how they’ve addressed the problem and apologizing on behalf of the team.
The senior advisor will correspond with the client until the matter is resolved.
<small>
^^1^^Since English is a second language for our staff, it is not always possible for them to make a complete assessment without senior advisor support)
^^2^^For the avoidance of doubt, the client will not be made aware of the original advisor’s continued involvement, since this is purely an internal educational opportunity for ZHISHIQ and its contractors.
</small>
<<st "5. "Feedback & compensation">>
At the conclusion of the matter, the senior advisor will provide the following information to ZHISHIQ via a simple form on the complaint page.
>Was the complaint justified?
>Was the complaint serious?
>Briefly highlight the main reasons you think this complaint occurred.
>So that we can compensate you for your time, please state how long you spent on this complaint (in minutes)
The usual rate for compensating senior advisors is US$30 per hour.
These payments are made on the usual [[Payment Date]].
<<st 6. "If a client vehemently disagrees with the senior advisor’s judgement">>
The complaint will be returned to the complaint marketplace.
Its status will be marked as ‘Second-round complaint’. This should be understood to mean: This issue has already been appraised by a complaint-handler; we agree, but, irrespective, we need a senior advisor to work on this and do what they can to make the client happy.’ The first senior advisor’s feedback will be visible to whoever chooses to pick up the task subsequently.
<<st Instructions>> <p>Click the <$button class="tc-btn-invisible">{{$:/core/images/close-others-button}}</$button> to highlight issue and reveal comments. Click again to remove.</p><$macrocall $name="runThroughViewer" n="one"/>
|!Documents |!Quantity |!Length |
|Personal Statement __or__ Statement of Purpose | 1 __per service__ | Up to 1000 words __per service__ |
|Resume or Curriculum Vitae | 1 __per service__ | Up to 2 pages __per service__ |
|Recommendation Letters | 2 __per service__ | Up to 800 words __per service__ |
In these services, the client has been assisted by a Chinese mentor in the preliminary stage of school selection. However, all communication during the document aspects of this service should be conducted in English, between client and advisor.
For advisor purposes, pricing and #schools aside, they should be treated the same as other packages.
\define newItem(tid,tags)
<$reveal type='match' state='$:/AdminBar/State!!text' text='show'>
<$edit-text tiddler='$tid$' tag='input' placeholder='Item title'/>
<$button>
<$action-sendmessage $message="tm-new-tiddler" title={{$tid$}} tags="$tags$"/>
New Item
</$button>
</$reveal>
\end
In addition to [[Key ESL issues for every doc]], you should look out for, among other things, the following common problems.
<<newItem $:/newBaseline/temp "[[Baseline Edit]] Guide">>
__Contents__
<ul>
<$list filter='[tag[Baseline Edit]tag[Guide]]'>
<li>{{!!title}}</li>
</$list>
</ul>
<$list filter='[tag[Baseline Edit]tag[Guide]]'>
<<st {{!!title}}>>
<$transclude mode='block'/>
</$list>
<blockquote style="font-family:Georgia;font-size:150%;line-height:120%;margin-left:20px;">"[T]he admission process has evolved into such a Byzantine ritual, that it can make normal people act nutty and nutty people act quite crazy."</blockquote>
<p style="font-size:80%;margin-left:20px;">—Psychologist and wordsmith, <a href="http://michaelthompson-phd.com/" target="_blank">Michael G. Thompson</a> completely nailing the hyperbole inspired by the admissions process in <a href="http://www.parentsassociation.com/college/failed_rite.html" target="_blank">an article for the Parents Association</a>.</p>
<blockquote style="font-family:Georgia;font-size:150%;line-height:120%;margin-left:20px;">"I don't think that '//Rate this applicant's leadership from 1 to 5//' is a particularly objective exercise just because we slapped a number in it."</blockquote>
<p style="font-size:80%;margin-left:20px;">—MIT Admissions Official, Chris Peterson in his article '<a href="http://mitadmissions.org/blogs/entry/the-difficulty-with-data">The Difficulty With Data</a>'</p>
These views on the opaque nature of admissions protocol for Western higher education are striking because they come from relative 'insiders' in the college admissions process.
<div style="line-height:1.2em;text-align:left;color:grey;font-size:150%;padding:0;font-family: 'Montserrat', sans-serif; text-transform:uppercase;margin-bottom:-10px;">ZHISHIQ's mission</div>
<blockquote style="font-family:Georgia;font-size:150%;line-height:120%;margin-left:20px;">... is to supplement the uneven state-of-affairs in international admissions and level the playing field, by connecting Chinese students to outstanding educators, counsellors, and professionals. We aim to offer access to the kind of advice and support that many Western applicants receive by virtue of their geography and culture.
|!Spelling |All services |
|!Grammar |All services |
|!Structure |All services except L1 - [[Baseline Edit]] |
|!Organization |All services except L1 - [[Baseline Edit]] |
|![[Transitions]] | All services except L1 - [[Baseline Edit]] |
|!Variations in sentence<br> length and complexity |All services |
This one is very popular:
<<bq1 "I __not only__ developed my creative thinking as much as possible, __but also__ experienced real passion in teamwork which…">>
<ul>
<$list filter='[tag[Package FAQs]]'>
<li><$link to={{!!title}}>{{!!title}}</$link></li>
</$list>
</ul>
<<dispLay "Package Process" "WEH%ge5s">>
\define countSchools()
$(thePackageType)$!!count
\end
\define rarrow()
<div style='float:left;width:50px;margin-top:-18px;'>[img width='45px'[redarrow-min.png]]</div>
\end
\define ifOneStopFilter()
[list<countSchools>$(ifOneStop)$]
\end
\define redLine(w)
<div style='margin-top:-28px;margin-left:-8px;'>[img width='$w$px' height='5px'[$:/red-line-min.png]]</div>
\end
We sell our core text and advice services in multi-school packages that allow clients to work with the same advisor on multiple applications.
Packages can be purchased in a variety of configurations.
<$set name='thePackageType' value={{$:/PackageServices/PackageType/Temp}}>
<table><tr><td style='padding:0 20px 0 20px;width:50%;height:400px;vertical-align:top;'>
<h2>Type of package service</h2>
<<rarrow>><ul style='padding-left:50px;'><$list filter='[tag[Package Services]!tag[holder]reverse[]]'><$radio tiddler='$:/PackageServices/PackageType/Temp' value={{!!title}}> <$view field='title'/> </$radio><br>
</$list></ul>
<h2>Select service level for this package</h2>
<<rarrow>><ul style='padding-left:50px;'><$list filter='[tag[Program Packages]tag[Statement Packages]!prefix[Baseline]!prefix[Interview]]'>
<$radio tiddler='$:/PackageServices/ServiceLevel/Temp' value={{!!title}}> <$view field='title'/> </$radio><br>
</$list></ul>
<h2>Select service speed</h2>
<<rarrow>><ul style='padding-left:50px;'><$list filter='[tag[Service deadlines]]'>
<$radio tiddler='$:/PackageServices/ServiceSpeed/Temp' value={{!!field_handle}}> <$view field='title'/> </$radio><br>
</$list></ul>
<h2>How many schools in the package service?</h2>
<$set name='ifOneStop' filter='[title[$:/PackageServices/PackageType/Temp]field:text[One Stop Packages]]' value='last[3]' emptyValue=''>
<<rarrow>><ul style='padding-left:50px;'><$list filter=<<ifOneStopFilter>>>
<$radio tiddler='$:/PackageServices/NumberSchools/Temp' value={{!!title}}> <$view field='title'/> </$radio>
</$list></ul>
</$set>
</td><td style='padding:0 20px 0 20px;width:50%;height:400px;vertical-align:top;'>
!!Documents included
<<redLine 180>>
<$list filter='[title{$:/PackageServices/PackageType/Temp}]'>
<$set name='theDocLengthTable' filter='[title{!!compress}addprefix[$:/]addsuffix[/DocLengths]]'>
<$transclude tiddler=<<theDocLengthTable>> mode='block'/>
</$set>
</$list>
!!Service expiry date
<<redLine 210>>
{{$:/Packages/Expiry}}
!!Advisor fees
<<redLine 150>>
<$set name='thePrice' filter='[title{$:/packagePrices}]'>
<$set name='packageBasePrice' filter='[title[$:/packagePrices]get{$:/PackageServices/NumberSchools/Temp}]'>
<$set name='packageDeadlineMuliplier' filter='[title[$:/Multipliers/Deadlines]get{$:/PackageServices/ServiceSpeed/Temp}]'>
$<$calc><<packageBasePrice>>*<<packageDeadlineMuliplier>></$calc>^^approx.^^
</$set>
</$set>
</$set>
!!Deadlines
<<redLine 100>>
<$transclude tiddler='$:/Calc/Deadlines' mode='block'/>
</td></tr></table>
<<dispLay "Package Types" "hberdrthx">>
<$reveal type='nomatch' state='$:/Packages/instructions/state' text=''><div style='width:550px;padding-right:40px;'><div style='float:right;'> <$button style='margin-left:4px;border:1px solid grey; padding:0 5px 1px 5px;font-size:150%;' set="$:/Packages/instructions/state" setTo="1" class="tc-btn-invisible">×</$button></div>
<<code "Use the tabs below to navigate. Where relevant, use the darker grey left-hand sidetabs to further find info you need.">></div></$reveal>
<$macrocall $name="tabs" default="Package Types" tabsList="[tag[PackageServices]]"/>
`NOTE: packages are now paid on a 'per document' basis in the same way as other services.` https://www.facebook.com/groups/teamzhishiq/?multi_permalinks=898974103604044
Payments are made ''on or around'' the 10th of each month.
If you have any questions about your monthly payment, please send (1) email to the following people.
{{$:/ContactLists/Fees||$:/copy}}
The system will randomly send 10% of all tasks uploaded (by any advisor) for review (the review fee on these reviews is much, much lower).
<<t "Review process">>
<<st "Upload the completed task">>
When you upload a task, the system will determine whether:
*It goes directly to your client; or
*It goes to a review marketplace, to which senior advisors have access, exactly like the main marketplace.
<<st "Reviewer picks up your task">>
If the task goes to the review marketplace, it will be picked up by a senior advisor.
They will check the document to ensure:
*It fulfills the service description
*You have cordially and professionally engaged with your client
*It is error-free
<<st "Reviewer opinion">>
The reviewer will:
*Fix any issues or shortfalls in the document.
*Provide you with detailed feedback.
*Provide an opinion to us:
**Brilliant
**Fine
**Some cause for concern
If a task is 'Brilliant' or a 'Cause for concern', the document will be routed to a system administrator who will determine:
*Whether they agree
**Appropriate [[Incentives|Stuff we incentivize]]/ [[Disincentives]] to apply
When the reviewer uploads the document, it will be sent to your client.
<<st "Compensation">>
If a Senior Advisor has to spend more than 10 minutes adjusting the document, they have the option to bill ZHISHIQ at a rate of $20 per hour.
Time can be recorded when you upload a task. If there is a problem recording expenses on the system, please use the [[Senior Advisor Expenses Form]].
<<st "Reviewer feedback">>
Feedback should be warm, pleasant, professional, and respectful.
It should provide clear articulation of issues.
We understand when listing out problems with a document (and dealing with online communication in general), it can sometimes be hard not to come off as a little cold. Your reviewees should know this too.
The aim is always to make progress.
<iframe style='border:none;' src="https://drive.google.com/file/d/0BwiSHPBB3kz9RnhjUWEwUDlYa0k/preview" width="640" height="180"></iframe>
From more guidance on the substance of reviews, please review the [[Document run-throughs]] in detail.
<<st "Check these resources and provide links to your client to support your advice">>
Use the search box on the [[Welcome]] page.
If you can't find anything relevant to the issue straight away,
# Sorry!
# Please flag so I can fix for next time!
If your account is marked as 'available' clients may appoint you.
*When you get an appointment, firstly, well done!
*Clients expect you to acknowledge the appointment by accepting the task.
*We have set deadlines on this to help manage the process.
*Appointed tasks will be listed in the Pending column in the marketplace on your Dashboard until you've clicked to acknowledge and accept the task.
|!Main term |!Synonyms |
|Evidence |Information; facts; experiences |
|Point |Thesis; argument; thrust |
|Evaluations |Claims; assertions |
<<dispLay "Pickup task" "sbdtterbd">>
A strong focus (or 'thesis') underlies any decent statement: Providing a compelling answer to the questions...
!<blockquote>Why should we accept you to our school?</blockquote>
*[[Motivation]]
*[[Capacity]]
*[[Fit]]
*[[Contributions the candidate could make to the program]]
!<blockquote>Are you equipped for the rigors of a more advanced learning environment?</blockquote>
*[[Readiness: Applicable skills and knowledge and how they apply to target program]]
*[[Understanding of program]]
Highlight the advanced courses you completed as an undergraduate, your performance in these courses, and how the experience of going through those courses will help you as a graduate student. Courses that included a research component, a reading of primary literature in your field, and a critical analysis and synthesis of current scientific discoveries will be most advantageous. Don't just write about why a program is best for you but convince the committee that you have something to offer the program in return.
You will have to do some personal soul searching about why you want to go to graduate school. If you cannot convince yourself, then you won't be able to convince the admissions committee in your personal statement. Graduate school is not a default; it is a commitment that you should be willing to make if it is the right next step for you. Taking time off, working in a job that is close to your field to gain experience, or taking an advanced course may help solidify your decision to go to graduate school. These opportunities will also provide even more fodder to include in your personal statement when you are ready to apply.
These services involve assisting your client with a set of applications at either VIP or L2 service levels.
Here are the client-facing service descriptions:
<$macrocall $name='tabs' tabsList='[tag[Program Packages]prefix[$:/ServiceDesc/]]' default='$:/ServiceDesc/VIP Program Package'/>
Please recognize the importance of personal branding via your profile and scope for earnings that can result in the form of appointments (see [[Appointment Fee Ranking]]). Prepare carefully drafted ‘market yourself’ prose sections for your profile.
''The parallels between the quality of your profile's content and the areas in which you are holding yourself out to be skilled, as an advisor, cannot be underemphasized.''
<<imgp "400px" "https://photos-5.dropbox.com/t/2/AAAa9Zi65TiFwcFzqriDNkW2Sf0uH9q9L0yszZUGc-zVJQ/12/693466203/jpeg/32x32/3/1508785200/0/2/File%2023-10-2017%2C%2015%2015%2022.jpeg/EJq4nukFGCMgBygH/_-fu1TP1LMRzidocdDbHRl7BYYt5pxl9f_xQ5W2Ha5w?dl=0&size=800x600&size_mode=3">>
<<profileButton>>
It is recommended that (once you have broken down the question requirements and are familiar with other basic determinants of the document's quality) you read through each document in it's entirety before you commence editing.
*Is the information presented effectively?
*What is this paragraph seeking to make the reader believe?
*Is this claim about the candidate of interest to the reader?
*What evidence is presented (in the body of this paragraph) to persuade the reader that the claim is true?
*Is the evidence presented effectively or merely alluded to?
*Does the material cover off the points stated in the question requirements?
*Are there any gaps?
*How can this material be organized more clearly or logically?
*Is any of the material superfluous?
*Are there smooth linkages between paragraphs?
*What material is ambiguous and requires clarification?
*What material could be enhanced with more specificity and the right kind of detail?
<<bq1 "Steven N.S. Cheung’s ‘The Economic System of China’, intrigues me in particular. The Arthur was able to explain a lot of the seemingly complicated phenomenon using simple everyday illustrations. This book has enabled me to discover facets of economics that are approached from a different angel, and further arouse my interest for studying real estate economics.">>
<<bq1 "…regularly reading the Economist and relevant books…” or “…consulting foreign web sites and journals…">>
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
At the moment, for individual service, our refund detailed policy is:
[normal urgent service]
How overdue Deduction
<12 10%
12-24 20%
>24 50%
((Delay more than 6 hours, before getting the draft, the user can apply for cancellation of the service and get a full refund)
[normal service]
How overdue Deduction
≤24 10%
24-48 20%
>48 50%
(Delay more than 12 hours, before getting the draft, the user can apply for cancellation of the service and get a full refund)
[24 hours urgent service] none
My suggestion:
How overdue Deduction
≤6 10%
6-12 30%
>12 50%
(Delay more than 3 hours, before getting the draft, the user can apply for cancellation of the service and get a full refund)
(And I strongly suggested only high level advisors can help 24 hours urgent service, because people only under really urgent situation will order 24 hours urgent service, high level advisors have rich experience in editing which will decrease much more possibility for clients to receive dissatisfied final documents.)
>My mother’s career at JP Morgan influenced me greatly. She worked in Morgan Stanley in Chicago after finishing her undergraduate study in Dartmouth College...
>My experiences as President of the Chess Club in high school prepared me well for the undergraduate major in Math I have just completed...
These opening lines are not appropriate. The purpose of the document is to convince the reader that the applicant is
*Ready for a more advanced learning environment.
*Genuinely motivated (or capable of being motivated) by what they're applying to do.
*Someone members of the school would benefit from having around.
The examples above:
*Don't show understanding of the context of the document.
*Are not rooted in the candidate's recent experiences; they don't speak to the candidate's current level of development.
*They don't convincingly explain what has led the candidate to apply.
These documents should start with the candidate's strongest experiences and develop the case from there.
Examples should be clearly connected to:
*The candidate
*The reason they are applying
*The case for admission to the program
Be very aware of, and help address, repeated words.
<table style='border:none;' width='100%'><tr><td style='border:none;'>
<iframe style='border:none;' src="https://drive.google.com/file/d/0B1gbT0IU3BgKV2hHLTAyOWJUajA/preview" width="" height="150"></iframe></td><td style='border:none;'><iframe style='border:none;' src="https://drive.google.com/file/d/0B1gbT0IU3BgKLXpzbno3NlpHM3M/preview" width="" height="150"></iframe></td></tr></table>
!!''The meaning of //alumni//''
The original text read in a similar way to the following (I have adjusted slightly to maintain confidentiality):
>I hope I will become an excellent //alumni//.
The word //alumni// is the plural form of //alumnus//, meaning (in Latin) a group of male graduates of a school.
It can also refer to a group of graduates from both genders. Most schools do this in their official literature (although it is technically __incorrect__ useage).
It should not be used to refer to a female-only group of graduates (which would be //alumnae//).
!!''Alum''
The advisor corrected the sentence above as follows:
>I hope I will become an excellent alum.
This renders it singular and gender-neutral, which is appropriate.
Some individuals may raise concerns as to whether the word alum is considered more informal than //alumna// or //alumnus//.
We would refer you to Merriam-Webster (one of the most respected providers of language information, with the largest team of editors in the US), which offers specific opinion on this subject:
>''Is it acceptable to use alum for //alumnus// or //alumna//?'' <br>The words that we have used to refer to people who have attended or graduated from a school, college, or university have changed a bit over the past several centuries. Traditionally, the word alumnus has been used to refer to a single male, whereas alumna has been used for a single woman. Initially the plural forms were alumni to refer to multiple men (or multiple men and women) and alumnae for multiple women. __A little over a hundred years ago the shortened form of alum began to be used to describe a graduate or past attendee of either gender. Although many people feel that alum is informal, it is in increasing use, and we appear to be moving toward a greater acceptance of the word.__ The plural of alum is alums. <br>https://www.merriam-webster.com/dictionary/alum
We hope this helps you feel less worried about this issue. Please get in touch with us if we can help you with any other concerns. We would always be very happy to hear from you.
Regards,
''Andy'' | CPO/ co-Founder, ZHISHIQ.com
\define entryBlock()
<$set name='theContainer' value={{!!title}}>
<$list filter='[list[!!list]]'>
<$set name='theLabel' value={{!!title}}>
<$list filter='[title{!!title}addprefix[/]addprefix<theContainer>addsuffix[/]addsuffix<taskID>]'>
<$edit-text tiddler={{!!title}} default='' tag='textarea' class='tc-edit-texteditor' default='' minHeight='10px' placeholder=<<theLabel>>/><br>
</$list>
</$set></$list>
\end
\define revealEr()
$:/ResumeBuild/$(the/Reveal2
\end
<$set name='taskID' value={{$:/Tools/TaskDetails/Task}}>
$:/ResumeBuild/Current
<$list filter='[list[!!list]nth[1]]'>
<h1><b>{{!!caption}}</b></h1>
<<entryBlock>>
</$list>
<$list filter='[list[!!list]rest[1]]'>
<h1><b>{{!!caption}}</b></h1>
<$list filter='[prefix{!!title}nsort[]first[1]]'/>{{!!title}}
<$list filter='[title{$:/ResumeBuild/Education!!text}]'>
<<entryBlock>>
</$list>
<$set name='getCurrentNumber' filter='[title{$:/ResumeBuild/Education!!text}removeprefix[$:/ResumeBuild/Education.]]'>
<<getCurrentNumber>>
<$set name='getNextNumber' filter='[list[$:/Tools/Numbers]after<getCurrentNumber>]'>
<$set name='getNextContainer' filter='[title<getNextNumber>addprefix[$:/ResumeBuild/Education.]]'>
<div style='width:50px;padding:12px 10px;text-align:center;background-color:#border:2px solid grey;border-radius:50%;font-size:200%;'><<getCurrentNumber>></div>
<$button set='$:/ResumeBuild/Education' setTo=<<getNextContainer>>> <<getNextNumber>> {{$:/core/images/chevron-right}}</$button>
<$reveal type='match' state=<<revealEr>> text='1'>
<$list filter='[list[$:/ResumeSection]after{!!title}]'>{{!!title}}
<$list filter='[title{!!title}]'>
<<entryBlock>>
</$list></$list>
</$reveal>
<$list filter='[list[$:/ResumeSection]after{!!title}]'>
<$list filter='[title{!!title}]'>
<<entryBlock>>
</$list>
</$list>
<style>
.layoutCtrl {background-color:grey;border-radius:0;border:none;padding:3px 3px;color:#fff;}
.selectThis {background-color:#5778D9;}
</style>
It is recommended that you use Google Chrome to operate this tool.
<$set name='w1or2' filter='[title[$:/ResStyleTableW]field:text[width:400px;]]' value='width:48%;float:left;margin-right:1.5%;' emptyValue='width:80%;float:left;margin-right:1.5%;'>
<div style='text-align:right;'>{{$:/ResumeBuild/StartAgain}}</div>
<div style=<<w1or2>>><div style='padding-right:20px;margin-bottom:4px;'>{{$:/Resume_downloadbutton}} </div>
<$reveal type='match' state='$:/ResumeBuild/StyleSet/state' text='1'>
{{$:/ResStyle/SetButton}}
</$reveal><$transclude tiddler='$:/ResumeBuild' mode='block'/></div>
<$reveal type='match' state='$:/ResStyleTableW' text='width:400px;'>
<div style='width:45%;float:left;'>
{{$:/ResumeBuild/LayoutCtrl}}
{{$:/ResStyleEditor/Toolbar}}
<div style='font-size:50%;margin-top:10px;line-height:1.4em;background-color:#fff;padding:7px 0px 7px 20px;box-shadow: 0px 1px 5px rgba(0, 0, 0, 0.5);-moz-box-shadow: 0px 1px 5px rgba(0, 0, 0, 0.5);box-shadow: 0px 1px 5px rgba(0, 0, 0, 0.5);border-radius:4px;'>
<$transclude tiddler='$:/ResumeBuild/Output' mode='block'/></div>
</div></$reveal>
<div class='clearfix'></div>
Currently, procedures for our resume services follow those for our existing 3 core text services. See those for more info.
We will also be launching two new resume services in late 2017.
<<st "See also">>
<<list-links "[tag[Resume Services]sort[title]]">>
<<t "How to use">>
#Fill in.
#Focus on the quality and impact of the language you are using.
#Select style by pressing this button: <br>[img width='80px'[$:/img/setStyle]]
#Download w/ this button: <br>[img width='58px'[$:/img/dLoad]]
#Check scrupulously and follow usual [[Heavy Edit|Heavy Edit Task Guide]] process to ensure document can be enhanced in the next draft.
<<t "To do">>
*Side notes feature for your client questions.
*Style editor to adjust styling/ make unique before download.
*Add more standard styles.
*Liaise w/ Sue and IT to launch new resume services.
<<t "Questions">>
<<st "Don't know what a button does?">>
Hover the cursor over it for about a second a tooltip will pop up w/ an explanation.
<<st "What if I need to stop halfway through?">>
Unfortunately, it's not currently possible to save your entries in an online account. But press the download button and you'll have all your work in the default resume template format.
<<st "I've downloaded the word doc and there are big gaps">>
You've probably forgotten to set an unused section to 'Off'. Use these buttons.
{{$:/img/onOff}}
---
Got a question - post here and we will add the answer ASAP: https://www.facebook.com/groups/303186946557353
Resumes
1. Really good article (copied below): http://www.forbes.com/sites/jonyoushaei/2014/08/27/resumes/#3a8e2dc3507b
Lots to nick from here. Don’t need all the philosophy crap.
1. Quantify Your Impact
Tip: Show your accomplishments in numbers, not just words. It’s such an easy way to standout since few people do this. Answer questions such as: how much money did you manage? How many people attended your last event? How many views did your promotional video have?
Examples:
* Weak: Managed a budget to plan large-scale events for students
* Strong: Managed $12,000 budget to plan large-scale events for 2,500 students
* Weak: Compiled a pitch deck for buyout of automotive company
*
*
* Strong: Compiled a 44-page pitch deck for buyout of $53 million automotive company
* Weak: Wrote articles on entrepreneurship and technology
* Strong: Wrote 8 articles on entrepreneurship and technology, generating 107,000 page views, 8,003 likes, and 3,723 tweets
Reason: Greek philosopher Aristotle taught three pillars of effective persuasion: ethos, pathos, and logos. He believed most in the power of logos, which means persuading others using logic, evidence, and facts. By quantifying your impact, you’re doing exactly that. You’re providing evidence to underscore the significance of your accomplishments.
2. Make Your Interests As Quirky As Possible
Tip: To quote Drake (another great philosopher), you need to “start from the bottom.” The last line of your resume is where most people list their interests, but don’t actually say anything interesting. You like movies, sports, and traveling? How original! Instead, say something that could strike an emotional chord or spark a memorable conversation mid-interview. At the very least, be highly specific.
Examples: Settlers of Catan, Quentin Tarantino films, Mediterranean cooking, Lego Star Wars collections.
Reason: In Give and Take, Wharton professor Adam Grant emphasizes that similarities matter most when they’re rare. “We bond when we share uncommon commonalities, which allow us to feel that we fit in and stand out at the same time,” he says. Your interests are a huge bonding opportunity with your resume reader. Don’t waste it.
3. Show The Competition
Tip: This one gets me every time. So many people win awards, get into selective programs, and do other impressive things but don’t convey the full amazingness of those accomplishments. It’s because they don’t show the competition; they don’t reveal how many other people were gunning for that very same spot.
Examples:
* Weak: Won Granny Smith University’s Innovation Competition
* Strong: Won $1,000 for Granny Smith University’s Innovation Competition (80+ entrepreneurs competed)
* Weak: Accepted into Johnny Appleseed Management Program
* Strong: Accepted into Johnny Appleseed Management Program (9% admit rate, Granny Smith University selects 50 students per year)
Reason: Social proof is one of the most powerful principles of influence, according to psychologist Robert Cialdini. By showing your competition, you emphasize how coveted your accomplishments are. Many people tried, but only you succeeded. By doing this, you safeguard yourself in case the recruiter hasn’t heard of your program, award, or honor – which they most likely haven’t and won’t bother looking up.
4. Ask An Employee For Feedback
Tip: Relationships are more important than resumes. Before applying to any company, always connect with an employee – whether through information sessions, introductions, or alumni outreach. If the conversation goes well, kindly ask for feedback on your resume before applying.
This accomplishes two things. First, it’s an extremely efficient way to customize your resume to different companies. Employees offer highly specific edits (“hey try using this buzz word, we love that”). Secondly, this is an awesome way to internally pass along your resume without even asking. If an employee finds you impressive, kind, and sincere, there’s a good chance they’ll put in a word with recruiters.
Example: Here’s an email I’ve used before.
Hey Jeff,
Great chatting yesterday! I really enjoyed hearing about your experiences at [Company X] and I’m excited to apply for [Position Y].
I know you’re super busy, but could you spare 2 minutes to share any feedback on my resume before I submit? Even a quick gut reaction would mean a lot.
Best,
Jon
Reason: The Foot-In-The-Door Phenomenon refers to people’s tendency to more readily complete larger requests after they’ve already agreed to smaller ones. By asking for feedback, you’re doing just that. Requesting two minutes of their time is an easy starting point, especially if you’ve built rapport beforehand. Before you know it, they may help out in bigger ways by making referrals, brokering introductions, and more.
5. Associate Yourself With Big Brands
Tip: Build instant credibility by associating yourself with trusted institutions, even if you’ve never directly worked for one. Did any of your clients include Fortune 500 companies? If you worked at a startup, was it backed by notable venture capitalists? Were you featured in any major publications? Well-known brands shine when recruiters scan resumes so find a way to include them.
Examples:
* Strengthened relationships with 7 strategic partners (including Coca-Cola, Procter & Gamble & Emirates Airlines) through follow-up meetings with senior leadership
* Hired and managed 6 students from Penn and Yale including programmers, salespeople, and graphic designers
* Collaborated with Zagat’s “Restaurateur of the Year” Stephen Starr to run a Philadelphia-wide Restaurant Week at 8 different venues
Reason: Authority is another one of Cialdini’s principles of influence. If you don’t have it, the best way to convey authority is by associating yourself with those who do.
Bonus Tip: for college students, an easy way to do this is by becoming a campus ambassador for a notable company. Check out The Campus Job for a quick way to find these types of “campus rep” positions.
6. Follow The “Rule of Seven”
Tip: Great resumes send a consistent message. They convey a personal brand. They make recruiters think, “this kid has done this before. If we hire him, he’ll fit right in.” To accomplish this, follow the Rule of Seven. Find buzzwords (and their derivatives) on the company’s website and repeat them seven times in your resume. For instance, when applying for marketing jobs, use verbs like “marketed,” “advertised” and “promoted” to describe your accomplishments. When applying to a startup, use verbs like “built,” “created,” and “initiated.” And so forth. If you’re really crafty, you don’t have to change much when tailoring to different jobs.
Example:
* For Marketing Job: “Marketed YouTube Campaign Video featuring CNN’s Larry King (9,400 views)”
* For Startup Job: “Created YouTube Campaign Video featuring CNN’s Larry King (9,400 views)”
(by the way, see how I dropped CNN in there? Everyone knows Larry King but CNN is another recognized brand that recruiters gravitate towards. Tip 5 in action.)
Reason: The old adage says customers must see an advertisement seven times before they take action. Apply the same thinking here. After all, your resume is the ultimate personal marketing tool. Make sure you position yourself properly so recruiters know you’re a fit.
Bonus Tip: One of the biggest missed opportunities is when people write “summer intern” on resumes. Stop doing that! Specify your role (ex: “marketing intern”). It’s another branding opportunity. Another way to fulfill the Rule of Seven is through your “relevant coursework” section (if you have one). When applying for a finance job, for example, list statistics and quantitative classes first.
———
2. This could be adapted:
THE NUMBER ONE PURPOSE OF A RESUME
The resume is a tool with one specific purpose: to win an interview. If it does what the fantasy resume did, it works. If it doesn’t, it isn’t an effective resume. A resume is an advertisement, nothing more, nothing less.
A great resume doesn’t just tell them what you have done but makes the same assertion that all good ads do: If you buy this product, you will get these specific, direct benefits. It presents you in the best light. It convinces the employer that you have what it takes to be successful in this new position or career.
It is so pleasing to the eye that the reader is enticed to pick it up and read it. It “whets the appetite,” stimulates interest in meeting you and learning more about you. It inspires the prospective employer to pick up the phone and ask you to come in for an interview.
WHAT IT ISN’T
It is a mistake to think of your resume as a history of your past, as a personal statement or as some sort of self expression. Sure, most of the content of any resume is focused on your job history. But write from the intention to create interest, to persuade the employer to call you. If you write with that goal, your final product will be very different than if you write to inform or catalog your job history.
Most people write a resume because everyone knows that you have to have one to get a job. They write their resume grudgingly, to fulfill this obligation. Writing the resume is only slightly above filling out income tax forms in the hierarchy of worldly delights. If you realize that a great resume can be your ticket to getting exactly the job you want, you may be able to muster some genuine enthusiasm for creating a real masterpiece, rather than the feeble products most people turn out.
3 http://www.businessinsider.com/why-this-is-an-excellent-resume-2013-11
What makes this resume so great? Augustine outlines the following reasons:
1. It includes a URL to the jobseeker's professional online profile.
If you don't include URLs to your professional online profiles, hiring managers will look you up regardless. Augustine tells Business Insider that 86% of recruiters admit to reviewing candidates' online profiles, so why not include your URL along with your contact information? This will prevent recruiters from having to guess or mistaking you for someone else.
2. It uses consistent branding.
"If you have a common name, consider including your middle initial on your resume and online professional profiles to differentiate yourself from the competition," says Augustine. For example, decide if you're Mike Johnson, Michael Johnson, or Mike E. Johnson. Then use this name consistently, be it on LinkedIn, Google+, Twitter, or Facebook.
3. It includes a single phone number and email address.
"Choose one phone number for your resume where you control the voicemail message and who picks up the phone," she advises. The same rule applies to an email address.
4. It does not include an objective statement.
There's no point in including a generic objective about a "professional looking for opportunities that will allow me to leverage my skills," says Augustine. It's not helpful and distracting. Ditch it.
WATCH: How To Make A Good First Impression At A Job Interview
5. Instead, it includes an executive summary.
Replace your fluffy statement with an executive summary, which should be like a "30-second elevator pitch" where you explain who you are and what you're looking for. "In approximately three to five sentences, explain what you’re great at, most interested in, and how you can provide value to a prospective employer," Augustine says.
6. It uses reverse chronological order.
This is the most helpful for recruiters because they're able to see what you've been doing in recent years immediately, says Augustine. "The only time you shouldn't do this is if you're trying to transition to another career altogether, but then again, in this situation, you'll probably be relying more on networks," than your resume, she says.
7. It uses keywords like "forecasting" and "strategic planning."
Many companies use some kind of screening process to identify the right candidates. You should include the keywords mentioned in the job posting throughout your resume.
"Identify the common keywords, terminology, and key phrases that routinely pop up in the job descriptions of your target role and incorporate them into your resume (assuming you have those skills)," advises Augustine. "This will help you make it past the initial screenings and on to the recruiter or hiring manager."
8. It provides company descriptions.
It's helpful for recruiters to know the size of the company you used to work for, advises Augustine.
"Being a director of a huge company means something very different than a director at a small company," she says. You can go to the company's "About Us" section and rewrite one or two lines of the description. This should be included right underneath the name of the company.
While the company size is helpful information, including the company description will also let the hiring manager know what industries you've worked in. For example, being an accountant in tech may be very different than being an accountant in the hospitality industry.
"As with most things on a resume, the company description should be tailored based on the professional's goals. If you're looking to switch industries, your focus may be on the company size — assuming it's similar to your goals — and less on discussing the various products your company sells."
9. It does not list achievements in dense blocks of text.
Recruiters receive so many resumes to scan through at a time, so make it as easy as possible for them to understand why you're perfect for the job. Dense blocks of text are too difficult to read, says Augustine.
10. Instead, achievements are listed in two to five bullet points per job.
Under each job or experience you've had, explain how you contributed to or supported your team’s projects and initiatives. "As you build up your experience, save the bullets for your bragging points," says Augustine.
11. It quantifies achievements.
"Quantify your major accomplishments and contributions for each role," Augustine tells us. This can include the money you saved or brought in for your employer, deals closed, and projects delivered on time or under budget. Do not use any more than three to five bullet points.
12. Accomplishments are formatted as result-and-then-cause.
A good rule is to use the "result BY action" sentence structure whenever possible. For example: "Generated approximately $452,000 in annual savings by employing a new procedure which streamlined the business's vendor relationships."
13. White space draws the reader's eyes to important points.
Recruiters do not spend a lot of time scanning resumes, so avoid dense blocks of text. "The key is to format the information in a way that makes it easy to scan and recognize your job goals and relevant qualifications," Augustine tells us.
14. It doesn't use crazy fonts or colors.
"Stick to black and white color," says Augustine. As for font, it's best to stick with the basics, such as Arial, Tahoma, or Calibri.
15. It does not include pronouns.
Augustine says you should never write your resume in third person because everyone knows you're the one writing it (unless you go through a professional resume writing service).
Instead, you should write it in first person, and do not include pronouns. "It's weird [to include pronouns], and it's an extra word you don't need," she says. "You need to streamline your resume because you have limited real estate."
16. It does not include images.
"Avoid adding any embedded tables, pictures, or other images in your resume, as this can confuse the applicant-tracking software and jumble your resume in the system," says Augustine.
17. It doesn't use headers or footers.
It may look neat and concise to display your contact information in the header, but for "the same reason with embedded tables and charts, it often gets scrambled in an applicant tracking system," says Augustine.
18. Education is listed at the bottom.
Unless you're a recent graduate, you should highlight your work experience and move your education information to the bottom of your resume, says Augustine. Never include anything about your high-school years.
19. It doesn't say "references upon request."
Every recruiter knows you're going to provide references if they request it so there's no reason for you to include this line. Again, remember that space on your resume is crucial so don't waste it on a meaningless line, Augustine tells us.
1.
<<dispLay Rewards e46h5er>>
Anyone with Internet access can refer to courses or professors by name.
References to the school should be rooted in the candidate's experiences/achievements/objectives - they're making a case for admission.
The candidate should not refer to professors, classes or facilities without making sophisticated links to his or her own background.
<small>Click each button to highlight corresponding terms. Please note that the notes which appear beneath when you click are not intended to be exhaustive in the least and you should examine each highlighted term to appraise the issue. NB Professor's name has been changed.</small>
<$macrocall $name="runThroughViewer" n="3"/>
<<st "Other notes">>
>Miss Liang is a well-rounded student: able to apply herself diligently to her school work while fully partaking in social aspects of our school. She is cheerful and helpful, making her a very popular student.
A sentence like is not only banal and generalized. It offers faint praise of the student; recommendation letters need to be glowing or they are essentially pointless. This advice is commonly given to students and recommenders and is uncontroversial.
Maybe it's just me, but describing someone as 'cheerful' and 'helpful' doesn't feel like it helps their case in a context like this.
\define b(t)
<span class='sred'>$t$</span>
\end
\define h(t)
<span class="$(theClass)$">$t$</span>
\end
\define big(t)
<span style="$(makeNumber)$">$t$</span>
\end
\define t(t)
<span class='titleSet'>$t$</span>
\end
\define bl(t)
<blockquote class='c'>$t$</blockquote>
\end
<style>
.sred {background-color:red;color:#fff;padding:1px 2px 3px 2px;}
.q {background-color:yellow;}
blockquote.c {font-family:courier;}
.titleSet {text-transform:uppercase;font-size:150%;line-height:1.2em;font-weight:bold;border-bottom:1px solid grey;}
</style>
<$set name='makeNumber' filter='[title{$:/HeavyEdit/Examples/FontSize}addprefix[font-size:]addsuffix[%;]]'>
<<t "Improve awkward phrasing and small errors">>
<<bl "I am applying to the JD program at XXXX University to progress towards my career goal of becoming a corporate lawyer, offering legal solutions to both American and Chinese innovative enterprises, particularly in the M&A and anti-trust sector.">>
*"American and Chinese innovative enterprises" - This expression does not read clearly. 'Innovative' sounds like a classification; "businesses" or "companies" would be a better word choice than "enterprises". "...innovative companies in the US and China" would be a more appropriate way to phrase this.
*"sector" would be "sector__s__" because M&A and anti-trust represent two (often mutually relevant but) distinct areas of legal practice.
<$set name='theValue' filter='[title[$:/HeavyEdit/Examples/Temp]field:text[1]]' value='' emptyValue='1'>
<$set name='theClass' filter='[title[$:/HeavyEdit/Examples/Temp]field:text[1]]' value='q' emptyValue='z'>
<$button set='$:/HeavyEdit/Examples/Temp' setTo=<<theValue>>>Click here</$button> to see additional <<h "errors">> in the excerpt below.
<$macrocall $name='t' t="""<<b [>>Long sentences<<b ]>> should be avoided"""/>
<$macrocall $name='bl' t="""<<b [>>I studied Biological Sciences at university, and despite Scholarship and Olympiad <<big "success">> in my subject, when I graduated from college, I wanted to do more in the societal and human realm, and <<h "moved in journalism">>, and then PR, achieving <<big "success">> most recently in leading strategy plans for three major business lines at Meituan-Dianping.<<b ]>> <<b [>>As a PR professional I have had the chance to act in a <<h "similar role as a lawyer">>, standing on a given side of an issue and <<h "defending client">>, but the work of a PR agent in many ways is less quantifiable and I want to combine my interests in technology and innovation while helping people in a more direct way, and so after much thought and reflection I now wish to refocus my career and dedicate myself to law.<<b ]>>"""/>
<<t "Stating stuff the admissions officer already knows">>
<<bl "I am applying to the JD program at XXXX University...">>
<<bl "I studied Biological Sciences at university...">>
Sometimes, of course, this is unavoidable, but try to emphasize to your clients that every word really does count, rendering exposition of things already on the transcript or implied by the application context, unhelpful. There's a better use for the space.
<<t "Repetitious word choices">>
<$set name='theValue2' filter='[title[$:/HeavyEdit/Examples/FontSize]field:text[250]]' value='100' emptyValue='250'>
To indicate in example above, <$button set='$:/HeavyEdit/Examples/FontSize' setTo=<<theValue2>>>click here</$button>
<<t "Vague statements">>
<<bl "...to do more in the societal and human realm...">>
<<bl "...in many ways is less...">>
<$transclude tiddler="Heavy Edit Points - Run-Through 1" mode="block"/>
''The comments are arranged by type. Please click through using the buttons below.''
!!! <$list filter='[list[RunThrough 6 - iteration 1 of L2 - questions, comments, exclusions, due diligence]]'>
<$button class='toggle' selectedClass='toggled' set='RunThrough 6 - iteration 1 of L2 - questions, comments, exclusions, due diligence!!this' setTo={{!!title}}>{{!!n}}</$button></$list>
<$macrocall $name="runThroughViewer" n={{!!this}}/>
<$transclude tiddler='$:/L2/Jakob/MainText' mode='block'/>
Quantifying accomplishments by using percentages, $$ amounts, before and after comparisons (to show progress...), etc. creates a much stronger impression.
''Client''
<<bq1 "Assisted in establishing examination system...">>
→
''Advisor''
<<bq1 "What were you examining? Did you complete a report? Where you the leader of this committee?">>
''Client''
<<bq1 "
...of the Student Union Improve insubstantial entries Volunteer | English Teaching Program 05/2012, Huangpu District, China
*Served as an English instructor in an elderly apartment complex">>
→
''Advisor''
<<bq1 "How many people did you teach? What kinds of activities did you arrange?">>
<iframe src="https://docs.google.com/forms/d/e/1FAIpQLSdM8RbyKBngp8AIGD1gn8Pge1qDDt7MIJzO_FlL7E8MlWi9sw/viewform?embedded=true" width="760" height="500" frameborder="0" marginheight="0" marginwidth="0">Loading...</iframe>
<$list filter='[prefix[$:/sentenceTips1]!suffix[4]!suffix[5]]'>
<$transclude mode='block'/>
</$list>
There are three core document support services:
<$list filter='[tag[$:/Services]]'>
</$list>
In addition advisors provide:
[[Resume Services]]
[[Mock Interview Services]]
We also provide various [[Package Services]] composed of the above services.
---
<<st "Full services-related pages list">>
<$button set='$:/mobile/services/state' setTo='1'>Show</$button> <$button set='$:/mobile/services/state' setTo='0'>Hide</$button>
<$reveal type='match' state='$:/mobile/services/state' text='1'>
<$list filter='[title[Services]]'>
{{||$:/MobileTemplate}}
</$list>
</$reveal>
<<imgp 400px "https://photos-6.dropbox.com/t/2/AACdxb92ISc_52PttZos6oLV5L9OEko8rdPxxpKqQmvr0w/12/693466203/jpeg/32x32/3/1508788800/0/2/File%2023-10-2017%2C%2015%2029%2049.jpeg/EJq4nukFGCUgBygH/Ipo_zRngdPaPYDZuauKmP17u0KnT0dMbH_fhK0DG4fc?dl=0&size=800x600&size_mode=3">>
This is important for:
*Accurate display of deadlines
*So that clients understand that you may not be in the same timezone as them when appointing you tasks directly
*Scheduling talk tasks
To set your timezone, access on your profile:
*Click 'Account'
*Click 'Profile'
*Go to Timezone and Free Time
or
<<profileButton>>
Identify and explain shortfalls in materials provided by the client vis-a-vis the question.
Be clear and organized when doing so.
Please add Andy on Skype (andrew.daum).
The chat function is very useful for quick questions.
Calls are also very welcome.
Please email me cc-ing Vivian when you add me so I can find your invite!
''Client''
<<bq1 "Completed additional administrative tasks in support of the team...">>
''Advisor''
<<bq1 "Was this in support of a department or your small team? Did it have a title? Were there any particular tasks that you think the admissions committee would be interested in?">>
''Client''
<<bq1 "
[cont.] Intern | Departments of Finance and Accounting 07-09/2013 Bangkok Bank Co., Ltd. | CITY, China
*Responsible for balancing bank account journal
">>
''Advisor''
<<bq1 "
You might want to add some additional detail to this internship description to show your accounting experience. Were there any other tasks that you completed that you would like to add?">>
''Client''
<<bq1 "
*Booked petty cash and bank accounts to reconcile with the GL
">>
''Advisor''
<<bq1 "On a daily basis? Weekly basis? 'GL' = 'general ledger'?">>
<small>
<$list filter='[regexp[Statement of Purpose]!title[Statement of Purpose]]'>
Five primary topics:
''How did you become interested in this field?''
*Establish that you have had a long-term interest in the field and that you have taken positive steps in pursuing your interest.
*Give the committee members a sense of your particular talents and abilities and their relevance to your academic interests.
''What experiences have contributed toward your preparation for further study in this field?''
*Demonstrate your interest by providing examples of research experiences, internships, work experience, community service, publications, or life experiences.
*Briefly describe what you did in each experience.
*Also, make sure to articulate what you have learned about the field and how those lessons stimulated you to pursue an advanced degree.
''What are your future goals?''
*Specifically state your degree objective (Master's or Ph.D.) and specify what sub-disciplines you are interested in pursuing. For example, if you are applying in political science, the committee needs to know whether you are pursuing American Politics, Comparative Politics, International Relations, or Political Theory.
*Let the reader know that you are planning a future career as a university professor, researcher, or consultant, or in public service or private practice (or whatever your goal happens to be).
''What are your research interests?''
*Within your sub-discipline, you should be able to identify one or two topics that are of interest to you.
*When possible, be specific about your research agenda.
*Remember that you will be working with professors in research; therefore, your research interests should parallel those of the faculty. (You will usually not be expected to know exactly what you want to research; faculty know that initial interests often change.)
''How are you a "match" for the program to which you are applying?''
*Explain what attracts you most to the institution/program to which you are applying.
*Align your research interests with those of one or more of the affiliated professors.
These services should be treated in the same way as other packages, with the exception that the client should only require assistance on the Statement as opposed to a complete suite of documents.
Here are the client-facing service descriptions:
<$macrocall $name='tabs' tabsList='[tag[Statement Packages]prefix[$:/ServiceDesc/]]' default='$:/ServiceDesc/VIP Statement Package'/>
<<bq1 "…learning more about how banks, an important institute in an economy, influence enterprises.">>
<$list filter='[prefix[$:/VIPoutline/Para.]]'>
<$set name='getsubTitle' filter='[title{!!title}removeprefix[$:/VIPoutline/]]'>
<$macrocall $name='st' t=<<getsubTitle>>/>
<$transclude mode='block'/>
Arrange the edited material into a logical and orderly structure that approximates the intended final document.
*The document should flow logically, in a coherent and consistent fashion by the end of the second draft (but—as with Baseline Edits—the results of the first draft should be indicative).
*Material should be restructured to aid the flow of the document between paragraphs and to incorporate logical groupings of—and progressions between—ideas.
<<iFrame 0B1gbT0IU3BgKVUJqZWVsRmlyb3c>>
!!Other issues to note
<<st "Clunky structuring of material">>
<<bq1 "Firstly … secondly … thirdly…">>
<<bq1 "…mainly out of two reasons. On one hand … On the other hand…">>
<<bq1 "...in my sophomore year... in the second semester of my...">>
It is better to try to integrate points and create more subtle ‘signposts’ when constructing your paragraphs.
\define sortFilter()
[prefix[$:/Incentives/Reason4Bonus]!tag[incomplete]!weight[n/a]$(sort)$[weight]]
\end
\define upD(v,e)
<$button class='toggle' selectedClass='toggled' set='$:/Incentives/sort/state' setTo='$v$'>{{$:/core/images/$e$-arrow}}</$button>
\end
Sort relative weightings of measures: <<upD 1 up>><<upD 0 down>>
<$set name='weightings' filter='[title[$:/Incentives/sort/state]text[1]]' value='4 : 3 : 3 : 1' emptyValue='1 : 3 : 3 : 4'>
<div style='margin:30px;text-align:center;font-size:400%;'><<weightings>></div>
<$set name='sortDirection' filter='[title[$:/Incentives/sort/state]text[1]]' value='!sort' emptyValue='sort'>
<$set name="sort" value=<<sortDirection>>>
<$list filter=<<sortFilter>>>
<div class='cardBox'>
<div style='float:left;font-size:300%;line-height:0.6em;margin-right:7px;'>{{!!weight}}</div><<st {{!!subtitle}}>>
<$transclude mode='block' field='text'/>
</div>
</$list>
Clients commonly make the error of including a paragraph about how well-rounded they are: They're avid ultimate-frisbee players or they write short stories or they love to cook.They do care about those activities that speak to the client’s suitability for graduate work. Any experience in school, work or your extracurricular life that speaks to those abilities is worth talking about.
<iframe src="https://drive.google.com/file/d/0BwiSHPBB3kz9Slg5em9QMEJEYUE/preview" width="640" height="240"></iframe>
''Advisor's breakdown of school question''
#<span style='background-color:yellow;'>How will a degree in Communication Management enhance your professional development? What skill sets are you looking to develop through your graduate studies?</span>
#Which area of focus in Communication Management (e.g., marketing communication, media & entertainment management, organizational and strategic corporate communication etc.) interests you more, and why?
#<span style='background-color:blue;color:#fff;'>How have your internships or professional work experiences influenced your decision to pursue a graduate degree in Communication Management at USC Annenberg?</span>
#What will you contribute to the Master of Communication Management program?
__''Advisor follow-up on <span style='background-color:yellow;'>point 1</span> ''__
''Questionnaire question''
<<bq1 "Career goals? Please state short-term and long-term.">>
''Client response''
<<bq1 "
*In the short-term, I wish to find an internship or job position in Los Angeles where the school is located. As LA is the media and entertainment center of the world, I hope to work as a communication assosiate in one of the media or entertainment companies and develop a comprehensive understanding of how a media company organizes its communication work in the heart of Hollywood.
*In the long run, I still wish to go back to China and work as a communication representative of an international media company. My intending focus of areas of study in this communication management program is international& intercultural management, so ultimately I wish to do media work in the global context. As nowadays, the entertainment industry in North America is seeking more opportunities in Chinese market, I think a specialist like me, with communication skills from the graduate school and profound understanding of both western and Chinese culture, can play an important role in such collaborations.
">>
''Advisor follow-up''
<<bq1 "
Thanks. From these I have a good idea of your broad career goals.
*Could you expand on 'I wish to do media work in the global context' a bit more. What daily activities or big projects would you like to do?
*We also need to describe how going to USC will help you achieve these.
*What skills do you want to develop at USC to help you get your job as a communication associate? E.g.
**design and execute effective communication strategies and tactics
**critical thinking, presentation and writing skills, to be persuasive
**assess and measure effects, and be able to modify your practice based on experience over time
**collect, analyze and interpret the data, thus fostering the problem-solving and decision-making skills essential to a management-level career
*How will you develop them at USC (e.g. by doing group activities, experience of living in a foreign country etc) Which of these skills is most important?
*What skills will do you want to develop to help get a job working for an international media company? E.g.
**supporting a corporation in crisis to regain credibility, or crafting a compelling story for a non-profit organization, or researching new markets for an emerging brand
**make strategic decisions based on an organization’s strategies, goals and objectives
**utilize written and oral advocacy skills to articulate key communication theories, identify them in practice, use them in business situations
">>
__''Advisor follow-up on <span style='background-color:blue;color:#fff;'>Point 3</span> ''__
''Questionnaire question''
<<bq1 "Please describe internships you have undertaken, why you chose them and what they taught you. What was the most challenging aspect of these internships">>
''Client response''
<<bq1 "
*I worked as an intern at New Media Department of Phoenix Weekly Magazine. I chose this internship because I thought it would be a chance to get into the media industry; besides, in New Media department, I would get to know the latest techniques and tools for this industry. I learned multi-media devices including Photoshop and Illustrator and applied these skills to the running of the magazine's social media (Weibo and Wechat). This March, I edited a special topic introducing the dress codes of Chinese leaders from the 1940s till now, which attained over ten thousand re-tweets and comments. The number of followers on Weibo increased by over 1 million during my internship. Seeing the increasing demand of Chinese audience to know what is happening in the world. I made use of my language skills and started a new section on the magazine’s website called 'Today’s Global Headlines', in which headlines of major newspapers worldwide were translated into Chinese and compiled with selected photos into one page. To further promote this section, I sought cooperation with Zhihu.com, a lately popular SNS website and got my section posted on their APP, which greatly expanded the impact of our magazine."
>>
''Advisor follow-up''
<<bq1 "
This experience is great!
*Could you describe why it made you want to study communications at graduate level?
*Did you see problems or challenges that you think you could solve by studying communications?
*Or did it make you realise how powerful communication is, and make you want to learn more so you can influence the world?
">>
Don't let a client get bogged down in describing details that are extraneous to the purpose of the document, like...
>I added 1.5mg of magnesium to the test and waited for 15 seconds before adding the treacle, before repeating the experiment 47 times and determining results were inconclusive before moving on to 1.6mg of Magnesium and a warmer bucket of treacle...
Focus instead on the
*Basic research question
*Proposed hypothesis
*Results
*Whether the results supported/refuted the hypothesis
*Next steps in the research.
*'Big picture' understanding of research and how it might translate to graduate study.
''Deadlines displayed your Dashboard are for the immediate iteration only.'' Ie: you don't have to complete the whole service within the deadline displayed. This is only the deadline for the first iteration.
Sometimes, when we're very busy, our capacity to meet demand comes under strain. We appreciate any help in resolving this scenario. Please pick up near-deadline tasks if at all possible. If you have capacity, please do not take the tasks with plenty of deadline left, leaving those that are about to become overdue. We really appreciate help with this. See
{{$:/Incentives/Reason4Bonus/21082017123535}}
When you accept a task, you will see:
* the ''Origin document word count'' (the length of the document the client has uploaded for your review); and
*the ''Target document word count'' (the strict word limit for the final document the client will submit.
You should accommodate the target word count in your editing and acknowledge it in your notes to your client.
|!Baseline Edit | ±10% |
|!Heavy Edit | ±30% |
For VIP and (non-Heavy Edit) package services, we ask clients to keep their submissions to a reasonable length.
<<bq1 "
''An L1 document with a specified word count of 800 turns out to be 1200 words, over the established 10%. Do I go ahead and edit the whole thing (making note of the overrun) or turn it back to the client?''
Pause the service and inform the client of the discrepancy. It is likely a misunderstanding, e.g. the client entered the target word count incorrectly and will happily correct the error with client services.
We wouldn't necessarily suggest linking to the following, but here is the official wording of the restriction, fyi for peace of mind!
http://www.zhishiq.com/zh/product/service-text/graduate
">>
''Original''
<<bq1 "During these 3-month competitions, I not only developed my creative thinking as much as possible, but also experienced real passion in teamwork which was a key to win our First Prize in the last competition. Aside from awards, I obtained a deeper understanding of the important role marketing played in a company and the complex to make it work out in the changeable business world than before, which made me keen to the leading-edge knowledge and perspective of marketing management.">>
''Some questions it might trigger''
<<bq1 "During these 3-month competitions, I not only developed my creative thinking as much as possible __''[How? In what ways?]''__, but also experienced real passion in teamwork __''[How did this successful act of teamwork manifest itself and what did you do as a result? What triggered your new knowledge of the importance of teamwork to success?] ''__which was a key to win our First Prize in the last competition. Aside from awards, I obtained a deeper understanding of the important role marketing played in a company __''[Please summarize your deeper understanding and what prompted it - please do be specific on this.] ''__and the complex to make it work out in the changeable business world than before, which made me keen to the leading-edge knowledge and perspective of marketing management ''__[This is a very important discovery - please tell me how you think you will use this knowledge in the future, and, more importantly, how you plan to build on this knowledge going forward and through the program__''.">>
Tasks that disappear from your 'handling' list but not yet appear in 'feedback' or 'finished' are simply being reviewed. When your client has completed their review and approved your iteration, the document will reappear in your handling list.
Clients are informed that tasks must be completed within the relevant expiry period.
|!Task Type |!Iterations |!Expiry period |
|!Baseline Edit | 1 | {{Baseline Edit!!expiry}} days |
|!Heavy Edit | 2 | {{Heavy Edit!!expiry}} days |
|!VIP Service | 4 | {{VIP Service!!expiry}} days |
|!Package Service<br><small>Enter #schools <$edit-text tiddler='TaskExpiryDemo/temp' tag=input size=5/></small> | Varies^^*^^ | <$calc>{{VIP Service!!expiry_1}}+ (({{TaskExpiryDemo/temp}}-1)*{{VIP Service!!expiry_multi}})</$calc> days |
^^*See [[Package Services]].^^
After these periods, the relevant amount will be added to your payment on the next payment date.
''These are __not__ advisor deadlines for task completion.''
Extensive technical digressions that do not relate to the client's experiences.
When editing technical/professional/specialist language, we ask that you assume the role of an expert within the particular field your client's document pertains to. What does this mean?
To put it simply, you are required to:
* ensure all technical terms or field jargon are used appropriately
* learn abbreviations
* look up official names for universities/companies/projects/titles/qualifications/etc
* use a suitably professional tone throughout the text
* avoid the first person
* use succinct language (avoid flowery terms)
Failure to perform due diligence can be particularly apparent on resumes but applies to all documents.
<<st "Make sure terms are used in the correct way">>
We discourage all advisors from accepting tasks that involve subject matter with which they lack expertise. However, it is still not uncommon for advisors to encounter unfamiliar terms. When this occurs, we encourage you to perform research to discover the following:
* What the term means
* The correct way in which to use it in a sentence
Google all specialist or particular terminology you are at all unfamiliar with.
*software packages
*conferences your client has attended
*programs of study they intend to undertake
*place names
{{$:/Check place names}}
*''school'' names
{{$:/Check place names}}
*professional terms
* technical terminology
Do not make assumptions about useage; when you Google a term, please look at both the spelling and use in context.
<<st "Correct useage in context">>
Once you have gained clarification, please revise the technical document accordingly. Using technical/professional/specialist terms correctly cannot be stressed enough. For example, many people are under the impression that titles of books, articles, awards, and/ or scholarships are off-limits. However, they are not. Oftentimes, clients have translated these titles from Chinese into English; we would like you to please revise these translations.
<style>
h1 {margin:0;}
.cardBox {padding:20px 25px;width:75%;}
</style>
<<closeButton>>
!A summary of the complaints system and the thinking behind it<br><br>
<div class='cardBox'>
Advisors are given a rating of 1, 2, 3, 4, or 5 each month.
The purpose of this rating is to help the company internally monitor quality and look after its clients. We also use it to reward our advisors in (what we hope is) a nice way.
''The expectation is that the overwhelming majority of the advisor team will be at level 3.''
</div>
<div class='cardBox'>
!This rating looks at your editing prowess and your ability to make clients happy.
If you weren't a good editor you would not be on the team.
Quality is monitored by the review team and system admins.
The system rewards editing ability via:
*Awards for strong peer review scores
*Ad hoc adjustments via the 'check me out' button //[awaiting IT implementation]// as well as general reviews of your work
</div>
<div class='cardBox'>
!We are not rewarding jazzy profiles or slick marketing skills.
This is not what we mean by happy clients.
!We're rewarding those who provide great client experiences and on-point, engaged advice) such that their clients return and they tell their friends.
This, in our experience, has proven to be one of the most measurable and reliable indicators we can think of.
This system may or may not capture your approach. We're open constructive suggestions on how to improve it.
</div>
<div class='cardBox'>
!98% of client reviews are 5*
They're not a useful measure for us. They do reflect the fact that you're a great editor - no question about that.
You'll find your average client rating displayed on your profile. That's where it should be.
><<img "https://photos-5.dropbox.com/t/2/AAD9S51HpkXU8gHiWNXww02bvYJDsalt-3kn5psy6IDlqg/12/693466203/jpeg/32x32/3/1507302000/0/2/File%2006-10-2017%2C%2013%2011%2056.jpeg/EJq4nukFGBogBygH/G3-Ln10J2-F43MPKyx9jbuY8PwoiaMj3zrTH-dYf95A?dl=0&size=800x600&size_mode=3">>
</div>
<div class='cardBox'>
!Ratings are wiped each month
Why? Because ''we need an active team''. Although we want this work to be convenient, the fact is we need a threshold level of engagement to ensure some sort of certainty for our management team about how tasks will be conducted.
If you've had an inactive month, it's back to square 1 and time to build up again. (The exception is September when a rating will be allocated to you).
</div>
<div class='cardBox'>
!The ratings system measures commercial contributions
What does this mean?
*Getting lots of client appointments
*Getting ''repeat'' client appointments and word-of-mouth clients (we track referrals to the extent we can via coupon codes)
*Picking up tasks:
**near the deadline (we are grateful for this); or
**very quickly after submission to the marketplace (clients like this)
*Exceptional feedback from peer reviewers (this is applied at admin discretion - nothing to do w/ validity of reviewers' recommendations, but because admin wants to be involved in this process!
A pic showing some of this on the admin backend:
><div style='width:50%;'><<img "https://photos-1.dropbox.com/t/2/AAC-z87ezG_VJUuPsLthJ7WI-j8yhEUQejj6dukOpimJgQ/12/693466203/jpeg/32x32/3/1508194800/0/2/File%2006-10-2017%2C%2012%2021%2050.jpeg/EJq4nukFGCAgBygH/Ww3kZxQfrL0u0LyizPqJWlTM_Dc82SJ5mzfrF3x63co?dl=0&size=800x600&size_mode=3">><small>(It's particularly pleasing, when looking at all the data, to observe the congruence between these two measures across the board.)</small></div>
!Relative weightings
You'll now find these in the [[Stuff we incentivize]] article.
</div>
<div class='cardBox'>
!What has a negative effect on your rating?
*Complaints - if valid and there is clear negligence we may suspend your account - we just can't afford for this to happen
*Poor reviews __that have been looked at by a system admin who has agreed with the reviewer's comments__; particularly significant deductions will be applied if there is no reply to the reviewer or the reply is negative or argumentative in tone.
''This system is about emphasizing to you what matters to us as a business. And showing our gratitude. We hope it's seen as an exciting and positive evolution.''
</div>
<div class='cardBox'>
Other things I award/ deduct points for on an ad hoc basis:
*Professional profile pic
*Great profile content
*Deadline issues poorly handled
</div>
<div class='cardBox'>
!In the pipeline
*Factor in appointment rates into the client appointment multiplier: 5 appointments @200% are naturally preferable to 5@125%. Both are __great__ - this is just a factor in the calculation.
*Better reflection of review and complaints handling team's work.
</div>
Marketplace tasks are displayed on your Dashboard.
They are available to all other advisors in your category.
They can be picked up at your choice.
>Note for pre-2017 advisors: We have eliminated 'threshold marketplace' tasks (when clients appointing advisors at e.g. 'Level 5 and above').
Elements making specific requests such as:
>Please list specific members of the faculty with whom you see yourself working.
...should not be ignored. Encourage your client to:
*Spend time reading through the program's website and identifying those members who match your research interests.
*Investigate their research niche by skimming recent faculty articles.
*Ask them to explain how faculty research aligns with their research interests.
!!How to use track changes
‘Show don’t tell’ is a great piece of basic writing advice. It also applies to submitting work to our clients. Make sure you are familiar with track changes.
You should use them on the majority of documents you prepare for us. However, please also be sure to use them when it is intelligent and prudent to do so. For example, don’t use them on a document with complicated formatting (such as restructured CVs) which render track changes cumbersome.
Always think about the convenience of the client and how to make their life easier.
Do not substitute another system of your own invention for highlighting changes! They usually make documents really hard to review!
!!Use 'final' mode when proof-reading
ALWAYS conduct your final review with track changes set to 'Final’ mode, so that your edits are retained, but not highlighted: it will make it MUCH easier for you to spot mistakes that the track change highlighting can sometimes obscure.
!!When to provide a 'clean' version of the document
On final iterations (especially resumes) It is a good gesture to upload a track changes version of the document via the normal method ''and'' send a 'clean' version via the messaging system.
Your first two tasks of each basic type will be subject to training reviews by senior advisors to help you get used to carrying out the tasks to the highest standards.
A senior advisor will review the quality of your edits in terms of:
*Grammar, spelling, and punctuation.
*Extent to which the document meets the appropriate service level.
*Quality of advice and feedback provided to the client.
New advisors receive 50% of the fee value on the following number of tasks for each task type:
|!L1 | 2 |
|!L2 | 2 |
|!VIP | 2 |
''Who gets the rest?''
The other 50% goes to the senior advisor who will review your tasks and provide you with thorough feedback and guidance.
New Advisors should take on no more than 2 tasks of each type until they have received feedback on at least one task.
<<<
Eg if you have completed:
*1 L1
*2 L2s
*3 VIPs
<<<
<<<
You will receive full fees on:
*Your next but one L1
*The next L2 task
*Your current VIP
<<<
<<st "Pointers">>
*Don't rely on them to teach you things like attention-to-detail.
*Receive feedback from your reviewers in good faith.
*Don't take a disputatious approach.
*This is a learning by doing system. Don't try to take exhaustive notes on the contents of this site. ''Get started'' and make use of the team to get yourself up to speed.
*Ask questions in the {{$:/Link/AdvisorGroup}} - this is encouraged, particularly if you can't find the answer in these resources.
*The nature of our business is cyclical (<i>at present</i>, August -- January) so now is certainly the time to make your mark!
!Within paragraphs
You can find examples of ''transitional words and phrases'' all over the place. Here's one from the <a href='https://writing.wisc.edu/Handbook/Transitions.html' target='_blank'>UNC Writing Center</a>, which is useful on many aspects of good writing.
!Between paragraphs
<<bq1 "I want to make myself a better person and graduate studies at Northwestern will surely give me this chance.">>
Overt assertion of skills or qualities without substantiation, e.g.
<<bq1 "This was an excellent teamwork experience; I handled it really well...">>
<<bq1 "As an outstanding team-player, I'd be great at your school.">>
With the provision of proper evidence, in most cases, these things can be //demonstrated// rather than //asserted//.
It is important to upload iterations via the upload button on the relevant task page, not the messaging system.
There are situations when you may wish to share documents with clients via the messaging system. Please see this page for further details: [[When to send attachments via the messaging system]].
The messaging system is located at the bottom of the order page for each task. When you accept a task, scroll down and you will find it.
<<t "Don't use the messaging system to...">>
<<st "Return drafts to your client">>
If you upload files via the messaging system the system will not mark the iteration as complete preventing the system from crediting your account for the iteration.
It prevents us from regulating the number of iterations for each service (this restriction exists to help you!) This may affect your payment for the task.
<<t "Do use the messaging system">>
<<st "To greet your client warmly and professionally at the start of __each__ task.">>
<<st "If you need to request supplementary materials from your client.">>
<<st "Post-service">>
E.g. if a client queries a completed document and an issue can be resolved smoothly and simply via the messaging system, the client is more likely to leave happy and confident in our services.
<<st "For commonsense flexibility">>
E.g.
*If the client has not uploaded a completed VIP Questionnaire.
*If the client has uploaded the wrong document.
*To ask supplementary questions.
<<st "Avoid capitalization on names">>
><div><b style="font-family: Calibri; font-size: 10pt; text-align: center;"><span lang="EN-GB" style="font-size:
15.0pt">Ying ZHU</span></b></div>
=
><div><b style="font-family: Calibri; font-size: 10pt; text-align: center;"><span lang="EN-GB" style="font-size:
15.0pt">Ying Zhu</span></b></div>
<<st "Double spacing">>
><p class="MsoNormal"><b><span lang="EN-GB" style="font-size:12.0pt">PROFESSIONAL EXPERIENCE</span></b></p>
=
><p class="MsoNormal"><b><span lang="EN-GB" style="font-size:12.0pt">PROFESSIONAL EXPERIENCE</span></b></p>
\define navButton(v,r)
<$button class="tc-btn-invisible tc-tiddlylink" style='fill:#fff;' set='$:/VIPQ/UI/temp' setTo='$v$'>{{$:/core/images/chevron-$r$}}</$button>
\end
<div style='width:60%;margin-left:150px;padding:0;'>
<div style='position:fixed;top:60px;margin-left:-3px;fill:#fff;color:#fff;background-color:#9999;width:700px;padding:0 5px 5px 5px; z-index:99999999999;font-size:150%;'><$set name='advisorName' value={{$:/Login!!name}}>
<$set name='taskID' value={{$:/VIPQ/Task}}>
<$set name='clientName' value={{$:/VIPQ/Client}}>
<$reveal type='match' state='$:/VIPQ/UI/temp' text='Details'><<navButton Questions right>></$reveal><$reveal type='match' state='$:/VIPQ/UI/temp' text='Questions'><<navButton Details left>></$reveal><$button class="tc-btn-invisible tc-tiddlylink" style='fill:#fff;margin-left:7px;width:30px;'>
{{$:/core/images/download-button}}
<<saveButtonSet>>
</$button> {{!!title}} for {{$:/VIPQ/Client}} | Task {{$:/VIPQ/Task}}
</$set></$set></$set>
</div>
<$reveal type='match' state='$:/VIPQ/UI/temp' text='Details'>
<br>
<div class='cardBox'>
<$transclude tiddler='$:/CoverSheet/BasicDetails' mode='block'/>
<hr/>
<$button style='display:inline;font-size:125%;' class="tc-btn-invisible">{{$:/core/images/help}}</$button> | Press the <$button class="tc-btn-invisible">{{$:/core/images/chevron-right}}</$button> above to go to the next step. You can then download a .doc Word version of your questionnaire when you've completed it (or whenever you like) using the <$button class="tc-btn-invisible">{{$:/core/images/download-button}}</$button> button.
</div>
</$reveal>
<$reveal type='match' state='$:/VIPQ/UI/temp' text='Questions'>
<br>
<$transclude tiddler='$:/VIPQ/UI' mode='block'/>
</$reveal>
</div>
<div class='clearfix'></div>
\define ch(c,e,r)
<th style='text-align:left;' colspan='$c$' rowspan='$r$'>$e$</th>
\end
\define cn(c,e)
<td style='text-align:center;' colspan='$c$'>$e$</td>
\end
\define rev(n,l,t)
<$reveal type='match' state='$:/vip/state$n$' text=''><$button set='$:/vip/state$n$' setTo='1'>{{$:/core/images/chevron-right}} Click to show $l$</$button></$reveal><$reveal type='match' state='$:/vip/state$n$' text='1'><$button style='padding:10px; 20px;' set='$:/vip/state$n$' setTo=''>{{$:/core/images/chevron-down}} <span style='text-transform:uppercase; font-weight: bold;'>$l$ </span></$button></$reveal>
<$reveal type='match' state='$:/vip/state$n$' text='1'>
<$transclude tiddler='$t$' mode='block'/>
</$reveal>
\end
//Helping a client to develop the document from the very beginning. Please read the guidelines below __carefully__.//
''//This service does not ever involve does not involve drafting original material on the client's behalf.//''
<$transclude tiddler='$:/ServiceInfoTableTemplate' mode='block'/>
|![[Messaging period]] |{{!!expiry.days}} days|
<<t "1a. Obtain and appraise client information">>
<<st "Client will upload response to the [[VIP Questionnaire Builder]]">>
Your client's responses to the VIP Questionnaire will form the basis of your proposed Outline and the client's subsequent first draft.
You should scrutinize the material and rigorously question it (as you would for an L2 first draft).
*If the client does not upload a completed response to the [[VIP Questionnaire Builder]], you should request it via the messaging system. (You can save yourself and your client significant time by adding tailored questions in the body of this questionnaire).
*If the client does upload a response, you should follow a similar process to kickstart the improvement of information the client has provided.
Below you can view relevant examples of how to handle the beginning of a VIP task.
<<dispLay "VIP iteration 1" 1>>
<<t "1b. Outline and ask questions to improve material submitted in questionnaire">>
<<dispLay Outline 2>>
<<t "Iterations 2 - 4">>
Subsequent iterations involve exactly the same processes as a Heavy Edit. With each iteration you should aim to narrow the focus of the task, with the 4th and final iteration being a Baseline Edit. The preceding processes you've applied should have ensured the high quality of the material.
<<t "More reading">>
<$list filter='[tag[VIP Service]]'>
These are the same concept as ordinary package services but predicated on the [[VIP Service]] service, as opposed to the [[Heavy Edit]] (L2) service.
You should complete in accordance with the [[VIP Service]] guidelines and follow the [[Package Process]].
\define secLink(l)
<$list filter='[title[$l$]]'><$button class="tc-btn-invisible tc-tiddlylink" set='$:/DisplayConfig/Current' setTo={{!!title}} class='tc-btn-invisible tc-tiddlylink'>{{!!caption}}</$button></$list>
\end
<style>
.pad {padding:20px;}
</style>
<div style='width:90%;'>
<div class="cardBox pad">
<h1 style='margin-top:0;padding-top:0;padding-bottom:0;margin-bottom:4px;'>Hi {{$:/Login!!name}}</h1>These resources should be a port-of-call for each task you complete, if only for cover sheet purposes (under <<sLink $:/Tools>>). We're trying to get them right, so please do bookmark the site and let us know any way we can make it more convenient or useful.
</div>
<div class="" style="width:49%;float:left;margin-right:3%;">
<div class='cardBox pad'>
{{$:/FindThis}}
</div>
<$transclude tiddler='New Advisors' mode='block'/>
</div>
<div class="" style="width:48%;float:left;">
<div class="cardBox pad">
<small>{{$:/Tools/RecentlyModifiedList}}</small>
</div>
</div>
<div class='clearfix'></div></div>
\define n(a)
<$reveal type='nomatch' state='$:/welcome/state' text='1'>
<$link to='$a$'>$a$</$link>
</$reveal><$reveal type='match' state='$:/welcome/state' text='1'>$a$</$reveal>
\end
\define profileButton()
<p><div class='profile'><a target='_blank' href={{!!link}}>Click here!</a> to visit this page on your profile</div></p>
\end
<style>
div.profile {font-size:150%;text-align:center;}
div.profile a {padding:5px 10px;background-color:red;color:#fff;border-radius:4px;text-decoration:none;}
</style>
!!Three key services
To get up-to-speed, you will need to familiarize yourself with our three key services.
*<<n "Baseline Edit">>
*<<n "Heavy Edit">>
*<<n "VIP Service">> (Some advisors in the past have imbued this service with prohibitive significance simply because of the name... 'VIP'... and avoided it. Don't. This is a mistake and it causes it us all sorts of problems in gauging capacity. It's called //VIP// because it makes sense to clients that way. The Heavy edit service is where all the skills you need are developed and exemplified. If you can do a Heavy Edit well, you can do anything on our platform well).
!!The trainee stage
Aim to transition your account from <<code "trainee advisor">> to <<code "advisor">> status ASAP.
The important up-shot is that you will be on full standard rates for your tasks rather than 50% rates (which will apply to your ''first two tasks of each type'').
(So, when you see a remarkably low-looking rate against a task on the platform, don't worry: Once you're through the first two of that task type, that number will double for future tasks of that type.)
!!Where does the 50% go?!
It goes to the senior advisor who carries out <<n "Training Reviews">> on your work and provides you with detailed feedback.
Because our business is designed for scale (with nearly 20,000 clients served last year), we need to operate a moderately standardized process.
We rely on senior advisors to check work quality, suitability of approaches to clients, and assimilation of our service requirements.
!!How to interpret reviews
It is important to see reviews as a learning opportunity (no matter how experienced you might be!) Try to avoid feeling any sense of personal affront when your work is reviewed and feedback is offered. Genuine willingness to look at the feedback provided and find opportunities for progress is far and away the most impressive quality one could hope to project as a new advisor on this platform (or, indeed, I'd say, in any context this world throws at us!)
We expect perfect language edits and thorough, conscientious, and professional advice.
!!Marketing yourself
Standardizing our services does ''not'' mean we discourage personal flair. It just needs to be built on top of the basic services so we can regulate quality.
In fact, establishing your personality and projecting your skills is the way to make the ZHISHIQ platform work for you.
Successful advisors cultivate relationships with their clients. Even advisors who charge 200% of standard rates or more become booked out, with clients sometimes delaying their applications in order to work with a specific, highly-recommended advisor.
Maintain high standards and a consistently professional service, combine it with warmth and engagement, and you'll find a lot of clients like you very much! That's where word-of-mouth about your skills and capacity will begin.
!!How we reward successful advisors
<<n Rewards>>—in addition to the standard rates that you will find listed on the system when you accept tasks—are really important to us. <<n "The incentives system">> determines both who will receive our monthly $1000 bonuses and what multipliers you can apply to your client appointment fees.
!So how to get started?
!!1. Your profile
Completing a strong profile that showcases your skills and provides direct evidence of your abilities enables you to attract casual browsers of the site to appoint you. You've already got a rough sketch of your profile content from your application. Build on that to get started!
You'll find all the links you need to accomplish this on the page called <<code "Key profile settings">> in these resources. To find this page either click <<code "USER GUIDE">> on the left-hand menu and find it in the sub-list, or do a search by pressing the <$button class='tc-btn-invisible'>{{$:/core/images/advanced-search-button}}</$button> button above the left-hand menu.
!!2. Say hello!
You've been added to the {{$:/Link/AdvisorGroup}}. Please say hello everyone in the group. Everyone is really friendly and everyone is rooting for you!
!!3. Familiarize yourself with the main three task types.
<$button class='tc-btn-invisible tc-tiddlylink' set='$:/welcome/state' setTo=''><$action-navigate $to=<<currentTiddler>>/>Click here</$button> and read the descriptions of the three main text-based services.
Please don't attempt a task until you are confident in what's required. But equally, please don't be reticent: We recommend you get stuck in immediately since this business is busiest between August and January.
Get started, get your first few tasks done brilliantly, and you'll be away! (Check out [[Pickup task]] as guide to picking up your first few tasks).
As odd as this might sound, reading [[Common causes of complaints]] is also a really good 'way in'.
!!3. Ask questions
The system is not always straightforward. We've tried to put answers up here, but if you can't find what you're looking for, we warmly encourage you to ask in the {{$:/Link/AdvisorGroup}} or chat (text- or talk-based chats are equally encouraged, although the former are often more practical!) with Andy on Skype (andrew.daum)
There's a slight learning curve for this work, but our longstanding and fantastic team attest to the fact it is worth it!
We are so glad to have you involved!
<center><iframe style='border:none;' src="https://drive.google.com/file/d/0B1gbT0IU3BgKQnlsWGJnYk9MYUU/preview" width="640" height="580"></iframe></center>
<ul><li>Please answer as many of the questions below as you feel you can. The purpose of this questionnaire is to get you thinking about the sort of things you want to put in your final document. </li>
<li>You do not need to answer every question. Nor should you think of it as an exhaustive or ideal guide to what needs to go into your final document – please do not feel restricted by it.</li>
<li>Your final document will be about YOU, so please feel free to discuss ANYTHING which you feel is important to you and relevant to your application. Remember the more information you give to your editor, the better your final document will be.
</li>
<li>Please submit all answers in English, but do not worry about style, structure or the quality of English.</li>
</ul>
To convey a deep understanding of your field, please provide as much information as possible on the substance of your interests. You are not simply offering a summary of a field: Your ability to present interesting questions and ways of approaching your field will demonstrate your potential. Use the ‘language of the field’ and appropriate technical terminology, but:
*Do not include explanations of basic concepts or make general observations.
* If you do write about an unusual aspect of your field, however, it can be useful to explain.
The rates we provide in these materials are indicative only and the fees clearly listed on the system when you accept each task should be considered definitive (subject also to PayPal exchange rates (see: [[Being paid via PayPal]]]]).
Clients pay in advance so the fees are attached to your account; the task will expire—and the compete amount owing will be placed on your account.
It's a legacy feature.
<<imgp "250px" "https://photos-1.dropbox.com/t/2/AADlygjpgNNZdhHIwREt00T_-t0TW91DSYp-rAArgsxFmA/12/693466203/jpeg/32x32/3/1508788800/0/2/File%2023-10-2017%2C%2016%2011%2022.jpeg/EJq4nukFGCYgBygH/ln22Tq-RUAOrLBBE6hzLyqT0RUnB7u4aX0PyWMDVx9g?dl=0&size=800x600&size_mode=3">>
Subject to the following, please disregard it. Everything should be ticked by default. If it isn't just to tick it yourself and press the <<code Save>> button at the botton of the page.
<<profileButton>>
''Do not send iterations via the messaging system.''
*At the conclusion of a service, to send a 'clean' version of the document.
*If a client has queried a completed document; if a typo can be resolved via the messaging system, it will avoid the client feeling that they have to lodge a complaint.
*If the client has not uploaded a completed VIP Questionnaire.
*If the client has uploaded the wrong document, or not attached relevant information to begin with, you could use the messaging system to solicit this information.
*When you are sending supplementary documentation or questions to the client (most likely in a VIP or package service).
!!1.
The most common explanation is that you need to make the following change in your browser address bar:
www.zhishiq.com/<span style='background-color:yellow;'>zh</span>/advisor/domain
->
www.zhishiq.com/<span style='background-color:yellow;'>en</span>/advisor/domain
!!2.
If you see some Chinese elements on the first page you encounter, that's perfectly normal. There are English tabs on the sidebar that will enable you to navigate to the relevant parts of your account.
Being a ZHISHIQ advisor is unique in that your overriding objective on every job is to look for opportunities to help your client improve their //written// presentation and self-advocacy.
We look for people who are passionate about the tricks and tools that make for effective self-presentation on the page, and compassionate about communicating them to our clients.
Unlike Western education, in general the Chinese system does not, currently, push students to package their achievements persuasively in written form. Prioritization of various standardized testing systems (such as TOEFL and IELTS) have also engendered quite rigid approaches to writing that aren't ideal for developing a first-rate application.
The best possible way to work on the ZHISHIQ platform is to develop your own client-base. The marketplace exists to get you started, and as a core stream of work. Every marketplace task, however, should be viewed as an opportunity to build a relationship with your client that leads to a direct appointment or an appointment as a result of a recommendation by your client.
<<list-links "[tag[ZHISHIQ Tools List]sort[title]]">>